MPIによる行列積計算 情報論理工学研究室 04-1-47-015 渡邉伊織 情報論理工学研究室 04-1-47-015 渡邉伊織です。 04-1-47-015 渡邉伊織 情報論理工学研究室 04-1-47-015 渡邉伊織です。 研究テーマ、MPIによる行列計算についての発表をします。
あらまし 目的・方法 並列処理 仮想並列計算機 MPI 計算方法 結果・考察 結論 発表の流れとしましては、並列処理~結論といった形で説明をさせていただきます。
目的と方法 目的 仮想並列計算機の性能を実験的評価 方法 行列積の計算を並列処理で行い処理時間の向上率の検証 仮想並列計算機の性能を実験的評価 方法 行列積の計算を並列処理で行い処理時間の向上率の検証 行列積を選んだ理由は、並列プログラミングの処理しやすいデータでありながら、小規模から大規模までの計算量を必要とするデータであるため
並列処理 メリット デメリット ある一つの処理を複数のプロセッサを用いて行うこと データや機能を分割処理出来る 故障に強い データや機能を分割処理出来る 故障に強い デメリット 複数のプロセッサが必要 通信時間の発生 並列処理とは複数台のサーバを組み合わせて一つのより大規模なサーバシステムとして利用する ことにより、 ある1つの処理を、複数のプロセッサを用いて行う事。メリットとして、単一のプロセッサでの処理よりも高速に計算処理を行なえます。 また、1台のサーバで障害が発生した場合、他のサーバが処理を引き継ぐことができるため、システム全体がダウンすることがなくなります。 デメリットとしては複数のプロセッサが必要となり、サーバ間の通信時間が発生します。 逐次計算では膨大な時間がかかる処理を、並列処理を用いることで高速化を図りたいと思います。 コンピュータが社会のインフラとして成り立っている現代では、逐次処理では膨大な時間がかかる処理がたくさんあります。並列処理はそういった膨大なデータを処理するために利用されています。
仮想並列計算機 ネットワークを利用し、複数のコンピュータを並列計算機として用いることができる 安価で並列計算機の構築ができる ネットワークを利用し、複数のコンピュータを並列計算機として用いることができる 安価で並列計算機の構築ができる 容易に並列処理ができる さて、並列処理を行うためには、複数のプロセッサを用いて並列処理を行うことができる並列計算機の環境が必要です。 しかし、一般的に並列計算機は高価であるために、容易に用いることはできません。そこで、ネットワークを利用し複数のコンピュータを並列計算機として利用する仮想並列計算が注目されています。 複数のコンピュータさえあれば並列処理を行う環境が作れるため、安価で並列計算機の環境が構築でき、容易に並列処理が行うことができます。 ~~ 並列計算機には、全てのプロセッサが同じメモリを通して使用する共有メモリ型並列処理や、それぞれのプロセッサは個々に局所メモリを持ち、通信にはネットワークを使用する分散メモリ型並列処理の2つに大きく分けることが出来る。その中で、共有メモリ型並列処理は同期問題やデータの送受信といった問題がメモリを共有しているため対処しやすいが、プロセッサの増減などの変化があった場合には、メモリに全てのプロセッサを接続させることが困難になってしまう。そのため、現在では局所メモリが使用できる分散メモリ型並列処理が主流となっている。
MPI(Message Passing Interface) メッセージ通信ライブラリ 世界標準を目的とし開発 通信関数の充実 移植性が高い 仮想並列計算機の構築には、MPIというメッセージ通信ライブラリのソフトウェアを用いて行うことができます。 メッセージ通信のプログラムを記述するために広く使われる「標準」を目指して開発されたものです。 MPIは標準を目指して作成されたために様々な通信関数が実装されています、MPI規約を用いて作成したプログラムは移植性が高いため、MPIを使用するユーザは、通信を考慮せずプログラムを組むことが出来ます。 メッセージ通信ライブラリとは、コンピュータ間のメッセージ通信のためのプログラム記述するために広く使われているものです
MPICH ゴードン国立研究所が開発 無償で配布されているライブラリ 移植性を重視 Windows系へのサポート MPICHは、ゴードン国立研究所というアメリカの研究所が開発を行い、無償でソースコードを配布したライブラリである、PVMの問題点を元に、移植しやすさを重視した作りになっている。従来では、UNIXやLinuxのサポートが主流だったのに対し、Windows系へのサポートもしており、OSへの対応が充実している。
行列の計算方法1 ホストコンピュータ サブコンピュータ1 サブコンピュータ2 サブコンピュータ3 (8個のN*N行列データ保持) 行列データを 2つずつ送信 サブコンピュータ1 サブコンピュータ2 サブコンピュータ3 図に、行列の計算方法を示します。初期条件では、ホストコンピュータがすべてのN*N行列を保持しています。 まず、ホストコンピュータは、他のサブコンピュータに生成した行列を送信します。
行列の計算方法2 ホスト ホスト サブ2 ホスト サブ1 サブ2 サブ3 RESULT 結果送信 結果送信 結果送信 このように、ホストコンピュータから2つずつ行列をそれぞれのコンピュータは受け取ります。 各コンピュータにて、受け取った行列同士の積を計算し、その結果を上位コンピュータに渡します。 渡された行列同士の積をさらに計算し、最後に、ホストコンピュータに送り、それらをホストコンピュータで計算します。この結果を表示するまでの時間を計測し、この作業を1台で行ったときと、複数台で行ったときの計測時間を測定します。 ホスト サブ1 サブ2 サブ3
処理結果(秒=s) CPU\行列数 10 100 500 1000 1台 1.2s 2.8s 47.6s 582s 4台 0.9s 2.0s 速度向上率 1.3倍 1.4倍 1.5倍 2.1倍 行列計算を行った時の処理時間の結果を表に示します。 計算機の台数が1台の時と4台の時の時間と、速度の向上率を10行10列の場合、100行100列の場合、500行500列の場合100行1000列の場合に分けて検証しました。 コンピュータ数1台のときと比べると、どれも大幅に速度が向上しているのが見て取れますが。特に、処理の数が大きければ大きいほど、処理時間の向上率は上がっていることが注目されます。これは、処理数の多い場合より少ない処理の場合のほうが、処理の送受信や、同期の時間にかかる時間の影響を受けやすいからであろうと考えられます。また、1台の計算時間はややばらつきがあることに対し、複数のコンピュータによる処理は安定した処理速度となった。これは、膨大な処理を行うことによりかかる負担が、複数のコンピュータの場合よりも、1台のコンピュータにかかる負担のほうがより大きためであろうと考えられます。
結論 本研究では、MPIによる行列積計算の検証をした MPIによる、処理の高速化は有効 容易にプログラミングが出来る 小規模な処理の場合にも、速度の向上率は低いが有効であった 大規模になれば大幅に向上率が上がる 容易にプログラミングが出来る 容易に仮想並列計算機が構築できるため、身近なデータの処理にも並列処理を利用できる 本研究により、仮想並列計算環境を用いて複数のコンピュータを使って膨大なデータの処理を行うことにより、1台のコンピュータでその処理を行った時よりも、大幅に向上することを確認出来た。この、並列計算環境を用いれば、今まで処理時間が膨大で困難だった問題も、大幅に速度を向上して、さらにたくさんの情報を扱うことができるであろう。また、少量のデータの処理においても仮想並列計算環境を用いれば、処理時間が向上していたことにより、身近なことにも利用することが出来るであろうと考えられる。