diff --git a/DQM/EcalMonitorClient/src/MLClient.cc b/DQM/EcalMonitorClient/src/MLClient.cc index 7154f3859e773..6b55e7ce5bf1c 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.GetInputName(0, allocator); + // 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.GetOutputName(0, allocator); + 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; diff --git a/PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc b/PhysicsTools/ONNXRuntime/src/ONNXRuntime.cc index 130e4544585b9..ab062c10e7353 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).get()); 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.GetShape(); } 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).get()); 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.GetShape(); // the 0th dim depends on the batch size output_node_dims_[output_name].at(0) = -1;