[実施の形態1]
図1乃至図4は、オールリデュース通信について説明するための図である。図1においては、サーバn0が値「4」を持っており、サーバn1が値「8」を持っており、サーバn2が値「1」を持っており、サーバn3が値「5」を持っており、サーバn4が値「6」を持っており、サーバn5が値「3」を持っている。オールリデュースにおいて指定された演算が「加算」である場合、サーバn0乃至n5はそれぞれ値「27」を持つことになる。
図1の右側に示した状態を実現するためのオールリデュース通信は、例えば図2及び図3に示すように行われる。まず、図2(a)に示すように、サーバn0とサーバn3との間で値が共有されて加算により値「9」が算出され、サーバn1とサーバn4との間で値が共有されて加算により値「14」が算出され、サーバn2とサーバn5との間で値が共有されて加算により値「4」が算出される。
そして、図2(b)に示すように、サーバn0とサーバn1との間で値が共有されて加算により値「23」が算出され、サーバn3とサーバn4との間で値が共有されて加算により値「23」が算出される。
そして、図3(a)に示すように、サーバn1とサーバn2との間で値が共有されて加算により値「27」が算出され、サーバn4とサーバn5との間で値が共有されて加算により値「27」が算出される。
最後に、図3(b)に示すように、サーバn1がサーバn0に値「27」を送信し、サーバn4がサーバn3に値「27」を送信する。これにより、図3(b)に示すように、サーバn0乃至n5が値「27」を持つことができる。
ここで、対象はサーバn0乃至n5の全てでなくてもよく、サーバn0乃至n5のうち一部のサーバを対象としてもよい。一例として、サーバn0、n1、n3及びn4を対象とする場合のオールリデュース通信について説明する。まず、図4(a)に示すように、サーバn0とサーバn3との間で値が共有されて加算により値「9」が算出され、サーバn1とサーバn4との間で値が共有されて加算により値「14」が算出される。
そして、図4(b)に示すように、サーバn0とサーバn1との間で値が共有されて加算により値「23」が算出され、サーバn3とサーバn4との間で値が共有されて加算により値「23」が算出される。これにより、サーバn0、n1、n3及びn4が値「23」を持つことができる。
本実施の形態においては、このようなオールリデュース通信をラテン方陣ファットツリーシステムにおける一部のサーバにより実行する場合に経路競合が発生しないようにすることを考える。ここで、経路競合とは、1つの経路の同一方向に同時に複数のパケットが送信されることを意味し、経路競合の発生により通信時間が長くなる。例として、図5に、オールリデュース通信を一般的なツリー構造のトポロジにおいて実行した場合の経路競合を示す。図5において、丸の図形はサーバを表し、ハッチングされていない正方形の図形はLeafスイッチを表し、ハッチングされた正方形の図形はSpineスイッチを表す。図5において、経路R1において経路競合が発生し、経路R2においても経路競合が発生する。このケースにおいては、例えば図6に示すように、ツリー構造をファットツリー構造に変えることで経路競合を回避することが可能であるが、ファットツリー構造を採用すると総スイッチ数は図5の例よりも多くなる。
図7は、本実施の形態のラテン方陣ファットツリーシステム1000を示す図である。本実施の形態においては、13台のSpineスイッチと、13台のLeafスイッチとの接続形態がラテン方陣ファットツリーである。各Leafスイッチには4台のサーバが接続されているので、ラテン方陣ファットツリーシステム1000は、並列分散処理を実行する52台のサーバを有する。Spineスイッチ及びLeafスイッチは、例えばインフィニバンドスイッチである。サーバは、例えば、物理サーバである。以下では、Leafスイッチに接続されるサーバの数をdとする。本実施の形態においてはd=4である。
なお、図7の例においてはSpineスイッチの数及びLeafスイッチの数は13であるが、13以外であってもよい。他の例については、付録を参照されたい。
図7において、各Spineスイッチ及び各Leafスイッチには、図7に示したラテン方陣ファットツリーに対応する有限射影平面の点を表す文字列が付されている。図8は、図7に示したラテン方陣ファットツリーに対応する有限射影平面を示す図である。図8に示した有限射影平面の位数は3であり、Spineスイッチ及びLeafスイッチのポート数は8である。点はLeafスイッチを表し、直線はSpineスイッチを表す。図7に示したように格子部分を定めた場合において、LeafスイッチP、LeafスイッチP(0)、LeafスイッチP(1)及びLeafスイッチP(2)は無限遠点に相当する。なお、有限射影平面については付録を参照されたい。
本実施の形態のラテン方陣ファットツリーシステム1000においては、経路競合を回避するため、規則的且つ固定的なルーティングが行われるインフィニバンドのネットワークが利用される。図9を用いて、インフィニバンドのネットワークにおけるルーティングについて説明する。図9において、丸の図形はサーバを表し、正方形の図形はスイッチを表す。線分はインフィニバンドのリンクを表し、線分の傍にある文字列は宛先のサーバの識別情報を表す。太い実線の矢印は通信経路を表す。
図9の例においては、サーバN3が、宛先がサーバN1であるパケットを送信する。パケットのヘッダには、宛先の識別情報(例えばLID(Local IDentifier))が含まれる。各スイッチにおける各出力ポートには宛先のサーバの識別情報が対応付けられているので、各スイッチは、パケットに含まれる宛先の識別情報に対応する出力ポートにパケットを出力する。図9の例では、パケットはスイッチSW1、スイッチSW2及びスイッチSW4を経由してサーバN1に到達する。
このように、本実施の形態のネットワークは、イーサネット(登録商標)のように自動的に経路が決定されるネットワークではなく、規則的且つ固定的なルーティングが行われるネットワークである。
なお、上記の識別情報とは別に、各サーバには番号が割り振られているとする。具体的には、各Leafスイッチに接続される4台の各サーバには、0から3までのいずれかの番号が割り当てられ、各Leafスイッチには「0」が割り振られたサーバと「1」が割り振られたサーバと「2」が割り振られたサーバと「3」が割り振られたサーバとが接続される。
図10に示すように、ラテン方陣ファットツリーシステム1000は管理装置3に管理LAN(Local Area Network)等で接続され、ラテン方陣ファットツリーシステム1000における通信は管理装置3により管理される。管理装置3は、設定部300と、通信表生成部301と、通信表格納部303と、トポロジデータ格納部305と、ジョブデータ格納部307とを有する。通信表生成部301は、第1生成部3011と、第2生成部3013と、第3生成部3015と、第4生成部3017とを有する。設定部300及び通信表生成部301は、例えば、図55におけるメモリ2501にロードされたプログラムがCPU(Central Processing Unit)2503に実行されることで実現される。通信表格納部303、トポロジデータ格納部305及びジョブデータ格納部307は、例えば、図55におけるメモリ2501又はHDD(Hard Disk Drive)2505に設けられる。
設定部300は、トポロジデータ格納部305に格納されているデータに基づき、ラテン方陣ファットツリーシステム1000におけるサーバのうちオールリデュースを実行する一部のサーバ(以下、実行サーバと呼ぶ)を選択する処理を実行し、処理結果をジョブデータ格納部307に格納する。第1生成部3011は、トポロジデータ格納部305に格納されている、ラテン方陣ファットツリーシステム1000のネットワークトポロジの情報及びジョブデータ格納部307に格納されているデータに基づき、第1の通信表を生成し、生成された第1の通信表を通信表格納部303に格納する。第2生成部3013は、トポロジデータ格納部305に格納されている、ラテン方陣ファットツリーシステム1000のネットワークトポロジの情報及びジョブデータ格納部307に格納されているデータに基づき、第2の通信表を生成し、生成された第2の通信表を通信表格納部303に格納する。第3生成部3015は、トポロジデータ格納部305に格納されている、ラテン方陣ファットツリーシステム1000のネットワークトポロジの情報及びジョブデータ格納部307に格納されているデータに基づき、第3の通信表を生成し、生成された第3の通信表を通信表格納部303に格納する。第4生成部3017は、トポロジデータ格納部305に格納されている、ラテン方陣ファットツリーシステム1000のネットワークトポロジの情報及びジョブデータ格納部307に格納されているデータに基づき、第4の通信表を生成し、生成された第4の通信表を通信表格納部303に格納する。通信表生成部301は、通信表格納部303に格納された第1乃至第4の通信表を、所定のタイミングで又はリクエストに応じて、設定部300により選定されたサーバに送信する。
図11は、サーバの機能ブロック図である。サーバは、処理部101と、通信表格納部103とを有する。処理部101は、第1通信部1011と、第2通信部1013と、第3通信部1015と、第4通信部1017とを有する。処理部101は、例えば、図55におけるメモリ2501にロードされたプログラムがCPU2503に実行されることで実現される。通信表格納部103は、例えば、図55におけるメモリ2501又はHDD2505に設けられる。
通信表格納部103には、管理装置3から受信した第1乃至第4の通信表が格納される。第1通信部1011は、通信表格納部103に格納された第1の通信表に従って通信を行う。第2通信部1013は、通信表格納部103に格納された第2の通信表に従って通信を行う。第3通信部1015は、通信表格納部103に格納された第3の通信表に従って通信を行う。第4通信部1017は、通信表格納部103に格納された第4の通信表に従って通信を行う。
次に、図12乃至図38を用いて、管理装置3が実行する処理について説明する。図12は、管理装置3が実行する処理の処理フローを示す図である。
管理装置3における設定部300は、オールリデュースを実行するサーバ(すなわち実行サーバ)の数の情報の入力を受け付ける(図12:ステップS1)。実行サーバの数の情報は、例えば管理者によって入力される。
設定部300は、ラテン方陣ファットツリーシステム1000のネットワークトポロジの情報をトポロジデータ格納部305から読み出す(ステップS3)。ネットワークトポロジの情報は、例えば、Spineスイッチ、Leafスイッチ及びサーバの接続関係の情報等を含む。
設定部300は、ステップS1において入力された情報とステップS3において読み出した情報とに基づき、選択処理を実行する(ステップS5)。選択処理については後で説明する。
第1生成部3011は、ステップS3において読み出したネットワークトポロジの情報とジョブデータ格納部307に格納されているデータとに基づき、第1の通信表を生成する処理である第1生成処理を実行する(ステップS7)。第1生成処理については後で説明する。
第2生成部3013は、ステップS3において読み出したネットワークトポロジの情報とジョブデータ格納部307に格納されているデータとに基づき、第2の通信表を生成する処理である第2生成処理を実行する(ステップS9)。第2生成処理については後で説明する。
第3生成部3015は、ステップS3において読み出したネットワークトポロジの情報とジョブデータ格納部307に格納されているデータとに基づき、第3の通信表を生成する処理である第3生成処理を実行する(ステップS11)。第3生成処理については後で説明する。
第4生成部3017は、ステップS3において読み出したネットワークトポロジの情報とジョブデータ格納部307に格納されているデータとに基づき、第4の通信表を生成する処理である第4生成処理を実行する(ステップS13)。第4生成処理については後で説明する。
そして、通信表生成部301は、通信表格納部303に格納された第1乃至第4の通信表を読み出し、読み出した第1乃至第4の通信表を実行サーバに送信する(ステップS15)。そして処理は終了する。
以上のような処理を実行すれば、第1乃至第4の通信表を受信したサーバは適切な手順でオールリデュース通信を実行できるようになる。
次に、図13乃至図19を用いて、第1の実施の形態の選択処理について説明する。図13は選択処理の処理フローを示す図である。
設定部300は、変数aと変数bとの組合せのうち未処理の組合せを1つ特定する(図13:ステップS21)。変数aは1≦a≦dを満たし、格子部分に含まれる矩形の縦の長さ(すなわち行の数)を表す。変数bは1≦b≦dを満たし、格子部分に含まれる矩形の横の長さ(すなわち列の数)を表す。
設定部300は、変数cをc=[n/ab]として設定する(ステップS23)。変数cは1台のLeafスイッチに接続される実行サーバの数を定めるための変数である。nは、ステップS1において入力された情報が示す実行サーバ数である。「[]」はガウス記号であり、[n/ab]は(n/ab)の整数部分である。以下では、実行サーバに接続されるLeafスイッチのことを実行スイッチと呼ぶ。
設定部300は、格子部分において、縦の長さがaであり且つ横の長さがbである矩形領域における各Leafスイッチについてc台又は(c+1)台の実行サーバを選択することで、計n台の実行サーバを選択する(ステップS25)。
図14は、矩形領域の一例を示す図である。図14の例においては、LeafスイッチP(0,0)とLeafスイッチP(0,1)とLeafスイッチP(1,0)とLeafスイッチP(1,1)とLeafスイッチP(2,0)とLeafスイッチP(2,1)とを含む矩形領域が示されている。この場合、a=2且つb=3である。第1の実施の形態においては、矩形領域における各Leafスイッチからc台又は(c+1)台のサーバが実行サーバとして選択される。
設定部300は、変数a、変数b及び各実行スイッチに接続される実行サーバの台数(以下、ciとする)に基づき、評価関数fの値を算出する(ステップS27)。評価関数fは、例えば、通信コストと、Leafスイッチに接続されるサーバの使用状況(例えば、使用可または使用不可)と、Leafスイッチの物理位置とに基づき設定され、評価関数fの値が大きいほど変数a、変数b及び変数ciの組合せがオールリデュースの実行に好ましい。
設定部300は、変数aと変数bとの組合せのうち未処理の組合せが有るか判定する(ステップS29)。未処理の組合せが有る場合(ステップS29:Yesルート)、処理はステップS21に戻る。
一方、未処理の組合せが無い場合(ステップS29:Noルート)、設定部300は、以下の処理を実行する。具体的には、設定部300は、ステップS27において算出された評価関数の値が最大となる場合における変数a、変数b及び変数ciを特定する(ステップS31)。
設定部300は、特定された変数a及び変数bに基づき、格子部分において矩形領域を設定する。そして、設定部300は、特定された変数ciに基づき、矩形領域における各Leafスイッチについて実行サーバを特定し、実行サーバの識別情報をジョブデータ格納部307に格納する(ステップS33)。そして処理は呼び出し元に戻る。
以上のような処理を実行すれば、通信コスト等の観点から適切なサーバにオールリデュースを実行させることができるようになる。
なお、矩形領域は図14に示したような例には限られない。例えば、矩形領域は図15に示すような矩形領域であってもよい。すなわち、行数が格子部分の行数未満であり且つ列数が格子部分の列数未満であるような矩形領域であってもよい。
また、矩形領域は例えば図16に示すような矩形領域であってもよい。すなわち、矩形領域が2以上の矩形領域に分割されていてもよい。なお、図16の例においては、LeafスイッチP(0,0)とLeafスイッチP(0,2)とは同じSpineスイッチに接続され、LeafスイッチP(1,0)とLeafスイッチP(1,2)とは同じSpineスイッチに接続され、LeafスイッチP(2,0)とLeafスイッチP(2,2)とは同じSpineスイッチに接続されるため、図16の例の通信コストは図14の例の通信コストと同じである。
また、矩形領域は例えば図17に示すような矩形領域であってもよい。すなわち、行数が1であってもよく、また、列数が1であってもよい。行数が1である場合には、第2の通信表により実現されるオールリデュース(すなわち、列方向におけるオールリデュース)を省略することができる。また、列数が1である場合には、第3の通信表により実現されるオールリデュース(すなわち、行方向におけるオールリデュース)を省略することができる。
格子部分のサイズが3*3ではない場合の矩形領域についても同様に設定することができる。例えば図18に示すように格子部分のサイズが5*5である場合、図18の破線に示すように矩形領域を設定してもよい。
図14乃至図18に示したように、格子部分から選択されたa行のいずれかに含まれ且つ格子部分から選択されたb列のいずれかに含まれるLeafスイッチを、矩形領域内のLeafスイッチであるとして扱うことが可能である。これに対して、例えば図19に示すように矩形領域を設定した場合には、LeafスイッチP(2,1)が、LeafスイッチP(0,0)及びLeafスイッチP(1,0)が接続されるSpineスイッチL(0,0)に接続されておらず通信を効率的に行うことができない。従って、図19に示すような矩形領域は許容されない。
次に、図20乃至図26を用いて、第1生成処理について説明する。図20は、第1の実施の形態の第1生成処理の処理フローを示す図である。
第1生成部3011は、各実行スイッチでのオールリデュースの各フェーズにおいて通信を実行するサーバの識別情報を含む第1の通信表を生成する(図20:ステップS41)。
図21乃至図25は、実行スイッチに接続されるサーバ間でのオールリデュースについて説明するための図である。図21乃至図25において、正方形の図形は実行スイッチであるLeafスイッチを表し、丸の図形はサーバを表し、Leafスイッチとサーバとを結ぶ線分はリンクを表す。サーバに付された数字はサーバが持つ値を表す。
まず、図21及び図22を用いて、Leafスイッチに接続されるサーバの数が偶数(ここでは、2の冪である4)である場合について説明する。
例えば、図21(a)に示すように、4台のサーバがそれぞれ「3」、「7」、「2」、「2」を持つとする。この場合、2台のサーバを含むペアの各々において値が共有され、値の演算(ここでは加算)が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図21(b)に示すように、2台のサーバが値「10」を持ち、残りの2台のサーバが値「4」を持つ。そして、値「10」を持つサーバと値「4」を持つサーバとを含むペアの各々において値が共有され、値の演算(ここでは加算)が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
これにより、最終的には図22に示すように各サーバが値「14」を持つ。
次に、図23乃至図25を用いて、Leafスイッチに接続されるサーバの数が奇数(ここでは5)である場合について説明する。
例えば、図23(a)に示すように、5台のサーバがそれぞれ「1」、「4」、「5」、「2」、「8」を持つとする。この場合、5台のうち2台のサーバにおいて値が共有され、値の演算(ここでは加算)が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図23(b)に示すように、5台のサーバがそれぞれ「1」、「4」、「5」、「10」、「10」を持つ。そして、値「1」を持つサーバと値「4」を持つサーバとを含むペアと、値「5」を持つサーバと値「10」を持つサーバとを含むペアとにおいて値が共有され値の演算が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図24(a)に示すように、5台のサーバがそれぞれ「5」、「5」、「15」、「15」、「10」を持つ。そして、値「5」を持つサーバと値「15」を持つサーバとを含むペアの各々において値が共有され値の演算が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図24(b)に示すように、5台のサーバがそれぞれ「20」、「20」、「20」、「20」、「10」を持つ。そして、値「20」を持つサーバが値「10」を持つサーバに対して値「20」を通知する。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図25に示すように、最終的に5台のサーバがそれぞれ値「20」を持つようになる。
以上の説明は複数のサーバの間で行われるオールリデュースの一例についての説明であるが、サーバ数がこの例以外の数である場合においても、基本的には同様の方法でオールリデュースを行うことができる。
ここで、n台(nは自然数)のサーバの間でのオールリデュースを行う場合における通信表を生成する処理(以下、Allreduce(n)のように呼ぶ)について説明する。本実施の形態においては、再帰的な処理によって通信表が生成される。
(1)Leafスイッチに接続されるサーバの数nが1である場合、処理は終了する。
(2)Leafスイッチに接続されるサーバの数nが2である場合、2台のサーバの間での通信についての通信情報(具体的には、サーバのペアの情報)が通信表に書き込まれる。
(3)Leafスイッチに接続されるサーバの数nが奇数2m+1(mは自然数)である場合、n台のサーバのうち2台のサーバ(サーバPおよびサーバQ)が選択され、サーバPとサーバQとの間でオールリデュース通信についての通信情報が通信表に書き込まれる。そして、サーバP及びサーバQのうちいずれかのサーバと残りの(2m−1)台のサーバと(つまり、2m台のサーバ)について、Allreduce(2m)が呼び出される。そして、Allreduce(2m)の結果をサーバPからサーバQに伝えるための通信情報が通信表に書き込まれる。
(4)Leafスイッチに接続されるサーバの数が2m(mは2以上の自然数)である場合、サーバはm台のグループとm台のグループとに分けられ、同時並行でそれぞれのグループについてAllreduce(m)が呼び出される。
以上のような処理を実行すれば、n台のサーバの間でのオールリデュースを行う場合における通信表が生成される。図21乃至図25の説明から明らかなように、このような方法で生成された通信表に従ってオールリデュース通信が行われれば経路競合は発生しない。
図20の説明に戻り、第1生成部3011は、ステップS41において生成された第1の通信表を通信表格納部303に格納する(ステップS43)。そして処理は呼び出し元に戻る。
図26は、第1の通信表の一例を示す図である。図26の例においては、フェーズ番号と、通信を実行するサーバのペアの情報とが第1の通信表に登録されている。N1等の文字列はサーバの識別情報(例えばLID)を表す。通信1と通信2とは同時並行で実行される。例えばフェーズ2においては、サーバN1とサーバN2との間の通信と、サーバN3とサーバN4との間の通信とが同時並行で実行される。図26に示した通信表によれば、フェーズ1乃至4における各サーバの通信相手は以下のとおりである。
サーバN1:−,N2,N3,−
サーバN2:−,N1,N4,−
サーバN3:−,N4,N1,−
サーバN4:N5,N3,N2,N5(送)
サーバN5:N4,−,−,N4(受)
ここで、「−」は通信が行われないことを表す。「(送)」は送信することを表し、「(受)」は受信することを表す。例えばサーバN5は、フェーズ1においてサーバN4と通信し、フェーズ2及び3においては通信を行わず、フェーズ4においてはサーバN4からデータを受信する。なお、図26の例では1台の実行スイッチについての通信情報が示されているが、実際には各実行スイッチについての通信情報が第1の通信表に含まれる。
次に、図27乃至図29を用いて、第2生成処理について説明する。図27は、第2生成処理の処理フローを示す図である。
第2生成部3013は、同一の列に属する実行スイッチに接続される代表サーバの間で行われるオールリデュースの各フェーズにおいて通信を実行するサーバの識別情報を含む第2の通信表を生成する(図27:ステップS51)。ここで、代表サーバとは、同じ実行スイッチに接続される実行サーバのうち他の実行スイッチに接続される実行サーバとの通信を実行するサーバである。代表スイッチは、例えば、実行サーバに割り振られた番号に基づき或いは同じ実行スイッチに接続された実行サーバの中からランダムに選択される。
図28及び図29を用いて、第2の通信表にて実現されるオールリデュースについて説明する。図28には、一例として、実行スイッチであるLeafスイッチP(0,1)、LeafスイッチP(1,1)、LeafスイッチP(2,1)、LeafスイッチP(0,0)、LeafスイッチP(1,0)及びLeafスイッチP(2,0)が示されている。LeafスイッチP(0,1)に接続される代表サーバが値「11」を持つ。LeafスイッチP(1,1)に接続される代表サーバが値「13」を持つ。LeafスイッチP(2,1)に接続される代表サーバが値「10」を持つ。LeafスイッチP(0,0)に接続される代表サーバが値「14」を持つ。LeafスイッチP(1,0)に接続される代表サーバが値「10」を持つ。LeafスイッチP(2,0)に接続される代表サーバが値「14」を持つ。
この場合、LeafスイッチP(0,1)に接続される代表サーバとLeafスイッチP(0,0)に接続される代表サーバとの間で値が共有され値の演算が実行される。LeafスイッチP(1,1)に接続される代表サーバとLeafスイッチP(1,0)に接続される代表サーバとの間で値が共有され値の演算が実行される。LeafスイッチP(2,1)に接続される代表サーバとLeafスイッチP(2,0)に接続される代表サーバとの間で値が共有され値の演算が実行される。なお、各列についての通信は並行して行われる。
結果として、図29に示すように、LeafスイッチP(0,1)に接続される代表サーバが値「25」を持つ。LeafスイッチP(1,1)に接続される代表サーバが値「23」を持つ。LeafスイッチP(2,1)に接続される代表サーバが値「24」を持つ。LeafスイッチP(0,0)に接続される代表サーバが値「25」を持つ。LeafスイッチP(1,0)に接続される代表サーバが値「23」を持つ。LeafスイッチP(2,0)に接続される代表サーバが値「24」を持つ。
以上のような通信の各フェーズにおいては、複数のパケットが同じ方向に同時に送信されるリンクは存在しないので、経路競合は発生していない。
図27の説明に戻り、第2生成部3013は、ステップS51において生成された第2の通信表を通信表格納部303に格納する(ステップS53)。そして処理は呼び出し元に戻る。なお、第2の通信表はオールリデュースについての通信表であるので、第1の通信表と同様の方法で生成されるため同様の形式を有する。但し、第2の通信表にて実現されるオールリデュースは同じ列に属する実行スイッチに接続される代表サーバの間で行われるオールリデュースであるので、オールリデュースが行われる各列についての通信情報が格納される。
次に、図30乃至図34を用いて、第3生成処理について説明する。図30は、第3生成処理の処理フローを示す図である。
第3生成部3015は、同一の行に属する実行スイッチに接続される代表サーバの間で行われるオールリデュースの各フェーズにおいて通信を実行するサーバの識別情報を含む第3の通信表を生成する(図30:ステップS61)。上で述べたように、代表サーバとは、同じ実行スイッチに接続される実行サーバのうち他の実行スイッチに接続される実行サーバとの通信を実行するサーバである。
図31乃至図34を用いて、第3の通信表にて実現されるオールリデュースについて説明する。図31には、一例として、実行スイッチであるLeafスイッチP(0,1)、LeafスイッチP(1,1)、LeafスイッチP(2,1)、LeafスイッチP(0,0)、LeafスイッチP(1,0)及びLeafスイッチP(2,0)が示されている。LeafスイッチP(0,1)に接続される代表サーバが値「25」を持つ。LeafスイッチP(1,1)に接続される代表サーバが値「23」を持つ。LeafスイッチP(2,1)に接続される代表サーバが値「24」を持つ。LeafスイッチP(0,0)に接続される代表サーバが値「25」を持つ。LeafスイッチP(1,0)に接続される代表サーバが値「23」を持つ。LeafスイッチP(2,0)に接続される代表サーバが値「24」を持つ。
まず、例えば図31に示すように、LeafスイッチP(0,1)に接続される代表サーバとLeafスイッチP(1,1)に接続される代表サーバとの間で値が共有され値の演算が実行される。LeafスイッチP(0,0)に接続される代表サーバとLeafスイッチP(1,0)に接続される代表サーバとの間で値が共有され値の演算が実行される。なお、各行についての通信は並行して行われる。
次に、例えば図32に示すように、LeafスイッチP(1,1)に接続される代表サーバとLeafスイッチP(2,1)に接続される代表サーバとの間で値が共有され値の演算が実行される。LeafスイッチP(1,0)に接続される代表サーバとLeafスイッチP(2,0)に接続される代表サーバとの間で値が共有され値の演算が実行される。なお、各行についての通信は並行して行われる。
次に、例えば図33に示すように、LeafスイッチP(1,1)に接続される代表サーバからLeafスイッチP(0,1)に接続される代表サーバに結果が送信される。LeafスイッチP(1,0)に接続される代表サーバからLeafスイッチP(0,0)に接続される代表サーバに結果が送信される。なお、各行についての通信は並行して行われる。
結果として、図34に示すように、各代表サーバが値「72」を持つ。以上のような通信の各フェーズにおいては、複数のパケットが同じ方向に同時に送信されるリンクは存在しないので、経路競合は発生していない。
図30の説明に戻り、第3生成部3015は、ステップS61において生成された第3の通信表を通信表格納部303に格納する(ステップS63)。そして処理は呼び出し元に戻る。なお、第3の通信表はオールリデュースについての通信表であり、第1の通信表と同様の方法で生成されるため同様の形式を有する。但し、第3の通信表にて実現されるオールリデュースは同じ行に属する実行スイッチに接続される代表サーバの間で行われるオールリデュースであるので、オールリデュースが行われる各行についての通信情報が格納される。
次に、図35乃至図38を用いて、第4生成処理について説明する。図35は、第4生成処理の処理フローを示す図である。
第4生成部3017は、各代表サーバから当該代表サーバと同じLeafスイッチに接続される他サーバへの結果配布における各フェーズで通信を実行するサーバの識別情報を含む第4の通信表を生成する(図35:ステップS65)。
図36乃至図38を用いて、第4の通信表にて実現される結果配布について説明する。図36乃至図38には、一例として、1台のLeafスイッチとそのLeafスイッチに接続される4台のサーバとが示されており、最も左に位置するサーバは代表サーバである。はじめに、図36に示すように、代表サーバは右から2番目のサーバに値「72」を送信する。
すると、図37に示すように、代表サーバ及び右から2番目のサーバは値「72」を持ち、右から1番目のサーバ及び右から3番目のサーバは値「14」を持つ。そして、図37に示すように、代表サーバは値「72」を右から3番目のサーバに送信し、右から2番目のサーバは値「72」を右から1番目のサーバに送信する。
すると、図38に示すように、各サーバはオールリデュースの結果である値「72」を持つ。以上のようにして第4の通信表による結果配布が実現される。フェーズ数は2であり、いずれのフェーズにおいても、複数のパケットが同じ方向に同時に送信されるリンクは存在しないので、経路競合は発生していない。
図35の説明に戻り、第4生成部3017は、ステップS65において生成された第4の通信表を通信表格納部303に格納する(ステップS67)。そして処理は呼び出し元に戻る。なお、第4の通信表には、各実行スイッチにおける結果配布についての通信情報が、図26に示した第1の通信表と同様の形式で格納されるので、ここでは詳細な説明を省略する。
次に、図39及び図40を用いて、サーバが実行する処理について説明する。本処理は、第1乃至第4の通信表を管理装置3から受信した各サーバが実行する処理である。
図39は、サーバが実行する処理の処理フローを示す図である。
サーバにおける第1通信部1011は、フェーズ番号を表す変数iに1を設定する(図39:ステップS71)。
第1通信部1011は、通信表格納部103に格納されている第1の通信表から、フェーズiの通信情報を特定する(ステップS73)。
第1通信部1011は、自サーバ(すなわち、本処理を実行しているサーバ)がフェーズiにおいて通信を実行するか判定する(ステップS75)。自サーバがフェーズiにおいて通信を実行するか否かは、特定された通信情報に自サーバの識別情報が含まれているか否かにより判定される。
自サーバがフェーズiにおいて通信を実行しない場合(ステップS75:Noルート)、処理はステップS79に移行する。一方、自サーバがフェーズiにおいて通信を実行する場合(ステップS75:Yesルート)、第1通信部1011は、ステップS73において特定された通信情報に従って通信を実行する(ステップS77)。
上で述べたように、第1の通信表に従って行われる通信は、同一のLeafスイッチに接続されるサーバ間でのオールリデュース通信であり、他のサーバから値を受信したサーバはオールリデュースに係る演算を実行する。
第1通信部1011は、i=imax1が成立するか判定する(ステップS79)。imax1は、第1の通信表に従って行われる通信のフェーズ番号の最大値である。i=imax1が成立しない場合(ステップS79:Noルート)、第1通信部1011は、iを1インクリメントする(ステップS81)。そして処理はステップS73に移行する。なお、フェーズの終了はバリア同期によって確認される。
一方、i=imax1が成立する場合(ステップS79:Yesルート)、第2通信部1013は、フェーズ番号を表す変数iに1を設定する(ステップS83)。
第2通信部1013は、通信表格納部103に格納されている第2の通信表から、フェーズiの通信情報を特定する(ステップS85)。
第2通信部1013は、自サーバ(すなわち、本処理を実行しているサーバ)がフェーズiにおいて通信を実行するか判定する(ステップS87)。自サーバがフェーズiにおいて通信を実行するか否かは、特定された通信情報に自サーバの識別情報が含まれているか否かにより判定される。
自サーバがフェーズiにおいて通信を実行しない場合(ステップS87:Noルート)、処理はステップS91に移行する。一方、自サーバがフェーズiにおいて通信を実行する場合(ステップS87:Yesルート)、第2通信部1013は、ステップS85において特定された通信情報に従って通信を実行する(ステップS89)。
上で述べたように、第2の通信表に従って行われる通信は、同じ列に属する実行スイッチに接続される代表サーバの間で行われるオールリデュース通信であり、他のサーバから値を受信したサーバはオールリデュースに係る演算を実行する。
第2通信部1013は、i=imax2が成立するか判定する(ステップS91)。imax2は、第2の通信表に従って行われる通信のフェーズ番号の最大値である。i=imax2が成立しない場合(ステップS91:Noルート)、第2通信部1013は、iを1インクリメントする(ステップS93)。そして処理はステップS85に移行する。なお、フェーズの終了はバリア同期によって確認される。
一方、i=imax2が成立する場合(ステップS91:Yesルート)、処理は端子Aを介して図40のステップS95に移行する。
図40の説明に移行し、第3通信部1015は、フェーズ番号を表す変数iに1を設定する(図40:ステップS95)。
第3通信部1015は、通信表格納部103に格納されている第3の通信表から、フェーズiの通信情報を特定する(ステップS97)。
第3通信部1015は、自サーバ(すなわち、本処理を実行しているサーバ)がフェーズiにおいて通信を実行するか判定する(ステップS99)。自サーバがフェーズiにおいて通信を実行するか否かは、特定された通信情報に自サーバの識別情報が含まれているか否かにより判定される。
自サーバがフェーズiにおいて通信を実行しない場合(ステップS99:Noルート)、処理はステップS103に移行する。一方、自サーバがフェーズiにおいて通信を実行する場合(ステップS99:Yesルート)、第3通信部1015は、ステップS97において特定された通信情報に従って通信を実行する(ステップS101)。
上で述べたように、第3の通信表に従って行われる通信は、同じ行に属する実行スイッチに接続される代表サーバの間で行われるオールリデュース通信であり、他のサーバから値を受信したサーバはオールリデュースに係る演算を実行する。
第3通信部1015は、i=imax3が成立するか判定する(ステップS103)。imax3は、第3の通信表に従って行われる通信のフェーズ番号の最大値である。i=imax3が成立しない場合(ステップS103:Noルート)、第3通信部1015は、iを1インクリメントする(ステップS105)。そして処理はステップS97に移行する。なお、フェーズの終了はバリア同期によって確認される。
一方、i=imax3が成立する場合(ステップS103:Yesルート)、第4通信部1017は、フェーズ番号を表す変数iに1を設定する(ステップS107)。
第4通信部1017は、通信表格納部103に格納されている第4の通信表から、フェーズiの通信情報を特定する(ステップS109)。
第4通信部1017は、自サーバ(すなわち、本処理を実行しているサーバ)がフェーズiにおいて通信を実行するか判定する(ステップS111)。自サーバがフェーズiにおいて通信を実行するか否かは、特定された通信情報に自サーバの識別情報が含まれているか否かにより判定される。
自サーバがフェーズiにおいて通信を実行しない場合(ステップS111:Noルート)、処理はステップS115に移行する。一方、自サーバがフェーズiにおいて通信を実行する場合(ステップS111:Yesルート)、第4通信部1017は、ステップS109において特定された通信情報に従って通信を実行する(ステップS113)。
上で述べたように、第4の通信表に従って行われる通信は、オールリデュースの結果を持つ代表サーバから当該サーバと同じLeafスイッチに接続される他のサーバへの結果配布である。
第4通信部1017は、i=imax4が成立するか判定する(ステップS115)。imax4は、第4の通信表に従って行われる通信のフェーズ番号の最大値である。i=imax4が成立しない場合(ステップS115:Noルート)、第4通信部1017は、iを1インクリメントする(ステップS117)。そして処理はステップS109に移行する。なお、フェーズの終了はバリア同期によって確認される。
一方、i=imax4が成立する場合(ステップS115:Yesルート)、処理は終了する。
以上のような処理を実行すれば、ラテン方陣ファットツリーシステム1000における一部のサーバによりオールリデュースを実現することができるようになる。よって、オールリデュースを実行するサーバ以外のサーバに対して他の集団通信等を実行させることが可能になる。
また、上で述べたように、本実施の形態においては、オールリデュース通信の各過程において経路競合が発生することはない。
[実施の形態2]
第2の実施の形態においては、第1の実施の形態の選択処理とは異なる選択処理が実行される。図41乃至図43を用いて、第2の実施の形態の選択処理について説明する。
図41は、第2の実施の形態の選択処理の処理フローを示す図である。kは1≦k≦dを満たす自然数であり、予め設定されるものとする。
まず、設定部300は、変数lをl=1として設定する(図41:ステップS151)。
設定部300は、有限射影平面の格子部分において(a,b)=(k,l)である矩形領域を設定する(ステップS153)。
設定部300は、ステップS153において設定された矩形領域に含まれるLeafスイッチに接続された未使用サーバの数を計数する(ステップS155)。なお、管理装置3は、ラテン方陣ファットツリーシステム1000における各サーバが使用中であるか否かを管理しているものとする。
設定部300は、ステップS155において計数された未使用サーバの数がn以上であるか判定する(ステップS157)。nは、ステップS1において入力された情報が示す実行サーバ数である。
ステップS155において計数された未使用サーバの数がn以上ではない場合(ステップS157:Noルート)、設定部300は、以下の処理を実行する。具体的には、設定部300は、lを1インクリメントすることで矩形領域を横方向に拡張する(ステップS159)。そして処理はステップS155に戻る。
図42及び図43は、矩形領域の拡張について説明するための図である。例えば図42に示すように、初期状態においてk=2であり且つl=1である。矩形領域に含まれるLeafスイッチP(0,0)に接続される未使用サーバの数は1であり、矩形領域に含まれるLeafスイッチP(0,1)に接続される未使用サーバの数は2である。n=6である場合、未使用サーバの数は6より小さいので、図43に示すように矩形領域が横方向に拡張される。拡張後の矩形領域におけるLeafスイッチP(1,0)に接続される未使用サーバの数は2であり、拡張後の矩形領域におけるLeafスイッチP(1,1)に接続される未使用サーバの数は1である。この場合、拡張後の矩形領域内の未使用サーバの数は6であるので、矩形領域の拡張は停止する。
一方、ステップS155において計数された未使用サーバの数がn以上である場合(ステップS157:Yesルート)、設定部300は、以下の処理を実行する。具体的には、設定部300は、有限射影平面の格子部分において、(a,b)=(k,l)である矩形領域からn台の実行サーバを選択し、選択されたn台の実行サーバの識別情報をジョブデータ格納部307に格納する(ステップS161)。そして処理は呼び出し元に戻る。
以上のような処理を実行すれば、使用されていないサーバを活用するという観点で実行サーバを選択することができるようになる。なお、上で述べた例では横方向に矩形領域が拡張されるが、矩形領域は縦方向に拡張されてもよい。
[実施の形態3]
第3の実施の形態においては、第1及び第2の実施の形態の選択処理とは異なる選択処理が実行される。図44を用いて、第3の実施の形態の選択処理について説明する。
図44は、第3の実施の形態の選択処理の処理フローを示す図である。
設定部300は、kをk=[n1/2]+1として算出する(図44:ステップS171)。nは、ステップS1において入力された情報が示す実行サーバ数である。
設定部300は、有限射影平面の格子部分において(a,b)=(k,k)である矩形領域を設定する(ステップS173)。
設定部300は、矩形領域における各Leafスイッチから1台の実行サーバを選択することでn台以上の実行サーバを選択し、選択された実行サーバの識別情報をジョブデータ格納部307に格納する(ステップS175)。そして処理は呼び出し元に戻る。
以上のような処理を実行すれば、実行スイッチに接続される実行サーバの数は1台又は0台であるので、各実行スイッチでのオールリデュース及び結果配布を省略することができるようになる。これにより、オールリデュースを完了するまでの時間を短縮できるようになる。第3の実施の形態は、特にスイッチ間の通信コストがサーバ間のスイッチコストより少ない(例えば、スイッチ間の接続帯域がサーバ間の接続帯域より広い)場合に有効である。
なお、n台以上のサーバが実行サーバとして選択されるため、余剰のサーバによるオーバーヘッドが発生するが、オーバーヘッドは高々1/k程度である。余剰のサーバのデータ量は0として扱われる。
[実施の形態4]
第4の実施の形態においては、第1乃至第3の実施の形態の選択処理とは異なる選択処理が実行される。図45を用いて、第4の実施の形態の選択処理について説明する。
図45は、第4の実施の形態の選択処理の処理フローを示す図である。
設定部300は、kをk=[n1/3]として設定する(図45:ステップS181)。nは、ステップS1において入力された情報が示す実行サーバ数である。
設定部300は、n<k2(k+1)が成立するか判定する(ステップS183)。
n<k2(k+1)が成立する場合(ステップS183:Yesルート)、設定部300は、有限射影平面の格子部分において、(a,b)=(k,k)である矩形領域を設定する(ステップS185)。そして処理はステップS193に移行する。
n<k2(k+1)が成立しない場合(ステップS183:Noルート)、設定部300は、n<k(k+1)2が成立するか判定する(ステップS187)。
n<k(k+1)2が成立する場合(ステップS187:Yesルート)、設定部300は、有限射影平面の格子部分において、(a,b)=(k,k+1)である矩形領域を設定する(ステップS189)。そして処理はステップS193に移行する。
n<k(k+1)2が成立しない場合(ステップS187:Noルート)、設定部300は、有限射影平面の格子部分において、(a,b)=(k+1,k+1)である矩形領域を設定する(ステップS191)。
設定部300は、設定された矩形領域における各Leafスイッチについてk台又は(k+1)台の実行サーバを選択することで計n台の実行サーバを選択する(ステップS193)。
設定部300は、ステップS193において選択されたn台の実行サーバの識別情報をジョブデータ格納部307に格納する(ステップS195)。そして処理は呼び出し元に戻る。
以上のような処理を実行すれば、変数a、変数b及び変数cの差は高々1になるので、変数の大きさに偏りがあることを原因とするオーバーヘッドを最小限にすることができるようになる。
[実施の形態5]
第5の実施の形態においては、第1乃至第4の実施の形態の選択処理とは異なる選択処理が実行される。図46を用いて、第5の実施の形態の選択処理について説明する。
図46は、第5の実施の形態の選択処理の処理フローを示す図である。
設定部300は、有限射影平面の格子部分において、(a,b)=(2s,2t)である矩形領域を設定する(図46:ステップS131)。sおよびtは自然数である。
設定部300は、ステップS131において設定された各Leafスイッチについて[n/2s+t]台又は([n/2s+t]+α)台の実行サーバを選択することで計n台の実行サーバを選択する(ステップS133)。αは自然数である。nは、ステップS1において入力された情報が示す実行サーバ数である。
設定部300は、ステップS133において選択されたn台の実行サーバの識別情報をジョブデータ格納部307に格納する(ステップS135)。そして処理は呼び出し元に戻る。
変数a、変数b及び変数ciが2の冪である場合には、オールリデュースのフェーズ数を少なくすることができる。第5の実施の形態においては、少なくとも変数a及び変数bは2の冪であるので、オールリデュース通信の時間を短縮することができるようになる。
例えば、指定された実行サーバ数が729であるとする。この場合、a=b=ci=9とすると、通信のフェーズ数は5*4=20である。一方、a=24=16、b=25=32、c=1又は2とすると、通信のフェーズ数は11(=1+4+5+1)である。
[実施の形態6]
第1乃至第5の実施の形態においては、第1生成処理においてオールリデュースについての第1の通信表が生成されるが、第6の実施の形態においては、第1生成処理においてリデュースについての第1の通信表が生成される。リデュースの結果を持つサーバを代表サーバとすれば、その後の通信は第1乃至第5の実施の形態と同様である。
図47は、第6の実施の形態の第1生成処理の処理フローを示す図である。
第1生成部3011は、各実行スイッチでのリデュースの各フェーズにおいて通信を実行するサーバの識別情報を含む第1の通信表を生成する(図47:ステップS141)。
図48乃至図50を用いて、第6の実施の形態における第1の通信表にて実現されるリデュースについて説明する。図48乃至図50には、一例として、1台のLeafスイッチと、そのLeafスイッチに接続される4台のサーバとが示されており、最も左に位置するサーバ(以下、代表サーバと呼ぶ)がリデュースの結果を持つように通信が行われるとする。
はじめに、図48に示すように、左から2番目のサーバは値「7」を代表サーバに送信し、並行して左から4番目のサーバは値「2」を左から3番目のサーバに送信する。代表サーバ及び左から3番円のサーバは演算(ここでは加算)を実行する。
すると、図49に示すように、代表サーバは値「10」を持ち、左から3番目のサーバは値「4」を持つ。そして、左から3番目のサーバは値「4」を代表サーバに送信する。代表サーバは演算を実行する。
すると、図50に示すように、代表サーバは、元の4つの数の合計に相当する値「14」を持つ。以上のようにしてリデュースが実現される。フェーズ数は2であり且つサーバ数dは4であるので、O(log(d))フェーズでリデュースが実現されている。対数の底は2である。いずれのフェーズにおいても、複数のパケットが同じ方向に同時に送信されるリンクは存在しないので、経路競合は発生していない。
図47の説明に戻り、第1生成部3011は、ステップS141において生成された第1の通信表を通信表格納部303に格納する(ステップS143)。そして処理は呼び出し元に戻る。なお、第6の実施の形態において生成される第1の通信表は、第1の実施の形態において生成される第1の通信表と同様の形式であるので、ここでは詳細な説明を省略する。
以上のような処理を実行すれば、第1の通信表にて実現される通信のフェーズ数を、オールリデュースの場合と比べて減らすことができるようになる。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した管理装置3及びサーバの機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
また、上で述べた例においては、オールリデュース及びリデュースの演算として加算が行われるが、加算以外の演算(例えば乗算)が行われてもよい。
[付録]
本付録においては、ラテン方陣ファットツリーおよび有限射影平面について説明する。
有限射影平面とは、普通の平面に無限遠点をいくつか加え且つ「平行な2直線」をなくした平面に相当する。図51に、位数(以下nとする)が2であり且つポート数が6(=2(n+1))である場合の有限射影平面の構造を示す。図51において、枠512で囲まれた3(=n+1)台のLeafスイッチは無限遠点に相当する。
有限射影平面においては、1個の点Pが設定され、n個の点P(c)(c=0,1,...,n−1)が設定され、n2個の点P(c,r)(c,r=0,1,...,n−1)が設定される。また、1本の直線L={P,P(0),...,P(n−1)}が設定され、n本の直線L={P,P(c,0),...,P(c,n−1)}(c=0,1,...,n−1)が設定され、n2本の直線L(c,r)={P(c)およびP(i,(r+ci) mod n)}(i,c,r=0,1,...,n−1)が設定される。
有限射影平面の特徴として、(n2+n+1)の点が存在し、直線の数は(n2+n+1)である。任意の2直線は1点で交わり、任意の2点を結ぶ直線がただ一つ存在する。但し、nは素数であるという制約がある。
有限射影平面の構造は、トポロジ構造に置き換えられる。例えば、図52(a)に示した有限射影平面の構造は、図52(b)に示したトポロジ構造に置き換えられる。図52(a)において、直線はSpineスイッチを表し、点はLeafスイッチを表す。図52(b)において、ハッチングされた矩形はSpineスイッチを表し、ハッチングされていない矩形はLeafスイッチを表す。
図53(a)に示したトポロジ構造は、Spineスイッチの数が7であり且つLeafスイッチの数が7であるラテン方陣ファットツリーのトポロジ構造であり、図53(b)に示した有限射影平面の構造に対応する。図53(a)において太線で囲まれた部分のトポロジ構造は、図52(b)のトポロジ構造と同じである。また、図53(b)において太線で囲まれた部分の構造は、図53(a)において太線で囲まれた部分のトポロジ構造に対応する。
図53(b)に示した構造は、図54に示す構造に変換することができる。図54において、ハッチングされた格子部分に含まれる4(=n*n)台のLeafスイッチは、図51において枠511に囲まれた部分に含まれる4台のLeafスイッチに対応する。格子部分において平行な直線群は、追加の点において交わるように変換される。すなわち、傾きが等しい直線同士が交わるように変換される。
以上で付録を終了する。
なお、上で述べた管理装置3及びサーバは、コンピュータ装置であって、図55に示すように、メモリ2501とCPU2503とHDD2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
また、上で述べたLeafスイッチ及びSpineスイッチは、図56に示すように、メモリ2601とCPU2603とHDD2605と表示装置2609に接続される表示制御部2607とリムーバブル・ディスク2611用のドライブ装置2613と入力装置2615とネットワークに接続するための通信制御部2617(図56では、2617a乃至2617c)とがバス2619で接続されている構成の場合もある。なお、場合によっては、表示制御部2607、表示装置2609、ドライブ装置2613、入力装置2615は含まれない場合もある。オペレーティング・システム(OS:Operating System)及び本実施の形態における処理を実施するためのアプリケーション・プログラムは、HDD2605に格納されており、CPU2603により実行される際にはHDD2605からメモリ2601に読み出される。必要に応じてCPU2603は、表示制御部2607、通信制御部2617、ドライブ装置2613を制御して、必要な動作を行わせる。なお、通信制御部2617のいずれかを介して入力されたデータは、他の通信制御部2617を介して出力される。CPU2603は、通信制御部2617を制御して、適切に出力先を切り替える。また、処理途中のデータについては、メモリ2601に格納され、必要があればHDD2605に格納される。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2611に格納されて頒布され、ドライブ装置2613からHDD2605にインストールされる。インターネットなどのネットワーク及び通信制御部2617を経由して、HDD2605にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2603、メモリ2601などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係る情報処理システムは、(A)接続形態がラテン方陣ファットツリーである複数のリーフスイッチ(実施の形態におけるLeafスイッチは上記複数のリーフスイッチの一例である)と、(B)複数のリーフスイッチのいずれかにそれぞれ接続される複数の情報処理装置(実施の形態におけるサーバは上記複数の情報処理装置の一例である)と、(C)管理装置とを有する。そして、管理装置は、(c1)ラテン方陣ファットツリーに対応する有限射影平面の無限遠点以外の部分である格子部分から1又は複数の行と1又は複数の列とを抽出し、抽出された1又は複数の行に含まれ且つ抽出された1又は複数の列に含まれる点に相当するリーフスイッチを特定する特定部(実施の形態における設定部300は上記特定部の一例である)と、(c2)特定されたリーフスイッチに接続された情報処理装置のうち所定数の情報処理装置に対して、オールリデュースの実行指示を送信する送信部(実施の形態における通信表生成部301は上記送信部の一例である)とを有する。
ラテン方陣ファットツリーシステムにおけるサーバのうち一部のサーバによりオールリデュースを実行できるようになる。また、同じスパインスイッチに接続されたリーフスイッチがオールリデュースに利用されるので、オールリデュースにおいて効率的な通信が可能である。
また、特定部は、(c11)格子部分に含まれる矩形領域のうち所定の最適化関数の値が最大である矩形領域から1又は複数の行と1又は複数の列とを抽出してもよい。
総合的に適切な行および列を自動で選択できるようになる。
また、所定の最適化関数は、少なくとも通信コストと複数の情報処理装置の使用状況と複数のリーフスイッチの物理位置とに基づく関数であってもよい。
少なくとも通信コスト、複数の情報処理装置の使用状況および複数のリーフスイッチの物理位置等を考慮しつつ適切な行および列を選択できるようになる。
また、特定部は、(c12)格子部分に含まれる矩形領域内のリーフスイッチに接続され且つ使用されていない第1情報処理装置の数が所定数を超えるまで矩形領域を拡張し、第1情報処理装置の数が所定数を超えた場合に矩形領域から1又は複数の行と1又は複数の列とを抽出してもよい。
情報処理装置の使用状況に応じた適切な抽出が可能になる。
また、特定部は、(c13)所定数の平方根の整数部分に1を加えた数を行数とし且つ当該数を列数とする矩形領域から1又は複数の行と1又は複数の列とを抽出してもよい。
リーフスイッチに接続される情報処理装置の数が複数である場合、その情報処理装置の間で通信が行われる。上で述べたようにすれば、矩形領域内のリーフスイッチに接続されるリーフスイッチの数は0又は1になるので、リーフスイッチに接続される情報処理装置の間での通信を省くことによりオールリデュースの完了までの時間を短縮できるようになる。
また、特定部は、(c14)所定数の立方根の整数部分に相当する第1の数を算出し、所定数が、第1の数の自乗と第1の数に1を加えた数との積より小さい場合、第1の数を行数とし且つ第1の数を列数とする矩形領域から1又は複数の行と1又は複数の列とを抽出し、所定数が、第1の数の自乗と第1の数に1を加えた数との積以上であり、且つ、第1の数と第1の数に1を加えた数の自乗との積より小さい場合、第1の数を行数とし且つ第1の数に1を加えた数を列数とする矩形領域から1又は複数の行と1又は複数の列とを抽出し、所定数が、第1の数と第1の数に1を加えた数の自乗との積以上である場合、第1の数に1を加えた数を行数とし且つ第1の数に1を加えた数を列数とする矩形領域から1又は複数の行と1又は複数の列とを抽出してもよい。
行数および列数の偏りによって発生するオーバーヘッドを減らすことができるようになる。
また、特定部は、(c15)2の冪を行数とし且つ2の冪を列数とする矩形領域から1又は複数の行と1又は複数の列とを抽出してもよい。
情報処理装置の2の冪でない場合、2の冪である場合と比べるとより多くのフェーズ数がオールリデュースに必要になる。すなわち、通信のオーバーヘッドが発生する。従って、上で述べたような処理を実行すれば、通信のオーバーヘッドを削減することができるようになる。
また、特定部は、(c16)特定されたリーフスイッチの各々から抽出される情報処理装置の数が均一になるように、所定数の情報処理装置を抽出してもよい。
情報処理装置の数の偏りによって発生するオーバーヘッドを減らすことができるようになる。
また、実行指示を受信した情報処理装置は、(b1)通信の各フェーズにおいて、1台の他の情報処理装置に対してデータを送信し且つ他の情報処理装置からのデータを受信する情報処理装置に対してはデータを送信しないようにオールリデュースを実行してもよい。
経路競合が発生することを抑止できるようになる。
本実施の形態の第2の態様に係る管理装置は、(D)接続形態がラテン方陣ファットツリーである複数のリーフスイッチと、複数のリーフスイッチのいずれかにそれぞれ接続される複数の情報処理装置とを有する情報処理システムについてのラテン方陣ファットツリーに対応する有限射影平面の無限遠点以外の部分である格子部分から1又は複数の行と1又は複数の列とを抽出し、抽出された1又は複数の行に含まれ且つ抽出された1又は複数の列に含まれる点に相当するリーフスイッチを特定する特定部(実施の形態における設定部300は上記特定部の一例である)と、(E)特定されたリーフスイッチに接続された情報処理装置のうち所定数の情報処理装置に対して、オールリデュースの実行指示を送信する送信部(実施の形態における通信表生成部301は上記送信部の一例である)とを有する。
本実施の形態の第3の態様に係る情報処理方法は、(F)接続形態がラテン方陣ファットツリーである複数のリーフスイッチと、複数のリーフスイッチのいずれかにそれぞれ接続される複数の情報処理装置とを有する情報処理システムについてのラテン方陣ファットツリーに対応する有限射影平面の無限遠点以外の部分である格子部分から1又は複数の行と1又は複数の列とを抽出し、抽出された1又は複数の行に含まれ且つ抽出された1又は複数の列に含まれる点に相当するリーフスイッチを特定し、(G)特定されたリーフスイッチに接続された情報処理装置のうち所定数の情報処理装置に対して、オールリデュースの実行指示を送信する処理を含む。
なお、上記方法による処理をコンピュータに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
接続形態がラテン方陣ファットツリーである複数のリーフスイッチと、
前記複数のリーフスイッチのいずれかにそれぞれ接続される複数の情報処理装置と、
管理装置と、
を有し、
前記管理装置は、
前記ラテン方陣ファットツリーに対応する有限射影平面の無限遠点以外の部分である格子部分から1又は複数の行と1又は複数の列とを抽出し、抽出された1又は複数の行に含まれ且つ抽出された1又は複数の列に含まれる点に相当するリーフスイッチを特定する特定部と、
特定された前記リーフスイッチに接続された情報処理装置のうち所定数の情報処理装置に対して、オールリデュースの実行指示を送信する送信部と、
を有する情報処理システム。
(付記2)
前記特定部は、
前記格子部分に含まれる矩形領域のうち所定の最適化関数の値が最大である矩形領域から前記1又は複数の行と前記1又は複数の列とを抽出する、
付記1記載の情報処理システム。
(付記3)
前記所定の最適化関数は、少なくとも通信コストと前記複数の情報処理装置の使用状況と前記複数のリーフスイッチの物理位置とに基づく関数である、
付記2記載の情報処理システム。
(付記4)
前記特定部は、
前記格子部分に含まれる矩形領域内のリーフスイッチに接続され且つ使用されていない第1情報処理装置の数が前記所定数を超えるまで前記矩形領域を拡張し、前記第1情報処理装置の数が前記所定数を超えた場合に前記矩形領域から前記1又は複数の行と前記1又は複数の列とを抽出する、
付記1記載の情報処理システム。
(付記5)
前記特定部は、
前記所定数の平方根の整数部分に1を加えた数を行数とし且つ当該数を列数とする矩形領域から前記1又は複数の行と前記1又は複数の列とを抽出する、
付記1記載の情報処理システム。
(付記6)
前記特定部は、
前記所定数の立方根の整数部分に相当する第1の数を算出し、
前記所定数が、前記第1の数の自乗と前記第1の数に1を加えた数との積より小さい場合、前記第1の数を行数とし且つ前記第1の数を列数とする矩形領域から前記1又は複数の行と前記1又は複数の列とを抽出し、
前記所定数が、前記第1の数の自乗と前記第1の数に1を加えた数との積以上であり、且つ、前記第1の数と前記第1の数に1を加えた数の自乗との積より小さい場合、前記第1の数を行数とし且つ前記第1の数に1を加えた数を列数とする矩形領域から前記1又は複数の行と前記1又は複数の列とを抽出し、
前記所定数が、前記第1の数と前記第1の数に1を加えた数の自乗との積以上である場合、前記第1の数に1を加えた数を行数とし且つ前記第1の数に1を加えた数を列数とする矩形領域から前記1又は複数の行と前記1又は複数の列とを抽出する、
付記1記載の情報処理システム。
(付記7)
前記特定部は、
2の冪を行数とし且つ2の冪を列数とする矩形領域から前記1又は複数の行と前記1又は複数の列とを抽出する、
付記1記載の情報処理システム。
(付記8)
前記特定部は、
特定された前記リーフスイッチの各々から抽出される情報処理装置の数が均一になるように、前記所定数の情報処理装置を抽出する、
付記1乃至7のいずれか1つ記載の情報処理システム。
(付記9)
前記実行指示を受信した情報処理装置は、
通信の各フェーズにおいて、1台の他の情報処理装置に対してデータを送信し且つ他の情報処理装置からのデータを受信する情報処理装置に対してはデータを送信しないように前記オールリデュースを実行する、
付記1乃至8のいずれか1つ記載の情報処理システム。
(付記10)
接続形態がラテン方陣ファットツリーである複数のリーフスイッチと、前記複数のリーフスイッチのいずれかにそれぞれ接続される複数の情報処理装置とを有する情報処理システムについての前記ラテン方陣ファットツリーに対応する有限射影平面の無限遠点以外の部分である格子部分から1又は複数の行と1又は複数の列とを抽出し、抽出された1又は複数の行に含まれ且つ抽出された1又は複数の列に含まれる点に相当するリーフスイッチを特定する特定部と、
特定された前記リーフスイッチに接続された情報処理装置のうち所定数の情報処理装置に対して、オールリデュースの実行指示を送信する送信部と、
を有する管理装置。
(付記11)
コンピュータに、
接続形態がラテン方陣ファットツリーである複数のリーフスイッチと、前記複数のリーフスイッチのいずれかにそれぞれ接続される複数の情報処理装置とを有する情報処理システムについての前記ラテン方陣ファットツリーに対応する有限射影平面の無限遠点以外の部分である格子部分から1又は複数の行と1又は複数の列とを抽出し、抽出された1又は複数の行に含まれ且つ抽出された1又は複数の列に含まれる点に相当するリーフスイッチを特定し、
特定された前記リーフスイッチに接続された情報処理装置のうち所定数の情報処理装置に対して、オールリデュースの実行指示を送信する、
処理をコンピュータに実行させるプログラム。