C++ 编译包含动态并行性的代码失败

C++ 编译包含动态并行性的代码失败,c++,cuda,parallel-processing,dynamic-execution,C++,Cuda,Parallel Processing,Dynamic Execution,我正在使用CUDA 5.5和计算能力为3.5的NVDIA GeForce GTX 780进行动态并行编程。我正在调用内核函数中的内核函数,但它给了我一个错误: 错误:仅允许在compute_35或更高体系结构上从uu全局函数(“内核_5”)调用u全局函数(“内核_6”) 我做错了什么?您需要让nvcc为您的设备生成CC 3.5代码。这可以通过将此选项添加到nvcc命令行来完成 -gencode arch=compute_35,code=sm_35 您可以在动态并行上找到CUDA示例以了解更多

我正在使用CUDA 5.5和计算能力为3.5的NVDIA GeForce GTX 780进行动态并行编程。我正在调用内核函数中的内核函数,但它给了我一个错误:

错误:仅允许在compute_35或更高体系结构上从uu全局函数(“内核_5”)调用u全局函数(“内核_6”)


我做错了什么?

您需要让nvcc为您的设备生成CC 3.5代码。这可以通过将此选项添加到nvcc命令行来完成

 -gencode arch=compute_35,code=sm_35
您可以在动态并行上找到CUDA示例以了解更多详细信息。它们包含所有受支持操作系统的命令行选项和项目设置


你可以这样做

nvcc -arch=sm_35 -rdc=true simple1.cu -o simple1 -lcudadevrt

如果您有两个文件simple1.cu和test.c,则可以执行以下操作。这称为独立编译

nvcc -arch=sm_35 -dc simple1.cu 
nvcc -arch=sm_35 -dlink simple1.o -o link.o -lcudadevrt
g++ -c test.c 
g++ link.o simple1.o test.o -o simple -L/usr/local/cuda/lib64/ -lcudart

Visual Studio 2010的

中也解释了这一点:

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

要使用动态并行
——可重定位设备代码=true
或short
,还需要rdc
。此外,为了防止进一步的错误,请不要忘记链接cudadevrt库。您好,感谢您的回复,我正在这样做,但收到此错误致命错误:nvcc仅在针对sm_20或更高版本时才支持“--relocated device code=true(-rdc=true)”、“--device-c(-dc)”和“--device link(-dlink)”。请附上您正在执行的具体操作?简单的程序和您正在运行的命令?因为我刚刚为一个简单的程序尝试了上面的命令,嗨,先生,我也在做同样的事情。在另一个内核函数中调用一个内核函数。我有两个文件,分别名为sample.cpp和cuda.cu。请详细说明我应该在哪里添加这个nvcc-arch=sm_35-rdc=true simple1.cu-o simple1-lcudadevrt@user2865500您使用的是linux还是windows?我使用的是windows 7。visual studio 2010 CUDA 5.5我非常感谢您的帮助..我已经这样做了,现在我收到了这个错误。请不要否认。。。nvcc:致命错误:nvcc仅在目标为sm_20或更高版本时才支持“--可重定位设备代码=真(-rdc=真)”、--device-c(-dc)”和“--设备链接(-dlink)”。请确保已正确完成步骤3。您是否能够成功编译CDCUDA示例?它使用动态并行计算LU分解。是的,长官。我构建了CDpludeComposition CUDA示例。它没有给出任何错误。但是给了我这个本机“已退出,代码为0(0x0)”。我已经成功地完成了所有步骤。@user2865500我不确定还有什么建议。您是在构建解决方案还是仅仅构建解决方案?