MPIによる仮想並列処理

MPIによる仮想並列処理
情報論理工学研究室
04-1-47-278 阪木 康寿
発表の構成
•
•
研究内容
背景
•
•
•
•
•
•
並列処理
仮想並列計算機
MPI(Message Passing Interface)
並列行列積計算
測定結果・考察
結論
研究内容
• 複数のプロセッサを用いる並列処理により、
処理速度の高速化について実験を行う
• 並列処理を実行するために仮想並列計算機
を構築する
• n行n列である正方行列Aの2乗を求める
行列積計算を並列化して処理時間を測定
並列処理
• プロセッサの処理速度は物理的な限界がある
• 複数のプロセッサを用いて単一のプロセッサを用い
るよりも高速に処理を行う
しかし並列計算機は非常に高価である
仮想並列計算機の構築
仮想並列計算機
• 複数の計算機をネットワークで接続し、各計
算機をノードとして並列処理を行う。
• 仮想並列計算機の実装にはMPIを用いる。
仮想並列計算機の構成
MPI(Message Passing Interface)
• MPI Forumによる並列コンピューティングの
規格でありプログラミング言語ではない。
規格に基づいて実装されたMPIライブラリを
用いてプログラムの並列化を行う。
• 本研究ではMPI実装ライブラリの一つである
MPICH2を用いて並列化を行った。
並列行列積計算
• プログラミングにはC言語を用いる
並列化前の計算量 O(n)=n3
• 問題サイズを分割して各計算機に処理を分
散することで並列化を行う
問題サイズの分割
p1
p1
p2
p1
p3
p2
p4
p1
p5
p3
p6
p2
p7
p4
p8
並列行列積計算
• プログラミングにはC言語を用いる
並列化前の計算量 O(n)=n3
• 問題サイズを分割して各計算機に処理を分
散することで並列化を行う
• ホストで乱数により行列を生成し、各計算ノー
ドへ送信する。計算ノードは担当領域の処理
を行い結果をホストへ返す
データ通信
ホスト
ノード1
ノード2
ノード3
生成した行列を
各ノードに送信する
・・・・・・・・・・・・・・・・
ホスト
ノード1
ノード8
計算結果を1つづつ
ホストへ返す
測定結果
行列サイズ
1024
2048
1
76.2
610.5
2
40.8
323.8
4
21.7
174.5
8
12.6
89.3
CPU数
単位:秒
測定結果
700
600
時間(秒)
500
400
1024
2048
300
200
100
0
1
2
4
CPU数
8
オーバヘッドに関する考察
p2
ホスト
p3
p4
各ノードから一つず
つデータを送信して
いくため、ノードの
数に正比例する形
でオーバヘッドが増
加すると予測され
る。
考察
• 処理時間はプロセッサ数に対し反比例に近
い推移と言える。
• 通信・遅延時間によるオーバヘッドはプロセッ
サ数に対し比例に近い推移と考えられる。
均質な性能のプロセッサを増加させるほど単
純な処理時間は短縮可能であると言えるが、
通信・遅延によるオーバヘッドの増加も考える
必要がある。
結論
並列化によって処理速度は確実に向上している
データ処理の高速化において、並列処理が有効
な手段であると言える
また、既存の計算機やネットワークで構築で
き、仮想並列計算機はコスト面においても優
秀と言える