@@ -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
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 ()
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 )
2837endif ()
2938
3039include (FindPackageHandleStandardArgs )
3140# handle the QUIETLY and REQUIRED arguments and set MKL_FOUND to TRUE
3241# if all listed variables are TRUE
3342
3443if (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)
3645else ()
3746 find_package_handle_standard_args (MKL MKL_INTERFACE_LIB MKL_THREAD MKL_CORE MKL_INCLUDE)
3847endif ()
@@ -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)
96105endif ()
97106
98107if (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 )
100109else ()
101110 mark_as_advanced (MKL_INCLUDE MKL_INTERFACE_LIB MKL_THREAD MKL_CORE )
102111endif ()
0 commit comments