Skip to Content
🚧 The WebNN documentation is work-in-progress. Share feedback →

Browser Compatibility

Core ML Backend / macOS

WebNNCPUGPUNPU
macOS✅ Core ML✅ Core ML✅ Core ML
iOS❌ Core ML❌ Core ML❌ Core ML

The WebNN Core ML backend mainly supported on macOS.

WebNN SpecOperationsChromium Version
argMax✅ reduce_argmaxM128
argMin✅ reduce_argminM128
batchNormalization✅ batch_normM126
cast✅ castM124
clamp✅ clipM125
concat✅ concatM125
conv2d✅ convM125
convTranspose2d✅ conv_transposeM126
cumulativeSum✅ cumsumM132
dequantizeLinear🚀 dequantize_linear
element-wise binary / add✅ addM122
element-wise binary / div✅ real_divM124
element-wise binary / max✅ maximumM124
element-wise binary / min✅ minimumM124
element-wise binary / mul✅ mulM124
element-wise binary / notEqual✅ not_equalM134
element-wise binary / pow✅ powM124
element-wise binary / sub✅ subM124
element-wise logical / equal✅ equalM125
element-wise logical / greater✅ greaterM125
element-wise logical / greaterOrEqual✅ greater_equalM125
element-wise logical / lesser✅ lessM125
element-wise logical / lesserOrEqual✅ less_equalM125
element-wise logical / logicalAnd✅ logical_andM132
element-wise logical / logicalOr✅ logical_orM132
element-wise logical / logicalXor✅ logical_xorM132
element-wise logical / not✅ logical_notM128
element-wise unary / abs✅ absM126
element-wise unary / ceil✅ ceilM126
element-wise unary / identity✅ identityM126
element-wise unary / cos✅ cosM126
element-wise unary / erf✅ erfM126
element-wise unary / exp✅ expM126
element-wise unary / floor✅ floorM126
element-wise unary / log✅ logM126
element-wise unary / neg✅ Emulated with mul(a, -1)M127
element-wise unary / reciprocal✅ inverseM126
element-wise unary / sin✅ sinM126
element-wise unary / sqrt✅ sqrtM126
element-wise unary / tan✅ tanM126
elu✅ eluM126
expand✅ tileM128
gather✅ gatherM126
gatherElements✅ gather_along_axisM132
gatherND✅ gather_ndM132
gelu✅ geluM132
gemm✅ Emulated with add(mul(alpha, matmul(A, B)), mul(beta, C))M126
gru✅ gruM133
gruCell✅ gruM133
hardSigmoid✅ sigmoid_hardM126
hardSwish✅ Emulated by mul(x, hardsigmoid(x, alpha=1.0/6, beta=0.5))M126
instanceNormalization✅ instance_normM126
layerNormalization✅ layer_normM129
leakyRelu✅ leaky_reluM126
linearEmulated with add(mul(alpha, a), beta)M126
lstm✅ lstmM133
lstmCell✅ lstmM133
matmul✅ matmulM126
pad✅ padM129
pooling / averagePool2d✅ avg_poolM126
pooling / l2Pool2d✅ l2_poolM126
pooling / maxPool2d✅ max_poolM126
prelu🚀 prelu
quantizeLinear🚀 quantize_linear
reduction / reduceL1✅ reduce_l1_normM126
reduction / reduceL2✅ reduce_l2_normM126
reduction / reduceLogSum✅ reduce_log_sumM126
reduction / reduceLogSumExp✅ reduce_log_sum_expM126
reduction / reduceMax✅ reduce_maxM126
reduction / reduceMean✅ reduce_meanM126
reduction / reduceMin✅ reduce_minM126
reduction / reduceProduct✅ reduce_prodM126
reduction / reduceSum✅ reduce_sumM126
reduction / reduceSumSquare✅ reduce_sum_squareM126
relu✅ reluM125
resample2d✅ upsample_bilinear ✅ upsample_nearest_neighborM126
reshape✅ reshapeM126
reverse🚀 reverse
scatterElements✅ scatter_along_axisM132
scatterND✅ scatter_ndM132
sigmoid✅ sigmoidM126
sign🚀 sign
slice✅ slice_by_sizeM126
softmax✅ softmaxM127
softplus✅ softplusM126
softsign✅ softsignM125
split✅ splitM130
tanh✅ tanhM126
tile✅ tileM131
transpose✅ transposeM125
triangular✅ band_partM132
where✅ selectM126
Last updated on