@@ -99,7 +99,7 @@ void OrtModel::initOptions(std::unordered_map<std::string, std::string> optionsM
9999
100100void OrtModel::initEnvironment ()
101101{
102- if (allocateDeviceMemory) {
102+ if (allocateDeviceMemory) {
103103 memoryOnDevice (deviceId);
104104 }
105105 pImplOrt->env = std::make_shared<Ort::Env>(
@@ -184,7 +184,8 @@ std::vector<O> OrtModel::v2v(std::vector<I>& input, bool clearInput)
184184 }
185185}
186186
187- void OrtModel::setIO () {
187+ void OrtModel::setIO ()
188+ {
188189 for (size_t i = 0 ; i < (pImplOrt->session )->GetInputCount (); ++i) {
189190 mInputNames .push_back ((pImplOrt->session )->GetInputNameAllocated (i, pImplOrt->allocator ).get ());
190191 }
@@ -211,7 +212,7 @@ void OrtModel::setIO() {
211212 outputSizePerNode.resize (mOutputShapes .size (), 1 );
212213 mInputsTotal = 1 ;
213214 for (size_t i = 0 ; i < mInputShapes .size (); ++i) {
214- if (mInputShapes [i].size () > 0 ) {
215+ if (mInputShapes [i].size () > 0 ) {
215216 for (size_t j = 1 ; j < mInputShapes [i].size (); ++j) {
216217 if (mInputShapes [i][j] > 0 ) {
217218 mInputsTotal *= mInputShapes [i][j];
@@ -222,7 +223,7 @@ void OrtModel::setIO() {
222223 }
223224 mOutputsTotal = 1 ;
224225 for (size_t i = 0 ; i < mOutputShapes .size (); ++i) {
225- if (mOutputShapes [i].size () > 0 ) {
226+ if (mOutputShapes [i].size () > 0 ) {
226227 for (size_t j = 1 ; j < mOutputShapes [i].size (); ++j) {
227228 if (mOutputShapes [i][j] > 0 ) {
228229 mOutputsTotal *= mOutputShapes [i][j];
@@ -239,8 +240,7 @@ std::vector<O> OrtModel::inference(std::vector<I>& input)
239240{
240241 std::vector<int64_t > inputShape = mInputShapes [0 ];
241242 inputShape[0 ] = input.size ();
242- for (size_t i = 1 ; i < mInputShapes [0 ].size (); ++i)
243- {
243+ for (size_t i = 1 ; i < mInputShapes [0 ].size (); ++i) {
244244 inputShape[0 ] /= mInputShapes [0 ][i];
245245 }
246246 std::vector<Ort::Value> inputTensor;
@@ -295,28 +295,29 @@ template void OrtModel::inference<float, OrtDataType::Float16_t>(float*, size_t,
295295template void OrtModel::inference<float , float >(float *, size_t , float *);
296296
297297template <class I , class O >
298- void OrtModel::inference (I** input, size_t input_size, O* output) {
298+ void OrtModel::inference (I** input, size_t input_size, O* output)
299+ {
299300 std::vector<Ort::Value> inputTensors (inputShapesCopy.size ());
300301
301302 for (size_t i = 0 ; i < inputShapesCopy.size (); ++i) {
302303
303- inputShapesCopy[i][0 ] = input_size; // batch-size
304+ inputShapesCopy[i][0 ] = input_size; // batch-size
304305 outputShapesCopy[i][0 ] = input_size; // batch-size
305306
306307 if constexpr (std::is_same_v<I, OrtDataType::Float16_t>) {
307308 inputTensors[i] = Ort::Value::CreateTensor<Ort::Float16_t>(
308- pImplOrt->memoryInfo ,
309- reinterpret_cast <Ort::Float16_t*>(input[i]),
310- inputSizePerNode[i]* input_size,
311- inputShapesCopy[i].data (),
312- inputShapesCopy[i].size ());
309+ pImplOrt->memoryInfo ,
310+ reinterpret_cast <Ort::Float16_t*>(input[i]),
311+ inputSizePerNode[i] * input_size,
312+ inputShapesCopy[i].data (),
313+ inputShapesCopy[i].size ());
313314 } else {
314315 inputTensors[i] = Ort::Value::CreateTensor<I>(
315- pImplOrt->memoryInfo ,
316- input[i],
317- inputSizePerNode[i]* input_size,
318- inputShapesCopy[i].data (),
319- inputShapesCopy[i].size ());
316+ pImplOrt->memoryInfo ,
317+ input[i],
318+ inputSizePerNode[i] * input_size,
319+ inputShapesCopy[i].data (),
320+ inputShapesCopy[i].size ());
320321 }
321322 }
322323
@@ -325,14 +326,14 @@ void OrtModel::inference(I** input, size_t input_size, O* output) {
325326 outputTensor = Ort::Value::CreateTensor<Ort::Float16_t>(
326327 pImplOrt->memoryInfo ,
327328 reinterpret_cast <Ort::Float16_t*>(output),
328- outputSizePerNode[0 ]* input_size, // assumes that there is only one output node
329+ outputSizePerNode[0 ] * input_size, // assumes that there is only one output node
329330 outputShapesCopy[0 ].data (),
330331 outputShapesCopy[0 ].size ());
331332 } else {
332333 outputTensor = Ort::Value::CreateTensor<O>(
333334 pImplOrt->memoryInfo ,
334335 output,
335- outputSizePerNode[0 ]* input_size, // assumes that there is only one output node
336+ outputSizePerNode[0 ] * input_size, // assumes that there is only one output node
336337 outputShapesCopy[0 ].data (),
337338 outputShapesCopy[0 ].size ());
338339 }
@@ -345,8 +346,7 @@ void OrtModel::inference(I** input, size_t input_size, O* output) {
345346 inputNamesChar.size (),
346347 outputNamesChar.data (),
347348 &outputTensor,
348- outputNamesChar.size ()
349- );
349+ outputNamesChar.size ());
350350}
351351
352352template void OrtModel::inference<OrtDataType::Float16_t, OrtDataType::Float16_t>(OrtDataType::Float16_t**, size_t , OrtDataType::Float16_t*);
@@ -357,47 +357,47 @@ template void OrtModel::inference<float, float>(float**, size_t, float*);
357357template <class I , class O >
358358std::vector<O> OrtModel::inference (std::vector<std::vector<I>>& inputs)
359359{
360- std::vector<Ort::Value> input_tensors;
360+ std::vector<Ort::Value> input_tensors;
361361
362- for (size_t i = 0 ; i < inputs.size (); ++i) {
362+ for (size_t i = 0 ; i < inputs.size (); ++i) {
363363
364- inputShapesCopy[i][0 ] = inputs[i].size () / inputSizePerNode[i]; // batch-size
364+ inputShapesCopy[i][0 ] = inputs[i].size () / inputSizePerNode[i]; // batch-size
365365
366- if constexpr (std::is_same_v<I, OrtDataType::Float16_t>) {
367- input_tensors.emplace_back (
368- Ort::Value::CreateTensor<Ort::Float16_t>(
369- pImplOrt->memoryInfo ,
370- reinterpret_cast <Ort::Float16_t*>(inputs[i].data ()),
371- inputSizePerNode[i]*inputShapesCopy[i][0 ],
372- inputShapesCopy[i].data (),
373- inputShapesCopy[i].size ()));
374- } else {
375- input_tensors.emplace_back (
376- Ort::Value::CreateTensor<I>(
377- pImplOrt->memoryInfo ,
378- inputs[i].data (),
379- inputSizePerNode[i]*inputShapesCopy[i][0 ],
380- inputShapesCopy[i].data (),
381- inputShapesCopy[i].size ()));
382- }
366+ if constexpr (std::is_same_v<I, OrtDataType::Float16_t>) {
367+ input_tensors.emplace_back (
368+ Ort::Value::CreateTensor<Ort::Float16_t>(
369+ pImplOrt->memoryInfo ,
370+ reinterpret_cast <Ort::Float16_t*>(inputs[i].data ()),
371+ inputSizePerNode[i] * inputShapesCopy[i][0 ],
372+ inputShapesCopy[i].data (),
373+ inputShapesCopy[i].size ()));
374+ } else {
375+ input_tensors.emplace_back (
376+ Ort::Value::CreateTensor<I>(
377+ pImplOrt->memoryInfo ,
378+ inputs[i].data (),
379+ inputSizePerNode[i] * inputShapesCopy[i][0 ],
380+ inputShapesCopy[i].data (),
381+ inputShapesCopy[i].size ()));
383382 }
383+ }
384+
385+ int32_t totalOutputSize = mOutputsTotal * inputShapesCopy[0 ][0 ];
386+
387+ // === Run inference ===
388+ auto output_tensors = pImplOrt->session ->Run (
389+ pImplOrt->runOptions ,
390+ inputNamesChar.data (),
391+ input_tensors.data (),
392+ input_tensors.size (),
393+ outputNamesChar.data (),
394+ outputNamesChar.size ());
384395
385- int32_t totalOutputSize = mOutputsTotal *inputShapesCopy[0 ][0 ];
386-
387- // === Run inference ===
388- auto output_tensors = pImplOrt->session ->Run (
389- pImplOrt->runOptions ,
390- inputNamesChar.data (),
391- input_tensors.data (),
392- input_tensors.size (),
393- outputNamesChar.data (),
394- outputNamesChar.size ());
395-
396- // === Extract output values ===
397- O* output_data = output_tensors[0 ].template GetTensorMutableData <O>();
398- std::vector<O> output_vec (output_data, output_data + totalOutputSize);
399- output_tensors.clear ();
400- return output_vec;
396+ // === Extract output values ===
397+ O* output_data = output_tensors[0 ].template GetTensorMutableData <O>();
398+ std::vector<O> output_vec (output_data, output_data + totalOutputSize);
399+ output_tensors.clear ();
400+ return output_vec;
401401}
402402
403403template std::vector<float > OrtModel::inference<float , float >(std::vector<std::vector<float >>&);
0 commit comments