parent
53f881572e
commit
1c6ba29523
@ -0,0 +1 @@
|
||||
../../proto/ge_api.proto
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,165 @@
|
||||
/* Copyright (C) 2018. Huawei Technologies Co., Ltd. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the Apache License Version 2.0.You may not use this file except in compliance with the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* Apache License for more details at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
syntax = "proto3";
|
||||
|
||||
package domi;
|
||||
|
||||
message ModelTaskDef {
|
||||
string version = 1;
|
||||
|
||||
map<string, string> attr = 9; // Extended field
|
||||
repeated TaskDef task = 10;
|
||||
|
||||
uint64 memory_size = 11;
|
||||
uint32 stream_num = 12;
|
||||
uint32 event_num = 13;
|
||||
uint64 weight_size = 14;
|
||||
|
||||
repeated bytes op = 15; // input/output opdef in bytes
|
||||
|
||||
uint64 base_addr = 16; // base addr
|
||||
uint64 weight_addr = 17; // weight addr
|
||||
uint32 batch_num = 18;
|
||||
}
|
||||
|
||||
|
||||
message TaskDef {
|
||||
uint32 id = 1;
|
||||
uint32 type = 2;
|
||||
|
||||
uint32 stream_id = 10;
|
||||
uint32 event_id = 11;
|
||||
|
||||
KernelDef kernel = 20;
|
||||
KernelExDef kernel_ex = 21;
|
||||
KernelHcclDef kernel_hccl = 25;
|
||||
EventExDef event_ex = 26;
|
||||
LogTimeStampDef log_timestamp = 28;
|
||||
|
||||
uint32 label_id = 30;
|
||||
|
||||
MemcpyAsyncDef memcpy_async = 31;
|
||||
StreamSwitchDef stream_switch = 32;
|
||||
StreamActiveDef stream_active = 33;
|
||||
bytes private_def = 34;
|
||||
uint64 ops_kernel_store_ptr = 35; // adjustments to other fields in the future
|
||||
StreamSwitchNDef stream_switch_n = 36;
|
||||
|
||||
LabelSetDef label_set = 37;
|
||||
LabelGotoExDef label_goto_ex = 38;
|
||||
LabelSwitchByIndexDef label_switch_by_index = 39;
|
||||
}
|
||||
|
||||
message KernelDef {
|
||||
KernelContext context = 1;
|
||||
|
||||
string stub_func = 10;
|
||||
uint32 block_dim = 11;
|
||||
uint32 args_size = 12;
|
||||
bytes args = 13;
|
||||
bytes sm_desc = 14;
|
||||
bytes flowtable = 15;
|
||||
string so_name = 16;
|
||||
string kernel_name = 17;
|
||||
bytes kernel_ext_info = 18;
|
||||
uint32 kernel_ext_info_size = 19;
|
||||
}
|
||||
|
||||
message KernelContext {
|
||||
uint32 kernel_type = 1;
|
||||
uint32 op_id = 2; // OP type in CCE
|
||||
uint32 kernel_func_id = 3;
|
||||
uint32 op_index = 4; // TE/Custom operator
|
||||
bool is_flowtable = 5; // Identify whether args is a flowtable structure
|
||||
bytes args_offset = 6; // args offset information
|
||||
uint32 args_count = 7; // args count
|
||||
repeated uint32 origin_op_index = 8;
|
||||
}
|
||||
|
||||
|
||||
message KernelExDef {
|
||||
uint32 flags = 1;
|
||||
|
||||
uint32 op_index = 4;
|
||||
uint32 args_size = 12;
|
||||
bytes args = 13;
|
||||
bytes task_info = 14; // serialized nodeDef, funcDef, inputoutput
|
||||
uint32 task_info_size = 15;
|
||||
bytes kernel_ext_info = 16;
|
||||
uint32 kernel_ext_info_size = 17;
|
||||
}
|
||||
|
||||
|
||||
message KernelHcclDef {
|
||||
uint32 op_index = 8;
|
||||
string hccl_type = 9;
|
||||
}
|
||||
|
||||
|
||||
message EventExDef {
|
||||
uint32 op_index = 1;
|
||||
uint32 event_type = 2;
|
||||
}
|
||||
|
||||
message LogTimeStampDef {
|
||||
uint64 logid = 1;
|
||||
bool notify = 2;
|
||||
uint32 flat = 3;
|
||||
}
|
||||
|
||||
message MemcpyAsyncDef {
|
||||
uint64 dst = 1;
|
||||
uint64 dst_max = 2;
|
||||
uint64 src = 3;
|
||||
uint64 count = 4;
|
||||
uint32 kind = 5;
|
||||
uint32 op_index = 6;
|
||||
}
|
||||
|
||||
message StreamSwitchDef {
|
||||
uint32 op_index = 1;
|
||||
uint32 true_stream_id = 2;
|
||||
int64 value = 3;
|
||||
uint64 value_ptr = 4;
|
||||
uint32 data_type = 5;
|
||||
}
|
||||
|
||||
message StreamActiveDef {
|
||||
uint32 op_index = 1;
|
||||
uint32 active_stream_id = 2;
|
||||
}
|
||||
|
||||
message StreamSwitchNDef {
|
||||
uint32 op_index = 1;
|
||||
uint32 size = 2;
|
||||
repeated int64 target_value = 3;
|
||||
repeated uint32 true_stream_id = 4;
|
||||
uint32 element_size = 5;
|
||||
uint32 data_type = 6;
|
||||
}
|
||||
|
||||
message LabelSetDef {
|
||||
uint32 op_index = 1;
|
||||
uint32 label_id = 2;
|
||||
uint32 model_id = 3;
|
||||
}
|
||||
|
||||
message LabelGotoExDef {
|
||||
uint32 op_index = 1;
|
||||
uint32 label_id = 2;
|
||||
uint32 model_id = 3;
|
||||
}
|
||||
|
||||
message LabelSwitchByIndexDef {
|
||||
uint32 op_index = 1;
|
||||
uint32 label_max = 2;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,73 @@
|
||||
syntax = "proto3";
|
||||
package aicpu.dump;
|
||||
|
||||
message Shape {
|
||||
repeated uint64 dim = 1;
|
||||
}
|
||||
|
||||
message Output {
|
||||
int32 data_type = 1;
|
||||
int32 format = 2;
|
||||
Shape shape = 3;
|
||||
uint64 address = 4;
|
||||
string original_name = 5;
|
||||
int32 original_output_index = 6;
|
||||
int32 original_output_data_type = 7;
|
||||
int32 original_output_format = 8;
|
||||
uint64 size = 9;
|
||||
}
|
||||
|
||||
message Input {
|
||||
int32 data_type =1;
|
||||
int32 format = 2;
|
||||
Shape shape = 3;
|
||||
uint64 address = 4;
|
||||
uint64 size = 5;
|
||||
}
|
||||
|
||||
enum BufferType {
|
||||
L1 = 0;
|
||||
}
|
||||
|
||||
message OpBuffer {
|
||||
BufferType buffer_type = 1;
|
||||
uint64 address = 2;
|
||||
uint64 size = 3;
|
||||
}
|
||||
|
||||
message Op {
|
||||
string op_name = 1;
|
||||
string op_type = 2;
|
||||
}
|
||||
|
||||
message Task {
|
||||
uint32 task_id = 1;
|
||||
uint32 stream_id = 2;
|
||||
Op op = 3;
|
||||
repeated Output output = 4;
|
||||
bool end_graph = 5;
|
||||
repeated Input input = 6;
|
||||
repeated OpBuffer buffer = 7;
|
||||
}
|
||||
|
||||
message OpMappingInfo {
|
||||
string dump_path = 1;
|
||||
oneof model_name_param {
|
||||
string model_name = 2;
|
||||
}
|
||||
oneof model_id_param {
|
||||
uint32 model_id = 3;
|
||||
}
|
||||
oneof step_id {
|
||||
uint64 step_id_addr = 4;
|
||||
}
|
||||
oneof iterations_per_loop {
|
||||
uint64 iterations_per_loop_addr = 5;
|
||||
}
|
||||
oneof loop_cond {
|
||||
uint64 loop_cond_addr = 6;
|
||||
}
|
||||
uint32 flag = 7; // 0x01 load, 0x00 unload
|
||||
repeated Task task = 8;
|
||||
string dump_step = 9;
|
||||
}
|
@ -0,0 +1,165 @@
|
||||
/* Copyright (C) 2018. Huawei Technologies Co., Ltd. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the Apache License Version 2.0.You may not use this file except in compliance with the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* Apache License for more details at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
syntax = "proto3";
|
||||
|
||||
package domi;
|
||||
|
||||
message ModelTaskDef {
|
||||
string version = 1;
|
||||
|
||||
map<string, string> attr = 9; // Extended field
|
||||
repeated TaskDef task = 10;
|
||||
|
||||
uint64 memory_size = 11;
|
||||
uint32 stream_num = 12;
|
||||
uint32 event_num = 13;
|
||||
uint64 weight_size = 14;
|
||||
|
||||
repeated bytes op = 15; // input/output opdef in bytes
|
||||
|
||||
uint64 base_addr = 16; // base addr
|
||||
uint64 weight_addr = 17; // weight addr
|
||||
uint32 batch_num = 18;
|
||||
}
|
||||
|
||||
|
||||
message TaskDef {
|
||||
uint32 id = 1;
|
||||
uint32 type = 2;
|
||||
|
||||
uint32 stream_id = 10;
|
||||
uint32 event_id = 11;
|
||||
|
||||
KernelDef kernel = 20;
|
||||
KernelExDef kernel_ex = 21;
|
||||
KernelHcclDef kernel_hccl = 25;
|
||||
EventExDef event_ex = 26;
|
||||
LogTimeStampDef log_timestamp = 28;
|
||||
|
||||
uint32 label_id = 30;
|
||||
|
||||
MemcpyAsyncDef memcpy_async = 31;
|
||||
StreamSwitchDef stream_switch = 32;
|
||||
StreamActiveDef stream_active = 33;
|
||||
bytes private_def = 34;
|
||||
uint64 ops_kernel_store_ptr = 35; // adjustments to other fields in the future
|
||||
StreamSwitchNDef stream_switch_n = 36;
|
||||
|
||||
LabelSetDef label_set = 37;
|
||||
LabelGotoExDef label_goto_ex = 38;
|
||||
LabelSwitchByIndexDef label_switch_by_index = 39;
|
||||
}
|
||||
|
||||
message KernelDef {
|
||||
KernelContext context = 1;
|
||||
|
||||
string stub_func = 10;
|
||||
uint32 block_dim = 11;
|
||||
uint32 args_size = 12;
|
||||
bytes args = 13;
|
||||
bytes sm_desc = 14;
|
||||
bytes flowtable = 15;
|
||||
string so_name = 16;
|
||||
string kernel_name = 17;
|
||||
bytes kernel_ext_info = 18;
|
||||
uint32 kernel_ext_info_size = 19;
|
||||
}
|
||||
|
||||
message KernelContext {
|
||||
uint32 kernel_type = 1;
|
||||
uint32 op_id = 2; // OP type in CCE
|
||||
uint32 kernel_func_id = 3;
|
||||
uint32 op_index = 4; // TE/Custom operator
|
||||
bool is_flowtable = 5; // Identify whether args is a flowtable structure
|
||||
bytes args_offset = 6; // args offset information
|
||||
uint32 args_count = 7; // args count
|
||||
repeated uint32 origin_op_index = 8;
|
||||
}
|
||||
|
||||
|
||||
message KernelExDef {
|
||||
uint32 flags = 1;
|
||||
|
||||
uint32 op_index = 4;
|
||||
uint32 args_size = 12;
|
||||
bytes args = 13;
|
||||
bytes task_info = 14; // serialized nodeDef, funcDef, inputoutput
|
||||
uint32 task_info_size = 15;
|
||||
bytes kernel_ext_info = 16;
|
||||
uint32 kernel_ext_info_size = 17;
|
||||
}
|
||||
|
||||
|
||||
message KernelHcclDef {
|
||||
uint32 op_index = 8;
|
||||
string hccl_type = 9;
|
||||
}
|
||||
|
||||
|
||||
message EventExDef {
|
||||
uint32 op_index = 1;
|
||||
uint32 event_type = 2;
|
||||
}
|
||||
|
||||
message LogTimeStampDef {
|
||||
uint64 logid = 1;
|
||||
bool notify = 2;
|
||||
uint32 flat = 3;
|
||||
}
|
||||
|
||||
message MemcpyAsyncDef {
|
||||
uint64 dst = 1;
|
||||
uint64 dst_max = 2;
|
||||
uint64 src = 3;
|
||||
uint64 count = 4;
|
||||
uint32 kind = 5;
|
||||
uint32 op_index = 6;
|
||||
}
|
||||
|
||||
message StreamSwitchDef {
|
||||
uint32 op_index = 1;
|
||||
uint32 true_stream_id = 2;
|
||||
int64 value = 3;
|
||||
uint64 value_ptr = 4;
|
||||
uint32 data_type = 5;
|
||||
}
|
||||
|
||||
message StreamActiveDef {
|
||||
uint32 op_index = 1;
|
||||
uint32 active_stream_id = 2;
|
||||
}
|
||||
|
||||
message StreamSwitchNDef {
|
||||
uint32 op_index = 1;
|
||||
uint32 size = 2;
|
||||
repeated int64 target_value = 3;
|
||||
repeated uint32 true_stream_id = 4;
|
||||
uint32 element_size = 5;
|
||||
uint32 data_type = 6;
|
||||
}
|
||||
|
||||
message LabelSetDef {
|
||||
uint32 op_index = 1;
|
||||
uint32 label_id = 2;
|
||||
uint32 model_id = 3;
|
||||
}
|
||||
|
||||
message LabelGotoExDef {
|
||||
uint32 op_index = 1;
|
||||
uint32 label_id = 2;
|
||||
uint32 model_id = 3;
|
||||
}
|
||||
|
||||
message LabelSwitchByIndexDef {
|
||||
uint32 op_index = 1;
|
||||
uint32 label_max = 2;
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package domi.tensorflow;
|
||||
option cc_enable_arenas = true;
|
||||
option java_outer_classname = "AttrValueProtos";
|
||||
option java_multiple_files = true;
|
||||
option java_package = "org.tensorflow.framework";
|
||||
|
||||
import "tensor.proto";
|
||||
import "tensor_shape.proto";
|
||||
import "types.proto";
|
||||
|
||||
// Protocol buffer representing the value for an attr used to configure an Op.
|
||||
// Comment indicates the corresponding attr type. Only the field matching the
|
||||
// attr type may be filled.
|
||||
message AttrValue {
|
||||
// LINT.IfChange
|
||||
message ListValue {
|
||||
repeated bytes s = 2; // "list(string)"
|
||||
repeated int64 i = 3 [packed = true]; // "list(int)"
|
||||
repeated float f = 4 [packed = true]; // "list(float)"
|
||||
repeated bool b = 5 [packed = true]; // "list(bool)"
|
||||
repeated DataType type = 6 [packed = true]; // "list(type)"
|
||||
repeated TensorShapeProto shape = 7; // "list(shape)"
|
||||
repeated TensorProto tensor = 8; // "list(tensor)"
|
||||
repeated NameAttrList func = 9; // "list(attr)"
|
||||
}
|
||||
// LINT.ThenChange(https://www.tensorflow.org/code/tensorflow/c/c_api.cc)
|
||||
|
||||
oneof value {
|
||||
bytes s = 2; // "string"
|
||||
int64 i = 3; // "int"
|
||||
float f = 4; // "float"
|
||||
bool b = 5; // "bool"
|
||||
DataType type = 6; // "type"
|
||||
TensorShapeProto shape = 7; // "shape"
|
||||
TensorProto tensor = 8; // "tensor"
|
||||
ListValue list = 1; // any "list(...)"
|
||||
|
||||
// "func" represents a function. func.name is a function's name or
|
||||
// a primitive op's name. func.attr.first is the name of an attr
|
||||
// defined for that function. func.attr.second is the value for
|
||||
// that attr in the instantiation.
|
||||
NameAttrList func = 10;
|
||||
|
||||
// This is a placeholder only used in nodes defined inside a
|
||||
// function. It indicates the attr value will be supplied when
|
||||
// the function is instantiated. For example, let us suppose a
|
||||
// node "N" in function "FN". "N" has an attr "A" with value
|
||||
// placeholder = "foo". When FN is instantiated with attr "foo"
|
||||
// set to "bar", the instantiated node N's attr A will have been
|
||||
// given the value "bar".
|
||||
string placeholder = 9;
|
||||
}
|
||||
}
|
||||
|
||||
// A list of attr names and their values. The whole list is attached
|
||||
// with a string name. E.g., MatMul[T=float].
|
||||
message NameAttrList {
|
||||
string name = 1;
|
||||
map<string, AttrValue> attr = 2;
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package domi.tensorflow;
|
||||
option cc_enable_arenas = true;
|
||||
option java_outer_classname = "FunctionProtos";
|
||||
option java_multiple_files = true;
|
||||
option java_package = "org.tensorflow.framework";
|
||||
|
||||
import "attr_value.proto";
|
||||
import "node_def.proto";
|
||||
import "op_def.proto";
|
||||
|
||||
// A library is a set of named functions.
|
||||
message FunctionDefLibrary {
|
||||
repeated FunctionDef function = 1;
|
||||
repeated GradientDef gradient = 2;
|
||||
}
|
||||
|
||||
// A function can be instantiated when the runtime can bind every attr
|
||||
// with a value. When a GraphDef has a call to a function, it must
|
||||
// have binding for every attr defined in the signature.
|
||||
// * device spec, etc.
|
||||
message FunctionDef {
|
||||
// The definition of the function's name, arguments, return values,
|
||||
// attrs etc.
|
||||
OpDef signature = 1;
|
||||
|
||||
// Attributes specific to this function definition.
|
||||
map<string, AttrValue> attr = 5;
|
||||
|
||||
// NOTE: field id 2 deleted on Jan 11, 2017, GraphDef version 21.
|
||||
reserved 2;
|
||||
|
||||
// In both of the following fields, there is the need to specify an
|
||||
// output that is used as either the input to another node (in
|
||||
// `node_def`) or as a return value of the function (in `ret`).
|
||||
// Unlike the NodeDefs in GraphDef, we need to be able to specify a
|
||||
// list in some cases (instead of just single outputs). Also, we
|
||||
// need to be able to deal with lists of unknown length (so the
|
||||
// output index may not be known at function definition time). So
|
||||
// we use the following format instead:
|
||||
// * "fun_in" where "fun_in" is the name of a function input arg in
|
||||
// the `signature` field above. This represents that input, whether
|
||||
// it is a single tensor or a list.
|
||||
// * "fun_in:0" gives the first element of a function input arg (a
|
||||
// non-list input is considered a list of length 1 for these
|
||||
// purposes).
|
||||
// * "node:out" where "node" is the name of a node in `node_def` and
|
||||
// "out" is the name one of its op's output arguments (the name
|
||||
// comes from the OpDef of the node's op). This represents that
|
||||
// node's output, whether it is a single tensor or a list.
|
||||
// Note: We enforce that an op's output arguments are never
|
||||
// renamed in the backwards-compatibility test.
|
||||
// * "node:out:0" gives the first element of a node output arg (a
|
||||
// non-list output is considered a list of length 1 for these
|
||||
// purposes).
|
||||
//
|
||||
// NOT CURRENTLY SUPPORTED (but may be in the future):
|
||||
// * "node:out:-1" gives last element in a node output list
|
||||
// * "node:out:1:" gives a list with all but the first element in a
|
||||
// node output list
|
||||
// * "node:out::-1" gives a list with all but the last element in a
|
||||
// node output list
|
||||
|
||||
// The body of the function. Unlike the NodeDefs in a GraphDef, attrs
|
||||
// may have values of type `placeholder` and the `input` field uses
|
||||
// the "output" format above.
|
||||
|
||||
// By convention, "op" in node_def is resolved by consulting with a
|
||||
// user-defined library first. If not resolved, "func" is assumed to
|
||||
// be a builtin op.
|
||||
repeated NodeDef node_def = 3;
|
||||
|
||||
// A mapping from the output arg names from `signature` to the
|
||||
// outputs from `node_def` that should be returned by the function.
|
||||
map<string, string> ret = 4;
|
||||
}
|
||||
|
||||
// GradientDef defines the gradient function of a function defined in
|
||||
// a function library.
|
||||
//
|
||||
// A gradient function g (specified by gradient_func) for a function f
|
||||
// (specified by function_name) must follow the following:
|
||||
//
|
||||
// The function 'f' must be a numerical function which takes N inputs
|
||||
// and produces M outputs. Its gradient function 'g', which is a
|
||||
// function taking N + M inputs and produces N outputs.
|
||||
//
|
||||
// I.e. if we have
|
||||
// (y1, y2, ..., y_M) = f(x1, x2, ..., x_N),
|
||||
// then, g is
|
||||
// (dL/dx1, dL/dx2, ..., dL/dx_N) = g(x1, x2, ..., x_N,
|
||||
// dL/dy1, dL/dy2, ..., dL/dy_M),
|
||||
// where L is a scalar-value function of (x1, x2, ..., xN) (e.g., the
|
||||
// loss function). dL/dx_i is the partial derivative of L with respect
|
||||
// to x_i.
|
||||
message GradientDef {
|
||||
string function_name = 1; // The function name.
|
||||
string gradient_func = 2; // The gradient function's name.
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package domi.tensorflow;
|
||||
option cc_enable_arenas = true;
|
||||
option java_outer_classname = "GraphProtos";
|
||||
option java_multiple_files = true;
|
||||
option java_package = "org.tensorflow.framework";
|
||||
|
||||
import "node_def.proto";
|
||||
import "function.proto";
|
||||
import "versions.proto";
|
||||
|
||||
// Represents the graph of operations
|
||||
message GraphDef {
|
||||
repeated NodeDef node = 1;
|
||||
|
||||
// Compatibility versions of the graph. See core/public/version.h for version
|
||||
// history. The GraphDef version is distinct from the TensorFlow version, and
|
||||
// each release of TensorFlow will support a range of GraphDef versions.
|
||||
VersionDef versions = 4;
|
||||
|
||||
// Deprecated single version field; use versions above instead. Since all
|
||||
// GraphDef changes before "versions" was introduced were forward
|
||||
// compatible, this field is entirely ignored.
|
||||
int32 version = 3 [deprecated = true];
|
||||
|
||||
// EXPERIMENTAL. DO NOT USE OR DEPEND ON THIS YET.
|
||||
//
|
||||
// "library" provides user-defined functions.
|
||||
//
|
||||
// Naming:
|
||||
// * library.function.name are in a flat namespace.
|
||||
// NOTE: We may need to change it to be hierarchical to support
|
||||
// different orgs. E.g.,
|
||||
// { "/google/nn", { ... }},
|
||||
// { "/google/vision", { ... }}
|
||||
// { "/org_foo/module_bar", { ... }}
|
||||
// map<string, FunctionDefLib> named_lib;
|
||||
// * If node[i].op is the name of one function in "library",
|
||||
// node[i] is deemed as a function call. Otherwise, node[i].op
|
||||
// must be a primitive operation supported by the runtime.
|
||||
//
|
||||
//
|
||||
// Function call semantics:
|
||||
//
|
||||
// * The callee may start execution as soon as some of its inputs
|
||||
// are ready. The caller may want to use Tuple() mechanism to
|
||||
// ensure all inputs are ready in the same time.
|
||||
//
|
||||
// * The consumer of return values may start executing as soon as
|
||||
// the return values the consumer depends on are ready. The
|
||||
// consumer may want to use Tuple() mechanism to ensure the
|
||||
// consumer does not start until all return values of the callee
|
||||
// function are ready.
|
||||
FunctionDefLibrary library = 2;
|
||||
};
|
@ -0,0 +1,14 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package domi.tensorflow;
|
||||
|
||||
import "graph.proto";
|
||||
|
||||
message GeGraphDef {
|
||||
string name = 1;
|
||||
GraphDef graph = 2;
|
||||
}
|
||||
|
||||
message GraphDefLibrary {
|
||||
repeated GeGraphDef graph_def = 1;
|
||||
};
|
@ -0,0 +1,63 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package domi.tensorflow;
|
||||
option cc_enable_arenas = true;
|
||||
option java_outer_classname = "NodeProto";
|
||||
option java_multiple_files = true;
|
||||
option java_package = "org.tensorflow.framework";
|
||||
|
||||
import "attr_value.proto";
|
||||
|
||||
message NodeDef {
|
||||
// The name given to this operator. Used for naming inputs,
|
||||
// logging, visualization, etc. Unique within a single GraphDef.
|
||||
// Must match the regexp "[A-Za-z0-9.][A-Za-z0-9_./]*".
|
||||
string name = 1;
|
||||
|
||||
// The operation name. There may be custom parameters in attrs.
|
||||
// Op names starting with an underscore are reserved for internal use.
|
||||
string op = 2;
|
||||
|
||||
// Each input is "node:src_output" with "node" being a string name and
|
||||
// "src_output" indicating which output tensor to use from "node". If
|
||||
// "src_output" is 0 the ":0" suffix can be omitted. Regular inputs
|
||||
// may optionally be followed by control inputs that have the format
|
||||
// "^node".
|
||||
repeated string input = 3;
|
||||
|
||||
// A (possibly partial) specification for the device on which this
|
||||
// node should be placed.
|
||||
// The expected syntax for this string is as follows:
|
||||
//
|
||||
// DEVICE_SPEC ::= PARTIAL_SPEC
|
||||
//
|
||||
// PARTIAL_SPEC ::= ("/" CONSTRAINT) *
|
||||
// CONSTRAINT ::= ("job:" JOB_NAME)
|
||||
// | ("replica:" [1-9][0-9]*)
|
||||
// | ("task:" [1-9][0-9]*)
|
||||
// | ("device:" [A-Za-z]* ":" ([1-9][0-9]* | "*") )
|
||||
//
|
||||
// Valid values for this string include:
|
||||
// * "/job:worker/replica:0/task:1/device:GPU:3" (full specification)
|
||||
// * "/job:worker/device:GPU:3" (partial specification)
|
||||
// * "" (no specification)
|
||||
//
|
||||
// If the constraints do not resolve to a single device (or if this
|
||||
// field is empty or not present), the runtime will attempt to
|
||||
// choose a device automatically.
|
||||
string device = 4;
|
||||
|
||||
// Operation-specific graph-construction-time configuration.
|
||||
// Note that this should include all attrs defined in the
|
||||
// corresponding OpDef, including those with a value matching
|
||||
// the default -- this allows the default to change and makes
|
||||
// NodeDefs easier to interpret on their own. However, if
|
||||
// an attr with a default is not specified in this list, the
|
||||
// default will be used.
|
||||
// The "names" (keys) must match the regexp "[a-z][a-z0-9_]+" (and
|
||||
// one of the names from the corresponding OpDef's attr field).
|
||||
// The values must have a type matching the corresponding OpDef
|
||||
// attr's type field.
|
||||
// Add some examples here showing best practices.
|
||||
map<string, AttrValue> attr = 5;
|
||||
};
|
@ -0,0 +1,164 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package domi.tensorflow;
|
||||
option cc_enable_arenas = true;
|
||||
option java_outer_classname = "OpDefProtos";
|
||||
option java_multiple_files = true;
|
||||
option java_package = "org.tensorflow.framework";
|
||||
|
||||
import "attr_value.proto";
|
||||
import "types.proto";
|
||||
|
||||
// Defines an operation. A NodeDef in a GraphDef specifies an Op by
|
||||
// using the "op" field which should match the name of a OpDef.
|
||||
// LINT.IfChange
|
||||
message OpDef {
|
||||
// Op names starting with an underscore are reserved for internal use.
|
||||
// Names should be CamelCase and match the regexp "[A-Z][a-zA-Z0-9_]*".
|
||||
string name = 1;
|
||||
|
||||
// For describing inputs and outputs.
|
||||
message ArgDef {
|
||||
// Name for the input/output. Should match the regexp "[a-z][a-z0-9_]*".
|
||||
string name = 1;
|
||||
|
||||
// Human readable description.
|
||||
string description = 2;
|
||||
|
||||
// Describes the type of one or more tensors that are accepted/produced
|
||||
// by this input/output arg. The only legal combinations are:
|
||||
// * For a single tensor: either the "type" field is set or the
|
||||
// "type_attr" field is set to the name of an attr with type "type".
|
||||
// * For a sequence of tensors with the same type: the "number_attr"
|
||||
// field will be set to the name of an attr with type "int", and
|
||||
// either the "type" or "type_attr" field will be set as for
|
||||
// single tensors.
|
||||
// * For a sequence of tensors, the "type_list_attr" field will be set
|
||||
// to the name of an attr with type "list(type)".
|
||||
DataType type = 3;
|
||||
string type_attr = 4; // if specified, attr must have type "type"
|
||||
string number_attr = 5; // if specified, attr must have type "int"
|
||||
// If specified, attr must have type "list(type)", and none of
|
||||
// type, type_attr, and number_attr may be specified.
|
||||
string type_list_attr = 6;
|
||||
|
||||
// For inputs: if true, the inputs are required to be refs.
|
||||
// By default, inputs can be either refs or non-refs.
|
||||
// For outputs: if true, outputs are refs, otherwise they are not.
|
||||
bool is_ref = 16;
|
||||
};
|
||||
|
||||
// Description of the input(s).
|
||||
repeated ArgDef input_arg = 2;
|
||||
|
||||
// Description of the output(s).
|
||||
repeated ArgDef output_arg = 3;
|
||||
|
||||
// Description of the graph-construction-time configuration of this
|
||||
// Op. That is to say, this describes the attr fields that will
|
||||
// be specified in the NodeDef.
|
||||
message AttrDef {
|
||||
// A descriptive name for the argument. May be used, e.g. by the
|
||||
// Python client, as a keyword argument name, and so should match
|
||||
// the regexp "[a-z][a-z0-9_]+".
|
||||
string name = 1;
|
||||
|
||||
// One of the type names from attr_value.proto ("string", "list(string)",
|
||||
// "int", etc.).
|
||||
string type = 2;
|
||||
|
||||
// A reasonable default for this attribute if the user does not supply
|
||||
// a value. If not specified, the user must supply a value.
|
||||
AttrValue default_value = 3;
|
||||
|
||||
// Human-readable description.
|
||||
string description = 4;
|
||||
|
||||
|
||||
// --- Constraints ---
|
||||
// These constraints are only in effect if specified. Default is no
|
||||
// constraints.
|
||||
|
||||
// For type == "int", this is a minimum value. For "list(___)"
|
||||
// types, this is the minimum length.
|
||||
bool has_minimum = 5;
|
||||
int64 minimum = 6;
|
||||
|
||||
// The set of allowed values. Has type that is the "list" version
|
||||
// of the "type" field above (uses the "list" field of AttrValue).
|
||||
// If type == "type" or "list(type)" above, then the "type" field
|
||||
// of "allowed_values.list" has the set of allowed DataTypes.
|
||||
// If type == "string" or "list(string)", then the "s" field of
|
||||
// "allowed_values.list" has the set of allowed strings.
|
||||
AttrValue allowed_values = 7;
|
||||
}
|
||||
repeated AttrDef attr = 4;
|
||||
|
||||
// Optional deprecation based on GraphDef versions.
|
||||
OpDeprecation deprecation = 8;
|
||||
|
||||
// One-line human-readable description of what the Op does.
|
||||
string summary = 5;
|
||||
|
||||
// Additional, longer human-readable description of what the Op does.
|
||||
string description = 6;
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Which optimizations this operation can participate in.
|
||||
|
||||
// True if the operation is commutative ("op(a,b) == op(b,a)" for all inputs)
|
||||
bool is_commutative = 18;
|
||||
|
||||
// If is_aggregate is true, then this operation accepts N >= 2
|
||||
// inputs and produces 1 output all of the same type. Should be
|
||||
// associative and commutative, and produce output with the same
|
||||
// shape as the input. The optimizer may replace an aggregate op
|
||||
// taking input from multiple devices with a tree of aggregate ops
|
||||
// that aggregate locally within each device (and possibly within
|
||||
// groups of nearby devices) before communicating.
|
||||
bool is_aggregate = 16; // for things like add
|
||||
|
||||
// Other optimizations go here, like
|
||||
// can_alias_input, rewrite_when_output_unused, partitioning_strategy, etc.
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Optimization constraints.
|
||||
|
||||
// Ops are marked as stateful if their behavior depends on some state beyond
|
||||
// their input tensors (e.g. variable reading op) or if they have
|
||||
// a side-effect (e.g. printing or asserting ops). Equivalently, stateless ops
|
||||
// must always produce the same output for the same input and have
|
||||
// no side-effects.
|
||||
//
|
||||
// By default Ops may be moved between devices. Stateful ops should
|
||||
// either not be moved, or should only be moved if that state can also
|
||||
// be moved (e.g. via some sort of save / restore).
|
||||
// Stateful ops are guaranteed to never be optimized away by Common
|
||||
// Subexpression Elimination (CSE).
|
||||
bool is_stateful = 17; // for things like variables, queue
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Non-standard options.
|
||||
|
||||
// By default, all inputs to an Op must be initialized Tensors. Ops
|
||||
// that may initialize tensors for the first time should set this
|
||||
// field to true, to allow the Op to take an uninitialized Tensor as
|
||||
// input.
|
||||
bool allows_uninitialized_input = 19; // for Assign, etc.
|
||||
};
|
||||
// LINT.ThenChange(
|
||||
// https://www.tensorflow.org/code/tensorflow/core/framework/op_def_util.cc)
|
||||
|
||||
// Information about version-dependent deprecation of an op
|
||||
message OpDeprecation {
|
||||
// First GraphDef version at which the op is disallowed.
|
||||
int32 version = 1;
|
||||
|
||||
// Explanation of why it was deprecated and what to use instead.
|
||||
string explanation = 2;
|
||||
};
|
||||
|
||||
// A collection of OpDefs
|
||||
message OpList {
|
||||
repeated OpDef op = 1;
|
||||
};
|
@ -0,0 +1,29 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package domi.tensorflow;
|
||||
option cc_enable_arenas = true;
|
||||
option java_outer_classname = "ResourceHandle";
|
||||
option java_multiple_files = true;
|
||||
option java_package = "org.tensorflow.framework";
|
||||
|
||||
// Protocol buffer representing a handle to a tensorflow resource. Handles are
|
||||
// not valid across executions, but can be serialized back and forth from within
|
||||
// a single run.
|
||||
message ResourceHandleProto {
|
||||
// Unique name for the device containing the resource.
|
||||
string device = 1;
|
||||
|
||||
// Container in which this resource is placed.
|
||||
string container = 2;
|
||||
|
||||
// Unique name of this resource.
|
||||
string name = 3;
|
||||
|
||||
// Hash code for the type of the resource. Is only valid in the same device
|
||||
// and in the same execution.
|
||||
uint64 hash_code = 4;
|
||||
|
||||
// For debug-only, the name of the type pointed to by this handle, if
|
||||
// available.
|
||||
string maybe_type_name = 5;
|
||||
};
|
@ -0,0 +1,94 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package domi.tensorflow;
|
||||
option cc_enable_arenas = true;
|
||||
option java_outer_classname = "TensorProtos";
|
||||
option java_multiple_files = true;
|
||||
option java_package = "org.tensorflow.framework";
|
||||
|
||||
import "resource_handle.proto";
|
||||
import "tensor_shape.proto";
|
||||
import "types.proto";
|
||||
|
||||
// Protocol buffer representing a tensor.
|
||||
message TensorProto {
|
||||
DataType dtype = 1;
|
||||
|
||||
// Shape of the tensor.
|
||||
TensorShapeProto tensor_shape = 2;
|
||||
|
||||
// Only one of the representations below is set, one of "tensor_contents" and
|
||||
// the "xxx_val" attributes. We are not using oneof because as oneofs cannot
|
||||
// contain repeated fields it would require another extra set of messages.
|
||||
|
||||
// Version number.
|
||||
//
|
||||
// In version 0, if the "repeated xxx" representations contain only one
|
||||
// element, that element is repeated to fill the shape. This makes it easy
|
||||
// to represent a constant Tensor with a single value.
|
||||
int32 version_number = 3;
|
||||
|
||||
// Serialized raw tensor content from either Tensor::AsProtoTensorContent or
|
||||
// memcpy in tensorflow::grpc::EncodeTensorToByteBuffer. This representation
|
||||
// can be used for all tensor types. The purpose of this representation is to
|
||||
// reduce serialization overhead during RPC call by avoiding serialization of
|
||||
// many repeated small items.
|
||||
bytes tensor_content = 4;
|
||||
|
||||
// Type specific representations that make it easy to create tensor protos in
|
||||
// all languages. Only the representation corresponding to "dtype" can
|
||||
// be set. The values hold the flattened representation of the tensor in
|
||||
// row major order.
|
||||
|
||||
// DT_HALF, DT_BFLOAT16. Note that since protobuf has no int16 type, we'll
|
||||
// have some pointless zero padding for each value here.
|
||||
repeated int32 half_val = 13 [packed = true];
|
||||
|
||||
// DT_FLOAT.
|
||||
repeated float float_val = 5 [packed = true];
|
||||
|
||||
// DT_DOUBLE.
|
||||
repeated double double_val = 6 [packed = true];
|
||||
|
||||
// DT_INT32, DT_INT16, DT_INT8, DT_UINT8.
|
||||
repeated int32 int_val = 7 [packed = true];
|
||||
|
||||
// DT_STRING
|
||||
repeated bytes string_val = 8;
|
||||
|
||||
// DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real
|
||||
// and imaginary parts of i-th single precision complex.
|
||||
repeated float scomplex_val = 9 [packed = true];
|
||||
|
||||
// DT_INT64
|
||||
repeated int64 int64_val = 10 [packed = true];
|
||||
|
||||
// DT_BOOL
|
||||
repeated bool bool_val = 11 [packed = true];
|
||||
|
||||
// DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real
|
||||
// and imaginary parts of i-th double precision complex.
|
||||
repeated double dcomplex_val = 12 [packed = true];
|
||||
|
||||
// DT_RESOURCE
|
||||
repeated ResourceHandleProto resource_handle_val = 14;
|
||||
|
||||
// DT_VARIANT
|
||||
repeated VariantTensorDataProto variant_val = 15;
|
||||
|
||||
// DT_UINT32
|
||||
repeated uint32 uint32_val = 16 [packed = true];
|
||||
|
||||
// DT_UINT64
|
||||
repeated uint64 uint64_val = 17 [packed = true];
|
||||
};
|
||||
|
||||
// Protocol buffer representing the serialization format of DT_VARIANT tensors.
|
||||
message VariantTensorDataProto {
|
||||
// Name of the type of objects being serialized.
|
||||
string type_name = 1;
|
||||
// Portions of the object that are not Tensors.
|
||||
bytes metadata = 2;
|
||||
// Tensors contained within objects being serialized.
|
||||
repeated TensorProto tensors = 3;
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
// Protocol buffer representing the shape of tensors.
|
||||
|
||||
syntax = "proto3";
|
||||
option cc_enable_arenas = true;
|
||||
option java_outer_classname = "TensorShapeProtos";
|
||||
option java_multiple_files = true;
|
||||
option java_package = "org.tensorflow.framework";
|
||||
|
||||
package domi.tensorflow;
|
||||
|
||||
// Dimensions of a tensor.
|
||||
message TensorShapeProto {
|
||||
// One dimension of the tensor.
|
||||
message Dim {
|
||||
// Size of the tensor in that dimension.
|
||||
// This value must be >= -1, but values of -1 are reserved for "unknown"
|
||||
// shapes (values of -1 mean "unknown" dimension). Certain wrappers
|
||||
// that work with TensorShapeProto may fail at runtime when deserializing
|
||||
// a TensorShapeProto containing a dim value of -1.
|
||||
int64 size = 1;
|
||||
|
||||
// Optional name of the tensor dimension.
|
||||
string name = 2;
|
||||
};
|
||||
|
||||
// Dimensions of the tensor, such as {"input", 30}, {"output", 40}
|
||||
// for a 30 x 40 2D tensor. If an entry has size -1, this
|
||||
// corresponds to a dimension of unknown size. The names are
|
||||
// optional.
|
||||
//
|
||||
// The order of entries in "dim" matters: It indicates the layout of the
|
||||
// values in the tensor in-memory representation.
|
||||
//
|
||||
// The first entry in "dim" is the outermost dimension used to layout the
|
||||
// values, the last entry is the innermost dimension. This matches the
|
||||
// in-memory layout of RowMajor Eigen tensors.
|
||||
//
|
||||
// If "dim.size()" > 0, "unknown_rank" must be false.
|
||||
repeated Dim dim = 2;
|
||||
|
||||
// If true, the number of dimensions in the shape is unknown.
|
||||
//
|
||||
// If true, "dim.size()" must be 0.
|
||||
bool unknown_rank = 3;
|
||||
};
|
@ -0,0 +1,74 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package domi.tensorflow;
|
||||
option cc_enable_arenas = true;
|
||||
option java_outer_classname = "TypesProtos";
|
||||
option java_multiple_files = true;
|
||||
option java_package = "org.tensorflow.framework";
|
||||
|
||||
// LINT.IfChange
|
||||
enum DataType {
|
||||
// Not a legal value for DataType. Used to indicate a DataType field
|
||||
// has not been set.
|
||||
DT_INVALID = 0;
|
||||
|
||||
// Data types that all computation devices are expected to be
|
||||
// capable to support.
|
||||
DT_FLOAT = 1;
|
||||
DT_DOUBLE = 2;
|
||||
DT_INT32 = 3;
|
||||
DT_UINT8 = 4;
|
||||
DT_INT16 = 5;
|
||||
DT_INT8 = 6;
|
||||
DT_STRING = 7;
|
||||
DT_COMPLEX64 = 8; // Single-precision complex
|
||||
DT_INT64 = 9;
|
||||
DT_BOOL = 10;
|
||||
DT_QINT8 = 11; // Quantized int8
|
||||
DT_QUINT8 = 12; // Quantized uint8
|
||||
DT_QINT32 = 13; // Quantized int32
|
||||
DT_BFLOAT16 = 14; // Float32 truncated to 16 bits. Only for cast ops.
|
||||
DT_QINT16 = 15; // Quantized int16
|
||||
DT_QUINT16 = 16; // Quantized uint16
|
||||
DT_UINT16 = 17;
|
||||
DT_COMPLEX128 = 18; // Double-precision complex
|
||||
DT_HALF = 19;
|
||||
DT_RESOURCE = 20;
|
||||
DT_VARIANT = 21; // Arbitrary C++ data types
|
||||
DT_UINT32 = 22;
|
||||
DT_UINT64 = 23;
|
||||
|
||||
// Do not use! These are only for parameters. Every enum above
|
||||
// should have a corresponding value below (verified by types_test).
|
||||
DT_FLOAT_REF = 101;
|
||||
DT_DOUBLE_REF = 102;
|
||||
DT_INT32_REF = 103;
|
||||
DT_UINT8_REF = 104;
|
||||
DT_INT16_REF = 105;
|
||||
DT_INT8_REF = 106;
|
||||
DT_STRING_REF = 107;
|
||||
DT_COMPLEX64_REF = 108;
|
||||
DT_INT64_REF = 109;
|
||||
DT_BOOL_REF = 110;
|
||||
DT_QINT8_REF = 111;
|
||||
DT_QUINT8_REF = 112;
|
||||
DT_QINT32_REF = 113;
|
||||
DT_BFLOAT16_REF = 114;
|
||||
DT_QINT16_REF = 115;
|
||||
DT_QUINT16_REF = 116;
|
||||
DT_UINT16_REF = 117;
|
||||
DT_COMPLEX128_REF = 118;
|
||||
DT_HALF_REF = 119;
|
||||
DT_RESOURCE_REF = 120;
|
||||
DT_VARIANT_REF = 121;
|
||||
DT_UINT32_REF = 122;
|
||||
DT_UINT64_REF = 123;
|
||||
}
|
||||
// LINT.ThenChange(
|
||||
// https://www.tensorflow.org/code/tensorflow/c/c_api.h,
|
||||
// https://www.tensorflow.org/code/tensorflow/go/tensor.go,
|
||||
// https://www.tensorflow.org/code/tensorflow/core/framework/tensor.cc,
|
||||
// https://www.tensorflow.org/code/tensorflow/core/framework/types.h,
|
||||
// https://www.tensorflow.org/code/tensorflow/core/framework/types.cc,
|
||||
// https://www.tensorflow.org/code/tensorflow/python/framework/dtypes.py,
|
||||
// https://www.tensorflow.org/code/tensorflow/python/framework/function.py)
|
@ -0,0 +1,31 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package domi.tensorflow;
|
||||
option cc_enable_arenas = true;
|
||||
option java_outer_classname = "VersionsProtos";
|
||||
option java_multiple_files = true;
|
||||
option java_package = "org.tensorflow.framework";
|
||||
|
||||
// Version information for a piece of serialized data
|
||||
//
|
||||
// There are different types of versions for each type of data
|
||||
// (GraphDef, etc.), but they all have the same common shape
|
||||
// described here.
|
||||
//
|
||||
// Each consumer has "consumer" and "min_producer" versions (specified
|
||||
// elsewhere). A consumer is allowed to consume this data if
|
||||
//
|
||||
// producer >= min_producer
|
||||
// consumer >= min_consumer
|
||||
// consumer not in bad_consumers
|
||||
//
|
||||
message VersionDef {
|
||||
// The version of the code that produced this data.
|
||||
int32 producer = 1;
|
||||
|
||||
// Any consumer below this version is not allowed to consume this data.
|
||||
int32 min_consumer = 2;
|
||||
|
||||
// Specific consumer versions which are disallowed (e.g. due to bugs).
|
||||
repeated int32 bad_consumers = 3;
|
||||
};
|
@ -0,0 +1,111 @@
|
||||
syntax = "proto3";
|
||||
package toolkit.dumpdata;
|
||||
|
||||
enum OutputDataType {
|
||||
DT_UNDEFINED = 0;
|
||||
DT_FLOAT = 1;
|
||||
DT_FLOAT16 = 2;
|
||||
DT_INT8 = 3;
|
||||
DT_UINT8 = 4;
|
||||
DT_INT16 = 5;
|
||||
DT_UINT16 = 6;
|
||||
DT_INT32 = 7;
|
||||
DT_INT64 = 8;
|
||||
DT_UINT32 = 9;
|
||||
DT_UINT64 = 10;
|
||||
DT_BOOL = 11;
|
||||
DT_DOUBLE = 12;
|
||||
DT_STRING = 13;
|
||||
DT_DUAL_SUB_INT8 = 14;
|
||||
DT_DUAL_SUB_UINT8 = 15;
|
||||
DT_COMPLEX64 = 16;
|
||||
DT_COMPLEX128 = 17;
|
||||
DT_QINT8 = 18;
|
||||
DT_QINT16 = 19;
|
||||
DT_QINT32 = 20;
|
||||
DT_QUINT8 = 21;
|
||||
DT_QUINT16 = 22;
|
||||
DT_RESOURCE = 23;
|
||||
DT_STRING_REF = 24;
|
||||
DT_DUAL = 25;
|
||||
}
|
||||
|
||||
enum OutputFormat {
|
||||
FORMAT_NCHW = 0;
|
||||
FORMAT_NHWC = 1;
|
||||
FORMAT_ND = 2;
|
||||
FORMAT_NC1HWC0 = 3;
|
||||
FORMAT_FRACTAL_Z = 4;
|
||||
FORMAT_NC1C0HWPAD = 5;
|
||||
FORMAT_NHWC1C0 = 6;
|
||||
FORMAT_FSR_NCHW = 7;
|
||||
FORMAT_FRACTAL_DECONV = 8;
|
||||
FORMAT_C1HWNC0 = 9;
|
||||
FORMAT_FRACTAL_DECONV_TRANSPOSE = 10;
|
||||
FORMAT_FRACTAL_DECONV_SP_STRIDE_TRANS = 11;
|
||||
FORMAT_NC1HWC0_C04 = 12;
|
||||
FORMAT_FRACTAL_Z_C04 = 13;
|
||||
FORMAT_CHWN = 14;
|
||||
FORMAT_FRACTAL_DECONV_SP_STRIDE8_TRANS = 15;
|
||||
FORMAT_HWCN = 16;
|
||||
FORMAT_NC1KHKWHWC0 = 17;
|
||||
FORMAT_BN_WEIGHT = 18;
|
||||
FORMAT_FILTER_HWCK = 19;
|
||||
FORMAT_HASHTABLE_LOOKUP_LOOKUPS=20;
|
||||
FORMAT_HASHTABLE_LOOKUP_KEYS = 21;
|
||||
FORMAT_HASHTABLE_LOOKUP_VALUE = 22;
|
||||
FORMAT_HASHTABLE_LOOKUP_OUTPUT = 23;
|
||||
FORMAT_HASHTABLE_LOOKUP_HITS=24;
|
||||
FORMAT_C1HWNCoC0 = 25;
|
||||
FORMAT_MD = 26;
|
||||
FORMAT_NDHWC = 27;
|
||||
FORMAT_FRACTAL_ZZ = 28;
|
||||
FORMAT_FRACTAL_NZ = 29;
|
||||
FORMAT_RESERVED = 30;
|
||||
}
|
||||
|
||||
message OriginalOp {
|
||||
string name = 1;
|
||||
uint32 output_index = 2;
|
||||
OutputDataType data_type = 3;
|
||||
OutputFormat format = 4;
|
||||
}
|
||||
|
||||
message Shape {
|
||||
repeated uint64 dim = 1;
|
||||
}
|
||||
|
||||
message OpOutput {
|
||||
OutputDataType data_type = 1;
|
||||
OutputFormat format = 2;
|
||||
Shape shape = 3;
|
||||
OriginalOp original_op = 4; // the original op corresponding to the output
|
||||
bytes data = 5;
|
||||
uint64 size = 6;
|
||||
}
|
||||
|
||||
message OpInput {
|
||||
OutputDataType data_type = 1;
|
||||
OutputFormat format = 2;
|
||||
Shape shape = 3;
|
||||
bytes data = 4;
|
||||
uint64 size = 5;
|
||||
}
|
||||
|
||||
enum BufferType {
|
||||
L1 = 0;
|
||||
}
|
||||
|
||||
message OpBuffer {
|
||||
BufferType buffer_type = 1;
|
||||
bytes data = 2;
|
||||
uint64 size = 3;
|
||||
}
|
||||
|
||||
message DumpData{
|
||||
string version = 1;
|
||||
uint64 dump_time = 2;
|
||||
repeated OpOutput output = 3;
|
||||
repeated OpInput input = 4;
|
||||
repeated OpBuffer buffer = 5;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue