(57)【要約】      （修正有）【課題】集合通信において通信経路の競合を回避する並列計算機システムを提供する。【解決手段】各々他のネットワークスイッチのいずれとも直接接続された複数のネットワークスイッチと、各々複数のネットワークスイッチのいずれかに接続された複数のノードとを有する。複数のネットワークスイッチの各々には２以上のノードが接続される。複数のノードの各々は、当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された２以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定する決定部と、決定部により決定された宛先のノードにデータを送信する送信部とを有する。【選択図】図１５
2015232874.tif 000002
【特許請求の範囲】
【請求項１】
各々他のネットワークスイッチのいずれとも直接接続された複数のネットワークスイッチと、
各々前記複数のネットワークスイッチのいずれかに接続された複数のノードと、
を有し、
前記複数のネットワークスイッチの各々には２以上のノードが接続され、
前記複数のノードの各々は、
当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された２以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定する決定部と、
前記決定部により決定された宛先のノードにデータを送信する送信部と、
を有する並列計算機システム。
【請求項２】
前記複数のノードは全対全通信を実行する
請求項１記載の並列計算機システム。
【請求項３】
前記複数のネットワークスイッチの各々に接続されるノードの数は所定数ｄであり、
前記複数のネットワークスイッチの数は前記所定数ｄであり、
前記複数のノードの数はｄ2である
請求項１又は２記載の並列計算機システム。
【請求項４】
前記ノードのノード番号をｓとし、
時点を表す数字をｉとし、
所定のオフセット値をｏとし、
剰余を求める演算子を％とすると、
前記決定部は、
（（ｄ＊ｏ＋（ｓ＋（ｏ＋ｉ／ｄ＋ｉ）％ｄ）％ｄ）＋ｄ＊（ｉ／ｄ））％ｄ2を算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定する
請求項３記載の並列計算機システム。
【請求項５】
前記ノードのノード番号をｓとし、
時点を表す数字をｉとし、
所定のオフセット値をｏとし、
剰余を求める演算子を％とすると、
前記決定部は、
（（ｓ％ｄ）＊ｄ＋（ｉ＋ｏ）％ｄ＋（ｉ／ｄ）＊ｄ）％ｄ2を算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定する
請求項３記載の並列計算機システム。
【請求項６】
前記複数のネットワークスイッチの各々に接続されるノードの数をｄとし、
前記ノードのノード番号をｓとし、
時点を表す数字をｉとし、
剰余を求める演算子を％とすると、
前記決定部は、
ｉが０≦ｉ≦ｄ＊ｄ−１を満たす場合、
（（ｓ／ｄ＋(ｓ％ｄ＋ｉ／ｄ）％ｄ＋１）％（ｄ＋１））＊ｄ＋（ｓ％ｄ＋ｉ）％ｄを算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定し、
ｉがｄ＊ｄ≦ｉ≦ｄ＊（ｄ＋１）−１を満たす場合、
（ｓ／ｄ＊ｄ）＋（ｓ％ｄ＋ｉ）％ｄを算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定する
請求項１又は２記載の並列計算機システム。
【請求項７】
第１の複数のネットワークスイッチと、
各々前記第１の複数のネットワークスイッチのうち少なくとも２以上のネットワークスイッチに接続された第２の複数のネットワークスイッチと、
各々前記第１の複数のネットワークスイッチのいずれかに接続された複数のノードと、
を有し、
前記第１の複数のネットワークスイッチの各々には２以上のノードが接続され、
前記第１の複数のネットワークスイッチのうち任意の２つのネットワークスイッチは、前記第２の複数のネットワークスイッチのいずれかを介して接続され、
前記第１の複数のノードの各々は、
当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された２以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定する決定部と、
前記決定部により決定された宛先のノードにデータを送信する送信部と、
を有する並列計算機システム。
【請求項８】
前記第１の複数のネットワークスイッチの各々は、
当該ネットワークスイッチに接続されたノードから受信したデータの宛先のノードが、当該ネットワークスイッチに接続されている場合、前記受信したデータの宛先のノードに、前記受信したデータを送信し、
当該ネットワークスイッチに接続されたノードから受信したデータの宛先のノードが、当該ネットワークスイッチに接続されていない場合、前記第２の複数のネットワークスイッチのうち、当該ネットワークスイッチと前記受信したデータの宛先のノードに接続されたネットワークスイッチとを接続するネットワークスイッチに、前記受信したデータを送信する、
請求項７記載の並列計算機システム。
【請求項９】
前記複数のノードは全対全通信を実行する
請求項７又は８記載の並列計算機システム。
【請求項１０】
前記第１の複数のネットワークスイッチの各々に接続されるノードの数は所定数ｄであり、
前記複数のノードの数がｄ3であり、
前記第１の複数のネットワークスイッチの数はｄ2であり、
前記第２の複数のネットワークスイッチの数は、ｄ（ｄ−１）／２とｄ／２の少数点以下を切り上げた値との和である
請求項７乃至９のいずれか１つ記載の並列計算機システム。
【請求項１１】
前記複数のノードは複数のグループのいずれかに属し、
前記ノードが属するグループの番号をｇとし、
前記ノードのノード番号をｓとし、
時点を表す数字をｉとし、
所定のオフセット値をｏとし、
剰余を求める演算子を％とすると、
前記決定部は、
（（ｓ％ｄ）＊ｄ＋（ｉ＋ｏ）％ｄ＋（ｉ／ｄ）＊ｄ）％ｄ2＋ｇを算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定する
請求項１０記載の並列計算機システム。
【請求項１２】
複数のネットワークスイッチと複数のノードとを含む並列計算機システムの制御方法において、
前記複数のノードの各々は、前記複数のネットワークスイッチのいずれかに接続され、
前記複数のネットワークスイッチの各々には２以上のノードが接続され、
前記複数のネットワークスイッチの各々は、他のネットワークスイッチのいずれとも直接接続され、
前記複数のノードの各々は、
当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された２以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定し、
決定された前記宛先のノードにデータを送信する
並列計算機システムの制御方法。
【請求項１３】
情報処理装置であって、
前記情報処理装置が送信するデータの宛先の情報処理装置に接続されたネットワークスイッチと、前記情報処理装置が接続されたネットワークスイッチに接続された２以上の情報処理装置のうち、当該情報処理装置以外の情報処理装置が送信するデータの宛先の情報処理装置に接続されたネットワークスイッチとが異なるように、前記情報処理装置が各時点において送信するデータの宛先の情報処理装置を決定する決定部と、
前記決定部により決定された宛先の情報処理装置にデータを送信する送信部と、
を有する情報処理装置。
【請求項１４】
第１の複数のネットワークスイッチと、第２の複数のネットワークスイッチと、複数のノードとを含む並列計算機システムの制御方法において、
前記複数のノードの各々は、前記第１の複数のネットワークスイッチのいずれかに接続され、
前記第２の複数のネットワークスイッチの各々は、前記第１の複数のネットワークスイッチのうち少なくとも２以上のネットワークスイッチに接続され、
前記第１の複数のネットワークスイッチの各々には２以上のノードが接続され、
前記第１の複数のネットワークスイッチのうち任意の２つのネットワークスイッチは、前記第２の複数のネットワークスイッチのいずれかを介して接続され、
前記第１の複数のノードの各々は、
当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された２以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定し、
決定された前記宛先のノードにデータを送信する、
並列計算機システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算機システム、並列計算機システムの制御方法、及び情報処理装置に関する。
【背景技術】
【０００２】
複数のノードが計算を実行する並列計算機システムにおいては集合通信が行われる。集合通信とは、ネットワークに接続されたノードの各々が、ネットワークに接続された他の複数のノードとの間で通信データの送信及び受信を行う通信である。
【０００３】
並列計算機システムの性能は集合通信の速度の影響を受けやすい。そこで、或る文献は、並列計算機において行われる全対全（All-to-all）通信（全対全通信は集合通信の一種である）を、通信経路の競合を回避することで高速化することを開示している。具体的には、ネットワークによって結合されたｎ台の計算機の各々は、各通信ステップにおいて、他の計算機の通信相手とは異なる通信相手にデータを送信する。また、ｎ台の計算機の各々は、各通信ステップにおいて、以前の通信ステップにおける通信相手とは異なる通信相手に対してデータを送信し、ｎ回の通信ステップで計算機内の全データの送信を完了する。
【０００４】
但し、通信経路の競合を回避するのに有効な通信アルゴリズムは、ネットワークトポロジによって異なる。上記の文献の技術は、上記の文献において示されたネットワークトポロジ以外のネットワークトポロジに対して必ずしも適用できるわけではない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１１０３６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、本発明の目的は、１つの側面では、集合通信において通信経路の競合を回避するための技術を提供することである。
【課題を解決するための手段】
【０００７】
本発明の第１の態様に係る並列計算機システムは、各々他のネットワークスイッチのいずれとも直接接続された複数のネットワークスイッチと、各々複数のネットワークスイッチのいずれかに接続された複数のノードとを有する。そして、複数のネットワークスイッチの各々には２以上のノードが接続される。そして、複数のノードの各々は、当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された２以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定する決定部と、決定部により決定された宛先のノードにデータを送信する送信部とを有する。
【０００８】
本発明の第２の態様に係る並列計算機システムは、第１の複数のネットワークスイッチと、各々第１の複数のネットワークスイッチのうち少なくとも２以上のネットワークスイッチに接続された第２の複数のネットワークスイッチと、各々第１の複数のネットワークスイッチのいずれかに接続された複数のノードとを有する。そして、第１の複数のネットワークスイッチの各々には２以上のノードが接続され、第１の複数のネットワークスイッチのうち任意の２つのネットワークスイッチは、第２の複数のネットワークスイッチのいずれかを介して接続される。そして、上で述べた第１の複数のノードの各々は、当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された２以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定する決定部と、決定部により決定された宛先のノードにデータを送信する送信部とを有する。
【発明の効果】
【０００９】
１つの側面では、集合通信において通信経路の競合を回避できるようになる。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施の形態におけるフルメッシュシステムの概要を示す図である。
【図２】図２は、シフト通信パターンの一例を示す図である。
【図３】図３は、通信経路の競合について説明するための図である。
【図４】図４は、ノードの機能ブロック図である。
【図５】図５は、インフィニバンドのネットワークにおけるルーティングについて説明するための図である。
【図６】図６は、第１の実施の形態におけるメインの処理フローを示す図である。
【図７】図７は、各フェーズでの宛先を示す図である。
【図８】図８は、各フェーズでの宛先を示す図である。
【図９】図９は、第１の実施の形態のフルメッシュシステムにＳｐｉｎｅスイッチを追加したシステムを示す図である。
【図１０】図１０は、図９のシステムと接続の形態が同じシステムを示す図である。
【図１１】図１１は、複数のフルメッシュシステムが連結されたシステムを示す図である。
【図１２】図１２は、図１１のシステムにＳｐｉｎｅスイッチを追加したシステムを示す図である。
【図１３】図１３は、図１２のシステムと接続の形態が同じシステムを示す図である。
【図１４】図１４は、図１３のシステムにおけるＳｐｉｎｅスイッチが１列に並べられたシステムを示す図である。
【図１５】図１５は、Ｌｅａｆスイッチ及びノードのグループ化について説明するための図である。
【図１６】図１６は、送信元グループテーブルの一例を示す図である。
【図１７】図１７は、宛先グループテーブルの一例を示す図である。
【図１８】図１８は、第２の実施の形態におけるメインの処理フローを示す図である。
【図１９】図１９は、第２の実施の形態における宛先を示す図である。
【図２０】図２０は、第２の実施の形態における宛先を示す図である。
【図２１】図２１は、パケットが宛先のノードに到達するまでに経由するＳｐｉｎｅスイッチを決定する処理の処理フローを示す図である。
【図２２】図２２は、Ｓｐｉｎｅスイッチテーブルへの書き込みについて説明するための図である。
【図２３】図２３は、Ｓｐｉｎｅスイッチテーブルへの書き込みについて説明するための図である。
【図２４】図２４は、Ｓｐｉｎｅスイッチテーブルへの書き込みについて説明するための図である。
【図２５】図２５は、生成されたＳｐｉｎｅスイッチテーブルを示す図である。
【図２６】図２６は、グループ内通信の通信経路を示す図である。
【図２７】図２７は、グループ間通信の通信経路を示す図である。
【図２８】図２８は、グループ間通信の通信経路を示す図である。
【図２９】図２９は、通信の信頼性の向上について説明するための図である。
【図３０】図３０は、２段のファットツリー型ネットワークトポロジを示す図である。
【図３１】図３１は、３段のファットツリー型ネットワークトポロジを示す図である。
【図３２】図３２は、拡張型フルメッシュトポロジに関する値と他のネットワークトポロジに関する値とを比較するための図である。
【図３３】図３３は、フルメッシュシステムを示す図である。
【図３４】図３４は、２つのフルメッシュシステムが連結されたシステムを示す図である。
【図３５】図３５は、Ｌｅａｆスイッチが４台であるフルメッシュシステムが連結されたシステムを示す図である。
【図３６】図３６は、図３４のシステムと接続の形態が同じシステムを示す図である。
【図３７】図３７は、各フェーズでの宛先を示す図である。
【図３８】図３８は、各フェーズでの宛先を示す図である。
【図３９】図３９は、各フェーズでの宛先を示す図である。
【図４０】図４０は、６つのフルメッシュシステムが連結されたシステムを示す図である。
【図４１】図４１は、５つのフルメッシュシステムが連結されたシステムを示す図である。
【図４２】図４２は、２７のフルメッシュシステムが連結されたシステムを示す図である。
【図４３】図４３は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１１】
［実施の形態１］
図１に、第１の実施の形態のシステム概要を示す。図１においては、Ｌｅａｆスイッチ１ＡとＬｅａｆスイッチ２Ａとは直接接続され、Ｌｅａｆスイッチ１ＡとＬｅａｆスイッチ３Ａとは直接接続され、Ｌｅａｆスイッチ２ＡとＬｅａｆスイッチ３Ａとは直接接続される。Ｌｅａｆスイッチ１Ａ乃至３Ａは、ノードに接続されるネットワークスイッチ（例えばＬＡＮ（Local Area Network）スイッチ）である。丸の図形はノードを表し、ノード０乃至８は、ＭＰＩ（Message Passing Interface）等の通信ライブラリを使用して通信を行う計算機である。ノード０乃至２はＬｅａｆスイッチ１Ａに接続され、ノード３乃至５はＬｅａｆスイッチ２Ａに接続され、ノード６乃至８はＬｅａｆスイッチ３Ａに接続される。このように第１の実施の形態においては、Ｌｅａｆスイッチ１Ａ乃至３Ａのネットワークトポロジはフルメッシュ型のトポロジ（以下では、フルメッシュトポロジと呼ぶ）である。以下では、Ｌｅａｆスイッチのネットワークトポロジがフルメッシュトポロジであるシステムをフルメッシュシステムと呼ぶ。
【００１２】
第１の実施の形態においては、ノード０乃至８が全対全通信を行う。特に、ノード０乃至８は、シフト通信パターンと呼ばれる通信パターンで通信を行う。シフト通信パターンとは、ｎノードの間でのパケット交換をｎフェーズで実行する通信パターンである。図２に、シフト通信パターンの一例を示す。図２においては、送信元のノードの各々について、各フェーズにおける宛先のノードのノード番号が示されている。ノード番号がｋであるノードのｉ番目のフェーズにおける宛先は、剰余を求める演算子を％とすると、ノード番号が（ｋ＋ｉ）％ｎであるノードである。なお、全対全通信は、ネットワークに接続されたノードの各々が、ネットワークに接続された全ノード（そのノード自身を含む）との間でパケットの送信及び受信を行う通信である。
【００１３】
但し、図２に示した通信パターンで通信を行うと、通信経路の競合が発生する。例えばフェーズ３においては、ノード０からノード３へのパケットの転送と、ノード１からノード４へのパケットの転送と、ノード２からノード５へのパケットの転送とが行われる。すると、図３に示すように、Ｌｅａｆスイッチ１ＡとＬｅａｆスイッチ２Ａとの間において通信経路の競合が発生する。通信経路の競合が発生すると、通信が遅延し、並列計算機システムの性能が劣化する。そこで以下では、通信経路の競合を回避することができる通信パターンについて説明する。
【００１４】
図４に、ノード０の機能ブロック図を示す。図４の例では、ノード０は、データ格納部１０１と、決定部１０２と、通信部１０３とを含む。なお、ノード１乃至８の機能ブロック図はノード０の機能ブロック図と同様であるので、説明を省略する。
【００１５】
決定部１０２は、データ格納部１０１に格納されたデータに基づき、パケットの宛先のノードを各フェーズについて決定する。決定部１０２は、決定された宛先のノードのノード番号を通信部１０３に出力する。通信部１０３は、決定部１０２から受け取った宛先のノードのノード番号を含むパケット送信する。
【００１６】
All-to-all通信のような集合通信が行われるシステムにおいては、通信経路の競合を回避するため、規則的且つ固定的なルーティングが行われるインフィニバンドのネットワークが利用される。図５を用いて、インフィニバンドのネットワークにおけるルーティングについて説明する。図５において、丸の図形はノードを表し、正方形の図形はネットワークスイッチを表す。線分はインフィニバンドのネットワークを表し、線分の傍にある数値は宛先のノードの識別情報を表す。太い実線の矢印は通信経路を表す。
【００１７】
図５においては、ノードＮ３が、宛先がノードＮ１であるパケットを送信する。パケットのヘッダには、宛先の識別情報（例えばＬＩＤ（Local IDentifier））が含まれる。各ネットワークスイッチにおける各出力ポートには宛先のノードの識別情報が対応付けられているので、各ネットワークスイッチは、パケットに含まれる宛先の識別情報に対応する出力ポートにパケットを出力する。図５の例では、パケットはネットワークスイッチＳＷ１、ネットワークスイッチＳＷ２及びネットワークスイッチＳＷ４を経由してノードＮ１に到達する。
【００１８】
すなわち、本実施の形態のネットワークは、イーサネット（登録商標）のように自動的に経路が決定されるネットワークではなく、規則的且つ固定的なルーティングが行われるネットワークである。
【００１９】
次に、図６乃至図８を用いて、ノード０乃至８が実行する処理について説明する。ここでは、ノード０が実行する処理を例にして説明する。
【００２０】
まず、ノード０における決定部１０２は、送信元のノード（ここでは、ノード０）のノード番号をデータ格納部１０１から取得する（図６：ステップＳ１）。
【００２１】
決定部１０２は、フェーズを表す変数であるｉを０に設定する（ステップＳ３）。そして、決定部１０２は、所定の計算式を用いてノード番号を算出する。そして、決定部１０２は、算出されたノード番号のノードを、フェーズｉにおける宛先のノードに決定する（ステップＳ５）。
【００２２】
所定の計算式は、例えば、（（ｓ％ｄ）＊ｄ＋（ｉ＋ｏ）％ｄ＋ｄ＊（ｉ／ｄ））％ｎである。ここで、ｄは１つのＬｅａｆスイッチに接続されるノードの数であり、本実施の形態においては３である。ｏはオフセット値であり、後で図７を用いて説明する。ｓは送信元のノードのノード番号である。／は商を求める演算子であるので、ｉ／ｄの小数部分は切り捨てられる。
【００２３】
図７に、（（ｓ％ｄ）＊ｄ＋（ｉ＋ｏ）％ｄ＋ｄ＊（ｉ／ｄ））％ｎによって決定される宛先を示す。図７の左側には、送信元のノードの各々について、各フェーズにおける宛先のノードのノード番号が示されている。Ｌｅａｆスイッチ１Ａに接続されたノードは白色で表されており、Ｌｅａｆスイッチ２Ａに接続されたノードは黒色で表されており、Ｌｅａｆスイッチ３Ａに接続されたノードには網掛けが付されている。図７の右側には、オフセット値の割当が示されている。ノード０乃至２のオフセット値は０であり、ノード３乃至５のオフセット値は１であり、ノード６乃至８のオフセット値は２である。
【００２４】
また、Ｌｅａｆスイッチ１Ａに接続されるノードのノード番号を０、３、６とし、Ｌｅａｆスイッチ２Ａに接続されるノードのノード番号を１、４、７とし、Ｌｅａｆスイッチ３Ａに接続されるノードのノード番号を２、５、８とする場合には、所定の計算式は（ｄ＊ｏ＋（ｓ＋（ｏ＋ｉ／ｄ＋ｉ）％ｄ）％ｄ＋ｄ＊（ｉ／ｄ））％ｎであってもよい。図８に、この場合における宛先を示す。図８の左側には、送信元のノードの各々について、各フェーズにおける宛先のノードのノード番号が示されている。Ｌｅａｆスイッチ１Ａに接続されたノードは白色で表されており、Ｌｅａｆスイッチ２Ａに接続されたノードは黒色で表されており、Ｌｅａｆスイッチ３Ａに接続されたノードには網掛けが付されている。なお、この計算式を用いる場合のオフセット値は、図８の右側に示すようになる。すなわち、ノード０乃至２のオフセット値は０であり、ノード３乃至５のオフセット値は１であり、ノード６乃至８のオフセット値は２である。
【００２５】
図６の説明に戻り、決定部１０２は、決定された宛先のノードのノード番号を通信部１０３に出力する。そして、通信部１０３は、決定部１０２から受け取ったノード番号を含むパケットを生成し、ノード０に接続されたＬｅａｆスイッチ（ここでは、Ｌｅａｆスイッチ１Ａ）に送信する（ステップＳ７）。
【００２６】
これに応じ、Ｌｅａｆスイッチ１Ａはパケットを受信する。図５を用いて説明したように、Ｌｅａｆスイッチ１Ａは宛先のノードにパケットを転送するためのリンクを知っているので、そのリンクに対してパケットを出力する。
【００２７】
なお、本実施の形態においてはノード０乃至８がバリア同期を行うので、ノード０乃至８が同じタイミングでステップＳ７を実行する。
【００２８】
決定部１０２は、ｉ＝ｉmaxであるか判断する（ステップＳ９）。ｉmaxはノード番号の最大値であり、第１の実施の形態においては８である。
【００２９】
ｉ＝ｉmaxではない場合（ステップＳ９：Ｎｏルート）、決定部１０２は、ｉを１インクリメントし（ステップＳ１１）、ステップＳ５の処理に戻る。一方、ｉ＝ｉmaxである場合（ステップＳ９：Ｙｅｓルート）、処理を終了する。
【００３０】
なお、ノード１乃至８が実行する処理はノード０が実行する処理と同様であるので、説明を省略する。
【００３１】
以上のような処理を実行すれば、或るＬｅａｆスイッチから送出されるパケットが特定の通信経路に集中することが無くなる。例えば図７の例において、Ｌｅａｆスイッチ２Ａは、宛先がノード４であるパケットと、宛先がノード７であるパケットと、宛先がノード１であるパケットとをフェーズ３において送出する。ここで、ノード４はＬｅａｆスイッチ２Ａに接続されており、ノード７はＬｅａｆスイッチ３Ａに接続されており、ノード１はＬｅａｆスイッチ１Ａに接続されている。従って、通信経路の競合が起こらない。
【００３２】
［実施の形態２］
第２の実施の形態においては、第１の実施の形態におけるフルメッシュトポロジを発展させた拡張型フルメッシュトポロジについて説明する。
【００３３】
図９に、第１の実施の形態のフルメッシュシステムに対してＳｐｉｎｅスイッチが３つ追加されたシステムを示す。Ｓｐｉｎｅスイッチは、ＬｅａｆスイッチとＬｅａｆスイッチとを接続するネットワークスイッチである。図９においては、Ｓｐｉｎｅスイッチ１ＳはＬｅａｆスイッチ１ＡとＬｅａｆスイッチ２Ａとを接続し、Ｓｐｉｎｅスイッチ２ＳはＬｅａｆスイッチ１ＡとＬｅａｆスイッチ３Ａとを接続し、Ｓｐｉｎｅスイッチ３ＳはＬｅａｆスイッチ２ＡとＬｅａｆスイッチ３Ａとを接続する。
【００３４】
図９のシステムは、第１の実施の形態のフルメッシュシステムにおけるＬｅａｆスイッチ間のリンク上にＳｐｉｎｅスイッチが設けられたシステムである。従って、第１の実施の形態のシステムと同じようにAll-to-all通信を行えば、通信経路の競合を回避することができる。
【００３５】
図１０のシステムの接続の形態は、図９のシステムの接続の形態と全く同じである。図１０において、網掛けが付されていない正方形の図形はＬｅａｆスイッチを表し、網掛けが付された正方形の図形はＳｐｉｎｅスイッチを表し、丸の図形はノードを表す。各Ｌｅａｆスイッチに接続されたノードの数をｄ（ここでは、ｄ＝３）とすると、Ｌｅａｆスイッチの数はｄであり、Ｓｐｉｎｅスイッチの数はｄ（ｄ−１）／２であり、ノードの数はｄ＊ｄ＝ｄ2である。
【００３６】
ここで、各Ｌｅａｆスイッチ及び各Ｓｐｉｎｅスイッチのポートの数が６であるとすると、各Ｌｅａｆスイッチの空きポートは１つであり、各Ｓｐｉｎｅスイッチの空きポートは４つである。そこで、これらの空きポートを有効に使うことを考える。
【００３７】
図１１に、３つのフルメッシュシステムを連結したシステムを示す。図１１においては、各Ｓｐｉｎｅスイッチに追加で４つのＬｅａｆスイッチが接続されており、各Ｓｐｉｎｅスイッチにはトータルで６つのＬｅａｆスイッチが接続されている。各Ｌｅａｆスイッチには３つのノードが接続されている。図１１のシステムにおいては、各Ｓｐｉｎｅスイッチに空きポートは無く、空きポートがＬｅａｆスイッチとの接続に使用されている。従って、図１０のシステムと比較すると、システム全体としてより多くのノードを接続することができる。
【００３８】
但し、図１１のシステムにおいて、各Ｌｅａｆスイッチには空きポートが１つ有る。また、各Ｌｅａｆスイッチには、Ｓｐｉｎｅスイッチに接続されたリンクが２つしかない。従って、或るＬｅａｆスイッチが或るフェーズにおいて送出する３つのパケットの宛先の全てが、他のＬｅａｆスイッチの配下にあるノードである場合、３つのパケットを２つのリンクで送出することになるので、通信経路の競合が発生する。
【００３９】
そこで、図１１のシステムに対してＳｐｉｎｅスイッチを２つ追加し、図１２に示すシステムを構築する。図１２においては、Ｌｅａｆスイッチ１Ａ乃至１Ｃに接続されるＳｐｉｎｅスイッチ４Ｓと、Ｌｅａｆスイッチ２Ａ乃至２Ｃ及びＬｅａｆスイッチ３Ａ乃至３Ｃに接続されるＳｐｉｎｅスイッチ５Ｓとが設けられている。各Ｌｅａｆスイッチに接続されたノードの数をｄ（ここでは、ｄ＝３）とすると、Ｌｅａｆスイッチの数はｄ2であり、Ｓｐｉｎｅスイッチの数はｄ（ｄ−１）／２＋［ｄ／２］≒３ｄ2／２であり、ノードの数はｄ2＊ｄ＝ｄ3である。また、スイッチあたりのノード数はｄ3／（３ｄ2／２）＝２ｄ／３である。なお、［ｄ／２］はｄ／２小数点以下を切り上げた整数であり、例えばｄ／２＝１．５である場合、［ｄ／２］＝２である。
【００４０】
図１３のシステムの接続の形態は、図１２のシステムの接続の形態と全く同じである。なお、図１３においてＳｐｉｎｅスイッチ１Ｓ乃至５Ｓを一列に並べると図１４のようになる。
【００４１】
図１３及び図１４においては、Ｓｐｉｎｅスイッチ１ＳにＬｅａｆスイッチ１Ａ、Ｌｅａｆスイッチ１Ｂ、Ｌｅａｆスイッチ１Ｃ、Ｌｅａｆスイッチ２Ａ、Ｌｅａｆスイッチ２Ｂ及びＬｅａｆスイッチ２Ｃが接続される。Ｓｐｉｎｅスイッチ２ＳにＬｅａｆスイッチ１Ａ、Ｌｅａｆスイッチ１Ｂ、Ｌｅａｆスイッチ１Ｃ、Ｌｅａｆスイッチ３Ａ、Ｌｅａｆスイッチ３Ｂ及びＬｅａｆスイッチ３Ｃが接続される。Ｓｐｉｎｅスイッチ３ＳにＬｅａｆスイッチ２Ａ、Ｌｅａｆスイッチ２Ｂ、Ｌｅａｆスイッチ２Ｃ、Ｌｅａｆスイッチ３Ａ、Ｌｅａｆスイッチ３Ｂ及びＬｅａｆスイッチ３Ｃが接続される。Ｓｐｉｎｅスイッチ４ＳにＬｅａｆスイッチ１Ａ、Ｌｅａｆスイッチ１Ｂ及びＬｅａｆスイッチ１Ｃが接続される。Ｓｐｉｎｅスイッチ５ＳにＬｅａｆスイッチ２Ａ、Ｌｅａｆスイッチ２Ｂ、Ｌｅａｆスイッチ２Ｃ、Ｌｅａｆスイッチ３Ａ、Ｌｅａｆスイッチ３Ｂ及びＬｅａｆスイッチ３Ｃが接続される。Ｌｅａｆスイッチ１Ａにはノード０乃至２が接続される。Ｌｅａｆスイッチ２Ａにはノード３乃至５が接続される。Ｌｅａｆスイッチ３Ａにはノード６乃至８が接続される。Ｌｅａｆスイッチ１Ｂにはノード９乃至１１が接続される。Ｌｅａｆスイッチ２Ｂにはノード１２乃至１４が接続される。Ｌｅａｆスイッチ３Ｂにはノード１５乃至１７が接続される。Ｌｅａｆスイッチ１Ｃにはノード１８乃至２０が接続される。Ｌｅａｆスイッチ２Ｃにはノード２１乃至２３が接続される。Ｌｅａｆスイッチ３Ｃにはノード２４乃至２６が接続される。
【００４２】
図１３のシステムにおけるＬｅａｆスイッチ及びノードをグループ化すると、図１５のようになる。図１５においては、グループＡに、Ｌｅａｆスイッチ１Ａと、ノード０乃至２と、Ｌｅａｆスイッチ２Ａと、ノード３乃至５と、Ｌｅａｆスイッチ３Ａと、ノード６乃至８とが含まれる。グループＢに、Ｌｅａｆスイッチ１Ｂと、ノード９乃至１１と、Ｌｅａｆスイッチ２Ｂと、ノード１２乃至１４と、Ｌｅａｆスイッチ３Ｂと、ノード１５乃至１７とが含まれる。グループＣに、Ｌｅａｆスイッチ１Ｃと、ノード１８乃至２０と、Ｌｅａｆスイッチ２Ｃと、ノード２１乃至２３と、Ｌｅａｆスイッチ３Ｃと、ノード２４乃至２６とが含まれる。
【００４３】
第２の実施の形態においては、図１５に示したシステムを取り扱う。そして、第２の実施の形態システムのネットワークトポロジを、拡張型フルメッシュトポロジと呼ぶ。
【００４４】
第２の実施の形態におけるノード０乃至２６の機能ブロック図は、図４に示した機能ブロック図と同じであるので、説明を省略する。
【００４５】
図１６に、データ格納部１０１に格納される送信元グループテーブルの一例を示す。図１６の例では、送信元グループテーブルには、送信元のノードのノード番号と、送信元のノードが属するグループの識別情報とが格納される。
【００４６】
図１７に、データ格納部１０１に格納される宛先グループテーブルの一例を示す。図１７の例では、宛先グループテーブルには、送信元のノードが属するグループの識別情報とフェーズとの組合せに対応付けて、宛先のノードが属するグループの識別情報が格納される。括弧内の数字はグループオフセット値である。
【００４７】
次に、図１８乃至図２０を用いて、ノード０乃至２６が実行する処理について説明する。ここでは、ノード０が実行する処理を例にして説明する。
【００４８】
まず、ノード０における決定部１０２は、送信元のノード（ここでは、ノード０）のノード番号をデータ格納部１０１から取得する（図１８：ステップＳ２１）。
【００４９】
決定部１０２は、送信元グループテーブルから、ステップＳ２１において取得されたノード番号に対応するグループの識別情報を特定する（ステップＳ２３）。
【００５０】
決定部１０２は、フェーズを表す変数であるｉを０に設定する（ステップＳ２５）。そして、決定部１０２は、所定の計算式を用いてノード番号を算出する。そして、決定部１０２は、算出されたノード番号のノードを、フェーズｉにおける宛先のノードに決定する（ステップＳ２７）。
【００５１】
所定の計算式は、例えば、（（ｓ％ｄ）＊ｄ＋（ｉ＋ｏ）％ｄ＋ｄ＊（ｉ／ｄ））％ｎ＋ｇである。ここで、ｄは１つのＬｅａｆスイッチに接続されるノードの数であり、本実施の形態においては３である。ｓは送信元のノードのノード番号である。ｎはグループあたりのノード数であり、本実施の形態においては９である。ｏはオフセット値であり、ノード０乃至２、ノード９乃至１１及びノード１８乃至２０のオフセット値は０であり、ノード３乃至５、ノード１２乃至１４及びノード２１乃至２３のオフセット値は１であり、ノード６乃至８、ノード１５乃至１７及びノード２４乃至２６のオフセット値は２である。ｇはグループオフセット値であり、宛先グループテーブルから特定される。
【００５２】
決定部１０２は、決定された宛先のノードのノード番号を通信部１０３に出力する。そして、通信部１０３は、決定部１０２から受け取ったノード番号を含むパケットを生成し、ノード０に接続されたＬｅａｆスイッチ（ここでは、Ｌｅａｆスイッチ１Ａ）に送信する（ステップＳ２９）。
【００５３】
これに応じ、Ｌｅａｆスイッチ１Ａはパケットを受信する。図５を用いて説明したように、Ｌｅａｆスイッチ１Ａは宛先のノードにパケットを転送するためのリンクを知っているので、そのリンクに対してパケットを出力する。
【００５４】
なお、本実施の形態においてはノード０乃至２６がバリア同期を行うので、ノード０乃至２６は同じタイミングでステップＳ２９を実行する。
【００５５】
決定部１０２は、ｉ＝ｉmaxであるか判断する（ステップＳ３１）。ｉmaxはフェーズを表す番号の最大値であり、第１の実施の形態においては２６である。
【００５６】
ｉ＝ｉmaxではない場合（ステップＳ３１：Ｎｏルート）、決定部１０２は、ｉを１インクリメントし（ステップＳ３３）、ステップＳ２７の処理に戻る。一方、ｉ＝ｉmaxである場合（ステップＳ３１：Ｙｅｓルート）、処理を終了する。
【００５７】
なお、ノード１乃至２６が実行する処理はノード０が実行する処理と同様であるので、説明を省略する。
【００５８】
図１９に、上記の処理によって決定される宛先を示す。図１９においては、送信元のノードの各々について、各フェーズにおける宛先のノードのノード番号が示されている。
【００５９】
これには図２０に示すような特徴がある。まず、同じグループに属するノードは、同じフェーズにおいて同じグループ宛にパケットを送信する。例えば、グループＡに属するノード０乃至８は、フェーズ０乃至８のいずれにおいても、グループＢのノードにパケットを送信する。また、異なるグループに属するノードは、同じフェーズにおいて異なるグループ宛にパケットを送信する。例えば、グループＡに属するノード０乃至８はフェーズ９においてグループＣのノードにパケットを送信するのに対し、グループＢに属するノード９乃至１７はフェーズ９においてグループＢのノードにパケットを送信する。
【００６０】
また、或るフェーズにおいて１台のＬｅａｆスイッチから送出される３つのパケットは、それぞれ異なるＬｅａｆスイッチに向かう。例えばフェーズ１７においては、Ｌｅａｆスイッチ２Ａから、Ｌｅａｆ１Ｃに向かうパケットと、Ｌｅａｆ２Ｃに向かうパケットと、Ｌｅａｆ３Ｃに向かうパケットとが送出される。
【００６１】
次に、図２１乃至図２５を用いて、パケットが宛先のノードに到達するまでに経由するＳｐｉｎｅスイッチを決定する処理について説明する。ここではノード０が処理を実行する例を示すが、他のノードが実行してもよい。また、ノード０乃至２６とは別に設けられた経路データ生成装置（図示せず）が処理を実行してもよい。
【００６２】
まず、ノード０の決定部１０２は、グループ内通信について、制約条件１及び２を満たすように、Ｓｐｉｎｅスイッチ１Ｓ乃至３Ｓの中からＳｐｉｎｅスイッチを決定する（図２１：ステップＳ４１）。そして、決定部１０２は、データ格納部１０１に格納されているＳｐｉｎｅスイッチテーブルに、決定されたＳｐｉｎｅスイッチの識別情報を書き込む。グループ内通信とは、送信元のノードが属するグループと宛先のノードが属するグループとが同じである通信である。制約条件１は、Ｓｐｉｎｅスイッチテーブル内の或る一行の中に同じＳｐｉｎｅスイッチの識別情報が無く且つ或る１列の中に同じＳｐｉｎｅスイッチの識別情報が無いという条件である。制約条件２は、行方向におけるＬｅａｆスイッチの識別情報と列方向におけるＬｅａｆスイッチの識別情報とが同じである要素を対象軸とした場合に線対称の位置にある２つの要素が同じであるという条件である。図２２に、ステップＳ４１の処理が実行された時点におけるＳｐｉｎｅスイッチテーブルの一例を示す。ステップＳ４１の処理によって書き込まれた箇所は網掛けが付された箇所である。
【００６３】
決定部１０２は、グループ間通信のうち、送信元のノードが接続されたＬｅａｆスイッチの識別情報の数字部分と、宛先のノードが接続されたＬｅａｆスイッチの識別情報の数字部分とが異なる通信を特定する（ステップＳ４３）。ステップＳ４３においては、例えば、Ｌｅａｆスイッチ１ＡとＬｅａｆスイッチ２Ｂとの間の通信が特定される。
【００６４】
決定部１０２は、ステップＳ４３において特定された通信について、制約条件３を満たすように、Ｓｐｉｎｅスイッチ１Ｓ乃至３Ｓの中からＳｐｉｎｅスイッチを決定する（ステップＳ４５）。そして、決定部１０２は、データ格納部１０１に格納されているＳｐｉｎｅスイッチテーブルに、決定されたＳｐｉｎｅスイッチの識別情報を書き込む。制約条件３とは、同じ行において、宛先のノードが接続されたＬｅａｆスイッチの識別情報における数字部分が同じである場合には同じＳｐｉｎｅスイッチを割り当てるという条件である。図２３に、ステップＳ４５の処理が実行された時点におけるＳｐｉｎｅスイッチテーブルの一例を示す。ステップＳ４５の処理によって書き込まれた箇所は網掛けが付された箇所である。
【００６５】
決定部１０２は、グループ間通信のうち、送信元のノードが接続されたＬｅａｆスイッチの識別情報の数字部分と、宛先のノードが接続されたＬｅａｆスイッチの識別情報の数字部分とが同じである通信を特定する（ステップＳ４７）。ステップＳ４７においては、例えば、Ｌｅａｆスイッチ１ＡとＬｅａｆスイッチ１Ｂとの間の通信が特定される。
【００６６】
決定部１０２は、ステップＳ４７において特定された通信について、制約条件４を満たすように、Ｓｐｉｎｅスイッチ４Ｓ及び５Ｓの中からＳｐｉｎｅスイッチを決定する（ステップＳ４９）。そして、決定部１０２は、データ格納部１０１に格納されているＳｐｉｎｅスイッチテーブルに、決定されたＳｐｉｎｅスイッチの識別情報を書き込む。制約条件４とは、送信元のノードが接続されたＬｅａｆスイッチの識別情報における数字部分と宛先のノードが接続されたＬｅａｆスイッチの識別情報における数字部分とが同じである場合、両Ｌｅａｆスイッチを接続するＳｐｉｎｅスイッチを割り当てるという条件である。図２４に、ステップＳ４９の処理が実行された時点におけるＳｐｉｎｅスイッチテーブルの一例を示す。ステップＳ４９の処理によって書き込まれた箇所は網掛けが付された箇所である。
【００６７】
以上のような処理を実行すれば、図２５に示すようなＳｐｉｎｅスイッチテーブルが完成する。ノード０は、システムにおける各Ｓｐｉｎｅスイッチ及び各Ｌｅａｆスイッチに、Ｓｐｉｎｅスイッチテーブルの情報を送信する。そして、各Ｓｐｉｎｅスイッチ及び各Ｌｅａｆスイッチが、受信した情報に従いルーティングを行えば、通信経路が競合することが無くなる。
【００６８】
図２６乃至図２８に、通信経路の一例を示す。図２６に、ノード０乃至２がフェーズ１８において送信するパケットの通信経路を示す。図２６に示された通信はグループ内通信である。ノード０が送信したパケットは、Ｌｅａｆスイッチ１Ａによってノード０に送り返される。ノード１が送信したパケットは、Ｌｅａｆスイッチ１ＡによってＳｐｉｎｅスイッチ１Ｓに転送される。Ｓｐｉｎｅスイッチ１Ｓは、受信したパケットをＬｅａｆスイッチ２Ａに転送する。Ｌｅａｆスイッチ２Ａは、受信したパケットをノード３に転送する。ノード２が送信したパケットは、Ｌｅａｆスイッチ１ＡによってＳｐｉｎｅスイッチ２Ｓに転送される。Ｓｐｉｎｅスイッチ２Ｓは、受信したパケットをＬｅａｆスイッチ３Ａに転送する。Ｌｅａｆスイッチ３Ａは、受信したパケットをノード６に転送する。
【００６９】
このように、グループ内通信においては、Ｌｅａｆスイッチから送出された３つのパケットのうち１つのパケットはそのＬｅａｆスイッチの配下のノードに転送され、２つのパケットはそれぞれ異なるＬｅａｆスイッチに転送される。従って通信経路の競合が無い。
【００７０】
図２７に、ノード０乃至２がフェーズ０において送信するパケットの通信経路を示す。図２７に示された通信はグループ間通信である。ノード０が送信したパケットは、Ｌｅａｆスイッチ１ＡによってＳｐｉｎｅスイッチ４Ｓに転送される。Ｓｐｉｎｅスイッチ４Ｓは、受信したパケットをＬｅａｆスイッチ１Ｂに転送する。Ｌｅａｆスイッチ１Ｂは、受信したパケットをノード９に転送する。ノード１が送信したパケットは、Ｌｅａｆスイッチ１ＡによってＳｐｉｎｅスイッチ１Ｓに転送される。Ｓｐｉｎｅスイッチ１Ｓは、受信したパケットをＬｅａｆスイッチ２Ｂに転送する。Ｌｅａｆスイッチ２Ｂは、受信したパケットをノード１２に転送する。ノード２が送信したパケットは、Ｌｅａｆスイッチ１ＡによってＳｐｉｎｅスイッチ２Ｓに転送される。Ｓｐｉｎｅスイッチ２Ｓは、受信したパケットをＬｅａｆスイッチ３Ｂに転送する。Ｌｅａｆスイッチ３Ｂは、受信したパケットをノード１５に転送する。
【００７１】
このように、グループ間通信においては、Ｌｅａｆスイッチから送出された３つのパケットは、それぞれ異なるＬｅａｆスイッチに転送される。従って通信経路の競合が無い。
【００７２】
図２８に、ノード０乃至２がフェーズ１２において送信するパケットの通信経路を示す。図２８に示された通信はグループ間通信である。ノード０が送信したパケットは、Ｌｅａｆスイッチ１ＡによってＳｐｉｎｅスイッチ１Ｓに転送される。Ｓｐｉｎｅスイッチ１Ｓは、受信したパケットをＬｅａｆスイッチ２Ｃに転送する。Ｌｅａｆスイッチ２Ｃは、受信したパケットをノード２１に転送する。ノード１が送信したパケットは、Ｌｅａｆスイッチ１ＡによってＳｐｉｎｅスイッチ２Ｓに転送される。Ｓｐｉｎｅスイッチ２Ｓは、受信したパケットをＬｅａｆスイッチ３Ｃに転送する。Ｌｅａｆスイッチ３Ｃは、受信したパケットをノード２４に転送する。ノード２が送信したパケットは、Ｌｅａｆスイッチ１ＡによってＳｐｉｎｅスイッチ４Ｓに転送される。Ｓｐｉｎｅスイッチ４Ｓは、受信したパケットをＬｅａｆスイッチ１Ｃに転送する。Ｌｅａｆスイッチ１Ｃは、受信したパケットをノード１８に転送する。
【００７３】
このように、グループ間通信においては、Ｌｅａｆスイッチから送出された３つのパケットは、それぞれ異なるＬｅａｆスイッチに転送される。従って通信経路の競合が無い。
【００７４】
また、本実施の形態によれば、順方向のパケットが経由するＳｐｉｎｅスイッチと、逆方向のパケットが経由するＳｐｉｎｅスイッチとが同じになる。例えば図２９に示すように、Ｌｅａｆスイッチ１Ａの配下にあるノードとＬｅａｆスイッチ２Ａの配下にあるノードの間で通信を行う場合Ｓｐｉｎｅスイッチ１Ｓを使用するようになっており、その他のＳｐｉｎｅスイッチを使用することは無い。
【００７５】
例えば順方向と逆方向とで異なるＳｐｉｎｅスイッチを使用する場合、どちらのＳｐｉｎｅスイッチが故障しても通信を行えなくなる。しかし、本実施の形態においては使用されるＳｐｉｎｅスイッチが１台なので、通信の信頼性を向上させることができるようになる。
【００７６】
図３０乃至３２を用いて、拡張型フルメッシュトポロジと他のネットワークトポロジとの違いについて説明する。
【００７７】
図３０に、２段のファットツリー型ネットワークトポロジを示す。図３０においては、網掛けが付された正方形の図形はＳｐｉｎｅスイッチを表し、網掛けが付されていない正方形の図形はＬｅａｆスイッチを表し、丸の図形はノードを表す。１台のＬｅａｆスイッチに接続されるノードの数はｄ（ここでは、ｄ＝３）である。システムにおけるノードの数は２ｄ2である。Ｌｅａｆスイッチの数は２ｄである。Ｓｐｉｎｅスイッチの数はｄである。従ってスイッチは合計で２ｄ＋ｄ＝３ｄ台である。スイッチあたりのノード数は２ｄ2／３ｄ＝２ｄ／３である。
【００７８】
図３１に、３段のファットツリー型ネットワークトポロジを示す。図３１においては、網掛けが付された正方形の図形はＳｐｉｎｅスイッチを表し、網掛けが付されていない正方形の図形はＬｅａｆスイッチを表し、丸の図形はノードを表す。１台のＬｅａｆスイッチに接続されるノードの数はｄ（ここでは、ｄ＝２）である。システムにおけるノードの数は２ｄ3である。Ｌｅａｆスイッチの数は２ｄ2である。Ｌｅａｆスイッチより１層上に配置されたＳｐｉｎｅスイッチの数は２ｄ2である。最上層のＳｐｉｎｅスイッチの数はｄ2である。従ってスイッチは合計で２ｄ2＋２ｄ2＋ｄ2＝５ｄ2台である。スイッチあたりのノード数は２ｄ3／５ｄ2＝２ｄ／５である。
【００７９】
図３２に、拡張型フルメッシュトポロジに関する値と他のネットワークトポロジに関する値とを比較するための表を示す。図３２に示すように、拡張型フルメッシュトポロジにおけるスイッチの数は、３段のファットツリー型ネットワークトポロジにおけるスイッチの数と同じオーダである。スイッチあたりのノード数については、拡張型フルメッシュトポロジと２段のファットツリー型ネットワークトポロジとで同じである。ワーストケースでのホップ数については、拡張型フルメッシュトポロジと２段のファットツリー型ネットワークトポロジとで同じであり、拡張型フルメッシュトポロジは３段のファットツリー型ネットワークトポロジより優れている。
【００８０】
［実施の形態３］
第３の実施の形態においては、第１の実施の形態におけるフルメッシュトポロジを発展させた多層フルメッシュトポロジについて説明する。
【００８１】
まず、図３３のようなフルメッシュシステムを考える。図３３において、四角の図形はＬｅａｆスイッチを表し、丸の図形はノードを表す。各Ｌｅａｆスイッチは、他のＬｅａｆスイッチのいずれとも接続される。各Ｌｅａｆスイッチには２台のノードが接続される。図３３の例では各Ｌｅａｆスイッチのポートの数は４であるため、各Ｌｅａｆスイッチには空きポートが無い。
【００８２】
図３４に、２つのフルメッシュシステムが連結されたシステムを示す。図３４においては、網掛けが付された四角の図形はＳｐｉｎｅスイッチを表し、網掛けが付されていない四角の図形はＬｅａｆスイッチを表し、丸の図形はノードを表す。２つのフルメッシュシステムがＳｐｉｎｅスイッチを用いて接続されるため、１つのフルメッシュシステム内だけでなくフルメッシュシステム間においても通信を行うことができる。以下では、複数のフルメッシュシステムが連結されたシステムを多層フルメッシュシステムと呼ぶ。また、多層フルメッシュシステムのネットワークトポロジを、多層フルメッシュトポロジと呼ぶ。
【００８３】
図３５に、多層フルメッシュシステムの他の例を示す。図３５においては、Ｌｅａｆスイッチが４台であるフルメッシュシステム３つが、ＳｐｉｎｅスイッチＡ乃至Ｆを用いて連結されている。網掛けが付された四角の図形はＳｐｉｎｅスイッチを表し、網掛けが付されていない四角の図形はＬｅａｆスイッチを表し、丸の図形はノードを表す。各Ｓｐｉｎｅスイッチのポート数及び各Ｌｅａｆスイッチのポート数は６である。各Ｌｅａｆスイッチには３台のノードが接続される。Ｌｅａｆスイッチ間のリンク上には１台のＳｐｉｎｅスイッチが設けられる。各Ｓｐｉｎｅスイッチは各フルメッシュシステムに２本のリンクを有し、各フルメッシュシステムにおいて２台のＬｅａｆスイッチに接続される。図３５のシステムを別の方法で描くと、図３６のようになる。図３６のシステムの接続の形態は、図３５のシステムの接続の形態と全く同じである。丸の図形の中にある数字はノード番号である。
【００８４】
以下では、図３６のノード０乃至３５が実行するAll-to-all通信について説明する。
【００８５】
まず、図３７を用いて、フェーズ０乃至１１における通信について説明する。図３７には、ノード０乃至１１の各々について、フェーズ０乃至１１における宛先のノードの番号が示されている。
【００８６】
フェーズ０乃至８（より一般的には、フェーズ０乃至（ｄ＊ｄ−１））における宛先Ｄは、例えば、Ｄ＝（（ｓｇ＋（ｏ＋ｐｂ）％ｄ＋１）％（ｄ＋１））＊ｄ＋（ｏ＋ｉ）％ｄにより決定される。宛先のノードが属するグループの番号ｄｇは、例えばｄｇ＝（ｓｇ＋（ｏ＋ｐｂ）％ｄ＋１）％（ｄ＋１）により決定される。ここで、同じグループに属する複数のノードは同じＬｅａｆスイッチに接続される。ｄは次数であり、１台のＬｅａｆスイッチに接続されるノードの数を表す。ｇはグループ数であり、ｇ＝ｄ＋１である。ｓは、送信元のノードの番号である。ｓｇは、送信元のノードが属するグループの番号であり、ｓｇ＝ｓ／ｄである。ｏは送信元ノードのグループ内でのオフセットであり、ｏ＝ｓ％ｄである。ｉはフェーズの番号である。ｐｂはフェーズブロックであり、ｐｂ＝ｉ／ｄである。これにより、フェーズ０乃至８においては、１台のＬｅａｆスイッチから送出される３つのパケットが、それぞれ異なるＬｅａｆスイッチに転送される。従って通信経路の競合が無い。
【００８７】
フェーズ９乃至１１（より一般的には、フェーズ（ｄ＊ｄ−１）乃至（ｄ＊（ｄ＋１）−１））における宛先は、例えば、ｄｅｓｔ＝（ｓｇ＊ｄ）＋（ｏ＋ｉ）％ｄにより決定される。フェーズ９乃至１１においては、ノードからパケットを受信したＬｅａｆスイッチは配下のノードにパケットを転送するので、通信経路の競合が無い。
【００８８】
以上のように、フェーズ０乃至１１においては、Ｌｅａｆスイッチａ１の配下のノード、Ｌｅａｆスイッチｂ１の配下のノード、Ｌｅａｆスイッチｃ１の配下のノード及びＬｅａｆスイッチｄ１の配下のノードがＬｅａｆスイッチａ１の配下のノード、Ｌｅａｆスイッチｂ１の配下のノード、Ｌｅａｆスイッチｃ１の配下のノード及びＬｅａｆスイッチｄ１の配下のノードに対してパケットを送信する層内通信が行われる。層内通信においては、図３７に示したように宛先を設定すれば、通信経路の競合を回避することができる。
【００８９】
同様に、フェーズ０乃至１１においては、Ｌｅａｆスイッチａ２の配下のノード、Ｌｅａｆスイッチｂ２の配下のノード、Ｌｅａｆスイッチｃ２の配下のノード及びＬｅａｆスイッチｄ２の配下のノードがＬｅａｆスイッチａ２の配下のノード、Ｌｅａｆスイッチｂ２の配下のノード、Ｌｅａｆスイッチｃ２の配下のノード及びＬｅａｆスイッチｄ２の配下のノードに対してパケットを送信する層内通信と、Ｌｅａｆスイッチａ３の配下のノード、Ｌｅａｆスイッチｂ３の配下のノード、Ｌｅａｆスイッチｃ３の配下のノード及びＬｅａｆスイッチｄ３の配下のノードがＬｅａｆスイッチａ３の配下のノード、Ｌｅａｆスイッチｂ３の配下のノード、Ｌｅａｆスイッチｃ３の配下のノード及びＬｅａｆスイッチｄ３の配下のノードに対してパケットを送信する層内通信が行われる。これらの層内通信においては、ノード０乃至１１についての層内通信と同様に宛先を設定すれば、通信経路の競合を回避することができる。
【００９０】
図３８を用いて、フェーズ１２乃至２３における通信について説明する。図３８には、ノード０乃至１１の各々について、フェーズ１２乃至２３における宛先のノードの番号が示されている。
【００９１】
フェーズ１２乃至２３においては、Ｌｅａｆスイッチａ１の配下のノード、Ｌｅａｆスイッチｂ１の配下のノード、Ｌｅａｆスイッチｃ１の配下のノード及びＬｅａｆスイッチｄ１の配下のノードがＬｅａｆスイッチａ２の配下のノード、Ｌｅａｆスイッチｂ２の配下のノード、Ｌｅａｆスイッチｃ２の配下のノード及びＬｅａｆスイッチｄ２の配下のノードに対してパケットを送信する層間通信が行われる。フェーズ１２乃至２３における宛先のノードの番号は、フェーズ０乃至１１における宛先のノードの番号に１２を加えた番号である。これにより、フェーズ１２乃至２０においては、１台のＬｅａｆスイッチから送出される３つのパケットが、それぞれ異なるＬｅａｆスイッチに転送される。フェーズ２１乃至２３においては、１台のＬｅａｆスイッチから送出される３つのパケットは、同じＬｅａｆスイッチに向かう。しかし、そのＬｅａｆスイッチまでの通信経路が異なる（すなわち、経由するＳｐｉｎｅスイッチが異なる）ようにすることができるので、通信経路は競合しない。従って、通信経路の競合を回避することができる。
【００９２】
同様に、フェーズ１２乃至２３においては、Ｌｅａｆスイッチａ２の配下のノード、Ｌｅａｆスイッチｂ２の配下のノード、Ｌｅａｆスイッチｃ２の配下のノード及びＬｅａｆスイッチｄ２の配下のノードがＬｅａｆスイッチａ３の配下のノード、Ｌｅａｆスイッチｂ３の配下のノード、Ｌｅａｆスイッチｃ３の配下のノード及びＬｅａｆスイッチｄ３の配下のノードに対してパケットを送信する層間通信と、Ｌｅａｆスイッチａ３の配下のノード、Ｌｅａｆスイッチｂ３の配下のノード、Ｌｅａｆスイッチｃ３の配下のノード及びＬｅａｆスイッチｄ３の配下のノードがＬｅａｆスイッチａ１の配下のノード、Ｌｅａｆスイッチｂ１の配下のノード、Ｌｅａｆスイッチｃ１の配下のノード及びＬｅａｆスイッチｄ１の配下のノードに対してパケットを送信する層間通信とが行われる。これらの層間通信においては、ノード０乃至１１についての層間通信と同様に宛先を設定すれば、通信経路の競合を回避することができる。
【００９３】
図３９を用いて、フェーズ２４乃至３５における通信について説明する。図３９には、ノード０乃至１１の各々について、フェーズ２４乃至３５における宛先のノードの番号が示されている。
【００９４】
フェーズ２４乃至３５においては、Ｌｅａｆスイッチａ１の配下のノード、Ｌｅａｆスイッチｂ１の配下のノード、Ｌｅａｆスイッチｃ１の配下のノード及びＬｅａｆスイッチｄ１の配下のノードがＬｅａｆスイッチａ３の配下のノード、Ｌｅａｆスイッチｂ３の配下のノード、Ｌｅａｆスイッチｃ３の配下のノード及びＬｅａｆスイッチｄ３の配下のノードに対してパケットを送信する層間通信が行われる。フェーズ２４乃至３５における宛先のノードの番号は、フェーズ０乃至１１における宛先のノードの番号に２４を加えた番号である。これにより、フェーズ２４乃至３２においては、１台のＬｅａｆスイッチから送出される３つのパケットが、それぞれ異なるＬｅａｆスイッチに転送される。フェーズ３２乃至３５においては、１台のＬｅａｆスイッチから送出される３つのパケットは、同じＬｅａｆスイッチに向かう。しかし、そのＬｅａｆスイッチまでの通信経路が異なる（すなわち、経由するＳｐｉｎｅスイッチが異なる）ようにすることができるので、通信経路は競合しない。従って、通信経路の競合を回避することができる。
【００９５】
同様に、フェーズ２４乃至３５においては、Ｌｅａｆスイッチａ２の配下のノード、Ｌｅａｆスイッチｂ２の配下のノード、Ｌｅａｆスイッチｃ２の配下のノード及びＬｅａｆスイッチｄ２の配下のノードがＬｅａｆスイッチａ１の配下のノード、Ｌｅａｆスイッチｂ１の配下のノード、Ｌｅａｆスイッチｃ１の配下のノード及びＬｅａｆスイッチｄ１の配下のノードに対してパケットを送信する層間通信と、Ｌｅａｆスイッチａ３の配下のノード、Ｌｅａｆスイッチｂ３の配下のノード、Ｌｅａｆスイッチｃ３の配下のノード及びＬｅａｆスイッチｄ３の配下のノードがＬｅａｆスイッチａ２の配下のノード、Ｌｅａｆスイッチｂ２の配下のノード、Ｌｅａｆスイッチｃ２の配下のノード及びＬｅａｆスイッチｄ２の配下のノードに対してパケットを送信する層間通信とが行われる。これらの層間通信においては、ノード０乃至１１についての層間通信と同様に宛先を設定すれば、通信経路の競合を回避することができる。
【００９６】
以上のように、多層フルメッシュトポロジのシステムにおいてAll-to-all通信を行っても通信経路の競合が発生しないようにすることができる。
【００９７】
なお、宛先を決定する処理は、各ノードにおいて行われる。処理フローは基本的には他の実施の形態の処理フローと同様なので、説明を省略する。
【００９８】
［実施の形態４］
第２の実施の形態及び第３の実施の形態においては、連結できるフルメッシュシステムの数の上限がＳｐｉｎｅスイッチのポートの数の１／２であるため、システムの大規模化に限りがある。そこで第４の実施の形態においては、より多くのフルメッシュシステムを連結する方法について説明する。
【００９９】
図４０に、６つのフルメッシュシステムが連結された多層フルメッシュシステムを示す。図４０のシステムにおいては、１つのフルメッシュシステムは４台のＬｅａｆスイッチと１２台のノードとを含む。フルメッシュシステム間の連結には、２階層のファットツリーシステム４００が使用される。すなわち、図４０におけるＡ乃至Ｆは２階層のファットツリーシステムである。このファットツリーシステムには９台のネットワークスイッチが含まれ、下層に６台のネットワークスイッチが配置され、上層に３台のネットワークスイッチが配置される。空きポートの数は１２であるため、６（＝１２／２）つのフルメッシュシステムを連結することができる。
【０１００】
図４１に、５つのフルメッシュシステムが連結された多層フルメッシュシステムを示す。図４１のシステムにおいては、１つのフルメッシュシステムは４台のＬｅａｆスイッチと１２台のノードとを含む。フルメッシュシステム間の連結には、５台のネットワークスイッチを含むフルメッシュシステム４１０が使用される。すなわち、図４１におけるＡ乃至Ｆはフルメッシュシステムである。このフルメッシュシステムにおける各ネットワークスイッチの空きポートの数は２であるため、空きポートの数の合計は１０である。従って、５（＝１０／２）つのフルメッシュシステムを連結することができる。
【０１０１】
但し、例えば、Ｌｅａｆスイッチａ１がＬｅａｆスイッチａ２にパケットを転送する層間通信とＬｅａｆスイッチｂ１がＬｅａｆスイッチｂ２にパケットを転送する層間通信とが同じフェーズで行われるような場合には、リンク４１１においては競合が発生する。よって、通信の帯域は競合が発生しない場合と比較して１／２になる。
【０１０２】
以上のように、Ｓｐｉｎｅスイッチのポート数が十分ではない場合には、Ｓｐｉｎｅスイッチをファットツリーシステム或いはフルメッシュシステムに置き換えることで、より多くのフルメッシュシステムを連結することができるようになる。
【０１０３】
図４２に、より大規模な多層フルメッシュシステムの一例として、２７のフルメッシュシステムが連結された多層フルメッシュシステムを示す。図４２のシステムは、９つのフルメッシュシステムが連結された多層フルメッシュシステム（以下では、９層フルメッシュシステムと呼ぶ）を３つ連結したシステムである。９つのフルメッシュシステムの連結には、３６のポートを有するＳｐｉｎｅスイッチが利用される。各Ｓｐｉｎｅスイッチの３６のポートのうち１８（＝２＊９）のポートはＬｅａｆスイッチとの接続に使用され、残りの１８のポートは他の９層フルメッシュシステムにおけるＳｐｉｎｅスイッチとの接続に使用される。例えば図４２においては、ＳｐｉｎｅスイッチＡのポートのうち９のポートがＳｐｉｎｅスイッチＢとの接続に使用され、ＳｐｉｎｅスイッチＡのポートのうち９のポートがＳｐｉｎｅスイッチＣとの接続に使用される。
【０１０４】
各Ｌｅａｆスイッチのポートの数は３６である。３６のポートのうち１８のポートはノードとの接続に使用され、残りの１８のポートは他のＬｅａｆスイッチ又はＳｐｉｎｅスイッチとの接続に使用される。従って１つのフルメッシュシステムは、１９台のＬｅａｆスイッチと３４２（＝１８＊１９）台のノードとを含む。よって、ノード数は合計で９２３４（＝３４２＊２７）台である。
【０１０５】
なお、単純にＳｐｉｎｅスイッチを使用すると、１８（＝３６／２）のフルメッシュシステムしか連結することができないので、ノード数は合計で６１５６（＝３４２＊１８）台である。従って、図４２の構成によれば、より多くのノードを接続することができる。ネットワークスイッチの台数は合計で９７２台であり、同規模の３段ファットツリーシステムにおけるネットワークスイッチの台数１２８３台と比べると少ない。
【０１０６】
次に、図４２のシステムにおけるAll-to-all通信について検討する。まず、各９層フルメッシュシステム内で通信が行われる場合、第３の実施の形態に示した考え方で宛先を設定することで、通信経路の競合を回避することができる。
【０１０７】
一方、９層フルメッシュシステム間で通信が行われる場合、通信経路の競合が発生することがある。例えば或るフェーズにおいて、Ｌｅａｆスイッチａ１の配下の各ノードがＬｅａｆスイッチａ１０の配下のノードのいずれかにパケットを送信し、Ｌｅａｆスイッチｓ１の配下の各ノードがＬｅａｆスイッチｓ１０の配下のノードのいずれかにパケットを送信するとする。同様に、Ｌｅａｆスイッチａ２の配下の各ノードがＬｅａｆスイッチａ１１の配下のノードのいずれかに送信し、Ｌｅａｆスイッチｓ２の配下の各ノードがＬｅａｆスイッチｓ１１の配下のノードのいずれかにパケットを送信し、・・・、Ｌｅａｆスイッチａ９の配下の各ノードがＬｅａｆスイッチａ１８の配下のノードのいずれかに送信し、Ｌｅａｆスイッチｓ９の配下の各ノードがＬｅａｆスイッチｓ１８の配下のノードのいずれかにパケットを送信するとする。この場合、９層フルメッシュ間の１６２（＝９＊１８）本のリンクを３２４（＝１８＊２＊９）のパケットが通ることになる。よって、通信の帯域は競合が発生しない場合と比較して１／２（＝１６２／３２４）になる。なお、All-to-all通信の際に通信経路の競合が発生しないノードは３０７８台である。
【０１０８】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明したノード０乃至３５の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【０１０９】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０１１０】
また、第１及び第２の実施の形態においてはｄ＝３の例を示したが、ｄ＝３に限られるわけではない。例えば、ｄが４以上であってもよい。
【０１１１】
なお、上で述べたノード０乃至３５は、コンピュータ装置であって、図４３に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１１２】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１１３】
本実施の形態の第１の態様に係る並列計算機システムは、（Ａ）各々他のネットワークスイッチのいずれとも直接接続された複数のネットワークスイッチと、（Ｂ）各々複数のネットワークスイッチのいずれかに接続された複数のノードとを有する。そして、（ａ１）複数のネットワークスイッチの各々には２以上のノードが接続される。そして、複数のノードの各々は、（ｂ１）当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された２以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定する決定部と、（ｂ２）決定部により決定された宛先のノードにデータを送信する送信部とを有する。
【０１１４】
このようにすれば、１つのネットワークスイッチから送出されるデータが特定の通信経路に集まるのを抑制できるので、集合通信において通信経路の競合を回避できるようになる。
【０１１５】
また、（ｂ３）複数のノードは全対全通信を実行してもよい。全対全通信において通信経路の競合を回避できるようになる。
【０１１６】
また、（ａ２）複数のネットワークスイッチの各々に接続されるノードの数は所定数ｄであり、（ａ３）複数のネットワークスイッチの数は所定数ｄであり、（ｂ４）複数のノードの数はｄ2であってもよい。このようにすれば、ネットワークスイッチを有効に利用しつつ通信経路の競合を回避できるようになる。
【０１１７】
また、ノードのノード番号をｓとし、時点を表す数字をｉとし、所定のオフセット値をｏとし、剰余を求める演算子を％とすると、決定部は、（ｂ１１）（（ｄ＊ｏ＋（ｓ＋（ｏ＋ｉ／ｄ＋ｉ）％ｄ）％ｄ）＋ｄ＊（ｉ／ｄ））％ｄ2を算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定してもよい。
【０１１８】
また、ノードのノード番号をｓとし、時点を表す数字をｉとし、所定のオフセット値をｏとし、剰余を求める演算子を％とすると、決定部は、（ｂ１２）（（ｓ％ｄ）＊ｄ＋（ｉ＋ｏ）％ｄ＋（ｉ／ｄ）＊ｄ）％ｄ2を算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定してもよい。
【０１１９】
また、複数のネットワークスイッチの各々に接続されるノードの数をｄとし、ノードのノード番号をｓとし、時点を表す数字をｉとし、剰余を求める演算子を％とすると、決定部は、ｉが０≦ｉ≦ｄ＊ｄ−１を満たす場合、（（ｓ／ｄ＋(ｓ％ｄ＋ｉ／ｄ）％ｄ＋１）％（ｄ＋１））＊ｄ＋（ｓ％ｄ＋ｉ）％ｄを算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定し、ｉがｄ＊ｄ≦ｉ≦ｄ＊（ｄ＋１）−１を満たす場合、（ｓ／ｄ＊ｄ）＋（ｓ％ｄ＋ｉ）％ｄを算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定してもよい。
【０１２０】
本実施の形態の第２の態様に係る並列計算機システムは、（Ｃ）第１の複数のネットワークスイッチと、（Ｄ）各々第１の複数のネットワークスイッチのうち少なくとも２以上のネットワークスイッチに接続された第２の複数のネットワークスイッチと、（Ｅ）各々第１の複数のネットワークスイッチのいずれかに接続された複数のノードとを有する。そして、（ｃ１）第１の複数のネットワークスイッチの各々には２以上のノードが接続され、（ｃ２）第１の複数のネットワークスイッチのうち任意の２つのネットワークスイッチは、第２の複数のネットワークスイッチのいずれかを介して接続される。そして、上で述べた第１の複数のノードの各々は、（ｅ１）当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された２以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定する決定部と、（ｅ２）決定部により決定された宛先のノードにデータを送信する送信部とを有する。
【０１２１】
このようにすれば、１つのネットワークスイッチから送出されるデータが特定の通信経路に集まるのを抑制できるので、集合通信において通信経路の競合を回避できるようになる。
【０１２２】
また、上で述べた第１の複数のネットワークスイッチの各々は、（ｃ３）当該ネットワークスイッチに接続されたノードから受信したデータの宛先のノードが、当該ネットワークスイッチに接続されている場合、受信したデータの宛先のノードに、受信したデータを送信し、（ｃ４）当該ネットワークスイッチに接続されたノードから受信したデータの宛先のノードが、当該ネットワークスイッチに接続されていない場合、第２の複数のネットワークスイッチのうち、当該ネットワークスイッチと受信したデータの宛先のノードに接続されたネットワークスイッチとを接続するネットワークスイッチに、受信したデータを送信してもよい。このようにすれば、ノードが送信したデータが適切に転送されるようになる。
【０１２３】
また、（ｅ３）複数のノードは全対全通信を実行してもよい。全対全通信において通信経路の競合を回避できるようになる。
【０１２４】
また、（ｃ５）第１の複数のネットワークスイッチの各々に接続されるノードの数は所定数ｄであり、（ｅ４）複数のノードの数がｄ3であり、（ｃ６）第１の複数のネットワークスイッチの数はｄ2であり、（ｄ１）第２の複数のネットワークスイッチの数は、ｄ／２（ｄ−１）とｄ／２の少数点以下を切り上げた値との和であってもよい。このようにすれば、ネットワークスイッチを有効に利用しつつ通信経路の競合を回避できるようになる。
【０１２５】
また、（ｅ５）複数のノードは複数のグループのいずれかに属し、ノードが属するグループの番号をｇとし、ノードのノード番号をｓとし、時点を表す数字をｉとし、所定のオフセット値をｏとし、剰余を求める演算子を％とすると、決定部は、（ｅ１２）（（ｓ％ｄ）＊ｄ＋（ｉ＋ｏ）％ｄ＋（ｉ／ｄ）＊ｄ）％ｄ2＋ｇを算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定してもよい。
【０１２６】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１２７】
（付記１）
各々他のネットワークスイッチのいずれとも直接接続された複数のネットワークスイッチと、
各々前記複数のネットワークスイッチのいずれかに接続された複数のノードと、
を有し、
前記複数のネットワークスイッチの各々には２以上のノードが接続され、
前記複数のノードの各々は、
当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された２以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定する決定部と、
前記決定部により決定された宛先のノードにデータを送信する送信部と、
を有する並列計算機システム。
【０１２８】
（付記２）
前記複数のノードは全対全通信を実行する
付記１記載の並列計算機システム。
【０１２９】
（付記３）
前記複数のネットワークスイッチの各々に接続されるノードの数は所定数ｄであり、
前記複数のネットワークスイッチの数は前記所定数ｄであり、
前記複数のノードの数はｄ2である
付記１又は２記載の並列計算機システム。
【０１３０】
（付記４）
前記ノードのノード番号をｓとし、
時点を表す数字をｉとし、
所定のオフセット値をｏとし、
剰余を求める演算子を％とすると、
前記決定部は、
（（ｄ＊ｏ＋（ｓ＋（ｏ＋ｉ／ｄ＋ｉ）％ｄ）％ｄ）＋ｄ＊（ｉ／ｄ））％ｄ2を算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定する
付記３記載の並列計算機システム。
【０１３１】
（付記５）
前記ノードのノード番号をｓとし、
時点を表す数字をｉとし、
所定のオフセット値をｏとし、
剰余を求める演算子を％とすると、
前記決定部は、
（（ｓ％ｄ）＊ｄ＋（ｉ＋ｏ）％ｄ＋（ｉ／ｄ）＊ｄ）％ｄ2を算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定する
付記３記載の並列計算機システム。
【０１３２】
（付記６）
前記複数のネットワークスイッチの各々に接続されるノードの数をｄとし、
前記ノードのノード番号をｓとし、
時点を表す数字をｉとし、
剰余を求める演算子を％とすると、
前記決定部は、
ｉが０≦ｉ≦ｄ＊ｄ−１を満たす場合、
（（ｓ／ｄ＋(ｓ％ｄ＋ｉ／ｄ）％ｄ＋１）％（ｄ＋１））＊ｄ＋（ｓ％ｄ＋ｉ）％ｄを算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定し、
ｉがｄ＊ｄ≦ｉ≦ｄ＊（ｄ＋１）−１を満たす場合、
（ｓ／ｄ＊ｄ）＋（ｓ％ｄ＋ｉ）％ｄを算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定する
付記１又は２記載の並列計算機システム。
【０１３３】
（付記７）
第１の複数のネットワークスイッチと、
各々前記第１の複数のネットワークスイッチのうち少なくとも２以上のネットワークスイッチに接続された第２の複数のネットワークスイッチと、
各々前記第１の複数のネットワークスイッチのいずれかに接続された複数のノードと、
を有し、
前記第１の複数のネットワークスイッチの各々には２以上のノードが接続され、
前記第１の複数のネットワークスイッチのうち任意の２つのネットワークスイッチは、前記第２の複数のネットワークスイッチのいずれかを介して接続され、
前記第１の複数のノードの各々は、
当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された２以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定する決定部と、
前記決定部により決定された宛先のノードにデータを送信する送信部と、
を有する並列計算機システム。
【０１３４】
（付記８）
前記第１の複数のネットワークスイッチの各々は、
当該ネットワークスイッチに接続されたノードから受信したデータの宛先のノードが、当該ネットワークスイッチに接続されている場合、前記受信したデータの宛先のノードに、前記受信したデータを送信し、
当該ネットワークスイッチに接続されたノードから受信したデータの宛先のノードが、当該ネットワークスイッチに接続されていない場合、前記第２の複数のネットワークスイッチのうち、当該ネットワークスイッチと前記受信したデータの宛先のノードに接続されたネットワークスイッチとを接続するネットワークスイッチに、前記受信したデータを送信する、
付記７記載の並列計算機システム。
【０１３５】
（付記９）
前記複数のノードは全対全通信を実行する
付記７又は８記載の並列計算機システム。
【０１３６】
（付記１０）
前記第１の複数のネットワークスイッチの各々に接続されるノードの数は所定数ｄであり、
前記複数のノードの数がｄ3であり、
前記第１の複数のネットワークスイッチの数はｄ2であり、
前記第２の複数のネットワークスイッチの数は、ｄ（ｄ−１）／２とｄ／２の少数点以下を切り上げた値との和である
付記７乃至９のいずれか１つ記載の並列計算機システム。
【０１３７】
（付記１１）
前記複数のノードは複数のグループのいずれかに属し、
前記ノードが属するグループの番号をｇとし、
前記ノードのノード番号をｓとし、
時点を表す数字をｉとし、
所定のオフセット値をｏとし、
剰余を求める演算子を％とすると、
前記決定部は、
（（ｓ％ｄ）＊ｄ＋（ｉ＋ｏ）％ｄ＋（ｉ／ｄ）＊ｄ）％ｄ2＋ｇを算出し、算出された値がノード番号であるノードを時点ｉにおける宛先に決定する
付記１０記載の並列計算機システム。
【０１３８】
（付記１２）
複数のネットワークスイッチと複数のノードとを含む並列計算機システムの制御方法において、
前記複数のノードの各々は、前記複数のネットワークスイッチのいずれかに接続され、
前記複数のネットワークスイッチの各々には２以上のノードが接続され、
前記複数のネットワークスイッチの各々は、他のネットワークスイッチのいずれとも直接接続され、
前記複数のノードの各々は、
当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された２以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定し、
決定された前記宛先のノードにデータを送信する
並列計算機システムの制御方法。
【０１３９】
（付記１３）
情報処理装置であって、
前記情報処理装置が送信するデータの宛先の情報処理装置に接続されたネットワークスイッチと、前記情報処理装置が接続されたネットワークスイッチに接続された２以上の情報処理装置のうち、当該情報処理装置以外の情報処理装置が送信するデータの宛先の情報処理装置に接続されたネットワークスイッチとが異なるように、前記情報処理装置が各時点において送信するデータの宛先の情報処理装置を決定する決定部と、
前記決定部により決定された宛先の情報処理装置にデータを送信する送信部と、
を有する情報処理装置。
【０１４０】
（付記１４）
第１の複数のネットワークスイッチと、第２の複数のネットワークスイッチと、複数のノードとを含む並列計算機システムの制御方法において、
前記複数のノードの各々は、前記第１の複数のネットワークスイッチのいずれかに接続され、
前記第２の複数のネットワークスイッチの各々は、前記第１の複数のネットワークスイッチのうち少なくとも２以上のネットワークスイッチに接続され、
前記第１の複数のネットワークスイッチの各々には２以上のノードが接続され、
前記第１の複数のネットワークスイッチのうち任意の２つのネットワークスイッチは、前記第２の複数のネットワークスイッチのいずれかを介して接続され、
前記第１の複数のノードの各々は、
当該ノードが送信するデータの宛先のノードに接続されたネットワークスイッチと、当該ノードが接続されたネットワークスイッチに接続された２以上のノードのうち、当該ノード以外のノードが送信するデータの宛先のノードに接続されたネットワークスイッチとが異なるように、当該ノードが各時点において送信するデータの宛先のノードを決定し、
決定された前記宛先のノードにデータを送信する、
並列計算機システムの制御方法。
【符号の説明】
【０１４１】
０  ノード    １０１  データ格納部
１０２  決定部    １０３  通信部
【図１】
2015232874.tif 000003
【図２】
2015232874.tif 000004
【図３】
2015232874.tif 000005
【図４】
2015232874.tif 000006
【図５】
2015232874.tif 000007
【図６】
2015232874.tif 000008
【図７】
2015232874.tif 000009
【図８】
2015232874.tif 000010
【図９】
2015232874.tif 000011
【図１０】
2015232874.tif 000012
【図１１】
2015232874.tif 000013
【図１２】
2015232874.tif 000014
【図１３】
2015232874.tif 000015
【図１４】
2015232874.tif 000016
【図１５】
2015232874.tif 000017
【図１６】
2015232874.tif 000018
【図１７】
2015232874.tif 000019
【図１８】
2015232874.tif 000020
【図１９】
2015232874.tif 000021
【図２０】
2015232874.tif 000022
【図２１】
2015232874.tif 000023
【図２２】
2015232874.tif 000024
【図２３】
2015232874.tif 000025
【図２４】
2015232874.tif 000026
【図２５】
2015232874.tif 000027
【図２６】
2015232874.tif 000028
【図２７】
2015232874.tif 000029
【図２８】
2015232874.tif 000030
【図２９】
2015232874.tif 000031
【図３０】
2015232874.tif 000032
【図３１】
2015232874.tif 000033
【図３２】
2015232874.tif 000034
【図３３】
2015232874.tif 000035
【図３４】
2015232874.tif 000036
【図３５】
2015232874.tif 000037
【図３６】
2015232874.tif 000038
【図３７】
2015232874.tif 000039
【図３８】
2015232874.tif 000040
【図３９】
2015232874.tif 000041
【図４０】
2015232874.tif 000042
【図４１】
2015232874.tif 000043
【図４２】
2015232874.tif 000044
【図４３】
2015232874.tif 000045