如何从 cmake(3.10 版本)将 CUDA 架构设置为 compute_50 和 sm_50?

C0D*_*D3R 6 c++ cuda cmake cmake-gui

我的项目使用带有 Visual Studio 的 CMake-GUI。我的系统上没有安装 GPU 卡。生成的Visual Studio 解决方案将nvcc 标志设置为compute_30 和sm_30,但我需要将其设置为compute_50 和sm_50。

我使用带有 64 位编译的 CMake 3.10.1 和 Visual Studio 14 2015。

我希望取代 CMake 的默认设置。我没有使用 Find CUDA 方法来搜索和添加 CUDA。我在 CMAKE 中添加 CUDA 作为语言支持,VS 启用基于此的 CUDA Build 自定义。

Jim*_*son 8

正确的方法是:

target_compile_options(myTarget PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:-gencode arch=compute_50,code=sm_50>)
Run Code Online (Sandbox Code Playgroud)

根据需要选择私人/公共。这是设置每个目标标志的正确方法。


C0D*_*D3R 5

所以我能够自己弄清楚。我们可以通过以下方式设置它 -

string(APPEND CMAKE_CUDA_FLAGS " -gencode arch=compute_50,code=sm_50")
Run Code Online (Sandbox Code Playgroud)


小智 5

CMake 3.18 有新的目标属性CUDA_ARCHITECTURES。从这里的文档:

set_property(TARGET myTarget PROPERTY CUDA_ARCHITECTURES 35 50 72)
Run Code Online (Sandbox Code Playgroud)

为真实和虚拟架构 30、50 和 72 生成代码。

set_property(TARGET myTarget PROPERTY CUDA_ARCHITECTURES 70-real 72-virtual)
Run Code Online (Sandbox Code Playgroud)

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