diff --git a/src/docs/high_level_design.md b/src/docs/high_level_design.md index 6168b7ace9..7466e0c04f 100644 --- a/src/docs/high_level_design.md +++ b/src/docs/high_level_design.md @@ -8,7 +8,7 @@ The [Omniperf](https://github.com/AMDResearch/omniperf) Tool is architecturally composed of three major components, as shown in the following figure. -- **Omniperf Profiling**: Acquire raw performance counters via application replay based on the [ROC Profiler](https://github.com/ROCm-Developer-Tools/rocprofiler). The counters are stored in a comma-seperated value, for further analyis. A set of MI200 specific micro benchmarks are also run to acquire the hierarchical roofline data. The roofline model is not available on earlier accelerators. +- **Omniperf Profiling**: Acquire raw performance counters via application replay based on the [rocProfiler](https://rocm.docs.amd.com/projects/rocprofiler/en/latest/rocprof.html). The counters are stored in a comma-seperated value, for further analyis. A set of MI200 specific micro benchmarks are also run to acquire the hierarchical roofline data. The roofline model is not available on earlier accelerators. - **Omniperf Grafana Analyzer**: - *Grafana database import*: All raw performance counters are imported into the backend MongoDB database for Grafana GUI analysis and visualization. Compatibility of previously generated data between Omniperf versions is not necessarily guarenteed. diff --git a/src/docs/introduction.md b/src/docs/introduction.md index 6b39d4088a..f0e3864d11 100644 --- a/src/docs/introduction.md +++ b/src/docs/introduction.md @@ -10,7 +10,7 @@ ## Scope -MI Performance Profiler ([Omniperf](https://github.com/AMDResearch/omniperf)) is a system performance profiling tool for Machine Learning/HPC workloads running on AMD Instinct (tm) Accelerators. It is currently built on top of the [ROC Profiler](https://github.com/ROCm-Developer-Tools/rocprofiler) to monitor hardware performance counters. The Omniperf tool primarily targets accelerators in the MI100 and MI200 families. Development is in progress to support MI300 and Radeon (tm) RDNA (tm) GPUs. +MI Performance Profiler ([Omniperf](https://github.com/AMDResearch/omniperf)) is a system performance profiling tool for Machine Learning/HPC workloads running on AMD Instinct (tm) Accelerators. It is currently built on top of the [rocProfiler](https://rocm.docs.amd.com/projects/rocprofiler/en/latest/rocprof.html) to monitor hardware performance counters. The Omniperf tool primarily targets accelerators in the MI100 and MI200 families. Development is in progress to support MI300 and Radeon (tm) RDNA (tm) GPUs. ## Features diff --git a/src/docs/profiling.md b/src/docs/profiling.md index b0b56dc91a..e73c8d4654 100644 --- a/src/docs/profiling.md +++ b/src/docs/profiling.md @@ -232,20 +232,28 @@ drwxrwxr-x 2 colramos colramos 4096 Apr 11 16:42 perfmon ``` ### Filtering -To reduce profiling time and the counters collected one may use profiling filters. +To reduce profiling time and the counters collected one may use profiling filters. Profiling filters and their functionality depend on the underlying profiler being used. While Omniperf is profiler agnostic, we've provided a detailed description of profiling filters available when using Omniperf with [rocProfiler](https://rocm.docs.amd.com/projects/rocprofiler/en/latest/rocprof.html) below. + + Filtering Options: -- The `-k` \ flag allows for kernel filtering, which is compatible with the current rocprof utility. +- The `-k` \ flag allows for kernel filtering. Useage is equivalent with the current rocprof utility (see details below). -- The `-d` \ flag allows for dispatch ID filtering, which is compatible with the current rocprof utility. +- The `-d` \ flag allows for dispatch ID filtering. Useage is equivalent with the current rocprof utility (see details below). - The `-b` \ allows system profiling on one or more selected IP blocks to speed up the profiling process. One can gradually incorporate more IP blocks, without overwriting performance data acquired on other IP blocks. +```{note} +Be cautious while combining different profiling filters in the same call. Conflicting filters may result in error. + +i.e. filtering dispatch X, but dispatch X does not match your kernel name filter +``` + #### IP Block Filtering One can profile a selected IP Block to speed up the profiling process. All profiling results are accumulated in the same target directory, without overwriting those for other IP blocks, hence enabling the incremental profiling and analysis. -The following example only profiles SQ and TCC, skipping all other IP Blocks. +The following example only gathers hardware counters for SQ and TCC, skipping all other IP Blocks: ```shell $ omniperf profile --name vcopy -b SQ TCC -- ./sample/vcopy 1048576 256 Resolving rocprof @@ -283,7 +291,9 @@ Log: /home/colramos/GitHub/omniperf-pub/workloads/vcopy/mi200/log.txt ``` #### Kernel Filtering -The following example demonstrates profiling on selected kernels: +Kernel filtering is based on the name of the kernel(s) you'd like to isolate. Use a kernel name substring list to isolate desired kernels. + +The following example demonstrates profiling isolating the kernel matching substring "vecCopy": ```shell $ omniperf profile --name vcopy -k vecCopy -- ./vcopy 1048576 256 Resolving rocprof @@ -318,7 +328,9 @@ ROCProfiler: input from "/tmp/rpl_data_230411_170300_29696/input0.xml" ``` #### Dispatch Filtering -The following example demonstrates profiling on selected dispatches: +Dispatch filtering is based on the *global* dispatch index of kernels in a run. + +The following example profiles only the 0th dispatched kernel: ```shell-session $ omniperf profile --name vcopy -d 0 -- ./vcopy 1048576 256 Resolving rocprof