我在.cu文件中有一个CUDA内核,在另一个.cu文件中有另一个CUDA内核。我知道,使用动态并行性,我可以从父内核调用另一个CUDA内核,但是我想知道是否有任何方法可以通过驻留在另一个.cu文件中的子内核来实现这一点。
发布于 2013-12-17 15:02:29
可以,停那儿吧。
关键是使用单独的编译和设备代码链接,即可在nvcc上使用。由于动态并行的使用已经需要这一点,所以这里并没有什么新的东西。
下面是一个简单的例子:
ch_kernel.cu:
#include <stdio.h>
__global__ void ch_kernel(){
printf("hello from child kernel\n");
}main.cu:
#include <stdio.h>
extern __global__ void ch_kernel();
__global__ void kernel(){
ch_kernel<<<1,1>>>();
}
int main(){
kernel<<<1,1>>>();
cudaDeviceSynchronize();
}用下列方法汇编:
nvcc -arch=sm_35 -rdc=true -o test ch_kernel.cu main.cu -lcudadevrthttps://stackoverflow.com/questions/20636800
复制相似问题