将内核链接在一起

马克·A

我在.cu文件中有一个CUDA内核,在另一个.cu文件中有另一个CUDA内核。我知道通过动态并行性,我可以从父内核调用另一个CUDA内核,但是我想知道是否有任何方法可以将子内核驻留在另一个.cu文件中。

罗伯特·克罗维拉

是的你可以。

关键是要通过设备代码链接使用单独的编译,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 -lcudadevrt

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章