[Valgrind] Remove valgrind warnings.
authorDongju Chae <dongju.chae@samsung.com>
Mon, 9 Aug 2021 05:01:37 +0000 (14:01 +0900)
committer채동주/On-Device Lab(SR)/Staff Engineer/삼성전자 <dongju.chae@samsung.com>
Tue, 10 Aug 2021 03:05:57 +0000 (12:05 +0900)
This patch removes valgrind warnings mostly related to value
initialization.

Signed-off-by: Dongju Chae <dongju.chae@samsung.com>
src/core/ne-handler.cc
src/core/ne-host-input-service.cc
src/core/ne-profiler.cc
src/core/ne-profiler.h
tests/unittests/ne_core_comm_test.cc
tests/unittests/ne_core_data_test.cc
tests/unittests/ne_core_handler_test.cc
tests/unittests/ne_core_inputservice_test.cc

index 44fd615..74521ad 100644 (file)
@@ -341,7 +341,10 @@ HostHandler::createRequest (uint32_t model_id, int *req_id) {
  */
 int
 HostHandler::removeRequest (int req_id) {
-  return device_->removeRequest (req_id);
+  int status = device_->removeRequest (req_id);
+  if (status == 0)
+    profiler_->removeRequest (req_id);
+  return status;
 }
 
 /**
@@ -425,7 +428,19 @@ HostHandler::setRequestScheduler (int req_id, npu_scheduler sched,
  */
 int
 HostHandler::submitRequest (int req_id) {
-  return device_->submitRequest (req_id);
+  uint32_t model_id;
+  int status = device_->getRequestModel (req_id, &model_id);
+  if (status != 0)
+    return status;
+
+  Model *model = models_.find (model_id);
+  /* internal logic error */
+  assert (model != nullptr);
+
+  status = device_->submitRequest (req_id);
+  if (status == 0)
+    profiler_->appendRequest (req_id, model);
+  return status;
 }
 
 /**
@@ -435,7 +450,19 @@ HostHandler::submitRequest (int req_id) {
  */
 int
 HostHandler::submitRequestKernel (int req_id) {
-  return device_->submitRequestKernel (req_id);
+  uint32_t model_id;
+  int status = device_->getRequestModel (req_id, &model_id);
+  if (status != 0)
+    return status;
+
+  Model *model = models_.find (model_id);
+  /* internal logic error */
+  assert (model != nullptr);
+
+  status = device_->submitRequestKernel (req_id);
+  if (status == 0)
+    profiler_->appendRequest (req_id, model);
+  return status;
 }
 
 /**
@@ -1241,6 +1268,7 @@ TrinityVision2::removeRequest (int req_id) {
   }
 
   scheduler_->removeRequest (req);
+
   return 0;
 }
 
index b54e144..4020104 100644 (file)
@@ -67,6 +67,15 @@ HostInputService::submit (const DriverAPI *api, const Request *req, outputCallba
  */
 int
 HostInputService::remove (const DriverAPI *api, int id) {
+  if (api == nullptr || id < 0) {
+    logerr (TAG, "Invalid arguments\n");
+    return -EINVAL;
+  }
+
+#ifdef ENABLE_EMUL
+  api->stop_target (id);
+#endif
+
   return ThreadPool::getInstance ().removeTask (id);
 }
 
index 603284e..516afd0 100644 (file)
@@ -26,6 +26,11 @@ ModelProfiler::appendRequest (int req_id, const Model *model) {
 }
 
 int
+ModelProfiler::removeRequest (int req_id) {
+  return profile_map_.remove (req_id);
+}
+
+int
 ModelProfiler::getProfile (int req_id, const npu_profile_opt &opt, npu_profile *profile) {
   ProfileData *data = profile_map_.find (req_id);
   if (data == nullptr)
index 548a9e9..d5c6d2b 100644 (file)
@@ -34,8 +34,9 @@ class ModelProfiler {
   ~ModelProfiler ();
 
   int appendRequest (int req_id, const Model *model);
-  int getProfile (int req_id, const npu_profile_opt &opt, npu_profile *profile);
+  int removeRequest (int req_id);
 
+  int getProfile (int req_id, const npu_profile_opt &opt, npu_profile *profile);
   void manipulateProfile (HWmem *extended, npu_profile *profile);
 
  private:
index fd553a5..4ec2e3d 100644 (file)
@@ -44,7 +44,9 @@ TEST (ne_core_comm_test, extract_buffer) {
   size_t size = 4096;
   char *data = new char[size];
 
-  generic_buffer buffer;
+  memset (data, '\x00', size);
+  generic_buffer buffer = {0};
+
   buffer.type = BUFFER_MAPPED;
   buffer.addr = new char[size];
   buffer.size = size;
@@ -74,7 +76,9 @@ TEST (ne_core_comm_test, extract_buffer_args_n) {
   size_t size = 4096;
   char *data = new char[size];
 
-  generic_buffer buffer;
+  memset (data, '\x00', size);
+  generic_buffer buffer = {0};
+
   buffer.type = BUFFER_MAPPED;
   buffer.addr = new char[size];
   buffer.size = size;
@@ -100,7 +104,9 @@ TEST (ne_core_comm_test, extract_buffer_not_supported_n) {
   size_t size = 4096;
   char *data = new char[size];
 
-  generic_buffer buffer;
+  memset (data, '\x00', size);
+  generic_buffer buffer = {0};
+
   buffer.size = size;
 
   /** not supported */
@@ -121,7 +127,9 @@ TEST (ne_core_comm_test, extract_buffer_file) {
   size_t size = 4096;
   char *data = new char[size];
 
-  generic_buffer buffer;
+  memset (data, '\x00', size);
+  generic_buffer buffer = {0};
+
   buffer.type = BUFFER_FILE;
   buffer.filepath = "/tmp/test.bin";
   buffer.size = size;
@@ -152,7 +160,8 @@ TEST (ne_core_comm_test, extract_buffer_file_n) {
   size_t size = 4096;
   char *data = new char[size];
 
-  generic_buffer buffer;
+  memset (data, '\x00', size);
+  generic_buffer buffer = {0};
 
   /** need filepath */
   buffer.type = BUFFER_FILE;
@@ -176,7 +185,9 @@ TEST (ne_core_comm_test, insert_buffer) {
   size_t size = 4096;
   char *data = new char[size];
 
-  generic_buffer buffer;
+  memset (data, '\x00', size);
+  generic_buffer buffer = {0};
+
   buffer.type = BUFFER_MAPPED;
   buffer.addr = new char[size];
   buffer.size = size;
@@ -206,7 +217,9 @@ TEST (ne_core_comm_test, insert_buffer_args_n) {
   size_t size = 4096;
   char *data = new char[size];
 
-  generic_buffer buffer;
+  memset (data, '\x00', size);
+  generic_buffer buffer = {0};
+
   buffer.type = BUFFER_MAPPED;
   buffer.addr = new char[size];
   buffer.size = size;
@@ -232,7 +245,8 @@ TEST (ne_core_comm_test, insert_buffer_not_supported_n) {
   size_t size = 4096;
   char *data = new char[size];
 
-  generic_buffer buffer;
+  memset (data, '\x00', size);
+  generic_buffer buffer = {0};
 
   /** not supported */
   buffer.type = BUFFER_FILE;
index edc150c..02e442b 100644 (file)
@@ -389,9 +389,9 @@ TEST (ne_core_data_test, dummy_quantize) {
                            DATA_TYPE_FLOAT32, DATA_TYPE_FLOAT64};
   uint32_t data_dims[] = {1, 1, 1, 1024};
 
-  void *src_data = malloc (4096);
+  void *src_data = calloc (1, 4096);
   ASSERT_NE (src_data, nullptr);
-  void *dst_data = malloc (4096);
+  void *dst_data = calloc (1, 4096);
   if (dst_data == nullptr) {
     free (src_data);
     ASSERT_NE (dst_data, nullptr);
index fc5b0a6..c7b41b9 100644 (file)
@@ -87,7 +87,7 @@ TEST (ne_core_handler_test, device_instance_uninitilized_n) {
   void *addr = nullptr;
   Model *model;
   generic_buffer model_buf = {0};
-  input_buffers input;
+  input_buffers input = {0};
 
   EXPECT_EQ (triv2->allocMemory (4096, &addr), -EPERM);
   EXPECT_EQ (triv2->deallocMemory (0, 4096, addr), -EPERM);
@@ -317,7 +317,7 @@ TEST (ne_core_handler_test, triv2_run) {
   ASSERT_EQ (device->setModel (&model_buf, &model), 0);
 
   /** prepare input buffers */
-  input_buffers input_buf;
+  input_buffers input_buf = {0};
   create_input_buffers (input_buf);
 
   npu_input_opmode opmode = NPUINPUT_HOST;
@@ -361,7 +361,7 @@ TEST (ne_core_handler_test, triv2_run_invalid_args_n) {
   ASSERT_EQ (device->setModel (&model_buf, &model), 0);
 
   /** prepare input buffers */
-  input_buffers input_buf;
+  input_buffers input_buf = {0};
   create_input_buffers (input_buf);
 
   npu_input_opmode opmode = NPUINPUT_HOST;
@@ -390,7 +390,7 @@ TEST (ne_core_handler_test, triv2_run_invalid_opmode_n) {
   ASSERT_EQ (device->setModel (&model_buf, &model), 0);
 
   /** prepare input buffers */
-  input_buffers input_buf;
+  input_buffers input_buf = {0};
   create_input_buffers (input_buf);
 
   /** TRIV2 only allows NPUINPUT_HOST */
@@ -419,7 +419,7 @@ TEST (ne_core_handler_test, triv2_stop) {
   ASSERT_EQ (device->setModel (&model_buf, &model), 0);
 
   /** prepare input buffers */
-  input_buffers input_buf;
+  input_buffers input_buf = {0};
   create_input_buffers (input_buf);
 
   npu_input_opmode opmode = NPUINPUT_HOST;
@@ -830,7 +830,7 @@ TEST (ne_core_handler_test, handler_triv2_run_sync) {
   EXPECT_EQ (handler->registerModel (&model_buf, &modelid), 0);
 
   /** buffer */
-  input_buffers input;
+  input_buffers input = {0};
   input.num_buffers = 1;
   input.bufs[0].type = BUFFER_MAPPED;
   input.bufs[0].size = 4096;
@@ -838,8 +838,7 @@ TEST (ne_core_handler_test, handler_triv2_run_sync) {
   EXPECT_EQ (handler->allocGenericBuffer (&input), 0);
 
   /** runModel (sync) from host handler */
-  output_buffers output;
-  output.num_buffers = 0;
+  output_buffers output = {0};
 
   npu_infer_mode mode = NPU_INFER_BLOCKING;
   EXPECT_GE (handler->runModel (modelid, mode, &input), 0);
@@ -867,15 +866,14 @@ TEST (ne_core_handler_test, handler_triv2_run_model_n) {
   EXPECT_EQ (handler->registerModel (&model_buf, &modelid), 0);
 
   /** buffer */
-  input_buffers input;
+  input_buffers input = {0};
   input.num_buffers = 1;
   input.bufs[0].type = BUFFER_MAPPED;
   input.bufs[0].size = 4096;
 
   EXPECT_EQ (handler->allocGenericBuffer (&input), 0);
 
-  output_buffers output;
-  output.num_buffers = 0;
+  output_buffers output = {0};
 
   /** TRIV2 always requires model and input buffers */
   npu_infer_mode mode = NPU_INFER_BLOCKING;
@@ -905,7 +903,7 @@ TEST (ne_core_handler_test, handler_triv2_run_async) {
   EXPECT_EQ (handler->registerModel (&model_buf, &modelid), 0);
 
   /** buffer */
-  input_buffers input;
+  input_buffers input = {0};
   input.num_buffers = 1;
   input.bufs[0].type = BUFFER_MAPPED;
   input.bufs[0].size = 4096;
@@ -942,7 +940,7 @@ TEST (ne_core_handler_test, handler_triv2_run_async_n) {
   EXPECT_EQ (handler->registerModel (&model_buf, &modelid), 0);
 
   /** buffer */
-  input_buffers input;
+  input_buffers input = {0};
   input.num_buffers = 1;
   input.bufs[0].type = BUFFER_MAPPED;
   input.bufs[0].size = 4096;
@@ -979,7 +977,7 @@ TEST (ne_core_handler_test, handler_triv2_get_memory_status) {
   EXPECT_EQ (free_total, 0);
 
   /** buffer */
-  input_buffers input;
+  input_buffers input = {0};
   input.num_buffers = 1;
   input.bufs[0].type = BUFFER_MAPPED;
   input.bufs[0].size = size;
index 5e08f81..42c46d8 100644 (file)
@@ -237,20 +237,26 @@ TEST (ne_core_inputservice_test, host_remove) {
 
   /** saturate requests up to the maximum (in thread pool) */
   uint32_t num_threads = ThreadPool::getInstance ().getNumThreads ();
+  Request **requests = new Request *[num_threads + 1];
   int req_id = 0;
   for (uint32_t i = 0; i < num_threads + 1; i++) {
-    std::unique_ptr<Request> req (new Request (7 + i));
+    Request *req = new Request (7 + i);
     req->setOpmode (opmode);
     req->setModel (model.get ());
     req->setInferData (new SegmentTable (new HWmemDevice));
 
     req_id = req->getID ();
-    EXPECT_EQ (service.submit (api.get (), req.get (), callback), 0);
+    EXPECT_EQ (service.submit (api.get (), req, callback), 0);
+
+    requests[i] = req;
   }
 
   /** remove un-resolved task */
-  EXPECT_EQ (service.remove (nullptr, req_id), 0);
+  EXPECT_EQ (service.remove (api.get (), req_id), 0);
   wait_callbacks (num_called, num_threads, m, cv);
+
+  for (uint32_t i = 0; i < num_threads + 1; i++) delete requests[i];
+  delete[] requests;
 }
 
 /**