Sarek_metal.Metal_coopmatThe Metal cooperative-matrix capability rule (specs/coopmat-metal-simdgroup.md).
Metal has no query that lists matrix configurations, and MSL offers exactly one lowered here: simdgroup_half8x8 x half8x8 + float8x8 -> float8x8 (docs/design/f16-relaxed-accuracy.md ยง2). The probe is therefore a compile check on the device rather than a family table: a kernel using that configuration is compiled on the device (compile evidence, not execution), and its pipeline reports the SIMD-group width. The pure rule below turns those two facts into a Sarek_coopmat.device_support, so it can be driven without a device. A device whose compiler rejects the probe is reported as probed with NO configuration โ Some with an empty list โ so a refusal says why instead of "not probed"; that pre-Apple7 GPUs and Intel/AMD Macs are in this class is inferred, not observed. The launch check and Sarek_gemm.Coopmat assume whole 32-wide SIMD-groups, so a device reporting another width is likewise offered no configuration.
module C = Sarek_coopmatval shape : C.shapeval f16_config : C.configsimdgroup_half8x8 x half8x8 -> float8x8, 8x8x8.
Exercises the lowered configuration with the same statements the generator emits: declare, load, multiply-accumulate, store.
val support :
simd_width:int ->
probe:(unit, string) Stdlib.result ->
C.device_supportsupport ~simd_width ~probe is the device's support given the SIMD-group width its pipeline reported and the outcome of compiling probe_source.