MPI(Message Passing Interface)[1]は, 分散メモリ環境において, メッセージパッシング形式の並列アプリケーションを作成するためのデファクトスタンダードなライブラリである. MPIのAPI(Application Programming Interface)仕様は, MPI Forum[2]によって定められている. メッセージパッシング形式の並列アプリケーションを作成するためのライブラリとしては, 他にPVM(Parallel Virtual Machine)があるが, MPIは第三者的な機関によりAPIが規定されているため, 移植性に優れているという特徴を有している.
MPIはあくまで仕様を定めただけであるので, 実際の処理をどのように行うかによって, フリーのライブラリから商用のライブラリまで様々な実装が存在している. 代表的なフリーのライブラリとしては, MPICH[3]やLAM[4]がある. また, MPIにフォールトトレランスの機能を付加したライブラリも複数存在する.
本レポートでは, まず, MPICH, LAMについて説明する. 次に, フォールトトレランス機能を有するMPIライブラリについて述べる. その後, MPICH, LAM, FT-MPIについて, 1対1通信と集団通信の性能計測を行う.
アメリカのゴードン国立研究所が模範実装として開発し, 無償でソースコードを配布しているMPIライブラリである. 移植しやすさを重視した作りになっているので, 盛んに移植が行われ, 世界中のほとんどのベンダの並列計算機上で利用することができる.
MPICHでは, 各並列計算機に対する実装間でソースコードの多くを共有し, また, 新たな並列計算機上への移植・各並列計算機に特化したチューニングを容易にするためのアーキテクチャとして, ADI(Abstract Device Interface)という通信を抽象化したインターフェースを定義している. さらに, ADIはチャネルインターフェースと呼ばれるより原子的な関数から構成されることもある. 各並列計算機に対して, 専用のADIやチャネルインターフェースを用意することにより, 各並列計算機に最適な通信を行うことが可能となる.
現在, MPICHを新たに実装し直したMPICH2が開発中(執筆時点の最新バージョンは, 0.96p2であり, まだ, ベータリリースの段階)である. MPICHとMPICH2の主な違いは, 以下の点である.
ノートルダム大学の科学コンピュータ研究室が作成したフリーのMPIライブラリである. ライブラリだけでなく, いくつかのデバッキングとモニタリングツールも提供している.
LAMはMPICHと異なり, まず初めにデーモンプロセスを起動する必要がある. LAMとMPICHは, MPIプロセス間での通信チャネルの起こし方が異なっている. MPICHでは要求によりコネクションが形成されるのに対して, LAMでは初期状態において全てのネットワークがつながれる. そのためコネクションの立ち上がり時間において両者は若干の差がある.
従来まではLAMの6.5が利用されていたが, 2003年の7月に, LAM 7.0がリリースされた. LAM 7での大きな変更点は次の通りである.
MPIの規格自体にもフォールトトレランスを考慮した事項が存在するが, それだけでは不十分なことがあるため, 様々なフォールトトレランス機能を持ったMPIの実装が開発されている. フォールトトレランスのアプローチは次のように分類される[5].
ある時点でのプロセスの状態を保存しておき, 障害発生時には保存した箇所からプロセスを再開させる方法. チェックポイントの取得方法には, 自動的に取得を行うものとアプリケーション側でチェックポイントの取得を制御するものがある
やりとりされたメッセージの内容を保存し, 障害発生時にはログを参照してメッセージの再送信・再受信を行うことにより, 障害発生時点の状態を復旧する方法. チェックポイントと組み合わせて利用される
障害発生時にライブラリからアプリケーションへ通知が行われる形式. アプリケーションでは障害に対する復旧の処理を記述する
既存のフォールトトレランスを考慮したMPIの実装を分類すると, Table 1のようになる.
| アプローチ方法 | 実装 | |
| チェックポイント形式 | 自動的 | CoCheck |
| アプリケーション制御 | Starfish, CLIP | |
| メッセージログ形式 | MPICH-V, MPI/FT, MPI-FT, Ediga | |
| アプリケーション通知形式 | FT-MPI | |
今回はこの中で, FT-MPI[6]に注目する.
University of Tennessee, KnoxvilleのInnovative Computing Laboratoryによって開発されているフォールトトレランス機能を有したMPIの実装である. FT-MPIは標準のMPI規格にフォールトトレランス機能を追加することでフォールトトレランスを実現している. 具体的な機能として, 次の機能が提供されている.
FT-MPIの機能を利用し, アプリケーションにフォールトトレランスを実装するためには, 既存のMPIプログラムを変更する必要がある.
MPICH, LAM, FT-MPIの性能を比較する. 比較する項目として,
を比較する. 計測に利用した環境をTable 2に示す.
| ノード数 | 24 |
| CPU性能 | 600MHz × 24 |
| メモリ容量 | 128MB × 24 |
| OS | Debian GNU/Linux 3.0 |
| ネットワーク | Fast Ethernet(100Mbps) |
| MPICH | 1.2.4 |
| MPICH2 | 0.96p2 |
| LAM 6 | 6.5.6 |
| LAM 7 | 7.0.4 |
| FT-MPI | 1.0.1 |
1対1通信でのレイテンシをFig. 1に示す. なお, レイテンシの値としては, 4バイトのデータを100000回送信・受信するのに要した時間を計測し, 2で割ることにより, 1回あたりの送信に要する時間を計測した.
Fig. 1より, LAMはレイテンシが小さく, MPICHはレイテンシが大きいことがわかる.
1対1通信でのバンド幅をFig. 2に示す. バンド幅の計測方法としては, 一定サイズのメッセージを指定回数分, 送信・受信し, 要した時間を計測した. なお, バンド幅の計算には, Equ. (1)を用いた.
Fig. 2より, どの実装でもメッセージサイズが大きくなるにつれ, ネットワークのバンド幅を有効に利用できるようになることがわかる.
集団通信でのバンド幅をFig. 3に示す. バンド幅の計測方法としては, 一定サイズのメッセージを指定回数分, Gather通信で収集し, 要した時間を計測した. なお, バンド幅の計算には, Equ. (2)を用いた.
どの実装でも, プロセス数が増えるにつれて, バンド幅が低くなっていくことがわかる.
本レポートでは, MPICH, LAM, フォールトトレランス機能を有するMPIライブラリについての調査を行った. 次に, MPICH, LAM, FT-MPIについて, 1対1通信と集団通信の性能計測を行った. その結果, 1対1通信ではメッセージサイズが小さい場合は性能に違いが見られるが, メッセージサイズが大きくなるにつれて性能差がなくなることがわかった. また, 集団通信ではLAMが最も性能がよいことがわかった.
Copyright (C) 2004 Junji Sawada, All rights reserved. Copyright (C) 2004 Tomoyuki Hiroyasu, All rights reserved. Copyright (C) 2004 Mitsunori Miki, All rights reserved. No part of this document may be reproduced, copied, distributed, transferred, modified, or transmitted, in any form or by any means, without the prior written permission of the authors. In no event shall the authors be liable for any damages caused in any way out of the use of this document.