1

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

我遇到了错误。

错误:从 __global__ 函数(“kernel_5”)调用 __global__ 函数(“kernel_6”)只允许在 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 。

4

1 回答 1

2

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

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

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

于 2013-10-19T14:52:25.367 回答