C++ 如何编译具有动态并行性的.cu?

C++ 如何编译具有动态并行性的.cu?,c++,cuda,dynamic-parallelism,C++,Cuda,Dynamic Parallelism,我有2个cpp文件设置和功能,6.cu文件主要,洪水,时间步长,排放,连续性和复制。 我试着把它编译成主调用cpp文件,然后是泛洪内核全局调用,然后是泛洪调用timestep、discharge、continuity和copy内核,所有设备都是这样 大概是这样的: 主要 ~functions ~setup ~flood ~~时间步 ~~放电 ~~连续性 ~~拷贝 我在CUDA5.5中使用GK110板,但我不知道如何在单独的源代码中编译(我得到一个错误,设备函数需要分离编译模式)。 我也不知道如何

我有2个cpp文件设置和功能,6.cu文件主要,洪水,时间步长,排放,连续性和复制。 我试着把它编译成主调用cpp文件,然后是泛洪内核全局调用,然后是泛洪调用timestep、discharge、continuity和copy内核,所有设备都是这样

大概是这样的:

主要
~functions
~setup
~flood
~~时间步
~~放电
~~连续性
~~拷贝

我在CUDA5.5中使用GK110板,但我不知道如何在单独的源代码中编译(我得到一个错误,设备函数需要分离编译模式)。 我也不知道如何使用-dc或-rtc={true}和标志来实现动态并行

我试图这样做,但没有成功:

g++  -c functions.cpp -std=c++0x 
g++  -c setup.cpp -std=c++0x  
nvcc -arch=sm_35 -dc timestep.cu copy.cu continuity.cu discharge.cu
nvcc -arch=sm_35 -dlink timestep.o copy.o continuity.o discharge.o -o link.o -lcudadevrt
nvcc -dc flood.cu -arch sm_35 
当我到达de第五行时,我收到错误消息,设备功能调用无法配置

有人能帮我吗?

试试:

g++  -c functions.cpp -std=c++0x 
g++  -c setup.cpp -std=c++0x  
nvcc timestep.cu copy.cu continuity.cu discharge.cu flood.cu -arch=sm_35 -lcudadevrt -rdc=true -c
nvcc timestep.o copy.o continuity.o discharge.o flood.o -arch=sm_35 -lcudadevrt -dlink -o dlink.o 
g++ functions.o steup.o dlink.o -o a.out -std=c++0x -L/<path>/cuda/lib<64,32> -lcudart -lcudadevrt
g++-c functions.cpp-std=c++0x
g++-c setup.cpp-std=c++0x
nvcc timestep.cu copy.cu continuousity.cu discharge.cu flood.cu-arch=sm_35-lcudadevrt-rdc=true-c
nvcc timestep.o copy.o continuity.o discharge.o flood.o-arch=sm_35-lcudadevrt-dlink-o dlink.o
g++functions.o steup.o dlink.o-o a.out-std=c++0x-L//cuda/lib-lcudart-lcudadevrt

你知道有CUDA,包括动态并行代码和显示如何编译的makefiles吗?我来看看。我只找到了5.0版本,而那里的示例没有帮助。这只是一个简单的例子。我这样做了,但在nvcc行中包含main.cu,但仍然有一个错误。(无法在my kernel-flood-call the other kernel-discharge-)所在的行中确认设备调用。无法配置设备调用可能是代码中的语法错误,而不是编译序列的问题。您是否在某个地方定义了一个函数,例如您试图从主机代码调用的
\uuuu device\uuuuu void myfunction(…)
,例如
myfunction(…)?我将所有的.cu文件放在一个文件中,只剩下我的functions.cpp文件。这样做,我就可以编写一个生成文件。设备功能不工作,但转换为全局是。您能显示最新的编译错误吗?