go-mlx/internal/metal
Snider df0b300b1a fix(metal): auto-contiguous data access for non-contiguous arrays
Bind mlx_contiguous and _mlx_array_is_row_contiguous from mlx-c.
Floats(), DataInt32(), and Ints() now automatically handle non-contiguous
arrays (from Transpose, BroadcastTo, SliceAxis, etc.) by checking
IsRowContiguous() and making a contiguous copy when needed.

Previously these methods returned silently wrong data for view arrays.
The old workaround of Reshape(arr, totalSize) is no longer needed.

7 new tests for contiguous handling (transpose, broadcast, slice views).

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-19 20:39:36 +00:00
..
array.go fix(metal): auto-contiguous data access for non-contiguous arrays 2026-02-19 20:39:36 +00:00
array_test.go fix(metal): auto-contiguous data access for non-contiguous arrays 2026-02-19 20:39:36 +00:00
backend.go refactor(api): clean root package — interfaces only, metal auto-registered 2026-02-19 20:04:19 +00:00
cache.go refactor(metal): flatten model, tokenizer, sample, cache into internal/metal 2026-02-19 19:51:14 +00:00
cache_test.go refactor(metal): move all tests to internal/metal (148 tests passing) 2026-02-19 20:00:02 +00:00
compile.go refactor(metal): move ops, slice, random, fast, compile to internal/metal 2026-02-19 19:39:49 +00:00
dtype.go refactor(metal): move dtype, array, metal, stream to internal/metal 2026-02-19 19:34:38 +00:00
fast.go refactor(metal): move ops, slice, random, fast, compile to internal/metal 2026-02-19 19:39:49 +00:00
fast_test.go refactor(metal): move all tests to internal/metal (148 tests passing) 2026-02-19 20:00:02 +00:00
gemma3.go refactor(metal): flatten model, tokenizer, sample, cache into internal/metal 2026-02-19 19:51:14 +00:00
generate.go feat(api): migrate to go-inference shared interfaces 2026-02-19 20:15:42 +00:00
grad.go refactor(metal): move nn, io, grad, lora, optim to internal/metal 2026-02-19 19:39:58 +00:00
grad_test.go refactor(metal): move all tests to internal/metal (148 tests passing) 2026-02-19 20:00:02 +00:00
io.go refactor(metal): move nn, io, grad, lora, optim to internal/metal 2026-02-19 19:39:58 +00:00
lora.go refactor(metal): move nn, io, grad, lora, optim to internal/metal 2026-02-19 19:39:58 +00:00
lora_test.go refactor(metal): move all tests to internal/metal (148 tests passing) 2026-02-19 20:00:02 +00:00
metal.go refactor(metal): move dtype, array, metal, stream to internal/metal 2026-02-19 19:34:38 +00:00
model.go refactor(metal): flatten model, tokenizer, sample, cache into internal/metal 2026-02-19 19:51:14 +00:00
nn.go refactor(metal): move nn, io, grad, lora, optim to internal/metal 2026-02-19 19:39:58 +00:00
nn_test.go refactor(metal): move all tests to internal/metal (148 tests passing) 2026-02-19 20:00:02 +00:00
ops.go refactor(metal): move ops, slice, random, fast, compile to internal/metal 2026-02-19 19:39:49 +00:00
ops_test.go refactor(metal): move all tests to internal/metal (148 tests passing) 2026-02-19 20:00:02 +00:00
optim.go refactor(metal): move nn, io, grad, lora, optim to internal/metal 2026-02-19 19:39:58 +00:00
optim_test.go refactor(metal): move all tests to internal/metal (148 tests passing) 2026-02-19 20:00:02 +00:00
qwen3.go refactor(metal): flatten model, tokenizer, sample, cache into internal/metal 2026-02-19 19:51:14 +00:00
random.go refactor(metal): move ops, slice, random, fast, compile to internal/metal 2026-02-19 19:39:49 +00:00
sample.go refactor(metal): flatten model, tokenizer, sample, cache into internal/metal 2026-02-19 19:51:14 +00:00
sample_test.go refactor(metal): move all tests to internal/metal (148 tests passing) 2026-02-19 20:00:02 +00:00
slice.go refactor(metal): move ops, slice, random, fast, compile to internal/metal 2026-02-19 19:39:49 +00:00
stream.go refactor(metal): move dtype, array, metal, stream to internal/metal 2026-02-19 19:34:38 +00:00
tokenizer.go refactor(metal): flatten model, tokenizer, sample, cache into internal/metal 2026-02-19 19:51:14 +00:00
tokenizer_test.go refactor(metal): move all tests to internal/metal (148 tests passing) 2026-02-19 20:00:02 +00:00