Browse Source

Merge topic 'FindBLAS-mkl-gnu'

daa0a1f877 Find{BLAS,LAPACK}: Add tests covering Intel MKL with GNU compiler
624110b90d FindBLAS: Revert "Do not statically link against iomp5 ... Intel MKL"

Acked-by: Kitware Robot <[email protected]>
Merge-request: !6213
Brad King 4 years ago
parent
commit
4217e1cf3a

+ 4 - 4
.gitlab/ci/configure_intelcompiler_common.cmake

@@ -1,6 +1,6 @@
-set(CMake_TEST_FindBLAS "Intel10_64lp" CACHE STRING "")
-set(CMake_TEST_FindBLAS_STATIC "Intel10_64lp" CACHE STRING "")
-set(CMake_TEST_FindLAPACK "Intel10_64lp" CACHE STRING "")
-set(CMake_TEST_FindLAPACK_STATIC "Intel10_64lp" CACHE STRING "")
+set(CMake_TEST_FindBLAS "Intel10_64lp;Intel10_64lp.gcc" CACHE STRING "")
+set(CMake_TEST_FindBLAS_STATIC "Intel10_64lp;Intel10_64lp.gcc" CACHE STRING "")
+set(CMake_TEST_FindLAPACK "Intel10_64lp;Intel10_64lp.gcc" CACHE STRING "")
+set(CMake_TEST_FindLAPACK_STATIC "Intel10_64lp;Intel10_64lp.gcc" CACHE STRING "")
 
 include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 7 - 16
Modules/FindBLAS.cmake

