【问题标题】:Link kernels together将内核链接在一起
【发布时间】:2013-12-17 14:30:27
【问题描述】:

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

【问题讨论】:

    标签: cuda nvcc


    【解决方案1】:

    是的,你可以。

    关键是使用单独编译和设备代码链接,即available with nvcc。由于 dynamic parallelism 的使用已经需要此功能,因此这里确实没有什么新内容。

    这是一个简单的例子:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-01
      • 2015-05-29
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多