未验证 提交 f8238411 编写于 作者: W whs 提交者: GitHub

Fix atomicAdd in grid sample op and affine grid op (#26647)

test=develop
上级 32ba8602
...@@ -86,14 +86,14 @@ __global__ void affine_grid_grad_kernel(const int count, int n, int out_h, ...@@ -86,14 +86,14 @@ __global__ void affine_grid_grad_kernel(const int count, int n, int out_h,
int theta_offset = n * 6; // 2 * 3; int theta_offset = n * 6; // 2 * 3;
T out_grad_x = out_grad[index * 2]; T out_grad_x = out_grad[index * 2];
atomicAdd(theta_grad + theta_offset, out_grad_x * h_coor); platform::CudaAtomicAdd(theta_grad + theta_offset, out_grad_x * h_coor);
atomicAdd(theta_grad + theta_offset + 1, out_grad_x * w_coor); platform::CudaAtomicAdd(theta_grad + theta_offset + 1, out_grad_x * w_coor);
atomicAdd(theta_grad + theta_offset + 2, out_grad_x); platform::CudaAtomicAdd(theta_grad + theta_offset + 2, out_grad_x);
T out_grad_y = out_grad[index * 2 + 1]; T out_grad_y = out_grad[index * 2 + 1];
atomicAdd(theta_grad + theta_offset + 3, out_grad_y * h_coor); platform::CudaAtomicAdd(theta_grad + theta_offset + 3, out_grad_y * h_coor);
atomicAdd(theta_grad + theta_offset + 4, out_grad_y * w_coor); platform::CudaAtomicAdd(theta_grad + theta_offset + 4, out_grad_y * w_coor);
atomicAdd(theta_grad + theta_offset + 5, out_grad_y); platform::CudaAtomicAdd(theta_grad + theta_offset + 5, out_grad_y);
} }
} }
......
...@@ -31,7 +31,7 @@ static __forceinline__ __device__ void atomic_add(T* data, int h, int w, int sH, ...@@ -31,7 +31,7 @@ static __forceinline__ __device__ void atomic_add(T* data, int h, int w, int sH,
int sW, int H, int W, int sW, int H, int W,
T delta) { T delta) {
if (in_bounds(h, w, H, W)) { if (in_bounds(h, w, H, W)) {
atomicAdd(data + h * sH + w * sW, delta); platform::CudaAtomicAdd(data + h * sH + w * sW, delta);
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册