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