解决cuda动态并行性问题

时间:2013-10-12 12:19:58

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

我在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
  5. 现在我收到这样的错误。

      

    nvcc:致命错误:nvcc支持'--relocatable-device-code = true   (-rdc = true)',' - device-c(-dc)'和'--device-link(-dlink)'仅'   在定位sm_20或更高时

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

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

1 个答案:

答案 0 :(得分:2)

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

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

您可能还希望学习或重复使用随cuda工具包安装的dynamic parallelism sample projects之一。您应该能够在visual studio下无错误地编译它们,并且您可以在那里学习正确的项目设置。或者您只需重复使用其中一个项目来编译自己的代码。