Device backend matrix (T1.4)

May 19, 2026 · View on GitHub

Per-backend registration for Metal, CUDA, and XLA tensor backends under pkg/backend/device/. registered means at least one kernels.Default entry with that tensor.Location; it does not assert full device.Backend coverage.

Machine-checkable source: pkg/backend/device/backendaudit/, validated by backendaudit_test.go. Metal registrations load via load_metal.go blank import.

CPU dispatch (T1.3): cpu-dispatch-matrix.md. Combined coverage (T1.5): backend-coverage.md.

Backend summary

BackendSupported dtypesKernel registrationsUnique kernel names.metal / dispatch sources*_darwin.go*_stub.goTensor API methods
metalF32, BF16, F16, I32, I8, I4, BOOL4621582439633
cudaF32, BF16, F16, I8, I4, BOOL, F8E4M3, F8E5M2000019
xlaF64, F32, F16, BF16, F8E4M3, F8E5M2, I64, I32, I16, I8, U64, U32, U16, U8, BOOL000019

Required IR operations — Metal kernel coverage

Maps each ir.RequiredOperationIDs() entry to expected kernel name(s) and whether any Metal registration exists.

Operation IDCross-linkMetal kernels
Inputgraph_only
Adddirectyes
Muldirectyes
Matmuldirectyes
ReLUdirectyes
LeakyReLUdirectyes
GELUdirect
Tanhdirectyes
Sigmoiddirectyes
SwiGLUdirect
Swishdirectyes
SELUdirectyes
Fusedgraph_only
activation.reludirectyes
activation.leaky_reludirectyes
activation.geludirect
activation.tanhdirectyes
activation.sigmoiddirectyes
activation.swigludirect
activation.swishdirectyes
activation.seludirectyes
attention.sdpadirectyes
attention.mqacompositeyes
attention.gqacompositeyes
attention.sliding_windowdirectyes
masking.applydirectyes
masking.causaldirectyes
math.adddirectyes
math.muldirectyes
math.matmuldirectyes
math.expdirectyes
math.sinkernel_registryyes
math.coskernel_registryyes
math.logdirectyes
math.logsumexpkernel_registryyes
math.softmaxdirectyes
math.outerkernel_registryyes
math.signkernel_registryyes
math.inv_sqrt_dim_scalekernel_registryyes
math.dropoutdirectyes
math.rmsnormdirectyes
math.layernormdirectyes
math.groupnormdirectyes
shape.reshapekernel_registryyes
shape.transposekernel_registryyes
shape.concatkernel_registryyes
shape.splitkernel_registryyes
shape.upsample_nearest2dkernel_registryyes
shape.view_as_headskernel_registryyes
shape.merge_headskernel_registryyes
shape.last_tokenkernel_registryyes
shape.slicekernel_registry
positional.ropedirectyes
positional.alibidirectyes
embedding.tokendirectyes
convolution.conv1ddirectyes
convolution.conv2ddirectyes
convolution.conv3ddirectyes
convolution.conv_transpose2ddirect
pooling.max_pool2ddirect
pooling.avg_pool2ddirect
pooling.adaptive_avg_pool2ddirect
pooling.adaptive_max_pool2ddirect
projection.lineardirectyes
projection.fused_qkvcompositeyes
hawkes.intensitydirect
hawkes.kernel_matrixdirect
hawkes.log_likelihooddirect
hawkes.simulatekernel_registry
vsa.binddirect
vsa.bundledirect
vsa.similaritydirect
vsa.permutedirect
vsa.inverse_permutedirect
active_inference.belief_updatedirect
active_inference.expected_free_energydirect
active_inference.free_energydirect
active_inference.precision_weightdirect
predictive_coding.predictiondirect
predictive_coding.prediction_errordirect
predictive_coding.update_representationdirect
predictive_coding.update_weightsdirect
markov_blanket.flow_activedirect
markov_blanket.flow_internaldirect
markov_blanket.mutual_informationdirect
markov_blanket.partitiondirect
causal.backdoor_adjustmentdirect
causal.catedirectyes
causal.counterfactualdirectyes
causal.dag_markov_factorizationdirect
causal.do_calculusdirect
causal.frontdoor_adjustmentdirect
causal.iv_estimatedirect
train.loss.msedirectyes
train.loss.cross_entropydirectyes
train.loss.mse_gradkernel_registry
train.loss.cross_entropy_gradkernel_registry
train.grad.msekernel_registry
train.grad.cross_entropykernel_registryyes
train.optimizer.adamkernel_registryyes
train.optimizer.adamwkernel_registryyes
train.optimizer.adamaxkernel_registryyes
train.optimizer.sgdkernel_registryyes
train.optimizer.lionkernel_registryyes
train.optimizer.rmspropkernel_registryyes
train.optimizer.hebbiankernel_registryyes
train.optimizer.larskernel_registryyes
train.optimizer.lambkernel_registry
train.optimizer.adagradkernel_registryyes
train.optimizer.adadeltakernel_registry
train.optimizer.lbfgskernel_registryyes
bench.accuracygraph_only
bench.perplexitygraph_only
bench.f1graph_only
bench.metric.accuracygraph_only
bench.metric.perplexitygraph_only
bench.metric.f1graph_only
model.graftgraph_only
model.freezegraph_only

