Skip to main content

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.

62 of 62 operators
Add14
ArgMax13
AveragePool11
BatchNorm15
BroadcastTo
Clip13
Concat13
Conv11
ConvTranspose11
CumSum14
DepthToSpace13
Div14
Einsum12
Elu6
Erf13
Exp13
Gather13
Gelu20
GlobalAveragePool
GlobalMaxPool
GridSample16
HardSigmoid6
HardSwish14
InstanceNorm6
LayerNorm17
LeakyRelu16
Log13
Log10
Log2
LpNormalization22
LRN13
MatMul13
MaxPool12
Mul14
Pad13
Pow15
PRelu16
QuickGelu
Reciprocal13
ReduceL218
ReduceMax13
ReduceMean13
ReduceMin13
ReduceSum13
Relu14
Reshape14
Resize13
RMSNorm23
Rsqrt
Sigmoid13
Slice13
Softmax13
Softplus1
SpaceToDepth13
Split13
Sqrt13
Sub14
Swish24
Take
Tanh13
Transpose13
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 int32 rather than the int64 of the ONNX spec. Cast downstream consumers accordingly.
  • AveragePool — Set count_include_pad=True and leave dilations at 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.
  • Convdilations must be between 1 and 63, and strides between 1 and 31.
  • ConvTranspose — Leave dilations at 1. The operator must either be depthwise or use group=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->k is unsupported because j appears in only one term, and jk,kk->j is unsupported because k appears twice in the same term.
  • Gatherindices must be a constant, and either a scalar or a 1D tensor.
  • Gelu — Only the exact formulation is supported. Set approximate="none".
  • GridSample — Set mode to linear, and do not use padding_mode="reflection". Sampling is supported on the width axis only.
  • InstanceNorm — Supported for 4D and 5D tensors only.
  • LayerNormstash_type=10 (FLOAT16) is not supported. Leave it at the default.
  • LpNormalization — Only p=2, the L2 norm, is supported. p=1 is not.
  • MaxPool — Leave dilations at 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 constant mode 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 standalone ReduceL2 is 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 allowzero at 0, and give a non-empty target shape.
  • Resize — Only nearest and linear modes are supported, and coordinate_transformation_mode="tf_crop_and_resize" is not. With linear, any scaling factor works, though in INT8 a factor above 63 may cost accuracy. With nearest, the scaling factor must be a power of two, or an even integer applied equally to both dimensions with coordinate_transformation_mode="half_pixel" and floor rounding. Only a single input tensor is supported.
  • RMSNormstash_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.