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
Use 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.
| Operator | INT8 | BF16 | 5D | Opset |
|---|---|---|---|---|
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 | ✅ | — | — | — |
LRN | ✅ | — | — | 13 |
MatMul | ✅ | ✅ | — | 13 |
MaxPool | ✅ | ✅ | — | 12 |
Mul | ✅ | ✅ | — | 14 |
Pad | ✅ | ✅ | — | 13 |
Pow | ✅ | ✅ | ✅ | 15 |
PRelu | ✅ | ✅ | — | 16 |
QuickGelu | ✅ | ✅ | ✅ | — |
Reciprocal | ✅ | — | — | 13 |
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
- Add — Same shape, or exactly one input is a scalar, or both inputs are broadcastable
- ArgMax — keepdim=True, and reduce on channel axis
- AveragePool — Dilation=1, ceil_mode=False, size<128, count_include_pad=True. If global pool, no size limit.
- BatchNorm — training_mode = 0 (SW)
- Concat — Not on batch axis
- Conv — Stride is in range [1, 31]. Dilation is in range [1, 63].
- ConvTranspose — Dilations are all equal to 1. Is depthwise or number of groups is 1. Stride in range: [1, 2, 4, 8, 16]. If depthwise, stride must be 1 or 2.
- CumSum — reverse = 0 (SW) Size <= 257 on summation axis. (SW) Must have exactly one summation axis. (SW) Axis must be a constant. (HW)
- Div — Same shape, or exactly one input is a scalar, or both inputs are broadcastable
- Einsum — Einsum equation is a batch matmul
- Gather — Indices must be a constant, and it must be 0D or 1D. (HW)
- Gelu — approximate = "none" (SW)
- GridSample — Mode is 'linear' and padding_mode is not 'reflection'.
- InstanceNorm — Only for 4D and 5D tensors. (SW)
- LayerNorm — Over channel axis only
- MaxPool — Dilation=1, ceil_mode=False, size<128. If global pool, no size limit.
- Mul — Same shape, or exactly one input is a scalar, or both inputs are broadcastable
- Pad — Via conversion to average pool. Pad in batch or channel dimension is not supported. Only support 'constant' mode with value 0.
- Pow — Input exponent is scalar constant 0.5, -0.5, 2, or 3. (SW)
- PRelu — Constant alpha on channel axis
- ReduceMean — keepdims=True, and reduce axis is spatial dimension only and size less than 128
- ReduceMin — Not supported yet. (SW)
- ReduceSum — For 1D reduce, axis is spatial dimension only. (SW) If all spatial axes, no size limit; otherwise, size in spatial axes less than 128. (SW)
- Reshape — allowzero = 0 (SW) Shape cannot be empty. (SW)
- Resize — coordinate_transformation_mode='tf_crop_and_resize' not supported. If method is 'linear' or 'bilinear', coordinate_transformation_mode must be 'half_pixel' …
- RMSNorm — stash_type = 10 (FLOAT16) not supported. (SW)
- Slice — Positive strides. (SW)
- Softmax — Over channel axis
- Sub — Same shape, or exactly one input is a scalar, or both inputs are broadcastable
- Take — Index must be a constant, and it must be 0D or 1D. (SW)
- Transpose — Not involving batch axis
- Variance — Compute over all spatial dimensions