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

时间:2013-03-05 10:59:38

标签: c++ header cuda project organization

cuda最容易理解/最有效的代码组织是什么?经过一些调查后,我发现cuda函数声明应该在.cuh文件中,并且实现驻留在.cur文件中的.cu文件和内核函数实现中。通常是.cpp和.h文件中的其他c ++内容。最近我发布了一个问题visual studio .cu file shows syntax error but compile successfully。这个组织是否正确?其中.cpp调用.cu并调用.curnel中的内核函数。

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分: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(...)函数。