本研究の目的は,アプリケーションプログラマの負担を最小限に抑えた耐故障性実現のために,マルチSPMDプログラミング開発実行環境において耐故障性をサポートすることである.この開発実行環境では,ワークフローにおけるタスクを分散並列/共有メモリモデルとすることで,ワークフローモデルと分散並列/共有メモリモデルを適切に組み合わせて利用し,大規模システムにおいても高いスケーラビリティを実現した.さらに,障害が起こったタスクをハードビートにより検出して自動的に再実行することで,障害発生下でもアプリケーションを完遂可能な仕組みを実装した. 平成28年度においては,これまでに実装した耐故障性を考慮したマルチSPMDプログラミング開発実行環境を,大規模システムである京コンピュータに向けて拡張し,性能評価を行った.予備実験の結果,タスクへのデータ入出力時に故障検知のためのハートビートが適切に送られないことがあることがわかり,対策を検討した. 本実装におけるタスクへのデータ入出力はMPI-IOにより行われている.京において,ワーカからMPI-IO時と計算時にそれぞれ一定間隔でハートビートをマスタへ送信する単純なマスタワーカ型プログラムを実行し,MPI-IO性能を評価したところ,MPI-IOとオーバーラップするハートビートはしばしば間隔が不規則になることがわかった.また,京におけるMPI-IOの実行時間を調査したところ,同一サイズのデータ,プロセス数を用いた複数の試行において,実行時間にばらつきが出ることがわかった.これらの理由により,ハートビートの受信間隔が長くなることが,マスタが動作中のワーカーを故障と誤判定する原因であることから,タスクへのデータ入出の前のハートビートに「出力中」の状態を示すフラグを追加し,この誤判定を防ぐ実装を行った.
|