Skip to content

Commit 7861edc

Browse files
committed
Fix issue with OpenMPI
1 parent 632ab89 commit 7861edc

2 files changed

Lines changed: 18 additions & 9 deletions

File tree

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ if(DEBUG_INFO)
322322
endif()
323323

324324
if(ENABLE_MPI)
325-
find_package(MPI REQUIRED)
325+
find_package(MPI COMPONENTS CXX REQUIRED)
326326
include_directories(${MPI_CXX_INCLUDE_PATH})
327327
target_link_libraries(${ABACUS_BIN_NAME} MPI::MPI_CXX)
328328
add_compile_definitions(__MPI)

cmake/FindMKL.cmake

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,26 @@ else()
2222
find_library(MKL_THREAD NAMES mkl_gnu_thread HINTS ${MKLROOT}/lib ${MKLROOT}/lib/intel64)
2323
# With GCC we use system-installed GNU OpenMP
2424
endif()
25+
2526
if(ENABLE_MPI)
27+
execute_process(COMMAND ${MPI_CXX_COMPILER} --showme:version
28+
OUTPUT_VARIABLE MPI_VER_OUT
29+
ERROR_VARIABLE MPI_VER_ERR)
30+
if(MPI_VER_OUT MATCHES "Open MPI" OR MPI_VER_ERR MATCHES "Open MPI")
31+
set(MKL_BLACS_LIB_NAME "mkl_blacs_openmpi_lp64")
32+
else()
33+
set(MKL_BLACS_LIB_NAME "mkl_blacs_intelmpi_lp64")
34+
endif()
2635
find_library(MKL_SCALAPACK NAMES mkl_scalapack_lp64 HINTS ${MKLROOT}/lib ${MKLROOT}/lib/intel64)
27-
find_library(MKL_BLACS_INTELMPI NAMES mkl_blacs_intelmpi_lp64 HINTS ${MKLROOT}/lib ${MKLROOT}/lib/intel64)
36+
find_library(MKL_BLACS NAMES ${MKL_BLACS_LIB_NAME} HINTS ${MKLROOT}/lib ${MKLROOT}/lib/intel64)
2837
endif()
2938

3039
include(FindPackageHandleStandardArgs)
3140
# handle the QUIETLY and REQUIRED arguments and set MKL_FOUND to TRUE
3241
# if all listed variables are TRUE
3342

3443
if(ENABLE_MPI)
35-
find_package_handle_standard_args(MKL DEFAULT_MSG MKL_INTERFACE_LIB MKL_THREAD MKL_CORE MKL_SCALAPACK MKL_BLACS_INTELMPI MKL_INCLUDE)
44+
find_package_handle_standard_args(MKL DEFAULT_MSG MKL_INTERFACE_LIB MKL_THREAD MKL_CORE MKL_SCALAPACK MKL_BLACS MKL_INCLUDE)
3645
else()
3746
find_package_handle_standard_args(MKL MKL_INTERFACE_LIB MKL_THREAD MKL_CORE MKL_INCLUDE)
3847
endif()
@@ -62,10 +71,10 @@ if(MKL_FOUND)
6271
IMPORTED_LOCATION "${MKL_SCALAPACK}"
6372
INTERFACE_INCLUDE_DIRECTORIES "${MKL_INCLUDE}")
6473
endif()
65-
if(NOT TARGET MKL::BLACS_INTELMPI)
66-
add_library(MKL::BLACS_INTELMPI UNKNOWN IMPORTED)
67-
set_target_properties(MKL::BLACS_INTELMPI PROPERTIES
68-
IMPORTED_LOCATION "${MKL_BLACS_INTELMPI}"
74+
if(ENABLE_MPI AND NOT TARGET MKL::BLACS)
75+
add_library(MKL::BLACS UNKNOWN IMPORTED)
76+
set_target_properties(MKL::BLACS PROPERTIES
77+
IMPORTED_LOCATION "${MKL_BLACS}"
6978
INTERFACE_INCLUDE_DIRECTORIES "${MKL_INCLUDE}")
7079
endif()
7180
if(MKL_IOMP5 AND NOT TARGET MKL::IOMP5)
@@ -78,7 +87,7 @@ if(MKL_FOUND)
7887
set_property(TARGET MKL::MKL PROPERTY
7988
INTERFACE_LINK_LIBRARIES
8089
"-Wl,--start-group"
81-
MKL::INTERFACE_LIB MKL::THREAD MKL::CORE MKL::MKL_SCALAPACK MKL::BLACS_INTELMPI
90+
MKL::INTERFACE_LIB MKL::THREAD MKL::CORE MKL::MKL_SCALAPACK MKL::BLACS
8291
"-Wl,--end-group"
8392
)
8493
else()
@@ -96,7 +105,7 @@ if(MKL_FOUND)
96105
endif()
97106

98107
if(ENABLE_MPI)
99-
mark_as_advanced(MKL_INCLUDE MKL_INTERFACE_LIB MKL_THREAD MKL_CORE MKL_SCALAPACK MKL_BLACS_INTELMPI)
108+
mark_as_advanced(MKL_INCLUDE MKL_INTERFACE_LIB MKL_THREAD MKL_CORE MKL_SCALAPACK MKL_BLACS)
100109
else()
101110
mark_as_advanced(MKL_INCLUDE MKL_INTERFACE_LIB MKL_THREAD MKL_CORE)
102111
endif()

0 commit comments

Comments
 (0)