(57)【特許請求の範囲】
【請求項１】
互いに接続された複数のノードにプロセスを配置するプロセス配置装置において、
前記複数のノードそれぞれの位置情報と、前記複数のノードのそれぞれに配置されたプロセスの識別子とを対応付けて記憶するプロセス配置記憶部と、
通信元であるプロセスの識別子、通信先であるプロセスの識別子、及び前記通信元であるプロセスと前記通信先であるプロセスとの間の通信量を示すプロセス間通信量を対応付けて記憶するプロセス間通信量記憶部と、
前記通信元であるプロセスが配置されている通信元のノードから前記通信先であるプロセスが配置されている通信先のノードまでのホップ数を前記プロセス配置記憶部に記憶される該通信元のノード及び該通信先のノードの各Ｘ座標の差の絶対値及び各Ｙ座標の差の絶対値の和から特定するとともに、前記プロセス間通信量を前記プロセス間通信量記憶部から取得し、各ノードへの各プロセスの配置についての評価値として、前記プロセス間通信量と、前記ホップ数とを乗算した値を算出する評価値算出部と、
前記通信元のノードから前記通信先のノードまでの通信ルートを特定し、特定した通信ルート上の各ノード間それぞれのプロセス間の通信量を前記プロセス間通信量記憶部から取得して、取得したプロセス間通信量からノード間の通信量の総計を示すノード間総通信量を算出するノード間総通信量算出部と、
前記評価値算出部が算出した前記評価値及び前記ノード間総通信量算出部が算出したノード間総通信量の最大値に基づいて、補正に用いる補正評価値を算出する補正評価値算出部と、
前記補正評価値算出部が算出した補正評価値が所定値を上回っている場合、各ノードに対する各プロセスの割り当ての新たな組合せで各ノードへ各プロセスを配置するプロセス配置部と、
を有することを特徴とするプロセス配置装置。
【請求項２】
前記プロセス配置装置において、
前記補正評価値算出部は、前記評価値の総計を算出するとともに、前記ノード間総通信量の最大値を抽出し、算出した評価値の総計と、抽出したノード間総通信量の最大値とに基づいて補正評価値を算出することを特徴とする請求項１記載のプロセス配置装置。
【請求項３】
互いに接続された複数のノードにプロセスを配置するプロセス配置装置としてのコンピュータが行うプロセス配置方法において、
前記コンピュータが前記プロセス配置装置の評価値算出部として、前記複数のノードそれぞれの位置情報と、前記複数のノードのそれぞれに配置されたプロセスの識別子とを対応付けて記憶するプロセス配置記憶部を参照し、通信元であるプロセスが配置されている通信元のノードから通信先であるプロセスが配置されている通信先のノードまでのホップ数を前記プロセス配置記憶部に記憶される該通信元のノード及び該通信先のノードの各Ｘ座標の差の絶対値及び各Ｙ座標の差の絶対値の和から特定し、
前記コンピュータが前記評価値算出部として、通信元であるプロセスの識別子、通信先であるプロセスの識別子、及び前記通信元であるプロセスと前記通信先であるプロセスとの間の通信量を示すプロセス間通信量を対応付けて記憶するプロセス間通信量記憶部から、前記通信元のノードから前記通信先のノードまでのプロセス間通信量を取得し、
前記コンピュータが前記評価値算出部として、各ノードへの各プロセスの配置についての評価値として、前記プロセス間通信量と、前記ホップ数とを乗算した値を算出し、
前記コンピュータが前記評価値算出部として、前記通信元のノードから前記通信先のノードまでの通信ルートを特定し、特定した通信ルート上の各ノード間それぞれのプロセス間の通信量を前記プロセス間通信量記憶部から取得して、取得したプロセス間通信量から隣接するノード間の通信量の総計を示すノード間総通信量を算出し、
前記コンピュータが前記プロセス配置装置の補正評価値算出部として、前記算出した評価値及び前記算出したノード間総通信量の最大値に基づいて、補正に用いる補正評価値を算出し、
前記コンピュータが前記プロセス配置装置のプロセス配置部として、前記算出した補正評価値が所定値を上回っている場合、各ノードに対する各プロセスの割り当ての新たな組合せで各ノードへ各プロセスを配置する
ことを特徴とするプロセス配置方法。
【請求項４】
互いに接続された複数のノードにプロセスを配置する処理をプロセス配置装置としてのコンピュータに実行させるプロセス配置プログラムにおいて、
前記コンピュータを前記プロセス配置装置の評価値算出部として、前記複数のノードそれぞれの位置情報と、前記複数のノードのそれぞれに配置されたプロセスの識別子とを対応付けて記憶する前記プロセス配置装置のプロセス配置記憶部を参照し、通信元であるプロセスが配置されている通信元のノードから通信先であるプロセスが配置されている通信先のノードまでのホップ数を前記プロセス配置記憶部に記憶される該通信元のノード及び該通信先のノードの各Ｘ座標の差の絶対値及び各Ｙ座標の差の絶対値の和から特定させ、
前記コンピュータを前記評価値算出部として、通信元であるプロセスの識別子、通信先であるプロセスの識別子、及び前記通信元であるプロセスと前記通信先であるプロセスとの間の通信量を示すプロセス間通信量を対応付けて記憶する前記プロセス配置装置のプロセス間通信量記憶部から、前記通信元のノードから前記通信先のノードまでのプロセス間通信量を取得させ、
前記コンピュータを前記評価値算出部として、各ノードへの各プロセスの配置についての評価値として、前記プロセス間通信量と、前記ホップ数とを乗算した値を算出させ、
前記プロセス配置装置のノード間総通信量算出部に、前記通信元のノードから前記通信先のノードまでの通信ルートを特定し、特定した通信ルート上の各ノード間それぞれのプロセス間の通信量を前記プロセス間通信量記憶部から取得して、取得したプロセス間通信量から隣接するノード間の通信量の総計を示すノード間総通信量を算出させ、
前記コンピュータを前記プロセス配置装置の補正評価値算出部として、前記算出した評価値及び前記算出したノード間総通信量の最大値に基づいて、補正評価値を算出させ、
前記コンピュータを前記プロセス配置装置のプロセス配置部として、前記算出した補正評価値が所定値を上回っている場合、各ノードに対する各プロセスの割り当ての新たな組合せで各ノードへ各プロセスを配置させる
プロセス配置プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセス配置装置、プロセス配置方法及びプロセス配置プログラムに関する。
【背景技術】
【０００２】
従来、複数の情報処理装置（以下、ノードと記す）を有するコンピュータシステムでは、各ノードに配置されたプロセスが、他のノードに配置されたプロセスと互いに通信することで並列プログラムを実行する。
【０００３】
通信元プロセスに対して、通信先プロセスが配置されたノードが異なれば、通信時に通過するノード及び通過するノード数を示す通信ホップ数が異なる。すなわち、プロセス間の通信処理時間は、プロセスが配置されるノードの位置によって影響される。
【０００４】
図１０Ａ〜図１０Ｃを用いて、プロセスが配置されるノードの位置と通信処理時間の関係を説明する。図１０Ａは、通信元プロセスに対して通信先となるプロセスを示す図であり、図１０Ｂ及び図１０Ｃは、プロセス配置の一例を示す図である。
【０００５】
図１０Ｂに示す例では、各プロセスは、通信ホップ数が「１」となるように配置されている。すなわち、各プロセスは、隣接するノードに配置されたプロセスと通信を行う。また、この場合、各ノードは、隣接するノードとのみ通信を行うので、各ノードと隣接するノードとの間は、他のプロセス間による通信に利用されることもない。このようにプロセスが配置された場合、通信処理時間は短縮される。
【０００６】
一方、図１０Ｃに示す例において、プロセスは、通信ホップ数が「２」以上となる場合を含むように配置されている。一例を示すと、プロセス６は、プロセス２と通信する場合、ノード９０３、ノード９００、ノード９０１及びノード９０２の４つのノードを通過するため、通信ホップ数が「４」となる。また、プロセス６とプロセス２との通信を行うノード９０６とノード９０３との間は、プロセス６とプロセス３との間の通信によっても利用される。すなわち、図１０Ｃに示すプロセス配置では、一回の通信に通過するノード数が多く、また、ノード間が複数の通信に利用されるので、図１０Ｂのプロセス配置に比べて通信処理時間は長くなる。
【０００７】
このようなことから、コンピュータシステムでは、通信処理時間を短縮するように、ノード上へのプロセスの配置が最適化される。例えば、コンピュータシステムは、ノードに配置したプロセスについて通信処理時間を測定して、プロセスの配置を評価する。また、コンピュータシステムは、毎回通信処理時間を測定する手間を省くために、プロセス配置について評価値を算出し、算出した値に基づいてプロセスの配置を相対的に評価する。
【０００８】
例えば、コンピュータシステムでは、以下の式（Ａ）を用いて相対的にプロセスの配置を評価する。
【０００９】
【数１】
0005724626.tif 000002
【００１０】
式（Ａ）において、｛ｈｏｐ（ｎｏｄｅ（ｉ）、ｎｏｄｅ（ｊ））｝は、通信元プロセス（ｎｏｄｅ（ｉ）が実行するプロセス）と通信先プロセス（ｎｏｄｅ（ｊ）が実行するプロセス）との間の通信ホップ数を示し、ｓｉｚｅ（ｉ、ｊ）は、通信元プロセスと通信先プロセスとの間の通信量を示す。すなわち、評価値Ｆは、すべての通信元プロセスと通信先プロセスとの組み合わせに対して、通信ホップ数と通信量とを乗じた値の総計を示す。この式（Ａ）によれば、大量の通信を行うプロセス同士ほど通信ホップ数が少なくなるように配置した場合に、評価値Ｆの値が小さくなる。このため、コンピュータシステムは、式（Ａ）の値を算出し、算出した値が所定の閾値よりも小さくなるようにプロセスを配置する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特表２００８−５１６３４６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述した従来の技術では、プロセス配置を正確に評価することができない場合があるという課題があった。
【００１３】
例えば、従来の技術では、大量の通信を行なうプロセス同士ほど通信ホップ数が少なくなるようプロセスを配置することで通信処理時間の短縮を行なっている。しかしながら、従来の技術では、個々のプロセス間の通信量を考慮しているが、ノード間の通信量を考慮していない。このため、通信ホップ数が小さくても特定のノード間に通信が集中するようにプロセスが配置される場合がある。このようにプロセスが配置された場合、通信処理時間が長くなる。
【００１４】
１つの側面では、プロセス配置を最適に配置することができるプロセス配置装置、プロセス配置方法及びプロセス配置プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
第１の案では、互いに接続された複数のノードにプロセスを配置するプロセス配置装置である。プロセス配置装置は、複数のノードそれぞれの位置情報と、複数のノードのそれぞれに配置されたプロセスの識別子とを対応付けて記憶するプロセス配置記憶部から、通信元であるプロセスが配置されている通信元のノードから通信先であるプロセスが配置されている通信先のノードまでのホップ数を特定する。また、プロセス配置装置は、通信元であるプロセスの識別子、通信先であるプロセスの識別子、及び通信元であるプロセスと通信先であるプロセスとの間の通信量を示すプロセス間通信量を対応付けて記憶するプロセス間通信量記憶部から、通信元のノードから通信先のノードまでのプロセス間通信量を取得する。そして、プロセス配置装置は、ホップ数及びプロセス間通信量に基づいてプロセス配置についての評価値を算出する。また、プロセス配置装置は、通信元のノードから通信先のノードまでの通信ルートを特定し、特定した通信ルート上の各ノード間それぞれのプロセス間の通信量をプロセス間通信量記憶部から取得して、取得したプロセス間通信量から隣接するノード間の通信量の総計を示すノード間総通信量を算出する。続いて、プロセス配置装置は、算出したプロセス配置についての評価値及び算出したノード間総通信量に基づいて、補正に用いる補正評価値を算出する。さらに、プロセス配置装置は、算出した補正評価値が所定値を下回っている場合、複数のノードのそれぞれにプロセスを新たな組合せで配置する。
【発明の効果】
【００１６】
ノード間の通信量を考慮することにより、プロセス配置を正確に評価することができる。
【図面の簡単な説明】
【００１７】
【図１】図１は、コンピュータシステムの構成例を示す図である。
【図２】図２は、プロセス配置装置の構成を示すブロック図である。
【図３】図３は、プロセス配置テーブルの一例を示す図である。
【図４】図４は、プロセス間通信量テーブルの一例を示す図である。
【図５】図５は、評価値テーブルの一例を示す図である。
【図６】図６は、ノード間総通信量テーブルの一例を示す図である。
【図７】図７は、補正評価値テーブルの一例を示す図である。
【図８】図８は、プロセス配置装置による補正評価値算出処理の処理手順を示すフローチャートである。
【図９】図９は、評価値算出プログラムを実行するコンピュータを示す図である。
【図１０Ａ】図１０Ａは、通信元プロセスに対して通信先となるプロセスを示す図である。
【図１０Ｂ】図１０Ｂは、プロセス配置の一例を示す図である。
【図１０Ｃ】図１０Ｃは、プロセス配置の一例を示す図である。
【発明を実施するための形態】
【００１８】
以下に、本願の開示するプロセス配置装置、プロセス配置方法及びプロセス配置プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１９】
実施例１では、図１から図８を用いて、実施例１に係るコンピュータシステムの構成例、実施例１に係るプロセス配置装置の構成、プロセス配置装置による処理の処理手順、実施例１の効果について説明する。
【００２０】
［実施例１に係るコンピュータシステムの構成例］
図１は、実施例１に係るコンピュータシステムの構成例を示す図である。図１に示すように、コンピュータシステム１は、ノード１０〜ノード１８、プロセス配置装置１００を有する。ノード１０〜ノード１８それぞれは、隣接する各ノードと、メッシュ状に接続されており、互いに通信可能である。また、各ノードには、プロセスが配置されており、他のノードに配置されたプロセスと互いに通信することで並列プログラムを実行する。プロセス配置装置１００は、各ノードと、例えばＬＡＮ（Local  Area  Network）などで互いに通信可能に接続される。なお、コンピュータシステム１における各ノードと隣接するノードとの接続は、メッシュ状の接続に限定されるものではなく、トーラス状又はループ状に接続されてもよい。
【００２１】
ノード１０は、ＣＰＵ（Central  Processing  Unit）とメモリとを有する情報処理装置であり、プロセス配置装置１００によって配置されたプロセス「６」を実行する。なお、ノード１１〜ノード１８の動作についてもノード１０の動作と同様であるため、ここでは説明を省略する。
【００２２】
プロセス配置装置１００は、プロセスを各ノードに配置する。そして、プロセス配置装置１００は、プロセスの配置が最適化されているか否かを判定する。例えば、プロセス配置装置１００は、プロセスの配置を相対的に評価する評価値を算出し、算出した評価値が所定の閾値を下回ったか否かを判定する。
【００２３】
ここで、プロセス配置装置１００は、算出した評価値が所定の閾値を下回っていないと判定した場合、新たにプロセスを各ノードに配置し、評価値を算出する。一方、プロセス配置装置１００は、算出した評価値が所定の閾値を下回ったと判定した場合、プロセスの配置が最適化されていると判定する。
【００２４】
［実施例１に係るプロセス配置装置の構成］
次に、図２を用いて、実施例１に係るプロセス配置装置１００の構成を説明する。図２は、実施例１に係るプロセス配置装置の構成を示すブロック図である。実施例１に係るプロセス配置装置１００は、入力部１０１と出力部１０２と通信制御Ｉ／Ｆ部１０３と記憶部１１０と制御部１２０とを有する。
【００２５】
入力部１０１は、例えば、キーボードやマウスなどであり、利用者から各種の設定や操作の入力を受付ける。出力部１０２は、例えば、ディスプレイなどであり、各種の情報を出力する。
【００２６】
通信制御Ｉ／Ｆ部１０３は、少なくとも１つの通信ポートを有するインターフェースであり、ノードを含む他の装置との間でやり取りされる情報を制御する。例えば、通信制御Ｉ／Ｆ部１０３は、各ノードにプロセスを配置する。
【００２７】
記憶部１１０は、例えば、半導体メモリ素子などの記憶装置であり、プロセス配置テーブル１１１、プロセス間通信量テーブル１１２、評価値テーブル１１３、ノード間総通信量テーブル１１４、補正評価値テーブル１１５を有する。
【００２８】
プロセス配置テーブル１１１は、メッシュ状またはトーラス状に接続されたノードそれぞれの位置情報と、ノードのそれぞれに配置されたプロセスの識別子とを対応付けて記憶する。図３を用いて、プロセス配置テーブル１１１の一例を説明する。図３は、プロセス配置テーブル１１１の一例を示す図である。例えば、プロセス配置テーブル１１１は、図３に示すように、「プロセスＩＤ」と「ノードＩＤ」と「Ｘ座標」と「Ｙ座標」とをそれぞれ対応付けて記憶する。
【００２９】
ここで、プロセス配置テーブル１１１として記憶される「プロセスＩＤ」は、プロセスの識別子を示し、例えば、「０」、「１」、「２」などが格納される。また、「ノードＩＤ」は、ノードの識別子を示し、例えば、「１４」、「１７」、「１５」などが格納される。なお、説明の便宜上、「プロセスＩＤ」に格納される値と、図１に示す各プロセスの番号とが対応し、「ノードＩＤ」に格納される値と、図１に示す各ノードに付した符号とが対応するものとして説明する。
【００３０】
また、「Ｘ座標」は、各ノードの位置情報を二次元座標で表現した場合のＸ座標を示し、例えば、「０」、「１」、「２」などが格納される。また、「Ｙ座標」は、各ノードの位置情報を二次元座標で表現した場合のＹ座標を示し、例えば、「０」、「１」、「２」などが格納される。なお、「Ｘ座標」及び「Ｙ座標」は、図１に示したノード１０を原点（０、０）とした二次元座標により表されるものとして説明する。
【００３１】
また、プロセス配置テーブル１１１として記憶される「ノードＩＤ」と「Ｘ座標」と「Ｙ座標」とは、利用者によって予め設定された値が格納される。また、プロセス配置テーブル１１１として記憶される「プロセスＩＤ」は、後述するプロセス配置部１２１によって格納される。
【００３２】
具体的には、図３に示す例の場合、プロセス配置テーブル１１１は、ＩＤが「０」で識別されるプロセスが、座標（１、１）に位置するノード１４に配置され、ＩＤが「１」で識別されるプロセスが、座標（１、２）に位置するノード１７に配置されることを示す。同様に、プロセス配置テーブル１１１は、ＩＤが「２」で識別されるプロセスが、座標（２、１）に位置するノード１５に配置され、ＩＤが「３」で識別されるプロセスが、座標（１、０）に位置するノード１１に配置されることを示す。
【００３３】
プロセス間通信量テーブル１１２は、通信元であるプロセスの識別子、通信先であるプロセスの識別子、及び通信元であるプロセスと通信先であるプロセスとの間の通信量を示すプロセス間通信量をそれぞれ対応付けて記憶する。図４を用いて、プロセス間通信量テーブル１１２の一例を説明する。図４は、プロセス間通信量テーブルの一例を示す図である。例えば、プロセス間通信量テーブル１１２は、図４に示すように、「通信元プロセスＩＤ」と「通信先プロセスＩＤ」と「プロセス間通信量（Ｂｙｔｅ）」とを対応付けて記憶する。
【００３４】
ここで、プロセス間通信量テーブル１１２として記憶される「通信元プロセスＩＤ」は、通信元となるプロセスの識別子を示し、例えば、「０」、「１」、「２」などが格納される。「通信先プロセスＩＤ」は、通信先となるプロセスの識別子を示し、例えば、「２」、「３」、「８」などが格納される。「プロセス間通信量（Ｂｙｔｅ）」は、通信先プロセスと通信先プロセスとの間で通信される通信量を示し、例えば、「９０４」、「６４」、「１２８」などが格納される。
【００３５】
具体的には、図４に示す例の場合、プロセス間通信量テーブル１１２は、ＩＤが「０」で識別されるプロセスを通信元にして、ＩＤが「２」で識別されるプロセスを通信先にする通信の通信量が「９０４（Ｂｙｔｅ）」であることを示す。同様に、プロセス間通信量テーブル１１２は、ＩＤが「０」で識別されるプロセスを通信元にして、ＩＤが「３」で識別されるプロセスを通信先にする通信の通信量が「６４（Ｂｙｔｅ）」であることを示す。
【００３６】
評価値テーブル１１３は、通信元プロセスと通信先プロセスとの間のプロセス配置についての評価値を記憶する。図５を用いて、評価値テーブル１１３の一例を説明する。図５は、評価値テーブルの一例を示す図である。例えば、評価値テーブル１１３は、図５に示すように、「通信元プロセスＩＤ」と「通信先プロセスＩＤ」と「評価値」とを対応付けて記憶する。
【００３７】
ここで、評価値テーブル１１３として記憶される「通信元プロセスＩＤ」、「通信先プロセスＩＤ」は、プロセス間通信量テーブル１１２で説明した「通信元プロセスＩＤ」、「通信先プロセスＩＤ」と同様であるので説明を省略する。「評価値」は、通信元プロセスと通信先プロセスとの間のプロセス配置を相対的に評価する値であり、例えば、「評価値」には、「０」、「９０４」、「６４」などが格納される。なお、「評価値」として格納される値は、後述する評価値算出部１２２ａによって算出される。
【００３８】
具体的には、図５に示す例の場合、評価値テーブル１１３は、ＩＤが「０」で識別されるプロセスを通信元にして、ＩＤが「１」で識別されるプロセスを通信先にするプロセスの配置についての評価値が「０」であることを示す。同様に、評価値テーブル１１３は、ＩＤが「０」で識別されるプロセスを通信元にして、ＩＤが「２」で識別されるプロセスを通信先にするプロセスの配置についての評価値が「９０４」であることを示す。
【００３９】
ノード間総通信量テーブル１１４は、あるプロセス配置について、プロセスが配置された各ノード間の通信量の総計を記憶する。図６を用いて、ノード間総通信量テーブル１１４の一例を説明する。図６は、ノード間総通信量テーブルの一例を示す図である。例えば、ノード間総通信量テーブル１１４は、図６に示すように、「通信元プロセスが配置されているノードＩＤ」と「通信先プロセスが配置されているノードＩＤ」と「ノード間総通信量（Ｂｙｔｅ）」とを対応付けて記憶する。
【００４０】
ここで、ノード間総通信量テーブル１１４として記憶される「通信元プロセスが配置されているノードＩＤ」は、通信元となるプロセスが配置されているノードの識別子を示し、例えば、「１４」が格納される。「通信先プロセスが配置されているノードＩＤ」は、通信先となるプロセスが配置されているノードの識別子を示し、例えば、「１１」、「１３」、「１５」などが格納される。「ノード間総通信量（Ｂｙｔｅ）」は、プロセスが配置されたノードと隣接するノードとの間の通信量の総計を示し、例えば、「４４８」、「０」、「２５６」などが格納される。
【００４１】
具体的には、図６に示す例の場合、ノード間総通信量テーブル１１４は、ノード１４とノード１１との間の通信量の総計が「４４８（Ｂｙｔｅ）」であり、ノード１４とノード１３との間の通信量の総計が「０（Ｂｙｔｅ）」であることを示す。
【００４２】
補正評価値テーブル１１５は、あるプロセス配置に対して、プロセス配置を相対的に評価する評価値を記憶する。図７を用いて、補正評価値テーブル１１５の一例を説明する。図７は、補正評価値テーブルの一例を示す図である。例えば、補正評価値テーブル１１５は、図７に示すように、「プロセス配置ＩＤ」と「補正評価値」とを対応付けて記憶する。
【００４３】
ここで、補正評価値テーブル１１５として記憶される「プロセス配置ＩＤ」は、ノードに配置した通信元プロセスと通信先プロセスを含むプロセスの組み合わせを識別する識別子を示し、例えば、「ｘｘｘ１」、「ｘｘｘ２」などが格納される。また、「補正評価値」は、プロセス配置を相対的に評価する値であり、例えば、「補正評価値」には、「３０１２」、「７４０」などが格納される。
【００４４】
具体的には、図７に示す例の場合、補正評価値テーブル１１５は、ＩＤが「ｘｘｘ１」で識別されるプロセス配置の評価値が「３０１２」であることを示す。同様に、補正評価値テーブル１１５は、ＩＤが「ｘｘｘ２」で識別されるプロセス配置の評価値が「７４０」であることを示す。なお、「補正評価値」として格納される値は、後述する補正評価値算出部１２２ｃによって算出される。
【００４５】
制御部１２０は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、プロセス配置部１２１と評価部１２２と補正評価値判定部１２３とを有する。例えば、制御部１２０は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、又は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路を用いて実現される。
【００４６】
プロセス配置部１２１は、メッシュ状またはトーラス状に接続されたノードそれぞれにプロセスを配置し、配置したプロセスの識別子をノードの位置情報に対応付けてプロセス配置テーブル１１１に格納する。
【００４７】
例えば、プロセス配置部１２１は、座標（２、１）に配置されたノード１５にプロセス２を配置した場合、以下の処理を実行する。すなわち、プロセス配置部１２１は、図３に示したプロセス配置テーブル１１１の「ノードＩＤ」が「１５」、「Ｘ座標」が「２」、「Ｙ座標」が「１」に対応する「プロセスＩＤ」に「２」を格納する。
【００４８】
また、プロセス配置部１２１は、ノードにプロセスを配置した場合、配置したプロセスの組み合わせに対して識別子を付与する。言い換えると、プロセス配置部１２１は、プロセス配置テーブル１１１が示すプロセス配置の組み合わせに対して、プロセス配置ＩＤを付与する。
【００４９】
評価部１２２は、評価値算出部１２２ａ、ノード間総通信量算出部１２２ｂ、補正評価値算出部１２２ｃを有し、プロセス配置部１２１によってノードに配置されたプロセスの配置を評価する。
【００５０】
評価値算出部１２２ａは、通信ホップ数及びプロセス間通信量に基づいて通信元プロセスと通信先プロセスとの間の評価値を算出する。ここで、通信ホップ数は、通信元であるプロセスが配置されている通信元のノードから通信先であるプロセスが配置されている通信先のノードに通信する場合に通過するノード数を示し、プロセス配置テーブル１１１から特定される。また、プロセス間通信量は、プロセス間通信量テーブル１１２から取得される。
【００５１】
例えば、評価値算出部１２２ａは、ＩＤが「０」で識別される通信元プロセスとＩＤが「２」で識別される通信先プロセスとの間の評価値を以下の処理を実行して算出する。なお、図３に示すプロセス配置テーブル１１１の通りにプロセスが配置され、プロセス間の通信量が図４に示すプロセス間通信量テーブル１１２の通りであるとする。
【００５２】
評価値算出部１２２ａは、ＩＤが「０」で識別される通信元プロセスが配置されているノード１４及びＩＤが「２」で識別される通信先プロセスが配置されているノード１５をプロセス配置テーブル１１１から特定する。続いて、評価値算出部１２２ａは、ノード１４からノード１５に通信するまでの通信ホップ数として「１」を特定する。具体的には、評価値算出部１２２ａは、ノード１４の座標（１、１）からノード１５の座標（２、１）の差（−１、０）を算出し、算出したＸ座標の絶対値「１」とＹ座標の絶対値「０」との和「１」を通信ホップ数として特定する。
【００５３】
また、評価値算出部１２２ａは、ＩＤが「０」で識別される通信元プロセスとＩＤが「２」で識別される通信先プロセスとの間のプロセス間通信量「９０４（Ｂｙｔｅ）」をプロセス間通信量テーブル１１２から取得する。
【００５４】
そして、評価値算出部１２２ａは、特定した通信ホップ数に取得したプロセス間通信量を乗じた値を評価値として算出する。例えば、評価値算出部１２２ａは、通信ホップ数「１」にプロセス間通信量「９０４（Ｂｙｔｅ）」を乗じて評価値「９０４」を算出する。
【００５５】
別例として、ＩＤが「２」で識別される通信元プロセスとＩＤが「６」で識別される通信先プロセスとの間の評価値の算出を示す。評価値算出部１２２ａは、通信元プロセス「２」が配置されているノード１５及び通信先プロセス「６」が配置されているノード１０をプロセス配置テーブル１１１から特定する。続いて、評価値算出部１２２ａは、ノード１５からノード１０に通信するまでの通信ホップ数として「３」を特定する。
【００５６】
また、評価値算出部１２２ａは、通信元プロセス「２」と通信先プロセス「６」との間のプロセス間通信量「１２８（Ｂｙｔｅ）」をプロセス間通信量テーブル１１２から取得する。そして、評価値算出部１２２ａは、通信ホップ数「３」にプロセス間通信量「１２８（Ｂｙｔｅ）」を乗じて評価値「３８４」を算出する。
【００５７】
ノード間総通信量算出部１２２ｂは、ノード間の通信量の総計を示すノード間総通信量を算出する。例えば、ノード間総通信量算出部１２２ｂは、通信元であるプロセスが配置されているノードから通信先であるプロセスが配置されているノードまでの通信ルートを特定する。また、ノード間総通信量算出部１２２ｂは、プロセス間の通信量をプロセス間通信量テーブル１１２から取得する。そして、ノード間総通信量算出部１２２ｂは、特定した通信ルート上の各ノード間それぞれについて取得したプロセス間通信量を加算する。さらに、ノード間総通信量算出部１２２ｂは、すべてのプロセス間通信に対して、同様の処理を実行し、各ノード間の通信量の総計を示すノード間総通信量を算出する。
【００５８】
例えば、図３に示したプロセス配置テーブル１１１の通りにプロセスが配置される場合、ノード間総通信量算出部１２２ｂは、プロセス「０」が配置されたノード１４とプロセス「３」が配置されたノード１１との間の通信量の総計を以下の処理を実行して算出する。なお、説明の便宜上、ノード１４とノード１１との間は、プロセス「０」とプロセス「３」との通信、プロセス「０」とプロセス「４」との通信、プロセス「１」とプロセス「３」との通信、プロセス「２」とプロセス「６」との通信に利用されるものとする。
【００５９】
ノード間総通信量算出部１２２ｂは、プロセス「０」とプロセス「３」との通信量が「６４（Ｂｙｔｅ）」であり、プロセス「０」とプロセス「４」との通信量が「１２８（Ｂｙｔｅ）」であることを図４に示すプロセス間通信量テーブル１１２から取得する。同様に、ノード間総通信量算出部１２２ｂは、プロセス「１」とプロセス「３」との通信量が「６４（Ｂｙｔｅ）」であり、プロセス「２」とプロセス「６」との通信量が「１２８（Ｂｙｔｅ）」であることを取得する。そして、ノード間総通信量算出部１２２ｂは、取得した各プロセス間の通信量の和を算出して、ノード間の通信量の総計を算出する。例えば、ノード間総通信量算出部１２２ｂは、ノード１４とノード１１との間の通信量の総計として、「６４＋１２８＋１２８＋１２８＝４４８（Ｂｙｔｅ）」を算出する。
【００６０】
補正評価値算出部１２２ｃは、評価値算出部１２２ａによって算出された評価値及びノード間総通信量算出部１２２ｂによって算出されたノード間総通信量に基づいて、補正評価値を算出する。
【００６１】
例えば、補正評価値算出部１２２ｃは、以下の式（Ｂ）に基づいて、補正評価値を算出する。
【００６２】
【数２】
0005724626.tif 000003
【００６３】
式（Ｂ）において、｛ｈｏｐ（ｎｏｄｅ（ｉ）、ｎｏｄｅ（ｊ））｝は、通信元プロセス（（ｎｏｄｅ（ｉ）が実行するプロセス）と通信先プロセス（ｎｏｄｅ（ｊ）が実行するプロセス）との間の通信ホップ数を示し、ｓｉｚｅ（ｉ、ｊ）は、通信元プロセスと通信先プロセスとの間の通信量を示す。また、ｍａｘ（ＤＢ）は、ノード間総通信量の最大値を示す。
【００６４】
すなわち、補正評価値算出部１２２ｃは、評価値の総計を算出するとともに、ノード間総通信量の最大値を抽出し、算出した評価値の総計と、抽出したノード間総通信量の最大値とに基づいて補正評価値を算出する。
【００６５】
具体的には、補正評価値算出部１２２ｃは、通信元プロセスと通信先プロセスとのすべての組み合わせに対する評価値を評価値テーブル１１３から読み出し、読み出した評価値の総計を算出する。また、補正評価値算出部１２２ｃは、ノード間総通信量テーブル１１４からノード間総通信量の最大値を抽出する。
【００６６】
そして、補正評価値算出部１２２ｃは、評価値の総計にノード間総通信量の最大値を乗じた値を補正評価値として算出する。続いて、補正評価値算出部１２２ｃは、算出した補正評価値を補正評価値テーブル１１５の「補正評価値」に「プロセス配置ＩＤ」と対応付けて格納する。
【００６７】
補正評価値判定部１２３は、補正評価値算出部１２２ｃによって算出された補正評価値が所定の閾値を下回ったか否かを判定する。そして、補正評価値判定部１２３は、補正評価値が所定の閾値を下回っていると判定した場合、プロセスの配置が最適化されていると判定する。この場合、補正評価値判定部１２３は、プロセスの配置が最適化されていることを出力部１０２に出力するようにしてもよい。
【００６８】
一方、補正評価値判定部１２３は、補正評価値が所定の閾値を上回っていると判定した場合、プロセスの配置が最適化されていないと判定する。そして、補正評価値判定部１２３は、補正評価値が所定の閾値を上回っていることをプロセス配置部１２１に通知する。この結果、プロセス配置部１２１は、各ノードに新たな組み合わせでプロセスを配置する。
【００６９】
所定の閾値を例えば「８００」として補正評価値判定部１２３の動作の一例を説明する。補正評価値判定部１２３は、図７に示すプロセス配置ＩＤが「ｘｘｘ１」の場合、補正評価値「３０１２」が所定の閾値「８００」を下回っていると判定し、配置されたプロセスが最適化されていないと判定する。補正評価値判定部１２３が、補正評価値が所定の閾値を上回っていることにより、配置されたプロセスが最適化されていないと判定した場合、プロセス配置部１２１は、各ノードに新たな組み合わせでプロセスを配置し、補正評価値判定部１２３は、新たな組み合わせで配置したプロセスの補正評価値が所定の閾値「８００」を下回っているか再度判定する。また、補正評価値判定部１２３は、図７に示すプロセス配置ＩＤが「ｘｘｘ２」の場合、補正評価値「７４０」が所定の閾値「８００」を下回っていると判定し、配置されたプロセスが最適化されていると判定する。なお、所定の閾値は「８００」に限定されるものではなく、任意に変更可能である。
【００７０】
［実施例１に係る評価値算出装置よる処理の処理手順］
次に図８を用いて、実施例１に係るプロセス配置装置１００による補正評価値算出処理の処理手順を説明する。図８は、実施例１に係るプロセス配置装置による補正評価値算出処理の処理手順を説明するフローチャートである。図８に示すように、プロセス配置装置１００は、プロセスが配置されたことを契機として処理を実行する。
【００７１】
プロセス配置装置１００は、通信元プロセスを選択し（ステップＳ１０１）、選択した通信元プロセスが配置されているノードを特定する（ステップＳ１０２）。また、プロセス配置装置１００は、通信先プロセスを選択し（ステップＳ１０３）、選択した通信先プロセスが配置されているノードを特定する（ステップＳ１０４）。
【００７２】
プロセス配置装置１００は、特定した通信元プロセスが配置されているノードから通信先プロセスが配置されているノードまでの通信ホップ数を特定する（ステップＳ１０５）。また、プロセス配置装置１００は、特定した通信元プロセスが配置されているノードから通信先プロセスが配置されているノードとの間の通信量をプロセス間通信量テーブル１１２から特定する（ステップＳ１０６）。そして、プロセス配置装置１００は、通信ホップ数とプロセス間通信量とから評価値を算出する（ステップＳ１０７）。
【００７３】
プロセス配置装置１００は、通信元プロセスが配置されているノードから通信先プロセスが配置されているノードまでの通信ルートを特定し（ステップＳ１０８）、特定した通信ルート上のノード間それぞれのノード間総通信量を算出する（ステップＳ１０９）。
【００７４】
プロセス配置装置１００は、すべての通信先プロセスについて処理を実行したか否かを判定する（ステップＳ１１０）。ここで、プロセス配置装置１００は、すべての通信先プロセスについて処理を実行していないと判定した場合（ステップＳ１１０、Ｎｏ）、ステップＳ１０３に移行する。一方、プロセス配置装置１００は、すべての通信先プロセスについて処理を実行したと判定した場合（ステップＳ１１０、Ｙｅｓ）、すべての通信元プロセスについて処理を実行したか否かを判定する（ステップＳ１１１）。
【００７５】
プロセス配置装置１００は、すべての通信元プロセスについて処理を実行していないと判定した場合（ステップＳ１１１、Ｎｏ）、ステップＳ１０１に移行する。一方、プロセス配置装置１００は、すべての通信元プロセスについて処理を実行したと判定した場合（ステップＳ１１１、Ｙｅｓ）、ステップＳ１１２を実行する。
【００７６】
すなわち、プロセス配置装置１００は、すべての組み合わせについて算出された評価値の総計を算出する（ステップＳ１１２）。また、プロセス配置装置１００は、すべての組み合わせについて算出されたノード間総通信量の中から最大値を抽出する（ステップＳ１１３）。そして、プロセス配置装置１００は、評価値の総計とノード間総通信量の最大値とから補正評価値を算出する（ステップＳ１１４）。補正評価値判定部１２３は、補正評価値と所定の閾値との比較に基づき、配置されたプロセスが最適化されているかを判定する（ステップＳ１１５）。補正評価値判定部１２３が、補正評価値が所定の閾値を上回っており、配置されたプロセスが最適化されていないと判定した場合（ステップＳ１１５、Ｎｏ）、プロセス配置部１２１は、各ノードに新たな組み合わせでプロセスを配置する(ステップＳ１１６)。補正評価値判定部１２３は、新たな組み合わせで配置したプロセスの補正評価値が所定の閾値「８００」を下回っているか再度判定する（ステップＳ１１５）。プロセス配置装置１００は、補正評価値判定部１２３が、補正評価値が所定の閾値を下回っており、配置されたプロセスが最適化されていると判定した場合（ステップＳ１１５、Ｙｅｓ）、処理を終了する。
【００７７】
［実施例１の効果］
上述してきたように、実施例１では、プロセス配置装置１００は、補正評価値Ｆを上記した式（Ｂ）によって算出する。補正評価値の値を小さくするためには、通信ホップ数とプロセス間通信量とを小さくするとともに、特定のノード間に通信を集中させないことが必要となる。すなわち、プロセス配置装置１００は、従来の技術と比較して、ノード間の通信量を考慮することにより、プロセス配置の評価を向上することができる。この結果、プロセス配置装置１００は、大量の通信を行うプロセス同士ほどノード間が他の通信に利用されず、かつ通信ホップ数が少なくなるようにプロセスの配置を選択するので、通信処理時間を短縮できる。
【実施例２】
【００７８】
ところで、本発明は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例２では、本発明に含まれる他の実施例について説明する。
【００７９】
（システム構成等）
本実施例において説明した各処理のうち自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、制御手順、具体的名称については、特記する場合を除いて任意に変更することができる。
【００８０】
また、プロセス配置部１２１は、ノードそれぞれにプロセスを配置し、配置したプロセスの識別子をノードの位置情報に対応付けてプロセス配置テーブル１１１に格納するものとして説明したがこれに限定されるものではない。例えば、プロセス配置部１２１は、利用者によって予めプロセス配置テーブル１１１に設定されたプロセスの配置に基づいて、ノードそれぞれにプロセスを配置してもよい。
【００８１】
また、図示した記憶部が格納する情報は一例に過ぎず、必ずしも図示のごとく情報が格納される必要はなく、任意に設定変更できる。例えば、プロセス配置テーブル１１１は、ノードのネットワークがメッシュ状またはトーラス状であることを示す情報を記憶してもよい。
【００８２】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更してもよい。例えば、図８に示すステップＳ１０５とステップＳ１０６との順番を入れ替えても良い。
【００８３】
また、図示した各構成部は、機能概念的なものであり、必ずしも物理的に図示のごとく構成されていることを要しない。例えば、プロセス配置装置１００では、評価部１２２と補正評価値判定部１２３とが統合されてもよい。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８４】
（プログラム）
ところで、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。
【００８５】
図９は、評価値算出プログラムを実行するコンピュータを示す図である。図９に示すように、コンピュータ３００は、利用者からデータや各種設定などを受け付ける入力装置３１０と、コンピュータの状況などを通知する出力装置３２０とを有する。また、コンピュータ３００は、他の装置とデータを送受信するネットワークインターフェース３３０と媒体読取装置３４０とＨＤＤ（Hard  Disk  Drive）３５０とＲＡＭ（Random  Access  Memory）３６０とＣＰＵ３７０とバス３８０とを有する。そして、各装置３１０〜３７０それぞれは、バス３８０に接続される。
【００８６】
ここで、図９に示すように、ＨＤＤ３５０には、図２に示した、評価値算出部１２２ａとノード間総通信量算出部１２２ｂと補正評価値算出部１２２ｃと同様の機能を発揮する評価値算出プログラム３５１が予め記憶されている。また、媒体読取装置３４０は、評価値算出プログラム３５１を実現するための各種データを記憶する。この各種データは、例えば、プロセス配置テーブル１１１やプロセス間通信量テーブル１１２を含む。そして、ＣＰＵ３７０は、評価値算出プログラム３５１をＨＤＤ３５０から読み出して、評価値算出プロセス３７１として実行する。すなわち、評価値算出プロセス３７１は、図２に示した、評価値算出部１２２ａとノード間総通信量算出部１２２ｂと補正評価値算出部１２２ｃと同様の動作を実行する。
【００８７】
ところで、上記した評価値算出プログラム３５１は、必ずしもＨＤＤ３５０に記憶させておく必要はない。例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に記憶させておくようにしてもよい。また、コンピュータ３００の外に備えられるＨＤＤなどの「固定用の物理媒体」に記憶させておいてもよい。さらに、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）などを介してコンピュータ３００に接続される「他のコンピュータシステム」に記憶させておいてもよい。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【００８８】
すなわち、このプログラムは、上記した「可搬用の物理媒体」、「固定用の物理媒体」、「通信媒体」などの記録媒体に、コンピュータ読み取り可能に記憶されるものである。そして、コンピュータ３００は、このような記録媒体からプログラムを読み出して実行することで上記した実施例と同様の機能を実現する。なお、この他の実施例でいうプログラムは、コンピュータ３００によって実行されることに限定されるものではない。例えば、他のコンピュータシステムまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【００８９】
１  コンピュータシステム
１０、１１、１２、１３、１４、１５、１６、１７、１８  ノード
１００  プロセス配置装置
１０１  入力部
１０２  出力部
１０３  通信制御Ｉ／Ｆ部
１１０  記憶部
１１１  プロセス配置テーブル
１１２  プロセス間通信量テーブル
１１３  評価値テーブル
１１４  ノード間総通信量テーブル
１１５  補正評価値テーブル
１２０  制御部
１２１  プロセス配置部
１２２  評価部
１２２ａ  評価値算出部
１２２ｂ  ノード間総通信量算出部
１２２ｃ  補正評価値算出部
１２３  補正評価値判定部
３００  コンピュータ
３１０  入力装置
３２０  出力装置
３３０  ネットワークインターフェース
３４０  媒体読取装置
３５０  ＨＤＤ
３５１  評価値算出プログラム
３６０  ＲＡＭ
３７０  ＣＰＵ
３７１  評価値算出プロセス
３８０  バス
【図１】
0005724626.tif 000004
【図２】
0005724626.tif 000005
【図３】
0005724626.tif 000006
【図４】
0005724626.tif 000007
【図５】
0005724626.tif 000008
【図６】
0005724626.tif 000009
【図７】
0005724626.tif 000010
【図８】
0005724626.tif 000011
【図９】
0005724626.tif 000012
【図１０Ａ】
0005724626.tif 000013
【図１０Ｂ】
0005724626.tif 000014
【図１０Ｃ】
0005724626.tif 000015