"プログラムを実行する並列計算機と前記並列計算機を制御する制御装置を有する並列計算機システムにおいて、前記並列計算機は、互いに接続された複数の計算ノードをそれぞれ備える複数の計算ユニットと、隣り合う2つの計算ユニットに含まれる計算ノードを一対一に接続する複数の経路を介して、前記隣り合う計算ユニットをそれぞれ接続する複数のリンクを有し、前記制御装置は、前記並列計算機が有する計算ノードから故障が発生した故障ノードを検出する故障ノード検出部と、前記プログラムの実行に必要な計算ノード数に基づき、前記並列計算機が有する計算ノードから前記検出された故障ノードを除いて前記プログラムを実行させる実行ノードを選択する実行ノード選択部と、前記選択された実行ノードを含む複数の計算ユニットにおいて、隣り合う2つの計算ユニットをそれぞれ接続するリンクに含まれる経路のうち、前記検出された故障ノードに接続された経路以外の経路を、計算ノードを接続する経路として選択する経路選択部を有することを特徴とする並列計算機システム。前記並列計算機システムにおいて、前記複数の計算ユニットは前記複数のリンクを介して直線状に接続されるとともに、前記各計算ユニットが備える複数の計算ノードは環状に接続され、前記経路選択部は、前記選択された実行ノードを含む計算ユニットのうち、一端に配置された計算ユニットが含むいずれかの計算ノードから、他端に配置された計算ユニットが含むいずれかの計算ノードまでの経路を、前記検出された故障ノードに接続された経路以外の経路を一筆書きを描くように選択することを特徴とする請求項1記載の並列計算機システム。前記並列計算機システムにおいて、前記複数の計算ユニットは前記複数のリンクを介して直線状に接続されるとともに、前記各計算ユニットが備える複数の計算ノードは環状に接続され、前記経路選択部は、前記選択された実行ノードを含む計算ユニットのうち、一端に配置された計算ユニットから他端に配置された計算ユニットまでの往路と復路との経路を、前記検出された故障ノードに接続された経路以外の経路から、他端に配置された計算ユニットで折り返すように選択することを特徴とする請求項1記載の並列計算機システム。前記並列計算機システムにおいて、前記複数の計算ユニットは前記複数のリンクを介してX軸方向及びY軸方向にそれぞれ2次元のメッシュ状に接続されるとともに、前記各計算ユニットが備える複数の計算ノードは環状に接続され、前記経路選択部は、前記X軸方向に接続された複数の計算ユニット群のそれぞれについて、前記選択された実行ノードを含む計算ユニットのうち、一端に配置された計算ユニットから、他端に配置された計算ユニットが含むいずれかの計算ノードまで、前記検出された故障ノードに接続された経路以外の経路を、一筆書きを描くように選択することを特徴とする請求項1記載の並列計算機システム。前記並列計算機システムにおいて、前記複数の計算ユニットは前記複数のリンクを介してX軸方向及びY軸方向にそれぞれ2次元のメッシュ状に接続されるとともに、前記各計算ユニットが備える複数の計算ノードは円環状に接続され、前記経路選択部は、前記X軸方向に接続された計算ユニットのそれぞれについて、前記選択された実行ノードを含む計算ユニットのうち、一端に配置された計算ユニットから、前記検出された故障ノードに接続された経路以外の経路について往路と復路の2つの経路を、他端に配置された計算ユニットで折り返すように選択することを特徴とする請求項1記載の並列計算機システム。前記並列計算機システムにおいて、前記複数の計算ユニットは前記複数のリンクを介して、任意の次元数を有するメッシュ状に接続されるとともに、前記各計算ユニットが備える複数の計算ノードは円環状に接続され、前記経路選択部は、各計算ユニットをそれぞれ同数の計算ノードを有する複数のブロックに等分割し、前記リンクのうち任意の1軸方向に前記複数の計算ユニットを接続するリンクによって接続されたブロックを含むブロック群のいずれかひとつのブロック群について、前記選択された実行ノードを含むブロックのうち、一端に配置されたブロックから他端に配置されたブロックが含む計算ノードまで、前記検出された故障ノードに接続された経路以外の経路を一筆書きを描くように選択し、当該選択した経路を全てのブロック群に対して適用することを特徴とする請求項1記載の並列計算機システム。前記並列計算機システムにおいて、前記複数の計算ユニットは前記複数のリンクを介して、任意の次元数を有するメッシュ状に接続されるとともに、前記複数の計算ユニットが備える複数の計算ノードは円環状に接続され、前記経路選択部は、各計算ユニットをそれぞれ同数の計算ノードを有する複数のブロックに等分割し、前記リンクのうち任意の1軸方向に前記複数の計算ユニットを接続するリンクによって接続されたブロックを含むブロック群のいずれかひとつのブロック群について、前記選択された実行ノードを含む複数のブロックのいずれかのブロックのうち、一端に配置されたブロックから他端に配置されたブロックまでの往路と復路との経路を、前記検出された故障ノードに接続された経路以外の経路を他端に配置されたブロックで折り返すように選択し、当該選択した経路を全てのブロック群に対して適用することを特徴とする請求項1記載の並列計算機システム。プログラムを実行する互いに接続された複数の計算ノードをそれぞれ備える複数の計算ユニットと、隣り合う2つの計算ユニットに含まれる計算ノードを一対一に接続する複数の経路を介して、前記隣り合う計算ユニットをそれぞれ接続する複数のリンクを備えた並列計算機を制御する制御装置において、前記制御装置は、前記並列計算機が有する計算ノードから故障が発生した故障ノードを検出する故障ノード検出部と、前記プログラムの実行に必要な計算ノード数に基づき、前記並列計算機が有する複数の計算ノードから前記検出された故障ノードを除いて、前記プログラムを実行させる実行ノードを選択する実行ノード選択部と、前記選択された実行ノードを含む複数の計算ユニットにおいて、隣り合う2つの計算ユニットをそれぞれ接続するリンクに含まれる経路のうち、前記検出された故障ノードに接続された経路以外の経路を、計算ノードを接続する経路として選択する経路選択部を有することを特徴とする制御装置。前記複数の計算ユニットは前記複数のリンクを介して直線状に接続されるとともに、前記複数の計算ユニットが備える複数の計算ノードは環状に接続され、前記経路選択部は、前記選択された実行ノードを含む計算ユニットのうち、一端に配置された計算ユニットが含むいずれかの計算ノードから、他端に配置された計算ユニットが含むいずれかの計算ノードまでの経路を、前記検出された故障ノードに接続された経路以外の経路を一筆書きを描くように選択することを特徴とする請求項8記載の制御装置。前記複数の計算ユニットは前記複数のリンクを介して直線状に接続されるとともに、前記各計算ユニットが備える複数の計算ノードは環状に接続され、前記経路選択部は、前記選択された実行ノードを含む計算ユニットのうち、一端に配置された計算ユニットから他端に配置された計算ユニットまでの往路と復路との経路を、前記検出された故障ノードに接続された経路以外の経路から、他端に配置された計算ユニットで折り返すように選択することを特徴とする請求項8記載の制御装置。前記複数の計算ユニットは前記複数のリンクを介してX軸方向及びY軸方向にそれぞれ2次元のメッシュ状に接続されるとともに、前記各計算ユニットが備える複数の計算ノードは環状に接続され、前記経路選択部は、前記X軸方向に接続された複数の計算ユニット群のそれぞれについて、前記選択された実行ノードを含む計算ユニットのうち、一端に配置された計算ユニットから、他端に配置された計算ユニットが含むいずれかの計算ノードまで、前記検出された故障ノードに接続された経路以外の経路を、一筆書きを描くように選択することを特徴とする請求項8記載の制御装置。前記複数の計算ユニットは前記複数のリンクを介してX軸方向及びY軸方向にそれぞれ2次元のメッシュ状に接続されるとともに、前記各計算ユニットが備える複数の計算ノードは円環状に接続され、前記経路選択部は、前記X軸方向に接続された計算ユニットを含む複数の計算ユニット群のそれぞれについて、前記選択された実行ノードを含む複数の計算ユニットのいずれかの計算ユニットのうち、一端に配置された計算ユニットから、前記検出された故障ノードに接続された経路以外の経路について往路と復路の2つの経路を、他端に配置された計算ユニットで折り返すように選択することを特徴とする請求項8記載の制御装置。前記複数の計算ユニットは前記複数のリンクを介して、任意の次元数を有するメッシュ状に接続されるとともに、前記各計算ユニットが備える複数の計算ノードは円環状に接続され、前記経路選択部は、各計算ユニットをそれぞれ同数の計算ノードを有する複数のブロックに等分割し、前記複数の計算ユニットを任意の次元数を有するメッシュ状に接続したリンクのうち、任意の1軸方向に前記複数の計算ユニットを接続するリンクによって接続された前記ブロックを含む複数のブロック群のうちいずれかひとつのブロック群について、前記選択された実行ノードを含む複数のブロックのいずれかのブロックのうち、一端に配置されたブロックから多端に配置されたブロックが含むいずれかの計算ノードまで前記検出された故障ノードに接続された経路以外の経路を、一筆書きを描くように選択し、当該選択した経路を全てのブロック群に対して適用することを特徴とする請求項8記載の制御装置。前記複数の計算ユニットは前記複数のリンクを介して、任意の次元数を有するメッシュ状に接続されるとともに前記各計算ユニットが備える複数の計算ノードは円環状に接続され、前記経路選択部は、各計算ユニットをそれぞれ同数の計算ノードを有する複数のブロックに等分割し、前記複数の計算ユニットを任意の次元数を有するメッシュ状に接続したリンクのうち、任意の1軸方向に前記複数の計算ユニットを接続するリンクによって接続された前記ブロックを含む複数のブロック群のうちいずれかひとつのブロック群について、、前記選択された実行ノードを含む複数のブロックのいずれかのブロックのうち、一端に配置されたブロックから、前記検出された故障ノードに接続された経路以外の経路について往路と復路の2つの経路を、他端に配置されたブロックで折り返すように選択し、当該選択した経路を全てのブロック群に対して適用することを特徴とする請求項8記載の制御装置。プログラムを実行する互いに接続された複数の計算ノードをそれぞれ備える複数の計算ユニットと、隣り合う2つの計算ユニットに含まれる計算ノードを一対一に接続する複数の経路を介して、前記隣り合う計算ユニットをそれぞれ接続する複数のリンクを有する並列計算機と前記並列計算機を制御する制御装置を有する並列計算機システムの制御方法において、前記制御装置が有する故障ノード検出部が、前記複数の計算ノードから故障が発生した故障ノードを検出するステップと、前記制御装置が有する実行ノード選択部が、前記プログラムの実行に必要な計算ノード数に基づき、前記複数の計算ノードの中から、前記検出された故障ノードを除いて前記プログラムを実行させる実行ノードを選択するステップと、前記制御装置が有する経路選択部が、前記選択された実行ノードを含む複数の計算ユニットにおいて、隣り合う2つの計算ユニットをそれぞれ接続するリンクに含まれる経路のうち、前記検出された故障ノードに接続された経路以外の経路を、計算ノードを接続する経路として選択するステップを有することを特徴とする並列計算機システムの制御方法。前記並列計算機システムの制御方法において、前記複数の計算ユニットは前記複数のリンクを介して直線状に接続されるとともに、前記複数の計算ユニットが備える複数の計算ノードは環状に接続され、前記経路選択部は、前記選択された実行ノードを含む複数の計算ユニットのいずれかの計算ユニットのうち、一端に配置された計算ユニットが含むいずれかの計算ノードから、他端に配置された計算ユニットが含むいずれかの計算ノードまで、前記検出された故障ノードに接続された経路以外の経路を、一筆書きを描くように選択することを特徴とする請求項15記載の並列計算機システムの制御方法。前記並列計算機システムの制御方法において、前記複数の計算ユニットは前記複数のリンクを介して直線状に接続されるとともに、前記各計算ユニットが備える複数の計算ノードは環状に接続され、前記経路選択部は、前記選択された実行ノードを含む計算ユニットのうち、一端に配置された計算ユニットから多端に配置された計算ユニットまでの往路と復路との経路を、前記検出された故障ノードに接続された経路以外の経路から、他端に配置された計算ユニットで折り返すように選択することを特徴とする請求項15記載の並列計算機システムの制御方法。前記並列計算機システムの制御方法において、前記複数の計算ユニットは前記複数のリンクを介してX軸方向及びY軸方向にそれぞれ2次元のメッシュ状に接続されるとともに、前記複数の計算ユニットが備える複数の計算ノードは環状に接続され、前記経路選択部は、前記X軸方向に接続された計算ユニットを含む複数の計算ユニット群のそれぞれについて、前記選択された実行ノードを含む複数の計算ユニットのいずれかの計算ユニットのうち、一端に配置された計算ユニットから、他端に配置された計算ユニットが含むいずれかの計算ノードまで、前記検出された故障ノードに接続された経路以外の経路を、一筆書きを描くように選択することを特徴とする請求項15記載の並列計算機システムの制御方法。前記並列計算機システムの制御方法において、前記複数の計算ユニットは前記複数のリンクを介してX軸方向及びY軸方向にそれぞれ2次元のメッシュ状に接続されるとともに、前記複数の計算ユニットが備える複数の計算ノードは円環状に接続され、前記経路選択部は、前記X軸方向に接続された計算ユニットを含む複数の計算ユニット群のそれぞれについて、前記選択された実行ノードを含む複数の計算ユニットのいずれかの計算ユニットのうち、一端に配置された計算ユニットから、前記検出された故障ノードに接続された経路以外の経路について往路と復路の2つの経路を、他端に配置された計算ユニットで折り返すように選択することを特徴とする請求項15記載の並列計算機システムの制御方法。プログラムを実行する互いに接続された複数の計算ノードをそれぞれ備える複数の計算ユニットと、隣り合う2つの計算ユニットに含まれる計算ノードを一対一に接続する複数の経路を介して、前記隣り合う計算ユニットをそれぞれ接続する複数のリンクを備えた並列計算機システムの制御プログラムにおいて、コンピュータが、前記並列計算機が有する計算ノードから故障が発生した故障ノードを検出するステップと、前記プログラムの実行に必要な計算ノード数に基づき、前記並列計算機が有する計算ノードから前記検出された故障ノードを除いて前記プログラムを実行させる実行ノードを選択するステップと、前記選択された実行ノードを含む複数の計算ユニットにおいて、隣り合う2つの計算ユニットをそれぞれ接続するリンクに含まれる経路のうち、前記検出された故障ノードに接続された経路以外の経路を、計算ノードを接続する経路として選択するステップを実行することを特徴とする並列計算機システムの制御プログラム。しかしながら、上述した各計算ノードを多次元直交座標のトポロジによる直接結合網で結合する技術では、故障した計算ノードがネットワークに混在する場合には、各領域を適切な計算ノードに対してマッピングできないという問題があった。つまり、並列計算機システムは、各計算ノードに対して、プログラム等により分割した各領域を規則的にマッピングするので、故障した計算ノードがネットワークに混在する場合には、各領域の位置関係と同様の位置関係を有する計算ノードに各領域をマッピングすることができない。このような場合には、各計算ノードは、自身にマッピングされた領域に隣接する領域がマッピングされた計算ノードとの間で効率良く通信することができない。この結果、並列計算機システムは、各計算ノード間の通信効率が低下してしまうので、システム全体の性能が劣化する。また、トーラス状のネットワークを分割し、複数のトーラス状のネットワークを得ることは困難である。このため、トーラス状のネットワークを有する並列計算機システムがマルチジョブ運用を実行する場合には、各ジョブをトーラス状のネットワークを用いて実行するのが困難である。開示の技術は、上述した問題に鑑みてなされたものであって、各領域を適切な位置関係を有する計算ノードにマッピングする。一つの側面では、プログラムを実行する並列計算機と並列計算機を制御する制御装置を有する並列計算機システムである。並列計算機は、互いに接続された複数の計算ノードをそれぞれ備える複数の計算ユニットを有する。また、並列計算機は、複数の計算ユニットのうち、隣り合う2つの計算ユニットにそれぞれ含まれる計算ノードを一対一に接続する複数の経路を介して、隣り合う計算ユニットをそれぞれ接続する複数のリンクを有する。また、制御装置は、並列計算機が有する複数の計算ノードから故障が発生した故障ノードを検出する。また、制御装置は、プログラムの実行に必要な計算ノード数に基づき、並列計算機が有する複数の計算ノードから検出された故障ノードを除いて、プログラムを実行させる実行ノードを選択する。また、制御装置は、選択された実行ノードを含む複数の計算ユニットにおいて、隣り合う2つの計算ユニットをそれぞれ接続するリンクに含まれる複数の経路のうち、検出された故障ノードに接続された経路以外の経路を選択する。本願に開示の技術は、一つの態様によれば、並列計算機が有する複数の計算ノードから故障が発生した故障ノードが検出された場合でも、各領域を適切に計算ノードにマッピングすることができる。以下に添付図面を参照して本願に係る並列計算機システム、制御装置、並列計算機システムの制御方法および並列計算機システムの制御プログラムについて説明する。以下の実施例1では、図1を用いて、1次元の直接結合網を利用者に提供する並列計算機システムの一例を説明する。図1は、実施例1に係る並列計算機システムを説明するための図である。図1に示すように、並列計算機システム1は、入力装置2、出力装置3、並列計算機10、制御装置30を有する。また、並列計算機10は、複数の計算ユニット11~22を有する。また、制御装置30は、受付部31、故障ノード検出部32、実行ノード選択部33、経路選択部34、出力部35、記憶部36を有する。なお、各計算ユニット12~14については、計算ユニット11と同様の計算ユニットであるものとして説明を省略する。また、入力装置2は、利用者が制御装置30に対して指示をするための入力装置であり、キーボードやマウス等の入力用デバイスである。また、出力装置3は、制御装置30による処理の結果を表示するための出力装置であり、モニタやプリンタ等の出力用デバイスである。並列計算機10は、複数の計算ユニット11~22と、各計算ユニット11~22を相互に接続する複数のリンクを有する。ここで、各リンクは、隣接する計算ユニット同士を接続する経路であり、隣接する2つの計算ユニットが有する複数の計算ノードを一対一に接続する複数の経路を含んでいる。以下、並列計算機10が有する各計算ユニット11~22と、各計算ユニット11~22が有する計算ノードについて説明する。図2は、実施例1に係る計算ユニットを説明するための図である。図2に示す例では、計算ユニット11~22は、3つの計算ノード40~42をそれぞれ有する。また、各計算ノード40~42は、環状に接続されている。つまり、各計算ノード40~42は、相互に接続されている。なお、各計算ノード41、42は、計算ノード40と同様の計算ノードであるものとし、説明を省略する。図3は、実施例1に係る計算ノードを説明するための図である。図3に示す例では、計算ノード40は、CPUCentralProcessingUnit50、メモリ51、ネットワークインタフェース52を有する。ここで、CPU50は、計算ノード40にマッピングされたプログラムを実行する演算装置である。また、メモリ51は、CPU50がプログラムを実行する際に用いるデータが格納されるメモリである。ネットワークインタフェース52は、他のノード間との通信を行う装置である。具体例を説明すると、ネットワークインタフェース52は、リンクを介して、他の計算ノード41、42が有するネットワークインタフェースと通信する。また、ネットワークインタフェース52は、リンクを介して、計算ユニット12が有する計算ノードのうち、計算ノード40に対応する位置の計算ノードが有するネットワークインタフェースと通信する。つまり、各計算ユニット11~22を接続するリンクは、隣接する計算ユニットが有する各計算ノードを一対一で接続する複数の経路を有する。図4は、実施例1に係るライン状のトポロジの並列計算機が有するリンクを説明するための図である。図4に示す例では、各計算ユニット11~22が有する複数の計算ノードと、隣接する計算ユニットが有する複数の計算ノードとが一対一で接続されている。つまり、隣接する計算ユニット間を接続するリンクは、各計算ユニット11~22が3つの計算ノードを有する場合には、隣接する計算ユニット間の通信を伝達する3つの経路を含んでいる。図1に戻って、制御装置30は、並列計算機10を制御する制御装置である。具体例を説明すると、制御装置30は、利用者からプログラムを実行させる計算ノードの数の指定を受け付ける。計算ノードの数の指定を受け付けた場合には、制御装置30は、プログラムを実行させる計算ノードを判定し、判定した各計算ノードに連続する番号を仮想座標として付与する。この際、制御装置30は、リンクで直接接合された隣接する各計算ノードに対して、連続する仮想座標を付与する。その後、制御装置30は、プログラムを実行させる計算ノードを示す情報と各計算ノードに付与した仮想座標とを出力する。以下、制御装置30が有する各部31~36について説明する。受付部31は、入力装置2を介して入力された利用者の指示を受け付ける。具体例を説明すると、受付部31は、利用者が入力した計算ノードの数を、入力装置2を介して受け付ける。つまり、受付部31は、入力装置2を介して、並列計算機10が有する複数の計算ノードのうち、プログラムを実行させる計算ノードの数を利用者から受け付ける。そして、受付部31は、利用者から受け付けた計算ノードの数を実行ノード選択部33に通知する。故障ノード検出部32は、並列計算機10が有する各計算ノードから、故障が発生した故障ノードを検出する。例えば、故障ノード検出部32は、並列計算機10が有する各計算ノードに対して、定期的に信号を送信し、送信した信号に対する返信がない計算ノードを故障ノードとして検出する。そして、故障ノード検出部32は、検出した故障ノードを実行ノード選択部33と経路選択部34に通知する。なお、故障ノード検出部32が故障ノードを検出する処理は、他の任意の方法を用いるものであってよい。例えば、各計算ユニットは、計算ユニット内の計算ノードが動作しているか否かに応じて故障ノードを検出する故障ノード検出装置を有し、故障ノード検出部32が、各計算ユニットが有する故障ノード検出装置から故障に関する情報を収集することとしてもよい。実行ノード選択部33は、プログラムの実行に必要な計算ノード数に基づいて、並列計算機10が有する故障ノード以外の計算ノードから、プログラムを実行させる計算ノードを選択する。具体例を説明すると、実行ノード選択部33は、受付部31からプログラムを実行させる計算ノードの数の通知を受け付ける。また、計算ノード選択部33は、故障ノード検出部32から故障ノードの通知を受け付ける。そして、実行ノード選択部33は、以下の式1を用いて、プログラムを実行させる計算ユニットの数を算出する。ここで、式1中のNは、プログラムを実行させる計算ノードの数であり、mは、1つの計算ユニットが有する計算ノードの数であり、kは、故障ノードの数である。また、式1中のceilingとは、括弧内の数値のうち、小数点以下の数値を切り上げる操作を示す。また、実行ノード選択部33は、式1を用いて、プログラムを実行させる計算ユニットの数を算出した場合には、算出した数の隣接する計算ユニットを選択する。つまり、実行ノード選択部33は、算出した数の計算ユニットであって、リンクを介して直列に接続された複数の計算ユニットを選択する。そして、実行ノード選択部33は、選択した複数の計算ユニットを経路選択部34に通知する。経路選択部34は、実行ノード選択部33によって選択された計算ノードを有する複数の計算ユニットについて、隣接する2つの計算ユニットを接続する各リンクから故障ノードに接続された経路以外の経路を選択する。具体例を説明すると、経路選択部34は、実行ノード選択部33によって選択された計算ユニットの通知を受け付ける。また、経路選択部34は、故障ノード検出部32から、検出された故障ノードの通知を受け付ける。そして、経路選択部34は、通知された複数の計算ユニットのうち、1つの計算ユニットのみと接続された計算ユニット、すなわち、列状に接続された複数の計算ユニットの端に位置する計算ユニットから順に、隣接する計算ユニット間での通信に使用する経路を選択する。ここで、経路選択部34は、隣接する計算ユニット間での通信に使用する経路を選択する場合には、以下に説明する処理を実行する。すなわち、経路選択部34は、隣接する計算ユニット間での通信に使用する経路を選択する。また、経路選択部34は、同じ経路のタイプが連続しないように、例えば、選択する経路を巡回的に変化させながら、各計算ユニット間での通信に使用する経路であって、故障ノードに接続されていない経路を選択する。また、経路選択部34は、各計算ユニット間を接続する経路をすべて選択した場合には、以下の処理を実行することで、各計算ユニットが有する計算ノードの接続経路を選択する。すなわち、経路選択部34は、両端以外の計算ユニットについて、隣接する計算ユニットとの間において選択した経路に接続された2つの計算ノードを判別する。そして、経路選択部34は、判別した各計算ノードを両端として、計算ユニットに含まれる故障していない全ての計算ノードを一度だけ通る経路を選択する。また、経路選択部34は、実行ノード選択部33から通知された各計算ユニット間の経路、および、各計算ユニットが有する各計算ノードの接続経路を選択した場合には、以下の処理を実行する。すなわち、経路選択部34は、一方の端に存在する計算ユニットから、他方の端に存在する計算ユニットまで、選択した経路および選択した計算ノード間の接続経路を辿るように、各計算ノードに連続する番号を付与する。つまり、経路選択部34は、実行ノード選択部33から通知された各計算ユニットが有する計算ノードのうち、故障ノード検出部32から通知された故障ノード以外の計算ノードに対して、一筆書きを描くように連続する番号を仮想座標として付与する。つまり、経路選択部34は、実行ノード選択部33が選択した計算ユニットを1次元のライン型の直接結合とするための仮想座標を各計算ノードに付与する。なお、1次元のライン型に直接結合された計算ノードは、直列に接続された計算ノードとなる。その後、経路選択部34は、各計算ノードと各計算ノードに付与した仮想座標との対応を示す情報を出力部35に通知する。出力部35は、経路選択部34から仮想座標をどの計算ノードに付与したかを通知された場合には、各計算ノードを示す情報を、各計算ノードに付与した連続する仮想座標の順番に並べた情報を作成する。そして、出力部35は、出力装置3を介して作成した情報を出力する。また、出力部35は、作成した情報を記憶部36に格納する。なお、記憶部36に格納された情報は、利用者によって作成された並列計算プログラムを並列計算機10が実行する際に使用される。例えば、制御装置30は、MPIMessagePassingInterface実行時のライブラリが参照して仮想座標と物理座標との対応を取得するためのファイルを作成し、作成したファイルを記憶部36に記憶させる。また、並列計算プログラムには、複数の処理の実行命令が含まれており、各処理を実行する計算ノードが仮想座標によって指定されている。このような場合には、ライブラリが記憶部36に格納された情報を参照し、並列計算プログラムが指定する仮想座標が付与された計算ノードを判別する。そして、ライブラリは、判別した計算ノードに対して、処理を割当てる。例えば、受付部31、故障ノード検出部32、実行ノード選択部33、経路選択部34、出力部35は、電子回路である。ここで、電子回路の例として、ASICApplicationSpecificIntegratedCircuitやFPGAFieldProgrammableGateArrayなどの集積回路、またはCPUやMPUMicroProcessingUnitなどの演算処理装置などを適用する。また、記憶部36とは、RAMRandomAccessMemory、ROMReadOnlyMemory、フラッシュメモリflashmemoryなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。次に、図5A~5Cおよび図6A~6Gを用いて、制御装置30が実行する処理の一例について説明する。なお、図5A~5Cおよび図6A~6G中の丸印は、1つの計算ノードを示すものとする。また、図5A~5Cの複数の計算ノードを囲む点線は、1つの計算ユニットを示すものとする。また、図6A~6G中の複数の計算ノードを囲む実線は、1つの計算ユニットを示すものとする。また、図6A~6G中のバツ印が付された丸印は、故障ノードを示すものとする。また、以下の説明では、制御装置30は、各計算ユニット11~22が有する各計算ノードに対して、0、1、2の番号を付し、各計算ユニット11~22に対して、番号0~11を付すものとする。そして、制御装置30は、並列計算機10が有する各計算ノードを、計算ノードに付した番号と計算ユニットに付した番号との組み合わせによって示すものとする。例えば、制御装置30は、0番の計算ユニットが有する2番の計算ノードを物理座標0、2で示すものとする。図5Aは、隣接する計算ユニットを接続する経路の例を説明するための図1である。図5Aに示すように、隣接する計算ユニットが有する各計算ノードのうち、番号0の計算ノード同士を接続する経路をタイプ0の経路とする。また、図5Bは、隣接する計算ユニットを接続する経路の例を説明するための図2である。図5Bに示すように、隣接する計算ユニットが有する各計算ノードのうち、番号1の計算ノード同士を接続する経路をタイプ1の経路とする。また、図5Cは、隣接する計算ユニットを接続する経路の例を説明するための図3である。図5Cに示すように、隣接する計算ユニットが有する各計算ノードのうち、番号2の計算ノード同士を接続する経路をタイプ2の経路とする。図6Aは、実施例1に係る制御装置が実行する処理の例について説明するための図1である。例えば、制御装置30は、入力装置2を介して、利用者からプログラムを実行させる計算ノードの数32を受け付けたものとする。このような場合には、制御装置30は、並列計算機10が有する各計算ノードから故障した計算ノードを検出する。図6Aに示す例では、制御装置30は、物理座標4、1、9、0、9、2が故障ノードであることを検出する。また、制御装置30は、式1をN=32、m=3、k=3として解き、プログラムを実行させる計算ユニットの数n=12を算出する。そして、制御装置30は、並列計算機10が有する計算ユニット11~22を、直列に接続された番号0~11までの12個の計算ユニットとして選択する。図6Bは、実施例1に係る制御装置が実行する処理の例について説明するための図2である。制御装置30は、プログラムを実行させる計算ユニットを選択した場合には、図6Bに示すように、0番の計算ユニットから順に、隣接する計算ユニットとの間で通信を中継する経路のタイプを同じタイプが連続しないように巡回的に変化させながら選択する。図6Bに示す例では、制御装置30は、0番の計算ユニットと1番の計算ユニットとの間においてタイプ0の経路を選択し、1番の計算ユニットと2番の計算ユニットとの間においてタイプ1の経路を選択する。また、制御装置30は、2番の計算ユニットと3番の計算ユニットとの間においてタイプ2の経路を選択し、3番の計算ユニットと4番の計算ユニットとの間において、タイプ0の経路を再度選択する。ここで、図6Cは、実施例1に係る制御装置が実行する処理の例について説明するための図3である。図6Cに示すように、4番の計算ユニットが有する1番の計算ノード、すなわち物理座標1、4で示される計算ノードは、故障ノードである。このため、制御装置30は、4番の計算ユニットと5番の計算ユニットとの間においてタイプ1の経路を選択対象から除外する。また、制御装置30は、3番の計算ユニットと4番の計算ユニット間において、タイプ0の経路が選択されているので、タイプ0の経路を選択対象から除外する。この結果、制御装置30は、4番の計算ユニットと5番の計算ユニット間において、タイプ2の経路を選択する。その後、制御装置30は、再度、経路のタイプを巡回的に変化させながら、各計算ユニット間の経路を選択する。また、制御装置30は、2つの故障ノードを有する9番の計算ユニットについては、隣接する8番および10番の計算ユニットとの間に異なるタイプの経路を選択することができない。このように、複数の故障ノードを有するため、隣接する計算ユニットとの間でそれぞれ異なるタイプの経路を選択できない場合には、制御装置30は、同じタイプの経路を選択する。つまり、図6Dに示すように、制御装置30は、8番の計算ユニットと9番の計算ユニットとの間、および9番の計算ユニットと10番の計算ユニットとの間において、タイプ1の経路を選択する。その後、制御装置30は、10番の計算ユニットと11番の計算ユニットとの間において、タイプ2の経路を選択する。なお、図6Dは、実施例1に係る制御装置が実行する処理の例について説明するための図4である。図6Eは、実施例1に係る制御装置が実行する処理の例について説明するための図5である。図6Eに示すように、制御装置30は、0番から11番までの計算ユニット間の経路のタイプを選択した場合には、1番から10番までの各計算ユニット内での経路を選択する。具体例を説明すると、制御装置30は、1番から10番までの各計算ユニット内において、隣接する計算ユニットとの間において選択された経路に接続されている各計算ノードを両端として、他の計算ノードを1回だけ通るように、計算ユニット内の経路を選択する。図6Fは、実施例1に係る制御装置が実行する処理の例について説明するための図6である。図6Fに示すように、制御装置30は、各計算ユニット内での経路を選択した場合には、0番の計算ユニットから11番の計算ユニットまで、選択された経路によって直列に接続された32個の計算ノードを識別する。図6Gは、実施例1に係る制御装置が実行する処理の例について説明するための図7である。図6Gに示すように、制御装置30は、識別した32個の計算ノードに0から31までの番号を仮想座標として付与する。つまり、制御装置30は、選択した経路によって隣接する計算ノードと直接結合し、かつ、直列に接続している複数の計算ノードに対して、連続する仮想座標を付与する。また、制御装置30は、仮想座標を付与した物理座標を仮想座標の順番に記載したファイルマシンファイルを作成する。そして、制御装置30は、作成したファイルを、出力装置3を介して出力するとともに、作成したファイルを記憶する。[制御装置の処理の流れ]次に、図7を用いて、制御装置30が実行する処理の流れの一例について説明する。図7は、実施例1に係る制御装置が実行する処理の流れの一例を説明するためのフローチャートである。なお、以下の説明では、制御装置30は、プログラムを実行させる計算ユニットとして、n個の計算ユニットを選択するものとする。また、図7に示す例では、制御装置30は、入力装置2を介して、プログラムを実行させる計算ノードの数Nの入力を受付けたことをトリガとして、処理を開始する。まず、制御装置30は、式1を用いて、プログラムを実行させる連続した0~n-1番の計算ユニットを選択するステップS101。次に、制御装置30は、各計算ユニット間の経路のタイプCT0~CTn-2を決定するステップS102。なお、CTxは、x番の計算ユニットとx1番の計算ユニットとの間において、制御装置30が選択した経路を示す記号である。次に、制御装置30は、1~n-2番の計算ユニット内における経路を選択するステップS103。続いて、制御装置30は、0番の計算ユニットとn-1番の計算ユニット、すなわち両端の計算ユニット、内における経路を選択するステップS104。そして、制御装置30は、選択した経路に沿って、各計算ノードに仮想座標を付与するステップS105。その後、制御装置30は、仮想座標の順に各計算ノードの物理座標を記載したファイルを出力および記憶しステップS106、処理を終了する。次に、図8を用いて、制御装置30が経路のタイプを選択する処理図7中ステップS102について詳しく説明する。図8は、経路のタイプを選択する処理の一例を説明するためのフローチャートである。なお、図8中のFは、故障ノードを示す物理座標の集合体である。まず、制御装置30は、パラメータxとパラメータuを初期化し、x=0、u=0とするステップS201。次に、制御装置30は、counterの値を1つの計算ユニットが有する計算ノードの数mにセットするステップS202。次に、制御装置30は、u1をmで除算した剰余の値を算出し、算出した値を新たなuとするステップS203。そして、制御装置30は、計算ノードの物理座標x、uまたはx1、uがFに含まれているか否かを判別するステップS204。その後、制御装置30は、物理座標x、uまたはx1、uがFに含まれている場合にはステップS204肯定、以下の処理を実行する。すなわち、制御装置30は、counterの値から1を減算し、新たなcounterの値が0よりも大きいか否かを判別するステップS205。また、制御装置30は、新たなcounterの値が0よりも大きいと判別した場合にはステップS205肯定、再度、ステップS203の処理を行う。また、制御装置30は、新たなcounterの値が0に達したと判別した場合にはステップS205否定、経路を選択することができないと判断し、実行ノード選択部33に制御を戻して、他の複数の計算ユニットを選択し、以降の処理を繰り返す。あるいは、経路を選択することができないと判断した場合には、出力装置3を介して、利用者にエラー終了を通知してもよいステップS206。一方、制御装置30は、物理座標x、uまたはx1、uがFに含まれていないと判別した場合にはステップS204否定、CTxをuにセットするステップS207。つまり、制御装置30は、x番目の計算ユニットとx1番目の計算ユニットとの間において、タイプuの経路を選択する。その後、制御装置30は、xの値に1を加算した値を新たなxの値とし、新たなxがn-2以下であるか否かを判別するステップS208。つまり、制御装置30は、プログラムを実行させる全ての計算ユニット間における経路を選択したか否かを判別する。その後、制御装置30は、新たなxがn-2以下であると判別した場合、つまり、プログラムを実行させる全ての計算ユニット間における経路を選択していない場合にはステップS208肯定、再度ステップS202を実行する。また、制御装置30は、新たなxがn-2以下ではないと判別した場合、つまり、プログラムを実行させる全ての計算ユニット間における経路を選択した場合には、経路のタイプを選択する処理を終了する。[実施例1の効果]上述したように、制御装置30は、並列計算機10が有する全ての計算ノードから故障ノードを検出する。また、制御装置30は、プログラムの実行に必要な計算ノード数に基づいて、並列計算機10が有する計算ノードであって、検出した故障ノード以外の計算ノードからプログラムを実行させる計算ノードを選択する。そして、制御装置30は、選択した計算ノードを含む隣接する計算ユニット間において、検出された故障ノード以外の計算ノードに接続された経路を選択する。このため、制御装置30は、シミュレーションの対象となる計算空間を分割した各領域を適切な位置関係を有する計算ノードにマッピングすることができる。つまり、制御装置30は、並列計算機10が有する計算ノードのうち、故障ノード以外の計算ノード間において通信を中継する経路を、計算ノードが1次元の直接結合網を構成するように選択する。このため、制御装置30は、隣接する計算ノード間における通信が効率的に行われることを保証する複数の計算ノードを有する1次元の直接結合網を提供することができる。この結果、並列計算機システム1は、計算空間を直線状の1次元領域に分割した際に、分割した各領域を各領域と同じ位置関係を有する各計算ノードにマッピングすることができるので、故障ノードが存在する場合にも、システム全体の性能を保持することができる。また、並列計算機システム1は、リンクを介して直列に接続された複数の計算ユニット11~22を有する。また、各計算ユニット11~22は、相互に接続された複数の計算ノードを有する。そして、制御装置30は、プログラムを実行させる計算ノードを選択し、選択した計算ノード間の経路を、一筆書きを描くように選択する。すなわち、制御装置30は、連続した計算ユニット間の経路のうち、故障ノードに接続されていない経路を選択する。また、制御装置30は、各計算ユニットについて、選択した計算ユニット間の経路に接続されている計算ノードを両端とし、各計算ノードを一度だけ通る計算ユニット内の経路を選択する。その後、制御装置30は、選択した計算ユニット間の経路および選択した計算ユニット内の経路に従って、直接結合された各計算ノードに連続する仮想ノード番号を付与する。このため、並列計算機システム1は、故障ノードが存在する場合にも、1次元のトポロジを有する直接結合網を利用者に提供することができる。また、制御装置30は、各計算ユニット11~22の間のリンクから経路を選択する場合には、巡回的に異なるタイプの経路を選択する。このため、並列計算機システム1は、各計算ノード間の通信を効率的に行わせることができる。つまり、制御装置30が同じタイプの経路を連続して選択した場合には、1つの計算ユニットが有する複数の計算ノードの通信を1つの計算ノードがすべて中継することとなり、通信効率が悪化する。しかし、制御装置30は、ある計算ユニット内に故障していない計算ノードが2つ以上ある場合には、この計算ユニットと隣接する計算ユニットとの間において、それぞれ異なるタイプの経路を選択する。この結果、並列計算機システム1は、1つの計算ユニットが有する複数の計算ノードの通信を1つの計算ノードが中継する状態を防止し、仮想ノード番号で隣り合うノード間は必ず直接の経路をもつことを保障することによって、各計算ノード間の通信を効率的に行わせるとともに、各計算ノードにプログラムを効率的に実行させることができる。実施例2では、1次元のトーラス型のトポロジを有する直接結合網のネットワークを利用者に提供する並列計算機システム1aについて説明する。図9は、実施例2に係る並列計算機システムを説明するための図である。図9に示す例では、並列計算機システム1aは、入力装置2、出力装置3、並列計算機10、制御装置30aを有する。また、並列計算機10は、複数の計算ユニット11~22を有する、また、制御装置30aは、受付部31、故障ノード検出部32、実行ノード選択部33、経路選択部34a、出力部35、記憶部36を有する。すなわち、並列計算機システム1aは、実施例1に係る経路選択部34と対応する経路選択部34aによって実行される処理のみが、実施例1に係る並列計算機システム1と異なる。このため、入力装置2、出力装置3、並列計算機10、受付部31、故障ノード検出部32、実行ノード選択部33、出力部35、記憶部36については、実施例1において同一の符号を付した各部と同様の処理を実行するものとし、以後の説明を省略する。経路選択部34aは、実行ノード選択部33が選択した複数の計算ノードを有する各計算ユニット間の各リンクから、故障ノードに接続されていない2つの経路を往路と復路として選択する。そして、経路選択部34aは、両端以外の計算ユニットについて、往路に接続された計算ノード間の接続経路と、復路に接続された計算ノード間の接続経路とを、故障していない各計算ノードを各接続経路が一度だけ通るように選択する。また、経路選択部34aは、両端の計算ユニットについて、往路に接続された計算ノードと復路に接続された計算ノードとを両端として、他の故障していない計算ノードを一度だけ通る接続経路を選択する。その後、経路選択部34aは、計算ユニット間および計算ユニット内において選択した各経路を辿るように、直接結合された各計算ノードに対して、連続する番号を仮想座標として付与する。つまり、経路選択部34aは、実行ノード選択部33が選択した計算ノードを1次元のトーラス型の直接結合とするための仮想座標を各計算ノードに付与する。なお、1次元のトーラス型に直接結合した各計算ノードは、リング状に接続されることとなる。このため、制御装置30aは、並列計算機10に故障ノードが存在する場合にも、利用者によって指定された数の計算ノードをトーラス型に直接結合したシステムを利用者に提供することができる。次に、図10A~10Iを用いて、制御装置30aが各計算ユニット間のリンクから選択する経路のタイプの例について説明する。図10Aは、実施例2において隣接する計算ユニットを接続する経路の例を説明するための図1である。図10Aに示すように、隣接する計算ユニットが有する各計算ノードのうち番号0の計算ノード同士、および、番号1の計算ノード同士を接続する経路をタイプ01とする。また、図10Bは、実施例2において隣接する計算ユニットを接続する経路の例を説明するための図2である。図10Bに示すように、隣接する計算ユニットが有する各計算ノードのうち番号1の計算ノード同士、および、番号2の計算ノード同士を接続する経路をタイプ12とする。また、図10Cは、実施例2において隣接する計算ユニットを接続する経路の例を説明するための図3である。図10Cに示すように、隣接する計算ユニットが有する各計算ノードのうち番号0の計算ノード同士、および、番号2の計算ノード同士を接続する経路をタイプ20とする。なお、図10A~10Cでは、各計算ユニットが3つの計算ノードを有する例について説明したが、各計算ユニットは、4つ以上の計算ノードを有してもよい。このような場合には、各計算ユニット間のリンクから選択される経路のタイプは、以下の説明のようになる。例えば、図10Dは、実施例2において隣接する計算ユニットを接続する経路の例を説明するための図4である。図10Dに示すように、隣接する計算ユニットが有する各計算ノードのうち番号0の計算ノード同士、および、番号1の計算ノード同士を接続する経路はタイプ01となる。また、図10Eは、実施例2において隣接する計算ユニットを接続する経路の例を説明するための図5である。図10Eに示すように、隣接する計算ユニットが有する各計算ノードのうち番号1の計算ノード同士、および、番号2の計算ノード同士を接続する経路はタイプ12となる。また、図10Fは、実施例2において隣接する計算ユニットを接続する経路の例を説明するための図6である。図10Fに示すように、隣接する計算ユニットが有する各計算ノードのうち番号2の計算ノード同士、および、番号3の計算ノード同士を接続する経路はタイプ23となる。また、図10Gは、実施例2において隣接する計算ユニットを接続する経路の例を説明するための図7である。図10Gに示すように、隣接する計算ユニットが有する各計算ノードのうち番号0の計算ノード同士、および、番号3の計算ノード同士を接続する経路はタイプ30となる。また、図10Hは、実施例2において隣接する計算ユニットを接続する経路の例を説明するための図8である。図10Hに示すように、隣接する計算ユニットが有する各計算ノードのうち番号0の計算ノード同士、および、番号2の計算ノード同士を接続する経路はタイプ02となる。また、図10Iは、実施例2において隣接する計算ユニットを接続する経路の例を説明するための図9である。図10Iに示すように、隣接する計算ユニットが有する各計算ノードのうち番号1の計算ノード同士、および、番号3の計算ノード同士を接続する経路はタイプ13となる。次に、図11A~図11Fを用いて、制御装置30aが経路を選択する処理について説明する。図11Aは、実施例2に係る制御装置が実行する処理の例について説明するための図1である。例えば、制御装置30aは、入力装置2を介して、利用者からプログラムを実行させる計算ノードの数32を受け付けたものとする。このような場合には、制御装置30aは、仮想座標を付与する計算ユニットとして、計算ユニット11~22を選択し、各計算ユニットに0~11までの番号を付与する。また、制御装置30aは、各計算ユニット11~22が有する計算ノードに0~2までの番号を付与する。また、制御装置30aは、各計算ノードの動作を確認し、物理座標4、1、8、0の計算ノードが故障ノードであると検出する。図11Bは、実施例2に係る制御装置が実行する処理の例について説明するための図2である。まず、制御装置30aは、検出された故障ノードを含む番号4の計算ユニットと番号8の計算ユニットを識別する。そして、制御装置30aは、識別した4番の計算ユニットと、4番の計算ユニットに隣接する計算ユニットとの間の経路のタイプを選択する。つまり、制御装置30aは、4番の計算ユニットと隣接する3番の計算ユニットとの間、および、4番の計算ユニットと隣接する5番の計算ユニットとの間において、タイプ20の経路を選択する。また、制御装置30aは、8番の計算ユニットと隣接する7番の計算ユニットとの間、および、8番の計算ユニットと隣接する9番の計算ユニットとの間において、タイプ12の経路を選択する。なお、図11A~11Fに示す例では、各計算ユニットが3個の計算ノードを有するので、1つの故障ノードを有する計算ユニットと、隣接する計算ユニットとの間において選択される経路のタイプは、図11A~11Fに示す例のように定めることができる。図11Cは、実施例2に係る制御装置が実行する処理の例について説明するための図3である。制御装置30aは、故障ノードを有する計算ユニットと隣接する計算ユニットとの間の経路のタイプを選択した場合には、0番の計算ユニットから順に、隣接する計算ユニット間で通信を中継する経路のタイプを、例えば巡回的に変化させながら選択する。図11Cに示す例では、制御装置30aは、0番の計算ユニットと1番の計算ユニットとの間においてタイプ20の経路を選択し、1番の計算ユニットと2番の計算ユニットとの間においてタイプ01の経路を選択する。また、制御装置30aは、2番の計算ユニットと3番の計算ユニットとの間においてタイプ12の経路を選択する。また、制御装置30aは、他の計算ユニット間においても、巡回的に経路のタイプを選択し、実行ノード選択部33によって選択された計算ノードを有する全ての計算ユニット間における経路のタイプを選択する。図11Dは、実施例2に係る制御装置が実行する処理の例について説明するための図4である。図11Dに示すように、制御装置30aは、実行ノード選択部33によって選択された計算ノードを有する全ての計算ユニット間における経路のタイプを選択した場合には、各計算ユニット内における経路を選択する。具体例を説明すると、制御装置30aは、両端以外の各計算ユニットについて、選択された経路のタイプがijとjki≠j≠kで表すことができる場合には、i番の計算ノードとk番の計算ノードとを接続する経路を選択する。また、制御装置30aは、各計算ユニットについて、隣接する計算ユニットとの間において選択された経路のタイプが同じタイプであった場合には、計算ユニット内の計算ノードを接続する経路が無いと判断する。図11Eは、実施例2に係る制御装置が実行する処理の例について説明するための図5である。図11Eに示すように、制御装置30aは、両端以外の各計算ユニットについて、隣接する計算ユニット間の経路および計算ユニット内の各計算ノードを接続する経路とを選択した場合には、両端の計算ユニット内の各計算ノードを接続する経路を選択する。ここで、図11Eに示す例では、制御装置30aは、利用者から指定された計算ノードの数が32個であるので、0番の計算ユニットと11番の計算ユニットとにおいて、合わせて2つの計算ノードを除外した経路を選択する。図11Fは、実施例2に係る制御装置が実行する処理の例について説明するための図6である。図11Fに示すように、制御装置30aは、隣接する計算ユニット間の各経路、および、各計算ユニット内における計算ノードを接続する経路を選択した場合には、選択した経路を辿るように、各計算ノードに連続した番号を仮想座標として付与する。その後、制御装置30aは、各計算ノードの物理座標を仮想座標の順に並べたファイルを出力、および記憶する。なお、制御装置30aは、1つの計算ユニット内に4個以上の相互に接続された計算ノードが存在する場合にも、上述した処理を行うことで、適切に仮想座標を付与することができる。ここで、制御装置30aは、両端以外の各計算ユニットについて、選択された経路のタイプがijとjki≠j≠kで表すことができる場合には、i番、j番、k番以外の計算ノードをすべて通ってi番の計算ノードとk番の計算ノードとを接続する経路を選択する。また、制御装置30aは、選択された経路のタイプがijとkli≠j≠k≠lで表すことができる場合には、i番とk番、j番とl番をそれぞれ接続するか、i番とl番、j番とk番をそれぞれ接続するが、i番、j番、k番、l番以外の計算ノードもすべて通るように経路を選択する。また、制御装置30aは、1つの計算ユニットが複数の故障ノードを有する場合、故障ノードを有する2つの計算ユニットが隣接、または、1つの計算ユニットを挟み込むように存在する場合には、経路のタイプを選択できない場合がある。以下、図12A~12Cを用いて、具体例を説明する。図12Aは、経路のタイプを選択できない例を説明するための図1である。図12Aに示すように、制御装置30aは、故障ノードを有する2つの計算ユニットが隣接する場合にも、2つの故障ノードが同じ番号である場合には、適切に経路を選択することができる。一方、図12Bは、経路のタイプを選択できない例を説明するための図2である。図12Bに示すように、制御装置30aは、異なる番号の故障ノードを有する計算ユニットが隣接する場合には、往路又は復路の一方しか選択することができない。このような場合には、制御装置30aは、エラーを利用者に返し、仮想座標の付与ができないことを通知する。なお、制御装置30aは、並列計算機10が多数の計算ユニットを有する場合には、新たに別の範囲に位置する複数の計算ユニットを選択し、選択した複数の計算ユニットについて、順次経路を選択することとしてもよい。図12Cは、経路のタイプを選択できない例を説明するための図3である。図12Cに示す例では、異なる番号の故障ノードを有する計算ユニットが、1つの計算ユニットを挟んで隣接している。このような場合には、制御装置30aは、中央の計算ユニットにおいて、全ての計算ノードを接続する経路を選択することができる。一方、図12Dは、経路のタイプを選択できない例を説明するための図4である。図12Dに示す例では、同じ番号の故障ノードを有する計算ユニットが、1つの計算ユニットを挟んで隣接している。このような場合には、制御装置30aは、中央の計算ユニットにおいて、全ての計算ノードを接続する経路を選択することができない。このような場合には、制御装置30aは、エラーを利用者に返し、仮想座標の付与ができないことを通知する。または、中央の計算ユニットの同じ位置のノードも故障ノードであるかのように扱えば、1ノードを無駄にするが仮想座標の付与ができる。なお、上述した例では、制御装置30aは、故障ノードを有する計算ユニットについて経路を選択した後に、他の計算ユニットについての故障ノードを選択することとした。しかし、実施例はこれに限定されるものではなく、制御装置30aは、制御装置30と同様に、端に存在する計算ユニットから、他の端に存在する計算ユニットまで順番に、各計算ユニット間の経路を順次選択することとしてもよい。[制御装置30aの処理の流れ]次に、図13、図14を用いて、制御装置30aが経路のタイプを選択する処理の流れについて説明する。図13は、実施例2に係る制御装置が経路のタイプを選択する処理の一例を説明するためのフローチャート1である。なお、制御装置30aは、図7に示す制御装置30と同様の処理を実行するものとし、図7中のステップS102に対応する処理として、図13および図14に示す処理を実行するものとする。まず、制御装置30aは、故障ノードを有する全ての計算ユニットについて、ステップS302~S303に示す処理を実行したか否かを判別するステップS301。そして、制御装置30aは、ステップS302~S303の処理を実行していないと判別した場合にはステップS301否定、ステップS302~S303の処理を実行していない計算ユニットについて、以下の処理を実行する。すなわち、制御装置30aは、ステップS302~S303の処理を実行していない計算ユニットと、隣接する計算ユニットとの間において、経路のタイプを選択するステップS302。そして、制御装置30aは、経路のタイプの選択が成功したか否かを判別しステップS303、成功した場合にはステップS303肯定、次の未処理の故障ノードを有する計算ユニットについて、ステップS301からの処理を実行する。一方、制御装置30aは、経路のタイプの選択が失敗した場合にはステップS303否定、利用者にエラーを返し、処理を終了する。すなわち、制御装置30aは、図12Bや図12Dに示すように、同じ番号の故障ノードを有する計算ノードが隣接、あるいは1つの計算ノードを挟んで存在する場合には、利用者にエラーを返し、処理を終了する。また、制御装置30aは、故障ノードを有する全ての計算ユニットについてステップS302~S303の処理を実行した場合にはステップS301肯定、図14に示す処理を実行する。図14は、実施例2に係る制御装置が経路のタイプを選択する処理の一例を説明するための図2である。なお、図15は、非故障区間を説明するための図である。以下の説明では、図15に示すように、故障ノードを有さない計算ユニットがxl番からxu番まで連続する区間を非故障区間xl、xuとする。図14に戻って、制御装置30aは、全ての非故障区間xl、xuについて、ステップS305~S309の処理を実行したか否かを判別するステップS304。そして、制御装置30aは、全ての非故障区間xl、xuについてステップS305~S309の処理を実行していないと判別した場合にはステップS304否定、パラメータxの値をxlにセットするステップS305。次に、制御装置30aは、パラメータxがx=xu-1を満たすか否かを判別するステップS306。また、制御装置30aは、パラメータxがx=xu-1を満たさない場合にはステップS306否定、CTxとしてCTx-1とは異なる経路のタイプを選択するステップS307。この際、制御装置30aは、x=0である場合には、任意のタイプの経路を選択してよい。次に、制御装置30aは、xの値に1を加算した値を新たなxの値としステップS308、再度、xがx=xu-1を満たすか否かを判別するステップS306。一方、制御装置30aは、xがx=xu-1を満たす場合にはステップS306肯定、CTxu-1としてCTxu-2およびCTxuとは異なるタイプの経路を選択するステップS309。その後、制御装置30aは、再度、全ての非故障区間xl、xuについてステップS305~S309の処理を実行したか否かを判別するステップS304。そして、制御装置30aは、全ての非故障区間xl、xuについてステップS305~S309の処理を実行したと判別した場合にはステップS304肯定、処理を終了する。[実施例2の効果]上述したように、制御装置30aは、実行ノード選択部33によって選択された実行ノードを含む複数の計算ユニットのうち、一端に存在する計算ユニットから、故障ノードに接続されていない往路と復路とを選択する。そして、制御装置30aは、選択した往路と復路とを辿るように、直接結合された複数の計算ノードに対して、連続する番号を仮想座標として付与する。このため、制御装置30aを有する並列計算機システム1aは、並列計算機10に故障ノードが存在する場合にも、1次元のトーラス状のトポロジを有する直接結合網を利用者に提供することができる。この結果、並列計算機システム1aは、計算対象となる計算空間を1次元のトーラス状に分割した際に、故障ノードが存在する場合にも、仮想ノード番号で隣り合うノード間は必ず直接の経路をもつことが保障される。実施例3では、故障ノードが存在する場合にも、2次元のメッシュ状に直接結合された計算ノードのネットワークを提供する並列計算機システム1bについて説明する。図16は、実施例3に係る並列計算機システムの一例を説明するための図である。なお、図16に示す並列計算機システム1bが有する各部のうち、実施例1、2において説明した処理と同じ処理を実行するものについては、実施例1、2と同じ符号を付し、説明を省略する。図16に示す例では、並列計算機システム1bは、入力装置2、出力装置3、制御装置30b、並列計算機10aを有する。図17は、実施例3に係る並列計算機が有する計算ユニット群の一例を説明するための図である。並列計算機10aは、複数のリンクを介して、2次元のメッシュ状に直接結合された複数の計算ユニット11a~22aを有する。各計算ユニット11a~22aは、3本の経路を有するリンクで接続されている。また、計算ユニット11a~22aは、計算ユニット11~22と同様に、環状、すなわち相互に接続された3個の計算ノードを有する。また、図17に示す例では、各計算ノードに3次元の物理座標が付与されている。具体例を説明すると、各計算ユニットには、図17中のx軸方向に0~4、y軸方向に0~2の番号が付与されている。また、各計算ユニットが有する3つの計算ノードには図17中のu軸方向の番号として0~2が付与されている。つまり、各計算ユニット11a~22aには、x、yによる2次元の物理座標が付与され、各計算ノードはx、y、uの三次元の物理座標が付与されることとなる。図16に戻って、制御装置30bは、受付部31a、故障ノード検出部32、実行ノード選択部33a、経路選択部34b、出力部35、記憶部36を有する。受付部31aは、利用者が入力装置2を介して入力した、2次元メッシュ状のネットワークのサイズを受け付ける。具体例を説明すると、受付部31aは、プログラムを実行させる2次元メッシュ状のネットワークのサイズとして、仮想座標におけるix軸方向の計算ノードの数と、仮想座標におけるiy軸方向の計算ノードの数との指定を受け付ける。その後、受付部31aは、受け付けたサイズを実行ノード選択部33aに通知する。例えば、受付部31aは、利用者から、ix軸方向に12個の計算ノードを有し、iy軸方向に3個の計算ノードを有する2次元メッシュ状のネットワークを示すサイズ12、3を受け付ける。そして、受付部31aは、受け付けたサイズ12、3を実行ノード選択部33aに通知する。実行ノード選択部33aは、受付部31aからネットワークのサイズの通知を受けた場合には、通知されたix軸方向のサイズに基づいて、並列計算機10からプログラムを実行させる複数の計算ユニットである計算ユニット群を選択する。また、実行ノード選択部33aは、通知されたiy軸方向のサイズに基づいて、選択した計算ユニット群の各計算ユニットとリンクで接続された複数の計算ユニットを有する複数の計算ユニット群を選択する。具体例を説明すると、実行ノード選択部33aは、故障ノード検出部32から故障ノードの座標を取得する。また、実行ノード選択部33aは、受付部31aからネットワークのサイズの通知を受ける。また、実行ノード選択部33aは、故障回避軸を選択し、故障ノードが位置する座標のうち、故障回避軸以外の軸方向成分を除いた座標を故障回避単位として検出する。そして、実行ノード選択部33aは、検出した故障回避単位の数をkとし、受付部31aから通知されたネットワークのサイズのうち、ix軸方向のサイズをNとして、式1から計算ユニット群に含まれる計算ユニットの数を算出する。また、実行ノード選択部33aは、受付部31aから通知されたネットワークのサイズのうち、iy軸方向のサイズをプログラムを実行させる計算ユニット群の数として判別する。その後、実行ノード選択部33aは、判別した数の計算ユニット群を並列計算機10aから選択し、選択した計算ユニット群と検出した故障回避単位と故障回避軸とを経路選択部34bに通知する。例えば、実行ノード選択部33aは、受付部31aからネットワークのサイズ12、3の通知を受ける。また、実行ノード選択部33aは、故障ノード検出部32から、故障ノードの物理座標x、y、u=1、0、1、3、1、2、3、2、2の通知を受ける。また、実行ノード選択部33aは、故障回避軸をx軸方向とする。このような場合には、実行ノード選択部33aは、故障回避単位として1、1、3、2を検出する。そして、実行ノード選択部33aは、k=2、N=12、m=3として1式を解き、1つの計算ユニット群が有する計算ユニットの数5を算出する。また、実行ノード選択部33aは、通知されたネットワークのサイズが12、3であるので、プログラムを実行される計算ユニット群の数が3であると判別する。このため、実行ノード選択部33aは、x軸方向に5つの計算ユニットが接続され、y軸方向に3つの計算ユニットが接続された2次元のネットワークを並列計算機10aから選択し、選択した計算ユニット群を経路選択部34bに通知する。また、実行ノード選択部33aは、故障回避軸がx軸方向であることと、故障回避単位1、1、3、2を経路選択部34bに通知する。経路選択部34bは、実行ノード選択部33aから通知された複数の計算ユニット群のそれぞれについて、隣接する2つの計算ユニットを接続する各リンクから故障ノードに接続された経路以外の経路を選択する。具体例を説明すると、経路選択部34bは、実行ノード選択部33aが選択した複数の計算ユニット群と故障回避単位と故障回避軸との通知を受け付ける。このような場合には、経路選択部34bは、故障回避単位の座標を含む全ての計算ノードを故障ノードとみなす。また、経路選択部34bは、通知された複数の計算ユニット群のうち1つの計算ユニット群について、実施例1と同様の手法を用いて、故障ノード以外の複数の計算ノードを直列かつ直接結合させる経路を選択する。そして、経路選択部34bは、経路を辿るように、各計算ノードに連続する仮想座標を付与する。その後、経路選択部34bは、他の計算ユニット群についても、同じように仮想座標を付与する。つまり、経路選択部34bは、1つの計算ユニット群について経路を選択した場合には、他の計算ユニット群についても同じ経路を適用し、適用した経路を辿るように各計算ノードに連続する仮想座標を付与する。また、経路選択部34bは、各計算ノードに付与した仮想座標を、計算ユニット群ごとに異なる次元の仮想座標として、出力部35に通知する。換言するならば、経路選択部34bは、実行ノード選択部33aから通知された全ての計算ユニット群を故障回避軸を含む平面方向例えば、xu平面方向に多重化投影する。そして、経路選択部34bは、各計算ユニット群を多重化した計算ユニット群について、多重化された故障ノードの位置の計算ノードを回避する経路を一筆書きを描くように選択する。そして、経路選択部34bは、選択した経路を全ての計算ユニット群に対して適用することで、2次元のメッシュ状の直接結合網を構成するネットワークを容易に利用者に提供することができる。以下、図18A~18Dを用いて、制御装置30bが実行する処理の具体例を説明する。なお、以下の説明では、制御装置30bは、利用者から2次元メッシュ状のネットワークを示すサイズ12、3を受けつけ、図17に示すように、x軸方向に5個、y軸方向に3個の計算ユニットが接続されたネットワークを選択したものとする。また、制御装置30bは、x軸方向を故障回避軸として選択したものとする。このような場合には、制御装置30bは、0、0~0、4番の計算ユニット、1、0~1、4番の計算ユニットをそれぞれ1つの計算ユニット群とみなす。また、制御装置30bは、2、0~2、4番の計算ユニットを1つの計算ユニット群とみなす。また、制御装置30bは、故障ノードの座標x、y、u=1、0、1、3、1、2、3、2、2から、故障回避単位1、1、3、2を検出する。図18Aは、実施例3に係る制御装置が実行する処理の流れを説明するための図1である。図18Aは、制御装置30bが選択した各計算ユニット群を1つの計算ユニット群として射影した図である。図18Aに示す例では、制御装置30bは、故障回避単位が1,1、3、2であるため、1番の計算ユニットが有する1番の計算ノードと、3番の計算ユニットが有する2番の計算ユニットが故障ノードであるとみなす。図18Bは、実施例3に係る制御装置が実行する処理の流れを説明するための図2である。図18Bに示すように、制御装置30bは、各計算ユニット群を射影した1つの計算ユニット群について、実施例1に係る制御装置30と同様に、各計算ユニット間の経路を選択する。詳細には、制御装置30bは、x軸方向が0番の計算ユニットから順に、故障ノードに接続されていない経路のタイプ0、2、1、0の経路のタイプを選択する。図18Cは、実施例3に係る制御装置が実行する処理の流れを説明するための図3である。図18Cに示すように、制御装置30bは、各計算ユニット群を射影した1つの計算ユニット群について、選択した経路を辿るように、各計算ノードに0~11までの番号をix軸方向の仮想座標として付与する。また、制御装置30bは、付与したix軸方向の仮想座標を、そのままの位置関係で、全ての計算ユニット群が有する計算ユニットに対して付与する。また、制御装置30bは、各計算ユニット群に含まれる計算ノードのy軸座標をiy軸の仮想座標とする。図18Dは、実施例3に係る制御装置が実行する処理の流れを説明するための図4である。図18Dに示すように、制御装置30bは、y軸方向の座標が0である計算ユニット群について、ix、iy=0、0~ix、iy=11、0の仮想座標を付与する。また、制御装置30bは、y軸方向の座標が1である計算ユニット群についてix、iy=0、1~ix、iy=11、1の仮想座標を付与する。また、制御装置30bは、y軸方向の座標が2である計算ユニット群についてix、iy=0、2~ix、iy=11、2の仮想座標を付与する。ここで、制御装置30bは、隣接する計算ノードに対して連続する番号を仮想座標として付与する。このため、仮想座標上において隣接する計算ノードは、物理座標上でもリンクによって直接結合される隣接した計算ノードとなり、各計算ノード同士の通信における仮想座標上でのマンハッタン距離と物理座標上でのマンハッタン距離との対応が保証される。つまり、制御装置30bは、並列計算機10aに故障ノードが含まれる場合にも、各計算ノードを2次元のメッシュ状に直接結合するための仮想座標を利用者に提供することができる。[実施例3の効果]上述したように、制御装置30bは、選択した複数の計算ユニット群のそれぞれについて、一端の計算ユニットから他端に配置された計算ユニットが含むいずれかの計算ノードまで、故障ノードに接続された経路以外の経路を一筆書きを描くように選択する。このため、制御装置30bを有する並列計算機システム1bは、故障ノードが存在する場合にも、2次元のメッシュ状に直接結合された計算ノードを有するネットワークを利用者に提供することができる。また、制御装置30bは、選択した複数の計算ユニット群を1つの計算ユニット群として多重化する。そして、制御装置30bは、多重化した計算ユニット群について、多重化された故障ノードの座標に位置する計算ノード以外の計算ノードを直列に直接結合する経路を選択する。その後、制御装置30bは、選択した経路を選択した全ての計算ユニット群について適用し、各計算ユニット群が有する計算ノードに対して、適用した経路を辿るように連続した仮想座標を付与する。このため、制御装置30bは、全ての計算ユニット群に対して、同じ経路を辿るように連続した仮想座標を付与し、仮想ノード番号で隣り合うノード間は必ず直接の経路をもつことを保障することができる。つまり、各計算ノードは、故障回避軸以外の軸方向に存在する計算ノードとリンクで直接結合されている。このため、制御装置30bは、全ての計算ユニット群に対して同じ経路を辿るように連続した仮想座標を付与し、計算ユニット群ごとに、異なる軸方向の仮想座標を付与した場合には、適切に2次元のメッシュ状に直接結合するための仮想座標を提供できる。結果として、並列計算機システム1bは、計算空間を2次元のメッシュ状に分割した際に、故障ノードが存在する場合にも、各領域を適切な位置関係を有する計算ノードにマッピングすることができる。実施例4では、故障ノードが存在する場合にも、2次元のトーラス状に直接結合された計算ノードのネットワークを提供する並列計算機システム1cについて説明する。図19は、実施例4に係る並列計算機システムの一例を説明するための図である。なお、図19に示す並列計算機システム1cが有する各部のうち、実施例1~3において説明した処理と同じ処理を実行するものについては、実施例1~3と同じ符号を付し、説明を省略する。並列計算機10bは、x軸方向およびy軸方向にそれぞれ2次元のメッシュ状に接続された複数の計算ユニット11b~22bを有する。図20は、実施例4に係る計算ユニットの一例を説明するための図である。図20に示すように、計算ユニット11bは、トーラス状に接続された6つの計算ノード40~45を有する。なお、各計算ノード40~45は、実施例1に係る計算ノード40と同様の計算ノードであるものとし、説明を省略する。図21は、実施例4に係る計算ユニットを結合するトポロジを説明するための図である。図21に示すように、並列計算機10bは、複数のリンクを介して、x軸方向に4個、y軸方向に3個のメッシュ状に接続された複数の計算ユニット11b~22bを有する。各計算ユニット11b~22bには、x軸方向に0~3、y軸方向に0~2の2次元の物理座標が付与されている。また、各計算ユニット11b~22bが有する6つの計算ノードは、それぞれ3つの計算ノードがリング状に接続された2つのブロックに分けることができる。ここで、各リングには、v軸方向として0~1の物理座標が付与され、各リングが有する3つの計算ノードには、u軸方向として0~3の座標が付与されている。図19に戻って、制御装置30cは、実行ノード選択部33b、経路選択部34cを有する。実行ノード選択部33bは、x軸およびu軸の2軸を故障回避軸とし、故障ノードに付与された座標のうち、y軸方向の番号とv軸方向の番号とを削除した番号を故障回避単位として検出する。そして、実行ノード選択部33bは、検出した故障回避単位を経路選択部34cに通知する。経路選択部34cは、それぞれx軸方向に接続された複数の計算ユニットを含む複数の計算ユニット群のそれぞれについて、以下の処理を実行する。すなわち、経路選択部34cは、一端に配置された計算ユニットから他端に配置された計算ユニットで折り返すように、故障ノードに接続された経路以外の経路から往路と復路の2つの経路を選択する。具体例を説明すると、経路選択部34cは、x軸方向に接続された複数のブロックのうち、v軸方向の番号が同じ複数のブロックを1つのブロック群とみなす。つまり、経路選択部34cは、故障回避軸がx軸とu軸であった場合には、各ブロック群をxu平面上に多重化する。そして、経路選択部34cは、多重化されたブロック群について、一端に配置されたブロックから他端に配置されたブロックが含む計算ノードまで、通知された故障回避単位に接続された経路以外の経路を一筆書きを描くように選択する。また、経路選択部34cは、選択した経路を各ブロック群に対して適用し、各ブロック群が有する計算ノードに対して、選択した経路を辿るように連続した番号をx軸方向の仮想座標として付与する。また、経路選択部34cは、各ブロック群が有する計算ノードのy軸方向の座標およびv軸方向の座標に基づいて、各ブロック群をリング状に接続する経路を選択する。そして、経路選択部34cは、選択した経路を辿るように各ブロック群が有する各計算ユニットに対して、連続した番号をy軸方向の仮想座標として付与する。以下、図22A~Fを用いて、経路選択部34cを有する制御装置30cが経路を選択する処理の例について説明する。なお、以下の説明では、制御装置30cは、サイズがix、iy=10、6であるトーラス状に直接結合されたネットワークの提供を利用者から要求されたものとする。例えば、制御装置30cは、図21に示す計算ノードのうち、y軸方向が0番である24個の計算ノードのうち、v軸方向の番号が0である12個の計算ノードを1つのブロック群であるとみなす。また、制御装置30cは、y軸方向が0番である24個の計算ノードのうち、v軸方向の番号が1である12個の計算ノードを1つのブロック群であるとみなす。また、制御装置30cは、図21に示すように、物理座標0、1、1、1、0、2、1、0、2、1、2、0、2、1、2、1の4つの計算ノードが故障ノードであると検出する。このため、制御装置30cは、故障ノードの各座標のy軸番号とv軸番号とを削除し、故障回避単位である0、1と2、2とを検出する。図22Aは、実施例4に係る制御装置が経路を選択する処理の一例を説明するための図1である。なお、図22Aに示す図は、各ブロック群を1つのブロック群として故障回避軸であるx軸とu軸とからなるxu平面上に多重化した図である。図22Aに示す図においては、制御装置30cは、故障回避単位である0、1と2、2とが故障ノードであるとみなす。図22Bは、実施例4に係る制御装置が経路を選択する処理の一例を説明するための図2である。図22Bに示すように、制御装置30cは、制御装置30aと同様の処理を実行することによって、一端に位置するブロックから他端に位置するブロックで折り返すように、故障ノードに接続されていない往路と復路の2つの経路を選択する。詳細には、制御装置30cは、x軸方向が0である計算ユニットから順に、各計算ユニット間において故障ノードに接続されていない経路のタイプ20、01、01を選択する。図22Cは、実施例4に係る制御装置が経路を選択する処理の一例を説明するための図3である。図22Cに示すように、制御装置30cは、経路を選択した場合には、各ブロック群が有する各計算ノードに対して、選択した経路を辿るように、0~9までの連続した番号をix軸方向の仮想座標として付与する。そして、制御装置30cは、付与したix軸方向の仮想座標を、そのままの位置関係で、全てのブロック群が有する計算ユニットに対して付与する。図22Dは、実施例4に係る制御装置が経路を選択する処理の一例を説明するための図4である。図22Dに示す例では、並列計算機10bが有する全てのブロックをy軸方向とv軸方向からなる平面に投影した図である。制御装置30cは、図22Dに示すように、故障回避軸ではないy軸とu軸からなるyu平面上にすべてのブロックを多重化する。図22Eは、実施例4に係る制御装置が経路を選択する処理の一例を説明するための図5である。図22Eに示す例では、制御装置30cは、yv平面状において、リンクで直接結合された計算ノードに連続した仮想座標が付与されるように、0~5までの連続した仮想座標をiy軸方向の仮想座標として付与する。図22Fは、実施例4に係る制御装置が経路を選択する処理の一例を説明するための図6である。図22Fに示すように、制御装置30cは、上述した処理を実行することによって、故障ノードが存在する場合にも、各計算ノードを2次元のトーラス状に直接結合された任意のサイズのネットワークとして動作させるための仮想座標を付与することができる。ここで、経路選択部34cは、各計算ユニット11b~22bが有する計算ノードの数が異なる場合にも、任意の大きさを有する2次元のトーラス状に直接結合された計算ノードのネットワークを提供することができる。そこで、以下の説明では、並列計算機システム1cが並列計算機10cを有し、並列計算機10cがトーラス状に直接結合された9個の計算ノードを有する計算ユニット11c~22cを有する場合について説明する。図23は、9個の計算ノードを有する計算ユニットを説明するための図である。図23に示すように、計算ユニット11cは、トーラス状に接続された9つの計算ノード40~48を有する。なお、各計算ノード40~48は、計算ノード40と同様の計算ノードであるものとし、説明を省略する。なお、各計算ユニット12c~22cは、計算ユニット11cと同様の計算ユニットであるものとし、以下の説明を省略する。図24は、9個の計算ノードを有する計算ユニットが2次元のメッシュ状に接続された例を説明するための図である。これまでの実施例と同様に、各計算ユニット11c~22cには、図24中のx軸方向に0~3、y軸方向に0~2の2次元の座標が付与される。また、各計算ユニットが有する複数の計算ノードには、u軸方向に0~2の座標とv軸方向に0~2の座標が付与される。つまり、各計算ユニット11c~22cは、各計算ユニット11b~22bについて、それぞれv軸方向に計算ノードを拡張した計算ユニットである。換言すると、各計算ユニット11c~22cは、各計算ユニット11b~22bについて、それぞれブロックを1つずつ追加した計算ユニットである。例えば、制御装置30cは、利用者からサイズがx、y=10、7である2次元トーラス状のネットワークを要求されたものとする。また、図24に示す例では、制御装置30cは、故障ノードの座標0、1、1、2、0、2、1、0、2、1、2、1を検出したものとする。このような場合には、制御装置30cは故障回避単位である0、1、2、2を検出する。また、制御装置30cは、N=10、m=3、k=2として式1を解き、n=4を算出する。また、制御装置30cは、N=6、m=2として以下の式2を解き、n=3を算出する。そして、制御装置30cは、x、y=0、0の計算ユニットからx軸方向に4個、y軸方向に3個の計算ユニットを2次元メッシュ状に結合した範囲を選択する。また、制御装置30cは、各計算ユニット11c~22cが有する複数の計算ユニットのうち、v軸方向の座標が同じ計算ユニットを1つのブロックとみなす。つまり制御装置30cは、各計算ユニット11c~22cをそれぞれ3つのブロックに分割する。また、制御装置30cは、各計算ユニット群が有する複数のブロックのうち、v軸方向の番号が同じ4つのブロックを1つのブロック群であるとみなす。つまり、図24に示す例では、制御装置30cは、3個の計算ユニットを9個のブロック群であるとみなす。続いて、図25A~25Fを用いて、制御装置30cが各計算ユニット11c~22cが有する計算ノードに仮想座標を付与する処理について説明する。以下の説明では、制御装置30cは、x軸を故障回避軸として選択したものとする。図25Aは、計算ユニットが9個の計算ノードを有する場合に、実施例4に係る制御装置が経路を選択する処理の一例を説明するための図1である。図25Aに示すように、制御装置30cは、9個のブロック群を1つのブロック群として多重化する。また、図25Aに示す図においては、制御装置30cは、故障回避単位であるx、u=0、1、2、2が故障ノードであるとみなす。図25Bは、計算ユニットが9個の計算ノードを有する場合に、実施例4に係る制御装置が経路を選択する処理の一例を説明するための図2である。図25Bに示すように、制御装置30cは、各ブロック間において、故障ノードを回避するように、経路のタイプを選択する。図25bに示す例では、制御装置30cは、x軸方向の座標が0のブロックと1のブロックとの間において、経路のタイプ20を選択し、x軸方向の座標が1のブロックと2のブロックとの間において経路のタイプ01を選択する。また、制御装置30cは、x軸方向の座標が2のブロックと3のブロックとの間において、経路のタイプ01を選択する。その後、制御装置30cは、各ブロック内における計算ノードを接続する経路を選択する。図25Cは、計算ユニットが9個の計算ノードを有する場合に、実施例4に係る制御装置が経路を選択する処理の一例を説明するための図3である。図25Cに示すように、制御装置30cは、各ブロック間における経路のタイプと、各ブロック内における経路を選択した場合には、選択した経路を辿るように、各計算ノードに連続した番号をix軸方向の仮想座標として付与する。次に、制御装置30cは、各ブロック群について、y軸方向の経路を判別する。図25Dは、計算ユニットが9個の計算ノードを有する場合に、実施例4に係る制御装置が経路を選択する処理の一例を説明するための図4である。図25Dに示すように、制御装置30cは、各ブロック群が有する計算ノードをyv平面上に多重化する。そして、制御装置30cは、利用者から要求されたネットワークのサイズのうちy軸方向のサイズが7であるので、yv平面上に多重化された7つの計算ノードをリング状に直接結合する複数の経路を選択する。図25Eは、計算ユニットが9個の計算ノードを有する場合に、実施例4に係る制御装置が経路を選択する処理の一例を説明するための図5である。図25Eに示すように、制御装置30cは、7つの計算ノードをリング状に直接結合する複数の経路を選択した場合には、選択した経路を辿るように、各計算ノードに0~6までの番号をy軸方向の仮想座標として付与する。図25Fは、計算ユニットが9個の計算ノードを有する場合に、実施例4に係る制御装置が経路を選択する処理の一例を説明するための図6である。図25Fに示すように、制御装置30cは、上述した処理を実行することによって、故障ノードが存在する場合にも、各計算ノードを2次元のトーラス状に直接結合された任意のサイズのネットワークとして動作させるための仮想座標を付与することができる。[制御装置30cの処理の流れ]次に、図26を用いて、制御装置30cが実行する処理の流れについて説明する。図26は、実施例4に係る制御装置が実行する処理の流れの一例を説明するためのフローチャートである。なお、図26に示すフローチャートは、制御装置30cが実行する処理を一般化したものである。図26に示す例では、各計算ユニットの結合トポロジをM次元とし、各計算ノードの物理座標をx1~xM、u1~uMで表記するものとする。また、各計算ノードに付与される仮想座標をX1~XMで表記するものとし、仮想座標Xjに対応する物理座標をxj’、uj’’と表記するものとする。また、故障回避軸を仮想座標でXη、すなわち、物理座標でxη’、uη’’で表記するものとする。ここで、0≦Xη<N、0≦xη’<n、0≦uη’’<mを満たすものとする。また、故障ノードのリストFは、x11~xM1、u11~uM1~x1K~xMK、u1K~uMKで表される。なお、故障ノードの数はKとなる。また、以下の説明において、m≧2である場合には、以下のフローチャートは、実施例3で説明した制御装置30bが実行する処理に対応し、m≧3である場合には、実施例4で説明した制御装置30cが実行する処理に対応する。まず、制御装置30cは、Xjとxj’、uj’’とを対応させることで、仮想座標と物理座標の軸の対応を選択するとともに、故障回避軸xη’、uη’’を選択するステップS401。次に制御装置30cは、故障単位の数を示すパラメータkを0にセットし、故障回避単位の集合を示すパラメータFを空リストφにセットし、故障ノードを識別するパラメータjを1にセットするステップS402。次に、制御装置30cは、j番目の故障ノードの座標からxη’j、uη’’jを取得するステップS403。次に、制御装置30cは、xη’j、uη’’jが故障ノードのリストFに含まれているか否かを判別するステップS404。そして、制御装置30cは、xη’j、uη’’jが故障ノードのリストFに含まれている場合にはステップS404肯定、パラメータkに1を加算し、故障ノードのリストFにxη’j、uη’’jを追加するステップS405。一方、制御装置30cは、xη’j、uη’’jが故障ノードのリストFに含まれていない場合にはステップS404否定、ステップS405の処理をスキップする。次に、制御装置30cは、パラメータjに1を加算した値が故障ノードの数K以下であるか否かを判別するステップS406。そして、制御装置30cは、パラメータjに1を加算して新しいjとする。その新しいjの値が故障ノードの数K以下であると判別した場合にはステップS406肯定、再度ステップS403を実行する。一方、制御装置30cは、新しいjの値が故障ノードの数Kを超えた、すなわち、すべての故障ノードについての処理を終えたと判別した場合にはステップS406否定、使用する計算ユニットを選択するステップS407。具体例を説明すると、制御装置30cは、xη’方向についてはceilingNk/mから算出される数の連続する計算ユニットを選択し、他の軸方向についてはceilingNj/mjから算出される数の計算ユニットを選択する。次に、制御装置30cは、xη’方向に接続された複数の計算ユニット、つまり、計算ユニット群について、各計算ユニット間における経路のタイプCT0~CTn-2を選択するステップS408。なお、経路のタイプを選択する処理については、図13、図14に示した処理と同様の処理を実行するものとして、詳細な説明を省略する。次に、制御装置30cは、xη’=1からxη’=n-2までの計算ユニットについて、ユニット内におけるuη’’軸方向の経路を選択するステップS409。つまり、制御装置30cは、各計算ユニット内における各計算ノードを一度だけ通る経路を選択する。次に、制御装置30cは、物理座標xη’j、uη’’jと仮想座標Xηとの対応を決定する。つまり、制御装置30cは、選択した経路を辿るように、連続する番号を1つの軸方向の仮想座標として各計算ノードに付与する。次に、制御装置30cは、1≦j≦Mを満たすj=η以外のパラメータjについて以下の処理を実行するステップS412。すなわち、制御装置30cは、物理座標xj’、uj’’と仮想座標Xjとの対応を決定するステップS413。つまり、制御装置30cは、ステップS408~S411にて経路を選択した軸方向以外の軸方向について、多重化した計算ユニット間の経路を選択し、選択した経路を辿るように、連続する番号を仮想座標として各計算ユニットが有する計算ノードに付与する。その後、制御装置30cは、1≦j≦Mを満たすj=η以外のパラメータjについてステップS412の処理を実行した場合にはステップS412完了、処理を終了する。[実施例4の効果]上述したように、制御装置30cは、2次元のメッシュ状に接続された複数の計算ユニットについて、1つの軸方向に接続された複数の計算ユニットを含む複数の計算ユニット群のそれぞれについて、以下の処理を実行する。すなわち、制御装置30cは、各計算ユニット間において、故障ノードに接続されていない経路から往路と復路の2つの経路を、一方の端に位置する計算ユニットから他端に位置する計算ユニットで折り返すように選択する。また、制御装置30cは、1つの計算ユニットが有する複数の計算ノードを、それぞれリング状に直接結合された複数の計算ノードからなる複数のブロックに分割する。そして、制御装置30cは、1つの軸方向に接続された複数のブロック群を1つのブロック群に投影し、複数のブロック群を投影したブロック群について故障ノードに接続されていない経路から往路と復路とを選択する。このため、制御装置30cは、利用者が要求する任意の大きさを有するネットワークであって、各計算ノードを2次元のトーラス状に直接結合したネットワークを利用者に提供することができる。この結果、制御装置30cは、計算空間を2次元のトーラス状に分割した際に、故障ノードが存在する場合にも、各領域を適切な位置関係を有する計算ノードにマッピングすることができる。仮想ノード座標でいずれかの軸方向に隣り合うノード間は必ず直接の経路をもつことが保障される。実施例5では、利用者によって入力されたネットワークのサイズに応じて、並列計算機10cが有する複数の計算ユニットから、適切な範囲の計算ユニットを選択し、選択した計算ユニットに仮想座標を付与する並列計算機システム1dについて説明する。図27は、実施例5に係る並列計算機システムの一例を説明するための図である。なお、図27に示す並列計算機システム1dが有する各部のうち、実施例1~4において説明した処理と同じ処理を実行するものについては、実施例1~4と同じ符号を付し、説明を省略する。並列計算機10dは、2次元のメッシュ状に接続された複数の計算ユニット11d~22dを有する。図28は、実施例5に係る並列計算機を説明するための図である。以下の説明では、図28に示すように、並列計算機10cは、x軸方向に6個、y軸方向に5個の2次元メッシュ状に接続された30個の計算ユニットを有する。なお、各計算ユニットは、実施例4に係る各計算ユニット11a~22aと同様に、トーラス状に接続された6つの計算ノードを有するものとする。このため、各計算ノードには、x軸方向、y軸方向、u軸方向、v軸方向に0、0、0、0~5、4、2、3の物理座標が付与されている。また、物理座標1、2、1、0の計算ノードは、故障ノードである。また、図28中の斜線で覆われた範囲の計算ユニットは、既に他のプログラムを実行している範囲を示す。図27に戻って、制御装置30dは、実行ノード選択部33cを有する。実行ノード選択部33cは、利用者によって指定されたネットワークのサイズに応じて、並列計算機10dが有する複数の計算ユニットから、適切な範囲の計算ユニットであって、プログラムを実行していない計算ユニットを選択する。具体例を説明すると、実行ノード選択部33cは、受付部31aから、利用者がプログラムを実行させる仮想座標のサイズの通知を受ける。また、実行ノード選択部33cは、故障ノード検出部32から故障ノードの物理座標の通知を受ける。また、実行ノード選択部33cは、並列計算機10dが有する各計算ユニットのうち、プログラムを実行している計算ユニットを除外した範囲を検出する。そして、実行ノード選択部33cは、通知された仮想ネットワークのサイズに基づいて、プログラムを実行させる計算ユニットの範囲を選択する。詳細には、実行ノード選択部33cは、故障回避軸と、仮想座標の各軸方向に付与する番号のサイズとの組み合わせを全て算出する。そして、実行ノード選択部33cは、算出した各組み合わせによって仮想座標を付与する計算ユニットの範囲を選択する。また、実行ノード選択部33cは、選択された計算ユニットの範囲と、通知された故障ノードの物理座標とから、選択した範囲の計算ユニットに対して、通知されたサイズの仮想座標を付与できるか否かを判別する。その後、実行ノード選択部33cは、選択した範囲の計算ユニットに通知されたサイズの仮想座標を付与できると判別した場合には、選択した範囲の計算ユニットを経路選択部34dに通知する。また、実行ノード選択部33cは、選択した範囲の計算ユニットに通知されたサイズの仮想座標を付与できないと判別した場合には、新たに、プログラムを実行させる計算ユニットの範囲を選択し直し、再度、仮想座標を付与できるか否かを判別する。次に、制御装置30dが実行する処理の具体例について説明する。図29は、利用者が並列計算機に実行させるプログラムの一例を説明するための図である。なお、図29に示すプログラムは、計算ノード間の通信を記述するMPIライブラリを利用する。このようなMPIライブラリは、プログラムの実行開始時に、マシンファイルと呼ばれる計算ノード名の一覧の読込を行い、プログラム中に記載された計算ノードの番号rank番号と計算ノードの物理座標との対応を特定する。また、例えば、マシンファイルには、座標x、y、u、vに位置する計算ノードの名前nodexyuvが1行に1つずつ格納されており、先に格納されから順に、0から始まるrank番号を割当てることを示す。図30は、利用者がプログラムの実行を意図する複数の計算ノードを説明するための図である。利用者は、図30に示すように、ix軸方向に0~11、iy方向に0~5までの計72個の計算ノードによる実行を意図して図26に示すプログラムを作成したものとする。また、利用者は、各ノード間の通信を効率化するため、サイズが12×6の2次元トーラスへのプログラムの割り付けを要求したものとする。このような場合には、制御装置30dは、計算ノードに付与する仮想座標のサイズが12×6のトーラス状であることを判別する。また、制御装置30dは、並列計算機10dが有する各計算ユニットから、故障ノードの物理座標1、2、1、0を検出する。また、制御装置30dは、判別した仮想座標のサイズに基づいて、プログラムを実行させる計算ユニットの範囲を選択する。詳細には、制御装置30dは、故障回避軸と、仮想座標の各軸方向に付与する番号のサイズとの組み合わせを算出する。この例においては、制御装置30dは、xu、yv=12、6、xu、yv=6、12、yu、xv=12、6、yu、xv=6、12の組み合わせを算出する。ここで、図28中のAに示す範囲は、xu、yv=12、6を選択した際に、仮想座標を付与する計算ユニットの範囲である。すなわち、図28中のAの原点をx、y=0、2とした際に、原点から見た故障ノードの相対座標は1、0、1、0となり、故障回避単位はx、u=1、1となる。このため、x軸方向に使用する計算ユニットの数n1は、N=12、m=3、k=1として式1を解き、n1=5となる。また、y軸方向に使用する計算ユニットの数n2は、N=6、m=2として式2を解き、n2=3となる。なお、図28中のBに示す範囲は、xu、yv=6、12を選択した際に、仮想座標を付与する計算ユニットの範囲である。図28中のBに示す範囲においては、故障ノードが存在しないので、n1=4となる。また、図28中のCに示す範囲は、yu、xv=12、6を選択した際に、仮想座標を付与する計算ユニットの範囲である。また、図28中のDに示す範囲は、yu、xv=6、12を選択した際に、仮想座標を付与する計算ユニットの範囲である。図28に示す例では、制御装置30dは、算出した各組合せについて、仮想座標を付与することができる計算ユニットの範囲を選択可能である。このため、制御装置30dは、あらかじめ定められたジョブスケジューリングの戦略に従って、図28中のAで示す範囲を選択する。ここで、制御装置30dには、任意のジョブスケジューリングの戦略を適用することができる。次に、制御装置30dは、選択した範囲について、実施例4と同様に、x軸方向の経路を選択する。図31は、実施例5に係る制御装置がx軸方向の経路を選択する処理の一例を説明するための図である。図31に示すように、制御装置30dは、xu平面上に多重化した各ブロック群が有する各ブロック間において、故障回避単位に接続された経路以外の経路から往路と復路とを選択し、多重化された計算ノードを一度だけ通るリング状の経路を選択する。図31に示す例では、制御装置30dは、各ブロック間において、タイプ20、20、01、12を選択し、選択した経路を辿るように、多重化された計算ノードに対して連続する0~11の番号を付与する。図32は、各計算ノードに付与されるix軸方向の仮想座標を説明するためのテーブルである。図32に示す例では、制御装置30dは、選択した計算ユニットの範囲に含まれる各計算ノードのうち、物理座標がx、u=0、0である全ての計算ノードに仮想座標ix=0を付与する。同様に、制御装置30dは、選択した計算ユニットの範囲に含まれる各計算ノードのうち、物理座標がx、u=1、0である全ての計算ノードに仮想座標ix=1を付与する。以下、制御装置30dは、物理座標がx、u=2、0、3、0、3、2、4、2、4、1、3、1、2、1、2、2、1、2、0、2である計算ノードに仮想座標ix=2~11を付与する。次に、制御装置30dは、実施例4と同様に、iy軸方向の経路を選択する。図33は、実施例5に係る制御装置がy軸方向の経路を選択する処理の一例を説明するための図である。図33に示すように、制御装置30dは、yv平面上に多重化した各ブロック群が有する各計算ノードを一度だけ通るリング状の経路を選択し、選択した経路を辿るように各計算ノードに連続する0~5の番号を付与する。図34は、各計算ノードに付与されるiy軸方向の仮想座標を説明するためのテーブルである。図34に示す例では、制御装置30dは、選択した計算ユニットの範囲に含まれる各計算ノードのうち、物理座標がy、v=2、0である全ての計算ノードに仮想座標iy=0を付与する。同様に、制御装置30dは、物理座標がy、v=3、0、4、0、4、1、3、1、2、1である各計算ノードに、それぞれ仮想座標iy=1~5を付与する。その後、制御装置30dは、各計算ノードに付与した仮想座標に基づいて、各計算ノードの名前を一次元に並べたマシンファイルを出力する。図35は、実施例5に係る制御装置が出力するマシンファイルの一例を説明するための図である。図35に示すように、制御装置30dは、各計算ノードに仮想座標を付与した場合には、図30に示す0~71までの順番に従って、各仮想座標が示す計算ノードの名前を格納したマシンファイルを作成する。そして、制御装置30dは、生成したマシンファイルを出力するとともに、MPIライブラリが用いるファイルとして、記憶部36に格納する。なお、上述した例では、2次元のトーラス状に直接結合するための仮想座標を各計算ノードに付与する例を説明した。しかし、制御装置30dは、上述した実施例3において説明した経路を選択する処理を実行することによって、2次元のメッシュ状に直接結合するための仮想座標を各計算ノードに付与することもできる。また、制御装置30dは、上述した実施例1、2において説明した処理を実行することによって、1次元のメッシュ、又は1次元のトーラス状に直接結合するための仮想座標を各計算ノードに付与することもできる。[制御装置30dの処理の流れ]次に、図36を用いて、制御装置30dが実行する処理の流れの一例について説明する。図36は、実施例5に係る制御装置が実行する処理の流れの一例を説明するためのフローチャートである。なお、図36に示す例は、上述した制御装置30dが実行する処理について一般化した処理の例である。図36に示す例では、制御装置30dは、利用者から仮想座標のサイズを受け付けたことをトリガとして、処理を開始する。まず、制御装置30dは、利用者から仮想座標の各軸方向のサイズを受け付けるステップS501。次に制御装置30dは、故障ノードの物理座標を検出するステップS502。次に、制御装置30dは、他のプログラムを実行していない計算ユニットの範囲を選択するステップS503。次に、制御装置30dは、他のプログラムを実行していない計算ユニットの範囲を選択できたか否かを判別しステップS504、選択できなかった場合にはステップS504否定、処理をキューイングするステップS505。その後、制御装置30dは、所定の時間が経過、あるいは、実行されているプログラムが終了した場合には、再度ステップS501から処理を開始する。また、制御装置30dは、他のプログラムを実行していない計算ユニットの範囲を選択できた場合にはステップS504肯定、仮想座標の付与を行うステップS506。なお、ステップS506の処理は、実施例4に示した処理と同様の処理である。次に、制御装置30dは、隣接する計算ノードに連続する仮想座標の付与に成功したか否かを判別しステップS507、付与できなかった場合にはステップS507否定、再度ステップS503の処理を実行する。また、制御装置30dは、隣接する計算ノードに連続する仮想座標の付与に成功した場合にはステップS507肯定、仮想座標に基づく順番で各計算ノード名が格納されたマシンファイルを作成するステップS508。その後、制御装置30dは、作成したマシンファイルを出力しステップS509、処理を終了する。[実施例5の効果]上述したように、制御装置30dは、利用者から受け付けた仮想座標のサイズに基づいて、他のプログラムを実行していない計算ユニットの範囲を選択する。そして、制御装置30dは、選択した計算ユニット間において、故障ノードに接続されていない経路から往路と復路とを選択し、選択した経路を辿るように仮想座標を付与する。このため、制御装置30dは、並列計算機が複数のプログラムを実行するマルチジョブが適用されている場合にも、トーラス状に直接結合された計算ノードを利用者に提供することができる。つまり、並列計算機10dは、トーラス状に直接結合された計算ノードを用いて実行させる複数のプログラムを、同時に実行させることができる。また、制御装置30dは、利用者から受け付けた仮想座標のサイズに基づいて、計算ユニットの範囲を選択するので、必要最小限のハードウェア資源を利用者に提供することができる。また、制御装置30dは、選択した計算ユニットの範囲に故障ノードが含まれる場合にも、隣接する計算ノードに対して連続する仮想座標を付与することができるので、仮想ノード番号で隣り合うノード間は必ず直接の経路をもつことを保障する。このため、制御装置30dは、各計算ノード間の通信効率を劣化させることなく、プログラムを効率良く実行させることができる。また、制御装置30dは、故障ノードを気にすることなく、同じ品質のサービスを利用者に提供することができる。これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例6として本発明に含まれる他の実施例を説明する。1制御装置について上述した実施例3に制御装置30bは、2次元のメッシュ状に直接結合された複数の計算ユニット11a~22aを有する並列計算機10aが、故障ノードを有する場合にも、各計算ノードに仮想座標を付与した。しかし、実施例はこれに限定されるものではなく、制御装置30bは、並列計算機10aが任意の次元のメッシュ状に直接結合された複数の計算ユニットを有する場合にも、各計算ノードに仮想座標を付与することができる。図37は、3次元メッシュ状に接続された計算ユニットを説明するための図である。図37に示す例では、3つの計算ノードを有する複数の計算ユニットがx1軸方向、x2軸方向、x3軸方向の3次元のメッシュ状に直接結合されている。また各計算ユニットが有する3つの計算ノードには、u軸方向として番号が付与されている。このような場合にも、制御装置30bは、x1軸方向、x2軸方向、x3軸方向のいずれかの軸を故障回避軸として選択し、選択した故障回避軸方向に直列に結合された複数の計算ユニットを計算ユニット群とする。また、制御装置30bは、選択した故障回避軸例えば、x2軸とu軸とからなる平面上に各計算ユニット群を多重化するとともに、検出した故障ノードを故障回避軸とu軸とからなる平面上に多重化する。そして、制御装置30bは、実施例3と同様に、多重化した計算ユニット群について、多重化した故障ノードに接続されていない経路を一筆書きを描くように選択する。その後、制御装置30bは、各計算ユニット群に対して、選択した経路を辿るように連続した番号を1つの軸方向例えばix2軸方向の仮想座標として付与する。また、制御装置30bは、各計算ノードについて、故障回避軸以外の物理座標例えば、x1軸、x3軸に基づいて、他の軸方向例えば、ix1軸方向、ix3軸方向の仮想座標を付与する。また、制御装置30bは、計算ユニットがそれぞれ4次元以上のメッシュ状に直接結合された場合にも、以下の処理によって適切に仮想座標を付与することができる。すなわち、制御装置30bは、いずれか1軸を故障回避軸として、各計算ユニット群を選択し、選択した計算ユニット群を多重化し、多重化した計算ユニット群について経路を選択する。そして、制御装置30bは、選択した各計算ユニット群に対して選択した経路を辿るように1軸方向の仮想座標を付与し、さらに、各計算ノードの物理座標のうち、故障回避軸方向以外の成分に基づいて、他の軸方向の仮想座標を付与する。つまり、制御装置30bは、計算ユニットが多次元のメッシュ状に直接結合されている場合には、各計算ユニット群を任意の平面に多重化し、多重化した計算ユニット群について、多重化した故障ノードを避けるように、連続した仮想座標を付与する。そして、制御装置30bは、付与した仮想座標を全ての計算ユニット群に適用するとともに、他の次元についても同様の処理をくりかえし行うことによって、各計算ノードに仮想座標を付与する。この結果、制御装置30bは、計算ユニットがそれぞれ4次元以上のメッシュ状に直接結合され、かつ、故障ノードが含まれる場合にも、各計算ユニットを多次元のメッシュ状に直接結合するための仮想座標を各計算ノードに付与することができる。このように、制御装置30bは、選択した故障回避軸方向に基づく平面上に各計算ユニット群を多重化し、多重化した計算ユニット群について、多重化された故障ノードに接続されていない経路を一筆書きを描くように選択する。そして、制御装置30bは、各計算ユニット群について、多重化された計算ユニット群において選択した経路を適用し、適用した経路を辿るように各計算ユニット群が有する計算ノードに仮想座標を付与する。このため、制御装置30bは、2次元以上のメッシュ状のトポロジで計算ユニットが直接結合されている場合にも、故障ノード以外の計算ノードに対して、適切な仮想座標を付与することができる。また、実施例4に係る制御装置30cも同様に、並列計算機が任意の次元のメッシュ状に直接結合された複数の計算ユニットを有する場合にも、各計算ノードに仮想座標を付与することができる。図38は、3次元トーラス状に接続された計算ノードを有する計算ユニットを3次元メッシュ状に接続した例を説明するための図1である。図38に示す例では、各計算ユニットは、x1軸、x2軸、x3軸の3次元メッシュ状に直接結合されている。また、図38に示す例では、各計算ユニットは、u1軸、u2軸、u3軸の3次元トーラス状に直接結合されている。このような場合には、制御装置30cは、x1~x3軸のいずれか1軸と、u1~u3軸のいずれか1軸とを故障回避軸として選択する。そして、制御装置30cは、u1~u3軸の値が同じであって、x1~x3軸から選択した故障回避軸方向に直接結合された複数のブロックをブロック群とする。また、制御装置30cは、各ブロック群を選択した故障回避軸からなる平面上に多重化する。また、制御装置30cは、故障ノードを故障回避軸からなる平面上に多重化し、多重化した故障ノードの位置を故障回避単位とする。そして、制御装置30cは、多重化されたブロック群について、一端のブロックから他端のブロックで折り返すように、故障回避単位に接続されていない経路から往路と復路とを選択する。その後、制御装置30cは、選択した経路をすべてのブロック群に適用し、全てのブロック群について適用した経路を辿るように連続した番号を仮想座標の1つ目の次元として各計算ノードに付与する。また、制御装置30cは、x1~x3軸から故障回避軸として選択しなかった軸とu1~u3軸から故障回避軸として選択しなかった軸とからなる平面上に各ブロック群を多重化する。そして、制御装置30cは、多重化した各ブロック群をリング状に接続する経路を選択し選択した経路を辿るように連続した番号を仮想座標の2つ目の次元、および、仮想座標の3つ目の次元として各計算ノードに付与する。また、図39は、3次元トーラス状に接続された計算ノードを有する計算ユニットを3次元メッシュ状に接続した例を説明するための図2である。制御装置30cは、図39に示すように、u3軸方向に計算ノードが拡張された場合にも、上述した処理を行うことによって、故障ノードを回避しつつ、トーラス状に直接結合された計算ノードを提供するための仮想座標を各計算ノードに付与できる。また、制御装置30cは、計算ユニットがそれぞれ4次元以上のメッシュ状に直接結合された場合にも、以下の処理によって適切に仮想座標を付与することができる。すなわち、制御装置30cは、各計算ユニットの物理座標を示す軸方向のいずれか1軸および各計算ユニットが有する計算ノードを示す軸方向のいずれか1軸の2軸を故障回避軸として選択する。そして、制御装置30cは、上述した処理と同様、故障回避軸として選択した2軸からなる平面にブロック群を多重化し、多重化したブロック群についてリング状の経路を選択し、選択した経路に沿って仮想座標の1つめの次元を各計算ノードに付与する。また、制御装置30cは、各計算ユニットの物理座標を示す軸方向および各計算ユニットが有する計算ノードを示す軸方向のから故障回避軸として選択しなかった軸を1軸ずつ選択し、選択した2軸からなる平面に各計算ユニット群を多重化する。そして、制御装置30cは、多重化した各計算ユニット群をリング状に接続する経路を選択し、選択した経路に沿って仮想座標の他の次元を各計算ノードに付与する。つまり、制御装置30cは、多重化した各計算ユニット群に含まれる正常な計算ノードをリング状に接続するための経路を選択し、選択した経路を全ての計算ユニット群に適用する。また、制御装置30cは、他の次元についても多重化した計算ユニット群を接続する経路を選択する処理を繰り返す。この結果、制御装置30cは、任意の次元数のメッシュ状に接続された計算ユニットについて、故障ノードが含まれる場合にも、多次元のトーラス状に直接結合された計算ノードを提供するための仮想座標を各計算ノードに付与することができる。2各実施例の制御装置について上述した各実施例1~4では、それぞれ異なるトポロジによって直接結合された複数の計算ノードに対して仮想座標を付与する制御装置30~30dについて説明した。しかし、実施例はこれに限定されるものではなく、例えば、各制御装置30~30dに示す全ての機能を有し、利用者によって入力された仮想座標のサイズに基づいて、仮想座標を付与する処理を上記した制御装置30~30dが行う処理から選択することとしてもよい。例えば、実施例6に係る制御装置30eは、利用者によって入力された仮想座標のサイズが1次元であった場合には、並列計算機から2次元のメッシュ状に接続された複数の計算ユニットを選択する。そして、制御装置30eは、選択した複数の計算ユニットに対して、制御装置30または制御装置30aと同様の処理を実行する。また、例えば、実施例6に係る制御装置30eは、利用者によって入力された仮想座標のサイズが2次元であった場合には、並列計算機から任意の次元のメッシュ状に接続された複数の計算ユニットを選択する。そして、制御装置30eは、制御装置30cと同様の処理を実行することとしてもよい。また、制御装置30eは、1つの並列計算機が有する複数の計算ユニットのうち、一部の範囲の計算ユニットに2次元のトーラス状に直接結合するための仮想座標を付与する。その後、制御装置30eは、他の範囲の計算ユニットに対して、2次元のメッシュ状に直接結合するための仮想座標を付与したり、1次元のリング状またはメッシュ状に直接説結合するための仮想座標を付与しても良い。3プログラムの実行について上述した各制御装置30~30eは、利用者によって入力された仮想座標のサイズに基づいて、各計算ノードに仮想座標を付与した。しかし、実施例はこれに限定されるものではない。例えば、制御装置30~30eは、実行させるプログラムを取得した場合には、取得したプログラムを解析し、プログラムが実行されるネットワークのトポロジとサイズとを判別する。そして、制御装置30~30eは、判別したトポロジとサイズとに応じて、並列計算機から利用する計算ユニットの範囲を選択し、選択した計算ユニットの範囲に対して仮想座標を付与する。その後、制御装置30~30cは、各計算ノードに付与した仮想座標に基づいて、プログラムによって実行させるジョブを各計算ノードに割当てて、プログラムを実行させることとしてもよい。また、上述した実施例では、各制御装置30~30eが仮想座標を付与した結果をMPI実行時にライブラリが利用するマシンファイルとして出力する例を説明したが、実施例はこれに限定されるものではなく、任意の形式のデータとして出力することができる。4計算ノードの構成について上述した例では、各計算ノード40~48は、CPU50、メモリ51、ネットワークインタフェース52を有するものとした。しかし、実施例はこれに限定されるものではなく、ジョブを実行することができ、かつ、他の計算ノードと直接結合することができる計算ノードであれば、任意の構成を適用することができる。5プログラムところで、実施例1~5制御装置30~30eは、ハードウェアを利用して各種の処理を実現する場合を説明した。しかし、実施例はこれに限定されるものではなく、あらかじめ用意されたプログラムを並列計算機を制御するコンピュータで実行することによって実現するようにしてもよい。そこで、以下では、図40を用いて、実施例1に示した制御装置30と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図40は、制御プログラムを実行するコンピュータの一例を説明するための図である。図40に例示されたコンピュータ100は、RAM120、ROM130、HDD150がバス170で接続される。また、図40に例示されたコンピュータ100は、CPU140がバス170で接続される。さらにバス170には、利用者から仮想座標のサイズを受信するとともに、並列計算機が有する故障ノードの検出や各計算ノードに対するジョブの割当てを行うための入出力装置であるI/OInputOutput160が接続される。ROM130には、制御プログラム131があらかじめ保持される。CPU140が制御プログラム131をROM130から読み出して実行することによって、図40に示す例では、制御プログラム131は、制御プロセス141として機能するようになる。なお、制御プロセス141は、図1に示した制御装置30と同様の機能を発揮する。また、各制御プロセス141は、実施例2~6に係る各部と同等の機能を発揮するようにすることも可能である。なお、本実施例で説明した制御プログラムは、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスクFD、CD-ROMCompactDiscReadOnlyMemory、MOMagnetoOpticalDisc、DVDDigitalVersatileDiscなどのコンピュータで読取可能な記録媒体に記録される。また、このプログラムは、コンピュータによって記録媒体から読み出されることによって実行することもできる。"