@@ -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
2424endif ()
25+
2526if (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 )
2838endif ()
2939
3040include (FindPackageHandleStandardArgs )
3141# handle the QUIETLY and REQUIRED arguments and set MKL_FOUND to TRUE
3242# if all listed variables are TRUE
3343
3444if (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)
3646else ()
3747 find_package_handle_standard_args (MKL MKL_INTERFACE_LIB MKL_THREAD MKL_CORE MKL_INCLUDE)
3848endif ()
@@ -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)
96106endif ()
97107
98108if (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 )
100110else ()
101111 mark_as_advanced (MKL_INCLUDE MKL_INTERFACE_LIB MKL_THREAD MKL_CORE )
102112endif ()
0 commit comments