CMAKE Cuda/ptx项目中的重复代码生成标志

4
我想将CUDA编译为PTX以进行嵌入式开发。为此,我使用CMAKE 3.18.5与Visual Studio 16(2019)生成器,这是项目的要求。但问题在于目标标志被重复了 compute_75,compute_75;compute_75,sm_75,因此nvcc拒绝将其编译为ptx。

2> C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Microsoft \ VC \ v160 \ BuildCustomizations \ CUDA 11.2.targets(625,9):错误:指定了多个代码生成选项,只有当NVCC编译类型为“compile”或“fatbin”时才允许。

我使用了一个来自GitHub存储库的代码示例作为最小工作示例,该示例在NVIDIA DevBlog中得到了介绍。该示例可以正常工作。我将示例更改为需要CMAKE 3.18(从3.8)并添加...
set_property(TARGET CudaPTX PROPERTY CUDA_ARCHITECTURES 75)
set_property(TARGET ExportPTX PROPERTY CUDA_ARCHITECTURES off)

我的问题出现在第51行(在target_include_directories之后),截图

  1. 我做错了什么?
  2. 我该如何开始调试这样的问题?
  3. 在需要cmake 3.18和vs2019的情况下,我该如何更改代码示例以编译?
1个回答

1
这是因为CMake为真实设备和虚拟设备生成架构,这与PTX生成不兼容。使用以下内容仅使用虚拟架构,可以解决问题:
set(CMAKE_CUDA_ARCHITECTURES 75-virtual)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接