From f446daf7076b2b0218c57f32752925b8f742eb96 Mon Sep 17 00:00:00 2001 From: lucasdelimanogueira Date: Wed, 22 May 2024 19:32:47 -0300 Subject: [PATCH] sum axis cuda version --- build/cuda.cu.o | Bin 161632 -> 172480 bytes build/tensor.o | Bin 51832 -> 52248 bytes norch/csrc/cuda.cu | 108 +++++++++++++++++++++++++++++++++++------- norch/csrc/cuda.h | 3 +- norch/csrc/tensor.cpp | 20 +++++++- norch/libtensor.so | Bin 216136 -> 224720 bytes 6 files changed, 113 insertions(+), 18 deletions(-) diff --git a/build/cuda.cu.o b/build/cuda.cu.o index b40f8c491996fa42aac6b895f195fcf8862a5632..ff4eb61095d9598c4ccc397047d2297249d74628 100644 GIT binary patch delta 40656 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 GyAPUmq1(e(48fd%vycmby-cRNK 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 UGPY(1b?gN94=$0n?-W)4AKHru$p8QV diff --git a/build/tensor.o b/build/tensor.o index eb3c24e1f92b5a7aa761a7aa6c30b4739e9098b0..a24d9f744a9502641647a3264ae7c3d1c2f7b056 100644 GIT binary patch literal 52248 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 Pp>}r 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, tensor->size * sizeof(float), cudaMemcpyHostToDevice); +__global__ void sum_tensor_cuda_kernel_axis(float* data, float* result_data, int* shape, int* strides, int ndim, int axis, int axis_size) { + __shared__ float partial_sum[THREADS_PER_BLOCK]; - int num_blocks = (tensor->size + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK; + int tid = threadIdx.x; + int bid = blockIdx.x; + int i = bid * blockDim.x + tid; - // First-level reduction - sum_tensor_cuda_kernel<<>>(tensor->data, result_data, tensor->size); - - // 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; + int total_size = 1; + for (int i = 0; i < ndim; i++) { + total_size *= shape[i]; } - cudaError_t error = cudaGetLastError(); - if (error != cudaSuccess) { - printf("CUDA error: %s\n", cudaGetErrorString(error)); - exit(-1); + int outer_dim_size = total_size / (axis_size * shape[axis]); + + partial_sum[tid] = 0.0; + if (i < outer_dim_size) { + for (int j = 0; j < axis_size; j++) { + int idx = i * strides[axis] + j * strides[axis + 1]; + partial_sum[tid] += data[idx]; + } } - cudaDeviceSynchronize(); + __syncthreads(); + + // Perform block-wise reduction + for (int s = blockDim.x / 2; s > 0; s >>= 1) { + if (tid < s) { + partial_sum[tid] += partial_sum[tid + s]; + } + __syncthreads(); + } + + // Write block sum to global memory + if (tid == 0) { + result_data[bid] = partial_sum[0]; + } +} + + +__host__ void sum_tensor_cuda(Tensor* tensor, float* result_data, int axis) { + 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; + + // First-level reduction + sum_tensor_cuda_kernel<<>>(tensor->data, result_data, tensor->size); + + // 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; + } + + cudaError_t error = cudaGetLastError(); + if (error != cudaSuccess) { + printf("CUDA error: %s\n", cudaGetErrorString(error)); + exit(-1); + } + + cudaDeviceSynchronize(); + + } else { + if (axis < 0 || axis >= tensor->ndim) { + printf("Invalid axis\n"); + return; + } + + int total_size = tensor->size; + int axis_size = tensor->shape[axis]; + + int outer_dim_size = total_size / axis_size; + + int num_blocks = (outer_dim_size + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK; + + int* d_shape; + int* d_strides; + cudaMalloc(&d_shape, tensor->ndim * sizeof(int)); + cudaMalloc(&d_strides, tensor->ndim * sizeof(int)); + cudaMemcpy(d_shape, tensor->shape, tensor->ndim * sizeof(int), cudaMemcpyHostToDevice); + cudaMemcpy(d_strides, tensor->strides, tensor->ndim * sizeof(int), cudaMemcpyHostToDevice); + + sum_tensor_cuda_kernel_axis<<>>( + tensor->data, result_data, d_shape, d_strides, tensor->ndim, axis, axis_size + ); + + cudaFree(d_shape); + cudaFree(d_strides); + + cudaError_t error = cudaGetLastError(); + if (error != cudaSuccess) { + printf("CUDA error: %s\n", cudaGetErrorString(error)); + exit(-1); + } + + cudaDeviceSynchronize(); + } } __global__ void sub_tensor_cuda_kernel(float* data1, float* data2, float* result_data, int size) { diff --git a/norch/csrc/cuda.h b/norch/csrc/cuda.h index 38a6977..153173b 100644 --- a/norch/csrc/cuda.h +++ b/norch/csrc/cuda.h @@ -14,7 +14,8 @@ __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); - __host__ void sum_tensor_cuda(Tensor* tensor, float* result_data); + __global__ void sum_tensor_cuda_kernel_axis(float* data, float* result_data, int* shape, int* strides, int ndim, int axis, int axis_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); __host__ void sub_tensor_cuda(Tensor* tensor1, Tensor* tensor2, float* result_data); diff --git a/norch/csrc/tensor.cpp b/norch/csrc/tensor.cpp index 4d4d2fb..b6d2aae 100644 --- a/norch/csrc/tensor.cpp +++ b/norch/csrc/tensor.cpp @@ -207,7 +207,25 @@ extern "C" { float* result_data; cudaMalloc((void**)&result_data, size * sizeof(float)); cudaMemset(result_data, 0, size * sizeof(float)); - sum_tensor_cuda(tensor, result_data); + sum_tensor_cuda(tensor, result_data, axis); + + if (keepdim) { + if (axis == -1){ + ndim = tensor->ndim; + shape = (int*) malloc((tensor->ndim) * sizeof(int)); + for (int i = 0; i < tensor->ndim; i++) { + shape[i] = 1; + } + } else { + shape = (int*) malloc((tensor->ndim) * sizeof(int)); + for (int i = 0; i < tensor->ndim; i++) { + shape[i] = tensor->shape[i]; + } + shape[axis] = 1; + ndim = tensor->ndim; + } + + } return create_tensor(result_data, shape, ndim, device); } else { diff --git a/norch/libtensor.so b/norch/libtensor.so index d9dcf12333e94be3825ce394ac6f583141d9232c..709baff8c43f879330fcdfbdf2b06ae1cfdcbf9e 100755 GIT binary patch delta 57771 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Ⓢ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 jj6x>6~JIYpzb^6qW3LtdCwbMP>g#b1F@|