Cellプログラミングのレシピ
出典: PS3 Linux Information Site / Cell/B.E.のパワーを体験しよう
随時更新
目次 |
[編集]
注意事項
サンプルプログラムはlibspe2.0.0用に書かれています。 libspe2.0.1だと
sarah.h:12: error: 'SPE_EVENTS_ON` was not declared in this scope
と言われてコンパイルできません。lispe2.0.1で試すには sarah.h の12行目の SPE_EVENTS_ON を SPE_EVENTS_ALL に書き換えてください。次回アップデートする時に対応する予定です。
[編集]
ハードウェア&Linux編
[編集]
PPE編
- 整列したメモリを静的に確保する __attribute__((aligned(n))
- 整列したメモリを動的に確保する posix_memalign
- 整列したメモリを動的に確保する alloca
- google-perftoolsを使ってCPUプロファイリングをとる
- OProfileを使ってCPUプロファイリングをとる
[編集]
SPE編
- 基本的なDMA転送を実行する
- DMAコマンドのfence修飾とbarrierコマンドを知る
- DMAコマンドのsyncとeieioを理解する
- DMAコマンドを使って同期処理を行う
- DMAリストを使ってギャザーとスキャターを行なう
- DMAリストを使ってミスアライメントしたデータを拾い集める
- アトミックDMA更新コマンド(LL/SC)を使ってミューテックスを作る
- アトミックDMAコマンド(LL/SC)を使った同期処理を行う
- DMA転送のパフォーマンスを測る 1 レイテンシーとスループット
- DMA転送のパフォーマンスを測る 2 アライメントの問題
- DMA転送のパフォーマンスを測る 3 PTE入れ替えの問題
- DMA転送に使う領域にはvolatileをつけよう
[編集]
予定
- ダブルバッファーを使ったDMA転送時間の隠蔽
- Producer-Consumerパターンの実装 1 単純実装
- Producer-Consumerパターンの実装 2 fifoキュー
- Producer-Consumerパターンの実装 3 ロックフリー化
- 位置独立なコード(PIC)を使ったオーバーレイの実装 1 PIC
- 位置独立なコード(PIC)を使ったオーバーレイの実装 2 実装
メインページに戻る
