From 43bce1f39f4b1cd536ff6448cc7699db4536a217 Mon Sep 17 00:00:00 2001 From: chenyu Date: Thu, 9 Oct 2025 11:25:53 +0800 Subject: [PATCH] delete View minify [pr] (#12538) --- test/unit/test_shapetracker.py | 6 ------ test/unit/test_view.py | 19 ------------------- tinygrad/shape/shapetracker.py | 1 - tinygrad/shape/view.py | 5 ----- 4 files changed, 31 deletions(-) diff --git a/test/unit/test_shapetracker.py b/test/unit/test_shapetracker.py index 48ca5f449e..ec7b56a20f 100644 --- a/test/unit/test_shapetracker.py +++ b/test/unit/test_shapetracker.py @@ -175,12 +175,6 @@ class TestRealSimplifies(unittest.TestCase): View.create((8, 3, 3, 11, 2, 28), (924, 308, 0, 28, 0, 1), 0, None), View.create((8, 1, 6, 10, 28, 3, 2, 1), (5544, 0, 0, 56, 1, 1848, 672, 0), 0, None))) -class TestViewMinify(unittest.TestCase): - def test_minifies(self): - assert len(View.create((10,10)).minify().shape) == 1 - assert len(View.create((10,10)).permute((1,0)).minify().shape) == 2 - assert len(View.create((10,10,10,10)).permute((1,0,2,3)).minify().shape) == 3 - class TestIndexExpressions2d(unittest.TestCase): def setUp(self): shapes = [(30, 5), (15, 10), (15, 1), (5, 10), (5, 1)] # Make sure dim0 is a multiple of 5, one of the tests divides this dimension by 5 diff --git a/test/unit/test_view.py b/test/unit/test_view.py index 8929418ab4..cc50120519 100644 --- a/test/unit/test_view.py +++ b/test/unit/test_view.py @@ -10,25 +10,6 @@ class TestView(unittest.TestCase): v = View.create(shape=(4,3,2), strides=(1,4,10), mask=((0,4),(0,3),(0,2))) self.assertIsNone(v.mask) - def test_minify_zero_strided_dims(self): - target = View.create(shape=(2,2), strides=(30,2), offset=7, mask=None) - v = View.create(shape=(2,1,2), strides=(30,0,2), offset=7, mask=None) - self.assertEqual(v.minify(), target) - v = View.create(shape=(1,2,2), strides=(0,30,2), offset=7, mask=None) - self.assertEqual(v.minify(), target) - v = View.create(shape=(2,2,1), strides=(30,2,0), offset=7, mask=None) - self.assertEqual(v.minify(), target) - v = View.create(shape=(2,1,1,2), strides=(30,0,0,2), offset=7, mask=None) - self.assertEqual(v.minify(), target) - v = View.create(shape=(1,1,2,2), strides=(0,0,30,2), offset=7, mask=None) - self.assertEqual(v.minify(), target) - v = View.create(shape=(2,2,1,1), strides=(30,2,0,0), offset=7, mask=None) - self.assertEqual(v.minify(), target) - v = View.create(shape=(1,2,2,1), strides=(0,30,2,0), offset=7, mask=None) - self.assertEqual(v.minify(), target) - v = View.create(shape=(1,2,1,2), strides=(0,30,0,2), offset=7, mask=None) - self.assertEqual(v.minify(), target) - def test_empty_mask_contiguous(self): v1 = View.create(shape=(2,2,2), strides=(4,2,1), mask=None) v2 = View.create(shape=(2,2,2), strides=(4,2,1), mask=((0,2),(0,2),(0,2))) diff --git a/tinygrad/shape/shapetracker.py b/tinygrad/shape/shapetracker.py index ebca825426..2f04cea468 100644 --- a/tinygrad/shape/shapetracker.py +++ b/tinygrad/shape/shapetracker.py @@ -12,7 +12,6 @@ from tinygrad.uop.ops import UOp, Ops, graph_rewrite, Variable, sint, sint_to_uo def views_to_valid_uop(views: tuple[View, ...], _idxs:tuple[UOp, ...]|None=None) -> UOp: idx = views[-1].to_valid_uop(_idxs) for view in reversed(views[0:-1]): - view = view.minify() idx = view.to_valid_uop([sint_to_uop(i) for i in unravel(view.shape, idx)]) with Context(TRACK_MATCH_STATS=0): return graph_rewrite(idx, sym, name="indexing sym @ 1") diff --git a/tinygrad/shape/view.py b/tinygrad/shape/view.py index 2ef2a08b1f..82a9147352 100644 --- a/tinygrad/shape/view.py +++ b/tinygrad/shape/view.py @@ -226,11 +226,6 @@ class View: return View.create(vm1.shape, tuple(strides), ssimplify(sum(o * s for o, s in zip(origin, vm2.strides)) + vm2.offset)) - @functools.cache # pylint: disable=method-cache-max-size-none - def minify(self): - min_shape = tuple(x[0] for x in merge_dims(self.shape, self.strides, self.mask)) - return nv if (nv := self.reshape(min_shape)) else self - def __unsafe_resize(self, arg: tuple[tuple[sint, sint], ...], mask=None) -> View: offset = sum([s * x[0] for s, x in zip(self.strides,arg)]) if self.mask: