Skip to content

Commit c4fb724

Browse files
apsonawaneHectorSVCivberg
authored
ORT 1.20.0 release preparation: Cherry pick round 2 (microsoft#22643)
ORT 1.20.0 release preparation: Cherry pick round 2 Approved commits --------- Co-authored-by: Hector Li <[email protected]> Co-authored-by: ivberg <[email protected]>
1 parent 2d00351 commit c4fb724

9 files changed

+138
-79
lines changed

docs/OperatorKernels.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,8 @@ Do not modify directly.*
258258
|||12|**T** = tensor(double), tensor(float), tensor(int32), tensor(int64)<br/> **T1** = tensor(double), tensor(float), tensor(int32), tensor(int64)|
259259
|||[7, 11]|**T** = tensor(double), tensor(float)|
260260
|QLinearConv|*in* x:**T1**<br> *in* x_scale:**tensor(float)**<br> *in* x_zero_point:**T1**<br> *in* w:**T2**<br> *in* w_scale:**tensor(float)**<br> *in* w_zero_point:**T2**<br> *in* y_scale:**tensor(float)**<br> *in* y_zero_point:**T3**<br> *in* B:**T4**<br> *out* y:**T3**|10+|**T1** = tensor(int8), tensor(uint8)<br/> **T2** = tensor(int8), tensor(uint8)<br/> **T3** = tensor(int8), tensor(uint8)<br/> **T4** = tensor(int32)|
261-
|QLinearMatMul|*in* a:**T1**<br> *in* a_scale:**TS**<br> *in* a_zero_point:**T1**<br> *in* b:**T2**<br> *in* b_scale:**TS**<br> *in* b_zero_point:**T2**<br> *in* y_scale:**TS**<br> *in* y_zero_point:**T3**<br> *out* y:**T3**<br><br>or<br><br>*in* a:**T1**<br> *in* a_scale:**tensor(float)**<br> *in* a_zero_point:**T1**<br> *in* b:**T2**<br> *in* b_scale:**tensor(float)**<br> *in* b_zero_point:**T2**<br> *in* y_scale:**tensor(float)**<br> *in* y_zero_point:**T3**<br> *out* y:**T3**|10+|**T1** = tensor(int8), tensor(uint8)<br/> **T2** = tensor(int8), tensor(uint8)<br/> **T3** = tensor(int8), tensor(uint8)|
261+
|QLinearMatMul|*in* a:**T1**<br> *in* a_scale:**TS**<br> *in* a_zero_point:**T1**<br> *in* b:**T2**<br> *in* b_scale:**TS**<br> *in* b_zero_point:**T2**<br> *in* y_scale:**TS**<br> *in* y_zero_point:**T3**<br> *out* y:**T3**<br><br>or<br><br>*in* a:**T1**<br> *in* a_scale:**tensor(float)**<br> *in* a_zero_point:**T1**<br> *in* b:**T2**<br> *in* b_scale:**tensor(float)**<br> *in* b_zero_point:**T2**<br> *in* y_scale:**tensor(float)**<br> *in* y_zero_point:**T3**<br> *out* y:**T3**|21+|**T1** = tensor(int8), tensor(uint8)<br/> **T2** = tensor(int8), tensor(uint8)<br/> **T3** = tensor(int8), tensor(uint8)<br/> **TS** = tensor(float)|
262+
|||[10, 20]|**T1** = tensor(int8), tensor(uint8)<br/> **T2** = tensor(int8), tensor(uint8)<br/> **T3** = tensor(int8), tensor(uint8)|
262263
|QuantizeLinear|*in* x:**T1**<br> *in* y_scale:**T1**<br> *in* y_zero_point:**T2**<br> *out* y:**T2**<br><br>or<br><br>*in* x:**T1**<br> *in* y_scale:**tensor(float)**<br> *in* y_zero_point:**T2**<br> *out* y:**T2**|21+|**T1** = tensor(float), tensor(float16)<br/> **T2** = tensor(float8e4m3fn), tensor(float8e4m3fnuz), tensor(float8e5m2), tensor(float8e5m2fnuz), tensor(int16), tensor(int4), tensor(int8), tensor(uint16), tensor(uint4), tensor(uint8)|
263264
|||[19, 20]|**T1** = tensor(float), tensor(float16)<br/> **T2** = tensor(float8e4m3fn), tensor(float8e4m3fnuz), tensor(float8e5m2), tensor(float8e5m2fnuz), tensor(int8), tensor(uint8)|
264265
|||[13, 18]|**T1** = tensor(float)<br/> **T2** = tensor(int8), tensor(uint8)|

onnxruntime/core/providers/cpu/cpu_execution_provider.cc

+14-6
Original file line numberDiff line numberDiff line change
@@ -379,8 +379,10 @@ class ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOn
379379
QuantizeLinear);
380380
class ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, 12, int8_t,
381381
QuantizeLinear);
382-
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, uint8_t, QLinearMatMul);
383-
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, int8_t, QLinearMatMul);
382+
class ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, 20, uint8_t,
383+
QLinearMatMul);
384+
class ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, 20, int8_t,
385+
QLinearMatMul);
384386
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, uint8_t, MatMulInteger);
385387
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, int8_t, MatMulInteger);
386388
class ONNX_OPERATOR_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, ConvInteger);
@@ -1108,6 +1110,8 @@ class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain,
11081110
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 21, int16_t, DequantizeLinear);
11091111
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 21, Int4x2, DequantizeLinear);
11101112
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 21, UInt4x2, DequantizeLinear);
1113+
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 21, uint8_t, QLinearMatMul);
1114+
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 21, int8_t, QLinearMatMul);
11111115
#if !defined(DISABLE_FLOAT8_TYPES)
11121116
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 21, Float8E4M3FN, DequantizeLinear);
11131117
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 21, Float8E4M3FNUZ, DequantizeLinear);
@@ -1691,10 +1695,10 @@ Status RegisterOnnxOperatorKernels(KernelRegistry& kernel_registry) {
16911695
uint8_t, QuantizeLinear)>,
16921696
BuildKernelCreateInfo<ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, 12,
16931697
int8_t, QuantizeLinear)>,
1694-
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, uint8_t,
1695-
QLinearMatMul)>,
1696-
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, int8_t,
1697-
QLinearMatMul)>,
1698+
BuildKernelCreateInfo<ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, 20,
1699+
uint8_t, QLinearMatMul)>,
1700+
BuildKernelCreateInfo<ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, 20,
1701+
int8_t, QLinearMatMul)>,
16981702
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, uint8_t,
16991703
MatMulInteger)>,
17001704
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 10, int8_t,
@@ -2769,6 +2773,10 @@ Status RegisterOnnxOperatorKernels(KernelRegistry& kernel_registry) {
27692773
DequantizeLinear)>,
27702774
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 21, UInt4x2,
27712775
DequantizeLinear)>,
2776+
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 21, uint8_t,
2777+
QLinearMatMul)>,
2778+
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 21, int8_t,
2779+
QLinearMatMul)>,
27722780
#if !defined(DISABLE_FLOAT8_TYPES)
27732781
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(kCpuExecutionProvider, kOnnxDomain, 21, Float8E4M3FN,
27742782
DequantizeLinear)>,

