トップ 新規 編集 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Cellワークショップ@東大秋葉原拠点

(テキストエディタからコピペしているので、ソースを見たほうが読みやすいと思います。)

講演資料pptいただきました TokyoUnivCell_20080122.ppt(154)

講演者:Fixstars安田さん

実はweb更新などを色々やっている。Fixstars最初のCell/B.E.ソフトは「デジタルかがみ」。

PPEPowerPC Architecture Version 2.02準拠

オフロード。重いところを任せる。

DMAリスト転送。

elfspeを使えばSPEを簡単に叩ける。printfとかも使える。PPEを呼ぶっぽい。

メールボックス・シグナル通知レジスタによるコア間同期サポート。SPE間メッセージング・DMA転送もOK。

PowerPCではリザベーション付きロックライン取得でアトミック処理。PPU/SPUどちらでもアトミックキャッシュが使える。SPUではDMA転送についているので128byteのアトミック更新が可能。

オーバレイで書き換え実行。

Cell Toolkit Library(CTK)http://cell.fixstars.com/ctk


開発環境-gcc 4.1.1(ppu-gcc, spu-gcc)-IBM Cell SDKのスピンアウト?商用化。

XL C/C++ for Multicore Acceleration for Linux V9.0
自動SIMD化、コード分割オーバレイ化
Advanced EditionにOpenMPサポートが入り、シングルソース開発可能に。

シングルソース開発環境-Cell SuperScalar

OpenMP的なpragmraを使う、ビジュアライザが良くできているらしい

-RapidMind

C++拡張

研究プロジェクト-MPI Microtask for Cell/B.E.

タスク間のデータフローを解析し、静的スケジューリング

-Sequoia

メモリ階層を意識した並列プログラミングを書く言語、コンパイラ+ランタイム

gcc for Cell/B.E.はどうなのかppu-gcc,spu-gcc,libspeでほとんど開発OVERLAYキーワードによるSPEオーバレイ、__eaでSPEからメインメモリアクセス今でも複雑なコードなどを投げるとときどきSEGVする

ゲーム系の開発環境は全然別らしい。

ギャングスケジューリングの支援があるコンテキストスイッチ対応もあり、ただし性能的な問題で嫌う人たちもいるリモート実行支援が足りなくて、昔のメインフレームみたいに空き待ちがががSPEの中まで辿れる(?)デバッガもあるSPEが無茶な命令をするとエラーコードが見える

---

人手でSIMDプログラミング

SPUコードのSIMD化・最適化が一番強力数倍〜数十倍

ベクタ型やIntrinsics(組み込み関数)でプログラミングCell/B.E.のためのC/C++言語拡張(Language Extensions for Cell/B.E.)に定義されているSPUのレジスタは全て128bit、命令もほとんどSIMD命令SPUではスカラデータで書かれたコードも内部的にはほぼSIMD命令と同じ命令で処理される


プログラムの最適化

複数SPEでSIMD化すると、今度はPPEがボトルネックになるので気をつけることSPU-RF-LS-MianMem

  1, 7, 100over

SPEはレジスタが多いので手動アンロールにかなり効果があるArrayOfStructure,StructureOfArray,shuffles命令の活用Even/Odd同時発行の利用分岐の削減・分岐ヒントの活用は影響大、結果のマスク取得なども良

単純な演算ループの最適化例SPE化:PPEから1.5倍SIMD化(4並列):更に6倍ループアンローリング(4ループ):更に2.9倍デュアルイシュー率向上:1.2倍全体で37倍(単一SPE)DMA転送とかで更にあがるはず

コンパイラオプション-O0で全部アセンブラというアレも

支援ツール-Language Extension(__mftb(), spu_read_decrementor()などのIntrinsicsによるカウンタレジスタ読み出し)[必須]-SPU timing tool[必須]-SPU simulator[便利]-Pfmon, Oprofilefixstars-SPU Profiler

SPUのカウンタレジスタで割り込み記録、GooglePerftoolsにつなげてコールグラフも

-Expression Template(ET)によるUnrolling支援-その場しのぎのマクロ


Modeling Derivatives in C++緑本

リアルタイム音響インパルス応答測定システム

Facial Animation Creator:FTR7人間の顔の動きの特徴点を取得し、三次元モデルに反映するシステム:特徴点500点くらい


200GFlops?4(32-bit SIMD並列) * 2(FMA)Flop * 8SPE * 3.2GHz = 204.8 GFlops per socketFMA:積和行列積で理論近く出るらしいFFTで170くらい出るらしい

こいつはできねぇやメモリ容量がでかすぎて無理IOインテンシブなHPC問題元コードが最適化とは程遠い場合、gotoとか勘弁して、アルゴリズムが滅茶苦茶でわからんPS3並べてーなんてのはまだあまりやっていないWindows/Linux+PS3の方がやってる

就職者募集中、奨学金受付やってるよ

[研究資料]

TokyoUnivCell_20080122.ppt[削除]

最終更新時間:2008年01月23日 15時53分45秒