mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-06-03 23:49:44 +00:00
Support double for operator ArgMin (#6222)
* Support double for operator ArgMin * add test specifically for double * add new test on pai-excluded-tests.txt
This commit is contained in:
parent
84addcd2cf
commit
cd14c1af29
4 changed files with 58 additions and 8 deletions
|
|
@ -337,6 +337,7 @@ class ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOn
|
|||
class ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 11, 12, double, ArgMax);
|
||||
class ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 11, 12, int32_t, ArgMax);
|
||||
class ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 11, 12, float, ArgMin);
|
||||
class ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 11, 12, double, ArgMin);
|
||||
class ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 11, 12, int32_t, ArgMin);
|
||||
class ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 11, 12, float, ReduceL1);
|
||||
class ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 11, 12, int32_t, ReduceL1);
|
||||
|
|
@ -506,6 +507,7 @@ class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain,
|
|||
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 13, double, ArgMax);
|
||||
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 13, int32_t, ArgMax);
|
||||
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 13, float, ArgMin);
|
||||
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 13, double, ArgMin);
|
||||
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 13, int32_t, ArgMin);
|
||||
class ONNX_OPERATOR_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 13, Reshape);
|
||||
class ONNX_OPERATOR_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 13, Shape);
|
||||
|
|
@ -1183,6 +1185,8 @@ Status RegisterOnnxOperatorKernels(KernelRegistry& kernel_registry) {
|
|||
int32_t, ArgMax)>,
|
||||
BuildKernelCreateInfo<ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 11, 12,
|
||||
float, ArgMin)>,
|
||||
BuildKernelCreateInfo<ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 11, 12,
|
||||
double, ArgMin)>,
|
||||
BuildKernelCreateInfo<ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 11, 12,
|
||||
int32_t, ArgMin)>,
|
||||
BuildKernelCreateInfo<ONNX_OPERATOR_VERSIONED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 11, 12, Loop)>,
|
||||
|
|
@ -1452,6 +1456,8 @@ Status RegisterOnnxOperatorKernels(KernelRegistry& kernel_registry) {
|
|||
int32_t, ArgMax)>,
|
||||
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 13,
|
||||
float, ArgMin)>,
|
||||
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 13,
|
||||
double, ArgMin)>,
|
||||
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 13,
|
||||
int32_t, ArgMin)>,
|
||||
BuildKernelCreateInfo<ONNX_OPERATOR_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 13, Reshape)>,
|
||||
|
|
|
|||
|
|
@ -195,7 +195,9 @@ REGISTER_UNARY_ELEMENTWISE_KERNEL_DOUBLE_ONLY(ArgMax, 13);
|
|||
|
||||
REGISTER_UNARY_ELEMENTWISE_VERSIONED_KERNEL(ArgMin, 1, 10);
|
||||
REGISTER_UNARY_ELEMENTWISE_VERSIONED_KERNEL(ArgMin, 11, 12);
|
||||
REGISTER_UNARY_ELEMENTWISE_VERSIONED_KERNEL_DOUBLE_ONLY(ArgMin, 11, 12)
|
||||
REGISTER_UNARY_ELEMENTWISE_KERNEL(ArgMin, 13);
|
||||
REGISTER_UNARY_ELEMENTWISE_KERNEL_DOUBLE_ONLY(ArgMin, 13);
|
||||
|
||||
bool SetupForReduce(const Tensor* input_tensor_ptr,
|
||||
const std::vector<int64_t>& axes_,
|
||||
|
|
|
|||
|
|
@ -699,7 +699,7 @@ TEST(ReductionOpTest, ReduceMax_int32) {
|
|||
#if defined(OPENVINO_CONFIG_GPU_FP32) || defined(OPENVINO_CONFIG_GPU_FP16) || defined(OPENVINO_CONFIG_MYRIAD)
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider, kOpenVINOExecutionProvider}); // OpenVINO: Disabled temporarily
|
||||
#else
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider}); //TensorRT: axis must be 0
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider}); //TensorRT: axis must be 0
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -720,7 +720,7 @@ TEST(ReductionOpTest, ReduceMax_int64) {
|
|||
#if defined(OPENVINO_CONFIG_GPU_FP32) || defined(OPENVINO_CONFIG_GPU_FP16) || defined(OPENVINO_CONFIG_MYRIAD)
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider, kOpenVINOExecutionProvider}); // OpenVINO: Disabled temporarily
|
||||
#else
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider}); //TensorRT: axis must be 0
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider}); //TensorRT: axis must be 0
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -741,7 +741,7 @@ TEST(ReductionOpTest, ReduceMax_int8) {
|
|||
#if defined(OPENVINO_CONFIG_MYRIAD)
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider, kOpenVINOExecutionProvider}); // OpenVINO: Disabled temporarily
|
||||
#else
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider}); //TensorRT: axis must be 0
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider}); //TensorRT: axis must be 0
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -762,7 +762,7 @@ TEST(ReductionOpTest, ReduceMax_uint8) {
|
|||
#if defined(OPENVINO_CONFIG_MYRIAD)
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider, kOpenVINOExecutionProvider}); // OpenVINO: Disabled temporarily
|
||||
#else
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider}); //TensorRT: axis must be 0
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider}); //TensorRT: axis must be 0
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -1560,7 +1560,7 @@ TEST(ReductionOpTest, ReduceSum_int32_axes_input) {
|
|||
test.AddInput<int64_t>("axes", {2}, std::vector<int64_t>{0, 2}, true);
|
||||
test.AddOutput<int32_t>("reduced", {1, 2, 1}, {33, 45});
|
||||
// TODO: TensorRT and OpenVINO dont support "axes" input in opset 13, re-enable after
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider, kOpenVINOExecutionProvider});
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider, kOpenVINOExecutionProvider});
|
||||
}
|
||||
|
||||
TEST(ReductionOpTest, ReduceSum_do_not_keepdims_axes_input_initializer) {
|
||||
|
|
@ -1572,7 +1572,7 @@ TEST(ReductionOpTest, ReduceSum_do_not_keepdims_axes_input_initializer) {
|
|||
test.AddInput<int64_t>("axes", {1}, std::vector<int64_t>{1}, true);
|
||||
test.AddOutput<float>("reduced", {1, 2}, {4.0f, 6.0f});
|
||||
// TODO: TensorRT and OpenVINO dont support "axes" input in opset 13, re-enable after
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider, kOpenVINOExecutionProvider});
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider, kOpenVINOExecutionProvider});
|
||||
}
|
||||
|
||||
TEST(ReductionOpTest, ReduceSum_do_not_keepdims_axes_input_not_initializer) {
|
||||
|
|
@ -1584,7 +1584,7 @@ TEST(ReductionOpTest, ReduceSum_do_not_keepdims_axes_input_not_initializer) {
|
|||
test.AddInput<int64_t>("axes", {1}, std::vector<int64_t>{1}, false);
|
||||
test.AddOutput<float>("reduced", {1, 2}, {4.0f, 6.0f});
|
||||
// TODO: TensorRT and OpenVINO dont support "axes" input in opset 13, re-enable after
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider, kOpenVINOExecutionProvider});
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider, kOpenVINOExecutionProvider});
|
||||
}
|
||||
|
||||
TEST(ReductionOpTest, ReduceSum_noop_axes_input_initializer) {
|
||||
|
|
@ -1597,7 +1597,7 @@ TEST(ReductionOpTest, ReduceSum_noop_axes_input_initializer) {
|
|||
test.AddInput<int64_t>("axes", {0}, {}, true);
|
||||
test.AddOutput<float>("reduced", {1, 2, 2}, {1.0f, 2.0f, 3.0f, 4.0f});
|
||||
// TODO: TensorRT and OpenVINO dont support "axes" input in opset 13, re-enable after
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider, kOpenVINOExecutionProvider});
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider, kOpenVINOExecutionProvider});
|
||||
}
|
||||
|
||||
#if !(defined USE_TENSORRT) && !(defined USE_TVM)
|
||||
|
|
@ -2079,6 +2079,46 @@ TEST(ReductionOpTest, ArgMin) {
|
|||
test.Run();
|
||||
}
|
||||
|
||||
TEST(ReductionOpTest, ArgMin_Double_Type) {
|
||||
OpTester test("ArgMin", 11);
|
||||
test.AddAttribute("axis", (int64_t)1);
|
||||
test.AddAttribute("keepdims", (int64_t)1);
|
||||
test.AddInput<double>("data", {3, 2, 2},
|
||||
{1.0, 2.0,
|
||||
3.0, 4.0,
|
||||
|
||||
5.0, 6.0,
|
||||
7.0, 8.0,
|
||||
|
||||
9.0, 10.0,
|
||||
11.0, 12.0});
|
||||
test.AddOutput<int64_t>("reduced", {3, 1, 2},
|
||||
{0, 0,
|
||||
0, 0,
|
||||
0, 0});
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider}); //TensorRT: axis must be 0
|
||||
}
|
||||
|
||||
TEST(ReductionOpTest, ArgMin_Double_Precision) {
|
||||
OpTester test("ArgMin", 11);
|
||||
test.AddAttribute("axis", (int64_t)1);
|
||||
test.AddAttribute("keepdims", (int64_t)1);
|
||||
test.AddInput<double>("data", {3, 2, 2},
|
||||
{1.0 + 1e-10, 3.0,
|
||||
1.0, 3.0 - 0.5e-10,
|
||||
|
||||
1.0, 3.0 + 1e-10,
|
||||
1 + 1e-10, 3 - 1e-10,
|
||||
|
||||
1.0 + 2e-10, 3.0 - 1e-10,
|
||||
1 - 1e-10, 3.0});
|
||||
test.AddOutput<int64_t>("reduced", {3, 1, 2},
|
||||
{1, 1,
|
||||
0, 1,
|
||||
1, 0});
|
||||
test.Run(OpTester::ExpectResult::kExpectSuccess, "", {kTensorrtExecutionProvider}); //TensorRT: axis must be 0
|
||||
}
|
||||
|
||||
TEST(ReductionOpTest, ArgMin_do_not_keepdims) {
|
||||
OpTester test("ArgMin");
|
||||
test.AddAttribute("axis", (int64_t)0);
|
||||
|
|
|
|||
|
|
@ -112,6 +112,8 @@ ReductionOpTest.ArgMax_do_not_keepdims
|
|||
ReductionOpTest.ArgMax_do_not_keepdims_2
|
||||
ReductionOpTest.ArgMax2D
|
||||
ReductionOpTest.ArgMin
|
||||
ReductionOpTest.ArgMin_Double_Type
|
||||
ReductionOpTest.ArgMin_Double_Precision
|
||||
ReductionOpTest.ArgMin_do_not_keepdims
|
||||
ReductionOpTest.ArgMin_do_not_keepdims_2
|
||||
ReductionOpTest.ReduceInfMax
|
||||
|
|
|
|||
Loading…
Reference in a new issue