[FIX/VD] Rename npu schduler device and other kernel enum types
authorDongju Chae <dongju.chae@samsung.com>
Fri, 4 Jun 2021 08:50:41 +0000 (17:50 +0900)
committer채동주/On-Device Lab(SR)/Staff Engineer/삼성전자 <dongju.chae@samsung.com>
Tue, 8 Jun 2021 01:05:45 +0000 (10:05 +0900)
This patch renames npu schduler device and other kernel enum types.

Signed-off-by: Dongju Chae <dongju.chae@samsung.com>
src/core/ne-handler.cc
src/core/ne-host-input-service.cc
src/core/ne-hw-input-service.cc
src/core/npu/NPUdrvAPI.h
src/core/npu/NPUdrvAPI_emul.cc
src/core/npu/NPUdrvAPI_triv2.cc
tests/unittests/ne_core_npu_test.cc
utils/trinity_cuse/trinity-cuse-triv2.cc

index 8a77b2e1aa25b7c7213192c2ffd134fdc39f5459..f68b53128c041c8c4e34d2372d9e0cc5d873acb7 100644 (file)
@@ -582,7 +582,7 @@ HostHandler::getDeviceStatus (npu_status *status, uint32_t *num_requests) {
     return -EINVAL;
 
   device_state_t state = api->isReady ();
-  if (state == device_state_t::STATE_READY) {
+  if (state == device_state_t::TRINITY_STATE_READY) {
     *num_requests = api->numRequests ();
     if (*num_requests > 0)
       *status = NPU_READY;
index 95402be3fec29e976fef9647ce31ef78483e0c91..4eb9aea628ff896f44ad81aef2008d951da6e8c6 100644 (file)
@@ -114,7 +114,7 @@ HostInputService::invoke_buffer (const DriverAPI *api, const Model *model,
   int ret = -EINVAL;
 
   state = api->isReady ();
-  if (state != device_state_t::STATE_READY) {
+  if (state != device_state_t::TRINITY_STATE_READY) {
     logerr (TAG, "device is not available to run inference %d\n", state);
     goto handle_callback;
   }
@@ -171,7 +171,7 @@ HostInputService::invoke_segt (const DriverAPI *api, const Model *model,
   int ret = -EINVAL;
 
   state = api->isReady ();
-  if (state != device_state_t::STATE_READY) {
+  if (state != device_state_t::TRINITY_STATE_READY) {
     logerr (TAG, "device is not available to run inference %d\n", state);
     goto handle_callback;
   }
@@ -196,13 +196,13 @@ HostInputService::invoke_segt (const DriverAPI *api, const Model *model,
   input_config.priority = constraint.priority;
 
   /** input handling by CPU. host inputservice only supports CPU mode */
-  input_config.input_mode = INPUT_CPU;
+  input_config.input_mode = TRINITY_INPUT_CPU;
 
   /** output handling by CPU, host inputservice only supports either interrupt or polling */
   if (constraint.notimode == NPU_POLLING) {
-    input_config.output_mode = OUTPUT_CPU_POLL;
+    input_config.output_mode = TRINITY_OUTPUT_CPU_POLL;
   } else { /** default mode is interrupt */
-    input_config.output_mode = OUTPUT_CPU_INTR;
+    input_config.output_mode = TRINITY_OUTPUT_CPU_INTR;
   }
 
   input_config.req_id = req_id;
index f0c50cd71e7d69eb7b87032997b01c1b96f68548..1b39fcd6a835e87b0bfbc0ff2b1298dc5fd75306 100644 (file)
@@ -69,7 +69,7 @@ HwInputService::invoke (const DriverAPI *api, const Model *model,
   int ret = -EINVAL;
 
   state = api->isReady ();
-  if (state != device_state_t::STATE_READY) {
+  if (state != device_state_t::TRINITY_STATE_READY) {
     logerr (TAG, "device is not available to run inference %d\n", state);
     goto handle_callback;
   }
@@ -99,8 +99,8 @@ HwInputService::invoke (const DriverAPI *api, const Model *model,
   constraint = model->getConstraint ();
   input_config.timeout_ms = 0; /* immediatedly handled */
   input_config.priority = NPU_PRIORITY_HIGH;
-  input_config.input_mode = INPUT_HW;
-  input_config.output_mode = OUTPUT_HW;
+  input_config.input_mode = TRINITY_INPUT_HW;
+  input_config.output_mode = TRINITY_OUTPUT_HW;
 
   /** Assumption: only a sigle pair of input/output segments in HW input service */
   input_config.hw_input_seg = model->getMetadata ()->getInputSegmentIndex (0);
index 0013a30b6b0cd36582ed803e5190c2e12b6b3ed8..ef2834d2a92305798355cd4de4d575fdf3fe944f 100644 (file)
@@ -63,7 +63,7 @@ class DriverAPI {
   /** The below requires initialized device */
   /** @brief check whether the device is ready (true) or busy (false) */
   virtual device_state_t isReady () const {
-    return device_state_t::STATE_UNKNOWN;
+    return device_state_t::TRINITY_STATE_UNKNOWN;
   }
 
   /** @brief return a number of requests submitted */
index c5e4db9d96ab1de5b711aaba23a8964a677d993c..6152ac2ed1f44727116cb8593d44b0440fcedcc5 100644 (file)
@@ -349,14 +349,14 @@ TrinityEmulAPI::getNumDevices () {
 
 /**
  * @brief get the state of device. always available.
- * @return STATE_READY if no error. otherwise STATE_END.
+ * @return TRINITY_STATE_READY if no error. otherwise STATE_END.
  */
 device_state_t
 TrinityEmulAPI::isReady () const {
   if (!initialized ())
-    return device_state_t::STATE_UNKNOWN;
+    return device_state_t::TRINITY_STATE_UNKNOWN;
 
-  return STATE_READY;
+  return device_state_t::TRINITY_STATE_READY;
 }
 
 /**
@@ -631,7 +631,7 @@ TrinityEmulAPI::runInput (input_config_t *input_config) const {
     req->run (func);
     status = req_id;
 
-    if (input_config->input_mode != INPUT_HW)
+    if (input_config->input_mode != TRINITY_INPUT_HW)
       req->stop ();
   }
 
index b4065394b1a1b3da8a09d6501ef1ccfbc61d85a0..92df91908244d67b2d9c81be14ebe0ba06bf1e94 100644 (file)
@@ -12,7 +12,7 @@
  */
 
 #include <misc/trinity.h>
-#include <misc/npu_sched.h>
+#include <misc/npu_sched_ioctl.h>
 
 #include <sys/ioctl.h>
 #include <sys/fcntl.h>
@@ -80,7 +80,7 @@ TrinityVision2API::TrinityVision2API (int dev_id)
   }
 
   /* Try to open a scheduler device */
-  this->sched_dev_fd_ = ::open ("/dev/npu_sched", O_RDWR);
+  this->sched_dev_fd_ = ::open ("/dev/npusched", O_RDWR);
 }
 
 /** @brief destructor of emulation API driver */
@@ -174,11 +174,11 @@ TrinityVision2API::isReady () const {
   int ret;
 
   if (!this->initialized ())
-    return device_state_t::STATE_UNKNOWN;
+    return device_state_t::TRINITY_STATE_UNKNOWN;
 
   ret = ioctl (this->getDeviceFD (), TRINITY_IOCTL_GET_STATE, &state);
   if (ret != 0)
-    return device_state_t::STATE_UNKNOWN;
+    return device_state_t::TRINITY_STATE_UNKNOWN;
 
   return state;
 }
@@ -224,7 +224,7 @@ TrinityVision2API::alloc (size_t size, bool contiguous) const {
   if (size == 0 || size > UINT32_MAX)
     return -EINVAL;
 
-  hwmem.type = contiguous ? HWMEM_DMA_CONT : HWMEM_DMA_IOMMU;
+  hwmem.type = contiguous ? TRINITY_HWMEM_DMA_CONT : TRINITY_HWMEM_DMA_IOMMU;
   hwmem.size = size;
 
   ret = ioctl (this->getDeviceFD (), TRINITY_IOCTL_HWMEM_ALLOC, &hwmem);
@@ -279,7 +279,7 @@ TrinityVision2API::dealloc (int dmabuf, bool contiguous) const {
   if (!this->initialized ())
     return -EPERM;
 
-  hwmem.type = contiguous ? HWMEM_DMA_CONT : HWMEM_DMA_IOMMU;
+  hwmem.type = contiguous ? TRINITY_HWMEM_DMA_CONT : TRINITY_HWMEM_DMA_IOMMU;
 
   /* translate dmabuf FDs to cuse-compatible ones */
   if (is_cuse_) {
@@ -467,27 +467,42 @@ TrinityVision2API::runInput (input_config_t *input_config) const {
     return -EINVAL;
 
   if (sched_dev_fd_ >= 0) {
-    struct npu_sched_create_task val;
-    struct npu_sched_activate_task val2;
-    uint32_t subtask_id;
-
-    val.task_id = getpid ();
-    val.task_is_rt = false;
-    val.nice_value = input_config->priority;
-    val.num_subtasks = 1; /* FIXME */
-    val.subtask_ids = &subtask_id;
-    subtask_id = input_config->req_id;
-
-    ret = ioctl (sched_dev_fd_, NPU_SCHED_CREATE_TASK, &val);
+    struct npu_sched_ioctl_create_param param;
+    struct npu_sched_ioctl_task_attribute task_attrib;
+    struct npu_sched_ioctl_task_id task_id;
+
+    param.id = getpid ();
+    param.is_rt = false;
+    param.nice_value = input_config->priority;
+    param.num_subtasks = 1; /* FIXME */
+
+    ret = ioctl (sched_dev_fd_, NPU_SCHED_CREATE_TASK, &param);
+    if (ret != 0)
+      return -errno;
+
+    task_attrib.task_handle = param.handle;
+    task_attrib.subtask_idx = 0;
+    /* reference attributes from VD */
+    task_attrib.wcet = 420000; /* worst-case execution time */
+    task_attrib.deadline = 8000000;
+    task_attrib.period = 32000000;
+    task_attrib.yield = 10250000;
+    ret = ioctl (sched_dev_fd_, NPU_SCHED_SET_TASK_ATTRIB, &task_attrib);
+    if (ret != 0)
+      return -errno;
+
+    task_id.task_handle = param.handle;
+    task_id.subtask_idx = 0;
+    task_id.id = 0x0; /* FIXME */
+    ret = ioctl (sched_dev_fd_, NPU_SCHED_SET_TASK_ID, &task_id);
     if (ret != 0)
       return -errno;
 
-    val2.task_handle = val.task_handle;
-    ret = ioctl (sched_dev_fd_, NPU_SCHED_ACTIVATE_TASK, &val2);
+    ret = ioctl (sched_dev_fd_, NPU_SCHED_ACTIVATE_TASK, &param.handle);
     if (ret != 0)
       return -errno;
 
-    input_config->task_handle = val.task_handle;
+    input_config->task_handle = param.handle;
   }
 
   /* translate dmabuf FDs to cuse-compatible ones */
index bb34422fd52a38dc2bfefd5bd9a204a9bc5ffea9..9ed5f566f31bf180f9be6da11120447037a83062 100644 (file)
@@ -82,7 +82,7 @@ TEST (ne_core_npu_test, check_dev_status_triv2) {
   EXPECT_NE (api.get (), nullptr);
   EXPECT_GE (api->getDeviceFD (), 0);
   EXPECT_EQ (api->getDeviceID (), 0);
-  EXPECT_EQ (api->isReady (), device_state_t::STATE_READY);
+  EXPECT_EQ (api->isReady (), device_state_t::TRINITY_STATE_READY);
 
   /** open same device */
   std::unique_ptr<DriverAPI> api2;
@@ -90,7 +90,7 @@ TEST (ne_core_npu_test, check_dev_status_triv2) {
   EXPECT_NE (api2.get (), nullptr);
   EXPECT_GE (api2->getDeviceFD (), 0);
   EXPECT_EQ (api2->getDeviceID (), 0);
-  EXPECT_EQ (api2->isReady (), device_state_t::STATE_READY);
+  EXPECT_EQ (api2->isReady (), device_state_t::TRINITY_STATE_READY);
 
   EXPECT_EQ (api->getDeviceID (), api2->getDeviceID ());
   /** file descriptors should be different */
@@ -129,7 +129,7 @@ TEST (ne_core_npu_test, create_instance_uninitialized_n) {
 
   EXPECT_NE (api->open (), 0);
 
-  EXPECT_EQ (api->isReady (), device_state_t::STATE_UNKNOWN);
+  EXPECT_EQ (api->isReady (), device_state_t::TRINITY_STATE_UNKNOWN);
   EXPECT_EQ (api->alloc (size), -EPERM);
   EXPECT_EQ (api->dealloc (0), -EPERM);
   EXPECT_EQ (api->mmap (0, size), nullptr);
@@ -147,7 +147,7 @@ TEST (ne_core_npu_test, create_instance_uninitialized_n) {
   EXPECT_NE (api->open (), 0);
 
   /** but, not initialized */
-  EXPECT_EQ (api->isReady (), device_state_t::STATE_UNKNOWN);
+  EXPECT_EQ (api->isReady (), device_state_t::TRINITY_STATE_UNKNOWN);
   EXPECT_EQ (api->alloc (size), -EPERM);
   EXPECT_EQ (api->dealloc (0), -EPERM);
   EXPECT_EQ (api->mmap (0, size), nullptr);
@@ -334,8 +334,8 @@ TEST (ne_core_npu_test, run_inference_triv2) {
   input.dbuf_fd = buffer_dmabuf;
   input.model_id = model.id;
   input.num_segments = 1;
-  input.input_mode = INPUT_CPU;
-  input.output_mode = OUTPUT_CPU_INTR;
+  input.input_mode = TRINITY_INPUT_CPU;
+  input.output_mode = TRINITY_OUTPUT_CPU_INTR;
   input.timeout_ms = 100;
 
   EXPECT_GE (api->runInput (&input), 0);
@@ -398,8 +398,8 @@ TEST (ne_core_npu_test, run_inference_async0_triv2) {
     input.dbuf_fd = buffer_dmabuf;
     input.model_id = model.id;
     input.num_segments = 1;
-    input.input_mode = INPUT_CPU;
-    input.output_mode = OUTPUT_CPU_INTR;
+    input.input_mode = TRINITY_INPUT_CPU;
+    input.output_mode = TRINITY_OUTPUT_CPU_INTR;
     input.timeout_ms = 100;
 
     return api->runInput (&input);
@@ -473,8 +473,8 @@ TEST (ne_core_npu_test, run_inference_async1_triv2) {
   ASSERT_GE (model.dbuf_fd, 0);
   input.model_id = model.id;
   input.num_segments = 1;
-  input.input_mode = INPUT_CPU;
-  input.output_mode = OUTPUT_CPU_INTR;
+  input.input_mode = TRINITY_INPUT_CPU;
+  input.output_mode = TRINITY_OUTPUT_CPU_INTR;
   input.timeout_ms = 100;
 
   EXPECT_GE (api->runInput (&input), 0);
@@ -523,8 +523,8 @@ TEST (ne_core_npu_test, run_inference_triv2_n) {
   input.model_id = model.id;
   /** failure case: segments information is not properly set */
   input.num_segments = 0;
-  input.input_mode = INPUT_CPU;
-  input.output_mode = OUTPUT_CPU_INTR;
+  input.input_mode = TRINITY_INPUT_CPU;
+  input.output_mode = TRINITY_OUTPUT_CPU_INTR;
   input.timeout_ms = 100;
 
   EXPECT_EQ (api->runInput (&input), -EINVAL);
index 0285d7a06e74ed432dbe523723c8c8188fff7ba8..1a4708c7606ef455ebf7e3b1c6149f2366ea0b02 100644 (file)
@@ -362,7 +362,7 @@ triv2_get_api_level (trinity_cuse_context *ctx, uint32_t *api_level) {
  */
 static int
 triv2_get_state (trinity_cuse_context *ctx, uint32_t *state) {
-  *state = STATE_READY;
+  *state = TRINITY_STATE_READY;
   return 0;
 }
 
@@ -398,8 +398,8 @@ triv2_hwmem_alloc (trinity_cuse_context *ctx,
     return -EINVAL;
 
   switch (hwmem->type) {
-    case HWMEM_DMA_CONT:
-    case HWMEM_DMA_IOMMU:
+    case TRINITY_HWMEM_DMA_CONT:
+    case TRINITY_HWMEM_DMA_IOMMU:
       dmabuf = new EmulDmabuf (ctx->app_id);
       if (dmabuf->setSize (size) != 0) {
         delete dmabuf;