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>
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
|
||||
@@ -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: |
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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,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.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.")
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
[](https://github.com/ROCm/omniperf/actions/workflows/ubuntu-jammy.yml)
|
||||
[](https://github.com/ROCm/omniperf/actions/workflows/rhel-8.yml)
|
||||
[](https://github.com/ROCm/omniperf/actions/workflows/mi-rhel9.yml)
|
||||
[](https://rocm.github.io/omniperf/)
|
||||
[](https://github.com/ROCm/rocprofiler-compute/actions/workflows/ubuntu-jammy.yml)
|
||||
[](https://github.com/ROCm/rocprofiler-compute/actions/workflows/rhel-8.yml)
|
||||
[](https://github.com/ROCm/rocprofiler-compute/actions/workflows/mi-rhel9.yml)
|
||||
[](https://rocm.github.io/rocprofiler-compute/)
|
||||
[](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},
|
||||
|
||||
@@ -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 @@
|
||||
@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)
|
||||
@@ -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
|
||||
@@ -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 Starvation
|
||||

|
||||

|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 && \
|
||||
|
||||
@@ -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": ""
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
Antes Anchura: | Altura: | Tamaño: 67 KiB Después Anchura: | Altura: | Tamaño: 67 KiB |
@@ -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%"
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
|
||||
|
||||
@@ -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.
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 Anchura: | Altura: | Tamaño: 197 KiB Después Anchura: | Altura: | Tamaño: 197 KiB |
|
Antes Anchura: | Altura: | Tamaño: 3.5 KiB Después Anchura: | Altura: | Tamaño: 3.5 KiB |
|
Antes Anchura: | Altura: | Tamaño: 187 KiB Después Anchura: | Altura: | Tamaño: 187 KiB |
|
Antes Anchura: | Altura: | Tamaño: 282 KiB Después Anchura: | Altura: | Tamaño: 282 KiB |