13

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

4

2 回答 2

8
  • hcppchppinc - 不包含 CUDA C 代码(例如 __ device __ 和其他关键字、内核调用等)并且不进行任何 cuda 运行时调用(cuda...函数)的文件。从这些文件中调用 CUDA 驱动程序 API (cu...) 函数非常好。请注意,可以使用 NVCC 以外的编译器编译这些文件。
  • cu - CUDA C 源文件。这些文件被传递给 NVCC 编译器以编译成可链接(主机/设备)对象。
  • cuh , cuinc - 包含在 .cu 文件中的文件。这些文件可以有 CUDA C 关键字和/或调用 CUDA 运行时函数。
于 2013-03-05T21:21:42.487 回答
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(...)函数。
于 2013-03-05T14:14:59.787 回答