查找BLAS

查找基本线性代数子程序 (BLAS) 库

该模块找到一个已安装的 Fortran 库,该库实现了“BLAS 线性代数接口”_。

至少必须启用 CCXXFortran 语言中的一种。

输入变量

可以设置以下变量来影响此模块的行为:

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 供应商

通用

通用参考实现

ACMLACML_MPACML_GPU

AMD 核心数学库

苹果NAS

Apple BLAS(加速)和 Apple NAS(vecLib)

ArmArm_mpArm_ilp64Arm_ilp64_mp

在 3.18 版本加入.

手臂性能库

地图集

自动调整的线性代数软件

CXMLDXML

Compaq/数字扩展数学库

EMLEML_mt

在 3.20 版本加入.

厄尔布鲁士数学图书馆

火焰

在 3.11 版本加入.

BLIS 框架

FlexiBLAS

在 3.19 版本加入.

Fujitsu_SSL2Fujitsu_SSL2BLAMPFujitsu_SSL2SVEFujitsu_SSL2BLAMPSVE

在 3.20 版本加入.

带有 SVE 指令的富士通 SSL2 串行和并行 blas/lapack

转到

转到BLAS

IBMESSLIBMESSL_SMP

IBM 工程和科学子程序库

英特尔

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 位,单个动态库

NVHPC

在 3.21 版本加入.

NVIDIA 高性能计算软件开发工具包

OpenBLAS

在 3.6 版本加入.

PhiPACK

便携式高性能 ANSI C (PHiPAC)

SCSLSCSL_mp

科学计算软件库

SGIMATH

SGI科学数学图书馆

SunPerf

Sun 性能库

英特尔 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