東芝は,Cell向けのソフトウエアをネットワーク越しに実行することができる分散コンピューティング環境を展示した。Cellに搭載された信号処理プロセサ「SPE」のスレッド単位での分散,より粒度の高いコンポーネント単位での分散という二つの形態を実演した。いずれもOSはLinux向けを想定している。

 Cellはその構想当初からネットワーク越しの分散コンピューティング環境を想定しており,「Cell」という命名にもネットワーク上に分散したソフトウエアやハードウエアの各実行単位が「細胞(Cell)」のように協調して動作するという思いが込められている。Cellを用いた分散コンピューティングの試みとしては,米Stanford Universityによる分散コンピューティングを用いたタンパク質の解析プロジェクト「Folging@Home」にPS3が対応した事例があるが(SCEの発表資料),Folging@Homeは必ずしもCellのみを想定しているわけではない。

分散スレッド環境を展示

レイトレーシングの結果。白線で区切った領域を各SPEに割り当てている。画面の分割数は任意に変更可能。写真の場合は1フレームを7分割。
レイトレーシングの結果。白線で区切った領域を各SPEに割り当てている。画面の分割数は任意に変更可能。写真の場合は1フレームを7分割。 (画像のクリックで拡大)
CRS2をラックに収めてある。
CRS2をラックに収めてある。 (画像のクリックで拡大)

 東芝の展示では,まずSPEスレッド単位での分散実行についてレイトレーシングの実演を行った。背景に動く映像があり,その手前に透明かつ形状が変わる3次元の物体が回転している。物体の背後にある景色が屈折するといった要素が含まれ負荷の重い処理となる(Tech-On!関連記事)。実演では,3台のCell搭載サーバー「CRS2」を用い(Tech-On!関連記事),合計21個のSPEで分散処理させた。分散の粒度は,1フレームを任意の数に分割し,さらに複数フレームを並列処理する形とした。

システム構成。
システム構成。 (画像のクリックで拡大)
1フレームをいくつかに画面分割した上で,複数フレームを並列処理した。
1フレームをいくつかに画面分割した上で,複数フレームを並列処理した。 (画像のクリックで拡大)
SPUFSをネットワーク越しにエミュレートする。
SPUFSをネットワーク越しにエミュレートする。 (画像のクリックで拡大)

 Cellでは,SPEで処理するプログラムをスレッドの形で実行する。Cellに搭載されたPower系CPUコア「PPE」からSPEの「ローカル・ストア」と呼ぶメモリ領域に,SPEスレッドとして実装されたプログラムを送り込む。CellでLinuxを用いる場合,PPEから「SPUFS(SPU file system)」と呼ぶ領域にプログラムを書き込むことで,SPEにプログラムを転送できる。このSPUFSと呼ぶ仕組みは通常はCellのチップ内部に閉じているが,今回,東芝はこのSPUFSをネットワーク越しにエミュレートする実行環境を開発した。SPUFSのAPIを多少拡張してあり,チップ内部にあるSPEとほぼ同様の使い勝手で,ネットワーク上で離れた場所にあるCell内部のSPEにプログラムを送信し,実行させられる。

 実演で用いたレイトレーシングの場合,非常に並列化しやすいアプリケーションであるため,分散処理させるSPEの数を21個まで増やしていった場合でも,合計の処理性能はほぼリニアに向上したという。

21個のSPEへの分散状況。左から順に9個の場合,18個の場合,21個の場合。
21個のSPEへの分散状況。左から順に9個の場合,18個の場合,21個の場合。 (画像のクリックで拡大)

AV機能も分散対応

デモの概観。
デモの概観。 (画像のクリックで拡大)
AVフレームワークのシステム構成。
AVフレームワークのシステム構成。 (画像のクリックで拡大)

 もう一つの分散コンピューティングの実演であるコンポーネント単位の実行では,東芝が2005年7月に発表したCell向けのソフトウエア実行環境「AVフレームワーク」を発展させた(関連記事)。このAVフレームワークでは,XML形式でCell向けソフトウエア・コンポーネントの属性を記述し,このコンポーネント同士をつなぎ合わせることで,各種動画や音声のコーデック処理を容易に構成できる。また,「リアルタイム・スケジューラ」と呼ぶ東芝が独自開発した専用のスケジューラを利用しており,OSのスケジューラとは独立に各種コーデック処理などのリアルタイム性を維持できるようになっている。CellのSPE上ではOSを動作させないため,通常のOSとは異なるスケジューラが必要だからである。なお,コーデックとしては,MPEG-2,H.264,AC-3,AACなどの形式を用意している。

コンポーネントの組み合わせによりアプリケーションを構成。
コンポーネントの組み合わせによりアプリケーションを構成。 (画像のクリックで拡大)

 今回の実演では,PS3を2台および東芝のCRS2を1台用いて,トランスコーディングなどの分散処理を実行した。コンポーネントのXML記述中に,分散処理を指示するタグを追加することで,当該コンポーネントがネットワーク上の他のマシンで実行されるという仕組みである。分散処理を担うサーバー側には,あらかじめ専用のデーモン・プログラムを動作させておく。東芝によると,7台のCellに分散処理させた場合,トランスコーディング処理が7倍に高速化したという。今後は処理の流れさえ記述すれば,どのコンポーネントを分散実行するか自動的に決定する機能なども付加する予定という。

 なお,今回のAVフレームワークでは,Linux向けのメディア・ライブラリ「DirectFB」に対応した。X-Windowを用いている場合でもDirectFBの仕組みを利用して,今回のフレームワークによる処理結果の映像などをGUI上に表示できるようになった。将来は,米Khronos Groupのメディア処理向けAPI「OpenMAX」のIL(integration level)に対応する計画である。

パソコンと比較した場合のトランスコーディングの処理性能。
パソコンと比較した場合のトランスコーディングの処理性能。 (画像のクリックで拡大)

 (日経エレクトロニクスでは2005年7月4日号のGuest Paperにおいて,東芝によるCell向けAVフレームワークの寄稿論文「Cellの真価を引き出すソフトウエア実行環境を開発,複数コアに割り当てるスレッドをリアルタイムに管理」を掲載しております)