*第1回 [#hfe74dc7] **概要 [#jbc6cec3] 内容は参考文献参照のこと -Cell B.E. とは -MPI と SIMD 演算 + SPE -N体問題課題説明 -次回は1/11(木) **課題 [#iefa0d86] -N体問題課題説明 --問題の概要は[[こんな:http://www.gsic.titech.ac.jp/supercon/supercon2001/honsen.html]]感じ --シリアルプログラムを与えるので、MPI化、SIMD+SPE化してください ***MPI化 [#pfee2257] -参考文献参照 -各プロセスにすべての点データを持たせて、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化 [#qadf88ff] -参考文献参照 -データを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 プログラム終了後、仕事情報を破棄する