Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update mainline with latest changes from staging #429

Merged
merged 14 commits into from
Sep 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions .azuredevops/rocm-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
resources:
repositories:
- repository: pipelines_repo
type: github
endpoint: ROCm
name: ROCm/ROCm

variables:
- group: common
- template: /.azuredevops/variables-global.yml@pipelines_repo

trigger:
batch: true
branches:
include:
- amd-staging
- amd-mainline
paths:
exclude:
- .github
- docs
- '.*.y*ml'
- '*.md'
- AUTHORS
- LICENSE
- VERSION

pr:
autoCancel: true
branches:
include:
- amd-staging
- amd-mainline
paths:
exclude:
- .github
- docs
- '.*.y*ml'
- '*.md'
- AUTHORS
- LICENSE
- VERSION
drafts: false

jobs:
- template: ${{ variables.CI_COMPONENT_PATH }}/omniperf.yml@pipelines_repo
2 changes: 1 addition & 1 deletion .github/workflows/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ updates:
open-pull-requests-limit: 10
schedule:
interval: "daily"
target-branch: "dev"
target-branch: "amd-staging"
labels:
- "documentation"
- "dependencies"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Documentation

on:
push:
branches: [ main, amd-mainline ]
branches: [ amd-mainline ]
paths:
- 'docs/archive/docs-2.x/**'
- 'docs/archive/docs-1.x/**'
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/formatting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ name: Formatting

