FindBLAS

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

此模块查找实现 BLAS 线性代数界面 的已安装 Fortran 库。

至少其中一门 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。

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

通用

通用参考实现

ACMLACML_MPACML_GPU

AMD Core 数学库

AOCLAOCL_mt

在版本 3.27 中添加。

AMD 优化 CPU 库

AppleNAS

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

ArmArm_mpArm_ilp64Arm_ilp64_mp

3.18 版中新增。

Arm 性能库

ATLAS

线性代数软件自动调整

CXMLDXML

康柏/数字扩展数学库

EMLEML_mt

在版本 3.20 中添加。

Elbrus 数学库

FLAME

3.11 版中新增。

BLIS 框架

FlexiBLAS

在版本 3.19 中添加。

Fujitsu_SSL2Fujitsu_SSL2BLAMPFujitsu_SSL2SVEFujitsu_SSL2BLAMPSVE

在版本 3.20 中添加。

Fujitsu SSL2 串行和并行 blas/lapack 以及 SVE 指令

Goto

GotoBLAS

IBMESSLIBMESSL_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)

SCSLSCSL_mp

科学计算软件库

SGIMATH

SGI 科学数学库

SunPerf

Sun Performance Library

Intel MKL

要使用 Intel MKL BLAS 实现,项目必须启用 CCXX 语言中至少一种。将 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