From 6701179c22cee4eb3dd081f17c2c6affdc189ce7 Mon Sep 17 00:00:00 2001 From: lucasdelimanogueira Date: Wed, 5 Jun 2024 14:31:48 -0300 Subject: [PATCH] del tensor free memory --- README.md | 2 +- build/cpu.o | Bin 16000 -> 16000 bytes build/cuda.cu.o | Bin 220752 -> 220904 bytes build/distributed.o | Bin 187696 -> 187696 bytes build/tensor.o | Bin 54432 -> 55224 bytes norch/__pycache__/__init__.cpython-38.pyc | Bin 356 -> 356 bytes norch/__pycache__/tensor.cpython-38.pyc | Bin 20576 -> 20801 bytes norch/csrc/cuda.cu | 4 ++ norch/csrc/cuda.h | 1 + norch/csrc/tensor.cpp | 58 ++++++++++++++++++---- norch/csrc/tensor.h | 3 +- norch/libtensor.so | Bin 401192 -> 401384 bytes norch/optim/optimizers/sgd.py | 1 + norch/tensor.py | 6 +++ 14 files changed, 61 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index d6eb1bb..e7042b9 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ x1 = norch.Tensor([[1, 2], [3, 4]], requires_grad=True).to("cuda") x2 = norch.Tensor([[4, 3], - [2, 1]], requires_grad=True).to("cuda) + [2, 1]], requires_grad=True).to("cuda") x3 = x1 @ x2 result = x3.sum() diff --git a/build/cpu.o b/build/cpu.o index ecb6dd6dc0542056100f301bf9cd9330f9d2305b..6f33bbc776d3bbc896fe31feea9e4b1861d9ec62 100644 GIT binary patch delta 546 zcmZpuZK$14$tW|qkVR(Vv=kW$k8alu-3}6#hw3|0jQG68(CEmG8>>WAaj5+a+BvtyxshtsgMzDO#{vBnEapV`{cLmRWRS^Pu|R7 z$R=ay`lr@#Pwp6B{+?M(%zhzXyPw84Z+&HH>YwAO-Od%%5$v4C# zAr_|r9b_grPXCJO+Dowths delta 546 zcmZpuZK$14$*42AkVR(Vv=kW)k8alu-3}U-hw3|0jQG68(CEmG8>>WAaj5+a+BvtyxshtsgMzDO#{vBnEapV`{cLmRWRS^Pu|R7 z$fjfI`lr@#Pwp6B{+?M(%zhzXyPw84Z+&HH>YwAO-Od%%5$v4C# zAr_|r9b_grPXCJO-MTDr>s diff --git a/build/cuda.cu.o b/build/cuda.cu.o index 427e573c3e290f3050bf27a660fc26864ce2c0e1..17d7461cf3c7f22015778c6a13c28257bc392057 100644 GIT binary patch delta 23889 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 SZ8639ZE(oV)OK7_>;D1khEIe5 delta 24059 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 diff --git a/build/distributed.o b/build/distributed.o index caf2c5fa5c36e95041bc484c0aad32849d41eb46..5e3750808ebb05c2f5037e440d6452c5de3acd25 100644 GIT binary patch delta 30 kcmdn6i+ckQnTs*XOtuhv#3<7&E#59I&bVD#oJsT;0HH1k8UO$Q delta 30 kcmdn6i+ckQnTs*%Otuhv#HiCOE#59I&bVD#oJsT;0HaO`IsgCw diff --git a/build/tensor.o b/build/tensor.o index d48dad340efa19e5ac37aee73d7555aea61d6194..09cfc55a719b7d4f2b0c460b00b9aa57a7a10d05 100644 GIT binary patch literal 55224 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 TsUT?omS4JiBy~r5wB!HZFIh3o literal 54432 zcmeI53w%`7wf|27)PNLX@zvJHDB=?$PkC7l;Am7LL5%p|8i!^`JFxIB!O!G zy`Rqce3F^@o_&6Mt+m(Q=ggixXKskjJiD-Pd4zs$w+Nn{kq-xW|`{COJCd1EmX%i0GoXDMQxWd)nk&d{HB^8QrC$hPRa1>Mi4qg$xd6J3Q_GqUy;iJ?Vh z%QO2Jt&Zq!_JhRRb{3?fd)iv}IE&9zy>#WCvg()0o_M3Mtl-IXba$#S9o@sW9t^g2 zrk!-yF7#?d)?$bPqq!VcXKB zCr*y;X`LKc4>#hrvUF)tx}5CVT=vB8$SxDACkv?VsMO6xMwhiuFq+cPZeaLmHddW# zA75P79)0)GLMr;R{%nF2?>^G43JVu>elWC{a`&L{i3wL zn=?87mQbOPPz*~~?%=&%PIsTdlDR=UAzWmz*(CwHjb8K|jZ(^iP1MsfRu0gCo6>Ht zw8c^Z*Sx{Uj&yCd8Avo5aV_?ck%`hBJ>O?{URGYQ~1w>*=a#G+;CGTF_=`YbDQ zK_f=Ai-w9WC&@jAikaHG{6obi@+uYGnvQO@yKi(S9lXmk1T7D?7C#6m+JG-3XNyr^^X@or_vzUUrx7h@wy-4Q;xmb6RS*msKI{ z#sRjhaVu&cd^;OYc=t98_^?#t~~_enyo3+@iI+jIxoy-(d?o!eXQGrjftffSu}^tAf`dcv&d zT<_C~GJ7uXh;HKcr*<;Q`=-eSQ{Cj~rq*M*YBIi9OrSH^Db%9wNs=W4hieg6;Q9gd*xfH3-A<|1 z_D;bmm7BQV`IDPddsD%#gDAB-qFdZ+3+TD6BY1emGcWZBbLQP*&b(W=V|4%0jY!bh z?=tuLLC@UnG;;ZRL|3|X3+3fbN;ry6bltSn$C`w$sL2((bL?s}&69IwvVVOeYXWzX zP&2fD`nyRvcay=P-Q-H@CTmhHt5cn~L|5f@l{Ib`2^`|xQ93z-!a&8$5Kn^xUJb6{ zt`J>)-Q0a1$fIk_i7q={R;~^jEZbUFf7Wu`2EIViD}XMtrmMqTb$3M9a=PqVPXE|O zH>Yz>HeDT2GyHZ$*Hb|)IXSwnbviZo)adHuc-KQ7ir49hp?z?1I=a5Sq99ed-j{w| zd_`EmS-Y;F`vI@sRCH}eG~?#)My@Cw-8eP6mh*R`EnxCDWAZoC7TxIPuiF&aQ@wF` zd1mPH8qzd@;BHS&hL7*vNAS7c>nrx?U%o9(apuz?5Ck+X!~m8FAqW5�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, device_str); } +__host__ void free_cuda(float* data) { + cudaFree(data); +} + __global__ void add_tensor_cuda_kernel(float* data1, float* data2, 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 702dea1..f6395f0 100644 --- a/norch/csrc/cuda.h +++ b/norch/csrc/cuda.h @@ -4,6 +4,7 @@ __host__ void cpu_to_cuda(Tensor* tensor, int device_id); __host__ void cuda_to_cpu(Tensor* tensor); + __host__ void free_cuda(float* data); __global__ void add_tensor_cuda_kernel(float* data1, float* data2, float* result_data, int size); __host__ void add_tensor_cuda(Tensor* tensor1, Tensor* tensor2, float* result_data); diff --git a/norch/csrc/tensor.cpp b/norch/csrc/tensor.cpp index 74d8178..e188e7e 100644 --- a/norch/csrc/tensor.cpp +++ b/norch/csrc/tensor.cpp @@ -16,28 +16,27 @@ extern "C" { fprintf(stderr, "Memory allocation failed\n"); exit(1); } - tensor->data = data; - tensor->shape = shape; tensor->ndim = ndim; - tensor->device = (char*)malloc(strlen(device) + 1); - if (device != NULL) { - strcpy(tensor->device, device); - } else { - fprintf(stderr, "Memory allocation failed\n"); - exit(-1); - } - tensor->size = 1; for (int i = 0; i < ndim; i++) { tensor->size *= shape[i]; } + tensor->device = strdup(device); tensor->strides = (int*)malloc(ndim * sizeof(int)); - if (tensor->strides == NULL) { + tensor->shape = (int*)malloc(ndim * sizeof(int)); + tensor->data = (float*)malloc(tensor->size * sizeof(float)); + + if (tensor->device == NULL || tensor->strides == NULL || tensor->shape == NULL || tensor->data == NULL) { fprintf(stderr, "Memory allocation failed\n"); exit(1); } + + memcpy(tensor->shape, shape, tensor->ndim * sizeof(int)); + strcpy(tensor->device, device); + memcpy(tensor->data, data, tensor->size * sizeof(float)); + int stride = 1; for (int i = ndim - 1; i >= 0; i--) { tensor->strides[i] = stride; @@ -47,6 +46,43 @@ extern "C" { return tensor; } + void delete_tensor(Tensor* tensor) { + if (tensor != NULL) { + + if (tensor->strides != NULL) { + free(tensor->strides); + tensor->strides = NULL; + } + + if (tensor->shape != NULL) { + free(tensor->shape); + tensor->shape = NULL; + } + + if (tensor->data != NULL) { + if (strcmp(tensor->device, "cpu") == 0) { + free(tensor->data); + } else { + free_cuda(tensor->data); + } + tensor->data = NULL; + } + + if (tensor->device != NULL) { + free(tensor->device); + tensor->device = NULL; + } + + if (tensor->strides != NULL) { + free(tensor->strides); + tensor->strides = NULL; + } + + free(tensor); + } + } + + float get_item(Tensor* tensor, int* indices) { int index = 0; for (int i = 0; i < tensor->ndim; i++) { diff --git a/norch/csrc/tensor.h b/norch/csrc/tensor.h index 5669d4f..2465125 100644 --- a/norch/csrc/tensor.h +++ b/norch/csrc/tensor.h @@ -5,8 +5,6 @@ typedef struct { float* data; int* strides; int* shape; - int* strides_cuda; - int* shape_cuda; int ndim; int size; char* device; @@ -14,6 +12,7 @@ typedef struct { extern "C" { Tensor* create_tensor(float* data, int* shape, int ndim, char* device); + void delete_tensor(Tensor* tensor); float get_item(Tensor* tensor, int* indices); Tensor* add_tensor(Tensor* tensor1, Tensor* tensor2); Tensor* sum_tensor(Tensor* tensor, int axis, bool keepdims); diff --git a/norch/libtensor.so b/norch/libtensor.so index 68eb2f24f9e31ab50b78d6873023647752adce18..d7435deb91cfd8ae2785bcd8d6871bd258a4eb33 100755 GIT binary patch delta 82895 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 delta 80962 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 diff --git a/norch/optim/optimizers/sgd.py b/norch/optim/optimizers/sgd.py index 62375f6..616d1b9 100644 --- a/norch/optim/optimizers/sgd.py +++ b/norch/optim/optimizers/sgd.py @@ -26,3 +26,4 @@ class SGD(Optimizer): parameter.detach() velocity.detach() + del parameter diff --git a/norch/tensor.py b/norch/tensor.py index 0a1ecab..22061be 100644 --- a/norch/tensor.py +++ b/norch/tensor.py @@ -81,6 +81,12 @@ class Tensor: flat_data, shape = flatten_recursively(nested_list) return flat_data, shape + def __del__(self): + if self.tensor is not None: + Tensor._C.delete_tensor.argtypes = [ctypes.POINTER(CTensor)] + Tensor._C.delete_tensor.restype = None + Tensor._C.delete_tensor(self.tensor) + def __setattr__(self, name, value): if name == 'grad': for hook in self.hooks: