[visa] Add num visa insts
authorDongju Chae <dongju.chae@samsung.com>
Fri, 23 Jul 2021 03:19:52 +0000 (12:19 +0900)
committer채동주/On-Device Lab(SR)/Staff Engineer/삼성전자 <dongju.chae@samsung.com>
Fri, 23 Jul 2021 06:33:05 +0000 (15:33 +0900)
This patch adds num visa insts.

Signed-off-by: Dongju Chae <dongju.chae@samsung.com>
src/core/ne-handler.cc
src/core/ne-model.cc
src/core/ne-model.h

index 792197ca287d1ac0eb929091025574ea2de22818..fbefe1630ee99f71c61b57b4952bab20b1cf557e 100644 (file)
@@ -998,6 +998,8 @@ TrinityVision2::setModel (const generic_buffer *model_buf, Model **model_ptr) {
       config.metadata_ext_size = 0;
     }
 
+    config.num_visa_insts = model->getNumInsts ();
+
     status =
         api_->registerModel (&config, model->getMetadata ()->getNPUVersion ());
     if (status != 0)
index 35797c8e1d291012a57b8f21e77ae8f70b49b741..92328c6bb883a520d1397097fc9b7eb266bdc9e0 100644 (file)
@@ -360,6 +360,16 @@ Model::~Model () {
     delete extended_meta_;
 }
 
+uint32_t
+Model::getNumInsts () {
+  if (meta_.get () == nullptr) {
+    logerr (TAG, "Invalid metadata\n");
+    return 0;
+  }
+
+  return meta_->getNumInsts ();
+}
+
 /**
  * @brief set data info of input/output tensors
  * @param[in] in input tensors' data info
index 6a3d023c0151dd67317db0f17bd3ca196c5f149b..a8c8f06b25789845ec290b00075af63431c893e0 100644 (file)
@@ -48,6 +48,8 @@ class Metadata {
 
   virtual ~Metadata (){};
 
+  virtual uint32_t getNumInsts () const { return 0; }
+
   virtual uint32_t getInputNum () const = 0;
   virtual uint32_t getOutputNum () const = 0;
 
@@ -255,6 +257,10 @@ class Metadata_v3 : public Metadata {
   /** @brief create metadata with npubinfmt v3. if sanity check is failed, return nullptr */
   static Metadata_v3 *createInstance (npubin_meta *meta);
 
+  uint32_t getNumInsts () const override {
+    return meta_->visa_num_plus_one > 0 ? meta_->visa_num_plus_one - 1 : 0;
+  }
+
   uint32_t getInputNum () const override { return meta_->input_seg_num; }
   uint32_t getOutputNum () const override { return meta_->output_seg_num; }
 
@@ -369,6 +375,8 @@ class Model : public HWmem {
   Model (const HWmemImpl *impl);
   ~Model ();
 
+  uint32_t getNumInsts ();
+
   void setConstraint (const npuConstraint &constraint) {
     constraint_ = constraint;
   }