mirror of
https://github.com/twitter/the-algorithm.git
synced 2024-06-13 22:58:54 +02:00
ef4c5eb65e
Please note we have force-pushed a new initial commit in order to remove some publicly-available Twitter user information. Note that this process may be required in the future.
90 lines
2.8 KiB
Protocol Buffer
90 lines
2.8 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package tensorflow;
|
|
|
|
import "tensorflow/core/framework/tensor_shape.proto";
|
|
import "tensorflow/core/framework/types.proto";
|
|
|
|
option cc_enable_arenas = true;
|
|
option java_outer_classname = "CostGraphProtos";
|
|
option java_multiple_files = true;
|
|
option java_package = "org.tensorflow.framework";
|
|
option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/framework/cost_graph_go_proto";
|
|
|
|
message CostGraphDef {
|
|
message Node {
|
|
// The name of the node. Names are globally unique.
|
|
string name = 1;
|
|
|
|
// The device of the node. Can be empty if the node is mapped to the
|
|
// default partition or partitioning hasn't been run yet.
|
|
string device = 2;
|
|
|
|
// The id of the node. Node ids are only unique inside a partition.
|
|
int32 id = 3;
|
|
|
|
// Inputs of this node. They must be executed before this node can be
|
|
// executed. An input is a particular output of another node, specified
|
|
// by the node id and the output index.
|
|
message InputInfo {
|
|
int32 preceding_node = 1;
|
|
int32 preceding_port = 2;
|
|
}
|
|
repeated InputInfo input_info = 4;
|
|
|
|
// Outputs of this node.
|
|
message OutputInfo {
|
|
int64 size = 1;
|
|
// If >= 0, the output is an alias of an input. Note that an alias input
|
|
// may itself be an alias. The algorithm will therefore need to follow
|
|
// those pointers.
|
|
int64 alias_input_port = 2;
|
|
TensorShapeProto shape = 3;
|
|
DataType dtype = 4;
|
|
}
|
|
repeated OutputInfo output_info = 5;
|
|
|
|
// Temporary memory used by this node.
|
|
int64 temporary_memory_size = 6;
|
|
|
|
// Persistent memory used by this node.
|
|
int64 persistent_memory_size = 12;
|
|
|
|
int64 host_temp_memory_size = 10 [deprecated = true];
|
|
int64 device_temp_memory_size = 11 [deprecated = true];
|
|
int64 device_persistent_memory_size = 16 [deprecated = true];
|
|
|
|
// Estimate of the computational cost of this node, in microseconds.
|
|
int64 compute_cost = 9;
|
|
|
|
// Analytical estimate of the computational cost of this node, in
|
|
// microseconds.
|
|
int64 compute_time = 14;
|
|
|
|
// Analytical estimate of the memory access cost of this node, in
|
|
// microseconds.
|
|
int64 memory_time = 15;
|
|
|
|
// If true, the output is permanent: it can't be discarded, because this
|
|
// node is part of the "final output". Nodes may depend on final nodes.
|
|
bool is_final = 7;
|
|
|
|
// Ids of the control inputs for this node.
|
|
repeated int32 control_input = 8;
|
|
|
|
// Are the costs inaccurate?
|
|
bool inaccurate = 17;
|
|
}
|
|
repeated Node node = 1;
|
|
|
|
// Total cost of this graph, typically used for balancing decisions.
|
|
message AggregatedCost {
|
|
// Aggregated cost value.
|
|
float cost = 1;
|
|
|
|
// Aggregated cost dimension (e.g. 'memory', 'compute', 'network').
|
|
string dimension = 2;
|
|
}
|
|
repeated AggregatedCost cost = 2;
|
|
}
|