CUDA_ARCHITECTURES

在 3.18 版本中新增。

要为其生成设备代码的架构列表。

架构可以带有 -real-virtual 后缀,以指定要为其生成代码的架构类型。如果未给出后缀,则会为真实和虚拟架构生成代码。

非空 false 值(例如 OFF)将禁用添加架构。这旨在支持打包人员和需要完全控制传递的标志的罕见情况。

当创建目标时,如果此属性的值被设置为 CMAKE_CUDA_ARCHITECTURES 变量的值,则会初始化此属性。

对于编译 CUDA 源文件的目标,CUDA_ARCHITECTURES 目标属性必须设置为非空值,否则将发生错误。请参阅策略 CMP0104

可以将 CUDA_ARCHITECTURES 设置为以下特殊值之一:

all

在版本 3.23 中添加。

为所有支持的主要和次要真实架构以及最高主要虚拟架构进行编译。

all-major

在版本 3.23 中添加。

为所有支持的主要真实架构以及最高主要虚拟架构进行编译。

native

在 3.24 版本中添加。

为宿主 GPU 的架构进行编译。

示例

set_target_properties(tgt PROPERTIES CUDA_ARCHITECTURES "35;50;72")

为真实架构 305072 生成代码。

set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 70-real 72-virtual)

为真实架构 70 和虚拟架构 72 生成代码。

set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES OFF)

CMake 不会将任何架构标志传递给编译器。