Metal covers 68 / 119 required operation IDs via kernels.Default.

Kernel name index (Metal / CUDA / XLA)

Kernel nameMetalCUDAXLADtype variants (Metal)
absyes3
adagrad_stepyes3
adam_stepyes3
adamax_stepyes3
adamw_stepyes3
adaptive_avg_pool2dyes3
adaptive_max_pool2dyes3
addyes3
alibi_biasyes3
apply_maskyes3
argmaxyes3
argminyes3
atan2yes3
attentionyes3
avg_pool2dyes3
backdoor_adjustmentyes3
batchnorm_evalyes3
belief_updateyes3
binary_cross_entropyyes3
bohmian_velocityyes3
cateyes3
causal_maskyes3
checkpoint_decode_float32yes1
checkpoint_encode_float32yes1
concatyes3
conv1dyes3
conv2dyes3
conv3dyes3
conv_transpose2dyes3
cosyes3
counterfactualyes3
cross_entropyyes3
dag_markov_factorizationyes3
divyes3
divergence1dyes3
do_interveneyes3
dropoutyes3
eluyes3
embedding_bagyes3
embedding_lookupyes3
eqyes3
expyes3
expected_free_energyyes3
fft1dyes3
flash_attentionyes3
free_energyyes3
frontdoor_adjustmentyes3
fused_qkvyes3
gatheryes3
geyes3
grad1dyes3
greedy_sampleyes3
grouped_query_attentionyes3
groupnormyes3
gtyes3
hardsigmoidyes3
hardswishyes3
hawkes_intensityyes3
hawkes_kernel_matrixyes3
hawkes_log_likelihoodyes3
hebbian_stepyes3
huber_lossyes3
ifft1dyes3
instancenormyes3
int4_dequantyes1
int8_dequantyes1
int8_quantyes1
inv_sqrt_dim_scaleyes3
iv_estimateyes3
kl_divergenceyes3
l1_normyes3
l2_normyes3
laplacianyes3
laplacian4yes3
lars_stepyes3
last_tokenyes3
layernormyes3
lbfgs_stepyes3
leyes3
leaky_reluyes3
linearyes3
lion_stepyes3
logyes3
logsumexpyes3
lora_applyyes3
lora_mergeyes3
ltyes3
madelung_continuityyes3
mae_lossyes3
markov_blanket_partitionyes3
markov_flow_activeyes3
markov_flow_internalyes3
markov_mutual_informationyes3
masked_fillyes3
matmulyes3
matmul_addyes3
maxyes3
max_pool2dyes3
meanyes3
merge_headsyes3
minyes3
modyes3
mse_lossyes3
mulyes3
multi_head_attentionyes3
neyes3
negyes3
outeryes3
pc_predictionyes3
pc_prediction_erroryes3
pc_update_representationyes3
pc_update_weightsyes3
powyes3
precision_weightyes3
prodyes3
quantum_potentialyes3
recipyes3
reduce_maxyes3
reduce_minyes3
reluyes3
reshapeyes3
rmsnormyes3
rmsprop_stepyes3
ropeyes3
rsqrtyes3
scatteryes3
seluyes3
sgd_stepyes3
sigmoidyes3
signyes3
siluyes3
sinyes3
sliding_window_attentionyes3
softmaxyes3
softsignyes3
split2yes3
split_headsyes3
sqrtyes3
squareyes3
stddevyes3
subyes3
sumyes3
swishyes3
tanhyes3
tokenizer_pack_int32yes1
topk_sampleyes3
topp_sampleyes3
transposeyes3
transpose2dyes3
upsample_nearest2dyes3
varianceyes3
view_as_headsyes3
vsa_bindyes3
vsa_bundleyes3
vsa_inverse_permuteyes3
vsa_permuteyes3
weight_freeze_maskyes3
whereyes3