[Test] Modify utils to handle request's result
authorJiho Chu <jiho.chu@samsung.com>
Thu, 1 Dec 2022 08:18:42 +0000 (17:18 +0900)
committer문지중/NPU Lab(SR)/삼성전자 <jijoong.moon@samsung.com>
Wed, 14 Dec 2022 08:36:33 +0000 (17:36 +0900)
Test util class can handle request's result.
It prints out the result to stdout when the request is over.

Signed-off-by: Jiho Chu <jiho.chu@samsung.com>
tests/utils/ne_test_utils.cc
tests/utils/ne_test_utils.h

index 126adc0d9127cb371333a013653827fe8603084c..c6a2d3c2a3ea5f261f2fc66962a95efa46114081 100644 (file)
@@ -483,7 +483,15 @@ UtilTrinity::wait () {
 void
 UtilTrinity::callbackVerify (output_buffers *output, int req_id, void *data) {
   bool success = true;
-  UtilModel *model = static_cast<UtilModel *> (data);
+  CallbackData *cb_data = static_cast<CallbackData *> (data);
+
+  UtilModel *model = static_cast<UtilModel *> (cb_data->data);
+  UtilTrinity *util = cb_data->instance;
+
+  int res = getNPU_requestResult (util->getDeviceHandle (), req_id);
+  std::cout << "Test Result: " << std::to_string (res) << std::endl;
+
+  delete cb_data;
 
   for (uint32_t idx = 0; idx < output->num_buffers; idx++) {
     if (model != nullptr) {
@@ -519,7 +527,15 @@ UtilTrinity::callbackVerify (output_buffers *output, int req_id, void *data) {
 /** @brief callback without verification */
 void
 UtilTrinity::callback (output_buffers *output, int req_id, void *data) {
-  UtilModel *model = static_cast<UtilModel *> (data);
+  CallbackData *cb_data = static_cast<CallbackData *> (data);
+
+  UtilModel *model = static_cast<UtilModel *> (cb_data->data);
+  UtilTrinity *util = cb_data->instance;
+
+  int res = getNPU_requestResult (util->getDeviceHandle (), req_id);
+  std::cout << "Test Result: " << std::to_string (res) << std::endl;
+
+  delete cb_data;
 
   if (model == nullptr) {
     for (uint32_t idx = 0; idx < output->num_buffers; idx++) free (output->bufs[idx].addr);
@@ -535,7 +551,8 @@ UtilTrinity::callback (output_buffers *output, int req_id, void *data) {
 int
 UtilTrinity::run_each (UtilModel *model, bool sync) {
   int status = -EINVAL;
-  void *cb_data = nullptr;
+  CallbackData *cb_data = new CallbackData ();
+  cb_data->instance = this;
   npuOutputNotify cb;
 
   if (need_model_ && model == nullptr)
@@ -544,7 +561,7 @@ UtilTrinity::run_each (UtilModel *model, bool sync) {
   if (verify_) {
     cb = UtilTrinity::callbackVerify;
     if (model) {
-      cb_data = static_cast<void *> (model);
+      cb_data->data = static_cast<void *> (model);
     }
   } else {
     cb = UtilTrinity::callback;
@@ -580,12 +597,12 @@ UtilTrinity::run_each (UtilModel *model, bool sync) {
         total_++;
       }
 
-      cb (cb_output, 0, cb_data);
+      cb (cb_output, 0, static_cast<void *> (cb_data));
     }
   } else {
     if (model) {
       status = runNPU_model (dev_, model->getModelID (), NPU_INFER_NON_BLOCKING, model->getInput (),
-                             model->getOutput (), cb, cb_data);
+                             model->getOutput (), cb, static_cast<void *> (cb_data));
     } else {
       /* TODO: revise this when TRIA is implemented */
       input_buffers input;
@@ -597,7 +614,8 @@ UtilTrinity::run_each (UtilModel *model, bool sync) {
       if (status != 0)
         return status;
 
-      status = runNPU_async (dev_, 0, &input, cb, NULL, cb_data, NPUASYNC_WAIT);
+      status =
+          runNPU_async (dev_, 0, &input, cb, NULL, static_cast<void *> (cb_data), NPUASYNC_WAIT);
       cleanNPU_inputBuffers (dev_, &input);
     }
 
@@ -651,7 +669,11 @@ UtilTrinity::submitRequest (int req_id) {
   status = submitNPU_request (dev_, req_id);
   if (status == 0) {
     total_++;
-    UtilTrinity::callbackVerify (model->getOutput (), req_id, static_cast<void *> (model));
+
+    CallbackData *cb_data = new CallbackData ();
+    cb_data->instance = this;
+    cb_data->data = static_cast<void *> (model);
+    UtilTrinity::callbackVerify (model->getOutput (), req_id, static_cast<void *> (cb_data));
   }
 
   return status;
index 5353566a1739d6c7576a543d4f08c5d16c2f0d5a..75d3ddb9aa19421696d9a111b6c357cbe0c203eb 100644 (file)
@@ -132,6 +132,11 @@ class UtilTrinity {
 
   UtilModel *findModel (uint32_t model_id);
 
+  struct CallbackData {
+    UtilTrinity *instance;
+    void *data;
+  };
+
   static void callbackVerify (output_buffers *output, int req_id, void *data);
   static void callback (output_buffers *output, int req_id, void *data);