FindBLAS¶
查找基本线性代数子程序 (BLAS) 库
此模块查找实现 BLAS 线性代数界面 的已安装 Fortran 库。
至少其中一门 C
、CXX
或 Fortran
语言必须已启用。
输入变量¶
以下变量可用于影响此模块的行为
BLA_STATIC
如果为
ON
使用静态链接BLA_VENDOR
设置为 BLAS/LAPACK 供应商 中的一个,仅从指定供应商中搜索 BLAS。如果未设置,将考虑所有供应商。
BLA_F95
如果为
ON
尝试寻找 BLAS95 界面BLA_PREFER_PKGCONFIG
3.11 版中新增。
如果设置
pkg-config
将首先用于搜索 BLAS 库,如果找到了,那是首选库BLA_PKGCONFIG_BLAS
3.25 版中新增。
如果设置,
pkg-config
方法将查找此模块名称,而不仅仅是blas
。BLA_SIZEOF_INTEGER
3.22 版中新增。
指定 BLAS/LAPACK 库整数大小
4
搜索带有 32 位整数界面的 BLAS/LAPACK。
8
搜索带有 64 位整数界面的 BLAS/LAPACK。
ANY
搜索任意 BLAS/LAPACK。很可能找到带有 32 位整数界面的 BLAS/LAPACK。
导入目标¶
此模块定义以下 IMPORTED
目标
BLAS::BLAS
3.18 版中新增。
用于 BLAS 的库(如果已找到)。
结果变量¶
此模块定义以下变量
BLAS_FOUND
找到了实现 BLAS 界面的库
BLAS_LINKER_FLAGS
所需的链接器标志的非缓存列表(排除
-l
和-L
)。BLAS_LIBRARIES
用于链接以使用 BLAS 的库的非缓存列表(使用完整路径名称)(如果编译器隐式链接 BLAS,则可能为空)
BLAS95_LIBRARIES
用于链接以使用 BLAS95 界面的库的非缓存列表(使用完整路径名称)
BLAS95_FOUND
找到了实现 BLAS95 界面的库
BLAS/LAPACK 供应商¶
通用
通用参考实现
ACML
、ACML_MP
、ACML_GPU
AMD Core 数学库
AOCL
、AOCL_mt
在版本 3.27 中添加。
AMD 优化 CPU 库
Apple
、NAS
Apple BLAS(加速)和 Apple NAS(vecLib)
Arm
、Arm_mp
、Arm_ilp64
、Arm_ilp64_mp
3.18 版中新增。
Arm 性能库
ATLAS
线性代数软件自动调整
CXML
、DXML
康柏/数字扩展数学库
EML
、EML_mt
在版本 3.20 中添加。
Elbrus 数学库
FLAME
3.11 版中新增。
BLIS 框架
FlexiBLAS
在版本 3.19 中添加。
Fujitsu_SSL2
、Fujitsu_SSL2BLAMP
、Fujitsu_SSL2SVE
、Fujitsu_SSL2BLAMPSVE
在版本 3.20 中添加。
Fujitsu SSL2 串行和并行 blas/lapack 以及 SVE 指令
Goto
GotoBLAS
IBMESSL
、IBMESSL_SMP
IBM 工程和科学子例程库
Intel
Intel MKL 32 位和 64 位过时版本
Intel10_32
Intel MKL v10 32 位,带线程代码
Intel10_64lp
Intel MKL v10+ 64 位,带线程代码,lp64 模型
Intel10_64lp_seq
Intel MKL v10+ 64 位,顺序代码,lp64 模型
Intel10_64ilp
在版本 3.13 中添加。
Intel MKL v10+ 64 位,带线程代码,ilp64 模型
Intel10_64ilp_seq
在版本 3.13 中添加。
Intel MKL v10+ 64 位,顺序代码,ilp64 模型
Intel10_64_dyn
在版本 3.17 中添加。
Intel MKL v10+ 64 位,单个动态库
libblastrampoline
在版本 3.30 中添加。
使用 PLT 跳转表的 BLAS/LAPACK 拆复用库
NVHPC
在版本 3.21 中添加。
NVIDIA HPC SDK
OpenBLAS
在版本 3.6 中添加。
PhiPACK
可移植高性能 ANSI C (PHiPAC)
SCSL
、SCSL_mp
科学计算软件库
SGIMATH
SGI 科学数学库
SunPerf
Sun Performance Library
Intel MKL¶
要使用 Intel MKL BLAS 实现,项目必须启用 C
或 CXX
语言中至少一种。将 BLA_VENDOR
设置为 Intel MKL 变体,在命令行中设置为 -DBLA_VENDOR=Intel10_64lp
或在项目代码中
set(BLA_VENDOR Intel10_64lp)
find_package(BLAS)
为了使用 Intel MKL 构建项目,终端用户必须首先建立 Intel MKL 环境
- Intel oneAPI
获取整个 Intel 环境脚本
. /opt/intel/oneapi/setvars.sh
或获取 MKL 组件环境脚本
. /opt/intel/oneapi/mkl/latest/env/vars.sh
- Intel Classic
获取整个 Intel 环境脚本
. /opt/intel/bin/compilervars.sh intel64
或获取 MKL 组件环境脚本
. /opt/intel/mkl/bin/mklvars.sh intel64
上述环境脚本将 MKLROOT
环境变量设置为 MKL 安装的顶部。它们还会将你的平台的运行库的位置添加到动态库加载器环境变量中(例如,LD_LIBRARY_PATH
)。这对于链接到 MKL 的程序运行来说必不可少。
注意
从 Intel oneAPI 2021.2 开始,仅加载 MKL 组件时不会提供它的所有依赖项。特别是,iomp5
库必须单独提供,或者通过加载编译器组件环境来提供
. /opt/intel/oneapi/compiler/latest/env/vars.sh