LACInfer 算子支持情况

版权声明

本文档版权归龙芯中科技术股份有限公司所有,并保留一切权利。未经书面许可,任何公司和个人不得将此文档中的任何部分公开、转载或以其他方式散发给第三方。否则,必将追究其法律责任。

免责声明

本文档仅提供阶段性信息,所含内容可根据产品的实际情况随时更新,恕不另行通知。如因文档使用不当造成的直接或间接损失,本公司不承担任何责任。

读者对象

本文档主要适用于以下人员:

  • 技术支持工程师
  • 软件开发工程师

1. 关于本文档

1.1 编写目的

本文档列出 LACInfer 对 ONNX 标准算子、已废弃实验性算子以及 ONNX Runtime 扩展算子的支持情况,旨在帮助用户:

  • 在模型转换或部署前,快速确认某个算子是否被 LACInfer 支持;
  • 了解算子在受支持时的具体限制条件(如动态形状、量化类型、填充方式等);
  • 为定位算子不支持所导致的转换或运行问题提供参考。

1.2 适用范围

本文档适用于 LACInfer V0.1.0 版本,算子支持情况以该版本的实际实现为准。后续版本如有变化,将在修订历史中说明。

1.3 术语说明

术语 说明
ONNX Open Neural Network Exchange,开放神经网络交换格式
OpSet ONNX 算子集版本,用于约束算子的定义与属性
LACInfer 龙芯加速计算推理引擎
动态形状 运行期才能确定的张量形状;文中“不支持动态形状”指该算子要求形状在编译期确定

1.4 参考资料

2. 修订历史

版本 修订日期 修订内容
V0.1.0 2026-09-08 初始版本

3. 算子支持

本章节列出 LACInfer 对 ONNX 标准算子、已废弃实验性算子以及 ONNX Runtime 扩展算子的支持情况。其中,ONNX 标准算子共支持 165 个,已废弃实验性算子共支持 4 个,ONNX Runtime 扩展算子共支持 14 个,详细支持情况参考本章各节。

3.1. ONNX 标准算子

LACInfer 支持最高 ONNX OpSet 19 版本的 ONNX 标准算子,以及 OpSet 23 开始引入的 Attention 标准算子,支持情况如表 1 所示。最新的 ONNX 标准算子信息详见 ONNX Github 仓库。

表1. LACInfer 对 ONNX 标准算子的支持情况

