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")
为真实架构 30
、50
和 72
生成代码。
set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 70-real 72-virtual)
为真实架构 70
和虚拟架构 72
生成代码。
set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES OFF)
CMake 不会将任何架构标志传递给编译器。