From 8d5ac95ca426a397c47aec1219ae1a48efd6e839 Mon Sep 17 00:00:00 2001 From: lucasdelimanogueira Date: Sun, 28 Apr 2024 19:40:36 -0300 Subject: [PATCH] Medium 1 - tensor and math operations --- build/libtensor.so | Bin 20824 -> 20824 bytes csrc/tensor.cpp | 12 ++--- csrc/tensor.h | 1 + csrc/tensor.o | Bin 14488 -> 13504 bytes norch/__pycache__/tensor.cpython-38.pyc | Bin 5223 -> 6881 bytes norch/tensor.py | 57 +++++++++++++++++++++--- 6 files changed, 57 insertions(+), 13 deletions(-) diff --git a/build/libtensor.so b/build/libtensor.so index 7d6f26406a4a1a948a1cbb3bb44b490d0f4b98dc..372e753b457cf94d3b0f927d4936b2e8a5d4ac7f 100755 GIT binary patch delta 2886 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[i]); if (i < stride - 1) { printf(", "); } } - printf("]\n\n\n"); + printf("]\n\n\n");*/ return tensor; } @@ -81,24 +81,24 @@ extern "C" { } printf("Size: %d\n", tensor1->size); - printf("Data: ["); + /*printf("Data: ["); for (int i = 0; i < tensor1->size; i++) { printf("%.2f", tensor1->data[i]); if (i < tensor1->size - 1) { printf(", "); } } - printf("]\n"); + printf("]\n");*/ printf("Size: %d\n", tensor2->size); - printf("Data: ["); + /*printf("Data: ["); for (int i = 0; i < tensor2->size; i++) { printf("%.2f", tensor2->data[i]); if (i < tensor2->size - 1) { printf(", "); } } - printf("]\n"); + printf("]\n");*/ printf("Shapes : ["); for (int i = 0; i < tensor1->ndim; i++) { diff --git a/csrc/tensor.h b/csrc/tensor.h index 08052cb..18d1066 100644 --- a/csrc/tensor.h +++ b/csrc/tensor.h @@ -17,6 +17,7 @@ extern "C" { Tensor* sub_tensor(Tensor* tensor1, Tensor* tensor2); Tensor* elementwise_mul_tensor(Tensor* tensor1, Tensor* tensor2); void reshape_tensor(Tensor* tensor, int* new_shape, int new_ndim); + Tensor* matmul_tensor(Tensor* tensor1, Tensor* tensor2); } #endif /* TENSOR_H */ diff --git a/csrc/tensor.o b/csrc/tensor.o index e5df58895e0a2d23d27d7e95e5e2f1412df4fa3e..c1edeebc51296677544686a37e461ce9a11af3ea 100644 GIT binary patch literal 13504 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 literal 14488 zcmeHOeQ;FO6~CJxVg#~U>7Yh^|A3;hB4VcjtO5F9aX?Za7FwLRNj4BoHktiUP#5iN z(JrsCv|~rxTI(nEqb;3;@O!&Sj_vOkzk^rmZig6%gTDT{yJu=pyNwnu}hMa%tbaGy`F=^z*X7vRbctgRqpcSRTYDYl)MU$d zb*1fWs%6+W^cxwdyleEgYI^$j1nxzL$AjopRTS%SCo4zownuQ7V~=1ASCFZGr)Ff_ zRIsRsB-h7Edn9>Yf&P>|;v4!|o~?y?kGgt~F0ix7Rjyv}{Af=n<~en+Qv z2U^h;{{qPBaDtfZZpZivYS)Vsk~TMmZ;S^<(;*}5VK=ez(%T+^^*C}G>v8`nr&1rq z5=T_peaSUw5UhKrrY}DvMW@xZzCurJU(u=U^9?;|Of3ZL6!W~FjKdL?cE2{RLmStB zYR2I}ZCrm*ECpDI{x134RtE;pK5t$(1X{sG_6GkL)&)St

tMrpSB)Hj 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 diff --git a/norch/__pycache__/tensor.cpython-38.pyc b/norch/__pycache__/tensor.cpython-38.pyc index 8858bf5c9e3657400b1da54d5f0c9f30feeb3289..39b3449f759ff30c41ae0caa202d7625bd3b97a0 100644 GIT binary patch delta 2139 zcmb_dOK;mo5Z+l*5=}iU$&bW+7y=9gRbU8d(4dDpM&YD~9-2$qB48^hGIy0Q5h-~| z1Fa!}KxLptPYv=1?4!>`PyG>1uX{?+L;D+g>I^A4a-|ebnA?@&l;WIYK;9(%JeW%`552u9z5B+8jGyR9Wuw18DTxUcj+J~D99!5sa@4GBf;2<2l#y%T}p zBlr%!XB`lRFb}PWlOI)%>Nn)mdUI!JkbX4AA)n^v&>ZlAvBn0mnPK>0iGqfsbY`xx zOYB3;V~g#5xwkXmm~iHf0!-=PqtDur@?06#+;$N3qS~&k`TO0->vugV8nsV@K&qPX zd>MpZF9>lljB0*6avwHaLYNF<9_LUj;Tv8-@c=Vvt`C6@$RU!C0Mq6~Kc)7B@0pm1 zF#|&dyGtnL35rE1V}D2zSG0D@HE&$g&`LB_j?tznD73xR^}@*Q`Tgx*P!H*ZXBlS) zbxd7(-?YMgzp>Trx$SPajgyJ<)HDfG=jtYbu8_Eg;uLf)g}9yurEuyi6c{I-3bg+3 zf$Bzzd5yMHhhAvTpz$8hIj zI0^C$k^fzWcw7g}IUnOXo3HJT|x0(li^^n$+a}R9|yV~#qPlKy7edPs_HaecKi%N!go8u)wx1KiX zSNHVF^2W|KZnk)Jp%k;LR@sIESoCB}ScO#+XPlk_w~Q)OamB{BV4w|3_>k}4t1XEn delta 495 zcmYk2y;8zJ5XbLwkX%B-_m>E$V+n5&>z6Sx=)XVFE~S=-HGU=l0>t)18e`ko|1a0wnE zOUM!OgaUy&CnZ9eP$5(i*GY}sI^xN7_W!KoX=)qW{YX!5qp4QfzmH}Fy#MLRoV9m!oT4aqOK