ggml: Automatically make tensors contiguous on reshape

GGML requires tensors to be contiguous for reshape and if
this is not the case, it will assert fail. Contiguous is an
expensive operation, so it's best to do it lazily when it is
actually required rather than ahead of time when it may not
be needed.
This commit is contained in:
Jesse Gross 2025-11-18 20:24:09 -08:00 committed by Jesse Gross
parent 91935631ac
commit b6e02cbbd2
1 changed files with 4 additions and 0 deletions

View File

@ -1378,6 +1378,10 @@ func inferShape(t *Tensor, shape []int) {
} }
func (t *Tensor) Reshape(ctx ml.Context, shape ...int) ml.Tensor { func (t *Tensor) Reshape(ctx ml.Context, shape ...int) ml.Tensor {
if !C.ggml_is_contiguous(t.t) {
return t.Contiguous(ctx, shape...)
}
if slices.Contains(shape, -1) { if slices.Contains(shape, -1) {
inferShape(t, shape) inferShape(t, shape)
} }