@@ -337,21 +337,12 @@ if(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
         if(CMAKE_Fortran_COMPILER_LOADED AND CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND NOT APPLE)
             set(BLAS_mkl_INTFACE "gf")
             set(BLAS_mkl_THREADING "gnu")
+            set(BLAS_mkl_OMP "gomp")
         else()
             set(BLAS_mkl_INTFACE "intel")
             set(BLAS_mkl_THREADING "intel")
+            set(BLAS_mkl_OMP "iomp5")
         endif()
-
-        foreach(lang IN ITEMS C CXX Fortran)
-          if(CMAKE_${lang}_COMPILER_LOADED)
-            find_package(OpenMP COMPONENTS ${lang})
-            if(${OpenMP_${lang}_FOUND})
-              set(BLAS_mkl_OMP ${OpenMP_${lang}_LIBRARIES})
-              break()
-            endif()
-          endif()
-        endforeach()
-
         set(BLAS_mkl_LM "-lm")
         set(BLAS_mkl_LDL "-ldl")
       endif()
@@ -416,7 +407,7 @@ if(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
 
             # mkl >= 10.3
             list(APPEND BLAS_SEARCH_LIBS
-              "${BLAS_mkl_START_GROUP} mkl_blas95 mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP}")
+              "${BLAS_mkl_START_GROUP} mkl_blas95 mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP} ${BLAS_mkl_OMP}")
           endif()
           if(BLA_VENDOR MATCHES "^Intel10_64i?lp$" OR BLA_VENDOR STREQUAL "All")
             # old version
@@ -425,7 +416,7 @@ if(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
 
             # mkl >= 10.3
             list(APPEND BLAS_SEARCH_LIBS
-              "${BLAS_mkl_START_GROUP} mkl_blas95_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP}")
+              "${BLAS_mkl_START_GROUP} mkl_blas95_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP} ${BLAS_mkl_OMP}")
           endif()
           if(BLA_VENDOR MATCHES "^Intel10_64i?lp_seq$" OR BLA_VENDOR STREQUAL "All")
             list(APPEND BLAS_SEARCH_LIBS
@@ -481,7 +472,7 @@ if(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
 
             # mkl >= 10.3
             list(APPEND BLAS_SEARCH_LIBS
-              "${BLAS_mkl_START_GROUP} mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP}")
+              "${BLAS_mkl_START_GROUP} mkl_${BLAS_mkl_INTFACE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP} ${BLAS_mkl_OMP}")
           endif()
           if(BLA_VENDOR MATCHES "^Intel10_64i?lp$" OR BLA_VENDOR STREQUAL "All")
             # old version
@@ -490,7 +481,7 @@ if(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
 
             # mkl >= 10.3
             list(APPEND BLAS_SEARCH_LIBS
-              "${BLAS_mkl_START_GROUP} mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP}")
+              "${BLAS_mkl_START_GROUP} mkl_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE} mkl_${BLAS_mkl_THREADING}_thread mkl_core ${BLAS_mkl_END_GROUP} ${BLAS_mkl_OMP}")
           endif()
           if(BLA_VENDOR MATCHES "^Intel10_64i?lp_seq$" OR BLA_VENDOR STREQUAL "All")
             list(APPEND BLAS_SEARCH_LIBS
@@ -553,7 +544,7 @@ if(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All")
             ${BLAS_mkl_SEARCH_SYMBOL}
             ""
             "${SEARCH_LIBS}"
-            "${BLAS_mkl_OMP};${CMAKE_THREAD_LIBS_INIT};${BLAS_mkl_LM};${BLAS_mkl_LDL}"
+            "${CMAKE_THREAD_LIBS_INIT};${BLAS_mkl_LM};${BLAS_mkl_LDL}"
             "${BLAS_mkl_MKLROOT}"
             "${BLAS_mkl_LIB_PATH_SUFFIXES}"
             )

+ 22 - 8
Tests/FindBLAS/CMakeLists.txt

@@ -1,25 +1,39 @@
-foreach(vendor IN LISTS CMake_TEST_FindBLAS)
-  add_test(NAME FindBLAS.Test_${vendor} COMMAND
+foreach(variant IN LISTS CMake_TEST_FindBLAS)
+  if(variant MATCHES "^([^.]+)\\.(.*)$")
+    set(vendor "${CMAKE_MATCH_1}")
+    set(alt_compiler "-DCMAKE_C_COMPILER=${CMAKE_MATCH_2}")
+  else()
+    set(vendor "${variant}")
+    set(alt_compiler "")
+  endif()
+  add_test(NAME FindBLAS.Test_${variant} COMMAND
     ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
     --build-and-test
     "${CMake_SOURCE_DIR}/Tests/FindBLAS/Test"
-    "${CMake_BINARY_DIR}/Tests/FindBLAS/Test_${vendor}"
+    "${CMake_BINARY_DIR}/Tests/FindBLAS/Test_${variant}"
     ${build_generator_args}
     --build-project TestFindBLAS
-    --build-options ${build_options} -DBLA_VENDOR=${vendor}
+    --build-options ${build_options} ${alt_compiler} -DBLA_VENDOR=${vendor}
     --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
     )
 endforeach()
 
-foreach(vendor IN LISTS CMake_TEST_FindBLAS_STATIC)
-  add_test(NAME FindBLAS.Test_${vendor}_Static COMMAND
+foreach(variant IN LISTS CMake_TEST_FindBLAS_STATIC)
+  if(variant MATCHES "^([^.]+)\\.(.*)$")
+    set(vendor "${CMAKE_MATCH_1}")
+    set(alt_compiler "-DCMAKE_C_COMPILER=${CMAKE_MATCH_2}")
+  else()
+    set(vendor "${variant}")
+    set(alt_compiler "")
+  endif()
+  add_test(NAME FindBLAS.Test_${variant}_Static COMMAND
     ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
     --build-and-test
     "${CMake_SOURCE_DIR}/Tests/FindBLAS/Test"
-    "${CMake_BINARY_DIR}/Tests/FindBLAS/Test_${vendor}_Static"
+    "${CMake_BINARY_DIR}/Tests/FindBLAS/Test_${variant}_Static"
     ${build_generator_args}
     --build-project TestFindBLAS
-    --build-options ${build_options} -DBLA_VENDOR=${vendor} -DBLA_STATIC=ON
+    --build-options ${build_options} ${alt_compiler} -DBLA_VENDOR=${vendor} -DBLA_STATIC=ON
     --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
     )
 endforeach()

+ 22 - 8
Tests/FindLAPACK/CMakeLists.txt

@@ -1,25 +1,39 @@
-foreach(vendor IN LISTS CMake_TEST_FindLAPACK)
-  add_test(NAME FindLAPACK.Test_${vendor} COMMAND
+foreach(variant IN LISTS CMake_TEST_FindLAPACK)
+  if(variant MATCHES "^([^.]+)\\.(.*)$")
+    set(vendor "${CMAKE_MATCH_1}")
+    set(alt_compiler "-DCMAKE_C_COMPILER=${CMAKE_MATCH_2}")
+  else()
+    set(vendor "${variant}")
+    set(alt_compiler "")
+  endif()
+  add_test(NAME FindLAPACK.Test_${variant} COMMAND
     ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
     --build-and-test
     "${CMake_SOURCE_DIR}/Tests/FindLAPACK/Test"
-    "${CMake_BINARY_DIR}/Tests/FindLAPACK/Test_${vendor}"
+    "${CMake_BINARY_DIR}/Tests/FindLAPACK/Test_${variant}"
     ${build_generator_args}
     --build-project TestFindLAPACK
-    --build-options ${build_options} -DBLA_VENDOR=${vendor}
+    --build-options ${build_options} ${alt_compiler} -DBLA_VENDOR=${vendor}
     --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
     )
 endforeach()
 
-foreach(vendor IN LISTS CMake_TEST_FindLAPACK_STATIC)
-  add_test(NAME FindLAPACK.Test_${vendor}_Static COMMAND
+foreach(variant IN LISTS CMake_TEST_FindLAPACK_STATIC)
+  if(variant MATCHES "^([^.]+)\\.(.*)$")
+    set(vendor "${CMAKE_MATCH_1}")
+    set(alt_compiler "-DCMAKE_C_COMPILER=${CMAKE_MATCH_2}")
+  else()
+    set(vendor "${variant}")
+    set(alt_compiler "")
+  endif()
+  add_test(NAME FindLAPACK.Test_${variant}_Static COMMAND
     ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
     --build-and-test
     "${CMake_SOURCE_DIR}/Tests/FindLAPACK/Test"
-    "${CMake_BINARY_DIR}/Tests/FindLAPACK/Test_${vendor}_Static"
+    "${CMake_BINARY_DIR}/Tests/FindLAPACK/Test_${variant}_Static"
     ${build_generator_args}
     --build-project TestFindLAPACK
-    --build-options ${build_options} -DBLA_VENDOR=${vendor} -DBLA_STATIC=ON
+    --build-options ${build_options} ${alt_compiler} -DBLA_VENDOR=${vendor} -DBLA_STATIC=ON
     --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
     )
 endforeach()