Raspberry PiでOpenCLを触ってみた

FPGAでOpenCLを触ってみたいと考えていて,でもFPGAは特殊なので,前段階としてRaspberry PiでOpenCLを触ってみることにした.
今回は私が所持しているRaspberryPi2Bで話を進めるが,GPUはすべてのシリーズに搭載されているため,RPi3などでも動作させることができる.

 

概要

Raspberry PiのCPUやGPUの機能は,SoCの形で1チップに収められている.
GPUはVideoCore IVというアーキテクチャが使用され,これに関する資料はBCM2835のページGPU Documentationから閲覧することができる.
VideoCore IVをOpenCLから扱うためのプロジェクトとしてVC4CLがあるため,今回はこれを使う.
 

VC4CL

OpenCL1.2を使ってVideoCore IVを触るためのプロジェクトらしい.環境設定の方法に関してはHow to getを参考に行う.
基本的にはHow to getのコマンドをコピペすれば良いが,dpkg -iを行った際にパッケージが足りないと言われる事がある.
私の環境ではvc4c.debのときにはclang-3.9,llvm-3.9,llvm-3.9-devの3つ,vc4cl.debではopencl-c-headersとocl-icd-opencl-devの2つが足りないと言われた.
足りないのでapt-get installで入れようとしたら”apt –fix-broken install”を使えと言われたので,適宜これを実行.
これでインストールは終了.
 

Hands On OpenCL

OpenCLのトレーニングコースはKhronos Technologiesのページで紹介されており,様々なものがある.
Hands On OpenCLはその中のひとつで,イギリスのBristol大学の教員が2日間の講義コースのために作成した資料となっている.
OpenCLについて理解しやすく,スライド演習・解法が掲載されているため,今回はこれを使ってみる.

としてリポジトリをクローンする.
Exercise01にDeviceInfoという,環境を確認するプログラムがあるため,これを実行してみる.

どうやら環境設定はうまくいっているように見える.
次にExercises02ではベクトルの加算のプログラムがあるため,makeして実行してみる.

これも動作している.
で,どれくらい高速化できるのかについて,Solutionsの方のExercise06を実行した.

1.77倍程度の高速化を行えていることが分かる.
 

その後

今はスライドを見つつ演習を進めている.
書籍や他のトレーニングも参考になる.
ある程度理解したらFPGAの方のOpenCLをやってみる.