From 192a50f77381c5b6fb2e5b519e2db3b147d21eac Mon Sep 17 00:00:00 2001 From: lucasdelimanogueira Date: Thu, 23 May 2024 00:30:48 -0300 Subject: [PATCH] fix sum cuda axis atomicAdd --- build/cuda.cu.o | Bin 166456 -> 166672 bytes build/tensor.o | Bin 52352 -> 52456 bytes norch/csrc/cuda.cu | 57 ++++++++++++++++++------------------------ norch/csrc/cuda.h | 2 +- norch/csrc/tensor.cpp | 10 +++++++- norch/libtensor.so | Bin 220432 -> 220560 bytes 6 files changed, 34 insertions(+), 35 deletions(-) diff --git a/build/cuda.cu.o b/build/cuda.cu.o index e6f030403ef1e71dabff36ee3581e2c4e0e61109..4ed5a3e1251a6f80622bd4bd00a0eddaf3039dac 100644 GIT binary patch delta 26455 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 delta 26626 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�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 rjgMvg(%zpn?Y<}E?BkPN+P*FOyYI5&H 0; s >>= 1) { - if (tid < s && i < block_offset + axis_size) { - partial_sum[tid] += partial_sum[tid + s]; + for (int i = 0; i < strides[target_axis]; ++i) { + int index = offset + i * strides[target_axis + 1]; + atomicAdd(&result_data[outer_index * inner_size + inner_index], data[index]); } - __syncthreads(); - } - - // Write block sum to global memory - if (tid == 0) { - result_data[blockIdx.x] = partial_sum[0]; } } __host__ void sum_tensor_cuda(Tensor* tensor, float* result_data, int axis) { - cudaMemcpy(result_data, tensor->data, tensor->size * sizeof(float), cudaMemcpyHostToDevice); if (axis == -1) { + cudaMemcpy(result_data, tensor->data, tensor->size * sizeof(float), cudaMemcpyHostToDevice); int num_blocks = (tensor->size + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK; @@ -197,19 +184,20 @@ __host__ void sum_tensor_cuda(Tensor* tensor, float* result_data, int axis) { cudaDeviceSynchronize(); } else { - int axis_size = tensor->shape[axis]; - int num_blocks = (tensor->size + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK; + int target_axis_stride = tensor->strides[axis]; + int inner_size = tensor->strides[axis + 1]; + int outer_size = tensor->size / target_axis_stride; - // First-level reduction - sum_tensor_axis_cuda_kernel<<>>(result_data, result_data, tensor->size, axis_size); + int* d_strides; + cudaMalloc(&d_strides, (tensor->ndim + 1) * sizeof(int)); + cudaMemcpy(d_strides, tensor->strides, (tensor->ndim + 1) * sizeof(int), cudaMemcpyHostToDevice); - // If necessary, perform multiple levels of reduction - while (num_blocks > 1) { - int num_blocks_next = (num_blocks + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK; - sum_tensor_cuda_kernel<<>>(result_data, result_data, num_blocks); - num_blocks = num_blocks_next; - } + cudaMemset(result_data, 0, outer_size * sizeof(float)); + + int num_threads = outer_size; + int num_blocks = (num_threads + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK; + sum_tensor_cuda_kernel_axis<<>>(tensor->data, result_data, d_strides, axis, inner_size, outer_size); cudaError_t error = cudaGetLastError(); if (error != cudaSuccess) { @@ -218,6 +206,9 @@ __host__ void sum_tensor_cuda(Tensor* tensor, float* result_data, int axis) { } cudaDeviceSynchronize(); + + // Free allocated memory + cudaFree(d_strides); } } diff --git a/norch/csrc/cuda.h b/norch/csrc/cuda.h index 5e180cf..822d661 100644 --- a/norch/csrc/cuda.h +++ b/norch/csrc/cuda.h @@ -14,7 +14,7 @@ __host__ void sub_broadcasted_tensor_cuda(Tensor* tensor1, Tensor* tensor2, float* result_data, int* broadcasted_shape, int broadcasted_size); __global__ void sum_tensor_cuda_kernel(float* data, float* result_data); - __global__ void sum_tensor_axis_cuda_kernel(float* data, float* result_data, int size, int axis_size); + __global__ void sum_tensor_cuda_kernel_axis(float* data, float* result_data, int* strides, int target_axis, int inner_size, int outer_size); __host__ void sum_tensor_cuda(Tensor* tensor, float* result_data, int axis); __global__ void sub_tensor_cuda_kernel(float* data1, float* data2, float* result_data, int size); diff --git a/norch/csrc/tensor.cpp b/norch/csrc/tensor.cpp index 8e5ffa6..221ec62 100644 --- a/norch/csrc/tensor.cpp +++ b/norch/csrc/tensor.cpp @@ -210,7 +210,15 @@ extern "C" { if (strcmp(tensor->device, "cuda") == 0) { float* result_data; - cudaMalloc((void**)&result_data, tensor->size * sizeof(float)); + if (axis == -1) { + cudaMalloc((void**)&result_data, tensor->size * sizeof(float)); + } else { + + int target_axis_stride = tensor->strides[axis]; + int outer_size = tensor->size / target_axis_stride; + + cudaMalloc((void**)&result_data, (outer_size) * sizeof(float)); + } sum_tensor_cuda(tensor, result_data, axis); if (keepdim) { diff --git a/norch/libtensor.so b/norch/libtensor.so index 6c1f5ae54cd3a1b5e5009c8784e03c2c0a607b18..eb4a5ac351498ca289360457d4a81cd30f5d8342 100755 GIT binary patch delta 39860 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%0Dg*(sEC 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 nG9ntyQ$0FHV;o_{k*Lxyl&BeN%N>u#cwLA+M delta 39064 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 Ho6^4k(p`d5