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