From 4b59083d7c5e760831d65fef9df49e992c253573 Mon Sep 17 00:00:00 2001 From: Sieds Lykles <93992551+S-Lykles@users.noreply.github.com> Date: Fri, 13 Mar 2026 15:24:29 +0100 Subject: [PATCH] assign into empty works (#15256) --- test/unit/test_setitem_schedule.py | 3 +-- tinygrad/tensor.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/test/unit/test_setitem_schedule.py b/test/unit/test_setitem_schedule.py index ac63ef1162..34d9be4b18 100644 --- a/test/unit/test_setitem_schedule.py +++ b/test/unit/test_setitem_schedule.py @@ -36,8 +36,7 @@ class TestSetitemInto(unittest.TestCase): self.assertEqual(GlobalCounters.kernel_count, 0) t.realize() self.assertEqual(GlobalCounters.kernel_count, 1) - # TODO: this can be just 4 if empty goes through is_realized setitem path - self.assertEqual(GlobalCounters.global_mem, 4*(3*2+1)) # 3 elements had +1, 1 is assigned directly + self.assertEqual(GlobalCounters.global_mem, 4) t[1].realize() t.realize() self.assertEqual(GlobalCounters.kernel_count, 1) diff --git a/tinygrad/tensor.py b/tinygrad/tensor.py index b283c35d05..8178312168 100644 --- a/tinygrad/tensor.py +++ b/tinygrad/tensor.py @@ -1347,7 +1347,7 @@ class Tensor(OpMixin): if is_disk: raise RuntimeError("advanced setitem is not supported for DISK tensors") if not isinstance(v, Tensor): v = Tensor(v, device=self.device, dtype=self.dtype) self.assign(self._getitem(indices, v)) - elif is_disk or self.uop.is_realized or self.uop.base.op is Ops.AFTER: # basic setitem, self is realized + elif is_disk or self.uop.is_realized or self.uop.base.op in (Ops.AFTER, Ops.BUFFER): # basic setitem, self is realized view = self[indices] if isinstance(v, Tensor) and v.uop.op is Ops.ASSIGN and v.uop in view.uop.base.src: return view.assign(v)