Compatibility

cuTile.jl emits Tile IR bytecode, which tileiras compiles for a specific GPU architecture. Feature availability therefore depends on two independent things: the bytecode version in use, and the compute capability of the device. This page collects both.

For what Tile IR itself guarantees across versions, see the specification's stability chapter.

Baseline requirements

RequirementMinimum
Julia1.11
NVIDIA driver580 (CUDA 13)
Compute capability8.0 (Ampere)

CUDA.jl must be imported to launch kernels; it supplies the CUDA toolkit artifacts, including tileiras.

Bytecode versions

cuTile.jl can emit bytecode versions v13.1 through v13.4. By default it probes the tileiras binary in use and emits the newest version that binary accepts; the bytecode_version preference overrides this. cuTile.versioninfo() reports what will be used.

Each architecture has a minimum bytecode version below which Tile IR is not supported at all:

ArchitectureCompute capabilityMinimum bytecode
Blackwell≥ 10.0v13.1
Hopper9.0v13.3
Ampere / Ada8.0 – 8.9v13.2
older< 8.0unsupported

cuTile checks this at launch and reports an error naming both the detected version and the requirement.

Features by bytecode version

Everything not listed here works at v13.1.

Requires v13.2

FeatureNotes
Float8_E8M0FNUElement type, used as an MX block scale
atan2

Requires v13.3

FeatureNotes
Float4_E2M1FNElement type
ct.muladd_scaledAlso requires Blackwell
muladd(a, b, acc; fast_acc=true)FP8 inputs only; only takes effect on Hopper
exp with approximate roundingct.@fpmode rounding_mode=ct.Rounding.Approx
ct.atomic_store_*View-based atomic reductions
Atomic add on BFloat16Also requires Hopper (sm_90) or newer
Sparse views@view a[tile_of_indices, ...], consumed by ct.load/ct.store
StepRange views@view a[i:s:j, :]
eachtile with step != shapeEqual shape and step work at v13.1
num_worker_warps compiler option
Whole-tile reinterpretBetween element types of differing width

Requires v13.4

FeatureNotes
ct.insertReplace a non-overlapping sub-tile
check_bounds=falseOn ct.load and ct.store only; on ct.gather/ct.scatter it merely skips the bounds mask
ct.Intrinsics.powiInteger exponents through cuda_tile.fpowi

Features by architecture

FeatureRequirementBehaviour otherwise
ct.muladd_scaledBlackwell (≥ sm_100)Error
Atomic add on BFloat16Hopper (≥ sm_90)Error
fast_acc=trueHopper (sm_90)Silently ignored

fast_acc is the exception to the pattern: it is a throughput hint rather than a capability, so on architectures where it does nothing, it is accepted and ignored rather than rejected. It is still an error to pass it with non-FP8 inputs on any architecture.

API stability

cuTile.jl is in beta. Most Tile IR features are implemented, and the package is verified against the benchmarks and tests in the repository, but interfaces may change without notice between releases. Pin a version if you need stability.

Symbols are marked public or exported when they are intended for use; anything else is internal, and will change without a deprecation cycle.