その1でインストールを行いましたので、次にVisual C++の設定を行い、その後サンプルプログラムを作成・実行してみます。
VC6時代は全体に影響する設定が大半だった記憶があります。そのため、プロパティ画面からは設定せず(画面で設定してしまうと他のプロジェクトにも影響を与えてしまうので)、プロジェクトごとに起動用バッチファイルを作成し、そこに必要な環境変数などを設定して…というようなことを行っていました。
一方、現在のバージョンでは、プロジェクトごとに必要な設定はプロジェクト単位でしか設定できないような方針が採られているようです。この方針はVC++2008とVC++2010の差異としても現れ、現在Web上で多く説明されている2008用のインストール方法説明ではうまくいかない箇所がありました。
グローバル設定
Visual C++ 2010 Express の全体に影響する設定を行います。
- Visual C++ 2010 Express を起動します。
- ツール > 設定 > 上級者用の設定 を選択します。
…これくらいでしょうか。
CUDAサンプルプロジェクトの作成と設定
- ファイル > 新規作成 > プロジェクト... で”新しいプロジェクト”ダイアログを開き、”空のプロジェクト”を選択、名前を”HelloCUDA”としてOKボタンを押し、新しいプロジェクトを作成します。
- ソリューションエクスプローラーでHelloCUDAを選択し、 プロジェクト > ビルドのカスタマイズ... メニューを選択します。
- CUDA 4.0 にチェックをつけ、OKボタンを押します。

これで簡単なプロジェクトが作成できました。続いて実行するcuファイルを作っておきましょう。書籍CUDA by Example(Amazon)のサンプルコードがこちらからダウンロードできます(Download source code for the book's examples (.zip)のリンク)ので、これを解凍し、chapter03\simple_kernel_params.cuをプロジェクトに取り込みます。インクルードファイルも必要なので、全体を解凍しておきましょう。
- ソリューションエクスプローラーでHelloCUDAプロジェクトのソースフォルダを右クリックし 追加 > 既存の項目... を選択します。
- simple_kernel_params.cu ファイルを選択します。

これでビルドする準備はできました。一応.cuファイルがビルド対象になっているか確認しておきましょう。
- ソリューションエクスプローラーでmyFirstKernel.cuを右クリックし”プロパティ”を選択します。
- ビルドから除外: いいえ、項目の種類: CUDA C/C++ となっていることを確認し、ダイアログを閉じます。

前述してきた手順と異なる順番で設定した場合(ビルドのカスタマイズを後から行った場合)は、.cuファイルがビルド対象になっていないかもしれません。その場合は上のような設定に変更しておきましょう。
プロジェクトプロパティ設定
- ソリューションエクスプローラで作成したHelloCUDAプロジェクトを右クリックしプロパティを選択します。
- ダイアログ左上にある“構成”プルダウンメニューで”すべての構成”を選択します。

プロジェクトプロパティはこのダイアログで設定します。”すべての構成”を選択したのは、今回変更するものはRelease用/Debug用バイナリ双方で同一項目に対して同一値を設定するためです(Release用とDebug用それぞれ個別に設定しても良いですが、2度手間になりますので)。以降ではこのダイアログを開く都度この設定を行ってください。
x64バイナリ出力設定
その1でもリンクしたページ、「方法 : Visual C++ プロジェクトを 64 ビット プラットフォーム用に設定する」に記載されている設定です。
- プロジェクトプロパティダイアログ右上にある“構成マネージャー...”ボタンを押し、構成マネージャーダイアログを表示させます。
- ”プラットフォーム”プルダウンメニューで”<新規作成...>”を選択します。
- “新しいプラットフォーム”プルダウンメニューで”x64”を選択しOKボタンを押します。
- 構成マネージャーダイアログを閉じます。

CUDAの方の設定も変更しておきます。
- 構成プロパティ > CUDA C/C++ > Common ツリーメニューを選択します。
- Target Machine Platform 項目値を “64bit(—machine 64)” に設定します。

実行完了後コマンドプロンプトを閉じない設定
Visual Studio 2008 までとは異なり、Visual Studio 2010 ではデバッグなしで開始(Ctrl+F5)で実行した場合でも、デフォルトではプログラムが終了するとコマンドプロンプトが閉じてしまいます。コンソール出力した結果が見えませんのでこの動作を変更します。
- 構成プロパティ > リンカー > システム ツリーメニューを選択します。
- サブシステム項目値を “コンソール(/SUBSYSTEM:CONSOLE)” にします。

Windows SDK 使用設定
- 構成プロパティ > 全般 ツリーメニューを選択します。
- プラットフォーム ツールセット の項目値を “Windows7.1SDK” に変更します。

インクルードパス等設定
[追記: この設定を行わなくてもライブラリのリンクは正常に行えました。未確認ですがどこかで自動的にパスが設定されているのでしょう。従ってこの設定は必要無いと思います。[追記: nvcc.exe と同じ階層にあるnvcc.profileですね。]]
[追記2: こちらで説明している通り、インテリセンスを効かすためにはインクルードディレクトリの設定が必要です。]
- 構成プロパティ > VC++ディレクトリ ツリーメニューを選択し、実行可能ファイルディレクトリのプルダウンメニューから “<編集...>”を選択します。
- 表示されたダイアログで $(CUDA_BIN_PATH) を追加した後、OKボタンを押しダイアログを閉じます。
- 同様にインクルードディレクトリでは $(CUDA_INC_PATH) 、ライブラリディレクトリでは $(CUDA_LIB_PATH) を追加します。
なお、これらの環境変数は、先のCUDA Toolkit インストール時に自動で設定されています。

リンクライブラリ設定
- 構成プロパティ > リンカー > 入力 ツリーメニューを選択します。
- 追加の依存ファイル のプルダウンメニューから “<編集...>”を選択します。
- cudart.lib と入力した後OKボタンを押しダイアログを閉じます。

Compute Capability 2.1 対応コード生成
これは必須ではないですが、せっかくGTS 450を選んだのですから設定しておきます(カーネル関数(GPU用コード)の中でprintfできたりメリットもあるようですし)。
- 構成プロパティ > CUDA C/C++ > Device ツリーメニューを選択します。
- Code Generation から <編集...> を選択します。
- “親またはプロジェクトの既定値から継承”のチェックを外し、入力欄に “compute_20,sm_21” を設定しOKボタンでダイアログを閉じます。

nvcc.exeのヘルプを読むと、compute_20はvirtual architectureの指定、sm_21はreal architectureの指定、だそうですがvirtual/realが何を指しているのかイマイチ分かっていませんのでそれっぽいのを指定しています。
設定は以上です。この後、Ctrl+F5を推せばビルド、プログラムが実行されます。
参考:
最近のコメント