(57)【特許請求の範囲】
【請求項１】
ラテン方陣ファットツリーネットワークにおける複数のスイッチ層のシフト数の複数の組み合わせの中から、条件を満たす組み合わせを除外する除外部と、
前記複数の組み合わせのうち前記除外部により除外された組み合わせ以外の複数の組み合わせに対応する複数の通信経路で通信を実行するための中継設定を、複数のスイッチの各々について生成する生成部と、
前記複数のスイッチの各々に、前記生成部により生成された前記中継設定を送信する送信部と、
を有する情報処理装置。
【請求項２】
前記条件は、スパインスイッチが属するスイッチ層のシフト数が０であり、且つ、宛先ノードに接続されたリーフスイッチが属するスイッチ層のシフト数が０より大きい整数であるという条件である、
請求項１記載の情報処理装置。
【請求項３】
前記生成部は、
前記複数の組み合わせのうち前記除外部により除外された組み合わせ以外の複数の組み合わせの各々について、当該組み合わせに対応する通信経路上のスイッチの出力先のポートの番号を当該スイッチが属するスイッチ層のシフト数に基づき決定することで、前記複数のスイッチの各々について前記中継設定を生成する、
請求項１又は２記載の情報処理装置。
【請求項４】
前記複数のスイッチ層の数は３であり、
前記複数のスイッチに接続されるノードの数及び前記複数の通信経路の数は２（ｎ＋１）（ｎ2＋ｎ＋１）であり、ここでｎは前記複数のスイッチの各々のポートの数を２で割った値から１を引いた値である、
請求項１乃至３のいずれか１つ記載の情報処理装置。
【請求項５】
前記複数のスイッチ層の数は２であり、
前記複数のスイッチに接続されるノードの数及び前記複数の通信経路の数は（ｎ＋１）（ｎ2＋ｎ＋１）であり、ここでｎは前記複数のスイッチの各々のポートの数から１を引いた値である、
請求項１乃至３のいずれか１つ記載の情報処理装置。
【請求項６】
コンピュータが、
ラテン方陣ファットツリーネットワークにおける複数のスイッチ層のシフト数の複数の組み合わせの中から、条件を満たす組み合わせを除外し、
前記複数の組み合わせのうち除外された組み合わせ以外の複数の組み合わせに対応する複数の通信経路で通信を実行するための中継設定を、複数のスイッチの各々について生成し、
前記複数のスイッチの各々に、生成された前記中継設定を送信する、
処理を実行する通信管理方法。
【請求項７】
コンピュータに、
ラテン方陣ファットツリーネットワークにおける複数のスイッチ層のシフト数の複数の組み合わせの中から、条件を満たす組み合わせを除外し、
前記複数の組み合わせのうち除外された組み合わせ以外の複数の組み合わせに対応する複数の通信経路で通信を実行するための中継設定を、複数のスイッチの各々について生成し、
前記複数のスイッチの各々に、生成された前記中継設定を送信する、
処理を実行させる通信管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集団通信技術に関する。
【背景技術】
【０００２】
集団通信を実行する複数のノード（例えば物理サーバ）を接続するネットワークとして、ラテン方陣ファットツリーネットワークが知られている。ラテン方陣ファットツリーネットワークは、通常のファットツリーネットワークよりも多くのノードを接続することができる。
【０００３】
図１に、ラテン方陣ファットツリーネットワークの一例を示す。図１の例においては、丸の図形はノードを表し、ハッチングされた四角の図形はスパインスイッチを表し、ハッチングされていない四角の図形はリーフスイッチを表す。各スイッチのポート数は６であり、ポート数を２で割った数から１を引いた数ｎは２である。この数は有限射影平面の位数に相当する。リーフスイッチに接続されるノードの数は２１である。
【０００４】
図２に、図１のスイッチと同じスイッチを使用した通常のファットツリーネットワークを示す。図２の例においては、リーフスイッチに接続されるノードの数は９であり、図１の例より少ない。
【０００５】
図３に、ラテン方陣ファットツリーネットワークの他の例を示す。図３の例においては、各スイッチのポート数は８であり、ｎは３である。リーフスイッチに接続されるノードの数は５２である。
【０００６】
図４に、図３のスイッチと同じスイッチを使用した通常のファットツリーネットワークを示す。図４の例においては、リーフスイッチに接続されるノードの数は１６であり、図３の例より少ない。
【０００７】
通常のファットツリーネットワークにおいて全ノードが参加する全対全通信（全対全通信は集団通信の一種である）を実行する技術は知られている。しかしながら、ラテン方陣ファットツリーネットワークにおいて全ノードが参加する全対全通信を実行する技術は知られていない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１４−１６４７５６号公報
【特許文献２】特開２０１３−２５５０５号公報
【非特許文献】
【０００９】
【非特許文献１】M. Valerio, L. E. Moser and P. M. Melliar-Smith, "Recursively Scalable Fat-Trees as Interconnection Networks", IEEE 13th Annual International Phoenix Conference on Computers and Communications, 1994
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明の目的は、１つの側面では、ラテン方陣ファットツリーネットワークにおいて全ノードが参加する全対全通信を実行するための技術を提供することである。
【課題を解決するための手段】
【００１１】
本発明に係る情報処理装置は、ラテン方陣ファットツリーネットワークにおける複数のスイッチ層のシフト数の複数の組み合わせの中から、条件を満たす組み合わせを除外する除外部と、複数の組み合わせのうち除外部により除外された組み合わせ以外の複数の組み合わせに対応する複数の通信経路で通信を実行するための中継設定を、複数のスイッチの各々について生成する生成部と、複数のスイッチの各々に、生成部により生成された中継設定を送信する送信部とを有する。
【発明の効果】
【００１２】
１つの側面では、ラテン方陣ファットツリーネットワークにおいて全ノードが参加する全対全通信を実行できるようになる。
【図面の簡単な説明】
【００１３】
【図１】図１は、ラテン方陣ファットツリーネットワークの一例を示す図である。
【図２】図２は、ファットツリーネットワークの一例を示す図である。
【図３】図３は、ラテン方陣ファットツリーネットワークの一例を示す図である。
【図４】図４は、ファットツリーネットワークの一例を示す図である。
【図５】図５は、ファットツリーネットワークにおける全対全通信について説明するための図である。
【図６】図６は、ファットツリーネットワークにおける全対全通信について説明するための図である。
【図７】図７は、通信の競合について説明するための図である。
【図８】図８は、シフト数について説明するための図である。
【図９】図９は、ラテン方陣ファットツリーネットワークにおける各スイッチ層のシフト数を示す図である。
【図１０】図１０は、ラテン方陣ファットツリーネットワークにおけるパケット転送について説明するための図である。
【図１１】図１１は、ラテン方陣ファットツリーネットワークにおけるパケット転送について説明するための図である。
【図１２】図１２は、ノードのハードウエア構成図である。
【図１３】図１３は、ノードの機能ブロック図である。
【図１４】図１４は、スイッチの機能ブロック図である。
【図１５】図１５は、ノードが実行する処理の処理フローを示す図である。
【図１６】図１６は、生成処理の処理フローを示す図である。
【図１７】図１７は、生成処理の処理フローを示す図である。
【図１８Ａ】図１８Ａは、通信表の一例を示す図である。
【図１８Ｂ】図１８Ｂは、通信の一例を示す図である。
【図１９】図１９は、スイッチが実行する処理の処理フローを示す図である。
【図２０】図２０は、スイッチが実行する処理の処理フローを示す図である。
【図２１】図２１は、競合が発生しないことを説明するための図である。
【図２２】図２２は、競合が発生しないことを説明するための図である。
【図２３】図２３は、管理装置を設けた場合のシステムの一例を示す図である。
【図２４】図２４は、スイッチのハードウエア構成図である。
【発明を実施するための形態】
【００１４】
全対全通信とは、各ノードが全ノードに対してデータを送信する通信であり、ノードの台数と同じ数のフェーズで行われる。例えば図５に示すようなファットツリーネットワークにおいて全対全通信を実行することを考える。図５においては、ノード０乃至２がリーフスイッチ１ｌに接続され、ノード３乃至５がリーフスイッチ２ｌに接続され、ノード６乃至８がリーフスイッチ３ｌに接続される。リーフスイッチ１ｌ乃至３ｌの各々は、スパインスイッチ１ｓ乃至３ｓに接続される。
【００１５】
図５に示したようなファットツリーネットワークにおいては、図６に示すシフト通信パターンに従って全対全通信を実行すれば通信の競合を回避できる。図６においては、送信元のノード番号とフェーズ番号との組み合わせに対応する宛先のノード番号が示されている。ノードｋはｉ番目のフェーズにおいてノード（ｋ＋ｉ）％Ｎにパケットを送信する。ここで、Ｎはノード数であり、％は剰余を求める演算子である。図６におけるハッチングされたブロックは、図５における太線で示された通信に対応する。
【００１６】
図６に示したように、いずれの行及び列においても０から８までの数字がもれなく現れている。ファットツリーネットワークにおいては、リーフスイッチ単位でネットワークを切り出した場合に競合することなく通信を行うことが可能である。
【００１７】
但し、ラテン方陣ファットツリーネットワークに対しては、図６に示したようなシフト通信パターンを適用することはできない。例えば図７に示すように、或るフェーズにおいてノード０乃至２がノード３乃至５にパケットを送信することを考える。この場合、ノード０乃至２の直上のリーフスイッチとノード３乃至５の直上のリーフスイッチとの間においてスパインスイッチを経由する通信経路は１つしかないので、ノード０乃至２の直上のリーフスイッチからノード０乃至２の直上のスパインスイッチまでの通信経路及びノード０乃至２の直上のスパインスイッチからノード３乃至５の直上のリーフスイッチまでの通信経路において競合が発生する。競合は、通信遅延、ひいては並列計算機の処理性能の低下等をもたらす。
【００１８】
なお、シフト通信パターンのシフト数を階層ごとに定めて通信を行うことも考えられる。図８を用いて、シフト数について説明する。図８（ａ）はシフト数が０である場合におけるパケットの転送を示しており、図８（ｂ）はシフト数が１である場合におけるパケットの転送を示しており、図８（ｃ）はシフト数が２である場合におけるパケットの転送を示している。矢印はリンクを表し、矢印に付された数字はポート番号を表す。例えばポート番号ｉから受信したパケットはポート番号（ｉ＋ｓ）％Ｍ（ここで、ｓはシフト数であり、Ｍはポート数）のポートに出力される。従って、シフト数が０である場合、受信ポート０から受信したパケットは送信ポート０に出力され、受信ポート１から受信したパケットは送信ポート１に出力され、受信ポート２から受信したパケットは送信ポート２に出力される。シフト数が１である場合、受信ポート０から受信したパケットは送信ポート１に出力され、受信ポート１から受信したパケットは送信ポート２に出力され、受信ポート２から受信したパケットは送信ポート０に出力される。シフト数が２である場合、受信ポート０から受信したパケットは送信ポート２に出力され、受信ポート１から受信したパケットは送信ポート０に出力され、受信ポート２から受信したパケットは送信ポート１に出力される。
【００１９】
例として、図９に示すようなラテン方陣ファットツリーネットワークにおける各スイッチ層（図９における第２乃至第４層）のシフト数を変えることを考える。スイッチにつながるリンクに付された番号はリンクが接続されたポートの番号を表す。ここでは、第２層のシフト数を２とし、第３層のシフト数を０とし、第４層のシフト数を１とする。
【００２０】
そして、例えば図１０に示すように、第１層に属するノードから第５層に属するノードまでパケットを転送することを考える。図１０の例では、ノード２が送信したパケットがノード２３まで転送され、ノード１４が送信したパケットがノード３２まで転送される。図１０において、太線のリンクはノード２からノード２３までの通信経路を表し、破線のリンクはノード１４からノード３２までの通信経路を表す。
【００２１】
ノード１４からノード３２までの通信経路は１つしか存在しない。しかしながら、ノード２からノード２３までの通信経路は、図１１に示すように３つ存在する。これは、ノード２に接続されたリーフスイッチとノード２３に接続されたリーフスイッチとの間の通信経路が３つ存在するからである。
【００２２】
このように、シフト通信パターンのシフト数を階層ごとに定めて通信を行う場合、送信元ノードと宛先ノードとの位置関係によっては、送信元ノードから宛先ノードまで複数の通信経路が存在し、無駄な通信が行われてしまうことがある。そこで本実施の形態においては、ラテン方陣ファットツリーネットワークにおいて、無駄な通信を発生させることなく全ノードが参加する全対全通信を実行する方法について説明する。
【００２３】
本実施の形態におけるシステムは、例えば図９に示すようなラテン方陣ファットツリーネットワークのシステムであるとする。なお、ポート番号は以下のようなルールに従って付与されているとする。
【００２４】
（１）各スイッチの下位リンク及び上位リンクにポート番号０，１，２，・・・が付与される。
（２）第３層については、上位リンクのポート番号と下位リンクのポート番号とが対応する。
（３）第２層及び第４層の上位リンク及び下位リンクについては、ポート番号が対応していなくてもよい。
【００２５】
図１２に、本実施の形態におけるノードのハードウエア構成図を示す。ノードは、ＣＰＵ（Central Processing Unit）１５１と、メモリ１５２と、ＮＩＣ（Network Interface Card）１５３と、バス１５４とを有する。ＣＰＵ１５１、メモリ１５２及びＮＩＣ１５３はバス１５４によって接続される。ＮＩＣ１５３は、例えばインフィニバンドによって他のノードと接続され、他のノードとの通信を行う。
【００２６】
図１３に、本実施の形態におけるノードの機能ブロック図を示す。ノードは、処理部１１０と、ＭＰＩ（Message Passing Interface）１００と、ネットワーク制御部１２０とを含む。ＭＰＩ１００は、トポロジデータ格納部１０１と、通信表格納部１０２と、収集部１０３と、生成部１０４と、除外部１０５とを含む。処理部１１０は、アプリケーションプログラムがメモリ１５２にロードされ、ＣＰＵ１５１によって実行されることによって実現される。ＭＰＩ１００は、ＭＰＩライブラリがメモリ１５２にロードされ且つＣＰＵ１５１によって実行されることによって実現される。ネットワーク制御部１２０は、ネットワークドライバがメモリ１５２にロードされ且つＣＰＵ１５１によって実行されることによって実現される。
【００２７】
処理部１１０は、他のノードにおける処理部１１０との通信をＭＰＩ１００を介して行いつつ処理を進行させる。ネットワーク制御部１２０は、ＮＩＣ１５３を制御する処理等を実行する。収集部１０３は、ラテン方陣ファットツリーネットワークのトポロジのデータ（例えば、スイッチの接続関係についてのデータおよびスイッチとノードとの接続関係についてのデータ等）を収集し、トポロジデータ格納部１０１に格納する。生成部１０４は、トポロジデータ格納部１０１に格納されたデータに基づき、スイッチがパケットの中継に使用する中継設定である通信表を生成し、通信表格納部１０２に格納する。除外部１０５は、生成部１０４からの呼び出しに応じて、条件を満たす組み合わせを除外する処理を実行する。
【００２８】
図１４に、本実施の形態におけるスイッチの機能ブロック図を示す。スイッチは、中継処理部３０１と、通信表格納部３０２とを有する。中継処理部３０１は、通信表格納部３０２に格納された通信表に従ってパケットを中継する処理を実行する。
【００２９】
次に、図１５乃至図２２を用いて、本実施の形態のラテン方陣ファットツリーネットワークにおいて実行される処理について説明する。はじめに、図１５乃至図１７を用いて、ラテン方陣ファットツリーネットワークにおけるいずれかのノードが実行する処理について説明する。ここでは、本処理を実行するノードのことをノードＮＤと呼ぶ。
【００３０】
ノードＮＤにおける収集部１０３は、所定のコマンド（例えばibnetdiscover）の実行によって、ラテン方陣ファットツリーネットワークのトポロジについてのデータを収集し（図１５：ステップＳ１）、収集したデータをトポロジデータ格納部１０１に格納する。
【００３１】
ノードＮＤにおける生成部１０４は、トポロジデータ格納部１０１に格納されたデータを用いて、生成処理を実行する（ステップＳ３）。生成処理については、図１６及び図１７を用いて説明する。なお、通信表格納部１０２には、初期的に、空の状態の通信表が各スイッチについて格納されているとする。
【００３２】
まず、生成部１０４は、第２層のシフト数であるａをａ＝０として設定し（図１６：ステップＳ１１）、第３層のシフト数であるｂをｂ＝０として設定し（ステップＳ１３）、第４層のシフト数であるｃをｃ＝０として設定する（ステップＳ１５）。ａ、ｂ、ｃは０≦ａ，ｂ，ｃ≦ｎを満たす整数である。ｎは、スイッチのポート数（図９の例では６）を２で割った値から１を引いた数（図９の例では２）である。
【００３３】
生成部１０４は、組み合わせ（ａ，ｂ，ｃ）をメモリ１５２に登録し（ステップＳ１７）、ｃを１インクリメントする（ステップＳ１９）。
【００３４】
生成部１０４は、ｃ＞ｎが成立するか判定する（ステップＳ２１）。ｃ＞ｎが成立しない場合（ステップＳ２１：Ｎｏルート）、ステップＳ１７の処理に戻る。一方、ｃ＞ｎが成立する場合（ステップＳ２１：Ｙｅｓルート）、生成部１０４は、ｂを１インクリメントする（ステップＳ２３）。
【００３５】
生成部１０４は、ｂ＞ｎが成立するか判定する（ステップＳ２５）。ｂ＞ｎが成立しない場合（ステップＳ２５：Ｎｏルート）、ステップＳ１５の処理に戻る。一方、ｂ＞ｎが成立する場合（ステップＳ２５：Ｙｅｓルート）、生成部１０４は、ａを１インクリメントする（ステップＳ２７）。
【００３６】
生成部１０４は、ａ＞ｎが成立するか判定する（ステップＳ２９）。ａ＞ｎが成立しない場合（ステップＳ２９：Ｎｏルート）、ステップＳ１３の処理に戻る。一方、ａ＞ｎが成立する場合（ステップＳ２９：Ｙｅｓルート）、生成部１０４は、処理は端子Ａを介して図１７のステップＳ３１の処理に移行する。
【００３７】
図１７の説明に移行し、生成部１０４は、除外部１０５を呼び出す。そして、除外部１０５は、ステップＳ１７において登録した組み合わせ（ａ，ｂ，ｃ）のうち、ｂ＝０であり且つｃ≠０であるという条件を満たす組み合わせ（ａ，ｂ，ｃ）を、メモリ１５２から削除する（図１７：ステップＳ３１）。
【００３８】
ステップＳ３１の処理まで終了すると、メモリ１５２には以下のような組み合わせ（ａ，ｂ，ｃ）が登録されることになる。
【００３９】
【数１】
0006665607.tif 000002
【００４０】
【数２】
0006665607.tif 000003
【００４１】
例えばｎ＝２である場合、メモリ１５２に登録される組み合わせは（０，０，０）、（０，１，０）、（０，１，１）、（０，１，２）、（０，２，０）、（０，２，１）、（０，２，２）、（１，０，０）、（１，１，０）、（１，１，１）、（１，１，２）、（１，２，０）、（１，２，１）、（１，２，２）、（２，０，０）、（２，１，０）、（２，１，１）、（２，１，２）、（２，２，０）、（２，２，１）及び（２，２，２）である。組み合わせの数はｎ（ｎ＋１）2＋（ｎ＋１）＝（ｎ＋１）（ｎ（ｎ＋１）＋１）＝（ｎ＋１）（ｎ2＋ｎ＋１）＝２１である。この数は図９におけるノードの数の半分に等しい。一方、ステップＳ３１において削除される組み合わせは（０，０，１）、（０，０，２）、（１，０，１）、（１，０，２）、（２，０，１）及び（２，０，２）である。
【００４２】
生成部１０４は、メモリ１５２に登録されている組み合わせ（ａ，ｂ，ｃ）のうち未処理の組み合わせ（ａ，ｂ，ｃ）を１つ特定する（ステップＳ３３）。
【００４３】
生成部１０４は、ステップＳ３３において特定した組み合わせ（ａ，ｂ，ｃ）に対応する通信経路を特定する（ステップＳ３５）。ステップＳ３５においては、トポロジデータ格納部１０１に格納されているデータに基づき、通信経路上における、送信元ノード、送信元ノードに接続されたリーフスイッチ、スパインスイッチ、宛先ノードに接続されたリーフスイッチ及び宛先ノードが特定される。
【００４４】
生成部１０４は、ステップＳ３５において特定した通信経路上のリーフスイッチ及びスパインスイッチの通信表に、その通信経路を実現するためのポートのポート番号を登録する（ステップＳ３７）。例えば、通信経路上のスパインスイッチがポート番号「Ｘ」から通信経路上のリーフスイッチにパケットを送信する場合、送信元ノードの番号及び宛先ノードの番号の組み合わせに対応付けてポート番号「Ｘ」が登録される。
【００４５】
生成部１０４は、メモリ１５２に登録されている組み合わせ（ａ，ｂ，ｃ）のうち未処理の組み合わせ（ａ，ｂ，ｃ）が有るか判定する（ステップＳ３９）。未処理の組み合わせが有る場合（ステップＳ３９：Ｙｅｓルート）、ステップＳ３３の処理に戻る。一方、未処理の組み合わせが無い場合（ステップＳ３９：Ｎｏルート）、呼び出し元の処理に戻る。
【００４６】
図１８Ａに、生成処理によって生成される通信表の一例を示す。図１８Ａの例では、図１８Ｂに示すようなネットワークにおけるノード０乃至１に接続されたリーフスイッチについて生成される通信表の一例が示されている。このリーフスイッチが中継に関与しない部分については、「−」が登録されている。図１８Ａにおいてハッチングされた部分に対応する通信は、図１８Ｂにおける太線で示された通信に対応する。なお、図１８Ｂのネットワークはラテン方陣ファットツリーネットワークではないが、本実施の形態の処理は、ラテン方陣ファットツリーだけではなく通常のファットツリーネットワークにも適用可能である。
【００４７】
図１５の説明に戻り、ノードＮＤにおけるネットワーク制御部１２０は、ラテン方陣ファットツリーネットワークにおける各スイッチについて生成した通信表を通信表格納部１０２から読み出す。そして、ネットワーク制御部１２０は、各スイッチに対して、当該スイッチに適用される通信表を送信する（ステップＳ５）。そして処理は終了する。
【００４８】
以上のような処理を実行すれば、各スイッチは自スイッチに適用すべき通信表を取得することができるようになる。
【００４９】
次に、図１９及び図２０を用いて、ラテン方陣ファットツリーネットワークにおける各スイッチが実行する処理について説明する。ここでは、本処理を実行するスイッチのことをスイッチＳＷと呼ぶ。
【００５０】
まず、スイッチＳＷにおける中継処理部３０１は、スイッチＳＷに適用すべき通信表を、当該通信表を生成したノードから受信する（図１９：ステップＳ４１）。
【００５１】
中継処理部３０１は、ステップＳ４１において受信した通信表を、通信表格納部３０２に格納する（ステップＳ４３）。そして処理は終了する。
【００５２】
スイッチＳＷがパケットを受信した場合には、以下のような処理が実行される。
【００５３】
スイッチＳＷにおける中継処理部３０１は、ノード又は他のスイッチからパケットを受信する（図２０：ステップＳ５１）。
【００５４】
中継処理部３０１は、パケットの宛先を示す情報（本実施の形態においてはノード番号）及び送信元を示す情報（本実施の形態においてはノード番号）をパケットから特定する。そして、中継処理部３０１は、パケットの宛先及び送信元の組み合わせに対応するポート番号を、通信表格納部３０２に格納されている通信表から特定する（ステップＳ５３）。例えば、通信表格納部３０２には図１８Ａに示した通信表が格納される。
【００５５】
中継処理部３０１は、ステップＳ５３において特定したポート番号を有するポートから、ステップＳ５１において受信したパケットを送信する（ステップＳ５５）。そして処理は終了する。
【００５６】
以上のような処理を実行すれば、無駄な通信を発生させることがない中継設定に従って各スイッチが中継を行うことができるようになる。これにより、ラテン方陣ファットツリーネットワークにおいて、無駄な通信を発生させることなく、全ノードが参加する全対全通信を実行することができるようになる。
【００５７】
次に、図２１及び図２２を用いて、競合を発生させることなく全対全通信が実行されることを証明する。
【００５８】
まず、図２１に示すような位置にあるノードＮＳからノードＮＥに対してパケットを送信するときの通信経路を考える。図２１の例においては、ノードＮＳの直上のリーフスイッチと、ノードＮＥの直上のリーフスイッチとが、スパインスイッチの層を軸とした場合における線対称の位置には無い。このような場合、両ノード間の通信経路はただひとつ存在するため、この通信経路に対応する組み合わせ（ａ，ｂ，ｃ）もただひとつだけ定まる。ノードＮＳの直上のリーフスイッチと、ノードＮＥの直下のリーフスイッチとが、スパインスイッチの層を軸とした場合における線対称の位置には無いことから、特にｂ≠０として組み合わせ（ａ，ｂ，ｃ）が決まる。
【００５９】
一方で、図２２に示すような位置にあるノードＮＳからノードＮＥに対してパケットを送信するときの通信経路を考える。図２２の例においては、ノードＮＳの直上のリーフスイッチと、ノードＮＥの直上のリーフスイッチとが、スパインスイッチの層を軸とした場合における線対称の位置にある。この場合、ノードＮＳとノードＮＥとの間の通信経路は３つ存在するが、ｃ＝０という制限があるため、実際に使用される通信経路はただひとつ（図２２における太線の通信経路）である。この通信経路に対応するａの値もただひとつ定まるため、組み合わせ（ａ，０，０）が決まる。なお、残りの２つの通信経路（図２２における破線の通信経路）は、ノードＮＳの直上のリーフスイッチの配下にある他のノードとノードＮＥの直上のリーフスイッチの配下にある他のノードとの間の通信において使用されることになる。
【００６０】
なお、スパインスイッチのポートの半分を使用する場合には、（ｎ＋１）（ｎ2＋ｎ＋１）台のノードで全対全通信を実行することが可能である。スパインスイッチの全ポートを使用する場合には、全対全通信を第１のフェーズ群と第２のフェーズ群とに分け、第１のフェーズ群においてはスパインスイッチで折り返して自ノードが属する層のノードにパケットを送信し、第２のフェーズ群においてはスパインスイッチで折り返さずに自ノードが属しない層のノードにパケットを送信する。これにより、２（ｎ＋１）（ｎ2＋ｎ＋１）台のノードで全対全通信を実行することが可能である。例えばポート数が３６（すなわち、ｎ＝１７）である場合、２＊（１７＋１）＊（１７2＋１７＋１）＝１１０５２台のノードで全対全通信を実行することができる。
【００６１】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明したノード及びスイッチの機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００６２】
また、上で説明したデータ構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００６３】
また、図１５乃至図１７を用いて説明された処理を、ラテン方陣ファットツリーネットワークにおける複数のノードのうちいずれかのノードに実行させるのではなく、図２３に示すように、別途設けられた管理装置５００に実行させてもよい。
【００６４】
また、生成処理において組み合わせ（ａ，ｂ，ｃ）を決定するのではなく、ラテン方陣ファットツリーネットワークの管理者から組み合わせ（ａ，ｂ，ｃ）の指定を受け付けるようにしてもよい。
【００６５】
なお、上で述べたスイッチは、コンピュータ装置であって、図２４に示すように、メモリ２６０１とＣＰＵ２６０３とハードディスク・ドライブ（ＨＤＤ）２６０５と表示装置２６０９に接続される表示制御部２６０７とリムーバブル・ディスク２６１１用のドライブ装置２６１３と入力装置２６１５とネットワークに接続するための通信部２６１７（図２４では、２６１７ａ乃至２６１７ｃ）とがバス２６１９で接続されている場合もある。なお、場合によっては、表示制御部２６０７、表示装置２６０９、ドライブ装置２６１３、入力装置２６１５は含まれない場合もある。オペレーティング・システム（ＯＳ：Operating System）及び本実施の形態における処理を実施するためのアプリケーションプログラムは、ＨＤＤ２６０５に格納されており、ＣＰＵ２６０３により実行される際にはＨＤＤ２６０５からメモリ２６０１に読み出される。必要に応じてＣＰＵ２６０３は、表示制御部２６０７、通信部２６１７、ドライブ装置２６１３を制御して、必要な動作を行わせる。なお、通信部２６１７のいずれかを介して入力されたデータは、他の通信部２６１７を介して出力される。ＣＰＵ２６０３は、通信部２６１７を制御して、適切に出力先を切り替える。また、処理途中のデータについては、メモリ２６０１に格納され、必要があればＨＤＤ２６０５に格納される。本発明の実施例では、上で述べた処理を実施するためのアプリケーションプログラムはコンピュータ読み取り可能なリムーバブル・ディスク２６１１に格納されて頒布され、ドライブ装置２６１３からＨＤＤ２６０５にインストールされる。インターネットなどのネットワーク及び通信部２６１７を経由して、ＨＤＤ２６０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２６０３、メモリ２６０１などのハードウエアとＯＳ及び必要なアプリケーションプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００６６】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００６７】
本実施の形態の第１の態様に係る情報処理装置は、（Ａ）ラテン方陣ファットツリーネットワークにおける複数のスイッチ層のシフト数の複数の組み合わせの中から、条件を満たす組み合わせを除外する除外部と、（Ｂ）複数の組み合わせのうち除外部により除外された組み合わせ以外の複数の組み合わせに対応する複数の通信経路で通信を実行するための中継設定を、複数のスイッチの各々について生成する生成部と、（Ｃ）複数のスイッチの各々に、生成部により生成された中継設定を送信する送信部とを有する。
【００６８】
このような処理を実行すれば、適切な通信経路でノード間の通信を行えるようになるので、ラテン方陣ファットツリーネットワークにおいて全ノードが参加する全対全通信を実行できるようになる。
【００６９】
また、上で述べた条件は、スパインスイッチが属するスイッチ層のシフト数が０であり、且つ、宛先ノードに接続されたリーフスイッチが属するスイッチ層のシフト数が０より大きい整数であるという条件であってもよい。重複する通信経路が除外されるようになる。
【００７０】
また、上で述べた生成部は、（ｂ１）複数の組み合わせのうち除外部により除外された組み合わせ以外の複数の組み合わせの各々について、当該組み合わせに対応する通信経路上のスイッチの出力先のポートの番号を当該スイッチが属するスイッチ層のシフト数に基づき決定することで、複数のスイッチの各々について中継設定を生成してもよい。各スイッチがパケットを適切に中継できるようになる。
【００７１】
また、複数のスイッチ層の数は３であってもよく、複数のスイッチに接続されるノードの数及び複数の通信経路の数は２（ｎ＋１）（ｎ2＋ｎ＋１）であり、ここでｎは複数のスイッチの各々のポートの数を２で割った値から１を引いた値であってもよい。より多くのノードが参加する全対全通信を実行できるようになる。
【００７２】
また、複数のスイッチ層の数は２であってもよく、複数のスイッチに接続されるノードの数及び複数の通信経路の数は（ｎ＋１）（ｎ2＋ｎ＋１）であり、ここでｎは複数のスイッチの各々のポートの数から１を引いた値であってもよい。スパインスイッチのポートの半分を使用して全対全通信を実行できるようになる。
【００７３】
また、複数のスイッチの各々は、パケットを受信したポートの番号にシフト数を足した番号を、当該スイッチのポート数で割った場合の剰余に相当する番号のポートに、受信したパケットを出力してもよい。
【００７４】
本実施の形態の第２の態様に係る通信管理方法は、（Ｄ）ラテン方陣ファットツリーネットワークにおける複数のスイッチ層のシフト数の複数の組み合わせの中から、条件を満たす組み合わせを除外し、（Ｅ）複数の組み合わせのうち除外された組み合わせ以外の複数の組み合わせに対応する複数の通信経路で通信を実行するための中継設定を、複数のスイッチの各々について生成し、（Ｆ）複数のスイッチの各々に、生成された中継設定を送信する処理を含む。
【００７５】
なお、上記方法による処理をコンピュータに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００７６】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００７７】
（付記１）
ラテン方陣ファットツリーネットワークにおける複数のスイッチ層のシフト数の複数の組み合わせの中から、条件を満たす組み合わせを除外する除外部と、
前記複数の組み合わせのうち前記除外部により除外された組み合わせ以外の複数の組み合わせに対応する複数の通信経路で通信を実行するための中継設定を、複数のスイッチの各々について生成する生成部と、
前記複数のスイッチの各々に、前記生成部により生成された前記中継設定を送信する送信部と、
を有する情報処理装置。
【００７８】
（付記２）
前記条件は、スパインスイッチが属するスイッチ層のシフト数が０であり、且つ、宛先ノードに接続されたリーフスイッチが属するスイッチ層のシフト数が０より大きい整数であるという条件である、
付記１記載の情報処理装置。
【００７９】
（付記３）
前記生成部は、
前記複数の組み合わせのうち前記除外部により除外された組み合わせ以外の複数の組み合わせの各々について、当該組み合わせに対応する通信経路上のスイッチの出力先のポートの番号を当該スイッチが属するスイッチ層のシフト数に基づき決定することで、前記複数のスイッチの各々について前記中継設定を生成する、
付記１又は２記載の情報処理装置。
【００８０】
（付記４）
前記複数のスイッチ層の数は３であり、
前記複数のスイッチに接続されるノードの数及び前記複数の通信経路の数は２（ｎ＋１）（ｎ2＋ｎ＋１）であり、ここでｎは前記複数のスイッチの各々のポートの数を２で割った値から１を引いた値である、
付記１乃至３のいずれか１つ記載の情報処理装置。
【００８１】
（付記５）
前記複数のスイッチ層の数は２であり、
前記複数のスイッチに接続されるノードの数及び前記複数の通信経路の数は（ｎ＋１）（ｎ2＋ｎ＋１）であり、ここでｎは前記複数のスイッチの各々のポートの数から１を引いた値である、
付記１乃至３のいずれか１つ記載の情報処理装置。
【００８２】
（付記６）
前記複数のスイッチの各々は、
パケットを受信したポートの番号に前記シフト数を足した番号を、当該スイッチのポート数で割った場合の剰余に相当する番号のポートに、受信した前記パケットを出力する、
付記１乃至５のいずれか１つ記載の情報処理装置。
【００８３】
（付記７）
コンピュータが、
ラテン方陣ファットツリーネットワークにおける複数のスイッチ層のシフト数の複数の組み合わせの中から、条件を満たす組み合わせを除外し、
前記複数の組み合わせのうち除外された組み合わせ以外の複数の組み合わせに対応する複数の通信経路で通信を実行するための中継設定を、複数のスイッチの各々について生成し、
前記複数のスイッチの各々に、生成された前記中継設定を送信する、
処理を実行する通信管理方法。
【００８４】
（付記８）
コンピュータに、
ラテン方陣ファットツリーネットワークにおける複数のスイッチ層のシフト数の複数の組み合わせの中から、条件を満たす組み合わせを除外し、
前記複数の組み合わせのうち除外された組み合わせ以外の複数の組み合わせに対応する複数の通信経路で通信を実行するための中継設定を、複数のスイッチの各々について生成し、
前記複数のスイッチの各々に、生成された前記中継設定を送信する、
処理を実行させる通信管理プログラム。
【符号の説明】
【００８５】
１５１  ＣＰＵ    １５２  メモリ
１５３  ＮＩＣ    １５４  バス
１００  ＭＰＩ    １０１  トポロジデータ格納部
１０２  通信表格納部    １０３  収集部
１０４  生成部    １０５  除外部
１１０  処理部    １２０  ネットワーク制御部
３０１  中継処理部    ３０２  通信表格納部
【図１】
0006665607.tif 000004
【図２】
0006665607.tif 000005
【図３】
0006665607.tif 000006
【図４】
0006665607.tif 000007
【図５】
0006665607.tif 000008
【図６】
0006665607.tif 000009
【図７】
0006665607.tif 000010
【図８】
0006665607.tif 000011
【図９】
0006665607.tif 000012
【図１０】
0006665607.tif 000013
【図１１】
0006665607.tif 000014
【図１２】
0006665607.tif 000015
【図１３】
0006665607.tif 000016
【図１４】
0006665607.tif 000017
【図１５】
0006665607.tif 000018
【図１６】
0006665607.tif 000019
【図１７】
0006665607.tif 000020
【図１８Ａ】
0006665607.tif 000021
【図１８Ｂ】
0006665607.tif 000022
【図１９】
0006665607.tif 000023
【図２０】
0006665607.tif 000024
【図２１】
0006665607.tif 000025
【図２２】
0006665607.tif 000026
【図２３】
0006665607.tif 000027
【図２４】
0006665607.tif 000028