Explorar o código

Update DaVinci OM script (#786)

Lutz Roeder %!s(int64=4) %!d(string=hai) anos
pai
achega
aaada4b443
Modificáronse 3 ficheiros con 206 adicións e 28 borrados
  1. 1 1
      Makefile
  2. 1 27
      tools/om
  3. 204 0
      tools/om.proto

+ 1 - 1
Makefile

@@ -28,7 +28,7 @@ update: install
 	@./tools/mnn sync schema
 	@./tools/mslite sync schema metadata
 	@./tools/onnx sync install schema metadata
-	@./tools/om sync schema
+	@./tools/om schema
 	@./tools/paddle sync schema
 	@./tools/pytorch sync install schema metadata
 	@./tools/sklearn sync install metadata

+ 1 - 27
tools/om

@@ -8,44 +8,18 @@ case "${OSTYPE}" in
     *) python="python3";;
 esac
 
-clean() {
-    echo "om clean"
-    rm -rf "./third_party/source/ascend"
-}
-
-sync() {
-    echo "om sync"
-    mkdir -p "./third_party/source/ascend/metadef/proto"
-    curl --silent --location --output "./third_party/source/ascend/metadef/proto/ge_ir.proto" "https://gitee.com/ascend/metadef/raw/master/proto/ge_ir.proto?raw=true"
-}
-
 schema() {
     echo "om schema"
     [[ $(grep -U $'\x0D' ./source/om-proto.js) ]] && crlf=1
-    node ./tools/protoc.js --text --root om --out ./source/om-proto.js ./third_party/source/ascend/metadef/proto/ge_ir.proto
+    node ./tools/protoc.js --text --root om --out ./source/om-proto.js ./tools/om.proto
     if [[ -n ${crlf} ]]; then
         unix2dos --quiet --newfile ./source/om-proto.js ./source/om-proto.js
     fi
 }
 
-metadata() {
-    echo "om metadata"
-    [[ $(grep -U $'\x0D' ./source/om-metadata.json) ]] && crlf=1
-    venv
-    export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
-    ${python} ./tools/om-script.py metadata
-    deactivate
-    if [[ -n ${crlf} ]]; then
-        unix2dos --quiet --newfile ./source/om-metadata.json ./source/om-metadata.json
-    fi
-}
-
 while [ "$#" != 0 ]; do
     command="$1" && shift
     case "${command}" in
-        "clean") clean;;
-        "sync") sync;;
         "schema") schema;;
-        "metadata") metadata;;
     esac
 done

+ 204 - 0
tools/om.proto