on:
push:
branches: [ main, dev, amd-mainline, amd-staging ]
branches: [ amd-mainline, amd-staging, release/** ]
pull_request:
branches: [ main, dev, amd-mainline, amd-staging ]
branches: [ amd-mainline, amd-staging, release/** ]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/mi-rhel9.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: mi-rhel9

on:
push:
branches: [ main, amd-mainline ]
branches: [ amd-mainline, release/** ]

# Allows manual execution
workflow_dispatch:
Expand Down
17 changes: 17 additions & 0 deletions .github/workflows/packaging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
push:
tags:
- "v[1-9].[0-9]+.[0-9]+*"
- "rocm-[0-9]+.[0-9]+.[0-9]+*"

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand Down Expand Up @@ -42,3 +43,19 @@ jobs:
with:
name: omniperf-${{github.ref_name}}.tar.gz
path: build/omniperf-${{github.ref_name}}.tar.gz
- name: Set version
run: echo "VERSION=$(cat VERSION)" >> $GITHUB_ENV
- name: Determine release name
run: |
if [[ ${{github.ref_name}} == rocm-* ]]; then
echo "RELEASE_NAME=Omniperf ${{ env.VERSION }} for ${{github.ref_name}}"
else
echo "RELEASE_NAME=Omniperf ${{ env.VERSION }}"
fi >> $GITHUB_ENV
- name: Upload tarball Release Asset
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/') && github.repository == 'ROCm/omniperf'
with:
fail_on_unmatched: True
files: |
build/omniperf-${{github.ref_name}}.tar.gz
4 changes: 2 additions & 2 deletions .github/workflows/rhel-8.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ name: RHEL 8
# Controls when the workflow will run
on:
push:
branches: [ main, dev, amd-mainline, amd-staging ]
branches: [ amd-mainline, amd-staging, release/** ]
pull_request:
branches: [ main, dev, amd-mainline, amd-staging ]
branches: [ amd-mainline, amd-staging, release/** ]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tarball.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: tarball

on:
push:
branches: [ main, amd-mainline ]
branches: [ amd-mainline, release/** ]
pull_request:

concurrency:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ubuntu-jammy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ name: Ubuntu 22.04

on:
push:
branches: [ main, dev, amd-mainline, amd-staging ]
branches: [ amd-mainline, amd-staging, release/** ]
pull_request:
branches: [ main, dev, amd-mainline, amd-staging ]
branches: [ amd-mainline, amd-staging, release/** ]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
Expand Down
61 changes: 46 additions & 15 deletions CHANGES → CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,42 @@
Version 2.0.1 (03 Jun 2024)
# Changelog for Omniperf

* new option to force hardware target via OMNIPERF_ARCH_OVERRIDE global (#370)
Full documentation for Omniperf is available at [https://rocm.docs.amd.com/projects/omniperf/en/latest/](https://rocm.docs.amd.com/projects/omniperf/en/latest/).

## Omniperf 2.1.0 for ROCm 6.2.2

### Changes

* 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)

### Optimizations

* reduced running time of Omniperf when profiling (#384)
* console logging improvements

## Omniperf 2.0.1 for ROCm 6.2.0

### Changes

* new option to force hardware target via `OMNIPERF_ARCH_OVERRIDE` global (#370)
* CI/CD support for MI300 hardware (#373)
* cmake build improvements (#374)
* support for MI308X hardware (#375)

Version 2.0.0 (17 May 2024)
### Optimizations

* 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)
Expand All @@ -20,7 +51,7 @@ Version 2.0.0 (17 May 2024)
* new --quiet option will suppress verbose output and show a progress bar (#308)
* roofline support for Ubuntu 22.04 (#319)

Version 1.1.0-PR1 (13 Oct 2023)
## 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
Expand All @@ -29,11 +60,11 @@ Version 1.1.0-PR1 (13 Oct 2023)
* patch grafana plugin module to address a known issue in the latest version (#186)
* enhanced communication between analyze mode kernel flags (#187)

Version 1.0.10 (22 Aug 2023)
## Omniperf 1.0.10 (22 Aug 2023)

* critical patch for detection of llvm in rocm installs on SLURM systems

Version 1.0.9 (17 Aug 2023)
## Omniperf 1.0.9 (17 Aug 2023)

* add units to L2 per-channel panel (#133)
* new quickstart guide for Grafana setup in docs (#135)
Expand All @@ -45,7 +76,7 @@ Version 1.0.9 (17 Aug 2023)
* general metric updates and enhancements (#144, #155, #159)
* add min/max/avg breakdown to instruction mix panel (#154)

Version 1.0.8 (30 May 2023)
## 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)
Expand All @@ -66,7 +97,7 @@ Version 1.0.8 (30 May 2023)
* manually merge rocprof runs, overriding default rocprofiler implementation (#125)
* fixed compatibility issues with Python 3.11 (#131)

Version 1.0.8-PR2 (17 Apr 2023)
## Omniperf 1.0.8-PR2 (17 Apr 2023)

* ux improvements in standalone GUI (#101)
* enhanced readability for filtering dropdowns in standalone GUI (#102)
Expand All @@ -75,14 +106,14 @@ Version 1.0.8-PR2 (17 Apr 2023)
* adding dockerfiles for all supported Linux distros
* new examples for `--roof-only` and `--kernel` options added to documentation

Version 1.0.8-PR1 (13 Mar 2023)
## 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

Version 1.0.7 (21 Feb 2023)
## Omniperf 1.0.7 (21 Feb 2023)

* update documentation (#52, #64)
* improved detection of invalid command line arguments (#58, #76)
Expand All @@ -96,12 +127,12 @@ Version 1.0.7 (21 Feb 2023)
* improve error message when no GPU(s) detected (#85)
* separate CI tests by Linux distro and add status badges

Version 1.0.6 (21 Dec 2022)
## Omniperf 1.0.6 (21 Dec 2022)

* CI update: documentation now published via github action (#22)
* better error detection for incomplete ROCm installs (#56)

Version 1.0.5 (13 Dec 2022)
## Omniperf 1.0.5 (13 Dec 2022)

* store application command-line parameters in profiling output (#27)
* enable additional normalizations in CLI mode (#30)
Expand All @@ -112,7 +143,7 @@ Version 1.0.5 (13 Dec 2022)
* enhanced subprocess logging to identify critical errors in rocprofiler (#50)
* maintain git sha in production installs from tarball (#53)

Version 1.0.4 (11 Nov 2022)
## 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)
Expand All @@ -121,6 +152,6 @@ Version 1.0.4 (11 Nov 2022)
* variety of documentation updates
* added an optional argument to vcopy.cpp workload example to specify device id

Version 1.0.3 (07 Nov 2022)
## Omniperf 1.0.3 (07 Nov 2022)

* initial Omniperf release
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,7 @@ set(CPACK_RPM_PACKAGE_PROVIDES "${CPACK_PACKAGE_NAME}")
set(CPACK_RPM_COMPONENT_INSTALL ON)
set(CPACK_RPM_PACKAGE_RELEASE_DIST ON)
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
set(CPACK_RPM_SPEC_MORE_DEFINE "%undefine __brp_mangle_shebangs")

if(DEFINED CPACK_PACKAGING_INSTALL_PREFIX)
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "${CPACK_PACKAGING_INSTALL_PREFIX}")
Expand Down
29 changes: 29 additions & 0 deletions MAINTAINERS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Maintainers Guide to Omniperf

## Publishing a release

Before publishing a new Omniperf release, please review this checklist to ensure all prerequisites are met:

1) **Ensure [VERSION](VERSION) file is updated** to reflect your desired release version.
2) **Sync `amd-mainline` with `amd-staging`**. A rebase may be required to pull all the desired patches from the development branch to our stable mainline. Click [here](https://github.com/ROCm/omniperf/compare/amd-mainline...amd-staging) to begin that process.
3) **Update [CHANGES](CHANGES)** to reflect all major modifications to the codebase since the last release. When modifying [CHANGES](CHANGES) please ensure formatting is consistent with the rest of the ROCm software stack. See [this template](https://github.com/ROCm/hipTensor/blob/develop/CHANGELOG.md) for reference.
4) **Confirm all CI tests are passing**. You can easily confirm this by peeking the passing status of all GitHub continuous integration tests.
5) **Create a tag from `amd-mainline`**. More information on tagging can be found at [Git Docs - Tagging](https://git-scm.com/book/en/v2/Git-Basics-Tagging).

> [!NOTE]
Note: A successful tag should trigger the [packaging action](.github/workflows/packaging.yml) which will produce a tarball artifact. **This artifact needs to be included as an asset in your release**. Please find that the [packaging action](.github/workflows/packaging.yml) will automatically create a draft release with your tarball attached.

Once you've completed the above checklist, you are ready to publish your release. Please ensure you follow formatting from [past Omniperf releases](https://github.com/ROCm/omniperf/releases) for consistency. Some important aspects of our release formatting include:

- Date of release is included in "Release Title".
- Updates are called out in "Release Description". Updates should mirror those listed in [CHANGES](CHANGES).
- Links to documentation and associated release tarball are called out in "Release Description".
- The tarball artifact from the corresponding tag is added to "Release Assets".

### Publishing a release for ROCm

If you are preparing for a new ROCm release, note that the [rocm-ci](https://github.com/rocm-ci) bot managed by DevOps will be triggering a tag automatically. This tag will follow the format `rocm-X.X.X`.

Traditionally, we will bump the Omniperf [VERSION](VERSION) with a new ROCm release. When we bump the version and reach the prerequisite step (5) above, try tagging with `vX.X.X` to validate the release tarball generated by the [packaging action](.github/workflows/packaging.yml).

In addition to the prerequisites mentioned above, please make sure that all changes have been merged from `amd-staging` -> `release/rocm-rel-X.X.X` to ensure that the "rocm-ci" bot will capture all your changes. It is easiest to file a single pull request ahead of the ROCm release.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,11 @@ style reference is provided below for convenience:
Keith Lowery and
Nicholas Curtis and
Cristian Di Pietrantonio},
title = {AMDResearch/omniperf: v2.0.1 (03 June 2024)},
month = june,
title = {AMDResearch/omniperf: v2.1.0 (27 Sept 2024)},
month = sept,
year = 2024,
publisher = {Zenodo},
version = {v2.0.1},
version = {v2.1.0},
doi = {10.5281/zenodo.7314631},
url = {https://doi.org/10.5281/zenodo.7314631}
}
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.0.1
2.1.0
2 changes: 1 addition & 1 deletion docs/archive/docs-1.x/analysis.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ $ omniperf analyze -p workloads/vcopy/mi200/ --list-metrics gfx90a
├─────────┼─────────────────────────────┤
...
```
2. Choose your own customized subset of metrics with `-b` (a.k.a. `--metric`), or build your own config following [config_template](https://github.com/ROCm/omniperf/blob/main/src/omniperf_analyze/configs/panel_config_template.yaml). Below shows how to generate a report containing only metric 2 (a.k.a. System Speed-of-Light).
2. Choose your own customized subset of metrics with `-b` (a.k.a. `--metric`), or build your own config following [config_template](https://github.com/ROCm/omniperf/blob/amd-mainline/src/omniperf_analyze/configs/panel_config_template.yaml). Below shows how to generate a report containing only metric 2 (a.k.a. System Speed-of-Light).
```shell-session
$ omniperf analyze -p workloads/vcopy/mi200/ -b 2
--------
Expand Down
2 changes: 1 addition & 1 deletion docs/archive/docs-2.x/analysis.md
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ Analysis mode = cli
2.1.30 -> L1I Fetch Latency
...
```
3. Choose your own customized subset of metrics with `-b` (a.k.a. `--block`), or build your own config following [config_template](https://github.com/ROCm/omniperf/blob/main/src/omniperf_analyze/configs/panel_config_template.yaml). Below shows how to generate a report containing only metric 2 (a.k.a. System Speed-of-Light).
3. Choose your own customized subset of metrics with `-b` (a.k.a. `--block`), or build your own config following [config_template](https://github.com/ROCm/omniperf/blob/amd-mainline/src/omniperf_analyze/configs/panel_config_template.yaml). Below shows how to generate a report containing only metric 2 (a.k.a. System Speed-of-Light).
```shell-session
$ omniperf analyze -p workloads/vcopy/MI200/ -b 2
--------
Expand Down
Loading
Loading