Replace cmake-format with gersemi in rocprofiler-compute-formatting.yml (#1053)
* Replace cmake-format with gersemi in rocprofiler-compute-formatting.yml * Run gersemi formatting on CMakeLists.txt files * Remove .cmake-format.yaml, add .gersemirc file * Add more options to .gersemirc * Add new line to .gersemirc * Add new line to CMakeLists.txt * Run gersemi again with new options
This commit is contained in:
zatwierdzone przez
GitHub
rodzic
538528d1e5
commit
eebf5ead8c
@@ -1,4 +1,3 @@
|
||||
|
||||
name: rocprofiler-compute Formatting
|
||||
|
||||
on:
|
||||
@@ -9,6 +8,7 @@ on:
|
||||
- 'projects/rocprofiler-compute/**'
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/rocprofiler-compute-formatting.yml'
|
||||
- 'projects/rocprofiler-compute/**'
|
||||
|
||||
concurrency:
|
||||
@@ -65,14 +65,14 @@ jobs:
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y python3-pip
|
||||
python3 -m pip install cmake-format
|
||||
- name: cmake-format
|
||||
python3 -m pip install gersemi
|
||||
- name: gersemi
|
||||
working-directory: projects/rocprofiler-compute
|
||||
run: |
|
||||
set +e
|
||||
cmake-format -i $(find . -type f | egrep 'CMakeLists.txt|\.cmake$')
|
||||
gersemi -i $(find . -type f | egrep 'CMakeLists.txt|\.cmake$')
|
||||
if [ $(git diff | wc -l) -gt 0 ]; then
|
||||
echo -e "\nError! CMake code not formatted. Run cmake-format...\n"
|
||||
echo -e "\nError! CMake code not formatted. Run gersemi...\n"
|
||||
echo -e "\nFiles:\n"
|
||||
git diff --name-only
|
||||
echo -e "\nFull diff:\n"
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
parse:
|
||||
additional_commands: {}
|
||||
override_spec: {}
|
||||
vartags: []
|
||||
proptags: []
|
||||
format:
|
||||
disable: false
|
||||
line_width: 90
|
||||
tab_size: 4
|
||||
use_tabchars: false
|
||||
fractional_tab_policy: use-space
|
||||
max_subgroups_hwrap: 2
|
||||
max_pargs_hwrap: 6
|
||||
max_rows_cmdline: 2
|
||||
separate_ctrl_name_with_space: false
|
||||
separate_fn_name_with_space: false
|
||||
dangle_parens: false
|
||||
dangle_align: child
|
||||
min_prefix_chars: 4
|
||||
max_prefix_chars: 10
|
||||
max_lines_hwrap: 2
|
||||
line_ending: unix
|
||||
command_case: lower
|
||||
keyword_case: upper
|
||||
always_wrap: []
|
||||
enable_sort: true
|
||||
autosort: false
|
||||
require_valid_layout: false
|
||||
layout_passes: {}
|
||||
markup:
|
||||
bullet_char: '-'
|
||||
enum_char: '*'
|
||||
first_comment_is_literal: true
|
||||
literal_comment_pattern: ^#
|
||||
fence_pattern: ^\s*([`~]{3}[`~]*)(.*)$
|
||||
ruler_pattern: ^\s*[^\w\s]{3}.*[^\w\s]{3}$
|
||||
explicit_trailing_pattern: '#<'
|
||||
hashruler_min_length: 10
|
||||
canonicalize_hashrulers: true
|
||||
enable_markup: true
|
||||
lint:
|
||||
disabled_codes: []
|
||||
function_pattern: '[0-9a-z_]+'
|
||||
macro_pattern: '[0-9A-Z_]+'
|
||||
global_var_pattern: '[A-Z][0-9A-Z_]+'
|
||||
internal_var_pattern: _[A-Z][0-9A-Z_]+
|
||||
local_var_pattern: '[a-z][a-z0-9_]+'
|
||||
private_var_pattern: _[0-9a-z_]+
|
||||
public_var_pattern: '[A-Z][0-9A-Z_]+'
|
||||
argument_var_pattern: '[a-z][a-z0-9_]+'
|
||||
keyword_pattern: '[A-Z][0-9A-Z_]+'
|
||||
max_conditionals_custom_parser: 2
|
||||
min_statement_spacing: 1
|
||||
max_statement_spacing: 2
|
||||
max_returns: 6
|
||||
max_branches: 12
|
||||
max_arguments: 5
|
||||
max_localvars: 15
|
||||
max_statements: 50
|
||||
encode:
|
||||
emit_byteorder_mark: false
|
||||
input_encoding: utf-8
|
||||
output_encoding: utf-8
|
||||
misc:
|
||||
per_command: {}
|
||||
@@ -0,0 +1,7 @@
|
||||
# yaml-language-server: $schema=https://raw.githubusercontent.com/BlankSpruce/gersemi/0.19.3/gersemi/configuration.schema.json
|
||||
|
||||
warn_about_unknown_commands: false
|
||||
indent: 4
|
||||
line_length: 90
|
||||
disable_formatting: false
|
||||
list_expansion: favour-inlining
|
||||
@@ -1,7 +1,9 @@
|
||||
cmake_minimum_required(VERSION 3.19 FATAL_ERROR)
|
||||
|
||||
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND CMAKE_CURRENT_SOURCE_DIR STREQUAL
|
||||
CMAKE_SOURCE_DIR)
|
||||
if(
|
||||
CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR
|
||||
AND CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR
|
||||
)
|
||||
set(MSG "")
|
||||
message(STATUS "Warning! Building from the source directory is not recommended")
|
||||
message(STATUS "If unintended, please remove 'CMakeCache.txt' and 'CMakeFiles'")
|
||||
@@ -17,8 +19,13 @@ message(STATUS "Hostname: ${LOCALHOST}")
|
||||
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(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
|
||||
"([0-9]+)\.([0-9]+)\.([0-9]+)(.*)"
|
||||
"\\1.\\2.\\3"
|
||||
ROCPROFCOMPUTE_VERSION
|
||||
"${FULL_VERSION_STRING}"
|
||||
)
|
||||
|
||||
# string(REGEX REPLACE "(${ROCPROFCOMPUTE_VERSION})(.*)" "\\2"
|
||||
# ROCPROFCOMPUTE_VERSION_TWEAK
|
||||
@@ -32,7 +39,8 @@ project(
|
||||
LANGUAGES C
|
||||
DESCRIPTION
|
||||
"A kernel-level profiling tool for machine learning/HPC workloads running on AMD MI GPUs"
|
||||
HOMEPAGE_URL "https://github.com/ROCm/rocprofiler-compute")
|
||||
HOMEPAGE_URL "https://github.com/ROCm/rocprofiler-compute"
|
||||
)
|
||||
|
||||
set(PACKAGE_NAME "rocprofiler-compute")
|
||||
set(PACKAGE_NAME_UNDERSCORE "rocprofiler_compute")
|
||||
@@ -45,16 +53,18 @@ include(GNUInstallDirs)
|
||||
execute_process(
|
||||
COMMAND git log --pretty=format:%h -n 1
|
||||
OUTPUT_VARIABLE ROCPROFCOMPUTE_GIT_REV
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
message(STATUS "Git revision: ${ROCPROFCOMPUTE_GIT_REV}")
|
||||
configure_file(${PROJECT_SOURCE_DIR}/cmake/VERSION.sha.in
|
||||
${PROJECT_SOURCE_DIR}/VERSION.sha @ONLY)
|
||||
configure_file(
|
||||
${PROJECT_SOURCE_DIR}/cmake/VERSION.sha.in
|
||||
${PROJECT_SOURCE_DIR}/VERSION.sha
|
||||
@ONLY
|
||||
)
|
||||
|
||||
set(CMAKE_BUILD_TYPE "Release")
|
||||
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set(CMAKE_INSTALL_PREFIX
|
||||
"/opt/rocm"
|
||||
CACHE PATH "default install path" FORCE)
|
||||
set(CMAKE_INSTALL_PREFIX "/opt/rocm" CACHE PATH "default install path" FORCE)
|
||||
endif()
|
||||
message(STATUS "Installation path: ${CMAKE_INSTALL_PREFIX}")
|
||||
|
||||
@@ -62,10 +72,7 @@ option(CHECK_PYTHON_DEPS "Verify necessary python dependencies" ON)
|
||||
if(CHECK_PYTHON_DEPS)
|
||||
# Python 3 is required
|
||||
message(STATUS "Detecting Python interpreter...")
|
||||
find_package(
|
||||
Python3 3.8
|
||||
COMPONENTS Interpreter
|
||||
REQUIRED)
|
||||
find_package(Python3 3.8 COMPONENTS Interpreter REQUIRED)
|
||||
|
||||
# Allow user-provided python search path
|
||||
if(DEFINED PYTHON_DEPS)
|
||||
@@ -95,8 +102,10 @@ if(CHECK_PYTHON_DEPS)
|
||||
endif()
|
||||
execute_process(
|
||||
COMMAND ${Python3_EXECUTABLE} -c "import ${PACKAGE}"
|
||||
OUTPUT_QUIET ERROR_QUIET
|
||||
RESULT_VARIABLE EXIT_CODE)
|
||||
OUTPUT_QUIET
|
||||
ERROR_QUIET
|
||||
RESULT_VARIABLE EXIT_CODE
|
||||
)
|
||||
if(${EXIT_CODE} EQUAL 0)
|
||||
message(STATUS "${ARGV0} = yes")
|
||||
else()
|
||||
@@ -120,15 +129,16 @@ if(CHECK_PYTHON_DEPS)
|
||||
else()
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"\nNecessary Python package dependencies not found. Please install required dependencies "
|
||||
"above using your favorite package manager. If using pip, consider running:\n"
|
||||
"python3 -m pip install -r requirements.txt\n"
|
||||
"at the top-level of this repository. If preparing a shared installation for "
|
||||
"multiple users, consider adding the -t <target-dir> option to install necessary dependencies "
|
||||
"into a shared directory, e.g.\n"
|
||||
"python3 -m pip install -t <shared-install-path> -r requirements.txt\n"
|
||||
"Note that the -DPYTHON_DEPS=<shared-install-path> can be used to provide an "
|
||||
"additional search path to cmake for python packages.")
|
||||
"\nNecessary Python package dependencies not found. Please install required dependencies "
|
||||
"above using your favorite package manager. If using pip, consider running:\n"
|
||||
"python3 -m pip install -r requirements.txt\n"
|
||||
"at the top-level of this repository. If preparing a shared installation for "
|
||||
"multiple users, consider adding the -t <target-dir> option to install necessary dependencies "
|
||||
"into a shared directory, e.g.\n"
|
||||
"python3 -m pip install -t <shared-install-path> -r requirements.txt\n"
|
||||
"Note that the -DPYTHON_DEPS=<shared-install-path> can be used to provide an "
|
||||
"additional search path to cmake for python packages."
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -138,23 +148,29 @@ endif()
|
||||
|
||||
set(MOD_INSTALL_PATH
|
||||
"${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/modulefiles/${PROJECT_NAME}"
|
||||
CACHE STRING "Install path for modulefile")
|
||||
CACHE STRING
|
||||
"Install path for modulefile"
|
||||
)
|
||||
message(STATUS "Modulefile install path: ${MOD_INSTALL_PATH}")
|
||||
|
||||
set(moduleFileTemplate "rocprofcompute.lua.in")
|
||||
|
||||
configure_file(
|
||||
${PROJECT_SOURCE_DIR}/cmake/${moduleFileTemplate}
|
||||
${PROJECT_BINARY_DIR}/${MOD_INSTALL_PATH}/${ROCPROFCOMPUTE_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}/${ROCPROFCOMPUTE_FULL_VERSION}.lua
|
||||
${mod_additions})
|
||||
file(
|
||||
APPEND
|
||||
${PROJECT_BINARY_DIR}/${MOD_INSTALL_PATH}/${ROCPROFCOMPUTE_FULL_VERSION}.lua
|
||||
${mod_additions}
|
||||
)
|
||||
list(POP_BACK CMAKE_MESSAGE_INDENT)
|
||||
endif()
|
||||
|
||||
@@ -165,7 +181,6 @@ set(CMAKE_HIP_FLAGS_RELEASE "-O2")
|
||||
if(${ENABLE_TESTS})
|
||||
enable_language("C" "HIP")
|
||||
add_subdirectory(tests)
|
||||
|
||||
endif()
|
||||
message(STATUS "Enable tests compilation: ${ENABLE_TESTS}")
|
||||
|
||||
@@ -175,25 +190,38 @@ include(CTest)
|
||||
option(ENABLE_COVERAGE "Enable code coverage" OFF)
|
||||
set(COV_OPTION "")
|
||||
if(${ENABLE_COVERAGE})
|
||||
set(COV_OPTION "--cov=src" "--cov-append" "--cov-report=term-missing"
|
||||
"--cov-report=lcov:tests/coverage.info")
|
||||
set(COV_OPTION
|
||||
"--cov=src"
|
||||
"--cov-append"
|
||||
"--cov-report=term-missing"
|
||||
"--cov-report=lcov:tests/coverage.info"
|
||||
)
|
||||
|
||||
set(CTEST_COVERAGE_COMMAND "python3")
|
||||
set(CTEST_COVERAGE_EXTRA_FLAGS "-m" "coverage" "xml" "-o"
|
||||
"${CMAKE_BINARY_DIR}/coverage.xml")
|
||||
set(CTEST_COVERAGE_EXTRA_FLAGS
|
||||
"-m"
|
||||
"coverage"
|
||||
"xml"
|
||||
"-o"
|
||||
"${CMAKE_BINARY_DIR}/coverage.xml"
|
||||
)
|
||||
endif()
|
||||
message(STATUS "Code coverage: ${ENABLE_COVERAGE}")
|
||||
|
||||
# CPU threads available for testing
|
||||
set(PYTEST_NUMPROCS
|
||||
"1"
|
||||
CACHE STRING "Number of parallel threads to use with CPU-oriented tests")
|
||||
CACHE STRING
|
||||
"Number of parallel threads to use with CPU-oriented tests"
|
||||
)
|
||||
message(STATUS "Pytest CPU threadcount: ${PYTEST_NUMPROCS}")
|
||||
|
||||
# 2 CPU threads available for testing(test-analyze-commands)
|
||||
set(PYTEST_NUMPROCS_ANALYSIS
|
||||
"4"
|
||||
CACHE STRING "Number of parallel threads to use with CPU-oriented tests")
|
||||
CACHE STRING
|
||||
"Number of parallel threads to use with CPU-oriented tests"
|
||||
)
|
||||
message(STATUS "Pytest CPU threadcount: ${PYTEST_NUMPROCS_ANALYSIS}")
|
||||
|
||||
# ---------------------------
|
||||
@@ -206,7 +234,8 @@ add_test(
|
||||
${Python3_EXECUTABLE} -m pytest -m kernel_execution
|
||||
--junitxml=tests/test_profile_kernel_execution.xml ${COV_OPTION}
|
||||
${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
add_test(
|
||||
NAME test_profile_dispatch
|
||||
@@ -214,37 +243,48 @@ add_test(
|
||||
${Python3_EXECUTABLE} -m pytest -m dispatch
|
||||
--junitxml=tests/test_profile_dispatch.xml ${COV_OPTION}
|
||||
${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
add_test(
|
||||
NAME test_profile_mem
|
||||
COMMAND ${Python3_EXECUTABLE} -m pytest -m mem --junitxml=tests/test_profile_mem.xml
|
||||
${COV_OPTION} ${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
COMMAND
|
||||
${Python3_EXECUTABLE} -m pytest -m mem --junitxml=tests/test_profile_mem.xml
|
||||
${COV_OPTION} ${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
add_test(
|
||||
NAME test_profile_join
|
||||
COMMAND ${Python3_EXECUTABLE} -m pytest -m join --junitxml=tests/test_profile_join.xml
|
||||
${COV_OPTION} ${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
COMMAND
|
||||
${Python3_EXECUTABLE} -m pytest -m join --junitxml=tests/test_profile_join.xml
|
||||
${COV_OPTION} ${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
add_test(
|
||||
NAME test_profile_sort
|
||||
COMMAND ${Python3_EXECUTABLE} -m pytest -m sort --junitxml=tests/test_profile_sort.xml
|
||||
${COV_OPTION} ${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
COMMAND
|
||||
${Python3_EXECUTABLE} -m pytest -m sort --junitxml=tests/test_profile_sort.xml
|
||||
${COV_OPTION} ${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
add_test(
|
||||
NAME test_profile_misc
|
||||
COMMAND ${Python3_EXECUTABLE} -m pytest -m misc --junitxml=tests/test_profile_misc.xml
|
||||
${COV_OPTION} ${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
COMMAND
|
||||
${Python3_EXECUTABLE} -m pytest -m misc --junitxml=tests/test_profile_misc.xml
|
||||
${COV_OPTION} ${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
add_test(
|
||||
NAME test_profile_path
|
||||
COMMAND ${Python3_EXECUTABLE} -m pytest -m path --junitxml=tests/test_profile_path.xml
|
||||
${COV_OPTION} ${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
COMMAND
|
||||
${Python3_EXECUTABLE} -m pytest -m path --junitxml=tests/test_profile_path.xml
|
||||
${COV_OPTION} ${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
add_test(
|
||||
NAME test_profile_roofline
|
||||
@@ -252,7 +292,8 @@ add_test(
|
||||
${Python3_EXECUTABLE} -m pytest -m roofline
|
||||
--junitxml=tests/test_profile_roofline.xml ${COV_OPTION}
|
||||
${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
add_test(
|
||||
NAME test_profile_section
|
||||
@@ -260,7 +301,8 @@ add_test(
|
||||
${Python3_EXECUTABLE} -m pytest -m section
|
||||
--junitxml=tests/test_profile_section.xml ${COV_OPTION}
|
||||
${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
add_test(
|
||||
NAME test_profile_pc_sampling
|
||||
@@ -268,7 +310,8 @@ add_test(
|
||||
${Python3_EXECUTABLE} -m pytest -s -m pc_sampling
|
||||
--junitxml=tests/test_profile_pc_sampling.xml ${COV_OPTION}
|
||||
${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
add_test(
|
||||
NAME test_profile_sets_func
|
||||
@@ -276,7 +319,8 @@ add_test(
|
||||
${Python3_EXECUTABLE} -m pytest -m sets_func
|
||||
--junitxml=tests/test_profile_sets_func.xml ${COV_OPTION}
|
||||
${PROJECT_SOURCE_DIR}/tests/test_profile_general.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
set_tests_properties(
|
||||
test_profile_kernel_execution
|
||||
@@ -287,7 +331,8 @@ set_tests_properties(
|
||||
test_profile_misc
|
||||
test_profile_path
|
||||
test_profile_roofline
|
||||
PROPERTIES LABELS "profile" RESOURCE_GROUPS gpus:1)
|
||||
PROPERTIES LABELS "profile" RESOURCE_GROUPS gpus:1
|
||||
)
|
||||
|
||||
# ---------------------------
|
||||
# analysis command tests
|
||||
@@ -299,7 +344,8 @@ add_test(
|
||||
${Python3_EXECUTABLE} -m pytest -n ${PYTEST_NUMPROCS_ANALYSIS} --verbose
|
||||
--junitxml=tests/test_analyze_commands.xml ${COV_OPTION}
|
||||
${PROJECT_SOURCE_DIR}/tests/test_analyze_commands.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
# ---------------------------
|
||||
# analyze workloads tests
|
||||
@@ -311,7 +357,8 @@ add_test(
|
||||
${Python3_EXECUTABLE} -m pytest -n ${PYTEST_NUMPROCS}
|
||||
--junitxml=tests/test_analyze_workloads.xml ${COV_OPTION}
|
||||
${PROJECT_SOURCE_DIR}/tests/test_analyze_workloads.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
# ---------------------------
|
||||
# TCP counter tests
|
||||
@@ -323,7 +370,8 @@ add_test(
|
||||
${Python3_EXECUTABLE} -m pytest -m L1_cache
|
||||
--junitxml=tests/test_L1_cache_counters.xml ${COV_OPTION}
|
||||
${PROJECT_SOURCE_DIR}/tests/test_TCP_counters.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
# ---------------------------
|
||||
# Spec tests
|
||||
@@ -335,7 +383,8 @@ add_test(
|
||||
${Python3_EXECUTABLE} -m pytest -m num_xcds_spec_class
|
||||
--junitxml=tests/test_num_xcds_spec_class.xml ${COV_OPTION}
|
||||
${PROJECT_SOURCE_DIR}/tests/test_gpu_specs.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
add_test(
|
||||
NAME test_num_xcds_cli_output
|
||||
@@ -343,7 +392,8 @@ add_test(
|
||||
${Python3_EXECUTABLE} -m pytest -m num_xcds_cli_output
|
||||
--junitxml=tests/test_num_xcds_cli_output.xml ${COV_OPTION}
|
||||
${PROJECT_SOURCE_DIR}/tests/test_gpu_specs.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
# ---------------------------
|
||||
# DB Connector tests
|
||||
@@ -351,9 +401,11 @@ add_test(
|
||||
|
||||
add_test(
|
||||
NAME test_db_connector
|
||||
COMMAND ${Python3_EXECUTABLE} -m pytest --junitxml=tests/test_db_connector.xml
|
||||
${COV_OPTION} ${PROJECT_SOURCE_DIR}/tests/test_db_connector.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
COMMAND
|
||||
${Python3_EXECUTABLE} -m pytest --junitxml=tests/test_db_connector.xml
|
||||
${COV_OPTION} ${PROJECT_SOURCE_DIR}/tests/test_db_connector.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
# ---------------------------
|
||||
# Utils tests
|
||||
@@ -361,9 +413,11 @@ add_test(
|
||||
|
||||
add_test(
|
||||
NAME test_utils
|
||||
COMMAND ${Python3_EXECUTABLE} -m pytest --junitxml=tests/test_utils.xml ${COV_OPTION}
|
||||
${PROJECT_SOURCE_DIR}/tests/test_utils.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
COMMAND
|
||||
${Python3_EXECUTABLE} -m pytest --junitxml=tests/test_utils.xml ${COV_OPTION}
|
||||
${PROJECT_SOURCE_DIR}/tests/test_utils.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
# -----------------------------------
|
||||
# Autogenerated configuration tests
|
||||
@@ -371,9 +425,11 @@ add_test(
|
||||
|
||||
add_test(
|
||||
NAME test_autogen_config
|
||||
COMMAND ${Python3_EXECUTABLE} -m pytest --junitxml=tests/test_autogen_config.xml
|
||||
${COV_OPTION} ${PROJECT_SOURCE_DIR}/tests/test_autogen_config.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
COMMAND
|
||||
${Python3_EXECUTABLE} -m pytest --junitxml=tests/test_autogen_config.xml
|
||||
${COV_OPTION} ${PROJECT_SOURCE_DIR}/tests/test_autogen_config.py
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
# -----------------------------------
|
||||
# Generate coverage tests
|
||||
@@ -398,19 +454,24 @@ if(${ENABLE_COVERAGE})
|
||||
test_num_xcds_cli_output
|
||||
test_db_connector
|
||||
test_utils
|
||||
test_autogen_config)
|
||||
test_autogen_config
|
||||
)
|
||||
|
||||
string(REPLACE ";" ";" ALL_TESTS_STRING "${ALL_TEST_NAMES}")
|
||||
|
||||
add_test(
|
||||
NAME generate_coverage_report
|
||||
COMMAND ${Python3_EXECUTABLE} -m coverage xml -o ${CMAKE_BINARY_DIR}/coverage.xml
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
set_tests_properties(
|
||||
generate_coverage_report
|
||||
PROPERTIES DEPENDS "${ALL_TESTS_STRING}" LABELS "coverage" ENVIRONMENT
|
||||
"COVERAGE_FILE=${PROJECT_SOURCE_DIR}/.coverage")
|
||||
PROPERTIES
|
||||
DEPENDS "${ALL_TESTS_STRING}"
|
||||
LABELS "coverage"
|
||||
ENVIRONMENT "COVERAGE_FILE=${PROJECT_SOURCE_DIR}/.coverage"
|
||||
)
|
||||
endif()
|
||||
|
||||
# ---------
|
||||
@@ -421,61 +482,72 @@ endif()
|
||||
install(
|
||||
PROGRAMS src/${EXECUTABLE_NAME}
|
||||
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}
|
||||
COMPONENT main)
|
||||
COMPONENT main
|
||||
)
|
||||
# python dependency requirements
|
||||
install(
|
||||
FILES requirements.txt
|
||||
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}
|
||||
COMPONENT main)
|
||||
COMPONENT main
|
||||
)
|
||||
# support files and version info
|
||||
install(
|
||||
FILES src/argparser.py src/config.py src/rocprof_compute_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)
|
||||
COMPONENT main
|
||||
)
|
||||
# src/rocprof_compute_analyze
|
||||
install(
|
||||
DIRECTORY src/rocprof_compute_analyze
|
||||
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}
|
||||
COMPONENT main
|
||||
PATTERN src/rocprof_compute_analyze/tests EXCLUDE
|
||||
PATTERN "__pycache__" EXCLUDE)
|
||||
PATTERN "__pycache__" EXCLUDE
|
||||
)
|
||||
# src/utils
|
||||
install(
|
||||
DIRECTORY src/utils
|
||||
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}
|
||||
COMPONENT main
|
||||
PATTERN "rooflines*" EXCLUDE
|
||||
PATTERN "__pycache__" EXCLUDE)
|
||||
PATTERN "__pycache__" EXCLUDE
|
||||
)
|
||||
# src/utils/rooflines
|
||||
file(GLOB rooflinebins src/utils/rooflines/roofline-*)
|
||||
install(
|
||||
PROGRAMS ${rooflinebins}
|
||||
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
COMPONENT main)
|
||||
install(PROGRAMS ${rooflinebins} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT main)
|
||||
# src/rocprof_compute_soc
|
||||
install(
|
||||
DIRECTORY src/rocprof_compute_soc
|
||||
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}
|
||||
COMPONENT main
|
||||
PATTERN "__pycache__" EXCLUDE)
|
||||
PATTERN "__pycache__" EXCLUDE
|
||||
)
|
||||
# src/rocprof_compute_profile
|
||||
install(
|
||||
DIRECTORY src/rocprof_compute_profile
|
||||
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}
|
||||
COMPONENT main
|
||||
PATTERN "__pycache__" EXCLUDE)
|
||||
PATTERN "__pycache__" EXCLUDE
|
||||
)
|
||||
# src/rocprof_compute_tui
|
||||
install(
|
||||
DIRECTORY src/rocprof_compute_tui
|
||||
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}
|
||||
COMPONENT main
|
||||
PATTERN "__pycache__" EXCLUDE)
|
||||
PATTERN "__pycache__" EXCLUDE
|
||||
)
|
||||
# grafana assets
|
||||
install(
|
||||
DIRECTORY grafana
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}
|
||||
COMPONENT main)
|
||||
COMPONENT main
|
||||
)
|
||||
# samples
|
||||
install(
|
||||
DIRECTORY sample
|
||||
@@ -485,21 +557,25 @@ install(
|
||||
PATTERN "*.hip"
|
||||
PATTERN "*.h"
|
||||
PATTERN "*.cpp"
|
||||
PATTERN "workloads" EXCLUDE)
|
||||
PATTERN "workloads" EXCLUDE
|
||||
)
|
||||
# modulefile
|
||||
install(
|
||||
FILES ${PROJECT_BINARY_DIR}/${MOD_INSTALL_PATH}/${ROCPROFCOMPUTE_FULL_VERSION}.lua
|
||||
DESTINATION ${MOD_INSTALL_PATH}
|
||||
COMPONENT main)
|
||||
COMPONENT main
|
||||
)
|
||||
|
||||
# top-level symlink for bin/rocprof-compute
|
||||
install(
|
||||
CODE "execute_process(
|
||||
CODE
|
||||
"execute_process(
|
||||
COMMAND bash -c \"set -e
|
||||
cd \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}
|
||||
ln -sf ../${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}/${EXECUTABLE_NAME} ${CMAKE_INSTALL_BINDIR}/${EXECUTABLE_NAME}
|
||||
\")"
|
||||
COMPONENT main)
|
||||
COMPONENT main
|
||||
)
|
||||
|
||||
# License header update(s)
|
||||
add_custom_target(
|
||||
@@ -511,7 +587,7 @@ add_custom_target(
|
||||
${PROJECT_SOURCE_DIR}/utils/update_license.py --source ${PROJECT_SOURCE_DIR}
|
||||
--license ${PROJECT_SOURCE_DIR}/LICENSE.md --file
|
||||
"src/${PACKAGE_NAME},cmake/Dockerfile,cmake/rocm_install.sh,docker/docker-entrypoint.sh,src/rocprof_compute_analyze/convertor/mongodb/convert"
|
||||
)
|
||||
)
|
||||
|
||||
# Standalone binary creation
|
||||
add_custom_target(
|
||||
@@ -543,12 +619,14 @@ add_custom_target(
|
||||
# Remove library rpath from executable
|
||||
COMMAND patchelf --remove-rpath rocprof-compute.bin
|
||||
# Move to build directory
|
||||
COMMAND mv rocprof-compute.bin ${CMAKE_BINARY_DIR})
|
||||
COMMAND mv rocprof-compute.bin ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
|
||||
install(
|
||||
FILES ${PROJECT_SOURCE_DIR}/LICENSE.md
|
||||
DESTINATION ${CMAKE_INSTALL_DOCDIR}
|
||||
COMPONENT main)
|
||||
COMPONENT main
|
||||
)
|
||||
|
||||
# TEST collateral
|
||||
option(INSTALL_TESTS "Build test suite" OFF)
|
||||
@@ -559,15 +637,18 @@ if(INSTALL_TESTS)
|
||||
COMPONENT tests
|
||||
FILES_MATCHING
|
||||
PATTERN "*.py"
|
||||
PATTERN "__pycache__" EXCLUDE)
|
||||
PATTERN "__pycache__" EXCLUDE
|
||||
)
|
||||
install(
|
||||
FILES requirements-test.txt
|
||||
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}
|
||||
COMPONENT tests)
|
||||
COMPONENT tests
|
||||
)
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/CTestTestfile.cmake
|
||||
COMPONENT tests
|
||||
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME})
|
||||
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/${PROJECT_NAME}
|
||||
)
|
||||
endif()
|
||||
message(STATUS "Install tests: ${INSTALL_TESTS}")
|
||||
|
||||
@@ -576,18 +657,16 @@ message(STATUS "Install tests: ${INSTALL_TESTS}")
|
||||
# ----------
|
||||
|
||||
message(STATUS "Packaging config...")
|
||||
set(CPACK_GENERATOR
|
||||
"DEB" "RPM"
|
||||
CACHE STRING "")
|
||||
set(CPACK_PACKAGE_NAME
|
||||
"${PROJECT_NAME}"
|
||||
CACHE STRING "")
|
||||
set(CPACK_GENERATOR "DEB" "RPM" CACHE STRING "")
|
||||
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}" CACHE STRING "")
|
||||
set(CPACK_PACKAGE_CONTACT "https://github.com/ROCm/rocprofiler-compute")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
|
||||
"ROCm Compute Profiler: tool for GPU performance profiling")
|
||||
"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.")
|
||||
machine learning/HPC workloads running on AMD GPUs."
|
||||
)
|
||||
set(CPACK_PACKAGE_VENDOR "Advanced Micro Devices, Inc.")
|
||||
|
||||
# Package versioning
|
||||
@@ -596,7 +675,7 @@ set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
|
||||
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
|
||||
set(CPACK_PACKAGE_VERSION
|
||||
"${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}"
|
||||
)
|
||||
)
|
||||
|
||||
# RPM package specific variables
|
||||
set(CPACK_RPM_PACKAGE_LICENSE "MIT")
|
||||
@@ -615,9 +694,7 @@ set(CPACK_DEB_COMPONENT_INSTALL ON)
|
||||
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
|
||||
|
||||
# Dependencies
|
||||
set(PACKAGE_REQUIRES
|
||||
"rocprofiler"
|
||||
CACHE STRING "Package dependencies")
|
||||
set(PACKAGE_REQUIRES "rocprofiler" CACHE STRING "Package dependencies")
|
||||
set(CPACK_RPM_PACKAGE_REQUIRES ${PACKAGE_REQUIRES})
|
||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS ${PACKAGE_REQUIRES})
|
||||
|
||||
@@ -678,6 +755,7 @@ set(CPACK_SOURCE_IGNORE_FILES
|
||||
\.gitmodules
|
||||
\.gitignore
|
||||
/tests
|
||||
/build)
|
||||
/build
|
||||
)
|
||||
|
||||
include(CPack)
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
set(CMAKE_HIP_COMPILER
|
||||
"amdclang++"
|
||||
CACHE STRING "desired c++ compiler" FORCE)
|
||||
set(CMAKE_HIP_COMPILER "amdclang++" CACHE STRING "desired c++ compiler" FORCE)
|
||||
if(CMAKE_HIP_COMPILER_ID STREQUAL "Clang")
|
||||
message(STATUS "Using ${CMAKE_HIP_COMPILER} to build for amdgpu backend")
|
||||
else()
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"'amdclang++' compiler required to compile test binaries for ROCm platform.")
|
||||
"'amdclang++' compiler required to compile test binaries for ROCm platform."
|
||||
)
|
||||
endif()
|
||||
|
||||
set(VCOPY_SOURCES ../sample/vcopy.cpp)
|
||||
@@ -22,23 +21,31 @@ set_target_properties(vmem PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DI
|
||||
set(VSEQ_SOURCES ../sample/vsequential_access.cpp)
|
||||
set_source_files_properties(${VSEQ_SOURCES} PROPERTIES LANGUAGE HIP)
|
||||
add_executable(vsequential_access ${VSEQ_SOURCES})
|
||||
set_target_properties(vsequential_access PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
||||
${CMAKE_SOURCE_DIR}/tests)
|
||||
set_target_properties(
|
||||
vsequential_access
|
||||
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/tests
|
||||
)
|
||||
|
||||
set(VRAND_SOURCES ../sample/vrandom_access.cpp)
|
||||
set_source_files_properties(${VRAND_SOURCES} PROPERTIES LANGUAGE HIP)
|
||||
add_executable(vrandom_access ${VRAND_SOURCES})
|
||||
set_target_properties(vrandom_access PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
||||
${CMAKE_SOURCE_DIR}/tests)
|
||||
set_target_properties(
|
||||
vrandom_access
|
||||
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/tests
|
||||
)
|
||||
|
||||
set(OCCUPANCY ../sample/occupancy.hip)
|
||||
set_source_files_properties(${OCCUPANCY} PROPERTIES LANGUAGE HIP)
|
||||
add_executable(occupancy ${OCCUPANCY})
|
||||
set_target_properties(occupancy PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
||||
${CMAKE_SOURCE_DIR}/tests)
|
||||
set_target_properties(
|
||||
occupancy
|
||||
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/tests
|
||||
)
|
||||
|
||||
set(MAT_MUL_MAX ../sample/mat_mul_max.hip)
|
||||
set_source_files_properties(${MAT_MUL_MAX} PROPERTIES LANGUAGE HIP)
|
||||
add_executable(mat_mul_max ${MAT_MUL_MAX})
|
||||
set_target_properties(mat_mul_max PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
||||
${CMAKE_SOURCE_DIR}/tests)
|
||||
set_target_properties(
|
||||
mat_mul_max
|
||||
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/tests
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user