Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
cuTile Rust Compiler
This crate compiles Rust DSL kernels into Tile IR bytecode for GPU execution
via tileiras. Most users interact with it indirectly through cutile and
cutile-macro.
The runtime resolves tileiras in this order:
CUTILE_TILEIRAS_PATH, when set.$CUDA_TOOLKIT_PATH/bin/tileiras, then$CUDA_HOME/bin/tileiras, when the variable is set and the binary exists there (the same variables, in the same order, that the build scripts honor).- Standard CUDA 13.3/13.2 install locations, when they contain
bin/tileiras. tileirasthrough normalPATHlookup.
The bytecode version handed to tileiras is negotiated per toolchain: an
explicit CUTILE_BYTECODE_VERSION (e.g. 13.2), else the toolkit's cuda.h
(also found under targets/<platform>/include/), else a probe of the resolved
binary. The result is clamped to the versions this crate can emit (13.2 to
13.3); a toolkit older than CUDA 13.2, or a probe that cannot run, is an error
rather than a silent fallback.
Set CUTILE_TILEIRAS_PATH to force a specific binary:
CUTILE_TILEIRAS_PATH=/opt/cuda-tile/bin/tileiras \
Set CUTILE_SETUP_DIAGNOSTICS=1 to print CUDA toolkit and tileiras discovery
decisions during setup.
Testing
Debugging
Set CUTILE_DUMP to inspect the compiler's output. Output goes to stderr,
once per compiled module.
# Dump the Tile IR for all kernels:
CUTILE_DUMP=ir
# Dump both stages:
CUTILE_DUMP=ir,bytecode
# Dump everything (today: the same two stages):
CUTILE_DUMP=all
Stages
| Stage | Description |
|---|---|
ir |
cutile-ir Module, pretty-printed (MLIR-like text) |
bytecode / bc |
Encoded bytecode, decoded to human-readable text |
The pass-level names ast, resolved, typed, and instantiated are
accepted but no pass emits them yet; they produce no output.
Filtering
Use CUTILE_DUMP_FILTER to limit output. The two stages are module-level
dumps, so a qualified entry narrows by its module part (the function part is
not consulted), and a bare function name matches every module:
# By qualified path — dumps every kernel of `my_module`:
CUTILE_DUMP=ir CUTILE_DUMP_FILTER=my_module::my_kernel
# Multiple filters (comma-separated):
CUTILE_DUMP=ir CUTILE_DUMP_FILTER=my_module::add,other_module::gemm
Legacy
TILE_IR_DUMP=1 is still supported as an alias for CUTILE_DUMP=ir.