@@ -98,7 +98,7 @@ void OrtModel::initOptions(std::unordered_map<std::string, std::string> optionsM
9898
9999void OrtModel::initEnvironment ()
100100{
101- if (allocateDeviceMemory) {
101+ if (allocateDeviceMemory) {
102102 memoryOnDevice (deviceId);
103103 }
104104 pImplOrt->env = std::make_shared<Ort::Env>(
@@ -181,7 +181,8 @@ std::vector<O> OrtModel::v2v(std::vector<I>& input, bool clearInput)
181181 }
182182}
183183
184- void OrtModel::setIO () {
184+ void OrtModel::setIO ()
185+ {
185186 for (size_t i = 0 ; i < (pImplOrt->session )->GetInputCount (); ++i) {
186187 mInputNames .push_back ((pImplOrt->session )->GetInputNameAllocated (i, pImplOrt->allocator ).get ());
187188 }
@@ -208,7 +209,7 @@ void OrtModel::setIO() {
208209 outputSizePerNode.resize (mOutputShapes .size (), 1 );
209210 mInputsTotal = 1 ;
210211 for (size_t i = 0 ; i < mInputShapes .size (); ++i) {
211- if (mInputShapes [i].size () > 0 ) {
212+ if (mInputShapes [i].size () > 0 ) {
212213 for (size_t j = 1 ; j < mInputShapes [i].size (); ++j) {
213214 if (mInputShapes [i][j] > 0 ) {
214215 mInputsTotal *= mInputShapes [i][j];
@@ -219,7 +220,7 @@ void OrtModel::setIO() {
219220 }
220221 mOutputsTotal = 1 ;
221222 for (size_t i = 0 ; i < mOutputShapes .size (); ++i) {
222- if (mOutputShapes [i].size () > 0 ) {
223+ if (mOutputShapes [i].size () > 0 ) {
223224 for (size_t j = 1 ; j < mOutputShapes [i].size (); ++j) {
224225 if (mOutputShapes [i][j] > 0 ) {
225226 mOutputsTotal *= mOutputShapes [i][j];
@@ -236,8 +237,7 @@ std::vector<O> OrtModel::inference(std::vector<I>& input)
236237{
237238 std::vector<int64_t > inputShape = mInputShapes [0 ];
238239 inputShape[0 ] = input.size ();
239- for (size_t i = 1 ; i < mInputShapes [0 ].size (); ++i)
240- {
240+ for (size_t i = 1 ; i < mInputShapes [0 ].size (); ++i) {
241241 inputShape[0 ] /= mInputShapes [0 ][i];
242242 }
243243 std::vector<Ort::Value> inputTensor;
@@ -290,28 +290,29 @@ template void OrtModel::inference<float, OrtDataType::Float16_t>(float*, size_t,
290290template void OrtModel::inference<float , float >(float *, size_t , float *);
291291
292292template <class I , class O >
293- void OrtModel::inference (I** input, size_t input_size, O* output) {
293+ void OrtModel::inference (I** input, size_t input_size, O* output)
294+ {
294295 std::vector<Ort::Value> inputTensors (inputShapesCopy.size ());
295296
296297 for (size_t i = 0 ; i < inputShapesCopy.size (); ++i) {
297298
298- inputShapesCopy[i][0 ] = input_size; // batch-size
299+ inputShapesCopy[i][0 ] = input_size; // batch-size
299300 outputShapesCopy[i][0 ] = input_size; // batch-size
300301
301302 if constexpr (std::is_same_v<I, OrtDataType::Float16_t>) {
302303 inputTensors[i] = Ort::Value::CreateTensor<Ort::Float16_t>(
303- pImplOrt->memoryInfo ,
304- reinterpret_cast <Ort::Float16_t*>(input[i]),
305- inputSizePerNode[i]* input_size,
306- inputShapesCopy[i].data (),
307- inputShapesCopy[i].size ());
304+ pImplOrt->memoryInfo ,
305+ reinterpret_cast <Ort::Float16_t*>(input[i]),
306+ inputSizePerNode[i] * input_size,
307+ inputShapesCopy[i].data (),
308+ inputShapesCopy[i].size ());
308309 } else {
309310 inputTensors[i] = Ort::Value::CreateTensor<I>(
310- pImplOrt->memoryInfo ,
311- input[i],
312- inputSizePerNode[i]* input_size,
313- inputShapesCopy[i].data (),
314- inputShapesCopy[i].size ());
311+ pImplOrt->memoryInfo ,
312+ input[i],
313+ inputSizePerNode[i] * input_size,
314+ inputShapesCopy[i].data (),
315+ inputShapesCopy[i].size ());
315316 }
316317 }
317318
@@ -320,14 +321,14 @@ void OrtModel::inference(I** input, size_t input_size, O* output) {
320321 outputTensor = Ort::Value::CreateTensor<Ort::Float16_t>(
321322 pImplOrt->memoryInfo ,
322323 reinterpret_cast <Ort::Float16_t*>(output),
323- outputSizePerNode[0 ]* input_size, // assumes that there is only one output node
324+ outputSizePerNode[0 ] * input_size, // assumes that there is only one output node
324325 outputShapesCopy[0 ].data (),
325326 outputShapesCopy[0 ].size ());
326327 } else {
327328 outputTensor = Ort::Value::CreateTensor<O>(
328329 pImplOrt->memoryInfo ,
329330 output,
330- outputSizePerNode[0 ]* input_size, // assumes that there is only one output node
331+ outputSizePerNode[0 ] * input_size, // assumes that there is only one output node
331332 outputShapesCopy[0 ].data (),
332333 outputShapesCopy[0 ].size ());
333334 }
@@ -340,8 +341,7 @@ void OrtModel::inference(I** input, size_t input_size, O* output) {
340341 inputNamesChar.size (),
341342 outputNamesChar.data (),
342343 &outputTensor,
343- outputNamesChar.size ()
344- );
344+ outputNamesChar.size ());
345345}
346346
347347template void OrtModel::inference<OrtDataType::Float16_t, OrtDataType::Float16_t>(OrtDataType::Float16_t**, size_t , OrtDataType::Float16_t*);
@@ -352,47 +352,47 @@ template void OrtModel::inference<float, float>(float**, size_t, float*);
352352template <class I , class O >
353353std::vector<O> OrtModel::inference (std::vector<std::vector<I>>& inputs)
354354{
355- std::vector<Ort::Value> input_tensors;
355+ std::vector<Ort::Value> input_tensors;
356356
357- for (size_t i = 0 ; i < inputs.size (); ++i) {
357+ for (size_t i = 0 ; i < inputs.size (); ++i) {
358358
359- inputShapesCopy[i][0 ] = inputs[i].size () / inputSizePerNode[i]; // batch-size
359+ inputShapesCopy[i][0 ] = inputs[i].size () / inputSizePerNode[i]; // batch-size
360360
361- if constexpr (std::is_same_v<I, OrtDataType::Float16_t>) {
362- input_tensors.emplace_back (
363- Ort::Value::CreateTensor<Ort::Float16_t>(
364- pImplOrt->memoryInfo ,
365- reinterpret_cast <Ort::Float16_t*>(inputs[i].data ()),
366- inputSizePerNode[i]*inputShapesCopy[i][0 ],
367- inputShapesCopy[i].data (),
368- inputShapesCopy[i].size ()));
369- } else {
370- input_tensors.emplace_back (
371- Ort::Value::CreateTensor<I>(
372- pImplOrt->memoryInfo ,
373- inputs[i].data (),
374- inputSizePerNode[i]*inputShapesCopy[i][0 ],
375- inputShapesCopy[i].data (),
376- inputShapesCopy[i].size ()));
377- }
361+ if constexpr (std::is_same_v<I, OrtDataType::Float16_t>) {
362+ input_tensors.emplace_back (
363+ Ort::Value::CreateTensor<Ort::Float16_t>(
364+ pImplOrt->memoryInfo ,
365+ reinterpret_cast <Ort::Float16_t*>(inputs[i].data ()),
366+ inputSizePerNode[i] * inputShapesCopy[i][0 ],
367+ inputShapesCopy[i].data (),
368+ inputShapesCopy[i].size ()));
369+ } else {
370+ input_tensors.emplace_back (
371+ Ort::Value::CreateTensor<I>(
372+ pImplOrt->memoryInfo ,
373+ inputs[i].data (),
374+ inputSizePerNode[i] * inputShapesCopy[i][0 ],
375+ inputShapesCopy[i].data (),
376+ inputShapesCopy[i].size ()));
378377 }
378+ }
379+
380+ int32_t totalOutputSize = mOutputsTotal * inputShapesCopy[0 ][0 ];
381+
382+ // === Run inference ===
383+ auto output_tensors = pImplOrt->session ->Run (
384+ pImplOrt->runOptions ,
385+ inputNamesChar.data (),
386+ input_tensors.data (),
387+ input_tensors.size (),
388+ outputNamesChar.data (),
389+ outputNamesChar.size ());
379390
380- int32_t totalOutputSize = mOutputsTotal *inputShapesCopy[0 ][0 ];
381-
382- // === Run inference ===
383- auto output_tensors = pImplOrt->session ->Run (
384- pImplOrt->runOptions ,
385- inputNamesChar.data (),
386- input_tensors.data (),
387- input_tensors.size (),
388- outputNamesChar.data (),
389- outputNamesChar.size ());
390-
391- // === Extract output values ===
392- O* output_data = output_tensors[0 ].template GetTensorMutableData <O>();
393- std::vector<O> output_vec (output_data, output_data + totalOutputSize);
394- output_tensors.clear ();
395- return output_vec;
391+ // === Extract output values ===
392+ O* output_data = output_tensors[0 ].template GetTensorMutableData <O>();
393+ std::vector<O> output_vec (output_data, output_data + totalOutputSize);
394+ output_tensors.clear ();
395+ return output_vec;
396396}
397397
398398template std::vector<float > OrtModel::inference<float , float >(std::vector<std::vector<float >>&);
0 commit comments