mirror of
https://github.com/ml-explore/mlx.git
synced 2025-06-25 01:41:17 +08:00
Fix view scalar bug segfault (#1603)
* fix view scalar bug * fix view scalar bug * one more fix
This commit is contained in:
parent
5e89aace9b
commit
61d787726a
@ -606,7 +606,7 @@ void View::eval_cpu(const std::vector<array>& inputs, array& out) {
|
||||
if (ibytes == obytes || obytes < ibytes && in.strides().back() == 1 ||
|
||||
in.flags().row_contiguous) {
|
||||
auto strides = in.strides();
|
||||
for (int i = 0; i < strides.size() - 1; ++i) {
|
||||
for (int i = 0; i < static_cast<int>(strides.size()) - 1; ++i) {
|
||||
strides[i] *= ibytes;
|
||||
strides[i] /= obytes;
|
||||
}
|
||||
|
@ -417,7 +417,7 @@ void View::eval_gpu(const std::vector<array>& inputs, array& out) {
|
||||
if (ibytes == obytes || obytes < ibytes && in.strides().back() == 1 ||
|
||||
in.flags().row_contiguous) {
|
||||
auto strides = in.strides();
|
||||
for (int i = 0; i < strides.size() - 1; ++i) {
|
||||
for (int i = 0; i < static_cast<int>(strides.size()) - 1; ++i) {
|
||||
strides[i] *= ibytes;
|
||||
strides[i] /= obytes;
|
||||
}
|
||||
|
@ -4587,7 +4587,7 @@ array view(const array& a, const Dtype& dtype, StreamOrDevice s /* = {} */) {
|
||||
" axis must be a multiple of the requested type size.");
|
||||
}
|
||||
out_shape.back() /= (obytes / ibytes);
|
||||
} else {
|
||||
} else if (ibytes > obytes) {
|
||||
// Type size ratios are always integers
|
||||
out_shape.back() *= (ibytes / obytes);
|
||||
}
|
||||
|
@ -2532,6 +2532,10 @@ class TestOps(mlx_tests.MLXTestCase):
|
||||
self.assertTrue(np.array_equal(np.array(out_mlx), out_np))
|
||||
|
||||
def test_view(self):
|
||||
# Check scalar
|
||||
out = mx.array(1, mx.int8).view(mx.uint8).item()
|
||||
self.assertEqual(out, 1)
|
||||
|
||||
a = mx.random.randint(shape=(4, 2, 4), low=-100, high=100)
|
||||
a_np = np.array(a)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user