NVPL CMake 指南#

NVPL 为每个组件库提供 CMake 包配置 文件。

查找 NVPL 包#

如果 NVPL 是通过 OS 包管理器安装在 /usr 目录下,则 NVPL 包将已在默认 CMAKE_PREFIX_PATH 中。

nvpl_ROOT 环境变量应用于覆盖默认搜索路径,并强制在特定前缀下搜索 nvpl。如果您已将 nvpl 下载为独立的 tarball,请展开 tarball 并将结果目录的完整路径设置为 nvpl_ROOT

find_package() 命令用于查找 nvpl 和任何组件库

find_package(nvpl)

找到的每个 NVPL 组件库都将打印一条简短的状态消息,其中包含重要的位置。

提示

  • 如果成功找到 nvpl,CMake 变量 nvpl_FOUND 将为 true

  • CMake 变量 nvpl_VERSION 将包含找到的版本

  • 如果未找到 nvpl 包,请传递 REQUIRED 关键字以引发错误。

  • 无论 COMPONENTS 关键字如何,都将找到安装在同一前缀中的所有可用的 nvpl 组件库。

  • 要在一个特定组件未找到时引发错误,请使用 REQUIRED COMPONENTS ...

  • 设置 QUIET 以避免打印状态消息,或者在未找到 nvpl 时报告错误

  • find_package(nvpl) 可以安全地从项目中的不同位置多次调用。

链接到 NVPL 包#

NVPL 组件库在通用 nvpl:: 命名空间下提供 导入的接口目标。要添加所有必要的标志以编译和链接 NVPL 库,请使用 target_link_libraries() 命令

target_link_libraries(my_target PUBLIC nvpl::<lib>_<opts>)

此处 <lib> 是库/API 的小写简写,<opts> 由库定义。

NVPL 目标#

NVPL 组件和目标名称使用全小写命名方案。有关可用选项的详细信息,请参阅各个库。

组件

目标

选项 / 注释

blas

nvpl::blas_<int>_<thr>

<int>: lp64, ilp64

<thr>: seq, omp

fft

nvpl::fftw

FFTW API 接口

lapack

nvpl::lapack_<int>_<thr>

<int>: lp64, ilp64

<thr>: seq, omp

rand

nvpl::rand

nvpl::rand_mt

单线程

多线程 (OpenMP)

scalapack

nvpl::blacs_<int>_<mpi>

nvpl::scalapack_<int>

<int>: lp64, ilp64

<mpi>: mpich, openmpi3, openmpi4, openmpi5

sparse

nvpl::sparse

tensor

nvpl::tensor

NVPL 变量#

每个 nvpl 组件库还导出 CMake 变量

  • nvpl_<comp>_VERSION - 组件库的版本

  • nvpl_<comp>_INCLUDE_DIR - 组件头文件目录的完整路径

  • nvpl_<comp>_LIBRARY_DIR - 组件库目录的完整路径

示例#