From 70c51212806331e7901d4a85347fceddb6af7532 Mon Sep 17 00:00:00 2001 From: Ivan Razumov Date: Tue, 21 Mar 2023 14:01:49 +0100 Subject: [PATCH 1/6] Update to new ONNXRuntime api --- PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc b/PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc index 130e4544585b9..b1dd0bf9f579b 100644 --- a/PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc +++ b/PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc @@ -39,16 +39,15 @@ namespace cms::Ort { for (size_t i = 0; i < num_input_nodes; i++) { // get input node names - std::string input_name(session_->GetInputName(i, allocator)); + std::string input_name(session_->GetInputNameAllocated(i, allocator)); input_node_strings_[i] = input_name; input_node_names_[i] = input_node_strings_[i].c_str(); // get input shapes auto type_info = session_->GetInputTypeInfo(i); auto tensor_info = type_info.GetTensorTypeAndShapeInfo(); - size_t num_dims = tensor_info.GetDimensionsCount(); - input_node_dims_[input_name].resize(num_dims); - tensor_info.GetDimensions(input_node_dims_[input_name].data(), num_dims); + + input_node_dims_[input_name] = tensor_info.GetDimensions(); } size_t num_output_nodes = session_->GetOutputCount(); @@ -58,16 +57,14 @@ namespace cms::Ort { for (size_t i = 0; i < num_output_nodes; i++) { // get output node names - std::string output_name(session_->GetOutputName(i, allocator)); + std::string output_name(session_->GetOutputNameAllocated(i, allocator)); output_node_strings_[i] = output_name; output_node_names_[i] = output_node_strings_[i].c_str(); // get output node types auto type_info = session_->GetOutputTypeInfo(i); auto tensor_info = type_info.GetTensorTypeAndShapeInfo(); - size_t num_dims = tensor_info.GetDimensionsCount(); - output_node_dims_[output_name].resize(num_dims); - tensor_info.GetDimensions(output_node_dims_[output_name].data(), num_dims); + output_node_dims_[output_name] = tensor_info.GetDimensions(); // the 0th dim depends on the batch size output_node_dims_[output_name].at(0) = -1; From a13518861953be320012279e676d993045b11c5b Mon Sep 17 00:00:00 2001 From: Ivan Razumov Date: Tue, 21 Mar 2023 14:06:04 +0100 Subject: [PATCH 2/6] Fix --- PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc b/PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc index b1dd0bf9f579b..f1beb60f526c4 100644 --- a/PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc +++ b/PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc @@ -47,7 +47,7 @@ namespace cms::Ort { auto type_info = session_->GetInputTypeInfo(i); auto tensor_info = type_info.GetTensorTypeAndShapeInfo(); - input_node_dims_[input_name] = tensor_info.GetDimensions(); + input_node_dims_[input_name] = tensor_info.GetShape(); } size_t num_output_nodes = session_->GetOutputCount(); @@ -64,7 +64,7 @@ namespace cms::Ort { // get output node types auto type_info = session_->GetOutputTypeInfo(i); auto tensor_info = type_info.GetTensorTypeAndShapeInfo(); - output_node_dims_[output_name] = tensor_info.GetDimensions(); + output_node_dims_[output_name] = tensor_info.GetShape(); // the 0th dim depends on the batch size output_node_dims_[output_name].at(0) = -1; From cac6559857723ee58014fc86de29ccf5b5657157 Mon Sep 17 00:00:00 2001 From: iarspider Date: Tue, 21 Mar 2023 15:52:23 +0100 Subject: [PATCH 3/6] Update ONNXRuntime.cc --- PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc b/PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc index f1beb60f526c4..ab062c10e7353 100644 --- a/PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc +++ b/PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc @@ -39,7 +39,7 @@ namespace cms::Ort { for (size_t i = 0; i < num_input_nodes; i++) { // get input node names - std::string input_name(session_->GetInputNameAllocated(i, allocator)); + std::string input_name(session_->GetInputNameAllocated(i, allocator).get()); input_node_strings_[i] = input_name; input_node_names_[i] = input_node_strings_[i].c_str(); @@ -57,7 +57,7 @@ namespace cms::Ort { for (size_t i = 0; i < num_output_nodes; i++) { // get output node names - std::string output_name(session_->GetOutputNameAllocated(i, allocator)); + std::string output_name(session_->GetOutputNameAllocated(i, allocator).get()); output_node_strings_[i] = output_name; output_node_names_[i] = output_node_strings_[i].c_str(); From e4a7fdfa6fe5a27bf46f9585d49e3a5fb6e29473 Mon Sep 17 00:00:00 2001 From: Ivan Razumov Date: Thu, 23 Mar 2023 10:36:46 +0100 Subject: [PATCH 4/6] One more fix --- DQM/EcalMonitorClient/src/MLClient.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DQM/EcalMonitorClient/src/MLClient.cc b/DQM/EcalMonitorClient/src/MLClient.cc index 7154f3859e773..fb4b6ae67c1c3 100644 --- a/DQM/EcalMonitorClient/src/MLClient.cc +++ b/DQM/EcalMonitorClient/src/MLClient.cc @@ -164,14 +164,14 @@ namespace ecaldqm { Ort::AllocatorWithDefaultOptions allocator; - const char* inputName = session.GetInputName(0, allocator); + const char* inputName = session.GetInputNameAllocated(0, allocator).get(); Ort::TypeInfo inputTypeInfo = session.GetInputTypeInfo(0); auto inputTensorInfo = inputTypeInfo.GetTensorTypeAndShapeInfo(); std::vector inputDims = inputTensorInfo.GetShape(); - const char* outputName = session.GetOutputName(0, allocator); + const char* outputName = session.GetOutputNameAllocated(0, allocator).get(); Ort::TypeInfo outputTypeInfo = session.GetOutputTypeInfo(0); auto outputTensorInfo = outputTypeInfo.GetTensorTypeAndShapeInfo(); From 69e1a02b82d56be1b0504bd61dfb7691806ddc3a Mon Sep 17 00:00:00 2001 From: Ivan Razumov Date: Fri, 31 Mar 2023 15:54:49 +0200 Subject: [PATCH 5/6] Copy input and output names --- DQM/EcalMonitorClient/src/MLClient.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/DQM/EcalMonitorClient/src/MLClient.cc b/DQM/EcalMonitorClient/src/MLClient.cc index fb4b6ae67c1c3..bbf188b09ee7a 100644 --- a/DQM/EcalMonitorClient/src/MLClient.cc +++ b/DQM/EcalMonitorClient/src/MLClient.cc @@ -12,6 +12,8 @@ #include "DQM/EcalCommon/interface/MESetNonObject.h" +#include + using namespace cms::Ort; namespace ecaldqm { @@ -164,14 +166,15 @@ namespace ecaldqm { Ort::AllocatorWithDefaultOptions allocator; - const char* inputName = session.GetInputNameAllocated(0, allocator).get(); + // Strings returned by session.GetInputNameAllocated are temporary, need to copy them before they are deallocated + std::string inputName {session.GetInputNameAllocated(0, allocator).get()}; Ort::TypeInfo inputTypeInfo = session.GetInputTypeInfo(0); auto inputTensorInfo = inputTypeInfo.GetTensorTypeAndShapeInfo(); std::vector inputDims = inputTensorInfo.GetShape(); - const char* outputName = session.GetOutputNameAllocated(0, allocator).get(); + std::string outputName {session.GetOutputNameAllocated(0, allocator).get()}; Ort::TypeInfo outputTypeInfo = session.GetOutputTypeInfo(0); auto outputTensorInfo = outputTypeInfo.GetTensorTypeAndShapeInfo(); @@ -181,8 +184,8 @@ namespace ecaldqm { size_t TensorSize = nEtaTowersPad * nPhiTowers; std::vector ebRecoOccMap1dPad(TensorSize); //To store the output reconstructed occupancy - std::vector inputNames{inputName}; - std::vector outputNames{outputName}; + std::vector inputNames{inputName.c_str()}; + std::vector outputNames{outputName.c_str()}; std::vector inputTensors; std::vector outputTensors; From 8f038cc0448139774665cc6b7f29f08c062bd643 Mon Sep 17 00:00:00 2001 From: Ivan Razumov Date: Mon, 3 Apr 2023 10:53:26 +0200 Subject: [PATCH 6/6] Code-format --- DQM/EcalMonitorClient/src/MLClient.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DQM/EcalMonitorClient/src/MLClient.cc b/DQM/EcalMonitorClient/src/MLClient.cc index bbf188b09ee7a..6b55e7ce5bf1c 100644 --- a/DQM/EcalMonitorClient/src/MLClient.cc +++ b/DQM/EcalMonitorClient/src/MLClient.cc @@ -167,14 +167,14 @@ namespace ecaldqm { Ort::AllocatorWithDefaultOptions allocator; // Strings returned by session.GetInputNameAllocated are temporary, need to copy them before they are deallocated - std::string inputName {session.GetInputNameAllocated(0, allocator).get()}; + std::string inputName{session.GetInputNameAllocated(0, allocator).get()}; Ort::TypeInfo inputTypeInfo = session.GetInputTypeInfo(0); auto inputTensorInfo = inputTypeInfo.GetTensorTypeAndShapeInfo(); std::vector inputDims = inputTensorInfo.GetShape(); - std::string outputName {session.GetOutputNameAllocated(0, allocator).get()}; + std::string outputName{session.GetOutputNameAllocated(0, allocator).get()}; Ort::TypeInfo outputTypeInfo = session.GetOutputTypeInfo(0); auto outputTensorInfo = outputTypeInfo.GetTensorTypeAndShapeInfo();