f39a60ac25
* Fix cmake formatting * Updated rev. in `.pre-commit-config.yaml` * Pin the gersemi used in CI to v0.23.1, matching the pre-commit --------- Co-authored-by: Aleksandar Djordjevic <adjordje@amd.com> Co-authored-by: David Galiffi <David.Galiffi@amd.com>
434 líneas
14 KiB
CMake
434 líneas
14 KiB
CMake
# MIT License
|
|
#
|
|
# Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved.
|
|
#
|
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
# of this software and associated documentation files (the "Software"), to deal
|
|
# in the Software without restriction, including without limitation the rights
|
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
# copies of the Software, and to permit persons to whom the Software is
|
|
# furnished to do so, subject to the following conditions:
|
|
#
|
|
# The above copyright notice and this permission notice shall be included in
|
|
# all copies or substantial portions of the Software.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
# THE SOFTWARE.
|
|
|
|
# -------------------------------------------------------------------------------------- #
|
|
#
|
|
# Contains tests for executables
|
|
#
|
|
# -------------------------------------------------------------------------------------- #
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-instrument-help
|
|
TARGET rocprofiler-systems-instrument
|
|
ARGS --help
|
|
LABELS rocprofiler-systems-instrument
|
|
TIMEOUT 45
|
|
PASS_REGEX
|
|
".*\\\[rocprof-sys-instrument\\\] Usage:.*\\\[DEBUG OPTIONS\\\].*\\\[MODE OPTIONS\\\].*\\\[LIBRARY OPTIONS\\\].*\\\[SYMBOL SELECTION OPTIONS\\\].*\\\[RUNTIME OPTIONS\\\].*\\\[GRANULARITY OPTIONS\\\].*\\\[DYNINST OPTIONS\\\].*"
|
|
)
|
|
|
|
# on RedHat, /usr/bin/ls is a script for `coreutils --coreutils-prog=ls`
|
|
if(EXISTS /usr/bin/coreutils)
|
|
set(LS_NAME "coreutils")
|
|
set(LS_ARGS "--coreutils-prog=ls")
|
|
else()
|
|
set(LS_NAME ls)
|
|
set(LS_ARGS)
|
|
endif()
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-instrument-simulate-ls
|
|
TARGET rocprofiler-systems-instrument
|
|
ARGS --simulate
|
|
--print-format
|
|
json
|
|
txt
|
|
xml
|
|
-v
|
|
2
|
|
--all-functions
|
|
--
|
|
${LS_NAME}
|
|
${LS_ARGS}
|
|
LABELS "simulate"
|
|
TIMEOUT 240
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-instrument-simulate-ls-check
|
|
DEPENDS rocprofiler-systems-instrument-simulate-ls
|
|
COMMAND
|
|
ls
|
|
rocprof-sys-tests-output/rocprofiler-systems-instrument-simulate-ls/instrumentation
|
|
TIMEOUT 60
|
|
PASS_REGEX
|
|
".*available.json.*available.txt.*available.xml.*excluded.json.*excluded.txt.*excluded.xml.*instrumented.json.*instrumented.txt.*instrumented.xml.*overlapping.json.*overlapping.txt.*overlapping.xml.*"
|
|
FAIL_REGEX "No such file or directory|not found|ROCPROFSYS_ABORT_FAIL_REGEX"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-instrument-simulate-lib
|
|
TARGET rocprofiler-systems-instrument
|
|
ARGS --print-available functions -v 2 --
|
|
$<TARGET_FILE:rocprofiler-systems-user-library>
|
|
LABELS "simulate"
|
|
TIMEOUT 120
|
|
PASS_REGEX
|
|
"\\\[rocprof-sys\\\]\\\[exe\\\] Runtime instrumentation is not possible!(.*)\n(.*)\\\[rocprof-sys\\\]\\\[exe\\\] Switching to binary rewrite mode and assuming '--simulate --all-functions'"
|
|
)
|
|
|
|
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/rocprof-sys-tests-output/tmp)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-instrument-simulate-lib-basename
|
|
TARGET rocprofiler-systems-instrument
|
|
ARGS --print-available
|
|
functions
|
|
-v
|
|
2
|
|
-o
|
|
${PROJECT_BINARY_DIR}/rocprof-sys-tests-output/rocprof-sys-instrument-simulate-lib-basename/${CMAKE_SHARED_LIBRARY_PREFIX}$<TARGET_FILE_BASE_NAME:rocprofiler-systems-user-library>${CMAKE_SHARED_LIBRARY_SUFFIX}
|
|
--
|
|
${CMAKE_SHARED_LIBRARY_PREFIX}$<TARGET_FILE_BASE_NAME:rocprofiler-systems-user-library>${CMAKE_SHARED_LIBRARY_SUFFIX}
|
|
LABELS "simulate"
|
|
TIMEOUT 120
|
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/rocprof-sys-tests-output/tmp
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-instrument-write-log
|
|
TARGET rocprofiler-systems-instrument
|
|
ARGS --print-instrumented
|
|
functions
|
|
-v
|
|
1
|
|
--log-file
|
|
user.log
|
|
--
|
|
${LS_NAME}
|
|
${LS_ARGS}
|
|
LABELS "log"
|
|
TIMEOUT 120
|
|
PASS_REGEX "Opening .*/instrumentation/user.log"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-instrument-write-log-check
|
|
DEPENDS rocprofiler-systems-instrument-write-log
|
|
COMMAND
|
|
ls
|
|
rocprof-sys-tests-output/rocprofiler-systems-instrument-write-log/instrumentation/user.log
|
|
LABELS "log"
|
|
TIMEOUT 60
|
|
PASS_REGEX "user.log"
|
|
FAIL_REGEX "No such file or directory|not found|ROCPROFSYS_ABORT_FAIL_REGEX"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-help
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS --help
|
|
LABELS "rocprofiler-systems-avail"
|
|
TIMEOUT 45
|
|
PASS_REGEX
|
|
".*\\\[rocprof-sys-avail\\\] Usage:.*\\\[DEBUG OPTIONS\\\].*\\\[INFO OPTIONS\\\].*\\\[FILTER OPTIONS\\\].*\\\[COLUMN OPTIONS\\\].*\\\[DISPLAY OPTIONS\\\].*\\\[OUTPUT OPTIONS\\\].*"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-all
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS --all
|
|
LABELS "rocprofiler-systems-avail"
|
|
TIMEOUT 45
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-all-expand-keys
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS --all --expand-keys
|
|
LABELS "rocprofiler-systems-avail"
|
|
TIMEOUT 45
|
|
FAIL_REGEX "%[a-zA-Z_]%|ROCPROFSYS_ABORT_FAIL_REGEX"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-all-only-available-alphabetical
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS --all --available --alphabetical --debug --output
|
|
${CMAKE_CURRENT_BINARY_DIR}/rocprof-sys-avail-all-only-available-alphabetical.log
|
|
LABELS "rocprofiler-systems-avail"
|
|
TIMEOUT 45
|
|
PROPERTIES
|
|
ATTACHED_FILES
|
|
${CMAKE_CURRENT_BINARY_DIR}/rocprof-sys-avail-all-only-available-alphabetical.log
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-all-csv
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS --all --csv --csv-separator "#"
|
|
LABELS "rocprofiler-systems-avail"
|
|
TIMEOUT 45
|
|
PASS_REGEX
|
|
"COMPONENT#AVAILABLE#VALUE_TYPE#STRING_IDS#FILENAME#DESCRIPTION#CATEGORY#.*ENVIRONMENT VARIABLE#VALUE#DATA TYPE#DESCRIPTION#CATEGORIES#.*HARDWARE COUNTER#DEVICE#AVAILABLE#DESCRIPTION#"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-filter-wall-clock-available
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS -r wall_clock -C --available
|
|
LABELS "rocprofiler-systems-avail"
|
|
TIMEOUT 45
|
|
PASS_REGEX
|
|
"\\\|[-]+\\\|\n\\\|[ ]+COMPONENT[ ]+\\\|\n\\\|[-]+\\\|\n\\\| (wall_clock)[ ]+\\\|\n\\\|[-]+\\\|"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-category-filter-rocprofiler-systems
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS --categories settings::rocprofsys --brief
|
|
LABELS "rocprofiler-systems-avail"
|
|
TIMEOUT 45
|
|
PASS_REGEX "ROCPROFSYS_(SETTINGS_DESC|OUTPUT_FILE|OUTPUT_PREFIX)"
|
|
FAIL_REGEX
|
|
"ROCPROFSYS_(ADD_SECONDARY|SCIENTIFIC|PRECISION|MEMORY_PRECISION|TIMING_PRECISION)|ROCPROFSYS_ABORT_FAIL_REGEX"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-category-filter-timemory
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS --categories settings::timemory --brief --advanced
|
|
LABELS "rocprofiler-systems-avail"
|
|
TIMEOUT 45
|
|
PASS_REGEX
|
|
"ROCPROFSYS_(ADD_SECONDARY|SCIENTIFIC|PRECISION|MEMORY_PRECISION|TIMING_PRECISION)"
|
|
FAIL_REGEX "ROCPROFSYS_(SETTINGS_DESC|OUTPUT_FILE)|ROCPROFSYS_ABORT_FAIL_REGEX"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-regex-negation
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS -R
|
|
rocprofsys
|
|
~timemory
|
|
-r
|
|
_P
|
|
~PERFETTO
|
|
~PROCESS_SAMPLING
|
|
~KOKKOSP
|
|
~PAGE
|
|
--csv
|
|
--brief
|
|
--advanced
|
|
LABELS "rocprofiler-systems-avail"
|
|
TIMEOUT 45
|
|
PASS_REGEX
|
|
"ENVIRONMENT VARIABLE,[ \n]+ROCPROFSYS_THREAD_POOL_SIZE,[ \n]+ROCPROFSYS_USE_PID,[ \n]+"
|
|
FAIL_REGEX "ROCPROFSYS_TRACE|ROCPROFSYS_ABORT_FAIL_REGEX"
|
|
)
|
|
|
|
string(
|
|
REPLACE
|
|
"+"
|
|
"\\\+"
|
|
_AVAIL_CFG_PATH
|
|
"${PROJECT_BINARY_DIR}/rocprof-sys-tests-output/rocprof-sys-avail/rocprof-sys-"
|
|
)
|
|
# use of TWD == Test Working Directory (added by function)
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-write-config
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS -G
|
|
%env{TWD}%/rocprof-sys-tests-output/rocprof-sys-avail/rocprof-sys-test.cfg
|
|
-F
|
|
txt
|
|
json
|
|
xml
|
|
--force
|
|
--all
|
|
-c
|
|
rocprofsys
|
|
TIMEOUT 45
|
|
LABELS "rocprofiler-systems-avail"
|
|
PASS_REGEX
|
|
"Outputting JSON configuration file '${_AVAIL_CFG_PATH}test\\\.json'(.*)Outputting XML configuration file '${_AVAIL_CFG_PATH}test\\\.xml'(.*)Outputting text configuration file '${_AVAIL_CFG_PATH}test\\\.cfg'(.*)"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-write-config-tweak
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS -G %env{TWD}%/rocprof-sys-tests-output/rocprof-sys-avail/rocprof-sys-tweak.cfg -F
|
|
txt json xml --force
|
|
TIMEOUT 45
|
|
LABELS "rocprofiler-systems-avail"
|
|
ENVIRONMENT "ROCPROFSYS_TRACE=OFF;ROCPROFSYS_PROFILE=ON"
|
|
PASS_REGEX
|
|
"Outputting JSON configuration file '${_AVAIL_CFG_PATH}tweak\\\.json'(.*)Outputting XML configuration file '${_AVAIL_CFG_PATH}tweak\\\.xml'(.*)Outputting text configuration file '${_AVAIL_CFG_PATH}tweak\\\.cfg'(.*)"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-list-keys
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS --list-keys --expand-keys
|
|
TIMEOUT 45
|
|
LABELS "rocprofiler-systems-avail"
|
|
PASS_REGEX "Output Keys:\n(.*)%argv%(.*)%argv_hash%"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-list-keys-markdown
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS --list-keys --expand-keys --markdown
|
|
TIMEOUT 45
|
|
LABELS "rocprofiler-systems-avail;markdown"
|
|
PASS_REGEX "(.*)`%argv%`(.*)`%argv_hash%`"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-list-categories
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS --list-categories
|
|
TIMEOUT 45
|
|
LABELS "rocprofiler-systems-avail"
|
|
PASS_REGEX " component::(.*) hw_counters::(.*) settings::"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-avail-core-categories
|
|
TARGET rocprofiler-systems-avail
|
|
ARGS -c core
|
|
TIMEOUT 45
|
|
LABELS "rocprofiler-systems-avail"
|
|
PASS_REGEX
|
|
"ROCPROFSYS_CONFIG_FILE(.*)ROCPROFSYS_ENABLED(.*)ROCPROFSYS_SUPPRESS_CONFIG(.*)ROCPROFSYS_SUPPRESS_PARSING(.*)ROCPROFSYS_VERBOSE"
|
|
)
|
|
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-run-help
|
|
TARGET rocprofiler-systems-run
|
|
ARGS --help
|
|
TIMEOUT 45
|
|
LABELS "rocprofiler-systems-run"
|
|
)
|
|
|
|
file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/rocprof-sys-tests-config")
|
|
file(
|
|
WRITE "${PROJECT_BINARY_DIR}/rocprof-sys-tests-config/empty.cfg"
|
|
"
|
|
#
|
|
# empty config file
|
|
#
|
|
"
|
|
)
|
|
|
|
find_program(SLEEP_CMD NAMES sleep)
|
|
if(SLEEP_CMD)
|
|
rocprofiler_systems_add_bin_test(
|
|
NAME rocprofiler-systems-run-args
|
|
TARGET rocprofiler-systems-run
|
|
ARGS --monochrome
|
|
--debug=false
|
|
-v
|
|
1
|
|
-c
|
|
%env{TWD}%/rocprof-sys-tests-config/empty.cfg
|
|
-o
|
|
rocprof-sys-tests-output
|
|
rocprofiler-systems-run-args-output/
|
|
-TPHD
|
|
-S
|
|
cputime
|
|
realtime
|
|
--trace-wait=1.0e-12
|
|
--trace-duration=5.0
|
|
--wait=1.0
|
|
--duration=3.0
|
|
--trace-file=perfetto-run-args-trace.proto
|
|
--trace-buffer-size=100
|
|
--trace-fill-policy=ring_buffer
|
|
--profile-format
|
|
console
|
|
json
|
|
text
|
|
--process-freq
|
|
1000
|
|
--process-wait
|
|
0.0
|
|
--process-duration
|
|
10
|
|
--cpus
|
|
0-4
|
|
--gpus
|
|
0
|
|
-f
|
|
1000
|
|
--sampling-wait
|
|
1.0
|
|
--sampling-duration
|
|
10
|
|
-t
|
|
0-3
|
|
--sample-cputime
|
|
1000
|
|
1.0
|
|
0-3
|
|
--sample-realtime
|
|
10
|
|
0.5
|
|
0-3
|
|
-I
|
|
all
|
|
-E
|
|
mutex-locks
|
|
rw-locks
|
|
spin-locks
|
|
-C
|
|
perf::INSTRUCTIONS
|
|
--inlines
|
|
--hsa-interrupt
|
|
0
|
|
--use-causal=false
|
|
--use-kokkosp
|
|
--num-threads-hint=4
|
|
--sampling-allocator-size=32
|
|
--ci
|
|
--dl-verbose=3
|
|
--perfetto-annotations=off
|
|
--kokkosp-kernel-logger
|
|
--kokkosp-name-length-max=1024
|
|
--kokkosp-prefix="[kokkos]"
|
|
--tmpdir
|
|
${CMAKE_BINARY_DIR}/rocprof-sys-tests-config/tmpdir
|
|
--perfetto-backend
|
|
inprocess
|
|
--use-pid
|
|
false
|
|
--time-output
|
|
off
|
|
--thread-pool-size
|
|
0
|
|
--timemory-components
|
|
wall_clock
|
|
cpu_clock
|
|
peak_rss
|
|
page_rss
|
|
--fork
|
|
--
|
|
${SLEEP_CMD}
|
|
5
|
|
TIMEOUT 45
|
|
LABELS "rocprofiler-systems-run"
|
|
)
|
|
else()
|
|
rocprofiler_systems_message(WARNING "Sleep command not found. Disabling rocprofiler-systems-run-args ctest...")
|
|
endif()
|