cuda文件组织的有效方式:.cpp .h .cu .cuh .curnel文件

Ian*_*cks 10 c++ cuda header project organization

什么是最容易理解/有效的代码组织为cuda.经过一些调查后,我发现cuda函数声明应该在.cuh文件中,并且实现驻留在.cur文件中的.cu文件和内核函数实现中.通常是.cpp和.h文件中的其他c ++内容.最近我发布了一个问题visual studio .cu文件显示语法错误但编译成功.这个组织是否正确?其中.cpp调用.cu并调用.curnel中的内核函数.

Eug*_*ene 7

  • h,cpp,c,hpp,inc - 不包含CUDA C代码的文件(例如__ device __和其他关键字,内核调用等),并且不进行任何cuda运行时调用(cuda ...函数).从这些文件中调用CUDA驱动程序API(cu ...)函数是完全正确的.请注意,可以使用除NVCC之外的编译器编译这些文件.
  • cu - CUDA C源文件.这些文件将传递给NVCC编译器,以编译为可链接(主机/设备)对象.
  • cuh,cuinc - 包含在.cu文件中的文件.这些文件可以具有CUDA C关键字和/或调用CUDA运行时函数.


Jac*_*ern 1

例如,假设有一个基于 GPU 的 FDTD 代码。我通常执行以下操作(Visual Studio 2010)。

  • main.cpp文件,包括CPU-GPU内存传输;
  • FDTD.cu,包括一个extern "C" void E_update(...)包含内核<<< >>>调用的函数;
  • main.h 文件,包括extern "C" void E_update(...)原型;
  • FDTD.cuh,包括该__global__ void E_update_kernel(...)函数。