【问题标题】:Duplicated code generation flags on CMAKE Cuda/ptx projectCMAKE Cuda/ptx 项目上的重复代码生成标志
【发布时间】:2021-05-05 11:35:04
【问题描述】:

我想将 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):错误:指定了超过 1 个代码生成选项,仅当 NVCC 编译类型为“编译”时才允许 或'fatbin'。

对于一个最小的工作示例,我使用一个代码示例来说明如何从 github repo 执行此操作,它是 在 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 之后),我的问题就显现出来了。 screenshot.

  1. 我做错了什么?
  2. 如何开始调试这样的事情?
  3. 鉴于我需要 cmake 3.18 和 vs2019,如何更改我的代码示例以进行编译?

【问题讨论】:

    标签: visual-studio cmake cuda


    【解决方案1】:

    这是由于 CMake 为 real and virtual devices 生成了架构,不幸的是,这与 PTX 生成不兼容。

    仅使用虚拟架构使用以下力量,并修复问题:

    set(CMAKE_CUDA_ARCHITECTURES 75-virtual)
    

    【讨论】:

      猜你喜欢
      • 2021-04-05
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 2021-08-19
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多