From ef9eb1cf64ca9e09d7c3c9fa67eb6a9ea5985658 Mon Sep 17 00:00:00 2001
From: Sung Jin Hwang <sjhwang@google.com>
Date: Thu, 31 Oct 2019 15:53:55 -0700
Subject: [PATCH] Add int32 type support for BiasAdd. CPU support already
 exists, so adding GPU support only.

PiperOrigin-RevId: 277818665
Change-Id: I174cdab534dc286e7ddd221e95bdef73e372097c
---
 tensorflow/core/kernels/bias_op.cc             | 1 +
 tensorflow/core/kernels/bias_op_gpu.cu.cc      | 3 +++
 tensorflow/python/kernel_tests/bias_op_base.py | 2 +-
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/tensorflow/core/kernels/bias_op.cc b/tensorflow/core/kernels/bias_op.cc
index 00b920c5f45..bf001cceae7 100644
--- a/tensorflow/core/kernels/bias_op.cc
+++ b/tensorflow/core/kernels/bias_op.cc
@@ -379,6 +379,7 @@ class BiasOp<GPUDevice, T> : public BinaryOp<T> {
       BiasOp<GPUDevice, type>);
 
 TF_CALL_GPU_NUMBER_TYPES(REGISTER_GPU_KERNEL);
+REGISTER_GPU_KERNEL(int32);
 #undef REGISTER_GPU_KERNEL
 
 struct BiasGradAutotuneGroup {
diff --git a/tensorflow/core/kernels/bias_op_gpu.cu.cc b/tensorflow/core/kernels/bias_op_gpu.cu.cc
index bf54aff5a0d..54f9505b459 100644
--- a/tensorflow/core/kernels/bias_op_gpu.cu.cc
+++ b/tensorflow/core/kernels/bias_op_gpu.cu.cc
@@ -289,6 +289,9 @@ void BiasGradGPU<T>::DoColReduction(OpKernelContext* context, T* output,
 
 TF_CALL_GPU_NUMBER_TYPES(DEFINE_GPU_SPECS);
 
+// No BiasGrad kernel for int32.
+template struct BiasGPU<int32>;
+
 }  // end namespace tensorflow
 
 #endif  // GOOGLE_CUDA || TENSORFLOW_USE_ROCM
diff --git a/tensorflow/python/kernel_tests/bias_op_base.py b/tensorflow/python/kernel_tests/bias_op_base.py
index 9b5d4131f6b..cb7e771febf 100644
--- a/tensorflow/python/kernel_tests/bias_op_base.py
+++ b/tensorflow/python/kernel_tests/bias_op_base.py
@@ -83,7 +83,7 @@ class BiasAddTestBase(test.TestCase):
   def _testAll(self, np_inputs, np_bias):
     self._testBias(np_inputs, np_bias, use_gpu=False)
     self._testBiasNCHW(np_inputs, np_bias, use_gpu=False)
-    if np_inputs.dtype in [np.float16, np.float32, np.float64]:
+    if np_inputs.dtype in [np.float16, np.float32, np.float64, np.int32]:
       self._testBias(np_inputs, np_bias, use_gpu=True)
       self._testBiasNCHW(np_inputs, np_bias, use_gpu=True)