by shigemk2

当面は技術的なことしか書かない

筑波大学のスーパーコンピュータを利用していろいろした話 #kernelvm

@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マス

魔方陣 - Wikipedia

|:--|:--|:--|:--|:--| |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型並列処理が有効

http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0

並列処理 ポイント

  • 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は整数問題に向いていない

追記