Model compatibility
The SiMa.ai compilation toolchain imports ONNX models and prepares operators for the Machine Learning Accelerator (MLA). Use this page to check operator support before you prepare a model for Modalix.
Supported operators
Search the table to check MLA compiler support by operator and precision scheme. INT8 runs on the MLA. BF16 is available on Modalix (developer preview). 5D marks operators that accept 5D (N, D, H, W, C) tensors. Opset is the ONNX opset version. Search matches constraint text as well as operator names, and each operator links to its reference on onnx.ai.
Add | ✅ | ✅ | — | 14 |
ArgMax | ✅ | ✅ | — | 13 |
AveragePool | ✅ | ✅ | — | 11 |
BatchNorm | — | — | — | 15 |
BroadcastTo | ✅ | ✅ | ✅ | — |
Clip | ✅ | ✅ | — | 13 |
Concat | ✅ | ✅ | ✅ | 13 |
Conv | ✅ | ✅ | ✅ | 11 |
ConvTranspose | ✅ | ✅ | ✅ | 11 |
CumSum | — | — | — | 14 |
DepthToSpace | ✅ | ✅ | — | 13 |
Div | ✅ | — | — | 14 |
Einsum | ✅ | ✅ | — | 12 |
Elu | ✅ | — | — | 6 |
Erf | ✅ | ✅ | — | 13 |
Exp | ✅ | — | — | 13 |
Gather | ❌ | ✅ | — | 13 |
Gelu | ✅ | — | — | 20 |
GlobalAveragePool | ✅ | ✅ | — | — |
GlobalMaxPool | ✅ | ✅ | — | — |
GridSample | — | ✅ | — | 16 |
HardSigmoid | ✅ | — | — | 6 |
HardSwish | ✅ | — | — | 14 |
InstanceNorm | ✅ | ✅ | ✅ | 6 |
LayerNorm | ✅ | ✅ | — | 17 |
LeakyRelu | ✅ | — | — | 16 |
Log | ✅ | — | — | 13 |
Log10 | ✅ | — | — | — |
Log2 | ✅ | — | — | — |
LpNormalization | ✅ | ✅ | — | 22 |
LRN | ✅ | — | — | 13 |
MatMul | ✅ | ✅ | — | 13 |
MaxPool | ✅ | ✅ | — | 12 |
Mul | ✅ | ✅ | — | 14 |
Pad | ✅ | ✅ | — | 13 |
Pow | ✅ | ✅ | ✅ | 15 |
PRelu | ✅ | ✅ | — | 16 |
QuickGelu | ✅ | ✅ | ✅ | — |
Reciprocal | ✅ | — | — | 13 |
ReduceL2 | ✅ | ✅ | — | 18 |
ReduceMax | ✅ | ✅ | — | 13 |
ReduceMean | ✅ | — | — | 13 |
ReduceMin | ❌ | ❌ | — | 13 |
ReduceSum | ✅ | ✅ | — | 13 |
Relu | ✅ | ✅ | — | 14 |
Reshape | ✅ | ✅ | ✅ | 14 |
Resize | ✅ | ✅ | — | 13 |
RMSNorm | ✅ | ✅ | — | 23 |
Rsqrt | ✅ | — | — | — |
Sigmoid | ✅ | ✅ | — | 13 |
Slice | ✅ | ✅ | — | 13 |
Softmax | ✅ | ✅ | — | 13 |
Softplus | ✅ | — | — | 1 |
SpaceToDepth | ✅ | ✅ | — | 13 |
Split | ✅ | ✅ | — | 13 |
Sqrt | ✅ | — | — | 13 |
Sub | ✅ | ✅ | — | 14 |
Swish | ✅ | ✅ | — | 24 |
Take | ✅ | ✅ | — | — |
Tanh | ✅ | — | — | 13 |
Transpose | ✅ | ✅ | — | 13 |
Variance | ✅ | ✅ | ✅ | — |
Constraints
These operators are supported with the limits below. Operators not listed here have no additional constraints. Where a constraint names an ONNX attribute, set it accordingly when you export the model.
- Add — Inputs must have the same shape, one input must be a scalar, or the two must be broadcastable.
- ArgMax — Reduces along the channel axis only, and returns
int32rather than theint64of the ONNX spec. Cast downstream consumers accordingly. - AveragePool — Set
count_include_pad=Trueand leavedilationsat 1. Kernel size must be under 128 in each spatial dimension; global pooling has no size limit. - BatchNorm — Export in inference mode. Training mode is not supported.
- Concat — Concatenation along the batch axis is not supported.
- Conv —
dilationsmust be between 1 and 63, andstridesbetween 1 and 31. - ConvTranspose — Leave
dilationsat 1. The operator must either be depthwise or usegroup=1. Stride must be 1, 2, 4, 8, or 16, or 1 or 2 when depthwise. - CumSum — Sums in the forward direction only, along exactly one axis, and that axis must be a constant. The axis can be at most 257 elements long.
- Div — Inputs must have the same shape, one input must be a scalar, or the two must be broadcastable.
- Einsum — Takes exactly two input tensors. Every index in the equation must appear in at least two of its terms, and no more than once within any single term. For example,
jk,k->kis unsupported becausejappears in only one term, andjk,kk->jis unsupported becausekappears twice in the same term. - Gather —
indicesmust be a constant, and either a scalar or a 1D tensor. - Gelu — Only the exact formulation is supported. Set
approximate="none". - GridSample — Set
modetolinear, and do not usepadding_mode="reflection". Sampling is supported on the width axis only. - InstanceNorm — Supported for 4D and 5D tensors only.
- LayerNorm —
stash_type=10(FLOAT16) is not supported. Leave it at the default. - LpNormalization — Only
p=2, the L2 norm, is supported.p=1is not. - MaxPool — Leave
dilationsat 1, and do not request the optional indices output. Kernel size must be under 128 in each spatial dimension; global pooling has no size limit. - Mul — Inputs must have the same shape, one input must be a scalar, or the two must be broadcastable.
- Pad — Only
constantmode with a pad value of 0 is supported, and at most two dimensions may have a non-zero padding width. - Pow — The exponent must be a constant scalar of 0.5, -0.5, 2, or 3.
- PRelu — The alpha slope input must be a 1D tensor.
- ReduceL2 — Supported only as part of an L2 normalization: it must be followed by a
Div, so the pair can be fused. A standaloneReduceL2is not supported. - ReduceMean — When reducing over a single axis, that axis must be spatial. Reducing over every spatial axis has no size limit; otherwise each spatial axis must be under 128 elements.
- ReduceMin — Not currently supported.
- ReduceSum — When reducing over a single axis, that axis must be spatial. Reducing over every spatial axis has no size limit; otherwise each spatial axis must be under 128 elements.
- Reshape — Leave
allowzeroat 0, and give a non-empty target shape. - Resize — Only
nearestandlinearmodes are supported, andcoordinate_transformation_mode="tf_crop_and_resize"is not. Withlinear, any scaling factor works, though in INT8 a factor above 63 may cost accuracy. Withnearest, the scaling factor must be a power of two, or an even integer applied equally to both dimensions withcoordinate_transformation_mode="half_pixel"and floor rounding. Only a single input tensor is supported. - RMSNorm —
stash_type=10(FLOAT16) is not supported. Leave it at the default. - Slice — Steps must be positive. Negative strides are not supported.
- Softmax — Supported over the channel axis only.
- Sub — Inputs must have the same shape, one input must be a scalar, or the two must be broadcastable.
- Take — The index must be a constant, and either a scalar or a 1D tensor.
- Transpose — Permutations that move the batch axis are not supported.
- Variance — Computed over all spatial dimensions.