From dd99e34d66cd44988c48b94644ea677ba7c40498 Mon Sep 17 00:00:00 2001 From: Michael Tyler <67695629+MichaelTylerArm@users.noreply.github.com> Date: Thu, 14 Nov 2024 05:44:50 +0000 Subject: [PATCH] Enable ConvReplaceWithQLinear when using ACL (#22823) ### Description Enable the ConvReplaceWithQLinear graph optimization when using the ACL execution provider. ### Motivation and Context Fixes an issue where quantized Conv nodes followed by ReLU don't get converted to QLinearConv, so ACL sees the weights as mutable and therefore cannot run the Conv node. Signed-off-by: Michael Tyler --- .../selectors_actions/qdq_selector_action_transformer.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 2738c3ab02..2f98711771 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 @@ -236,7 +236,7 @@ void ConvQDQRules(SelectorActionRegistry& qdq_selector_action_registry, bool is_ #if !defined(ORT_MINIMAL_BUILD) // TODO: Enable 16-bit types in selector when QLinearConv supports 16-bit. - std::vector providers = {kCpuExecutionProvider, kDmlExecutionProvider}; + std::vector providers = {kCpuExecutionProvider, kDmlExecutionProvider, kAclExecutionProvider}; std::unique_ptr selector = std::make_unique(is_int8_allowed, false, false,