[実施の形態1]
全対全通信(all-to-all communication)は集団通信の一種である。全対全通信とは、並列計算機における各ノードが並列計算機における全ノードに対してデータを送信し且つ全ノードからデータを受信する通信である。
また、オールリデュース通信も集団通信の一種である。オールリデュース通信とは、対象の全ノードが持つデータを用いて実行した演算の結果を対象の全ノードが持つための通信のことであり、オールリデュースとは、その演算のことである。
図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」を持つことができる。
本実施の形態においては、ラテン方陣ファットツリーシステムにおける特定のLeafスイッチ群を使用して、全対全通信とオールリデュース通信とを、経路競合を発生させることなく並列で実行することを考える。ここで、経路競合とは、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は、通信表生成部301と、通信表格納部303と、トポロジデータ格納部305とを有する。通信表生成部301は、第1生成部3011と、第2生成部3013と、第3生成部3015とを有する。通信表生成部301は、例えば、図49におけるメモリ2501にロードされたプログラムがCPU(Central Processing Unit)2503に実行されることで実現される。通信表格納部303及びトポロジデータ格納部305は、例えば、図49におけるメモリ2501又はHDD(Hard Disk Drive)2505に設けられる。
第1生成部3011は、トポロジデータ格納部305に格納されている、ラテン方陣ファットツリーシステム1000のネットワークトポロジの情報と入力されたパラメータとに基づき、第1の通信表を生成し、生成された第1の通信表を通信表格納部303に格納する。第2生成部3013は、トポロジデータ格納部305に格納されている、ラテン方陣ファットツリーシステム1000のネットワークトポロジの情報に基づき、第2の通信表(A)及び第2の通信表(B)を生成し、生成された第2の通信表(A)及び第2の通信表(B)を通信表格納部303に格納する。第3生成部3015は、トポロジデータ格納部305に格納されている、ラテン方陣ファットツリーシステム1000のネットワークトポロジの情報に基づき、第3の通信表を生成し、生成された第3の通信表を通信表格納部303に格納する。通信表生成部301は、通信表格納部303に格納された第1の通信表、第2の通信表(A)、第2の通信表(B)及び第3の通信表を、所定のタイミングで又はリクエストに応じて、集団通信を実行するサーバに送信する。
図11は、サーバの機能ブロック図である。サーバは、処理部101と、通信表格納部103と、フェーズデータ格納部105とを有する。処理部101は、第1通信部1011と、第2通信部1013と、第3通信部1015と、第4通信部1017とを有する。処理部101は、例えば、図49におけるメモリ2501にロードされたプログラムがCPU2503に実行されることで実現される。通信表格納部103及びフェーズデータ格納部105は、例えば、図49におけるメモリ2501又はHDD2505に設けられる。
通信表格納部103には、管理装置3から受信した第1の通信表、第2の通信表(A)、第2の通信表(B)及び第3の通信表が格納される。第1通信部1011は、通信表格納部103に格納された第1の通信表に従って通信を行う。第2通信部1013は、通信表格納部103に格納された第2の通信表(A)に従って通信を行う。第3通信部1015は、通信表格納部103に格納された第2の通信表(B)に従って通信を行う。なお、第2通信部1013及び第3通信部1015は、フェーズデータ格納部105に格納されているデータに基づき集団通信のフェーズを制御する。第4通信部1017は、通信表格納部103に格納された第3の通信表に従って通信を行う。
次に、図12乃至図40を用いて、管理装置3が実行する処理について説明する。図12は、管理装置3が実行する処理の処理フローを示す図である。
管理装置3における通信表生成部301は、ユーザからパラメータの入力を受け付ける(図12:ステップS1)。入力されるパラメータは、n、k及びmである。これらのパラメータについては後述する。
通信表生成部301は、ラテン方陣ファットツリーシステム1000のネットワークトポロジの情報をトポロジデータ格納部305から読み出す(ステップS3)。ネットワークトポロジの情報は、例えば、Spineスイッチ、Leafスイッチ及びサーバの接続関係の情報等を含む。
通信表生成部301は、ステップS1において入力された情報とステップS3において読み出された情報とに基づき、有限射影平面の格子部分に矩形領域を設定する(ステップS5)。
図13は、矩形領域について説明するための図である。図13においては、ラテン方陣ファットツリーシステム1000におけるLeafスイッチのうち無限遠点以外の点である格子部分に相当するLeafスイッチが示されている。パラメータnは矩形領域の行数を表し、パラメータkは矩形領域の列数を表し、パラメータmは集団通信に参加するサーバの台数を表す。本実施の形態においては、矩形領域に含まれるLeafスイッチ(以下、実行スイッチと呼ぶ)以外のLeafスイッチに接続されるサーバは、集団通信には参加しない。以下の説明では、特に断りが無い限りn=3、k=2、m=3であるとし、割り振られた番号が0又は1であるサーバが全対全通信を実行し、割り振られた番号が2であるサーバがオールリデュース通信を実行するものとする。
第1生成部3011は、ステップS5において設定された矩形領域とステップS3において読み出たネットワークトポロジの情報とに基づき、第1の通信表を生成する処理である第1生成処理を実行する(ステップS7)。第1生成処理については後で説明する。
第2生成部3013は、ステップS5において設定された矩形領域とステップS3において読み出されたネットワークトポロジの情報とに基づき、第2の通信表(A)及び第2の通信表(B)を生成する処理である第2生成処理を実行する(ステップS9)。第2生成処理については後で説明する。
第3生成部3015は、ステップS5において設定された矩形領域とステップS3において読み出されたネットワークトポロジの情報とに基づき、第3の通信表を生成する処理である第3生成処理を実行する(ステップS11)。第3生成処理については後で説明する。
通信表生成部301は、通信表格納部303に格納された第1の通信表、第2の通信表(A)、第2の通信表(B)及び第3の通信表を読み出す。通信表生成部301は、第1の通信表、第2の通信表(A)、第2の通信表(B)及び第3の通信表を、集団通信を実行するサーバ(すなわち、実行スイッチに接続されるサーバのうち、割り振られた番号が0であるサーバ、割り振られた番号が1であるサーバ、及び割り振られた番号が2であるサーバ)に送信する(ステップS13)。そして処理は終了する。
以上のような処理を実行すれば、第1の通信表、第2の通信表(A)、第2の通信表(B)及び第3の通信表を受信したサーバは、該サーバが実行すべき集団通信を適切な手順で実行できるようになる。
次に、図14乃至図20を用いて、第1生成処理について説明する。図14は、第1生成処理の処理フローを示す図である。
第1生成部3011は、各実行スイッチでのオールリデュースの各フェーズにおいて通信を実行するサーバの識別情報を含む第1の通信表を生成する(図14:ステップS21)。
図15乃至図19は、実行スイッチに接続されるサーバ間でのオールリデュースについて説明するための図である。図15乃至図19において、正方形の図形は実行スイッチであるLeafスイッチを表し、丸の図形はサーバを表し、Leafスイッチとサーバとを結ぶ線分はリンクを表す。サーバに付された数字はサーバが持つ値を表す。
まず、図15及び図16を用いて、Leafスイッチに接続されるサーバの数が偶数(ここでは、2の冪である4)である場合について説明する。
例えば、図15(a)に示すように、4台のサーバがそれぞれ「3」、「7」、「2」、「2」を持つとする。この場合、2台のサーバを含むペアの各々において値が共有され、値の演算(ここでは加算)が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図15(b)に示すように、2台のサーバが値「10」を持ち、残りの2台のサーバが値「4」を持つ。そして、値「10」を持つサーバと値「4」を持つサーバとを含む各ペアにおいて値が共有され、値の演算(ここでは加算)が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
これにより、最終的には図16に示すように各サーバが値「14」を持つ。
次に、図17乃至図19を用いて、Leafスイッチに接続されるサーバの数が奇数(ここでは5)である場合について説明する。
例えば、図17(a)に示すように、5台のサーバがそれぞれ「1」、「4」、「5」、「2」、「8」を持つとする。この場合、5台のうち2台のサーバにおいて値が共有され、値の演算(ここでは加算)が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図17(b)に示すように、5台のサーバがそれぞれ「1」、「4」、「5」、「10」、「10」を持つ。そして、値「1」を持つサーバと値「4」を持つサーバとを含むペアと、値「5」を持つサーバと値「10」を持つサーバとを含むペアとにおいて値が共有され値の演算が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図18(a)に示すように、5台のサーバがそれぞれ「5」、「5」、「15」、「15」、「10」を持つ。そして、値「5」を持つサーバと値「15」を持つサーバとを含むペアの各々において値が共有され値の演算が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図18(b)に示すように、5台のサーバがそれぞれ「20」、「20」、「20」、「20」、「10」を持つ。そして、値「20」を持つサーバが値「10」を持つサーバに対して値「20」を通知する。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図19に示すように、最終的に5台のサーバがそれぞれ値「20」を持つようになる。
以上の説明は複数のサーバの間で行われるオールリデュースの一例についての説明であるが、サーバ数がこの例以外の数である場合においても、基本的には同様の方法でオールリデュースを行うことができる。
ここで、x台(xは自然数)のサーバの間でのオールリデュースを行う場合における通信表を生成する処理(以下、Allreduce(x)のように呼ぶ)について説明する。本実施の形態においては、再帰的な処理によって通信表が生成される。
(1)Leafスイッチに接続されるサーバの数xが1である場合、処理は終了する。
(2)Leafスイッチに接続されるサーバの数xが2である場合、2台のサーバの間での通信についての通信情報(具体的には、サーバのペアの情報)が通信表に書き込まれる。
(3)Leafスイッチに接続されるサーバの数xが奇数2y+1(yは自然数)である場合、x台のサーバのうち2台のサーバ(サーバPおよびサーバQ)が選択され、サーバPとサーバQとの間でオールリデュース通信についての通信情報が通信表に書き込まれる。そして、サーバP及びサーバQのうちいずれかのサーバと残りの(2y−1)台のサーバと(つまり、2y台のサーバ)について、Allreduce(2y)が呼び出される。そして、Allreduce(2y)の結果をサーバPからサーバQに伝えるための通信情報が通信表に書き込まれる。
(4)Leafスイッチに接続されるサーバの数が2y(yは2以上の自然数)である場合、サーバはy台のグループとy台のグループとに分けられ、同時並行でそれぞれのグループについてAllreduce(y)が呼び出される。
以上のような処理を実行すれば、x台のサーバの間でのオールリデュースを行う場合における通信表が生成される。図15乃至図19の説明から明らかなように、このような方法で生成された通信表に従ってオールリデュース通信が行われれば経路競合は発生しない。
図14の説明に戻り、第1生成部3011は、ステップS21において生成された第1の通信表を通信表格納部303に格納する(ステップS23)。そして処理は呼び出し元に戻る。
図20は、第1の通信表の一例を示す図である。図20の例においては、フェーズ番号と、通信を実行するサーバのペアの情報とが第1の通信表に登録されている。N1等の文字列はサーバの識別情報(例えばLID)を表す。通信1と通信2とは同時並行で実行される。例えばフェーズ1においては、サーバN1とサーバN2との間の通信と、サーバN3とサーバN4との間の通信とが同時並行で実行される。図20に示した通信表によれば、フェーズ0乃至3における各サーバの通信相手は以下のとおりである。
サーバN1:−,N2,N3,−
サーバN2:−,N1,N4,−
サーバN3:−,N4,N1,−
サーバN4:N5,N3,N2,N5(送)
サーバN5:N4,−,−,N4(受)
ここで、「−」は通信が行われないことを表す。「(送)」は送信することを表し、「(受)」は受信することを表す。例えばサーバN5は、フェーズ0においてサーバN4と通信し、フェーズ1及び2においては通信を行わず、フェーズ3においてはサーバN4からデータを受信する。なお、図20の例では1台の実行スイッチについての通信情報が示されているが、実際には各実行スイッチについての通信情報が第1の通信表に含まれる。
以上のような処理を実行すれば、矩形領域において、同じLeafスイッチに接続されるサーバは同じ結果を持つようになる。
次に、図21乃至図36を用いて、第2生成処理について説明する。図21は、第2生成処理の処理フローを示す図である。上で述べたように、第1の実施の形態においては、割り振られた番号が「0」又は「1」であるサーバが全対全通信を実行し、割り振られた番号が「2」であるサーバがオールリデュース通信を実行するとする。
第2生成部3013は、全対全通信についての通信情報を含む第2の通信表(A)を生成する(図21:ステップS31)。
図22は、第2の通信表(A)の一例を示す図である。第2の通信表(A)には、全対全通信を実行するサーバについて、各フェーズ群の通信情報が格納されている。サーバの数が2であるので、各フェーズ群は2つのフェーズを含む。括弧内における第1の要素は有限射影平面における傾きを表し、括弧内における第2の要素は有限射影平面におけるホップ数を表す。「*」はサーバがそのサーバ自身に対してデータを送信することを意味する。
第2の通信表(A)の生成方法について簡単に説明する。まず、サーバ番号の列のうちいずれかの列を選択し、その列についてのサーバが全サーバと通信を行うように通信情報を書き込む。次に、選択されなかった列のうちいずれかの列について、サーバがが全サーバと通信を行うように通信情報を書き込む。但し、行方向において同一の傾きが存在しないように傾きが選択される(図22に示すように、いずれの行においても同一の傾きが設定されたサーバは存在しない)。このような処理を繰り返すことによって第2の通信表(A)が生成される。なお、この方法は生成方法の一例であり、この方法以外の方法によって第2の通信表(A)を生成してもよい。
一例として、図22に示した第2の通信表(A)のフェーズ群0において行われる全対全通信について、図23及び図24を用いて説明する。
フェーズ群0においては、割り振られた番号が0であるサーバ(ここでは、サーバ「0」と呼ぶ)についての傾きが∞であり、ホップ数は1である。傾きが∞であることは縦方向の通信であることを意味する。従って、図23に示すように、LeafスイッチP(0,0)に接続されるサーバ「0」はLeafスイッチP(0,1)に接続されるサーバ「0」にデータを送信し、LeafスイッチP(0,1)に接続されるサーバ「0」はLeafスイッチP(0,2)に接続されるサーバ「0」にデータを送信し、LeafスイッチP(0,2)に接続されるサーバ「0」はLeafスイッチP(0,0)に接続されるサーバ「0」にデータを送信する。LeafスイッチP(1,0)に接続されるサーバ「0」はLeafスイッチP(1,1)に接続されるサーバ「0」にデータを送信し、LeafスイッチP(1,1)に接続されるサーバ「0」はLeafスイッチP(1,2)に接続されるサーバ「0」にデータを送信し、LeafスイッチP(1,2)に接続されるサーバ「0」はLeafスイッチP(1,0)に接続されるサーバ「0」にデータを送信する。また、フェーズ群0においては、割り振られた番号が1であるサーバ(ここでは、サーバ「1」と呼ぶ)についての傾きが2であり、ホップ数は1である。従って、図23に示すように、LeafスイッチP(0,0)に接続されるサーバ「1」はLeafスイッチP(1,2)に接続されるサーバ「1」にデータを送信し、LeafスイッチP(0,1)に接続されるサーバ「1」はLeafスイッチP(1,0)に接続されるサーバ「1」にデータを送信し、LeafスイッチP(0,2)に接続されるサーバ「1」はLeafスイッチP(1,1)に接続されるサーバ「1」にデータを送信する。LeafスイッチP(1,0)に接続されるサーバ「1」はLeafスイッチP(0,2)に接続されるサーバ「1」にデータを送信し、LeafスイッチP(1,1)に接続されるサーバ「1」はLeafスイッチP(0,0)に接続されるサーバ「1」にデータを送信し、LeafスイッチP(1,2)に接続されるサーバ「1」はLeafスイッチP(0,1)に接続されるサーバ「1」にデータを送信する。
図24は、全対全通信で使用されるSpineスイッチを示す図である。図24に示すように、サーバ「0」が実行する全対全通信によって、SpineスイッチL(0)及びSpineスイッチL(1)が使用される。サーバ「1」が実行する全対全通信によって、SpineスイッチL(1,0)、SpineスイッチL(1,1)、SpineスイッチL(1,2)、SpineスイッチL(2,0)、SpineスイッチL(2,1)及びSpineスイッチL(2,2)が使用される。
フェーズ群0においては、1つのリンクの同一方向に同時に複数のパケットが送信されることがないので、経路競合は発生しない。なお、フェーズ群0において、LeafスイッチP(0,0)に接続されるサーバ「0」は、LeafスイッチP(0,1)に接続される2台のサーバにデータを送信する。従って、経路競合が発生しないようにするため、フェーズ群0には2つのフェーズが含まれる。フェーズ群0以外のフェーズも、同様に、2つのフェーズを含む。
また、他の例として、図22に示した第2の通信表(A)のフェーズ群3において行われる全対全通信について、図25及び図26を用いて説明する。
フェーズ群3においては、サーバ「0」についての傾きが1であり、ホップ数は1である。従って、図25に示すように、LeafスイッチP(0,0)に接続されるサーバ「0」はLeafスイッチP(1,1)に接続されるサーバ「0」にデータを送信し、LeafスイッチP(0,1)に接続されるサーバ「0」はLeafスイッチP(1,2)に接続されるサーバ「0」にデータを送信し、LeafスイッチP(0,2)に接続されるサーバ「0」はLeafスイッチP(1,0)に接続されるサーバ「0」にデータを送信する。LeafスイッチP(1,0)に接続されるサーバ「0」はLeafスイッチP(0,1)に接続されるサーバ「0」にデータを送信し、LeafスイッチP(1,1)に接続されるサーバ「0」はLeafスイッチP(0,2)に接続されるサーバ「0」にデータを送信し、LeafスイッチP(1,2)に接続されるサーバ「0」はLeafスイッチP(0,0)に接続されるサーバ「0」にデータを送信する。また、フェーズ群3においては、サーバ「1」についての傾きが∞であり、ホップ数は2である。従って、図25に示すように、LeafスイッチP(0,0)に接続されるサーバ「1」はLeafスイッチP(0,2)に接続されるサーバ「1」にデータを送信し、LeafスイッチP(0,1)に接続されるサーバ「1」はLeafスイッチP(0,0)に接続されるサーバ「1」にデータを送信し、LeafスイッチP(0,2)に接続されるサーバ「1」はLeafスイッチP(0,1)に接続されるサーバ「1」にデータを送信する。LeafスイッチP(1,0)に接続されるサーバ「1」はLeafスイッチP(1,2)に接続されるサーバ「1」にデータを送信し、LeafスイッチP(1,1)に接続されるサーバ「1」はLeafスイッチP(1,0)に接続されるサーバ「1」にデータを送信し、LeafスイッチP(1,2)に接続されるサーバ「1」はLeafスイッチP(1,1)に接続されるサーバ「1」にデータを送信する。
図26は、全対全通信で使用されるSpineスイッチを示す図である。図26に示すように、サーバ「0」が実行する全対全通信によって、SpineスイッチL(1,0)、SpineスイッチL(1,1)、SpineスイッチL(1,2)、SpineスイッチL(2,0)、SpineスイッチL(2,1)及びSpineスイッチL(2,2)が使用される。サーバ「1」が実行する全対全通信によって、SpineスイッチL(0)及びSpineスイッチL(1)が使用される。
フェーズ群3においては、1つのリンクの同一方向に同時に複数のパケットが送信されることがないので、経路競合は発生しない。
また、他の例として、図22に示した第2の通信表(A)のフェーズ群4において行われる全対全通信について、図27及び図28を用いて説明する。
フェーズ群4においては、サーバ「0」についての傾きが2であり、ホップ数は1である。従って、図27に示すように、LeafスイッチP(0,0)に接続されるサーバ「0」はLeafスイッチP(1,2)に接続されるサーバ「0」にデータを送信し、LeafスイッチP(0,1)に接続されるサーバ「0」はLeafスイッチP(1,0)に接続されるサーバ「0」にデータを送信し、LeafスイッチP(0,2)に接続されるサーバ「0」はLeafスイッチP(1,1)に接続されるサーバ「0」にデータを送信する。LeafスイッチP(1,0)に接続されるサーバ「0」はLeafスイッチP(0,2)に接続されるサーバ「0」にデータを送信し、LeafスイッチP(1,1)に接続されるサーバ「0」はLeafスイッチP(0,0)に接続されるサーバ「0」にデータを送信し、LeafスイッチP(1,2)に接続されるサーバ「0」はLeafスイッチP(0,1)に接続されるサーバ「0」にデータを送信する。また、フェーズ群4においては、サーバ「1」についての傾きが0であり、ホップ数は1である。従って、図27に示すように、LeafスイッチP(0,0)に接続されるサーバ「1」はLeafスイッチP(1,0)に接続されるサーバ「1」にデータを送信し、LeafスイッチP(0,1)に接続されるサーバ「1」はLeafスイッチP(1,1)に接続されるサーバ「1」にデータを送信し、LeafスイッチP(0,2)に接続されるサーバ「1」はLeafスイッチP(1,2)に接続されるサーバ「1」にデータを送信する。LeafスイッチP(1,0)に接続されるサーバ「1」はLeafスイッチP(0,0)に接続されるサーバ「1」にデータを送信し、LeafスイッチP(1,1)に接続されるサーバ「1」はLeafスイッチP(0,1)に接続されるサーバ「1」にデータを送信し、LeafスイッチP(1,2)に接続されるサーバ「1」はLeafスイッチP(0,2)に接続されるサーバ「1」にデータを送信する。
図28は、全対全通信で使用されるSpineスイッチを示す図である。図28に示すように、サーバ「0」が実行する全対全通信によって、SpineスイッチL(1,0)、SpineスイッチL(1,1)、SpineスイッチL(1,2)、SpineスイッチL(2,0)、SpineスイッチL(2,1)及びSpineスイッチL(2,2)が使用される。サーバ「1」が実行する全対全通信によって、SpineスイッチL(0,0)、SpineスイッチL(0,1)及びSpineスイッチL(0,2)が使用される。
フェーズ群4においては、1つのリンクの同一方向に同時に複数のパケットが送信されることがないので、経路競合は発生しない。
図21の説明に戻り、第2生成部3013は、全対全通信の各フェーズ群のうちオールリデュース通信を実行可能なフェーズ群と、当該フェーズ群において利用可能な傾きとを特定する(ステップS33)。
図29は、オールリデュース通信を実行可能なフェーズ群と当該フェーズ群において利用可能な傾きとについて説明するための図である。ここでは、オールリデュース通信に傾き「0」及び「∞」を利用するとする。括弧外の数字は傾きを表し、括弧内の数字はホップ数を表す。図29の例では、フェーズ群2のみにおいて、全対全通信に傾き「0」及び「∞」が利用されているので、フェーズ群2以外のフェーズ群においてはオールリデュース通信を実行することができる。フェーズ群0において、全対全通信に傾き「2」と傾き「∞」とが利用されるので、オールリデュース通信に傾き「0」を利用可能である。フェーズ群1において、全対全通信に傾き「∞」が利用されるので、オールリデュース通信に傾き「0」を利用可能である。フェーズ群3において、全対全通信に傾き「1」と傾き「∞」とが利用されるので、オールリデュース通信に傾き「0」を利用可能である。フェーズ群4において、全対全通信に傾き「0」と傾き「2」とが利用されるので、オールリデュース通信に傾き「∞」を利用可能である。フェーズ群5において、全対全通信に傾き「1」が利用されるので、オールリデュース通信に傾き「∞」を利用可能である。
また、例えば格子部分のサイズが5*5であるようなラテン方陣ファットツリーシステムが有り、その格子部分に対して図30に示すように矩形領域が設定されたとする。このような場合も、同様の方法によって、全対全通信の各フェーズ群のうちオールリデュース通信を実行可能なフェーズ群と、当該フェーズ群において利用可能な傾きとが特定される。具体的には、例えば図31に示すような結果が得られる。
図21の説明に戻り、第2生成部3013は、第1の傾き(例えば0)についてのオールリデュース通信と第2の傾き(例えば∞)についてのオールリデュース通信とについての通信情報を含む第2の通信表(B)を生成する(ステップS35)。
図32は、第2の通信表(B)の一例を示す図である。図32の例では、各フェーズ群について、実行スイッチに接続されるサーバのうち割り振られた番号が2であるサーバ(ここでは、サーバ「2」と呼ぶ)により実行されるオールリデュースについての通信情報が格納される。第2の通信表(B)はオールリデュース通信についての通信表であるので、第1の通信表と同様の方法によって生成される。
矩形領域内の異なるLeafスイッチに接続されるサーバ間でのオールリデュースは、異なる2つの傾きについてのオールリデュース通信により実現される。図32の例では、傾き「0」についてのオールリデュースと傾き「∞」についてのオールリデュースとによって、矩形領域内の異なるLeafスイッチに接続されるサーバ間でのオールリデュースが実現される。一般に、x台のサーバが実行する全対全通信のフェーズ数はO(x)であり、x台のサーバが実行するオールリデュース通信のフェーズ数はO(log(x))(底は2)であるので、全体全通信の実行中にオールリデュース通信を完了することが可能である。
図33は、傾き「0」についてのオールリデュースについて説明するための図である。傾き「0」についてのオールリデュースにより、LeafスイッチP(0,0)に接続されるサーバ「2」と、LeafスイッチP(1,0)に接続されるサーバ「2」とが同じ結果を持つ。LeafスイッチP(0,1)に接続されるサーバ「2」と、LeafスイッチP(1,1)に接続されるサーバ「2」とが同じ結果を持つ。LeafスイッチP(0,2)に接続されるサーバ「2」と、LeafスイッチP(1,2)に接続されるサーバ「2」とが同じ結果を持つ。
図34は、傾き「∞」についてのオールリデュースについて説明するための図である。傾き「∞」についてのオールリデュースにより、LeafスイッチP(0,0)に接続されるサーバ「2」と、LeafスイッチP(0,1)に接続されるサーバ「2」と、LeafスイッチP(0,2)に接続されるサーバ「2」とが同じ結果を持つ。LeafスイッチP(1,0)に接続されるサーバ「2」と、LeafスイッチP(1,1)に接続されるサーバ「2」と、LeafスイッチP(1,2)に接続されるサーバ「2」とが同じ結果を持つ。
従って、傾き「0」についてのオールリデュースと傾き「∞」についてのオールリデュースとを実行することで、矩形領域内において、各実行スイッチのサーバ「2」が同じ結果を持つ。
図35は、図32の第2の通信表(B)に示したフェーズ群0において実行されるオールリデュース通信によって使用されるSpineスイッチを示す図である。図35に示すように、フェーズ群0においては、サーバ「2」のオールリデュース通信によって、SpineスイッチL(0,0)と、SpineスイッチL(0,1)と、SpineスイッチL(0,2)とが使用される。図24との比較から明らかなように、全対全通信によって使用されるSpineスイッチとオールリデュース通信によって使用されるSpineスイッチとが異なるので、経路競合は発生しない。
図36は、図32の第2の通信表(B)に示したフェーズ群4において実行されるオールリデュース通信によって使用されるSpineスイッチを示す図である。図36に示すように、フェーズ群0においては、サーバ「2」のオールリデュース通信によって、SpineスイッチL(0)と、SpineスイッチL(1)とが使用される。図28との比較から明らかなように、全対全通信によって使用されるSpineスイッチとオールリデュース通信によって使用されるSpineスイッチとが異なるので、経路競合は発生しない。
図21の説明に戻り、第2生成部3013は、第2の通信表(A)及び第2の通信表(B)を通信表格納部303に格納する(ステップS37)。そして処理は呼び出し元に戻る。
以上のように、第2生成処理においては、全対全通信とオールリデュース通信とを並行して実行するための第2の通信表(A)及び第2の通信表(B)が生成される。
次に、図37乃至図40を用いて、第3生成処理について説明する。図37は、第3生成処理の処理フローを示す図である。
第3生成部3015は、サーバ「2」から当該サーバ「2」と同じLeafスイッチに接続される他サーバへの結果配布における各フェーズで通信を実行するサーバの識別情報を含む第3の通信表を生成する(図37:ステップS41)。
図38乃至図40を用いて、第3の通信表にて実現される結果配布について説明する。図38乃至図40には、一例として、1台のLeafスイッチとそのLeafスイッチに接続される4台のサーバとが示されており、最も左に位置するサーバはサーバ「2」である。はじめに、図38に示すように、サーバ「2」は右から2番目のサーバに値「72」を送信する。
すると、図39に示すように、サーバ「2」及び右から2番目のサーバは値「72」を持ち、右から1番目のサーバ及び右から3番目のサーバは値「14」を持つ。そして、図39に示すように、サーバ「2」は値「72」を右から3番目のサーバに送信し、右から2番目のサーバは値「72」を右から1番目のサーバに送信する。
すると、図40に示すように、各サーバはオールリデュースの結果である値「72」を持つ。以上のようにして第3の通信表による結果配布が実現される。フェーズ数は2であり、いずれのフェーズにおいても、複数のパケットが同じ方向に同時に送信されるリンクは存在しないので、経路競合は発生していない。
図37の説明に戻り、第3生成部3015は、ステップS41において生成された第3の通信表を通信表格納部303に格納する(ステップS43)。そして処理は呼び出し元に戻る。なお、第3の通信表には、各実行スイッチにおける結果配布についての通信情報が、図20に示した第1の通信表と同様の形式で格納されるので、ここでは詳細な説明を省略する。
次に、図41乃至図43を用いて、サーバが実行する処理について説明する。本処理は、第1乃至第3の通信表を管理装置3から受信した各サーバが実行する処理である。
図41は、サーバが実行する処理の処理フローを示す図である。
サーバにおける第1通信部1011は、フェーズ番号を表す変数iを0に設定する(図41:ステップS51)。変数iはフェーズデータ格納部105に格納される。
第1通信部1011は、通信表格納部103に格納されている第1の通信表から、フェーズiの通信情報を特定する(ステップS53)。
第1通信部1011は、自サーバ(すなわち、本処理を実行しているサーバ)がフェーズiにおいて通信を実行するか判定する(ステップS55)。自サーバがフェーズiにおいて通信を実行するか否かは、特定された通信情報に自サーバの識別情報が含まれているか否かにより判定される。
自サーバがフェーズiにおいて通信を実行しない場合(ステップS55:Noルート)、処理はステップS59に移行する。一方、自サーバがフェーズiにおいて通信を実行する場合(ステップS55:Yesルート)、第1通信部1011は、ステップS53において特定された通信情報に従って通信を実行する(ステップS57)。
上で述べたように、第1の通信表に従って行われる通信は、同一のLeafスイッチに接続されるサーバ間でのオールリデュース通信であり、他のサーバから値を受信したサーバはオールリデュースに係る演算を実行する。
第1通信部1011は、i=imax1が成立するか判定する(ステップS59)。imax1は、第1の通信表に従って行われる通信のフェーズ番号の最大値である。i=imax1が成立しない場合(ステップS59:Noルート)、第1通信部1011は、iを1インクリメントする(ステップS61)。そして処理はステップS53に移行する。なお、フェーズの終了はバリア同期によって確認される。
一方、i=imax1が成立する場合(ステップS59:Yesルート)、処理は端子Aを介して図42のステップS63に移行する。
図42の説明に移行し、処理部101は、フェーズ番号を表す変数iを0に設定する(図42:ステップS63)。
処理部101は、通信表格納部103に格納されている第2の通信表(A)から、フェーズiの通信情報を特定し(ステップS65)、通信表格納部103に格納されている第2の通信表(B)から、フェーズiの通信情報を特定する(ステップS66)。
処理部101は、自サーバ(すなわち、本処理を実行しているサーバ)がフェーズiにおいてオールリデュース通信を実行するか判定する(ステップS67)。自サーバがフェーズiにおいてオールリデュース通信を実行するか否かは、第2の通信表(B)から特定された通信情報に自サーバの識別情報が含まれているか否かにより判定される。
自サーバがフェーズiにおいてオールリデュース通信を実行しない場合(ステップS67:Noルート)、処理部101は、第2通信部1013を呼び出す。そして、第2通信部1013は、ステップS65において特定された通信情報に従って全対全通信を実行する(ステップS69)。そして処理はステップS71に移行する。一方、自サーバがフェーズiにおいてオールリデュース通信を実行する場合(ステップS67:Yesルート)、処理部101は、第2通信部1013及び第3通信部1015を呼び出す。そして、第2通信部1013はステップS65において特定された通信情報に従って全対全通信を実行し、並行して、第3通信部1015はステップS66において特定された通信情報に従ってオールリデュース通信を実行する(ステップS68)。
処理部101は、i=imax2が成立するか判定する(ステップS71)。imax2は、第2の通信表(A)及び第2の通信表(B)に従って行われる通信のフェーズ番号の最大値である。i=imax2が成立しない場合(ステップS71:Noルート)、処理部101は、第2通信部1013によるバリア同期および第3通信部1015によるバリア同期の終了後、iを1インクリメントする(ステップS73)。そして処理はステップS65に移行する。
一方、i=imax2が成立する場合(ステップS71:Yesルート)、処理は端子Bを介して図43のステップS75に移行する。
図43の説明に移行し、第4通信部1017は、フェーズ番号を表す変数iを0に設定する(図43:ステップS75)。
第4通信部1017は、通信表格納部103に格納されている第3の通信表から、フェーズiの通信情報を特定する(ステップS77)。
第4通信部1017は、自サーバ(すなわち、本処理を実行しているサーバ)がフェーズiにおいて通信を実行するか判定する(ステップS79)。自サーバがフェーズiにおいて通信を実行するか否かは、特定された通信情報に自サーバの識別情報が含まれているか否かにより判定される。
自サーバがフェーズiにおいて通信を実行しない場合(ステップS79:Noルート)、処理はステップS83に移行する。一方、自サーバがフェーズiにおいて通信を実行する場合(ステップS79:Yesルート)、第4通信部1017は、ステップS77において特定された通信情報に従って通信を実行する(ステップS81)。
上で述べたように、第3の通信表に従って行われる通信は、オールリデュースの結果を持つサーバから当該サーバと同じLeafスイッチに接続される他のサーバへの結果配布である。
第4通信部1017は、i=imax3が成立するか判定する(ステップS83)。imax3は、第3の通信表に従って行われる通信のフェーズ番号の最大値である。i=imax3が成立しない場合(ステップS83:Noルート)、第4通信部1017は、iを1インクリメントする(ステップS85)。そして処理はステップS77に移行する。なお、フェーズの終了はバリア同期によって確認される。
一方、i=imax3が成立する場合(ステップS83:Yesルート)、処理は終了する。
以上のように、上で述べた例においては、割り振られた番号が「0」又は「1」であるサーバは全対全通信を実行する一方で、割り振られた番号が「2」であるサーバはオールリデュース通信を実行することができる。よって、本実施の形態の方法によれば、ラテン方陣ファットツリーシステム1000における特定のLeafスイッチ群を使用して複数の集団通信を並行して実行することができるようになる。
また、上で述べたように、本実施の形態においては、オールリデュース通信の各過程において経路競合が発生することはない。
[実施の形態2]
第1の実施の形態においては全対全通信とオールリデュース通信とが並行して実行されるが、或る演算のオールリデュース通信と別の演算のオールリデュース通信とが並行して実行されてもよい。
図44は、第2の実施の形態の第2生成処理の処理フローを示す図である。
まず、第2生成部3013は、第1の傾き(例えば0)についてのオールリデュース通信と第2の傾き(例えば∞)についてのオールリデュース通信とについての通信情報を含む第2の通信表(A)を生成する(図44:ステップS91)。
第2生成部3013は、第1の傾きとは異なる第3の傾き(例えば1又は∞)についてのオールリデュース通信と第2の傾きとは異なる第4の傾き(例えば0又は1)についてのオールリデュース通信とについての通信情報を含む第2の通信表(B)を生成する(ステップS93)。
第2生成部3013は、第2の通信表(A)及び第2の通信表(B)を通信表格納部303に格納する(ステップS95)。そして処理は呼び出し元に戻る。
以上のような処理を実行すれば、第1の傾きについてのオールリデュース通信と第3の傾きについてのオールリデュース通信とを並行して実行したとしても経路競合は発生せず、第2の傾きについてのオールリデュース通信と第4の傾きについてのオールリデュース通信とを並行して実行したとしても経路競合は発生しない。よって、第2の通信表(A)により実現されるオールリデュース通信(例えば演算が加算であるオールリデュース通信)と、第2の通信表(B)により実現されるオールリデュース通信(例えば演算が乗算であるオールリデュース通信)とを、経路競合を発生させることなく並行して実行することができるようになる。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した管理装置3及びサーバの機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
また、第1の実施の形態においては、オールリデュースの演算として加算が行われるが、加算以外の演算(例えば乗算)が行われてもよい。
また、上で述べた例においては、傾き「0」と傾き「∞」との組合せによってオールリデュースが実現されるが、その他の異なる2つの傾きの組合せによってオールリデュースが実現されてもよい。
[付録]
本付録においては、ラテン方陣ファットツリーおよび有限射影平面について説明する。
有限射影平面とは、普通の平面に無限遠点をいくつか加え且つ「平行な2直線」をなくした平面に相当する。図45に、位数(以下nとする)が2であり且つポート数が6(=2(n+1))である場合の有限射影平面の構造を示す。図45において、枠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は素数であるという制約がある。
有限射影平面の構造は、トポロジ構造に置き換えられる。例えば、図46(a)に示した有限射影平面の構造は、図46(b)に示したトポロジ構造に置き換えられる。図46(a)において、直線はSpineスイッチを表し、点はLeafスイッチを表す。図46(b)において、ハッチングされた矩形はSpineスイッチを表し、ハッチングされていない矩形はLeafスイッチを表す。
図47(a)に示したトポロジ構造は、Spineスイッチの数が7であり且つLeafスイッチの数が7であるラテン方陣ファットツリーのトポロジ構造であり、図47(b)に示した有限射影平面の構造に対応する。図47(a)において太線で囲まれた部分のトポロジ構造は、図46(b)のトポロジ構造と同じである。また、図47(b)において太線で囲まれた部分の構造は、図47(a)において太線で囲まれた部分のトポロジ構造に対応する。
図47(b)に示した構造は、図48に示す構造に変換することができる。図48において、ハッチングされた格子部分に含まれる4(=n*n)台のLeafスイッチは、図45において枠511に囲まれた部分に含まれる4台のLeafスイッチに対応する。格子部分において平行な直線群は、追加の点において交わるように変換される。すなわち、傾きが等しい直線同士が交わるように変換される。
以上で付録を終了する。
なお、上で述べた管理装置3及びサーバは、コンピュータ装置であって、図49に示すように、メモリ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スイッチは、図50に示すように、メモリ2601とCPU2603とHDD2605と表示装置2609に接続される表示制御部2607とリムーバブル・ディスク2611用のドライブ装置2613と入力装置2615とネットワークに接続するための通信制御部2617(図50では、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)複数のスパインスイッチと、(B)複数のリーフスイッチと、(C)複数のリーフスイッチのいずれかにそれぞれ接続される複数の情報処理装置とを有する。そして、複数のスパインスイッチと複数のリーフスイッチとの接続形態はラテン方陣ファットツリーである。そして、複数のリーフスイッチのうちラテン方陣ファットツリーに対応する有限射影平面の無限遠点以外の点の少なくとも一部の点に相当する第1のリーフスイッチに接続される情報処理装置の各々が、(c1)複数のスパインスイッチのうち第1のスパインスイッチを経由する経路で、第1のリーフスイッチに接続される他の情報処理装置と第1の集団通信を行う第1通信部と、(c2)第1の集団通信の各フェーズにおいて、複数のスパインスイッチのうち第1のスパインスイッチとは異なる第2のスパインスイッチを経由する経路で、第1のリーフスイッチに接続される他の情報処理装置と第2の集団通信を行う第2通信部とを有する。
ラテン方陣ファットツリーシステムにおける特定のリーフスイッチを使用して第1の集団通信と第2の集団通信とを並行して実行できるようになる。また、第1の集団通信と第2の集団通信とで異なるスパインスイッチが使用されるので、経路競合の発生を抑制できるようになる。
また、第1の集団通信は全対全通信であり、第2の集団通信はオールリデュース通信であってもよい。
普通、全対全通信のフェーズ数はオールリデュース通信のフェーズ数より多い。よって、全対全通信の実行中にオールリデュース通信を実行することができる。
また、第1の集団通信および第2の集団通信はオールリデュース通信であってもよく、第1の集団通信に係る演算と第2の集団通信に係る演算とが異なってもよい。
参加する情報処理装置が同じであればフェーズ数は同じであるので、或るオールリデュース通信と別のオールリデュース通信とを並行して実行することができる。
また、有限射影平面の点のうち第1のリーフスイッチに相当する点は矩形領域に含まれ、矩形領域の行数および列数は第1のリーフスイッチの各々に接続される情報処理装置の数以上であってもよい。
スパインスイッチを効率的に使うことができ、また、矩形領域に対応するネットワークの許容範囲を超える通信が行われることを抑制できるので、経路競合の発生を抑制できるようになる。
また、本情報処理システムは(D)管理装置をさらに有してもよい。そして、管理装置は、(d1)第1のスパインスイッチを経由する経路で第1の集団通信を行うための第1の通信情報を生成し、(d2)ラテン方陣ファットツリーにおける経路の中から第2のスパインスイッチを経由する経路を特定し、(d3)第1の集団通信の各フェーズにおいて第2のスパインスイッチを経由する経路で第2の集団通信を行うための第2の通信情報を生成し、(d4)生成された第1の通信情報と第2の通信情報とを、第1のリーフスイッチに接続される情報処理装置の各々に送信してもよい。そして、第1通信部は、(c11)受信した第1の通信情報に従って第1の集団通信を行ってもよく、第2通信部は、(c21)受信した第2の通信情報に従って第2の集団通信を行ってもよい。
第1の集団通信及び第2の集団通信が全体として適切に行われるようになる。
本実施の形態の第2の態様に係る第1情報処理装置は、複数のスパインスイッチと、複数のスパインスイッチとラテン方陣ファットツリーの接続形態で接続される複数のリーフスイッチと、複数のリーフスイッチのいずれかにそれぞれ接続される複数の情報処理装置とを有する情報処理システムに含まれる。そして、第1情報処理装置は、(E)複数のスパインスイッチのうち第1のスパインスイッチを経由する経路で、複数のリーフスイッチのうちラテン方陣ファットツリーに対応する有限射影平面の無限遠点以外の点の少なくとも一部の点に相当し且つ第1情報処理装置に接続される第1のリーフスイッチに接続される他の情報処理装置と第1の集団通信を行う第1通信部(実施の形態における第2通信部1013は上記第1通信部の一例である)と、(F)第1の集団通信の各フェーズにおいて、複数のスパインスイッチのうち第1のスパインスイッチとは異なる第2のスパインスイッチを経由する経路で、第1のリーフスイッチに接続される他の情報処理装置と第2の集団通信を行う第2通信部(実施の形態における第3通信部1015は上記第2通信部の一例である)とを有する。
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数のスパインスイッチと、
複数のリーフスイッチと、
前記複数のリーフスイッチのいずれかにそれぞれ接続される複数の情報処理装置と、
を有し、
前記複数のスパインスイッチと前記複数のリーフスイッチとの接続形態はラテン方陣ファットツリーであり、
前記複数のリーフスイッチのうち前記ラテン方陣ファットツリーに対応する有限射影平面の無限遠点以外の点の少なくとも一部の点に相当する第1のリーフスイッチに接続される情報処理装置の各々が、
前記複数のスパインスイッチのうち第1のスパインスイッチを経由する経路で、前記第1のリーフスイッチに接続される他の情報処理装置と第1の集団通信を行う第1通信部と、
前記第1の集団通信の各フェーズにおいて、前記複数のスパインスイッチのうち前記第1のスパインスイッチとは異なる第2のスパインスイッチを経由する経路で、前記第1のリーフスイッチに接続される他の情報処理装置と第2の集団通信を行う第2通信部と、
を有する情報処理システム。
(付記2)
前記第1の集団通信は全対全通信であり、前記第2の集団通信はオールリデュース通信である、
付記1記載の情報処理システム。
(付記3)
前記第1の集団通信および前記第2の集団通信はオールリデュース通信であり、
前記第1の集団通信に係る演算と前記第2の集団通信に係る演算とが異なる、
付記1記載の情報処理システム。
(付記4)
前記有限射影平面の点のうち前記第1のリーフスイッチに相当する点は矩形領域に含まれ、前記矩形領域の行数および列数は前記第1のリーフスイッチの各々に接続される情報処理装置の数以上である、
付記1乃至3のいずれか1つ記載の情報処理システム。
(付記5)
管理装置
をさらに有し、
前記管理装置は、
前記第1のスパインスイッチを経由する経路で前記第1の集団通信を行うための第1の通信情報を生成し、
前記ラテン方陣ファットツリーにおける経路の中から前記第2のスパインスイッチを経由する経路を特定し、
前記第1の集団通信の各フェーズにおいて前記第2のスパインスイッチを経由する経路で前記第2の集団通信を行うための第2の通信情報を生成し、
生成された前記第1の通信情報と前記第2の通信情報とを、前記第1のリーフスイッチに接続される情報処理装置の各々に送信し、
前記第1通信部は、
受信した前記第1の通信情報に従って前記第1の集団通信を行い、
前記第2通信部は、
受信した前記第2の通信情報に従って前記第2の集団通信を行う、
付記1乃至4のいずれか1つ記載の情報処理システム。
(付記6)
複数のスパインスイッチと、複数のリーフスイッチと、前記複数のリーフスイッチのいずれかにそれぞれ接続される複数の情報処理装置とを有する情報処理システムにおいて実行される情報処理方法であって、
前記複数のスパインスイッチと前記複数のリーフスイッチとの接続形態はラテン方陣ファットツリーであり、
前記複数のリーフスイッチのうち前記ラテン方陣ファットツリーに対応する有限射影平面の無限遠点以外の点の少なくとも一部の点に相当する第1のリーフスイッチに接続される情報処理装置の各々が、
前記複数のスパインスイッチのうち第1のスパインスイッチを経由する経路で、前記第1のリーフスイッチに接続される他の情報処理装置と第1の集団通信を行い、
前記第1の集団通信の各フェーズにおいて、前記複数のスパインスイッチのうち前記第1のスパインスイッチとは異なる第2のスパインスイッチを経由する経路で、前記第1のリーフスイッチに接続される他の情報処理装置と第2の集団通信を行う、
処理を含む情報処理方法。
(付記7)
複数のスパインスイッチと、前記複数のスパインスイッチとラテン方陣ファットツリーの接続形態で接続される複数のリーフスイッチと、前記複数のリーフスイッチのいずれかにそれぞれ接続される複数の情報処理装置とを有する情報処理システムにおける前記複数の情報処理装置のうちの第1情報処理装置であって、
前記複数のスパインスイッチのうち第1のスパインスイッチを経由する経路で、前記複数のリーフスイッチのうち前記ラテン方陣ファットツリーに対応する有限射影平面の無限遠点以外の点の少なくとも一部の点に相当し且つ前記第1情報処理装置に接続される第1のリーフスイッチに接続される他の情報処理装置と第1の集団通信を行う第1通信部と、
前記第1の集団通信の各フェーズにおいて、前記複数のスパインスイッチのうち前記第1のスパインスイッチとは異なる第2のスパインスイッチを経由する経路で、前記第1のリーフスイッチに接続される他の情報処理装置と第2の集団通信を行う第2通信部と、
を有する第1情報処理装置。