From 8d00afd3885582d81fac2779a243d64387b2792f Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Tue, 8 Aug 2023 08:07:26 +0200 Subject: [PATCH] Revert "Update ROCm doc (#35)" This reverts commit 98ec60d06c1fad86d9facac6f83546893066fab6. --- _assets/img/amdgpu-performance.png | Bin 61734 -> 0 bytes index.md | 2 +- rocm.md | 39 ++++++++--------------------- 3 files changed, 12 insertions(+), 29 deletions(-) delete mode 100644 _assets/img/amdgpu-performance.png diff --git a/_assets/img/amdgpu-performance.png b/_assets/img/amdgpu-performance.png deleted file mode 100644 index bf59cc4025970e29bc703a8969095c2f09152105..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61734 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.~BP5CaW5^Q}=gE}i#?5OVL zCY3iJhK9O?9G3D!E)a(T0Dc_Oa)({;Ep+q4L-@W(b5zIbXP!}dapCxba#EB0%0M=p$aI75n%SNw*I%z?&q!_2Ct#$|5lU={%I4c7pY;;i}JFVtES!zdUt4O=okuV z0D}W>=X~{dexaw1B&%a3d{9_buzO}HkSy~67|&KJe}UIW|gQ|<(htQjGlX$r>2@J{g!$q5bv9? zl)ITw5LSHuRRPNBYzCRkXOf{b>M%6Btg=z7dGD5&_eAnp(;IZb&9+iDfT*kvbM-VC zbXChfA_*N<(`69Y_NnNzx1@}CkbW&5c+2>e|9&Ple&)1i<-Nz8^mgyEDQfceJ2Rhy zvKH&>BZ3Psm|yqwgdqDd+)iZZ5kmYGSZ);+6viheYC&P3R^89NLP6+FoU0w!5PEZ= z*LY{fn}IFrt9*qxBA6@Q74Ij9V6-3njiVCQg3tZ^38X9E+PAG8bVSOF3VfW{z4^sk zh|IE?o!o13{s&GyX4BtgwX}cSLT>v%!Auu}+PYTe6loWUarhoiU0LBUb)dn00 zwY9Z4uXXa~u;PmU`!E^@H3W4VTB(nx(hk{vy-XUr!$6X4!A?f(1^(DrTf=8cF95xb zxcILdbz6MtDe5VGaQ?*#4a{B%%r1`*to{2Y)QPisgl-4}Zjr^aU(mRiS2+Lp@#84{ z($tfVbd-;ukLvK)W3vlEE4@Gi5U-Ew7Up2z{HcRu%JaqnW+#iy2Q*t7c+Nu*kI!3# z@fBU*(<4Z%q8GrJ!$eOnH2N23ue-)ShQC3;%DxcM~4V4 zp78ML_wcw54w8ix*M})89J(k2Nkp-%3)S_o=EortnpD?y?VsjJ{vUApxR#d)sPyqn z-w;*1Jbp#m?8tQV@3rK>#TmV)p(5$D zr=QP&h(YrLiNRHf)qv#>IIt7NiA;Nbc$3dS331VQS3w*jHd{IAk;F9e<3}Y-@Jcqd z|3)J)uL7PdwZ4HD*B*Sxwcg;4$$dw4qo*7KxkYT{bkeq&V(@|Iv4A(L{r(;{8?wqk z@I<=vixh$oA@`Ow`bq8bVeCAe@A*TO>YkRDPs7SO*>_*dKc$Rt*mV2gFR8LeEMq%mui5DApM(l9zNtnw7(k{q`<2ftbA*=0hTBvJi zkOxtu;y_3~da#s(lk>2a76ACIRmbtVvqqW&ay~Wk4Nuh7^g5fC)vBh`-fwPe^>;8RF0kWS7z3AhL3UMX=g9leY^9J#6El?x^-Y(R+t)^=>#CM1~ zDg3k9JFyS1*BYJFBFY*WgcBFP2z?)nqx>OgS>oh|`}+?-MFYY>@WB>hgu|s$!pAi^ zG0f@k*ZHjn)tiM>mPMT(ooU4PL(~Ahz_*T!N95cT8#u~f013QYRkL5Si*Yl|Ifg{`cc}T1!>6>0xl`Rk4Db;gLBL5g>d| zXUk`WmR8Ta@QP7-4f-Enj;)2-XV0+mZQEuKyXY?wEJe+a0k!)36gMpmI!Y~07d2aP z;`s{(Q)ML_&QXBOhYZL2_+TY52tWhi{cq+R2ug!iDnhdCqrzyt(DCeqP3$FErs~?# zd!7EKdI~a1T)+f2Ax=Sz^kH58{l8wpL|B3EmFLH#Dk;fW6NV71%MI9C)0KU7=<#_Y z4v=0{RYBik0}~muz}bOZ}b$({$sK ze?my!3<_Ic^*?Dm1v8nLzM5LY3n;=atn||{gfYF7@vm{r-^kT{#Qcoyl)`PL6YDOj zpPSg;H}JeGRZU7vdI=b}+`-+!gaF6ysMaIO@RKmFhAUejgx>Y39Fw|DLG_QC2_Tl5?B? z*`3by>ZhZZ=wH7th3jg{V*2OaOOM&ujOZNy@7t<5Tpk&ftLAin@VT?; zPQDO>M%|a`1@DYdX)rSJr<_~i`%SSu@5C`jv-^RQM<3mDkjbRm z*ZAuuM7^jyMgDD&d7ME;p~)k9BJ-vA*_!^^gp*$O2j5>Q^>%+9N6wT^>Q29{;uE6-6?n&JBJN@Hni*6OVK9}FeEvlY6Z_2+gGqY9xvK3kY@XJxr(FUtVIyyQK zPGZ;~7u?4-M{+pv61Up#eZy4wqWZ~+`S{`T3#nz$?-M7pg>^`+O0AoAHd@sRt+tNr zks(8aXuzPXnF3@pJ&hjR0Ad?nUfxTWe#20UpX~hU`C}F><6!ArQ=uosL6gJ@!B8b^L{;?C3X_;a3k%7vcEMOkETH*U@>?~{ z((jZ}0^9)*6ajojhXI^Q6h-ZNrufd%6{1~Lv*oF#0)@n~-o_)hC4J9XabuipalKc0 zpCCF5K9+{5Y@GZPY@o*eZ1^3I!k=wyiPWbO8X|u%pb>M2{tX)A2rvo$8@2rOnCqs2 z`vd*DZMlO8P%AUCtvC1;-W|cS?xOu_YW&RPAHR2JsxDeKZu)ph#p2pQU;nTBi;SEm z)UyU(z!Qcc5}5!lzaYVQ%bBt3p&Res4(5%ujDoS0_ac7bY_B>xl$}05`HSGQa}Vb- zi@oAi3&#BS@6FyK7132SLNU2htF>z@ z8AH`=(0_i4SC>6+XD5qz3@9350!*#qM9kr@iExUW&-G--|E;&%)#M^<9#}{n<#ky4*{D& zV+(zD^x>Q@@)sd$LsElAgMpt z>hz7Sfy!r@lbv0AH>+4;fD|_$Jq*;wiX?H13cZz0<>pFI^Mz*vO>qvHBnZow`QGXS zj^#$XI?k>88Z_$L+U-4WE*<>$9i?X$#v4cfb9f=vU~YFEhWhgw3OKaQh{gGix>Zur zI=u$!=x927c+KXy6LT2_YN0z*y``vpE(?cnNzR?!0$VsVFvth(c>bA_$ULO7zDrLb z%T~e8fG1AM)0!XRJce2X{la0}Zs6W^){P*+YiT2(vR{3}Kb@LlNgi-**qY64e40&iV zc?4czwh<%$d2lpVP^%FlV+f&y5?e8UTW@bi;?&IJfY`F;5ct(co{+U<@ zZoQJ^opLIwV}R2|Xs|VPa9gvYdGa%v!Y#Rmj$N-E(KDoizJt-s#o75SpRiNm4!tX8aIt?-;f=mpNM9ANS?9f+g%U0shcrT{}E zBM?O-Ld;U&2(9Lo#BLh8+DwNN<$I=+74}8bHduu!l{`38^(TOWN~DOLAl9-o!Y}RE z*C}*L;ekz8L-M1Z&nwb0g5g0$7*0W|dHm=ezp)ECd`REzAu$4ui4BsJd4MQn_{#TV zM@v)g_uPi2OOo>z0?aS(OL{K9#k4A#vl&17sxs?vgt*b1=K5KlTza#?z~qR6EGu(h zt4PN4OpfmF?`I9$Ehk4Nh@_Gqlx?C4NKtKy&3aRLvctW5SE(1T*U|Vdq0NqFJjU(?u|t5zrkN(n0)B@5{BAOsQ+5opjy z>*Rrnmsrhb3a(2b^bHi8q;?x}|22vhbrn_|XbV&1Yx_4Kz#Q}e*;qG2L*I_i;h3SL zp;=m5I-1vwNf>(*J9;`oqV}?zTdK0}i^^7NqO~Ey_R~?nH&kgd^0ixP9*PFH3K-q1 zRh4(>%!Jq*4GQ!yPInPtx#hnCH)r1A#wUm4H(tkXL7gJ=u$KrI-FD+o?VaqBSGDL4 zdg-qOo4$|PR8HtQp(vpT-2gO?Bn#u!e{h)AVYtSM^nrpJ+xRlZ0FxVp)lp6L{PZsy z&mYCo-dySCeR1xli{xfJgytv#=((}*v})X^r>E_tKHywftfq1vdV$!$1DGK6V?VWV z-sBV46CsVa&7c1qJlSL6E!F>hiurszswprSpsP+9Q3+O_!8>Su0)z@skwMNb9#*K6k9rPz?_v%jN9Hl{9(d3uV`_`H3;amd>?mPXq^W-X-uU~W{-eQE zKfC-FtWBqiXm<-m_t=;A*ExLWDP+v~NXXd4P=xEP7z@EQMqKaO|K!VYWPn@N6FFy<$I&zM`P$; zhpN&O6MI?b#`p9U*w3YxiSJzeT}*$F;lsz9zEu?K$w49^`9FX)K0I4jTTO9=978e= zpz&f?Gz>Cma^E4EEgsOtfAN-+z;|dE~X<3<+S015% z#@Acp-(>i4o~fy$+csOfxPIImPv!rFsK3W3W82mhl+&WAX2G>>!7cL+wKOwd6m8a9 zvJ4-sJA(i^aIs5mV6k-h8Z0jmGckVujwE>pil)=9DHZN&c#!t0+9Pm}20u0N4VwobNK@d5KVN+Y`Fq^$>Zf^`fr037 zrgLYaX|v|Ov~MExTt4se_})-G>KL{2>ywHFi6Q(K9?7Ras*OaHu1=Zm;lPsPAB~pO zl4CyLp1c0*&2_V%8@|NrK)DdY%CK(8(9hF2O(Xr1&|Cel1>$XA1)GEP-xc;vVjkFl zr%@yx5+ifO+`%9(b<{Y{=S>x9`V6lew%wg`*L66o$sfSz10vn1NIkD zG2}qz)zwvz9DbtIXs3W~$G6qbvc&;je(_K2S~6-r_<20e5;BsusBi|&>WABAy0(O# z6VywZL1yrWj~`PXmzuC`+vZ|#e{)EmLT~DFjQj!fF(WbN0vTmM~Ks@!il>jgs4 z_nMfPq~t>Z!@<}Dj#wP&Nu#eAa3hM_`+tTA=k|yAJ^kBzFuagj;oYB9OcC20VfgWW zdO?F?Mepaer1w*8mNns2Y+6wmwNG{w%Fi}hE$3NOm=yn}WJ&?+G6VAcX0rtpQypvy#?0ZJZyaJv`> zrE1?b!Bc!Zd9k!Zc3(ZuRur*y^CtxYx7@aETTM+3M6ZwR+wjd9AyhKvz^}V$R$N;p zefR74Y9IOs$F}{(x!uD)*0Y@u>0#7ZYGSRO{AJScR4xY(K%>kFPFItq2f9- zL3fKL9h@4gy8In70o=+f7;RMGtz^JXo`n#JFufrI5zhA`bJ2TWxm$iy8mTs3i21`L zeqGviC<2Rj3FH^F6nl>X2Pa5ixzts?vyR`6u0eKBdh;f@3}I&^h6+Z=a;nP z(tL*l^nDf}E|u5+jX_uboqHbnJ{68VuWk3lC&a`^A$)kvhEu{4;uRb6@e&fnYi6CH z!SlkD=jl1}(hoj}7ngi45UC%LByxrdY{&_6uq_)E85utnkL~>R@Gw2HXCf*uP?WM~ z|66OSu6%FHw|Ho!WoudGUg-r{)c!vReTqv?u0+Dz9P4}X9>>uS5GD0_=_nQuhVgT+ zA?yjMspFfp z{jlj66NA^OnEN*E%w9w^kvcnjKi^w$5CYM|4IIr$B%JJPM-B?AWYdaV)R4~18`|u|K?C+2L1XLR>N||XLw%5K`S<`=7Z(%b1C(B zD^vd6A)u8)vKQ7C&(!)TG)i&^F%ZRjZsz*v|$7YHd{0W1Grh=FEkF9qj{I z4<_ud~a~SQEoBCNaY(E>&|m`T3f;NT&rmb?QM$RQp^}^e_26M(aC=njTXKVLTjDs ze2~@P<8w&h)!-mc)osdN8MCEgiktBkG42&nj$hQ97LM>xZ|cQELy2k2P(dkL9^3`O z4LUclujDp$i%N4(kF<=8J8&Pn^vJLgv?9l8}fG z4<@KsB$l&sa$bd>Fy|DD{@5Ola0)sFudBw4E0=iUI&F_!%CBR2cw7I**45A`(iL>L zpb~)U-ywCEUodgWxUNP5Z|NO+4!-kqHa0e2r6@8Pb=%@@Zr}BO-lO8w)R~B7(I}6? z;})B#w$}Icd9)xGAVEx6NT|7^VGxy)xW@d1F(^2*9V1*P9ptR#{o zo;cYyH`)8cuC}hcd=bu(+lG^cKxwme0xuY{?VR?i3IgJt(nKC)2EN zdy-|M;?O-e<0FBe7H1lXUurqRmZ8|)wm7e z%|>q`x=}zd&9-|eOiTUKC;qAk9F6<=iSe$Z>ZPf6?aM8}JoO*}+uQGu5SkI2nrZ=< zu*c`2P&mvk@H0yI=^u>v27=eGMb&{FwR=y9*y-n`3q>Fy;QM3uEz%cqND+5SywVz# zmR90#cC1`5v6VZtVaI3PxB6X|(&F+a*v~)NJh)3n>*Z(t1=oqPvfGOSv_fKHwq~6E zK7B@NYJu_beVe{nVSF%ISqFQ4Lw&!;WG_5-S0JmbsDP>nKFU!l$RWtdSBM%#*tCgg zA$c?3;Zv}Fc!I7_O>_2ZO-A%k zj!GOKzoKxghx1de0lOBoJ8mWhX1RvKxcF|&oBM~3l#F?7N~}p701m&&mwJw)R&l>K z7{O8RW(}jEQ*T}W(X;-cMv_!JxBFNlL>L1?T~0x%$vWH{;(`DeED zfGB0akMZK8odWNId%rnGk>-vaIq!7xG+)*vfO*(x_6Q12?r>XQ^}n z1R$?nJ9p}2C|&ug4IaII-FU7AYL-B_CY!la6gch{@FA5q?-@w2? zoWasMvqVDp$)X9%P9J}hZwGqKbpB9hH;9|o0`|t|M(!Rt@@+iQ>u1R`Bm`J|2-IJZ zDt+ZAJt(1DeSn(i5&Ej_kUL?CY2x(Yb~gLWVrelF3dP^az6+274F1%2gen?Y8m_a# zG8|cH8)n15oM0UK1( zUJnUMM|Sukm18vv-|bJka`vM4=odDmRrmU%q^~E0MFV zD#h-}zo9hy=6&?P|L6YHP#+W7D~?Bmpr%P~ zHg4`8aBsS5QO>DTEaw0J2k%Df zi9~5{fTx3-1M`r`L&nq5kvy8x5eg@VJ%+Ui4@x|)+!P>OL?gADG;t;7IM2Plp!MpK zS?^d%Bii5$3j{X3e)S4B^~gv_{DzYs3HS)9{0ia^T`j(b*O!+x2)2AH^fctb12IFV zgf5xk&9qyK|?ed3AFMo#~p?vat@g)dh9vozO!5S&fJ!+vOdvA_{e z+y@XgJmYP1vnlQdsjKscb0xAWK)>pM+REoq@)m(ADPHH4`&Y!oK+K8FEFM>ZWg@p$=`hM9&}qqX4c7z%VgT2QRhvU(fVMz$)M93F71AQCAZcSwZg~BD^pKU332d%zqx_zZv0_t z1oh^C<%iW_Egg!xn4&H0pTS&<2MG7W;9_JtQZx_ZVKG!(vVRpkH!(v5%V; z22T?Du0h#WXR{?I@0G{+`$dsKl(vw-lnA>I0MOPxZ>)XB?uf-rO9=_a?jq=9fc_pn zt?CJU3K~gPb#kK-ufxH{ra_Ow{NQRl|FIsB1!VazEC27|6pn_aU(xljD64RRz$S+A>|UZ5jEFu)i7< zBR8m{^$s;`dvQOO_Oqk*rSGAY()w%F*ZENsr_eW&r9S#Xn0MZzEQ3l(a!v^+Un5)M zf<=K{-;!-wO{ec#U2XM+xg~~Iv7zI*`qe+@gC|GK=~U^-ivqE`Qr9>LE2o_Tzu#P@ zbMG1HeEbR+oi*lT zwZ$JQ*Y}H^?@(Q|z07YU#E$$`4Ct{sc?kDkn4gc;-i?tCxGaW9kXGJ$dU^oTB2BaT z>9scYktOlu>-tWMOAI=#;sZf&2D;$zs(S#B)>j#?%B4n|ZFd9#_T?Y%jkbFIX0sz{ zqzPIzbmmqNOJo}Q_yn$u?Et`b`ldQhh|{|f)qi~^XMssMV&QG9eBKCu)Xzr!1=rq? z{{>J$2~9_$(Zb%S z*s*`jDqe`+rk0d2$ni6-UpzQ|S@z^!=4EgFm6g(qvgI_pR2?BQ!qaL+?qWxW#N(P| zojk?s3qtuZl%}~fk3TKn{~vyLFe=_UL$8!2HxHXpKMjseP_xZ5Y6q=@t1t*8YHU#J4AeSN{nF<9e~vo3UDpD-=8XX#gE>k z&2-u#>lCT8jnjUu$u2Ea+_L|xrpkd_absr6xOcB#zwYXqMYX^F8aKJ1gL{dQMs?59 zn)t?t&yFYdJk&apB5x2a@IdsUb3@tIiqILPaN+g^lzNs!j+l?xTAQZD8@8}4oyh6QD7~oF$fID`L~i;-YeVpT_48SeV|o#?gN;(8hpO1Q>tF1(K-z+l$v z14H$h%j_O1C$QUQvYydN9vC>tJF|qe^SzjhQ!0re~vtlmBO)-;wc_(ktd0%3zp-vN@l8}c>3&FVv8-VACmAY!u$#( zbikLlepS;T>f0OPZ7Vy*dpuH^k2`2S`uVo>xi5_;1JcnkUn2+%L&WUNjF6IQkx}T4 z8(&`1=`X(Xywu%kZp>!hEAH2MRM4!e@zV8$wZoF~;2d~cA$t+|l|t`14isrlOpPg&I6 zp`R~0$EV!B?2hfdTH4ZF$)z;4D0mzV`SWMlI7`hgAyRAwDTNJ zGwbJJqW>|~b8oKwt*no=@$jZ^H>pf%ouyfR4y1HV9}z#xF4LB6p9^S-TA+Ml#5m5281u|vyxUW7zg;^xc~X|%_#4ISm~9=N~o zVTZ)t$Zaa=cCHyrvXtxDRHp3F-!$W;4BVN9-weI$I~shcKmTe?i=uYhDV~5mB(42B zcV>TYMH`c#z~rlM5W4OEX#wadil4{+b^CQARARMGS;vyEulK&gHEvmn2h}m|W-i;- znylxI>8+&bLx=sM6YsMFDsGWsgwgcKb!_f?;!XZ`(2 z$Ejp#Cd+F0mVtX1O@qk|DRYpmPsiM8er(^|7q8lX#cIMD2macI)?)tsNkwo#Buo0hj*Bm^{jArpENj3@{wK99Bu z4faDNPoT<(!nvp7KU`f-p~{eKR=MjAd+3>c$+T}|VE?tnB4+Z_Xr5n1HVwH=S0m92 z;Jc^8+9g1S*I*}tY3wWlYB3Q;o)sp(v&uTDnKgeOYx|GWsco!Cpg5Ai>ya~&g{URJzCz?Xlu!267DxZ014R(XSS1YU{L=Q`*MrD9SfuT_PcMl zmOWLPS93cgO~e0{W0*v~#|ZR1ZX`DL^u*tI0~{z*>9~Or*3|mye8&mprQFie&H)d~ zfXxOaJ1H~l$5$uLJ=ElJ{-u}p3n#t48Cu5@BN329Y&&*5>T)2{T0*b+bfjEVL>_QYj z+==M{pM>B;W+MEn?Ki!n(}y2kR5HgEh|Pu+R!HQyOK1d-q%DIx?Q8R)V2nxYqY0xlM50Sx~tu zUv(yTx_`Ih?3iKb>PW}bbv8#*=I+K}5~h9jcU$(|H7x3NkXe2M%|Nx)Ip<_y z!<*-)hm`HH(dz!%JLs{~6zcK40qgg3$2?-{lJ(A~TqiQ+v-to1r86?Umu7x#BkB6p z-V6%8BP^$PQM|Pp;C%^L0da+f8%cQYDEqmT_&{dV=^d@vE>qV8WBj7gxb6I!y1DIc zS`;mX$QhhcK(e#_$s8GAcrs(Ns!O`!w(0fh(sa+R7n(di_qY4nk;rdmJ8(oYpzl0D z;^nm%4gfexzIupTD);3Lih8%51zUP`UUx0N@ekS3RgFni=WUcrO_IXC$MW0j*@4S# z<>GpVc&hYox*2^AGKeU|eRwPngNgjz#ivZtIcv8FuZ%?>pR{qrdVF#)$~7V3uLVVY zy>Jft8NAS+knv$TqWAxY$<>W75f=*sPJz4{(~~olAHgijo?o6CLS&k4uB90m^PxQw zu7&qrQ$K9AaDFLO&-Sv_Yi7&N6Hg=51?a$QQ-L_~?jNRoz>tua-$4jsuWQ+v>IYx`V?P%f7hPQ8q z&E6`z0bX5-x@|IAq03;zSgz87w?G6x7kW{VJpfGbiDPDeL4Yfnp< zCNQ(GKuGg+shA2#^YPdW36?7BjW-&PUlma(FI-aE%2mCU+LM9ygmjLO69gdm5l6so zM(lV54IDNsh8nZ}kthbjZgjqk;oaA8W3?mCSshE0**wJA9ZB_vph;WCyr!3-JoM(x z5${(+L%z7k3^+*|I2*4ERD}Z6d54sBdwx8336p8YEov1D>8iPE0f~#@UtIp@o(D|a zj%mv){qO87E{oW6%!Y$4Ao|wMjKrpagDR&CeeYg=U*`VsYTBW~HMIw#;vU4rNq92w z0ns=77uap(a;9vEn=s;3Lt|QUBKMqq*y(F24%;l?lI&?>JE2R#q@VT73s{QyY&r;( zwPg=P9Kt$f{PiGJuLGro(D?0~pYNRaf2GebDs(I7HOd$sjD7q%)ia=2O=RDa^LY%` zm|EW)&LQH}jP5hWrIgD5ba}yMPcN`GX;}C7RgWPN%)OB|j7Ranp4X7*JW-V;=dF&8+StZxcVgnTg9jb6SC;viDXYU7hfJ`o zZ)LX+73<`^a2-30Alas3%EGLtyy4waABPxTey{Tw)YT6WbJF!6PS}6egP4&hH}}Oo zm$)JXc>8FaVbSe7cW|?0rWqp@gaHLxPKB3r@a3m*FnSb(K^0l?*ZRfvb16dgqEhmt z^Y-@sGYxd;ti^?dgf6uKp%XRcP(8MreZt^DNR0WTYGF91xWdo;e&A5{_~86iDzP3K z$vU9MkWAq&OVf_6xCtP(kIHJ6I`4GL$&D)OD&^X*GF<`Yz5SLCxcX-(jRL>`A=3*0 z4)jUDVe{nJ_X!DU>*}(F#Hc(ZGBfxkGHnlpoKvZ5^LI7-wzv7X`p)Z58a!sE*vOqW z0&Hz@bqeSJvS0Zu9a0(oPJPJfa%eN$9*~Cx?=IbMqs{tXdk!pQA7F}X z-KE+D3k$FYvN#Oq70#lBX9W(37K0!PmQ>kbA;xg^!9nAFhHUE-x(^~|$^>r)eK_#& z`6mh^1_&H4U%iU!zQWVe&Uo2C#B$>&+LbV;_-4m-?Q7}RLnS)D>#;4C3R+w*3oLha zrIw^@r2GOH5-J_!3@_Y9p75z6BaZuwnXgHnYQhCBQ=4RLzq^Xhg|*W>3Z(LoPjVay z*tA{sRCH?ULF{`aG8KSW+kwHs6m%&OyM;EL(v;drS$v!76LwOmrpTqn^b+rrUK*=F z3}&EaC7jEj;?ls-hFUH{La;abLQ4{owH6iSPJoL;7^ zYQlRDJ=;6&)TJbWe0Y?qa6g3bH&Z{|7ll0|7yMUL0e82Dc#&LF4C= zgsz~_IQs=Hi;rit*{XJoux@hq%M?72eeKVA=T2vAqGfarAQIEk(=CSsz^EeIGNo)c zq03M2b1^?9X7zVjUzCl{!(WP@ep&YRH8_+0m{1i`(|*2E3%?L+m@U=w%iEmxXm+T94&^K^LIE*!SqHKkkgd2uLo>-ML|!JB9s# zmcTy-x60eo;}k|m@G#RQ#dqyo+T^&WAPn2xvMV||bCFebTvDEd056b^Q#f28F%Y@L zgx?i6UB|4&pyg66TFuqy*7WeY*s*^1^MY~>94x32VPOo+%+Y!x1<##_d>MvpL9ha1uwZmvw>@Vo0u?Oet<9KH7^K9f1KbI z9<}ri`RBJnd<=>|VEVecaDHVpg-*YmAxIJ-Ge?fRf#LxmeZuxk!y@<_LzF`Z35~BZ z>gUoOzRmrx`;vOWCu~t0W?L1iq~$-)r6`TWad<7azo&if=a@%#=KZ)S7VCpvBlwklNK!}E^pV4dCzCe;WDfnwU%!b#M?uS= z<#y|>;MFCWG|5|z*+jmrDZd_Ku;pE|(`B^j!C-FYnWJRiTO1!kGCzN^Ir__+N{yq6 ziAoUtXiN5VZb4<`X>M!dle7w0kKcmb?&0dXAF9H>yZkdtAD)&p1{Spai#?t2Yo6_h z=$x+H`Q{7FL4=^SDZjgiM_wV(DZ&U@o+BU(M-^SeCQ$1yh8=qI?L5vI4dIvr{;u|h9uLDdvzFz^J*g12xe=C42-*+C8QdA;k-K;Z z%o(m?MKZtv>?8oq!pfPYr85}8$=(X5Xrk{n&H; z#SLNz-;}}TIu+UMrmiMFHWHJc`p!mEf7R}=O^T4}DeKjn(qQH;U%5gCj=JikRXK9WFWrMbK9*K^Yq;%ayXPTB z{qn6F4DXOA1^Eow&9a_Rv$FZZ=qeSlZpnIefY(++%QfP;=*1=_*UWx{BSUN#`udfM z`js}VzcMi4(88Zr44kAm0siKwE%Z?#x2rzyxa6%wrD>#2)MdPRv-j_C>R8R`E7v}I zCo;yz#X)X_L^1~I9ZHkAyRCP}k5FjYL=;{WnClwZZEx)0e~XraAY`t@Jr8<7DqW1+ zwEG@~T&`$F%aP#NduAP>uKYaIncEGGG=w-KAfFi<8R;yskh^DSWMni%`k17>`-R`y zbqwzpp4=u1+rbvEa!Gim-kY+`-n*;lYf#J`OG^u?Kk^C+(Lsi4a_Lyw- zn9qMF2Y>V?OQ%&`-8;Y+(%Hg(WsqvAh4$Jt>kf~b5j&8C8#)cN;-j3)>d)>b=$RP} zULQU@ww5nuT8#`vIswh2uW~cvO6)bay!z#N+yza)^&6bKQ`g zG}`aF`zYg$4Lv?`J_2bHNhXk&72jU|=i_(za;fIdqH4x~&^<~@zDuh+B$zIq%b)*j zlBPw{IKA)mZFj+ANn2MG!&=9G-Py~fv|f1THZ3pBqSam35C<4QRU7|6W7DPKBlv>n z%+?X7!lF>pTVb{}SEc8TJN8}-`TT6ZoEH6Kygkk4-?cI_Cu4yFylc@2mh44PYUNq< z=Fm2WsQ&j23(Hk8n-VwPdh9q=nOt~ZdDdRyIS*y0mCx0E>%f3G>~TeAdm<-o!1dhB z!e+fUSue^tPrqaFQfQ0g41Kk@?#!D+zMWDv=koMilS_$SvBkkx$Ni@po?Lp(lBm1m zT!-RtTFIk_Utc2qi^XW1N}onYth=vEoJ041YyG1r{(ZjJ9~bPIy(~$W4KFPb`FiEv zX=emrJZ|@H` z5QQhP3EAViHb|*G4Nq*0j14@NcGOA;Uz@yh_O83tncp3OKgp~0wdR>)$HaEsx3Cb{ z6`dkjgdDJQ?Jddlptdwbh3W{@{gVoK&zQxBSQSM=NK3bCK!58FqIyE~jWp)lvp z^2hXlub%4f=kXXVNr|||P!<)x@AVUVf3zx154`g4P`+XKVd|jpp}WzW-7h3K5O4t@SIy#wp&nGMDgsuy7x=tY55Dub;6}|Z%V^k zu2T@qZF?!zl{4xPCX4Rl`E&X0cW<(hbu=UUAiKo`Q&LVznMoXt*-25eV74VQN%N7X zk#m>I#=3a!oK~OhsrQHX(RJ(gE52IvldNIIOQ8*8HPJU@P`{;r^3hzjnTQ%!PfKiz zt>9IGIU6v+#nE*N@%83qp4llhtVpV(en>zBiMNHC?-XGx2ekK)dIY zgQ<-kq=45s`M&hBGBUVu!R68=6{p@pSU5$?^$1A=>n(fM?3Gn@1kbrK(=VQQroSat z=*wru`Z^91!jJLhjnfPC*OZbIg;V;}gGE)AnaJDVM3*bS?#YPG!t0t-i8qY&rMwj5 z+c=CX*LQ3_?G&`je9)XZ-;6RddZ}8?j+SZb$d@l!x!FWOmx)9OX{VjoHYN2lC%+sd zSsM|fgLPaqXALQC{kWgQ8LH`~@p34@!Cw8TtiV%+!s_avcjqst%OG1hGd)Mh(DY7c z-FyA)$-!!8ip6ghB0@KAi)XSsx2bMpuCQCGEUjju<~v})hVsLc*0J4=OuoJqqWg!C zePTYP^sf6v5TYfIjKBJ zcZ-yj)v|1~EptwU_?SdeELT}$BtJ1OWd&2A{KANlH-pI}v=g<*#iUEjCB%qKU}iC*j~hfgKcA@VniTj*I~-(fTG!Dp)3J^5r zb_$n#)P^N&w4Fo>67Z=HDlMy^T5XnL-5g=;Z+xFZQ#rnBy1agKAg;WIO^!z*_Mczy zh<^If^Fs+Sb*9oAl0DRNJzkCcdv}2oK>C4jbtiH^W;Q^(I>3U0fo&ct|GBb9%m(aV zluQKGhHK+F!X4eF%%`)`Fc$Q~3p$H$;=07U&h3C+QfT?+KrGiex%cwz_BmQjH$A^N zjtpOz9~MOe_vB~F+;j5YaRChU*g+!I?u)h5(8(h4_b$d{6@^(!IIqhxr;(T8vou;u zye(sGUEQtyea9~yO5X8!m9jx{I#9BvX{tNRv>^sl4V+t6Qb&Zj}9Xok^qYgX?-D~_u z&SP>owdd%s2XeRdcn6%{a_Lz}Sa}b2xV^AXH@SVYX7D-L?fdJzelud-Slkm~mhDi> z+-`}*XCskTPfydoQC;mLY41x~&A6mYZM?SmOonG=CX*2!G^gnK4s4+N=QZc*^J&@? zHGhs9Sp1%Pcao0$L5X@r(x+n=kMD*<2Zo>R;#r8yI$MA31Vo}g9!f9yx*i$%q_exQ za^07~fLBA4r##w4IK*SpA|{4cODIKD3y^U5@hGgjoyL+LSLZ*aSNTh%hiU0DkH5SLd-6`4{(K;sn z*~*h`bFBVdgRD~e@S;xU$_5P=hYT5CHaeOP6%r|~;K2j$;ePd`UFVOdTpulyxozB0 zuwvoia=80jhs5HF=JxF=NnY0kb)o`o9Sls&1hh_RnvwS&soEU)hAB*5h)y{WTYN?i zLk)y)?%10X^1C?ZliPzMq;#J!2@#bazixcf8~dVWJ}vjf>=?aROU~Vq01m~H4ILU| zUnVu4t~zMWwelP{EqbE4@LQW~n%ww-j5h2~eXJDKxwYhOr_G&AvPrwsf=%;qC>GX9 z2CtiRy}pyUdJ!%TTD$e929WhVL34?@;{}pyH8%@ zbN~FFWvV^v_4O9os1EZOQ%%idL27p>V$sQwtj@$UKj@ugoY9Y7+(@TQy(z=(8>pO* zAEx;2+zYb+G&lGv9pI-UUyBa!zMw_DCY~WcL&Ha-qoHn=v{bt}utWSV<3Af%mTx)W zi_DAe1a78wB}?v~55<1!GN~vXUq{X*hko9e`^10#aqNYoORW*Z?BRBA?p#cYwY;)2 zmgq*Wx1C=@>hHl&hQ@2HF}=sO8Lf5{m9UXRx4trt_r?}n_O*%BF(hmZ)y4fS*#F1Vu3-t!mA{SY6U2!$U;(NoKqfU-|I{ zS+3vdxo(^8+<1FO@l%0bPQdM1*N(}gZd&EPIp(y6>;4JGTZ^_?tbS^%{xsFEw*Sxj zcq#qVy=(dJJ=enKyORB}XC||}sGK&-A~!3}&+sX6(jAmWQzuKm(kdx zh0MjYPjl03IsARyD98D?ZLc$CIpWS{uCz)Y&Rm)5np<(I=O_OkTgjT#(n6a}def?= zN>4}PR+nVoXWNWb%#98lp<5f1=NlrkR3`yTgU!K#Mqy}ZOs*_9fATml%*)8%MD*&m zUtf3vOXEXg2L~ECj9mC#4g}w&uX(ihSjO*(bBLxiy3r}gT@A1ARX#dAU-r4SNif98 zmqG7fveB|gkxaXm7U|I=HPWARIx&$V5AR%feW;sO?9hx|)*u&4h7kX(R%GuU`6N%r ztUty!8JUs;*{fejJ*eZlyuS3+p8MVqm?Dw*(d>|Tj#=9M0@c&MFXW9;z4%LCDQoU( zw>Wgr^T=h%Lfa3-5tt^;$|}aDW5QrCBSD)L8yTw3{_hDaGU4jBL9kS;>LWju%AUv^ z|GIst`tC&%zZ~byHdZpP%})*KSev}QiDdSC{bS;X=`~98*J@Ur&3U8shUL%Yn%jJ; z`{WK#Ue7wzJg<|`U9vRqb54)oqe-(3nu}!Lr}Qz0BksxL+zZhe_v(Ct!t~x`suyi_ zKc-zKD`3UVw)@7l+b!`kI2aVdFHEYt@ zZ_K3lO}~0ONn4j$e17F}!RG2d^>|k|jWSs>e)ESH)J(~LvkUF)H@{DHGS=EM3l-`z zIX6iEXqZ}gSmi8M#Yjgs|3rnU(0m zV-BqOlfTWZxSK_?8p54<3X_7Awtjn+G~Du^owgUD8}pua4}bW^|7ZDgtHHvVyi z$)!4+azxi@3 z#H6otw-7br&|RHMO0eX+uz0S0{(JAss(giJ$>1ByN|t73WvIu%BcD>dF^B2)AQl-I zm|k`>Re zm)hb-_PL~o>u!I(akMRae`1?Rrh3Q6;w$L81m$+vz`*>BdTbW13u==`s9>*OXQXgx z9ErWOo%-P3v=N8qrQd>cYK{Ffa<1NsTV)mfZ)gpv#0u)PuPW&N`xi_}r7XO3RIDW8 zYvx99Aku|@zG{qFF)!_(uV)GjwB&#Pmu68*?rl0eMW>%#K*Iuvh{k=es{HN$7xML~ zd)8^UN5;lt1UFnQ4jP>GgC`4qjfhGrhUu&})t>`FTPeyCxwcE4@%vwN01!i zXb#md1MTFe5^bAaUPb@)R}Bq(RAye4URSL>w==&^@x8lth$nv=B;mj%%+HA8iugDq zV0Vd%*~}*LkKWUnp@7b<)%Pprd^bUM9=L z4T=}Y(z@s3wHh8g7xETD`MGL~1Z5ka<9v=JAqtM=Nq8Q9%=Hv4NdSmCecifI0+lxkZ zwCST$5I=xlmn)Ulh9{ zOpoKIqHji!y$NClGaHeaU3eA{XKJNl9@rgrv3z#WZ0| zryCO;9UdN@|Jumf8m0mg>|ySua*6u4p|eX&)G;>u7B{=GbB1bUZf-u;9xZsp*7on_ zkbHXRx^X|9DZ7FEZoVUlb%0h7kHru{ogWWx3K{d>RLX6Kj)Z6P<}=W?Q@H5-?}I(Y zOc^<8X_HR+HFo1bu`%3O$I!5=tAHn4Di&m@0jis>jC) z7N`EpmjFmc!4jKC&Y^YyI-YPLQ3Rj?OGTNU(_* zxrC-!D522n14$NqNAJI8zieV;)P}Ht3m+UBB8(g$Pe3Sr?}3SKFc5~NVh8$0A3WHz zZCf(bmZFQI2Qc~uza4{EUC8Q%36E#|xg#S4JY>#R!9 z5@MS|xt4VMc6N65PYe{mEF{VkIUsj_vknM^So%P#;76Aou=-c`%hg*Up`lnBU(hhl z?+dbS!zQ6Z%aULf0T4oHTXBD%eWR*s84Ss%$0zo~?rrHQZIC_syX58Nac|g#j~_g+ z#BK@Bgm+H`E*!0gJE`b5DZ!98xKkL$-lAPF!E8|IdhlQ3P&Bu)N=i=N#?u^HP+i?y zU%yjALZ4U_Q?NULKP(oo@fr24w=fZ@s=VLONiQqoB;pjcMh2xfKwI zUxy?9lBOp8+m)V^wM;vdEuVkDB#txv&(^G1iEzN;0d{m6-Br&xV7`u^x8!>Yt+doO z9Cs6pgf|^VBF%V23lc&;u7nH`_>(WS=ooik&?N|Z)4nele~_C4%KrHq5ypnLA=>iLN&Y=U`uU zHSvfD2PS(ngphZ|t!%^)$HA+-m+iBCzkWQ0&`WW?84+=ibmr^FCa_)VEL&-<{V{fmuPz;>(czF$3HO$R9QwGq%Vl8PQ$WEzv1nDhKi`YbISla_3 z6VLgYiY2V%)XY)Q07V`;u=~4!f#U&ZS;WP~VGu4Xiyt)K@2k0lw+YE!BhJV7@KE?9 z`A7g)phdcGUBNB|UqwDD8ta3(V9l75p02KXBvWJ(T{ehEf;uJ~3!`tg1@k4$60ru0 z13@P)zyqCWkZ#*&V|Ait}dSqlIo~Mo=4yGva+&(!puRG z_@R(H`Hg{&&UqMhum1g|DjBa=`?Rpo6EbS-kkHUj%zOffj{ou7tP@QPOTz6%#T!T=KgJxs}>Otfs4$OzGEiGN)la)p}dQd%@i1s7vo<4m1 zm>IKiYA-*{*QJ~$JV&8n!ARj8K0{a6Tn&L^^1)|(eI=x%YOzSshaYSA!Z6~-4b03n zM{N1_^(!kGT6yp%H?CcK_2$i^(o)d4@7mkz?r$m~hQY_hq5B%V;^nv}u&8@voT;_f zbY@NCG5tP#USA~t!30q}Dw8~p)Lpi~7x$^BN9N=+ zn5{vf@c#XKSiHqOV&UB;?`esHAvKlPwxLfYS=KF>3%y-LmR(SwH+B+To=Bg3eSLAL zVW`nZPx*(ri0kC^87O-xkEd|o+b&DMYG2f-~oZc zqoS&ci<5Kk5$y3=3_sS_U-=ywmXV8G3(b&itwzx1A5_pw6LH5P$9+nQiJ{4g7+*2z zp1SoRl-+n;%fEj^Lf-KHeN4q9J{s)^yT!yZM0ELB=O;UfX(aQXaQ0Z^{xd`p^*LEt zpE;BeMucLkguCWP&!4C#p6jpRLy2xoG}i!wLx1yt@PU304Nc9GZqJI${;4UwC)B3q zW_O%}efkj@xuA95vn-gJn!+0=fk{|H;2qo{vGcFodW(z`4@I~5DNb7G)$s;kEefIN z_)lZCAQ(yGY8HS0Mstd+$A{|`x)Pi?^_>ww%2Qf#J7@#DVSytRJ}R)6=*Mv>Rccwd z`saJV{KeH@wX5$U$m!l_^l5ovtdH!Nl#VtX>D6hpWCQU`#d-(h9BOjQcol1yi67pa zo1HT-$|fR0FYY%OTU5OXqA0IO>G=1ik!qZJ5U;vFDYFw*Qi4yYXM?732d0&Dbas09 zc)dJ{Ga#p(!O}zJ$iZt@U86lz_d#(K%$Hvfn6CHS69m64GevpksGyqx5X||D7gD}@0Hu%AziA4e%iu=t^Fa)d!gBn^mdbJLqw?~Km?>*eb zDMg+OTo_Ftd9I?t3{&CPI7W_5f@>nqoy7f zi$nO2Iq%_zM?`Hy<~!?v{z2I76vOWarYg|6SLlV9iGAzH+w`Y?QRoS(-p7!>zI}5b4Ff)547swXT2%TKq$p)mN zvztsupVkqBqg7uRKEAU?&KK5d)HZ~g#4tjDhm2pENWURDZPv%0Ad?`M4^O;yw7dUM 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 S=6=@_SD~Y6pixA&5B@)bl)8KX diff --git a/index.md b/index.md index 5be10d6..710f7ca 100644 --- a/index.md +++ b/index.md @@ -28,7 +28,7 @@ All versions of Julia are supported, on Linux and Windows, and the functionality Similar, but much newer capabilities exist for [**Intel GPUs with oneAPI**](/oneapi/). Currently, full-featured kernel programming capabilities are available, but there is no support for vendor libraries such as oneMKL or oneDNN yet. -Maturing support exists for [**AMD GPUs**](/rocm/) running on the ROCm stack. These GPUs can again be programmed in Julia at the kernel level or using high-level operations on arrays. Latest versions of Julia are supported, and the functionality is increasingly used by a variety of applications and libraries. +Experimental support exists for [**AMD GPUs**](/rocm/) running on the ROCm stack. These GPUs can again be programmed in Julia at the kernel level or using array operations, but these capabilities are under heavy development and are not ready for general consumption yet. Experimental support also exists for [**Apple GPUs**](/metal/). Array programming and kernel programming are both supported. diff --git a/rocm.md b/rocm.md index 6e3faa2..f8e7f68 100644 --- a/rocm.md +++ b/rocm.md @@ -18,36 +18,19 @@ title = "AMD ROCm" The Julia programming support for AMD GPUs based on the ROCm platform aims to provide similar capabilities as the [NVIDIA CUDA](/cuda/) stack, with support for both low-level kernel programming as well as an array-oriented interface. -[AMDGPU.jl](https://github.com/JuliaGPU/AMDGPU.jl) offers comparable performance -as HIP C++. The toolchain can easily be installed on latest version of Julia -using the integrated package manager. -AMDGPU.jl makes it possible to program AMD GPUs at different abstraction levels: +Julia support exists in the form of a single package: -- by using the `ROCArray` type, providing a user-friendly yet powerful abstraction - that does not require any GPU programming experience; -- by writing ROC kernels, with similar performance as kernels written in HIP C++; -- by interfacing with HIP APIs and libraries directly, similar level of flexibility - you would expect from a C-based programming environment. +- [AMDGPU.jl](https://github.com/JuliaGPU/AMDGPU.jl) -The [documentation](https://amdgpu.juliagpu.org/stable/) of AMDGPU.jl demonstrates -each of these approaches. +This package contains everything needed to access the HSA runtime, program GPU +kernels, and utilize a user-friendly array-based interface. +The stack originally was divided into 3 separate packages, which still exist and may be of use for interested users and developers: -# Performance +- [HSARuntime.jl](https://github.com/JuliaGPU/HSARuntime.jl): interfacing with the HSA runtime +- [AMDGPUnative.jl](https://github.com/JuliaGPU/AMDGPUnative.jl): GPU kernel programming support +- [ROCArrays.jl](https://github.com/JuliaGPU/ROCArrays.jl): array programming interface -Julia on the CPU is known for its good performance, approaching that of statically -compiled languages like C. The same holds for programming AMD GPUs with kernels -written using AMDGPU.jl, where we show preliminary performance to approach that of -HIP C++ on a memcopy and 2D diffusion kernel: - -
- - - -
-

- Preliminary performance of a memcopy and 2D diffusion kernel implemented in - Julia with AMDGPU.jl and executed on a MI250x GPU. -

-
-
+At this point, the toolchain is a work in progress, although it is quite +functional for simple usecases. We only officially support Julia 1.4 and Julia +1.5.