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



##########
File path: src/runtime/pipeline/pipeline_struct.h
##########
@@ -0,0 +1,164 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+#ifndef TVM_RUNTIME_PIPELINE_PIPELINE_STRUCT_H_
+#define TVM_RUNTIME_PIPELINE_PIPELINE_STRUCT_H_
+#include <assert.h>
+#include <dlpack/dlpack.h>
+#include <dmlc/json.h>
+
+#include <string>
+#include <unordered_map>
+#include <vector>
+/*!
+ * \brief All binding information of a output interface.
+ */
+struct OutputBindings {
+  /*!\brief Output interface binding information, 'int' is the index of the 
bond module.
+   * 'string' is the interface name of the bond module.
+   */
+  std::unordered_map<int, std::string> bindings;
+  /*!
+   * \brief If there is one global binding in bindings, then current output is
+   *  global interface.
+   * \return Whether this output interface is global output interface.
+   */
+  bool IsGlobalOutput() const {
+    int num_output = 0;
+    for (auto binding : bindings) {
+      /* output is global output when value is 0.
+       */
+      num_output += (binding.first == 0);
+    }
+    /* If this output is a global output then there is only one such output in 
map.*/
+    assert(num_output <= 1);
+    return num_output == 1;
+  }
+  /*!
+   * \brief Create module interface map from JSONReader.
+   * \param reader Json reader.
+   */
+  void Load(dmlc::JSONReader* reader) {
+    reader->BeginArray();
+    while (reader->NextArrayItem()) {
+      std::string key;
+      reader->BeginObject();
+      std::string input_name;
+      int mod_idx;
+      while (reader->NextObjectItem(&key)) {
+        if (key == "mod_idx") {
+          reader->Read(&mod_idx);
+        }
+        if (key == "input_name") {
+          reader->Read(&input_name);
+        }
+      }
+      bindings[mod_idx] = input_name;
+    }
+  }
+};
+/*!
+ * \brief The binding information of all outputs of a module.
+ */
+struct OutputMap {
+  /*! \brief Output binding map, 'int' is output interface index.*/
+  std::unordered_map<int, OutputBindings> output_binding_map;
+  OutputMap& operator=(const OutputMap& output) {
+    output_binding_map = output.output_binding_map;
+    return *this;
+  }
+
+  /*!\brief Check that OutMap is empty.
+   * \return True or False.

Review comment:
       change to more  useful comments.
   'brief This function is used to verify whether OutputMap is loaded 
successfully'
   'return Return true to indicate that this class has not been successfully 
loaded.'




-- 
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