@n_IMRC
案
- initスクリプトを書いてRaspberryPiのOSをUSB HDDから起動した話
- framebufferをpngやjpeに変換するプログラムを書きmjpg streamer経由でストリーミング出来るようにした話
→n次魔方陣のプログラムを書いて並列化した話
並列計算
- 複数のCPUやスレッドで分散して処理
- 実行時間の短縮が目的
1台のコンピュータを複数台で処理することで実行時間を短縮
環境
- 数値計算ではMPI OpenMP pthreadなど高レベルライブラリ
- XcalableMPを開発中
スーパーコンピュータ
- 多少高性能なコンピュータの集まり
HA-PACSとCOMAを運用(T2K-Tsukubaが運用されていたのが去年)
quad-core AMD Opteron
- NVIDA M2090(Fermi)
- Intel Xeon Phi
学際共同利用
- 申請に通れば1年間無料でスパコンを使える
- 5TBのディスクスペース
- リモートで使うにはすごく高スペック
- 研究員、大学生、高専、センター長が認めた者
学際共同利用での成果
- n次魔方陣全解数え上げプログラムの並列化と性能解析
- 数え上げプログラムのメニーコア化
n次魔方陣全解数え上げプログラムの並列化と性能解析
整数問題 n次魔方陣全解数え上げ を超並列処理で行う
縦n横nマス
|:--|:--|:--|:--|:--| |1|7|13|19|25| |18|24|5|6|12| |10|1|17|23|4| |22|3|9|15|16| |14|20|21|2|8|
6次魔方陣の総数 1.8*1019
1クロック
- nの増大に伴い、階乗的に増加する探索空間を絞る
- n=6は困難なので、n=5に修正
計算環境
- 32ノード上で512スレッド
- 最大連続実行時間は24時間
アルゴリズムの改良
鏡像性(裏返しても結果は同じ) 途中解(n=5のとき、4つの数が決まれば最後の数も決まる)
から計算量を絞る
- 5次魔方陣の場合、入る最大数は25
- 部分解からの探索の計算量は事前に求められない→動的タスクスケジューリング
- master-worker型並列処理が有効
並列処理 ポイント
- 25マス中D個まで埋まった状態でworkerに分配
- worker数が大きいとmasterの分配処理が大きくなり小さいとmasterはidleになりやすい
これらを踏まえて、worker数とDの関係の最適値を計算
- masterはD番目のマスまで総当りし、1つの暇なworkerに渡す
- workerは次のパターン配布を待つ
D=3は処理時間が長く、4 5 6 7とがくんと下がった
D=3とD=6の比較
- D=3では実行時間にばらつきが多すぎて、配る問題の粒度が粗すぎる
- D=6 D=8だと実行時間が一定している
6次魔方陣への拡張
今回のアルゴリズムをそのまま使うと実行に150兆年かかってしまう
数え上げプログラムのメニーコア化
Intel Xeon Phi
- x86のISAと互換性がある
- Linux動く
- 60コア以上
x86と互換性あるから今までのアプリケーションをそのままオフロードできるね 1コアあたりの性能はXeon
アプリケーションは100スレッドオーダーでスケールすること(えっ)
- 1コアあたりの性能はXeonより低い
- 倍精度のベクトル演算ではない
まとめ
- 整数問題なのでベクトル演算は含まない
- XeonPhiは整数問題に向いていない
追記
Q. 倍精度ベクトルを使うようにパックすれば性能があがるのでは? A. そこまでできてない #kernelvm
— Ogata Yasuhiko (@yogata) October 18, 2014