.cpp
流体の流れをモデル化するための粒子法である平滑粒子流体力学を実装するファイルがいくつかあります。
これらの粒子手法で最も時間のかかるコンポーネントの 1 つは、シミュレーションのすべての時間ステップですべての粒子の最近傍 (K 最近傍または範囲検索) を見つけることです。
現在、GPU と CUDA を使用して近隣探索ルーチンを高速化し、現在の CPU ベースの近隣探索ルーチンを置き換えたいと考えています。シミュレーションの残りの部分は CPU で処理されますが、GPU では近隣探索のみが実行されます。
私の質問は、コード全体をコンパイルするにはどうすればよいですか? より具体的には、近隣探索カーネル関数を file に記述したとします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コンパイラーを仕事に使用しています。