【问题标题】:How to separate kernels from C file如何从 C 文件中分离内核
【发布时间】:2014-11-18 02:10:43
【问题描述】:

您好,我想将我的一些 CUDA 内核函数分离到一个单独的文件中,以便我可以重复使用它们。

假设我有两个文件:

  1. A.cu 包含可重用的 CUDA 内核。
  2. B.cu 包含一些内核以及主机函数,我想从我的 A.cu 文件中调用一些内核。

我该怎么做?

【问题讨论】:

    标签: c cuda gpu


    【解决方案1】:

    对于您所描述的情况,您可以以与在 C/C++ 中执行此操作的方式几乎相同的方式执行此操作。这是一个完整的示例:

    $ cat B.cu
    #include "myheader.h"
    
    __global__ void kernel1(){
      printf("Hello 1\n");
    }
    
    int main(){
    
      kernel1<<<1,1>>>();
      cudaDeviceSynchronize();
      kernel2<<<1,1>>>();
      cudaDeviceSynchronize();
      return 0;
    }
    
    $ cat A.cu
    #include "myheader.h"
    
    __global__ void kernel2(){
      printf("Hello 2\n");
    }
    
    $ cat myheader.h
    #include <stdio.h>
    __global__ void kernel2();
    
    $ nvcc -arch=sm_20 -o test A.cu B.cu
    $ cuda-memcheck ./test
    ========= CUDA-MEMCHECK
    Hello 1
    Hello 2
    ========= ERROR SUMMARY: 0 errors
    $
    

    【讨论】:

      【解决方案2】:

      您可以做的是将您的内核原型放在一个 .cuh 文件中,然后将其包含在您的第二个文件中。 Here 是一种组织 CUDA 代码的方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多