図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の実施の形態においては、このようなオールリデュース通信を単層フルメッシュシステムにおいて実行する場合に経路競合が発生しないようにすることを考える。上で述べたように、経路競合とは、1つの経路の同一方向に同時に複数のパケットが送信されることを意味し、経路競合の発生により通信時間が長くなる。例として、図5に、オールリデュース通信を一般的なツリー構造のトポロジにおいて実行した場合の経路競合を示す。図5において、丸の図形はサーバを表し、ハッチングされていない正方形の図形はLeafスイッチを表し、ハッチングされた正方形の図形はSpineスイッチを表す。図5において、経路R1において経路競合が発生し、経路R2においても経路競合が発生する。このケースにおいては、例えば図6に示すように、ツリー構造をファットツリー構造に変えることで経路競合を回避することが可能であるが、ファットツリー構造を採用すると総スイッチ数は図5の例よりも多くなる。
図7は、第1の実施の形態における単層フルメッシュシステム1000を示す図である。本実施の形態の単層フルメッシュシステム1000は、例えばインフィニバンドスイッチ等である4つのスイッチがフルメッシュトポロジで接続される。各スイッチは2桁のビット列である識別子sを有し、各スイッチの識別子sは他のスイッチが有する識別子sのいずれとも異なる。具体的には、スイッチ00と、スイッチ01と、スイッチ10と、スイッチ11とが存在する。
スイッチ00は、スイッチ01、スイッチ10及びスイッチ11に直接接続される。スイッチ01は、スイッチ00、スイッチ10及びスイッチ11に直接接続される。スイッチ10は、スイッチ00、スイッチ01及びスイッチ11に直接接続される。スイッチ11は、スイッチ00、スイッチ01及びスイッチ10に直接接続される。
なお、図7の例においては4台のスイッチにより角の数が4である多角形のトポロジが形成されているが、スイッチの数が2k(kは2以上の自然数)であって且つ角の数が2kである多角形のトポロジがスイッチにより形成されていれば、本実施の形態を適用可能である。
各スイッチには(2k−1)台のサーバが接続される。図7の例においてはk=2であるので、3(=22−1)台のサーバが各スイッチに接続される。単層フルメッシュシステム1000における各サーバは、例えばMPI(Message Passing Interface)等の通信ライブラリを使用して通信を行う情報処理装置である。単層フルメッシュシステム1000の12台のサーバにより並列計算が実現される。以下では、各スイッチに接続されるサーバの台数をdとする。図7の例においてはd=3である。
本実施の形態においては、経路競合を回避するため、規則的且つ固定的なルーティングが行われるインフィニバンドのネットワークが利用される。図8を用いて、インフィニバンドのネットワークにおけるルーティングについて説明する。図8において、丸の図形はサーバを表し、正方形の図形はスイッチを表す。線分はインフィニバンドのリンクを表し、線分の傍にある文字列は宛先のサーバの識別情報を表す。太い実線の矢印は通信経路を表す。
図8の例においては、サーバN3が、宛先がサーバN1であるパケットを送信する。パケットのヘッダには、宛先の識別情報(例えばLID(Local IDentifier))が含まれる。各スイッチにおける各出力ポートには宛先のサーバの識別情報が対応付けられているので、各スイッチは、パケットに含まれる宛先の識別情報に対応する出力ポートにパケットを出力する。図8の例では、パケットはスイッチSW1、スイッチSW2及びスイッチSW4を経由してサーバN1に到達する。
すなわち、本実施の形態のネットワークは、イーサネット(登録商標)のように自動的に経路が決定されるネットワークではなく、規則的且つ固定的なルーティングが行われるネットワークである。
なお、上記の識別情報とは別に、各サーバには番号が割り振られているとする。具体的には、各スイッチ配下の3台の各サーバには、0から2までのいずれかの番号が割り当てられ、各スイッチには「0」が割り振られたサーバと「1」が割り振られたサーバと「2」が割り振られたサーバとが接続される。これらの番号は、オールリデュースにおける通信先の特定に使用される。
図9に示すように、単層フルメッシュシステム1000は管理装置3に管理LAN(Local Area Network)等で接続され、単層フルメッシュシステム1000における通信は管理装置3により管理される。管理装置3は、通信表生成部301と、通信表格納部303と、トポロジデータ格納部305とを有する。通信表生成部301は、例えば、図39におけるメモリ2501にロードされたプログラムがCPU(Central Processing Unit)2503に実行されることで実現される。通信表格納部303及びトポロジデータ格納部305は、例えば、図39におけるメモリ2501又はHDD(Hard Disk Drive)2505に設けられる。
通信表生成部301は、トポロジデータ格納部305に格納されている、単層フルメッシュシステム1000のネットワークトポロジの情報に基づき、第1の通信表及び第2の通信表を生成し、生成された第1の通信表及び第2の通信表を通信表格納部303に格納する。通信表生成部301は、通信表格納部303に格納された第1の通信表及び第2の通信表を、所定のタイミングで又はリクエストに応じて、単層フルメッシュシステム1000における各サーバに送信する。
図10は、サーバの機能ブロック図である。サーバは、処理部101と、通信表格納部103と、ビット列生成部105とを有する。処理部101は、第1通信部1011と、第2通信部1013とを有する。処理部101及びビット列生成部105は、例えば、図39におけるメモリ2501にロードされたプログラムがCPU2503に実行されることで実現される。通信表格納部103は、例えば、図39におけるメモリ2501又はHDD2505に設けられる。
通信表格納部103には、管理装置3から受信した第1の通信表及び第2の通信表が格納される。ビット列生成部105は、通信表格納部103に格納された第2の通信表に基づきビット列を生成する。処理部101における第1通信部1011は、通信表格納部103に格納された第1の通信表に従って通信を行う。処理部101における第2通信部1013は、ビット列生成部105により生成されたビット列に基づき通信を行う。
次に、図11乃至図22を用いて、管理装置3が実行する処理について説明する。
図11は、管理装置3が実行する処理の処理フローを示す図である。
管理装置3における通信表生成部301は、単層フルメッシュシステム1000のネットワークトポロジの情報をトポロジデータ格納部305から読み出す(図11:ステップS1)。ネットワークトポロジの情報は、例えば、スイッチとサーバとの接続関係の情報等を含む。
通信表生成部301は、ステップS1において読み出したネットワークトポロジの情報に基づき、第1の通信表を生成する処理である第1生成処理を実行する(ステップS3)。
図12乃至図18を用いて、第1生成処理について説明する。図12は、第1生成処理の処理フローを示す図である。
通信表生成部301は、単層フルメッシュシステム1000における各スイッチ配下でのオールリデュースの各フェーズにおいて通信を実行するサーバの識別情報を含む第1の通信表を生成する(図12:ステップS11)。
図13乃至図17は、単層フルメッシュシステム1000における各スイッチ配下のサーバ間でのオールリデュースについて説明するための図である。図13乃至図17において、正方形の図形はスイッチを表し、丸の図形はサーバを表し、スイッチとサーバとを結ぶ線分はリンクを表す。サーバに付された数字はサーバが持つ値を表す。
まず、図13及び図14を用いて、スイッチ配下のサーバの数が偶数(ここでは、2の冪である4)である場合について説明する。
例えば、図13(a)に示すように、4台のサーバがそれぞれ「3」、「7」、「8」、「5」を持つとする。この場合、2台のサーバを含むペアの各々において値が共有され、値の演算(ここでは加算)が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図13(b)に示すように、2台のサーバが値「10」を持ち、残りの2台のサーバが値「13」を持つ。そして、値「10」を持つサーバと値「13」を持つサーバとを含むペアの各々において値が共有され、値の演算(ここでは加算)が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
これにより、最終的には図14に示すように各サーバが値「23」を持つ。
次に、図15乃至図17を用いて、スイッチ配下のサーバの数が奇数(ここでは5)である場合について説明する。
例えば、図15(a)に示すように、5台のサーバがそれぞれ「1」、「4」、「5」、「2」、「8」を持つとする。この場合、5台のうち2台のサーバにおいて値が共有され、値の演算(ここでは加算)が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図15(b)に示すように、5台のサーバがそれぞれ「1」、「4」、「5」、「10」、「10」を持つ。そして、値「1」を持つサーバと値「4」を持つサーバとの間で値が共有され値の演算が行われ、値「5」を持つサーバと値「10」を持つサーバとの間で値が共有され値の演算が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図16(a)に示すように、5台のサーバがそれぞれ「5」、「5」、「15」、「15」、「10」を持つ。そして、値「5」を持つサーバと値「15」を持つサーバとの間で値が共有され値の演算が行われ、値「5」を持つサーバと値「15」を持つサーバとの間で値が共有され値の演算が行われる。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図16(b)に示すように、5台のサーバがそれぞれ「20」、「20」、「20」、「20」、「10」を持つ。そして、値「20」を持つサーバが値「10」を持つサーバに対して値「20」を通知する。ここでは、1つの経路の同一方向に同時に複数のパケットが送信されることはないので、経路競合は発生しない。
すると、図17に示すように、最終的に5台のサーバがそれぞれ値「20」を持つようになる。
以上の説明は複数のサーバの間で行われるオールリデュースの一例についての説明であるが、サーバ数がこの例以外の数である場合においても、基本的には同様の方法でオールリデュースを行うことができる。
ここで、n台(nは自然数)のサーバの間でのオールリデュースを行う場合における通信表を生成する処理(以下、Allreduce(n)のように呼ぶ)について説明する。本実施の形態においては、再帰的な処理によって通信表が生成される。
(1)スイッチ配下のサーバの数nが1である場合、処理は終了する。
(2)スイッチ配下のサーバの数nが2である場合、2台のサーバの間での通信についての通信情報(具体的には、サーバのペアの情報)が通信表に書き込まれる。
(3)スイッチ配下のサーバの数nが奇数2m+1(mは自然数)である場合、n台のサーバのうち2台のサーバ(サーバPおよびサーバQ)が選択され、サーバPとサーバQとの間でオールリデュース通信についての通信情報が通信表に書き込まれる。そして、サーバP及びサーバQのうちいずれかのサーバと残りの(2m−1)台のサーバと(つまり、2m台のサーバ)について、Allreduce(2m)が呼び出される。そして、Allreduce(2m)の結果をサーバPからサーバQに伝えるための通信情報が通信表に書き込まれる。
(4)スイッチ配下のサーバの数が2m(mは2以上の自然数)である場合、スイッチはm台のグループとm台のグループとに分けられ、同時並行でそれぞれのグループについてAllreduce(m)が呼び出される。
以上のような処理を実行すれば、n台のサーバの間でのオールリデュースを行う場合における通信表が生成される。図13乃至図17の説明から明らかなように、このような方法で生成された通信表に従ってオールリデュース通信が行われれば経路競合は発生しない。
図12の説明に戻り、通信表生成部301は、ステップS11において生成された第1の通信表を通信表格納部303に格納する(ステップS13)。そして処理は呼び出し元に戻る。
図18は、第1の通信表の一例を示す図である。図18の例においては、フェーズ番号と、通信を実行するサーバのペアの情報とが第1の通信表に登録されている。N1等の文字列はサーバの識別情報(例えばLID)を表す。通信1と通信2とは同時並行で実行される。例えばフェーズ1においては、サーバN1とサーバN2との間の通信と、サーバN3とサーバN4との間の通信とが同時並行で実行される。図18に示した通信表によれば、フェーズ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からデータを受信する。なお、説明を簡単にするため図18には1台のスイッチにおけるオールリデュースについての通信情報が登録されているが、実際には各スイッチにおけるオールリデュースについての通信情報が登録される。
図11の説明に戻り、通信表生成部301は、ステップS1において読み出されたネットワークトポロジの情報に基づき、第2の通信表を生成する処理である第2生成処理を実行する(ステップS5)。
図19乃至図22を用いて、第2生成処理について説明する。図19は、第2生成処理の処理フローを示す図である。
通信表生成部301は、同一番号が割り振られたサーバ間で行われるオールリデュースにおいて各サーバが各フェーズで送信するデータの送信先を特定するために使用されるビット列ai,jを含む第2の通信表を生成する(図19:ステップS21)。ここで、iはフェーズ番号を表す変数であり、jはサーバに割り振られた番号を表す変数である。
上で述べたように、各スイッチは識別子sを有しており、本実施の形態においては、識別子sとai,jとを用いて送信先のサーバが収容されたスイッチが特定される。具体的には、割り当てられた番号がjであるサーバがフェーズiにおいて行う通信の相手は、そのサーバが収容されたスイッチの識別子sと、ビット列ai,jとを用いて、s xor ai,jにて生成されるビット列を識別子とするスイッチに収容され且つ割り当てられた番号がjであるサーバである。
ai,jは、以下のような特徴を有する。
(i)a1,j,a2,j,...,ak,jは一次独立である。
(ii)ai,1,ai,2,...,ai,d-1は{1,2,3,...,2d−1}の並び替えに相当する。
なお、k桁のビット列の集合b1,b2,...,bkが一次独立であるとは、それらk個のビット列から1又は複数のビット列を選択して排他的論理和を計算すると、選択されるビット列の組合せに関わらず、計算結果は0ではないことを意味する。例えば、ビット列の集合001,010,100は一次独立であるが、ビット列の集合1010,1111,0101,1011は、最初の3つのビット列に対する排他的論理和の計算結果が0であるので、一次独立ではない。
一次独立なビット列の集合を生成する方法としては、1から(d−1)までの10進数に対応する(d−1)個のk桁のビット列を、連続するk個のビット列をどのように選択したとしても選択されたk個のビット列が一次独立になるように円形に並べる円環方式が有る。この円環方式においては、例えば貪欲法(Greedy Algorithm)を利用することができる。また、数列からai,jを生成する方法も有る。具体的には、i行j列の表を生成し、1行目には数列をそのまま配置し、2行目には数列を横に1つ分ずらした状態で配置し、3行目には数列を横に2つ分ずらした状態で配置し、...というように、k行目まで処理を実行する。
図20は、第2の通信表の一例を示す図である。図20には、k=2の場合における第2の通信表の一例が示されている。第2の通信表はk行d列であり、iはフェーズ番号を表し、jはサーバに割り当てられた番号を表す。1列目におけるビット列00とビット列11との排他的論理和の計算結果は11であるので、1列目におけるビット列00とビット列11とは一次独立である。2列目におけるビット列11とビット列10との排他的論理和の計算結果は01であるので、2列目におけるビット列11とビット列10とは一次独立である。3列目におけるビット列10とビット列01との排他的論理和の計算結果は11であるので、3列目におけるビット列10とビット列01とは一次独立である。各列におけるビット列が一次独立であることは、オールリデュース通信が可能であることの要件である。また、各フェーズにおいて1から(d−1)までの10進数に対応するビット列が網羅されていることは、競合が発生しないことの要件である。
図21及び図22を用いて、第2の通信表に従って行われる通信について説明する。図20の例においては、2フェーズの通信が行われ、フェーズ0は図21の通信に対応し、フェーズ1は図22の通信に対応する。図21及び図22において矢印は通信を表し、図20におけるハッチングの種類と図21及び図22におけるハッチングの種類とは対応している。スイッチ内の数字列は識別子(すなわちビット列)を表し、サーバ内の番号はサーバに割り振られた番号である。
まず、フェーズ0の通信について説明する。スイッチ00の配下のサーバであって割り当てられた番号が0である場合、00と01との排他的論理和の結果が01であるので、スイッチ01の配下のサーバであって割り当てられた番号が0であるサーバとの通信を行う。スイッチ00の配下のサーバであって割り当てられた番号が1である場合、00と11との排他的論理和の結果が11であるので、スイッチ11の配下のサーバであって割り当てられた番号が1であるサーバとの通信を行う。スイッチ00の配下のサーバであって割り当てられた番号が2である場合、00と10との排他的論理和の結果が10であるので、スイッチ10の配下のサーバであって割り当てられた番号が2であるサーバとの通信を行う。
スイッチ01の配下のサーバであって割り当てられた番号が0である場合、01と01との排他的論理和の結果が00であるので、スイッチ00の配下のサーバであって割り当てられた番号が0であるサーバとの通信を行う。スイッチ01の配下のサーバであって割り当てられた番号が1である場合、01と11との排他的論理和の結果が10であるので、スイッチ10の配下のサーバであって割り当てられた番号が1であるサーバとの通信を行う。スイッチ01の配下のサーバであって割り当てられた番号が2である場合、01と10との排他的論理和の結果が11であるので、スイッチ11の配下のサーバであって割り当てられた番号が2であるサーバとの通信を行う。
スイッチ10の配下のサーバであって割り当てられた番号が0である場合、10と01との排他的論理和の結果が11であるので、スイッチ11の配下のサーバであって割り当てられた番号が0であるサーバとの通信を行う。スイッチ10の配下のサーバであって割り当てられた番号が1である場合、10と11との排他的論理和の結果が01であるので、スイッチ01の配下のサーバであって割り当てられた番号が1であるサーバとの通信を行う。スイッチ10の配下のサーバであって割り当てられた番号が2である場合、10と10との排他的論理和の結果が00であるので、スイッチ00の配下のサーバであって割り当てられた番号が2であるサーバとの通信を行う。
スイッチ11の配下のサーバであって割り当てられた番号が0である場合、11と01との排他的論理和の結果が10であるので、スイッチ10の配下のサーバであって割り当てられた番号が0であるサーバとの通信を行う。スイッチ11の配下のサーバであって割り当てられた番号が1である場合、11と11との排他的論理和の結果が00であるので、スイッチ00の配下のサーバであって割り当てられた番号が1であるサーバとの通信を行う。スイッチ11の配下のサーバであって割り当てられた番号が2である場合、11と10との排他的論理和の結果が01であるので、スイッチ01の配下のサーバであって割り当てられた番号が2であるサーバとの通信を行う。
次に、フェーズ1の通信について説明する。スイッチ00の配下のサーバであって割り当てられた番号が0である場合、00と11との排他的論理和の結果が11であるので、スイッチ11の配下のサーバであって割り当てられた番号が0であるサーバとの通信を行う。スイッチ00の配下のサーバであって割り当てられた番号が1である場合、00と10との排他的論理和の結果が10であるので、スイッチ10の配下のサーバであって割り当てられた番号が1であるサーバとの通信を行う。スイッチ00の配下のサーバであって割り当てられた番号が2である場合、00と01との排他的論理和の結果が01であるので、スイッチ01の配下のサーバであって割り当てられた番号が2であるサーバとの通信を行う。
スイッチ01の配下のサーバであって割り当てられた番号が0である場合、01と11との排他的論理和の結果が10であるので、スイッチ10の配下のサーバであって割り当てられた番号が0であるサーバとの通信を行う。スイッチ01の配下のサーバであって割り当てられた番号が1である場合、01と10との排他的論理和の結果が11であるので、スイッチ11の配下のサーバであって割り当てられた番号が1であるサーバとの通信を行う。スイッチ01の配下のサーバであって割り当てられた番号が2である場合、01と01との排他的論理和の結果が00であるので、スイッチ00の配下のサーバであって割り当てられた番号が2であるサーバとの通信を行う。
スイッチ10の配下のサーバであって割り当てられた番号が0である場合、10と11との排他的論理和の結果が01であるので、スイッチ01の配下のサーバであって割り当てられた番号が0であるサーバとの通信を行う。スイッチ10の配下のサーバであって割り当てられた番号が1である場合、10と10との排他的論理和の結果が00であるので、スイッチ00の配下のサーバであって割り当てられた番号が1であるサーバとの通信を行う。スイッチ10の配下のサーバであって割り当てられた番号が2である場合、10と01との排他的論理和の結果が11であるので、スイッチ11の配下のサーバであって割り当てられた番号が2であるサーバとの通信を行う。
スイッチ11の配下のサーバであって割り当てられた番号が0である場合、11と11との排他的論理和の結果が00であるので、スイッチ00の配下のサーバであって割り当てられた番号が0であるサーバとの通信を行う。スイッチ11の配下のサーバであって割り当てられた番号が1である場合、11と10との排他的論理和の結果が01であるので、スイッチ01の配下のサーバであって割り当てられた番号が1であるサーバとの通信を行う。スイッチ11の配下のサーバであって割り当てられた番号が2である場合、11と01との排他的論理和の結果が10であるので、スイッチ10の配下のサーバであって割り当てられた番号が2であるサーバとの通信を行う。
以上のように、いずれの通信経路においても同一方向のパケットが同時に送信されることがない。すなわち、経路競合が発生しない。
図19の説明に戻り、通信表生成部301は、ステップS21において生成された第2の通信表を通信表格納部303に格納する(ステップS23)。そして処理は呼び出し元に戻る。
図11の説明に戻り、通信表生成部301は、通信表格納部303に格納された第1の通信表及び第2の通信表を読み出し、読み出した第1の通信表及び第2の通信表を単層フルメッシュシステム1000における各サーバに送信する(ステップS7)。そして処理は終了する。
以上のような処理を実行すれば、各サーバは第1の通信表及び第2の通信表に従って適切な手順でオールリデュース通信を実行できるようになる。
次に、図23及び図24を用いて、サーバが実行する処理について説明する。本処理は、第1の通信表及び第2の通信表を管理装置3から受信した各サーバが実行する処理である。
図23は、サーバが実行する処理の処理フローを示す図である。
サーバにおける第1通信部1011は、フェーズ番号を表す変数を0に設定する(図23:ステップS31)。
第1通信部1011は、通信表格納部103に格納されている第1の通信表から、フェーズiの通信情報を特定する(ステップS33)。
第1通信部1011は、自サーバ(すなわち、本処理を実行しているサーバ)がフェーズiにおいて通信を実行するか判定する(ステップS35)。自サーバがフェーズiにおいて通信を実行するか否かは、特定された通信情報に自サーバの識別情報が含まれているか否かにより判定される。
自サーバがフェーズiにおいて通信を実行しない場合(ステップS35:Noルート)、処理はステップS39に移行する。一方、自サーバがフェーズiにおいて通信を実行する場合(ステップS35:Yesルート)、第1通信部1011は、ステップS33において特定された通信情報に従って通信を実行する(ステップS37)。
上で述べたように、第1の通信表に従って行われる通信は、同一のスイッチ配下のサーバ間でのオールリデュース通信であり、各サーバはオールリデュースに係る演算を実行する。
第1通信部1011は、i=imax1が成立するか判定する(ステップS39)。imax1は、第1の通信表に従って行われる通信のフェーズ番号の最大値である。i=imax1が成立しない場合(ステップS39:Noルート)、第1通信部1011は、iを1インクリメントする(ステップS41)。そして処理はステップS33に移行する。なお、フェーズの終了はバリア同期によって確認される。
一方、i=imax1が成立する場合(ステップS39:Yesルート)、処理は端子Aを介して図24のステップS43に移行する。
図24の説明に移行し、第2通信部1013は、自サーバに割り振られた番号jを、例えばメモリ等の記憶装置から取得する(図24:ステップS43)。
第2通信部1013は、フェーズ番号を表す変数iを0に設定する(ステップS45)。
第2通信部1013は、ビット列生成部105を呼び出す。これに応じ、ビット列生成部105は、通信表格納部103に格納された第2の通信表から、ビット列ai,jを特定する(ステップS47)。
ビット列生成部105は、自サーバを収容するスイッチに割り当てられたビット列sと、ステップS47において特定されたビット列ai,jとの排他的論理和を計算する(ステップS49)。ビット列生成部105は、ステップS49の計算結果のビット列を第2通信部1013に渡す。
第2通信部1013は、ステップS49の計算結果のビット列が割り当てられたスイッチの配下のサーバであって且つ自サーバに割り振られた番号と同じ番号が割り振られたサーバとの通信を実行する(ステップS51)。
ステップS51の処理が終了すると、第2通信部1013は、i=imax2が成立するか判定する(ステップS53)。imax2は、第2の通信表に従って行われる通信のフェーズ番号の最大値である。i=imax2が成立しない場合(ステップS53:Noルート)、第2通信部1013は、iを1インクリメントする(ステップS55)。そして処理はステップS47に移行する。なお、フェーズの終了はバリア同期によって確認される。
一方、i=imax2が成立する場合(ステップS53:Yesルート)、処理は終了する。
以上のように、第1の通信表に従った通信によって、各スイッチの配下においては全サーバが同一の値を持つようになる。そして、第2の通信表に従った通信によって、単層フルメッシュシステム1000における全サーバが同じ値を持つようになる。すなわち、単層フルメッシュシステム1000においてオールリデュースが実現される。
また、上で述べたように、本実施の形態においては、オールリデュース通信の過程で経路競合が発生することはない。
また、本実施の形態の方法であれば、O(log n)(nは全サーバ台数)程度の計算量でオールリデュースを実行することができるようになる。対数の底は2である。
[実施の形態2]
第1の実施の形態における単層フルメッシュシステム1000を複数連結することで、多層フルメッシュシステム2000を構築することが可能である。以下では、多層フルメッシュシステム2000においてオールリデュース通信を行う場合に経路競合が発生することを回避する方法について説明する。
図25は、第2の実施の形態における多層フルメッシュシステム2000を示す図である。図25においては、3つの単層フルメッシュシステム1000が、SpineスイッチA乃至Fにより連結されている。図25の例においては、Leafスイッチ及びSpineスイッチのポート数は6であり、層の数は3であり、36台のサーバが多層フルメッシュシステム2000に含まれる。但し、Leafスイッチ及びSpineスイッチのポート数、層の数及びサーバ数は、図25に示した例には限られない。
なお、図25に示した単層フルメッシュシステム1000は、SpineスイッチA乃至Fが存在する点を除き第1の実施の形態における単層フルメッシュシステム1000と同じであるので、ここでは詳細な説明を省略する。
SpineスイッチAは、各層において、Leafスイッチ01及びLeafスイッチ10に接続される。SpineスイッチBは、各層において、Leafスイッチ00及びLeafスイッチ11に接続される。SpineスイッチCは、各層において、Leafスイッチ00及びLeafスイッチ01に接続される。SpineスイッチDは、各層において、Leafスイッチ10及びLeafスイッチ11に接続される。SpineスイッチEは、各層において、Leafスイッチ01及びLeafスイッチ10に接続される。SpineスイッチFは、各層において、Leafスイッチ01及びLeafスイッチ11に接続される。
図26に示すように、多層フルメッシュシステム2000は管理装置3に管理LAN等で接続され、多層フルメッシュシステム2000における通信は管理装置3により管理される。管理装置3は、通信表生成部301と、通信表格納部303と、トポロジデータ格納部305とを有する。
通信表生成部301は、トポロジデータ格納部305に格納されている、多層フルメッシュシステム2000のネットワークトポロジの情報に基づき、第3の通信表、第4の通信表及び第5の通信表を生成し、生成された第3の通信表、第4の通信表及び第5の通信表を通信表格納部303に格納する。通信表生成部301は、通信表格納部303に格納された第3の通信表、第4の通信表及び第5の通信表を、所定のタイミングで又はリクエストに応じて、多層フルメッシュシステム2000における各サーバに送信する。
図27は、サーバの機能ブロック図である。サーバは、処理部101と、通信表格納部103と、ビット列生成部105とを有する。処理部101は、第3通信部1015と、第4通信部1017と、第5通信部1019とを有する。
通信表格納部103には、管理装置3から受信した第3の通信表、第4の通信表及び第5の通信表が格納される。ビット列生成部105は、通信表格納部103に格納された第5の通信表に基づきビット列を生成する。処理部101における第3通信部1015は、通信表格納部103に格納された第3の通信表に従って通信を行う。処理部101における第4通信部1017は、通信表格納部103に格納された第4の通信表に従って通信を行う。処理部101における第5通信部1019は、ビット列生成部105により生成されたビット列に基づき通信を行う。
次に、図28乃至図32を用いて、管理装置3が実行する処理について説明する。
図28は、管理装置3が実行する処理の処理フローを示す図である。
管理装置3における通信表生成部301は、多層フルメッシュシステム2000のネットワークトポロジの情報をトポロジデータ格納部305から読み出す(図28:ステップS61)。ネットワークトポロジの情報は、例えば、Leafスイッチ、Spineスイッチ及びサーバの接続関係の情報等を含む。
通信表生成部301は、ステップS61において読み出したネットワークトポロジの情報に基づき、第3の通信表を生成する処理である第3生成処理を実行する(ステップS63)。
図29乃至図30Cを用いて、第3生成処理について説明する。図29は、第3生成処理の処理フローを示す図である。
通信表生成部301は、同じカラムに属し且つ同じ番号が割り振られたサーバの間で行われるオールリデュース通信について、各フェーズにおいて通信を実行するサーバの識別情報を含む第3の通信表を生成する(ステップS71)。
本実施の形態において、カラムは、層内の位置が同じであるLeafスイッチおよびそのLeafスイッチの配下にあるサーバを含む。例えば図30Aにおいて、各層におけるLeafスイッチ00及びLeafスイッチ00の配下にあるサーバは、同じカラムに属する。同様に、各層におけるLeafスイッチ01及びLeafスイッチ01の配下にあるサーバは、同じカラムに属する。同様に、各層におけるLeafスイッチ10及びLeafスイッチ10の配下にあるサーバは、同じカラムに属する。同様に、各層におけるLeafスイッチ11及びLeafスイッチ11の配下にあるサーバは、同じカラムに属する。
言い換えると、同じSpineスイッチに接続されるLeafスイッチとそのLeafスイッチの配下のサーバとは同じカラムに属する。例えば、各層におけるLeafスイッチ00はSpineスイッチA、SpineスイッチB及びSpineスイッチCに接続されているので、各層におけるLeafスイッチ00は同じカラムに属し、各層におけるLeafスイッチ00の配下のサーバも同じカラムに属する。同様に、各層におけるLeafスイッチ01はSpineスイッチC、SpineスイッチE及びSpineスイッチFに接続されているので、各層におけるLeafスイッチ01は同じカラムに属し、各層におけるLeafスイッチ01の配下のサーバも同じカラムに属する。同様に、各層におけるLeafスイッチ10はSpineスイッチA、SpineスイッチD及びSpineスイッチEに接続されているので、各層におけるLeafスイッチ10は同じカラムに属し、各層におけるLeafスイッチ10の配下のサーバも同じカラムに属する。同様に、各層におけるLeafスイッチ11はSpineスイッチB、SpineスイッチD及びSpineスイッチFに接続されているので、各層におけるLeafスイッチ11は同じカラムに属し、各層におけるLeafスイッチ11の配下のサーバも同じカラムに属する。
第3の通信表に従って行われるオールリデュースにおいては、各Leafスイッチ配下のd台のサーバが、同時並行で通信を行う。ここで、図30A乃至図30Cに示すように、各番号のサーバが異なる経路(すなわちリンク)で通信を行えば、経路上を同一方向の複数のパケットが同時に通ることはない。従って、第3の通信表に従って行われるオールリデュースにおいて経路競合が発生することはない。なお、同じSpineスイッチが複数のパケットを同時に処理することになるが、これは経路競合ではなく、スループットの低下をもたらすこともない。
第3の通信表は、第1の通信表と同様の方法で生成される。
なお、第3の通信表に従って行われるオールリデュースにかかる時間は、t*log(d)で表される。ここで、tは各サーバがデータを送るのに要する時間を表す。
図29の説明に戻り、通信表生成部301は、ステップS71において生成された第3の通信表を通信表格納部303に格納する(ステップS73)。そして処理は呼び出し元に戻る。
図28の説明に戻り、通信表生成部301は、ステップS61において読み出されたネットワークトポロジの情報に基づき、第4の通信表を生成する処理である第4生成処理を実行する(ステップS65)。
図31を用いて、第4生成処理について説明する。図31は、第4生成処理の処理フローを示す図である。
通信表生成部301は、多層フルメッシュシステム2000における各Leafスイッチ配下でのオールリデュースの各フェーズにおいて通信を実行するサーバの識別情報を含む第4の通信表を生成する(図31:ステップS81)。
ステップS81においては、ステップS11の処理と同様の処理が、複数の単層フルメッシュシステム1000を対象として実行される。従って、第4の通信表には、各層についての通信情報が含まれる。第4の通信表は、第1の通信表と同様の方法で生成される。
通信表生成部301は、ステップS81において生成された第4の通信表を通信表格納部303に格納する(ステップS83)。そして処理は呼び出し元に戻る。
図28の説明に戻り、通信表生成部301は、ステップS61において読み出されたネットワークトポロジの情報に基づき、第5の通信表を生成する処理である第5生成処理を実行する(ステップS67)。
図32を用いて、第5生成処理について説明する。図32は、第5生成処理の処理フローを示す図である。
通信表生成部301は、各層において同一番号が割り振られたサーバ間で行われるオールリデュースにおいて各サーバが各フェーズで送信するデータの送信先を特定するために使用されるビット列ai,jを含む第5の通信表を生成する(図32:ステップS91)。ここで、iはフェーズ番号を表す変数であり、jはサーバに割り振られた番号を表す変数である。
ステップS91においては、ステップS21の処理と同様の処理が、複数の単層フルメッシュシステム1000を対象として実行される。第2の実施の形態においては、各層について図20に示したような通信表が生成されるので、第5の通信表には各層についての通信表が含まれる。
通信表生成部301は、ステップS91において生成された第5の通信表を通信表格納部303に格納する(ステップS93)。そして処理は呼び出し元に戻る。
図28の説明に戻り、通信表生成部301は、通信表格納部303に格納された第3の通信表、第4の通信表及び第5の通信表を読み出し、読み出した第3の通信表、第4の通信表及び第5の通信表を多層フルメッシュシステム2000における各サーバに送信する(ステップS69)。そして処理は終了する。
以上のような処理を実行すれば、各サーバは第3の通信表、第4の通信表及び第5の通信表に従って適切な手順でオールリデュース通信を実行できるようになる。
次に、図33乃至図35を用いて、サーバが実行する処理について説明する。本処理は、第3の通信表、第4の通信表及び第5の通信表を管理装置3から受信した各サーバが実行する処理である。
図33は、サーバが実行する処理の処理フローを示す図である。
サーバにおける第3通信部1015は、フェーズ番号を表す変数を0に設定する(図33:ステップS101)。
第3通信部1015は、通信表格納部103に格納されている第3の通信表から、フェーズiの通信情報を特定する(ステップS103)。
第3通信部1015は、自サーバ(すなわち、本処理を実行しているサーバ)がフェーズiにおいて通信を実行するか判定する(ステップS105)。自サーバがフェーズiにおいて通信を実行するか否かは、特定された通信情報に自サーバの識別情報が含まれているか否かにより判定される。
自サーバがフェーズiにおいて通信を実行しない場合(ステップS105:Noルート)、処理はステップS109に移行する。一方、自サーバがフェーズiにおいて通信を実行する場合(ステップS105:Yesルート)、第3通信部1015は、ステップS103において特定された通信情報に従って通信を実行する(ステップS107)。
上で述べたように、第3の通信表に従って行われる通信は、同一のカラムに属し且つ同じ番号が割り当てられたサーバ間でのオールリデュース通信であり、各サーバはオールリデュースに係る演算を実行する。
第3通信部1015は、i=imax3が成立するか判定する(ステップS109)。imax3は、第3の通信表に従って行われる通信のフェーズ番号の最大値である。i=imax3が成立しない場合(ステップS109:Noルート)、第3通信部1015は、iを1インクリメントする(ステップS111)。そして処理はステップS103に移行する。なお、フェーズの終了はバリア同期によって確認される。
一方、i=imax3が成立する場合(ステップS109:Yesルート)、処理は端子Bを介して図34のステップS113に移行する。
図34の説明に移行し、第4通信部1017は、フェーズ番号を表す変数を0に設定する(図34:ステップS113)。
第4通信部1017は、通信表格納部103に格納されている第4の通信表から、フェーズiの通信情報を特定する(ステップS115)。
第4通信部1017は、自サーバがフェーズiにおいて通信を実行するか判定する(ステップS117)。自サーバがフェーズiにおいて通信を実行するか否かは、特定された通信情報に自サーバの識別情報が含まれているか否かにより判定される。
自サーバがフェーズiにおいて通信を実行しない場合(ステップS117:Noルート)、処理はステップS121に移行する。一方、自サーバがフェーズiにおいて通信を実行する場合(ステップS117:Yesルート)、第4通信部1017は、ステップS115において特定された通信情報に従って通信を実行する(ステップS119)。
上で述べたように、第4の通信表に従って行われる通信は、同一のLeafスイッチ配下のサーバ間でのオールリデュース通信であり、各サーバはオールリデュースに係る演算を実行する。
第4通信部1017は、i=imax4が成立するか判定する(ステップS121)。imax4は、第4の通信表に従って行われる通信のフェーズ番号の最大値である。i=imax4が成立しない場合(ステップS121:Noルート)、第4通信部1017は、iを1インクリメントする(ステップS123)。そして処理はステップS115に移行する。なお、フェーズの終了はバリア同期によって確認される。
一方、i=imax4が成立する場合(ステップS121:Yesルート)、処理は端子Cを介して図35のステップS125に移行する。
図35の説明に移行し、第5通信部1019は、自サーバに割り振られた番号jを、例えばメモリ等の記憶装置から取得する(図35:ステップS125)。
第5通信部1019は、フェーズ番号を表す変数iを0に設定する(ステップS127)。
第5通信部1019は、ビット列生成部105を呼び出す。これに応じ、ビット列生成部105は、通信表格納部103に格納された第5の通信表から、ビット列ai,jを特定する(ステップS129)。
ビット列生成部105は、自サーバを収容するLeafスイッチに割り当てられたビット列sと、ステップS129において特定されたビット列ai,jとの排他的論理和を計算する(ステップS131)。ビット列生成部105は、ステップS131の計算結果のビット列を第5通信部1019に渡す。
第5通信部1019は、ステップS131の計算結果のビット列が割り当てられたLeafスイッチの配下のサーバであって且つ自サーバに割り振られた番号と同じ番号が割り振られたサーバとの通信を実行する(ステップS133)。
ステップS133の処理が終了すると、第5通信部1019は、i=imax5が成立するか判定する(ステップS135)。imax5は、第5の通信表に従って行われる通信のフェーズ番号の最大値である。i=imax5が成立しない場合(ステップS135:Noルート)、第5通信部1019は、iを1インクリメントする(ステップS137)。そして処理はステップS129に移行する。なお、フェーズの終了はバリア同期によって確認される。
一方、i=imax5が成立する場合(ステップS135:Yesルート)、処理は終了する。
以上のように、第3の通信表に従った通信によって、同じカラムに属し且つ同じ番号が割り当てられたサーバは同じ値を持つようになる。次に、第4の通信表に従った通信によって、各Leafスイッチ配下における複数のサーバが同じ値を持つようになる。そして、第5の通信表に従った通信によって、多層フルメッシュシステム2000における全サーバが同じ値を持つようになる。すなわち、多層フルメッシュシステム2000においてオールリデュースが実現される。
また、上で述べたように、本実施の形態においては、オールリデュース通信の過程で経路競合が発生することはない。
また、本実施の形態の方法であれば、O(log n)(nはノード台数)程度の計算量でオールリデュースを実行することができるようになる。
[実施の形態3]
第1の実施の形態および第2の実施の形態においてはk=2であるが、kが3以上の自然数であったとしても、経路競合が発生することなくオールリデュース通信を実現することができる。
一例として、k=3の場合における単層フルメッシュシステム3000を図36に示す。図36においては、8台のノードの各々に3桁のビット列が割り当てられており、8台のスイッチがフルメッシュトポロジで接続されている。具体的には、スイッチ000と、スイッチ001と、スイッチ010と、スイッチ011と、スイッチ100と、スイッチ101と、スイッチ110と、スイッチ111とがフルメッシュトポロジで接続されている。図36には示されていないが、各スイッチには、7(=23−)台のサーバが接続される。
図37は、k=3の場合におけるai,jの一例を示す図である。各列における3つのビット列は一次独立であるため、オールリデュース通信を実現することが可能である。また、各行における7つのビット列は1から7までの10進数に対応するビット列であるため、経路競合を回避することが可能である。
[実施の形態4]
第3の実施の形態における単層フルメッシュシステム3000を複数連結することで、Kが3以上の自然数である場合における多層メッシュシステムを構築してもよい。この場合におけるオールリデュースは、基本的には第2の実施の形態の方法と同じ方法で実行される。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した管理装置3及びサーバの機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
[付録]
1.ビット列ai,jの生成
円環方式に基づきビット列ai,jを生成した結果を以下に示す。
k=2の場合、{01, 11, 10}である。
k=3の場合、{001,011,110,010,101,100,111}である。
k=4の場合、{0110,0111,1001,1000,1010,1100,1011,1111,1110,0011,0100,0001,1101,0010,0101}である。
k=5の場合、{00110,00111,01001,01011,10101,01101,01100,01110,10001,10110,01111,10010,10011,11010,10000,11101,11011,10100,10111,11100,11110,11000,00011,01000,00001,11111,00101,01010,00010,00100,11001}である。
k=6の場合、{100001,100010,100100,101000,110000,001011,001001,001010,101110,001101,110011,101101,101100,111000,110110,001100,111011,111100,010101,001110,111111,111110,010000,001111,010010,000111,010011,101001,010001,011100,011000,001000,010110,101010,011011,011001,010111,011111,011110,101011,011010,100000,100011,010100,011101,000110,100110,100111,110001,111101,111010,111001,110100,101111,000101,000100,000010,100101,000011,110010,000001,110101,110111}である。
2.貪欲法のアルゴリズム
円環方式において利用する貪欲法のアルゴリズムは、例えば図38に示すようなアルゴリズムである。
以上で付録を終了する。
なお、上で述べた管理装置3及び各サーバは、コンピュータ装置であって、図39に示すように、メモリ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スイッチは、図40に示すように、メモリ2601とCPU2603とHDD2605と表示装置2609に接続される表示制御部2607とリムーバブル・ディスク2611用のドライブ装置2613と入力装置2615とネットワークに接続するための通信制御部2617(図40では、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)接続形態がフルメッシュである複数のスイッチ(実施の形態におけるスイッチ00乃至11は上記複数のスイッチの一例である)と、複数のスイッチのいずれかにそれぞれ接続される複数の情報処理装置(実施の形態におけるサーバは上記複数の情報処理装置の一例である)とを有する。そして、複数の情報処理装置の各々が、(b1)自情報処理装置に接続されるスイッチの識別子である第1の識別子と、自情報処理装置に割り当てられた一次独立な数の集合のうち通信フェーズに対応する数との排他的論理和により、第2の識別子を生成する生成部(実施の形態におけるビット列生成部105は上記生成部の一例である)と、(b2)第2の識別子を有するスイッチに接続される情報処理装置との通信を行う第1通信部(実施の形態における第2通信部1013は上記第1通信部の一例である)とを有する。
各情報処理装置が自情報処理装置に割り当てられた一次独立な数の集合を使用することで、フルメッシュシステムにおいてオールリデュース通信を行う場合に経路競合が発生することを回避できるようになる。
また、複数のスイッチの台数は2k(kは自然数)であってもよく、複数のスイッチの各々には(2k−1)台の情報処理装置が接続されてもよい。
スイッチの台数及び情報処理装置の台数が適切ではない場合には経路競合なくオールリデュース通信をすることができないが、上で述べたような情報処理システムであれば経路競合なくオールリデュース通信をすることが可能である。
また、一次独立な数の集合は、一次独立なk個のk桁のビット列の集合であってもよく、複数のスイッチの各々の識別子はk桁のビット列であってもよく、複数のスイッチの各々に接続された(2k−1)台の情報処理装置が各通信フェーズで使用するビット列の集合は、1から(2k−1)までの10進数に対応するビット列を含んでもよい。
また、複数の情報処理装置の各々が、(b3)第1の識別子を有するスイッチに接続された他の情報処理装置との通信を行う第2通信部(実施の形態における第1通信部1011は上記第2通信部の一例である)をさらに有してもよい。そして、第1通信部は、(b21)第2の識別子を有するスイッチに接続される情報処理装置であって且つ自情報処理装置以外の情報処理装置が送信するデータを受信しない情報処理装置に対してデータを送信してもよい。
各情報処理装置が同じ計算結果を持つことできるようになる。
本実施の形態の第2の態様に係る情報処理システムは、接続形態がフルメッシュである複数のスイッチと複数のスイッチのいずれかにそれぞれ接続される複数の情報処理装置とを含むフルメッシュシステムが複数のスパインスイッチにより複数連結された情報処理システムである。そして、複数のフルメッシュシステムの各々における複数の情報処理装置の各々が、(C)自情報処理装置を収容する第1のリーフスイッチに接続されるスパインスイッチに接続され且つ第1のリーフスイッチが含まれるフルメッシュシステムとは異なるフルメッシュシステムに含まれる第2のリーフスイッチに接続される情報処理装置との通信を行う第1通信部(実施の形態における第3通信部1015は上記第1通信部の一例である)と、(D)第1のリーフスイッチに収容される他の情報処理装置との通信を行う第2通信部(実施の形態における第4通信部1017は上記第2通信部の一例である)と、(E)第1のリーフスイッチの識別子である第1の識別子と、自情報処理装置に割り当てられた一次独立な数の集合のうち通信フェーズに対応する数との排他的論理和により、第2の識別子を生成する生成部(実施の形態におけるビット列生成部105は上記生成部の一例である)と、(F)第2の識別子を有し且つ自情報処理装置と同じフルメッシュシステムに含まれるリーフスイッチに収容される情報処理装置との通信を行う第3通信部(実施の形態における第5通信部1019は上記第3通信部の一例である)とを有する。
多層フルメッシュシステムにおいてオールリデュース通信を行う場合に経路競合が発生することを回避できるようになる。
本実施の形態の第3の態様に係る情報処理方法は、接続形態がフルメッシュである複数のスイッチと、複数のスイッチのいずれかにそれぞれ接続される複数の情報処理装置とを有する情報処理システムにおける複数の情報処理装置のうち第1の情報処理装置に実行される。そして、上記情報処理方法は、(G)第1の情報処理装置に接続されるスイッチの識別子である第1の識別子と、第1の情報処理装置に割り当てられた一次独立な数の集合のうち通信フェーズに対応する数との排他的論理和により、第2の識別子を生成し、(H)第2の識別子を有するスイッチに接続される情報処理装置との通信を行う処理を含む。
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
接続形態がフルメッシュである複数のスイッチと、
前記複数のスイッチのいずれかにそれぞれ接続される複数の情報処理装置と、
を有し、
前記複数の情報処理装置の各々が、
自情報処理装置に接続されるスイッチの識別子である第1の識別子と、前記自情報処理装置に割り当てられた一次独立な数の集合のうち通信フェーズに対応する数との排他的論理和により、第2の識別子を生成する生成部と、
前記第2の識別子を有するスイッチに接続される情報処理装置との通信を行う第1通信部とを有する、
情報処理システム。
(付記2)
前記複数のスイッチの台数は2k(kは自然数)であり、
前記複数のスイッチの各々には(2k−1)台の情報処理装置が接続される、
付記1記載の情報処理システム。
(付記3)
前記一次独立な数の集合は、一次独立なk個のk桁のビット列の集合であり、
前記複数のスイッチの各々の識別子はk桁のビット列であり、
前記複数のスイッチの各々に接続された(2k−1)台の情報処理装置が各通信フェーズで使用するビット列の集合は、1から(2k−1)までの10進数に対応するビット列を含む、
付記2記載の情報処理システム。
(付記4)
前記複数の情報処理装置の各々が、
前記第1の識別子を有するスイッチに接続された他の情報処理装置との通信を行う第2通信部
をさらに有し、
前記第1通信部は、
前記第2の識別子を有するスイッチに接続される情報処理装置であって且つ前記自情報処理装置以外の情報処理装置が送信するデータを受信しない情報処理装置に対してデータを送信する、
付記1乃至3のいずれか1つ記載の情報処理システム。
(付記5)
接続形態がフルメッシュである複数のスイッチと、前記複数のスイッチのいずれかにそれぞれ接続される複数の情報処理装置とを有する情報処理システムにおいて実行される情報処理方法であって、
前記複数の情報処理装置の各々が、
自情報処理装置に接続されるスイッチの識別子である第1の識別子と、前記自情報処理装置に割り当てられた一次独立な数の集合のうち通信フェーズに対応する数との排他的論理和により、第2の識別子を生成し、
前記第2の識別子を有するスイッチに接続される情報処理装置との通信を行う、
処理を実行する情報処理方法。
(付記6)
接続形態がフルメッシュである複数のスイッチと前記複数のスイッチのいずれかにそれぞれ接続される複数の情報処理装置とを含むフルメッシュシステムが複数のスパインスイッチにより複数連結された情報処理システムであって、
複数の前記フルメッシュシステムの各々における前記複数の情報処理装置の各々が、
自情報処理装置を収容する第1のリーフスイッチに接続されるスパインスイッチに接続され且つ前記第1のリーフスイッチが含まれるフルメッシュシステムとは異なるフルメッシュシステムに含まれる第2のリーフスイッチに接続される情報処理装置との通信を行う第1通信部と、
前記第1のリーフスイッチに収容される他の情報処理装置との通信を行う第2通信部と、
前記第1のリーフスイッチの識別子である第1の識別子と、前記自情報処理装置に割り当てられた一次独立な数の集合のうち通信フェーズに対応する数との排他的論理和により、第2の識別子を生成する生成部と、
前記第2の識別子を有し且つ前記自情報処理装置と同じフルメッシュシステムに含まれるリーフスイッチに収容される情報処理装置との通信を行う第3通信部とを有する、
情報処理システム。