From f4ad940ff3c69e139c3baf91517dfd458e166fb1 Mon Sep 17 00:00:00 2001 From: Jeff Bloomfield Date: Wed, 3 Jan 2024 18:37:14 -0800 Subject: [PATCH] Disable MatMul QDQ selector on DML EP until MatMulIntegerToFloat is re-enabled --- .../selectors_actions/qdq_selector_action_transformer.cc | 3 ++- .../qdq_transformer/selectors_actions/qdq_selectors.h | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/onnxruntime/core/optimizer/qdq_transformer/selectors_actions/qdq_selector_action_transformer.cc b/onnxruntime/core/optimizer/qdq_transformer/selectors_actions/qdq_selector_action_transformer.cc index 29f7575b2a..244bd8b153 100644 --- a/onnxruntime/core/optimizer/qdq_transformer/selectors_actions/qdq_selector_action_transformer.cc +++ b/onnxruntime/core/optimizer/qdq_transformer/selectors_actions/qdq_selector_action_transformer.cc @@ -216,7 +216,8 @@ void MatMulQDQRules(SelectorActionRegistry& qdq_selector_action_registry, bool i #if !defined(ORT_MINIMAL_BUILD) // TODO: Enable 16-bit types in selector when QLinearMatMul and MatMulInteger support 16-bit. - std::unique_ptr selector = std::make_unique(is_int8_allowed); + std::vector providers = {kCpuExecutionProvider}; + std::unique_ptr selector = std::make_unique(providers, is_int8_allowed); qdq_selector_action_registry.RegisterSelectorAndAction(action_name, {{"MatMul", {}}}, std::move(selector), diff --git a/onnxruntime/core/optimizer/qdq_transformer/selectors_actions/qdq_selectors.h b/onnxruntime/core/optimizer/qdq_transformer/selectors_actions/qdq_selectors.h index 5ce2a97026..deee6e7f25 100644 --- a/onnxruntime/core/optimizer/qdq_transformer/selectors_actions/qdq_selectors.h +++ b/onnxruntime/core/optimizer/qdq_transformer/selectors_actions/qdq_selectors.h @@ -337,9 +337,10 @@ class WhereSelector : public BaseSelector { // 2 DQ nodes for input -> node -> optional Q if QLinearMatMul, MatMulIntegerToFloat if not class MatMulSelector : public BaseSelector { public: - MatMulSelector(bool int8_allowed, bool allow_16bit = false) + MatMulSelector(gsl::span compatible_providers, bool int8_allowed, bool allow_16bit = false) : BaseSelector(std::make_unique(int8_allowed, /*matmulintegertofloat_allowed*/ true, - allow_16bit)) {} + allow_16bit), + compatible_providers) {} }; // Input: DQ nodes for A, B and optional C