From 689bf68cfca430990a93f309d0cbe843c9cbba04 Mon Sep 17 00:00:00 2001 From: qazal <77887910+Qazalin@users.noreply.github.com> Date: Mon, 20 Jan 2025 05:24:19 -0500 Subject: [PATCH] remove GroupOp.Meta [pr] (#8686) --- tinygrad/engine/schedule.py | 8 ++++---- tinygrad/ops.py | 2 -- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/tinygrad/engine/schedule.py b/tinygrad/engine/schedule.py index 6ddb7084c0..6a53c99d9f 100644 --- a/tinygrad/engine/schedule.py +++ b/tinygrad/engine/schedule.py @@ -193,7 +193,7 @@ to_si = PatternMatcher([ # simplify and unbind the final VIEWs (UPat(Ops.VIEW, name="x"), _append_st_vars), # don't need SINK on COPY or BUFFER_VIEW - (UPat(Ops.SINK, src=(UPat.store(UPat.var("b"), UPat(), UPat(GroupOp.Meta, name="x")),)), lambda b,x: x.replace(src=(b, *x.src))), + (UPat(Ops.SINK, src=(UPat.store(UPat.var("b"), UPat(), UPat((Ops.COPY, Ops.BUFFER_VIEW), name="x")),)), lambda b,x: x.replace(src=(b, *x.src))), # don't need contiguous or assign anymore (UPat(Ops.CONTIGUOUS, src=(UPat.var("x"),)), lambda x: x), (UPat(Ops.ASSIGN, src=(UPat(), UPat.var("x"),)), lambda x: x), @@ -438,7 +438,7 @@ def realize_view(ctx:ScheduleContext, view:UOp, src:UOp, b:UOp, **kwargs) -> Non return None if (all(v.mask is None for v in st.views) or can_pad(src, ctx.realizes, set())) else realize(ctx, b, src) def fold_img_cast(ctx:ScheduleContext, xb:UOp, view:UOp, b:UOp, to_cast:UOp, **kwargs) -> UOp|None: - if not isinstance(xb.dtype, ImageDType) or b not in ctx.realizes or xb not in ctx.realizes or uval(to_cast).op in GroupOp.Meta: return None + if not isinstance(xb.dtype, ImageDType) or b not in ctx.realizes or xb not in ctx.realizes or uval(to_cast).op is Ops.COPY: return None del ctx.realizes[b] return to_cast.view(unwrap(view.st)) @@ -454,8 +454,8 @@ def create_subbuffer(base:UOp, b:UOp, root:UOp, x:UOp): do_realize = PatternMatcher([ # always realize sinked ops (UPat(Ops.SINK, name="sink"), sink_outputs), - # always realize meta ops - (UPatScheduled({Ops.ASSIGN, Ops.CONTIGUOUS, *GroupOp.Meta}), realize), + # always realize ASSIGN/CONTIGUOUS/COPY/BUFFER_VIEW + (UPatScheduled({Ops.ASSIGN, Ops.CONTIGUOUS, Ops.COPY, Ops.BUFFER_VIEW}), realize), # realize before expand or unsafe pad ops (UPatScheduled(name="src").view(name="view"), realize_view), # don't realize image to image casts diff --git a/tinygrad/ops.py b/tinygrad/ops.py index 97b637ed34..29fe063540 100644 --- a/tinygrad/ops.py +++ b/tinygrad/ops.py @@ -161,8 +161,6 @@ class GroupOp: Irreducible = {Ops.CONST, Ops.DEFINE_VAR, Ops.SPECIAL, Ops.RANGE} Movement = {Ops.RESHAPE, Ops.EXPAND, Ops.PERMUTE, Ops.PAD, Ops.SHRINK, Ops.STRIDE} - # meta ops - Meta = {Ops.COPY, Ops.BUFFER_VIEW} Buffer = {Ops.LOAD, Ops.PRELOAD, Ops.STORE, Ops.VALID} Block = {Ops.BLOCK, Ops.BLOCKEND, Ops.BLOCKFORK, Ops.BLOCKSTART}