Onnx-mlir currently supports ONNX operations targeting up to opset 20. Limitations are listed when applicable. This documentation highlights the minimum and maximum opset versions that are fully supported by onnx-mlir and not the version changes.
- Operations are defined by the ONNX Standard.
- Supported Opsets indicates the lowest and highest opset a model may have for onnx-mlir to support compiling a model with the operator.
- A * indicates onnx-mlir is compatible with the latest version of that operator available as of opset 20.
Op | Supported Opsets (inclusive) | Limitations | Notes |
---|---|---|---|
Abs | 6 - * | ||
Acos | 7 - * | ||
Acosh | 9 - * | ||
Adagrad | none | ||
Adam | none | ||
Add | 6 - * | No support for short integers. | |
And | 7 - * | ||
ArgMax | 6 - * | ||
ArgMin | 13 - * | ||
ArrayFeatureExtractor | none | ||
Asin | 7 - * | ||
Asinh | 9 - * | ||
Atan | 7 - * | ||
Atanh | 9 - * | ||
AveragePool | 6 - * | ||
BatchNormalization | 6 - * | Training not supported. | |
Bernoulli | none | ||
Binarizer | none | ||
BitShift | none | ||
BitwiseAnd | 18 - * | ||
BitwiseNot | none | ||
BitwiseOr | 18 - * | ||
BitwiseXor | 18 - * | ||
BlackmanWindow | none | ||
Cast | 6 - * | Cast only between float and double types. Only ppc64le and MacOS platforms support float16. | |
CastLike | 19 - * | CastLike only between float and double types. Only ppc64le and MacOS platforms support float16. | |
CastMap | none | ||
CategoryMapper | none | ||
Ceil | 6 - * | ||
Celu | none | ||
CenterCropPad | none | ||
Clip | 6 - * | No support for short integers. | |
Col2Im | none | ||
Compress | 9 - * | ||
Concat | 6 - * | ||
ConcatFromSequence | none | ||
Constant | 6 - * | ||
ConstantOfShape | 9 - 19 | ||
Conv | 6 - * | ||
ConvInteger | none | ||
ConvTranspose | 6 - * | Unknown dimension in spatial dimensions (such as H and W) not supported. | |
Cos | 7 - * | ||
Cosh | 9 - * | ||
CumSum | 11 - * | ||
DFT | 17 - 19 | ||
DeformConv | none | ||
DepthToSpace | 13 - * | ||
DequantizeLinear | 10 - * | Only support for per-tensor or layer dequantization. No support for per-axis dequantization. | |
Det | none | ||
DictVectorizer | none | ||
Div | 6 - * | No support for short integers. | |
Dropout | 6 - * | Does not support masked and training. | |
DynamicQuantizeLinear | 11 - * | ||
Einsum | 12 - * | Limited to the types supported by ReduceSum and MatMul (which we decompose to in most cases) which exclude integers with width < 32. | |
Elu | 6 - * | ||
Equal | 7 - * | ||
Erf | 9 - * | ||
Exp | 6 - * | ||
Expand | 8 - * | ||
EyeLike | none | ||
FeatureVectorizer | none | ||
Flatten | 6 - * | ||
Floor | 6 - * | ||
GRU | 7 - * | ||
Gather | 6 - * | ||
GatherElements | 11 - * | ||
GatherND | 11 - * | ||
Gelu | 20 - * | ||
Gemm | 6 - * | ||
GlobalAveragePool | 6 - * | ||
GlobalLpPool | none | ||
GlobalMaxPool | 6 - * | ||
Gradient | none | ||
Greater | 7 - * | ||
GreaterOrEqual | 12 - * | ||
GridSample | none | ||
GroupNormalization | 18 - * | ||
HammingWindow | none | ||
HannWindow | none | ||
HardSigmoid | 6 - * | ||
HardSwish | none | ||
Hardmax | 6 - * | ||
Identity | 16 - * | Sequence identity not supported. | |
If | 16 - * | Sequence and Optional outputs are not supported. | |
Imputer | none | ||
InstanceNormalization | 6 - * | ||
IsInf | 20 - * | Currently no support for float16 infinity value. Only for float32 and float64. | |
IsNaN | 20 - * | ||
LRN | 6 - * | ||
LSTM | 7 - * | ||
LabelEncoder | none | ||
LayerNormalization | 17 - * | ||
LeakyRelu | 6 - * | ||
Less | 7 - * | ||
LessOrEqual | 12 - * | ||
LinearClassifier | none | ||
LinearRegressor | none | ||
Log | 6 - * | ||
LogSoftmax | 13 - * | Axis 0, 1, and default currently disabled due to changes in ONNX 1.8.1/Opset 13. | Temporally removed due to changes in onnx 1.8.1. |
Loop | 6 - * | ||
LpNormalization | none | ||
LpPool | none | ||
MatMul | 6 - * | ||
MatMulInteger | 10 - * | ||
Max | 6 - * | No support for unsigned int. Only ppc64le and MacOS platforms support float16. | |
MaxPool | 6 - * | Does not support argmax and short ints. Support single output only. | |
MaxRoiPool | none | ||
MaxUnpool | none | ||
Mean | 6 - * | ||
MeanVarianceNormalization | none | ||
MelWeightMatrix | none | ||
Min | 6 - * | Does not support unsigned numbers. Only ppc64le and MacOS platforms support float16. | |
Mish | none | ||
Mod | 10 - * | Support float and double only. Only ppc64le and MacOS platforms support float16. | |
Momentum | none | ||
Mul | 6 - * | Does not support short integers. | |
Multinomial | none | ||
Neg | 6 - * | ||
NegativeLogLikelihoodLoss | none | ||
NonMaxSuppression | 10 - * | ||
NonZero | 9 - * | ||
Normalizer | none | ||
Not | 6 - * | ||
OneHot | 9 - * | ||
OneHotEncoder | none | ||
Optional | none | ||
OptionalGetElement | none | ||
OptionalHasElement | none | ||
Or | 7 - * | ||
PRelu | 6 - * | ||
Pad | 6 - * | axes input not supported. | |
Pow | 7 - * | No support for power with integer types. | |
QLinearConv | none | ||
QLinearMatMul | none | ||
QuantizeLinear | 10 - * | Do not support per-axis and i8 quantization. | |
RNN | 7 - * | ||
RandomNormal | none | ||
RandomNormalLike | none | ||
RandomUniform | none | ||
RandomUniformLike | none | ||
Range | 11 - * | ||
Reciprocal | 6 - * | ||
ReduceL1 | 13 - * | do_not_keep_dim not supported. | |
ReduceL2 | 13 - * | do_not_keep_dim not supported. | |
ReduceLogSum | 13 - * | do_not_keep_dim not supported. | |
ReduceLogSumExp | 13 - * | do_not_keep_dim not supported. | |
ReduceMax | 6 - * | do_not_keep_dim not supported. | |
ReduceMean | 6 - * | do_not_keep_dim not supported. | |
ReduceMin | 6 - * | do_not_keep_dim not supported. | |
ReduceProd | 13 - * | do_not_keep_dim not supported. | |
ReduceSum | 6 - * | Default axis and do_not_keep_dim not supported. | Default axis and do_not_keep_dim temporarily removed due to changes in onnx 1.8.1. |
ReduceSumSquare | 13 - * | Default axis and do_not_keep_dim not supported. | |
Relu | 6 - * | ||
Reshape | 6 - * | allowzero not supported. | |
Resize | 10 - * | Missing support for linear, cubic, crop, pytorch_half_pixel, and floor. Attributes antialias, axes and keep_aspect_ratio_policy are not supported. | |
ReverseSequence | 10 - * | ||
RoiAlign | none | ||
Round | 11 - * | ||
STFT | none | ||
SVMClassifier | none | ||
SVMRegressor | none | ||
Scaler | none | ||
Scan | 8 - * | Does not support dynamic shapes. | Precision issue with newer opset, maybe just unsupported. Dynamic shape?. |
Scatter | none | ||
ScatterElements | 11 - * | Does not support duplicate indices. | |
ScatterND | 11 - * | Does not support scatternd add/multiply. | |
Selu | 6 - * | ||
SequenceAt | none | ||
SequenceConstruct | none | ||
SequenceEmpty | none | ||
SequenceErase | none | ||
SequenceInsert | 11 - * | Does not support unranked sequence element. | |
SequenceLength | none | ||
SequenceMap | none | ||
Shape | 15 - * | Does not support start and end attributes. | |
Shrink | none | ||
Sigmoid | 6 - * | ||
Sign | 9 - * | ||
Sin | 7 - * | ||
Sinh | 9 - * | ||
Size | 13 - * | ||
Slice | 13 - * | Axis must be a constant argument. | Add tests to slices, currently have none. |
Softmax | 6 - * | ||
SoftmaxCrossEntropyLoss | none | ||
Softplus | 6 - * | ||
Softsign | 6 - * | ||
SpaceToDepth | 13 - * | Example works, the other is imprecise. To investigate. | |
Split | 6 - * | Does not support static and dynamic shape, zero size splits. | Temporally removed due to changes in onnx 1.8.1. |
SplitToSequence | none | ||
Sqrt | 6 - * | ||
Squeeze | 6 - * | Does not support static and dynamic shape. | Temporally removed due to changes in onnx 1.8.1. |
StringNormalizer | none | ||
Sub | 6 - * | Does not support short integers. | |
Sum | 6 - * | ||
Tan | 7 - * | ||
Tanh | 6 - * | ||
TfIdfVectorizer | none | ||
ThresholdedRelu | none | ||
Tile | 6 - * | ||
TopK | 10 - * | ||
Transpose | 6 - * | ||
TreeEnsembleClassifier | none | ||
TreeEnsembleRegressor | none | ||
Trilu | 14 - * | ||
Unique | 11 - * | ||
Unsqueeze | 6 - * | Does not support static and dynamic shape. | Temporally removed due to changes in onnx 1.8.1. |
Upsample | 7 - * | ||
Where | 9 - * | ||
Xor | 7 - * | ||
ZipMap | none |