From be1c9cdfd910572975d96f7cb18c0fac6234b7c2 Mon Sep 17 00:00:00 2001 From: Tres Popp <tpopp@google.com> Date: Thu, 14 Jan 2021 11:46:07 -0800 Subject: [PATCH] KernelGen for Pow PiperOrigin-RevId: 351844384 Change-Id: I8d8bf2216c6e0dcc91105af8e8c8da760dfd91de --- .../core/kernels/cwise_op_gpu_pow.cu.cc | 3 -- tensorflow/core/kernels/cwise_op_pow.cc | 3 -- tensorflow/core/kernels/mlir_generated/BUILD | 16 +----- .../mlir_generated/gpu_binary_ops_test.cc | 49 ------------------- .../core/kernels/mlir_generated/gpu_op_pow.cc | 25 ---------- .../op_definitions/pow.mlir.tmpl | 6 --- 6 files changed, 1 insertion(+), 101 deletions(-) delete mode 100644 tensorflow/core/kernels/mlir_generated/gpu_op_pow.cc delete mode 100644 tensorflow/core/kernels/mlir_generated/op_definitions/pow.mlir.tmpl diff --git a/tensorflow/core/kernels/cwise_op_gpu_pow.cu.cc b/tensorflow/core/kernels/cwise_op_gpu_pow.cu.cc index 1a4acb78f69..19f915d08da 100644 --- a/tensorflow/core/kernels/cwise_op_gpu_pow.cu.cc +++ b/tensorflow/core/kernels/cwise_op_gpu_pow.cu.cc @@ -19,11 +19,8 @@ limitations under the License. namespace tensorflow { namespace functor { -#if !defined(MLIR_GENERATED_GPU_KERNELS_ENABLED) || \ - !defined(MLIR_GENERATED_EXPERIMENTAL_GPU_KERNELS_ENABLED) DEFINE_BINARY3(pow, Eigen::half, float, double); DEFINE_BINARY1(safe_pow_ignore_error, int64); -#endif } // namespace functor } // namespace tensorflow diff --git a/tensorflow/core/kernels/cwise_op_pow.cc b/tensorflow/core/kernels/cwise_op_pow.cc index e03ce437363..f601781a5e6 100644 --- a/tensorflow/core/kernels/cwise_op_pow.cc +++ b/tensorflow/core/kernels/cwise_op_pow.cc @@ -21,10 +21,7 @@ REGISTER6(BinaryOp, CPU, "Pow", functor::pow, float, Eigen::half, bfloat16, REGISTER2(BinaryOp, CPU, "Pow", functor::safe_pow, int32, int64); #if GOOGLE_CUDA || TENSORFLOW_USE_ROCM -#if !defined(MLIR_GENERATED_GPU_KERNELS_ENABLED) || \ - !defined(MLIR_GENERATED_EXPERIMENTAL_GPU_KERNELS_ENABLED) REGISTER3(BinaryOp, GPU, "Pow", functor::pow, float, Eigen::half, double); REGISTER(BinaryOp, GPU, "Pow", functor::safe_pow_ignore_error, int64); #endif -#endif } // namespace tensorflow diff --git a/tensorflow/core/kernels/mlir_generated/BUILD b/tensorflow/core/kernels/mlir_generated/BUILD index 3dbfb41cd7a..7a2e1189396 100644 --- a/tensorflow/core/kernels/mlir_generated/BUILD +++ b/tensorflow/core/kernels/mlir_generated/BUILD @@ -153,7 +153,6 @@ tf_kernel_library( "gpu_op_logical_or.cc", "gpu_op_mul.cc", "gpu_op_not_equal.cc", - "gpu_op_pow.cc", "gpu_op_right_shift.cc", "gpu_op_sub.cc", ], @@ -181,7 +180,6 @@ tf_kernel_library( ":minimum_kernels", ":mul_kernels", ":not_equal_kernels", - ":pow_kernels", ":right_shift_kernels", ":sub_kernels", "//third_party/eigen3", @@ -230,7 +228,7 @@ tf_cuda_cc_test( tf_cuda_cc_test( name = "gpu_binary_ops_test", - size = "medium", + size = "small", srcs = if_mlir_generated_gpu_kernels_enabled(["gpu_binary_ops_test.cc"]), tags = tf_cuda_tests_tags() + [ "no_cuda_asan", # b/173033461 @@ -648,15 +646,3 @@ gen_kernel_library( "sin", ] ] - -gen_kernel_library( - name = "pow", - tile_size = "256,1,1", - types = [ - "f16", - "f32", - "f64", - "i64", - ], - unroll_factors = "4", -) diff --git a/tensorflow/core/kernels/mlir_generated/gpu_binary_ops_test.cc b/tensorflow/core/kernels/mlir_generated/gpu_binary_ops_test.cc index d1f6e18f874..3504dc975f1 100644 --- a/tensorflow/core/kernels/mlir_generated/gpu_binary_ops_test.cc +++ b/tensorflow/core/kernels/mlir_generated/gpu_binary_ops_test.cc @@ -734,54 +734,5 @@ GENERATE_DEFAULT_TESTS(Sub, GENERATE_DEFAULT_TESTS(Sub, /*test_name=*/Int64, int64, int64, baseline_sub) -/// Test `tf.Pow`. - -template <typename T> -T baseline_pow(T lhs, T rhs) { - return std::pow(lhs, rhs); -} - -template <typename T, std::enable_if_t< - llvm::is_one_of<T, Eigen::half, float, double>::value, - bool> = true> -absl::InlinedVector<T, 10> PowInput() { - return test::InputAsVector<T, double>({0.0, 0.1, 0.2, 0.3, 1.0, 2.0, 3.0}); -} - -template <typename T, - std::enable_if_t<llvm::is_one_of<T, int8, int16, int32, int64>::value, - bool> = true> -absl::InlinedVector<T, 10> PowInput() { - return test::InputAsVector<T, double>({0, 1, 3}); -} - -template <> -Eigen::half baseline_pow(Eigen::half lhs, Eigen::half rhs) { - return static_cast<Eigen::half>( - std::pow(static_cast<float>(lhs), static_cast<float>(rhs))); -} - -GENERATE_DEFAULT_TESTS_WITH_SPECIFIC_INPUT_VALUES(Pow, - /*test_name=*/Half, - Eigen::half, Eigen::half, - PowInput<Eigen::half>(), - PowInput<Eigen::half>(), - baseline_pow) -GENERATE_DEFAULT_TESTS_WITH_SPECIFIC_INPUT_VALUES(Pow, - /*test_name=*/Float, float, - float, PowInput<float>(), - PowInput<float>(), - baseline_pow) -GENERATE_DEFAULT_TESTS_WITH_SPECIFIC_INPUT_VALUES(Pow, - /*test_name=*/Double, double, - double, PowInput<double>(), - PowInput<double>(), - baseline_pow) -GENERATE_DEFAULT_TESTS_WITH_SPECIFIC_INPUT_VALUES(Pow, - /*test_name=*/Int64, int64, - int64, PowInput<int64>(), - PowInput<int64>(), - baseline_pow) - } // namespace } // end namespace tensorflow diff --git a/tensorflow/core/kernels/mlir_generated/gpu_op_pow.cc b/tensorflow/core/kernels/mlir_generated/gpu_op_pow.cc deleted file mode 100644 index 2a167caa2f0..00000000000 --- a/tensorflow/core/kernels/mlir_generated/gpu_op_pow.cc +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright 2021 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. -==============================================================================*/ -#include "third_party/eigen3/unsupported/Eigen/CXX11/Tensor" -#include "tensorflow/core/kernels/mlir_generated/gpu_ops_base.h" - -namespace tensorflow { - -GENERATE_AND_REGISTER_BINARY_KERNEL(Pow, f16, DT_HALF, Eigen::half); -GENERATE_AND_REGISTER_BINARY_KERNEL(Pow, f32, DT_FLOAT, float); -GENERATE_AND_REGISTER_BINARY_KERNEL(Pow, f64, DT_DOUBLE, double); -GENERATE_AND_REGISTER_BINARY_KERNEL(Pow, i64, DT_INT64, int64); - -} // namespace tensorflow diff --git a/tensorflow/core/kernels/mlir_generated/op_definitions/pow.mlir.tmpl b/tensorflow/core/kernels/mlir_generated/op_definitions/pow.mlir.tmpl deleted file mode 100644 index 1e1e9a9759b..00000000000 --- a/tensorflow/core/kernels/mlir_generated/op_definitions/pow.mlir.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -func @Pow_elem_type(%arg0: tensor<*xelem_type>, %arg1: tensor<*xelem_type>) - -> tensor<*xelem_type> attributes {tf_entry, llvm.emit_c_interface} { - %0 = "tf.Pow"(%arg0, %arg1) {T = elem_type, device = ""} - : (tensor<*xelem_type>, tensor<*xelem_type>) -> tensor<*xelem_type> - return %0 : tensor<*xelem_type> -}