#ifndef CAFFE2_UTILS_GPU_ATOMICS_H_ #define CAFFE2_UTILS_GPU_ATOMICS_H_ #include namespace caffe2 { namespace { template inline __device__ void gpu_atomic_add(T* address, const T val) { atomicAdd(address, val); } template <> inline __device__ void gpu_atomic_add(float* address, const float val) { #if defined(USE_ROCM) && defined(__gfx908__) atomicAddNoRet(address, val); #else atomicAdd(address, val); #endif } } // namespace } // namespace caffe2 #endif // CAFFE2_UTILS_GPU_ATOMICS_H_