Cell Broadband Engineを利用したホログラム計算(後編)

柘植 宗範,伊藤 智義

tag: 組み込み

技術解説 2008年1月31日

マルチコア・プロセッサ向けプログラムの作成手法についての解説の後編である.今回は「Cell Broadband Engine」を利用したプログラミングについて説明する.計算機合成ホログラムの演算を例に,並列処理のための記述を紹介する.  (編集部)

1.CBEを用いたプログラミング

 CBEの性能をフルに利用したプログラムの開発には,マルチスレッド・プログラミングが欠かせません.スレッドとは,あるプログラムのプロセスの中で行われる処理の実行単位の一つです.通常,プロセスは幾つかのスレッドから構成されています.普段,これらのスレッドはあまり意識することなく逐次実行されています.簡単に言うと,それら複数のスレッドを並列化して実行させるようなプログラミングのことをマルチスレッド・プログラミングといいます.シングル・コアの場合は,マルチスレッドでプログラムを作るメリットはあまり多くありません.一方マルチコアの場合,各コアにスレッドを割り振ることで,文字通りスレッドを同時並行処理でき,プログラムの高速化が図れます.

● メモリ・モデルの制約を意識してプログラミング

 CBEにおいては,PPEが実質の親機となり,子機である複数のSPEにスレッドを割り振って同時処理させる方式が一般に知られています.各SPEは全く独立に動作するため,処理するスレッド間に依存性がある場合(例えば,あるスレッド同士がお互いにデータのやり取りを行ったり,逐次処理が要求される場合)は,プログラマが明示的にプログラミングを行う必要があります(図1)

zu01_01.gif
図1 CBEにおけるプログラム動作の一例
CBEでは,PPEが複数のSPEをスレッドとして起動し,制御する形のプログラミング・モデルがよく知られている.PPE,SPEをそれぞれ単独で動かすこともできるが,複雑なアプリケーションを構築する場合は,専用のAPIを使いそれぞれが連動した形をとらせることで,効率の良い動作を期待できる.

 CBEのプログラミングにおける最大の制約事項は,そのメモリ・モデルと言えるでしょう.前述のとおり,実際に処理を行うSPEが参照できるメモリは,自身の内部メモリであるローカル・ストアの256Kバイトしかありません.その中に自身の実行スレッド(SPEプログラム)のコードや処理に必要なデータ類をメイン・メモリからDMA転送しておかなければなりません.

 逆に言うと,処理するデータが256Kバイトを超えてしまう場合は,処理するデータを実行するプログラムの途中でうまく入れ替えるなどの操作をプログラマ自身が考える必要があります.

● 作成するプログラムは2種類

 CBEのプログラムは,PPE用とSPE用の二つを作る必要があります.それらを関連づけるためにPPEのプログラム上で,専用のAPIやライブラリを用いてSPEをスレッドとして起動します.そして,それらをPPE用,SPE用のGCCコンパイラなどを利用してコンパイルします.ここで注意しなければならないのは,コンパイル時に関連づけしなければならない各種ライブラリやヘッダ・ファイル,コンパイル・オプションなどの記述です.専用のGCCのインストール場所や各種ライブラリのインストール場所はSDKのバージョンによって異なるので,注意が必要です.さらに,SIMDなどのライブラリやヘッダ・ファイルは,通常コンパイル時に探索されないので,オプションとして明示しなければなりません.これらについてもフィックスターズのWebサイトなどに詳しい説明が載っているので,参考にすると良いでしょう.

 実際にCBE用のプログラムをコンパイルしている画面を図2に示します.GCCの場所やヘッダ・ファイル,ライブラリのコンパイル・オプションなどが記載されているのを確認できると思います.

zu02_01.gif
図2 CBE用のプログラムをコンパイルしている画面
MAKEツールは,コンパイラやヘッダ,ライブラリのパス,コンパイル・オプションなどをあらかじめMakefileというテキスト・ファイルに記載しておき,コンパイル時にmakeコマンドを利用してコンパイルするもの.一般には,ヘッダを共有する複数の実行ファイルのコンパイルの際に利用される.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日