So-net無料ブログ作成

CUDAの開発環境を作ってみた [インストールメモ]

NVIDIAのGPUを使って計算をするための環境 CUDA をインストールしました。

その時のことをメモ。

ちなみに環境は、

  • Windows XP Home sp3
  • Visual Studio 2008 Standard Edition
  • CUDA Toolkit 3.1
  • GeForce 9600 GT

必要なファイルの入手

CUDA のダウンロードページ [ http://www.nvidia.co.jp/object/cuda_get_jp.html ]へ行きます。
如何にも日本語のページっぽいURLですが、英語のページに飛ばされます。
まぁ、英語なんか分からなくても何とかなります。
英語のドキュメントは読むんじゃない、感じるんだ。

ダウンロードが出来るものが沢山ありますが、とりあえず

  • CUDA Toolkit
  • GPU Computing SDK code samples

これだけのものを入手。もちろん、自分の環境に合ったものを。
それ以外は、必要になってからで良いんじゃなかろうか。
あとは、マニュアル類をいくつか。

Started Guide に依ると、システム要件に「Visual Studio 2005 or 2008」と書いてある。
2010 では動作するかどうか分からない。
動かないのを承知で(動けばラッキーで)インストールしてみても良いし、対応するまで待っても良い(CUDA Toolkit 3.1 での話)
幸いなことに、うちは Visual Studio 2008 なので問題なし。


ドライバのインストール

いくつかのサイトや書籍には、『「Developer Drivers」をダウンロードして実行する』とある。

でも、CUDAの「Started Guide」には「CUDA対応のグラフィックボードを使っているなら、既にインストール済み」と書いてあるので、特にインストールする必要なし。

ただ、ドライバによっては、対応しているCUDAのバージョンが古い可能性もあるので、最新のドライバに更新しておくのが安全。

ちなみに、
「Developer Drivers」は英語版なので、ドライバのダウンロードページから最新の日本語版ドライバをインストールした方が良いんじゃないかと思う。
「Developer Drivers」には、開発向けの何かが追加されているのかとも思ったけど、「Developer Drivers」をインストールしようとしたら、「最新版がインストール済みだけどインストールして良い?」と聞いてきて「いいえ」を選んだら終了してしまったので、違いは無いと思う。
実際に使えているし。

ドライバのインストールは、入手したドライバの実行ファイルを実行し、画面の指示に従い、最後にOSの再起動で完了です。

CUDA Toolkit のインストール

インストールする前に、古いバージョンの Toolkit (とSDK)をアンインストールする。
今回は、初インストールなので古いバージョンは無いけど、今度更新する時には気を付けよう。

入手した「CUDA Toolkit」の実行ファイルを実行します。
画面に指示に従っていけばOKです。

ユーザ登録画面っぽいところで、プライバシーポリシーのページのURLが切れてて読めなかったり、個人利用なのに組織名の入力が必須だったりしましたが、無事終了。
ユーザ登録のところで、なにやら通信するので、インターネットへの接続は必須なのだろうか……。

Started Guide には、「環境変数を設定しろ」とあるけど、インストーラが勝手に設定してくれているので、気にしない。

CUDA SDK のインストール

入手した「CUDA SDK」の実行ファイルを実行します。
画面に指示に従っていけばOKです。

またしても、ユーザ登録画面っぽいものが…。さっき登録したばかりじゃないかとツッコミを入れる。

一緒に Visual Studio 2005 のランタイムらしきものをインストールしていた。

インストールの確認

次のプログラムを実行します。
{CUDA SDKのインストール先}\C\bin\win32\Release\bandwidthTest.exe

Test results:PASSED と表示されたらOKです。

サンプルを動かしてみる

{CUDA SDKのインストール先}\C\src
に、サンプルプログラムがあるので、試しにコンパイルしてみる。

vectorAdd が一番シンプルなんじゃなかな。
Visual Studio 2008 なら vectorAdd_vc90.sln のようにファイル名に「vc90」と付いているプロジェクトファイル(ソリューションファイル?)を使います。

ビルドして実行。動作を確認。
これで開発環境も問題なしです。

自分で作ってみる。その前に…

サンプルをビルドしたり、サンプルに手を加えてプログラムを作成したりする分には問題ないのですが、自分でプロジェクトを新規作成しようとすると、設定がいくつか足りません。

一番楽なのは、サンプルの「template」をコピーして使うことですが、設定等にファイルが相対パスで指定してあったりするので、違うフォルダにコピーしたらNGです。

そこで、まず、拡張子「cu」のファイルを扱えるようにします。

  1. {CUDA SDKのインストール先}\C\common\Cuda.rules を、{VisualStudioのインストール先}\VC\VCProjectDefaults にコピーする。
  2. コピーしたファイルをエディタで開き、次の箇所を編集します。

    ../../common/inc     ⇒ {CUDA SDKのインストール先}\C\common\inc
    ../../../shared/inc  ⇒ {CUDA SDKのインストール先}\shared\inc
    

    それぞれ2箇所ずつあります。

次に、拡張子「cu」でもインテリセンス等が使えるようにします。

  1. メニューから [ツール]-[オプション] を選択する。
  2. 左側のツリーから [テキスト エディタ]-[ファイル拡張子] を選択する。
  3. 右側の「拡張子」欄に「cu」と入力し、「エディタ」欄で「Microsoft Visual C++」を選択し、「追加」ボタンを押す。
  4. 「OK」ボタンで終わる。

次に、リンクするライブラリのある場所を追加します。

  1. メニューから [ツール]-[オプション] を選択する。
  2. 左側のツリーから [プロジェクトおよびソリューション]-[VC++ ディレクトリ] を選択する。
  3. 右側の「ディレクトリを表示するプロジェクト」欄で「ライブラリ ファイル」を選択する。
  4. 次のディレクトリを追加する。

    • $(CUDA_LIB_PATH)
    • {CUDA SDKのインストール先}\C\common\lib

  5. 必要かどうかわからないけど、念のため {CUDA SDKのインストール先}\shared\lib も加えておこう。

  6. 「OK」ボタンで終わる。

インクルードファイルのパスは、ビルド規則ファイル [Cuda.rules] で指定してあるし、多分設定する必要は無いんじゃないかなとも思うのですが、こちらも念のため設定しておきましょう。

  1. メニューから [ツール]-[オプション] を選択する。
  2. 左側のツリーから [プロジェクトおよびソリューション]-[VC++ ディレクトリ] を選択する。
  3. 右側の「ディレクトリを表示するプロジェクト」欄で「インクルード ファイル」を選択する。
  4. 次のディレクトリを追加する。

    • $(CUDA_INC_PATH)
    • {CUDA SDKのインストール先}\C\common\inc
    • {CUDA SDKのインストール先}\shared\inc

  5. 「OK」ボタンで終わる。

自分で作ってみる。

プロジェクトを作って試しにプログラムを書いてみる。

拡張子「cu」のファイルは、「新しい項目の追加」で一覧に出てこないので、C++ファイルを選択して拡張子込みでファイル名を指定するか、別で作成したファイルを「既存項目の追加」で指定する。

ビルドするには、いくつかのライブラリが必要になるので、プロジェクトの設定で指定しておく。

  1. メニューから [プロジェクト]-[プロパティ] を選択する。
  2. 左側のツリーから [構成プロパティ]-[リンカ]-[入力] を選択する。
  3. 右側の「追加の依存ファイル」に次のファイルを追加する。

    cudart.lib
    多分、必須
    cutil32.lib(デバッグ版では cutil32D.lib
    場合によっては必要なかったりする。

  4. 「OK」ボタンで終わる。
[飛行機] 今日の一冊
はじめてのCUDAプログラミング―驚異の開発環境[GPU+CUDA]を使いこなす! (I・O BOOKS)

はじめてのCUDAプログラミング

  • 作者: 青木 尊之
  • 出版社/メーカー: 工学社
  • 発売日: 2009/11
  • メディア: 単行本
プログラムを組めることが前提。
プログラムの説明はあまり無し。
GPUを効率的に動作させるには、どうコードを書いたら良いかが中心。
でも、それを知らないとGPUを使う意味が半減するので、それで良し。

タグ:Cuda
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。