Files
TheRock/rocm-systems/projects/rocprofiler-sdk/tests/rocprofv3/ompt/CMakeLists.txt
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

259 lines
9.9 KiB
CMake

#
#
#
cmake_minimum_required(VERSION 3.21.0 FATAL_ERROR)
project(
rocprofiler-sdk-tests-rocprofv3-ompt-tracing
LANGUAGES CXX
VERSION 0.0.0)
find_package(rocprofiler-sdk REQUIRED)
rocprofiler_configure_pytest_files(CONFIG pytest.ini COPY validate.py conftest.py)
set(PYTEST_ARGS)
if(ROCPROFILER_MEMCHECK MATCHES "(Address|Thread)Sanitizer" OR ROCPROFILER_BUILD_CODECOV)
set(PYTEST_ARGS -k "not test_total_runtime")
endif()
set(ROCPROFILER_MEMCHECK_TYPES "ThreadSanitizer" "AddressSanitizer"
"UndefinedBehaviorSanitizer")
if(ROCPROFILER_MEMCHECK AND ROCPROFILER_MEMCHECK IN_LIST ROCPROFILER_MEMCHECK_TYPES)
set(IS_DISABLED ON)
else()
set(IS_DISABLED OFF)
endif()
# disable when GPU-0 is navi2, navi3, or navi4 (no OpenMP target offload support)
list(GET rocprofiler-sdk-tests-gfx-info 0 ompt-tracing-gpu-0-gfx-info)
if("${ompt-tracing-gpu-0-gfx-info}" MATCHES "^gfx(10|11|12)[0-9][0-9]$")
set(IS_DISABLED ON)
endif()
# the openmp-target binary is what we trace; if it was not built, disable the test
if(NOT TARGET openmp-target)
set(IS_DISABLED ON)
endif()
# Host-side OMPT tests trace the host-only openmp-host workload, which does not require
# target-offload support (so they are *not* gated on the Navi check). They are only
# disabled under sanitizers or when the host workload is missing.
if(ROCPROFILER_MEMCHECK AND ROCPROFILER_MEMCHECK IN_LIST ROCPROFILER_MEMCHECK_TYPES)
set(IS_HOST_DISABLED ON)
else()
set(IS_HOST_DISABLED OFF)
endif()
if(NOT TARGET openmp-host)
set(IS_HOST_DISABLED ON)
endif()
string(REPLACE "LD_PRELOAD=" "ROCPROF_PRELOAD=" PRELOAD_ENV
"${ROCPROFILER_MEMCHECK_PRELOAD_ENV}")
set(ompt-tracing-env
"OMP_NUM_THREADS=2"
"OMP_TARGET_OFFLOAD=mandatory"
"OMP_DISPLAY_ENV=1"
"ROCR_VISIBLE_DEVICES=0"
"LD_LIBRARY_PATH=$<TARGET_FILE_DIR:rocprofiler-sdk::rocprofiler-sdk-shared-library>:$ENV{LD_LIBRARY_PATH}"
)
# Host-only env
set(ompt-host-env
"OMP_NUM_THREADS=2"
"OMP_DISPLAY_ENV=1"
"ROCR_VISIBLE_DEVICES=0"
"LD_LIBRARY_PATH=$<TARGET_FILE_DIR:rocprofiler-sdk::rocprofiler-sdk-shared-library>:$ENV{LD_LIBRARY_PATH}"
)
set(ompt-tracing-output-dir ${CMAKE_CURRENT_BINARY_DIR}/openmp-target-trace)
rocprofiler_add_integration_execute_test(
rocprofv3-test-ompt-tracing
COMMAND
$<TARGET_FILE:rocprofiler-sdk::rocprofv3> --ompt-trace --hip-trace --kernel-trace
-d ${ompt-tracing-output-dir} -o out --output-format rocpd --log-level env --
$<IF:$<TARGET_EXISTS:openmp-target>,$<TARGET_FILE:openmp-target>,openmp-target>
DEPENDS openmp-target
TIMEOUT 240
LABELS "integration-tests;openmp-target"
ENVIRONMENT "${ompt-tracing-env}"
PRELOAD "${PRELOAD_ENV}"
FIXTURES_SETUP rocprofv3-test-ompt-tracing
DISABLED "${IS_DISABLED}")
rocprofiler_add_integration_validate_test(
rocprofv3-test-ompt-tracing
TEST_PATHS validate.py
COPY conftest.py
CONFIG pytest.ini
ARGS ${PYTEST_ARGS} -k
"not test_granular and not test_ompt_all_form_is_complete and not test_sys_trace"
--rocpd-input ${ompt-tracing-output-dir}/out_results.db
DISCOVERY_ARGS
${PYTEST_ARGS} -k
"not test_granular and not test_ompt_all_form_is_complete and not test_sys_trace"
TIMEOUT 45
LABELS "integration-tests;openmp-target"
FIXTURES_REQUIRED rocprofv3-test-ompt-tracing
DISABLED "${IS_DISABLED}")
# Granular-target test: both OMPT execute tests use the same openmp-target binary so %tag%
# would collide. Use a literal output directory that matches what the validate test reads
# from.
set(ompt-granular-target-output-dir
${CMAKE_CURRENT_BINARY_DIR}/openmp-target-granular-target-trace)
rocprofiler_add_integration_execute_test(
rocprofv3-test-ompt-granular-target
COMMAND
$<TARGET_FILE:rocprofiler-sdk::rocprofv3> --ompt-trace=target -d
${ompt-granular-target-output-dir} -o out --output-format rocpd --log-level env --
$<IF:$<TARGET_EXISTS:openmp-target>,$<TARGET_FILE:openmp-target>,openmp-target>
DEPENDS openmp-target
TIMEOUT 100
LABELS "integration-tests;openmp-target"
ENVIRONMENT "${ompt-tracing-env}"
PRELOAD "${PRELOAD_ENV}"
FIXTURES_SETUP rocprofv3-test-ompt-granular-target
DISABLED "${IS_DISABLED}")
rocprofiler_add_integration_validate_test(
rocprofv3-test-ompt-granular-target
TEST_PATHS validate.py
COPY conftest.py
CONFIG pytest.ini
ARGS ${PYTEST_ARGS} -k test_granular_target_filter_only_target_ops --rocpd-input
${ompt-granular-target-output-dir}/out_results.db
DISCOVERY_ARGS ${PYTEST_ARGS} -k test_granular_target_filter_only_target_ops
TIMEOUT 45
LABELS "integration-tests;openmp-target"
FIXTURES_REQUIRED rocprofv3-test-ompt-granular-target
DISABLED "${IS_DISABLED}")
# Default --ompt-trace on a host-only OpenMP program: asserts the parallel region /
# implicit-task / work events a user expects to see are recorded.
set(ompt-host-output-dir ${CMAKE_CURRENT_BINARY_DIR}/openmp-host-trace)
set(ompt-host-validate-k
"test_ompt_host_side_events_present or test_rocpd_contains_ompt_records or test_agent_info"
)
rocprofiler_add_integration_execute_test(
rocprofv3-test-ompt-host
COMMAND
$<TARGET_FILE:rocprofiler-sdk::rocprofv3> --ompt-trace -d ${ompt-host-output-dir}
-o out --output-format rocpd --log-level env --
$<IF:$<TARGET_EXISTS:openmp-host>,$<TARGET_FILE:openmp-host>,openmp-host>
DEPENDS openmp-host
TIMEOUT 100
LABELS "integration-tests;openmp-host"
ENVIRONMENT "${ompt-host-env}"
PRELOAD "${PRELOAD_ENV}"
FIXTURES_SETUP rocprofv3-test-ompt-host
DISABLED "${IS_HOST_DISABLED}")
rocprofiler_add_integration_validate_test(
rocprofv3-test-ompt-host
TEST_PATHS validate.py
COPY conftest.py
CONFIG pytest.ini
ARGS ${PYTEST_ARGS} -k "${ompt-host-validate-k}" --rocpd-input
${ompt-host-output-dir}/out_results.db
DISCOVERY_ARGS ${PYTEST_ARGS} -k "${ompt-host-validate-k}"
TIMEOUT 45
LABELS "integration-tests;openmp-host"
FIXTURES_REQUIRED rocprofv3-test-ompt-host
DISABLED "${IS_HOST_DISABLED}")
# Host-side granular filter: --ompt-trace parallel must record only the parallel-category
# operations (no task/sync/mutex/target leakage).
set(ompt-host-parallel-output-dir ${CMAKE_CURRENT_BINARY_DIR}/openmp-host-parallel-trace)
rocprofiler_add_integration_execute_test(
rocprofv3-test-ompt-host-parallel
COMMAND
$<TARGET_FILE:rocprofiler-sdk::rocprofv3> --ompt-trace=parallel -d
${ompt-host-parallel-output-dir} -o out --output-format rocpd --log-level env --
$<IF:$<TARGET_EXISTS:openmp-host>,$<TARGET_FILE:openmp-host>,openmp-host>
DEPENDS openmp-host
TIMEOUT 100
LABELS "integration-tests;openmp-host"
ENVIRONMENT "${ompt-host-env}"
PRELOAD "${PRELOAD_ENV}"
FIXTURES_SETUP rocprofv3-test-ompt-host-parallel
DISABLED "${IS_HOST_DISABLED}")
rocprofiler_add_integration_validate_test(
rocprofv3-test-ompt-host-parallel
TEST_PATHS validate.py
COPY conftest.py
CONFIG pytest.ini
ARGS ${PYTEST_ARGS} -k test_granular_host_filter_only_parallel_ops --rocpd-input
${ompt-host-parallel-output-dir}/out_results.db
DISCOVERY_ARGS ${PYTEST_ARGS} -k test_granular_host_filter_only_parallel_ops
TIMEOUT 45
LABELS "integration-tests;openmp-host"
FIXTURES_REQUIRED rocprofv3-test-ompt-host-parallel
DISABLED "${IS_HOST_DISABLED}")
# Explicit "trace everything" form
set(ompt-all-output-dir ${CMAKE_CURRENT_BINARY_DIR}/openmp-target-all-trace)
rocprofiler_add_integration_execute_test(
rocprofv3-test-ompt-all
COMMAND
$<TARGET_FILE:rocprofiler-sdk::rocprofv3> --ompt-trace=all -d
${ompt-all-output-dir} -o out --output-format rocpd --log-level env --
$<IF:$<TARGET_EXISTS:openmp-target>,$<TARGET_FILE:openmp-target>,openmp-target>
DEPENDS openmp-target
TIMEOUT 100
LABELS "integration-tests;openmp-target"
ENVIRONMENT "${ompt-tracing-env}"
PRELOAD "${PRELOAD_ENV}"
FIXTURES_SETUP rocprofv3-test-ompt-all
DISABLED "${IS_DISABLED}")
rocprofiler_add_integration_validate_test(
rocprofv3-test-ompt-all
TEST_PATHS validate.py
COPY conftest.py
CONFIG pytest.ini
ARGS ${PYTEST_ARGS} -k test_ompt_all_form_is_complete --rocpd-input
${ompt-all-output-dir}/out_results.db
DISCOVERY_ARGS ${PYTEST_ARGS} -k test_ompt_all_form_is_complete
TIMEOUT 45
LABELS "integration-tests;openmp-target"
FIXTURES_REQUIRED rocprofv3-test-ompt-all
DISABLED "${IS_DISABLED}")
# --sys-trace implicit OMPT: profiling with --sys-trace (no explicit --ompt-trace) and a
# non-rocpd --output-format must still implicitly enable OMPT and auto-add the rocpd
# output so OMPT records are captured. Uses --output-format csv to exercise the auto-add
# path. Runs on the host workload so it is not gated on target-offload support.
set(ompt-sys-trace-output-dir ${CMAKE_CURRENT_BINARY_DIR}/openmp-host-sys-trace)
rocprofiler_add_integration_execute_test(
rocprofv3-test-ompt-sys-trace
COMMAND
$<TARGET_FILE:rocprofiler-sdk::rocprofv3> --sys-trace -d
${ompt-sys-trace-output-dir} -o out --output-format csv --log-level env --
$<IF:$<TARGET_EXISTS:openmp-host>,$<TARGET_FILE:openmp-host>,openmp-host>
DEPENDS openmp-host
TIMEOUT 100
LABELS "integration-tests;openmp-host"
ENVIRONMENT "${ompt-host-env}"
PRELOAD "${PRELOAD_ENV}"
FIXTURES_SETUP rocprofv3-test-ompt-sys-trace
DISABLED "${IS_HOST_DISABLED}")
rocprofiler_add_integration_validate_test(
rocprofv3-test-ompt-sys-trace
TEST_PATHS validate.py
COPY conftest.py
CONFIG pytest.ini
ARGS ${PYTEST_ARGS} -k test_sys_trace_implicit_ompt_in_rocpd --rocpd-input
${ompt-sys-trace-output-dir}/out_results.db
DISCOVERY_ARGS ${PYTEST_ARGS} -k test_sys_trace_implicit_ompt_in_rocpd
TIMEOUT 45
LABELS "integration-tests;openmp-host"
FIXTURES_REQUIRED rocprofv3-test-ompt-sys-trace
DISABLED "${IS_HOST_DISABLED}")