From 57dcde19da24d211bad945fbbe7851abbf9bdab3 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 12 Jul 2021 14:57:06 +0000 Subject: Find{BLAS,LAPACK}: Avoid clobbering results when no vendor is requested Logic added by commit 4c74c86f40 (FindBLAS/LAPACK: Add support for the Fujitsu SSL2 library, 2021-01-27, v3.21.0-rc1~402^2~1) accidentally expressed a boolean condition without proper grouping. The pattern was then copied by commit 2c9e623e31 (Find{BLAS,LAPACK}: Add support for the NVHPC LAPACK library, 2021-05-05, v3.21.0-rc1~192^2). The resulting logic incorrectly tries Fujitsu and NVHPC vendors even after results are found from another vendor, and then erases those. Fix the grouping. Fixes: #22403 --- Modules/FindBLAS.cmake | 4 ++-- Modules/FindLAPACK.cmake | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Modules/FindBLAS.cmake b/Modules/FindBLAS.cmake index e048318..726ff75 100644 --- a/Modules/FindBLAS.cmake +++ b/Modules/FindBLAS.cmake @@ -1110,8 +1110,8 @@ if(BLA_VENDOR MATCHES "EML" OR BLA_VENDOR STREQUAL "All") endif() # Fujitsu SSL2 Library? -if(NOT BLAS_LIBRARIES AND - BLA_VENDOR MATCHES "Fujitsu_SSL2" OR BLA_VENDOR STREQUAL "All") +if(NOT BLAS_LIBRARIES + AND (BLA_VENDOR MATCHES "Fujitsu_SSL2" OR BLA_VENDOR STREQUAL "All")) if(BLA_VENDOR STREQUAL "Fujitsu_SSL2BLAMP") set(_ssl2_suffix BLAMP) else() diff --git a/Modules/FindLAPACK.cmake b/Modules/FindLAPACK.cmake index b8a3363..3146e06 100644 --- a/Modules/FindLAPACK.cmake +++ b/Modules/FindLAPACK.cmake @@ -550,7 +550,7 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE) # Fujitsu SSL2 Library? if(NOT LAPACK_LIBRARIES - AND BLA_VENDOR MATCHES "Fujitsu_SSL2" OR BLA_VENDOR STREQUAL "All") + AND (BLA_VENDOR MATCHES "Fujitsu_SSL2" OR BLA_VENDOR STREQUAL "All")) if(BLA_VENDOR STREQUAL "Fujitsu_SSL2BLAMP") set(_ssl2_suffix BLAMP) else() @@ -582,7 +582,7 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE) # NVHPC Library? if(NOT LAPACK_LIBRARIES - AND BLA_VENDOR MATCHES "NVHPC" OR BLA_VENDOR STREQUAL "All") + AND (BLA_VENDOR MATCHES "NVHPC" OR BLA_VENDOR STREQUAL "All")) check_lapack_libraries( LAPACK_LIBRARIES LAPACK -- cgit v0.12 From 31ac4b916525126c5d7f3a944a749b8989a456c5 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 12 Jul 2021 11:08:35 -0400 Subject: ci: Verify that Intel MKL is found when it is the only BLAS/LAPACK Issue: #22403 --- .gitlab/ci/configure_intelcompiler_common.cmake | 12 ++++++++---- Tests/FindBLAS/CMakeLists.txt | 14 ++++++++++++-- Tests/FindBLAS/Test/CMakeLists.txt | 3 ++- Tests/FindLAPACK/CMakeLists.txt | 14 ++++++++++++-- Tests/FindLAPACK/Test/CMakeLists.txt | 3 ++- 5 files changed, 36 insertions(+), 10 deletions(-) diff --git a/.gitlab/ci/configure_intelcompiler_common.cmake b/.gitlab/ci/configure_intelcompiler_common.cmake index df3a696..be175e4 100644 --- a/.gitlab/ci/configure_intelcompiler_common.cmake +++ b/.gitlab/ci/configure_intelcompiler_common.cmake @@ -1,6 +1,10 @@ -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 "") +set(CMake_TEST_FindBLAS "All;Intel10_64lp;Intel10_64lp.gcc" CACHE STRING "") +set(CMake_TEST_FindBLAS_All "Intel10_64lp" CACHE STRING "") +set(CMake_TEST_FindBLAS_STATIC "All;Intel10_64lp;Intel10_64lp.gcc" CACHE STRING "") +set(CMake_TEST_FindBLAS_STATIC_All "Intel10_64lp" CACHE STRING "") +set(CMake_TEST_FindLAPACK "All;Intel10_64lp;Intel10_64lp.gcc" CACHE STRING "") +set(CMake_TEST_FindLAPACK_All "Intel10_64lp" CACHE STRING "") +set(CMake_TEST_FindLAPACK_STATIC "All;Intel10_64lp;Intel10_64lp.gcc" CACHE STRING "") +set(CMake_TEST_FindLAPACK_STATIC_All "Intel10_64lp" CACHE STRING "") include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/Tests/FindBLAS/CMakeLists.txt b/Tests/FindBLAS/CMakeLists.txt index 31c701e..482cee8 100644 --- a/Tests/FindBLAS/CMakeLists.txt +++ b/Tests/FindBLAS/CMakeLists.txt @@ -6,6 +6,11 @@ foreach(variant IN LISTS CMake_TEST_FindBLAS) set(vendor "${variant}") set(alt_compiler "") endif() + if(vendor STREQUAL "All" AND CMake_TEST_FindBLAS_All) + set(EXPECT_All "-DEXPECT_All=${CMake_TEST_FindBLAS_All}") + else() + set(EXPECT_All "") + endif() add_test(NAME FindBLAS.Test_${variant} COMMAND ${CMAKE_CTEST_COMMAND} -C $ --build-and-test @@ -13,7 +18,7 @@ foreach(variant IN LISTS CMake_TEST_FindBLAS) "${CMake_BINARY_DIR}/Tests/FindBLAS/Test_${variant}" ${build_generator_args} --build-project TestFindBLAS - --build-options ${build_options} ${alt_compiler} -DBLA_VENDOR=${vendor} + --build-options ${build_options} ${alt_compiler} ${EXPECT_All} -DBLA_VENDOR=${vendor} --test-command ${CMAKE_CTEST_COMMAND} -V -C $ ) endforeach() @@ -26,6 +31,11 @@ foreach(variant IN LISTS CMake_TEST_FindBLAS_STATIC) set(vendor "${variant}") set(alt_compiler "") endif() + if(vendor STREQUAL "All" AND CMake_TEST_FindBLAS_STATIC_All) + set(EXPECT_All "-DEXPECT_All=${CMake_TEST_FindBLAS_STATIC_All}") + else() + set(EXPECT_All "") + endif() add_test(NAME FindBLAS.Test_${variant}_Static COMMAND ${CMAKE_CTEST_COMMAND} -C $ --build-and-test @@ -33,7 +43,7 @@ foreach(variant IN LISTS CMake_TEST_FindBLAS_STATIC) "${CMake_BINARY_DIR}/Tests/FindBLAS/Test_${variant}_Static" ${build_generator_args} --build-project TestFindBLAS - --build-options ${build_options} ${alt_compiler} -DBLA_VENDOR=${vendor} -DBLA_STATIC=ON + --build-options ${build_options} ${alt_compiler} ${EXPECT_All} -DBLA_VENDOR=${vendor} -DBLA_STATIC=ON --test-command ${CMAKE_CTEST_COMMAND} -V -C $ ) endforeach() diff --git a/Tests/FindBLAS/Test/CMakeLists.txt b/Tests/FindBLAS/Test/CMakeLists.txt index 98e12d5..7379749 100644 --- a/Tests/FindBLAS/Test/CMakeLists.txt +++ b/Tests/FindBLAS/Test/CMakeLists.txt @@ -12,7 +12,8 @@ add_executable(test_var main.c) target_link_libraries(test_var PRIVATE ${BLAS_LIBRARIES}) add_test(NAME test_var COMMAND test_var) -if(BLA_VENDOR STREQUAL "Intel10_64lp") +if((BLA_VENDOR STREQUAL "Intel10_64lp") OR + (BLA_VENDOR STREQUAL "All" AND EXPECT_All STREQUAL "Intel10_64lp")) if(NOT BLAS_LIBRARIES MATCHES "^(-Wl,--start-group;)?[^;]*mkl_intel_lp64") message(FATAL_ERROR "BLAS_LIBRARIES does not start in mkl_intel_lp64:\n ${BLAS_LIBRARIES}") endif() diff --git a/Tests/FindLAPACK/CMakeLists.txt b/Tests/FindLAPACK/CMakeLists.txt index 26cfa87..535c7b6 100644 --- a/Tests/FindLAPACK/CMakeLists.txt +++ b/Tests/FindLAPACK/CMakeLists.txt @@ -6,6 +6,11 @@ foreach(variant IN LISTS CMake_TEST_FindLAPACK) set(vendor "${variant}") set(alt_compiler "") endif() + if(vendor STREQUAL "All" AND CMake_TEST_FindLAPACK_All) + set(EXPECT_All "-DEXPECT_All=${CMake_TEST_FindLAPACK_All}") + else() + set(EXPECT_All "") + endif() add_test(NAME FindLAPACK.Test_${variant} COMMAND ${CMAKE_CTEST_COMMAND} -C $ --build-and-test @@ -13,7 +18,7 @@ foreach(variant IN LISTS CMake_TEST_FindLAPACK) "${CMake_BINARY_DIR}/Tests/FindLAPACK/Test_${variant}" ${build_generator_args} --build-project TestFindLAPACK - --build-options ${build_options} ${alt_compiler} -DBLA_VENDOR=${vendor} + --build-options ${build_options} ${alt_compiler} ${EXPECT_All} -DBLA_VENDOR=${vendor} --test-command ${CMAKE_CTEST_COMMAND} -V -C $ ) endforeach() @@ -26,6 +31,11 @@ foreach(variant IN LISTS CMake_TEST_FindLAPACK_STATIC) set(vendor "${variant}") set(alt_compiler "") endif() + if(vendor STREQUAL "All" AND CMake_TEST_FindLAPACK_STATIC_All) + set(EXPECT_All "-DEXPECT_All=${CMake_TEST_FindLAPACK_STATIC_All}") + else() + set(EXPECT_All "") + endif() add_test(NAME FindLAPACK.Test_${variant}_Static COMMAND ${CMAKE_CTEST_COMMAND} -C $ --build-and-test @@ -33,7 +43,7 @@ foreach(variant IN LISTS CMake_TEST_FindLAPACK_STATIC) "${CMake_BINARY_DIR}/Tests/FindLAPACK/Test_${variant}_Static" ${build_generator_args} --build-project TestFindLAPACK - --build-options ${build_options} ${alt_compiler} -DBLA_VENDOR=${vendor} -DBLA_STATIC=ON + --build-options ${build_options} ${alt_compiler} ${EXPECT_All} -DBLA_VENDOR=${vendor} -DBLA_STATIC=ON --test-command ${CMAKE_CTEST_COMMAND} -V -C $ ) endforeach() diff --git a/Tests/FindLAPACK/Test/CMakeLists.txt b/Tests/FindLAPACK/Test/CMakeLists.txt index bb33482..23a43ac 100644 --- a/Tests/FindLAPACK/Test/CMakeLists.txt +++ b/Tests/FindLAPACK/Test/CMakeLists.txt @@ -12,7 +12,8 @@ add_executable(test_var main.c) target_link_libraries(test_var PRIVATE ${LAPACK_LIBRARIES}) add_test(NAME test_var COMMAND test_var) -if(BLA_VENDOR STREQUAL "Intel10_64lp") +if((BLA_VENDOR STREQUAL "Intel10_64lp") OR + (BLA_VENDOR STREQUAL "All" AND EXPECT_All STREQUAL "Intel10_64lp")) if(NOT LAPACK_LIBRARIES MATCHES "^(-Wl,--start-group;)?[^;]*mkl_intel_lp64") message(FATAL_ERROR "LAPACK_LIBRARIES does not start in mkl_intel_lp64:\n ${LAPACK_LIBRARIES}") endif() -- cgit v0.12