diff --git a/projects/rocprofiler-compute/CHANGELOG.md b/projects/rocprofiler-compute/CHANGELOG.md index 57b8493e00..b988324881 100644 --- a/projects/rocprofiler-compute/CHANGELOG.md +++ b/projects/rocprofiler-compute/CHANGELOG.md @@ -82,6 +82,10 @@ Full documentation for ROCm Compute Profiler is available at [https://rocm.docs. * Rebuild using latest ROCm stack * OS distribution support minimum for roofline feature is now Ubuntu22.04, RHEL9, and SLES15SP6 +### Optimized + +* ROCm Compute Profiler CLI has been improved to better display the GPU architecture analytics + ### Resolved issues * Fixed MI 100 counters not being collected when rocprofv3 is used diff --git a/projects/rocprofiler-compute/docs/data/analyze/cli/mem_chart.png b/projects/rocprofiler-compute/docs/data/analyze/cli/mem_chart.png new file mode 100644 index 0000000000..b372b6d3ca Binary files /dev/null and b/projects/rocprofiler-compute/docs/data/analyze/cli/mem_chart.png differ diff --git a/projects/rocprofiler-compute/docs/data/analyze/cli/roofline_chart.png b/projects/rocprofiler-compute/docs/data/analyze/cli/roofline_chart.png new file mode 100644 index 0000000000..c0b0883091 Binary files /dev/null and b/projects/rocprofiler-compute/docs/data/analyze/cli/roofline_chart.png differ diff --git a/projects/rocprofiler-compute/docs/data/analyze/cli/system_speed_of_light.png b/projects/rocprofiler-compute/docs/data/analyze/cli/system_speed_of_light.png new file mode 100644 index 0000000000..ead1c873d9 Binary files /dev/null and b/projects/rocprofiler-compute/docs/data/analyze/cli/system_speed_of_light.png differ diff --git a/projects/rocprofiler-compute/docs/how-to/analyze/cli.rst b/projects/rocprofiler-compute/docs/how-to/analyze/cli.rst index 47b39177e6..d923b0426d 100644 --- a/projects/rocprofiler-compute/docs/how-to/analyze/cli.rst +++ b/projects/rocprofiler-compute/docs/how-to/analyze/cli.rst @@ -28,107 +28,46 @@ Walkthrough 1. To begin, generate a high-level analysis report using ROCm Compute Profiler's ``-b`` (or ``--block``) flag. - .. code-block:: shell-session +There are three high-level GPU analysis views: - $ rocprof-compute analyze -p workloads/vcopy/MI200/ -b 2 +* System Speed-of-Light: Key GPU performance metrics to show overall GPU performance and utilization. +* Memory chart: Shows memory transactions and throughput on each cache hierarchical level. +* Empirical hierarchical roofline: Roofline model that compares achieved throughput with attainable peak hardware limits, more specifically peak compute throughput and memory bandwidth (on L1/LDS/L2/HBM). - __ _ - _ __ ___ ___ _ __ _ __ ___ / _| ___ ___ _ __ ___ _ __ _ _| |_ ___ - | '__/ _ \ / __| '_ \| '__/ _ \| |_ _____ / __/ _ \| '_ ` _ \| '_ \| | | | __/ _ \ - | | | (_) | (__| |_) | | | (_) | _|_____| (_| (_) | | | | | | |_) | |_| | || __/ - |_| \___/ \___| .__/|_| \___/|_| \___\___/|_| |_| |_| .__/ \__,_|\__\___| - |_| |_| +**System Speed-of-Light:** - Analysis mode = cli - [analysis] deriving rocprofiler-compute metrics... +.. code-block:: shell-session - -------------------------------------------------------------------------------- - 0. Top Stats - 0.1 Top Kernels - ╒════╤══════════════════════════════════════════╤═════════╤═══════════╤════════════╤══════════════╤════════╕ - │ │ Kernel_Name │ Count │ Sum(ns) │ Mean(ns) │ Median(ns) │ Pct │ - ╞════╪══════════════════════════════════════════╪═════════╪═══════════╪════════════╪══════════════╪════════╡ - │ 0 │ vecCopy(double*, double*, double*, int, │ 1.00 │ 20160.00 │ 20160.00 │ 20160.00 │ 100.00 │ - │ │ int) [clone .kd] │ │ │ │ │ │ - ╘════╧══════════════════════════════════════════╧═════════╧═══════════╧════════════╧══════════════╧════════╛ - 0.2 Dispatch List - ╒════╤═══════════════╤══════════════════════════════════════════════════════════╤══════════╕ - │ │ Dispatch_ID │ Kernel_Name │ GPU_ID │ - ╞════╪═══════════════╪══════════════════════════════════════════════════════════╪══════════╡ - │ 0 │ 0 │ vecCopy(double*, double*, double*, int, int) [clone .kd] │ 0 │ - ╘════╧═══════════════╧══════════════════════════════════════════════════════════╧══════════╛ + $ rocprof-compute analyze -p workloads/vcopy/MI200/ -b 2 +.. image:: ../../data/analyze/cli/system_speed_of_light.png + :align: left + :alt: System Speed Of Light - -------------------------------------------------------------------------------- - 2. System Speed-of-Light - 2.1 Speed-of-Light - ╒═════════════╤═══════════════════════════╤═════════╤══════════════════╤══════════╤═══════════════╕ - │ Metric_ID │ Metric │ Avg │ Unit │ Peak │ Pct of Peak │ - ╞═════════════╪═══════════════════════════╪═════════╪══════════════════╪══════════╪═══════════════╡ - │ 2.1.0 │ VALU FLOPs │ 0.0 │ Gflop │ 22630.4 │ 0.0 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.1 │ VALU IOPs │ 364.09 │ Giop │ 22630.4 │ 1.61 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.2 │ MFMA FLOPs (BF16) │ 0.0 │ Gflop │ 181043.2 │ 0.0 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.3 │ MFMA FLOPs (F16) │ 0.0 │ Gflop │ 181043.2 │ 0.0 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.4 │ MFMA FLOPs (F32) │ 0.0 │ Gflop │ 45260.8 │ 0.0 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.5 │ MFMA FLOPs (F64) │ 0.0 │ Gflop │ 45260.8 │ 0.0 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.6 │ MFMA IOPs (Int8) │ 0.0 │ Giop │ 181043.2 │ 0.0 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.7 │ Active CUs │ 70.0 │ Cus │ 104.0 │ 67.31 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.8 │ SALU Utilization │ 3.78 │ Pct │ 100.0 │ 3.78 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.9 │ VALU Utilization │ 5.4 │ Pct │ 100.0 │ 5.4 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.10 │ MFMA Utilization │ 0.0 │ Pct │ 100.0 │ 0.0 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.11 │ VMEM Utilization │ 1.08 │ Pct │ 100.0 │ 1.08 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.12 │ Branch Utilization │ 1.08 │ Pct │ 100.0 │ 1.08 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.13 │ VALU Active Threads │ 64.0 │ Threads │ 64.0 │ 100.0 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.14 │ IPC │ 0.21 │ Instr/cycle │ 5.0 │ 4.13 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.15 │ Wavefront Occupancy │ 2488.86 │ Wavefronts │ 3328.0 │ 74.79 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.16 │ Theoretical LDS Bandwidth │ 0.0 │ Gb/s │ 22630.4 │ 0.0 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.17 │ LDS Bank Conflicts/Access │ │ Conflicts/access │ 32.0 │ │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.18 │ vL1D Cache Hit Rate │ 50.0 │ Pct │ 100.0 │ 50.0 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.19 │ vL1D Cache BW │ 1664.41 │ Gb/s │ 11315.2 │ 14.71 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.20 │ L2 Cache Hit Rate │ 35.74 │ Pct │ 100.0 │ 35.74 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.21 │ L2 Cache BW │ 1296.31 │ Gb/s │ 3481.6 │ 37.23 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.22 │ L2-Fabric Read BW │ 416.52 │ Gb/s │ 1638.4 │ 25.42 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.23 │ L2-Fabric Write BW │ 292.3 │ Gb/s │ 1638.4 │ 17.84 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.24 │ L2-Fabric Read Latency │ 262.85 │ Cycles │ │ │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.25 │ L2-Fabric Write Latency │ 307.4 │ Cycles │ │ │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.26 │ sL1D Cache Hit Rate │ 99.82 │ Pct │ 100.0 │ 99.82 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.27 │ sL1D Cache BW │ 208.05 │ Gb/s │ 6092.8 │ 3.41 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.28 │ L1I Hit Rate │ 99.91 │ Pct │ 100.0 │ 99.91 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.29 │ L1I BW │ 208.05 │ Gb/s │ 6092.8 │ 3.41 │ - ├─────────────┼───────────────────────────┼─────────┼──────────────────┼──────────┼───────────────┤ - │ 2.1.30 │ L1I Fetch Latency │ 20.86 │ Cycles │ │ │ - ╘═════════════╧═══════════════════════════╧═════════╧══════════════════╧══════════╧═══════════════╛ +**Memory chart:** - ... +.. code-block:: shell-session + + $ rocprof-compute analyze -p workloads/vcopy/MI200/ -b 3 + +.. image:: ../../data/analyze/cli/mem_chart.png + :align: left + :alt: Memory Chart + +**Empirical hierarchical roofline:** + +.. code-block:: shell-session + + $ rocprof-compute analyze -p workloads/vcopy/MI200/ -b 4 + +.. image:: ../../data/analyze/cli/roofline_chart.png + :align: left + :alt: Roofline + +.. note:: + * Visualized memory chart and Roofline chart are only supported in single run analysis. In multiple runs comparison mode, both are switched back to basic table view. + * Visualized memory chart requires the width of the terminal output to be greater than or equal to 234 to display the whole chart properly. + * Visualized Roofline chart is adapted to the initial terminal size only. If it is not clear, you may need to adjust the terminal size and regenerate it to check the display effect. .. _cli-list-metrics: @@ -199,7 +138,7 @@ Walkthrough -------- -------------------------------------------------------------------------------- - 0. Top Stat + 1. Top Stat ╒════╤══════════════════════════════════════════╤═════════╤═══════════╤════════════╤══════════════╤════════╕ │ │ KernelName │ Count │ Sum(ns) │ Mean(ns) │ Median(ns) │ Pct │ ╞════╪══════════════════════════════════════════╪═════════╪═══════════╪════════════╪══════════════╪════════╡