From 465c689d1f05590ef0cc8efe80ad405fea292ba6 Mon Sep 17 00:00:00 2001 From: George Hotz Date: Mon, 6 Jul 2026 11:52:11 -0700 Subject: [PATCH] reduce removes axes now --- spec/tinyspec.pdf | Bin 96938 -> 96003 bytes spec/tinyspec.tex | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/tinyspec.pdf b/spec/tinyspec.pdf index 04d4c674391f5239dddab41450e0ad0aef094550..7e7acf647f815bbf6588f6bb28857862e81176eb 100644 GIT binary patch delta 21534 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 delta 22119 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 diff --git a/spec/tinyspec.tex b/spec/tinyspec.tex index df371b60b2..e57798722f 100644 --- a/spec/tinyspec.tex +++ b/spec/tinyspec.tex @@ -83,7 +83,7 @@ All nodes in the tinygrad graph are \textbf{UOps}. A UOp is a tuple $(\mathrm{op \end{tabular} %% ============================================================ -\subsection*{{\color{reducered}Reduce Ops} \normalfont\small--- collapse axes to size $1$} +\subsection*{{\color{reducered}Reduce Ops} \normalfont\small--- remove axes} \begin{tabular}{@{}l l l l@{}} \toprule @@ -258,7 +258,7 @@ Every UOp has a \textbf{dtype}, \textbf{shape}, \textbf{device}, \textbf{addrspa \op{Const} & from arg & $()$ & \textsc{null} & $[v, v]$ \\ \op{Param} & from arg & from $\mathrm{src}[0]$ & from arg & from src or dtype range \\[3pt] Movement ops & $\mathrm{src}[0].\mathrm{dtype}$ & (see op) & $\mathrm{src}[0].\mathrm{device}$ & $\mathrm{src}[0]$ \\ -\op{Reduce} & $\mathrm{src}[0].\mathrm{dtype}$ & collapse axes to $1$ & $\mathrm{src}[0].\mathrm{device}$ & dtype range \\[3pt] +\op{Reduce} & $\mathrm{src}[0].\mathrm{dtype}$ & remove axes & $\mathrm{src}[0].\mathrm{device}$ & dtype range \\[3pt] \op{Cast} & from arg & $\mathrm{src}[0].\mathrm{shape}$ & $\mathrm{src}[0].\mathrm{device}$ & clamped to dtype \\ \op{Bitcast} & from arg & $\mathrm{src}[0].\mathrm{shape}$ & $\mathrm{src}[0].\mathrm{device}$ & dtype range \\ \op{Copy} & $\mathrm{src}[0].\mathrm{dtype}$ & $\mathrm{src}[0].\mathrm{shape}$ & from arg & $\mathrm{src}[0]$ \\