2010年3月28日日曜日

OpenCLマスターへの道 - ATI Stream SDK 編 第三話

今回は、ハローワールドまでたどり着く予定。

その前に、現時点での装備品を確認しておく。

本 : 「OpenCL 入門 - マルチコア CPU ・ GPU のための並列プログラミング」
OS : Windows Vista Business 64bit SP2
CPU : AMD Phenom(tm) II X4 955 Processor 3.2GHz
メモリ : 8GB
グラフィックカード : ATI HD4890 1GB
グラフィックドライバ : ATI Catalyst Control Center バージョン 2009.1124.2131.38610
統合開発環境 : Visual C++ 2008 Express Edition
OpenCL 環境 : ATI Stream SDK v2.01 Vista & Windows 7  64bit (以下 Stream SDK と記述)

作業は、インストールした Stream SDK のドキュメント「ATI Stream SDK Getting Started Guide」にそって行うこととする。
ドキュメントを読むと、Windows 用の Stream SDK には、以下のものが含まれると書いてある。
  • OpenCL コンパイラーおよびランタイム
  • ATI CAL ヘッダーファイルおよびコンパイル用ライブラリ(CAL 用の DLL ライブラリは、現在 ATI ディスプレイドライバーの一部であり、Stream SDK には含まれない。らしい・・・)
  • 開発者用ドキュメント
  • サンプルアプリケーション
  • サンプルアプリケーションのドキュメント
  • プロファイラー(なんだろう?)
CAL 用の DLL ライブラリの辺りが気になる。ディスプレイドライバのバージョンで問題がでるかもしれず。

次に、ビルドのやり方のサンプルに取り掛かる。
インストールしたStram SDK のサンプルプログラムの、OpenCLSamples.sln ファイル(サンプルをインストールしたディレクトリの opencl の中にある)を Visula Studio で開く。

”ソリューション フォルダはこのバージョンのアプリケーションではサポートされていません。”だと!?
”ソリューション フォルダ { cl、cpp_cl、app、app(2)、SDKUtil }は使用できないものとして表示されます。” だって。ふーん

”ソリューションに関連付けられているプロパティのいくつかを読み取れませんでした。”
 ・・・ ぜんぶまとめて華麗にスルー!

Visual Studio の「ビルド」メニューから「ソリューションのビルド」を選択する。

うがっ、エラーが1個でた。どうやらファイルがコピーできないらしい。どいつだ?

samples\opencl\cl\app\BoxFilter\Debug\Win32\BuildLog.htm に出力されたエラーログを確認すると、BoxFilter_Input.bmp をコピーしている箇所のようだ。

samples\opencl\cl\app\BoxFilter の中には該当のファイルがない。しょうがないので、ファイル検索をしてみると、samples\opencl\bin\x86 の下に見つけた。
samples\opencl\cl\app\BoxFilter にコピーして、BoxFiler を右クリックして「追加」-「既存のファイル」でファイルを追加した。

再び「ビルド」メニューから「ソリューションのビルド」を選択。

今度は成功した。


では、早速実行してみる。

スタートアッププロジェクトが、BitonicSort になっていたので、そのままこれを実行してみる。

「デバッグ」メニューから「デバッグなしで開始」を選択して実行。

コマンドラインで実行されていかのような結果となった。


Unsorted Input
65 226 252 161 146 128 217 169 89 79 179 41 243 93 111 218 135 191 172 174 60 143 252 222 42 176 173 25 245 165 102 87 113 68 48 90 59 139 26 104 175 91 25 66 32 113 86 227 195 73 137 10 38 86 141 30 169 52 213 112 219 51 235 96

Executing kernel for 1 iterations
-------------------------------------------

Output
252 252 245 243 235 227 226 222 219 218 217 213 195 191 179 176 175 174 173 172 169 169 165 161 146 143 141 139 137 135 128 113 113 112 111 104 102 96 93 91 90 89 87 86 86 79 73 68 66 65 60 59 52 51 48 42 41 38 32 30 26 25 25 10



どうやらソートをするプログラムらしい。結果を見る限り大丈夫そうだ。

他も実行してみる。
HelloCL プロジェクトを右クリックして、「スタートアップ プロジェクトに設定」を選択する。

「デバッグ」メニューから「デバッグなしで開始」を選択して実行。


HelloCL!
Getting Platform Information
Creating a context AMD platform
Getting device info
Loading and compiling CL source
Running CL program
Done
Passed!


おお、動く動く!

というわけで、今回はここまで。