Find{BLAS,LAPACK}: Add AOCL BLIS/libFLAME

The AMD Optimizing CPU Libraries (AOCL) provide forks of BLIS and
libFLAME that are optimized for AMD "Zen" core architectures.

Closes: #23605
This commit is contained in:
Cordell Bloor 2022-11-16 17:37:51 -07:00 committed by Brad King
parent 2488d6dbf7
commit 272fe88ac6
2 changed files with 60 additions and 0 deletions

View File

@ -93,6 +93,11 @@ BLAS/LAPACK Vendors
``ACML``, ``ACML_MP``, ``ACML_GPU``
AMD Core Math Library
``AOCL``, ``AOCL_mt``
.. versionadded:: 3.27
AMD Optimizing CPU Libraries
``Apple``, ``NAS``
Apple BLAS (Accelerate), and Apple NAS (vecLib)
@ -848,6 +853,38 @@ if(BLA_VENDOR STREQUAL "FLAME" OR BLA_VENDOR STREQUAL "All")
unset(_blas_flame_lib)
endif()
# AOCL's blis library? (https://developer.amd.com/amd-aocl/)
if(BLA_VENDOR MATCHES "AOCL" OR BLA_VENDOR STREQUAL "All")
set(_blas_aocl_lib "blis")
if(_blas_sizeof_integer EQUAL 8)
set(_blas_aocl_subdir "ILP64")
else()
set(_blas_aocl_subdir "LP64")
endif()
# Check for multi-threaded support
if(BLA_VENDOR MATCHES "_mt")
string(APPEND _blas_aocl_lib "-mt")
endif()
if(NOT BLAS_LIBRARIES)
check_blas_libraries(
BLAS_LIBRARIES
BLAS
sgemm
""
"${_blas_aocl_lib}"
""
""
"${_blas_aocl_subdir}"
)
endif()
unset(_blas_aocl_lib)
unset(_blas_aocl_subdir)
endif()
# BLAS in the ATLAS library? (http://math-atlas.sourceforge.net/)
if(BLA_VENDOR STREQUAL "ATLAS" OR BLA_VENDOR STREQUAL "All")
if(NOT BLAS_LIBRARIES)

View File

@ -561,6 +561,29 @@ if(NOT LAPACK_NOT_FOUND_MESSAGE)
endif()
endif()
# AOCL? (https://developer.amd.com/amd-aocl/)
if(NOT LAPACK_LIBRARIES
AND (BLA_VENDOR MATCHES "AOCL" OR BLA_VENDOR STREQUAL "All"))
if(_lapack_sizeof_integer EQUAL 8)
set(_lapack_aocl_subdir "ILP64")
else()
set(_lapack_aocl_subdir "LP64")
endif()
check_lapack_libraries(
LAPACK_LIBRARIES
LAPACK
cheev
""
"flame"
"-fopenmp"
""
"${_lapack_aocl_subdir}"
"${BLAS_LIBRARIES}"
)
unset(_lapack_aocl_subdir)
endif()
# LAPACK in SCSL library? (SGI/Cray Scientific Library)
if(NOT LAPACK_LIBRARIES
AND (BLA_VENDOR MATCHES "SCSL" OR BLA_VENDOR STREQUAL "All"))