(57)【特許請求の範囲】
【請求項１】
複数のプロセッサを格子状のメッシュ・トポロジーまたはトーラス・トポロジーの相互接続ネットワークにより接続した並列計算システムにおいて、
前記並列計算システムの各プロセッサから他のプロセッサへの前記相互接続ネットワークにおける通信経路は次元オーダで決定され、
前記各プロセッサに対して、同じタイミングで実行されるデータ通信における、各プロセッサから見た送信先プロセッサの相対的位置を特定するための相対座標として、前記全ての各プロセッサで共通な相対座標が設定され、
前記各プロセッサは、前記各プロセッサから同じタイミングで実行されるデータ通信の宛先となる複数の相対座標値を前記設定された共通な相対座標に基づいて選択し、前記選択した複数の相対座標値に対応する複数の送信先プロセッサに対するデータ通信を同じタイミングで行う同時通信処理を、前記相互接続ネットワーク内の前記各プロセッサを除くすべてのプロセッサが一度だけ宛先となるように、宛先となる前記複数の相対座標値を適宜変更しながら繰り返し実行する
ことを特徴とする並列計算システム。
【請求項２】
請求項１に記載の並列計算システムにおいて、
前記並列計算システム中の各プロセッサは、最大４つのプロセッサに対して同時にデータを送信可能であり、
前記相互接続ネットワークは二次元トーラスであり、前記相互接続ネットワークの第１の次元の長さと第２の次元の長さをともにＬとし、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎとした場合、
各プロセッサは、
Ｘ１の絶対値をＹ１の絶対値と異なる値とし、且つＸ１の絶対値およびＹ１の絶対値をＬの半分の値とは異なる値とした相対座標（Ｘ１，Ｙ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転とした相対座標（Ｘ２，Ｙ２）と、Ｘ３をＹ１、Ｙ３をＸ１とした相対座標（Ｘ３，Ｙ３）と、Ｘ４をＹ１の符号反転、Ｙ４をＸ１の符号反転とした相対座標 （Ｘ４，Ｙ４）との各位置にある４つの送信先プロセッサに対してデータを送信する第一の送信処理と、
Ｘ１の絶対値をＹ１の絶対値と等しい値とした相対座標（Ｘ１，Ｙ１）と、Ｘ２をＸ１ の符号反転、Ｙ２をＹ１の符号反転とした相対座標（Ｘ２，Ｙ２）と、Ｘ３をＸ１の符号反転、Ｙ３をＹ１とした相対座標（Ｘ３，Ｙ３）と、Ｘ４をＸ１、Ｙ４をＹ１の符号反転とした相対座標（Ｘ４，Ｙ４）との各位置にある４つの送信先プロセッサに対してデータを送信する第二の送信処理と、
Ｘ１の絶対値をＹ１の絶対値と等しい値とし、相対座標（Ｘ１，０）と、相対座標（０，Ｙ１）と、Ｘ２をＸ１の符号反転とした相対座標（Ｘ２，０）と、Ｙ２をＹ１の符号反転とした相対座標（０，Ｙ２）との各位置にある４つの送信先プロセッサに対してデータを送信する第三の送信処理とを適宜実行するものであり、
前記並列計算システムの各プロセッサが、同一の相対座標を持つ送信先プロセッサに対する同一の送信処理を適用したデータ通信を、同じタイミングで実行する
ことを特徴とする並列計算システム。
【請求項３】
請求項１記載の並列計算システムにおいて、
前記並列計算システム中の各プロセッサは、最大４つのプロセッサに対して同時にデータを送信可能であり、
前記相互接続ネットワークは二次元トーラスであり、前記相互接続ネットワークの第１の次元の長さと第２の次元の長さが異なり、前記相互接続ネットワークの第１の次元の長さおよび第２の次元の長さの最大値をＬとし、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎとした場合、
各プロセッサが、
Ｘ１の絶対値をＹ１の絶対値と異なる値とし、且つＸ１の絶対値およびＹ１の絶対値をＬの半分の値とは異なる値とした相対座標（Ｘ１，Ｙ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転とする相対座標（Ｘ２，Ｙ２）と、Ｘ３をＹ１、Ｙ３をＸ１とする相対座標（Ｘ３，Ｙ３）と、Ｘ４をＹ１の符号反転、Ｙ４をＸ１の符号反転とする相対座標（Ｘ４，Ｙ４）との各位置にある４つの送信先プロセッサに対しデータを送信する第一の送信処理と、
Ｘ１の絶対値をＹ１の絶対値と等しい値とした相対座標（Ｘ１，Ｙ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転とした相対座標（Ｘ２，Ｙ２）と、Ｘ３をＸ１の符号反転、Ｙ３をＹ１とした相対座標（Ｘ３，Ｙ３）と、Ｘ４をＸ１、Ｙ４をＹ１の符号反転とした相対座標（Ｘ４，Ｙ４）との各位置にある４つの送信先プロセッサに対してデータを送信する第二の送信処理と、
Ｘ１の絶対値をＹ１の絶対値と等しい値とし、相対座標（Ｘ１，０）と、相対座標（０，Ｙ１）と、Ｘ２をＸ１の符号反転とした相対座標（Ｘ２，０）と、Ｙ２をＹ１の符号反転とした相対座標（０，Ｙ２）との各位置にある４つの送信先プロセッサに対してデータを送信する第三の送信処理とを実行するものであり、
前記並列計算システムの各プロセッサが、同一の相対座標の送信先プロセッサに対する、同一の送信処理を適用したデータ通信を、同じタイミングで実行する
ことを特徴とする並列計算システム。
【請求項４】
請求項１記載の並列計算システムにおいて、
前記並列計算システム中の各プロセッサは、最大４つのプロセッサに対して同時にデータを送信可能であり、
前記相互接続ネットワークは二次元メッシュであり、前記相互接続ネットワークの第１の次元の長さおよび第２の次元の長さの最大値をＬとし、送信元プロセッサから第ｎの送 信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎとした場合、
各プロセッサが、
Ｘ１の絶対値をＹ１の絶対値と異なる値とし、且つＸ１の絶対値およびＹ１の絶対値をＬの半分の値とは異なる値とした相対座標（Ｘ１，Ｙ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転とした相対座標（Ｘ２，Ｙ２）と、Ｘ３をＹ１、Ｙ３をＸ１とした相対座標（Ｘ３，Ｙ３）と、Ｘ４をＹ１の符号反転、Ｙ４をＸ１の符号反転とした相対座標（Ｘ４，Ｙ４）との各位置にある４つの送信先プロセッサに対しデータを送信する第一の送信処理と、
Ｘ１の絶対値をＹ１の絶対値と等しい値とした相対座標（Ｘ１，Ｙ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転とした相対座標（Ｘ２，Ｙ２）と、Ｘ３をＸ１の符号反転、Ｙ３をＹ１とした相対座標（Ｘ３，Ｙ３）と、Ｘ４をＸ１、Ｙ４をＹ１の符号反転とした相対座標（Ｘ４，Ｙ４）との各位置にある４つの送信先プロセッサに対してデータを送信する第二の送信処理と、
Ｘ１の絶対値をＹ１の絶対値と等しい値とし、相対座標（Ｘ１，０）と、相対座標（０，Ｙ１）と、Ｘ２をＸ１の符号反転とした相対座標（Ｘ２，０）と、Ｙ２をＹ１の符号反転とした相対座標（０，Ｙ２）との各位置にある４つの送信先プロセッサに対してデータを送信する第三の送信処理とを実行するものであり、
前記並列計算システムの各プロセッサが、同一の相対座標の送信先プロセッサに対する、同一の送信処理を適用したデータ通信を、同じタイミングで実行する
ことを特徴とする並列計算システム。
【請求項５】
請求項１記載の並列計算システムにおいて、
前記相互接続ネットワークは三次元トーラスであり、前記相互接続ネットワークの第１の次元の長さと第２の次元の長さと第３の次元の長さは互いに等しく、前記相互接続ネットワークの各次元の長さをＬとし、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎ、第３の次元の相対座標値をＺｎとした場合に、
前記各プロセッサは、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値との少なくとも１つを異なる値とし、且つ以下の１）〜３）のいずれかに該当する相対座標（Ｘ１，Ｙ１，Ｚ１）と、
１）Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値はいずれも０およびＬの半分の値とは異なる値とする；
２）Ｘ１を０とし、Ｙ１の絶対値とＺ１の絶対値はいずれもＬの半分の値とは異なる値とする；
３）Ｘ１およびＹ１を０とし、Ｚ１の絶対値をＬの半分の値とは異なる値とする；
Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転、Ｚ２をＺ１の符号反転とする相対座標（Ｘ２，Ｙ２，Ｚ２）と、Ｘ３をＺ１、Ｙ３をＸ１、Ｚ３をＹ１とする相対座標（Ｘ３，Ｙ３，Ｚ３）と、Ｘ４をＺ１の符号反転、Ｙ４をＸ１の符号反転、Ｚ４をＹ１の符号反転とする相対座標（Ｘ４，Ｙ４，Ｚ４）と、Ｘ５をＹ１、Ｙ５をＺ１、Ｚ５をＸ１とする相対座標（Ｘ５，Ｙ５，Ｚ５）と、Ｘ６をＹ１の符号反転、Ｙ６をＺ１の符号反転、Ｚ６をＸ１の符号反転とする相対座標（Ｘ６，Ｙ６，Ｚ６）との位置にある６つの送信先プロセッサに対してデータを送信する第一の送信処理と、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを０およびＬの半分の値とは異なる等しい値とした相対座標（Ｘ１，Ｙ１，Ｚ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転、Ｚ２をＺ１の符号反転とする相対座標（Ｘ２，Ｙ２，Ｚ２）と、Ｘ３をＸ１、Ｙ３をＹ１、Ｚ３をＺ１の符号反転とする相対座標（Ｘ３，Ｙ３，Ｚ３）と、Ｘ４をＸ１の符号反転、Ｙ４をＹ１の符号反転、Ｚ４をＺ１とする相対座標（Ｘ４，Ｙ４，Ｚ４）との各位置にある４つの送信先プロセッサに対してデータを送信する第二の送信処理とを少なくとも実行するものであり、
前記並列計算システムの各プロセッサが、同一の相対座標の送信先プロセッサに対する、同一の送信処理を適用したデータ通信を、同じタイミングで実行する
ことを特徴とする並列計算システム。
【請求項６】
請求項１記載の並列計算システムにおいて、
前記相互接続ネットワークは三次元トーラスであり、前記相互接続ネットワークの第１の次元の長さと第２の次元の長さと第３の次元の長さのいずれかは異なり、前記相互接続ネットワークの第１の次元の長さおよび第２の次元の長さおよび第３の次元の長さの最大値をＬとし、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎ、第３の次元の相対座標値をＺｎとした場合に、
前記各プロセッサは、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とのうち少なくとも１つを異なる値とし、且つ以下の１）〜３）のいずれかに該当する相対座標（Ｘ１，Ｙ１，Ｚ１）と、
１）Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値はいずれも０およびＬの半分の値とは異なる値とする；
２）Ｘ１を０とし、Ｙ１の絶対値とＺ１の絶対値はいずれもＬの半分の値とは異なる値とする；
３）Ｘ１およびＹ１を０とし、Ｚ１の絶対値をＬの半分の値とは異なる値とする；
Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転、Ｚ２をＺ１の符号反転とする相対座標（Ｘ２，Ｙ２，Ｚ２）と、Ｘ３をＺ１、Ｙ３をＸ１、Ｚ３をＹ１とする相対座標（Ｘ３，Ｙ３，Ｚ３）と、Ｘ４をＺ１の符号反転、Ｙ４をＸ１の符号反転、Ｚ４をＹ１の符号反転とする相対座標（Ｘ４，Ｙ４，Ｚ４）と、Ｘ５をＹ１、Ｙ５をＺ１、Ｚ５をＸ１とする相対座標（Ｘ５，Ｙ５，Ｚ５）と、Ｘ６をＹ１の符号反転、Ｙ６をＺ１の符号反転、Ｚ６をＸ１の符号反転とする相対座標（Ｘ６，Ｙ６，Ｚ６）との各位置にある６つの送信先プロセッサに対してデータを送信する第一の送信処理と、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを０およびＬの半分の値とは異なる等しい値とする相対座標（Ｘ１，Ｙ１，Ｚ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転、Ｚ２をＺ１の符号反転とする相対座標（Ｘ２，Ｙ２，Ｚ２）と、Ｘ３をＸ１、Ｙ３をＹ１、Ｚ３をＺ１の符号反転とする相対座標（Ｘ３，Ｙ３，Ｚ３）と、Ｘ４をＸ１の符号反転、Ｙ４をＹ１の符号反転、Ｚ４をＺ１とする相対座標（Ｘ４，Ｙ４，Ｚ４）との各位置にある４つの送信先プロセッサに対してデータを送信する第二の送信処理とを少なくとも適宜実行するものであり、
前記並列計算システムの各プロセッサが、同一の相対座標の送信先プロセッサに対する、同一の送信処理を適用したデータ通信を、同じタイミングで実行する
ことを特徴とする並列計算システム。
【請求項７】
請求項１記載の並列計算システムにおいて、
前記相互接続ネットワークは三次元メッシュであり、前記相互接続ネットワークの第１の次元の長さおよび第２の次元の長さおよび第３の次元の長さの最大値をＬとし、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎ、第３の次元の相対座標値をＺｎとした場合に、
各プロセッサが、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とのうち少なくとも１つを異なる値とし、且つ以下の１）〜３）のいずれかに該当する相対座標（Ｘ１，Ｙ１，Ｚ１）と、
１）Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値はいずれも０およびＬの半分の値とは異なる値とする；
２）Ｘ１を０とし、Ｙ１の絶対値とＺ１の絶対値はいずれもＬの半分の値とは異なる値とする；
３）Ｘ１およびＹ１を０とし、Ｚ１の絶対値をＬの半分の値とは異なる値とする；
Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転、Ｚ２をＺ１の符号反転とする相対座標（Ｘ２，Ｙ２，Ｚ２）と、Ｘ３をＺ１、Ｙ３をＸ１、Ｚ３をＹ１とする相対座標（Ｘ３，Ｙ３，Ｚ３）と、Ｘ４をＺ１の符号反転、Ｙ４をＸ１の符号反転、Ｚ４をＹ１の符号反転とする相対座標（Ｘ４，Ｙ４，Ｚ４）と、Ｘ５をＹ１、Ｙ５をＺ１、Ｚ５をＸ１とする相対座標（Ｘ５，Ｙ５，Ｚ５）と、Ｘ６をＹ１の符号反転、Ｙ６をＺ１の符号反転、Ｚ６をＸ１の符号反転とする相対座標（Ｘ６，Ｙ６，Ｚ６）との各位置にある６つの送信先プロセッサに対してデータを送信する第一の送信処理と、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを０およびＬの半分の値とは異なる等しい値とする相対座標（Ｘ１，Ｙ１，Ｚ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転、Ｚ２をＺ１の符号反転とする相対座標（Ｘ２，Ｙ２，Ｚ２）と、Ｘ３をＸ１、Ｙ３をＹ１、Ｚ３をＺ１の符号反転とする相対座標（Ｘ３，Ｙ３，Ｚ３）と、Ｘ４をＸ１の符号反転、Ｙ４をＹ１の符号反転、Ｚ４をＺ１とする相対座標（Ｘ４，Ｙ４，Ｚ４）とに位置する４つの送信先プロセッサに対してデータを送信する第二の送信処理とを少なくとも実行するものであり、
前記並列計算システムの各プロセッサが、同一の相対座標の送信先プロセッサに対する、同一の送信処理を適用したデータ通信を、同じタイミングで実行する
ことを特徴とする並列計算システム。
【請求項８】
複数のプロセッサを格子状のメッシュ・トポロジーまたはトーラス・トポロジーの相互 接続ネットワークにより接続した並列計算システムの各プロセッサに、
前記各プロセッサから同じタイミングで実行されるデータ通信における、各プロセッサから見た送信先プロセッサの相対的位置を特定するための相対座標として、前記全ての各プロセッサに共通な相対座標を設定し、
前記各プロセッサから同じタイミングで実行されるデータ通信の宛先となる複数の相対座標値を前記設定された共通な相対座標に基づいて選択し、前記選択した複数の相対座標値に対応する複数の送信先プロセッサに対するデータ通信を同じタイミングで行う同時通信処理を、前記相互接続ネットワーク内の前記各プロセッサを除くすべてのプロセッサが一度だけ宛先となるように、宛先となる前記複数の相対座標値を適宜変更しながら繰り返し実行させる
ことを特徴とする通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多数のプロセッサが接続される並列計算機などにおける全対全通信方法に関する。
【背景技術】
【０００２】
分散並列計算機において、プロセッサ間通信性能はアプリケーションの全体性能に多大な影響を与える。メッシュやトーラスのような二分帯域の小さなネットワークでは通信経路の重なりが起き易く、そのために通信性能が悪化する。このようなネットワークでは特に、全帯域を使用できる通信アルゴリズムの開発が重要である。
【０００３】
なお、「メッシュ」とは並列計算機のプロセッサを接続するネットワーク構成の一方式であり、多次元直交格子の格子点にプロセッサを配置し、多次元直交座標の各次元において隣接するプロセッサ間を接続する方式を言う。また、「トーラス」も並列計算機のネットワーク構成の一方式を指す語であり、多次元直交格子の格子点にプロセッサを配置し、多次元直交座標の各次元において隣接するプロセッサ間を接続、さらに各次元の終端のプロセッサ同士を接続し、各次元が循環した座標系を持つ。
【０００４】
図３にメッシュとトーラスの例をいくつか示す。図３では、プロセッサを丸または球で表しており、各種ネットワークにおけるプロセッサ間の接続状態を示している。図３（Ａ）は４×４の２次元メッシュ、図３（Ｂ）は４×４の２次元トーラスを夫々示している。図３（Ａ）および図３（Ｂ）では、各次元の長さが等しい例を示しているが、本質的にはメッシュ、トーラスの各次元の長さは同じでなくても良い。図３（Ｃ）は、４×６の２次元トーラスの例を示す。図３（Ｄ）は４×４×４の３次元メッシュ、図３（Ｅ）は４×４×４の３次元トーラスの例を示す。
【０００５】
「二分帯域」とは、ネットワークの帯域を表す指標であり、プロセッサ数を等しくネットワークを二分割し、分割されたネットワーク間にある全リンク（プロセッサ間を接続するデータ転送路）の帯域幅を合計したものを言う。ネットワークを二分割する場合に想定される分割パターンが複数ある場合には、二分帯域が最小となる分割パターンを使用する。
【０００６】
全対全通信 (all-to-all communication) は、分散並列計算機に含まれる全てのプロセッサ各々が、他の全プロセッサに対して、互いに異なるメッセージを転送する通信パターンを取る通信を言う。全体全通信は、行列転置や高速フーリエ変換のような、多くのアプリケーションで頻繁に利用される。
【０００７】
ネットワークにおける通信経路の重なりを考慮した全対全通信アルゴリズムが、これまでにいくつか提案されている。
【０００８】
非特許文献１は、ハイパーキューブおよびメッシュ・トポロジー向けのアルゴリズムを提案している。
【０００９】
非特許文献２および非特許文献３は、ｎ次元トーラス・トポロジー向けのアルゴリズムを提案している。
【００１０】
これらのアルゴリズムは理論的な下限の通信時間を達成する。これらのアルゴリズムは全てメッセージ通信の「フェーズ分割の方法」を仮定している。これは、プロセッサ間通信をいくつかのセットに分けた上で、プロセッサ間通信のセットを順番に進めることによって全対全通信を実現する。各プロセッサは予め計画された通りにメッセージ転送と転送停止を繰り返し、ネットワークの全てのリンク使用率を１００％にする。
【００１１】
しかし、フェーズ分割の方法は全てのプロセッサが同期してメッセージ転送や転送停止を行う必要があり、各フェーズの開始毎に全プロセッサの同期が必要なため、実際のシステムで使用する際には問題となる。これは全対全通信に余計なオーバヘッドを増やしてしまう。
【００１２】
非特許文献５では、ＢｌｕｅＧｅｎｅ（登録商標）（非特許文献４参照）において、通信宛先のランダム化と適応的ルーティング技術を組み合わせた特別なアルゴリズムを使用している。
【００１３】
非特許文献６は、非対称なトーラスにおける、静的ルーティングとバリア同期を使用した技術を開示している。
【００１４】
近年の並列計算機には、プロセッサあたり複数の通信コントローラを持つものがある。この種のハードェアは、いくつかのメッセージ通信を並行して行うことができる。
【００１５】
非特許文献７及び非特許文献８は、複数の通信コントローラを効率的に使用する方法を開示している。ＬＳＩの集積度が上がるに従い、プロセッサあたりに複数の通信ハードェアを実装することは容易になってきており、全対全通信のような特定の通信パタ−ンにおいて複数の通信ハードェアを効率的に使用する方法の必要性が増している。一方、非特許文献７、非特許文献８では、通信経路の重なりを考慮しておらず、メッシュやトーラス・トポロジーの並列計算機では通信経路の重なりにより通信性能が悪化する。
【非特許文献１】D. S. Scott, "Efficient all-to-all communication patterns in hypercube and mesh topologies," in 6th Distributed Memory Computing Conference, 1991, pp. 398-403.
【非特許文献２】堀江 健志, 林 憲一, "トーラスネットワークにおける最適全対全通信方式," 情報処理学会論文誌, vol.34, no.4, pp. 628-637, 1993.
【非特許文献３】Y.-C. Tseng and S. K. S. Gupta, "All-to-all personalized communication in a wormhole-routed torus," IEEE Transactions on Parallel and Distributed Systems, vol.7, no.5, pp. 498-505, May 1996.
【非特許文献４】N. R. Adiga, M. A. Blumrich, D. Chen, P. Coteus, A. Gara, M. E. Giampapa, P. Heidelberger, S. Singh, B. D. Steinmacher-Burow, T. Takken, M. Tsao, and P. Vranas, "Blue Gene/L torus interconnection network," IBM journal of Research and Development, vol.49, no. 2/3, pp. 265-276, 2005.
【非特許文献５】G. Alamasi, P. Heidelberger, C. J. Archer, X. Martorell, C. C. Erway, J. E. Moreira, B. Steinmacher-Burow, and Y.Zheng, "Optimization of mpi collective communication on bluegene/l systems," in ICS '05: Proceedings of the 19th annual internationnal conference on Supercomputing. New York, NY, USA: ACM, 2005, pp. 253-262.
【非特許文献６】S. Kumar, Y. Sabharwal, R. Garg, and P. Heidelberger, "Optimization of All-to-All Communication on the Blue Gene/L Supercomputer," in 37th International Conference on Parallel Processing, Sept 2008, pp. 320-329.
【非特許文献７】J. Bruck, C.-T. Ho, S. Kipnis, D. Weathersby, "Efficient Algorithms for all-to-all communications in multi-port message-passing systems," in SPAA '94: Proceedings of the sixth annual ACM symposium on Parallel algorithms and architectures. New York, NY, USA: ACM, 1994, pp.298-309.
【非特許文献８】V. Tipparaju and J. Nieplocha, "Optimizing all-to-all collective communication by exploiting concurrency in modern networks," in SC '05: Proceedings of the 2005 ACM/IEEE conference on Supercomputing. Washington, DC, USA: IEEE Computer Society, 2005, p. 46.
【発明の開示】
【発明が解決しようとする課題】
【００１６】
トーラス・ネットワーク向けの最適な全対全通信では、フェーズ分割の方法が取られていた。フェーズ分割では、プロセッサ間通信をいくつかのセットに分けた上で、プロセッサ間通信のセットを順番に進めることによって、全対全通信を実現する。各フェーズ内の通信は、経路が重なり合わないように、かつ全ての接続が使用されるように選択される。このような方法では、同じ通信フェーズ中で、通信を行うプロセッサと行わないプロセッサが発生する。このため、各プロセッサの通信を異なる制御方式の協調動作で実現する必要があり、制御が複雑になる問題があった。
【課題を解決するための手段】
【００１７】
課題を解決するために、本発明は、複数のプロセッサを格子状のメッシュ・トポロジーまたはトーラス・トポロジーの相互接続ネットワークにより接続した並列計算システムにおいて、並列計算システムの各プロセッサから他のプロセッサへの相互接続ネットワークにおける通信経路は次元オーダで決定され、各プロセッサに対して、同じタイミングで実行されるデータ通信における、各プロセッサから見た送信先プロセッサの相対的位置を特定するための相対座標として、全ての各プロセッサで共通な相対座標が設定され、各プロセッサは、各プロセッサから同じタイミングで実行されるデータ通信の宛先となる複数の相対座標値を設定された共通な相対座標に基づいて選択し、選択した複数の相対座標値に対応する複数の送信先プロセッサに対するデータ通信を同じタイミングで行う同時通信処理を、相互接続ネットワーク内の前記各プロセッサを除くすべてのプロセッサが一度だけ宛先となるように、宛先となる複数の相対座標値を適宜変更しながら繰り返し実行することを特徴とする。
【発明の効果】
【００１８】
本発明の並列計算システムおよびプログラムは、二次元トポロジーあるいは三次元トポロジーの並列計算システムにおいて、全リンクを均一な負荷で使用する全対全通信を実現する。本発明では、各計算ノードが同時に複数の送信先ノードに対してノード間通信を行うが、本発明の並列計算システムおよびプログラムでは全ノードの送信制御を同一とするため、ノード間の複雑な制御の依存関係に起因する制御オーバヘッドを削減できる。また、本発明では、各プロセッサは共通のアルゴリズムで送信先プロセッサを決定するため、プロセッサへの送信制御の実装が容易である。
【００１９】
また、本発明の並列計算システムおよびプログラムによれば、どの通信路でも同じ数の通信が重なる状態とすることが可能となり、これによって最適な全対全通信を実現できる。
【図面の簡単な説明】
【００２０】
【図１】一実施例による、辺の長さが奇数の二次元トーラストポロジーを示す図面である。
【図２】一実施例による、辺の長さが偶数の二次元トーラストポロジーを示す図面である。
【図３】ネットワーク構成の例を示す図面である。
【図４】一実施例によるノードの構成を示す図面である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態を説明する。
（実施形態１）
本発明の一実施形態による並列計算システムは、複数のプロセッサを相互接続ネットワークで接続したシステムである。本実施形態において、相互接続ネットワークは二次元トーラスであり、相互接続ネットワークの通信経路は次元オーダで決定されている。また、相互結合ネットワークの第１の次元の長さと第２の次元の長さは互いに等しい。
【００２２】
本実施例による並列計算システム中の各プロセッサは、それぞれ最大４つのプロセッサに対して同時にデータを送信することが出来る。また、各送信元プロセッサから各送信先プロセッサに対して同時にデータ送信する場合の、送信元プロセッサから見た送信先プロセッサの相対座標は、並列計算システム中の全プロセッサ間で共通となるようにする。
【００２３】
ここで、本実施形態による相互結合ネットワークの第１の次元の長さおよび第２の次元の長さをＬとする。なお、長さ「Ｌ」とは、ここでは各次元方向のリンクの数を指し、必ずしも物理的な長さを意味しない。この点は、他の実施形態についても同様である。
【００２４】
また、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎとする。本実施形態では、並列計算システム中の任意の送信元プロセッサから、送信先プロセッサに対して同時に、且つ二次元トーラス相互接続ネットワークの全リンクを均等な負荷で使用してデータを送信しするものとする。
【００２５】
本実施形態による並列計算システムでは、各プロセッサは以下のような動作を実行する。
【００２６】
任意の送信元プロセッサから見た第１の送信先プロセッサの相対座標を「Ｘ１，Ｙ１」とする。相対座標「Ｘ１，Ｙ１」については、以下のようにして相対座標値を決定する。
１）Ｘ１の絶対値とＹ１の絶対値とを異なる値とし、且つ
２）Ｘ１を０としてＹ１の絶対値をＬの半分の値とは異なる値とする、あるいはＹ１を０としてＸ１の絶対値をＬの半分の値とは異なる値とする。
【００２７】
この場合の各相対座標の相対座標値は、以下のようにして決定される。
【００２８】
相対座標「Ｘ２，Ｙ２」では、Ｘ２をＸ１の符号反転とし、Ｙ２をＹ１の符号反転とする。相対座標「Ｘ３，Ｙ３」では、Ｘ３をＹ１とし、Ｙ３をＸ１とする。相対座標「Ｘ４，Ｙ４」では、Ｘ４をＹ１の符号反転とし、Ｙ４をＸ１の符号反転とする。
【００２９】
並列計算システム中の各プロセッサは、上記のように決定した相対座標「Ｘ１，Ｙ１」、「Ｘ２、Ｙ２」、「Ｘ３、Ｙ３」、「Ｘ４、Ｙ４」の各位置にある４つの送信先プロセッサに対して、同時にデータを送信する。この際に、並列計算システムの全プロセッサは、同じタイミングで、且つ同一相対座標により示される送信先プロセッサに対して同時にデータを送信することから、本実施形態では二次元トーラス相互接続ネットワークの全リンクを均等な負荷で使用してデータを送信することが出来る。
【００３０】
また、相対座標「Ｘ１．Ｙ１」の各相対座標値を：
１）Ｘ１の絶対値をＹ１の絶対値と等しい値、且つ
２）Ｘ１の絶対値およびＹ１の絶対値がＬの半分の値とは異なる値：
として設定し、各相対座標の相対座標値を以下のように決定する。
【００３１】
相対座標「Ｘ２，Ｙ２」については、Ｘ２をＸ１の符号反転とし、Ｙ２をはＹ１の符号反転とする。また、相対座標「Ｘ３、Ｙ３」については、Ｘ３をＹ１とし、Ｙ３をＸ１とする。更に、相対座標「Ｘ４，Ｙ４」については、Ｘ４をＹ１の符号反転とし、Ｙ４をＸ１の符号反転とする。並列計算システム中の全プロセッサはそれぞれ、上記のように決定された相対座標「Ｘ１，Ｙ１」、「Ｘ２、Ｙ２」、「Ｘ３、Ｙ３」、「Ｘ４、Ｙ４」の位置にある４つの送信先プロセッサに対して、同時にデータを送信する。
【００３２】
一方、相対座標「Ｘ１，Ｙ１」の各相対座標値を：
１）Ｘ１の絶対値をＹ１の絶対値と等しい値、且つ
２）Ｘ１の絶対値およびＹ１の絶対値をＬの半分の値：
として設定し、各相対座標の相対座標値を以下のように決定する。
【００３３】
相対座標「Ｘ２，Ｙ２」は、Ｘ２をＸ１の符号反転とし、Ｙ２を０とする。また相対座標「Ｘ３，Ｙ３」は、Ｘ３を０とし、Ｙ３をＹ１の符号反転となるようにする。並列計算システム中の各プロセッサは、上記のように決定された相対座標「Ｘ１，Ｙ１」、「Ｘ２、Ｙ２」、「Ｘ３、Ｙ３」の位置にある３つの送信先プロセッサに対して、同時に、且つ二次元トーラス相互接続ネットワークの全リンクを均等な負荷で使用してデータを送信する。
【００３４】
このように、本実施形態では上記の３種類の相対座標決定アルゴリズムを適宜組み合わせて、同時データ送信すべき送信先プロセッサを決定する。
【００３５】
ここで、Ｌが奇数の場合、並列計算システム中のプロセッサ数も奇数となる。従って、任意の送信元プロセッサから見ると、全対全通信を行うべき送信先プロセッサの数は偶数となる。この場合、４つの送信先プロセッサに対する同時送信を、Ｘ１の絶対値とＹ１の絶対値とを異ならせて（Ｌ−１）2／４回、Ｘ１の絶対値とＹ１の絶対値とを等しくして（Ｌ−１）／２回、各々各相対座標値を変えながら、同じプロセッサに２回以上送信しないように相対座標値を決めた上で行う。
【００３６】
一方、Ｌが偶数の場合は、並列計算システム中のプロセッサ数は偶数となる。従って、任意の送信元プロセッサから見た場合、全対全通信を行うべき送信先プロセッサの数は奇数となる。従って、この場合には、Ｘ１の絶対値とＹ１の絶対値とを異ならせた４つの送信先プロセッサに対する同時送信を（Ｌ−１）2 ／４回、Ｘ１の絶対値とＹ１の絶対値を等しくした４つの送信先プロセッサに対する同時送信を（Ｌ／２−１）回、更にＸ１の絶対値をＹ１の絶対値とを等しい値とし且つＸ１の絶対値およびＹ１の絶対値をＬの半分の値とした、３つの送信先プロセッサに対する同時送信を１回、各々相対座標値を変えながら、送信先プロセッサが重ならないように相対座標値を決めて行う。
【００３７】
このような動作によって、各プロセッサから同時に送信するデータの転送距離を次元および方向別に総和をとると、どの次元、方向も転送距離の総和が等しくなる。さらに全プロセッサが同じ相対座標でデータ転送を行うため、並列計算システムでの全対全通信を、リンクの負荷を均等にした上で実現することができる。ただしＬが偶数の場合、相対座標の絶対値がＬの半分の次元では、データ転送毎に転送方向を並列計算システムが任意に決められるものとする。
【００３８】
本実施形態の並列計算システムでは各プロセッサは同時送信を複数回行う。ここで、全プロセッサが同じように同時送信を行うことが、リンクの負荷を均等にする条件である。しかし、プロセッサは外乱要因により処理時間がばらつく場合があり、結果としてあるプロセッサが前の同時通信を実行している間に、別のプロセッサが次の同時通信を始めてしまう非対称性が生じうる。ここで、同時送信と次の同時送信との間で並列計算システム中の全プロセッサ間で同期を取ることにより、外乱要因による非対称性の発生を防ぎ、同じ時刻に全プロセッサが同一の同時送信を実行することを保証可能となる。この点は、以降に説明する他の実施形態についても同様である。なお同期については、並列計算システムに一般的に備わっている、ハードウェアによる同期機構を利用する。また、ＰＣクラスタ等の同期機構を備えない並列計算システムにおいても、通常はソフトウェアによる同期ライブラリが提供される。
【００３９】
送信先プロセッサの相対座標値決定の処理は、データ送信処理を実行するたびに行なっても良い。また、任意のアルゴリズムによって予め決定した送信先プロセッサの相対座標値をテーブルなどに設定しておき、データ送信処理を実行するたびにテーブルなどに設定された相対座標値を読み出すようにしてもよい。
（実施形態２）
本発明の他の実施形態による並列計算システムは、複数のプロセッサを相互接続ネットワークで接続したシステムである。相互接続ネットワークは二次元トーラスであり、相互接続ネットワークの通信経路は次元オーダで決定されているものとする。また、相互結合ネットワークの第１の次元の長さと第２の次元の長さは異なるものとする。
【００４０】
本実施形態による並列計算システム中の各プロセッサは、それぞれ最大４つのプロセッサに対して同時にデータを送信することが出来る。各プロセッサから複数の送信先プロセッサへデータを同時送信する際の相対座標は、並列計算システム中の全プロセッサで共通である。
【００４１】
本実施形態では、相互結合ネットワークの第１の次元の長さおよび第２の次元の長さの最大値をＬとし、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎとする。ただし、第１の次元と第２の次元で長さがＬより短い次元については、予め次元の長さに該当する送信可能範囲を設定し、送信可能範囲を超える相対座標に対する送信動作は行わないものとする。
【００４２】
本実施形態では、並列計算システム内の各プロセッサは、以下のように決定した相対座標を持つ送信先プロセッサに対して同時に、二次元トーラス相互接続ネットワークの各リンクを一定以下の負荷で使用してデータを送信する。
【００４３】
まず、相対座標「Ｘ１，Ｙ１」の各相対座標値を、以下のようにして決定する。
１）Ｘ１の絶対値をＹ１の絶対値と異なる値、且つ
２）Ｘ１を０としてＹ１の絶対値をＬの半分の値とは異なる値とする、あるいはＹ１を０としてＸ１の絶対値をＬの半分の値とは異なる値とする。
【００４４】
この場合、各相対座標の相対座標値は、以下のように決定する。
【００４５】
相対座標「Ｘ２，Ｙ２」はＸ２をＸ１の符号反転とし、Ｙ２をＹ１の符号反転とする。相対座標「Ｘ３，Ｙ３」は、Ｘ３をＹ１とし、Ｙ３をＸ１とする。相対座標「Ｘ４，Ｙ４」は、Ｘ４をＹ１の符号反転とし、Ｙ４をＸ１の符号反転とする。
【００４６】
並列計算システム中の各プロセッサは、上記のように決定された相対座標「Ｘ１，Ｙ１」、「Ｘ２、Ｙ２」、「Ｘ３、Ｙ３」、「Ｘ４、Ｙ４」の位置にある４つの送信先プロセッサに対して、同時に、且つ二次元トーラス相互接続ネットワークの全リンクを均等な負荷で使用してデータを送信する。
【００４７】
また、相対座標「Ｘ１，Ｙ１」の各相対座標値を：
１）Ｘ１の絶対値をＹ１の絶対値と等しい値とし、且つ
２）Ｘ１の絶対値およびＹ１の絶対値がＬの半分の値とは異なる値とする：
場合、各相対座標の相対座標値は以下のように決定される。
【００４８】
相対座標「Ｘ２，Ｙ２」は、Ｘ２をＸ１の符号反転とし、Ｙ２をＹ１の符号反転とする。相対座標「Ｘ３，Ｙ３」は、Ｘ３をＹ１とし、Ｙ３をはＸ１とする。相対座標「Ｘ４，Ｙ４」は、Ｘ４をＹ１の符号反転とし、Ｙ４をＸ１の符号反転とする。
【００４９】
並列計算システム中の各プロセッサはそれぞれ、上記のように決定した相対座標「Ｘ１，Ｙ１」、「Ｘ２，Ｙ２」、「Ｘ３、Ｙ３」、「Ｘ４、Ｙ４」に位置する４つの送信先プロセッサに対して同時に、二次元トーラス相互接続ネットワークの各リンクを一定以下の負荷で使用してデータを送信する。
【００５０】
更に、相対座標「Ｘ１，Ｙ１」の各相対座標を：
１）Ｘ１の絶対値をＹ１の絶対値と等しい値とし、且つ
２）Ｘ１の絶対値およびＹ１の絶対値をＬの半分の値とする：
場合、各相対座標の相対座標値は以下のように決定する。
【００５１】
相対座標「Ｘ２，Ｙ２」は、Ｘ２をＸ１の符号反転とし、Ｙ２を０とする。相対座標「Ｘ３，Ｙ３」は、Ｘ３を０とし、Ｙ３をＹ１の符号反転とする。
【００５２】
並列計算システム中の各プロセッサはそれぞれ、上記のように決定した相対座標「Ｘ１，Ｙ１」、「Ｘ２，Ｙ２」、「Ｘ３、Ｙ３」に位置する３つの送信先プロセッサに対して同時に、二次元トーラス相互接続ネットワークの各リンクを一定以下の負荷で使用してデータを送信する。
【００５３】
ここで、Ｌが奇数の場合は、任意のプロセッサから４つの送信先プロセッサに対する同時送信を、Ｘ１の絶対値とＹ１の絶対値とを異ならせて（Ｌ−１）2／４回、Ｘ１の絶対値とＹ１の絶対値とを等しくして（Ｌ−１）／２回、各々送信先となるプロセッサが重ならないように、各相対座標値を変えながら行う。
【００５４】
一方、Ｌが偶数の場合は、Ｘ１の絶対値とＹ１の絶対値とを異ならせた４つの送信先プロセッサに対する同時送信を（Ｌ−１）2 ／４回、Ｘ１の絶対値とＹ１の絶対値とを等しくした４つの送信先プロセッサに対する同時送信を（Ｌ／２−１）回、更にＸ１の絶対値をＹ１の絶対値と等しい値とし且つＸ１の絶対値およびＹ１の絶対値をＬの半分の値とした、３つの送信先プロセッサに対する同時送信を１回、各々送信先となるプロセッサが重ならないように行う。
（実施形態３）
本発明の更に他の実施形態は、並列計算システムは複数のプロセッサを相互接続ネットワークで接続したシステムである。相互接続ネットワークは二次元メッシュであり、相互接続ネットワークの通信経路は次元オーダで決定されている。また、並列計算システム中の各プロセッサはそれぞれ、最大４つのプロセッサに対して同時にデータを送信する。ここで、任意のプロセッサから複数の送信先プロセッサへの相対座標は、並列計算システム中の全プロセッサで共通であるものとする。
【００５５】
本実施形態では、相互結合ネットワークの第１の次元の長さおよび第２の次元の長さの最大値をＬとし、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎとする。ただし、任意のプロセッサからの相対座標が相互接続ネットワークの外部に位置する場合は、当該プロセッサからの送信を行わないものとする。
【００５６】
ここで、相対座標「Ｘ１，Ｙ１」の相対座標値を、以下のように決定する。
１）Ｘ１の絶対値がＹ１の絶対値と異なる値とし、且つ；
２）Ｘ１を０としてＹ１の絶対値をＬの半分の値とは異なる値とする、あるいはＹ１を０としてＸ１の絶対値をＬの半分の値とは異なる値とする。
【００５７】
この場合、各相対座標の相対座標値は、以下のようにして決定される。
【００５８】
相対座標「Ｘ２，Ｙ２」は、Ｘ２をＸ１の符号反転とし、Ｙ２をＹ１の符号反転とする。相対座標「Ｘ３、Ｙ３」は、Ｘ３をＹ１とし、Ｙ３をＸ１とする。相対座標「Ｘ４、Ｙ４」は、Ｘ４をＹ１の符号反転とし、Ｙ４をＸ１の符号反転とする。
【００５９】
並列計算システム中の各プロセッサはそれぞれ、上記のように決定した相対座標「Ｘ１，Ｙ１」、「Ｘ２、Ｙ２」、「Ｘ３、Ｙ３」、「Ｘ４、Ｙ４」の位置にある４つの送信先プロセッサに対して同時に、二次元トーラス相互接続ネットワークの各リンクを一定以下の負荷で使用してデータを送信する。
【００６０】
また、相対座標「Ｘ１、Ｙ１」の各相対座標値を：
１）Ｘ１の絶対値をＹ１の絶対値と等しい値とし、且つ
２）Ｘ１の絶対値およびＹ１の絶対値をＬの半分の値とは異なる値とする：
場合、各相対座標値は以下のようにして決定する。
【００６１】
相対座標「Ｘ２、Ｙ２」は、Ｘ２をＸ１の符号反転とし、Ｙ２をＹ１の符号反転とする。相対座標「Ｘ３、Ｙ３」は、Ｘ３をＹ１とし、Ｙ３をＸ１とする。相対座標「Ｘ４、Ｙ４」は、Ｘ４をＹ１の符号反転とし、Ｙ４をＸ１の符号反転とする。
【００６２】
並列計算システム中の全プロセッサはそれぞれ、上記のように相対座標「Ｘ１，Ｙ１」、「Ｘ２、Ｙ２」、「Ｘ３、Ｙ３」、「Ｘ４、Ｙ４」の位置にある４つの送信先プロセッサに対して同時に、二次元トーラス相互接続ネットワークの各リンクを一定以下の負荷で使用してデータを送信する。
【００６３】
更に、相対座標「Ｘ１、Ｙ１」の各相対座標値を：
１）Ｘ１の絶対値をＹ１の絶対値と等しい値とし、且つ；
２）Ｘ１の絶対値およびＹ１の絶対値をＬの半分の値とする：
場合、各相対座標値は以下のように決定する。
【００６４】
相対座標「Ｘ２、Ｙ２」を、Ｘ２をＸ１の符号反転とし、Ｙ２を０とする。相対座標「Ｘ３、Ｙ３」は、Ｘ３を０とし、Ｙ３をＹ１の符号反転とする。
【００６５】
並列計算システム中の全プロセッサはそれぞれ、上記のように決定された相対座標「Ｘ１、Ｙ１」、「Ｘ２、、Ｙ２」、「Ｘ３、Ｙ３」に位置する３つの送信先プロセッサに対して同時に、二次元メッシュ相互接続ネットワークの各リンクを一定以下の負荷で使用してデータを送信する。
【００６６】
ここで、Ｌが奇数の場合には、任意のプロセッサからの４つの送信先プロセッサに対する同時送信を、Ｘ１の絶対値とＹ１の絶対値とを異ならせて（Ｌ−１）2／４回、Ｘ１の絶対値とＹ１の絶対値とを等しくして（Ｌ−１）／２回、各々送信先となるプロセッサが重ならないように行う。
【００６７】
一方、Ｌが偶数の場合は、任意のプロセッサからの４つの送信先プロセッサに対する同時送信を、Ｘ１の絶対値とＹ１の絶対値とを異ならせて（Ｌ−１）2 ／４回、Ｘ１の絶対値とＹ１の絶対値とを等しくして（Ｌ／２−１）回、３つの送信先プロセッサに対する同時送信を１回、各々送信先となるプロセッサが重ならないように行う。
（実施形態４）
本発明の更に他の並列計算システムでは、相互接続ネットワークは三次元トーラスであり、相互接続ネットワークの通信経路は次元オーダで決定されている。また、相互結合ネットワークの第１の次元の長さと第２の次元の長さと第３の次元の長さは等しいものとする。
【００６８】
本実施形態の並列計算システム中の各プロセッサはそれぞれ、最大６つのプロセッサに対して同時にデータを送信する。また、任意のプロセッサから複数の送信先プロセッサへの相対座標は並列計算システム中の全プロセッサで共通であるものとする。本実施形態では、並列計算システム中の任意の送信元プロセッサは以下の手順により、送信先プロセッサに対して同時に、且つ三次元トーラス相互接続ネットワークの全リンクを均等な負荷で使用してデータを送信しするものとする。
【００６９】
ここで、相互結合ネットワークの第１の次元の長さ、第２の次元の長さ、第３の次元の長さのそれぞれをＬとし、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎ、第３の次元の相対座標値をＺｎとする。
【００７０】
ここで、相対座標「Ｘ１、Ｙ１，Ｚ１」の相対座標値を、以下の手順で設定する場合を想定する。この場合、Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値のうち少なくとも１つが異なる値であり、且つ以下のいずれかに該当するものとする。
１）Ｘ１を０、Ｙ１の絶対値とＺ１の絶対値のどちらかをＬの半分の値とは異なる値とする；
２）Ｙ１を０、Ｘ１の絶対値とＺ１の絶対値のどちらかをＬの半分の値とは異なる値とする；
３）Ｚ１を０、Ｘ１の絶対値とＹ１の絶対値のどちらかをＬの半分の値とは異なる値とする；
４）Ｘ１およびＹ１を０、Ｚ１の絶対値をＬの半分の値とは異なる値とする；
５）Ｘ１およびＺ１を０、Ｙ１の絶対値をＬの半分の値とは異なる値とする；あるいは
６）Ｙ１およびＺ１を０、Ｘ１の絶対値をＬの半分の値とは異なる値とする。
【００７１】
この場合、他の送信先プロセッサの相対座標は以下のようにして決定する。
【００７２】
相対座標「Ｘ２，Ｙ２，Ｚ２」では、Ｘ２をＸ１の符号反転とし、Ｙ２をＹ１の符号反転とし、Ｚ２をＺ１の符号反転とする。相対座標「Ｘ３、Ｙ３，Ｚ３」では、Ｘ３をＺ１とし、Ｙ３をＸ１とし、Ｚ３をＹ１とする。相対座標「Ｘ４，Ｙ４、Ｚ４」については、Ｘ４をＺ１の符号反転とし、Ｙ４をＸ１の符号反転とし、Ｚ４をＹ１の符号反転とする。相対座標「Ｘ５、Ｙ５、Ｚ５」については、Ｘ５をＹ１とし、Ｙ５をＺ１とし、Ｚ５をＸ１とする。相対座標「Ｘ６、Ｙ６、Ｚ６」については、Ｘ６をＹ１の符号反転とし、Ｙ６をＺ１の符号反転とし、Ｚ６をＸ１の符号反転とする。
【００７３】
並列計算システム中の全プロセッサはそれぞれ、上記のように決定される相対座標「Ｘ１、Ｙ１、Ｚ１」、「Ｘ２、Ｙ２、Ｚ２」、「Ｘ３、Ｙ３、Ｚ３」、「Ｘ４、Ｙ４、Ｚ４」、「Ｘ５、Ｙ５、Ｚ５」、「Ｘ６、Ｙ６、Ｚ６」の各位置にある６つの送信先プロセッサに対して同時に、三次元トーラス相互接続ネットワークの全リンクを均等な負荷で使用してデータを送信する。また、全プロセッサは、各々同じタイミングで、同じ同じ相対座標値を持つ送信先プロセッサに対して同時にデータを送信する。
【００７４】
また、相対座標「Ｘ１，Ｙ１、Ｚ１」の相対座標値を以下のように決定する。ここでは：
１）Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを等しい値とし、且つ
２）Ｘ１の絶対値、Ｙ１の絶対値およびＺ１の絶対値をそれぞれＬの半分の値とは異なる値とする。
【００７５】
この場合、他の各送信先プロセッサの相対座標を以下のように決定する。
【００７６】
相対座標「Ｘ２、Ｙ２、Ｚ２」は、Ｘ２をＸ１の符号反転とし、Ｙ２をＹ１の符号反転とし、Ｚ２をＺ１の符号反転とする。相対座標「Ｘ３、Ｙ３、Ｚ３」については、Ｘ３をＸ１とし、Ｙ３をＹ１とし、Ｚ３をＺ１の符号反転とする。相対座標「Ｘ４、Ｙ４、Ｚ４」については、Ｘ４をＸ１の符号反転とし、Ｙ４をＹ１の符号反転とし、Ｚ４をＺ１とする。
【００７７】
並列計算システム中の全プロセッサはそれぞれ、上記のように決定された相対座標「Ｘ１、Ｙ１、Ｚ１」、「Ｘ２、Ｙ２、Ｚ２」、「Ｘ３、Ｙ３、Ｚ３」、「Ｘ４、Ｙ４、Ｚ４」に位置する４つの送信先プロセッサに対して同時に、三次元トーラス相互接続ネットワークの全リンクを均等な負荷で使用してデータを送信する。
【００７８】
また、相対座標「Ｘ１、Ｙ１、Ｚ１」の相対座標値を以下のように決定する。
１）Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを等しくし、且つ：
２）Ｘ１の絶対値、Ｙ１の絶対値およびＺ１の絶対値をそれぞれＬの半分の値とする。
【００７９】
この場合、他の相対座標を以下のように決定する。
【００８０】
相対座標「Ｘ２、Ｙ２、Ｚ２」については、Ｘ２をＸ１の符号反転とし、Ｙ２とＺ２とを０とする。相対座標「Ｘ３、Ｙ３、Ｚ３」については、Ｘ３を０とし、Ｙ３をＹ１の符号反転とし、Ｚ３をＺ１の符号反転とする。相対座標「Ｘ４、Ｙ４、Ｚ４」については、Ｘ４とＺ４とは０とし、Ｙ４をＹ１とする。相対座標「Ｘ５、Ｙ５、Ｚ５」については、Ｘ５をＸ１とし、Ｙ５と０とし、Ｚ５をＺ１とする。更に、相対座標「Ｘ６、Ｙ６、Ｚ６」については、Ｘ６とＹ６とを０とし、Ｚ６をＺ１の符号反転とする。また、相対座標「Ｘ７、Ｙ７、Ｚ７」については、Ｘ７をＸ１の符号反転とし、Ｙ７をＹ１の符号反転とし、Ｚ７を０とする。
【００８１】
並列計算システム中の全プロセッサはそれぞれ、１回目は相対座標「Ｘ１、Ｙ１、Ｚ１」の第１の送信先プロセッサと、相対座標「Ｘ２、Ｙ２、Ｚ２」の第２の送信先プロセッサと、相対座標「Ｘ３、Ｙ３、Ｚ３」の第３の送信先プロセッサに同時に、三次元トーラス相互接続ネットワークの全リンクを均等な負荷で使用してデータを送信する。各送信元プロセッサは続いて、２回目の同時送信としてそれぞれ相対座標「Ｘ４、Ｙ４、Ｚ４」の第４の送信先プロセッサと、相対座標「Ｘ５、Ｙ５、Ｚ５」の第５の送信先プロセッサと、相対座標「Ｘ６、Ｙ６、Ｚ６」の第６の送信先プロセッサと、相対座標「Ｘ７、Ｙ７、Ｚ７」の第７の送信先プロセッサとに同時に、三次元トーラス相互接続ネットワークの全リンクを均等な負荷で使用してデータを送信する。つまり、この例では都合７つの送信先プロセッサへのデータ送信を、２回に分けて行なう。
【００８２】
本実施形態による並列計算システムでは、上記３種類の相対座標決定アルゴリズムを適宜組み合わせて、送信先プロセッサの相対座標を決定し、送信先プロセッサに対する同時データ送信を実行する。
【００８３】
ここで、Ｌが奇数の場合は、任意のプロセッサから６つの送信先プロセッサに対する同時送信を（Ｌ3−４Ｌ+３）／４回、４つの送信先プロセッサに対する同時送信をＬ−１回、互いに送信先となるプロセッサが重ならないように行う。
【００８４】
一方、Ｌが偶数の場合は、６つの送信先プロセッサに対する同時送信を（Ｌ3−４Ｌ+１）／４回、４つの送信先プロセッサに対する同時送信をＬ−２回、更に７つの送信先プロセッサに対して３送信先同時送信と４送信先同時送信をそれぞれ１回、送信先が重ならないように行う。
（実施形態５）
本発明の更に他の実施形態による並列計算システムは、複数のプロセッサを相互接続ネットワークで接続しており、相互接続ネットワークは三次元トーラスであり、相互接続ネットワークの通信経路は次元オーダで決定されている。また、相互結合ネットワークの第１の次元の長さと第２の次元の長さと第３の次元の長さの少なくとも一つの次元の長さが他の次元とは異なるものとする。更に、並列計算システム中の全プロセッサはそれぞれ最大６つのプロセッサに対して同時にデータを送信するものであり、任意のプロセッサから複数の送信先プロセッサへ同時にデータ送信する際の送信先プロセッサの相対座標は、並列計算システム中の全プロセッサで共通であるものとする。
【００８５】
ここで、相互結合ネットワークの第１の次元の長さ、第２の次元の長さ、第３の次元の長さの最大値をＬとする。また、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎ、第３の次元の相対座標値をＺｎとする。ただし、第１の次元、第２の次元あるいは第３の次元で長さがＬより短い次元については、予め次元の長さに該当する送信可能範囲を設定し、送信可能範囲を超える相対座標に位置するプロセッサへの送信処理は行わないものとする。
【００８６】
ここで、相対座標「Ｘ１、Ｙ１、Ｚ１」の各相対座標値を、以下のように決定する。
【００８７】
ここで、Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とのうち少なくとも１つを異なる値とする場合：
１）Ｘ１を０、Ｙ１の絶対値とＺ１の絶対値とのどちらかとＬの半分の値とは異なる値とする；
２）Ｙ１を０、Ｘ１の絶対値とＺ１の絶対値とのどちらかをＬの半分の値とは異なる値とする；
３）Ｚ１を０、Ｘ１の絶対値とＹ１の絶対値とのどちらかをＬの半分の値とは異なる値とする；
４）Ｘ１およびＹ１を０、Ｚ１の絶対値をＬの半分の値とは異なる値とする；
５）Ｘ１およびＺ１を０、Ｙ１の絶対値をＬの半分の値とは異なる値とする；あるいは
６）Ｙ１およびＺ１を０、Ｘ１の絶対値をＬの半分の値とは異なる値とする。
【００８８】
この場合、他の相対座標は以下のように決定する。
【００８９】
相対座標「Ｘ２、Ｙ２、Ｚ２」については、Ｘ２をＸ１の符号反転とし、Ｙ２をＹ１の符号反転とし、Ｚ２をＺ１の符号反転とする。相対座標「Ｘ３、Ｙ３、Ｚ３」については、Ｘ３をＺ１とし、Ｙ３をＸ１とし、Ｚ３をＹ１とする。相対座標「Ｘ４、Ｙ４、Ｚ４」については、Ｘ４をＺ１の符号反転とし、Ｙ４をＸ１の符号反転とし、Ｚ４をＹ１の符号反転とする。相対座標「Ｘ５、Ｙ５、Ｚ５」については、Ｘ５をＹ１とし、Ｙ５をＺ１とし、Ｚ５をＸ１とする。相対座標「Ｘ６．Ｙ６、Ｚ６」については、Ｘ６をＹ１の符号反転とし、Ｙ６をＺ１の符号反転とし、Ｚ６をＸ１の符号反転とする。
【００９０】
並列計算システム中の全プロセッサはそれぞれ、上記のように決定された相対座標「Ｘ１、Ｙ１、Ｚ１」乃至「Ｘ６、Ｙ６、Ｚ６」の各相対座標に位置する６つの送信先プロセッサに対して同時に、三次元トーラス相互接続ネットワークの各リンクを一定以下の負荷で使用してデータを送信する。
【００９１】
また、相対座標「Ｘ１、Ｙ１、Ｚ１」の各相対座標値を、以下のように決定する。
１）Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを等しい値とし、且つ
２）Ｘ１の絶対値、Ｙ１の絶対値およびＺ１の絶対値のそれぞれをＬの半分の値とは異なる値とする。
【００９２】
この場合、他の相対座標は以下のように決定する。
【００９３】
相対座標「Ｘ２、Ｙ２、Ｚ２」については、Ｘ２をＸ１の符号反転とし、Ｙ２をＹ１の符号反転とし、Ｚ２をＺ１の符号反転とする。相対座標「Ｘ３、Ｙ３、Ｚ３」については、Ｘ３をＸ１とし、Ｙ３をＹ１とし、Ｚ３をＺ１の符号反転とする。相対座標「Ｘ４、Ｙ４、Ｚ４」については、Ｘ４をＸ１の符号反転とし、Ｙ４をＹ１の符号反転とし、Ｚ４をＺ１とする。
【００９４】
並列計算システム中の全プロセッサはそれぞれ、上記のように決定された相対座標「Ｘ１、Ｙ１、Ｚ１」乃至「Ｘ４、Ｙ４、Ｚ４」に位置する４つの送信先プロセッサに対して同時に、三次元トーラス相互接続ネットワークの各リンクを一定以下の負荷で使用してデータを送信する。
【００９５】
一方、相対座標「Ｘ１、Ｙ１、Ｚ１」の各相対座標値を、以下のように決定する。
１）Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを等しい値とし、且つ：
２）Ｘ１の絶対値、Ｙ１の絶対値およびＺ１の絶対値をそれぞれＬの半分の値とする。
【００９６】
この場合、他の相対座標は以下のように決定する。
【００９７】
相対座標「Ｘ２、Ｙ２、Ｚ２」については、Ｘ２をＸ１の符号反転であり、Ｙ２とＺ２とを０とする。相対座標「Ｘ３、Ｙ３、Ｚ３」については、Ｘ３を０とし、Ｙ３をＹ１の符号反転とし、Ｚ３をＺ１の符号反転とする。相対座標「Ｘ４、Ｙ４、Ｚ４」については、Ｘ４とＺ４とを０とし、Ｙ４をＹ１とする。相対座標「Ｘ５、Ｙ５、Ｚ５」については、Ｘ５をＸ１とし、Ｙ５を０とし、Ｚ５をＺ１とする。相対座標「Ｘ６、Ｙ６、Ｚ６」については、Ｘ６とＹ６とを０とし、Ｚ６をＺ１の符号反転とする。相対座標「Ｘ７、Ｙ７、Ｚ７」については、Ｘ７をＸ１の符号反転とし、Ｙ７をＹ１の符号反転とし、Ｚ７を０とする。
【００９８】
並列計算システム中の全プロセッサはそれぞれ、１回目には相対座標「Ｘ１、Ｙ１、Ｚ１」の第１の送信先プロセッサと、相対座標「Ｘ２、Ｙ２、Ｚ２」の第２の送信先プロセッサと、相対座標「Ｘ３、Ｙ３、Ｚ３」の第３の送信先プロセッサとに対して同時に、三次元トーラス相互接続ネットワークの全リンクを均等な負荷で使用してデータを送信する。各送信元プロセッサは次いで、２回目の同時送信として、相対座標「Ｘ４、Ｙ４、Ｚ４」の第４の送信先プロセッサと、相対座標「Ｘ５、Ｙ５、Ｚ６」の第５の送信先プロセッサと、「相対座標「Ｘ６、Ｙ６、Ｚ６」の第６の送信先プロセッサと、相対座標「Ｘ７、Ｙ７、Ｚ７」の第７の送信先プロセッサとに同時に、三次元トーラス相互接続ネットワークの各リンクを一定以下の負荷で使用してデータを送信する。
【００９９】
本実施形態による並列計算システムでは、上記３種類の相対座標決定アルゴリズムを適宜組み合わせて、送信先プロセッサの相対座標を決定し、送信先プロセッサに対する同時データ送信を実行する。
【０１００】
ここで、Ｌが奇数の場合は、６つの送信先プロセッサに対する同時送信を（Ｌ3−４Ｌ+３）／４回、４つの送信先プロセッサに対する同時送信をＬ−１回、送信先が重ならないように行う。
【０１０１】
また、Ｌが偶数の場合は、６つの送信先プロセッサに対する同時送信を（Ｌ3−４Ｌ+１）／４回、４つの送信先プロセッサに対する同時送信をＬ−２回、更に７つの送信先プロセッサに対して３送信先同時送信と４送信先同時送信をそれぞれ１回、送信先が重ならないように行う。
（実施形態６）
本発明の更に他の実施形態による並列計算システムは、複数のプロセッサを相互接続ネットワークで接続したものである。相互接続ネットワークは三次元メッシュであり、相互接続ネットワークの通信経路は次元オーダで決定されている。また、並列計算システム中の全プロセッサは、それぞれ最大６つのプロセッサに対して同時にデータを送信し、各プロセッサから見た複数の送信先プロセッサへの相対座標は、並列計算システム中の全プロセッサで共通であるものとする。
【０１０２】
ここで、相互結合ネットワークの第１の次元の長さ、第２の次元の長さおよび第３の次元の長さのそれぞれの最大値をＬとする。また、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎ、第３の次元の相対座標値をＺｎとする。ただし、送信先プロセッサが相互接続ネットワークの外部に位置する場合は送信を行わないものとする。
【０１０３】
相対座標「Ｘ１、Ｙ１、Ｚ１」の相対座標値は、以下のように決定する。
【０１０４】
この場合、Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値のうち少なくとも１つを異なる値として、且つ以下のいずれかの条件に対応するように相対座標値を決定する。
１）Ｘ１を０、Ｙ１の絶対値とＺ１の絶対値とのどちらかをＬの半分の値とは異なる値とする；
２）Ｙ１を０、Ｘ１の絶対値とＺ１の絶対値とのどちらかをＬの半分の値とは異なる値とする；
３）Ｚ１を０、Ｘ１の絶対値とＹ１の絶対値とのどちらかをＬの半分の値とは異なる値とする；
４）Ｘ１およびＹ１を０、Ｚ１の絶対値をＬの半分の値とは異なる値とする；
５）Ｘ１およびＺ１を０、Ｙ１の絶対値をＬの半分の値とは異なる値とする；あるいは
６）Ｙ１およびＺ１を０、Ｘ１の絶対値をＬの半分の値とは異なる値とする。
【０１０５】
この場合、他の相対座標は以下のようにして決定する。
【０１０６】
相対座標「Ｘ２、Ｙ２、Ｚ２」については、Ｘ２をＸ１の符号反転とし、Ｙ２をＹ１の符号反転とし、Ｚ２をＺ１の符号反転とする。相対座標「Ｘ３、Ｙ３、Ｚ３」については、Ｘ３をＺ１とし、Ｙ３をＸ１とし、Ｚ３をＹ１とする。相対座標「Ｘ４、Ｙ４、Ｚ４」については、Ｘ４をＺ１の符号反転とし、Ｙ４をＸ１の符号反転とし、Ｚ４をＹ１の符号反転とする。相対座標「Ｘ５、Ｙ５、Ｚ５」については、Ｘ５をＹ１とし、Ｙ５をＺ１とし、Ｚ５をＸ１とする。相対座標「Ｘ６、Ｙ６，Ｚ６」については、Ｘ６をＹ１の符号反転とし、Ｙ６をＺ１の符号反転とし、Ｚ６をＸ１の符号反転とする。
【０１０７】
並列計算システム中の全プロセッサはそれぞれ、上記のように決定された相対座標「Ｘ１、Ｙ１、Ｚ１」乃至「Ｘ６、Ｙ６、Ｚ６」に位置する６つの送信先プロセッサに対して同時に、三次元トーラス相互接続ネットワークの各リンクを一定以下の負荷で使用してデータを送信する。
【０１０８】
また、相対座標「Ｘ１、Ｙ１、Ｚ１」の相対座標値を、以下のように決定する。ここでは：
１）Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを等しい値とし、且つ：
２）Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とをＬの半分の値とは異なる値とする。
【０１０９】
この場合の他の相対座標は、以下のように決定する。
【０１１０】
相対座標「Ｘ２、Ｙ２、Ｚ２」については、Ｘ２をＸ１の符号反転とし、Ｙ２をＹ１の符号反転とし、Ｚ２をＺ１の符号反転とする。相対座標「Ｘ３、Ｙ３、Ｚ３」については、Ｘ３をＸ１とし、Ｙ３をＹ１とし、Ｚ３をＺ１の符号反転とする。相対座標「Ｘ４、Ｙ４、Ｚ４」については、Ｘ４をＸ１の符号反転とし、Ｙ４をＹ１の符号反転とし、Ｚ４をＺ１とする。
【０１１１】
並列計算システム中の全プロセッサはそれぞれ、上記のように決定された相対座標「Ｘ１、Ｙ１、Ｚ１」乃至「Ｘ４、Ｙ４、Ｚ４」に位置する４つの送信先プロセッサに対して同時に、三次元トーラス相互接続ネットワークの各リンクを一定以下の負荷で使用してデータを送信する。
【０１１２】
また、相対座標「Ｘ１、Ｙ１、Ｚ１」の相対座標値を：
１）Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを等しい値とし、且つ
２）Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とをＬの半分の値とする。
【０１１３】
この場合、他の相対座標値は以下のように決定する。
【０１１４】
相対座標「Ｘ２、Ｙ２、Ｚ２」については、Ｘ２をＸ１の符号反転とし、Ｙ２とＺ２とを０とする。相対座標「Ｘ３、Ｙ３、Ｚ３」については、Ｘ３を０とし、Ｙ３をＹ１の符号反転とし、Ｚ３をＺ１の符号反転とする。相対座標「Ｘ４、Ｙ４、Ｚ４」については、Ｘ４とＺ４とを０とし、Ｙ４をＹ１とする。相対座標「Ｘ５、Ｙ５、Ｚ５」については、Ｘ５をＸ１とし、Ｙ５を０とし、Ｚ５をＺ１とする。相対座標「Ｘ６、Ｙ６，Ｚ６」については、Ｘ６とＹ６を０とし、Ｚ６をＺ１の符号反転とする。相対座標「Ｘ７、Ｙ７、Ｚ７」についてはＸ７をＸ１の符号反転とし、Ｙ７をＹ１の符号反転とし、Ｚ７を０とする。
【０１１５】
並列計算システム中の全プロセッサはそれぞれ、１回目には、相対座標「Ｘ１、Ｙ１、Ｚ１」の第１の送信先プロセッサと、相対座標「Ｘ２、Ｙ２、Ｚ２」の第２の送信先プロセッサと、相対座標「Ｘ３、Ｙ３、Ｚ３」の第３の送信先プロセッサとに同時に、三次元トーラス相互接続ネットワークの全リンクを均等な負荷で使用してデータを送信する。各送信元プロセッサは、２回目の同時送信として、相対座標「Ｘ４、Ｙ４、Ｚ４」の第４の送信先プロセッサと、相対座標「Ｘ５、Ｙ５、Ｚ５」の第５の送信先プロセッサと、相対座標「Ｘ６、Ｙ６、Ｚ６」の第６の送信先プロセッサと、相対座標「Ｘ７、Ｙ７、ｚ７」の第７の送信先プロセッサとに同時に、三次元メッシュ相互接続ネットワークの各リンクを一定以下の負荷で使用してデータを送信する。
【０１１６】
ここで、Ｌが奇数の場合は、６つの送信先プロセッサに対する同時送信を（Ｌ3−４Ｌ+３）／４回、４つの送信先プロセッサに対する同時送信をＬ−１回、送信先が重ならないように行う。
【０１１７】
一方、Ｌが偶数の場合は、６つの送信先プロセッサに対する同時送信を（Ｌ3−４Ｌ+１）／４回、４つの送信先プロセッサに対する同時送信をＬ−２回、７つの送信先プロセッサに対して３送信先同時送信と４送信先同時送信をそれぞれ１回、送信先が重ならないように行う。
【０１１８】
上記した三次元トーラス相互接続ネットワークの例では、同時送信と同時送信との間に並列計算システム中の全プロセッサ間で同期を取ることにより、三次元トーラス相互接続ネットワークのリンクの負荷に非対称性が生じた場合においても、同じ時刻に全プロセッサが同一の同時送信を実行することを保証する。
（実施例７）
本実施形態による全対全通信方法は、各々のプロセッサが、複数の通信コントローラにより並行して複数のメッセージを送受信する。本実施形態では、通信先となるプロセッサの順番を工夫することで、各ノードから見た送信先となるプロセッサの相対座標を全ノード間で同一とするともに、システムにおける全てのネットワークルータ間リンクを通過するプロセッサ間通信の数を均一にする。
【０１１９】
各ノードがプロセッサ、４つの通信コントローラ、ネットワークルータを持つ、図４に示す構成のノードを接続した２次元トーラスの並列計算システムでは、以下のアルゴリズムにより各リンクを通過するプロセッサ間通信の数を均一にする。
【０１２０】
図１は、一実施形態による二次元トーラス・トポロジーを示す図面である。図１に示す二次元トーラス・トポロジーは、二辺の長さが等しく、かつ辺の長さが奇数となるものである。
【０１２１】
図１の二次元トーラス・トポロジーでは、各辺の長さを２ｎ＋１と表す。なお「ｎ」は自然数とする。また、図１に示す星印は、送信元プロセッサを示す。
【０１２２】
本実施形態による二次元トーラス・トポロジーでは、０<ｊ<ｉ≦ｎとなる全ての自然数ｉ,ｊについて、まず全プロセッサが各々、自身からの相対座標（ｉ,ｊ）、（−ｉ,−ｊ）、（ｊ,ｉ）、（−ｊ,−ｉ）の各座標に位置する４つのプロセッサと同時に通信する（図１Ａ）。
【０１２３】
次に、各プロセッサは、自身からの相対座標（ｉ,−ｊ）、（−ｉ,ｊ）、（−ｊ,ｉ）、（ｊ,−ｉ）の各座標に位置する４つのプロセッサと同時通信する（図１Ｂ）。
【０１２４】
さらに、０＜ｉ≦ｎとなる全ての自然数ｉについて、各プロセッサは自身からの相対座標（ｉ,０）、（−ｉ,０）、（０,ｉ）、（０,−ｉ） の各座標に位置する４つのプロセッサと同時通信する（図１Ｃ）。
【０１２５】
次いで、各プロセッサは、自身からの相対座標が（ｉ,ｉ）、（−ｉ,−ｉ）、（−ｉ,ｉ）、（ｉ,−ｉ）の各座標に位置する４つのプロセッサと同時通信する（図１Ｄ）。
（実施例８）
図２は、二辺の長さが等しく、かつ各辺の長さが偶数である２次元トーラス・トポロジーを示している。図２においても、星印は送信元プロセッサを示す。
【０１２６】
図２の例では、辺の長さを２ｎ+２と表す。任意のプロセッサからの各座標軸上の相対座標が−ｎ以上ｎ以下のプロセッサについては、二辺の長さが等しくかつ奇数である、図１に示した２次元トーラス・トポロジーの場合と同様に通信を行う。続いて残りの、任意のプロセッサからの少なくとも片方の座標軸上の相対座標が−ｎ−１またはｎ+１であるプロセッサと、以下の組合せで通信する。
【０１２７】
まず、０＜ｉ≦ｎとなる全ての自然数ｉについて、全プロセッサが自身からの相対座標（ｎ+１,ｉ）、（−ｎ−１,−ｉ）、（ｉ,ｎ+１）、（−ｉ,−ｎ−１）の各座標に位置する４つのプロセッサと同時通信する（図２Ａ）。次いで、全プロセッサが、自身からの相対座標が（ｎ+１,０）、（０,ｎ+１）、（−ｎ−１,−ｎ−１）の各座標に位置する３つのプロセッサと同時通信する（図２Ｂ）。
（実施例９）
各プロセッサが６つの通信コントローラを持つ３次元トーラスの並列計算システムでは、以下のアルゴリズムにより、全リンクを通過するプロセッサ間通信の数を均一にする。
【０１２８】
以下、三辺の長さが等しく、かつ各辺の長さが奇数である３次元トーラス・トポロジーの場合について説明する。ここでは、各辺の長さを２ｎ+１と表すものとする。各プロセッサは、まず０＜ｋ＜ｊ＜ｉ≦ｎとなる全ての自然数ｉ,ｊ,ｋについて、以下の相対座標の各組合せにより、６プロセッサと同時に通信する。以下では、かぎかっこで囲われた６つの相対座標が、各々１つの組を構成する。この点は、以下同様とする。
「（ｉ,ｊ,ｋ）、（−ｉ,−ｊ,−ｋ）、（ｋ,ｉ,ｊ）、（−ｋ,−ｉ,−ｊ）、（ｊ,ｋ,ｉ）、（−ｊ,−ｋ,−ｉ）」
「（ｉ,ｊ,−ｋ）、（−ｉ,−ｊ,ｋ）、（−ｋ,ｉ,ｊ）、（ｋ,−ｉ,−ｊ）、（ｊ,−ｋ,ｉ）、（−ｊ,ｋ,−ｉ）」
「（ｉ,−ｊ,ｋ）、（−ｉ,ｊ,−ｋ）、（ｋ,ｉ,−ｊ）、（−ｋ,−ｉ,ｊ）、（−ｊ,ｋ,ｉ）、（ｊ,−ｋ,−ｉ）」
「（ｉ,−ｊ,−ｋ）、（−ｉ,ｊ,ｋ）、（−ｋ,ｉ,−ｊ）、（ｋ,−ｉ,ｊ）、（−ｊ,−ｋ,ｉ）、（ｊ,ｋ,−ｉ）」
「（ｉ,ｋ,ｊ）、（−ｉ,−ｋ,−ｊ）、（ｊ,ｉ,ｋ）、（−ｊ,−ｉ,−ｋ）、（ｋ,ｊ,ｉ）、（−ｋ,−ｊ,−ｉ）」
「（ｉ,ｋ,−ｊ）、（−ｉ,−ｋ,ｊ）、（−ｊ,ｉ,ｋ）、（ｊ,−ｉ,−ｋ）、（ｋ,−ｊ,ｉ）、（−ｋ,ｊ,−ｉ）」
「（ｉ,−ｋ,ｊ）、（−ｉ,ｋ,−ｊ）、（ｊ,ｉ,−ｋ）、（−ｊ,−ｉ,ｋ）、（−ｋ,ｊ,ｉ）、（ｋ,−ｊ,−ｉ）」
「（ｉ,−ｋ,−ｊ）、（−ｉ,ｋ,ｊ）、（−ｊ,ｉ,−ｋ）、（ｊ,−ｉ,ｋ）、（−ｋ,−ｊ,ｉ）、（ｋ,ｊ,−ｉ）」
次に、各プロセッサは、０＜ｊ＜ｉ≦ｎとなる全ての自然数ｉ,ｊについて、自身からの相対座標が以下の組合せとなる６プロセッサと同時に通信する。以下の例でも、６つの相対座標が１つの組みを構成する。
「（ｉ,ｉ,ｊ）、（−ｉ,−ｉ,−ｊ）、（ｊ,ｉ,ｉ）、（−ｊ,−ｉ,−ｉ）、（ｉ,ｊ,ｉ）、（−ｉ,−ｊ,−ｉ）」
「（ｉ,ｉ,−ｊ）、（−ｉ,−ｉ,ｊ）、（−ｊ,ｉ,ｉ）、（ｊ,−ｉ,−ｉ）、（ｉ,−ｊ,ｉ）、（−ｉ,ｊ,−ｉ）」
「（ｉ,−ｉ,ｊ）、（−ｉ,ｉ,−ｊ）、（ｊ,ｉ,−ｉ）、（−ｊ,−ｉ,ｉ）、（−ｉ,ｊ,ｉ）、（ｉ,−ｊ,−ｉ）」
「（ｉ,−ｉ,−ｊ）、（−ｉ,ｉ,ｊ）、（−ｊ,ｉ,−ｉ）、（ｊ,−ｉ,ｉ）、（−ｉ,−ｊ,ｉ）、（ｉ,ｊ,−ｉ）」
「（ｊ,ｊ,ｉ）、（−ｊ,−ｊ,−ｉ）、（ｉ,ｊ,ｊ）、（−ｉ,−ｊ,−ｊ）、（ｊ,ｉ,ｊ）、（−ｊ,−ｉ,−ｊ）」
「（ｊ,ｊ,−ｉ）、（−ｊ,−ｊ,ｉ）、（−ｉ,ｊ,ｊ）、（ｉ,−ｊ,−ｊ）、（ｊ,−ｉ,ｊ）、（−ｊ,ｉ,−ｊ）」
「（ｊ,−ｊ,ｉ）、（−ｊ,ｊ,−ｉ）、（ｉ,ｊ,−ｊ）、（−ｉ,−ｊ,ｊ）、（−ｊ,ｉ,ｊ）、（ｊ,−ｉ,−ｊ）」
「（ｊ,−ｊ,−ｉ）、（−ｊ,ｊ,ｉ）、（−ｉ,ｊ,−ｊ）、（ｉ,−ｊ,ｊ）、（−ｊ,−ｉ,ｊ）、（ｊ,ｉ,−ｊ）」
「（０,ｉ,ｊ）、（０,−ｉ,−ｊ）、（ｊ,０, ）、（−ｊ,０,−ｉ）、（ｉ,ｊ,０）、（−ｉ,−ｊ,０）」
「（０,ｉ,−ｊ）、（０,−ｉ,ｊ）、（−ｊ,０,ｉ）、（ｊ,０,−ｉ）、（ｉ,−ｊ,０）、（−ｉ,ｊ,０）」
「（０,ｊ,ｉ）、（０,−ｊ,−ｉ）、（ｉ,０,ｊ）、（−ｉ,０,−ｊ）、（ｊ,ｉ,０）、（−ｊ,−ｉ,０）」
「（０,ｊ,−ｉ）、（０,−ｊ,ｉ）、（−ｉ,０,ｊ）、（ｉ,０,−ｊ）、（ｊ,−ｉ,０）、（−ｊ,ｉ,０）」
さらに、各プロセッサは、０＜ｉ≦ｎとなる全ての自然数ｉについて、自身からの相対座標が以下の組合せとなるように、複数のプロセッサと同時に通信する。
「（０,ｉ,ｉ）、（０,−ｉ,−ｉ）、（ｉ,０,ｉ）、（−ｉ,０,−ｉ）、（ｉ,ｉ,０）、（−ｉ,−ｉ,０）」
「（ｉ,０,０）、（−ｉ,０,０）、（０,０,ｉ）、（０,０,−ｉ）、（０,ｉ,０）、（０,−ｉ,０）」
「（ｉ,ｉ,ｉ）、（−ｉ,−ｉ,−ｉ）、（ｉ,ｉ,−ｉ）、（−ｉ,−ｉ,ｉ）」
「（ｉ,−ｉ,ｉ）、（−ｉ,ｉ,−ｉ）、（ｉ,−ｉ,−ｉ）、（−ｉ,ｉ,ｉ）」
（実施例９）
続いて、三辺の長さが等しく、かつ各辺の長さが偶数である３次元トーラス・トポロジーについて説明する。この例では、各辺の長さを２ｎ+２と表す。任意のプロセッサは、自身からの各座標軸（ｘ軸、ｙ軸、ｚ軸）の３つとも相対座標が−ｎ以上ｎ以下となるプロセッサについては、三辺の長さが等しくかつ各変の長さが奇数である３次元トーラス・トポロジーの場合と同様に通信を行う。各プロセッサは続いて、残りのプロセッサのうち、３つの座標軸上の相対座標のうち少なくとも１つの座標軸の相対座標が−ｎ−１またはｎ+１であるプロセッサと、以下の組合せで通信する。
【０１２９】
各プロセッサは次に、０＜ｊ＜ｉ≦ｎとなる全ての自然数ｉ,ｊについて、自身からの相対座標が以下の組合せとなる６プロセッサと同時に通信する。
「（ｎ+１,ｉ,ｊ）、（−ｎ−１,−ｉ,−ｊ）、（ｊ,ｎ+１,ｉ）、（−ｊ,−ｎ−１,−ｉ）、（ｉ,ｊ,ｎ+１）、（−ｉ,−ｊ,−ｎ−１）」
「（ｎ+１,ｉ,−ｊ）、（−ｎ−１,−ｉ,ｊ）、（−ｊ,ｎ+１,ｉ）、（ｊ,−ｎ−１,−ｉ）、（ｉ,−ｊ,ｎ+１）、（−ｉ,ｊ,−ｎ−１）」
「（ｎ+１,ｊ,ｉ）、（−ｎ−１,−ｊ,−ｉ）、（ｉ,ｎ+１,ｊ）、（−ｉ,−ｎ−１,−ｊ）、（ｊ,ｉ,ｎ+１）、（−ｊ,−ｉ,−ｎ−１）」
「（ｎ+１,−ｊ,ｉ）、（−ｎ−１,ｊ,−ｉ）、（ｉ,ｎ+１,−ｊ）、（−ｉ,−ｎ−１,ｊ）、（−ｊ,ｉ,ｎ+１）、（ｊ,−ｉ,−ｎ−１）」
各プロセッサはさらに、０＜ｉ≦ｎとなる全ての自然数ｉについて、自身からの相対座標が以下の組合せとなる６プロセッサと同時に通信する。
「（ｎ+１,ｉ,ｉ）、（−ｎ−１,−ｉ,−ｉ）、（ｉ,ｎ+１,ｉ）、（−ｉ,−ｎ−１,−ｉ）、（ｉ,ｉ,ｎ+１）、（−ｉ,−ｉ,−ｎ−１）」
「（ｎ+１,ｉ,−ｉ）、（−ｎ−１,−ｉ,ｉ）、（−ｉ,ｎ+１,ｉ）、（ｉ,−ｎ−１,−ｉ）、（ｉ,−ｉ,ｎ+１）、（−ｉ,ｉ,−ｎ−１）」
「（ｎ+１,ｉ,０）、（−ｎ−１,−ｉ,０）、（０,ｎ+１,ｉ）、（０,−ｎ−１,−ｉ）、（ｉ,０,ｎ+１）、（−ｉ,０,−ｎ−１）」
「（ｎ+１,０,ｉ）、（−ｎ−１,０,−ｉ）、（ｉ,ｎ+１,０）、（−ｉ,−ｎ−１,０）、（０,ｉ,ｎ+１）、（０,−ｉ,−ｎ−１）」
「（ｉ,ｎ+１,ｎ+１）、（−ｉ,−ｎ−１,−ｎ−１）、（ｎ+１,ｉ,ｎ+１）、（−ｎ−１,−ｉ,−ｎ−１）、（ｎ+１,ｎ+１,ｉ）、（−ｎ−１,−ｎ−１,−ｉ）」
最後に、各プロセッサは、自身からの相対座標が以下の組合せとなる複数のプロセッサと同時に通信する。
「（ｎ+１,ｎ+１,０）、（０,０,ｎ+１）、（−ｎ−１,０,−ｎ−１）、（０,−ｎ−１,０）」
「（０,ｎ+１,ｎ+１）、（ｎ+１,０,０）、（−ｎ−１,−ｎ−１,−ｎ−１）」
（付記１）
複数のプロセッサを相互接続ネットワークで多次元に接続した並列計算システムにおいて、
前記並列計算システムの各プロセッサから他のプロセッサへの前記相互接続ネットワークにおける通信経路は次元オーダで決定され、
前記各プロセッサは、同じタイミングで実行されるデータ通信における、各プロセッサから見た送信先プロセッサの相対座標として、前記全プロセッサで共通な相対座標が設定され、
前記設定された相対座標を持つ送信先プロセッサに対するデータ通信を行うことを特徴とする、並列計算システム。
（付記２）
付記１に記載の並列計算システムにおいて、
前記並列計算システム中の各プロセッサは、最大４つのプロセッサに対して同時にデータを送信可能であり、
送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎとした場合、
各プロセッサは、
Ｘ１の絶対値をＹ１の絶対値と異なる値とし、Ｘ１を０としてＹ１の絶対値をＬの半分の値とは異なる値あるいはＹ１を０としてＸ１の絶対値をＬの半分の値とは異なる値とした相対座標（Ｘ１、Ｙ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転とした相対座標（Ｘ２、Ｙ２）と、Ｘ３をＹ１、Ｙ３をＸ１とした相対座標（Ｘ３、Ｙ３）と、Ｘ４をＹ１の符号反転、Ｙ４をＸ１の符号反転とした相対座標（Ｘ４、Ｙ４）との各位置にある４つの送信先プロセッサに対してデータを送信する第一の送信処理と、
Ｘ１の絶対値をＹ１の絶対値と等しい値とし、Ｘ１の絶対値およびＹ１の絶対値をＬの半分の値とは異なる値とした相対座標（Ｘ１、Ｙ１)と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転とした相対座標（Ｘ２，Ｙ２）と、Ｘ３をＹ１、Ｙ３をＸ１とした相対座標（Ｘ３，Ｙ３）と、Ｘ４をＹ１の符号反転、Ｙ４をＸ１の符号反転とした相対座標（Ｘ４、Ｙ４）との各位置にある４つの送信先プロセッサに対してデータを送信する第二の送信処理と、
Ｘ１の絶対値をＹ１の絶対値と等しい値とし、Ｘ１の絶対値およびＹ１の絶対値をＬの半分の値とした相対座標（Ｘ１，Ｙ１）と、Ｘ２をＸ１の符号反転、Ｙ２を０とした相対座標（Ｘ２，Ｙ２）と、Ｘ３を０、Ｙ３をＹ１の符号反転とした相対座標（Ｘ３，Ｙ３）との各位置にある３つの送信先プロセッサに対してデータを送信する第三の送信処理とを適宜実行するものであり、
前記並列計算システムの各プロセッサが、同一の相対座標を持つ送信先プロセッサに対する同一の送信処理を適用したデータ通信を、同じタイミングで実行することを特徴とする、並列計算システム。
（付記３）
付記１記載の並列計算システムにおいて、
前記並列計算システム中の各プロセッサは、最大４つのプロセッサに対して同時にデータを送信可能であり、
前記相互接続ネットワークは二次元トーラスであり、前記相互結合ネットワークの第１の次元の長さと第２の次元の長さが異なり、前記相互結合ネットワークの第１の次元の長さおよび第２の次元の長さの最大値をＬとし、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎとした場合、
各プロセッサが、
Ｘ１の絶対値をＹ１の絶対値と異なる値とし、Ｘ１を０としてＹ１の絶対値をＬの半分の値とは異なる値、あるいはＹ１を０としてＸ１の絶対値をＬの半分の値とは異なる値とした相対座標（Ｘ１，Ｙ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転とする相対座標（Ｘ２，Ｙ２）と、Ｘ３をＹ１、Ｙ３をＸ１とする相対座標（Ｘ３、Ｙ３）と、Ｘ４をＹ１の符号反転、Ｙ４をＸ１の符号反転とする相対座標（Ｘ４，Ｙ４）との各位置にある４つのプロセッサに対しデータを送信する第一の送信処理と、
Ｘ１の絶対値をＹ１の絶対値と等しい値とし、Ｘ１の絶対値およびＹ１の絶対値をＬの半分の値とは異なる値とした相対座標（Ｘ１，Ｙ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転とした相対座標（Ｘ２，Ｙ２）と、Ｘ３をＹ１、Ｙ３をＸ１とした相対座標（Ｘ３、Ｙ３）と、Ｘ４をＹ１の符号反転、Ｙ４をＸ１の符号反転とした相対座標（Ｘ４，Ｙ４）との各位置にある４つの送信先プロセッサに対してデータを送信する第二の送信処理と、
Ｘ１の絶対値をＹ１の絶対値と等しい値とし、Ｘ１の絶対値およびＹ１の絶対値をＬの半分の値とした相対座標（Ｘ１、Ｙ１）と、Ｘ２をＸ１の符号反転、Ｙ２を０とする相対座標（Ｘ２，Ｙ２）と、Ｘ３を０、Ｙ３をＹ１の符号反転とする相対座標（Ｘ３，Ｙ３）との各位置にある３つの送信先プロセッサに対してデータを送信する第三の送信処理とを実行するものであり、
前記並列計算システムの各プロセッサが、同一の相対座標の送信先プロセッサに対する、同一の送信処理を適用したデータ通信を、同じタイミングで実行することを特徴とする、並列計算システム。
（付記４）
付記１記載の並列計算システムにおいて、
前記並列計算システム中の各プロセッサは、最大４つのプロセッサに対して同時にデータを送信可能であり、
前記相互接続ネットワークは二次元メッシュであり、前記相互結合ネットワークの第１の次元の長さおよび第２の次元の長さの最大値をＬとし、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎとした場合、
各プロセッサが、
Ｘ１の絶対値をＹ１の絶対値と異なる値とし、Ｘ１を０としてＹ１の絶対値をＬの半分の値とは異なる値、あるいはＹ１を０としＸ１の絶対値をＬの半分の値とは異なる値とした相対座標（Ｘ１，Ｙ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転とした相対座標（Ｘ２，Ｙ２）と、Ｘ３をＹ１、Ｙ３をＸ１とした相対座標（Ｘ３，Ｙ３）と、Ｘ４をＹ１の符号反転、Ｙ４をＸ１の符号反転とした相対座標（Ｘ４，Ｙ４）との各位置にある４つの送信先プロセッサに対しデータを送信する第一の送信処理と、
Ｘ１の絶対値をＹ１の絶対値と等しい値とし、Ｘ１の絶対値およびＹ１の絶対値をＬの半分の値とは異なる値とした相対座標（Ｘ１，Ｙ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転とした相対座標（Ｘ２，Ｙ２）と、Ｘ３をＹ１、Ｙ３をＸ１とした相対座標（Ｘ３，Ｙ３）と、Ｘ４をＹ１の符号反転、Ｙ４をＸ１の符号反転とした相対座標（Ｘ４，Ｙ４）との各位置にある４つの送信先プロセッサに対してデータを送信する第二の送信処理と、
Ｘ１の絶対値をＹ１の絶対値と等しい値とし、Ｘ１の絶対値およびＹ１の絶対値をＬの半分の値とした相対座標（Ｘ１，Ｙ１）と、Ｘ２をＸ１の符号反転、Ｙ２を０とした相対座標（Ｘ２、Ｙ２）と、Ｘ３を０、Ｙ３をＹ１の符号反転とした相対座標（Ｘ３，Ｙ３）との各位置にある３つの送信先プロセッサに対してデータを送信する第三の送信処理とを実行するものであり、
前記並列計算システムの各プロセッサが、同一の相対座標の送信先プロセッサに対する、同一の送信処理を適用したデータ通信を、同じタイミングで実行することを特徴とする、並列計算システム。
（付記５）
付記２、付記３又は付記４記載の並列計算システムにおいて、
前記Ｌが奇数の場合、４つの送信先プロセッサに対する同時送信を、Ｘ１の絶対値とＹ１の絶対値とを異ならせた４つの送信先プロセッサに対する同時送信を（Ｌ−１）2／４回、Ｘ１の絶対値とＹ１の絶対値とを等しくした４つの送信先プロセッサに対する同時送信を（Ｌ−１）／２回、各々相対座標値を変えながら行なう一方、
前記Ｌが偶数の場合は、Ｘ１の絶対値とＹ１の絶対値とを異ならせた４つの送信先プロセッサに対する同時送信を（Ｌ−１）2 ／４回、Ｘ１の絶対値とＹ１の絶対値を等しくした４つの送信先プロセッサに対する同時送信を（Ｌ／２−１）回、Ｘ１の絶対値をＹ１の絶対値とを等しい値とし且つＸ１の絶対値およびＹ１の絶対値をＬの半分の値とした、３つの送信先プロセッサに対する同時送信を１回、各々相対座標値を変えながら行なう並列計算システム。
（付記６）
付記１記載の並列計算システムにおいて、
前記相互接続ネットワークは三次元トーラスであり、前記相互結合ネットワークの第１の次元の長さと第２の次元の長さと第３の次元の長さは互いに等しく、前記相互結合ネットワークの各次元の長さをＬとし、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎ、第３の次元の相対座標値をＺｎとした場合に、
前記各プロセッサは、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値との少なくとも１つを異なる値とし、以下の１）〜６）のいずれかとに該当する相対座標（Ｘ１，Ｙ１，Ｚ１）と、
１）Ｘ１を０とし、Ｙ１の絶対値とＺ１の絶対値とのどちらかをＬの半分の値とは異なる値とする；
２）Ｙ１を０とし、Ｘ１の絶対値とＺ１の絶対値とのどちらかをＬの半分の値とは異なる値とする；
３）Ｚ１を０とし、Ｘ１の絶対値とＹ１の絶対値とのどちらかをＬの半分の値とは異なる値とする；
４）Ｘ１およびＹ１を０とし、Ｚ１の絶対値をＬの半分の値とは異なる値とする；
５）Ｘ１およびＺ１を０とし、Ｙ１の絶対値をＬの半分の値とは異なる値とする；
６）Ｙ１およびＺ１を０とし、Ｘ１の絶対値をＬの半分の値とは異なる値とする；
Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転、Ｚ２をＺ１の符号反転とする相対座標（Ｘ２，Ｙ２，Ｚ２）と、Ｘ３をＺ１、Ｙ３をＸ１、Ｚ３をＹ１とする相対座標（Ｘ３、Ｙ３，Ｚ３）と、Ｘ４をＺ１の符号反転、Ｙ４をＸ１の符号反転、Ｚ４をＹ１の符号反転とする相対座標（Ｘ４，Ｙ４，Ｚ４）と、Ｘ５をＹ１、Ｙ５をＺ１、Ｚ５をＸ１とする相対座標（Ｘ５，Ｙ５，Ｚ５）と、Ｘ６をＹ１の符号反転、Ｙ６をＺ１の符号反転、Ｚ６をＸ１の符号反転とする相対座標（Ｘ６，Ｙ６，Ｚ６）との位置にある６つの送信先プロセッサに対してデータを送信する第一の送信処理と、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを等しい値とし、Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とをそれぞれＬの半分の値とは異なる値とした相対座標（Ｘ１，Ｙ１、Ｚ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転、Ｚ２をＺ１の符号反転とする相対座標（Ｘ２，Ｙ２、Ｚ２）と、Ｘ３をＸ１、Ｙ３をＹ１、Ｚ３をＺ１の符号反転とする相対座標（Ｘ３，Ｙ３，Ｚ３）と、Ｘ４をＸ１の符号反転、Ｙ４をＹ１の符号反転、Ｚ４をＺ１とする相対座標（Ｘ４，Ｙ４，Ｚ４）との各位置にある４つの送信先プロセッサに対してデータを送信する第二の送信処理と、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを等しい値とし、Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とをＬの半分の値とした相対座標（Ｘ１，Ｙ１，Ｚ１）と、Ｘ２をＸ１の符号反転、Ｙ２とをＺ２とを０とする相対座標（Ｘ２，Ｙ２，Ｚ２）と、Ｘ３を０、Ｙ３をＹ１の符号反転、Ｚ３をＺ１の符号反転とする相対座標（Ｘ３，Ｙ３Ｚ３）と、Ｘ４とＺ４とを０、Ｙ４をＹ１とする相対座標（Ｘ４，Ｙ４，Ｚ４）と、Ｘ５をＸ１、Ｙ５を０、Ｚ５をＺ１とする相対座標（Ｘ５、Ｙ５，Ｚ５）と、Ｘ６とＹ６とを０、Ｚ６をＺ１の符号反転とする相対座標（Ｘ６，Ｙ６、Ｚ６）と、Ｘ７をＸ１の符号反転、Ｙ７をＹ１の符号反転、Ｚ７を０とする相対座標（Ｘ７，Ｙ７，Ｚ７）との各位置にある７つの送信先プロセッサに対してデータを送信する第三の送信処理とを実行するものであり、
前記並列計算システムの各プロセッサが、同一の相対座標の送信先プロセッサに対する、同一の送信処理を適用したデータ通信を、同じタイミングで実行することを特徴とする、並列計算システム。
（付記７）
付記１記載の並列計算システムにおいて、
前記相互接続ネットワークは三次元トーラスであり、前記相互結合ネットワークの第１の次元の長さと第２の次元の長さと第３の次元の長さのいずれかは異なり、前記相互結合ネットワークの第１の次元の長さおよび第２の次元の長さおよび第３の次元の長さの最大値をＬとし、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎ、第３の次元の相対座標値をＺｎとした場合に、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とのうち少なくとも１つを異なる値とし、以下の１）〜６）のいずれかに該当する相対座標（Ｘ１，Ｙ１，Ｚ１）と、
１）Ｘ１を０とし、Ｙ１の絶対値とＺ１の絶対値とのどちらかをＬの半分の値とは異なる値とする；
２）Ｙ１を０とし、Ｘ１の絶対値とＺ１の絶対値とのどちらかをＬの半分の値とは異なる値とする；
３）Ｚ１を０とし、Ｘ１の絶対値とＹ１の絶対値とのどちらかをＬの半分の値とは異なる値とする：
４）Ｘ１およびＹ１を０とし、Ｚ１の絶対値をＬの半分の値とは異なる値とする；
５）Ｘ１およびＺ１を０とし、Ｙ１の絶対値をＬの半分の値とは異なる値とする；
６）Ｙ１およびＺ１を０とし、Ｘ１の絶対値をＬの半分の値とは異なる値とする；
Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転、Ｚ２をＺ１の符号反転とする相対座標（Ｘ２，Ｙ２、Ｚ２）と、Ｘ３をＺ１、Ｙ３をＸ１、Ｚ３をＹ１とする相対座標（Ｘ３，Ｙ３，Ｚ３）と、Ｘ４をＺ１の符号反転、Ｙ４をＸ１の符号反転、Ｚ４をＹ１の符号反転とする相対座標（Ｘ４，Ｙ４Ｚ４）と、Ｘ５をＹ１、Ｙ５をＺ１、Ｚ５をＸ１とする相対座標（Ｘ５，Ｙ５，Ｚ５）と、Ｘ６をＹ１の符号反転、Ｙ６をＺ１の符号反転、Ｚ６をＸ１の符号反転とする相対座標（Ｘ６，Ｙ６，Ｚ６）との各位置にある６つの送信先プロセッサに対してデータを送信する第一の送信処理と、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを等しい値とし、Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とがＬの半分の値とを異なる値とする相対座標（Ｘ１，Ｙ１，Ｚ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転、Ｚ２をＺ１の符号反転とする相対座標（Ｘ２，Ｙ２，Ｚ２）と、Ｘ３をＸ１、Ｙ３をＹ１、Ｚ３をＺ１の符号反転とする相対座標（Ｘ３，Ｙ３、Ｚ３）と、Ｘ４をＸ１の符号反転、Ｙ４をＹ１の符号反転、Ｚ４をＺ１とする相対座標（Ｘ４，Ｙ４，Ｚ４）との各位置にある４つの送信先プロセッサに対してデータを送信する第二の送信処理と、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを等しい値とし、Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とをＬの半分の値とする相対座標（Ｘ１，Ｙ１，Ｚ１）と、Ｘ２をＸ１の符号反転、Ｙ２とＺ２とを０とする相対座標（Ｘ２，Ｙ２、Ｚ２）と、Ｘ３を０、Ｙ３をＹ１の符号反転、Ｚ３をＺ１の符号反転とする相対座標（Ｘ３，Ｙ３，Ｚ３）と、Ｘ４とＺ４とを０、Ｙ４をＹ１とする相対座標（Ｘ４，Ｙ４，Ｚ４）と、Ｘ５をＸ１、Ｙ５を０、Ｚ５をＺ１とする相対座標（Ｘ５，Ｙ５，Ｚ５）と、Ｘ６とＹ６とを０、Ｚ６をＺ１の符号反転とする相対座標（Ｘ６，Ｙ６，Ｚ６）と、Ｘ７をＸ１の符号反転、Ｙ７をＹ１の符号反転、Ｚ７を０とする相対座標（Ｘ７，Ｙ７，Ｚ７）との各位置にある７つの送信先プロセッサに対しデータを送信する第三の送信処理をと実行するに動作し、
前記並列計算システムの各プロセッサが、同一の相対座標の送信先プロセッサに対する、同一の送信処理を適用したデータ通信を、同じタイミングで実行することを特徴とする、並列計算システム。
（付記８）
請求項１記載の並列計算システムにおいて、
前記相互接続ネットワークは三次元メッシュであり、前記相互結合ネットワークの第１の次元の長さおよび第２の次元の長さおよび第３の次元の長さの最大値をＬとし、送信元プロセッサから第ｎの送信先プロセッサへの相対座標の第１の次元の相対座標値をＸｎ、第２の次元の相対座標値をＹｎ、第３の次元の相対座標値をＺｎとした場合に、
各プロセッサが、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値のうち少なくとも１つを異なる値とし、且つ以下の１）から６）のいずれかに該当する相対座標（Ｘ１，Ｙ１，Ｚ１）と、
１）Ｘ１を０、Ｙ１の絶対値とＺ１の絶対値とのどちらかをＬの半分の値とは異なる値とする；２）Ｙ１を０、Ｘ１の絶対値とＺ１の絶対値とのどちらかをＬの半分の値とは異なる値とする；
３）Ｚ１を０、Ｘ１の絶対値とＹ１の絶対値とのどちらかをＬの半分の値とは異なる値とする；
４）Ｘ１およびＹ１を０、Ｚ１の絶対値をＬの半分の値とは異なる値とする；
５）Ｘ１およびＺ１を０、Ｙ１の絶対値をＬの半分の値とは異なる値とする；あるいは
６）Ｙ１およびＺ１を０、Ｘ１の絶対値をＬの半分の値とは異なる値とする。
【０１３０】
Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転、Ｚ２をＺ１の符号反転とした相対座標（Ｘ２，Ｙ２，Ｚ２）と、Ｘ３をＺ１、Ｙ３をＸ１、Ｚ３をＹ１とした相対座標（Ｘ３，Ｙ３，Ｚ３）と、Ｘ４をＺ１の符号反転、Ｙ４をＸ１の符号反転、Ｚ４をＹ１の符号反転とした相対座標（Ｘ４，Ｙ４，Ｚ４）と、Ｘ５をＹ１、Ｙ５をＺ１、Ｚ５をＸ１とする相対座標（Ｘ５，Ｙ５，Ｚ５）と、Ｘ６をＹ１の符号反転、Ｙ６をＺ１の符号反転、Ｚ６をＸ１の符号反転とする相対座標（Ｘ６，Ｙ６，Ｚ６）との各位置にある６つの送信先プロセッサに対しデータを送信する第一の送信処理と、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを等しい値とし、且つＸ１の絶対値とＹ１の絶対値とＺ１の絶対値とがＬの半分の値とは異なる値とする相対座標（Ｘ１，Ｙ１，Ｚ１）と、Ｘ２をＸ１の符号反転、Ｙ２をＹ１の符号反転、Ｚ２をＺ１の符号反転とする相対座標（Ｘ２，Ｙ２，Ｚ２）と、Ｘ３をＸ１、Ｙ３をＹ１、Ｚ３をＺ１の符号反転とする相対座標（Ｘ３，Ｙ３Ｚ３）と、Ｘ４をＸ１の符号反転、Ｙ４をＹ１の符号反転、Ｚ４をＺ１とする相対座標（Ｘ４，Ｙ４，Ｚ４）とに位置する４つの送信先プロセッサに対してデータを送信する第二の送信処理と、
Ｘ１の絶対値とＹ１の絶対値とＺ１の絶対値とを等しい値とし、且つＸ１の絶対値とＹ１の絶対値とＺ１の絶対値とをＬの半分の値とする相対座標（Ｘ１，Ｙ１，Ｚ１）と、Ｘ２をＸ１の符号反転、Ｙ２とＺ２とを０とする相対座標（Ｘ２，Ｙ２，Ｚ２）と、Ｘ３を０、Ｙ３をＹ１の符号反転、Ｚ３をＺ１の符号反転とする相対座標（Ｘ３，Ｙ３，Ｚ３）と、Ｘ４とＺ４とを０、Ｙ４をＹ１とする相対座標（Ｘ４，Ｙ４，Ｚ４）と、Ｘ５をＸ１、Ｙ５を０、Ｚ５をＺ１とする相対座標（Ｘ５，Ｙ５，Ｚ５）と、Ｘ６とＹ６とを０、Ｚ６をＺ１の符号反転とする相対座標（Ｘ６，Ｙ６，Ｚ６）と、Ｘ７をＸ１の符号反転、Ｙ７をＹ１の符号反転、Ｚ７を０とする相対座標（Ｘ７．Ｙ７．Ｚ７）との各位置にある７つの送信先プロセッサに対してデータを送信する第三の送信処理とを実行するものであり、
前記並列計算システムの各プロセッサが、同一の相対座標の送信先プロセッサに対する、同一の送信処理を適用したデータ通信を、同じタイミングで実行することを特徴とする、並列計算システム。
（付記９）
付記６、付記７または付記８に記載の並列計算システムにおいて、
前記Ｌが奇数の場合は、６つの送信先プロセッサに対する同時送信を（Ｌ3−４Ｌ+３）／４回、４つの送信先プロセッサに対する同時送信をＬ−１回、各々相対座標値を変えながら行なう一方、
前記Ｌが偶数の場合は、６つの送信先プロセッサに対する同時送信を（Ｌ3−４Ｌ+１）／４回、４つの送信先プロセッサに対する同時送信をＬ−２回、７つの送信先プロセッサに対する同時送信をそれぞれ１回、各々相対座標値を変えながら行なう並列計算システム。
（付記１０）
付記１乃至付記９のいずれかに記載の並列計算システムにおいて、
同時送信と同時送信の間に前記並列計算システム中の全プロセッサ間で同期を取ることとを特徴とする、並列計算システム。
（付記１１）
付記１乃至付記１０のいずれかに記載された動作を、並列計算システムのプロセッサに実行させることを特徴とする、通信制御プログラム。
【図１】
0005540609.tif 000002
【図２】
0005540609.tif 000003
【図３】
0005540609.tif 000004
【図４】
0005540609.tif 000005