我有一些.cpp
文件实现了平滑粒子流体动力学,这是一种用于模拟流体流动的粒子方法。
这些粒子技术中最耗时的组件之一是在模拟的每个时间步为每个粒子找到最近邻(K-最近邻或范围搜索)。
现在我只想使用 GPU 和 CUDA 加速邻居搜索例程,替换我当前基于 CPU 的邻居搜索例程。只有邻居搜索将在 GPU 上运行,而其余的模拟在 CPU 上进行。
我的问题是,我应该如何编译整个代码?更具体地说,假设我在一个文件中编写了邻居搜索内核函数nsearch.cu
。
那么我应该将所有以前 .cpp
的文件重命名为.cu
文件并使用重新编译整个集合(连同 nsearch.cu)nvcc
吗?至少对于简单的示例,nvcc无法编译带有扩展名的 CUDA 代码,.cpp
即nvcc foo.cu
编译但nvcc hello.cpp
不能编译。
简而言之,这个 CUDA 插件的结构应该是什么,我应该如何编译它?
我正在为我的工作使用Ubuntu Linux 10.10、CUDA 4.0、NVIDIA GTX 570(计算能力 2.0)和gcc编译器