From fc54e68c053436c22c4c17a3c265f59974852179 Mon Sep 17 00:00:00 2001 From: Seth R Johnson Date: Tue, 13 Jul 2021 18:14:10 -0400 Subject: [PATCH 1/2] Find{BLAS,LAPACK}: improve found message on Cray With Cray compiler wrappers (implicitly tested on OLCF Spock) the BLAS and LAPACK libraries are automatically linked as necessary through the wrapper script and programming environment. With this change, the configure output is: ``` -- Found BLAS: implicitly linked -- Found LAPACK: implicitly linked ``` rather than ``` -- Found BLAS: 1 -- Found LAPACK: LAPACK_LIBRARIES-PLACEHOLDER-FOR-EMPTY-LIBRARIES ``` --- Modules/FindBLAS.cmake | 2 ++ Modules/FindLAPACK.cmake | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Modules/FindBLAS.cmake b/Modules/FindBLAS.cmake index 726ff75bf8..a6fd2c9ca5 100644 --- a/Modules/FindBLAS.cmake +++ b/Modules/FindBLAS.cmake @@ -386,6 +386,8 @@ if(BLA_VENDOR STREQUAL "All") ) endif() if(BLAS_WORKS) + # Give a more helpful "found" message + set(BLAS_WORKS "implicitly linked") set(_blas_fphsa_req_var BLAS_WORKS) endif() endif() diff --git a/Modules/FindLAPACK.cmake b/Modules/FindLAPACK.cmake index 3146e06d44..d753244e3e 100644 --- a/Modules/FindLAPACK.cmake +++ b/Modules/FindLAPACK.cmake @@ -350,7 +350,7 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE) "lib/${LAPACK_mkl_ARCH_NAME}" ) - # First try empty lapack libs + # First try empty lapack libs (implicitly linked or automatic from BLAS) if(NOT ${_LIBRARIES}) check_lapack_libraries( ${_LIBRARIES} @@ -363,6 +363,11 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE) "${LAPACK_mkl_LIB_PATH_SUFFIXES}" "${_BLAS_LIBRARIES}" ) + if(LAPACK_WORKS AND NOT _BLAS_LIBRARIES) + # Give a more helpful "found" message + set(LAPACK_WORKS "implicitly linked") + set(_lapack_fphsa_req_var LAPACK_WORKS) + endif() endif() # Then try the search libs From 76487b04b152b2dc6abc258b21306f58c57a3e80 Mon Sep 17 00:00:00 2001 From: Seth R Johnson Date: Tue, 13 Jul 2021 21:27:52 -0400 Subject: [PATCH 2/2] Find{BLAS,LAPACK}: clean variables --- Modules/FindBLAS.cmake | 35 +++++++++++++++++++---------------- Modules/FindLAPACK.cmake | 21 ++++++++++++--------- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/Modules/FindBLAS.cmake b/Modules/FindBLAS.cmake index a6fd2c9ca5..0898240edf 100644 --- a/Modules/FindBLAS.cmake +++ b/Modules/FindBLAS.cmake @@ -441,7 +441,7 @@ if(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All") if(BLA_F95) set(BLAS_mkl_SEARCH_SYMBOL "sgemm_f95") - set(_LIBRARIES BLAS95_LIBRARIES) + set(_BLAS_LIBRARIES BLAS95_LIBRARIES) if(WIN32) # Find the main file (32-bit or 64-bit) set(BLAS_SEARCH_LIBS_WIN_MAIN "") @@ -503,7 +503,7 @@ if(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All") endif() else() set(BLAS_mkl_SEARCH_SYMBOL sgemm) - set(_LIBRARIES BLAS_LIBRARIES) + set(_BLAS_LIBRARIES BLAS_LIBRARIES) if(WIN32) # Find the main file (32-bit or 64-bit) set(BLAS_SEARCH_LIBS_WIN_MAIN "") @@ -615,15 +615,15 @@ if(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All") "lib/${BLAS_mkl_ARCH_NAME}" ) - foreach(IT ${BLAS_SEARCH_LIBS}) - string(REPLACE " " ";" SEARCH_LIBS ${IT}) - if(NOT ${_LIBRARIES}) + foreach(_search ${BLAS_SEARCH_LIBS}) + string(REPLACE " " ";" _search ${_search}) + if(NOT ${_BLAS_LIBRARIES}) check_blas_libraries( - ${_LIBRARIES} + ${_BLAS_LIBRARIES} BLAS ${BLAS_mkl_SEARCH_SYMBOL} "" - "${SEARCH_LIBS}" + "${_search}" "${CMAKE_THREAD_LIBS_INIT};${BLAS_mkl_LM};${BLAS_mkl_LDL}" "${BLAS_mkl_MKLROOT}" "${BLAS_mkl_LIB_PATH_SUFFIXES}" @@ -631,6 +631,7 @@ if(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All") endif() endforeach() + unset(_search) unset(BLAS_mkl_ILP_MODE) unset(BLAS_mkl_INTFACE) unset(BLAS_mkl_THREADING) @@ -736,14 +737,14 @@ if(BLA_VENDOR MATCHES "Arm" OR BLA_VENDOR STREQUAL "All") # Check for 64bit Integer support if(BLA_VENDOR MATCHES "_ilp64") - set(BLAS_armpl_LIB "armpl_ilp64") + set(_blas_armpl_lib "armpl_ilp64") else() - set(BLAS_armpl_LIB "armpl_lp64") + set(_blas_armpl_lib "armpl_lp64") endif() # Check for OpenMP support, VIA BLA_VENDOR of Arm_mp or Arm_ipl64_mp if(BLA_VENDOR MATCHES "_mp") - set(BLAS_armpl_LIB "${BLAS_armpl_LIB}_mp") + set(_blas_armpl_lib "${_blas_armpl_lib}_mp") endif() if(NOT BLAS_LIBRARIES) @@ -752,13 +753,13 @@ if(BLA_VENDOR MATCHES "Arm" OR BLA_VENDOR STREQUAL "All") BLAS sgemm "" - "${BLAS_armpl_LIB}" + "${_blas_armpl_lib}" "" "" "" ) endif() - + set(_blas_armpl_lib) endif() # FLAME's blis library? (https://github.com/flame/blis) @@ -1089,11 +1090,11 @@ endif() # Elbrus Math Library? if(BLA_VENDOR MATCHES "EML" OR BLA_VENDOR STREQUAL "All") - set(BLAS_EML_LIB "eml") + set(_blas_eml_lib "eml") # Check for OpenMP support, VIA BLA_VENDOR of eml_mt if(BLA_VENDOR MATCHES "_mt") - set(BLAS_EML_LIB "${BLAS_EML_LIB}_mt") + set(_blas_eml_lib "${BLAS_EML_LIB}_mt") endif() if(NOT BLAS_LIBRARIES) @@ -1102,13 +1103,13 @@ if(BLA_VENDOR MATCHES "EML" OR BLA_VENDOR STREQUAL "All") BLAS sgemm "" - "${BLAS_EML_LIB}" + "${_blas_eml_lib}" "" "" "" ) endif() - + set(_blas_eml_lib) endif() # Fujitsu SSL2 Library? @@ -1165,3 +1166,5 @@ if(NOT BLA_F95) endif() _add_blas_target() +unset(_blas_fphsa_req_var) +unset(_BLAS_LIBRARIES) diff --git a/Modules/FindLAPACK.cmake b/Modules/FindLAPACK.cmake index d753244e3e..aa5423a434 100644 --- a/Modules/FindLAPACK.cmake +++ b/Modules/FindLAPACK.cmake @@ -298,7 +298,7 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE) if(BLA_F95) set(LAPACK_mkl_SEARCH_SYMBOL "cheev_f95") - set(_LIBRARIES LAPACK95_LIBRARIES) + set(_LAPACK_LIBRARIES LAPACK95_LIBRARIES) set(_BLAS_LIBRARIES ${BLAS95_LIBRARIES}) # old @@ -311,7 +311,7 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE) "mkl_lapack95_${LAPACK_mkl_ILP_MODE}") else() set(LAPACK_mkl_SEARCH_SYMBOL "cheev") - set(_LIBRARIES LAPACK_LIBRARIES) + set(_LAPACK_LIBRARIES LAPACK_LIBRARIES) set(_BLAS_LIBRARIES ${BLAS_LIBRARIES}) # old and new >= 10.3 @@ -351,9 +351,9 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE) ) # First try empty lapack libs (implicitly linked or automatic from BLAS) - if(NOT ${_LIBRARIES}) + if(NOT ${_LAPACK_LIBRARIES}) check_lapack_libraries( - ${_LIBRARIES} + ${_LAPACK_LIBRARIES} LAPACK ${LAPACK_mkl_SEARCH_SYMBOL} "" @@ -371,15 +371,15 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE) endif() # Then try the search libs - foreach(IT ${LAPACK_SEARCH_LIBS}) - string(REPLACE " " ";" SEARCH_LIBS ${IT}) - if(NOT ${_LIBRARIES}) + foreach(_search ${LAPACK_SEARCH_LIBS}) + string(REPLACE " " ";" _search ${_search}) + if(NOT ${_LAPACK_LIBRARIES}) check_lapack_libraries( - ${_LIBRARIES} + ${_LAPACK_LIBRARIES} LAPACK ${LAPACK_mkl_SEARCH_SYMBOL} "" - "${SEARCH_LIBS}" + "${_search}" "${CMAKE_THREAD_LIBS_INIT};${LAPACK_mkl_LM};${LAPACK_mkl_LDL}" "${LAPACK_mkl_MKLROOT}" "${LAPACK_mkl_LIB_PATH_SUFFIXES}" @@ -388,6 +388,7 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE) endif() endforeach() + unset(_search) unset(LAPACK_mkl_ILP_MODE) unset(LAPACK_mkl_SEARCH_SYMBOL) unset(LAPACK_mkl_LM) @@ -651,3 +652,5 @@ if(LAPACK_LIBRARIES STREQUAL "LAPACK_LIBRARIES-PLACEHOLDER-FOR-EMPTY-LIBRARIES") endif() _add_lapack_target() +unset(_lapack_fphsa_req_var) +unset(_LAPACK_LIBRARIES)