cudaの最も理解しやすい/効率的なコード構成は何ですか。調査の結果、cuda 関数の宣言は .cuh ファイルに、実装は .cu ファイルに、カーネル関数の実装は .curnel ファイルにあることがわかりました。通常、.cpp および .h ファイル内のその他の c++ のもの。最近、質問を投稿しましたvisual studio .cu file shows syntax error but compile successfully . この組織は正しいですか?.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)。
- CPU-GPU メモリ転送を含む main.cpp ファイル。
- カーネル呼び出し
extern "C" void E_update(...)
を含む関数を含む FDTD.cu。<<< >>>
- プロトタイプを含む main.h ファイル
extern "C" void E_update(...)
。 - 関数を含む FDTD.cuh
__global__ void E_update_kernel(...)
。
于 2013-03-05T14:14:59.787 に答える