From 7b8cd8dce97663cb33f89a681b549b1bf4432507 Mon Sep 17 00:00:00 2001 From: "A. Unique TensorFlower" Date: Thu, 18 Jul 2019 19:33:52 -0700 Subject: [PATCH] Remove capture_tpu_profile c++ binary and add a python wrapper. PiperOrigin-RevId: 258892451 --- tensorflow/contrib/tpu/profiler/BUILD | 27 ---- .../tpu/profiler/capture_tpu_profile.cc | 146 ------------------ .../contrib/tpu/profiler/pip_package/README | 2 - .../pip_package/cloud_tpu_profiler/main.py | 137 ---------------- tensorflow/contrib/tpu/profiler/version.h | 21 --- tensorflow/opensource_only.files | 10 +- tensorflow/python/tpu/profiler/BUILD | 22 ++- .../tpu/profiler/capture_tpu_profile.py | 18 ++- .../tpu/profiler/pip_package/BUILD | 2 +- .../python/tpu/profiler/pip_package/README | 2 + .../profiler/pip_package/build_pip_package.sh | 26 ++-- .../tpu/profiler/pip_package/setup.py | 13 +- .../tpu/profiler/version.py} | 9 +- 13 files changed, 62 insertions(+), 373 deletions(-) delete mode 100644 tensorflow/contrib/tpu/profiler/BUILD delete mode 100644 tensorflow/contrib/tpu/profiler/capture_tpu_profile.cc delete mode 100644 tensorflow/contrib/tpu/profiler/pip_package/README delete mode 100644 tensorflow/contrib/tpu/profiler/pip_package/cloud_tpu_profiler/main.py delete mode 100644 tensorflow/contrib/tpu/profiler/version.h rename tensorflow/{contrib => python}/tpu/profiler/pip_package/BUILD (80%) create mode 100644 tensorflow/python/tpu/profiler/pip_package/README rename tensorflow/{contrib => python}/tpu/profiler/pip_package/build_pip_package.sh (70%) rename tensorflow/{contrib => python}/tpu/profiler/pip_package/setup.py (87%) rename tensorflow/{contrib/tpu/profiler/pip_package/cloud_tpu_profiler/__init__.py => python/tpu/profiler/version.py} (71%) diff --git a/tensorflow/contrib/tpu/profiler/BUILD b/tensorflow/contrib/tpu/profiler/BUILD deleted file mode 100644 index 4ab4aa065c0..00000000000 --- a/tensorflow/contrib/tpu/profiler/BUILD +++ /dev/null @@ -1,27 +0,0 @@ -load("//tensorflow:tensorflow.bzl", "tf_cc_binary") - -package( - licenses = ["notice"], # Apache 2.0 -) - -cc_library( - name = "version", - hdrs = ["version.h"], - visibility = ["//visibility:public"], -) - -tf_cc_binary( - name = "capture_tpu_profile", - srcs = [ - "capture_tpu_profile.cc", - ], - tags = ["no_windows"], - visibility = ["//visibility:public"], - deps = [ - ":version", - "//tensorflow/core:framework_internal", - "//tensorflow/core:lib", - "//tensorflow/core/platform/cloud:gcs_file_system", - "//tensorflow/core/profiler/rpc/client:capture_profile", - ], -) diff --git a/tensorflow/contrib/tpu/profiler/capture_tpu_profile.cc b/tensorflow/contrib/tpu/profiler/capture_tpu_profile.cc deleted file mode 100644 index 28666d09e29..00000000000 --- a/tensorflow/contrib/tpu/profiler/capture_tpu_profile.cc +++ /dev/null @@ -1,146 +0,0 @@ -/* 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. -==============================================================================*/ - -// Usage: capture_tpu_profile --service_addr="localhost:8466" --logdir=/tmp/log -// -// Initiates a TPU profiling on the TPUProfiler service at service_addr, -// receives and dumps the profile data to a tensorboard log directory. - -#include "tensorflow/contrib/tpu/profiler/version.h" -#include "tensorflow/core/lib/core/errors.h" -#include "tensorflow/core/lib/core/status.h" -#include "tensorflow/core/platform/init_main.h" -#include "tensorflow/core/profiler/rpc/client/capture_profile.h" -#include "tensorflow/core/util/command_line_flags.h" - -namespace tensorflow { -namespace { - -Status MonitoringHelper(const string& service_addr, int duration_ms, - int monitoring_level, bool display_timestamp, - int num_queries) { - for (int query = 0; query < num_queries; ++query) { - string result; - TF_RETURN_IF_ERROR(tensorflow::profiler::client::Monitor( - service_addr, duration_ms, monitoring_level, display_timestamp, - &result)); - std::cout << "Cloud TPU Monitoring Results (Sample " << query + 1 - << "):\n\n" - << result << std::flush; - } - return Status::OK(); -} - -} // namespace -} // namespace tensorflow - -int main(int argc, char** argv) { - tensorflow::string FLAGS_service_addr; - tensorflow::string FLAGS_logdir; - tensorflow::string FLAGS_workers_list; - int FLAGS_duration_ms = 0; - int FLAGS_num_tracing_attempts = 3; - bool FLAGS_include_dataset_ops = true; - int FLAGS_monitoring_level = 0; - bool FLAGS_display_timestamp = false; - int FLAGS_num_queries = 100; - std::vector flag_list = { - tensorflow::Flag("service_addr", &FLAGS_service_addr, - "Address of TPU profiler service e.g. localhost:8466"), - tensorflow::Flag("workers_list", &FLAGS_workers_list, - "The list of worker TPUs that we are about to profile " - "in the current session."), - tensorflow::Flag("logdir", &FLAGS_logdir, - "Path of TensorBoard log directory e.g. /tmp/tb_log, " - "gs://tb_bucket"), - tensorflow::Flag( - "duration_ms", &FLAGS_duration_ms, - "Duration of tracing or monitoring in ms. Default is 2000ms for " - "tracing and 1000ms for monitoring."), - tensorflow::Flag("num_tracing_attempts", &FLAGS_num_tracing_attempts, - "Automatically retry N times when no trace event " - "is collected. Default is 3."), - tensorflow::Flag("include_dataset_ops", &FLAGS_include_dataset_ops, - "Set to false to profile longer TPU device traces."), - tensorflow::Flag("monitoring_level", &FLAGS_monitoring_level, - "Choose a monitoring level between 1 and 2 to monitor " - "your TPU job continuously. Level 2 is more verbose " - "than level 1 and shows more metrics."), - tensorflow::Flag("display_timestamp", &FLAGS_display_timestamp, - "Set to true to display timestamp in monitoring " - "results."), - tensorflow::Flag("num_queries", &FLAGS_num_queries, - "This script will run monitoring for num_queries before " - "it stops.")}; - - std::cout << "Welcome to the Cloud TPU Profiler v" << TPU_PROFILER_VERSION - << std::endl; - - tensorflow::string usage = tensorflow::Flags::Usage(argv[0], flag_list); - bool parse_ok = tensorflow::Flags::Parse(&argc, argv, flag_list); - if (!parse_ok || FLAGS_service_addr.empty() || - (FLAGS_logdir.empty() && FLAGS_monitoring_level == 0)) { - // Fail if flags are not parsed correctly or service_addr not provided. - // Also, fail if neither logdir is provided (required for tracing) nor - // monitoring level is provided (required for monitoring). - std::cout << usage.c_str() << std::endl; - return 2; - } - if (FLAGS_monitoring_level < 0 || FLAGS_monitoring_level > 2) { - // Invalid monitoring level. - std::cout << usage.c_str() << std::endl; - return 2; - } - tensorflow::Status status; - status = - tensorflow::profiler::client::ValidateHostPortPair(FLAGS_service_addr); - if (!status.ok()) { - std::cout << status.error_message() << std::endl; - std::cout << usage.c_str() << std::endl; - return 2; - } - tensorflow::port::InitMain(argv[0], &argc, &argv); - - // Sets the minimum duration_ms, tracing attempts and num queries. - int duration_ms = std::max(FLAGS_duration_ms, 0); - if (duration_ms == 0) { - // If profiling duration was not set by user or set to a negative value, we - // set it to default values of 2000ms for tracing and 1000ms for monitoring. - duration_ms = FLAGS_monitoring_level == 0 ? 2000 : 1000; - } - int num_tracing_attempts = std::max(FLAGS_num_tracing_attempts, 1); - int num_queries = std::max(FLAGS_num_queries, 1); - - if (FLAGS_monitoring_level != 0) { - std::cout << "Since monitoring level is provided, profile " - << FLAGS_service_addr << " for " << duration_ms - << "ms and show metrics for " << num_queries << " time(s)." - << std::endl; - status = tensorflow::MonitoringHelper(FLAGS_service_addr, duration_ms, - FLAGS_monitoring_level, - FLAGS_display_timestamp, num_queries); - } else { - status = tensorflow::profiler::client::StartTracing( - FLAGS_service_addr, FLAGS_logdir, FLAGS_workers_list, - FLAGS_include_dataset_ops, duration_ms, num_tracing_attempts); - } - - if (!status.ok() && status.code() != tensorflow::error::Code::UNAVAILABLE) { - std::cout << status.error_message() << std::endl; - std::cout << usage.c_str() << std::endl; - return 2; - } - return 0; -} diff --git a/tensorflow/contrib/tpu/profiler/pip_package/README b/tensorflow/contrib/tpu/profiler/pip_package/README deleted file mode 100644 index 1f52a5698a6..00000000000 --- a/tensorflow/contrib/tpu/profiler/pip_package/README +++ /dev/null @@ -1,2 +0,0 @@ -This package contains a Python wrapper around an pre-built C++ binary that is -used to profile Cloud TPU. diff --git a/tensorflow/contrib/tpu/profiler/pip_package/cloud_tpu_profiler/main.py b/tensorflow/contrib/tpu/profiler/pip_package/cloud_tpu_profiler/main.py deleted file mode 100644 index a081c4354a7..00000000000 --- a/tensorflow/contrib/tpu/profiler/pip_package/cloud_tpu_profiler/main.py +++ /dev/null @@ -1,137 +0,0 @@ -# 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. -# ============================================================================= -"""Wraps capture_tpu_profile binary.""" - -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function -import os -import subprocess -import sys -from absl import flags -from distutils.version import LooseVersion -import tensorflow as tf - -# Cloud TPU Cluster Resolvers -flags.DEFINE_string( - 'gcp_project', None, - 'Project name for the Cloud TPU-enabled project. If not specified, we ' - 'will attempt to automatically detect the GCE project from metadata.') -flags.DEFINE_string( - 'tpu_zone', - None, - help='GCE zone where the Cloud TPU is located in. If not specified, we ' - 'will attempt to automatically detect the GCE project from metadata.') -flags.DEFINE_string( - 'tpu', None, 'Name of the Cloud TPU for Cluster Resolvers. You must ' - 'specify either this flag or --service_addr.') - -# Tool specific parameters -flags.DEFINE_string( - 'service_addr', None, 'Address of TPU profiler service e.g. ' - 'localhost:8466, you must specify either this flag or --tpu.') -flags.DEFINE_string( - 'workers_list', None, 'The list of worker TPUs that we are about to profile' - ' e.g. 10.0.1.2, 10.0.1.3. You can specify this flag with --tpu or ' - '--service_addr to profile a subset of tpu nodes. You can also use only' - '--tpu and leave this flag unspecified to profile all the tpus.') -flags.DEFINE_string( - 'logdir', None, 'Path of TensorBoard log directory e.g. /tmp/tb_log, ' - 'gs://tb_bucket') -flags.DEFINE_integer('duration_ms', 0, - 'Duration of tracing or monitoring in ms.') -flags.DEFINE_integer( - 'num_tracing_attempts', 3, 'Automatically retry N times when no trace ' - 'event is collected.') -flags.DEFINE_boolean('include_dataset_ops', True, - 'Set to false to profile longer TPU ' - 'device traces.') - -# Monitoring parameters -flags.DEFINE_integer( - 'monitoring_level', 0, 'Choose a monitoring level between ' - '1 and 2 to monitor your TPU job continuously.') -flags.DEFINE_integer( - 'num_queries', 100, - 'This script will run monitoring for num_queries before it stops.') - -FLAGS = flags.FLAGS -EXECUTABLE = 'data/capture_tpu_profile' -JOB_NAME = 'worker' - - -def get_workers_list(cluster_resolver): - cluster_spec = cluster_resolver.cluster_spec() - task_indices = cluster_spec.task_indices(JOB_NAME) - workers_list = [ - cluster_spec.task_address(JOB_NAME, i).split(':')[0] for i in task_indices - ] - return ','.join(workers_list) - - -def run_main(): - tf.app.run(main) - - -def main(unused_argv=None): - tf.logging.set_verbosity(tf.logging.INFO) - tf_version = tf.__version__ - print('TensorFlow version %s detected' % tf_version) - - if not FLAGS.service_addr and not FLAGS.tpu: - sys.exit('You must specify either --service_addr or --tpu.') - - tpu_cluster_resolver = None - if FLAGS.service_addr: - if FLAGS.tpu: - tf.logging.warn('Both --service_addr and --tpu are set. Ignoring ' - '--tpu and using --service_addr.') - service_addr = FLAGS.service_addr - else: - tpu_cluster_resolver = ( - tf.contrib.cluster_resolver.TPUClusterResolver( - [FLAGS.tpu], zone=FLAGS.tpu_zone, project=FLAGS.gcp_project)) - service_addr = tpu_cluster_resolver.get_master() - service_addr = service_addr.replace('grpc://', '').replace(':8470', ':8466') - - workers_list = '' - if LooseVersion(tf_version) < LooseVersion('1.9'): - tf.logging.warn('Attempt to profile with legacy support under TensorFlow ' - 'version %s' % tf_version) - else: - if FLAGS.workers_list is not None: - workers_list = FLAGS.workers_list - elif tpu_cluster_resolver is not None: - workers_list = get_workers_list(tpu_cluster_resolver) - - if not FLAGS.logdir and not FLAGS.monitoring_level: - sys.exit('logdir must be provided.') - executable_path = os.path.join(os.path.dirname(__file__), EXECUTABLE) - cmd = [executable_path] - if FLAGS.logdir is not None: - logdir = os.path.expandvars(os.path.expanduser(FLAGS.logdir)) - cmd.append('--logdir=' + logdir) - cmd.append('--service_addr=' + service_addr) - cmd.append('--workers_list=' + workers_list) - cmd.append('--duration_ms=' + str(FLAGS.duration_ms)) - cmd.append('--num_tracing_attempts=' + str(FLAGS.num_tracing_attempts)) - cmd.append('--include_dataset_ops=' + str(FLAGS.include_dataset_ops).lower()) - cmd.append('--monitoring_level=' + str(FLAGS.monitoring_level)) - cmd.append('--num_queries=' + str(FLAGS.num_queries)) - subprocess.call(cmd) - - -if __name__ == '__main__': - run_main() diff --git a/tensorflow/contrib/tpu/profiler/version.h b/tensorflow/contrib/tpu/profiler/version.h deleted file mode 100644 index 4b6d1b2b075..00000000000 --- a/tensorflow/contrib/tpu/profiler/version.h +++ /dev/null @@ -1,21 +0,0 @@ -/* 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. -=============================================================================*/ - -#ifndef TENSORFLOW_CONTRIB_TPU_PROFILER_VERSION_H_ -#define TENSORFLOW_CONTRIB_TPU_PROFILER_VERSION_H_ - -#define TPU_PROFILER_VERSION "1.12.0" - -#endif // TENSORFLOW_CONTRIB_TPU_PROFILER_VERSION_H_ diff --git a/tensorflow/opensource_only.files b/tensorflow/opensource_only.files index 6d0e94e9569..27d7a82862d 100644 --- a/tensorflow/opensource_only.files +++ b/tensorflow/opensource_only.files @@ -1,12 +1,10 @@ -tensorflow/contrib/tpu/profiler/pip_package/BUILD -tensorflow/contrib/tpu/profiler/pip_package/setup.py -tensorflow/contrib/tpu/profiler/pip_package/README -tensorflow/contrib/tpu/profiler/pip_package/build_pip_package.sh -tensorflow/contrib/tpu/profiler/pip_package/cloud_tpu_profiler/main.py -tensorflow/contrib/tpu/profiler/pip_package/cloud_tpu_profiler/__init__.py tensorflow/contrib/mpi/BUILD tensorflow/stream_executor/build_defs.bzl tensorflow/python/autograph/core/config.py +tensorflow/python/tpu/profiler/pip_package/setup.py +tensorflow/python/tpu/profiler/pip_package/build_pip_package.sh +tensorflow/python/tpu/profiler/pip_package/BUILD +tensorflow/python/tpu/profiler/pip_package/README tensorflow/tools/ci_build/remote/BUILD tensorflow/tools/pip_package/README tensorflow/tools/pip_package/MANIFEST.in diff --git a/tensorflow/python/tpu/profiler/BUILD b/tensorflow/python/tpu/profiler/BUILD index 438fa9b3531..16b13d5812b 100644 --- a/tensorflow/python/tpu/profiler/BUILD +++ b/tensorflow/python/tpu/profiler/BUILD @@ -26,11 +26,12 @@ py_library( deps = ["//tensorflow/core/profiler:profiler_analysis_proto_py"], ) -py_binary( - name = "capture_tpu_profile", - srcs = ["capture_tpu_profile.py"], - main = "capture_tpu_profile.py", - python_version = "PY2", +py_library( + name = "capture_tpu_profile_lib", + srcs = [ + "capture_tpu_profile.py", + "version.py", + ], srcs_version = "PY2AND3", deps = [ "//tensorflow/python:client", @@ -43,3 +44,14 @@ py_binary( "@absl_py//absl/flags", ], ) + +py_binary( + name = "capture_tpu_profile_bin", + srcs = ["capture_tpu_profile.py"], + main = "capture_tpu_profile.py", + python_version = "PY2", + deps = [ + ":capture_tpu_profile_lib", + "@absl_py//absl/flags", + ], +) diff --git a/tensorflow/python/tpu/profiler/capture_tpu_profile.py b/tensorflow/python/tpu/profiler/capture_tpu_profile.py index fc2be886fa8..6c201f78ada 100644 --- a/tensorflow/python/tpu/profiler/capture_tpu_profile.py +++ b/tensorflow/python/tpu/profiler/capture_tpu_profile.py @@ -28,6 +28,7 @@ from tensorflow.python.eager import profiler_client from tensorflow.python.framework import errors from tensorflow.python.framework import versions from tensorflow.python.platform import tf_logging as logging +from tensorflow.python.tpu.profiler import version as profiler_version FLAGS = flags.FLAGS @@ -139,9 +140,10 @@ def main(unused_argv=None): logging.set_verbosity(logging.INFO) tf_version = versions.__version__ print('TensorFlow version %s detected' % tf_version) + print('Welcome to the Cloud TPU Profiler v%s' % profiler_version.__version__) - if LooseVersion(tf_version) < LooseVersion('1.14.1'): - sys.exit('You must install tensorflow >= 1.14.1 to use this plugin.') + if LooseVersion(tf_version) < LooseVersion('1.14.0'): + sys.exit('You must install tensorflow >= 1.14.0 to use this plugin.') if not FLAGS.service_addr and not FLAGS.tpu: sys.exit('You must specify either --service_addr or --tpu.') @@ -179,10 +181,14 @@ def main(unused_argv=None): else: if not FLAGS.logdir: sys.exit('logdir must be provided') - profiler_client.start_tracing(service_addr, - os.path.expanduser(FLAGS.logdir), duration_ms, - workers_list, FLAGS.include_dataset_ops, - FLAGS.num_tracing_attempts) + try: + profiler_client.start_tracing(service_addr, + os.path.expanduser(FLAGS.logdir), + duration_ms, workers_list, + FLAGS.include_dataset_ops, + FLAGS.num_tracing_attempts) + except errors.UnavailableError: + sys.exit(0) if __name__ == '__main__': diff --git a/tensorflow/contrib/tpu/profiler/pip_package/BUILD b/tensorflow/python/tpu/profiler/pip_package/BUILD similarity index 80% rename from tensorflow/contrib/tpu/profiler/pip_package/BUILD rename to tensorflow/python/tpu/profiler/pip_package/BUILD index 832c8f8d47f..e2c386c953e 100644 --- a/tensorflow/contrib/tpu/profiler/pip_package/BUILD +++ b/tensorflow/python/tpu/profiler/pip_package/BUILD @@ -10,6 +10,6 @@ sh_binary( srcs = ["build_pip_package.sh"], data = [ "setup.py", - "//tensorflow/contrib/tpu/profiler:capture_tpu_profile", + "//tensorflow/python/tpu/profiler:capture_tpu_profile_bin", ], ) diff --git a/tensorflow/python/tpu/profiler/pip_package/README b/tensorflow/python/tpu/profiler/pip_package/README new file mode 100644 index 00000000000..ad1d6f34f80 --- /dev/null +++ b/tensorflow/python/tpu/profiler/pip_package/README @@ -0,0 +1,2 @@ +This package contains a Python wrapper around Tensorflow Python APIs that are +used to profile Cloud TPU. diff --git a/tensorflow/contrib/tpu/profiler/pip_package/build_pip_package.sh b/tensorflow/python/tpu/profiler/pip_package/build_pip_package.sh similarity index 70% rename from tensorflow/contrib/tpu/profiler/pip_package/build_pip_package.sh rename to tensorflow/python/tpu/profiler/pip_package/build_pip_package.sh index 14d9c8b4af0..bb888413fb4 100755 --- a/tensorflow/contrib/tpu/profiler/pip_package/build_pip_package.sh +++ b/tensorflow/python/tpu/profiler/pip_package/build_pip_package.sh @@ -17,9 +17,15 @@ set -e -BINARY="bazel-bin/tensorflow/contrib/tpu/profiler/capture_tpu_profile" +if [ "$(uname)" = "Darwin" ]; then + sedi="sed -i ''" +else + sedi="sed -i" +fi + PACKAGE_NAME="cloud_tpu_profiler" -PIP_PACKAGE="tensorflow/contrib/tpu/profiler/pip_package" +PIP_PACKAGE="tensorflow/python/tpu/profiler/pip_package" +RUNFILES="bazel-bin/tensorflow/python/tpu/profiler/pip_package/build_pip_package.runfiles/org_tensorflow/tensorflow/python/tpu/profiler" function main() { if [ $# -lt 1 ] ; then @@ -32,16 +38,16 @@ function main() { echo $(date) : "=== Using tmpdir: ${TMPDIR}" - if [ ! -f "${BINARY}" ]; then - echo "Could not find ${BINARY}. Did you run from the root of the build tree?" - exit 1 - fi - cp ${PIP_PACKAGE}/README ${TMPDIR} cp ${PIP_PACKAGE}/setup.py ${TMPDIR} - cp -R ${PIP_PACKAGE}/${PACKAGE_NAME} ${TMPDIR} - mkdir ${TMPDIR}/${PACKAGE_NAME}/data - cp ${BINARY} ${TMPDIR}/${PACKAGE_NAME}/data + mkdir ${TMPDIR}/${PACKAGE_NAME} + cp -a ${RUNFILES}/. ${TMPDIR}/${PACKAGE_NAME}/ + + # Fix the import statements to reflect the copied over path. + find ${TMPDIR}/${PACKAGE_NAME} -name \*.py | + xargs $sedi -e ' + s/^from tensorflow.python.tpu.profiler/from '${PACKAGE_NAME}'/ + ' echo $(ls $TMPDIR) pushd ${TMPDIR} diff --git a/tensorflow/contrib/tpu/profiler/pip_package/setup.py b/tensorflow/python/tpu/profiler/pip_package/setup.py similarity index 87% rename from tensorflow/contrib/tpu/profiler/pip_package/setup.py rename to tensorflow/python/tpu/profiler/pip_package/setup.py index 807cf26fe98..22ef5644581 100644 --- a/tensorflow/contrib/tpu/profiler/pip_package/setup.py +++ b/tensorflow/python/tpu/profiler/pip_package/setup.py @@ -20,32 +20,25 @@ from __future__ import print_function from setuptools import setup -_VERSION = '1.12.0' +from cloud_tpu_profiler.version import __version__ CONSOLE_SCRIPTS = [ - 'capture_tpu_profile=cloud_tpu_profiler.main:run_main', + 'capture_tpu_profile=cloud_tpu_profiler.capture_tpu_profile:run_main', ] setup( name='cloud_tpu_profiler', - version=_VERSION.replace('-', ''), + version=__version__.replace('-', ''), description='Trace and profile Cloud TPU performance', long_description='Tools for capture TPU profile', url='https://www.tensorflow.org/tfrc/', author='Google Inc.', author_email='packages@tensorflow.org', packages=['cloud_tpu_profiler'], - package_data={ - 'cloud_tpu_profiler': ['data/*'], - }, entry_points={ 'console_scripts': CONSOLE_SCRIPTS, }, classifiers=[ - # How mature is this project? Common values are - # 3 - Alpha - # 4 - Beta - # 5 - Production/Stable 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Intended Audience :: Education', diff --git a/tensorflow/contrib/tpu/profiler/pip_package/cloud_tpu_profiler/__init__.py b/tensorflow/python/tpu/profiler/version.py similarity index 71% rename from tensorflow/contrib/tpu/profiler/pip_package/cloud_tpu_profiler/__init__.py rename to tensorflow/python/tpu/profiler/version.py index 101b00165e3..c8224eb0bd3 100644 --- a/tensorflow/contrib/tpu/profiler/pip_package/cloud_tpu_profiler/__init__.py +++ b/tensorflow/python/tpu/profiler/version.py @@ -1,4 +1,4 @@ -# Copyright 2017 The TensorFlow Authors. All Rights Reserved. +# Copyright 2019 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. @@ -12,8 +12,13 @@ # See the License for the specific language governing permissions and # limitations under the License. # ============================================================================= -"""Cloud TPU profiler.""" +"""Cloud TPU profiler version information.""" from __future__ import absolute_import from __future__ import division from __future__ import print_function + +# Cloud TPU profiler uses semantic versioning, see http://semver.org/. +# A version string consists of +# major_version.minor_version.patch_version-build_metadata. +__version__ = "1.14.1-a0"