2012年2月21日火曜日

「CUDA」の設定(Win)

前回に引き続いて,Visual Studio 2010でCUDAが動作するように設定を行います.
すでにVisual Studio 2010(筆者の環境ではUltimate,他バージョンでももちろんOK)がインストールされているものとして進めていきます.


まずは,GPU Computing SDK関連の設定を行います.
「C:\Program Files\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.1\C\common\cutil_vs2010.sln」をダブルクリックしてVisual Studioを起動してください.
ここで,画面上の「Debug」と「Win32」は,それぞれ「Release」「x64」に変更することができると思います.
開発時に32bitでも64bitでも開発できるように,
  • Debug + Win32
  • Release + Win32
  • Debug + x64
  • Release + x64
というように,全組み合わせで,それぞれビルドを行なってください.
正常にインストールがされていれば,成功すると思います.
ビルドが成功すると,
「C:\Program Files\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.1\C\common\lib\Win32」
「C:\Program Files\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.1\C\common\lib\x64」
の中に
「cutil32.lib,cutil32.dll,cutil32D.lib,cutil32D.dll」
「cutil64.lib,cutil64.dll,cutil64D.lib,cutil64D.dll」
ができていると思います.この中で「~~.dll」をすべて
「C:\Program Files\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.1\C\common\bin」
にコピーしてください.
このディレクトリには環境変数がすでに設定されていますので,CUDAプログラム実行時に正しくこのディレクトリのdllファイルが読み込まれます.
これでcutil関連を使ったプログラムを実行する環境が整いました.


次に,開発環境の設定を行います.
まずは必要な設定ファイルをVisual Studioのディレクトリにコピーします.
インストールでコピーされていないものがありますので,それらを適切なディレクトリにコピーします.
  • コピー元のファイル「C:\Program Files\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.1\C\doc\syntax_highlighting\visual_studio_8\usertype.dat」
    • コピー先のディレクトリ「C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE」
  • コピー元のファイル「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\extras\visual_studio_integration\rules\NvCudaDriverApi.v4.1.rules」
  • コピー元のファイル「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\extras\visual_studio_integration\rules\NvCudaRuntimeApi.v4.1.rules」
    • コピー先のディレクトリ「C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\VCProjectDefaults」
以上で必要なファイルのコピーは完了です.


続いて,開発時にCUDA関連の「lib」ファイルや「include」ファイルを読み込むのですが,VisualStudio2010からは設定画面において事前にパスを通すということができません.
そこで,直接設定ファイルを編集して,各種ディレクトリへのパスを通すことにします.

まずは隠しディレクトリを表示するように設定を変更してください.
次に,「C:\Users\ユーザ名\AppData\Local\Microsoft\MSBuild\v4.0」に移動してください.
この中に
  • Microsoft.Cpp.Win32.user.props
  • Microsoft.Cpp.x64.user.props
があります.
それぞれ32bit環境のパス,64bit環境のパス設定を記述するためのファイルです.
標準では何も記述されていませんが,このファイルをそれぞれ編集していきます.
本来は「CUDA_LIB_PATH」などを利用して簡略化できるのですが,あえて絶対パスで記述します.
上が32bit,下が64bitの設定です.
画像では改行しているように見えますが,右端で折り返しているだけで,すべて1行で記述されています.
パスをさらに追加したい場合は「;(セミコロン)」で区切って追加をおこなってください.
また,途中で改行・スペース・タブなどを含まないでください.


それでは,Visual Studioを起動してください.
起動したら,「ツール」「オプション」で設定画面を開きます.
ここで「プロジェクトおよびソリューション」「VC++プロジェクトの設定」を選択します.
この中に「含める拡張子」という設定項目がありますが,ここに
  • 「.cu」「.cuh」
を追加してください.
各項目は,「;(セミコロン)」で区切ります.

次に,「テキストエディター」「ファイル拡張子」を選択します.
まず,「エディター」の項目を「Microsoft Visual C++」に変更します.
次に,「拡張子」のテキストボックスに「cu」と入力して「追加」ボタンを押します.
同様に,「cuh」も追加します.


以上で設定は完了です.
サンプルを実行するので,C++の空のプロジェクト「CUDA_test」を作成してください.
プロジェクトができたら,「main.cu」ファイルを追加します.
CUDAのコードを記述するためには,拡張子を「.cu」にする必要があります.
サンプルのソースコードを以下に示します.




次に,「CUDA_test」プロジェクトを右クリックして「プロパティ」を選択します.
次に,「構成プロパティ」「リンカー」「入力」を選択します.
すると「追加の依存ファイル」という項目があります.
この項目を選択すると,一番右に逆三角形のボタンが現れるのでクリックし,「編集」を選択します.
選択したら,下のような編集画面が現れるので,「cudart.lib」と「cutil32D.lib」を追加します.
1行に1項目記述します.
編集が終わったら「OK」ボタンを押して,変更を適用します.
以上でコンパイルの準備は完了です.
これで実行を行えば,以下のようなプロンプトが表示されるはずです.
1行目には利用しているグラフィックボードの名前(当方の環境ではGeForce GTS 250)が表示されます.
2行目にはタイマーの結果が表示されています.


長かったですが,これでCUDAの設定は完了です.

0 件のコメント:

コメントを投稿