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 不会将任何架构标志传递给编译器。