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 7f0bb05908e..17da12f29c4 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 f0932a9fa72..368bab50ac0 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 0c0d8755cc4..58d07db5831 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 7306e31f447..5d546d03771 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 9c8a987d76a..593671ee45a 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 2c40cff554f..89a29cd4a54 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 3d85dc07749..2573e49cd8b 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 368bab50ac0..d68c2094545 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 5d546d03771..b99290122e4 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 593671ee45a..8a76704b1fc 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 2573e49cd8b..1bf88cb4ed3 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 d68c2094545..86421c70324 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 86421c70324..5a0f375957e 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 8a76704b1fc..439f5aa1bb2 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 1bf88cb4ed3..e8a335bd765 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 dd47f7d6f41..ed5ac2488f4 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 7c64413a281..6270efcecbd 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 1c1484a0f77..8af8d57842d 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 b99290122e4..45e13c0b6a5 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 439f5aa1bb2..c034d9d46f8 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 45e13c0b6a5..658fbaeb5b6 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 c034d9d46f8..004d1e5610c 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 98907af57b6..9223cae7a9f 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 658fbaeb5b6..4f36028846e 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 004d1e5610c..16943deb3b0 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 9223cae7a9f..ec2e4b10659 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 4f36028846e..59a51997804 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 16943deb3b0..439f5aa1bb2 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 59a51997804..b99290122e4 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()