2
0

Rename Omniperf to ROCm Compute Profiler (#428)

- Update filenames.
- Update executable to `rocprof-compute` 
- Update update package to `rocprofiler-compute`
- Update name in application output and logs
- Update name in README files
- Update testing and workflows

---------

Signed-off-by: Xuan Chen <xuchen@amd.com>

[ROCm/rocprofiler-compute commit: 31b4de1a38]
Este cometimento está contido em:
xuchen-amd
2024-11-01 12:20:21 -04:00
cometido por GitHub
ascendente b0c7f78ca6
cometimento 825440e7ba
379 ficheiros modificados com 1976 adições e 1843 eliminações
+5 -5
Ver ficheiro
@@ -38,13 +38,13 @@ body:
required: true
- type: input
id: omniperf-version
id: rocprofiler-compute-version
attributes:
label: Omniperf Version
label: ROCm Compute Profiler Version
description: |
What version of Omniperf are you using? Hint:
What version of ROCm Compute Profiler are you using? Hint:
```shell
omniperf --version
rocprof-compute --version
```
placeholder: e.g. 2.1.0
validations:
@@ -115,7 +115,7 @@ body:
id: logs
attributes:
label: Relevant log output
description: Please copy and paste Omniperf's `log.txt` file. This will be automatically formatted into code, so no need for backticks.
description: Please copy and paste rocprofiler-compute's `log.txt` file. This will be automatically formatted into code, so no need for backticks.
render: shell
- type: textarea
+3 -3
Ver ficheiro
@@ -85,17 +85,17 @@ jobs:
run: |
cd build
make
srun -N 1 -J omniperf -p $CI_QUEUE -t 00:20:00 ctest -j 4 --resource-spec-file ../tests/4gpus.json --verbose -L profile
srun -N 1 -J rocprof-compute -p $CI_QUEUE -t 00:20:00 ctest -j 4 --resource-spec-file ../tests/4gpus.json --verbose -L profile
- name: Run [analyze workloads] mode
if: '!cancelled()'
run: |
cd build
srun -N 1 -J omniperf -p $CI_QUEUE -t 00:10:00 ctest --verbose -R test_analyze_workloads
srun -N 1 -J rocprof-compute -p $CI_QUEUE -t 00:10:00 ctest --verbose -R test_analyze_workloads
- name: Run [analyze commands] mode
if: '!cancelled()'
run: |
cd build
srun -N 1 -J omniperf -p $CI_QUEUE -t 00:10:00 ctest --verbose -R test_analyze_commands
srun -N 1 -J rocprof-compute -p $CI_QUEUE -t 00:10:00 ctest --verbose -R test_analyze_commands
- name: Publish Test Results
uses: EnricoMi/publish-unit-test-result-action/linux@v2
if: always()
+7 -7
Ver ficheiro
@@ -37,29 +37,29 @@ jobs:
cd build
make package_source
- name: Rename tarball
run: mv build/omniperf-*.tar.gz build/omniperf-${{github.ref_name}}.tar.gz
run: mv build/rocprofiler-compute-*.tar.gz build/rocprofiler-compute-${{github.ref_name}}.tar.gz
- name: Archive tarball
uses: actions/upload-artifact@v4
with:
name: omniperf-${{github.ref_name}}.tar.gz
path: build/omniperf-${{github.ref_name}}.tar.gz
name: rocprofiler-compute-${{github.ref_name}}.tar.gz
path: build/rocprofiler-compute-${{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}}"
echo "RELEASE_NAME=rocprofiler-compute ${{ env.VERSION }} for ${{github.ref_name}}"
else
echo "RELEASE_NAME=Omniperf ${{ env.VERSION }}"
echo "RELEASE_NAME=rocprofiler-compute ${{ 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'
if: startsWith(github.ref, 'refs/tags/') && github.repository == 'ROCm/rocprofiler-compute'
with:
fail_on_unmatched: True
generate_release_notes: True
draft: False # toggle for debugging
files: |
build/omniperf-${{github.ref_name}}.tar.gz
build/rocprofiler-compute-${{github.ref_name}}.tar.gz
name: ${{ env.RELEASE_NAME }}
+1 -1
Ver ficheiro
@@ -42,7 +42,7 @@ jobs:
run: |
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/omniperf -DPYTEST_NUMPROCS=4 ..
cmake -DCMAKE_INSTALL_PREFIX=/opt/rocprofiler-compute -DPYTEST_NUMPROCS=4 ..
make install
- name: CTest- Analyze Commands
run: |
+22 -22
Ver ficheiro
@@ -8,7 +8,7 @@ on:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
distbuild:
runs-on: ubuntu-latest
@@ -47,7 +47,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: tarball-testing
path: build/omniperf-*.tar.gz
path: build/rocprofiler-compute-*.tar.gz
retention-days: 3
disttest:
runs-on: ubuntu-latest
@@ -61,47 +61,47 @@ jobs:
with:
name: tarball-testing
- name: Expand
run: tar xfz omniperf-*.tar.gz; rm omniperf-*.tar.gz
run: tar xfz rocprofiler-compute-*.tar.gz; rm rocprofiler-compute-*.tar.gz
- name: Python dependency installs
run: |
cd omniperf-*
cd rocprofiler-compute-*
python3 -m pip install -t${INSTALL_DIR}/python-libs -r requirements.txt
- name: Configure
run: |
cd omniperf-*
cd rocprofiler-compute-*
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}/omniperf \
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}/rocprofiler-compute \
-DPYTHON_DEPS=${INSTALL_DIR}/python-libs ..
- name: Install
run: |
cd omniperf-*
cd rocprofiler-compute-*
cd build
make install
- name: Verify expected paths
run: |
# find $INSTALL_DIR
test -d $INSTALL_DIR/omniperf
test -x $INSTALL_DIR/omniperf/bin/omniperf
test -s $INSTALL_DIR/omniperf/libexec/omniperf/VERSION
test -s $INSTALL_DIR/omniperf/libexec/omniperf/VERSION.sha
test -d $INSTALL_DIR/omniperf/libexec/omniperf/omniperf_analyze
test -d $INSTALL_DIR/omniperf/libexec/omniperf/omniperf_profile
test -d $INSTALL_DIR/omniperf/libexec/omniperf/omniperf_soc
test -d $INSTALL_DIR/omniperf/libexec/omniperf/utils
test -s $INSTALL_DIR/omniperf/share/omniperf/sample/vcopy.cpp
test -d $INSTALL_DIR/omniperf/share/omniperf/modulefiles
test -d $INSTALL_DIR/rocprofiler-compute
test -x $INSTALL_DIR/rocprofiler-compute/bin/rocprof-compute
test -s $INSTALL_DIR/rocprofiler-compute/libexec/rocprofiler-compute/VERSION
test -s $INSTALL_DIR/rocprofiler-compute/libexec/rocprofiler-compute/VERSION.sha
test -d $INSTALL_DIR/rocprofiler-compute/libexec/rocprofiler-compute/rocprof_compute_analyze
test -d $INSTALL_DIR/rocprofiler-compute/libexec/rocprofiler-compute/rocprof_compute_profile
test -d $INSTALL_DIR/rocprofiler-compute/libexec/rocprofiler-compute/rocprof_compute_soc
test -d $INSTALL_DIR/rocprofiler-compute/libexec/rocprofiler-compute/utils
test -s $INSTALL_DIR/rocprofiler-compute/share/rocprofiler-compute/sample/vcopy.cpp
test -d $INSTALL_DIR/rocprofiler-compute/share/rocprofiler-compute/modulefiles
- name: Query version (setting PYTHONPATH by hand)
run: |
export PYTHONPATH=${INSTALL_DIR}/python-libs:$PYTHONPATH
$INSTALL_DIR/omniperf/bin/omniperf --version
$INSTALL_DIR/rocprofiler-compute/bin/rocprof-compute --version
- name: Install Lmod
run: sudo apt-get install -y lmod
- name: Access omniperf using modulefile
- name: Access rocprofiler-compute using modulefile
run: |
. /etc/profile.d/lmod.sh
module use $INSTALL_DIR/omniperf/share/omniperf/modulefiles
module load omniperf
module use $INSTALL_DIR/rocprofiler-compute/share/rocprofiler-compute/modulefiles
module load rocprofiler-compute
module list
omniperf --version
rocprof-compute --version
+1 -1
Ver ficheiro
@@ -41,7 +41,7 @@ jobs:
run: |
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/omniperf -DPYTEST_NUMPROCS=4 ..
cmake -DCMAKE_INSTALL_PREFIX=/opt/rocprofiler-compute -DPYTEST_NUMPROCS=4 ..
make install
- name: CTest- Analyze Commands
run: |
+1 -1
Ver ficheiro
@@ -1,4 +1,4 @@
# This is the list of Omniperf's significant contributors.
# This is the list of ROCm Compute Profiler's significant contributors.
#
# This does not necessarily list everyone who has contributed code,
# especially since many employees of one corporation may be contributing.
+2 -2
Ver ficheiro
@@ -1,6 +1,6 @@
# Changelog for Omniperf
# Changelog for ROCm Compute Profiler
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/).
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/).
## Omniperf 2.1.0 for ROCm 6.2.2
+42 -32
Ver ficheiro
@@ -16,20 +16,27 @@ message(STATUS "Hostname: ${LOCALHOST}")
# Versioning info derived from file
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" FULL_VERSION_STRING LIMIT_COUNT 1)
string(REGEX REPLACE "(\n|\r)" "" FULL_VERSION_STRING "${FULL_VERSION_STRING}")
set(OMNIPERF_FULL_VERSION "${FULL_VERSION_STRING}")
string(REGEX REPLACE "([0-9]+)\.([0-9]+)\.([0-9]+)(.*)" "\\1.\\2.\\3" OMNIPERF_VERSION
"${FULL_VERSION_STRING}")
set(ROCPROFCOMPUTE_FULL_VERSION "${FULL_VERSION_STRING}")
string(REGEX REPLACE "([0-9]+)\.([0-9]+)\.([0-9]+)(.*)" "\\1.\\2.\\3"
ROCPROFCOMPUTE_VERSION "${FULL_VERSION_STRING}")
# string(REGEX REPLACE "(${OMNIPERF_VERSION})(.*)" "\\2" OMNIPERF_VERSION_TWEAK
# string(REGEX REPLACE "(${ROCPROFCOMPUTE_VERSION})(.*)" "\\2"
# ROCPROFCOMPUTE_VERSION_TWEAK
# "${FULL_VERSION_STRING}")
# string(REGEX REPLACE "^\\." "" OMNIPERF_VERSION_TWEAK "${OMNIPERF_VERSION_TWEAK}")
# string(REGEX REPLACE "^\\." "" ROCPROFCOMPUTE_VERSION_TWEAK
# "${ROCPROFCOMPUTE_VERSION_TWEAK}")
project(
omniperf
VERSION ${OMNIPERF_VERSION}
rocprofiler-compute
VERSION ${ROCPROFCOMPUTE_VERSION}
LANGUAGES C
DESCRIPTION "OmniPerf"
HOMEPAGE_URL "https://github.com/ROCm/omniperf")
DESCRIPTION
"A kernel-level profiling tool for machine learning/HPC workloads running on AMD MI GPUs"
HOMEPAGE_URL "https://github.com/ROCm/rocprofiler-compute")
set(PACKAGE_NAME "rocprofiler-compute")
set(PACKAGE_NAME_UNDERSCORE "rocprofiler_compute")
set(EXECUTABLE_NAME "rocprof-compute")
include(ExternalProject)
include(GNUInstallDirs)
@@ -39,9 +46,9 @@ find_package(Git)
if(Git_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
execute_process(
COMMAND git log --pretty=format:%h -n 1
OUTPUT_VARIABLE OMNIPERF_GIT_REV
OUTPUT_VARIABLE ROCPROFCOMPUTE_GIT_REV
OUTPUT_STRIP_TRAILING_WHITESPACE)
message(STATUS "Git revision: ${OMNIPERF_GIT_REV}")
message(STATUS "Git revision: ${ROCPROFCOMPUTE_GIT_REV}")
set(GIT_CLONE TRUE)
else()
set(GIT_CLONE FALSER)
@@ -133,18 +140,19 @@ set(MOD_INSTALL_PATH
CACHE STRING "Install path for modulefile")
message(STATUS "Modulefile install path: ${MOD_INSTALL_PATH}")
set(moduleFileTemplate "omniperf.lua.in")
set(moduleFileTemplate "rocprofcompute.lua.in")
configure_file(
${PROJECT_SOURCE_DIR}/cmake/${moduleFileTemplate}
${PROJECT_BINARY_DIR}/${MOD_INSTALL_PATH}/${OMNIPERF_FULL_VERSION}.lua @ONLY)
${PROJECT_BINARY_DIR}/${MOD_INSTALL_PATH}/${ROCPROFCOMPUTE_FULL_VERSION}.lua @ONLY)
# Thera mods
if(LOCALHOST MATCHES "TheraS01|.*\.thera\.amd\.com|thera-hn")
list(APPEND CMAKE_MESSAGE_INDENT " ")
message(STATUS "Using thera-specific modulefile modification")
file(READ ${PROJECT_SOURCE_DIR}/cmake/modfile.thera.mod mod_additions)
file(APPEND ${PROJECT_BINARY_DIR}/${MOD_INSTALL_PATH}/${OMNIPERF_FULL_VERSION}.lua
file(APPEND
${PROJECT_BINARY_DIR}/${MOD_INSTALL_PATH}/${ROCPROFCOMPUTE_FULL_VERSION}.lua
${mod_additions})
list(POP_BACK CMAKE_MESSAGE_INDENT)
endif()
@@ -274,9 +282,9 @@ add_test(
# Install
# ---------
# top-level omniperf utility
# top-level rocprofiler-compute utility
install(
PROGRAMS src/omniperf
PROGRAMS src/${EXECUTABLE_NAME}
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}
COMPONENT main)
# python dependency requirements
@@ -286,16 +294,16 @@ install(
COMPONENT main)
# support files and version info
install(
FILES src/argparser.py src/config.py src/omniperf_base.py src/roofline.py VERSION
VERSION.sha
FILES src/argparser.py src/config.py src/rocprof_compute_base.py src/roofline.py
VERSION VERSION.sha
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}
COMPONENT main)
# src/omniperf_analyze
# src/rocprof_compute_analyze
install(
DIRECTORY src/omniperf_analyze
DIRECTORY src/rocprof_compute_analyze
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}
COMPONENT main
PATTERN src/omniperf_analyze/tests EXCLUDE
PATTERN src/rocprof_compute_analyze/tests EXCLUDE
PATTERN "__pycache__" EXCLUDE)
# src/utils
install(
@@ -310,15 +318,15 @@ install(
PROGRAMS ${rooflinebins}
DESTINATION ${CMAKE_INSTALL_BINDIR}
COMPONENT main)
# src/omniperf_soc
# src/rocprof_compute_soc
install(
DIRECTORY src/omniperf_soc
DIRECTORY src/rocprof_compute_soc
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}
COMPONENT main
PATTERN "__pycache__" EXCLUDE)
# src/omniperf_profile
# src/rocprof_compute_profile
install(
DIRECTORY src/omniperf_profile
DIRECTORY src/rocprof_compute_profile
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}
COMPONENT main
PATTERN "__pycache__" EXCLUDE)
@@ -339,16 +347,16 @@ install(
PATTERN "workloads" EXCLUDE)
# modulefile
install(
FILES ${PROJECT_BINARY_DIR}/${MOD_INSTALL_PATH}/${OMNIPERF_FULL_VERSION}.lua
FILES ${PROJECT_BINARY_DIR}/${MOD_INSTALL_PATH}/${ROCPROFCOMPUTE_FULL_VERSION}.lua
DESTINATION ${MOD_INSTALL_PATH}
COMPONENT main)
# top-level symlink for bin/omniperf
# top-level symlink for bin/rocprof-compute
install(
CODE "execute_process(
COMMAND bash -c \"set -e
cd \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}
ln -sf ../${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}/omniperf ${CMAKE_INSTALL_BINDIR}/omniperf
ln -sf ../${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}/${EXECUTABLE_NAME} ${CMAKE_INSTALL_BINDIR}/${EXECUTABLE_NAME}
\")"
COMPONENT main)
@@ -361,7 +369,7 @@ add_custom_target(
COMMAND
${PROJECT_SOURCE_DIR}/utils/update_license.py --source ${PROJECT_SOURCE_DIR}
--license ${PROJECT_SOURCE_DIR}/LICENSE --file
"src/omniperf,cmake/Dockerfile,cmake/rocm_install.sh,docker/docker-entrypoint.sh,src/omniperf_analyze/convertor/mongodb/convert"
"src/${PACKAGE_NAME},cmake/Dockerfile,cmake/rocm_install.sh,docker/docker-entrypoint.sh,src/rocprof_compute_analyze/convertor/mongodb/convert"
)
# TEST collateral
@@ -396,9 +404,11 @@ set(CPACK_GENERATOR
set(CPACK_PACKAGE_NAME
"${PROJECT_NAME}"
CACHE STRING "")
set(CPACK_PACKAGE_CONTACT "https://github.com/ROCm/omniperf")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Omniperf: tool for GPU performance profiling")
set(CPACK_RPM_PACKAGE_DESCRIPTION "Omniperf is a performance analysis tool for profiling
set(CPACK_PACKAGE_CONTACT "https://github.com/ROCm/rocprofiler-compute")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
"ROCm Compute Profiler: tool for GPU performance profiling")
set(CPACK_RPM_PACKAGE_DESCRIPTION
"ROCm Compute Profiler is a performance analysis tool for profiling
machine learning/HPC workloads running on AMD GPUs.")
set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.")
+8 -8
Ver ficheiro
@@ -1,11 +1,11 @@
## How to fork from us
To keep our development fast and conflict free, we recommend you to [fork](https://github.com/ROCm/omniperf/fork) our repository and start your work from our `amd-staging` branch in your private repository.
To keep our development fast and conflict free, we recommend you to [fork](https://github.com/ROCm/rocprofiler-compute/fork) our repository and start your work from our `amd-staging` branch in your private repository.
Afterwards, git clone your repository to your local machine. But that is not it! To keep track of the original develop repository, add it as another remote.
```
git remote add mainline https://github.com/ROCm/omniperf.git
git remote add mainline https://github.com/ROCm/rocprofiler-compute.git
git checkout amd-staging
```
@@ -17,23 +17,23 @@ git checkout -b topic-<yourFeatureName>
and apply your changes there.
## How to contribute to Omniperf
## How to contribute to ROCm Compute Profiler
### Did you find a bug?
- Ensure the bug was not already reported by searching on GitHub under [Issues](https://github.com/ROCm/omniperf/issues).
- Ensure the bug was not already reported by searching on GitHub under [Issues](https://github.com/ROCm/rocprofiler-compute/issues).
- If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/ROCm/omniperf/issues/new).
- If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/ROCm/rocprofiler-compute/issues/new).
### Did you write a patch that fixes a bug?
- Open a new GitHub [pull request](https://github.com/ROCm/omniperf/compare) with the patch.
- Open a new GitHub [pull request](https://github.com/ROCm/rocprofiler-compute/compare) with the patch.
- Ensure the PR description clearly describes the problem and solution. If there is an existing GitHub issue open describing this bug, please include it in the description so we can close it.
- Ensure the PR is based on the `amd-staging` branch of the Omniperf GitHub repository.
- Ensure the PR is based on the `amd-staging` branch of the ROCm Compute Profiler GitHub repository.
- Omniperf requires new commits to include a "Signed-off-by" token in the commit message (typically enabled via the `git commit -s` option), indicating your agreement to the projects's [Developer's Certificate of Origin](https://developercertificate.org/) and compatability with the project [LICENSE](LICENSE):
- ROCm Compute Profiler requires new commits to include a "Signed-off-by" token in the commit message (typically enabled via the `git commit -s` option), indicating your agreement to the projects's [Developer's Certificate of Origin](https://developercertificate.org/) and compatability with the project [LICENSE](LICENSE):
> (a) The contribution was created in whole or in part by me and I
+5 -5
Ver ficheiro
@@ -1,11 +1,11 @@
# Maintainers Guide to Omniperf
# Maintainers Guide to ROCm Compute Profiler
## Publishing a release
Before publishing a new Omniperf release, please review this checklist to ensure all prerequisites are met:
Before publishing a new ROCm Compute Profiler 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.
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/rocprofiler-compute/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).
@@ -13,7 +13,7 @@ Before publishing a new Omniperf release, please review this checklist to ensure
> [!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:
Once you've completed the above checklist, you are ready to publish your release. Please ensure you follow formatting from [past ROCm Compute Profiler releases](https://github.com/ROCm/rocprofiler-compute/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).
@@ -24,6 +24,6 @@ Once you've completed the above checklist, you are ready to publish your release
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).
Traditionally, we will bump the ROCm Compute Profiler [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.
+11 -11
Ver ficheiro
@@ -1,22 +1,22 @@
[![Ubuntu 22.04](https://github.com/ROCm/omniperf/actions/workflows/ubuntu-jammy.yml/badge.svg)](https://github.com/ROCm/omniperf/actions/workflows/ubuntu-jammy.yml)
[![RHEL 8](https://github.com/ROCm/omniperf/actions/workflows/rhel-8.yml/badge.svg)](https://github.com/ROCm/omniperf/actions/workflows/rhel-8.yml)
[![Instinct](https://github.com/ROCm/omniperf/actions/workflows/mi-rhel9.yml/badge.svg)](https://github.com/ROCm/omniperf/actions/workflows/mi-rhel9.yml)
[![Docs](https://github.com/ROCm/omniperf/actions/workflows/docs.yml/badge.svg)](https://rocm.github.io/omniperf/)
[![Ubuntu 22.04](https://github.com/ROCm/rocprofiler-compute/actions/workflows/ubuntu-jammy.yml/badge.svg)](https://github.com/ROCm/rocprofiler-compute/actions/workflows/ubuntu-jammy.yml)
[![RHEL 8](https://github.com/ROCm/rocprofiler-compute/actions/workflows/rhel-8.yml/badge.svg)](https://github.com/ROCm/rocprofiler-compute/actions/workflows/rhel-8.yml)
[![Instinct](https://github.com/ROCm/rocprofiler-compute/actions/workflows/mi-rhel9.yml/badge.svg)](https://github.com/ROCm/rocprofiler-compute/actions/workflows/mi-rhel9.yml)
[![Docs](https://github.com/ROCm/rocprofiler-compute/actions/workflows/docs.yml/badge.svg)](https://rocm.github.io/rocprofiler-compute/)
[![DOI](https://zenodo.org/badge/561919887.svg)](https://zenodo.org/badge/latestdoi/561919887)
# Omniperf
# ROCm Compute Profiler
## General
Omniperf is a system performance profiling tool for machine
ROCm Compute Profiler is a system performance profiling tool for machine
learning/HPC workloads running on AMD MI GPUs. The tool presently
targets usage on MI100, MI200, and MI300 accelerators.
* For more information on available features, installation steps, and
workload profiling and analysis, please refer to the online
[documentation](https://rocm.docs.amd.com/projects/omniperf/en/latest/).
[documentation](https://rocm.docs.amd.com/projects/rocprofiler-compute/en/latest/).
* Omniperf is an AMD open source research project and is not supported
* ROCm Compute Profiler is an AMD open source research project and is not supported
as part of the ROCm software stack. We welcome contributions and
feedback from the community. Please see the
[CONTRIBUTING.md](CONTRIBUTING.md) file for additional details on our
@@ -26,7 +26,7 @@ contribution process.
## Development
Omniperf follows a
ROCm Compute Profiler follows a
[main-dev](https://nvie.com/posts/a-successful-git-branching-model/)
branching model. As a result, our latest stable release is shipped
from the `amd-mainline` branch, while new features are developed in our
@@ -50,8 +50,8 @@ style reference is provided below for convenience:
Keith Lowery and
Nicholas Curtis and
Cristian Di Pietrantonio},
title = {AMDResearch/omniperf: v2.1.0 (27 Sept 2024)},
month = sept,
title = {ROCm/rocprofiler-compute: v2.1.0 (27 September 2024)},
month = september,
year = 2024,
publisher = {Zenodo},
version = {v2.1.0},
+3 -3
Ver ficheiro
@@ -26,16 +26,16 @@ FROM ubuntu:20.04
USER root
COPY rocm_install.sh /omniperf/rocm_install.sh
COPY rocm_install.sh /rocprofiler-compute/rocm_install.sh
ENV PATH="/omniperf:${PATH}"
ENV PATH="/rocprofiler-compute:${PATH}"
ENV TZ="US/Chicago"
ENV DEBIAN_FRONTEND noninteractive
#pyenv dependencies
RUN apt update && \
apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl
ENV HOME="/omniperf"
ENV HOME="/rocprofiler-compute"
WORKDIR $HOME
ENV PYENV_ROOT="$HOME/.pyenv"
ENV PATH="$PYENV_ROOT/bin:$PATH"
+1 -1
Ver ficheiro
@@ -1 +1 @@
@OMNIPERF_GIT_REV@
@ROCPROFCOMPUTE_GIT_REV@
@@ -1,18 +1,18 @@
local help_message = [[
Omniperf is an open-source performance analysis tool for profiling
ROCm Compute Profiler is an open-source performance analysis tool for profiling
machine learning/HPC workloads running on AMD MI GPUs.
Version @OMNIPERF_FULL_VERSION@
Version @ROCPROFCOMPUTE_FULL_VERSION@
]]
help(help_message,"\n")
whatis("Name: omniperf")
whatis("Version: @OMNIPERF_FULL_VERSION@")
whatis("Name: @PROJECT_NAME@")
whatis("Version: @ROCPROFCOMPUTE_FULL_VERSION@")
whatis("Keywords: Profiling, Performance, GPU")
whatis("Description: tool for GPU performance profiling")
whatis("URL: https://github.com/ROCm/omniperf")
whatis("URL: https://github.com/ROCm/rocprofiler-compute")
-- Export environmental variables
local topDir="@CMAKE_INSTALL_PREFIX@"
@@ -20,9 +20,9 @@ local binDir="@CMAKE_INSTALL_FULL_BINDIR@"
local shareDir="@CMAKE_INSTALL_FULL_DATADIR@"
local pythonDeps="@PYTHON_DEPS@"
setenv("OMNIPERF_DIR",topDir)
setenv("OMNIPERF_BIN",binDir)
setenv("OMNIPERF_SHARE",shareDir)
setenv("ROCPROFCOMPUTE_DIR",topDir)
setenv("ROCPROFCOMPUTE_BIN",binDir)
setenv("ROCPROFCOMPUTE_SHARE",shareDir)
-- Update relevant PATH variables
prepend_path("PATH",binDir)
+2 -2
Ver ficheiro
@@ -137,7 +137,7 @@ do
verbose-run docker build . \
${PULL} \
-f ${DOCKER_FILE} \
--tag ${USER}/omniperf:ci-base-${DISTRO}-${VERSION} \
--tag ${USER}/rocprofiler-compute:ci-base-${DISTRO}-${VERSION} \
--build-arg DISTRO=${DISTRO_IMAGE} \
--build-arg VERSION=${VERSION} \
--build-arg PYTHON_VERSIONS=\"${PYTHON_VERSIONS}\"
@@ -149,6 +149,6 @@ done
if [ "${PUSH}" -gt 0 ]; then
for VERSION in ${VERSIONS}
do
verbose-run docker push ${USER}/omniperf:ci-base-${DISTRO}-${VERSION}
verbose-run docker push ${USER}/rocprofiler-compute:ci-base-${DISTRO}-${VERSION}
done
fi
+1 -1
Ver ficheiro
@@ -159,7 +159,7 @@ do
VERSION_PATCH=$(echo ${VERSION} | sed 's/\./ /g' | awk '{print $3}')
for ROCM_VERSION in ${ROCM_VERSIONS}
do
CONTAINER=${USER}/omniperf:release-base-${DISTRO}-${VERSION}-rocm-${ROCM_VERSION}
CONTAINER=${USER}/rocprofiler-compute:release-base-${DISTRO}-${VERSION}-rocm-${ROCM_VERSION}
ROCM_MAJOR=$(echo ${ROCM_VERSION} | sed 's/\./ /g' | awk '{print $1}')
ROCM_MINOR=$(echo ${ROCM_VERSION} | sed 's/\./ /g' | awk '{print $2}')
ROCM_PATCH=$(echo ${ROCM_VERSION} | sed 's/\./ /g' | awk '{print $3}')
@@ -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/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).
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/rocprof_compute_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
--------
@@ -381,7 +381,7 @@ Analyze
Dash is running on http://0.0.0.0:8050/
* Serving Flask app 'omniperf_analyze.omniperf_analyze' (lazy loading)
* Serving Flask app 'rocprof_compute_analyze.rocprof_compute_analyze' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
@@ -767,4 +767,4 @@ Most panels are designed around a specific IP block to thoroughly understand its
###### L2-EA Write Stalls
![L2-EA Write Stalls](images/L2_ea_write_stalls_per_channel.png)
###### L2-EA Write Starvation
![L2-EA Write Starvation](images/L2_ea_write_starvation_per_channel.png)
![L2-EA Write Starvation](images/L2_ea_write_starvation_per_channel.png)
@@ -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/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).
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/rocprof_compute_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
--------
@@ -407,7 +407,7 @@ Analysis mode = web_ui
[analysis] deriving Omniperf metrics...
Dash is running on http://0.0.0.0:8050/
* Serving Flask app 'omniperf_analyze.analysis_webui' (lazy loading)
* Serving Flask app 'rocprof_compute_analyze.analysis_webui' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
+1 -1
Ver ficheiro
@@ -186,7 +186,7 @@ Walkthrough
3. Choose your own customized subset of metrics with the ``-b`` (or ``--block``)
option. Or, build your own configuration following
`config_template <https://github.com/ROCm/omniperf/blob/amd-mainline/src/omniperf_soc/analysis_configs/panel_config_template.yaml>`_.
`config_template <https://github.com/ROCm/omniperf/blob/amd-mainline/src/rocprof_compute_soc/analysis_configs/panel_config_template.yaml>`_.
The following snippet shows how to generate a report containing only metric 2
(:doc:`System Speed-of-Light </conceptual/system-speed-of-light>`).
@@ -47,7 +47,7 @@ desired analysis command. For example:
[analysis] deriving Omniperf metrics...
Dash is running on http://0.0.0.0:8050/
* Serving Flask app 'omniperf_analyze.analysis_webui' (lazy loading)
* Serving Flask app 'rocprof_compute_analyze.analysis_webui' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
+5 -30
Ver ficheiro
@@ -32,7 +32,7 @@ right for you.
:width: 800
.. _core-install:
Core installation
=================
@@ -44,12 +44,6 @@ installation.
* CMake ``>= 3.19``
* ROCm ``>= 5.7.1``
.. note::
Omniperf will use the first version of ``Python3`` found in your system's
``PATH``. If the default version of Python3 is older than 3.8, you may need to
update your system's ``PATH`` to point to a newer version of Python3.
Omniperf depends on a number of Python packages documented in the top-level
``requirements.txt`` file. Install these *before* configuring Omniperf.
@@ -72,16 +66,6 @@ following steps illustrate how to install the necessary Python dependencies
using `pip <https://packaging.python.org/en/latest/>`_ and Omniperf into a
shared location controlled by the ``INSTALL_DIR`` environment variable.
.. tip::
To always run Omniperf with a particular version of python, you can create a
bash alias. For example, to run Omniperf with Python 3.10, you can run the
following command:
.. code-block:: shell
alias omniperf-mypython="/usr/bin/python3.10 /opt/rocm/bin/omniperf"
.. _core-install-cmake-vars:
Configuration variables
@@ -142,7 +126,7 @@ Install from source
cd build
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}/{{ config.version }} \
-DPYTHON_DEPS=${INSTALL_DIR}/python-libs \
-DMOD_INSTALL_PATH=${INSTALL_DIR}/modulefiles/omniperf ..
-DMOD_INSTALL_PATH=${INSTALL_DIR}/modulefiles ..
# install
make install
@@ -224,30 +208,21 @@ software stack.
.. code-block:: shell
$ sudo apt install omniperf
# Include omniperf in your system PATH
$ sudo update-alternatives --install /usr/bin/omniperf omniperf /opt/rocm/bin/omniperf 0
# Install Python dependencies
$ python3 -m pip install -r /opt/rocm/libexec/omniperf/requirements.txt
$ pip install -r /opt/rocm/libexec/omniperf/requirements.txt
.. tab-item:: Red Hat Enterprise Linux
.. code-block:: shell
$ sudo dnf install omniperf
# Include omniperf in your system PATH
$ sudo update-alternatives --install /usr/bin/omniperf omniperf /opt/rocm/bin/omniperf 0
# Install Python dependencies
$ python3 -m pip install -r /opt/rocm/libexec/omniperf/requirements.txt
$ pip install -r /opt/rocm/libexec/omniperf/requirements.txt
.. tab-item:: SUSE Linux Enterprise Server
.. code-block:: shell
$ sudo zypper install omniperf
# Include omniperf in your system PATH
$ sudo update-alternatives --install /usr/bin/omniperf omniperf /opt/rocm/bin/omniperf 0
# Install Python dependencies
$ python3 -m pip install -r /opt/rocm/libexec/omniperf/requirements.txt
$ pip install -r /opt/rocm/libexec/omniperf/requirements.txt
.. _core-install-rocprof-var:
@@ -79,13 +79,6 @@ directory to begin.
$ sudo docker-compose build
$ sudo docker-compose up -d
.. note::
To troubleshoot Docker container build failures related to certificate verification, try
disabling any network proxy services on the host system. These proxy services can interfere
with OpenSSL's ability to retrieve a correct certificate chain when the container accesses
external websites.
The TCP ports for Grafana (``4000``) and MongoDB (``27017``) in the Docker
container are mapped to ``14000`` and ``27018``, respectively, on the host side.
@@ -1,8 +1,30 @@
:root {
--amd-teal-500: #00C2DE;
--amd-teal-750: #00788E;
}
/* Override PyData Sphinx Theme default colors */
html[data-theme='light'] {
--pst-color-primary: var(--amd-teal-750);
--pst-color-primary-bg: var(--amd-teal-500);
--pst-color-table-row-hover-bg: #E2E8F0;
}
html[data-theme='dark'] {
--pst-color-primary: var(--amd-teal-500);
--pst-color-primary-bg: var(--amd-teal-750);
--pst-color-table-row-hover-bg: #1E293B;
}
html[data-theme='light'],
html[data-theme='dark'] {
--pst-color-link: var(--pst-color-primary);
}
a svg {
color: var(--pst-color-text-base);
}
a svg:hover {
color: var(--pst-color-link-hover);
}
+3 -3
Ver ficheiro
@@ -1,6 +1,6 @@
# -----------------------------------------------------------------------
# NOTE:
# Dependencies are not included as part of Omniperf.
# Dependencies are not included as part of ROCm Compute Profiler.
# It's the user's responsibility to accept any licensing implications
# before building the project
# -----------------------------------------------------------------------
@@ -15,7 +15,7 @@ ENV TZ "US/Chicago"
ENV NVM_DIR /usr/local/nvm
ENV NODE_VERSION 20.12.2
ADD plugins/omniperf_plugin /var/lib/grafana/plugins/omniperf_plugin
ADD plugins/rocprofiler-compute_plugin /var/lib/grafana/plugins/rocprofiler-compute_plugin
# Install Grafana and MongoDB Community Edition
# Note: Grafana install is stubbed to 10.4.3
@@ -50,7 +50,7 @@ RUN apt-get install -y tzdata systemd apt-utils npm vim net-tools && \
/usr/sbin/grafana-cli plugins install grafana-image-renderer && \
/usr/sbin/grafana-cli plugins install aceiot-svg-panel && \
chown root:grafana /etc/grafana && \
cd /var/lib/grafana/plugins/omniperf_plugin && \
cd /var/lib/grafana/plugins/rocprofiler-compute_plugin && \
npm install && \
npm run build && \
apt-get autoremove -y && \
A apresentação das diferenças no ficheiro foi suprimida por ser demasiado grande Carregar diff
@@ -13324,7 +13324,7 @@
},
"timepicker": {},
"timezone": "",
"title": "Omniperf_v1.0.5_pub",
"title": "rocprofiler-compute_v1.0.5_pub",
"uid": "MIPerf_v1_0_0630202211",
"version": 3,
"weekStart": ""
@@ -12733,8 +12733,8 @@
{
"current": {
"selected": true,
"text": "omniperf_asw_mix_mi200",
"value": "omniperf_asw_mix_mi200"
"text": "rocprofiler-compute_asw_mix_mi200",
"value": "rocprofiler-compute_asw_mix_mi200"
},
"definition": "workload_names.names.aggregate([\n {\"$group\": {\n \"_id\": \"&name\"\n }}\n]);",
"hide": 0,
@@ -13318,7 +13318,7 @@
},
"timepicker": {},
"timezone": "",
"title": "Omniperf_v1.0.7_pub",
"title": "rocprofiler-compute_v1.0.7_pub",
"uid": "MIPerf_v1_0_06302022112",
"version": 2,
"weekStart": ""
@@ -12809,8 +12809,8 @@
{
"current": {
"selected": true,
"text": "omniperf_asw_mixbench_mi200",
"value": "omniperf_asw_mixbench_mi200"
"text": "rocprofiler-compute_asw_mixbench_mi200",
"value": "rocprofiler-compute_asw_mixbench_mi200"
},
"definition": "workload_names.names.aggregate([\n {\"$group\": {\n \"_id\": \"&name\"\n }}\n]);",
"hide": 0,
@@ -12955,8 +12955,8 @@
{
"current": {
"selected": true,
"text": "omniperf_asw_mixbench_mi200",
"value": "omniperf_asw_mixbench_mi200"
"text": "rocprofiler-compute_asw_mixbench_mi200",
"value": "rocprofiler-compute_asw_mixbench_mi200"
},
"definition": "workload_names.names.aggregate([\n {\"$group\": {\n \"_id\": \"&name\"\n }}\n]);",
"hide": 0,
@@ -13390,7 +13390,7 @@
},
"timepicker": {},
"timezone": "",
"title": "Omniperf_v1.0.8_pub",
"title": "rocprofiler-compute_v1.0.8_pub",
"uid": "MIPerf_v1_0_0630202211210",
"version": 4,
"weekStart": ""
@@ -12827,8 +12827,8 @@
{
"current": {
"selected": true,
"text": "omniperf_pymongo4_Vcopy_gfx90a",
"value": "omniperf_pymongo4_Vcopy_gfx90a"
"text": "rocprofiler-compute_pymongo4_Vcopy_gfx90a",
"value": "rocprofiler-compute_pymongo4_Vcopy_gfx90a"
},
"definition": "workload_names.names.aggregate([\n {\"$group\": {\n \"_id\": \"&name\"\n }}\n]);",
"hide": 0,
@@ -12973,8 +12973,8 @@
{
"current": {
"selected": false,
"text": "omniperf_pymongo4_Vcopy_gfx908",
"value": "omniperf_pymongo4_Vcopy_gfx908"
"text": "rocprofiler-compute_pymongo4_Vcopy_gfx908",
"value": "rocprofiler-compute_pymongo4_Vcopy_gfx908"
},
"definition": "workload_names.names.aggregate([\n {\"$group\": {\n \"_id\": \"&name\"\n }}\n]);",
"hide": 0,
@@ -13408,8 +13408,8 @@
},
"timepicker": {},
"timezone": "",
"title": "Omniperf_v2.0_pubx",
"uid": "Omniperf_v20x",
"title": "rocprofiler-compute_v2.0_pubx",
"uid": "rocprofiler-compute_v20x",
"version": 2,
"weekStart": ""
}
+4 -4
Ver ficheiro
@@ -1,6 +1,6 @@
# -----------------------------------------------------------------------
# NOTE:
# Dependencies are not included as part of Omniperf.
# Dependencies are not included as part of ROCm Compute Profiler.
# It's the user's responsibility to accept any licensing implications
# before building the project
# -----------------------------------------------------------------------
@@ -9,13 +9,13 @@ version: "3.3"
services:
web:
image: omniperf-grafana-v1.0
container_name: omniperf-grafana-v1.0
image: rocprofiler-compute-grafana-v1.0
container_name: rocprofiler-compute-grafana-v1.0
restart: always
build: .
environment:
- GF_PATHS_CONFIG="grafana/etc/grafana.ini"
- GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=amd-omniperf-data-plugin
- GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=amd-rocprofiler-compute-data-plugin
- GF_DEFAULT_APP_MODE=development
ports:
- "14000:4000"
+1 -1
Ver ficheiro
@@ -24,7 +24,7 @@
# SOFTWARE.
##############################################################################el
pushd /var/lib/grafana/plugins/omniperf_plugin
pushd /var/lib/grafana/plugins/rocprofiler-compute_plugin
npm run server &
popd
+1 -1
Ver ficheiro
@@ -874,7 +874,7 @@ max_days = 7
;enable_alpha = false
;app_tls_skip_verify_insecure = false
# Enter a comma-separated list of plugin identifiers to identify plugins to load even if they are unsigned. Plugins with modified signatures are never loaded.
allow_loading_unsigned_plugins = amd-custom-svg, amd-omniperf-data-plugin
allow_loading_unsigned_plugins = amd-custom-svg, amd-rocprofiler-compute-data-plugin
# Enable or disable installing plugins directly from within Grafana.
;plugin_admin_enabled = false
;plugin_admin_external_manage_enabled = false
@@ -1,6 +1,6 @@
# Omniperf Data Source Plugin
# ROCm Compute Profiler Data Source Plugin
This plugin allows users of Omniperf to connect their MongoDB database to for visualization in Grafana
This plugin allows users of ROCm Compute Profiler to connect their MongoDB database to for visualization in Grafana
## Info
@@ -1,5 +1,5 @@
{
"name": "amd-omniperf-data-plugin",
"name": "amd-rocprofiler-compute-data-plugin",
"version": "1.0.0",
"description": "",
"main": "server/mongo-proxy.js",
@@ -39,5 +39,5 @@
"mongodb": "^4.12.1",
"statman-stopwatch": "^2.7.0"
},
"_comments": "Dependencies are not included as part of Omniperf. It's the user's responsibility to accept any licensing implications before building the project."
"_comments": "Dependencies are not included as part of ROCm Compute Profiler. It's the user's responsibility to accept any licensing implications before building the project."
}
@@ -398,7 +398,7 @@ function runAggregateQuery( requestId, queryId, body, queryArgs, res, next )
results = getTimeseriesResults(docs)
}
// This is where omniperf will go for most results
// This is where rocprofiler-compute will go for most results
else
{
results = getTableResults(docs)
@@ -1,6 +1,6 @@
{
"name": "Omniperf Data",
"id": "amd-omniperf-data-plugin",
"name": "ROCm Compute Profiler Data",
"id": "amd-rocprofiler-compute-data-plugin",
"type": "datasource",
"backend": true,
"partials": {
@@ -9,14 +9,14 @@
"metrics": true,
"annotations": false,
"info": {
"description": "An Omniperf datasource build for MongoDB",
"description": "An ROCm Compute Profiler datasource build for MongoDB",
"author": {
"name": "Audacious Software Group",
"url": ""
},
"logos": {
"small": "img/omniperf_circle.png",
"large": "img/omniperf_circle.png"
"small": "img/rocprofiler-compute_circle.png",
"large": "img/rocprofiler-compute_circle.png"
},
"version": "%VERSION%",
"updated": "%TODAY%"
+3 -3
Ver ficheiro
@@ -17,7 +17,7 @@ exclude = '''
| external
| .pytest_cache
| build
| build-omniperf
| build-rocprof_compute
)/
)
'''
@@ -29,9 +29,9 @@ addopts = [
pythonpath = [
".",
"src",
"src/omniperf_soc",
"src/rocprof_compute_soc",
"src/utils",
"src/omniperf_analyze/utils",
"src/rocprof_compute_analyze/utils",
"tests"
]
+4 -4
Ver ficheiro
@@ -1,6 +1,6 @@
This directory contains all the source code files for the Omniperf project.
The top-level `omniperf` executable is the entry point and defines the flow for subsequent execution modes.
This directory contains all the source code files for the ROCm Compute Profiler project.
The top-level `rocprof-compute` executable is the entry point and defines the flow for subsequent execution modes.
To build Omniperf as a developer (from source) please add this directory to `PATH`.
You will find utilities and logic specific to Omniperf's different execution modes in their
To build ROCm Compute Profiler as a developer (from source) please add this directory to `PATH`.
You will find utilities and logic specific to ROCm Compute Profiler's different execution modes in their
respective subdirectories.
+37 -27
Ver ficheiro
@@ -34,11 +34,14 @@ def print_avail_arch(avail_arch: list):
return ret_str
def add_general_group(parser, omniperf_version):
def add_general_group(parser, rocprof_compute_version):
general_group = parser.add_argument_group("General Options")
general_group.add_argument(
"-v", "--version", action="version", version=omniperf_version["ver_pretty"]
"-v",
"--version",
action="version",
version=rocprof_compute_version["ver_pretty"],
)
general_group.add_argument(
"-V",
@@ -57,14 +60,16 @@ def add_general_group(parser, omniperf_version):
)
def omniarg_parser(parser, omniperf_home, supported_archs, omniperf_version):
def omniarg_parser(
parser, rocprof_compute_home, supported_archs, rocprof_compute_version
):
# -----------------------------------------
# Parse arguments (dependent on mode)
# -----------------------------------------
## General Command Line Options
## ----------------------------
add_general_group(parser, omniperf_version)
add_general_group(parser, rocprof_compute_version)
parser._positionals.title = "Modes"
parser._optionals.title = "Help"
@@ -79,15 +84,15 @@ def omniarg_parser(parser, omniperf_home, supported_archs, omniperf_version):
help="Profile the target application",
usage="""
omniperf profile --name <workload_name> [profile options] [roofline options] -- <profile_cmd>
rocprof-compute profile --name <workload_name> [profile options] [roofline options] -- <profile_cmd>
---------------------------------------------------------------------------------
Examples:
\tomniperf profile -n vcopy_all -- ./vcopy -n 1048576 -b 256
\tomniperf profile -n vcopy_SPI_TCC -b SQ TCC -- ./vcopy -n 1048576 -b 256
\tomniperf profile -n vcopy_kernel -k vecCopy -- ./vcopy -n 1048576 -b 256
\tomniperf profile -n vcopy_disp -d 0 -- ./vcopy -n 1048576 -b 256
\tomniperf profile -n vcopy_roof --roof-only -- ./vcopy -n 1048576 -b 256
\trocprof-compute profile -n vcopy_all -- ./vcopy -n 1048576 -b 256
\trocprof-compute profile -n vcopy_SPI_TCC -b SQ TCC -- ./vcopy -n 1048576 -b 256
\trocprof-compute profile -n vcopy_kernel -k vecCopy -- ./vcopy -n 1048576 -b 256
\trocprof-compute profile -n vcopy_disp -d 0 -- ./vcopy -n 1048576 -b 256
\trocprof-compute profile -n vcopy_roof --roof-only -- ./vcopy -n 1048576 -b 256
---------------------------------------------------------------------------------
""",
prog="tool",
@@ -98,7 +103,7 @@ Examples:
)
profile_parser._optionals.title = "Help"
add_general_group(profile_parser, omniperf_version)
add_general_group(profile_parser, rocprof_compute_version)
profile_group = profile_parser.add_argument_group("Profile Options")
roofline_group = profile_parser.add_argument_group("Standalone Roofline Options")
@@ -194,7 +199,10 @@ Examples:
"--use-rocscope", default=False, dest="use_rocscope", help=argparse.SUPPRESS
)
profile_group.add_argument(
"--kernel-summaries", default=False, dest="summaries", help=argparse.SUPPRESS
"--kernel-summaries",
default=False,
dest="summaries",
help=argparse.SUPPRESS,
)
profile_group.add_argument(
"--join-type",
@@ -272,14 +280,14 @@ Examples:
## ----------------------------
db_parser = subparsers.add_parser(
"database",
help="Interact with Omniperf database",
help="Interact with rocprofiler-compute database",
usage="""
\nomniperf database <interaction type> [connection options]
\nrocprof-compute database <interaction type> [connection options]
\n\n-------------------------------------------------------------------------------
\nExamples:
\n\tomniperf database --import -H pavii1 -u temp -t asw -w workloads/vcopy/mi200/
\n\tomniperf database --remove -H pavii1 -u temp -w omniperf_asw_sample_mi200
\n\trocprof-compute database --import -H pavii1 -u temp -t asw -w workloads/vcopy/mi200/
\n\trocprof-compute database --remove -H pavii1 -u temp -w rocprofiler-compute_asw_sample_mi200
\n-------------------------------------------------------------------------------\n
""",
prog="tool",
@@ -290,7 +298,7 @@ Examples:
)
db_parser._optionals.title = "Help"
add_general_group(db_parser, omniperf_version)
add_general_group(db_parser, rocprof_compute_version)
interaction_group = db_parser.add_argument_group("Interaction Type")
connection_group = db_parser.add_argument_group("Connection Options")
@@ -300,7 +308,7 @@ Examples:
required=False,
dest="upload",
action="store_true",
help="\t\t\t\tImport workload to Omniperf DB",
help="\t\t\t\tImport workload to rocprofiler-compute DB",
)
interaction_group.add_argument(
"-r",
@@ -308,7 +316,7 @@ Examples:
required=False,
dest="remove",
action="store_true",
help="\t\t\t\tRemove a workload from Omniperf DB",
help="\t\t\t\tRemove a workload from rocprofiler-compute DB",
)
connection_group.add_argument(
@@ -366,13 +374,13 @@ Examples:
"analyze",
help="Analyze existing profiling results at command line",
usage="""
omniperf analyze --path <workload_path> [analyze options]
rocprof-compute analyze --path <workload_path> [analyze options]
-----------------------------------------------------------------------------------
Examples:
\tomniperf analyze -p workloads/vcopy/mi200/ --list-metrics gfx90a
\tomniperf analyze -p workloads/mixbench/mi200/ --dispatch 12 34 --decimal 3
\tomniperf analyze -p workloads/mixbench/mi200/ --gui
\trocprof-compute analyze -p workloads/vcopy/mi200/ --list-metrics gfx90a
\trocprof-compute analyze -p workloads/mixbench/mi200/ --dispatch 12 34 --decimal 3
\trocprof-compute analyze -p workloads/mixbench/mi200/ --gui
-----------------------------------------------------------------------------------
""",
prog="tool",
@@ -383,7 +391,7 @@ Examples:
)
analyze_parser._optionals.title = "Help"
add_general_group(analyze_parser, omniperf_version)
add_general_group(analyze_parser, rocprof_compute_version)
analyze_group = analyze_parser.add_argument_group("Analyze Options")
analyze_advanced_group = analyze_parser.add_argument_group("Advanced Options")
@@ -454,7 +462,7 @@ Examples:
type=int,
nargs="?",
const=8050,
help="\t\tActivate a GUI to interate with Omniperf metrics.\n\t\tOptionally, specify port to launch application (DEFAULT: 8050)",
help="\t\tActivate a GUI to interate with rocprofiler-compute metrics.\n\t\tOptionally, specify port to launch application (DEFAULT: 8050)",
)
analyze_advanced_group.add_argument(
"--random-port",
@@ -499,7 +507,7 @@ Examples:
dest="config_dir",
metavar="",
help="\t\tSpecify the directory of customized configs.",
default=omniperf_home.joinpath("omniperf_soc/analysis_configs/"),
default=rocprof_compute_home.joinpath("rocprof_compute_soc/analysis_configs/"),
)
analyze_advanced_group.add_argument(
"--save-dfs",
@@ -519,7 +527,9 @@ Examples:
"-g", dest="debug", action="store_true", help="\t\tDebug single metric."
)
analyze_advanced_group.add_argument(
"--dependency", action="store_true", help="\t\tList the installation dependency."
"--dependency",
action="store_true",
help="\t\tList the installation dependency.",
)
analyze_advanced_group.add_argument(
"--kernel-verbose",
+2 -2
Ver ficheiro
@@ -25,5 +25,5 @@
from pathlib import Path
# NB: Creating a new module to share global vars across modules
omniperf_home = Path(__file__).resolve().parent
prog = "omniperf"
rocprof_compute_home = Path(__file__).resolve().parent
prog = "rocprofiler-compute"
+12 -12
Ver ficheiro
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
"""Main entry point for omniperf"""
"""Main entry point for rocprof-compute"""
##############################################################################bl
# MIT License
@@ -34,7 +34,7 @@ import re
try:
from pathlib import Path
from importlib import metadata
from omniperf_base import Omniperf
from rocprof_compute_base import RocProfCompute
from utils.utils import console_error
except ImportError as e:
# print("Failed to import required modules: " + str(e))
@@ -61,12 +61,12 @@ def verify_deps_version(localVer, desiredVer, operator):
def verify_deps():
"""Utility to read library dependencies from requirements.txt and endeavor
to load them within current execution environment.
Used in top-level omniperf to provide error messages if necessary
Used in top-level rocprofiler-compute to provide error messages if necessary
dependencies are not available."""
# Check which version of python is being used
if sys.version_info[0] < 3 or (sys.version_info[0] == 3 and sys.version_info[1] < 8):
print("[ERROR] Python 3.8 or higher is required to run omniperf."
print("[ERROR] Python 3.8 or higher is required to run rocprofiler-compute."
f" The current version is {sys.version_info[0]}.{sys.version_info[1]}.")
sys.exit(1)
@@ -108,7 +108,7 @@ def verify_deps():
):
print(
f"[ERROR] the '{dependency}' distribution does "
"not meet version requirements to use omniperf."
"not meet version requirements to use rocprofiler-compute."
)
print(" --> version installed :", localVersion)
error = True
@@ -119,7 +119,7 @@ def verify_deps():
"Please verify all of the python dependencies called out "
"in the requirements file"
)
print("are installed locally prior to running omniperf.")
print("are installed locally prior to running rocprofiler-compute.")
print("")
print(f"See: {checkFile}")
sys.exit(1)
@@ -132,17 +132,17 @@ def main():
# verify required python dependencies
verify_deps()
omniperf = Omniperf()
rocprof_compute = RocProfCompute()
mode = omniperf.get_mode()
mode = rocprof_compute.get_mode()
# major omniperf execution modes
# major rocprofiler-compute execution modes
if mode == "profile":
omniperf.run_profiler()
rocprof_compute.run_profiler()
elif mode == "database":
omniperf.update_db()
rocprof_compute.update_db()
elif mode == "analyze":
omniperf.run_analysis()
rocprof_compute.run_analysis()
else:
console_error("Unsupported execution mode")
@@ -151,7 +151,7 @@ class OmniAnalyze_Base:
self.load_options(normalization_filter)
for i, d in enumerate(self.__args.path):
for d in self.__args.path:
w = schema.Workload()
w.sys_info = file_io.load_sys_info(Path(d[0], "sysinfo.csv"))
arch = w.sys_info.iloc[0]["gpu_arch"]
@@ -161,7 +161,7 @@ class OmniAnalyze_Base:
w.avail_ips = w.sys_info["ip_blocks"].item().split("|")
w.dfs = copy.deepcopy(self._arch_configs[arch].dfs)
w.dfs_type = self._arch_configs[arch].dfs_type
self._runs[i] = w
self._runs[d[0]] = w
return self._runs
@@ -184,6 +184,15 @@ class OmniAnalyze_Base:
# validate profiling data
is_workload_empty(dir[0])
# no using same paths
occurances = set()
for dir in self.__args.path:
dir = dir[0]
if dir in occurances:
console_error("You cannot provide the same path twice.")
else:
occurances.add(dir)
# ----------------------------------------------------
# Required methods to be implemented by child classes
# ----------------------------------------------------
@@ -191,7 +200,7 @@ class OmniAnalyze_Base:
def pre_processing(self):
"""Perform initialization prior to analysis."""
console_debug("analysis", "prepping to do some analysis")
console_log("analysis", "deriving Omniperf metrics...")
console_log("analysis", "deriving rocprofiler-compute metrics...")
# initalize output file
self._output = (
open(self.__args.output_file, "w+") if self.__args.output_file else sys.stdout
@@ -202,20 +211,20 @@ class OmniAnalyze_Base:
# set filters
if self.__args.gpu_kernel:
for i, gk in enumerate(self.__args.gpu_kernel):
self._runs[i].filter_kernel_ids = gk
for d, gk in zip(self.__args.path, self.__args.gpu_kernel):
self._runs[d[0]].filter_kernel_ids = gk
if self.__args.gpu_id:
if len(self.__args.gpu_id) == 1 and len(self.__args.path) != 1:
for i in range(len(self.__args.path) - 1):
self.__args.gpu_id.extend(self.__args.gpu_id)
for i, gi in enumerate(self.__args.gpu_id):
self._runs[i].filter_gpu_ids = gi
for d, gi in zip(self.__args.path, self.__args.gpu_id):
self._runs[d[0]].filter_gpu_ids = gi
if self.__args.gpu_dispatch_id:
if len(self.__args.gpu_dispatch_id) == 1 and len(self.__args.path) != 1:
for i in range(len(self.__args.path) - 1):
self.__args.gpu_dispatch_id.extend(self.__args.gpu_dispatch_id)
for i, gd in enumerate(self.__args.gpu_dispatch_id):
self._runs[i].filter_dispatch_ids = gd
for d, gd in zip(self.__args.path, self.__args.gpu_dispatch_id):
self._runs[d[0]].filter_dispatch_ids = gd
@abstractmethod
def run_analysis(self):
@@ -22,7 +22,7 @@
# SOFTWARE.
##############################################################################el
from omniperf_analyze.analysis_base import OmniAnalyze_Base
from rocprof_compute_analyze.analysis_base import OmniAnalyze_Base
from utils.utils import demarcate, console_error
from utils import file_io, parser, tty
from utils.kernel_name_shortener import kernel_name_shortener
@@ -38,25 +38,27 @@ class cli_analysis(OmniAnalyze_Base):
super().pre_processing()
if self.get_args().random_port:
console_error("--gui flag is required to enable --random-port")
for i, d in enumerate(self.get_args().path):
for d in self.get_args().path:
file_io.create_df_kernel_top_stats(
raw_data_dir=d[0],
filter_gpu_ids=self._runs[i].filter_gpu_ids,
filter_dispatch_ids=self._runs[i].filter_dispatch_ids,
filter_gpu_ids=self._runs[d[0]].filter_gpu_ids,
filter_dispatch_ids=self._runs[d[0]].filter_dispatch_ids,
time_unit=self.get_args().time_unit,
max_stat_num=self.get_args().max_stat_num,
kernel_verbose=self.get_args().kernel_verbose,
)
# create 'mega dataframe'
self._runs[i].raw_pmc = file_io.create_df_pmc(
self._runs[d[0]].raw_pmc = file_io.create_df_pmc(
d[0], self.get_args().kernel_verbose, self.get_args().verbose
)
# demangle and overwrite original 'Kernel_Name'
kernel_name_shortener(self._runs[i].raw_pmc, self.get_args().kernel_verbose)
kernel_name_shortener(
self._runs[d[0]].raw_pmc, self.get_args().kernel_verbose
)
# create the loaded table
parser.load_table_data(
workload=self._runs[i],
workload=self._runs[d[0]],
dir=d[0],
is_gui=False,
debug=self.get_args().debug,
@@ -71,13 +73,17 @@ class cli_analysis(OmniAnalyze_Base):
tty.show_kernel_stats(
self.get_args(),
self._runs,
self._arch_configs[self._runs[0].sys_info.iloc[0]["gpu_arch"]],
self._arch_configs[
self._runs[self.get_args().path[0][0]].sys_info.iloc[0]["gpu_arch"]
],
self._output,
)
else:
tty.show_all(
self.get_args(),
self._runs,
self._arch_configs[self._runs[0].sys_info.iloc[0]["gpu_arch"]],
self._arch_configs[
self._runs[self.get_args().path[0][0]].sys_info.iloc[0]["gpu_arch"]
],
self._output,
)
@@ -22,7 +22,7 @@
# SOFTWARE.
##############################################################################el
from omniperf_analyze.analysis_base import OmniAnalyze_Base
from rocprof_compute_analyze.analysis_base import OmniAnalyze_Base
from utils.utils import demarcate, console_debug, console_error
from utils import file_io, parser
from utils.gui import build_bar_chart, build_table_chart
@@ -274,20 +274,20 @@ class webui_analysis(OmniAnalyze_Base):
args = self.get_args()
file_io.create_df_kernel_top_stats(
raw_data_dir=self.dest_dir,
filter_gpu_ids=self._runs[0].filter_gpu_ids,
filter_dispatch_ids=self._runs[0].filter_dispatch_ids,
filter_gpu_ids=self._runs[self.dest_dir].filter_gpu_ids,
filter_dispatch_ids=self._runs[self.dest_dir].filter_dispatch_ids,
time_unit=args.time_unit,
max_stat_num=args.max_stat_num,
kernel_verbose=self.get_args().kernel_verbose,
)
# create 'mega dataframe'
self._runs[0].raw_pmc = file_io.create_df_pmc(
self._runs[self.dest_dir].raw_pmc = file_io.create_df_pmc(
self.dest_dir, self.get_args().kernel_verbose, args.verbose
)
# create the loaded kernel stats
parser.load_kernel_top(self._runs[0], self.dest_dir)
parser.load_kernel_top(self._runs[self.dest_dir], self.dest_dir)
# set architecture
self.arch = self._runs[0].sys_info.iloc[0]["gpu_arch"]
self.arch = self._runs[self.dest_dir].sys_info.iloc[0]["gpu_arch"]
else:
console_error(
@@ -300,9 +300,9 @@ class webui_analysis(OmniAnalyze_Base):
super().run_analysis()
args = self.get_args()
input_filters = {
"kernel": self._runs[0].filter_kernel_ids,
"gpu": self._runs[0].filter_gpu_ids,
"dispatch": self._runs[0].filter_dispatch_ids,
"kernel": self._runs[self.dest_dir].filter_kernel_ids,
"gpu": self._runs[self.dest_dir].filter_gpu_ids,
"dispatch": self._runs[self.dest_dir].filter_dispatch_ids,
"normalization": args.normal_unit,
"top_n": args.max_stat_num,
}

Antes

Largura:  |  Altura:  |  Tamanho: 3.5 KiB

Depois

Largura:  |  Altura:  |  Tamanho: 3.5 KiB

Alguns ficheiros não foram mostrados porque foram modificados demasiados ficheiros neste diff Mostrar mais