From 9fdfff82ea61229f99e35fa28ccaeb5cdc20366c Mon Sep 17 00:00:00 2001 From: OscarXu Date: Tue, 20 May 2025 13:42:06 +0800 Subject: [PATCH] Fix v2 topk_weight cal. Add silu asm. --- ...co => moe_bs_stage1_v1_32x128x128_gelu.co} | Bin .../moe_bs_stage1_v1_32x128x128_silu.co | Bin 0 -> 32152 bytes ...co => moe_bs_stage1_v1_64x128x128_gelu.co} | Bin .../moe_bs_stage1_v1_64x128x128_silu.co | Bin 0 -> 54040 bytes ...co => moe_bs_stage1_v3_64x128x128_gelu.co} | Bin .../moe_bs_stage1_v3_64x128x128_silu.co | Bin 0 -> 54064 bytes .../gfx942/moe_bs_stage2_v1_128x128x128.co | Bin 38128 -> 41184 bytes .../hsa/gfx942/moe_bs_stage2_v1_32x128x128.co | Bin 23320 -> 24048 bytes .../gfx942/moe_bs_stage2_v3_128x128x128.co | Bin 38048 -> 41136 bytes .../hsa/gfx942/moe_bs_stage2_v3_64x128x128.co | Bin 27144 -> 0 bytes .../moe_gemm1_xdl_fp8_blockscale.cpp | 10 ++--- .../moe_gemm2_xdl_fp8_blockscale.cpp | 40 ++++++++--------- ..._xdlops_moe_blockscale_b_preshuffle_v3.hpp | 4 +- .../impl/device_moe_gemm_blockscale.hpp | 42 ++++++++++++++---- ...ise_tensor_slice_transfer_v7r3_scatter.hpp | 4 +- 15 files changed, 60 insertions(+), 40 deletions(-) rename example/65_gemm_multiply_multiply/hsa/gfx942/{moe_bs_stage1_v1_32x128x128.co => moe_bs_stage1_v1_32x128x128_gelu.co} (100%) create mode 100644 example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v1_32x128x128_silu.co rename example/65_gemm_multiply_multiply/hsa/gfx942/{moe_bs_stage1_v1_64x128x128.co => moe_bs_stage1_v1_64x128x128_gelu.co} (100%) create mode 100644 example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v1_64x128x128_silu.co rename example/65_gemm_multiply_multiply/hsa/gfx942/{moe_bs_stage1_v3_64x128x128.co => moe_bs_stage1_v3_64x128x128_gelu.co} (100%) create mode 100644 example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v3_64x128x128_silu.co mode change 100755 => 100644 example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage2_v1_128x128x128.co mode change 100755 => 100644 example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage2_v1_32x128x128.co mode change 100755 => 100644 example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage2_v3_128x128x128.co delete mode 100755 example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage2_v3_64x128x128.co diff --git a/example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v1_32x128x128.co b/example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v1_32x128x128_gelu.co similarity index 100% rename from example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v1_32x128x128.co rename to example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v1_32x128x128_gelu.co diff --git a/example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v1_32x128x128_silu.co b/example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v1_32x128x128_silu.co new file mode 100644 index 0000000000000000000000000000000000000000..50369a50a1f9f8c02aee7b887884a4cdaefb6c35 GIT binary patch literal 32152 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 l-b4O>=S#Be3amt4v8zv;WcUC8 literal 0 HcmV?d00001 diff --git a/example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v3_64x128x128.co b/example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v3_64x128x128_gelu.co similarity index 100% rename from example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v3_64x128x128.co rename to example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v3_64x128x128_gelu.co diff --git a/example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v3_64x128x128_silu.co b/example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage1_v3_64x128x128_silu.co new file mode 100644 index 0000000000000000000000000000000000000000..34b0f009ae8c4ebad0f9397076088e00b63e7c90 GIT binary patch literal 54064 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 literal 0 HcmV?d00001 diff --git a/example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage2_v1_128x128x128.co b/example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage2_v1_128x128x128.co old mode 100755 new mode 100644 index 83aaa896652e30c3e3dda5dada5847230c2905da..73a70a6d0599b1e1e971ce453ecebecc593cde97 GIT binary patch literal 41184 zcmeIb4Om>&xi-9Jvu7BFVVIC%LJ$a$37H@gAOsOH5JCt+g5<{-(^NuW$PD2xKz>cg zfP};tBXXi9sSTQHt5Mr%)%q7gJT_lqqcyRf(|BsD{n~R{-?m@%9M5Tcs=W8}thHev zMm^Vg-|Ktd>zui=bML*L^*n3s_4BN?*Shy+*TTv&&15Rph5Uty_k~HF6BMiS_aBre zm1YXd7ZLd1DICIrVA3s?;>++)%9w#x6_0|AG*!?zD0Rw91Cbd2NDo;MViI2pkun~O zcgt%7L-i=H#rG@u^W(8iUW(xebrO;u>77t|C(cN@fhzV`nJGODg0GUEk*-lL%YNNi z&*k|Q^QnqgEQKDW_aFUHT6E-7hCc_N442^s8g)j&58%IK;QS?}i>hxH;*RguHrM+* zYBM+Z+FN{09ryiQOnM@-c70oWOt-|u90Y-?WE+Vs*DjAw4B z|9B@SzEW^)h9AHkJ=Sa%ZpIE-^<)myV=*!-ipGbawz`%g1+~T z?_{<%G<5i=YqA<$C)*t%^se0Amec%%4AHDdkz8aaRBKVKy#RV9zL z*4NiGwYIi>@c|K?XI`=`{{+KIu@*ZCr@ z*4MRM1E2$g?lsq}Z`gWWZjLbq8-t%o4eW9lzwG~9gv5klAWxH`u zN<3+V?~~WX2@-#b@JYfZjCqkUFPRGQB$^3DtN0Sc_b7gtMGQ{}Cp}JghKyLQ;@<#F zLHuGhzcS__-O5h!1UnC?@Zf~-M-a~T+oj?9DH6}A_{My(SO$wQAmxeDi>I)l5Kc`L zYkJvyq3Kp(N)c;?uu46rmEzL;l;%eV19^Wq|Er60{Ga_lTW{Q%SXaI1gWp9T_-p^a zES~fGM}G9~f@L?Y(Y=!+{?vYH+UoCo>$j;<(4m8-ppiJp2F(lYIBYmVf5`6WkLSaq zSD$}E`KS4zaX%dE3eysCg>W=xVT__GPR`s#?Sc9&fezo2R^K9Db8|^kYu$$Bb+t{t z#Z}8|vgdUAS~^Utqnzv$AUWbv1eQzRiI; zUv@s-$MQB`T>x{>?QC{o*22m_&fGlwpG`+j{ulkv(Z>Imi}<;?;hOyAzKxrFEp@oV z$^coJlS8I(Q;?S7{$vWA9tAEhuR+Qb#W1*zWLXQBFRFp;iejmhGtQ_=iqZ{9PNpxD z<$RzpYI5?pBB>;*18u&hK#OlV=EL=yntbh47!)P)Z|2zYbTqz_jCZ)Arp6y=tEt-*sIT$m=jYY=>T0v= z>(^z^nVbLlog*~V9eVM3=ieh2F!n2!rzcd%@E7P8B2JR_J<*F!Xgu$U3HreTW$1H& zeBjSbU#wre?sF7X5V>l{m!vPYUs<1qfVU^4AL@s$toeVkBzOu={lAa@E`$GW1OFx4 zz~B5YsP}Hz_`mcQ=@_Op$X&zxPpvd*!*my6dt3+T+GP$qHDuj=DoorzBpkM3o_a^y zhSyS@!72Sc;*KGAPansfXR!o}!oz$1R+BbdgR%WC$O;jD1H!{pIN7z1So=msMnt#J zl1H@qv>mYLs@MHyeeX_dzJBU-aPRI$>;67_^4_7N*1e}hm}U4O#0dhEfx==L&LY&c z;bK4#$j=E;w&8vX*DS-U2or)sVnhVj{&r-++ogK@l7Z22DZdX-AJE+A&}q zG~Hu0nYvBg*8YgQOa~(NMIW%9wsxDW5d$`$HQG855gpMTVYPKn8nJfoLe{K<5&aQ| zBkr+AK)z>6|Mj06Ztb69jUO1)EvXh^y{MT#5_bqaxnEC8yGIPAMW1qeU2fe=a;uW} zxZ^z{xaMaTu}c%d>YrJ~E=Ld;B`o$}H>0g1djF{r-I+#pFk*2q9AI39?8A~nGU^4*M|>iJyQ>aNA}$x9vMCm z8*U9wwnX&AM_L9fgW>%av~V5sM}5k74wjb?$*1qJSB|f=`qUF zY#}z1JWk2u#^jGHd5YWWAGF$1b(Euya;CD=#V);#^g_zPxYy%KZ^Wf+y2flip=6UB zmhKU;X9x`v&vJJS9n$sGJz{fO?`FS8bNuFlwZp1EiMSfd?8$)ce>7n63+I~mwMvY(ve!nDNV$rn{=jZ9c_#VfBaBx| zw{kw8+_v5S=(axpx3}%^e`niP{}gS?z=(hIEPBA7g7!L9+uKEDRhkPpBKh1*)#*p$_S~5Ou0keLSx-mi$0s z(F+pizbLWvrLZ9RNFnx}dZ;{5d5^zo)!j`^D|4HhD$h1GrR6sJtL`puUipZ+23FmG zK9gsfujK=CfqCNW1rZUU^)|J5^ES4p=iTm4-&4NLbM5Wh)1N|_eCB+{>GJT{|!B7Lw(~aoabu7hFeI5Kc#;>g93ha(F| z4vsh+@i<&K+&G*#VsO}TIB*o=n1>@DM*)sf9A!9)ag^Zj;7G%fj3X6?6^9Lnj>CfE zwXTCm& zFLC?~$Io&66~|{d{sqUs;t)tv!|^Aa|D{Wa&n`VBL>1w8g{TnD&n|sWh%&+xLX?Q) z&n`VJ#5|G3m_ygk2vI=Sz`T*ocLb%$*gwpnDDuMUFV(Ytb4SWbZ>V&2&_!(a8P_r>FLm;Yn#%sE1hGkbC=^G*13aq;+0N< z(n(S}$x3H{b#8R@v(5t6iGfZT?7N^t=-wS~E&;~f8P9p^Mck6a$&OzFOA{j%5!zcdYX|>%>539_+iIL+IZ07rg)&x9u-F)z?oD zx8R*$CcXtMeCJ{!$t*rivjDAu4|Vc=bna-5M|`xwjfBBdZ=xJ5?>rNA9%y~%SQN=L z=xIPb5U&&3nr)2sjW*VK9dWgHUX3~n)Zck2isHm8orHjlo1}D-mChN~`AgJmtn(r3 z#3&t?(s3)DIHmI{>u8Q4*7-P!#*XJVos0azrsl{OHa!~o;->D%aPirNua}g8qwqA7>e=7UV^YVy@|#mtpew|h0nwM+UR&g<60Dr zW55VCu30h8(RCz^d(i!(nw$K8YFzt+8s~nEanBgHl>h2f{;N&-uX^Rb)++zCL;0<( z%8#)>BmYHXaQHns#?9*YEe9l;PfFBZk@zykNsPd!=zha!uA<6f`E;rCAj&NGXk%cfx~4h7+qW*{x=cm+ynW*mK2JlLy}jgSK2JwEzJ1fz z`8*S48$=sz`YqkWKfm4bd(A@V|3G5nuQm3q2hq-g=e{3(Kd|TA6VVi>O6gQ9oeHH> zsdSF8&IZRJ)~R!lPMOjvS2`t1r&Q_eXPs|F?_-^Ba5@Fh>4a_}bO>`kxM*$z=KlJk z^v8(Xc5b?(57>V0DhJ7$&S@H9%Nwt9T>oi_jX!*K)DO2cOF!J++`&3kN~c=sR4AQF zr9*zWty%iv_U1cSr%dUTE1eRhQ>t{x54SZ-KiuBDfOQI>Q;)nALWeNt^niISF!zT8 zqked8^JGU4bk{ZC6-~0HKWiFc%cngY*Z)zEc^$4BKj~qebrko}JEGSD>mR*6n(S6V zhp_t70ZymlqX909%1>lE4V1S>JEH4>?T>DVrt&I-4q^GHvb;(@l34nQEVs?9Qy1ON zI$w)^9&rnxvjbT8>AM!foR2;>Zw2Ol@-gRaE8=c_ba`|qaQmYRqPIiV1fSgmZ0Y{c zOz3ZZ#_R_+ZhVGynh@9DeSNea*w{TMx&^W-=+Jmv-Tji8u%cOx%at4DxZH-g72Q`y zw*V`mFg7clCd|`_$I({ijlKk2E(Uv_8B~-*rZYIquu1Q<(GcKED6e7)MhvH(LYr zU~Wb-nwt^o&?B@d9lO$5$vPX7R1 zhO$n@yvYmnVBSRWXx>DqLzmE|^z6{1@p~ET+~ruoI(M)R%?BxNg34!-%4ah2xk;s! z$$6cVl*M_yn(vS1grw(EdTyl`r|vJEb*3j}u+CMiLvu7vOXV*~o#qj7Fs)4pu@}$1rb)BRJy^3E(qd-1V(#+~9=t!bLfmt)=b$F4v2IW( zW}z=wFXjM6aK+E6#jZZWDzWRfv35ChY42*Z1dJVfR|1oP%fOuz!t;V~&E$0od(=!? zo5{D|xl@oF;|jMOAua@e^|*=V7q^*&&9K?y3iGT%{_dP)#uL_OmvCO;l$b_y#MNlW z;y%r}itw=JB)ye%zC?4bAY7_BM;tHnT2KBELCaMARS>+HYKvnWy)qnh|M%* zQz)BXi>>Zj9lNZnQap5V)>14-1w}CbG+KUK*gzQ8)UF>i^@m-b6%?lI9u&z%%`wZe z1nVJvTZCBhT(y6&dRb~#^_iXB)zu!l|5=nL?QzpAJXg*tdRTXf*WSARSxtNmx^Bk| zOA@XNp4UW@>%+d_p=y!Uop)eF{D9YAgfstxS>CANt;o}=kUaG~d&0Zq=`T+!hSE9# z+cDC%Veb~$TNz@n_t_`COP>02drq?VB+3SDC@7ItSi4lS-YuBk5pq0D9iCi*s6f73d7b{C_^`u z-N7*%Gh?f|(qb#Sys(jWlO`&ks`L+5R;6ZDqRuNTxz4fY$aOvwbw0D`uK1?FjanU~}dYjUI!cuVJlOc+id5mVm9aB9l({B1}OSyDwFv@V%NC ze)gER>|6W&gZmGp>J+vgaSv*omj%d!33*VyrQGlXG#}lIx#@y$tnm-7xh>T~dTTVX z;DNRN!L{qKMvUvV8aniAZ{?#*sGoEB{A!jUpHd!n(8jWd#>*Cm_1oBAVXn*miu@7z zCEUeW+Uz6Jl;24uzeE0@0zPJDtj6`6PW2q72@Z$PF~YM|IN3@iorRinI&@NFOS@)6 zmI@sXUpy9mjS5%3Da|Q;(`dToA?ao)`wI@s_GP1TsMLfPX_X@%vyhe-ZRl#mn~AiH ze3XyoqpEAcw@UqkrDdsh(k(@PsJ|UUe@p#tUjm&U!g<1zeeraDKhEQi_r=lq5uC?8 z*5^+BcAq=pkv@0)(Z1;_9e3RQeICjK?rR3};E65oqIT;+9#GU5f-7DU?DN(=BfNBd z+i}7DVf8UFgRWN{5$Gfrf-46EmXI$5%eJfbzFKsbmU^zHFfAK-{q(}sMR#(0Pfd>s zc2}0FzA%erX@+bTWNQss%6J)kXZIRIHg&vgCS>~!*`)EZ8IbKQ^>BW*2$sz-((^#p zTk7F^&`d1z7_#Y*q0gd;jrQ5pkUpCdW8(gvN#iei8g^7L{=TSFpFpcjrS?2hCj0Jm z)n})FL-vELwP$utpU@AdPw0QsC-%M4b=>z-VJjPbFZCP!{=xnM*~j|P9v(Qz^8xN- zm=B~LKI9)fbR?DA8rnwcw;uElK6q5Np9iV^U@c;&nv-_Ud z@J;dW{3R*@nDEYrQAv~zbYg(6z;>O`-CV&Kx3PkCVh}gx9nIkay59LXYWVqiJkI2= zlfEO4>g`vzicFpl$$H5YyWCVS?(AY4jY;{+&$w0GDc2N^&S}_}!OyVYK_g(l6Qlf2 z{AGT}t^7_5k9G4j;Z8l?M?T1n{*`=<=A06n+2xMS=t@QZa?gf50ezBW*<-R4Ll*z- zKJo!EB%h%Mv6S{Ga^s#K#m@HArMxOV0=Oddu7x9pPIM%0plw0|z z7$aXvA^A#BX(uH-$oWbN$=6keEdI!7zLG-n6|d4xiaW&lN(#wWjFN$ec_CPOTyVXV z91~OMdfpMiWnVBLV(B`6pKuZ8wTsDwxs3uvej(^tC%PZZ^;|{g@F(%`Cs!2(*q_8t zML#{1<3W``HcL!}EWXIcvZ-;99nA7@+FA4O@XXG)5H1ErXoL|UWhCD zI?JZGA={tf;XG=SkjGCiOewmRW$swW_NIF{-|#1~khzO)W?8HYvRm)leM7l)0(UmNNci!(t+O~ z)B~DMXls^e->9+Q5QrnGm2qH{ zB(46L2TbCYd?TSX9(eXI% zjyclDvZyhc!;m=-abKio9lJ?$nlOH&F?K~kE--$(9ryRK%seKuD_N53py3mA>tgCEhHaSBQ3`P&W9}|A418(sVtM)i5Gk!h~-Z+ zVf;G5WgNGfxWX5L?qxK(UI@li$hn2Hgi7{85Zg`NtDK$)I)_iNqCZ6xrEq_;hNG{o zaCpFRWSmYH?P%B>#G zBYc7mnYm~Z%k(hFN-ZAFH+(`EWO`8)%fd9siggd)3w(kGSy)j7%QVdWy9+gVY0Bs0 zCKF^@5uTy(TwoIL3F7}^UJupMSNZ8<{GW1@HcTpEdy<&blLY?H`w_(dd2mSB75_&w z_&5K9R)#Q8tnWr}ZcG>^oq!If4<9(LH-qIE|~85lbJfZ%F=6Df54l zN+titl12QVeY+cN#Q)hhG#ml`k8T-$2>A+HEW^o!n&SV2X~V^IZB_iANX7p_yj2Jv z<^TLJg#Qzg54+<3M4pc9jDT|Ixw!sf*Kz6JuF0f&T+pSe;WR-V4h@`9Dg=ycg)D%+bOBNj#v3@4jCT z*9Tm>9-M48_e={1XJs(D-_dj6fYad&PKut?v!^u9^LhNAM3FdPA^y*liTt0^Kq@#y z;ol6uCpA30JNyn;f6{Q|<@_J;Ybd|OuhH=!#OrGDimMY3u8xvFrR0(0_&+IVR9E2t zD8270y>a{>CHtO|rNlVE|G9_PpQ6D7lKh|h(|Yd*|0f3gpE@hJP2m5a%uayk^SHtD z$qK{X7xuL>!h**U{)7?kRpFknV0>)MKuk~kflP5|Xtp>!6fM3n)U)ayPtWSV@${^@ z+tYK~y&hVRUUZ#>_t6&TODwxqVtJk=I1T)vXz+#-!Tssg;?sm%^Y_HNyp(pN#l(3q zX{KOzyxV(6e1g~Uz>f5&2g=fKoZ?O|#G2dmh-^J55>Je5jbnaI)}JA5H2*$ zZ+qZiy3kzyiYad1TQkK-o3?mUa0GIp6KUbo3y~4O*LmMENu}uqYF$n9?$a83wRJN_ z)`j_l)StDpU7~Ay(_CkGB$MS`V2G~U;!S~>3XgQfc%xtlXX^EAaP-i#07a_%mZ5V zvW0Q+3lhtIAhG;8i6zhLqx+8!l`gKlr@Ug--4zupJvUZVo~@`z^W0cob$98FE03vb zU{yMJKr_GtnhEp(XBd2-ic0T{o2t`i++3c%r*yd|?dBEfkD;7A5s&Jk!`ErKM@950s`?ETlN~Ge+uv%=MYNsI;-S zv|+|b!`rHU-|7ZtNFnPD%^Dxe4eA=?;Hhx=P39VPYL0@}a}>Ouqu}`*1<&VbSOShD9LYFR zaky}}am3+>$Kk<|hQo^^9miv^bsWbdIKGYJ1deBLJc;AGIR1p=FF5`M$G_tE6^?(z z@f#c;;&=haOE{jz@jQ;#aGb$0jN?@tKg02J9Pi`!C63?W_ydkV;`kVC@Uu&g5+4Zo zZQ=tZe|G5+fk$ibeSoQS{VjndBU}U1Ms|E(@_+n+0JXvUUo!=p-~L13{tNAV{o=4G zI8^)lz|ivl5g5Apw}GKst_h6n_%ZW>+6`V1)n0-}JAL7t{P8l%a-gpaPlH$)KEB;Iu;+ACpdtwk+ znvKc^FQ^3ZXitsM`Y`x2*yEye$9;-Fb6E0cdhl#gk{#(F4o+$IWCz8eJvBlddW1Hm zV^=x{Sm%1?_>^WZU>(}0qPQ-l<5oIxN{9B7I#-BU` z)|dFXka$PwCtqhSQN~HRZe>}hctMMgkMV+*C|=M~$qV`k%E5B7J?bLRda_aSf}p3t zw!T>Lf|e*=&{7+xwGMH$ll!9H0_rDwB*#bTxE9N}Zlx2abclbXoqUP;NBT)TzrudJ z(n(M{NlGVK=`jE3;Dr;PG`B1;hF zHh4ccH+Vl)p?sa8OU?7-xb<%Z60JEBZFzDW`&TuNeWJ#(f5G_0z6IkM&FP7+s>Y6X zHFmTpzqL~Nt!2t@-KPB2YURJ!kCESE-p^qQ5#u|IVb&X+qng-Q>Jvvl}?G$DOEb;Z(Ghu zf7^C$4(p^tXC?BM0Ug5BM^~Gd0X>he=Dd-=U3O0T+ZE@QJ4p80Nlha>bGm}#Ry|i? zUV-cC7b{qYI1VeGzAJheaOKl?M3dcN=n%eodNrq0@!V=Ii^>;eI;$vePv0KB64>^1 z2Xk!7phM+Wep;4S$#W7*UzFuWoR^lT|2c~IGHp-)k0^?p4xQV88PFk2eQvvXHPG|o zcFtQn;;w#rLv$x_&C_3tCfRFW*EGU2wT&FNYDpt=da9Q;vd$XBt=hOedNr_m!iL;{PlyU>)+Y6&vr0S_`b)xIprMphIJId9C9AEK&TQrSYsoT%nSU z*GCg~sC45T=KrKahsKEvj2nchOO7+Y#Iy7``*PwyrEa`Bns`l~jnkuz{yK3Ud&N0a z$lQtNQfdxG{2!X{Kc5}O^Zn;{hB=Av6ANEW{GV9(YT^UM!dE{>2wzS9>jli`*$?6T z2bj|v=g(taZ=64exjpfJOg$#%|Bz1uU-Q(ZupP|*8EJn5{s7M@oj>x^g1mVBY?C+( ziWbe~hTz-a>reV6zH$bL@P;?#b;IlO+V?7ud?RG_^<(Fz?R|c1v{L`8wBA6UO%( z%oU4)xtJ?Xs3%zA=Z%~#rv0Z1U}vaV^1g<_^J)_^?6~hk<`O>%p76`fJ8fp%ANj(9 zozFy(FD%@tMUgJeK?(JHWqjLiiS|1`9L-As=Ae|9Ld-!au3x3si1g^XUZvH5w1~e% z{*%%n|7oN{^Hz%MQt7x=I&tIDnXb~giqkox(mAWrc~zzJno5U!Eu}-g*GPxvx|B|W zN+(IBldRGy!F?29t}E{+jMI4&>EuD@Eu=&Ey6;`Cm-B&l`F_Yx=j^nxpUy?OQQgrT zmr#FL)}8G>iT1;?4ogTU`+7$)Fc))N)u+JM<>!(dTEm`LmQ>FZ%ku?QcjUthkO$($ z8}~}{bBb?$Sk{B%K8eo5vL4Dv2XpgM(!t!E;?g{u(4};RV(YveY3>4 zTV>sqQU5#nabh|3zmp#(s<{|*uHpCcsP0Jr%ue|nakl$)UCq-9u&I7ZJzH`e({sYB zo8M7pFK>pM-C1Y~<$)I)B|K_09(x_2-%|@qNXU?xh}k0_k4bZYOTwv6Qb{ zMnoZV0}o;?%rt46-oxC$^qEQNH}HO85^)m>HPMMZaI4s+w*%ck;wW^AT?2&eV%O#| zUpRE>;8F6uz$3t9-~o&S-hcCpWQ+r*2Y-6|zWrDOCaz$zCT;oot|Wq zrx|&=Z<0xe)+lFiGjaLgXCbSiJuqMr)%$*obK;wtb06Wuk{`H(&Tr71TM6fbADEUX z(@D5<96xZ2;s>%#aBvKpo0ZL~5SvNLCi4Sf^X}NTU{D0Jh#zQ^ z{J=TH51f-56sEa7`*A;-W4>i6)=TeMFT~QR^LZaOw-{Wp;$ja<>l9XPc^@YQYg#Eq z-OLZ16Bj1#hHir6W{bdHV@`Y+-YEo!?4e?j+nou1;P-}zsYQD}Danz+yO5`SA$jVF zi=DMJ_RG^Ee&8GzY!k-~whenbVQ)u>z23M#dzb!M?je6s-iaSL=TDTc@%FaC-qsL% zeQ_Uomwxo+_J|)i=Z~;Q{J@a>b;r;5<`nPUxdnDN!|qa57u6`|11RTeRnD}(om&hZ z-MF%jz~?t*SvTTk?_?_fV`yTkEN_C%D%h+tY^rknQd=>~)`MfVrp36LpD5B`Pu0UGKj>o1afM!KBmUqvteyWD4Cw=%>o^L*hCjJ}%$Ul{|R8v}GL zRve)viX*hNf_*Oe+L)8r;|IF1W(a(vCRz?Wk8QDyxb8yV!3Be~L4jbY#ht1GS zfUFXFG_F@Fy;3@dUI`)esvh?E2R&)2xt=pShvR25M=&Q%6N|yAE2p;jf!9CiO;6=I z@gf{`<({dDMUa=prgxR&Iu_R{xK74()r7vgNXf5)Jf7t5W%&oQa+rUWo28-M?!LGL zruWEVJ880rhJg^AIvXc&U9|R240)Y$27>3 zNd5~s{t&-27vs;A_v9E%{9qashX4x#<|ECv{Fe7^|h^u-yRzA2D-y^7N(d3$by zw-*bU$1}>?i$PvoMT;J+Xc5XvYdEz=k@?TKluy`o`ndlwTicQv*PXDD#uHDHjBaj3_Yv4us=g_X@7=LS2{MOV^=!# zj#CWwXXu?L7xrg39gNEsN@p?I#s1cWJrgJV5AB(dKcYPo=Iud;d3%c$Z*Pg>?JbqO zJqO|n?3vhs8um;m?hu~S2#336+~b=hKDkZmSV;%Zfi}{?b0Nj`E1gEAQ?GOyl#b3i z&)6-jbKK79V9vnlfI~=l+^5n3$B>=}>3+ne5;)DAsGjWaGa>AapQQ12SIw{`5to0^F1^j zp6@whCi-CJA;OoA;~_di_OF_aH!Q~5A>i1v_td>#)mln*(PhiDJUhfw(lr?N~|JjA34JVdwRA-cYR zhq(7jJVf}8-YfACAuGNT4-vA$EAbE^%fAv25whGX@em=)x)Ki&vWzS75aHwgck&QF z_xoQK=Kop1|NF6-_C22fA8vH-vaqZ=J1y*bD`iO|0*Mv4qQRFwC_8!Pb z_;nO+lHoM32p`I+`sVL@!Y=?W^n)Ty|I2W8fF=Oh|p{qP6h;Z z$pIWTIDp!C&R^3v$2fm@z8{7P_rGX8d?38nd|>ivXSXxjG~hCIcRRuPi#F-I!?E6w z8SV_uHcjd=<2=h87tA)fdgkW32k3iW?$eWdCdW=5u;F`OHvZn1sXy|rDF-6K_cNU~ zbx$#w2E=JRK1PZGQzX6zCT!iopa|xkHusog@U1bt^LQ=nny<~mnnrey4hrNh${4~- zhfVij0@^M1nES8&+;Guv7SYTF)G$xf%pYJK$d=r1TZM0dtw_tbIq0V@_Rq= zoSst;{T^7H5vF*H`s5gJ^ZsUt)_x}A+gwxZR^EfPBx^z1GtpgIaEjIHpJJ8YsM7Og zcx09q96`9yQJ~m|F}{zZQH6F ziQ8w2KB?caM)O{Ci#vT}>oRW;w`;mZOE*o?8fRk;<^^XgGS=0YiE~@TN&On2DdI)F zN4S#j5SnMm^{X@szRQ*pbomEeZfHUwIR+xP6A^+e*$5OK%I4{3VkJ-T(( z-B#;LEy7xP)@n`DBJ`?BDxTBe2qvd_o#D3h$+uY3_h`Cja=0g*`1Iz82$bHZXkQV! zbGj#e^7Pd7Ns+0IF_E4|dY2|9B1)&Z`6Qt8mgICj(%R^Zv^7p*U4#L3$Y|}{l=8S< zhcb6K&Y5XF8mp$Igs8R*nty1Rw9PO2?se3YE@0r9*oxlW4sW`_8~Px<)hB=o;u80WYQv&AOKQB-Zok zIW_ML*2B&SewNOosNM76Cr%BmM%&I&ZF@DIiD=C?_ZZp^=EzHVzIvTpPyE(-8_R~I z4CXPHy^hxdL)Q~(D`mf`Ee9qKU8;p+7F>)i(%mUQT-q zz(RUY|JpZczA4|yqxFV{do|}`tizVa_Vb!^Ip(9ZhJNi&5ijPkK8}MmNF&Zom@85o zS{J|eUBq$9ck~L$);7&~18fz>ZsoP+Ld2u{yA~r{lH-v+juY~Br!J+|G$`Nn%VH$XP8 z=o6ORPzc#0TRnU)nhE#v>4h7LK4Mv+39^SY58t1952tYSJ)G#E^401YUt>Qy^5*Nj zCRzx8YJxv4{E-}IvRr3&j=Xu6*J2CL$#-zsPvg05IWxjWTNXt_1UoB_0c zJ%;x}GY~feaWjFLK#G$OA4FKNJBD>~mrBgLS?Z7vEQP-!A6N#YxLMFC2IfGA(6UrB zdx6%QHBQHixL(9f2c`p4ekJ_$%$)0%J|vRbn0jW0?;BgcqkrT5d+M_p=yxTz zYR+rm2Qp&aUGvfJBGG4Q4gcEL5D)L>bDXb_#VJy8Xf6I)jH&d_KBea+TT6}a0=T>8 zsd#k1*S?N;c%Pr++&mWN1{H_i^QW~^&Z|ToQz-4?ko*-I@$pRnmWAXi(~#j?0Y-j` zL-Iq;LE3o~T{I0;(Bl5cf zYX<1=jo@9sknabaSmT*ZVelz5$D3XBBKOtIYpDOP_GGeb7Sj3jLT1r(EW0Ly`u{2q zrwyNy0ogT0PqQrJYU=+hJ)9r-l&c}jD0+%zSEp0|U!lHNFbR32?-e}Gvh-PyJ-E!1 z&gn%U-=AJcFM5<^v%HWUs`kucnF;qIzY9aY&l?Gu%jMzwf={tQ7Fjfl^=$Ar^sSI( zA>R(j7mImLh?%38=Yh+5*w4&D|DTWkKP$w)%sRK1*Y?=2?A64qAMWSxbg)0!kL%O@ z{A~dCCH?Rv)qQL$61En=R^*Qk^0xxmmmJhYr1DejOW>y>m49Mi0{;}Ld=vW;_@<4& z2-@0y(QBjrnZH=m2n&`R(+P9U67wRCu}>lY;N30#LpqS+WGS5-rDIV#R;9yz9dWs@ z1KD?FYxuq_(wY0QPMDkWOFb8uH{+L_PCnAf?bd7sz&s$yvY?X%%$a*pC$yxzin#D8 zGYEtD&Lh?#5!VW|0*BAIc}|ntC;bKJX7DMu!gtcVM%GWE*p)@~ljW=DZwTb}$hcW5 zZg%b3@xFz83i%fJ6!t9^SH*Bp#rays`J!*4c$br}dyw;$#rcvl`UVQi)Hehu?W~Y|U9Hll zZwRm~BwrRK<370Vxbz*j9aFyJi1Hl+^mmIc1Xu5)zionVleE*{FT%G;8U>2{LeP$R z%0ou~&%V6>KWOy-S(o?!Lq`8kxxD`$H2VM4%lm)7+kxqw>#=qAb9aQ^&YM!!V^m%U{`n>5q`5u4P zD(pr4!y5iR5BrZbXup@%^7nbzf2_szkL&$|^$qgbv7Y84tJxOKMXrG@@t)s5=x>zI zj(*HF{-Mb~*wiAQ9h-1{sm(vw)-InN+i?BkPXA!%X8G*csi8jbd<7psn5y;$63p?s z71v1-^1TY~lj!?4^i7-c8!qU05XTL_L2K)FGnQn4ShME-tRt>KT%}O!Ba5n@H}L-^aG)5_wW_t*6wq6 z$T)Ut6PSlgT)VGD!)0HAoU*S#QS&?`A!(wo;I(`7!~fsc?vV#xyQjR6Pnh^Ega6~# z?mMrvc8|W+X7sgL@Fk(&5P+=dN^AF!`LDEg4_W<{*6tx&d!@B|$ktqG?H;mKS6aJ= zPx#-tc8@y$PyZ}q@Bde-b^5S9c3#)FWBuO}PV4`DLjv#CV?6>Z6UO>K{T+t`9M9&k z1tX&)dwwXiVTxiOjOw@ZyZ<)4`;TyCm*%o#>;Lq(Kdij|Z?~%T{|s9HKd`&e(ckAx zJ}~r87Oel{y952O8C2{4!3pdC#cKVZ_61f^;_7dHH0}QU_5Ub6Wc@$NG~ib2|52vN zy#61L_5Z8X`hS9XYB13h*K2HC= z&y2omk=I@py8e%E0hFbB>}8*~{-1&Z9k>4Pp!I+J{YK1zdHvrxas8jy@V{o&(=Z0% z#bOb<4`9fq8M2W507I5&$R_R!z-GLXO`bh|e_$%UxezB}d!j=22OJ_U7;T!`)2qd# z?XfyNy;y6;yX5@0L&9}|zx6Eteh95IYS-#`58dS-w^lms^0iX>`w6sG%6kc;e?vsa z_=>#@EWz#=x3?$8 z<-H@O+AG(JEvxRfSXOG`mddmE+bmkRUX`QDDNC&t?-A?Lde;?uBI>rLUyZfD!iW?- zZNBcGHedZ66PM2S9_G}8iSw)c@$;AQz0b7B@L8IU?jcT$6c>AeBC^h%9=T1vXMXif zEBv-P>__0+0VCS7E|$|g4f_tW@Lo!~DMRE5`$wu9{1mTn=hnvF zty?|8&rBz_BW~e(i1qO$V;)mckNbh*6o$)g>|`D>u&HA;_qW@ zK^kfJn-!aZHvqGI4e5ox`t+P7^^J3uG&Jr+_?(FM%sYTNz^uBp>G4Z)8?%;FHr~s+ z@0t67@sN$=^}5N3W;#<$-q(Q%*rE;r?& zN#&shNO4^%JvY*$Yh9&fL0a_8-K)~+3rWYX(rHxbtWoLQ_66zGt8^MvI%`!r>r^`Q zJ|5lA_KMu_HoK_AGEK7@7MGC=L)3bM4Xi~Qq6>= zlS;Tg%3@1oJ;1)zTo6U?0ou$tQCxR;PT{&+qUtVN)!p1wy=(4aF7GC!VLdGOj%+~H z&YY^9S$Q7-=~4Yr9#fG%wGlc`n3T%-PKr%6hpGD8f%MDG&qQ?rE07{i6_cgy-~+%4;E%{Ga*?M&4V%uS4>{z7fUniz&XH|PP$ z55OPrJ{mBN>W^&ItFmc8TOd8+Q~A_6QB}Z-sgZUnuT{t! z;p*M8eyX=gT((ozPe1ZguJTm@q_`_o9#*RQDOF`%rpmgU)4|_`QR&D%(z$rQNbddJ zt@i%xd6I`L)Vk#W*2VA#sP%qe5|Gv(2E?xW3H$LUg$$o2;N$MzD}Damy})E#!_x{v zIMo;OuaoZ*Wn9DW_+(^+yi1gC^4x{=zcJxmqJtntldpqp2d$d{`T27%)|G;P)|`EW zpGq!qFP(#%)YP&Nd~o%^>vl!DbhsvblrKVUzaM_QB?z zv3l3uSWDM^SgQ&%YXY~6_k}iE_F~nx!pOKCw+g2_AX~T!$hMih*e3%$8I>SFNbON;2xyehcx%7G<%#; zv-U;FbZBiS7xS(0X_@%jbd(nDb&WwwT#*Ajxl@b-KtEwU!)O48r>?5 zAj_OFcyHwxZF|O}!g%#?PdE9)`73y9^3}|TSM%RIRBpai`W1CSF=rfjkEs_w(-8uMB7_n zd-FKkzvn&b^}qjWwrP)Y_U~XD?+Z<|y$QBE$JzcZ?~Skj?N_r+>!-7S1Kaf8%lWh1 zCaF9+V7DE1*Q@ewKzVneyc<+m=bnWx9aqken~ZW6sj&6tn5~Vl)fQ??mFXASNEmOU z6*gKzZK$&QLL2epZ8XD16P49(&-(|@znPkQ{>)CFx<5VdoFB^zecWcS&)a?eyk|YP zpT|uNXg}+V4l_TZ!DkN=7psZJVYIb+9*3VcQ+r;k)~eTGt(y9Bz1Y>j>jZDU%6;hY z+#lNfm?NzDp=MhHybX9y_Gz2I*e^~Wi()?d>Gr5Plyxo2n)<>j^pRD-)xLJK8UCd1 zw=ehyUwA1s_k}Y%>wf==fAE!|R32|$(FDb-Ub@a)4P18fIx}6bKp&#-ldPP(PU`=? zgD?eJQ{3y*`Ft;~&2Jm5}hL5DZz|3!t?FG{NP0Q}ooC{<3;oY6R z%r`2%OYQ}-?Cvoc@r+oe_5x|HvJC#u7&nMlMB@hS1+ol2(U9G!WFs-A(Y?S-j48%m zAm=f}-%{GuA^ECMY13XH%R=(C*pR8cKuWthBwzH-73GWe0$CQ4FN3qRh|2iEZTt^FQO8~g(Lo3o3Grn0PTA!O(Gc{o4d7c7LVtSFXc3rit;cCUx? zh`qp4$QBk&Vp(YzWG5^h&NnzqG#4x#{dO>9uUu)}AF>y&wC*p*bM$?+7x*mqC*ppt zMt?Gy<-0+-d$AW7aW``Zxc}})`;EGnxdYrc`*A%<{+%K2n+Itxa39;Ey}*UACCrEU z?+kF?1b0A0e3Q9N+&3S@b=1SmUFG+Z9>VpcN140I?3lSFVhR*`#;$0lV zyq$87ZWa2dz_ZLsphnMHkYy;HOr>L2Iu4~n9468!4AIF~V|{@d>vJ*Ib2=F7>De}q zbl?keNe9U3D4k5DV^=y3r9&JA((#7q(B3BLrmAC-RT6DS?{Vi%<|w;kUn!1H~| zGAvSq8!=-Umw^uZ`sw5R{*&eOF@7&8W1sYE;HUDwrSg4F@_o)39_CnOz;ByShL}`w zoJlFk<9#1;%)Za6d>=}l=a7I2zK{1dX&x8)ee{@+_mUj&525cR#ehd(d^?@qJ7QVL zdr2`NzQyG`X^}G&%b^k|cX)H?_8`_qErw)pq(@YMXsE9j!H;{@Tu(_O|AZn!4JSnvP9v zZLRH{h*7tpc732_J>uUln4Xrf|t?f0nO-(he9W`z3tqp-DU&ri@_PW_k zO`DsqK}e&ou9Gj48*=h|b8_>pt@Sn3<<-_@*UrsqsJ*T(cW!Q0Uc+^HbMorv*4EbN z=gkt7%`4nWve)0)+161odp7RNziC}&U2F5~WwrIb)|Q*vd@T!Fo7*;Z`o^W6+}>Ju zOaw$_<)KZoDiReIF8>g_GoGJwj3f0-?VFFFY!{jBt@X8?wIZ|Ax3!aF*ER?05bSGeZ$*o&uSa_nnd>?_L?)WdqUxJ7 z>pG+cT1B(31xm2rS-TGChedfNQPixi%BkB>nVr+nw5h{i6R4}L^ZOQVzEXJRhI-Lj zUtiPI+S;b#H^dnb<2|4#@6P;)(`@mX>Ab)sXo-Wxln|*IwI+4xgRlYx2=;*HE6av#V=6I#&4GTQ{xu zFI-+ylasS#Q`7ts&fmhVQ0lzJ7g+D_tgKpoT}@uSZ*!o|mz_`dvAoS!7pQFtY-h6z zvldnca^~jY|7<#P^1tYRjyC?kT*S}C4cFu^_ifzdYpKH>RtCt*oE$QRn}W0q_a{@} z^eAw7c@0vgD2BmxB+FX3d{GT#R}@R7oN-1~Qj~5;ax#6HEawA-QInI$6-gyg9cc44 z1zLQ|(KhNgHTl}9FepmyWl>g2ugj%{NR(4PvKIzWgQNcz&aJwocC&BcXk(&=<=gCQ zku7WV%xG^dt=!_M>B-a4_)5YWW1^ZGf1s_VZd0JX#+RR;SLds%&91Lsmpx~0zNjg^ zwQBy7#S4sX_@71U&+u~e9K*kSbzum=F%4ygzA;W3n6DfLjgxeW=^6iw z@sr%szmANw8v4dKX<(CzZ^#XO6-?iU5Mm3{2Mq8ay-k8>Ko&@fyOwl z%AsBgjd8)iQg#0nmwv_k|JZ-CaY|8)c?NwDgMX7G6z^8o228Lw7vZE! z_dq{m94o$GUK{sMWkf%t{FIxgcW^k&&_AKZ!4pcqTFrY{8UIa4UM!iYuf_>Oe`5TJ z*I4(s%qFE}=+k-VZ=!xJgcOz)8VToy{?Z8w#-)Lch&x($AvUasix#^6ZQWm(<%A8 literal 38128 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 diff --git a/example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage2_v1_32x128x128.co b/example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage2_v1_32x128x128.co old mode 100755 new mode 100644 index b15bc9b360aea40d45a2426eefee7db90d31160a..9dcd7a4e6434b89d7393a0cfcd4f951a3c552aea GIT binary patch literal 24048 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 literal 38048 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 diff --git a/example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage2_v3_64x128x128.co b/example/65_gemm_multiply_multiply/hsa/gfx942/moe_bs_stage2_v3_64x128x128.co deleted file mode 100755 index 849c3fa06da7832e5bdcf565fd4c8e60ce382851..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27144 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 @@ -124,10 +124,10 @@ static constexpr ck::index_t Scale_Block_N = 128; static constexpr ck::index_t Scale_Block_K = 128; static constexpr ck::index_t Nswizzle = false; -static constexpr ck::index_t ActOP = 0; // 0: gelu_and_mul, 1: silu_and_mul +static constexpr ck::index_t ActOP = 1; // 0: gelu_and_mul, 1: silu_and_mul static constexpr bool MulRoutedWeight = false; -#if 0 +#if 1 static constexpr ck::index_t MPerBlock = 32; static constexpr ck::index_t NPerBlock = 128; static constexpr ck::index_t MNPerXDL = 16; @@ -179,7 +179,7 @@ static constexpr ck::index_t MPerBlock = 64; using DeviceOpInstance = ck::tensor S<8, 32, 1>, S<1, 0, 2>, S<1, 0, 2>, 2, 16, 16, 0, S<8, 32, 1>, S<1, 0, 2>, S<1, 0, 2>, 2, 16, 16, 0, 4, 2, S<1, 32, 1, 8>, S<2, 1, 1, 1>, - ck::BlockGemmPipelineScheduler::Intrawave, ck::BlockGemmPipelineVersion::v3, ActOP, Nswizzle, true, MulRoutedWeight, int32_t, A0DataType>; + ck::BlockGemmPipelineScheduler::Intrawave, ck::BlockGemmPipelineVersion::v1, ActOP, Nswizzle, true, MulRoutedWeight, int32_t, A0DataType>; #endif // clang-format on @@ -201,7 +201,7 @@ int main(int argc, char* argv[]) // ck::index_t valid_tile_num = 13; ck::index_t sorted_tile_num = 259; ck::index_t valid_tile_num = 256; - ck::index_t tokens = 8192; + ck::index_t tokens = 4096; #else // deepseek ck::index_t N = 2048; diff --git a/example/65_gemm_multiply_multiply/moe_gemm2_xdl_fp8_blockscale.cpp b/example/65_gemm_multiply_multiply/moe_gemm2_xdl_fp8_blockscale.cpp index e5471fc259..dd6f58f678 100644 --- a/example/65_gemm_multiply_multiply/moe_gemm2_xdl_fp8_blockscale.cpp +++ b/example/65_gemm_multiply_multiply/moe_gemm2_xdl_fp8_blockscale.cpp @@ -39,7 +39,7 @@ using B0DataType = F8; using B1DataType = F32; using EDataType = F16; using AccDataType = F32; -using CShuffleDataType = EDataType; +using CShuffleDataType = F32; //todo: change to EDataType using D2DataType = F32; using DsDataType = ck::Tuple; @@ -58,29 +58,27 @@ struct MulABScaleExpertWeight template __host__ __device__ constexpr void operator()(E& e, const C& c, const D2& d2) const; // for real kernel use + + template <> + __host__ __device__ constexpr void + operator()(EDataType& e, const EDataType& c, const float& d2) const + { + (void) d2; + e = ck::type_convert(c); + } template <> __host__ __device__ constexpr void operator()(EDataType& e, const float& c, const float& d2) const { - // for real kernel use - (void)d2; - e = ck::type_convert(c); - } - template <> - __host__ __device__ constexpr void - operator()(EDataType& e, const EDataType& c, const float& d2) const - { - (void)d2; - e = ck::type_convert(c); - } // for reference cpu - template <> + e = ck::type_convert(c* d2); + } + template <> __host__ __device__ constexpr void operator()(float& e, const float& c, const float& d2) const { - // for reference cpu - (void)d2; - e = ck::type_convert(c); + // for reference cpu + e = ck::type_convert(c* d2); } }; @@ -158,10 +156,10 @@ using DeviceOpInstance = ck::tensor_operation::device::DeviceMoeGemmBlockScale< S<8, 32, 1>, S<1, 0, 2>, S<1, 0, 2>, 2, AK1, AK1, 0, S<8, 32, 1>, S<1, 0, 2>, S<1, 0, 2>, 2, AK1, AK1, 0, 2, 2, S<1, CShuffleMLane, 1, CShuffleNLane>, S, - ck::BlockGemmPipelineScheduler::Intrawave, ck::BlockGemmPipelineVersion::v1, 0, false, false, false, int32_t, A0DataType>; + ck::BlockGemmPipelineScheduler::Intrawave, ck::BlockGemmPipelineVersion::v1, 0, false, false, true, int32_t, A0DataType>; #else -static constexpr ck::index_t MPerBlock = 64; using DeviceOpInstance = ck::tensor_operation::device::DeviceMoeGemmBlockScale< +static constexpr ck::index_t MPerBlock = 128; using DeviceOpInstance = ck::tensor_operation::device::DeviceMoeGemmBlockScale< Row, Col, DsLayout, ELayout, A0DataType, A1DataType, B0DataType, B1DataType, DsDataType, EDataType, AccDataType, CShuffleDataType, AElementOp, BElementOp, CDEElementOp, GemmSpec, @@ -169,11 +167,11 @@ static constexpr ck::index_t MPerBlock = 64; using DeviceOpInstance = ck::tensor MPerBlock, 128, 128, 16, 16, 16, 16, - 4, 2, + 4, 4, S<8, 32, 1>, S<1, 0, 2>, S<1, 0, 2>, 2, 16, 16, 0, S<8, 32, 1>, S<1, 0, 2>, S<1, 0, 2>, 2, 16, 16, 0, 2, 2, S<1, 32, 1, 8>, S<2, 1, 1, 1>, - ck::BlockGemmPipelineScheduler::Intrawave, ck::BlockGemmPipelineVersion::v3, 0, false, false, false, int32_t, A0DataType>; + ck::BlockGemmPipelineScheduler::Intrawave, ck::BlockGemmPipelineVersion::v3, 0, false, false, true, int32_t, A0DataType>; #endif // clang-format on @@ -484,7 +482,7 @@ int main(int argc, char* argv[]) using ReferenceGemmInstance = ck::tensor_operation::host::ReferenceMoeGemm2BlockScale= 3 ? 1 : 0; diff --git a/include/ck/tensor_operation/gpu/device/impl/device_moe_gemm_blockscale.hpp b/include/ck/tensor_operation/gpu/device/impl/device_moe_gemm_blockscale.hpp index 2f8e854514..47114805be 100644 --- a/include/ck/tensor_operation/gpu/device/impl/device_moe_gemm_blockscale.hpp +++ b/include/ck/tensor_operation/gpu/device/impl/device_moe_gemm_blockscale.hpp @@ -355,6 +355,10 @@ struct DeviceMoeGemmBlockScale #if CK_USE_ASM_MOE_BLOCKSCALE (void)minimum_occupancy; (void)MemoryDataOp; + //do_weight stage check + if (MulRoutedWeight == IsInputGemm){ + throw std::runtime_error("MOE_BS_ASM Faild: Only gemm2 can do weight.\n"); + } // get .co file name for ASM. select by version and shape. std::string hsa_name = ""; if constexpr(BlkGemmPipelineVer == BlockGemmPipelineVersion::v1) @@ -371,7 +375,17 @@ struct DeviceMoeGemmBlockScale } else { - printf("Faild: Gemm2 only support 32x128x128 or 64x128x1288.\n"); + throw std::runtime_error("MOE_BS_ASM Faild: Gemm2 only support 32x128x128 or 64x128x1288.\n"); + } + if constexpr(ActivationOP == Activation::silu_and_mul){ + hsa_name += "_silu"; + } + else if constexpr(ActivationOP == Activation::gelu_and_mul){ + hsa_name += "_gelu"; + } + else + { + throw std::runtime_error("MOE_BS_ASM Faild: Gemm1 ACT only support silu or gelu.\n"); } } else @@ -386,7 +400,7 @@ struct DeviceMoeGemmBlockScale } else { - printf("Faild: Gemm2 only support 32x128x128 or 128x128x1288.\n"); + throw std::runtime_error("MOE_BS_ASM Faild: Gemm2 only support 32x128x128 or 128x128x1288.\n"); } } } @@ -400,7 +414,17 @@ struct DeviceMoeGemmBlockScale } else { - printf("Faild: v3 only support 64x128x1288.\n"); + throw std::runtime_error("MOE_BS_ASM Faild: v3 only support 64x128x1288.\n"); + } + if constexpr(ActivationOP == Activation::silu_and_mul){ + hsa_name += "_silu"; + } + else if constexpr(ActivationOP == Activation::gelu_and_mul){ + hsa_name += "_gelu"; + } + else + { + throw std::runtime_error("MOE_BS_ASM Faild: Gemm1 ACT only support silu or gelu.\n"); } } else @@ -409,19 +433,19 @@ struct DeviceMoeGemmBlockScale { hsa_name = std::string("moe_bs_stage2_v3_128x128x128"); } - else if constexpr(MPerBlock == 64) - { - hsa_name = std::string("moe_bs_stage2_v3_64x128x128"); - } + // else if constexpr(MPerBlock == 64) + // { + // hsa_name = std::string("moe_bs_stage2_v3_64x128x128"); + // } else { - printf("Faild: v3 only support 128x128x1288 or 64x128x1288.\n"); + throw std::runtime_error("MOE_BS_ASM Faild: v3 only support 128x128x128.\n"); } } } else { - printf("Faild: only support v1 or v3.\n"); + throw std::runtime_error("MOE_BS_ASM Faild: only support v1 or v3.\n"); } // launch kernel if(has_main_k_block_loop) diff --git a/include/ck/tensor_operation/gpu/thread/threadwise_tensor_slice_transfer_v7r3_scatter.hpp b/include/ck/tensor_operation/gpu/thread/threadwise_tensor_slice_transfer_v7r3_scatter.hpp index 11294f556e..4cbc9c16f6 100644 --- a/include/ck/tensor_operation/gpu/thread/threadwise_tensor_slice_transfer_v7r3_scatter.hpp +++ b/include/ck/tensor_operation/gpu/thread/threadwise_tensor_slice_transfer_v7r3_scatter.hpp @@ -288,14 +288,12 @@ struct ThreadwiseTensorSliceTransfer_v7r3_scatter oob_val = oob_val & is_src_valid; if(i.value == ScatterWeightIdx) { - auto data_types = SrcDatas{}; - using DataType = remove_cvref_t; static_assert(SrcScalarPerVectors{}[Number{}] == 1, "scatter weight dim, should only one vec"); constexpr auto iScatter = SrcSpaceFillingCurve::GetIndex(iAccess)(Number{}); static_for<0, SrcScalarPerVector, 1>{}([&](auto j) { - src_vectors(i).template AsType()(j) = + src_vectors(i).template AsType()(j) = scatter_weights(Number{}); }); }