From d58adf96da5b18d02397b6cfaeb138293653ccd0 Mon Sep 17 00:00:00 2001 From: "systems-assistant[bot]" <221163467+systems-assistant[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 13:52:39 -0400 Subject: [PATCH] [DOC] TUI kernel selection (#94) --- projects/rocprofiler-compute/CHANGELOG.md | 102 +++++++++--------- .../docs/data/analyze/tui.png | Bin 80849 -> 0 bytes .../docs/how-to/analyze/tui.rst | 53 ++++++--- .../rocprofiler-compute/docs/how-to/use.rst | 18 ++-- 4 files changed, 98 insertions(+), 75 deletions(-) delete mode 100644 projects/rocprofiler-compute/docs/data/analyze/tui.png diff --git a/projects/rocprofiler-compute/CHANGELOG.md b/projects/rocprofiler-compute/CHANGELOG.md index 33addf4b52..dee38fcd7e 100644 --- a/projects/rocprofiler-compute/CHANGELOG.md +++ b/projects/rocprofiler-compute/CHANGELOG.md @@ -23,6 +23,39 @@ Full documentation for ROCm Compute Profiler is available at [https://rocm.docs. * Add support for analysis report output as a sqlite database using ``--output-format db`` analysis mode option +* `Compute Throughput` panel to TUI's `High Level Analysis` category with the following metrics: + * VALU FLOPs + * VALU IOPs + * MFMA FLOPs (F8) + * MFMA FLOPs (BF16) + * MFMA FLOPs (F16) + * MFMA FLOPs (F32) + * MFMA FLOPs (F64) + * MFMA FLOPs (F6F4) (in gfx950) + * MFMA IOPs (Int8) + * SALU Utilization + * VALU Utilization + * MFMA Utilization + * VMEM Utilization + * Branch Utilization + * IPC + +* `Memory Throughput` panel to TUI's `High Level Analysis` category with the following metrics: + * vL1D Cache BW + * vL1D Cache Utilization + * Theoretical LDS Bandwidth + * LDS Utilization + * L2 Cache BW + * L2 Cache Utilization + * L2-Fabric Read BW + * L2-Fabric Write BW + * sL1D Cache BW + * L1I BW + * Address Processing Unit Busy + * Data-Return Busy + * L1I-L2 Bandwidth + * sL1D-L2 BW + ### Changed * On memory chart, long string of numbers are displayed as scientific notation. It also solves the issue of overflow of displaying long number @@ -38,7 +71,9 @@ Full documentation for ROCm Compute Profiler is available at [https://rocm.docs. * CLI analysis mode baseline comparison will now only compare common metrics across workloads and will not show Metric ID * Remove metrics from analysis configuration files which are explicitly marked as empty or None -* Change the basic view of TUI from aggregated analysis data to individual kernel analysis data +* Changed the basic (default) view of TUI from aggregated analysis data to individual kernel analysis data. + +* Updated Roofline plots to handle and apply kernel filtering. * Update `Unit` of the following `Bandwidth` related metrics to `Gbps` instead of `Bytes per Normalization Unit` * Theoretical Bandwidth (section 1202) @@ -71,39 +106,6 @@ Full documentation for ROCm Compute Profiler is available at [https://rocm.docs. * SIMD Utilization * Clock Rate -* Add `Compute Throughput` panel to TUI with the following metrics: - * VALU FLOPs - * VALU IOPs - * MFMA FLOPs (F8) - * MFMA FLOPs (BF16) - * MFMA FLOPs (F16) - * MFMA FLOPs (F32) - * MFMA FLOPs (F64) - * MFMA FLOPs (F6F4) (in gfx950) - * MFMA IOPs (Int8) - * SALU Utilization - * VALU Utilization - * MFMA Utilization - * VMEM Utilization - * Branch Utilization - * IPC - -* Add `Memory Throughput` panel to TUI with the following metrics: - * vL1D Cache BW - * vL1D Cache Utilization - * Theoretical LDS Bandwidth - * LDS Utilization - * L2 Cache BW - * L2 Cache Utilization - * L2-Fabric Read BW - * L2-Fabric Write BW - * sL1D Cache BW - * L1I BW - * Address Processing Unit Busy - * Data-Return Busy - * L1I-L2 Bandwidth - * sL1D-L2 BW - * Analysis output: * Replace `-o / --output` analyze mode option with `--output-format` and `--output-name` * Add ``--output-format`` analysis mode option to select the output format of the analysis report. @@ -118,32 +120,30 @@ Full documentation for ROCm Compute Profiler is available at [https://rocm.docs. * `--list-available-metrics` analyze mode option to display the metrics available for analysis. * `--block` option cannot be used with `--list-metrics` and `--list-available-metrics`options. -### Resolved issues +### Removed -* Fixed not detecting memory clock issue when using amd-smi -* Fixed standalone GUI crashing -* Fixed L2 read/write/atomic bandwidths on MI350 -* Update metric names for better alignment between analysis configuration and documentation -* Fixed an issue where accumulation counters could not be collected on AMD Instinct MI100 -* Updated Roofline plots to handle and apply kernel filtering. - - -### Known issues +* Usage of `rocm-smi` in favor of `amd-smi`. +* Hardware IP block-based filtering has been removed in favor of analysis report block-based filtering. +* Removed aggregated analysis view from TUI analyze mode. ### Optimized * Improved `--time-unit` option in analyze mode to apply time unit conversion across all analysis sections, not just kernel top stats. +* Improved logic to obtain rocprof supported counters which prevents unnecessary warnings. +* Improved post-analysis runtime performance by caching and multi-processing. -* Improve logic to obtain rocprof supported counters which prevents unnecessary warnings +### Resolved issues -* Improve post-analysis runtime performance by caching and multi-processing +* Fixed an issue of not detecting the memory clock when using `amd-smi`. +* Fixed standalone GUI crashing. +* Fixed L2 read/write/atomic bandwidths on AMD Instinct MI350 series accelerators. +* Update metric names for better alignment between analysis configuration and documentation +* Fixed an issue where accumulation counters could not be collected on AMD Instinct MI100. +* Updated Roofline plots to handle and apply kernel filtering. -### Removed - -* Usage of rocm-smi -* Hardware IP block based filtering has been removed in favor of analysis report block based filtering -* Remove aggregated analysis view from TUI mode +### Known issues +### Upcoming changes ## ROCm Compute Profiler 3.2.3 for ROCm 7.0.0 diff --git a/projects/rocprofiler-compute/docs/data/analyze/tui.png b/projects/rocprofiler-compute/docs/data/analyze/tui.png deleted file mode 100644 index 60f7c2b6f09b4659c62f2ef6d44f909a5ba5ce36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80849 zcmd432UJtp*EWvhs52I@QKXIqP^w4=A;TylAfO^8Q~{|W!3cz&I5s*cND&CAh$s*u zHPoOZByRZ=?0xor_I~yy z{<5{%zTJ|$g@lCmnO{7ARY*vfA|$k{`j?%8E6k56iGstn;HzeT2$lCr&k4T#>}z6W zA|zCix`*qrL-76An-_t>LPBElU;k}0zk1?}kPyGf{JhDvaJPl=U$d_bA$57~d+u1= z{l(+Z3%j>JfBZ$V&9Al9``98!QnUYt+X>A-&b&guI+XQlU2#L<)1`+=&Xd?ySB-c3 z;>k^kS{5;SJUQT>Ez7w{8#D z(glGfi8rFQ-np*&SKZbtm$!SkY`ya8&(msKuYCMnLVW9$fXmmeUaeFBp}mNiGL;0J zKJ0DZXShtCN!B&@`2Qrz8d zS)DxtFx>Y0-TpvwI_0nT2Bwr$MSL>`AkHZ3wf^4bjh!RApHx=k{}CjC8OOjS99V!e z4Ps_0o7V%HjJ!=$toj!A)7NIjjK;LPkm0)d(ooyIoWVOQd%w5WI!|8zT*Rcjk33JE zTZ|pR*HP!09CdsR3!52AcoCfUk>5H}1%zcg>c}t3Faw*?W#G`YL^+p`n;`+GmtQA7 zsKM?+8vQ0r)c03SG#4R@rDAho2y?9|mch4Cy?t5Hb`MIF3G*j$H}kJF1>QOvL5q{P zVl`4bj={=hacAR3ibwIxCDd?h24a8vH?iMFb>7aMtbcFlv&-AQb)b!bFJ&di(Rimd zX5&RBa zdrhpd);;}?=|LiON8z{H%PagyPoTUnWx>I(*P55xP~b)e|LleQ0aYccukFx1KV6q2 zVS9E{WLZ_=3uZ=ym~l|9kwVHkD{L9991yNLYJ^;kUW1o>mdzqw0xi)QA_-5TnW*;y{8&+L6qbopsxFE9&^)n4Sl%PYRb6KU^U5hr<BB{V(dg77*O0bun*^fqmjZqrOtsI<M>64%f)bJFZf8!#_0AhUt*f!bR zm+)DUipRNadbP8n&X>9bw@tog#*&3kweX&Lq~g1(00~n^=Izd9zt8&ps%cH2YhOJV zx5PS^ZXJtD-F0nu@Ng-%AM0I-&~i;{(|7P$j=d8+)TySECiqz~!>@w0G8_@#F^n-o^2Y9bI3bM}GH zXSxXnE4iE|a-S5+0!-(!p*t*;vS!;$ba$MU(pX)izrks|ua8@dkx zx4G}qq8rfA!3%TP3#ImWUts#iuwTpKm4Wbx?g+3;H&@TIQP}9Y87!se)3`6i!Cy#+ zD4UA;fZr+ho)|>)%hP6B0pOw-bUq<)G^fp6RRw*b&@t21(m~Dt|ewo*I27>XPbEq_FoGTyuj3(8e}8m`;;L zEyY`j>LjVV5RN6b@B`b2W=N0ULwSwd*~W^>u4E(nAfdxKLg#B z_(6u8^Dy;FC@m{@@YlPO;-gn4M-m~gR=6FY-1J=Pm%2p}&1ISUB~a`EMfWIYh-!{q zr2A?rQ4XMGplH%ts(69F%@-fWf~2D_<~XBu^P9CXxS$he5jFMVc4ajefI)Vn*%m_< zg$tWV8GE$Oa5;TLtWG%e%35RYS-inE(!Qq5Rnp+9J4PthRZ>KF;Rwq9QnIrR2VDoC zsSTF%_d)xvG|m`XUZ5IVLb@V{SCijiTKDa$ErXX!c@(_U#ar#F?TAgGeKAny6>unx z$YV3fQU}S66-&)$wH}a00c+$_w+eRo;&y1aRQFJC4^Ac+%XrQKWE0(uw3TUP^X)OM%Tvse3i(99B3=9m|&?N!*YTJo5_ z^*q9J;fNg-Q#;n9`}|5N1UeEXoMIH_f1qvJE337;B{hYE>*)x)cJ)^KuTYmo%@Xgb z%6Fy5B&lOv1VF(){n>?WP)Fh@vl}fNpPI7ik+)fc)7b2I1SJEiw#BbZ)WiwgrYM?m zD^MEaUc9i1N=WtL>hn0PLxUdPyJNr+G$2{ntQCZe9Kdq>zBfh&%D8?I!kE_lvonk36}HgUG6camF1Lz}qB#T?^4@w-Y=Sks4JKMMns z%M{Tc*tLL#2kRY2MNN80Pfsp}T;_(~e1S-bfEPhBzCJkYLVDd% zEAY3qeSt&;h-8j4wNfbH7{-kwO$I!8Y^R5!H(&hgSt?nsugF=fQg!hFK#kEAgb`^M zLEG#=2Z0G5pbSn-H03S{Yi=%m&EC8*O_O!e_}r})425v0)hOaJ_r$Mb>PTrD6mn+# ze5M*)7bH4aHX@ITsy?L*`;ET)rS@fHo5*zI?r2 zy6e>gtyU*YNXbKfEhApkIJ@BDR$Bf0Fkb#O$skD?mQtf)hIXPFK0hnh?5n%fb6O<$ z7P>j3x?|K7)D?;#(XT*!d-Xd4{igq_UiCOSyYu$gat2(G0U9a`%Et91EVcpj#GR zoLM0-#Lvm7^ue2sr7(8q<1Dw;02Pa!)#KVJR%q7$0>M!KzP2SU_ z#1-s~cjh{2VHezYt-mO zUxvf$>BB*)mW^riPrYNXKq-HSGXrq59ZNv$nwl-iaspH{noNpfXm7L|L;pA!0zT*}a#opq#i#vl^E^ zI(bK>CscWFqe<~X`F=I)L+h)e!>z~f^Kz+?^h1h_Opa@B^Po?&+v}_0sG9Cw?c&r4 zPKO6E=w*vY>ShT-8WWbgqN#PI$@ZWgM6VV^I7S`;rOuA%g^@f`M~;)zSagTR5NIG$N}U9EPs(?W{S9LMY}s{nG%cGq_NtDii+P;dtSiOIC?~gzbefl7 z*GBa*m(4G)R~UBUc}r`*vH=zq2PEm3sE|%NwdW$)^u|q8ik7eg8)e_77 z7kQUbec`zU%lypdTGzF>H15M|V0Y)EIIM;tYyIVwfnbz+g^X~5tRZzx&L&;}l^c&m z;)cUIP@}$8l+=uwo6BD6cz}5MMd}p~`?Che5WF!dxkPg|x?b||t?`X3?VK{}mUG`U zR_No{OA$)1VG&7H5hE$li5t z-8yoya2h z%H_K~oA?Nh(XAGC#)!ZH+G$B{>FC8no6D}RVZJac<(qvR>LDgR+95fonh1bLPxlof z&}CkS^w?wDpf?*y#90)_^R1J|r#mW~6A6NVNS0gh=P2XcqUNW&9n7gJTiO>!^(JL) zfmNzQ9J6a02JtG_RWKmZEC0xmLQrm8YF6t2eGH%P?^b7em})Z}k~q<*(2|?z$u&yF z(}DpVVbn_zOl-I(Zpo$8?(sqfzx*U7z`Th$f`WG0B2q=tj_RxPj`Q7un#P^Hf?*`; z)H>!w9A|VPd}b|nvd^;e&<^DgY}I6k;bIcUEl*N2>qLQO1fxk$UhWN;q?MKz{=96S z1}JDyzhI->6B&$&=~tAJ;VmrJym0wK%3g8;3bB#dTDrQ!xcaC{8-iU&$^D=u62w-1|BN0w9L+6Qi${ zZ~;kyBgRoR@spy0K)A(M=G#+m?LiYX46dJVe5`Z+leK%MNV1l{{YZ=Y$FT)}W@0CQ zr$*E*7yYB4;l|2<%;3qkfc)j!QT8WCXq83i&OLdIrX!dPwD*(Z8AM*q{NRE98gOOM z5srw9Ze5tY)4N*W!phK%?w4!c%#ZkmkxDa^ReqOb7(WXl-!hT zi!Da4h=2Q)LZRauuU%wmz*r-2!|a#x@sX$xb58|Gq47c~iSAypJ|4~-=If^L0K=_s zMwP3!?Q2ymc;P{6>SYeqT2Tu9gWCSG>v?_yeL`$pOH$s{EK4zdM65rgk+ewB*J#MO zy)eaELS$ZV^a0s5x*Dr1Se5>A`=uM=Bx>hIX|a#D%oBSfO4D(}Hki37iEMNbJ**#> zdomiEY_O7)-pey_*+}08Z8P;IzVj~{+l?%Ay((lZ*4DjLg3fIh-esCKwS0q@w;o*N z`8J(ztR7Y%X@*CmoG-*oybz}#Exgii&JU=pxB%&H&d(;|0XAK#5Q=pL!$fr3!25>U z&Srlf+`6uk%>puf>U9V6%A(QGYu2fHDi6xVN8no@xudWKx9CH|p`g--ET9Y`_Pct# zsB$RM`tkAW4q} zf>|Wn8N*PAbUc&`9ax$aT;J8+rnSuVjz7W2 ze7>eMT$yIS?8c~cdKC-ODuVb`%#8nOpiYewy$Yr_(hfjB>&JNZA)U`ta6s}#nNxGW-OXV_U`v``fz~Z@mFS~`J>w&N88j7F^t9eF_bUiH@J_pH<|M% zA>;Cqa$ztRX8PddQ?b#f2CvXGu@?`?i5py*?-`o)w9?qqkk(CB^MPg9{1E`QHi%FK z7sPu33${(axivH5{}HC772qFy@P2NC*-A<9 z0;D6

-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

%Dd33gr@Kx|>S=hXU>Y(*k*}S!zD- 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