tc should be in opt (#11148)

* tc should be in opt [pr]

* fix import
This commit is contained in:
George Hotz
2025-07-09 14:12:21 -07:00
committed by GitHub
parent 6697d0089d
commit 53ae153404
9 changed files with 28 additions and 22 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
import unittest
from tinygrad import Tensor, Context, Device
from tinygrad.engine.realize import get_program
from tinygrad.renderer import Opt, OptOps
from tinygrad.opt.kernel import Opt, OptOps
from tinygrad.uop.ops import KernelInfo
class TestLinearizerRewrite(unittest.TestCase):
+1 -1
View File
@@ -208,7 +208,7 @@ def cpu_profile(name:str|TracingKey, device="CPU", is_copy=False, display=True)
cache_dir: str = os.path.join(getenv("XDG_CACHE_HOME", os.path.expanduser("~/Library/Caches" if OSX else "~/.cache")), "tinygrad")
CACHEDB: str = getenv("CACHEDB", os.path.abspath(os.path.join(cache_dir, "cache.db")))
VERSION = 20
VERSION = 21
_db_connection = None
def db_connection():
global _db_connection
+14 -1
View File
@@ -8,13 +8,26 @@ from enum import Enum, auto
from tinygrad.uop.ops import GroupOp, KernelInfo, UOp, Ops, can_pad, resolve, Variable, sint, graph_rewrite, smax
from tinygrad.uop.spec import type_verify, ast_spec
from tinygrad.device import Device
from tinygrad.renderer import Renderer, TensorCore, ProgramSpec, Opt, OptOps
from tinygrad.opt.tc import TensorCore
from tinygrad.renderer import Renderer, ProgramSpec
from tinygrad.dtype import ImageDType
from tinygrad.helpers import all_same, colored, ansilen, dedup, prod, round_up, all_int, to_function_name, unwrap, DEBUG, TC_SELECT, TC_OPT, AMX
from tinygrad.shape.shapetracker import ShapeTracker
from tinygrad.shape.view import strides_for_shape, get_contraction
from tinygrad.kernelize.kernelize import view_left
class OptOps(Enum):
TC = auto(); UPCAST = auto(); UNROLL = auto(); LOCAL = auto() # noqa: E702
GROUP = auto(); GROUPTOP = auto(); NOLOCALS = auto(); PADTO = auto(); SWAP = auto() # noqa: E702
def __lt__(self, x:OptOps): return self.value < x.value
@dataclass(frozen=True, order=True)
class Opt:
op: OptOps
axis: Optional[int] = None
arg: Optional[int | tuple] = None
def __repr__(self): return f"Opt(op={self.op}, axis={self.axis}, arg={self.arg})"
class AxisType(Enum):
GLOBAL = auto(); LOCAL = auto(); GROUP_REDUCE = auto(); REDUCE = auto(); UPCAST = auto(); UNROLL = auto() # noqa: E702
+4 -15
View File
@@ -1,23 +1,12 @@
from __future__ import annotations
from typing import Optional, Callable, cast
from typing import Optional, Callable, cast, TYPE_CHECKING
import functools, itertools
from enum import Enum, auto
from dataclasses import dataclass, field, replace
from tinygrad.helpers import to_function_name, dedup, prod
from tinygrad.uop.ops import Ops, UOp, sym_infer, sint, Variable, ssimplify, GroupOp, PatternMatcher
from tinygrad.renderer.tc import TensorCore
class OptOps(Enum):
TC = auto(); UPCAST = auto(); UNROLL = auto(); LOCAL = auto() # noqa: E702
GROUP = auto(); GROUPTOP = auto(); NOLOCALS = auto(); PADTO = auto(); SWAP = auto() # noqa: E702
def __lt__(self, x:OptOps): return self.value < x.value
@dataclass(frozen=True, order=True)
class Opt:
op: OptOps
axis: Optional[int] = None
arg: Optional[int | tuple] = None
def __repr__(self): return f"Opt(op={self.op}, axis={self.axis}, arg={self.arg})"
if TYPE_CHECKING:
from tinygrad.opt.tc import TensorCore
from tinygrad.opt.kernel import Opt
@dataclass(frozen=True)
class Estimates:
+2 -1
View File
@@ -1,10 +1,11 @@
from typing import Literal, Callable, cast
import os, math, sys
from collections import defaultdict, Counter
from tinygrad.opt import tc
from tinygrad.uop.ops import GroupOp, Ops, UOp, PatternMatcher, UPat
from tinygrad.helpers import strip_parens, getenv, prod, dedup, AMX
from tinygrad.dtype import ImageDType, dtypes, DType, PtrDType
from tinygrad.renderer import Renderer, tc
from tinygrad.renderer import Renderer
from tinygrad.codegen.devectorizer import no_vectorized_alu
base_rewrite = PatternMatcher([
+2 -1
View File
@@ -1,6 +1,7 @@
from typing import cast
import math, struct, sys
from tinygrad.renderer import Renderer, tc
from tinygrad.opt import tc
from tinygrad.renderer import Renderer
from tinygrad.renderer.cstyle import AMDRenderer
from tinygrad.uop.ops import UOp, PatternMatcher, UPat, Ops, GroupOp
from tinygrad.dtype import dtypes, DType, PtrDType, truncate
+2 -1
View File
@@ -1,9 +1,10 @@
from typing import cast, Callable
import struct
from collections import defaultdict
from tinygrad.opt import tc
from tinygrad.uop.ops import Ops, UOp, PatternMatcher, UPat, GroupOp
from tinygrad.dtype import dtypes, DType, PtrDType
from tinygrad.renderer import Renderer, tc
from tinygrad.renderer import Renderer
from tinygrad.renderer.cstyle import CUDARenderer
from tinygrad.helpers import flatten, get_single_element
+2 -1
View File
@@ -7,8 +7,9 @@ import pickle, base64, itertools, time, struct, sys
from tinygrad.dtype import DType, dtypes, ImageDType, PtrDType, truncate
from tinygrad.helpers import all_same, getenv, flatten, get_single_element
from tinygrad.device import Compiled, Compiler, Allocator
from tinygrad.opt import tc
from tinygrad.uop.ops import exec_alu, Ops, UOp, GroupOp
from tinygrad.renderer import Renderer, tc
from tinygrad.renderer import Renderer
def _load(m, i):
if i is None: return 0.0