如何从C文件中分离内核

时间:2014-11-17 17:34:23

标签: c cuda gpu gpu-programming

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

假设我有两个文件:

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

2 个答案:

答案 0 :(得分:3)

对于您所描述的情况,您可以采用与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
$

答案 1 :(得分:1)

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