簡體   English   中英

如何從C文件中分離內核

[英]How to separate kernels from C file

嗨,我想將我的一些CUDA內核函數放在一個單獨的文件中,以便我可以重復使用它們。

假設我有兩個文件:

  1. A.cu包含可重用的CUDA內核。
  2. B.cu包含一些內核以及宿主函數,在這里我想從A.cu文件中調用一些內核。

我該怎么做?

對於您描述的情況,您可以采用與在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
$

您可以做的是將內核原型放入.cuh文件中,然后將其包含在第二個文件中。 是一種組織CUDA代碼的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM