Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

AMD APP SDK v2.9リリース


AMDが久しぶりにAPP SDKをアップデートし、v.2.9に。
Accelerated Parallel Processing (APP) SDK

これには、オープンソースBoltOpenCLアクセラレートできるOpenCVも含まれている模様。

Boltは、VS2010/2012とLinux GCCコンパイル可能。
Buildには、CMakeになっているようだ。OpenCVもCMakeだからね!

AMDのAPU搭載しているノートPCがあるので、インストールしてみました。

C++ AMPは、VS2012出ないとダメ!
Bolt OpenCLのサンプルは、VS2010/2012でOK。
Bolt C++ AMPは、VS2012だけ!
Buildには、CMakeが必要なので、ダウンロード。
64ビット版がないので。32ビット版で。

で、
     cmake.exe -G "Visual Studio 10 Win64" <APPSDKSamplesInstallPath/samples/opencl/
としたら、
    Cannot enable 64-bit tools with Visual Studio 2010 Express
というエラーが出たので、32ビットモードで
     cmake.exe -G "Visual Studio 10" <APPSDKSamplesInstallPath>/samples/opencl/
としたら、なんか始まったけど、
    DX_LIBRARY_PATH-NOTFOUND
というエラーが出た。。。が、どうやら、DirectX関連のライブラリがおかしい。

とりあえず、samples/opencl/cl/CMakeLists.txt からSimpleDX9/10/11を使わないように変更。
(メモ帳で編集すると、Cmakeがエラーになるので、
Notepad++をインストールして編集しました。ここで結構悩みました)

これでVS2010用のプロジェクトが生成できたので、VS2010 Expressにてビルド!
待つこと、数分、色々なワーニングが出るが、ビルドが終了!

サンプルプログラム(HelloWorld.exe)を実行したら、MSVCP110.dllが無いと怒られる。
vs2012のVisual C++ 再配布可能パッケージ(64ビット版)をインストールしてOKに?
なぜ、VS2010でビルドしたのに、VS2012の再配布可能パッケージが必要なのかしら?

BufferBandwidthでメモリアクセス性能をチェック。
        CPU read    : 4.72 GB/s
        memcpy()    : 2.29 GB/s
        memset(,1,) : 6.22 GB/s
        memset(,0,) : 6.03 GB/s

        GPU kernel read of inputImage   : 9.002 GB/s
        GPU kernel write to outputImage : 7.401 GB/s
ImageBandwidthでメモリアクセス性能をチェック。
        CPU read    : 4.24 GB/s
        memcpy()    : 2.21 GB/s
        memset(,1,) : 4.69 GB/s
        memset(,0,) : 5.68 GB/s

        GPU kernel read of inputImage   : 8.56 GB/s
        GPU kernel write to outputImage : 7.76 GB/s

NBodyもGPUなら結構速いです。
ちなみに、AMD A4-3300M 1.9GHzです。

OpenCVのサンプルは、別途OpenCV 2.4.4がインストールされている必要があるようです。
BoltをCPUで動かすには、TBB 4.2が必要なようです。