From d8a7a2883281e7b081a77e7727ff10a9bbc93496 Mon Sep 17 00:00:00 2001 From: Yuduo Wu Date: Thu, 28 Aug 2025 15:39:27 -0700 Subject: [PATCH] [QNN EP] Minor fix weight name missing when not valid QDQ node group --- .../qnn/builder/opbuilder/conv_op_builder.cc | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/onnxruntime/core/providers/qnn/builder/opbuilder/conv_op_builder.cc b/onnxruntime/core/providers/qnn/builder/opbuilder/conv_op_builder.cc index 541ca5ca7ab14..a994c936970f6 100644 --- a/onnxruntime/core/providers/qnn/builder/opbuilder/conv_op_builder.cc +++ b/onnxruntime/core/providers/qnn/builder/opbuilder/conv_op_builder.cc @@ -245,6 +245,12 @@ Status ConvOpBuilder::ProcessConv2D3DInputs(QnnModelWrapper& qnn_model_wrapper, bool is_graph_input = qnn_model_wrapper.IsGraphInput(input1_name); LOGS(logger, VERBOSE) << "Add HWCN Transpose node after input: " << input1_name; + if (!qnn_model_wrapper.IsQnnTensorWrapperExist(input1_name)) { + QnnTensorWrapper weight_tensor_wrapper; + ORT_RETURN_IF_ERROR(qnn_model_wrapper.MakeTensorWrapper(inputs[1], weight_tensor_wrapper)); + ORT_RETURN_IF_NOT(qnn_model_wrapper.AddTensorWrapper(std::move(weight_tensor_wrapper)), "Failed to add weight tensor."); + } + if (conv_type == OnnxConvType::kConv) { ORT_RETURN_IF_ERROR(qnn_model_wrapper.AddNchwToHwcnTranspose(node_unit.Index(), input1_name, @@ -425,7 +431,7 @@ Status ConvOpBuilder::ProcessConv1DInputs(QnnModelWrapper& qnn_model_wrapper, // // Input 1: weight - // We need to first reshape the weight inorder to handle 1D convolutions with the Conv2d operator. + // We need to first reshape the weight in order to handle 1D convolutions with the Conv2d operator. // Next, we have to transpose the weight because ORT layout transformations do not change the weight layout. // { @@ -511,6 +517,12 @@ Status ConvOpBuilder::ProcessConv1DInputs(QnnModelWrapper& qnn_model_wrapper, ORT_RETURN_IF(input_info.quant_param.IsPerChannel(), "Non-constant Conv inputs only support per-tensor quantization"); + if (!qnn_model_wrapper.IsQnnTensorWrapperExist(input1_name)) { + QnnTensorWrapper weight_tensor_wrapper; + ORT_RETURN_IF_ERROR(qnn_model_wrapper.MakeTensorWrapper(inputs[1], weight_tensor_wrapper)); + ORT_RETURN_IF_NOT(qnn_model_wrapper.AddTensorWrapper(std::move(weight_tensor_wrapper)), "Failed to add weight tensor."); + } + bool is_graph_input = qnn_model_wrapper.IsGraphInput(input1_name); LOGS(logger, VERBOSE) << "Adding Reshape (to 2D) and HWCN Transpose node after input: " << input1_name; ORT_RETURN_IF_ERROR(qnn_model_wrapper.AddReshapeNode(input1_name,