初めてのAltera SDK for OpenCL

特集
特別無償ライセンスでOpenCLもすぐに試せる!
第7章
GPUで使われてきた並列処理記述ができるOpenCL言語を
FPGA開発に使う!
初めての Altera SDK for OpenCL
竹村 幸尚
Yukitaka Takemura
Altera SDK for OpenCL は 2013 年に発表されて以来改良が続けられ,ここ最近ついに実運用例が出てきました.
また Intel 社による Altera 社の M&A により,Intel Xeon や Intel Atom に FPGA がオンダイで直結されたマルチ
チップ・モジュールの発売が予告されていますが,このデバイスの主力開発環境は OpenCL になる見込みです.
ここでは Altera SDK for OpenCL について紹介します.
デバイス
(x,0)
(0,1) (1,1)
………
(x,1)
(0,y) (1,y)
コンピュート・
デバイス
図 1 OpenCL モデル(OpenCL1.0 specification より抜粋)
(0,0)
プロセッサ0
………
…
…
…
…
コンピュート・
ユニット
………
………
プロセッシング・
エレメント
ホスト
(0,0) (1,0)
………
…
…
…
…
…
…
…
…
…
…
…
…
………
1∼3次元の
データ・
セット
(x,y)
(1,0)
プロセッサ1
…
プロセッサm
図 2 GPU における OpenCL 演算処理
1.Altera SDK for OpenCL
の仕組み
● OpenCL とは
OpenCL は Khronos Group(http:www.khronos.
org/)に よ っ て 管 理・ 開 発 さ れ て い る, 並 列 コ ン
ピューティングのためのオープンな仕様です.GPU
が古典的な固定パイプライン・アーキテクチャからマ
ルチプロセッサによる処理に移行するに伴い,そのコ
ンピューティング・パワーをグラフィックスだけでな
く汎用演算に使うというアイデアが生まれました.
GPGPU とも呼ばれるこの手法は,GPU の進化に
伴 っ て 急 速 に 普 及 し,NVIDIA 社 は 専 用 言 語 の
CUDA を発表するに至ります.CUDA は同社独自の
技術ですが,これに対してオープンな規格として策定
されたのが OpenCL です.つまり元々 GPU アーキテ
クチャが強く意識された規格ですが,Altera 社(現
Intel 社プログラマブル・ソリューション事業本部)は
これに目をつけ,FPGA の開発環境として採用するこ
とを決断しました.
筆 者 は 当 時 GPU ベ ン ダ に 在 籍 し て い ま し た が,
Khronos Group のミーティングに参加した際,GPU
82
第 7 章 初めての Altera SDK for OpenCL
ベンダに混じって FPGA ベンダである Altera 社がい
ることに驚き,また感心したものです.
● OpenCL の実行モデル
図 1 に OpenCL の実行モデルを示します.システム
はホスト(CPU 側)とデバイス(GPU/FPGA 側)に分
かれ,デバイス内部にはコンピュート・ユニットと呼
ばれるプロセッサ群があるイメージになります.この
コンピュート・ユニット内のプロセッシング・エレメ
ントと呼ばれるプロセッサで実行されるのが OpenCL
カーネルと呼ばれるプログラムで,C ライクな言語で
記述されます.
● GPU における OpenCL
図 1 から想像できるように,OpenCL は,ある大き
なデータ・セットを用意して各データに対し同じ処理
を適用,その後に結果を出力する,といった処理に向
いています.これも元々 GPU が,複数のピクセル・
データに対し同じ演算処理を行って最終的な色情報を
決めるという機能を持っていたのを,汎用計算向けに
拡張したところから来ています.図 2 のように,いわ
ゆるデータ並列性を利用し,各データを大量のプロ
セッサ・コア(OpenCL でいうプロセッシング・エレ
メント)に振り分け,同時に演算処理を行います.ご