目的
本文書および以下に示すプログラムは、 「核融合炉モニタリングに向けたプラズマ安定性解析プログラムの 計算アクセレレーターへの実装」の別紙、 技術証明項目の「非均質マルチプロセッサでのプログラム開発および チューニングに関する知見・技術力を有することを証明すること」に充当させる ことを目的として作成したものであります。
QS22と同質な非均質なマルチプロセッサ Cell を持つPS3 上でのプログラム開発 およびチューニングを行うことにより示すことができると考えております。

目標
原子力機構発注の SP2201C00457 「非均質マルチコアクラスタを用いた大規模実験データの 高速処理ライブラリの開発」 の一部の下記の項目について、作成を試みたものです。
3.1.1 の画像積算ノイズフィルタ

作業環境
SONY PS3 + Fedora 10 + Cell SDK 3.1
単独PPE+6個SPEでの動作
および
PPEのみでの動作
実施作業
  1. PPEおよびSPE用ソースファイル作成
    1. 100個のデータファイルの同一部分(1個のSPE当り画像の2列(2048x2)分)を SPEの個数分 PPE のメモリ上に読み込む
    2. SPEで担当分の順次読み込んで浮動小数点数値に変換して加算
    3. 平均値求めた後PPEの所定の位置に転送 上記を2048x2048全領域分行う
  2. テスト用データファイル作成
    ファイル名称は8桁の数値のみ
    適当なrgb24bit画像から2048x2048 12bitグレースケール画像に変換
    元の画像にランダムなノイズを付加して約200個作成。
    ファイルのバイト並びはBig Endian です
    • 00000000 00000128 00000256 .... 00012800
    • 00000001 00000129 00000257 .... 00012801

  3. テスト用データからデータ確認のために 2048x2048 8bit pgm への 変換プログラム作成
実行プログラムの作成
Makefile ソースファイル(filter0.c filter1.c)があるディレクトリで 下記のコマンドを実行
% make
生成したプログラムの実行方法
上記で作成したプログラムを下記のコマンド名で実行します。
なお、テストデータはディレクトリ ./data/ 以下にあるものとします。
ノイズののったテスト用データは提出済のDVDRのディレクトリーdata/以下に あります。
プログラムのオプションは不要です
データファイル
data/00000000 data/00000128 〜 00012672
data/00000001 data/00000129 〜 00012673
を読みこんで100個の画像の各ピクセルの加算平均する処理を実行します
PPEおよびSPE(6個)を使用するプログラムの起動します
% ./filter1
PPEのみによるプログラムの起動します
実行条件および結果は filter1 と同様です。
% ./filter0
実行結果
プログラムの実行終了前に下記のような計算処理(ファイル入出力を含まない)の
経過時間をgettimeofdayにより計測したメッセージを表示します
Total sec for calculation: 6.445
またノイズが低減されたデータがカレントディレクトリーにファイル名 00000000.out 00000001.out で作成されます。
作成したデータの確認
下記のコマンドを実行して画像ファイルを生成します。
% ./data2pgm 00000000.out > 00000000.pgm
% ./data2pgm 00000001.out > 00000001.pgm
生成した画像ファイル 00000000.pgm 00000001.pgm を 画像表示プログラム(firefox 等の Web ブラウザ等)で画面上に 表示させて確認します。
ファイル
Makefile make用ファイル
filter1.c filter0.c PPEプログラムソース
PPE+SPE用およびPPE単独用
filter1_spe.c SPEプログラムソース
data/00000000〜00012801 テスト用データファイル
(ただし画像は原子力機構とは無関係)
00000000.out
00000001.out
data/00000000〜00012672
および
data/00000001〜00012673
に対する 結果ファイル(short)

結果
計算時間(gettimeofdayによる経過時間計測)
実行プログラム
実行環境
計算にかかった時間
(ファイル入出力を含まず)
filter0
SONY PS3(PPEのみ)
Fedora 10 PPC
約55秒
filter1
SONY PS3 PPE+SPE
Fedora 10 PPC
約7秒 (PPEのみでの処理と比較して約8倍高速)
filter0
DELL vostro 1500
Interl Core2 DUO
T7300 2.00GHz
Fedora 10
約4秒
約14秒(入力データのバイトスワップ処理を含む)
Intel Core2 + Fedora 10 上での実行結果
Core2での実行結果は filter0x86.c から 下記のコマンドにより
make -f Makefile.x86
filter0x86 filter0x86_swab

を生成し、PS3と同様に ./data/ 以下にデータファイルがある ディレクトリーで実行させて得られたものです。
ソースファイル等