13

cudaの最も理解しやすい/効率的なコード構成は何ですか。調査の結果、cuda 関数の宣言は .cuh ファイルに、実装は .cu ファイルに、カーネル関数の実装は .curnel ファイルにあることがわかりました。通常、.cpp および .h ファイル内のその他の c++ のもの。最近、質問を投稿しましたvisual studio .cu file shows syntax error but compile successfully . この組織は正しいですか?.cpp は .cu を呼び出し、.curnel 内のカーネル関数を呼び出します。

4

2 に答える 2

8
  • hcppchppinc - CUDA C コード (例: __ device __ およびその他のキーワード、カーネル呼び出しなど) を含まず、cuda ランタイム呼び出し (cuda... 関数) を行わないファイル。これらのファイルから CUDA ドライバー API (cu...) 関数を呼び出すことはまったく問題ありません。これらのファイルは、NVCC 以外のコンパイラでコンパイルできることに注意してください。
  • cu - CUDA C ソースファイル. これらのファイルは NVCC コンパイラに渡され、リンク可能な (ホスト/デバイス) オブジェクトにコンパイルされます。
  • cuhcuinc - .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 に答える