From d093015d151a5828b07d9d0d8a48a7fae2d97c58 Mon Sep 17 00:00:00 2001 From: lucasdelimanogueira Date: Wed, 22 May 2024 21:07:09 -0300 Subject: [PATCH] fix sum cuda axis --- build/cuda.cu.o | Bin 166768 -> 166456 bytes build/tensor.o | Bin 52448 -> 52352 bytes norch/csrc/cuda.cu | 17 ++++------------- norch/csrc/tensor.cpp | 5 ++--- norch/libtensor.so | Bin 220544 -> 220432 bytes 5 files changed, 6 insertions(+), 16 deletions(-) diff --git a/build/cuda.cu.o b/build/cuda.cu.o index 94ea9cd850c1cf122caa0aa21805c86cc4f17426..e6f030403ef1e71dabff36ee3581e2c4e0e61109 100644 GIT binary patch delta 20602 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�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, tensor->size * sizeof(float), cudaMemcpyHostToDevice); + cudaMemcpy(result_data, tensor->data, tensor->size * sizeof(float), cudaMemcpyHostToDevice); + if (axis == -1) { + int num_blocks = (tensor->size + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK; // First-level reduction @@ -198,17 +199,10 @@ __host__ void sum_tensor_cuda(Tensor* tensor, float* result_data, int axis) { } else { int axis_size = tensor->shape[axis]; - // Allocate memory for temporary storage on the device - float* temp_data; - cudaMalloc(&temp_data, tensor->size * sizeof(float)); - - // Copy tensor data to device - cudaMemcpy(temp_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_axis_cuda_kernel<<>>(temp_data, result_data, tensor->size, axis_size); + sum_tensor_axis_cuda_kernel<<>>(result_data, result_data, tensor->size, axis_size); // If necessary, perform multiple levels of reduction while (num_blocks > 1) { @@ -217,9 +211,6 @@ __host__ void sum_tensor_cuda(Tensor* tensor, float* result_data, int axis) { num_blocks = num_blocks_next; } - // Free allocated memory on the device - cudaFree(temp_data); - cudaError_t error = cudaGetLastError(); if (error != cudaSuccess) { printf("CUDA error: %s\n", cudaGetErrorString(error)); diff --git a/norch/csrc/tensor.cpp b/norch/csrc/tensor.cpp index 1f374f8..9b08196 100644 --- a/norch/csrc/tensor.cpp +++ b/norch/csrc/tensor.cpp @@ -182,7 +182,7 @@ extern "C" { } int ndim; int* shape; - + if (axis > tensor->ndim - 1) { fprintf(stderr, "Error: axis argument %d must be smaller than tensor dimension %d", axis, tensor->ndim); } @@ -208,10 +208,9 @@ extern "C" { } if (strcmp(tensor->device, "cuda") == 0) { - + float* result_data; cudaMalloc((void**)&result_data, size * sizeof(float)); - cudaMemset(result_data, 0, size * sizeof(float)); sum_tensor_cuda(tensor, result_data, axis); if (keepdim) { diff --git a/norch/libtensor.so b/norch/libtensor.so index 6074e466862319fc5fb5ca661386435d9ccc209e..6c1f5ae54cd3a1b5e5009c8784e03c2c0a607b18 100755 GIT binary patch delta 31014 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 delta 32071 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⋙5LLDN4=x zNwH6%Kbmgb3ZOF9d(=nco6KWt`vNu3vnLY@*z#;q^z3VxflJX&^B zjJNLv-?%eH3(V-$3FB||4;6gljw%Z|KSeTbWwBQ@Fm3{JMDRD|aEFF)B0Ug%<3>a# ztVXFr#yw=33O?UZ0zF0BQDOx47c-?S5#n;^xc!a-W}o02x8V9s@Qu3yJrI23)*-G~ zs#3R%+Z46s{92N63$C7`fpOQB8ERrMu74}&4rwXdgpzTKpv!`9+`8eF;5*;p;c3Ip z8;fG7{W1YPypjbW3htIw@@qDL2ZQK8@C$TAo!*B z4GRMJB_S~G{c@Y~>7IG!S3+anL+&fRqo#+SDp$q4UJpxh>Y;ICk#2%--06fqL8bb} zO=!-TIN!J}N4C&6ZY6Yx^D9ZlyiZWQT^C+QU4xVc~i<igPUer_LW-pBe-?&xQV8J(T>)9I8^9eh zZpzn-@wqNm;Pqi|!Yb8Hl=&yLr-R&>>%u!}ezQ@UHM$DJQ)MMP)Gek`Swv4Y3QWr)BaSx4KMa>fY z`^Pv`5+~AX!8dOCmZzSDxyUC%tZl+Y9~;vnHkiX0HxwMME~<;0&zVAO+_9E$agGqb zOyt(IT?Fy?8m;Abj0~<2!ZD0{vv~`?aX-L7!8h(?8Y}pQ{k)_B;0Mt$otPvvjQcMx z6a3Pffnp6M_{J^HyhFLi#;r8Fs59%?nFfy#VzHs1Z9l;yf?r`KPlvW@y&(8>_d9wt z<6`N(;2XCV4Z_n^HqARVr0>vA|J`d2w~LYO8YT`>6C&&u21iD)eXJe$@zt=I+ZnCp(OD(lVtX^>cc*0 w6sFefYuDOqil-ejX~E@%9zl2wQIq@H)pqJ1&P83-tiE=Q