# # # cmake_minimum_required(VERSION 3.21.0 FATAL_ERROR) if(NOT OMP_TARGET_COMPILER) 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 NO_CACHE) mark_as_advanced(amdclangpp_EXECUTABLE) if(amdclangpp_EXECUTABLE) set(OMP_TARGET_COMPILER "${amdclangpp_EXECUTABLE}" CACHE FILEPATH "") endif() endif() project(rocprofiler-sdk-samples-openmp-target LANGUAGES CXX) find_package(rocprofiler-sdk REQUIRED) add_library(openmp-target-sample-client SHARED) target_sources(openmp-target-sample-client PRIVATE client.cpp client.hpp) target_link_libraries( openmp-target-sample-client PRIVATE rocprofiler-sdk::rocprofiler-sdk rocprofiler-sdk::samples-build-flags rocprofiler-sdk::samples-common-library) set(DEFAULT_GPU_TARGETS "gfx906" "gfx908" "gfx90a" "gfx940" "gfx941" "gfx942" "gfx1100" "gfx1101" "gfx1102") set(OPENMP_GPU_TARGETS "${DEFAULT_GPU_TARGETS}" CACHE STRING "GPU targets to compile for") if(ROCPROFILER_MEMCHECK STREQUAL "ThreadSanitizer") set(IS_THREAD_SANITIZER ON) else() set(IS_THREAD_SANITIZER OFF) endif() find_package(Threads REQUIRED) find_package(rocprofiler-sdk-roctx REQUIRED) add_executable(openmp-target-sample) target_sources(openmp-target-sample PRIVATE main.cpp) target_link_libraries( openmp-target-sample PRIVATE Threads::Threads rocprofiler-sdk-roctx::rocprofiler-sdk-roctx) target_compile_options(openmp-target-sample PRIVATE -fopenmp) target_link_options(openmp-target-sample PRIVATE -fopenmp) foreach(_TARGET ${OPENMP_GPU_TARGETS}) target_compile_options(openmp-target-sample PRIVATE --offload-arch=${_TARGET}) target_link_options(openmp-target-sample PRIVATE --offload-arch=${_TARGET}) endforeach() include(rocprofiler-sdk-custom-compilation) rocprofiler_sdk_custom_compilation(TARGET openmp-target-sample COMPILER ${OMP_TARGET_COMPILER}) rocprofiler_samples_get_preload_env(PRELOAD_ENV openmp-target-sample-client) rocprofiler_samples_get_ld_library_path_env( LIBRARY_PATH_ENV rocprofiler-sdk-roctx::rocprofiler-sdk-roctx-shared-library) set(openmp-target-sample-env ${PRELOAD_ENV} ${LIBRARY_PATH_ENV} "OMP_NUM_THREADS=2" "OMP_TARGET_OFFLOAD=mandatory" "OMP_DISPLAY_ENV=1" "ROCR_VISIBLE_DEVICES=0") add_test(NAME openmp-target-sample COMMAND $) set_tests_properties( openmp-target-sample PROPERTIES TIMEOUT 45 LABELS "samples;openmp-target" ENVIRONMENT "${openmp-target-sample-env}" FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}" DISABLED "${IS_THREAD_SANITIZER}")