visibility = ["//tensorflow:__subpackages__"],
)
-tf_proto_library_cc(
+tf_proto_library(
name = "tpu_profiler_proto",
srcs = ["tpu_profiler.proto"],
has_services = 1,
],
)
-tf_proto_library_cc(
+tf_proto_library(
name = "op_profile_proto",
srcs = ["op_profile.proto"],
cc_api_version = 2,
visibility = ["//visibility:public"],
)
-tf_proto_library_cc(
+tf_proto_library(
name = "tf_op_stats_proto",
srcs = ["tf_op_stats.proto"],
cc_api_version = 2,
visibility = ["//visibility:public"],
)
+
+tf_proto_library(
+ name = "tpu_profiler_analysis_proto",
+ srcs = ["tpu_profiler_analysis.proto"],
+ has_services = 1,
+ cc_api_version = 2,
+ cc_grpc_version = 1,
+ protodeps = [":tpu_profiler_proto"] + tf_additional_all_protos(),
+ visibility = ["//visibility:public"],
+)
+
+py_library(
+ name = "tpu_profiler_analysis_pb2_grpc",
+ srcs = ["tpu_profiler_analysis_pb2_grpc.py"],
+ srcs_version = "PY2AND3",
+ visibility = ["//visibility:public"],
+ deps = [
+ ":tpu_profiler_analysis_proto_py",
+ ],
+)
--- /dev/null
+syntax = "proto3";
+package tensorflow;
+
+import "tensorflow/contrib/tpu/profiler/tpu_profiler.proto";
+
+message NewProfileSessionRequest {
+ ProfileRequest request = 1;
+ string repository_root = 2;
+ repeated string hosts = 3;
+}
+
+message NewProfileSessionResponse {
+ // Auxiliary error_message.
+ string error_message = 1;
+ // If success, return session identifier for future reference.
+ string session_id = 2;
+}
+
+message EnumProfileSessionsAndToolsRequest {
+ string repository_root = 1;
+}
+
+message ProfileSessionInfo {
+ string session_id = 1;
+ // Which tool data is available for consumption.
+ repeated string available_tools = 2;
+}
+
+message EnumProfileSessionsAndToolsResponse {
+ // Auxiliary error_message.
+ string error_message = 1;
+ // If success, the returned sessions information are stored here.
+ repeated ProfileSessionInfo sessions = 2;
+}
+
+message ProfileSessionDataRequest {
+ string repository_root = 1;
+ string session_id = 2;
+ // Which tool
+ string tool_name = 3;
+ // Tool's specific parameters. e.g. TraceViewer's viewport etc
+ map<string, string> parameters = 4;
+}
+
+message ProfileSessionDataResponse {
+ // Auxiliary error_message.
+ string error_message = 1;
+
+ // Output format. e.g. "json" or "proto" or "blob"
+ string output_format = 2;
+
+ // TODO(jiesun): figure out whether to put bytes or oneof tool specific proto.
+ bytes output = 3;
+}
+////////////////////////////////////////////////////////////////////////////////
+// TPUProfileAnalysis service provide entry point for profiling TPU and for
+// serving profiled data to Tensorboard through GRPC
+////////////////////////////////////////////////////////////////////////////////
+service TPUProfileAnalysis {
+ // Starts a profiling session, blocks until it completes.
+ // TPUProfileAnalysis service delegate this to TPUProfiler service.
+ // Populate the profiled data in repository, then return status to caller.
+ rpc NewSession(NewProfileSessionRequest) returns (NewProfileSessionResponse) {
+ }
+ // Enumerate existing sessions and return available profile tools.
+ rpc EnumSessions(EnumProfileSessionsAndToolsRequest)
+ returns (EnumProfileSessionsAndToolsResponse) {
+ }
+ // Retrieve specific tool's data for specific session.
+ rpc GetSessionToolData(ProfileSessionDataRequest)
+ returns (ProfileSessionDataResponse) {
+ }
+}
--- /dev/null
+# Copyright 2017 The TensorFlow Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ==============================================================================
+# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
+#
+# Do not use pylint on generated code.
+# pylint: disable=missing-docstring,g-short-docstring-punctuation,g-no-space-after-docstring-summary,invalid-name,line-too-long,unused-argument,g-doc-args
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import grpc
+
+from third_party.tensorflow.contrib.tpu.profiler import tpu_profiler_analysis_pb2 as third__party_dot_tensorflow_dot_contrib_dot_tpu_dot_profiler_dot_tpu__profiler__analysis__pb2
+
+
+class TPUProfileAnalysisStub(object):
+ """//////////////////////////////////////////////////////////////////////////////
+
+ TPUProfileAnalysis service provide entry point for profiling TPU and for
+ serving profiled data to Tensorboard through GRPC
+ //////////////////////////////////////////////////////////////////////////////
+ """
+
+ def __init__(self, channel):
+ """Constructor.
+
+ Args:
+ channel: A grpc.Channel.
+ """
+ self.NewSession = channel.unary_unary(
+ '/tensorflow.TPUProfileAnalysis/NewSession',
+ request_serializer=
+ third__party_dot_tensorflow_dot_contrib_dot_tpu_dot_profiler_dot_tpu__profiler__analysis__pb2.
+ NewProfileSessionRequest.SerializeToString,
+ response_deserializer=
+ third__party_dot_tensorflow_dot_contrib_dot_tpu_dot_profiler_dot_tpu__profiler__analysis__pb2.
+ NewProfileSessionResponse.FromString,
+ )
+ self.EnumSessions = channel.unary_unary(
+ '/tensorflow.TPUProfileAnalysis/EnumSessions',
+ request_serializer=
+ third__party_dot_tensorflow_dot_contrib_dot_tpu_dot_profiler_dot_tpu__profiler__analysis__pb2.
+ EnumProfileSessionsAndToolsRequest.SerializeToString,
+ response_deserializer=
+ third__party_dot_tensorflow_dot_contrib_dot_tpu_dot_profiler_dot_tpu__profiler__analysis__pb2.
+ EnumProfileSessionsAndToolsResponse.FromString,
+ )
+ self.GetSessionToolData = channel.unary_unary(
+ '/tensorflow.TPUProfileAnalysis/GetSessionToolData',
+ request_serializer=
+ third__party_dot_tensorflow_dot_contrib_dot_tpu_dot_profiler_dot_tpu__profiler__analysis__pb2.
+ ProfileSessionDataRequest.SerializeToString,
+ response_deserializer=
+ third__party_dot_tensorflow_dot_contrib_dot_tpu_dot_profiler_dot_tpu__profiler__analysis__pb2.
+ ProfileSessionDataResponse.FromString,
+ )
+
+
+class TPUProfileAnalysisServicer(object):
+ """//////////////////////////////////////////////////////////////////////////////
+
+ TPUProfileAnalysis service provide entry point for profiling TPU and for
+ serving profiled data to Tensorboard through GRPC
+ //////////////////////////////////////////////////////////////////////////////
+ """
+
+ def NewSession(self, request, context):
+ """Starts a profiling session, blocks until it completes.
+ TPUProfileAnalysis service delegate this to TPUProfiler service.
+ Populate the profiled data in repository, then return status to caller.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
+ def EnumSessions(self, request, context):
+ """Enumerate existing sessions and return available profile tools.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
+ def GetSessionToolData(self, request, context):
+ """Retrieve specific tool's data for specific session.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
+
+def add_TPUProfileAnalysisServicer_to_server(servicer, server):
+ rpc_method_handlers = {
+ 'NewSession':
+ grpc.unary_unary_rpc_method_handler(
+ servicer.NewSession,
+ request_deserializer=
+ third__party_dot_tensorflow_dot_contrib_dot_tpu_dot_profiler_dot_tpu__profiler__analysis__pb2.
+ NewProfileSessionRequest.FromString,
+ response_serializer=
+ third__party_dot_tensorflow_dot_contrib_dot_tpu_dot_profiler_dot_tpu__profiler__analysis__pb2.
+ NewProfileSessionResponse.SerializeToString,
+ ),
+ 'EnumSessions':
+ grpc.unary_unary_rpc_method_handler(
+ servicer.EnumSessions,
+ request_deserializer=
+ third__party_dot_tensorflow_dot_contrib_dot_tpu_dot_profiler_dot_tpu__profiler__analysis__pb2.
+ EnumProfileSessionsAndToolsRequest.FromString,
+ response_serializer=
+ third__party_dot_tensorflow_dot_contrib_dot_tpu_dot_profiler_dot_tpu__profiler__analysis__pb2.
+ EnumProfileSessionsAndToolsResponse.SerializeToString,
+ ),
+ 'GetSessionToolData':
+ grpc.unary_unary_rpc_method_handler(
+ servicer.GetSessionToolData,
+ request_deserializer=
+ third__party_dot_tensorflow_dot_contrib_dot_tpu_dot_profiler_dot_tpu__profiler__analysis__pb2.
+ ProfileSessionDataRequest.FromString,
+ response_serializer=
+ third__party_dot_tensorflow_dot_contrib_dot_tpu_dot_profiler_dot_tpu__profiler__analysis__pb2.
+ ProfileSessionDataResponse.SerializeToString,
+ ),
+ }
+ generic_handler = grpc.method_handlers_generic_handler(
+ 'tensorflow.TPUProfileAnalysis', rpc_method_handlers)
+ server.add_generic_rpc_handlers((generic_handler,))