Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 31 additions & 12 deletions projects/rocblas/clients/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,24 @@

cmake_minimum_required( VERSION 3.16.8 )

function( apply_omp_settings lib_target_ )
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND TARGET OpenMP::OpenMP_CXX)
set_target_properties( ${lib_target_} PROPERTIES
BUILD_RPATH "${HIP_CLANG_ROOT}/lib"
)
set_target_properties( ${lib_target_} PROPERTIES
INSTALL_RPATH "$ORIGIN/../llvm/lib"
)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND TARGET OpenMP::omp)
set_target_properties( ${lib_target_} PROPERTIES
BUILD_RPATH "${HIP_CLANG_ROOT}/${openmp_LIB_DIR}"
)
set_target_properties( ${lib_target_} PROPERTIES
INSTALL_RPATH "$ORIGIN/../llvm/${openmp_LIB_DIR}"
)
endif()
endfunction()

# This has to be initialized before the project() command appears
# Set the default of CMAKE_BUILD_TYPE to be release, unless user specifies with -D. MSVC_IDE does not use CMAKE_BUILD_TYPE
if( NOT DEFINED CMAKE_CONFIGURATION_TYPES AND NOT DEFINED CMAKE_BUILD_TYPE )
Expand Down Expand Up @@ -69,20 +87,21 @@ endif()
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)

# if it fails to find OpenMP compile and link flags in strange configurations it can just use non-parallel reference computation
# if there is no omp.h to find the client compilation will fail and this should be obvious, used to be REQUIRED
find_package(OpenMP)

if (TARGET OpenMP::OpenMP_CXX)
set( COMMON_LINK_LIBS "OpenMP::OpenMP_CXX")
get_filename_component(LIBOMP_PATH "${OpenMP_omp_LIBRARY}" PATH)
if (NOT WIN32)
list( APPEND COMMON_LINK_LIBS "-Wl,-rpath=${LIBOMP_PATH}")
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# Look for openmp config in ROCm install to populate openmp_LIB_DIR and openmp_LIB_INSTALL_DIR
find_package(OpenMP CONFIG PATHS "${HIP_CLANG_ROOT}/lib/cmake")
endif()

if (WIN32)
list( APPEND COMMON_LINK_LIBS "libomp")
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND TARGET OpenMP::omp)
set( COMMON_LINK_LIBS "OpenMP::omp")
message(STATUS "Found openmp-config.cmake at ${OpenMP_DIR}")
else()
# if it fails to find OpenMP compile and link flags in strange configurations it can just use non-parallel reference computation
# if there is no omp.h to find the client compilation will fail and this should be obvious, used to be REQUIRED
find_package(OpenMP)
if (TARGET OpenMP::OpenMP_CXX)
set( COMMON_LINK_LIBS "OpenMP::OpenMP_CXX")
endif()
endif()

if (TARGET Threads::Threads)
Expand Down
2 changes: 2 additions & 0 deletions projects/rocblas/clients/benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,10 @@ endif()


target_link_libraries( rocblas-bench PRIVATE ${COMMON_LINK_LIBS} )
apply_omp_settings( rocblas-bench )
if( BUILD_WITH_TENSILE )
target_link_libraries( rocblas-gemm-tune PRIVATE ${COMMON_LINK_LIBS} )
apply_omp_settings( rocblas-gemm-tune )
endif()

target_compile_options(rocblas-bench PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${COMMON_CXX_OPTIONS}>)
Expand Down
1 change: 1 addition & 0 deletions projects/rocblas/clients/gtest/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ if (NOT WIN32)
list( APPEND COMMON_LINK_LIBS "-lm -lstdc++fs" )
endif()
target_link_libraries( rocblas-test PRIVATE ${COMMON_LINK_LIBS} )
apply_omp_settings( rocblas-test )

target_compile_options(rocblas-test PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${COMMON_CXX_OPTIONS}>)

Expand Down