Skip to content

Cross-vendor analysis

WAVE compares NVIDIA, AMD, Intel, and Apple execution interfaces to identify operations with common behavior.

VendorDocumentsScope
NVIDIAPTX ISA v1.0 through v9.2Tesla through Hopper
AMDRDNA 1-4 and CDNA 1-4 ISA referencesConsumer and datacenter GPUs
IntelGen11, Xe-LP, Xe-HPG, and Xe-HPC referencesIntegrated and discrete GPUs
AppleMetal interfaces and Asahi Linux reverse engineering of G13Language guarantees and machine behavior

Metal describes a programming interface. Asahi Linux documents reverse-engineered hardware behavior. Claims about either must distinguish those sources.

The comparison uses eight dimensions.

Threads form execution groups. WAVE represents these as waves without prescribing how hardware schedules their lanes.

Wave width varies by target. NVIDIA uses 32 lanes; AMD supports 32 or 64; Intel supports several subgroup widths; Metal exposes the SIMD-group width. Programs must preserve the grouping required by their collectives.

Targets differ in register organization, including scalar and vector files and SIMD register widths. WAVE uses untyped 32-bit lane values as its common representation. A backend maps that state to the target compiler's registers.

Workgroup-local and device memory provide common visibility domains. Cache organization and coherence mechanisms remain target-specific.

Arithmetic, memory access, atomics, control flow, synchronization, and lane exchange occur across the target interfaces. Operand formats and participation rules still require separate comparison.

Barriers coordinate arrival, fences order accesses, and atomics update memory indivisibly. Their scopes and failure behavior matter as much as their names.

The target controls instruction issue and resource assignment. WAVE specifies observable program behavior without exposing a particular hardware scheduler.

Matrix acceleration, wave-width modes, subgroup sizes, and graphics integration vary. Optional capabilities need explicit requirements rather than assumptions about all targets.

The core represents lane state, memory accesses, structured control flow, synchronization, and wave exchange. Each operation defines its participating lanes and observable effects.

Parameterizable dialects: exposed as runtime queries

Section titled “Parameterizable dialects: exposed as runtime queries”

Wave width, register limits, local-memory capacity, and maximum workgroup dimensions vary by target. Programs and launch code must account for those limits. A width change can alter a collective and requires compatible lowering. See Thin abstraction.

Machine encodings, cache organization, and scheduling mechanisms belong to the target implementation. Specialized operations require capabilities beyond the mandatory core. Matrix operations, for example, have optional WAVE instructions rather than a universal machine-level mapping.

The ISA defines shared execution effects while backends select target-specific mechanisms. Performance depends on the resulting programs and hardware.