Tracking why operators are not covered

ONNX backend test script reports the coverage on the operators and attributes. But we have various of reasons for the missing test coverage on operators. This doc keeps tracking why operators are not covered by the testcases.

  • ๐Ÿ’š The ONNX operator can map to a Caffe2 operator.
  • ๐Ÿ’› The solution is not perfect/finished, for example, the operator can map to a combination of Caffe2 operators.
  • ๐Ÿ’” Hard to find a solution with existing Caffe2 operators.
OperatorTest CoveragePyTorchCaffe2
AbsYesOK๐Ÿ’šOK
AcosYesOK๐Ÿ’šOK
AddYesOK๐Ÿ’šOK
AndYesSupport int tensor, but no bool tensor๐Ÿ’šOK
ArgMax๐Ÿ’šOK
ArgMin๐Ÿ’šOK
Asin๐Ÿ’šOK
Atan๐Ÿ’šOK
AveragePoolOK๐Ÿ’šOK
BatchNormalizationOK๐Ÿ’šOK
CastYes๐Ÿ’”Need extendtion
CeilYes๐Ÿ’šOK
ClipYesOK๐Ÿ’šOK
ConcatYesOK๐Ÿ’šOK
ConstantYesOK๐Ÿ’›Special handling
ConvYesOK๐Ÿ’šOK
ConvTransposeYes๐Ÿ’šOK, under enhancement
CosYesOK๐Ÿ’šOK
DepthToSpaceYes๐Ÿ’”No op
DivYesOK๐Ÿ’šOK
DropoutYesOK๐Ÿ’šOK
EluYesOK๐Ÿ’šOK
EqualYesOK๐Ÿ’šOK
ExpYesOK๐Ÿ’šOK
FlattenYesOK๐Ÿ’šOK
FloorYes๐Ÿ’šOK
GRU๐Ÿ’š
GatherYesOK๐Ÿ’›C2 only support axis=0 or 1, under development
GemmYesOK๐Ÿ’›C2 use FC or MatMul + Add
GlobalAveragePoolYesNo direct mapping๐Ÿ’šOK
GlobalLpPool๐Ÿ’”No mapping yet
GlobalMaxPool๐Ÿ’šOK
GreaterYes๐Ÿ’šOK
HardSigmoidYes๐Ÿ’”No op
HardmaxYes๐Ÿ’”No op
InstanceNormalization๐Ÿ’šOK
LRNOK๐Ÿ’šOK
LSTM๐Ÿ’šOK
LeakyReluYesOK๐Ÿ’šOK
LessYes๐Ÿ’šOK
LogYesOK๐Ÿ’šOK
LogSoftmaxOK๐Ÿ’šNo op, translated in onnx-caffe2
LpNormalization๐Ÿ’”ONNX and C2 have different definition
LpPool๐Ÿ’šShould be LpPool, no tests
MatMulYesOK๐Ÿ’šOK
MaxYesOK๐Ÿ’šOK
MaxPoolOK๐Ÿ’šOK
MaxRoiPool๐Ÿ’”No mapping yet
Mean๐Ÿ’šOK, need broadcasting support
MinYesOK๐Ÿ’šOK, need broadcasting support
MulYesOK๐Ÿ’šOK, need broadcasting support
MultinomialYesOK๐Ÿ’”no op
NegYesOK๐Ÿ’šOK
NotYes๐Ÿ’šOK
OrYes๐Ÿ’šOK
PReluYesOK๐Ÿ’›Need to enhance C2 implementation
PadYesOK๐Ÿ’šOK
PowYesOK๐Ÿ’šOK
RNN๐Ÿ’šOK
RandomNormal๐Ÿ’”No op
RandomNormalLike๐Ÿ’”No op
RandomUniform๐Ÿ’”No op
RandomUniformLike๐Ÿ’”No op
ReciprocalYes๐Ÿ’šUse Pow to implement
ReduceL1๐Ÿ’”No op
ReduceL2๐Ÿ’”No op
ReduceLogSum๐Ÿ’”No op
ReduceLogSumExp๐Ÿ’”No op
ReduceMax๐Ÿ’šOK
ReduceMean๐Ÿ’šOK
ReduceMin๐Ÿ’šOK
ReduceProd๐Ÿ’šOK
ReduceSum๐Ÿ’šOK
ReduceSumSquare๐Ÿ’”No op
ReluYesOK๐Ÿ’šOK
ReshapeYesOK๐Ÿ’šOK
SeluYesOK๐Ÿ’šOK
SigmoidYesOK๐Ÿ’šOK
SinYesOK๐Ÿ’šOK
SizeYesOK๐Ÿ’šOK
SliceYesOK๐Ÿ’”ScatterAssign + Cast, very hacky implementation, Slice in C2 only supports one dimension
SoftmaxYesOK๐Ÿ’”Axis and dim has different semantics
SoftplusYesOK๐Ÿ’šOK
SoftsignYes๐Ÿ’šOK
SpaceToDepth๐Ÿ’”No op
SplitYesOK๐Ÿ’šOK
SqrtYes๐Ÿ’šOK
SqueezeYes๐Ÿ’šOK
SubYesOK๐Ÿ’šOK
SumYesOK๐Ÿ’šOK, need broadcasting support
TanhYesOK๐Ÿ’šOK
TileOK๐Ÿ’›OK, need some enhance
TopKOK๐Ÿ’šOK
TransposeYesOK๐Ÿ’šOK
Upsample๐Ÿ’›No bilinear
XorYes๐Ÿ’šOK
experimental ATen๐Ÿ’šOK
experimental Affine๐Ÿ’”No op
experimental ConstantFill๐Ÿ’šOK
experimental Crop๐Ÿ’”No op
experimental FC๐Ÿ’šOK
experimental GRUUnit๐Ÿ’šOK, no tests
experimental GivenTensorFill๐Ÿ’šOK
experimental Identity๐Ÿ’šOK
experimental ImageScaler๐Ÿ’”No op
experimental MeanVarianceNormalization๐Ÿ’”No op
experimental ParametricSoftplus๐Ÿ’”No op
experimental Scale๐Ÿ’šOK
experimental ScaledTanh๐Ÿ’”No op
experimental ThresholdedReluYes๐Ÿ’šOK