-
Notifications
You must be signed in to change notification settings - Fork 559
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
CMake: Add support for libblastrampoline (#8813)
This backports an upstream patch adding libblastrampoline to the Find{BLAS,LAPACK} modules to allow packages to now say BLA_VENDOR="libblastrampoline" to properly build against libblastrampoline.
- Loading branch information
1 parent
86ea6d7
commit b44a1fb
Showing
2 changed files
with
92 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
From 7ab02cdd05efb35539b40f58821d415165d8620f Mon Sep 17 00:00:00 2001 | ||
From: Ian McInerney <[email protected]> | ||
Date: Wed, 29 May 2024 11:19:01 +0100 | ||
Subject: [PATCH] Add libblastrampoline support to FindBLAS/FindLAPACK | ||
|
||
libblastrampoline is a BLAS/LAPACK demuxing layer to allow selecting a | ||
BLAS/LAPACK library at runtime. | ||
--- | ||
Modules/FindBLAS.cmake | 30 ++++++++++++++++++++++++++++++ | ||
Modules/FindLAPACK.cmake | 8 ++++++++ | ||
2 files changed, 38 insertions(+) | ||
|
||
diff --git a/Modules/FindBLAS.cmake b/Modules/FindBLAS.cmake | ||
index e9b118f243..2fc01d0c79 100644 | ||
--- a/Modules/FindBLAS.cmake | ||
+++ b/Modules/FindBLAS.cmake | ||
@@ -164,6 +164,11 @@ BLAS/LAPACK Vendors | ||
|
||
Intel MKL v10+ 64 bit, single dynamic library | ||
|
||
+``libblastrampoline`` | ||
+ .. versionadded:: 3.30 | ||
+ | ||
+ A BLAS/LAPACK demuxing library using PLT trampolines | ||
+ | ||
``NVHPC`` | ||
.. versionadded:: 3.21 | ||
|
||
@@ -1352,6 +1357,31 @@ if(BLA_VENDOR STREQUAL "NVHPC" OR BLA_VENDOR STREQUAL "All") | ||
unset(_blas_nvhpc_lib) | ||
endif() | ||
|
||
+# libblastrampoline? (https://github.com/JuliaLinearAlgebra/libblastrampoline/tree/main) | ||
+if(BLA_VENDOR STREQUAL "libblastrampoline" OR BLA_VENDOR STREQUAL "All") | ||
+ set(_blas_libblastrampoline_lib "blastrampoline") | ||
+ | ||
+ if(WIN32) | ||
+ # Windows appends the version number to the library | ||
+ string(APPEND _blas_libblastrampoline_lib "-5") | ||
+ endif() | ||
+ | ||
+ if(NOT BLAS_LIBRARIES) | ||
+ check_blas_libraries( | ||
+ BLAS_LIBRARIES | ||
+ BLAS | ||
+ sgemm | ||
+ "" | ||
+ "${_blas_libblastrampoline_lib}" | ||
+ "" | ||
+ "" | ||
+ "" | ||
+ ) | ||
+ endif() | ||
+ | ||
+ unset(_blas_libblastrampoline_lib) | ||
+endif() | ||
+ | ||
# Generic BLAS library? | ||
if(BLA_VENDOR STREQUAL "Generic" OR | ||
BLA_VENDOR STREQUAL "All") | ||
diff --git a/Modules/FindLAPACK.cmake b/Modules/FindLAPACK.cmake | ||
index e142516cf2..bbf25b68b6 100644 | ||
--- a/Modules/FindLAPACK.cmake | ||
+++ b/Modules/FindLAPACK.cmake | ||
@@ -742,6 +742,14 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE) | ||
unset(_lapack_nvhpc_flags) | ||
endif() | ||
|
||
+ # libblastrampoline? (https://github.com/JuliaLinearAlgebra/libblastrampoline/tree/main) | ||
+ if(NOT LAPACK_LIBRARIES | ||
+ AND (BLA_VENDOR STREQUAL "libblastrampoline" OR BLA_VENDOR STREQUAL "All")) | ||
+ if(BLAS_LIBRARIES MATCHES "blastrampoline.+") | ||
+ set(LAPACK_LIBRARIES ${BLAS_LIBRARIES}) | ||
+ endif() | ||
+ endif() | ||
+ | ||
# Generic LAPACK library? | ||
if(NOT LAPACK_LIBRARIES | ||
AND (BLA_VENDOR STREQUAL "Generic" | ||
-- | ||
2.45.0 | ||
|