FindLAPACK¶
查找已安装的线性代数软件包 (LAPACK) Fortran 库,该库实现了 LAPACK 线性代数接口
find_package(LAPACK [...])
必须启用 C、CXX 或 Fortran 中的至少一种语言。
导入的目标¶
此模块提供以下 导入目标
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_INTEGER3.22 版本新增。
指定 BLAS/LAPACK 库的整数大小
4搜索具有 32 位整数接口的 BLAS/LAPACK。
8搜索具有 64 位整数接口的 BLAS/LAPACK。
ANY搜索任何 BLAS/LAPACK。很可能会找到具有 32 位整数接口的 BLAS/LAPACK。
BLA_THREAD在 4.1 版本中新增。
指定 BLAS/LAPACK 的线程模型
SEQ顺序模型
OMPOpenMP 模型
ANY搜索任何 BLAS/LAPACK,如果两者都可用,很可能会找到
OMP。
目前仅由 NVIDIA NVPL 支持。
Intel MKL¶
要使用 Intel MKL 实现的 LAPACK,项目必须启用至少一种 C 或 CXX 语言。在命令行中将 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)