From 38e629fc386757f780a08760f89ed6af141a56cd Mon Sep 17 00:00:00 2001 From: lucasdelimanogueira Date: Thu, 23 May 2024 02:27:46 -0300 Subject: [PATCH] make contiguous cuda --- norch/csrc/cpu.cpp | 19 +++++++++++++++++++ norch/csrc/cpu.h | 1 + norch/csrc/cuda.cu | 42 ++++++++++++++++++++++++++++++++++++++++++ norch/csrc/cuda.h | 3 +++ norch/csrc/tensor.cpp | 37 +++++++++++++------------------------ norch/libtensor.so | Bin 250496 -> 268008 bytes 6 files changed, 78 insertions(+), 24 deletions(-) diff --git a/norch/csrc/cpu.cpp b/norch/csrc/cpu.cpp index 40eb3b5..63e1615 100644 --- a/norch/csrc/cpu.cpp +++ b/norch/csrc/cpu.cpp @@ -395,6 +395,25 @@ void assign_tensor_cpu(Tensor* tensor, float* result_data) { } } +void make_contiguous_tensor_cpu(Tensor* tensor, float* result_data, int* new_strides) { + + for (int i = 0; i < tensor->size; i++) { + int index = 0; + int offset = i; + for (int j = 0; j < tensor->ndim; j++) { + index += (offset / new_strides[j]) * tensor->strides[j]; + offset %= new_strides[j]; + } + result_data[i] = tensor->data[index]; + } + + // Free old data and update tensor properties + free(tensor->data); + free(tensor->strides); + tensor->data = result_data; + tensor->strides = new_strides; +} + void sin_tensor_cpu(Tensor* tensor, float* result_data) { for (int i = 0; i < tensor->size; i++) { result_data[i] = sinf(tensor->data[i]); diff --git a/norch/csrc/cpu.h b/norch/csrc/cpu.h index 1d9547b..9a27a26 100644 --- a/norch/csrc/cpu.h +++ b/norch/csrc/cpu.h @@ -30,6 +30,7 @@ void transpose_2D_tensor_cpu(Tensor* tensor, float* result_data); void transpose_3D_tensor_cpu(Tensor* tensor, float* result_data); void transpose_axes_cpu(Tensor* tensor, float* result_data, int axis1, int axis2, int* new_shape); void assign_tensor_cpu(Tensor* tensor, float* result_data); +void make_contiguous_tensor_cpu(Tensor* tensor, float* result_data, int* new_strides); void sin_tensor_cpu(Tensor* tensor, float* result_data); void cos_tensor_cpu(Tensor* tensor, float* result_data); void sigmoid_tensor_cpu(Tensor* tensor, float* result_data); diff --git a/norch/csrc/cuda.cu b/norch/csrc/cuda.cu index bda8a7d..064c3d1 100644 --- a/norch/csrc/cuda.cu +++ b/norch/csrc/cuda.cu @@ -1115,6 +1115,48 @@ __host__ void assign_tensor_cuda(Tensor* tensor, float* result_data) { cudaDeviceSynchronize(); } +__global__ void make_contiguous_tensor_cuda_kernel(float* data, float* result_data, int ndim, int size, int* strides, int* new_strides) { + + int i = blockIdx.x * blockDim.x + threadIdx.x; + if (i < size) { + int index = 0; + int offset = i; + for (int j = 0; j < ndim; j++) { + index += (offset / new_strides[j]) * strides[j]; + offset %= new_strides[j]; + } + result_data[i] = data[index]; + } +} + +__host__ void make_contiguous_tensor_cuda(Tensor* tensor, float* result_data, int* new_strides) { + + int* d_strides; + cudaMalloc((void **)&d_strides, tensor->ndim * sizeof(int)); + cudaMemcpy(d_strides, tensor->strides, tensor->ndim * sizeof(int), cudaMemcpyHostToDevice); + + int* d_new_strides; + cudaMalloc((void **)&d_new_strides, tensor->ndim * sizeof(int)); + cudaMemcpy(d_new_strides, new_strides, tensor->ndim * sizeof(int), cudaMemcpyHostToDevice); + + int number_of_blocks = (tensor->size + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK; + make_contiguous_tensor_cuda_kernel<<>>(tensor->data, result_data, tensor->ndim, tensor->size, d_strides, d_new_strides); + + cudaError_t error = cudaGetLastError(); + if (error != cudaSuccess) { + printf("CUDA error: %s\n", cudaGetErrorString(error)); + exit(-1); + } + + cudaDeviceSynchronize(); + + // Free old data and update tensor properties + cudaFree(tensor->data); + free(tensor->strides); + tensor->data = result_data; + tensor->strides = new_strides; +} + __global__ void sin_tensor_cuda_kernel(float* data, float* result_data, int size) { int i = blockIdx.x * blockDim.x + threadIdx.x; diff --git a/norch/csrc/cuda.h b/norch/csrc/cuda.h index a684ee2..cc7b385 100644 --- a/norch/csrc/cuda.h +++ b/norch/csrc/cuda.h @@ -85,6 +85,9 @@ __global__ void assign_tensor_cuda_kernel(float* data, float* result_data, int size); __host__ void assign_tensor_cuda(Tensor* tensor, float* result_data); + __global__ void make_contiguous_tensor_cuda_kernel(float* data, float* result_data, int ndim, int size, int* strides, int* new_strides); + __host__ void make_contiguous_tensor_cuda(Tensor* tensor, float* result_data, int* new_strides); + __global__ void sin_tensor_cuda_kernel(float* data, float* result_data, int size); __host__ void sin_tensor_cuda(Tensor* tensor, float* result_data); diff --git a/norch/csrc/tensor.cpp b/norch/csrc/tensor.cpp index 22739b6..d5bfa71 100644 --- a/norch/csrc/tensor.cpp +++ b/norch/csrc/tensor.cpp @@ -1522,17 +1522,10 @@ extern "C" { } void make_contiguous(Tensor* tensor) { - float* new_data = (float*)malloc(tensor->size * sizeof(float)); - if (new_data == NULL) { - // Handle memory allocation failure - return; - } - + int* new_strides = (int*)malloc(tensor->ndim * sizeof(int)); if (new_strides == NULL) { - free(new_data); - // Handle memory allocation failure - return; + fprintf(stderr, "Memory allocation failed\n"); } // Calculate new strides assuming C-contiguous order @@ -1542,21 +1535,17 @@ extern "C" { stride *= tensor->shape[i]; } - // Rearrange data - for (int i = 0; i < tensor->size; i++) { - int index = 0; - int offset = i; - for (int j = 0; j < tensor->ndim; j++) { - index += (offset / new_strides[j]) * tensor->strides[j]; - offset %= new_strides[j]; - } - new_data[i] = tensor->data[index]; - } + if (strcmp(tensor->device, "cuda") == 0) { + float* result_data; + cudaMalloc((void **)&result_data, tensor->size * sizeof(float)); + make_contiguous_tensor_cuda(tensor, result_data, new_strides); - // Free old data and update tensor properties - free(tensor->data); - free(tensor->strides); - tensor->data = new_data; - tensor->strides = new_strides; + } else { + float* result_data = (float*)malloc(tensor->size * sizeof(float)); + if (result_data == NULL) { + fprintf(stderr, "Memory allocation failed\n"); + } + make_contiguous_tensor_cpu(tensor, result_data, new_strides); } } +} diff --git a/norch/libtensor.so b/norch/libtensor.so index 0f5fce8d116a2aedf968b0000f094fb310b2e5c9..5f2b381cf0280b809ba912a7c6a7043e30972e43 100755 GIT binary patch delta 65257 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 KzmrJ)+gB3R{>8cG1c=b=hU^ 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 delta 53055 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