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

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.

OperatorINT8BF165DOpset
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
LRN13
MatMul13
MaxPool12
Mul14
Pad13
Pow15
PRelu16
QuickGelu
Reciprocal13
ReduceMax13
ReduceMean13
ReduceMin13
ReduceSum13
Relu14
Reshape14
Resize13
RMSNorm23
Rsqrt
Sigmoid13
Slice13
Softmax13
Softplus1
SpaceToDepth13
Split13
Sqrt13
Sub14
Swish24
Take
Tanh13
Transpose13
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