xpu-caps
Runtime capability tiering for Intel GPUs, loadable through kernels. It
reports what the active device supports and resolves a dispatch tier other
kernels select paths on, the way an aarch64 kernel picks between SDOT, base
NEON, and scalar. Every field with an independent source is cross-checked
against torch.xpu.get_device_capability.
Intel GPUs span parts with and without XMX, bf16, and fp64, and there is no shared way to ask which one you are on, so kernels either assume recent discrete hardware and do nothing useful elsewhere, or hard-code a fallback and leave the matrix engine idle. This kernel answers the question once, and it answers a second one nothing else does: whether the backend actually executes. A capability query cannot detect a backend that compiles, launches, synchronizes, and returns success while writing nothing; only running a kernel and checking its output can.
Probed live on an Intel Iris Xe: the ladder resolves to simd_fp16 (fp16 arithmetic, no matrix engine) on a 96-EU integrated part with no XMX and no fp64, and self_test() runs a real kernel and verifies its output, which a capability query cannot do.
Usage
from kernels import get_kernel
caps_mod = get_kernel("phanerozoic/xpu-caps", version=1, trust_remote_code=True)
caps = caps_mod.capabilities()
print(caps.tier) # 'simd_fp16'
print(caps.has_xmx, caps.has_bf16, caps.is_integrated)
assert caps_mod.self_test() # the backend actually executes
version selects the release branch; trust_remote_code is required by
kernels for publishers without the trusted-publisher mark.
API
| Symbol | Purpose |
|---|---|
capabilities() |
device capability record and resolved dispatch tier |
self_test() |
run a real kernel and verify its output on the host |
Reported fields: has_fp16, has_fp64, has_bf16, has_atomic64,
has_xmx, is_integrated, max_work_group_size, local_mem_size,
max_compute_units, global_mem_mib, eu_count, eu_simd_width,
subslices_per_slice, max_mem_bandwidth, sub_group_sizes,
max_sub_group_size.
Method
Tiers, ordered by capability:
| tier | condition |
|---|---|
xmx_bf16 |
matrix engine with bf16 operands |
xmx_fp16 |
matrix engine, fp16 operands |
simd_fp16 |
fp16 arithmetic, no matrix engine |
simd_fp32 |
fp32 only |
scalar |
fallback |
XPU_CAPS_TIER demotes the reported tier for exercising a fallback path. It
may only lower it; requesting a tier the device does not support raises.
self_test() runs a kernel whose output depends on both the global index
and a group reduction, then verifies the result on the host. This exists
because Triton on Gen12LP does exactly the failure it catches: kernels
return exit code 0 with the output buffer untouched.
has_bf16 comes from torch's device query; oneAPI 2026.0 exposes no bf16
SYCL aspect.
Validation
Sixteen checks on Intel Iris Xe (Gen12LP, 96 EUs), torch 2.13.0+xpu. Every
field with an independent source is cross-checked against
torch.xpu.get_device_capability: has_fp16, has_fp64, has_atomic64,
has_xmx, max_work_group_size, max_compute_units, and eu_count all
agree exactly. The execution probe is verified element-exact at n = 1, 255,
256, 1000, and 65536, covering the partial-work-group tail.
Requirements and limits
- Intel GPU with a working Level Zero driver and a torch XPU build.
- The tier is a capability statement, not a performance model: a device may
report
xmx_fp16and still be slower than a largersimd_fp16part.
References
SYCL device aspects and the Level Zero device query; torch.xpu device
capability reporting.
License
Apache-2.0.
- Downloads last month
- -
- OS
- linux
- Arch
- x86_64
- Kernel Builder
- 19aaa64

