Expand description
The ops no single-device AOT backend can run — concurrency, virtual-time scheduling, and networking — classified once so the device tiers (Tenstorrent baby core, one CUDA kernel launch) cannot drift apart on their refusal set.
A Tensix baby core and a GPU are both SPMD single-program engines with no cooperative scheduler and no host IO on the compute path. Whatever else a given tier additionally cannot lower (a GPU thread cannot run the glibc-heavy dynamic runtime, for instance) it layers on top of THIS shared base; the base itself is the one thing every offload target agrees on.
Enums§
- Offload
- The category of op that no single-device AOT backend can lower. Each tier maps a category to its own worded reason (a Tensix core vs. a CUDA kernel phrase it differently) but the SET is shared, so a concurrency/networking op can never be silently accepted by one tier and refused by another.
Functions§
- classify
- Classify a single op.
Nonefor every op that is not inherently off a single-device datapath (arithmetic, control flow, collections, …). - first
- The first offload-unsupported op in
program, classified —Noneif the whole program is on the single-device datapath. - first_
reachable - The first unsupported op REACHABLE from the program’s entry — the honest question for a backend deciding whether it can build this program.