On this page
FindBLAS
Find Basic Linear Algebra Subprograms (BLAS) library
This module finds an installed Fortran library that implements the BLAS linear-algebra interface.
At least one of the C
, CXX
, or Fortran
languages must be enabled.
Input Variables
The following variables may be set to influence this module's behavior:
BLA_STATIC
-
if
ON
use static linkage BLA_VENDOR
-
Set to one of the BLAS/LAPACK Vendors to search for BLAS only from the specified vendor. If not set, all vendors are considered.
BLA_F95
-
if
ON
tries to find the BLAS95 interfaces BLA_PREFER_PKGCONFIG
-
New in version 3.11.
if set
pkg-config
will be used to search for a BLAS library first and if one is found that is preferred BLA_PKGCONFIG_BLAS
-
New in version 3.25.
If set, the
pkg-config
method will look for this module name instead of justblas
. BLA_SIZEOF_INTEGER
-
New in version 3.22.
Specify the BLAS/LAPACK library integer size:
4
-
Search for a BLAS/LAPACK with 32-bit integer interfaces.
8
-
Search for a BLAS/LAPACK with 64-bit integer interfaces.
ANY
-
Search for any BLAS/LAPACK. Most likely, a BLAS/LAPACK with 32-bit integer interfaces will be found.
Imported targets
This module defines the following IMPORTED
targets:
BLAS::BLAS
-
New in version 3.18.
The libraries to use for BLAS, if found.
Result Variables
This module defines the following variables:
BLAS_FOUND
-
library implementing the BLAS interface is found
BLAS_LINKER_FLAGS
-
uncached list of required linker flags (excluding
-l
and-L
). BLAS_LIBRARIES
-
uncached list of libraries (using full path name) to link against to use BLAS (may be empty if compiler implicitly links BLAS)
BLAS95_LIBRARIES
-
uncached list of libraries (using full path name) to link against to use BLAS95 interface
BLAS95_FOUND
-
library implementing the BLAS95 interface is found
BLAS/LAPACK Vendors
Generic
-
Generic reference implementation
ACML, ACML_MP, ACML_GPU
-
AMD Core Math Library
Apple, NAS
-
Apple BLAS (Accelerate), and Apple NAS (vecLib)
Arm, Arm_mp, Arm_ilp64, Arm_ilp64_mp
-
New in version 3.18.
Arm Performance Libraries
ATLAS
-
Automatically Tuned Linear Algebra Software
CXML, DXML
-
Compaq/Digital Extended Math Library
EML, EML_mt
-
New in version 3.20.
Elbrus Math Library
FLAME
-
New in version 3.11.
BLIS Framework
FlexiBLAS
-
New in version 3.19.
Fujitsu_SSL2, Fujitsu_SSL2BLAMP, Fujitsu_SSL2SVE, Fujitsu_SSL2BLAMPSVE
-
New in version 3.20.
Fujitsu SSL2 serial and parallel blas/lapack with SVE instructions
Goto
-
GotoBLAS
IBMESSL
, IBMESSL_SMP
IBM Engineering and Scientific Subroutine Library
Intel
-
Intel MKL 32 bit and 64 bit obsolete versions
Intel10_32
-
Intel MKL v10 32 bit, threaded code
Intel10_64lp
-
Intel MKL v10+ 64 bit, threaded code, lp64 model
Intel10_64lp_seq
-
Intel MKL v10+ 64 bit, sequential code, lp64 model
Intel10_64ilp
-
New in version 3.13.
Intel MKL v10+ 64 bit, threaded code, ilp64 model
Intel10_64ilp_seq
-
New in version 3.13.
Intel MKL v10+ 64 bit, sequential code, ilp64 model
Intel10_64_dyn
-
New in version 3.17.
Intel MKL v10+ 64 bit, single dynamic library
NVHPC
-
New in version 3.21.
NVIDIA HPC SDK
OpenBLAS
-
New in version 3.6.
PhiPACK
-
Portable High Performance ANSI C (PHiPAC)
SCSL, SCSL_mp
-
Scientific Computing Software Library
SGIMATH
-
SGI Scientific Mathematical Library
SunPerf
-
Sun Performance Library
Intel MKL
To use the Intel MKL implementation of BLAS, a project must enable at least one of the C
or CXX
languages. Set BLA_VENDOR
to an Intel MKL variant either on the command-line as -DBLA_VENDOR=Intel10_64lp
or in project code:
set(BLA_VENDOR Intel10_64lp)
find_package(BLAS)
In order to build a project using Intel MKL, and end user must first establish an Intel MKL environment:
- Intel oneAPI
-
Source the full Intel environment script:
. /opt/intel/oneapi/setvars.sh
Or, source the MKL component environment script:
. /opt/intel/oneapi/mkl/latest/env/vars.sh
- Intel Classic
-
Source the full Intel environment script:
. /opt/intel/bin/compilervars.sh intel64
Or, source the MKL component environment script:
. /opt/intel/mkl/bin/mklvars.sh intel64
The above environment scripts set the MKLROOT
environment variable to the top of the MKL installation. They also add the location of the runtime libraries to the dynamic library loader environment variable for your platform (e.g. LD_LIBRARY_PATH
). This is necessary for programs linked against MKL to run.
Note
As of Intel oneAPI 2021.2, loading only the MKL component does not make all of its dependencies available. In particular, the iomp5
library must be available separately, or provided by also loading the compiler component environment:
. /opt/intel/oneapi/compiler/latest/env/vars.sh
© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.25/module/FindBLAS.html