onnxruntime/core/providers/cpu/quantization/quantize_linear_matmul.cc

+40-15
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@
1414

1515
namespace onnxruntime {
1616
// uint8_t kernel supports weight being either uint8_t or int8_t
17-
ONNX_OPERATOR_TYPED_KERNEL_EX(
17+
ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_EX(
1818
QLinearMatMul,
1919
kOnnxDomain,
2020
10,
21+
20,
2122
uint8_t,
2223
kCpuExecutionProvider,
2324
KernelDefBuilder()
@@ -26,21 +27,45 @@ ONNX_OPERATOR_TYPED_KERNEL_EX(
2627
.TypeConstraint("T3", DataTypeImpl::GetTensorType<uint8_t>()),
2728
QLinearMatMul);
2829

30+
ONNX_OPERATOR_TYPED_KERNEL_EX(
31+
QLinearMatMul,
32+
kOnnxDomain,
33+
21,
34+
uint8_t,
35+
kCpuExecutionProvider,
36+
KernelDefBuilder()
37+
.TypeConstraint("TS", DataTypeImpl::GetTensorType<float>())
38+
.TypeConstraint("T1", DataTypeImpl::GetTensorType<uint8_t>())
39+
.TypeConstraint("T2", {DataTypeImpl::GetTensorType<uint8_t>(), DataTypeImpl::GetTensorType<int8_t>()})
40+
.TypeConstraint("T3", DataTypeImpl::GetTensorType<uint8_t>()),
41+
QLinearMatMul);
42+
2943
// int8_t kernel only supports weight being int8_t
30-
#define REGISTER_QLINEARMATMUL_INT8_KERNEL() \
31-
ONNX_OPERATOR_TYPED_KERNEL_EX( \
32-
QLinearMatMul, \
33-
kOnnxDomain, \
34-
10, \
35-
int8_t, \
36-
kCpuExecutionProvider, \
37-
KernelDefBuilder() \
38-
.TypeConstraint("T1", DataTypeImpl::GetTensorType<int8_t>()) \
39-
.TypeConstraint("T2", DataTypeImpl::GetTensorType<int8_t>()) \
40-
.TypeConstraint("T3", DataTypeImpl::GetTensorType<int8_t>()), \
41-
QLinearMatMul);
42-
43-
REGISTER_QLINEARMATMUL_INT8_KERNEL();
44+
ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_EX(
45+
QLinearMatMul,
46+
kOnnxDomain,
47+
10,
48+
20,
49+
int8_t,
50+
kCpuExecutionProvider,
51+
KernelDefBuilder()
52+
.TypeConstraint("T1", DataTypeImpl::GetTensorType<int8_t>())
53+
.TypeConstraint("T2", DataTypeImpl::GetTensorType<int8_t>())
54+
.TypeConstraint("T3", DataTypeImpl::GetTensorType<int8_t>()),
55+
QLinearMatMul);
56+
57+
ONNX_OPERATOR_TYPED_KERNEL_EX(
58+
QLinearMatMul,
59+
kOnnxDomain,
60+
21,
61+
int8_t,
62+
kCpuExecutionProvider,
63+
KernelDefBuilder()
64+
.TypeConstraint("TS", DataTypeImpl::GetTensorType<float>())
65+
.TypeConstraint("T1", DataTypeImpl::GetTensorType<int8_t>())
66+
.TypeConstraint("T2", DataTypeImpl::GetTensorType<int8_t>())
67+
.TypeConstraint("T3", DataTypeImpl::GetTensorType<int8_t>()),
68+
QLinearMatMul);
4469

4570
Status QLinearMatMul::Compute(OpKernelContext* ctx) const {
4671
const auto* a = ctx->Input<Tensor>(IN_A);

onnxruntime/core/providers/qnn/builder/qnn_backend_manager.cc

+13-3
Original file line numberDiff line numberDiff line change
@@ -302,13 +302,21 @@ QnnLog_Level_t QnnBackendManager::MapOrtSeverityToQNNLogLevel(logging::Severity
302302
}
303303

304304
Status QnnBackendManager::ResetQnnLogLevel() {
305-
auto ort_log_level = logger_->GetSeverity();
306-
LOGS(*logger_, INFO) << "Reset Qnn log level to ORT Logger level: " << (unsigned int)ort_log_level;
307-
return UpdateQnnLogLevel(ort_log_level);
305+
std::lock_guard<std::mutex> lock(logger_mutex_);
306+
307+
if (backend_setup_completed_ && logger_ != nullptr) {
308+
auto ort_log_level = logger_->GetSeverity();
309+
LOGS(*logger_, INFO) << "Reset Qnn log level to ORT Logger level: " << (unsigned int)ort_log_level;
310+
return UpdateQnnLogLevel(ort_log_level);
311+
}
312+
return Status::OK();
308313
}
309314

310315
Status QnnBackendManager::UpdateQnnLogLevel(logging::Severity ort_log_level) {
311316
ORT_RETURN_IF(nullptr == log_handle_, "Unable to update QNN Log Level. Invalid QNN log handle.");
317+
ORT_RETURN_IF(false == backend_setup_completed_, "Unable to update QNN Log Level. Backend setup not completed.");
318+
ORT_RETURN_IF(nullptr == logger_, "Unable to update QNN Log Level. Invalid logger.");
319+
312320
QnnLog_Level_t qnn_log_level = MapOrtSeverityToQNNLogLevel(ort_log_level);
313321

314322
LOGS(*logger_, INFO) << "Updating Qnn log level to: " << qnn_log_level;
@@ -686,6 +694,7 @@ Status QnnBackendManager::LoadCachedQnnContextFromBuffer(char* buffer, uint64_t
686694
}
687695

688696
Status QnnBackendManager::SetupBackend(const logging::Logger& logger, bool load_from_cached_context) {
697+
std::lock_guard<std::mutex> lock(logger_mutex_);
689698
if (backend_setup_completed_) {
690699
LOGS(logger, VERBOSE) << "Backend setup already!";
691700
return Status::OK();
@@ -972,6 +981,7 @@ void QnnBackendManager::ReleaseResources() {
972981
ORT_THROW("Failed to ShutdownBackend.");
973982
}
974983

984+
std::lock_guard<std::mutex> lock(logger_mutex_);
975985
result = TerminateQnnLog();
976986
if (Status::OK() != result) {
977987
ORT_THROW("Failed to TerminateQnnLog.");

onnxruntime/core/providers/qnn/builder/qnn_backend_manager.h

+3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@
1212
#endif
1313

1414
#include <memory>
15+
#include <mutex>
1516
#include <string>
1617
#include <unordered_map>
1718
#include <vector>
19+
1820
#include "HTP/QnnHtpDevice.h"
1921
#include "QnnLog.h"
2022
#include "QnnTypes.h"
@@ -233,6 +235,7 @@ class QnnBackendManager {
233235

234236
private:
235237
const std::string backend_path_;
238+
std::mutex logger_mutex_;
236239
const logging::Logger* logger_ = nullptr;
237240
QNN_INTERFACE_VER_TYPE qnn_interface_ = QNN_INTERFACE_VER_TYPE_INIT;
238241
QNN_SYSTEM_INTERFACE_VER_TYPE qnn_sys_interface_ = QNN_SYSTEM_INTERFACE_VER_TYPE_INIT;

onnxruntime/core/providers/qnn/qnn_execution_provider.cc

+46-44
Original file line numberDiff line numberDiff line change
@@ -258,49 +258,6 @@ QNNExecutionProvider::QNNExecutionProvider(const ProviderOptions& provider_optio
258258
}
259259
}
260260

261-
#ifdef _WIN32
262-
auto& etwRegistrationManager = logging::EtwRegistrationManager::Instance();
263-
// Register callback for ETW capture state (rundown)
264-
callback_ETWSink_provider_ = onnxruntime::logging::EtwRegistrationManager::EtwInternalCallback(
265-
[&etwRegistrationManager, this](
266-
LPCGUID SourceId,
267-
ULONG IsEnabled,
268-
UCHAR Level,
269-
ULONGLONG MatchAnyKeyword,
270-
ULONGLONG MatchAllKeyword,
271-
PEVENT_FILTER_DESCRIPTOR FilterData,
272-
PVOID CallbackContext) {
273-
ORT_UNUSED_PARAMETER(SourceId);
274-
ORT_UNUSED_PARAMETER(MatchAnyKeyword);
275-
ORT_UNUSED_PARAMETER(MatchAllKeyword);
276-
ORT_UNUSED_PARAMETER(FilterData);
277-
ORT_UNUSED_PARAMETER(CallbackContext);
278-
279-
if (IsEnabled == EVENT_CONTROL_CODE_ENABLE_PROVIDER) {
280-
if ((MatchAnyKeyword & static_cast<ULONGLONG>(onnxruntime::logging::ORTTraceLoggingKeyword::Logs)) != 0) {
281-
auto ortETWSeverity = etwRegistrationManager.MapLevelToSeverity();
282-
(void)qnn_backend_manager_->UpdateQnnLogLevel(ortETWSeverity);
283-
}
284-
if ((MatchAnyKeyword & static_cast<ULONGLONG>(onnxruntime::logging::ORTTraceLoggingKeyword::Profiling)) != 0) {
285-
if (Level != 0) {
286-
// Commenting out Dynamic QNN Profiling for now
287-
// There seems to be a crash in 3rd party QC QnnHtp.dll with this.
288-
// Repro Scenario - start ETW tracing prior to session creation.
289-
// Then disable/enable ETW Tracing with the code below uncommented a few times
290-
// auto profiling_level_etw = GetProfilingLevelFromETWLevel(Level);
291-
// (void)qnn_backend_manager_->SetProfilingLevelETW(profiling_level_etw);
292-
}
293-
}
294-
}
295-
296-
if (IsEnabled == EVENT_CONTROL_CODE_DISABLE_PROVIDER) {
297-
// (void)qnn_backend_manager_->SetProfilingLevelETW(qnn::ProfilingLevel::INVALID);
298-
(void)qnn_backend_manager_->ResetQnnLogLevel();
299-
}
300-
});
301-
etwRegistrationManager.RegisterInternalCallback(callback_ETWSink_provider_);
302-
#endif
303-
304261
// In case ETW gets disabled later
305262
auto profiling_level_pos = provider_options_map.find(PROFILING_LEVEL);
306263
if (profiling_level_pos != provider_options_map.end()) {
@@ -440,6 +397,49 @@ QNNExecutionProvider::QNNExecutionProvider(const ProviderOptions& provider_optio
440397
htp_arch,
441398
soc_model,
442399
enable_htp_weight_sharing_);
400+
401+
#ifdef _WIN32
402+
auto& etwRegistrationManager = logging::EtwRegistrationManager::Instance();
403+
// Register callback for ETW capture state (rundown)
404+
callback_ETWSink_provider_ = onnxruntime::logging::EtwRegistrationManager::EtwInternalCallback(
405+
[&etwRegistrationManager, this](
406+
LPCGUID SourceId,
407+
ULONG IsEnabled,
408+
UCHAR Level,
409+
ULONGLONG MatchAnyKeyword,
410+
ULONGLONG MatchAllKeyword,
411+
PEVENT_FILTER_DESCRIPTOR FilterData,
412+
PVOID CallbackContext) {
413+
ORT_UNUSED_PARAMETER(SourceId);
414+
ORT_UNUSED_PARAMETER(MatchAnyKeyword);
415+
ORT_UNUSED_PARAMETER(MatchAllKeyword);
416+
ORT_UNUSED_PARAMETER(FilterData);
417+
ORT_UNUSED_PARAMETER(CallbackContext);
418+
419+
if (IsEnabled == EVENT_CONTROL_CODE_ENABLE_PROVIDER) {
420+
if ((MatchAnyKeyword & static_cast<ULONGLONG>(onnxruntime::logging::ORTTraceLoggingKeyword::Logs)) != 0) {
421+
auto ortETWSeverity = etwRegistrationManager.MapLevelToSeverity();
422+
(void)qnn_backend_manager_->UpdateQnnLogLevel(ortETWSeverity);
423+
}
424+
if ((MatchAnyKeyword & static_cast<ULONGLONG>(onnxruntime::logging::ORTTraceLoggingKeyword::Profiling)) != 0) {
425+
if (Level != 0) {
426+
// Commenting out Dynamic QNN Profiling for now
427+
// There seems to be a crash in 3rd party QC QnnHtp.dll with this.
428+
// Repro Scenario - start ETW tracing prior to session creation.
429+
// Then disable/enable ETW Tracing with the code below uncommented a few times
430+
// auto profiling_level_etw = GetProfilingLevelFromETWLevel(Level);
431+
// (void)qnn_backend_manager_->SetProfilingLevelETW(profiling_level_etw);
432+
}
433+
}
434+
}
435+
436+
if (IsEnabled == EVENT_CONTROL_CODE_DISABLE_PROVIDER) {
437+
// (void)qnn_backend_manager_->SetProfilingLevelETW(qnn::ProfilingLevel::INVALID);
438+
(void)qnn_backend_manager_->ResetQnnLogLevel();
439+
}
440+
});
441+
etwRegistrationManager.RegisterInternalCallback(callback_ETWSink_provider_);
442+
#endif
443443
}
444444

445445
QNNExecutionProvider::~QNNExecutionProvider() {
@@ -453,7 +453,9 @@ QNNExecutionProvider::~QNNExecutionProvider() {
453453

454454
// Unregister the ETW callback
455455
#ifdef _WIN32
456-
logging::EtwRegistrationManager::Instance().UnregisterInternalCallback(callback_ETWSink_provider_);
456+
if (callback_ETWSink_provider_ != nullptr) {
457+
logging::EtwRegistrationManager::Instance().UnregisterInternalCallback(callback_ETWSink_provider_);
458+
}
457459
#endif
458460
}
459461

onnxruntime/core/providers/qnn/qnn_execution_provider.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ class QNNExecutionProvider : public IExecutionProvider {
151151
bool enable_HTP_FP16_precision_ = true;
152152
bool share_ep_contexts_ = false;
153153
#ifdef _WIN32
154-
onnxruntime::logging::EtwRegistrationManager::EtwInternalCallback callback_ETWSink_provider_;
154+
onnxruntime::logging::EtwRegistrationManager::EtwInternalCallback callback_ETWSink_provider_ = nullptr;
155155
#endif
156156
qnn::ModelSettings model_settings_ = {};
157157

onnxruntime/test/onnx/TestCase.cc

+7-1
Original file line numberDiff line numberDiff line change
@@ -1026,7 +1026,13 @@ std::unique_ptr<std::set<BrokenTest>> GetBrokenTests(const std::string& provider
10261026
{"dequantizelinear_int4", "Bug with model input name 'zero_point' not matching node's input name", {}},
10271027
{"dequantizelinear_uint4", "Bug with model input name 'zero_point' not matching node's input name", {}},
10281028
{"quantizelinear_int4", "Bug with model input name 'zero_point' not matching node's input name", {}},
1029-
{"quantizelinear_uint4", "Bug with model input name 'zero_point' not matching node's input name", {}}});
1029+
{"quantizelinear_uint4", "Bug with model input name 'zero_point' not matching node's input name", {}},
1030+
{"qlinearmatmul_2D_int8_float16", "fp16 type ont supported by CPU EP", {}},
1031+
{"qlinearmatmul_2D_int8_float32", "result diff", {}},
1032+
{"qlinearmatmul_2D_uint8_float16", "fp16 type ont supported by CPU EP", {}},
1033+
{"qlinearmatmul_3D_int8_float16", "fp16 type ont supported by CPU EP", {}},
1034+
{"qlinearmatmul_3D_int8_float32", "result diff", {}},
1035+
{"qlinearmatmul_3D_uint8_float16", "fp16 type ont supported by CPU EP", {}}});
10301036

10311037
// Some EPs may fail to pass some specific testcases.
10321038
// For example TenosrRT EP may fail on FLOAT16 related testcases if GPU doesn't support float16.

0 commit comments

Comments
 (0)