查找BLAS¶
查找基本线性代数子程序 (BLAS) 库
该模块找到一个已安装的 Fortran 库,该库实现了“BLAS 线性代数接口”_。
至少必须启用 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。
任何搜索任何 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_GPUAMD 核心数学库
苹果,NASApple BLAS(加速)和 Apple NAS(vecLib)
Arm,Arm_mp,Arm_ilp64,Arm_ilp64_mp在 3.18 版本加入.
手臂性能库
地图集自动调整的线性代数软件
CXML,DXMLCompaq/数字扩展数学库
EML,EML_mt在 3.20 版本加入.
厄尔布鲁士数学图书馆
火焰在 3.11 版本加入.
BLIS 框架
FlexiBLAS在 3.19 版本加入.
Fujitsu_SSL2、Fujitsu_SSL2BLAMP、Fujitsu_SSL2SVE、Fujitsu_SSL2BLAMPSVE在 3.20 版本加入.
带有 SVE 指令的富士通 SSL2 串行和并行 blas/lapack
转到转到BLAS
IBMESSL,IBMESSL_SMP
IBM 工程和科学子程序库
英特尔Intel MKL 32 位和 64 位过时版本
Intel10_32Intel MKL v10 32 位,线程代码
Intel10_64lpIntel MKL v10+ 64 位,线程代码,lp64 模型
Intel10_64lp_seqIntel 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 位,单个动态库
NVHPC在 3.21 版本加入.
NVIDIA 高性能计算软件开发工具包
OpenBLAS在 3.6 版本加入.
PhiPACK便携式高性能 ANSI C (PHiPAC)
SCSL,SCSL_mp科学计算软件库
SGIMATHSGI科学数学图书馆
SunPerfSun 性能库
英特尔 MKL¶
要使用 BLAS 的英特尔 MKL 实现,项目必须至少启用“C”或“CXX”语言中的一种。在命令行上将“BLA_VENDOR”设置为英特尔 MKL 变体,如“-DBLA_VENDOR=Intel10_64lp”或在项目代码中:
set(BLA_VENDOR Intel10_64lp)
find_package(BLAS)
为了使用英特尔 MKL 构建项目,最终用户必须首先建立英特尔 MKL 环境:
- 英特尔oneAPI
获取完整的英特尔环境脚本:
. /opt/intel/oneapi/setvars.sh或者,获取 MKL 组件环境脚本:
. /opt/intel/oneapi/mkl/latest/env/vars.sh- 英特尔经典
获取完整的英特尔环境脚本:
. /opt/intel/bin/compilervars.sh intel64
或者,获取 MKL 组件环境脚本:
. /opt/intel/mkl/bin/mklvars.sh intel64
上述环境脚本将 MKLROOT 环境变量设置为 MKL 安装的顶部。他们还将运行时库的位置添加到您平台的动态库加载程序环境变量中(例如 LD_LIBRARY_PATH)。这是链接到 MKL 的程序运行所必需的。
备注
从英特尔 oneAPI 2021.2 开始,仅加载 MKL 组件不会使其所有依赖项都可用。特别是,iomp5 库必须单独可用,或者通过同时加载编译器组件环境来提供:
. /opt/intel/oneapi/compiler/latest/env/vars.sh