Merged
Conversation
6cc2c13 to
226bc6e
Compare
…est this, though.)
This was referenced Apr 10, 2025
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updates CMake so it always goes through the BLAS++ BLASFinder to detect the Fortran mangling and whether the BLAS is int32 or int64.
Updates the GitHub CT so that it checks additional BLAS libraries, adding OpenBLAS, specifying BLAS using CMake's FindBLAS (to verify 1), and specifying BLAS using BLAS_LIBRARIES. BLIS can be added once it is working on ICL's machines.
Details
There are 3 ways to specify the BLAS library:
blas,blas_int,blas_threaded, etc.:cmake -Dblas=openblas ..cmake -DBLAS_LIBRARIES='-lopenblas' ..cmake -DBLA_VENDOR=OpenBLAS ..For
blas=xyz,blas_intis a constraint on what libraries are checked. E.g.,blas=mkl blas_int=int32will check onlymkl_gf_lp64andmkl_intel_lp64, notmkl_gf_ilp64andmkl_intel_ilp64. However, for all libraries, BLAS++ checks both 32-bit and 64-bit int. That is, we detect the int size even though in some cases like MKL, we already know the answer. (Except when cross-compiling.)For
BLAS_LIBRARIES, as above, BLASFinder tests 32-bit int, and if that fails, tests 64-bit int. This is the safest action. Only when cross-compiling do we need to trust thatblas_intwas correctly set.For CMake's FindBLAS using
BLA_VENDOR,blas_intwas never referenced, so BLAS++ would implicitly assume 32-bit integers. With this PR, afterFindBLAS, theBLAS_LIBRARIESare run through the BLAS++ BLASFinder to detect int sizes and Fortran mangling.