From 4dcb7462d287139ae249fb4ea3d29ed9e06534ff Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Mon, 7 Oct 2024 01:11:34 +0000 Subject: [PATCH] add tolerance --- onnxruntime/test/providers/checkers.cc | 4 --- .../test/providers/cpu/nn/conv_fp16_test.cc | 1 + .../cpu/nn/conv_transpose_op_test.cc | 25 +++++++++++++++++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/onnxruntime/test/providers/checkers.cc b/onnxruntime/test/providers/checkers.cc index d82d13afd353d..ff5895623fc9b 100644 --- a/onnxruntime/test/providers/checkers.cc +++ b/onnxruntime/test/providers/checkers.cc @@ -80,10 +80,6 @@ struct DefaultTolerance { if (provider_type == kDmlExecutionProvider) { return 0.005f; } - if (provider_type == kXnnpackExecutionProvider) { - // To allow tests like ConvTranspose_2D_Bias_1 to pass - return 0.05f; - } return absolute; } }; diff --git a/onnxruntime/test/providers/cpu/nn/conv_fp16_test.cc b/onnxruntime/test/providers/cpu/nn/conv_fp16_test.cc index 66bb34bb269dd..cfd4a21e5c3d1 100644 --- a/onnxruntime/test/providers/cpu/nn/conv_fp16_test.cc +++ b/onnxruntime/test/providers/cpu/nn/conv_fp16_test.cc @@ -2,6 +2,7 @@ // Licensed under the MIT License. #include "core/mlas/inc/mlas.h" +#include "core/providers/xnnpack/xnnpack_init.h" #if defined(MLAS_F16VEC_INTRINSICS_SUPPORTED) || defined(COREML_ENABLE_MLPROGRAM) || defined(XNNPACK_FP16_SUPPORTED) diff --git a/onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc b/onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc index 29525f89ef544..1965418c1f4dd 100644 --- a/onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc +++ b/onnxruntime/test/providers/cpu/nn/conv_transpose_op_test.cc @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +#include "core/providers/xnnpack/xnnpack_init.h" #include "gtest/gtest.h" #include "test/providers/provider_test_utils.h" #include "default_providers.h" @@ -28,6 +29,8 @@ void TestConvTransposeOpInitializer(const ConvTransposeOpAttributes& attributes, const vector>& input_shapes, const std::vector& expected_output, const vector& expected_output_shape, + float rel_error = 0.0, + float abs_error = 0.0, bool is_weight_and_bias_initializer = false, OpTester::ExpectResult expect_result = OpTester::ExpectResult::kExpectSuccess, const std::string& err_str = "", @@ -64,7 +67,7 @@ void TestConvTransposeOpInitializer(const ConvTransposeOpAttributes& attributes, for (size_t i = 0; i < inputs.size(); i++) { test.AddInput(input_names[i], input_shapes[i], inputs[i], is_initializers[i]); } - test.AddOutput("Y", expected_output_shape, expected_output); + test.AddOutput("Y", expected_output_shape, expected_output, false, rel_error, abs_error); test.Run(expect_result, err_str, excluded_provider_types); // Disable TensorRT because weight as input is not supported } @@ -78,12 +81,16 @@ void TestConvTransposeOp(const ConvTransposeOpAttributes& attributes, OpTester::ExpectResult expect_result = OpTester::ExpectResult::kExpectSuccess, const std::string& err_str = "", const std::unordered_set& excluded_provider_types = - {kCudaNHWCExecutionProvider, kTensorrtExecutionProvider, kQnnExecutionProvider}) { + {kCudaNHWCExecutionProvider, kTensorrtExecutionProvider, kQnnExecutionProvider}, + float rel_error = 0.0, + float abs_error = 0.0) { std::unordered_set extra_exclude_openvino_for_initializer_filter = excluded_provider_types; extra_exclude_openvino_for_initializer_filter.insert(kOpenVINOExecutionProvider); TestConvTransposeOpInitializer(attributes, inputs, input_shapes, expected_output, expected_output_shape, + rel_error, abs_error, true, expect_result, err_str, extra_exclude_openvino_for_initializer_filter); TestConvTransposeOpInitializer(attributes, inputs, input_shapes, expected_output, expected_output_shape, + rel_error, abs_error, false, expect_result, err_str, excluded_provider_types); } @@ -245,8 +252,22 @@ TYPED_TEST(ConvTransposeTest, ConvTranspose_2D_Bias_1) { 0.07770107f, -0.09561026f, 0.13388641f, 0.30945939f, 0.14015588f, 0.13079405f, -0.00488365f, -0.06758944f, 0.45621645f, 0.01566098f, 0.00703105f, 0.12956856f, 0.0103332f, 0.04221053f, -0.21318194f}; +#ifdef XNNPACK_FP16_SUPPORTED + if constexpr (std::is_same::value) { + TestConvTransposeOp(attrs, {GetTypedArray(X), GetTypedArray(W), GetTypedArray(B)}, + {X_shape, W_shape, B_shape}, GetTypedArray(expected_vals), Y_shape, + OpTester::ExpectResult::kExpectSuccess, "", // defalut value + {kCudaNHWCExecutionProvider, kTensorrtExecutionProvider, kQnnExecutionProvider}, //default value + 0.5, 0.5); + } else { + TestConvTransposeOp(attrs, {GetTypedArray(X), GetTypedArray(W), GetTypedArray(B)}, + {X_shape, W_shape, B_shape}, GetTypedArray(expected_vals), Y_shape); + } + +#else TestConvTransposeOp(attrs, {GetTypedArray(X), GetTypedArray(W), GetTypedArray(B)}, {X_shape, W_shape, B_shape}, GetTypedArray(expected_vals), Y_shape); +#endif } TEST(ConvTransposeTest, ConvTranspose_2D_Bias_2) {