@@ -0,0 +1,204 @@
+syntax = "proto3";
+
+package ge.proto;
+
+enum DataType
+{
+    DT_UNDEFINED = 0;  // Used to indicate a DataType field has not been set.
+    DT_FLOAT     = 1;  // float type
+    DT_FLOAT16   = 2;  // fp16 type
+    DT_INT8      = 3;  // int8 type
+    DT_UINT8     = 4;  // uint8 type
+    DT_INT16     = 5;  // int16 type
+    DT_UINT16    = 6;  // uint16 type
+    DT_INT32     = 7;  //
+    DT_INT64     = 8;  // int64 type
+    DT_UINT32    = 9;  // unsigned int32
+    DT_UINT64    = 10;  // unsigned int64
+    DT_BOOL      = 11;  // bool type
+    DT_DOUBLE    = 12; // double type
+    DT_STRING = 13;            // string type
+    DT_DUAL_SUB_INT8 = 14;    /**< dual output int8 type */
+    DT_DUAL_SUB_UINT8 = 15;    /**< dual output uint8 type */
+    DT_COMPLEX64 = 16;         // complex64 type
+    DT_COMPLEX128 = 17;        // complex128 type
+    DT_QINT8 = 18;             // qint8 type
+    DT_QINT16 = 19;            // qint16 type
+    DT_QINT32 = 20;            // qint32 type
+    DT_QUINT8 = 21;            // quint8 type
+    DT_QUINT16 = 22;           // quint16 type
+    DT_RESOURCE  = 23;         // resource type
+    DT_STRING_REF = 24;        // string_ref type
+    DT_DUAL      = 25;              /**< dual output type */
+    DT_VARIANT = 26;           // variant type
+    DT_BF16 = 27;              // bf16 type
+    DT_INT4 = 28;              // int4 type
+    DT_UINT1 = 29;             // uint1 type
+    DT_INT2 = 30;              // int2 type
+    DT_UINT2 = 31;             // uint2 type
+}
+
+message AttrDef
+{
+    message ListValue
+    {
+        enum ListValueType{
+          VT_LIST_NONE = 0;
+          VT_LIST_STRING = 1;
+          VT_LIST_INT = 2;
+          VT_LIST_FLOAT = 3;
+          VT_LIST_BOOL = 4;
+          VT_LIST_BYTES = 5;
+          VT_LIST_TENSOR_DESC = 6;
+          VT_LIST_TENSOR = 7;
+          VT_LIST_GRAPH = 8;
+          VT_LIST_NAMED_ATTRS = 9;
+          VT_LIST_DATA_TYPE = 10;
+        }
+        repeated bytes s             = 2;                    // "list(string)"
+        repeated int64 i             = 3;  // "list(int)"
+        repeated float f             = 4;   // "list(float)"
+        repeated bool  b             = 5;  // "list(bool)"
+        repeated bytes bt            = 7;
+        repeated TensorDescriptor td = 8;
+        repeated TensorDef t         = 9;
+        repeated GraphDef g          = 10;
+	    repeated NamedAttrs na       = 11;
+	    repeated int64 dt            = 12; // list ge::DataType
+
+	    ListValueType val_type       = 20;
+    }
+
+    message ListListInt{
+        message ListInt{
+            repeated int64 list_i             = 1; // list int
+        }
+        repeated ListInt list_list_i             = 1; // list list int
+    }
+
+    message ListListFloat{
+        message ListFloat{
+            repeated float list_f             = 1; // list float
+        }
+        repeated ListFloat list_list_f             = 1; // list list float
+    }
+
+    oneof value
+    {
+        bytes            s    = 2;  // "string"
+        int64            i    = 3;  // "int"
+        float            f    = 4;  // "float"
+        bool             b    = 5;  // "bool"
+        bytes            bt   = 7;
+        ListValue        list = 1;   // any "list(...)"
+        NamedAttrs       func = 10;  // Used to support attr nesting
+        TensorDescriptor td   = 11;  // GeTensorDesc type
+        TensorDef        t    = 12;  // GeTensor type
+        GraphDef         g    = 13;  // Graph type
+        ListListInt      list_list_int  = 14;  // List List Int type
+        int64            dt   = 15; // ge::DataType
+        ListListFloat    list_list_float  = 16;  // List List Float type
+    }
+}
+
+// A list of attr names and their values. The whole list is attached
+// with a string name.  E.g., MatMul[T=float].
+message NamedAttrs
+{
+    string               name = 1;
+    map<string, AttrDef> attr = 2;
+}
+
+// Shape / dimension description, using row-major order
+message ShapeDef
+{
+    repeated int64 dim = 1;  // Size of each dimension
+}
+
+// Multidimensional data description
+message TensorDescriptor
+{
+    string   name   = 1;  // Optional parameter, tensor name
+
+    DataType dtype  = 2;  // tensor datatype
+    ShapeDef shape  = 3;  // Shape / dimension
+    string   layout = 4;  // Tensor format, eg: "NCHW", "NHWC", "CHW", "ND"
+
+    bool has_out_attr = 9;
+    int64 size = 10;
+    int64 weight_size = 11;
+    bool reuse_input = 12;
+    bool output_tensor = 13;
+    string device_type = 14;
+    bool input_tensor =15;
+    int64 real_dim_cnt = 16;
+    int64 reuse_input_index = 17;
+    int64 data_offset = 18;
+    int64 cmps_size = 19;
+    string cmps_tab = 20;
+    int64 cmps_tab_offset = 21;
+
+	map<string, AttrDef> attr = 5;  // Set of extra parameter fields
+}
+
+// GeTensor definition
+message TensorDef
+{
+    TensorDescriptor desc = 1;  // Tensor description
+    bytes            data = 2;  // Tensor data
+}
+
+
+// Operator description
+message OpDef
+{
+    string name = 1;  // name
+    string type = 2;  // type
+
+    repeated string input = 5;  // input original op name + outgoing index. op_name:index
+
+    map<string, AttrDef> attr = 10;  // Set of operator parameter fields
+
+    bool has_out_attr = 20;
+    int64 id = 21;
+    int64 stream_id =22;
+    repeated string input_name = 23;
+    repeated string src_name = 24;
+    repeated int64 src_index = 25;
+    repeated string dst_name = 26;
+    repeated int64 dst_index = 27;
+    repeated int64 input_i = 28;
+    repeated int64 output_i = 29;
+    repeated int64 workspace = 30;
+    repeated int64 workspace_bytes = 31;
+    repeated bool is_input_const = 32;
+    repeated TensorDescriptor input_desc = 33;
+    repeated TensorDescriptor output_desc = 34;
+    repeated string subgraph_name = 35;
+}
+
+// Graph definition
+message GraphDef
+{
+    string name   = 1;   //  name
+
+    repeated string input  = 4;  // Graph input
+    repeated string output = 5;  // Graph output
+
+    repeated OpDef op      = 6;  // List of operators
+
+	map<string, AttrDef> attr = 11;  // Extended field
+}
+
+// model definition
+message ModelDef
+{
+	string name         = 1;  // name
+	uint32 version      = 2;  // IR Proto verion
+	string custom_version = 3;  // User model version number, passed in by user
+
+    repeated GraphDef graph = 7;  // Graph definition,graph[0] represents the main diagram in modeldef
+
+    map<string, AttrDef> attr = 11;  // Extended field
+}
+