diff --git a/tensorflow/core/profiler/utils/BUILD b/tensorflow/core/profiler/utils/BUILD index da150c29980..a8c25cb8890 100644 --- a/tensorflow/core/profiler/utils/BUILD +++ b/tensorflow/core/profiler/utils/BUILD @@ -12,16 +12,6 @@ package_group( ], ) -cc_library( - name = "timespan", - hdrs = ["timespan.h"], - deps = [ - ":time_utils", - "//tensorflow/core/platform:logging", - "//tensorflow/core/platform:types", - ], -) - cc_library( name = "event_span", srcs = ["event_span.cc"], @@ -36,6 +26,25 @@ cc_library( ], ) +cc_library( + name = "math_utils", + hdrs = ["math_utils.h"], + visibility = [ + "//perftools/accelerators/xprof/convert:__pkg__", + "//perftools/gputools/profiler/collector:__pkg__", + ], +) + +cc_library( + name = "timespan", + hdrs = ["timespan.h"], + deps = [ + ":time_utils", + "//tensorflow/core/platform:logging", + "//tensorflow/core/platform:types", + ], +) + tf_cc_test( name = "timespan_test", srcs = ["timespan_test.cc"], diff --git a/tensorflow/core/profiler/utils/math_utils.h b/tensorflow/core/profiler/utils/math_utils.h new file mode 100644 index 00000000000..dfa5e38eba8 --- /dev/null +++ b/tensorflow/core/profiler/utils/math_utils.h @@ -0,0 +1,32 @@ +/* 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. +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_CORE_PROFILER_UTILS_MATH_UTILS_H_ +#define TENSORFLOW_CORE_PROFILER_UTILS_MATH_UTILS_H_ + +namespace tensorflow { +namespace profiler { + +// Checks the divisor and returns 0 to avoid divide by zero. +inline double SafeDivide(double dividend, double divisor) { + constexpr double kEpsilon = 1.0E-10; + if ((-kEpsilon < divisor) && (divisor < kEpsilon)) return 0.0; + return dividend / divisor; +} + +} // namespace profiler +} // namespace tensorflow + +#endif // TENSORFLOW_CORE_PROFILER_UTILS_MATH_UTILS_H_