第1回 †
概要 †
内容は参考文献参照のこと
- Cell B.E. とは
- MPI と SIMD 演算 + SPE
- N体問題課題説明
- 次回は1/11(木)
課題 †
- N体問題課題説明
- 問題の概要はこんな感じ
- シリアルプログラムを与えるので、MPI化、SIMD+SPE化してください
MPI化 †
- 参考文献参照
- 各プロセスにすべての点データを持たせて、forループを適当に分割してやる方針
- もっと最適化できるけど、ソレは最終回のお楽しみ?
- 大まかには以下の流れになる
- MPI_Init: 初期化
- MPI_Comm_rank : ランクの取得
- MPI_Comm_size : 参加しているプロセス数の取得
- 加速度計算
- MPI 通信関数によるデータ同期
- MPI_Finalize : 終了処理
- 通信関数のヒントとして
- MPI_Send, MPI_Recv, MPI_Bcast, MPI_Gather, MPI_Gatherv, MPI_Allgater, MPI_Allgatherv
- あたりを使ってみたらいいんじゃない?
SIMD+SPE化 †
- 参考文献参照
- データを6つのSPEに配分してSIMD(Single Instruction Multiple Data)演算させる
- PPEのSIMDをやらないように注意
- まず、SPE1個で動かすことを考える→6個に拡張
- 大まかには以下の流れになる
- spe_context_create : SPE に行わせる仕事の情報を作成
- spe_image_open : SPE に行わせるプログラムファイルを開く
- spe_program_load : SPE に行わせるプログラムの読み込み
- spe_context_run : SPE プログラム実行開始
- SPE がデータをメインメモリから読み込む
- SPE がプログラムを実行する
- spe_context_destroy : SPE プログラム終了後、仕事情報を破棄する