From 9670623516a27bcd1adc8e1e3c1d3a135b2479c5 Mon Sep 17 00:00:00 2001 From: Yufeng Li Date: Wed, 21 Aug 2019 10:40:42 -0700 Subject: [PATCH 1/2] Add support of ReduceSum int64 --- onnxruntime/core/providers/cpu/cpu_execution_provider.cc | 4 +++- onnxruntime/core/providers/cpu/reduction/reduction_ops.cc | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/onnxruntime/core/providers/cpu/cpu_execution_provider.cc b/onnxruntime/core/providers/cpu/cpu_execution_provider.cc index 6508bfdf86734..29c0640fb3d42 100644 --- a/onnxruntime/core/providers/cpu/cpu_execution_provider.cc +++ b/onnxruntime/core/providers/cpu/cpu_execution_provider.cc @@ -146,6 +146,7 @@ class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 1, float, ReduceSum); class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 1, double, ReduceSum); class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 1, int32_t, ReduceSum); +class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 1, int64_t, ReduceSum); class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 1, float, ReduceSumSquare); class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 1, double, ReduceSumSquare); class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 1, int32_t, ReduceSumSquare); @@ -426,8 +427,9 @@ void RegisterOnnxOperatorKernels(KernelRegistry& kernel_registry) { BuildKernelCreateInfo, BuildKernelCreateInfo, BuildKernelCreateInfo, - BuildKernelCreateInfo, BuildKernelCreateInfo, + BuildKernelCreateInfo, + BuildKernelCreateInfo, BuildKernelCreateInfo, BuildKernelCreateInfo, BuildKernelCreateInfo, diff --git a/onnxruntime/core/providers/cpu/reduction/reduction_ops.cc b/onnxruntime/core/providers/cpu/reduction/reduction_ops.cc index f0a4de9358dcd..b418012574c7e 100644 --- a/onnxruntime/core/providers/cpu/reduction/reduction_ops.cc +++ b/onnxruntime/core/providers/cpu/reduction/reduction_ops.cc @@ -48,6 +48,7 @@ REGISTER_UNARY_ELEMENTWISE_KERNEL(ReduceMean, 1); REGISTER_UNARY_ELEMENTWISE_KERNEL(ReduceMin, 1); REGISTER_UNARY_ELEMENTWISE_KERNEL(ReduceProd, 1); REGISTER_UNARY_ELEMENTWISE_KERNEL(ReduceSum, 1); +REGISTER_UNARY_ELEMENTWISE_KERNEL_INT64_ONLY(ReduceSum, 1); REGISTER_UNARY_ELEMENTWISE_KERNEL_DOUBLE_ONLY(ReduceSum, 1); REGISTER_UNARY_ELEMENTWISE_KERNEL(ReduceSumSquare, 1); REGISTER_UNARY_ELEMENTWISE_KERNEL_DOUBLE_ONLY(ReduceSumSquare, 1); From a630486086c55941e8c72287e9ff76b2982ad9c4 Mon Sep 17 00:00:00 2001 From: Yufeng Li Date: Wed, 21 Aug 2019 17:02:26 -0700 Subject: [PATCH 2/2] add unit test for int64 --- .../cpu/reduction/reduction_ops_test.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/onnxruntime/test/providers/cpu/reduction/reduction_ops_test.cc b/onnxruntime/test/providers/cpu/reduction/reduction_ops_test.cc index 826993af21873..c8b4daefedc5f 100644 --- a/onnxruntime/test/providers/cpu/reduction/reduction_ops_test.cc +++ b/onnxruntime/test/providers/cpu/reduction/reduction_ops_test.cc @@ -761,6 +761,24 @@ TEST(ReductionOpTest, ReduceSum_int32) { test.Run(); } +TEST( ReductionOpTest, ReduceSum_int64 ) +{ + OpTester test( "ReduceSum" ); + test.AddAttribute( "axes", std::vector{0, 2} ); + test.AddAttribute( "keepdims", ( int64_t ) 1 ); + test.AddInput( "data", { 3, 2, 2 }, + { 1, 2, + 3, 4, + + 5, 6, + 7, 8, + + 9, 10, + 11, 12 } ); + test.AddOutput( "reduced", { 1, 2, 1 }, { 33, 45 } ); + test.Run(); +} + TEST(ReductionOpTest, ReduceSum_default_axes_keepdims) { OpTester test("ReduceSum"); test.AddAttribute("keepdims", (int64_t)1);