[{"data":1,"prerenderedAt":19},["ShallowReactive",2],{"chapter:teenygrad\u002Fcore-concepts\u002Fdtype-system.json":3},{"project":4,"route":5,"title":6,"titleHtml":6,"navTitle":6,"part":7,"sourcePath":8,"editUrl":9,"html":10,"toc":11,"hasMermaid":12,"prev":13,"next":16},"teenygrad","\u002Fteenygrad\u002Fcore-concepts\u002Fdtype-system","The Dtype System","Core Concepts","core-concepts\u002Fdtype-system.md","https:\u002F\u002Fgithub.com\u002Fteenygrad\u002Fteenygrad\u002Fedit\u002Fmain\u002Fbooks\u002Fteenygrad\u002Fsrc\u002Fcore-concepts\u002Fdtype-system.md","\u003Cp>\u003Ccode>teeny-core::dtype\u003C\u002Fcode> (\u003Ca href=\"\u002Fapi\u002Fteenygrad\u002Fteenygrad\u002Fteeny_core\u002Fdtype\u002F\">API docs\u003C\u002Fa>) defines the\nelement-type traits used throughout the workspace — \u003Ccode>Dtype\u003C\u002Fcode>, \u003Ccode>Float\u003C\u002Fcode>, and tensor traits\n(\u003Ccode>Tensor\u003C\u002Fcode>, \u003Ccode>RankedTensor\u003C\u002Fcode>, \u003Ccode>EagerTensor\u003C\u002Fcode>, \u003Ccode>Comparison\u003C\u002Fcode>) that generic kernel\u002Flayer code is written\nagainst (e.g. \u003Ccode>teeny-kernels\u003C\u002Fcode>’ attention kernels are generic over \u003Ccode>D: Float\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Cp>Host-only functionality that doesn’t belong in the kernel DSL context (like converting a float to\nits little-endian byte representation) lives in a separate \u003Ccode>bytes\u003C\u002Fcode> submodule\n(\u003Ccode>dtype::bytes::FloatBytes\u003C\u002Fcode>) rather than on the core \u003Ccode>Float\u003C\u002Fcode> trait itself — this split exists\nbecause \u003Ccode>teeny-triton\u003C\u002Fcode>’s \u003Ccode>build.rs\u003C\u002Fcode> embeds \u003Ccode>dtype\u002Fmod.rs\u003C\u002Fcode>’s source directly into the kernel DSL\n(see \u003Ca href=\"\u002Fteenygrad\u002Fkernels-and-backends\u002Fwriting-a-kernel\">Writing a Triton Kernel\u003C\u002Fa>), so anything in that\nfile needs to make sense in a \u003Ccode>no_core\u003C\u002Fcode> DSL context, not just as normal host-side Rust.\u003C\u002Fp>\n\u003Cp>\u003Ccode>DtypeRepr\u003C\u002Fcode> (in \u003Ccode>teeny-core::graph\u003C\u002Fcode>, not \u003Ccode>dtype\u003C\u002Fcode>) is the runtime\u002Fgraph-level enum representation\nof a dtype (e.g. \u003Ccode>DtypeRepr::F32\u003C\u002Fcode>), distinct from the compile-time \u003Ccode>Dtype\u003C\u002Fcode>\u002F\u003Ccode>Float\u003C\u002Fcode> traits — used\nwhen tracing a graph (\u003Ccode>SymTensor::input(dtype, shape)\u003C\u002Fcode>) where the dtype isn’t a type parameter.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>TODO\u003C\u002Fstrong>: expand with a full trait reference and guidance on writing dtype-generic kernel code,\nonce the trait hierarchy stabilizes.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n",[],false,{"title":14,"titleHtml":14,"route":15},"Compilation Flow","\u002Fteenygrad\u002Fcore-concepts\u002Fcompilation-flow",{"title":17,"titleHtml":17,"route":18},"Name Scopes","\u002Fteenygrad\u002Fcore-concepts\u002Fname-scopes",1786271829001]