我想编译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之后),我的问题出现了。截图。
- 我做错了什么?
- 我如何开始调试这样的东西?
- 我怎么能改变我的代码示例编译,因为我需要cmake 3.18和vs2019?
这是由于CMake为真实设备和虚拟设备生成体系结构,不幸的是与PTX生成不兼容。
使用以下强制只使用虚拟架构,并修复问题:
set(CMAKE_CUDA_ARCHITECTURES 75-virtual)