23

直接の質問: Visual Studio 2010 内で単純な Hello World CUDA プロジェクトを作成するにはどうすればよいですか?

背景: CUDA カーネルを作成しました。私は、Visual Studio 2005 の .vcproj ファイルに精通しており、いくつかは手動で微調整されています。VS 2005 で CUDA カーネルをビルドする場合は、カスタム ビルド ルールを追加し、nvcc 呼び出しを明示的に定義してファイルをビルドします。

nSight を本当に試してみたいので、Win 7 と VS 2010 に移行しました。nSight 1.5 をインストールしました。しかし、これは私が完全に迷っているところです。前と同じように進めると、nvcc は msvc 8.0 & 9.0 のみをサポートすると報告します。しかし、Web サイトには、VS 2010 をサポートしていると明確に記載されています。

私はVS 2008(msvc 9.0)もインストールする必要があることをどこかで読みました-私の言葉。今そうしています。

しかし、私の問題の少なくとも一部は、自家製のカスタム ビルド ツールの仕様に起因していると思います。 *.rules ファイルをビルドに追加することについて話しているWeb サイトがいくつか ありますが、これは VS 2008 にのみ適用可能であることがわかりました。「ビルドのカスタマイズ」の下に CUDA 3.1 と 3.2 が表示されますが、カーネルをプロジェクトに追加すると、それらは構築されていません。 別の Web サイトでは、キーはCuda.props Cuda.xml Cuda.targetsの 3 つのファイルであると宣言されていますが、これらのファイルを追加する方法や場所については言及されていません。ウェブサイトで参照されています。

nSight 1.5セットアップまたはCUDA 3.2 RCに同梱されているNvCudaRuntimeApi.v3.2.rulesファイルを使用して、VS 2010でCUDAカーネルを構築する簡単なプロジェクトを作成する方法を知っている人はいますか?

前もって感謝します!報奨金を提供したいのですが、合計 65 ポイントしかありません。

4

3 に答える 3

44

CUDA ツールキット 4.0 以降

ビルド カスタマイズ ファイル (Program Files\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizationsディレクトリにインストールされる) は、プロジェクト内の .cu ファイルをコンパイルしてアプリケーションにリンクする方法を Visual Studio に "教えます"。カスタマイズのインストールをスキップすることを選択した場合、または CUDA の後に VS2010 をインストールした場合は、 の手順に従って後で追加できますProgram Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\extras\visual_studio_integration

  • 標準の MS ウィザードを使用して新しいプロジェクトを作成します (空のコンソール プロジェクトなど)。
  • ホスト (シリアル) コードを .c または .cpp ファイルに実装する
  • NVIDIA ビルドのカスタマイズを追加します (プロジェクトを右クリックし、[ビルドのカスタマイズ] で、関連する CUDA ボックスにチェックを入れます)。
  • CUDA 4.0 を使用している場合は注 1 を参照してください
  • ラッパーとカーネルを .cu ファイルに実装する
  • .cuビルドのカスタマイズの前にファイルを追加した場合は、ファイルのタイプを次のように設定する必要があります (.cuファイルをCUDA C/C++右クリックして [プロパティ] を選択し、[アイテム タイプ] を設定します) 。
  • CUDA ランタイム ライブラリを追加します (プロジェクトを右クリックして [プロパティ] を選択し、 [リンカー] -> [入力] で [追加の依存関係] に追加cudart.libします) 。
  • 次に、プロジェクトをビルドするだけで、.cu ファイルが .obj にコンパイルされ、リンクに自動的に追加されます。

ちなみに、できればcutil を避けることをお勧めします。代わりに、独自のチェックをロールバックします。Cutil は NVIDIA ではサポートされていません。SDK の例を実際のプログラムとアルゴリズムの設計に集中させ、すべての例で同じことを繰り返さないようにするために使用されています (コマンド ライン解析など)。自分で書いた場合は、より適切に制御でき、何が起こっているかを知ることができます。たとえば、関数が失敗した場合、cutilSafeCallラッパーが呼び出さexit()れます。実際のアプリケーション (サンプルではなく) は、失敗をよりエレガントに処理する必要があります。


ノート

  1. CUDA 4.0 の場合のみ、ビルドのカスタマイズにこの修正を適用する必要がある場合があります。このパッチは、次のメッセージを修正します。

要素の「AssemblyFile」属性の値「$(CudaBuildTasksPath)」を評価した結果「」が無効です

于 2011-09-02T14:50:48.783 に答える
7

この回答は CUDA 3.2 に適用され、4.0 以降の CUDA は VC 10 コンパイラを直接サポートしています。詳細については、他の回答を参照してください。

VS 2008 または 6.1 Windows SDK がインストールされている必要があります。これは、NSight 1.5 RC または CUDA 3.2 SDK が内部で VC 9 コンパイラを使用しているためです。これは 2008 をインストールした状態で正常に動作し、SDK で動作するはずだと言われましたが、試していません。

NSight 1.5 および/または CUDA 3.2 SDK を使用すると、カスタム ビルド ルールをいじる必要はありません。私はそこにいましたが、それは苦痛です。最新のビルドでは、次のことがすべてなくなります。

  • VC++ プロジェクトを作成します。
  • それに .CU ファイルを追加します。
  • ソリューション エクスプローラーでプロジェクト ファイルを選択します。
  • プロジェクトを開く | ビルドのカスタマイズ...
  • 「CUDA 3.2 (.targets, .props)」のカスタマイズを確認します。
  • プロジェクトで .CU ファイルを選択し、Alt-Enter を押してそのプロパティを表示します。
  • 項目タイプが「CUDA C/C++」に設定されていることを確認してください

ビルドするだけです。これが役立つかどうか、およびこれがメモリからのものであるため問題が発生した場合はお知らせください。

VS 2010 での CUDA の動作が非常に簡単になったことは朗報です。

アデ

ところで: ブログ記事を更新します。

于 2010-10-01T05:50:03.957 に答える