我在CUDA中的双并行性方面遇到了一些麻烦。 我有一个名为First.cu的文件和一个名为main.cpp的主文件
我收到了错误。
错误:从__global__调用__global__函数(“kernel_6”) function(“kernel_5”)只允许在compute_35架构上使用 上述>
然后我跟着这个线程再次配置我的属性。
View -> Property Pages
Configuration Properties -> CUDA C/C++ -> Common -> Generate Relocatable Device Code -> Yes (-rdc=true
)Configuration Properties -> CUDA C/C++ -> Device -> Code Generation -> compute_35,sm_35
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。
答案 0 :(得分:2)
即使你说你已经在visual studio中设置了正确的计算属性(代码生成),但事实并非如此。 Visual Studio可能会令人困惑,因为有多种方法可以设置可以互相覆盖的属性,例如在每个文件级别(可以覆盖您设置的全局属性)。
如果您研究Visual Studio生成的实际nvcc
编译和链接命令行,它紧接在此问题中显示的错误输出之前,您将发现正确的sm_35
开关是不获得应用。你需要解决这个问题,这是一个视觉工作室配置问题。
您可能还希望学习或重复使用随cuda工具包安装的dynamic parallelism sample projects之一。您应该能够在visual studio下无错误地编译它们,并且您可以在那里学习正确的项目设置。或者您只需重复使用其中一个项目来编译自己的代码。