(4/8)4.並列計算
4.1 並列プログラム
現在PCクラスタで用いられている並列プログラムの手法は、言語仕様を変更せず並列計算(データ通信等)に必要な部分をサブルーチンや関数を用いて記述する。並列計算に必要な部分の記述方法としては、MPI(Message Passing Interface) やPVM(Parallel Virtual Machine)という標準API(Application Programming Interface)を用いることが多い。「姫野ベンチマーク」(Fortran 77)をMPIで並列化を行った。MPIとは、並列プログラミングの記述方法等を統一すべくMPIフォーラムで標準化された並列プログラム記述環境である。MPIを用いて記述されたプログラムは、現在稼動しているほとんどの並列計算機で動作する(はずである)。
4.2 姫野ベンチマークの並列化
今回の並列化のコンセプトは以下の通りである。
- とりあえず並列で動作させる
- データ分割はしない、手続き分割のみ
- それなりのパフォーマンスを出す
姫野ベンチマークは、3D Poisson方程式をヤコビ法で解いているため、並列化には領域分割法を用いた。ヤコビ法は、領域ごとに同時に分散計算させても結果に変動はない。分割方法には、最も単純な一次元の分割を用いた。手続き分割のみを行うのでPE(Processing Element :この場合PC 1台)には、無駄なデータ領域を持つことになる。これらの事を行うのに必要なMPIのサブルーチンは以下の通りである。
これらサブルーチンの文法と応用に関しては、参考文献(5)を参照して頂きたい。以下にこれらの並列計算の流れを図示したものを示す。ただし、図は2次元の場合とする。