| syntax = "proto2"; | 
 |  | 
 | package caffe2; | 
 |  | 
 | // A few notes about the Caffe2's protobuffer convention: | 
 | // (1) Most objects are registered by their types, such as operators and nets. | 
 | //     For these, we have a string-type field "type" for registration purposes. | 
 | // (2) We do not use extension because that used to create quite some conflicts | 
 | //     in Caffe's protobuf design. | 
 | // (3) We have not used any proto3 specific features, such as Any or Map. This | 
 | //     is mainly for backward compatibility purposes but we may consider using | 
 | //     those in the future. | 
 |  | 
 | // A two number summary for a value. It also has count for restoring. | 
 | message TwoNumberStatsProto { | 
 |   optional float mean = 1; | 
 |   optional float stddev = 2; | 
 |   optional int64 count = 3; | 
 | } | 
 |  | 
 | // Blob profiling information. Profile for a blob is created every time | 
 | // a node outputs to the blob. | 
 | message BlobProfile { | 
 |   // Name of the blob (corresponds to OperatorDef.output). | 
 |   optional string name = 1;  // required | 
 |  | 
 |   // Profiling statistics. | 
 |   optional TwoNumberStatsProto bytes_used = 3; | 
 | } | 
 |  | 
 | // Protobuf format to serialize profiler data. | 
 | message ProfDAGProto { | 
 |   // The name for the operator | 
 |   required string name = 1; | 
 |   // The mean execution time | 
 |   required float mean = 2; | 
 |   // The standard deviation | 
 |   required float stddev = 3; | 
 |  | 
 |   // New field to represent the numbers above, and with count. | 
 |   optional TwoNumberStatsProto execution_time = 4; | 
 |  | 
 |   // Blob profiles that this node outputs. | 
 |   repeated BlobProfile output_profile = 5; | 
 |  | 
 |   // The extra_info from the operator device option. | 
 |   repeated string extra_info = 7; | 
 |  | 
 | } | 
 |  | 
 | // Operator profiling information. | 
 | // | 
 | // Note: The indices for elements of 'stats' and the indices of | 
 | // 'output_profile' inside each 'stats' are assumed to match the | 
 | // indices of 'op' elements of a corresponding NetDef and the 'output' | 
 | // indices within each 'op'. | 
 | message ProfDAGProtos { | 
 |   repeated ProfDAGProto stats = 1; | 
 |   optional string net_name = 2; | 
 |   repeated OpProfile ops_stats = 3; | 
 | } | 
 |  | 
 | // Represents specification of an operation cost. | 
 | message OpProfile { | 
 |   optional string idx = 1; | 
 |   optional string net_name = 2; | 
 |   optional string type = 3; | 
 |   optional float exec_time_secs = 4; | 
 | } |