お散歩がてら横浜近くの本屋さん:有隣堂@関内をぶらついてきました。
# ココは文具の品ぞろえもよろしく、お気に入りです。
なんとはなしに買ってきた「OpenCL入門」←衝動買いっす。
いやね、お友達から「CUDAやんね?」ってお誘いを受け、グラボ(GeForce9800GTS)まで借りてたですよ。
ところがそのグラボ、こんがり焼けちゃいまして。
かわりに買ったのがRADEON HD5670積んだやつ。能力的にはとんとんかな体感では。
結局CUDAに触ることなくNVIDIAからATIに転んだわけで、
CUDAのお誘いに乗ることができず少なからず負い目を感じておったわけっす。
その罪滅ぼし、てーことでもないけどOpenCLならCUDA/ATI-streamを包含すっからちぃとは言い訳もたつんでないかと。
それにGPGPU絡みはCUDAが先行してたんでATIユーザには情報がまだ少ないポ。
僕が触ればちっとはお役に立てんでないかと。
まずは OpenCL 開発前準備 (ATIのグラボ持ってる人向け)
1. ATI Stream のSDK入手とinstall
AMDのサイト: ATI Stream Software Development Kit (SDK) v2.1 から SDKを拾ってくる。
各種環境に合わせたSDKがあるんでテケトーに選んでくだち。
僕は Vista/Win7版の32bit/64bitの両方落としといたです。
開発環境はVS2008となってますがVS2010でも問題なさげ。
ATI Streamで遊べるGPUリストもこのページに載ってるんでざっくし確認するがよいー(RADEON HD4xxx/5xxxなら大抵OKみたいです)。
インストールはインストーラが上がってくれるんで[次へ]ボタンを突っついただけです。
2. コンパイル・オプションを調べる
SDKに同梱されてたサンプル・ソリューションを開き、いくつかbuild/実行して動くのを確認。
しかるのちやおらプロジェクト・プロパティこじあけてコンパイル・オプションを眺める。
いやさ、いちいちVS立ち上げるよかテキストエディタとコマンドライン・コンパイラでちまちま
いぢりたいこともあるんでね。
...どうやらSDKインストールした時点で環境変数 ATISTREAMSDKROOT が定義されたみたい。
ここらへんの情報を基に build.bat をこしらえた:
set INCDIR="%ATISTREAMSDKROOT%include"
set LIBDIR="%ATISTREAMSDKROOT%lib\x86"
cl -EHsc -I%INCDIR% %1 %2 %3 %4 %5 OpenCL.lib -link -libpath:%LIBDIR%
こんなのをテキトーに掘ったディレクトリ d:\work\OpenCL に置く。
3. おためし
買ってきた「OpenCL入門」のサポートページからサンプルをひろって解凍。いっちゃん最初のサンプル main.cpp をさっきのディレクトリにコピっていきなりbuildを試みる。
d:\Work\OpenCL>build main.cpp
d:\Work\OpenCL>set INCDIR="C:\Program Files (x86)\ATI Stream\include"
d:\Work\OpenCL>set LIBDIR="C:\Program Files (x86)\ATI Stream\lib\x86"
d:\Work\OpenCL>cl -EHsc -I"C:\Program Files (x86)\ATI Stream\include" main.cpp
OpenCL.lib -link -libpath:"C:\Program Files (x86)\ATI Stream\lib\x86"
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
main.cpp
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
/out:main.exe
"-libpath:C:\Program Files (x86)\ATI Stream\lib\x86"
main.obj
OpenCL.lib
なんかできたよ。実行してみっか:
d:\Work\OpenCL>main
Number of platform(s) : 1
Platform profile : FULL_PROFILE
Platform version : OpenCL 1.0 ATI-Stream-v2.1 (145)
Platform name : ATI Stream
Platform vendor : Advanced Micro Devices, Inc.
Platform extensions: cl_khr_icd
...さっくりイケちゃったみたい。出だし好調っすねー。