Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bf6421bfb0 | |||
| b545a35b9b |
@@ -133,8 +133,9 @@ void RoPE::eval_gpu(
|
||||
if (single) {
|
||||
compute_encoder.set_bytes(out_strides, 1, 4);
|
||||
uint32_t dim0 = dims_ / 2;
|
||||
group_dims = get_block_dims(dim0, N, 1);
|
||||
grid_dims = MTL::Size(dim0, N, 1);
|
||||
uint32_t dim1 = B * N;
|
||||
group_dims = get_block_dims(dim0, dim1, 1);
|
||||
grid_dims = MTL::Size(dim0, dim1, 1);
|
||||
} else {
|
||||
compute_encoder.set_bytes(strides, 3, 4);
|
||||
compute_encoder.set_bytes(out_strides, 3, 5);
|
||||
|
||||
@@ -365,6 +365,28 @@ class TestFast(mlx_tests.MLXTestCase):
|
||||
rx = rope_orig(x, dims, traditional, base, scale, offset)
|
||||
self.assertLess(mx.abs(rx - rx_fast).max(), 1e-5)
|
||||
|
||||
def test_rope_single_batch(self):
|
||||
base = 10000.0
|
||||
scale = 1.0
|
||||
offset = 5
|
||||
|
||||
for traditional in [True, False]:
|
||||
for B in [2, 4, 8]:
|
||||
for n_head in [1, 4, 7]:
|
||||
for dims in [64, 128]:
|
||||
x = mx.random.uniform(shape=(B, n_head, 1, dims))
|
||||
mx.eval(x)
|
||||
rx_fast = mx.fast.rope(
|
||||
x,
|
||||
dims,
|
||||
traditional=traditional,
|
||||
base=base,
|
||||
scale=scale,
|
||||
offset=offset,
|
||||
)
|
||||
rx = rope_orig(x, dims, traditional, base, scale, offset)
|
||||
self.assertLess(mx.abs(rx - rx_fast).max(), 1e-5)
|
||||
|
||||
def test_rope_with_large_offset(self):
|
||||
x = mx.random.normal(shape=(1, 1, 1024, 32))
|
||||
rx_fp32 = mx.fast.rope(
|
||||
|
||||
Reference in New Issue
Block a user