2010年3月30日火曜日

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

前回までのあらすじ、SQL Server 2008 の呪いにより、ATI Stream SDK のインストールが行えなかったが、偉大なる先人の知恵により Windows にパッチをあて、事なきを得た。
無事に ATI Stream SDK をインストールし、サンプルプログラムを動かしてみた。多少の問題はあったが、動作に問題はないようだ。

今回は、サンプルプログラムを動作させる続き。

samples\cal の方を動作させてみることとする。

Visual Studio 2008 Express Edition で samples\cal\samples.sln ファイルを開く。

 「Visual Studio 変換ウィザード」が起動する。なぜだ?

「次へ」ボタンを押す。
「完了」ボタンを押す。

”ソリューションに関連付けられているプロパティのいくつかを読み取れませんでした。”だって。

ま、無視する。

「閉じる」ボタンを押す。

変換レポートを確認すると、全て変換されているようだ。
変換レポートを閉じる。

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

========== ビルド: 48 正常終了、1 失敗、0 更新不要、0 スキップ ==========

また1つ失敗している。しかし、このメッセージは見にくいなぁ、ビルド48に正常終了1に見える・・・

int_instr_IL で失敗している模様。これまたメッセージが見づらい・・・左についてる”5>”とかの数字はなんだろうか?意味が分からない。

ログは、samples\cal\app\cal_d3d10_interop\Debug\BuildLog.htm らしいので確認する。

どうやら d3d10.h が読めないようだ。これって DirectX SDK にあるんじゃまいか?

しょうがないので、DirectX SDK をインストールする。バージョンは、February 2010

Visual Studio 2008 を再起動する。
再起動後、「ツール」メニューの「オプション」を選択
「プロジェクトおよびソリューション」-「VC++ ディレクトリ」を選択
「ディレクトリを表示するプロジェクト」で”インクルード ファイル」を選択
一覧に、”C:\Program Files (x86)\Microsoft DirectX SDK (February 2010)\Include”があることを確認
再び、samples\cal\samples.sln を開く
「ビルド」メニューから「ソリューションのビルド」を選択

今度はビルド成功

cal_d3d10_interop をスタートアッププロジェクトに変更して実行

なんだか、うにゃうにゃ動く
どうやら成功したようだ


というわけで、今回は終了

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!


おお、動く動く!

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

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

前回撃沈された ATI Stream SDK インストールに再チャレンジ!

インストーラーでのインストールが不調に終わったのだが、何気なしにインストーラーが解凍したインストール実行ファイル(C:\ATI\SUPPORT\streamsdk_2-0-1_win764\Setup.exe)を直接実行してみた。

言語サポートを「日本語」のまま「次へ」ボタンを押す。お、なんかいけるっぽい。


「インストール」ボタンを押す。


・・・やっぱりだめ。。。


しかたなくネットを彷徨ってみると、ここの情報によってこのパッチを当てればいいことが分かった。
早速パッチを当て、再び上記の「インストール」ボタンを押してみた。




「インストーラへようこそ」・・・・・・やったやりました!ありがとう!ありがとう!パッチ情報を載せてくれた人!

では、続きを。
折角なので「カスタム」を選択し、「次へ」ボタンを押す。




全てチェックしたまま、「次へ」ボタンを押す。



ライセンスをよく読んでから、同意できるなら「受諾する」ボタンを押す。



「Next」ボタンを押す。



インストール先を指定して、「Next」ボタンを押す。



ライセンスをよく読んでから、同意できるなら”I accept the terms in the license agreement”を選択してから、「Next」ボタンを押す。




「Install」ボタンを押す。


「Finish」ボタンを押す。


次に、サンプルのインストールが自動的に始まる。「Next」ボタンを押す。


サンプルのインストール先を指定して、「Next」ボタンを押す。


ライセンスをよく読んでから、同意できるなら”I accept the terms in the license agreement”を選択してから、「Next」ボタンを押す。


「Install」ボタンを押す。


「Finish」ボタンを押す。


次に、プロファイラーのインストールが自動的に始まる。プロファイラーってなんだろう?
とりあえず「Next」ボタンを押す。


ライセンスをよく読んでから、同意できるなら”I accept the terms in the license agreement”を選択してから、「Next」ボタンを押す。


インストール先を指定して、「Next」ボタンを押す。


「Next」ボタンを押す。


「Finish」ボタンを押す。


「終了」ボタンを押して、インストーラーを終了する。
インストール完了。長かった・・・


インストール後は、このようなディレクトリ構成になる。


以上でインストールは完了!

2010年3月20日土曜日

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

Amazon にやられた。うっかり「OpenCL入門」なる本を買ってしまった。
 というわけで、無謀にも並列プログラミングに足を突っ込むことにした。

考えれば、CPUはクアッドコアだし、GPUはそこそこだし。
やっぱり並列プログラミング・だ・よ・ね!

うちの環境は AMD Phenom II X4 で ATI Radeon なので、OpenCLと言えば当然 ATI Stream SDK になるわけだす。

と言うわけで ATI Stream SDK を AMD のページから落としてくる。
うちの OS は Vista 64bit なので ati-stream-sdk-v2.01-vista-win7-64.exe を落としてきた。

 早速インストールする。
 実行すると、解凍する必要があるらしいので、適当な所に Unzip ボタンを押して解凍する。



解凍完了。OKボタンを押す



こんな画面が表示されるので、そのまま次へボタンを押す。



こんな画面が出てきた。インストール続行不能。以上おわり。



むむう。SP2 には対応していないのか?
今回は、ここで断念。