aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/core/protobuf
diff options
context:
space:
mode:
authorGravatar A. Unique TensorFlower <gardener@tensorflow.org>2018-05-09 12:26:06 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-05-09 13:19:17 -0700
commitfa3a9bcabfea46bb3a4c63f559b50cc066d484e7 (patch)
tree5ba9229cac4db812b70301a27cc0834bb827cd0b /tensorflow/core/protobuf
parent9a4f5682a9854c555bf2bf2c5ecbc5635c848447 (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.proto8
-rw-r--r--tensorflow/core/protobuf/worker.proto54
-rw-r--r--tensorflow/core/protobuf/worker_service.proto4
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.