Skip to content

Commit 329013f

Browse files
authored
fix UOp.metadata on KERNEL op [pr] (tinygrad#8953)
* fix UOp.metadata on KERNEL op [pr] * hotfix: is not None
1 parent 4de084a commit 329013f

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

tinygrad/engine/schedule.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,8 @@ def inputs(self) -> tuple[Buffer, ...]:
267267
def output_idxs(self) -> tuple[int, ...]: return tuple(x.src[0].arg for x in self.ast.src) if self.ast.op is Ops.SINK else (0,)
268268

269269
def kernel_to_si(k:UOp) -> ScheduleItem:
270-
assert k.op is Ops.KERNEL, f"must be KERNEL {k}"
271-
return ScheduleItem(k.arg.ast, tuple(u.buf_uop.buffer for u in k.src), k.arg.metadata)
270+
assert k.op is Ops.KERNEL and isinstance(k.metadata, tuple), f"must be KERNEL {k}"
271+
return ScheduleItem(k.arg.ast, tuple(u.buf_uop.buffer for u in k.src), k.metadata)
272272

273273
# **** Kernel creation
274274

@@ -433,7 +433,7 @@ def create_schedule_with_vars(big_sink:UOp) -> tuple[list[ScheduleItem], dict[Va
433433
for k,v in tensor_map.items():
434434
if (b:=buffer_map.get(v)) is not None:
435435
buf_tensors.setdefault(b, []).append(k)
436-
ops_metadata[b] = k.metadata
436+
if isinstance(k.metadata, Metadata): ops_metadata[b] = k.metadata
437437
realize_map = group_realizes(sink, ctx:=ScheduleContext(ops_metadata))
438438
if len(realize_map) == 0: return [], {}, becomes_map
439439

@@ -460,7 +460,7 @@ def create_schedule_with_vars(big_sink:UOp) -> tuple[list[ScheduleItem], dict[Va
460460
in_degree: defaultdict[ScheduleItem, int] = defaultdict(int)
461461
for si in prescheduled:
462462
# realize outputs before a parent is assigned to
463-
parents_assigns = dedup(xsi for x in ctx.preloads[si.bufs[0]] if (xsi:=schedule_targets.get(x.buffer)) and xsi is not si)
463+
parents_assigns = dedup(xsi for x in ctx.preloads[si.bufs[0]] if (xsi:=schedule_targets.get(x.buffer)) is not None and xsi is not si)
464464
for assign in parents_assigns:
465465
graph[si].append(assign)
466466
in_degree[assign] += 1

tinygrad/ops.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ def copy_to_device(self, device:str|tuple[str, ...], clone:bool=False) -> UOp:
506506
return ret
507507
def clone(self) -> UOp: return self.copy_to_device(self.device, clone=True)
508508
@property
509-
def metadata(self): return all_metadata.get(self, None)
509+
def metadata(self) -> tuple[Metadata, ...]|Metadata|None: return self.arg.metadata if self.op is Ops.KERNEL else all_metadata.get(self, None)
510510

511511
# *** uop movement ops ***
512512

0 commit comments

Comments
 (0)