Skip to content

Commit 8d7ecf9

Browse files
authored
Merge pull request #1047 from TorreZuk/cherry-pick-omp
CP merge pull request #1038 from estewart08/openmp-cmake-config (#1043)
2 parents 22b81b0 + 458f565 commit 8d7ecf9

File tree

3 files changed

+36
-12
lines changed

3 files changed

+36
-12
lines changed

clients/CMakeLists.txt

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,25 @@ function( get_cblas cblas_libs cblas_inc )
5858
set( ${cblas_libs} ${libs} PARENT_SCOPE )
5959
endfunction( )
6060

61+
function( apply_omp_settings lib_target_ )
62+
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND TARGET OpenMP::OpenMP_CXX)
63+
set_target_properties( ${lib_target_} PROPERTIES
64+
BUILD_RPATH "${HIP_CLANG_ROOT}/lib"
65+
)
66+
set_target_properties( ${lib_target_} PROPERTIES
67+
INSTALL_RPATH "$ORIGIN/../llvm/lib"
68+
)
69+
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND TARGET OpenMP::omp)
70+
set_target_properties( ${lib_target_} PROPERTIES
71+
BUILD_RPATH "${HIP_CLANG_ROOT}/${openmp_LIB_DIR}"
72+
)
73+
set_target_properties( ${lib_target_} PROPERTIES
74+
INSTALL_RPATH "$ORIGIN/../llvm/${openmp_LIB_DIR}"
75+
)
76+
endif()
77+
endfunction()
78+
79+
6180
# Consider removing this in the future
6281
# This should appear before the project command, because it does not use FORCE
6382
if( WIN32 )
@@ -114,19 +133,20 @@ if( BUILD_CLIENTS_BENCHMARKS OR BUILD_CLIENTS_TESTS)
114133
set(THREADS_PREFER_PTHREAD_FLAG ON)
115134
find_package(Threads REQUIRED)
116135

117-
# if it fails to find OpenMP compile and link flags in strange configurations it can just use non-parallel reference computation
118-
# if there is no omp.h to find the client compilation will fail and this should be obvious, used to be REQUIRED
119-
find_package(OpenMP)
136+
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
137+
# Look for openmp config in ROCm install to populate openmp_LIB_DIR and openmp_LIB_INSTALL_DIR
138+
find_package(OpenMP CONFIG PATHS "${HIP_CLANG_ROOT}/lib/cmake")
139+
endif()
120140

121-
if (TARGET OpenMP::OpenMP_CXX)
122-
set( COMMON_LINK_LIBS "OpenMP::OpenMP_CXX")
123-
if(HIP_PLATFORM STREQUAL amd)
124-
list( APPEND COMMON_LINK_LIBS "-L\"${HIP_CLANG_ROOT}/lib\"")
125-
if (NOT WIN32)
126-
list( APPEND COMMON_LINK_LIBS "-Wl,-rpath=${HIP_CLANG_ROOT}/lib -lomp")
127-
else()
128-
list( APPEND COMMON_LINK_LIBS "libomp")
129-
endif()
141+
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND TARGET OpenMP::omp)
142+
set( COMMON_LINK_LIBS "OpenMP::omp")
143+
message(STATUS "Found openmp-config.cmake at ${OpenMP_DIR}")
144+
else()
145+
# if it fails to find OpenMP compile and link flags in strange configurations it can just use non-parallel reference computation
146+
# if there is no omp.h to find the client compilation will fail and this should be obvious, used to be REQUIRED
147+
find_package(OpenMP)
148+
if (TARGET OpenMP::OpenMP_CXX)
149+
set( COMMON_LINK_LIBS "OpenMP::OpenMP_CXX")
130150
endif()
131151
endif()
132152

clients/benchmarks/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ target_compile_options(hipblas-bench PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${COMMON_
8080
target_compile_definitions( hipblas-bench PRIVATE HIPBLAS_BENCH ${COMMON_DEFINES} ${BLIS_DEFINES} )
8181

8282
target_link_libraries( hipblas-bench PRIVATE ${BLAS_LIBRARY} ${COMMON_LINK_LIBS} )
83+
apply_omp_settings( hipblas-bench )
84+
8385
if (NOT WIN32)
8486
target_link_libraries( hipblas-bench PRIVATE stdc++fs )
8587
endif()

clients/gtest/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ target_compile_options(hipblas-test PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${COMMON_C
152152
target_compile_definitions( hipblas-test PRIVATE ${COMMON_DEFINES} )
153153

154154
target_link_libraries( hipblas-test PRIVATE ${BLAS_LIBRARY} ${COMMON_LINK_LIBS} )
155+
apply_omp_settings( hipblas-test )
156+
155157
if (NOT WIN32)
156158
target_link_libraries( hipblas-test PRIVATE stdc++fs )
157159
endif()

0 commit comments

Comments
 (0)