算子名称 是否支持 备注
Abs 是
Acos 是
Acosh 是
Add 是
And 是
ArgMax 是
ArgMin 是
Asin 是
Asinh 是
Atan 是
Atanh 是
Attention 是 由OpSet 23引入
AveragePool 是
BatchNormalization 是
BiasGelu 是
Bernoulli 否
BitShift 否
BitwiseAnd 是
BitwiseNot 否
BitwiseOr 否
BitwiseXor 否
BlackmanWindow 否
Cast 是 不支持saturate
CastLike 是 不支持saturate
Ceil 是
Celu 是
CenterCropPad 否
Clip 是
Col2Im 否
Compress 否
Concat 是
ConcatFromSequence 否
Constant 是
ConstantOfShape 是 不支持动态形状
Conv 是
ConvInteger 是
ConvTranspose 是 不支持auto_pad,output_padding数学方法不同
Cos 是
Cosh 是
CumSum 是 不支持axis动态形状
DFT 否
DeformConv 否
DepthToSpace 是
DequantizeLinear 是
Det 否
Div 是
Dropout 是 更改为identity
DynamicQuantizeLinear 是 仅uint8量化,不支持动态形状
Einsum 是 不支持每个输入超过一个对角线,例如:iijj→ij
不支持批次(batch)不是前导dims的批次对角线,例如:ii...->i...
Elu 是
Equal 是
Erf 是
Exp 是
Expand 是 不支持动态形状
EyeLike 是
FastGelu 是
Flatten 是
Floor 是
Gather 是
GatherElements 是
GatherND 是
Gelu 是
Gemm 是
GlobalAveragePool 是
GlobalLpPool 是
GlobalMaxPool 是
Greater 是
GreaterOrEqual 是
GridSample 是 不支持5-D输入
GroupNormalization 是 不支持stash_type
GRU 是 未使能可选的Affine/ThresholdRelu/ScaledTanh/HardSigmoid/Softsign/Softplus激活函数
HammingWindow 否
HannWindow 否
HardSigmoid 是
HardSwish 是
Hardmax 是
Identity 是 不支持identity、sequence数据类型
If 是 不支持identity、sequence数据类型
InstanceNormalization 是
IsInf 是
IsNaN 是
LayerNormalization 是 不支持stash_type
LeakyRelu 是
Less 是
LessOrEqual 是
Log 是
LogSoftmax 是
Loop 是 不支持identity、sequence数据类型,max_iteration有上限
LRN 是
LSTM 是 未使能可选的Affine/ThresholdRelu/ScaledTanh/HardSigmoid/Softsign/Softplus激活函数
LpNormalization 是
LpPool 是 GPU不支持lpnorm的池化模式(lacdnn限制)
MatMul 是
MatMulInteger 是 不支持动态形状
Max 是
MaxPool 是 不支持storage_order,GPU上部分支持dialtion(lacdnn限制),不支持可选的indices输出
MaxRoiPool 否
MaxUnpool 否
Mean 是
MeanVarianceNormalization 是
MelWeightMatrix 否
Min 是
Mish 否
Mod 是
Mul 是
Multinomial 是
Neg 是
NegativeLogLikelihoodLoss 是
NonMaxSuppression 是 固定输出大小,除非设置了use_dyn_output
NonZero 是 固定输出大小,除非设置了use_dyn_output
Not 是
OneHot 是 不支持动态形状
Optional 否
OptionalGetElement 否
OptionalHasElement 否
Or 是
Pad 是 不支持edge和warp填充,pads必须是常量
Pow 是
PRelu 是
QLinearAdd 是
QLinearAveragePool 是
QLinearConcat 是
QLinearConv 是
QLinearGlobalAveragePool 是
QLinearLeakyRelu 是
QLinearMatMul 是 不支持非标量输入
QLinearMul 是
QLinearSigmoid 是
QuantizeLinear 是 不支持saturate
RandomNormal 是
RandomNormalLike 是
RandomUniform 是
RandomUniformLike 是
Range 是 不支持start、end、delta动态形状
Reciprocal 是
ReduceL1 是 不支持axes动态形状
ReduceL2 是 不支持axes动态形状
ReduceLogSum 是 不支持axes动态形状
ReduceLogSumExp 是 不支持axes动态形状
ReduceMax 是 不支持axes动态形状
ReduceMean 是 不支持axes动态形状
ReduceMin 是 不支持axes动态形状
ReduceProd 是 不支持axes动态形状
ReduceSum 是 不支持axes动态形状
ReduceSumSquare 是 不支持axes动态形状
Relu 是
Reshape 是 不支持allowzero,不支持动态形状
Resize 是 不支持cubic、half_pixel_symmetric、tf_crop_and_resize,linear模式不支持非常量输入,不支持exclude_outside 1,不支持antialias、extrapolation_value、keep_aspect_ratio_policy
ReverseSequence 是 不支持sequence_lens
RNN 是 未使能可选的Affine/ThresholdRelu/ScaledTanh/HardSigmoid/Softsign/Softplus激活函数
RoiAlign 是
Round 是
STFT 否
Scan 是 不支持identity、sequence数据类型,迭代次数有上限,Opset 8版本不支持
Scatter (deprecated) 是
ScatterElements 是
ScatterND 是
Selu 是
SequenceAt 否
SequenceConstruct 否
SequenceEmpty 否
SequenceErase 否
SequenceInsert 否
SequenceLength 否
SequenceMap 否
Shape 是
Shrink 是
Sigmoid 是
Sign 是
Sin 是
Sinh 是
Size 是
Slice 是 不支持变量输入
Softmax 是
SoftmaxCrossEntropyLoss 是
Softplus 是
Softsign 是
SpaceToDepth 是
Split 是 不支持动态形状
SplitToSequence 否
Sqrt 是
Squeeze 是 不支持axes
StringNormalizer 否
Sub 是
Sum 是
Tan 是
Tanh 是
TfIdfVectorizer 否
ThresholdedRelu 是
Tile 是 不支持动态形状
TopK 是 不支持动态k,不支持sorted
Transpose 是
Trilu 是 不支持动态k
Unique 是 仅支持axis=0
Unsqueeze 是 不支持axes
Upsample (deprecated) 是
Where 是 不支持混合静态和动态形状输入
Xor 是

3.2. ONNX 已废弃实验性算子

为了最大化兼容性,尤其是支持使用较早版本 ONNX 导出的模型,LACInfer 保留了部分已被 ONNX 官方废弃的“实验性”算子(请参考 ONNX Github 仓库)。这些算子主要服务于特定历史模型的推理需求,建议用户在新项目中避免使用这些算子,并参考 ONNX 文档中的替代方案更新模型。

  • ATen
  • ConstantFill
  • DynamicScale
  • ImageScaler

3.3. ONNX Runtime 扩展算子

LACInfer 支持部分 ONNX Runtime 扩展算子,支持的算子如下所示。最新的 ONNX Runtime 扩展算子信息详见 ONNX Runtime Github 仓库。

  • Attention
  • BiasAdd
  • BiasSplitGelu
  • GroupNorm
  • GroupQueryAttention
  • MatMulIntegerToFloat
  • MatMulNBits
  • MultiHeadAttention
  • NhwcConv
  • QuickGelu
  • RotaryEmbedding
  • SimplifiedLayerNormalization
  • SkipLayerNormalization
  • SkipSimplifiedLayerNormalization
©龙芯开源社区 all right reserved,powered by Gitbook文档更新时间: 2026-09-30 13:16:32

results matching ""

    No results matching ""

    results matching ""

      No results matching ""