From f25a0602946bc5e5497d4f9b3977a07d5e3c1911 Mon Sep 17 00:00:00 2001 From: lucasdelimanogueira Date: Thu, 23 May 2024 01:06:21 -0300 Subject: [PATCH] fix sum cuda axis with atomicAdd --- build/cuda.cu.o | Bin 166672 -> 172544 bytes build/tensor.o | Bin 52456 -> 52416 bytes norch/__pycache__/tensor.cpython-38.pyc | Bin 19860 -> 20124 bytes norch/csrc/cuda.cu | 47 +++++++++++++++--------- norch/csrc/cuda.h | 2 +- norch/csrc/tensor.cpp | 14 +++---- norch/libtensor.so | Bin 220560 -> 224680 bytes test.py | 7 ++++ 8 files changed, 43 insertions(+), 27 deletions(-) create mode 100644 test.py diff --git a/build/cuda.cu.o b/build/cuda.cu.o index 4ed5a3e1251a6f80622bd4bd00a0eddaf3039dac..1c85a787038c01f348bb054e0e6c5c7a6c0c1191 100644 GIT binary patch delta 30261 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 dgMhP2pW}WRcaWL2}JYO%tS*!#J31_ zI?{EkZq-_g{nOU9Y~`=Cg_hRvqKPXX8(Y?;if-1`3I-J|TJ6WyJ?FXS%>3>%_a=aK zx4WDB`6M&*z0dtU=bYy}&%O7#ckbNm&Y78?m*?n`=bYnYKPh#bvS;AEd0XZTcMfy@ zFye$iRYX&-N85LoMN@6tqp6neRK?b4YHr7qQ>oleE*nj`A4c2TK6F}6kEVwhk|wzE z=f~3fUvYKO6=yRxrJrQrZI`C)(iJ3H81>$EM^okIeY#?6s(dWbj%cdWE8O0ZmwBJs zWHv~Z7gN0*PVzKw`?6w^qb**@6eQWsvI$&cr@Na?=-nq1KcU6cns#^3aJRP6M(&5{ z@(J`YdS7(Kuw^VotUH?5m3Brv*3Iiv`_8ZL38Myq}k-S}#LG;dSd-IK~syL;Kzqrlegw3Dvb zGvcvLDR)nM{ocIZU-0J7Y=%}Y)>f{LrU#E1%WhKZmUK|<>~p8PmtSbJ?dh_y)7-sn z(*o<^M%*4vmldSvl3mY4H~u@>WkR(nkLq@%ZZ1+BT`}2cN<({r;jP(Nb!x?=!srTj z_xgM)`t!kTf)wvP-m3}==XL*KL?Pww;qGpFLv2Q0R!1j#{v?N(mi2jENM3(PxxI%< z?#Z=h918@SI^3*MTh0mI{?zd8hvD{j`HU(fqq@kb4y!3>i>|cSIk*irCC?<%k&beA z@m6H|U?#HbIKswnU-#>Xrl||jX2!W}zggCioXVonbW~Pzv3-^mxuA~g_E3-Qagv<4 zRLs=gl=I>`O2Gjc=l{(#S4iGWJm2Wqp_bK3RjBlXg` zJ?V;V(R9mB#l1_jdcHxBx>kGJp8elT&?pd8dA4Hiw9*CdB1^chPcmayP+u>nZnciO z)tcOHwMG(hU2u1x)uubp>iy~t>%88&#`M;k4x#9*qqn^W(;H@e=lVYFuQI#TPPdEO zpW4YJ?|+zFFx5?SyV^!`)nt63m_R#{)2KzgeHCT2(>r7xOQpD7jcvLWM~1gzd&9Td zK?yO#-I1Ku-nKn2IkCNMM_$sh|1^^CKz_6|zBJ1Di<-^@F$qKo^TKe;)z zyYhA&PO07LZuNHY&~w|y@a`FRfYc+*4sfg40dD1v(feC3B0)Q$tG(U0?m$=2$mQ!1 zJ?XZsl$Sdx;V3%py7N-B2azGqgxTbZ-8pu(o94+mKsd0zkuib0NT?awKmFZgE_ah* zq1|Kwb(2R@Evr)9cepEayUHV87YQ8Vy-_+jhN42n%n(n510Iw;!d<~#we-sU9?0EC z%#JQIURJEi?yj?gWqaGIPg+iSl8+P2PA{6G)=RrRo#x=T(_PEyvTGUrV;jAk&e_@Y zbh<{d)7?M?wd6E+UEBH8zBAla$w{7vJQT0f9m9%Yg=u%git@Zv#Rgyc_3(jN9%t>k zyxzyN^`_jloog_w_(7yVZhCY?0B6G__loxcsAJnajT!*`==kb zPULt6j9VtpFW=7*D|`&vu#aO<2Zy}VHA6$DB|CTw>afP34s8K525m88P|gq{V^D`R z25q1t2X72AeTw#dGu#b42JxQC-#7WZtjml+UG22vHT%%uF{ouKA24ROx5pK8_(*+f zgRf83nLee5CAv%fv|Xxef4USIWOfT=yZ;E5_6h$}yA=7vUCN8Kze|1QhXMm#igyzO zU5bvh2D+3^rqZeOz}!xDcpsSCq5VAVcW6h&Clol-G%&YgPHOI=UHHJ<&cNKxwt=}F z9w=xgFIs#+b30`NR~GC8`+>dBz}`oXMc|T#|2(Omy^rZueARJF?tCfl)#=)5;C$)- ztV?2M&SyUlQhK+@fla{Gr^|U&U$c{R-b(Y2o;ZI|Z$_9auOSkT4O4m!o^`-0Mc-NjRrDeTUE9L}0d@j_tF zXt!{tkbmLx*qkYJt&(PRDYkT(@?R-gI=l-2ePoJA{*^K%to{Sd6y8-2j43<^N|D8j z+5=;XGjO|zH_-phjCcdLi%3W1i)A#5|1Y>*#9U9JnYxf`;Dyolj=|n{#y@L(2X?N9HZTEH}!4`fbV_)`pB4$)akC6>=p9f z)*yQi@HpJu2$oxMw$lANUF+jUFq&GCUdnB}Ci97V_YFV_OrOrI|03P?EXC8@?Xxlk z`UyKb-Bew0g`3*Q7x^=7kiCf|+P#vx0P4K`Q@mr2BadnQ3}+rb4$r z?@RZi#wK60x8u;q?*EeRms@dI_v`1Xa(~^=>{O{XI(y`9$0_K23hqmpC}um5uk&bM zEXeAb-LUSkjdo^-?bTFlf=m`pG6FMZ6dnQjCMTZrR|0zWdkS zbyCEwK_jg14$O4Y{nG<8oiNjSpz~J)Go99b>-wdPftk*L`Ky5oC;L9hIfq8`uD++k z>ARI?4kj}}KpzQZ`?6e+>TS(x`Ohpr#hDsU{y@dqO8sYP{TwFp{EPXzPO4&cZg%kT z7@Z0Qp1a6pwHf3Z6*GrlJz!DVUH#vBp(K0ezpZVeedfQ0zpE1Ttru_fpxfe~3i#5? z>ixJef)Zz%yVd@BP92@i_3`x_FO(GV%+Yq{oP}5ILo!lRLQaGyqiFs0lF?uB0Vbol z!aH!=9(=KR;47KljQ7B8dwhW|tXuVSI?=~ez-M*hJn)rFZZC(Q(lGFq%#bO}13LEk z48M|T_CC4CKwbSG1D(rMmjQlS+LLNv9Zx_7J zcZdAnIB^zcTpYNqc<9lrQB4K8huJ_6yNcTYHmbC6annX6|P9|pB!J97d z+}y7zVUv`pmbIyhfM+=Mm6~!78>Z%V@YHKhO3f~BI@X_>pW%ILnUK(fU?^sknslF8 zm%04N?$Fs#=FtxQ-C4FpQjxYlmdJmnoi=f_l@luXPyGVQvPN*z+2tuLNWUcc(nmQ!1b4?rvKkkLb)i_L6GtP8U-P-~Y$Iq&9L%uhn*A z)gvC;nCHG0xM_je^rKY8PV;cjdprd)_O*-vdDX+7W*!T=hn{sw51!1YYu`@0+mp9z z3iWW=Fq3FviT^W=spd8|GP2@BdKhX!Zyr4q(sAa->l>SwL}GPyja9K^ZDT{ECRSS) zuO8}DwN%HPs-_kWisQ_SHzXRH6OsCsL^85Cc0)XpTpW)iV)gMzLreX_cypw&CQ@Bn zPsKb>za(7`}+}O9UxiMB<6-y**8x~Qew7AX9 zjm^^|vDRANXi*C}mSkb$KiQqAr;w4?$;C19zyv4jJ{2?~^zYNfEzzB$DP zhv~aU3KEw)tH(&38kSSu>&Mcr7sML4|1`(Fs3cA17e(eZCS!Fl5=a{+s7FQ`;x|UT z($$UB1$lE4uUc$6epO3zGk2{-?N@0qs4+}L`)ikd$92j`84>Q!&9R0= zQzNB)V?*7NNTQ{wsj)ekkRc!uX=#ci8zU35Ax#uf{j)B(V0vV1#ln_`WJ_dP(WIi{ z(@R>+r;?jWi;IdU6_t+jxQ-kA)VD(Vy0gq$$N7L?b$$L@yxOdvFYC<{ zUo-3P%&cE3>#t;Ebp4=<2dVypvi?-x`V%tiH^};R>`-R=#|G>6J7oRkzU^mcw*R=F z^`qEtTEgr*OV)?kH@~0lm&*F_{LJW#{U_zC{SWrDenUU&cl1;L$FlxKUwod=#Ag)S zMa#{;^*3bJpC#)z_|`v>SwCOahxxa(pY;#Q`p@%gCO*S6@!25jSNPW7o>{*`)`zv< z$Fe@G{YJ50w1m}vRzK_K_p^R!KkFatXZ;3Qf3MH~JG1`F`icCSiQo84`+O|xpW!^n ztnV=WoBa-2xaeT#-A{tn4GMg6KaVw1k+snvQVLoInb9hD%^>ICTu5Y)Ljz90GRQe3 zfO7eRa`-SJM}Yli%p-Oj{qgu|FU16c_>>TSP6&5H`0NmVX$b!kakgLWHe)ieSV;NB zAv_VnZzs8P4P_mQN)AFpDpF*e$Fee@sEa-uMOcT(OGqjr=#&)8B)GGgnuGB&yMul zb2Q~gko^~g@J8YshtVf`I%c0kZ*L7L|HBZ@Ul(JYIVbsbUI{5bn1-+*JI4`cof}T} z>&yr#9}D5jMQ7z0PeWABFIvX;;U7-8kLTF~>Ocb`0?#zh;K;8qpbSe&0rp zWl1LyQvM%8_&U+Krp&WP`}^}DS zzd3}zAv$Yj`E}k4DPKtAevn_M6KB6VFZAn74Jm&`2v3O4D;N27ZVM^DDuh2JI`7Z* zbj&d#y?r61{GUR2gw8sH{GA!X`7D{^@bz-9UUTe8Z*LR+%ga4(jydV=H$!wBIeD*Y zYI3TYfz+?`iB@4WNpxRnl1qcv7JiDY%Wx!I|?vAH%G zcjB$JNkYwa@dkdWYFgqfiYF^+RlWIKPues)NpqLHs!U9=kZ#}Pri5#t}^6Jtl!K-rXD6g%hYD&)xD{ocF#S<;{*_uiwXFvMX%WG<# zs*InLuvAu)3bA5+tQ8a|Wj|I@ur-)kwzk1nHuEu{EX`0tS+Z0=`Yg@H8Vh7A_SW;d zkXQ$=%B@3V9ai3|l8ei{7tf1U()3x@o6;%4t8!~K%^OzOs?teNlf{~?s!DUHua+8< zsih?WrLyu|ND9#WCitP^S!%>^O+NWkd=8Ba}!nHn?Dl#t<=90jEGrUlH*CC?dt%(uqSGSNG%b;i@{VZdh# zr)dr|tEuHL5l*My^gE_movVP40KObJACIffH-V!)zW~ltLt6d?;kKP`3AgQh4|LE@ zy>`O(qn+o|JQXj@(Vm!ayWUpecD-$&gY|w5IM%y}1!z&7qrHz#qj0w8Ncz(_JOrGt zfhm6hI8Tu&|D$kzp{WQ*^?Ck^7hC@bnlIu-%ggkZbDVIy{CMD>r|q=fDIq%NLV5J- zGON7Wd38wn>wxoAp4R&_;dXm%wDeD5Cuw;Oba>8Ob+!Y?_WA>Gw0}4Uh8DZtV}xrw z>%3yl7~%Ya^_~G7>pd4Z_M?k{W8T&S$9{ANa4i3zaNGVTgsc4;ADutu)tKj-Kp*XY zCPcp{ME`ZrLH&1tqkb(XH!ZgPON6Wa4|>I%<-%DG<9`=$)PKR!(foV`%40s{)BG4O ztj~Q&<900YQNW9V4+TC8IJVbS!fk(>gsZ<=Zwu&PJZ}b${{92-QP zKFzc7!g0X(9539q|5V{>zxJ0&po8so4sf(T2^{0LT)18DcZ6%b8n^F(4#sUYaIAMG z&A;(t>wj6e>c8d{a~2Bc_@I6raMa&z>1ZDAh4L8ZqiBAN7dsD2f%ByY^>;3CY~L#2 z7|#~rw!e1@SASLi??DIs{Wfs)cRlb3*trcj+PMoj=HX~AL<`3O$4|aHg%{@NS2=JT zKjXs3Q+YgIS}NT3_g2tBf78Ix-}{A+xAcD?T=kEVQ&%4zL_9WSv%j3W+Q};rdQ1e7dYB^ZwMdBL8pcF*%j3(1%5K{FA5(| z4BP7(;p(sIEC3yBuj_zgdwmV~DNyfEfummsu_!HUKk_?)qhAjL$9#SfIOg;3funu_ z8%+z>i~0O{;dXqAgxm3%2s&Jq#_eq2{8sra;Aqd15MIpA(4zHf9!?d`_G2D?2{`6q zBXEr8GT>;>w}jhq__1)cNBw#NbTAIT1defd5%?F#2h}-*8-o@*AFc}F{{|fW+6x@> zm3Ok^Z!)f7|#oVWBykI$MUVhZTtUDxZ1D&-UB+A4-WxH`@bKezad0_ zBj}+1v%pc`<&$<=Z2K#OtNp8`-4_bC<6j3H^&hu%#0=->P#*K)72w!U-v`dNYCMO@ zeLQxap9~z^YqD_L-#Nn7U)8@9bTFRR07rkDfu9C;rhpFx{t$3Zd9C*q;258egxmHH z;%Ac6qV{WlDHLwE*Kxqn{&L_Lw}ry(dY1^-de#1$KnLS?2XL%+Gov7OwuP zem&@*zc&I$fA0le1a__gj&?o;9P{vSo}{3~wsWL#wR5kG4`YSf`Bn-X?VJl7X3*iL)3~L8W4-qS$Nj?hfn$4h0>}NrtH81R2f}Up597%cTGW2E^9bQ~ zK92&9_Ma@=)}J1te=g`?{#*zg^*4v;|JKr<$Bxj_13DQ0H-V#m@d@5`8VBuud;a`Ab9Cn20{~<*GL(oC} z{0Ie%7LFV0&x# zad;neFbT%%c z*EZmoSMLDF@`Fwx<7lztaGY>E4krq?<1h|5#-Uiatv^e+tv?5JFt4rvj{1*SI+|B& zpgiW)HsF|7Zv&r3@z8c3GRA}_XC7b_aExb>aNA#3xb5$3&_RFa0Y`rufKLZImjTDT zdH^`))$fJdcJ2|bcCO|(wEP)#@c86lo{XbqF#VyOqk&`m&lYaiJ4?9MTW3`1`?8>e z^umsz{pG8`vArGyj{W6lz_I+Z!fpFs6|VMc{=5M?*uL)qNBchv(I0WD7Z6+j zDB&D`)IR|@>fa~aw*L`JfAAo$zMp^&#{Ws+s6T`!-DpuewLcyvobAMXC;^WBF$(-F z+D7A934AE<8-Qbb-67oe_q)Q?PSsxpIvCF%14n<9s&op}@<5 z4+FkXxb5!};kLgwfe!k62XOTFyTHq!-k$X&3>@v84IKOF_k`Pat`@F#z9#*2J?LP6*$f=*Jg&sE-_{>5T=jK- zJw>=Z4x9%Z_2&b}_PtTKUGJ^Jwca|B1r^j{9qe-(64e>ZT{KWDNDTh95~OyL~QBk523<8{C>uWkn(h4SA9j_vh0aE#{` z;dVS<5^l${2XxTiH-V$SgU|H*Wxp;2J4XUXJBxvT4$9X6$GmC=j(*((9P{ci;8=dM za61k!3b*6%Z=i#5*aaNpuqQV&BLdFV|(oYj`4h3xE;?SQ$53Me}@XU{XGge`db8i4%q1eM?0?uj(L>^j(PPh z;ON(S;Fwq2fMfZc!tFSGBHWI{V4e)6#g4;p;24L`3Agnp2)Ff1KnL@725{70Vd-dI z-3#S0uhs*{yxI!OX*Ed;JMG#&g(o6P}#&!IOpC{*D!H$FmeT`s)I}1nis- z9PRuHaLlWJ1de(26X59AzXHd+dK);F&z}(-hhv4?aX3M^9fz^NF%D;h=+6w%zX)_N zuPT6}{_7$7A6xnp*kD@ncv6xU+x|m=qyBNiH4d7$qoF+J?M&b!sUFSGtAJk$ya_nw z!`Fagd)+VG?x$;ntDRc!Pe2Fb`6O`k_cy>V13PyCM?3!l9P@TIPpZ;l+c{6T+Ns~a ziV5d-Igb9+{_BCGoy&n^{2vx>*ZU*kT5la2N6R|U!Fo3V$9jJQ9Q)%dz_GoYbG&-k zFYJ#afn)hIgxmJd6t4Dbd@ceVY~KptX#e~W{X~d}2+E!=LeL1pZ1)?d{x zC^I-`{5b+R`a2GI1#PN2Wx&zS3gFlu?*)$WStH!G|L4NBy|lk{f)4hV=YgaB2cPGd zh1(b7cC2u_-eTceulhR~bTALk1&;OpE<}HirT>~|p7TEFp#CSoQUB)iy$#h)&BLz= zXMZuyKLn0>_!RIfX&d#o2ROFx2f#6&1w83SiyhAsh3C_{A@ryErwC^|(cdEA=w%+RF9FB#^8?^me&`p;I9lvDoFv?i!xx0xaVQ3kahM|9 z*1uS|t$#V_V4S}U9Q7ZwbTqGi2IVoYUILDJ^)~RUDIVJHLwNFtmcjIg?KKKG#YJO*~I299=a z1de(29&pU7zW_(SBD1M7TI{@<0UXO;B78h;a~S<;JZps8akw6IFb*xiF%CaOn*V56v`WVV%UPXA4krq3zCIYXb^%{rSz=r~l0mpbIgpa4P7|*W@ zxBdM)&_RFi2af)(23`&JYzB^YZU>Heb;umrm==x$=GEtbqhC{i<9Kx$a4cUV+>S$= za61mSfeyyuPT&}ayF>IJ4bguLbWndiaMV9^t_e@(JXG`QNZ}ke%&RHDalD!hyoR>X zyov$G_G$$_49b69xE;@jh1>D`0qCH=Yk;G_n}IKadS3*NcD@4~^D1&NZA^=uR}+Av zUl#+%ys8C`<=ceYakxjg9f$itXE@oV@&A9oF%FLkxAiv)xAmU}o#CM04IK4LFX8B9 z&-XR2rVF?8>T2MaSM|VaNl*Q{9XPhv1Hdt!tA*SCZWeC)+XXu4?{9#Q0DC?GejV_m z%IO0w?CeNk zOpDs7d48I3JI^lyj(L79aIQ-IZ2^w$l?IOS{El!to@<4xovObcbkN_;z|r3qfb(0` zc?&q&`Q6JoI$r)a(5sgJ8F0+ESAe5m`8+8}3&#`rvA`Q?o$6mv!KJ}ffBO3*3oNd`D{_m)^>;#6T3mm}qr>9*yBs|h*Wc5iN0XaH?a|-Oh*(^I zAEV6T`g<1(EUv#_af`+E_b66cTz_Ap!{YjT5j_^y-+wScBoEYn{XK^W1K|4m3}qJA z-&hp^J(`uheQ7T4b^=&`u|{($}z5U=LHYs%;!Es;Uqt8)E)fHI5g z^ZplDT%X^6i^cVM{3|W4&)4s;xIQnx$Kv`td((l)RJBu|XYUjxmeeO>3+Xl4?7c45 zcg^v-SWz z`}H&54#3+NE0EXIukqfneYmLo`g%UC)c08KD%l=@}7Bhkqd literal 52456 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 W_k7Y5_s9K@iO6^tTorrAU;YbKFYH4A delta 1808 zcmeH|OH30{6o&7anU>np@@UJW2{ib^T8trx&nRLDAa6yYMh$AFAj7L%NAWQYDv~Hl zq+S)@0dxayG!tT?Y+Sie6Wth77cPt@Ze1B;jOPq$FuE|VZ8Klb{O7+jcmA2)xqbsK zTmw&&+wEldd6rezG9~VLN_~(p8+;1^>P0-oYYzH5Wk`rmSt}tT3bV&k_n?{YC3p#{ zc$=--TdAxUX?dBZ8YqyH5{lZ^S(q?Kaw-6#;!SP=beqY+X;6C5DSC4KBAD;L|(Yfew=((4&qk0;d>%U z1$Sx0_L8|~V(BD6ua(o~!foI>P5xO2PcJ$tVgFIB7lzC`#l7GBCBvl!rnWh^`Bb%_*aiB0) z5+pIfL zLHlMbKg;51O*6hCUf0z3HBgUK-bAoo3;U=#NH|0=2r< z7$(FCBLsSO_+`Qs!d1dGhKnY@j%C6T<=xQ;*AMd>V!E~^7;=W3iydD4`W*oYoL=rn PTgc8mH1MV= 0; k--) { + index += (remainder % shape[k < axis ? k : k + 1]) * strides[k < axis ? k : k + 1]; + remainder /= shape[k < axis ? k : k + 1]; + } + index += i * axis_stride; - int offset = outer_index * strides[0] + inner_index; - - for (int i = 0; i < strides[target_axis]; ++i) { - int index = offset + i * strides[target_axis + 1]; - //atomicAdd(&result_data[outer_index * inner_size + inner_index], data[index]); + atomicAdd(&result_data[tid], data[index]); } } } @@ -184,20 +186,30 @@ __host__ void sum_tensor_cuda(Tensor* tensor, float* result_data, int axis) { cudaDeviceSynchronize(); } else { + int axis_stride = tensor->strides[axis]; - int target_axis_stride = tensor->strides[axis]; - int inner_size = tensor->strides[axis + 1]; - int outer_size = tensor->size / target_axis_stride; + // Calculate the size of the resulting tensor + int result_size = 1; + for (int i = 0; i < tensor->ndim; i++) { + if (i != axis) { + result_size *= tensor->shape[i]; + } + } + // Allocate memory for strides and shape on the device int* d_strides; - cudaMalloc(&d_strides, (tensor->ndim + 1) * sizeof(int)); - cudaMemcpy(d_strides, tensor->strides, (tensor->ndim + 1) * sizeof(int), cudaMemcpyHostToDevice); + int* d_shape; + cudaMalloc(&d_strides, tensor->ndim * sizeof(int)); + cudaMalloc(&d_shape, tensor->ndim * sizeof(int)); + cudaMemcpy(d_strides, tensor->strides, tensor->ndim * sizeof(int), cudaMemcpyHostToDevice); + cudaMemcpy(d_shape, tensor->shape, tensor->ndim * sizeof(int), cudaMemcpyHostToDevice); - cudaMemset(result_data, 0, outer_size * sizeof(float)); + // Initialize result_data to 0 + cudaMemset(result_data, 0, result_size * sizeof(float)); - int num_threads = outer_size; + int num_threads = result_size; int num_blocks = (num_threads + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK; - sum_tensor_cuda_kernel_axis<<>>(tensor->data, result_data, d_strides, axis, inner_size, outer_size); + sum_tensor_cuda_kernel_axis<<>>(tensor->data, result_data, d_strides, d_shape, axis, tensor->ndim, axis_stride, tensor->size, result_size); cudaError_t error = cudaGetLastError(); if (error != cudaSuccess) { @@ -209,6 +221,7 @@ __host__ void sum_tensor_cuda(Tensor* tensor, float* result_data, int axis) { // Free allocated memory cudaFree(d_strides); + cudaFree(d_shape); } } diff --git a/norch/csrc/cuda.h b/norch/csrc/cuda.h index 822d661..2ba86e8 100644 --- a/norch/csrc/cuda.h +++ b/norch/csrc/cuda.h @@ -14,7 +14,7 @@ __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); - __global__ void sum_tensor_cuda_kernel_axis(float* data, float* result_data, int* strides, int target_axis, int inner_size, int outer_size); + __global__ void sum_tensor_cuda_kernel_axis(float* data, float* result_data, int* strides, int* shape, int axis, int ndim, int axis_stride, int size, int result_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); diff --git a/norch/csrc/tensor.cpp b/norch/csrc/tensor.cpp index 129a747..41403f0 100644 --- a/norch/csrc/tensor.cpp +++ b/norch/csrc/tensor.cpp @@ -202,9 +202,9 @@ extern "C" { ndim = tensor->ndim - 1; } - int size = 1; + int axis_size = 1; for (int i = 0; i < ndim; i++) { - size *= shape[i]; + axis_size *= shape[i]; } if (strcmp(tensor->device, "cuda") == 0) { @@ -213,11 +213,7 @@ extern "C" { if (axis == -1) { cudaMalloc((void**)&result_data, tensor->size * sizeof(float)); } else { - - int target_axis_stride = tensor->strides[axis]; - int outer_size = tensor->size / target_axis_stride; - - cudaMalloc((void**)&result_data, outer_size * sizeof(float)); + cudaMalloc((void**)&result_data, axis_size * sizeof(float)); } sum_tensor_cuda(tensor, result_data, axis); @@ -241,13 +237,13 @@ extern "C" { return create_tensor(result_data, shape, ndim, device); } else { - float* result_data = (float*)calloc(size, sizeof(float)); + float* result_data = (float*)calloc(axis_size, sizeof(float)); if (result_data == NULL) { fprintf(stderr, "Memory allocation failed\n"); exit(1); } - sum_tensor_cpu(tensor, result_data, size, shape, axis); + sum_tensor_cpu(tensor, result_data, axis_size, shape, axis); if (keepdim) { if (axis == -1){ diff --git a/norch/libtensor.so b/norch/libtensor.so index eb4a5ac351498ca289360457d4a81cd30f5d8342..e70bc773b98d54d2f61b5b4a51328a7791f920f9 100755 GIT binary patch delta 48919 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
YPE5sT z!5hA1E*G#OPjS`B2>L$80$Hc6mfJ~6JqnGbovb0#e?v6FedzJWcCsy#8_i`!H3~dE zs(WXafsen=iZYF#(UH~KS-g?Cd+$KSM(9^Q&Rk||8}p#r*M}Prk8#qJjwF|Q1@%5y z!S!VG_e|t=W)9+N;(#WYHTTe2u>|6G(J#52)!-LyvN@U5ZQzqynakqX3trR0d=Y2r z3vdHZUkpC9uj^Jn)%0g3t01tyD9an>5mr(0Cs-sSw+g)TF1{k^@;304p3H5`!ltv} zsb~paQ}yh}BhwyW#X?qBxy*wq8AB%Pc5dU~DEhjR{W*0DD&KvCYi&j4R`Aee2Bql4 zCGfbN%-uT
3Jg@afOTX(QjwpJQ(d&kQ;#yp2J3JP)8r*|-rWjY7^g{PQ{52ye? zc!0V1jCIWCsXx5N0%^Dj6`pdx6Ziky)?x6A>sjBuO{3y9@VcYS`{A+^P4O67obcWwcS(8kFnk- zoT(J>{g|wOfahE8_I)ulHowOrS=Ke8;d|c1->Z{SUWMY*`&jW?bg9J7W8Pj!$rWmEcdzc*rQkK$VDG4K?3-=ok2_>15J6q}RHxeNU4Z&^`h z^Fzz+b>k9Jha6Q8 zz6tj_*@_>5{|1UOah>4Bo7s-6+Z&F%Q%_3lKs%Jz3gv@1 z!b?M~;IBluw#@Sx@B*wTxxnO9ZuE&J)|U}Y18>K1K=ezPht&)GEUaXvx1ho!U$G%s z8Gi-W|79*yc>%obBJ&4%;8iRI&+SAV!4b)ZB5kU4oXd0*DfCB|)`{wW7>ns9@Q1MJ z#P79&Z-O@w(*p-_lR5unJK~3@n!`WTNmHvKo_>sz3|=3lH|f-5-U z%=xZ!*29#JqwV%N{7UdyR(7xVsYqWLC9!X=%Vw+yaStaQXRSk=sg2;t*sL|+zX#82 zXCRYtig?KFlN->Oh~uG*#q7b{(vxjm^8wCOttlQ)-EDxlVl8u7$IUGM1mbI@EI#k! z{4*!+5jBL2+vZFA+Y-(4*~P5jz5znT4Db^Rn19Wg8V26*1p~Ps%mxp@Ez1DZm`M}J z@2rOSiEQr3NSJ#Kd?_BNWOaWIz7h`xas?rc0_+ZaW|f&bQny4#GC{tjTb59Rcijc5qXXAp#)PsN5?ll znK8s)Rn^##d3WU1IeNK{{ODnw-YZg3rU%o1v^P(e>*3K7L%p7Bc9-kXQ4%|?G`