【问题标题】:solving cuda dynamic paralleism解决cuda动态并行
【发布时间】:2013-10-12 12:19:57
【问题描述】:

我在 CUDA 中的双重并行性方面没有什么问题。 我有一个名为 First.cu 的文件和一个名为 main.cpp 的主文件

我遇到了错误。

错误:从 __global__ 调用 __global__ 函数(“kernel_6”) function("kernel_5") 仅允许在 compute_35 架构上或 以上>

然后我按照这个线程再次配置了我的属性。

  1. View -> Property Pages
  2. Configuration Properties -> CUDA C/C++ -> Common -> Generate Relocatable Device Code -> Yes (-rdc=true)
  3. Configuration Properties -> CUDA C/C++ -> Device -> Code Generation -> compute_35,sm_35
  4. Configuration Properties -> Linker -> Input -> Additional Dependencies -> cudadevrt.lib

现在我收到这样的错误。

nvcc:致命错误:nvcc 支持 '--relocatable-device-code=true 仅 (-rdc=true)'、'--device-c (-dc)' 和 '--device-link (-dlink)' 针对 sm_20 或更高版本时

请帮助我。我应该怎么做才能消除这个错误?

我已添加所有必需的 CUDA 库。我安装了 CUDA 5.5 并且我有 GTX780 。

【问题讨论】:

  • 什么样的错误?我看不到任何
  • 已编辑..请再看
  • 那么目标不要低于 sm_20,如错误消息所述。如果可能,只选择 _35
  • 我可以从哪里选择 SM_35 .. 你能详细说明一下吗?
  • 这与Compiling code containing dynamic parallelism fails 中的讨论相同。可能您的错误是由于滥用 Visual Studio 而引起的,可以通过要求某人(同事?)修改您的 Visual Studio 解决方案的设置来解决。

标签: c++ visual-c++ cuda dynamic-programming


【解决方案1】:

即使您说您已在 Visual Studio 中设置了正确的计算属性(代码生成),但您并没有。 Visual Studio 可能会令人困惑,因为有多种方法可以设置可以相互覆盖的属性,例如在每个文件级别(可以覆盖您设置的全局属性)。

如果您研究由 Visual Studio 生成的实际 nvcc 编译和链接命令行,这些命令行紧接在您在此问题中显示的错误输出之前,您会发现正确的 sm_35 开关不是 得到应用。您需要解决这个问题,这是一个 Visual Studio 配置问题。

您可能还希望研究或重复使用随 cuda 工具包安装的 dynamic parallelism sample projects 之一。您应该能够在 Visual Studio 下无错误地编译这些,并且您可以在那里研究正确的项目设置。或者您可以简单地重复使用这些项目之一来编译您自己的代码。

【讨论】:

    猜你喜欢
    • 2015-08-27
    • 2017-06-14
    • 2013-10-20
    • 2012-12-03
    • 2023-03-17
    • 2017-12-25
    • 1970-01-01
    • 2015-03-05
    相关资源
    最近更新 更多