masahi commented on a change in pull request #9108:
URL: https://github.com/apache/tvm/pull/9108#discussion_r727606001



##########
File path: src/runtime/pipeline/pipeline_executor.h
##########
@@ -36,25 +43,114 @@ namespace runtime {
  *
  *  This executor can be accessed by various language via TVM runtime 
PackedFunc API.
  */
-class TVM_DLL PipelineRuntime : public ModuleNode {
+class TVM_DLL PipelineExecutor : public ModuleNode {
  public:
   /*!
    * \Return the type key of the executor.
    */
-  const char* type_key() const final { return "PipelineRuntime"; }
+  const char* type_key() const final { return "PipelineExecutor"; }
   /*!
-   * \brief Initialize the pipeline executor with module array and json text.
+   * \brief Initialize the pipeline executor with module array and JSON text.
    * \param modules The module list used for building pipeline.
    * \param pipeline_json The configuration of modules dependencies.
    */
-  void Init(const Array<tvm::runtime::Module>& modules, const std::string& 
pipeline_json);
+  void Init(const std::vector<Module>& modules, const std::string& 
pipeline_json);
+  /*!
+   * \brief Use the information of mod_config to create a graph executor list.
+   * \param mod_config The configuration information generated by the library 
export function call.
+   */
+  std::vector<Module> CreateGraphModules(const ModuleConfig& mod_config);
   /*!
    * \brief Give frontends an access to packed functions.
    * \param name The name of the function.
    * \param sptr_to_self The pointer to the module node.
    * \return The corresponding packed function.
    */
   virtual PackedFunc GetFunction(const std::string& name, const 
ObjectPtr<Object>& sptr_to_self);
+
+  /*!
+   * \brief Get the number of outputs.
+   *
+   * \return The number of outputs.
+   */
+  int NumOutputs() const { return num_outputs_; }
+
+  /*!\brief Load the module files information.*/
+  ModuleConfig& LoadModuleConfig(dmlc::JSONReader* reader) {
+    reader->BeginArray();
+    while (reader->NextArrayItem()) {
+      std::string key;
+      reader->BeginObject();
+      int mod_idx = -1;
+      std::string lib_name;
+      std::string json_name;
+      std::string params_name;
+      std::string dev;
+      while (reader->NextObjectItem(&key)) {
+        if (key == "mod_idx") {
+          reader->Read(&mod_idx);
+        } else if (key == "lib_name") {
+          reader->Read(&lib_name);
+        } else if (key == "json_name") {
+          reader->Read(&json_name);
+        } else if (key == "params_name") {
+          reader->Read(&params_name);
+        } else if (key == "dev") {
+          reader->Read(&dev);
+        } else {
+          LOG(FATAL) << "do not support key " << key;
+        }
+      }
+      // Check if the vairable 'mod_idx' is successfully read, All moudles 
here are graph executor
+      // modules, hence the value of 'mod_idx' should start from 0.
+      ICHECK(mod_idx >= 0) << "Invalid mod_idx value " << mod_idx;
+      // Load the lib, json, and params information.
+      ICHECK(!lib_name.empty()) << "lib_name is empty.";
+      ICHECK(!json_name.empty()) << "json_name is empty.";
+      ICHECK(!params_name.empty()) << "params_name is empty.";
+      mod_config_[mod_idx] = GraphModuleLoadInfo(lib_name, json_name, 
params_name, dev);
+    }
+    return mod_config_;
+  }
+
+ private:
+  /*!\brief The class used to execute and schedule the pipeline logic.*/
+  PipelineScheduler pipeline_scheduler_;
+  /*!\brief The Dependency information of each graph runtime module of the 
pipeline.*/
+  PipelineConfig pipeline_config_;
+  /*!\brief The Module information used to create the graph runtimes.*/

Review comment:
       module




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to