(57)【要約】【課題】並列化効率のよい並列計算を可能とし、プログラムの処理時間を短縮する。【解決手段】並列計算部２０で実行時のプログラムの性能情報を性能情報取得部１２が取得して、その性能情報をもとに、並列性能予測部１３がそのプログラム中の各処理部における並列性能を予測する。そして、並列数修正部１４が、予測された並列性能に基づいて、各処理部に対して並列計算を行う際の並列数を最適化する。これにより、プログラム全体を高い並列化効率で処理することが可能になり、プログラムの処理時間が短縮する。【選択図】図１
2011197846.tif 000002
【特許請求の範囲】
【請求項１】
並列計算部で実行時のプログラムの性能情報を取得する性能情報取得部と、
前記性能情報をもとに、前記プログラム中の各処理部における並列性能を予測する並列性能予測部と、
予測された前記並列性能に基づいて、前記各処理部に対して並列計算を行う際の並列数を最適化する並列数修正部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記並列計算部により第１の並列数のノードによる第１の処理部の並列計算後、前記第１の並列数より少ない第２の並列数による第２の処理部の並列計算が行われる場合、前記並列数修正部は、前記第１の並列数の前記ノードのデータを、それぞれが前記第２の並列数の前記ノードを有する複数のノード群のそれぞれに割り付けることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記並列数修正部は、前記第２の並列数での前記第２の処理部の並列計算後、前記第１の並列数の前記第１の処理部の並列計算を行う場合、それぞれの前記ノード群において一部の前記ノードのデータを用いて、前記第１の並列数の前記ノードへのデータの割り付けを行うことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記性能情報取得部は、前記処理部の実行時における前記性能情報を繰り返し取得し、前記並列性能予測部は、新たに取得した前記性能情報に応じて並列性能を予測し、前記並列数修正部は、前記並列数を補正して最適化することを特徴とする請求項１乃至３の何れか一項に記載の情報処理装置。
【請求項５】
コンピュータが、
並列計算部で実行時のプログラムの性能情報を取得し、
前記性能情報をもとに、前記プログラム中の各処理部における並列性能を予測し、
予測された前記並列性能に基づいて、前記各処理部に対して並列計算を行う際の並列数を最適化することを特徴とする並列計算制御方法。
【請求項６】
コンピュータに、
並列計算部で実行時のプログラムの性能情報を取得し、
前記性能情報をもとに、前記プログラム中の各処理部における並列性能を予測し、
予測された前記並列性能に基づいて、前記各処理部に対して並列計算を行う際の並列数を最適化する、
処理を実行させることを特徴とするプログラム。
【請求項７】
計算を行う複数のノードを有する並列計算部と、
前記並列計算部で実行時のプログラムの性能情報を取得する性能情報取得部と、
前記性能情報をもとに、前記プログラム中の各処理部における並列性能を予測する並列性能予測部と、
予測された前記並列性能に基づいて、前記各処理部に対して並列計算を行う際の並列数を最適化する並列数修正部と、
を有することを特徴とする並列計算システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、並列計算制御方法、プログラム及び並列計算システムに関する。
【背景技術】
【０００２】
情報処理システムにおける処理の高速化の要求に伴い、プロセッサなどのノードを複数設け、これらを互いにネットワークで接続して並列に計算処理を行う並列計算システムが提供されている。このような並列計算システムにおいては、大規模なもので、１００，０００〜１，０００，０００ノードを有するものがある。
【０００３】
ところで、実行対象のプログラム中には、複数ノードで同時に実行可能な処理部と、逐次的にしか実行できない処理部が含まれる場合がある。
これに関して、逐次的にしか実行できない処理部を実行する際の、データ転送や同期処理のオーバーヘッドを減少させるために、そのような処理部を複数のプロセッサで共通に冗長実行させる手法が知られている。
【０００４】
また、プログラムを分割したタスクを複数のプロセッサに割り付ける際、初めにプロセッサ間の通信路の性能が均一であると仮定してデータ転送時間などの性能情報を取得して、それに基づいてタスク割り付けを最適化していく技術が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平４−１０２１５９号公報
【特許文献２】特開平６−７５７８６号公報
【特許文献３】特開平９−２０４４０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、プログラム中の処理部には、複数ノードで並列に処理する効果の高い（並列化効率がよい）もの及び並列化効率が悪いものの他、ある程度の並列数までは並列化効率がよいが、それ以上の並列数となると並列化効率が悪化するようなものがある。３次元ＦＦＴ（Fast Fourier Transformation）などがその例である。
【０００７】
このように並列化した時の性能が異なる処理部が混在するプログラムに対して、高い並列化効率での並列計算を行うことは困難であった。特にノード数が多い大規模な並列計算システムではこの問題は顕著である。
【０００８】
上記の点を鑑みて、本発明は、並列化効率のよい並列計算が可能であり、プログラムの処理時間を短縮可能な情報処理装置、並列計算制御方法、プログラム及び並列計算システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、以下のような情報処理装置が提供される。
この情報処理装置は、並列計算部で実行時のプログラムの性能情報を取得する性能情報取得部と、前記性能情報をもとに、前記プログラム中の各処理部における並列性能を予測する並列性能予測部と、予測された前記並列性能に基づいて、前記各処理部に対して並列計算を行う際の並列数を最適化する並列数修正部と、を有する。
【００１０】
また、上記目的を達成するために、以下のような並列計算制御方法が提供される。
この並列計算制御方法は、コンピュータが、並列計算部で実行時のプログラムの性能情報を取得し、前記性能情報をもとに、前記プログラム中の各処理部における並列性能を予測し、予測された前記並列性能に基づいて、前記各処理部に対して並列計算を行う際の並列数を最適化する。
【００１１】
また、上記目的を達成するために、以下のようなプログラムが提供される。
このプログラムは、コンピュータに、並列計算部で実行時のプログラムの性能情報を取得し、前記性能情報をもとに、前記プログラム中の各処理部における並列性能を予測し、予測された前記並列性能に基づいて、前記各処理部に対して並列計算を行う際の並列数を最適化する、処理を実行させる。
【００１２】
また、上記目的を達成するために、以下のような並列計算システムが提供される。
この並列計算システムは、計算を行う複数のノードを有する並列計算部と、前記並列計算部で実行時のプログラムの性能情報を取得する性能情報取得部と、前記性能情報をもとに、前記プログラム中の各処理部における並列性能を予測する並列性能予測部と、予測された前記並列性能に基づいて、前記各処理部に対して並列計算を行う際の並列数を最適化する並列数修正部と、を有する。
【発明の効果】
【００１３】
開示の情報処理装置、並列計算制御方法、プログラム及び並列計算システムによれば、並列化効率のよい並列計算が可能となり、プログラムの処理時間を短縮できる。
【図面の簡単な説明】
【００１４】
【図１】並列計算システムの構成を示す図である。
【図２】並列計算部で実行されるプログラムの一例の構造を示す図である。
【図３】並列計算の実行による処理時間の変化の様子を示す図である。
【図４】処理部Ｂに対する並列計算の処理時間と並列数との関係の一例を示す図である。
【図５】処理部Ａ及び処理部Ｂの処理時間の並列数依存性を示す図である。
【図６】実行効率と並列化効率の並列数依存性を示す図である。
【図７】３次元ＦＦＴの処理時間とノード数との関係の一例を示す図である。
【図８】本実施の形態の情報処理装置による並列計算の制御の流れを示す図である。
【図９】並列数の最適化に伴うデータの割り付け処理の一例を示す図である。
【図１０】データの割り付け処理の詳細を示す図である（その１）。
【図１１】データの割り付け処理の詳細を示す図である（その２）。
【図１２】データの割り付け処理の詳細を示す図である（その３）。
【図１３】サブグループの他の設定方法を示す図である。
【図１４】処理部Ｂの並列数を１０並列としたときの処理部Ａと処理部Ｂの実行効率と並列化効率の並列数依存性を示す図である。
【図１５】コンピュータのハードウェアの一構成例を示す図である。
【図１６】並列計算システムの他の例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態を、図面を参照しつつ説明する。
図１は、並列計算システムの構成を示す図である。
並列計算システムは情報処理装置１０と、並列計算部２０を有している。情報処理装置１０は、計算制御部１１、性能情報取得部１２、並列性能予測部１３、並列数修正部１４を有している。また、並列計算部２０は、複数のノードｎｄ１，ｎｄ２，…，ｎｄｎを有している。ノードｎｄ１〜ｎｄｎのそれぞれは、コンピュータ、プロセッサまたはプロセッサコアなどであり、図示を省略しているが、互いにネットワークで接続されている。
【００１６】
情報処理装置１０において、計算制御部１１は、並列計算部２０のノードｎｄ１〜ｎｄｎの確保、ジョブの割り付け（論理ノードと物理ノードの対応付け）、ジョブの実行、退避などを行う。
【００１７】
性能情報取得部１２は、並列計算部２０で実行時のプログラムの性能情報を取得する。性能情報は、たとえば、ノードｎｄ１〜ｎｄｎごとの浮動小数点演算数、演算時間、ノードｎｄ１〜ｎｄｎ間のデータ転送パターン、データ転送量、転送（通信）時間などである。
【００１８】
並列性能予測部１３は、取得された性能情報をもとに、プログラム中の各処理部における並列性能を予測する。並列性能は、並列化効率の並列数依存性を示すものである。プログラム中の処理部には、並列化効率がよいもの及び並列化効率の悪いものの他、ある程度の並列数まではよい並列化効率を示すが、それ以上の並列数となると並列化効率が悪化するようなものがある。並列性能予測部１３は、性能情報をもとに上記のような並列性能を予測し、たとえば、処理部ごとに最適並列数を予測結果として出力する。
【００１９】
並列数修正部１４は、予測された並列性能をもとに、各処理部に対して並列計算を行う際の並列数を最適化する。たとえば、並列数修正部１４は、並列性能予測部１３によって予測された各処理部の最適並列数を記憶しておく。そして、並列数修正部１４は、並列計算部２０で計算中のプログラムにおいて最適並列数が予測されている処理部が実行される際に、それまで、ある並列数のノードで処理されてきたデータを、最適並列数のノードに対して割り当てる。このようなデータ割り付けの処理の詳細については後述する。
【００２０】
このような情報処理装置１０によれば、各処理部に対する並列性能を予測し、処理部ごとに並列数を最適化するので、並列性能が異なる複数の処理部が含まれるプログラム全体に対して、並列化効率のよい並列計算が可能となる。これにより、プログラムの処理時間を短縮することが可能になる。
【００２１】
なお、上記のような情報処理装置１０は、並列計算部２０におけるノードｎｄ１〜ｎｄｎの何れかであってもよい。また、情報処理装置１０の計算制御部１１、性能情報取得部１２、並列性能予測部１３、並列数修正部１４の一部乃至全ての機能が、ノードｎｄ１〜ｎｄｎの何れか、または複数のノードｎｄ１〜ｎｄｎに含まれていてもよい。
【００２２】
以下、図１で示した並列計算システムの動作について、さらに詳細に説明する。
図２は、並列計算部で実行されるプログラムの一例の構造を示す図である。
ここでは、シミュレーションプログラムの構造の一例を示している。図２に示すシミュレーションプログラムは、初期状態などを設定する前処理部３０、処理核心部３１、シミュレーションの収束条件を判定する収束判定部３２、収束していない場合に処理核心部３１への入力を修正する入力修正部３３を有している。
【００２３】
たとえば、シミュレーションプログラムが分子動力学計算であれば、処理核心部３１では、各原子に働く力の計算と運動方程式にしたがった原子や分子の座標の更新が行われる。処理核心部３１の処理は指定回数、繰り返し行われる。ほぼ同一の計算負荷を持った計算が、多数回繰り返される。
【００２４】
また、シミュレーションプログラムが量子論的シミュレーションであれば、前処理部３０にて初期電子状態が与えられ、処理核心部３１では電子状態からポテンシャルが求められ、それを使って電子状態（波動関数と電荷密度）が更新される。このような処理は、電子状態が収束するまで（処理核心部３１に入力する電子状態と処理核心部３１から出力される電子状態が一定の誤差の範囲で一致するまで（自己無撞着になるまで））、繰り返し行われる。また、流体シミュレーションや、気象予測などの時間発展を追うシミュレーションに関するものであっても同様の処理が行われる。
【００２５】
処理核心部３１には、処理部Ａと処理部Ｂが含まれる。
以下の説明では、処理部Ａは並列化効率がよく、並列数を増加させるほど処理時間が短くなる処理部とする。また、処理部Ｂは逐次的にしか処理できず並列化の効果がない、あるいはある程度の並列数まではよい並列化効率を示すが、それ以上の並列数となると並列化効率が悪化するような処理部とする。
【００２６】
たとえば、並列化効率が１００％（ｎ並列で処理時間が１／ｎになる）の処理部Ａと、並列化効率が０％（並列化しても処理時間が１つのノードで計算した場合と変わらない）の処理部Ｂとを逐次処理（非並列処理）した場合について考える。たとえば、処理部Ａが全体の処理時間の９９．９％を占め、処理部Ｂが処理時間の０．１％を占めたとする。この場合、１０，０００並列の並列計算部２０を用いると、プログラムが処理部Ａだけで構成される場合のおよそ９．１％（≒（１／１００００）／（（１／１００００）（９９９／１０００）＋（１／１０００）））の性能しか示せない。また、１００，０００並列の並列計算部２０を用いると、プログラムが処理部Ａだけで構成される場合のおよそ１％（≒（１／１０００００）／（（１／１０００００）（９９９／１０００）＋（１／１０００）））の性能しか示せない（アムダールの法則）。
【００２７】
図３は、並列計算の実行による処理時間の変化の様子を示す図である。
図３では、非並列処理時の処理部Ａと処理部Ｂを合わせた全体の処理時間をＴ、並列化効率が１００％の処理部Ａの処理時間をｔ１、並列化効率が０％の処理部Ｂの処理時間をｔ２としている。処理部Ｂの処理時間ｔ２の占める割合が、非並列処理時の全体の処理時間Ｔの１／ｎで、ｔ１≫ｔ２の場合、ｎ並列処理時の処理時間は、（ｔ１／ｎ）＋ｔ２＝（ｔ１／ｎ）＋（Ｔ／ｎ）≒２Ｔ／ｎとなる。つまり、ｎ並列処理を行っても、処理部Ａだけで構成されるプログラムをｎ並列で行う場合の２倍の時間がかかる。
【００２８】
次に、処理部Ｂが、ある並列数まではよい並列化効率を示すが、それ以上の並列数となると並列化効率が悪化するようなものである場合について説明する。
図４は、処理部Ｂに対する並列計算の処理時間と並列数との関係の一例を示す図である。
【００２９】
縦軸が処理時間、横軸が並列数である。ここでは簡単のため、１０並列までは並列化効率が１００％であり処理時間が減少し、１０並列を超えると並列化効率が急激に悪化し、逆に処理時間が増加するような並列性能の処理部Ｂの例を示している。
【００３０】
このような並列性能を有する処理部Ｂにおいて、処理時間ｔを並列数ｎの関数とした場合、ｔ（ｎ）は、たとえば、以下のような式であらわされる。
【００３１】
【数１】
2011197846.tif 000003
ここで、ｔ０は処理部Ｂを１ノードで実行した場合の処理時間であり、図４では１０としている。
【００３２】
非並列処理した場合、処理部Ａ（並列化効率が１００％）が処理時間の９９．９％を占め、図４に示すような並列性能の処理部Ｂが０．１％を占めるようなプログラムを並列処理した場合、処理部Ａ及び処理部Ｂの処理時間の並列数依存性は以下のようになる。
【００３３】
図５は、処理部Ａ及び処理部Ｂの処理時間の並列数依存性を示す図である。
縦軸が処理時間、横軸が並列数である。処理部Ａに関しては、１００並列あたりまでは、処理時間が急激に減少し、それ以降もなだらかに減少していく。処理部Ｂに関しては、１００並列あたりまでは処理時間が減少するが、それ以降は増加する。
【００３４】
図６は、実行効率と並列化効率の並列数依存性を示す図である。
縦軸が実行効率（％）と並列化効率（％）、横軸が並列数である。
ここでは、実行効率を、上記のような処理部Ａと処理部Ｂとを含むプログラムの１ノードでの処理時間とｎ並列での処理時間との比に１００を掛けたものとして定義している。また、並列化効率は実行効率を並列数で割ったものに相当する。
【００３５】
図６に示すように、実行効率は１００並列で約５２００％、１０００並列で約９９９％、図示はしていないが、１００００並列では１００％となり、１００並列以降は急激に悪化していく。
【００３６】
また、並列化効率は、１００並列で約５２％、１０００並列で約０．９９９％、図示はしていないが、１００００並列で０．０１％というように非常に悪い効率となる。
そのため、処理部Ｂについては、図４に示したように処理時間が最小となる１０並列で行うことが望ましい。
【００３７】
このような処理部Ｂの例としては、固有値問題や３次元ＦＦＴなど、計算途中でのデータの入れ替えのためにノード間で通信が発生する処理部が挙げられる。
たとえば、３次元ＦＦＴの計算を行う際、並列計算部２０は１次元方向のＦＦＴを１つのノードで行い、他の２次元のＦＦＴを複数のノードで並列計算する。具体的には、並列計算部２０は、たとえば、ｘ、ｙ、ｚの３軸のうち最初にｘ軸に関するＦＦＴを行い、次にノード間でネットワーク通信を伴ったデータの並び替えを行い、ｙ軸方向のＦＦＴを行う。そして、並列計算部２０は最後に再びネットワーク通信を伴ったデータの並び替えを行いｚ軸方向のＦＦＴを行う。
【００３８】
この並び替えに要する時間は、最も単純には、全対全通信時には通信経路の断面積に通信時間が比例するとしたバイセクション法で見積もると、ｐ2/3（ｐは総ノード数）に比例する。演算に要する時間は、ノード数に逆比例するので、３次元ＦＦＴ全体に要する時間ｔは、ｔ＝Δｔ1ｐ2/3＋Δｔ2／ｐとあらわされる。Δｔ1は１つのノードから別のノードへデータを送る際の時間であり、Δｔ2は３次元ＦＦＴを１ノードで演算したときの演算時間である。
【００３９】
たとえば、Δｔ1＝１（μｓ）、Δｔ2＝２０，０００（μｓ）とすると、ノード数と計算に要する時間の関係は以下のようになる。
図７は、３次元ＦＦＴの処理時間とノード数との関係の一例を示す図である。
【００４０】
縦軸が処理時間（μｓ）であり、横軸がノード数、つまり並列数である。
図に示すように、ノード数が１０００までは処理時間が短縮するが、それ以降はノード数が増えるにしたがって急速に処理時間が増大する。実際には、ノード数が増えるにしたがい、ネットワーク経路中に存在するスイッチの数が増えるなどの理由により、処理時間の増大はより急である。
【００４１】
上記の例の場合、図示はされていないが、ノード数が１００，０００での処理時間が２１５５μｓとなるのに対して、ノード数が５００の場合に、処理時間が最も短い１０３μｓとなる。よって、５００並列で３次元ＦＦＴを実行することが、最も効率がよい。
【００４２】
しかし、多くの並列計算システムでは、最初から１００，０００〜１，０００，０００ノードの環境で実行や開発を行う前に、たとえば、１０〜１００ノード程度の比較的小規模の環境で実行や開発を行う。そのため、たとえば、５００ノードまでは並列化効率がよいが、それ以上の並列数になると並列化効率が悪化する処理部がプログラムに含まれる場合には問題があらわにならない。これによって、並列計算システムを大規模化にした際のプログラムの並列化効率の悪化を検出できない。
【００４３】
そのため、本実施の形態の情報処理装置１０では、以上のような処理部Ｂの並列性能を考慮して、並列計算部２０での並列計算の制御を行う。
図８は、本実施の形態の情報処理装置による並列計算の制御の流れを示す図である。
【００４４】
情報処理装置１０の計算制御部１１は、並列計算部２０のノードｎｄ１〜ｎｄｎの確保を行い、ジョブを割り付け、並列計算部２０にプログラムを実行させる（ステップＳ１０）。これにより、並列計算部２０では並列計算を開始する。
【００４５】
シミュレーションプログラムの多くは、ほぼ同じ計算負荷の処理核心部３１の処理（図２参照）を繰り返し行うものである。そのため、処理核心部３１に対して前後の処理の計算負荷が無視できる程度に小さければ、プログラムの性能は処理核心部３１の計算を１回〜数回実行すれば十分予測可能である。
【００４６】
そこで、性能情報取得部１２は、ユーザ空間に割り付けられたジョブをある一定時間（よいサンプリングになると考えられる時間、たとえば、１回〜数回の処理核心部３１の処理時間）モニタする。そして、性能情報取得部１２はプログラムの処理部ごとに、各ノードｎｄ１〜ｎｄｎから通信パターン、演算時間、通信量、通信時間、各プロセッサの演算内容などの性能情報を取得する（ステップＳ１１）。
【００４７】
プログラム中における各処理部は、たとえば、ユーザによってその開始位置と終了位置がマーキングされており、性能情報取得部１２が判別できるようになっている。また、性能情報取得部１２がプログラムのコード（たとえば、３次元ＦＦＴのコード）を参照して、各処理部を判別するようにしてもよい。
【００４８】
並列計算部２０におけるプログラムの実行と並行して、並列性能予測部１３は取得された性能情報をもとにプログラムの各処理部の並列性能を予測する（ステップＳ１２）。
具体的には、並列性能予測部１３は、たとえば、前述のようなバイセクション法で、図５や図７で示したような各処理部の処理時間のノード数（並列数）依存性を予測する。そして、並列性能予測部１３は、予測した並列性能からプログラム中の各処理部に対する最適並列数を決定する。決定された最適並列数は、並列数修正部１４または図示しないメモリなどに記憶される。
【００４９】
たとえば、図５に示したような並列性能を有する処理部Ａの場合、並列数を増加すれば処理時間が減少していくため、並列性能予測部１３は、並列計算部２０の全ノード数ｎを最適並列数として決定する。一方、図７に示したような並列性能を有する処理部Ｂの場合、処理時間はノード数が５００のとき最短となるので、並列性能予測部１３は５００を最適並列数として決定する。
【００５０】
その後、並列数修正部１４は予測された並列性能に基づいて、各処理部に対して並列計算を行う際の並列数を最適化する（ステップＳ１３）。
具体的には、実行中のプログラムにおいて、繰り返し処理などにより最適並列数が決定された処理部が再び検出された場合、並列数修正部１４は、その処理部を並列計算するときの並列数を最適並列数とする。このとき、たとえば、図２に示したような処理部Ａから処理部Ｂに進み、その後再び処理部Ａに戻る、または異なる並列数で処理部を計算するようなプログラムの場合、並列数の修正に伴い、ノードｎｄ１〜ｎｄｎ間でのデータの割り付けが必要となる。データ割り付け処理の詳細については後述する。
【００５１】
ステップＳ１３の処理後、たとえば、情報処理装置１０の計算制御部１１が、実際に処理部に対する処理時間を測定し、予測した処理時間と比較し補正が必要か否か判定するようにしてもよい（ステップＳ１４）。ここで、実際の処理時間と、並列性能予測部１３が予測した処理時間との誤差が大きい場合には、情報処理装置１０は再びステップＳ１１〜Ｓ１３の処理を行い、並列数を最適化する。
【００５２】
その後、情報処理装置１０の計算制御部１１は、並列計算部２０でのプログラムの計算が収束しているか否か判定する（ステップＳ１５）。ここで計算制御部１１は、計算が収束していればプログラムの実行を終了させ、収束していなければ入力を修正させて（ステップＳ１６）、収束するまで計算を繰り返させる。
【００５３】
以上のような並列計算制御方法によれば、プログラムの実行中に処理部の性能情報を取得し、その処理部に対する並列性能を予測し、処理部ごとに並列数を最適化するので、並列性能が異なる複数の処理部が含まれるプログラム全体に対して、並列化効率のよい並列計算が可能となる。これにより、プログラムの処理時間を短縮することが可能になる。
【００５４】
なお、情報処理装置１０は、プログラムの全処理部に対して性能情報を取得し並列性能の予測を行うのではなく、並列化効率が悪くなる可能性がある処理部（たとえば、３次元ＦＦＴ）に対してのみ、上記ステップＳ１１〜Ｓ１４の処理を行うようにしてもよい。ただし、取得された性能情報から通信時間がその処理部の処理時間（演算実行時間＋通信時間）に占める割合がある閾値（たとえば、５０％）以下の場合には、たとえば、並列性能予測部１３は、並列化効率が悪くないと判断する。そして、このとき並列性能予測部１３が、並列数修正部１４に対して並列計算途中（ジョブ実行中）に並列数を変更させないようにしてもよい。情報処理装置１０は、その他の処理部に対しては、たとえば、最適並列数を全ノード数ｎとする。
【００５５】
また、並列性能予測部１３は、遺伝的アルゴリズムを使って、仮想的にネットワークで接続されたノードに処理部のジョブを割り付けて通信時間が最小になる並列数を予測するようにしてもよい。
【００５６】
以下、図８のステップＳ１３の処理の詳細を説明する。
実行中のプログラムの処理部に対して並列計算を行う際の並列数を、予測された最適並列数に修正する際、前の処理部の計算を行っていたノードから最適並列数のノードに対してデータを割り付ける必要がある。
【００５７】
図９は、並列数の最適化に伴うデータの割り付け処理の一例を示す図である。
ここでは簡単のため、並列計算部２０のノード数が１６の場合について示している。また、並列効率のよい処理部Ａを完全並列で計算した後、最適並列数が４つとされた処理部Ｂの計算を行い、その後、再び完全並列で処理部Ａを計算する場合のデータ割り付け処理について示している。Ｄ１〜Ｄ１６は、ノードｎｄ１〜ｎｄ１６ごとに分割されたデータ列を示している。
【００５８】
図９に示すように、処理部Ａの計算の後、処理部Ｂの計算を行う際、並列数修正部１４は、ノードｎｄ１〜ｎｄ１６のデータ列Ｄ１〜Ｄ１６を、ノードｎｄ１〜ｎｄ４に割り付ける。すなわち、並列数修正部１４は、ノードｎｄ１にはデータ列Ｄ１〜Ｄ４、ノードｎｄ２にはデータ列Ｄ５〜Ｄ８、ノードｎｄ３にはデータ列Ｄ９〜１２、ノードｎｄ４にはデータ列Ｄ１３〜Ｄ１６を割り付ける。
【００５９】
処理部Ｂの計算の際、ノードｎｄ５〜ｎｄ１６は計算を行わなくてもよいが、この例では、並列数修正部１４はノードｎｄ５〜ｎｄ８、ノードｎｄ９〜ｎｄ１２、ノードｎｄ１３〜ｎｄ１６に対しても同じデータ列Ｄ１〜Ｄ１６を割り付ける。そのため、ノードｎｄ１〜ｎｄ４を有するサブグループ１、ノードｎｄ５〜ｎｄ８を有するサブグループ２、ノードｎｄ９〜ｎｄ１２を有するサブグループ３、ノードｎｄ１３〜ｎｄ１６を有するサブグループ４は同じ処理部Ｂの計算を並列に行う。
【００６０】
このように、複数のサブグループのノードで同じ処理を行うことで、再び処理部Ａを計算するときのデータ割り付けを、局所的な転送の組み合わせで行うことができ、大域的な全対全通信に比較して処理時間を短縮できる。
【００６１】
すなわち、図９に示すように、並列数修正部１４は、サブグループ１からはノードｎｄ１のデータ列Ｄ１〜Ｄ４をノードｎｄ１〜ｎｄ４に割り付け、サブグループ２からはノードｎｄ６のデータ列Ｄ５〜Ｄ８をノードｎｄ５〜ｎｄ８に割り付ける。さらに、並列数修正部１４は、サブグループ３からはノードｎｄ１１のデータ列Ｄ９〜Ｄ１２をノードｎｄ９〜ｎｄ１２に割り付け、サブグループ４からはノードｎｄ１６のデータ列Ｄ１３〜Ｄ１６をノードｎｄ１３〜ｎｄ１６に割り付ける。なお、このときノードｎｄ１のデータ列Ｄ１、ノードｎｄ６のデータ列Ｄ６、ノードｎｄ１１のデータ列Ｄ１１、ノードｎｄ１６のデータ列Ｄ１６については転送を必要としない。
【００６２】
図１０〜図１２は、データの割り付け処理の詳細を示す図である。
図１０に示すように、ノードｎｄ１〜ｎｄ１６が４×４で配列されており、データ列Ｄ１〜Ｄ１６が分割されて割り付けられている。処理部Ｂを行うために４並列にするとき、前述の図９のようにサブグループ１〜４を設定すると、並列数修正部１４は、図１１に示すように、まずサブグループ内（図１１の横方向）でデータ転送を行わせる。図１１の例では、サブグループ１のノードｎｄ１にノードｎｄ２〜ｎｄ４のデータ列Ｄ２〜Ｄ４が転送され、サブグループ２のノードｎｄ６にノードｎｄ５，ｎｄ７，ｎｄ８のデータ列Ｄ５，Ｄ７，Ｄ８が転送されている。また、サブグループ３のノードｎｄ１１にノードｎｄ９，ｎｄ１０，ｎｄ１２のデータ列Ｄ９，Ｄ１０，Ｄ１２が転送され、サブグループ４のノードｎｄ１６にノードｎｄ１３〜ｎｄ１５のデータ列Ｄ１３〜Ｄ１５が転送されている。
【００６３】
次に、並列数修正部１４は、図１２に示すように、サブグループ１〜４間（図１２の縦方向）でデータ転送を行わせる。図１２の例では、サブグループ１のノードｎｄ１のデータ列Ｄ１〜Ｄ４が、サブグループ２〜４のノードｎｄ５，ｎｄ９，ｎｄ１３に転送されている。また、サブグループ２のノードｎｄ６のデータ列Ｄ５〜Ｄ８が、サブグループ１のノードｎｄ２、サブグループ３のノードｎｄ１０、サブグループ４のノードｎｄ１４に転送されている。また、サブグループ３のノードｎｄ１１のデータ列Ｄ９〜Ｄ１２が、サブグループ１のノードｎｄ３、サブグループ２のノードｎｄ７、サブグループ４のノードｎｄ１５に転送されている。さらに、サブグループ４のノードｎｄ１６のデータ列Ｄ１３〜Ｄ１６が、サブグループ１〜３のノードｎｄ４，ｎｄ８，ｎｄ１２に転送されている。
【００６４】
以上のようなデータ列Ｄ１〜Ｄ１６の割り付けが終了すると、各ノードｎｄ１〜１６での処理部Ｂの計算が行われる。
処理部Ｂの計算が終わると、並列数修正部１４は、処理部Ａの計算を１６並列で行うために、再びデータの割り付けを行う。この時のデータの割り付けは、各サブグループ内の転送によって行うことができる。すなわち、並列数修正部１４は、サブグループ１のノードｄ１からノードｎｄ２〜ｎｄ４へデータ列Ｄ２〜Ｄ４を転送し、サブグループ２のノードｄ６からノードｎｄ５，ｎｄ７，ｎｄ８へデータ列Ｄ５，Ｄ７，Ｄ８を転送する。また、並列数修正部１４は、サブグループ３のノードｎｄ１１からノードｎｄ９，ｎｄ１０，ｎｄ１２へデータ列Ｄ９，Ｄ１０，Ｄ１２を転送し、サブグループ４のノードｎｄ１６からノードｎｄ１３〜ｎｄ１５へデータ列Ｄ１３〜Ｄ１５を転送する。
【００６５】
このように、本実施の形態の情報処理装置１０では、並列数が異なる処理部Ａ，Ｂの計算を行う際に、データの割り付けを局所的な転送の組み合わせで行うことで、大域的な全対全通信に比較して処理時間を短縮できる。
【００６６】
なお、並列数修正部１４は、並列数が異なる処理部Ａ，Ｂの計算を行う際に、以下のようにサブグループを設定するようにしてもよい。
図１３は、サブグループの他の設定方法を示す図である。
【００６７】
この例では、並列数修正部１４は、図１３の縦方向の４つのノードをサブグループとしている。すなわち、ノードｎｄ１，ｎｄ５，ｎｄ９，ｎｄ１３がサブグループ１、ノードｎｄ２，ｎｄ６，ｎｄ１０，ｎｄ１４がサブグループ２として設定される。また、ノードｎｄ３，ｎｄ７，ｎｄ１１，ｎｄ１５がサブグループ３、ノードｎｄ４，ｎｄ８，ｎｄ１２，ｎｄ１６がサブグループ４として設定される。
【００６８】
そして、並列数修正部１４は、サブグループ１〜４間のノードｎｄ１〜ｎｄ４のそれぞれに対してはデータ列Ｄ１〜Ｄ４を割り付け、ノードｎｄ５〜ｎｄ８のそれぞれに対してはデータ列Ｄ５〜Ｄ８を割り付ける。また、並列数修正部１４は、ノードｎｄ９〜ｎｄ１２のそれぞれに対してはデータ列Ｄ９〜Ｄ１２を割り付け、ノードｎｄ１３〜ｎｄ１６のそれぞれに対してはデータ列Ｄ１３〜Ｄ１６を割り付ける。
【００６９】
図１０に示したようなノードｎｄ１〜ｎｄ１６の状態から、図１３に示したようなノードｎｄ１〜ｎｄ１６にデータを割り付ける場合には、図１３の横方向のノード間のデータ転送だけで行うことができる。すなわち、ノードｎｄ１〜ｎｄ４間、ノードｎｄ５〜ｎｄ８間、ノードｎｄ９〜ｎｄ１２間、ノードｎｄ１３〜ｎｄ１６間の転送ですむ。また、処理部Ｂの計算後に、処理部Ａの計算のために、図１０の状態にデータを割り付け直す場合も同様に、横方向のノード間のデータ転送だけで行うことができる。これにより、さらに転送時間を短縮することができる。
【００７０】
なお、以上のような処理内容は、並列数値計算を行う際に参照されるライブラリとして情報処理装置１０の図示しないメモリに記憶されていてもよい。また、各ノードｎｄ１〜ｎｄｎの１つ乃至全てに、そのライブラリが実装されていてもよい。
【００７１】
ところで、上記の説明では簡単のため、ノード数ｎが１６の場合について説明したが、ｎ＝１０，０００、ｎ＝１００，０００の場合にも同様に処理できる。
たとえば、図４で示したような並列性能を示す処理部Ｂに対して、上記のサブグループを用いたデータの割り付けを適用した場合、並列化効率が１００％の処理部Ａと合わせたときの実行効率と並列化効率の並列数依存性は以下のようになる。なお、実行対象のプログラムにおける処理部Ａと処理部Ｂの処理時間の割合は、非並列処理した場合、処理部Ａが処理時間の９９．９％を占め、処理部Ｂが０．１％とする。
【００７２】
図１４は、処理部Ｂの並列数を１０並列としたときの処理部Ａと処理部Ｂの実行効率と並列化効率の並列数依存性を示す図である。
縦軸が実行効率（％）と並列化効率（％）、横軸が処理部Ａを計算する際の並列数である。
【００７３】
ここでは、処理部Ａを完全並列として、処理部Ｂを１０並列で固定としている。ただし、たとえば、処理部Ａが１０００並列の場合、処理部Ｂに対しては、それぞれ１０個のノードを有する１００のサブグループで並列して演算が行われている場合について示している。これは、前述したように、データ割り付けの際の通信時間を短縮するためである。
【００７４】
図１４に示すように、並列数を増加しても、処理部Ｂの影響により図６に示したように実行効率を悪化することがなく、また、高い並列化効率を維持することができる。これによって、プログラム全体の処理時間を短縮することが可能になる。
【００７５】
（情報処理装置１０のハードウェア構成例）
なお、情報処理装置１０は、以下のようなハードウェア構成を有するコンピュータで実現できる。
【００７６】
図１５は、コンピュータのハードウェアの一構成例を示す図である。
コンピュータ４０は、ＣＰＵ（Central Processing Unit）４１によって装置全体が制御されている。ＣＰＵ４１には、バス４８を介してＲＡＭ（Random Access Memory）４２と複数の周辺機器が接続されている。これによって、ＣＰＵ４１はコンピュータ４０の各部と連携して、図１に示した、計算制御部１１、性能情報取得部１２、並列性能予測部１３、並列数修正部１４の機能を実現する。
【００７７】
ＲＡＭ４２は、コンピュータ４０の主記憶装置として使用される。ＲＡＭ４２には、ＣＰＵ４１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ４２には、ＣＰＵ４１による処理に必要な各種データが格納される。
【００７８】
バス４８に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）４３、グラフィック処理装置４４、入力インタフェース４５、光学ドライブ装置４６、及び通信インタフェース４７などがある。
【００７９】
ＨＤＤ４３は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行う。ＨＤＤ４３は、コンピュータ４０の二次記憶装置として使用される。ＨＤＤ４３には、ＯＳのプログラム、図８に示したような並列計算を制御するためのプログラムや、並列計算部２０に実行させるプログラム、アプリケーションプログラム、及び各種データが格納される。図８に示したような処理を行うプログラムは、並列計算プログラムのライブラリとして記憶されていてもよい。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００８０】
グラフィック処理装置４４には、モニタ４４ａが接続されている。グラフィック処理装置４４は、ＣＰＵ４１からの命令に従って、画像をモニタ４４ａの画面に表示させる。モニタ４４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００８１】
入力インタフェース４５には、たとえば、キーボード４５ａとマウス４５ｂとが接続されている。入力インタフェース４５は、キーボード４５ａやマウス４５ｂから送られてくる信号をＣＰＵ４１に送信する。なお、マウス４５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００８２】
光学ドライブ装置４６は、レーザ光などを利用して、光ディスク４６ａに記録されたデータの読み取りを行う。光ディスク４６ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク４６ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００８３】
通信インタフェース４７は、図示しないネットワークを介して並列計算部２０に接続されている。通信インタフェース４７は、ネットワークを介して、並列計算部２０との間でデータの送受信を行う。
【００８４】
なお、図１に示した並列計算部２０の各ノードｎｄ１〜ｎｄｎも図１５に示すようなコンピュータ４０であってもよい。
このように、本実施の形態の情報処理装置１０の処理機能は、コンピュータによって実現することができる。その場合、情報処理装置１０が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【００８５】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００８６】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００８７】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【００８８】
以上、実施の形態に基づき、本発明の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
たとえば、情報処理装置１０の並列性能予測部１３を、他の装置で行ってもよい。
【００８９】
図１６は、並列計算システムの他の例を示す図である。
並列計算システムは、並列計算制御装置５０、並列性能予測装置５１、並列計算部５２を有する。
【００９０】
図１６の例では、図１に示した情報処理装置１０の並列性能予測部１３の機能を、並列性能予測装置５１で行うものとしている。図１に示した情報処理装置１０の計算制御部１１、性能情報取得部１２及び並列数修正部１４の機能は、並列計算制御装置５０が実行する。並列計算部５２は、図１で示した並列計算部２０に対応している。
【００９１】
このような並列計算システムでも同様な効果を得ることができる。
【符号の説明】
【００９２】
１０  情報処理装置
１１  計算制御部
１２  性能情報取得部
１３  並列性能予測部
１４  並列数修正部
２０  並列計算部
ｎｄ１〜ｎｄｎ  ノード
【図１】
2011197846.tif 000004
【図２】
2011197846.tif 000005
【図３】
2011197846.tif 000006
【図４】
2011197846.tif 000007
【図５】
2011197846.tif 000008
【図６】
2011197846.tif 000009
【図７】
2011197846.tif 000010
【図８】
2011197846.tif 000011
【図９】
2011197846.tif 000012
【図１０】
2011197846.tif 000013
【図１１】
2011197846.tif 000014
【図１２】
2011197846.tif 000015
【図１３】
2011197846.tif 000016
【図１４】
2011197846.tif 000017
【図１５】
2011197846.tif 000018
【図１６】
2011197846.tif 000019