Cellワークショップ@東大秋葉原拠点
- 2008/01/22に行われた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の方がやってる
就職者募集中、奨学金受付やってるよ
[研究資料]
最終更新時間:2008年01月23日 15時53分45秒