[rocprofiler-systems] Add Fortran OpenMP CTests (#874)

* Added Fortran (amdflang) openmp tests using the openmp-vv project

---------

Signed-off-by: David Galiffi <David.Galiffi@amd.com>
Co-authored-by: David Galiffi <David.Galiffi@amd.com>
このコミットが含まれているのは:
Kian Cossettini
2025-09-12 09:52:16 -04:00
committed by GitHub
コミット 5d582fcd37
11個のファイルの変更431行の追加63行の削除
+1 -1
ファイルの表示
@@ -127,7 +127,7 @@ jobs:
-DROCPROFSYS_PYTHON_PREFIX=/opt/conda/envs \
-DROCPROFSYS_PYTHON_ENVS="py3.8;py3.9;py3.10;py3.11;py3.12;py3.13" \
-DROCPROFSYS_MAX_THREADS=64 \
-DROCPROFSYS_DISABLE_EXAMPLES="transpose;rccl;openmp-target" \
-DROCPROFSYS_DISABLE_EXAMPLES="transpose;rccl;openmp-target;openmp-vv-offload" \
-DROCPROFSYS_BUILD_NUMBER=1 \
-DUSE_CLANG_OMP=OFF \
$CMAKE_PREFIX_PATH_ARG \
+1 -1
ファイルの表示
@@ -110,7 +110,7 @@ jobs:
-DROCPROFSYS_PYTHON_ENVS="py3.6;py3.7;py3.8;py3.9;py3.10;py3.11"
-DROCPROFSYS_CI_MPI_RUN_AS_ROOT=ON
-DROCPROFSYS_MAX_THREADS=64
-DROCPROFSYS_DISABLE_EXAMPLES="transpose;rccl;openmp-target;videodecode;jpegdecode"
-DROCPROFSYS_DISABLE_EXAMPLES="transpose;rccl;openmp-target;openmp-vv-offload;videodecode;jpegdecode"
-DROCPROFSYS_BUILD_NUMBER=${{ github.run_attempt }}
--
-LE "transpose|rccl|videodecode|jpegdecode|network|mpi"
+1 -1
ファイルの表示
@@ -128,7 +128,7 @@ jobs:
-DROCPROFSYS_INSTALL_PERFETTO_TOOLS=OFF
-DROCPROFSYS_PYTHON_PREFIX=/opt/conda/envs
-DROCPROFSYS_PYTHON_ENVS="py3.6;py3.7;py3.8;py3.9;py3.10;py3.11"
-DROCPROFSYS_DISABLE_EXAMPLES="transpose;rccl;openmp-target"
-DROCPROFSYS_DISABLE_EXAMPLES="transpose;rccl;openmp-target;openmp-vv-offload"
-DROCPROFSYS_BUILD_NUMBER=${{ github.run_attempt }}
--
-LE "transpose|rccl|videodecode|jpegdecode|network"
+2 -2
ファイルの表示
@@ -132,7 +132,7 @@ jobs:
-DROCPROFSYS_PYTHON_ENVS="py3.7;py3.8;py3.9;py3.10;py3.11" \
-DROCPROFSYS_STRIP_LIBRARIES=${{ matrix.strip }} \
-DROCPROFSYS_MAX_THREADS=64 \
-DROCPROFSYS_DISABLE_EXAMPLES="transpose;rccl;openmp-target" \
-DROCPROFSYS_DISABLE_EXAMPLES="transpose;rccl;openmp-target;openmp-vv" \
-DROCPROFSYS_BUILD_NUMBER=${{ github.run_attempt }} \
-DUSE_CLANG_OMP=OFF \
-- \
@@ -311,7 +311,7 @@ jobs:
-DROCPROFSYS_PYTHON_ENVS="py3.7;py3.8;py3.9;py3.10;py3.11" \
-DROCPROFSYS_STRIP_LIBRARIES=${{ matrix.strip }} \
-DROCPROFSYS_MAX_THREADS=64 \
-DROCPROFSYS_DISABLE_EXAMPLES="transpose;rccl;openmp-target" \
-DROCPROFSYS_DISABLE_EXAMPLES="transpose;rccl;openmp-target;openmp-vv" \
-DROCPROFSYS_BUILD_NUMBER=${{ github.run_attempt }} \
-DUSE_CLANG_OMP=OFF \
-- \
+1 -1
ファイルの表示
@@ -126,7 +126,7 @@ jobs:
-DROCPROFSYS_PYTHON_PREFIX=/opt/conda/envs \
-DROCPROFSYS_PYTHON_ENVS="py3.8;py3.9;py3.10;py3.11;py3.12;py3.13" \
-DROCPROFSYS_MAX_THREADS=64 \
-DROCPROFSYS_DISABLE_EXAMPLES="transpose;rccl;openmp-target;lulesh" \
-DROCPROFSYS_DISABLE_EXAMPLES="transpose;rccl;openmp-target;openmp-vv-offload;lulesh" \
-DROCPROFSYS_BUILD_NUMBER=1 \
-DUSE_CLANG_OMP=OFF \
$CMAKE_PREFIX_PATH_ARG \
+3
ファイルの表示
@@ -76,3 +76,6 @@
[submodule "projects/rocprofiler-systems/external/pybind11"]
path = projects/rocprofiler-systems/external/pybind11
url = https://github.com/jrmadsen/pybind11.git
[submodule "projects/rocprofiler-systems/examples/openmp/external/ompvv"]
path = projects/rocprofiler-systems/examples/openmp/external/ompvv
url = https://github.com/OpenMP-Validation-and-Verification/OpenMP_VV.git
+30
ファイルの表示
@@ -1,3 +1,6 @@
# Copyright (c) Advanced Micro Devices, Inc.
# SPDX-License-Identifier: MIT
cmake_minimum_required(VERSION 3.21 FATAL_ERROR)
project(rocprofiler-systems-openmp LANGUAGES CXX)
@@ -90,6 +93,33 @@ if(ROCPROFSYS_INSTALL_EXAMPLES)
)
endif()
set(DEFAULT_GPU_TARGETS
"gfx900"
"gfx906"
"gfx908"
"gfx90a"
"gfx940"
"gfx941"
"gfx942"
"gfx950"
"gfx1030"
"gfx1010"
"gfx1100"
"gfx1101"
"gfx1102"
)
set(GPU_TARGETS "${DEFAULT_GPU_TARGETS}" CACHE STRING "GPU targets to compile for")
if(ROCPROFSYS_USE_ROCM)
add_subdirectory(external)
else()
rocprofiler_systems_message(
WARNING
"ROCPROFSYS OMPVV CTests requires ROCm to be installed. Disabling OMPVV CTests..."
)
endif()
if(ROCPROFSYS_DISABLE_EXAMPLES)
if(NOT "openmp-target" IN_LIST ROCPROFSYS_DISABLE_EXAMPLES)
add_subdirectory(target)
+325
ファイルの表示
@@ -0,0 +1,325 @@
# Copyright (c) Advanced Micro Devices, Inc.
# SPDX-License-Identifier: MIT
# ----------------------------------------------------------------------------------------#
#
# OMPVV (OpenMP Validation and Verification) submodule
#
# * Currently, GNU's libgomp cannot be used to capture traces. Only LLVM's
# LIBOMP can be used for trace capture
# * amdflang uses LIBOMP 201611 (5.0), but not all OpenMP 5.0 features are
# implemented. Only a subset of tests can be compiled.
# ----------------------------------------------------------------------------------------#
set(OMPVV_USE_OFFLOAD_TESTS FALSE)
if(ROCPROFSYS_DISABLE_EXAMPLES)
if("openmp-vv" IN_LIST ROCPROFSYS_DISABLE_EXAMPLES)
return()
endif()
if(NOT "openmp-vv-offload" IN_LIST ROCPROFSYS_DISABLE_EXAMPLES)
set(OMPVV_USE_OFFLOAD_TESTS TRUE)
endif()
else()
set(OMPVV_USE_OFFLOAD_TESTS TRUE)
endif()
rocprofiler_systems_message(STATUS "Configuring OMPVV...")
# Master branch contains stable releases
rocprofiler_systems_checkout_git_submodule(
RELATIVE_PATH
external/ompvv
WORKING_DIRECTORY
${PROJECT_SOURCE_DIR}
TEST_FILE
Makefile
REPO_URL
https://github.com/OpenMP-Validation-and-Verification/OpenMP_VV.git
REPO_BRANCH
"master"
)
set(ROCPROFSYS_OMPVV_SUBMODULE_DIR "${PROJECT_SOURCE_DIR}/external/ompvv")
set(ROCPROFSYS_OMPVV_SOURCE_DIR "${CMAKE_BINARY_DIR}/examples/openmp/external/ompvv")
set(OMPVV_MAKEDEF_FILE "sys/make/make.def")
# ---------------------------------------------------------------------------------------#
# Helper functions
# ---------------------------------------------------------------------------------------#
# Updates the make.def FOFFLOADING flag
function(update_make_def_foffloading FOFFLOADING_FLAGS)
file(READ ${ROCPROFSYS_OMPVV_SOURCE_DIR}/${OMPVV_MAKEDEF_FILE} MAKE_DEF_CONTENT)
string(
REGEX REPLACE
"FOFFLOADING[ \t]*=[ \t]*-fopenmp[^\n\r]*"
"FOFFLOADING = ${FOFFLOADING_FLAGS}"
MAKE_DEF_CONTENT
"${MAKE_DEF_CONTENT}"
)
file(WRITE ${ROCPROFSYS_OMPVV_SOURCE_DIR}/${OMPVV_MAKEDEF_FILE} "${MAKE_DEF_CONTENT}")
endfunction()
# Individually compiles a given list of tests
function(compile_ompvv_tests TEST_LIST_VAR)
# OMPVV doesn't support building subsets of test folders
foreach(test IN LISTS ${TEST_LIST_VAR})
rocprofiler_systems_message(STATUS "Compiling OMPVV test: ${test}")
execute_process(
COMMAND
make FC=${OMPVV_FC} DEVICE_TYPE=amd OMP_VERSION=${OMPVV_OPENMP_VERSION}
NUM_THREADS_HOST=${OMPVV_NUM_THREADS_HOST}
NUM_THREADS_DEVICE=${OMPVV_NUM_THREADS_DEVICE}
NUM_TEAMS_DEVICE=${OMPVV_NUM_TEAMS_DEVICE} "SOURCES=${test}" compile
WORKING_DIRECTORY ${ROCPROFSYS_OMPVV_SOURCE_DIR}
RESULT_VARIABLE OMPVV_BUILD_RESULT
OUTPUT_VARIABLE OMPVV_BUILD_OUTPUT
ERROR_VARIABLE OMPVV_BUILD_ERROR
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE
)
if(NOT OMPVV_BUILD_RESULT EQUAL 0)
rocprofiler_systems_message(
FATAL_ERROR "OMPVV build failed for ${test}: ${OMPVV_BUILD_ERROR}"
)
endif()
endforeach()
endfunction()
# ---------------------------------------------------------------------------------------#
# Copy OMPVV to build folder
# ---------------------------------------------------------------------------------------#
if(NOT EXISTS "${ROCPROFSYS_OMPVV_SOURCE_DIR}")
execute_process(
COMMAND
${CMAKE_COMMAND} -E copy_directory ${ROCPROFSYS_OMPVV_SUBMODULE_DIR}
${ROCPROFSYS_OMPVV_SOURCE_DIR}
)
endif()
# ---------------------------------------------------------------------------------------#
# Compiler setup
# ---------------------------------------------------------------------------------------#
# OMPVV requires amdclang++
find_program(
amdclangpp_EXECUTABLE
NAMES amdclang++
HINTS ${ROCM_PATH}
ENV ROCM_PATH
/opt/rocm
PATHS ${ROCM_PATH}
ENV ROCM_PATH
/opt/rocm
PATH_SUFFIXES bin llvm/bin
)
mark_as_advanced(amdclangpp_EXECUTABLE)
if(NOT amdclangpp_EXECUTABLE)
rocprofiler_systems_message(
FATAL_ERROR
"Could not find amdclang++. This is required for the OMPVV tests."
)
endif()
find_program(
amdflang_EXECUTABLE
NAMES amdflang
HINTS ${ROCM_PATH}
ENV ROCM_PATH
/opt/rocm
PATHS ${ROCM_PATH}
ENV ROCM_PATH
/opt/rocm
PATH_SUFFIXES bin llvm/bin
)
mark_as_advanced(amdflang_EXECUTABLE)
if(NOT amdflang_EXECUTABLE)
rocprofiler_systems_message(
FATAL_ERROR
"Could not find amdflang. This is required for the OMPVV tests."
)
endif()
set(OMPVV_COMPILER
"${amdflang_EXECUTABLE}"
CACHE FILEPATH
"Fortran compiler used for OMPVV tests"
)
set(OMPVV_FC "amdflang")
execute_process(
COMMAND ${amdflang_EXECUTABLE} --version
OUTPUT_VARIABLE AMDFLANG_VERSION_CMD_OUTPUT
RESULT_VARIABLE AMDFLANG_VERSION_CMD_RESULT
)
set(AMDFLANG_FULL_VERSION "")
if(AMDFLANG_VERSION_CMD_RESULT EQUAL 0)
string(
REGEX MATCH
"version ([0-9]+)\\.([0-9]+)\\.([0-9]+)"
VERSION_MATCH
"${AMDFLANG_VERSION_CMD_OUTPUT}"
)
if(VERSION_MATCH)
set(AMDFLANG_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(AMDFLANG_VERSION_MINOR "${CMAKE_MATCH_2}")
set(AMDFLANG_VERSION_PATCH "${CMAKE_MATCH_3}")
set(AMDFLANG_FULL_VERSION
"${AMDFLANG_VERSION_MAJOR}.${AMDFLANG_VERSION_MINOR}.${AMDFLANG_VERSION_PATCH}"
)
rocprofiler_systems_message(STATUS "Detected amdflang version: ${AMDFLANG_FULL_VERSION}")
endif()
endif()
if(NOT AMDFLANG_FULL_VERSION)
rocprofiler_systems_message(FATAL_ERROR "Failed to detect amdflang version.")
endif()
# ---------------------------------------------------------------------------------------#
# Variables
# ---------------------------------------------------------------------------------------#
set(OMPVV_OPENMP_VERSION 5.0)
set(OMPVV_TDIR "tests/${OMPVV_OPENMP_VERSION}")
set(OMPVV_NUM_THREADS_HOST ${ROCPROFSYS_THREAD_COUNT})
set(OMPVV_NUM_TEAMS_DEVICE 8) # default used by ompvv
set(OMPVV_NUM_THREADS_DEVICE 8) # default used by ompvv
# Files listed below are OpenMP 5.0 tests that compile for
# amdflang 20.0, 19.0 and 18.0.
# Set of host only tests to be compiled
set(OMPVV_HOST_TESTS_TO_COMPILE
"${OMPVV_TDIR}/teams/test_team_default_shared.F90"
"${OMPVV_TDIR}/parallel_for_simd/test_parallel_for_simd_atomic.F90"
)
# Set of offloading tests to be compiled (excluding reduction and simd_atomic
# tests due to OMPVV test failure)
set(OMPVV_OFFLOAD_TESTS_TO_COMPILE "")
if(OMPVV_USE_OFFLOAD_TESTS)
set(OMPVV_OFFLOAD_TESTS_TO_COMPILE
"${OMPVV_TDIR}/target_simd/test_target_simd_if.F90"
"${OMPVV_TDIR}/target_teams_distribute_parallel_for/test_target_teams_distribute_parallel_for_collapse.F90"
)
endif()
# if(AMDFLANG_VERSION_MAJOR EQUAL 20)
# list(APPEND OMPVV_HOST_TESTS_TO_COMPILE
# "${OMPVV_TDIR}/task/test_task_detach.F90"
# )
# endif()
# ---------------------------------------------------------------------------------------#
# Compile tests
# ---------------------------------------------------------------------------------------#
# Remove all -O3 flags to prevent function inlining
file(READ ${ROCPROFSYS_OMPVV_SOURCE_DIR}/${OMPVV_MAKEDEF_FILE} MAKE_DEF_CONTENT)
string(REGEX REPLACE "-O3[ \t]*" "" MAKE_DEF_CONTENT "${MAKE_DEF_CONTENT}")
file(WRITE ${ROCPROFSYS_OMPVV_SOURCE_DIR}/${OMPVV_MAKEDEF_FILE} "${MAKE_DEF_CONTENT}")
# OMPVV makefile option NO_OFFLOADING not supported for amdflang,
# must manually do it
set(OMPVV_HOST_FOFFLOADING_FLAGS "-fopenmp --offload-host-only")
update_make_def_foffloading("${OMPVV_HOST_FOFFLOADING_FLAGS}")
compile_ompvv_tests(OMPVV_HOST_TESTS_TO_COMPILE)
if(OMPVV_USE_OFFLOAD_TESTS)
set(OMPVV_OFFLOAD_FOFFLOADING_FLAGS "-fopenmp")
foreach(arch IN LISTS DEFAULT_GPU_TARGETS)
set(OMPVV_OFFLOAD_FOFFLOADING_FLAGS
"${OMPVV_OFFLOAD_FOFFLOADING_FLAGS} --offload-arch=${arch}"
)
endforeach()
update_make_def_foffloading("${OMPVV_OFFLOAD_FOFFLOADING_FLAGS}")
compile_ompvv_tests(OMPVV_OFFLOAD_TESTS_TO_COMPILE)
endif()
# ---------------------------------------------------------------------------------------#
# Copy generated binaries to top level of build folder
# ---------------------------------------------------------------------------------------#
set(OMPVV_BIN_SOURCE "${ROCPROFSYS_OMPVV_SOURCE_DIR}/bin")
set(OMPVV_BIN_DEST "${CMAKE_BINARY_DIR}")
set(ROCPROFSYS_OMPVV_HOST_TESTS "")
set(ROCPROFSYS_OMPVV_OFFLOAD_TESTS "")
file(GLOB OMPVV_BINARIES "${OMPVV_BIN_SOURCE}/*")
foreach(OMPVV_BIN ${OMPVV_BINARIES})
get_filename_component(BIN_NAME ${OMPVV_BIN} NAME_WE)
# Determine type of test
set(IS_HOST_TEST FALSE)
set(IS_OFFLOAD_TEST FALSE)
foreach(host_test IN LISTS OMPVV_HOST_TESTS_TO_COMPILE)
get_filename_component(HOST_TEST_NAME ${host_test} NAME_WE)
if(BIN_NAME STREQUAL HOST_TEST_NAME)
set(IS_HOST_TEST TRUE)
break()
endif()
endforeach()
if(NOT IS_HOST_TEST AND OMPVV_USE_OFFLOAD_TESTS)
foreach(offload_test IN LISTS OMPVV_OFFLOAD_TESTS_TO_COMPILE)
get_filename_component(OFFLOAD_TEST_NAME ${offload_test} NAME_WE)
if(BIN_NAME STREQUAL OFFLOAD_TEST_NAME)
set(IS_OFFLOAD_TEST TRUE)
break()
endif()
endforeach()
endif()
if(NOT IS_HOST_TEST AND NOT IS_OFFLOAD_TEST)
continue()
endif()
# For consistent naming with other tests
string(REGEX REPLACE "\\.F90$" "" NEW_BIN_NAME ${BIN_NAME})
string(REPLACE "_" "-" NEW_BIN_NAME ${NEW_BIN_NAME})
file(COPY "${OMPVV_BIN}" DESTINATION "${OMPVV_BIN_DEST}")
if(IS_HOST_TEST)
set(TARGET_NAME "openmp-vv-host-${NEW_BIN_NAME}")
list(APPEND ROCPROFSYS_OMPVV_HOST_TESTS ${TARGET_NAME})
elseif(IS_OFFLOAD_TEST)
set(TARGET_NAME "openmp-vv-offload-${NEW_BIN_NAME}")
list(APPEND ROCPROFSYS_OMPVV_OFFLOAD_TESTS ${TARGET_NAME})
endif()
file(RENAME "${OMPVV_BIN_DEST}/${BIN_NAME}.F90.o" "${OMPVV_BIN_DEST}/${TARGET_NAME}")
add_executable(${TARGET_NAME} IMPORTED GLOBAL)
set_target_properties(
${TARGET_NAME}
PROPERTIES IMPORTED_LOCATION "${OMPVV_BIN_DEST}/${TARGET_NAME}"
)
endforeach()
set(ROCPROFSYS_OMPVV_HOST_TESTS
"${ROCPROFSYS_OMPVV_HOST_TESTS}"
CACHE STRING
"Internal variable used to generate OMPVV Host CTests"
FORCE
)
set(ROCPROFSYS_OMPVV_OFFLOAD_TESTS
"${ROCPROFSYS_OMPVV_OFFLOAD_TESTS}"
CACHE STRING
"Internal variable used to generate OMPVV Offload CTests"
FORCE
)
rocprofiler_systems_message(STATUS
"Successfully built and compiled OMPVV tests"
)
ベンダーファイル サブモジュール
+1
サブモジュール projects/rocprofiler-systems/examples/openmp/external/ompvv2d06fc22ac で追加されました
+3 -18
ファイルの表示
@@ -1,3 +1,6 @@
# Copyright (c) Advanced Micro Devices, Inc.
# SPDX-License-Identifier: MIT
cmake_minimum_required(VERSION 3.21 FATAL_ERROR)
if(NOT OMP_TARGET_COMPILER)
@@ -30,24 +33,6 @@ project(rocprofiler-systems-example-openmp-target-lib LANGUAGES CXX)
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
set(DEFAULT_GPU_TARGETS
"gfx900"
"gfx906"
"gfx908"
"gfx90a"
"gfx940"
"gfx941"
"gfx942"
"gfx950"
"gfx1030"
"gfx1010"
"gfx1100"
"gfx1101"
"gfx1102"
)
set(GPU_TARGETS "${DEFAULT_GPU_TARGETS}" CACHE STRING "GPU targets to compile for")
find_package(Threads REQUIRED)
function(add_offload_flags tgt)
+63 -39
ファイルの表示
@@ -1,30 +1,11 @@
# 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.
# Copyright (c) Advanced Micro Devices, Inc.
# SPDX-License-Identifier: MIT
# -------------------------------------------------------------------------------------- #
# ----------------------------------------------------------------------------- #
#
# openmp tests
#
# -------------------------------------------------------------------------------------- #
# ----------------------------------------------------------------------------- #
if(ROCmVersion_DIR)
set(_rocm_root "${ROCmVersion_DIR}")
@@ -52,8 +33,10 @@ endif()
if(ROCPROFSYS_OPENMP_USING_LIBOMP_LIBRARY AND ROCPROFSYS_USE_OMPT)
set(_OMPT_PASS_REGEX "\\|_omp_")
set(_OMPVV_TARGET_PASS_REGEX "_+omp_offloading")
else()
set(_OMPT_PASS_REGEX "")
set(_OMPVV_OFFLOAD_PASS_REGEX "")
endif()
rocprofiler_systems_add_test(
@@ -65,7 +48,7 @@ rocprofiler_systems_add_test(
REWRITE_TIMEOUT 180
RUNTIME_TIMEOUT 360
ENVIRONMENT
"${_ompt_environment};ROCPROFSYS_USE_SAMPLING=OFF;ROCPROFSYS_COUT_OUTPUT=ON"
"${_ompt_environment};ROCPROFSYS_USE_SAMPLING=OFF;ROCPROFSYS_COUT_OUTPUT=ON"
REWRITE_RUN_PASS_REGEX "${_OMPT_PASS_REGEX}"
RUNTIME_PASS_REGEX "${_OMPT_PASS_REGEX}"
REWRITE_FAIL_REGEX "0 instrumented loops in procedure"
@@ -81,7 +64,7 @@ rocprofiler_systems_add_test(
REWRITE_TIMEOUT 180
RUNTIME_TIMEOUT 360
ENVIRONMENT
"${_ompt_environment};ROCPROFSYS_USE_SAMPLING=ON;ROCPROFSYS_SAMPLING_FREQ=50;ROCPROFSYS_COUT_OUTPUT=ON"
"${_ompt_environment};ROCPROFSYS_USE_SAMPLING=ON;ROCPROFSYS_SAMPLING_FREQ=50;ROCPROFSYS_COUT_OUTPUT=ON"
REWRITE_RUN_PASS_REGEX "${_OMPT_PASS_REGEX}"
REWRITE_FAIL_REGEX "0 instrumented loops in procedure"
)
@@ -93,7 +76,7 @@ rocprofiler_systems_add_test(
GPU ON
LABELS "openmp;openmp-target"
ENVIRONMENT
"${_ompt_environment};${_rocm_ld_env};ROCPROFSYS_ROCM_DOMAINS=hip_runtime_api,kernel_dispatch"
"${_ompt_environment};${_rocm_ld_env};ROCPROFSYS_ROCM_DOMAINS=hip_runtime_api,kernel_dispatch"
)
rocprofiler_systems_add_validation_test(
@@ -102,21 +85,62 @@ rocprofiler_systems_add_validation_test(
PERFETTO_FILE "perfetto-trace.proto"
LABELS "openmp;openmp-target"
ENVIRONMENT "${_rocm_ld_env}"
ARGS --label-substrings
Z4vmulIiEvPT_S1_S1_i_l51.kd
Z4vmulIfEvPT_S1_S1_i_l51.kd
Z4vmulIdEvPT_S1_S1_i_l51.kd
-c
4
4
4
-d
0
0
0
-p
ARGS
--label-substrings
Z4vmulIiEvPT_S1_S1_i_l51.kd
Z4vmulIfEvPT_S1_S1_i_l51.kd
Z4vmulIdEvPT_S1_S1_i_l51.kd
-c 4 4 4
-d 0 0 0
-p
)
# OpenMP tests generated using OMPVV binaries
if(ROCPROFSYS_OMPVV_HOST_TESTS)
foreach(HOST_TEST_NAME ${ROCPROFSYS_OMPVV_HOST_TESTS})
rocprofiler_systems_add_test(
SKIP_RUNTIME
NAME ${HOST_TEST_NAME}
TARGET ${HOST_TEST_NAME}
LABELS "openmp;ompvv"
REWRITE_ARGS
-e -v 2 --instrument-loops
RUNTIME_ARGS
-e -v 1 --label return args -E ^GOMP
REWRITE_TIMEOUT 180
RUNTIME_TIMEOUT 360
ENVIRONMENT
"${_ompt_environment};ROCPROFSYS_USE_SAMPLING=ON;ROCPROFSYS_SAMPLING_FREQ=50;ROCPROFSYS_COUT_OUTPUT=ON"
REWRITE_RUN_PASS_REGEX "${_OMPT_PASS_REGEX}"
REWRITE_FAIL_REGEX "0 instrumented loops in procedure"
)
endforeach()
set(_ompvv_offload_environment
"${_ompt_environment}"
"${_rocm_ld_env}"
"ROCPROFSYS_USE_SAMPLING=ON"
"ROCPROFSYS_SAMPLING_FREQ=50"
"ROCPROFSYS_COUT_OUTPUT=ON"
"ROCPROFSYS_ROCM_DOMAINS=hip_runtime_api,marker_api,kernel_dispatch,memory_copy,scratch_memory,hsa_api"
)
foreach(OFFLOAD_TEST_NAME ${ROCPROFSYS_OMPVV_OFFLOAD_TESTS})
rocprofiler_systems_add_test(
SKIP_RUNTIME
NAME ${OFFLOAD_TEST_NAME}
TARGET ${OFFLOAD_TEST_NAME}
GPU ON
LABELS "openmp;ompvv;openmp-target"
REWRITE_ARGS -e -v 2
ENVIRONMENT
"${_ompvv_offload_environment}"
REWRITE_RUN_PASS_REGEX
"${_OMPVV_OFFLOAD_PASS_REGEX}"
)
endforeach()
endif()
set(_ompt_sampling_environ
"${_ompt_environment}"
"ROCPROFSYS_VERBOSE=2"