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



我想编译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工作室微软社区 [ 2019 VC v160 BuildCustomizations CUDA11.2.targets(625,9): error:指定了超过1个代码生成选项,只有当NVCC编译类型为"compile"时才允许。或"fatbin"。

对于一个最小的工作示例,我使用一个代码示例来说明如何从github repo中做到这一点在英伟达开发博客的特色。这个例子是有效的。我将示例更改为需要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?

这是由于CMake为真实设备和虚拟设备生成体系结构,不幸的是与PTX生成不兼容。

使用以下强制只使用虚拟架构,并修复问题:

set(CMAKE_CUDA_ARCHITECTURES 75-virtual)

最新更新