From 077f415e21782c9d17b83866b7e21e112a878649 Mon Sep 17 00:00:00 2001 From: fo40225 Date: Thu, 3 Oct 2019 21:38:02 +0800 Subject: [PATCH 1/2] fix msvc 16.3.0 + cuda 10.1.243 build break --- tensorflow/core/kernels/scatter_nd_op_gpu.cu.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tensorflow/core/kernels/scatter_nd_op_gpu.cu.cc b/tensorflow/core/kernels/scatter_nd_op_gpu.cu.cc index 209e7bb6130..2b152f44c81 100644 --- a/tensorflow/core/kernels/scatter_nd_op_gpu.cu.cc +++ b/tensorflow/core/kernels/scatter_nd_op_gpu.cu.cc @@ -72,7 +72,9 @@ template struct LeftUpdate, scatter_nd_op::UpdateOp::SUB> { EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC void operator()( std::complex* out, const std::complex& val) { - LeftUpdate, scatter_nd_op::UpdateOp::ADD>()(out, -val); + T* ptr = reinterpret_cast(out); + GpuAtomicAdd(ptr, -val.real()); + GpuAtomicAdd(ptr, -val.imag()); } }; From 6a1a6925fc332c5012ba67a0d7e8e46ac6291c5d Mon Sep 17 00:00:00 2001 From: fo40225 Date: Sat, 19 Oct 2019 19:31:56 +0800 Subject: [PATCH 2/2] use GpuAtomicSub instead of GpuAtomicAdd --- tensorflow/core/kernels/scatter_nd_op_gpu.cu.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tensorflow/core/kernels/scatter_nd_op_gpu.cu.cc b/tensorflow/core/kernels/scatter_nd_op_gpu.cu.cc index 2b152f44c81..c7b14af5bc0 100644 --- a/tensorflow/core/kernels/scatter_nd_op_gpu.cu.cc +++ b/tensorflow/core/kernels/scatter_nd_op_gpu.cu.cc @@ -64,7 +64,7 @@ struct LeftUpdate, scatter_nd_op::UpdateOp::ADD> { std::complex* out, const std::complex& val) { T* ptr = reinterpret_cast(out); GpuAtomicAdd(ptr, val.real()); - GpuAtomicAdd(ptr, val.imag()); + GpuAtomicAdd(ptr + 1, val.imag()); } }; @@ -73,8 +73,8 @@ struct LeftUpdate, scatter_nd_op::UpdateOp::SUB> { EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC void operator()( std::complex* out, const std::complex& val) { T* ptr = reinterpret_cast(out); - GpuAtomicAdd(ptr, -val.real()); - GpuAtomicAdd(ptr, -val.imag()); + GpuAtomicSub(ptr, val.real()); + GpuAtomicSub(ptr + 1, val.imag()); } };