FindLAPACK

查找已安装的线性代数软件包 (LAPACK) Fortran 库,该库实现了 LAPACK 线性代数接口

find_package(LAPACK [...])

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

导入的目标

此模块提供以下 导入目标

LAPACK::LAPACK

在 3.18 版本中新增。

封装 LAPACK 使用要求的目标,仅在找到 LAPACK 时可用。

结果变量

此模块定义了以下变量

LAPACK_FOUND

一个布尔值,指示是否找到实现了 LAPACK 接口的库。

LAPACK_LINKER_FLAGS

未缓存的必需链接器标志列表 (不包括 -l-L)。

LAPACK_LIBRARIES

未缓存的库列表 (使用完整路径名),链接时需要用到 LAPACK。

LAPACK95_LIBRARIES

未缓存的库列表 (使用完整路径名),链接时需要用到 LAPACK95。

LAPACK95_FOUND

一个布尔值,指示是否找到实现了 LAPACK95 接口的库。

输入变量

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

BLA_STATIC

如果设置为 ON,将使用静态链接。

BLA_VENDOR

设置为 BLAS/LAPACK 供应商 中的一个,以仅搜索指定供应商的 BLAS。如果未设置,则考虑所有供应商。

BLA_F95

如果设置为 ON,该模块将尝试查找 BLAS95/LAPACK95 接口。

BLA_PREFER_PKGCONFIG

在 3.20 版本中添加。

如果设置,将首先使用 pkg-config 搜索 LAPACK 库,如果找到则优先使用。

BLA_PKGCONFIG_LAPACK

在 3.25 版本中新增。

如果设置,pkg-config 方法将查找此模块名称,而不是仅查找 lapack

BLA_SIZEOF_INTEGER

3.22 版本新增。

指定 BLAS/LAPACK 库的整数大小

4

搜索具有 32 位整数接口的 BLAS/LAPACK。

8

搜索具有 64 位整数接口的 BLAS/LAPACK。

ANY

搜索任何 BLAS/LAPACK。很可能会找到具有 32 位整数接口的 BLAS/LAPACK。

BLA_THREAD

在 4.1 版本中新增。

指定 BLAS/LAPACK 的线程模型

SEQ

顺序模型

OMP

OpenMP 模型

ANY

搜索任何 BLAS/LAPACK,如果两者都可用,很可能会找到 OMP

目前仅由 NVIDIA NVPL 支持。

Intel MKL

要使用 Intel MKL 实现的 LAPACK,项目必须启用至少一种 CCXX 语言。在命令行中将 BLA_VENDOR 设置为 Intel MKL 变体,例如 -DBLA_VENDOR=Intel10_64lp,或在项目代码中设置。

set(BLA_VENDOR Intel10_64lp)
find_package(LAPACK)

为了构建使用 Intel MKL 的项目,最终用户必须首先建立 Intel MKL 环境。有关详细信息,请参阅 FindBLAS 模块部分关于 Intel MKL 的内容。

示例

查找 LAPACK 并将其链接到项目目标

find_package(LAPACK)
target_link_libraries(project_target PRIVATE LAPACK::LAPACK)