From 03d3472e09b1f2699db46c3c58f77a52ff7e0ab0 Mon Sep 17 00:00:00 2001 From: "Jonathan R. Madsen" Date: Mon, 16 Jun 2025 19:20:28 -0500 Subject: [PATCH 01/13] Reorganize rocprofv3 python package adding Python version candidates review fix fix test fix remove extra line fix the exception handle fix Lint fail fix installation adding checks to check version format disable test for address sanitizer --- source/bin/CMakeLists.txt | 2 - source/bin/rocprofv3-avail.py | 27 ++++++++++++- source/lib/python/CMakeLists.txt | 1 + .../python/rocprofv3}/CMakeLists.txt | 20 ++++------ .../python/rocprofv3}/__init__.py | 0 .../python/rocprofv3}/avail.py | 0 source/lib/python/utilities.cmake | 25 ++++++++++++ tests/rocprofv3-avail/CMakeLists.txt | 40 ++++++++----------- tests/rocprofv3-avail/validate.py | 17 +++++++- 9 files changed, 89 insertions(+), 43 deletions(-) rename source/{bin/rocprofv3_avail_module => lib/python/rocprofv3}/CMakeLists.txt (66%) rename source/{bin/rocprofv3_avail_module => lib/python/rocprofv3}/__init__.py (100%) rename source/{bin/rocprofv3_avail_module => lib/python/rocprofv3}/avail.py (100%) diff --git a/source/bin/CMakeLists.txt b/source/bin/CMakeLists.txt index 7f0bb05908e3..17da12f29c4b 100644 --- a/source/bin/CMakeLists.txt +++ b/source/bin/CMakeLists.txt @@ -4,8 +4,6 @@ rocprofiler_activate_clang_tidy() -add_subdirectory(rocprofv3_avail_module) - # Adding main rocprofv3 configure_file(rocprofv3.py ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/rocprofv3 @ONLY) diff --git a/source/bin/rocprofv3-avail.py b/source/bin/rocprofv3-avail.py index f0932a9fa72d..368bab50ac0b 100755 --- a/source/bin/rocprofv3-avail.py +++ b/source/bin/rocprofv3-avail.py @@ -25,7 +25,6 @@ import os import argparse import sys -from rocprofv3_avail_module import avail def format_help(formatter, w=120, h=40): @@ -126,7 +125,7 @@ def add_parser_bool_argument(gparser, *args, **kwargs): # Create the parser parser = argparse.ArgumentParser( - description="ROCProfilerV3-avail Run Script", + description="rocprofv3 query tool for agents, counters, pc-sampling, and more", usage="%(prog)s [options] ", epilog=usage_examples, formatter_class=format_help(argparse.RawTextHelpFormatter), @@ -196,6 +195,8 @@ def get_number_columns(max_name_len): def list_basic_agent(args, list_counters): + from rocprofv3 import avail + def print_agent_counter(counters): names_len = [len(counter.name) for counter in counters] names = [ @@ -235,6 +236,8 @@ def print_basic_info(info): def list_pc_sampling(args): + from rocprofv3 import avail + sampling_agents = avail.get_pc_sample_configs() agent_info_map = avail.get_agent_info_map() print("Agents supporting PC Sampling\n") @@ -249,6 +252,8 @@ def list_pc_sampling(args): def info_pc_sampling(args): + from rocprofv3 import avail + sampling_agents = avail.get_pc_sample_configs() agent_info_map = avail.get_agent_info_map() for agent, configs in dict(sorted(sampling_agents.items())).items(): @@ -267,6 +272,8 @@ def info_pc_sampling(args): def listing(args): + from rocprofv3 import avail + def print_agent_counter(counters): names_len = [len(counter.name) for counter in counters] names = [ @@ -306,6 +313,8 @@ def print_agent_counter(counters): def info_pmc(args): + from rocprofv3 import avail + agent_counters = avail.get_counters() agent_info_map = avail.get_agent_info_map() @@ -367,6 +376,8 @@ def process_list(args): def process_pmc_check(args): + from rocprofv3 import avail + def get_device_agent(device_id): for agent, info in agent_info_map.items(): if info["type"] == 2 and info["logical_node_type_id"] == device_id: @@ -458,15 +469,27 @@ def process_qualifiers(pmc): def main(argv=None): + ROCPROFV3_AVAIL_DIR = os.path.dirname(os.path.realpath(__file__)) ROCM_DIR = os.path.dirname(ROCPROFV3_AVAIL_DIR) ROCPROF_LIST_AVAIL_TOOL_LIBRARY = ( f"{ROCM_DIR}/lib/rocprofiler-sdk/librocprofv3-list-avail.so" ) os.environ["ROCPROFILER_METRICS_PATH"] = f"{ROCM_DIR}/share/rocprofiler-sdk" + try: + # try to import rocprofv3 normally + from rocprofv3 import avail + except (ImportError, ModuleNotFoundError): + # if failed, find the python package for this python version + ROCPROFV3_AVAIL_PACKAGE = f"{ROCM_DIR}/lib/python{sys.version_info[0]}.{sys.version_info[1]}/site-packages" + sys.path.append(ROCPROFV3_AVAIL_PACKAGE) + + from rocprofv3 import avail + avail.loadLibrary.libname = os.environ.get( "ROCPROF_LIST_AVAIL_TOOL_LIBRARY", ROCPROF_LIST_AVAIL_TOOL_LIBRARY ) + args = parse_arguments(argv) if args.command: args.func(args) diff --git a/source/lib/python/CMakeLists.txt b/source/lib/python/CMakeLists.txt index 0c0d8755cc4a..58d07db58311 100644 --- a/source/lib/python/CMakeLists.txt +++ b/source/lib/python/CMakeLists.txt @@ -16,3 +16,4 @@ endif() add_subdirectory(roctx) add_subdirectory(rocpd) +add_subdirectory(rocprofv3) diff --git a/source/bin/rocprofv3_avail_module/CMakeLists.txt b/source/lib/python/rocprofv3/CMakeLists.txt similarity index 66% rename from source/bin/rocprofv3_avail_module/CMakeLists.txt rename to source/lib/python/rocprofv3/CMakeLists.txt index 7306e31f447e..5d546d037711 100644 --- a/source/bin/rocprofv3_avail_module/CMakeLists.txt +++ b/source/lib/python/rocprofv3/CMakeLists.txt @@ -20,18 +20,12 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -set(PACKAGE_OUTPUT_DIR - ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/rocprofv3_avail_module) +set(ROCPROFV3_PYTHON_VERSION_CANDIDATES + "3.12;3.11;3.10;3.9;3.8;3.7;3.6" + CACHE STRING "Python versions to search for, newest first") -set(ROCPROFV3_AVAIL_SOURCES __init__.py avail.py) - -foreach(_FILE ${ROCPROFV3_AVAIL_SOURCES}) - configure_file(${CMAKE_CURRENT_LIST_DIR}/${_FILE} ${PACKAGE_OUTPUT_DIR}/${_FILE} - COPYONLY) - install( - FILES ${PACKAGE_OUTPUT_DIR}/${_FILE} - DESTINATION ${CMAKE_INSTALL_BINDIR}/rocprofv3_avail_module - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE - COMPONENT tools) +foreach(_PYTHON_VERSION IN LISTS ROCPROFV3_PYTHON_VERSION_CANDIDATES) + rocprofiler_rocprofv3_python(${_PYTHON_VERSION}) endforeach() + +rocprofiler_reset_python3_cache() diff --git a/source/bin/rocprofv3_avail_module/__init__.py b/source/lib/python/rocprofv3/__init__.py similarity index 100% rename from source/bin/rocprofv3_avail_module/__init__.py rename to source/lib/python/rocprofv3/__init__.py diff --git a/source/bin/rocprofv3_avail_module/avail.py b/source/lib/python/rocprofv3/avail.py similarity index 100% rename from source/bin/rocprofv3_avail_module/avail.py rename to source/lib/python/rocprofv3/avail.py diff --git a/source/lib/python/utilities.cmake b/source/lib/python/utilities.cmake index 9c8a987d76aa..593671ee45a5 100644 --- a/source/lib/python/utilities.cmake +++ b/source/lib/python/utilities.cmake @@ -210,3 +210,28 @@ function(rocprofiler_rocpd_python_bindings _VERSION) DESTINATION ${rocpd_PYTHON_INSTALL_DIRECTORY} COMPONENT rocpd) endfunction() + +function(rocprofiler_rocprofv3_python _VERSION) + message( + STATUS "Creating rocprofiler-sdk rocprofv3 python package for python ${_VERSION}") + if(NOT "${_VERSION}" MATCHES "^([0-9]+)\\.([0-9]+)$") + message( + STATUS + "Bad rocprofiler-sdk rocprofv3 python version ${_VERSION}. Requires ." + ) + endif() + set(rocprofv3_PYTHON_INSTALL_DIRECTORY + ${CMAKE_INSTALL_LIBDIR}/python${_VERSION}/site-packages/rocprofv3) + set(rocprofv3_PYTHON_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/${rocprofv3_PYTHON_INSTALL_DIRECTORY}) + set(rocprofv3_PYTHON_SOURCES __init__.py avail.py) + + foreach(_SOURCE ${rocprofv3_PYTHON_SOURCES}) + configure_file(${CMAKE_CURRENT_LIST_DIR}/${_SOURCE} + ${rocprofv3_PYTHON_OUTPUT_DIRECTORY}/${_SOURCE} COPYONLY) + install( + FILES ${rocprofv3_PYTHON_OUTPUT_DIRECTORY}/${_SOURCE} + DESTINATION ${rocprofv3_PYTHON_INSTALL_DIRECTORY} + COMPONENT tools) + endforeach() +endfunction() diff --git a/tests/rocprofv3-avail/CMakeLists.txt b/tests/rocprofv3-avail/CMakeLists.txt index 2c40cff554fb..89a29cd4a547 100644 --- a/tests/rocprofv3-avail/CMakeLists.txt +++ b/tests/rocprofv3-avail/CMakeLists.txt @@ -78,29 +78,21 @@ set_tests_properties( PROPERTIES TIMEOUT 45 LABELS "integration-tests" ENVIRONMENT "${test-rocprofv3-avail-env}" DISABLED "${IS_DISABLED}") -if(TARGET rocprofv3-list-avail) +add_test(NAME rocprofv3-avail-test-validate + COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/validate.py + --rocm-path ${rocprofiler-sdk_ROOT_DIR}) - add_test(NAME rocprofv3-avail-test-validate - COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/validate.py - --rocm-path ${CMAKE_BINARY_DIR}) +set(test-rocprofv3-avail-validate-env "${PRELOAD_ENV}" "PYTHONPATH=$ENV{PYTHONPATH}") - # for validate, explicitly set ROCPROF_LIST_AVAIL_TOOL_LIBRARY since we copy - # rocprofv3-avail to directory - set(test-rocprofv3-avail-validate-env - "${PRELOAD_ENV}" "PYTHONPATH=$ENV{PYTHONPATH}:${CMAKE_BINARY_DIR}/bin/") - - set_tests_properties( - rocprofv3-avail-test-validate - PROPERTIES TIMEOUT - 45 - LABELS - "integration-tests" - ENVIRONMENT - "${test-rocprofv3-avail-validate-env}" - FAIL_REGULAR_EXPRESSION - "${ROCPROFILER_DEFAULT_FAIL_REGEX}" - DEPENDS - rocprofv3-avail-test-copy-module - DISABLED - "${IS_DISABLED}") -endif() +set_tests_properties( + rocprofv3-avail-test-validate + PROPERTIES TIMEOUT + 45 + LABELS + "integration-tests" + ENVIRONMENT + "${test-rocprofv3-avail-validate-env}" + FAIL_REGULAR_EXPRESSION + "${ROCPROFILER_DEFAULT_FAIL_REGEX}" + DISABLED + "${IS_DISABLED}") diff --git a/tests/rocprofv3-avail/validate.py b/tests/rocprofv3-avail/validate.py index 3d85dc077491..2573e49cd8b7 100644 --- a/tests/rocprofv3-avail/validate.py +++ b/tests/rocprofv3-avail/validate.py @@ -22,16 +22,17 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -import pandas as pd import sys import os import pytest -from rocprofv3_avail_module import avail import ctypes def test_validate_metrics(rocm_path): set_library(rocm_path) + + from rocprofv3 import avail + lib = avail.get_library() agent_counters_dict = avail.get_counters() @@ -54,6 +55,9 @@ def test_validate_metrics(rocm_path): def test_validate_list_pc_sample_config(rocm_path): set_library(rocm_path) + + from rocprofv3 import avail + lib = avail.get_library() pc_sample_configs_dict = avail.get_pc_sample_configs() @@ -73,6 +77,8 @@ def test_validate_list_pc_sample_config(rocm_path): def test_counter_set(capsys, rocm_path): set_library(rocm_path) + from rocprofv3 import avail + def get_counter_names(counter_ids): counter_names = [] @@ -109,6 +115,13 @@ def get_agent_name(agent_id): def set_library(rocm_path): + ROCPROFV3_AVAIL_PACKAGE = ( + f"{rocm_path}/lib/python{sys.version_info[0]}.{sys.version_info[1]}/site-packages" + ) + sys.path.append(ROCPROFV3_AVAIL_PACKAGE) + + from rocprofv3 import avail + ROCPROF_LIST_AVAIL_TOOL_LIBRARY = ( f"{rocm_path}/lib/rocprofiler-sdk/librocprofv3-list-avail.so" ) From 479bf4e340a66938cfee8c176533c90b38809521 Mon Sep 17 00:00:00 2001 From: Sriraksha Nagaraj Date: Tue, 15 Jul 2025 11:29:42 -0500 Subject: [PATCH 02/13] review comments --- source/bin/rocprofv3-avail.py | 2 +- source/lib/python/rocprofv3/CMakeLists.txt | 9 ++------- source/lib/python/utilities.cmake | 18 ++++++------------ tests/rocprofv3-avail/validate.py | 2 +- 4 files changed, 10 insertions(+), 21 deletions(-) diff --git a/source/bin/rocprofv3-avail.py b/source/bin/rocprofv3-avail.py index 368bab50ac0b..d68c2094545b 100755 --- a/source/bin/rocprofv3-avail.py +++ b/source/bin/rocprofv3-avail.py @@ -481,7 +481,7 @@ def main(argv=None): from rocprofv3 import avail except (ImportError, ModuleNotFoundError): # if failed, find the python package for this python version - ROCPROFV3_AVAIL_PACKAGE = f"{ROCM_DIR}/lib/python{sys.version_info[0]}.{sys.version_info[1]}/site-packages" + ROCPROFV3_AVAIL_PACKAGE = f"{ROCM_DIR}/lib/python{sys.version_info[0]}/site-packages" sys.path.append(ROCPROFV3_AVAIL_PACKAGE) from rocprofv3 import avail diff --git a/source/lib/python/rocprofv3/CMakeLists.txt b/source/lib/python/rocprofv3/CMakeLists.txt index 5d546d037711..b99290122e48 100644 --- a/source/lib/python/rocprofv3/CMakeLists.txt +++ b/source/lib/python/rocprofv3/CMakeLists.txt @@ -20,12 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -set(ROCPROFV3_PYTHON_VERSION_CANDIDATES - "3.12;3.11;3.10;3.9;3.8;3.7;3.6" - CACHE STRING "Python versions to search for, newest first") - -foreach(_PYTHON_VERSION IN LISTS ROCPROFV3_PYTHON_VERSION_CANDIDATES) - rocprofiler_rocprofv3_python(${_PYTHON_VERSION}) -endforeach() +set(rocprofv3_PYTHON_SOURCES __init__.py avail.py) +rocprofiler_rocprofv3_python(${rocprofv3_PYTHON_SOURCES}) rocprofiler_reset_python3_cache() diff --git a/source/lib/python/utilities.cmake b/source/lib/python/utilities.cmake index 593671ee45a5..8a76704b1fc3 100644 --- a/source/lib/python/utilities.cmake +++ b/source/lib/python/utilities.cmake @@ -211,21 +211,15 @@ function(rocprofiler_rocpd_python_bindings _VERSION) COMPONENT rocpd) endfunction() -function(rocprofiler_rocprofv3_python _VERSION) - message( - STATUS "Creating rocprofiler-sdk rocprofv3 python package for python ${_VERSION}") - if(NOT "${_VERSION}" MATCHES "^([0-9]+)\\.([0-9]+)$") - message( - STATUS - "Bad rocprofiler-sdk rocprofv3 python version ${_VERSION}. Requires ." - ) - endif() +function(rocprofiler_rocprofv3_python) set(rocprofv3_PYTHON_INSTALL_DIRECTORY - ${CMAKE_INSTALL_LIBDIR}/python${_VERSION}/site-packages/rocprofv3) + ${CMAKE_INSTALL_LIBDIR}/python3/site-packages/rocprofv3) set(rocprofv3_PYTHON_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${rocprofv3_PYTHON_INSTALL_DIRECTORY}) - set(rocprofv3_PYTHON_SOURCES __init__.py avail.py) - + set(rocprofv3_PYTHON_SOURCES ${ARGN}) + if(NOT rocprofv3_PYTHON_SOURCES) + message(FATAL_ERROR "rocprofiler_rocprofv3_python requires specifying source files") + endif() foreach(_SOURCE ${rocprofv3_PYTHON_SOURCES}) configure_file(${CMAKE_CURRENT_LIST_DIR}/${_SOURCE} ${rocprofv3_PYTHON_OUTPUT_DIRECTORY}/${_SOURCE} COPYONLY) diff --git a/tests/rocprofv3-avail/validate.py b/tests/rocprofv3-avail/validate.py index 2573e49cd8b7..1bf88cb4ed39 100644 --- a/tests/rocprofv3-avail/validate.py +++ b/tests/rocprofv3-avail/validate.py @@ -116,7 +116,7 @@ def get_agent_name(agent_id): def set_library(rocm_path): ROCPROFV3_AVAIL_PACKAGE = ( - f"{rocm_path}/lib/python{sys.version_info[0]}.{sys.version_info[1]}/site-packages" + f"{rocm_path}/lib/python{sys.version_info[0]}/site-packages" ) sys.path.append(ROCPROFV3_AVAIL_PACKAGE) From 705692f29150d2454b154ea78e53ef79e42710f7 Mon Sep 17 00:00:00 2001 From: Sriraksha Nagaraj Date: Tue, 15 Jul 2025 12:00:26 -0500 Subject: [PATCH 03/13] Removing extra lines --- source/bin/rocprofv3-avail.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/bin/rocprofv3-avail.py b/source/bin/rocprofv3-avail.py index d68c2094545b..86421c703249 100755 --- a/source/bin/rocprofv3-avail.py +++ b/source/bin/rocprofv3-avail.py @@ -469,7 +469,6 @@ def process_qualifiers(pmc): def main(argv=None): - ROCPROFV3_AVAIL_DIR = os.path.dirname(os.path.realpath(__file__)) ROCM_DIR = os.path.dirname(ROCPROFV3_AVAIL_DIR) ROCPROF_LIST_AVAIL_TOOL_LIBRARY = ( @@ -489,7 +488,6 @@ def main(argv=None): avail.loadLibrary.libname = os.environ.get( "ROCPROF_LIST_AVAIL_TOOL_LIBRARY", ROCPROF_LIST_AVAIL_TOOL_LIBRARY ) - args = parse_arguments(argv) if args.command: args.func(args) From f50c459f3d0a4a39e304d1c28fce30327992b221 Mon Sep 17 00:00:00 2001 From: Sriraksha Nagaraj Date: Tue, 15 Jul 2025 12:08:48 -0500 Subject: [PATCH 04/13] fix format --- source/bin/rocprofv3-avail.py | 8 +++++--- source/lib/python/utilities.cmake | 3 ++- tests/rocprofv3-avail/validate.py | 4 +--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/source/bin/rocprofv3-avail.py b/source/bin/rocprofv3-avail.py index 86421c703249..5a0f375957ed 100755 --- a/source/bin/rocprofv3-avail.py +++ b/source/bin/rocprofv3-avail.py @@ -196,7 +196,7 @@ def get_number_columns(max_name_len): def list_basic_agent(args, list_counters): from rocprofv3 import avail - + def print_agent_counter(counters): names_len = [len(counter.name) for counter in counters] names = [ @@ -273,7 +273,7 @@ def info_pc_sampling(args): def listing(args): from rocprofv3 import avail - + def print_agent_counter(counters): names_len = [len(counter.name) for counter in counters] names = [ @@ -480,7 +480,9 @@ def main(argv=None): from rocprofv3 import avail except (ImportError, ModuleNotFoundError): # if failed, find the python package for this python version - ROCPROFV3_AVAIL_PACKAGE = f"{ROCM_DIR}/lib/python{sys.version_info[0]}/site-packages" + ROCPROFV3_AVAIL_PACKAGE = ( + f"{ROCM_DIR}/lib/python{sys.version_info[0]}/site-packages" + ) sys.path.append(ROCPROFV3_AVAIL_PACKAGE) from rocprofv3 import avail diff --git a/source/lib/python/utilities.cmake b/source/lib/python/utilities.cmake index 8a76704b1fc3..439f5aa1bb21 100644 --- a/source/lib/python/utilities.cmake +++ b/source/lib/python/utilities.cmake @@ -218,7 +218,8 @@ function(rocprofiler_rocprofv3_python) ${PROJECT_BINARY_DIR}/${rocprofv3_PYTHON_INSTALL_DIRECTORY}) set(rocprofv3_PYTHON_SOURCES ${ARGN}) if(NOT rocprofv3_PYTHON_SOURCES) - message(FATAL_ERROR "rocprofiler_rocprofv3_python requires specifying source files") + message( + FATAL_ERROR "rocprofiler_rocprofv3_python requires specifying source files") endif() foreach(_SOURCE ${rocprofv3_PYTHON_SOURCES}) configure_file(${CMAKE_CURRENT_LIST_DIR}/${_SOURCE} diff --git a/tests/rocprofv3-avail/validate.py b/tests/rocprofv3-avail/validate.py index 1bf88cb4ed39..e8a335bd7653 100644 --- a/tests/rocprofv3-avail/validate.py +++ b/tests/rocprofv3-avail/validate.py @@ -115,9 +115,7 @@ def get_agent_name(agent_id): def set_library(rocm_path): - ROCPROFV3_AVAIL_PACKAGE = ( - f"{rocm_path}/lib/python{sys.version_info[0]}/site-packages" - ) + ROCPROFV3_AVAIL_PACKAGE = f"{rocm_path}/lib/python{sys.version_info[0]}/site-packages" sys.path.append(ROCPROFV3_AVAIL_PACKAGE) from rocprofv3 import avail From 1f7d9ecbdba3067ecebcc71021a4b2f0127fe9be Mon Sep 17 00:00:00 2001 From: "Jonathan R. Madsen" Date: Wed, 23 Jul 2025 16:10:41 -0500 Subject: [PATCH 05/13] Add lib/python3/site-packages to PYTHONPATH in setup-env.sh --- cmake/Templates/modulefile.in | 2 +- cmake/Templates/setup-env.sh.in | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/Templates/modulefile.in b/cmake/Templates/modulefile.in index dd47f7d6f413..ed5ac2488f45 100644 --- a/cmake/Templates/modulefile.in +++ b/cmake/Templates/modulefile.in @@ -12,5 +12,5 @@ setenv @PACKAGE_NAME_UNDERSCORED@_ROOT "${ROOT}" prepend-path CMAKE_PREFIX_PATH "${ROOT}" prepend-path PATH "${ROOT}/bin" prepend-path LD_LIBRARY_PATH "${ROOT}/@CMAKE_INSTALL_LIBDIR@" -prepend-path PYTHONPATH "${ROOT}/@CMAKE_INSTALL_PYTHONDIR@" +prepend-path PYTHONPATH "${ROOT}/@CMAKE_INSTALL_LIBDIR@/python3/site-packages" setenv @PACKAGE_NAME_UNDERSCORED@_DIR "${ROOT}/@CMAKE_INSTALL_LIBDIR@/cmake/@PACKAGE_NAME@" diff --git a/cmake/Templates/setup-env.sh.in b/cmake/Templates/setup-env.sh.in index 7c64413a281c..6270efcecbdf 100644 --- a/cmake/Templates/setup-env.sh.in +++ b/cmake/Templates/setup-env.sh.in @@ -27,9 +27,9 @@ LD_LIBRARY_PATH=${BASEDIR}/@CMAKE_INSTALL_LIBDIR@:${LD_LIBRARY_PATH} CMAKE_PREFIX_PATH=${BASEDIR}:${CMAKE_PREFIX_PATH} if [ -z "@CMAKE_INSTALL_PYTHONDIR@" ]; then - PYTHONPATH=$(@PACKAGE_NAME_UNDERSCORED@_get_python3_path):${PYTHONPATH} + PYTHONPATH=$(@PACKAGE_NAME_UNDERSCORED@_get_python3_path):${BASEDIR}/@CMAKE_INSTALL_LIBDIR@/python3/site-packages:${PYTHONPATH} else - PYTHONPATH=${BASEDIR}/@CMAKE_INSTALL_PYTHONDIR@:${PYTHONPATH} + PYTHONPATH=${BASEDIR}/@CMAKE_INSTALL_PYTHONDIR@:${BASEDIR}/@CMAKE_INSTALL_LIBDIR@/python3/site-packages:${PYTHONPATH} fi unset @PACKAGE_NAME_UNDERSCORED@_get_python3_path From 6d3361fe82c4c4d8b9331e85f80d6d4fe8dc3af9 Mon Sep 17 00:00:00 2001 From: Vignesh Edithal Date: Mon, 15 Sep 2025 08:57:45 -0400 Subject: [PATCH 06/13] rocprof-compute update rocprofv3 avail lib path --- .../src/rocprof_compute_soc/soc_base.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/projects/rocprofiler-compute/src/rocprof_compute_soc/soc_base.py b/projects/rocprofiler-compute/src/rocprof_compute_soc/soc_base.py index 1c1484a0f770..8af8d57842dc 100644 --- a/projects/rocprofiler-compute/src/rocprof_compute_soc/soc_base.py +++ b/projects/rocprofiler-compute/src/rocprof_compute_soc/soc_base.py @@ -548,18 +548,13 @@ def get_rocprof_supported_counters(self): ) sys.path.append( str( - Path(self.get_args().rocprofiler_sdk_library_path).parent.parent - / "bin" + Path(self.get_args().rocprofiler_sdk_library_path).parent + / f"python{sys.version_info.major}.{sys.version_info.minor}" + / "site-packages" ) ) - from rocprofv3_avail_module import avail + from rocprofv3 import avail - avail.loadLibrary.libname = str( - Path(self.get_args().rocprofiler_sdk_library_path).parent.parent - / "lib" - / "rocprofiler-sdk" - / "librocprofv3-list-avail.so" - ) counters = avail.get_counters() rocprof_counters = { counter.name From cd9263725d267b2de17c1196f7ee56c8fe88d3ad Mon Sep 17 00:00:00 2001 From: Vignesh Edithal Date: Mon, 15 Sep 2025 16:01:14 -0400 Subject: [PATCH 07/13] Make rocprofv3 python binding build commands consistent with other python bindings --- .../source/lib/python/rocprofv3/CMakeLists.txt | 4 +++- projects/rocprofiler-sdk/source/lib/python/utilities.cmake | 7 +++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt b/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt index b99290122e48..45e13c0b6a5f 100644 --- a/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt +++ b/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt @@ -21,6 +21,8 @@ # SOFTWARE. set(rocprofv3_PYTHON_SOURCES __init__.py avail.py) -rocprofiler_rocprofv3_python(${rocprofv3_PYTHON_SOURCES}) +foreach(_PYTHON_VERSION ${ROCPROFILER_PYTHON_VERSIONS}) + rocprofiler_rocprofv3_python(${_PYTHON_VERSION}) +endforeach() rocprofiler_reset_python3_cache() diff --git a/projects/rocprofiler-sdk/source/lib/python/utilities.cmake b/projects/rocprofiler-sdk/source/lib/python/utilities.cmake index 439f5aa1bb21..c034d9d46f8b 100644 --- a/projects/rocprofiler-sdk/source/lib/python/utilities.cmake +++ b/projects/rocprofiler-sdk/source/lib/python/utilities.cmake @@ -211,12 +211,15 @@ function(rocprofiler_rocpd_python_bindings _VERSION) COMPONENT rocpd) endfunction() -function(rocprofiler_rocprofv3_python) +function(rocprofiler_rocprofv3_python _VERSION) + message( + STATUS "Building rocprofiler-sdk rocprofv3 python bindings for python ${_VERSION}") + rocprofiler_find_python3(${_VERSION} QUIET) set(rocprofv3_PYTHON_INSTALL_DIRECTORY ${CMAKE_INSTALL_LIBDIR}/python3/site-packages/rocprofv3) set(rocprofv3_PYTHON_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${rocprofv3_PYTHON_INSTALL_DIRECTORY}) - set(rocprofv3_PYTHON_SOURCES ${ARGN}) + set(rocprofv3_PYTHON_SOURCES __init__.py avail.py) if(NOT rocprofv3_PYTHON_SOURCES) message( FATAL_ERROR "rocprofiler_rocprofv3_python requires specifying source files") From a001652b04562b76568448977c034839079ae8c3 Mon Sep 17 00:00:00 2001 From: Vignesh Edithal Date: Mon, 15 Sep 2025 16:18:49 -0400 Subject: [PATCH 08/13] fix cmake --- .../rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt | 1 - projects/rocprofiler-sdk/source/lib/python/utilities.cmake | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt b/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt index 45e13c0b6a5f..658fbaeb5b62 100644 --- a/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt +++ b/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt @@ -20,7 +20,6 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -set(rocprofv3_PYTHON_SOURCES __init__.py avail.py) foreach(_PYTHON_VERSION ${ROCPROFILER_PYTHON_VERSIONS}) rocprofiler_rocprofv3_python(${_PYTHON_VERSION}) endforeach() diff --git a/projects/rocprofiler-sdk/source/lib/python/utilities.cmake b/projects/rocprofiler-sdk/source/lib/python/utilities.cmake index c034d9d46f8b..004d1e5610cf 100644 --- a/projects/rocprofiler-sdk/source/lib/python/utilities.cmake +++ b/projects/rocprofiler-sdk/source/lib/python/utilities.cmake @@ -216,7 +216,7 @@ function(rocprofiler_rocprofv3_python _VERSION) STATUS "Building rocprofiler-sdk rocprofv3 python bindings for python ${_VERSION}") rocprofiler_find_python3(${_VERSION} QUIET) set(rocprofv3_PYTHON_INSTALL_DIRECTORY - ${CMAKE_INSTALL_LIBDIR}/python3/site-packages/rocprofv3) + ${CMAKE_INSTALL_LIBDIR}/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages/rocprofv3) set(rocprofv3_PYTHON_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${rocprofv3_PYTHON_INSTALL_DIRECTORY}) set(rocprofv3_PYTHON_SOURCES __init__.py avail.py) From 70039243700ca525a88f93b15d95ba6396e04ad5 Mon Sep 17 00:00:00 2001 From: Vignesh Edithal Date: Mon, 15 Sep 2025 16:37:57 -0400 Subject: [PATCH 09/13] fix rocprof-compute --- .../rocprofiler-compute/src/rocprof_compute_soc/soc_base.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/projects/rocprofiler-compute/src/rocprof_compute_soc/soc_base.py b/projects/rocprofiler-compute/src/rocprof_compute_soc/soc_base.py index 98907af57b61..9223cae7a9f8 100644 --- a/projects/rocprofiler-compute/src/rocprof_compute_soc/soc_base.py +++ b/projects/rocprofiler-compute/src/rocprof_compute_soc/soc_base.py @@ -524,6 +524,11 @@ def get_rocprof_supported_counters(self) -> set[str]: ) from rocprofv3 import avail + avail.loadLibrary.libname = str( + Path(args.rocprofiler_sdk_library_path).parent + / "rocprofiler-sdk" + / "librocprofv3-list-avail.so" + ) counters = avail.get_counters() rocprof_counters = { counter.name From e25a222917cf89a140ea820771ef07ec34f90f70 Mon Sep 17 00:00:00 2001 From: Vignesh Edithal Date: Mon, 15 Sep 2025 17:08:17 -0400 Subject: [PATCH 10/13] revert cmake changes --- .../source/lib/python/rocprofv3/CMakeLists.txt | 5 ++--- .../rocprofiler-sdk/source/lib/python/utilities.cmake | 9 ++++----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt b/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt index 658fbaeb5b62..4f36028846ec 100644 --- a/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt +++ b/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt @@ -20,8 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -foreach(_PYTHON_VERSION ${ROCPROFILER_PYTHON_VERSIONS}) - rocprofiler_rocprofv3_python(${_PYTHON_VERSION}) -endforeach() +set(rocprofv3_PYTHON_SOURCES __init__.py avail.py) +rocprofiler_rocprofv3_python(${_PYTHON_SOURCES}) rocprofiler_reset_python3_cache() diff --git a/projects/rocprofiler-sdk/source/lib/python/utilities.cmake b/projects/rocprofiler-sdk/source/lib/python/utilities.cmake index 004d1e5610cf..16943deb3b07 100644 --- a/projects/rocprofiler-sdk/source/lib/python/utilities.cmake +++ b/projects/rocprofiler-sdk/source/lib/python/utilities.cmake @@ -211,15 +211,14 @@ function(rocprofiler_rocpd_python_bindings _VERSION) COMPONENT rocpd) endfunction() -function(rocprofiler_rocprofv3_python _VERSION) +function(rocprofiler_rocprofv3_python) message( - STATUS "Building rocprofiler-sdk rocprofv3 python bindings for python ${_VERSION}") - rocprofiler_find_python3(${_VERSION} QUIET) + STATUS "Building rocprofiler-sdk rocprofv3 python bindings for python3") set(rocprofv3_PYTHON_INSTALL_DIRECTORY - ${CMAKE_INSTALL_LIBDIR}/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages/rocprofv3) + ${CMAKE_INSTALL_LIBDIR}/python3/site-packages/rocprofv3) set(rocprofv3_PYTHON_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${rocprofv3_PYTHON_INSTALL_DIRECTORY}) - set(rocprofv3_PYTHON_SOURCES __init__.py avail.py) + set(rocprofv3_PYTHON_SOURCES ${ARGN}) if(NOT rocprofv3_PYTHON_SOURCES) message( FATAL_ERROR "rocprofiler_rocprofv3_python requires specifying source files") From 6260e4041007cc621923ec8f4e06d603c6c3fe8a Mon Sep 17 00:00:00 2001 From: Vignesh Edithal Date: Mon, 15 Sep 2025 17:09:02 -0400 Subject: [PATCH 11/13] fix rocprofv3 avail python library --- .../rocprofiler-compute/src/rocprof_compute_soc/soc_base.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/projects/rocprofiler-compute/src/rocprof_compute_soc/soc_base.py b/projects/rocprofiler-compute/src/rocprof_compute_soc/soc_base.py index 9223cae7a9f8..ec2e4b106598 100644 --- a/projects/rocprofiler-compute/src/rocprof_compute_soc/soc_base.py +++ b/projects/rocprofiler-compute/src/rocprof_compute_soc/soc_base.py @@ -518,8 +518,7 @@ def get_rocprof_supported_counters(self) -> set[str]: sys.path.append( str( Path(self.get_args().rocprofiler_sdk_library_path).parent - / f"python{sys.version_info.major}.{sys.version_info.minor}" - / "site-packages" + / "python3/site-packages" ) ) from rocprofv3 import avail From 538b07a28fa3ae7a1f5fefd4b4b1985acb899870 Mon Sep 17 00:00:00 2001 From: Vignesh Edithal Date: Mon, 15 Sep 2025 17:23:42 -0400 Subject: [PATCH 12/13] fix cmake --- .../rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt | 2 +- projects/rocprofiler-sdk/source/lib/python/utilities.cmake | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt b/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt index 4f36028846ec..59a519978042 100644 --- a/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt +++ b/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt @@ -21,6 +21,6 @@ # SOFTWARE. set(rocprofv3_PYTHON_SOURCES __init__.py avail.py) -rocprofiler_rocprofv3_python(${_PYTHON_SOURCES}) +rocprofiler_rocprofv3_python(${_rocprofv3_PYTHON_SOURCES}) rocprofiler_reset_python3_cache() diff --git a/projects/rocprofiler-sdk/source/lib/python/utilities.cmake b/projects/rocprofiler-sdk/source/lib/python/utilities.cmake index 16943deb3b07..439f5aa1bb21 100644 --- a/projects/rocprofiler-sdk/source/lib/python/utilities.cmake +++ b/projects/rocprofiler-sdk/source/lib/python/utilities.cmake @@ -212,8 +212,6 @@ function(rocprofiler_rocpd_python_bindings _VERSION) endfunction() function(rocprofiler_rocprofv3_python) - message( - STATUS "Building rocprofiler-sdk rocprofv3 python bindings for python3") set(rocprofv3_PYTHON_INSTALL_DIRECTORY ${CMAKE_INSTALL_LIBDIR}/python3/site-packages/rocprofv3) set(rocprofv3_PYTHON_OUTPUT_DIRECTORY From 88be74d84422c24bc2a99df265f552711f8dff37 Mon Sep 17 00:00:00 2001 From: Vignesh Edithal Date: Mon, 15 Sep 2025 17:24:43 -0400 Subject: [PATCH 13/13] fix cmake --- .../rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt b/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt index 59a519978042..b99290122e48 100644 --- a/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt +++ b/projects/rocprofiler-sdk/source/lib/python/rocprofv3/CMakeLists.txt @@ -21,6 +21,6 @@ # SOFTWARE. set(rocprofv3_PYTHON_SOURCES __init__.py avail.py) -rocprofiler_rocprofv3_python(${_rocprofv3_PYTHON_SOURCES}) +rocprofiler_rocprofv3_python(${rocprofv3_PYTHON_SOURCES}) rocprofiler_reset_python3_cache()