diff options
author | A. Unique TensorFlower <gardener@tensorflow.org> | 2018-05-09 12:26:06 -0700 |
---|---|---|
committer | TensorFlower Gardener <gardener@tensorflow.org> | 2018-05-09 13:19:17 -0700 |
commit | fa3a9bcabfea46bb3a4c63f559b50cc066d484e7 (patch) | |
tree | 5ba9229cac4db812b70301a27cc0834bb827cd0b /tensorflow/core/protobuf | |
parent | 9a4f5682a9854c555bf2bf2c5ecbc5635c848447 (diff) |
Collective Ops Part 6
Distributed-mode implementations of CollectiveRemoteAccess.
Extend Worker interface with corresponding new methods.
This change is part of a series of changes introducing infrastructure
for collective ops and initial implementations of reduction and broadcast.
PiperOrigin-RevId: 196010718
Diffstat (limited to 'tensorflow/core/protobuf')
-rw-r--r-- | tensorflow/core/protobuf/transport_options.proto | 8 | ||||
-rw-r--r-- | tensorflow/core/protobuf/worker.proto | 54 | ||||
-rw-r--r-- | tensorflow/core/protobuf/worker_service.proto | 4 |
3 files changed, 66 insertions, 0 deletions
diff --git a/tensorflow/core/protobuf/transport_options.proto b/tensorflow/core/protobuf/transport_options.proto new file mode 100644 index 0000000000..d7b1bddbbe --- /dev/null +++ b/tensorflow/core/protobuf/transport_options.proto @@ -0,0 +1,8 @@ +syntax = "proto3"; + +package tensorflow; + +// Extra data needed on a non-RDMA RecvBufResponse. +message RecvBufRespExtra { + bytes tensor_content = 1; +}; diff --git a/tensorflow/core/protobuf/worker.proto b/tensorflow/core/protobuf/worker.proto index 602f6a1ef1..f7816e9a67 100644 --- a/tensorflow/core/protobuf/worker.proto +++ b/tensorflow/core/protobuf/worker.proto @@ -418,6 +418,60 @@ message TracingResponse { //////////////////////////////////////////////////////////////////////////////// // +// Raw data transfers in support of Collective Ops. +// These methods are experimental and subject to change. +// +// The intention is to allow collectives to take advantage of the most +// efficient methods available on a platform, e.g. RDMA, and not be +// constrained to use the RPC system in use by other methods. +// +//////////////////////////////////////////////////////////////////////////////// + +message RecvBufRequest { + // Use of the fields below may vary by implementation. For example + // the buf_ptr and num_bytes may be set only for local operations and + // not sent on the wire, or only sent on the wire in one direction. + + // Used at server side to find the correct BufRendezvous. + int64 step_id = 1; + + // Arbitrary string identifying a BufRendezvous entry. + string buf_rendezvous_key = 2; + + // Size of value expected, must agree with BufRendezvous entry. + int64 num_bytes = 3; + + // When RDMA is in use, address of destination field on client. + fixed64 buf_ptr = 4; + + // Optional information on client-side device locality. + DeviceLocality client_locality = 5; + + // Optional information on server-side device locality. + DeviceLocality server_locality = 6; + + // Optional, implementation-specific data. + google.protobuf.Any transport_options = 7; + // Optional, for annotating the timeline. + string src_device = 8; + string dst_device = 9; +} + +message RecvBufResponse { + // Use of the fields below may vary by implementation. Comments give + // intended use. + + fixed64 buf_ptr = 1; // Address of source field on server. + int64 num_bytes = 2; // Byte length of buf_ptr field, if set. + bool is_dead = 3; // True if value is 'dead' like a tensor. + // Optional, implementation-specific data. + google.protobuf.Any transport_options = 4; + // Optional, for timeline. + int64 send_start_micros = 5; +} + +//////////////////////////////////////////////////////////////////////////////// +// // Collective Op dynamic group resolution messages. // //////////////////////////////////////////////////////////////////////////////// diff --git a/tensorflow/core/protobuf/worker_service.proto b/tensorflow/core/protobuf/worker_service.proto index 01c76c01a9..e0c27f394a 100644 --- a/tensorflow/core/protobuf/worker_service.proto +++ b/tensorflow/core/protobuf/worker_service.proto @@ -74,6 +74,10 @@ service WorkerService { rpc Tracing(TracingRequest) returns (TracingResponse); // See worker.proto for details. + rpc RecvBuf(RecvBufRequest) returns (RecvBufResponse) { + } + + // See worker.proto for details. rpc GetStepSequence(GetStepSequenceRequest) returns (GetStepSequenceResponse); // See worker.proto for details. |