Skip to content

Commit 1cfdce5

Browse files
committed
Fix issue with OpenMPI
1 parent 4ad7c27 commit 1cfdce5

2 files changed

Lines changed: 19 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: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,27 @@ 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()
35+
message(STATUS Find ${MKL_BLACS_LIB_NAME})
2636
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)
37+
find_library(MKL_BLACS NAMES ${MKL_BLACS_LIB_NAME} HINTS ${MKLROOT}/lib ${MKLROOT}/lib/intel64)
2838
endif()
2939

3040
include(FindPackageHandleStandardArgs)
3141
# handle the QUIETLY and REQUIRED arguments and set MKL_FOUND to TRUE
3242
# if all listed variables are TRUE
3343

3444
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)
45+
find_package_handle_standard_args(MKL DEFAULT_MSG MKL_INTERFACE_LIB MKL_THREAD MKL_CORE MKL_SCALAPACK MKL_BLACS MKL_INCLUDE)
3646
else()
3747
find_package_handle_standard_args(MKL MKL_INTERFACE_LIB MKL_THREAD MKL_CORE MKL_INCLUDE)
3848
endif()
@@ -62,10 +72,10 @@ if(MKL_FOUND)
6272
IMPORTED_LOCATION "${MKL_SCALAPACK}"
6373
INTERFACE_INCLUDE_DIRECTORIES "${MKL_INCLUDE}")
6474
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}"
75+
if(ENABLE_MPI AND NOT TARGET MKL::BLACS)
76+
add_library(MKL::BLACS UNKNOWN IMPORTED)
77+
set_target_properties(MKL::BLACS PROPERTIES
78+
IMPORTED_LOCATION "${MKL_BLACS}"
6979
INTERFACE_INCLUDE_DIRECTORIES "${MKL_INCLUDE}")
7080
endif()
7181
if(MKL_IOMP5 AND NOT TARGET MKL::IOMP5)
@@ -78,7 +88,7 @@ if(MKL_FOUND)
7888
set_property(TARGET MKL::MKL PROPERTY
7989
INTERFACE_LINK_LIBRARIES
8090
"-Wl,--start-group"
81-
MKL::INTERFACE_LIB MKL::THREAD MKL::CORE MKL::MKL_SCALAPACK MKL::BLACS_INTELMPI
91+
MKL::INTERFACE_LIB MKL::THREAD MKL::CORE MKL::MKL_SCALAPACK MKL::BLACS
8292
"-Wl,--end-group"
8393
)
8494
else()
@@ -96,7 +106,7 @@ if(MKL_FOUND)
96106
endif()
97107

98108
if(ENABLE_MPI)
99-
mark_as_advanced(MKL_INCLUDE MKL_INTERFACE_LIB MKL_THREAD MKL_CORE MKL_SCALAPACK MKL_BLACS_INTELMPI)
109+
mark_as_advanced(MKL_INCLUDE MKL_INTERFACE_LIB MKL_THREAD MKL_CORE MKL_SCALAPACK MKL_BLACS)
100110
else()
101111
mark_as_advanced(MKL_INCLUDE MKL_INTERFACE_LIB MKL_THREAD MKL_CORE)
102112
endif()

0 commit comments

Comments
 (0)