我有一些.cpp
文件實現了平滑粒子流體動力學,這是一個用於建模流體流動的粒子方法。編寫一個CUDA內核來替換一個等效的CPU專用函數
這些粒子技術中最耗時的組件之一是在每個時間步的模擬中找到每個粒子的最近鄰居(K-最近鄰居或範圍搜索)。
現在我只是想加快使用GPU和CUDA的鄰居搜索例程,取代我的當前基於CPU的鄰居搜索例程。只有鄰居搜索纔會在GPU上運行,而其餘的模擬在CPU上進行。
我的問題是,我應該如何編譯整個代碼?更具體地說,假設我在文件nsearch.cu
中寫入鄰居搜索內核函數。
那麼應該怎麼重命名我以前所有的.cpp
文件作爲.cu
文件並重新編譯整套使用nvcc
(連同nsearch.cu)?至少對於簡單的例子,nvcc 不能編譯CUDA代碼,擴展名爲.cpp
,即nvcc foo.cu
編譯,但nvcc hello.cpp
沒有編譯。
總之,這個CUDA插件的結構應該如何,我應該如何編譯它?
我使用Ubuntu Linux操作系統的10.10,CUDA 4.0,NVIDIA GTX 570(計算能力2.0)和GCC編譯器我的工作