特集 特別無償ライセンスで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 でいうプロセッシング・エレ メント)に振り分け,同時に演算処理を行います.ご
© Copyright 2024 ExpyDoc