354fe5f52c
* Show description of metrics during analysis
* Use --include-cols Description show the Description column in analyze mode (this is hidden by default)
* Remove tips field from analysis config
* Align metric names in analysis config and documentation
* Add unified config utils/unified_config.yaml
* Add python script utils/split_config.py to auto generate analysis configuration and documentation metrics description
* Add test case to ensure unified config is older than auto-generated config
* Auto generate analysis config and documentation metrics description
* Update CONTRIBUTING.md to add instructions to build documentation assets
* Add docker image and compose file to build documentation
* Update CHANGELOG and Documentation
* Use jinja template instead of hardcoding metric tables in documentation
[ROCm/rocprofiler-compute commit: bb44e90b2d]
304 lines
13 KiB
Markdown
304 lines
13 KiB
Markdown
# Changelog for ROCm Compute Profiler
|
|
|
|
Full documentation for ROCm Compute Profiler is available at [https://rocm.docs.amd.com/projects/rocprofiler-compute/en/latest/](https://rocm.docs.amd.com/projects/rocprofiler-compute/en/latest/).
|
|
|
|
## Unreleased
|
|
|
|
### Added
|
|
|
|
* Support Roofline plot on CLI (single run)
|
|
|
|
* Stochastic (hardware-based) PC sampling has been enabled for AMD Instinct MI300X series and later accelerators.
|
|
|
|
* Sorting of PC sampling by type: offset or count.
|
|
|
|
* Add rocprof-compute Text User Interface (TUI) support for analyze mode (beta version)
|
|
* A command line based user interface to support interactive single-run analysis
|
|
* launch with `--tui` option in analyze mode. i.e., `rocprof-compute analyze --tui`
|
|
|
|
* Add support to be able to acquire from rocprofv3 every single channle on each XCD of TCC counters
|
|
|
|
* Add Docker files to package the application and dependencies into a single portable and executable standalone binary file
|
|
|
|
* Analysis report based filtering
|
|
* -b option in profile mode now additionally accepts metric id(s) for analysis report based filtering
|
|
* -b option in profile mode also accept hardware IP block for filtering, however, this support will be deprecated soon
|
|
* --list-metrics option added in profile mode to list possible metric id(s), similar to analyze mode
|
|
|
|
* Data type selection option for roofline profiling
|
|
* --roofline-data-type / -R option added to specify which data types the user wants to capture in the roofline PDF plot outputs
|
|
* Default is FP32, but user can specify as many types as desired to overlay on the same plot output
|
|
|
|
* Additional data types for roofline profiling
|
|
* Now supports FP4, FP6, FP8, FP16, BF16, FP32, FP64, I8, I32, I64 (dependent on gpu architecture)
|
|
|
|
* Support host-trap PC Sampling on CLI (beta version)
|
|
|
|
* Support for AMD Instinct MI350 series GPUs with the addition of the following counters:
|
|
* VALU co-issue (Two VALUs are issued instructions) efficiency
|
|
* Stream Processor Instruction (SPI) Wave Occupancy
|
|
* Scheduler-Pipe Wave Utilization
|
|
* Scheduler FIFO Full Rate
|
|
* CPC ADC Utilization
|
|
* F6F4 data type metrics
|
|
* Update formula for total FLOPs while taking into account F6F4 ops
|
|
* LDS STORE, LDS LOAD, LDS ATOMIC instruction count metrics
|
|
* LDS STORE, LDS LOAD, LDS ATOMIC bandwidth metrics
|
|
* LDS FIFO full rate
|
|
* Sequencer -> TA ADDR Stall rates
|
|
* Sequencer -> TA CMD Stall rates
|
|
* Sequencer -> TA DATA Stall rates
|
|
* L1 latencies
|
|
* L2 latencies
|
|
* L2 to EA stalls
|
|
* L2 to EA stalls per channel
|
|
|
|
* Roofline support for RHEL 10
|
|
|
|
* Roofline support for MI350 series architecture
|
|
|
|
* Interface to rocprofiler-sdk
|
|
* Setting ROCPROF=rocprofiler-sdk environment variable will use rocprofiler-sdk C++ library instead of rocprofv3 python script
|
|
* Add --rocprofiler-sdk-library-path runtime option to choose the path to rocprofiler-sdk library to be used
|
|
* Using rocprof v1 / v2 / v3 interfaces will trigger a deprecation warning to use rocprofiler-sdk interface
|
|
|
|
* Support MEM chart on CLI (single run)
|
|
|
|
* Add deprecation warning for database update mode.
|
|
|
|
* Show description of metrics during analysis
|
|
* Use `--include-cols Description` to show `Description` column which is excluded by default from cli output
|
|
|
|
### Changed
|
|
|
|
* Change the default rocprof version to rocprofv3, this is used when environment variable "ROCPROF" is not set
|
|
* Change the rocprof version for unit tests to rocprofv3 on all SoCs except MI100
|
|
* Change normal_unit default to per_kernel
|
|
* Change dependency from rocm-smi to amd-smi
|
|
* Decrease profiling time by not collecting counters not used in post analysis
|
|
* Update definition of following metrics for MI 350:
|
|
* VGPR Writes
|
|
* Total FLOPs (consider fp6 and fp4 ops)
|
|
* Update Dash to >=3.0.0 (for web UI)
|
|
* Change when Roofline PDFs are generated- during general profiling and --roof-only profiling (skip only when --no-roof option is present)
|
|
* Update Roofline binaries
|
|
* Rebuild using latest ROCm stack
|
|
* OS distribution support minimum for roofline feature is now Ubuntu22.04, RHEL9, and SLES15SP6
|
|
* Improve analysis block based filtering to accept metric id level filtering
|
|
* This can be used to collect individual metrics from various sections of analysis config
|
|
* 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
|
|
|
|
### Optimized
|
|
|
|
* ROCm Compute Profiler CLI has been improved to better display the GPU architecture analytics
|
|
* Improved `--time-unit` option in analyze mode to apply time unit conversion across all analysis sections, not just kernel top stats.
|
|
|
|
### Resolved issues
|
|
|
|
* Fixed MI 100 counters not being collected when rocprofv3 is used
|
|
* Fixed option specs-correction
|
|
* Fixed kernel name and kernel dispatch filtering when using rocprof v3
|
|
* Fixed not collecting TCC channel counters in rocprof v3
|
|
* Fixed peak FLOPS of F8 I8 F16 and BF16 on MI300
|
|
* 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
|
|
|
|
### Known issues
|
|
|
|
* On MI 100, accumulation counters will not be collected and the following metrics will not show up in analysis: Instruction Fetch Latency, Wavefront Occupancy, LDS Latency
|
|
* As a workaround, use ROCPROF=rocprof environement variable, to use rocprofv1 for profiling on MI 100
|
|
|
|
* GPU id filtering is not supported when using rocprof v3
|
|
|
|
* Analysis of previously collected workload data will not work due to sysinfo.csv schema change
|
|
* As a workaround, run the profiling operation again for the workload and interrupt the process after ten seconds.
|
|
Followed by copying the `sysinfo.csv` file from the new data folder to the old one.
|
|
This assumes your system specification hasn't changed since the creation of the previous workload data.
|
|
|
|
* Analysis of new workloads might require providing shader/memory clock speed using
|
|
--specs-correction operation if `amd-smi` or `rocminfo` does not provide clock speeds.
|
|
|
|
* Memory chart on CLI might look corrupted if CLI width is too narrow
|
|
|
|
### Removed
|
|
|
|
* Roofline support for Ubuntu 20.04 and SLES below 15.6
|
|
* Usage of rocm-smi
|
|
* Remove support for MI50/MI60 in accordance with the documentation
|
|
* Hardware IP block based filtering has been removed in favor of analysis report block based filtering
|
|
|
|
## ROCm Compute Profiler 3.1.0 for ROCm 6.4.0
|
|
|
|
### Added
|
|
|
|
* Roofline support for Ubuntu 24.04
|
|
* Experimental support rocprofv3 (not enabled as default)
|
|
|
|
### Resolved issues
|
|
|
|
* Fixed PoP of VALU Active Threads
|
|
* Workaround broken mclk for old version of rocm-smi
|
|
|
|
## ROCm Compute Profiler 3.0.0 for ROCm 6.3.0
|
|
|
|
### Changed
|
|
|
|
* Renamed Omniperf to ROCm Compute Profiler (#475)
|
|
|
|
## Omniperf 2.0.1 for ROCm 6.2.1
|
|
|
|
### Changed
|
|
|
|
* enable rocprofv1 for MI300 hardware (#391)
|
|
* refactoring and updating documemtation (#362, #394, #398, #414, #420)
|
|
* branch renaming and workflow updates (#389, #404, #409)
|
|
* bug fix for analysis output
|
|
* add dependency checks on application launch (#393)
|
|
* patch for profiling multi-process/multi-GPU applications (#376, #396)
|
|
* packaging updates (#386)
|
|
* rename CHANGES to CHANGELOG.md (#410)
|
|
* rollback Grafana version in Dockerfile for Angular plugin compatibility (#416)
|
|
* enable CI triggers for Azure CI (#426)
|
|
* add GPU model distinction for MI300 systems (#423)
|
|
* new MAINTAINERS.md guide for omniperf publishing procedures (#402)
|
|
|
|
### Optimized
|
|
|
|
* reduced running time of Omniperf when profiling (#384)
|
|
* console logging improvements
|
|
|
|
## Omniperf 2.0.1 for ROCm 6.2.0
|
|
|
|
### Added
|
|
|
|
* new option to force hardware target via `OMNIPERF_ARCH_OVERRIDE` global (#370)
|
|
* CI/CD support for MI300 hardware (#373)
|
|
* support for MI308X hardware (#375)
|
|
|
|
### Optimized
|
|
|
|
* cmake build improvements (#374)
|
|
|
|
## Omniperf 2.0.0 (17 May 2024)
|
|
|
|
* improved logging than spans all modes (#177) (#317) (#335) (#341)
|
|
* overhauled CI/CD that spans all modes (#179)
|
|
* extensible SoC classes to better support adding new hardware configs (#180)
|
|
* --kernel-verbose no longer overwrites kernel names (#193)
|
|
* general cleanup and improved organization of source code (#200) (#210)
|
|
* separate requirement files for docs and testing dependencies (#205) (#262) (#358)
|
|
* add support for MI300 hardware (#231)
|
|
* upgrade Grafana assets and build script to latest release (#235)
|
|
* update minimum ROCm and Python requirements (#277)
|
|
* sort rocprofiler input files prior to profiling (#304)
|
|
* new --quiet option will suppress verbose output and show a progress bar (#308)
|
|
* roofline support for Ubuntu 22.04 (#319)
|
|
|
|
## Omniperf 1.1.0-PR1 (13 Oct 2023)
|
|
|
|
* standardize headers to use 'avg' instead of 'mean'
|
|
* add color code thresholds to standalone gui to match grafana
|
|
* modify kernel name shortener to use cpp_filt (#168)
|
|
* enable stochastic kernel dispatch selection (#183)
|
|
* patch grafana plugin module to address a known issue in the latest version (#186)
|
|
* enhanced communication between analyze mode kernel flags (#187)
|
|
|
|
## Omniperf 1.0.10 (22 Aug 2023)
|
|
|
|
* critical patch for detection of llvm in rocm installs on SLURM systems
|
|
|
|
## Omniperf 1.0.9 (17 Aug 2023)
|
|
|
|
* add units to L2 per-channel panel (#133)
|
|
* new quickstart guide for Grafana setup in docs (#135)
|
|
* more detail on kernel and dispatch filtering in docs (#136, #137)
|
|
* patch manual join utility for ROCm >5.2.x (#139)
|
|
* add % of peak values to low level speed-of-light panels (#140)
|
|
* patch critical bug in Grafana by removing a deprecated plugin (#141)
|
|
* enhancements to KernelName demangeler (#142)
|
|
* general metric updates and enhancements (#144, #155, #159)
|
|
* add min/max/avg breakdown to instruction mix panel (#154)
|
|
|
|
## Omniperf 1.0.8 (30 May 2023)
|
|
|
|
* add `--kernel-names` option to toggle kernelName overlay in standalone roofline plot (#93)
|
|
* remove unused python modules (#96)
|
|
* fix empirical roofline calculation for single dispatch workloads (#97)
|
|
* match color of arithmetic intensity points to corresponding bw lines
|
|
|
|
* ux improvements in standalone GUI (#101)
|
|
* enhanced readability for filtering dropdowns in standalone GUI (#102)
|
|
* new logfile to capture rocprofiler output (#106)
|
|
* roofline support for sles15 sp4 and future service packs (#109)
|
|
* adding dockerfiles for all supported Linux distros
|
|
* new examples for `--roof-only` and `--kernel` options added to documentation
|
|
|
|
* enable cli analysis in Windows (#110)
|
|
* optional random port number in standalone GUI (#111)
|
|
* limit length of visible kernelName in `--kernel-names` option (#115)
|
|
* adjust metric definitions (#117, #130)
|
|
* manually merge rocprof runs, overriding default rocprofiler implementation (#125)
|
|
* fixed compatibility issues with Python 3.11 (#131)
|
|
|
|
## Omniperf 1.0.8-PR2 (17 Apr 2023)
|
|
|
|
* ux improvements in standalone GUI (#101)
|
|
* enhanced readability for filtering dropdowns in standalone GUI (#102)
|
|
* new logfile to capture rocprofiler output (#106)
|
|
* roofline support for sles15 sp4 and future service packs (#109)
|
|
* adding dockerfiles for all supported Linux distros
|
|
* new examples for `--roof-only` and `--kernel` options added to documentation
|
|
|
|
## Omniperf 1.0.8-PR1 (13 Mar 2023)
|
|
|
|
* add `--kernel-names` option to toggle kernelName overlay in standalone roofline plot (#93)
|
|
* remove unused python modules (#96)
|
|
* fix empirical roofline calculation for single dispatch workloads (#97)
|
|
* match color of arithmetic intensity points to corresponding bw lines
|
|
|
|
## Omniperf 1.0.7 (21 Feb 2023)
|
|
|
|
* update documentation (#52, #64)
|
|
* improved detection of invalid command line arguments (#58, #76)
|
|
* enhancements to standalone roofline (#61)
|
|
* enable Omniperf on systems with X-server (#62)
|
|
* raise minimum version requirement for rocm (#64)
|
|
* enable baseline comparison in CLI analysis (#65)
|
|
* add multi-normalization to new metrics (#68, #81)
|
|
* support alternative profilers (#70)
|
|
* add MI100 configs to override rocprofiler's incomplete default (#75)
|
|
* improve error message when no GPU(s) detected (#85)
|
|
* separate CI tests by Linux distro and add status badges
|
|
|
|
## Omniperf 1.0.6 (21 Dec 2022)
|
|
|
|
* CI update: documentation now published via github action (#22)
|
|
* better error detection for incomplete ROCm installs (#56)
|
|
|
|
## Omniperf 1.0.5 (13 Dec 2022)
|
|
|
|
* store application command-line parameters in profiling output (#27)
|
|
* enable additional normalizations in CLI mode (#30)
|
|
* add missing ubuntu 20.04 roofline binary to packaging (#34)
|
|
* update L1 bandwidth metric calculations (#36)
|
|
* add L1 <-> L2 bandwidth calculation (#37)
|
|
* documentation updates (#38, #41)
|
|
* enhanced subprocess logging to identify critical errors in rocprofiler (#50)
|
|
* maintain git sha in production installs from tarball (#53)
|
|
|
|
## Omniperf 1.0.4 (11 Nov 2022)
|
|
|
|
* update python requirements.txt with minimum versions for numpy and pandas
|
|
* addition of progress bar indicator in web-based GUI (#8)
|
|
* reduced default content for web-based GUI to reduce load times (#9)
|
|
* minor packaging and CI updates
|
|
* variety of documentation updates
|
|
* added an optional argument to vcopy.cpp workload example to specify device id
|
|
|
|
## Omniperf 1.0.3 (07 Nov 2022)
|
|
|
|
* initial Omniperf release
|