以下に、本願の開示する情報処理システム及び情報処理システムの制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理システム及び情報処理システムの制御方法が限定されるものではない。
図1は、実施例1に係る情報処理システムのシステム構成図である。本実施例に係る情報処理システム3は、複数の3次元トーラスメッシュ2を有する。3次元トーラスメッシュ2は、環状に接続された1次元トーラス構造を有する。すなわち、情報処理システム3は、4次元トーラス構造を有する。以下では、3次元トーラスメッシュ2が接続される次元をW次元と言う。
3次元トーラスメッシュ2は、複数のシステムボード1を有する。各システムボード1は、3つの次元のそれぞれで隣接するシステムボード1と接続された3次元トーラス構造を有する。以下では、3次元トーラスメッシュ2に含まれる3つの次元をX次元、Y次元、Z次元と言う。
図2は、システムボードのハードウェア構成図である。各システムボード1は、複数の主演算装置10、複数の集約演算装置20、CPU(Central Processing Unit)30、PCIスイッチ40、及び、HCA(Host Channel Adaptor)50を有する。このシステムボード1が、「情報処理装置」の一例にあたる。
各システムボード1上のCPU30は、相互に直接接続される。また、システムボード1上において、CPU30は、PCIスイッチ40に接続される。CPU30は、操作者から入力されたジョブの命令を受けて、ジョブを後述する各主演算装置10及び各集約演算装置20へ送信する。
各PCIスイッチ40は、主演算装置10、集約演算装置20及びCPU30に接続される。また、各PCIスイッチ40は、HCA50に接続される。PCIスイッチ40は、主演算装置10、集約演算装置20及びCPU30によるPCIを用いた通信時の経路選択を行う。
HCA50は、主演算装置10、集約演算装置20及びCPU30によるインフィニバンドを用いた通信における通信インタフェースである。HCA50は、PCIスイッチ40に接続される。また、HCA50は、ネットワークスイッチ60に接続される。
ネットワークスイッチ60は、各システムボード1上のHCA50が接続される。ネットワークスイッチ60は、主演算装置10、集約演算装置20及びCPU30によるインフィニバンドを用いた通信における経路選択を行う。
主演算装置10は、並列計算を行うための演算回路を有する。主演算装置10は、例えば、GPU(Graphic Processing Unit)である。主演算装置10は、ディープラーニングにおける集約演算以外の演算処理などを実行する。
また、集約演算装置20は、集合通信による集約演算を行うための演算回路を有する。集約演算装置20は、例えば、GPUである。集約演算装置20は、ディープラーニングにおける集約演算の処理などを実行する。以下では、主演算装置10及び集約演算装置20を「ノード」と呼ぶ場合がある。
ここで、本実施例では、各システムボード1上に図3に示すように主演算装置11〜18及び集約演算装置21〜24が並べられている。そして、各システムボード1上の同じ位置の集約演算装置21〜24が接続されて1次元トーラスを形成する場合で説明する。例えば、あるシステムボード1上の集約演算装置21は、他のシステムボード上の集約演算装置21と接続される。以下では、同じ位置の集約演算装置20と言った場合、図3における位置が同じ集約演算装置20を指すものとする。
図3は、主演算装置と集約演算装置との接続状態を表す図である。主演算装置10は、本実施例では、1つのシステムボード1上に8つ搭載される。図3では、8つの主演算装置10を、主演算装置11〜18と表した。また、集約演算装置20は、本実施例では、1つのシステムボード1上に4つ搭載される。図3では、4つの集約演算装置20を、集約演算装置21〜24として表した。
主演算装置11〜18は、それぞれ集約演算装置21〜24の全てに接続される。また、同じシステムボード1上に搭載された主演算装置11〜18同士は直接接続はなされない。すなわち、主演算装置11〜18及び集約演算装置21〜24は、Fat−Tree構造の接続形態を有する。
主演算装置11〜18は、それぞれ8つの接続ポートを有する。主演算装置11〜18は、システムボード1上での集約演算装置21〜24とのインターコネクトの接続で4つの接続ポートが使用される。そして、主演算装置11〜18の残りの6つの接続ポートは、システムボード1間の接続に使用される。より詳しくは、主演算装置11〜18の他のシステムボード1との接続に使用される接続ポートのうち2つはX方向の接続に使用され、他の2つはY方向の接続に使用され、残りの2つはZ方向の接続に使用される。
ここで、本実施例では主演算装置11〜18は集約演算装置21〜24の全てに接続されたが、主演算装置21〜24のうちから選択したいくつかと接続される構成でもよい。また、主演算装置11〜18及び集約演算装置21〜24の個数はこれに限らず、また、それぞれの比率もこれに限らない。
図4における接続状態501が、本実施例に係るシステムボード1の接続状態を表す。図4は、情報処理システムにおける各接続状態を表す図である。システムボード1間の主演算装置11〜18の接続により、システムボード1はXYZ次元の3次元トーラス構造となる。
集約演算装置21〜24も同様に、それぞれ8つの接続ポートを有する。集約演算装置21〜24は、システムボード1上での主演算装置11〜18とのインターコネクトの接続で8つの接続ポートが使用される。そして、集約演算装置21〜24の残りの2つの接続ポートは、システムボード1間の接続に使用される。より詳しくは、集約演算装置21〜24の他のシステムボード1との接続に使用される2つの接続ポートは、W方向の接続に使用される。図4における接続状態502が、集約演算装置21〜24の接続状態を表す。システムボード1間の集約演算装置21〜24の接続により、W次元は、1次元トーラス構造となる。
そして、接続状態501により、システムボード1の3次元トーラス構造を有する3次元トーラスメッシュ2が構築される。また、接続状態502により、3次元トーラスメッシュ2は、環状に接続され1次元トーラス構造となる。すなわち、情報処理システム3は、接続状態503に示すように、3次元トーラスメッシュ2がリングで繋がる4次元トーラス構造となる。
次に、図5を参照して、主演算装置10の詳細について説明する。図5は、主演算装置のハードウェア構成図である。
主演算装置10は、並列演算装置101、演算制御部102、メモリ制御部103及びメモリ104を有する。さらに、主演算装置10は、DMA(Direct Memory Access)エンジン部105、PCI制御部106、ジョブ管理部107、ネットワーク構成管理部108、ネットワーク制御部109、通信用バッファ110及びインターコネクト装置111を有する。ここで、図3では、並列演算装置101、演算制御部102、メモリ制御部103及びメモリ104を4つずつ記載したが、これらの数に特に制限は無い。
PCI制御部106は、DMAエンジン部105、ジョブ管理部107及びネットワーク構成管理部108とPCIスイッチ40との間のPCIを用いた通信の制御を行う。
ジョブ管理部107は、PCIスイッチ40及びPCI制御部106を介してCPU30から送信されたジョブを実行するための演算命令の入力を受ける。ジョブ管理部107は、取得した演算命令をキューとして取り扱う。ジョブ管理部107は、演算命令を演算制御部102へ出力する。その後、ジョブ管理部107は、演算結果の入力を演算制御部102から受ける。そして、ジョブ管理部107は、各演算制御部102から取得した演算結果をまとめてジョブの結果を取得する。その後、ジョブ管理部107は、ジョブの結果をPCI制御部106及びPCIスイッチ40などを介してCPU30へ出力する。
演算制御部102は、演算命令にしたがい、メモリ制御部103を介してメモリ104からデータを取得する。そして、演算制御部102は、取得したデータ及び演算命令を並列演算装置101へ出力する。その後、演算制御部102は、演算結果を並列演算装置1−1から取得する。次に、演算制御部102は、演算結果をジョブ管理部107へ出力する。
並列演算装置101は、データ及び演算命令の入力を演算制御部102から受ける。そして、並列演算装置101は、取得したデータを用いて指定された演算を実行する。その後、並列演算装置101は、演算結果を演算制御部102へ出力する。
ネットワーク構成管理部108は、CPU30が実行するデバイスドライバよりシステムボード1内の結線表を取得する。結線表は、主演算装置10と集約演算装置20との間のインターコネクトの接続状態を含む。ネットワーク構成管理部108は、取得した結線表をネットワーク制御部109へ出力する。
ネットワーク制御部109は、通信用バッファ110及びインターコネクト装置111と接続される。ネットワーク制御部109は、通信用バッファ110及びインターコネクト装置111を用いてインターコネクトを介した他の主演算装置10との間の通信を制御する。具体的には、ネットワーク制御部109は、送信するデータを通信用バッファ110に書き込む。そして、ネットワーク制御部109は、インターコネクト装置111に対して通信用バッファ110に格納されたデータの送信を指示することで集約演算装置20へデータを送信する。
ネットワーク制御部109は、システムボード1の結線表をネットワーク構成管理部108から取得する。さらに、ネットワーク制御部109は、実行されるジョブで行う主演算装置10及び集約演算装置20との間の通信の情報をジョブ管理部107から取得する。そして、ネットワーク制御部109は、取得した通信の情報にしたがい結線表を用いて通信相手及び送信するデータを決定する。次に、ネットワーク制御部109は、送信を決定したデータの取得要求をメモリ制御部103へ出力する。その後、ネットワーク制御部109は、取得要求に応じたデータの入力をメモリ制御部103から受ける。そして、ネットワーク制御部109は、取得したデータを決定した通信相手に送信する。
また、ネットワーク制御部109は、データの受信の通知をインターコネクト装置111から受ける。そして、ネットワーク制御部109は、通信用バッファ110に格納された受信したデータを取得する。そして、ネットワーク制御部109は、取得したデータとともに書き込みの指示をメモリ制御部103へ出力する。
また、ネットワーク制御部109は、他のシステムボード1へのデータの転送命令を集約演算装置20から受けた場合、メモリ制御部103を介して受信したデータをメモリ104に格納するとともに、ジョブ管理部107にDMA転送の実行を指示する。これにより、集約演算装置20から送られてきたデータは、DMAエンジン部105により他のシステムボード1上の主演算装置10へ送信される。
ネットワーク制御部109が行う集約演算装置20との間の通信には、システムボード1内におけるReduce処理が含まれる。そこで、図6を参照して、Allreduce処理におけるネットワーク制御部109の機能について詳細に説明する。図6は、主演算装置におけるネットワーク制御部のブロック図である。図6では、ネットワーク制御部109におけるAllReduce処理を行うための機能を記載し、他の機能については省略した。図6に示すように、ネットワーク制御部109は、データ分割部191、データ送信部192及びデータ受信部193を有する。
データ分割部191は、Allreduce処理の実行命令をジョブ管理部107から取得する。そして、Allreduce処理におけるシステムボード内処理において、データ分割部191は、Allreduce処理に用いる配列データをメモリ制御部103から取得する。次に、データ分割部191は、システムボード1内の結線表をネットワーク構成管理部108から取得する。
次に、データ分割部191は、システムボード1内の結線表から自己が搭載された主演算装置10に接続する集約演算装置20を特定する。そして、データ分割部191は、自己が搭載された主演算装置10に接続する集約演算装置20の数で取得した配列データを分割し、それぞれの送信先の集約演算装置20を決定する。ここで、送信先の集約演算装置20は、各データでそれぞれ異なるように決定される。本実施例では、主演算装置10は4つの集約演算装置20に接続するので、データ分割部191は、配列データを4分割し1/4配列データを生成する。そして、データ分割部191は、分割した1/4配列データを送信先の集約演算装置20の情報とともにデータ送信部192へ出力する。このデータ分割部191が、「分割部」の一例にあたる。
データ送信部192は、Allreduce処理におけるシステムボード内処理において、1/4配列データの入力をデータ分割部191から受ける。さらに、データ送信部192は、各1/4配列データの送信先の集約演算装置20の情報の入力をデータ分割部191から受ける。そして、データ送信部192は、4つの1/4配列データをそれぞれ送信先の集約演算装置20へ送信する。以下では、配列データの分割及び分割した配列データの集約演算装置20への送信をシステムボード内Reduce処理と言う場合がある。
ここで、図7を参照して、Allreduce処理におけるシステムボード内処理の概要をさらに説明する。図7は、Allreduce処理におけるシステムボード内処理を説明するための図である。ここでは、主演算装置11〜17及び集約演算装置21〜24を用いて説明する。
主演算装置11は、例えば、Allreduceに用いる配列データ120を有する。データ分割部191は、配列データ120を1/4配列データ121〜124に分割する。そして、データ送信部192は、1/4配列データ121を集約演算装置21へ送信する。また、データ送信部192は、1/4配列データ122を集約演算装置22へ送信する。また、データ送信部192は、1/4配列データ123を集約演算装置23へ送信する。また、データ送信部192は、1/4配列データ124を集約演算装置24へ送信する。このように、データ分割部191は、システムボード内処理において、元の配列データ120を接続する集約演算装置21〜24の台数で分割した1/4配列データ121〜124をそれぞれ異なる集約演算装置21〜24へ配布する。
図6に戻って説明を続ける。また、データ送信部192は、XYZ方向に対するHalving_Doubling処理の場合、他のシステムボード1上の集約演算装置20から送信されてメモリ104に格納されたデータをメモリ制御部103から取得する。そして、データ送信部192は、取得したデータを宛先の集約演算装置20へ送信する。
データ受信部193は、Allreduce処理におけるシステムボード内処理において、集約演算結果を各集約演算装置20から受信する。そして、データ受信部193は、各集約演算結果を送信元の集約演算装置20へ送った1/4配列データの集約演算結果として並べることで配列データに対する集約演算結果を生成する。その後、データ受信部193は、生成した集約演算結果をメモリ制御部103へ出力し、メモリ104に格納させる。
すなわち、データ受信部193は、Allreduce処理におけるシステムボード内処理として、図7に示す1/4配列データ121に対応する集約演算結果127を集約演算装置21から受信する。集約演算結果127は、主演算装置11〜18のそれぞれが集約演算装置21へ送信した1/4配列データ121〜126を用いて集約演算を行った演算結果である。演算には、例えば、加算、乗算、最大値、最小値、平均値などが使用できる。
また、主演算装置11は、1/4配列データ122に対応する集約演算結果を集約演算装置22から受信する。また、主演算装置11は、1/4配列データ123に対応する集約演算結果を集約演算装置23から受信する。また、主演算装置11は、1/4配列データ124に対応する集約演算結果を集約演算装置24から受信する。これにより、主演算装置11は、配列データ120に対応する集約演算結果を取得できる。同様に、主演算装置12〜18も、各集約演算装置21〜24から集約演算結果を受信することで、それぞれが保持する配列データに対応する主演算装置11と同様の集約演算結果を取得できる。
また、データ受信部193は、XYZ方向に対するHalving_Doubling処理の場合、他のシステムボード1上の集約演算装置20へ送信するデータを自己のシステムボード1上の集約演算装置20から取得する。そして、データ受信部193は、受信したデータをメモリ制御部103へ出力し、メモリ104に格納させる。さらに、データ受信部193は、メモリ制御部103に宛先の集約演算装置20へのDMAによるデータ転送をメモリ制御部103及びDMAエンジン部105に指示する。
通信用バッファ110は、集約演算装置20との間のインターコネクトを介した通信における一時格納領域である。通信用バッファ110には、集約演算装置20へ送信されるデータが格納される。また、通信用バッファ110には、集約演算装置20から受信したデータが格納される。
インターコネクト装置111は、インターコネクトにより集約演算装置20と接続する。インターコネクト装置111は、集約演算装置20との間のインターコネクトを介した通信を行う。インターコネクト装置111は、ネットワーク制御部109からのデータの送信指示を受けて、通信用バッファ110からデータを読み出す。そして、インターコネクト装置111は、読み出したデータをネットワーク制御部109から指定された通信相手の集約演算装置20へ送信する。また、インターコネクト装置111は、集約演算装置20からデータを受信し、受信したデータを通信用バッファ110に格納する。さらに、インターコネクト装置111は、データの受信をネットワーク制御部109に通知する。
DMAエンジン部105は、CPU30などを介すことなく、PCIのバスで接続された他のシステムボード1上の主演算装置10が有するメモリ104へのアクセス制御を行う。DMAエンジン部105は、ジョブにおけるPCIを用いた通信の情報の入力をジョブ管理部107から受ける。そして、DMAエンジン部105は、ジョブにおけるPCIを用いた通信の情報にしたがい、メモリ制御部103へデータの読み出しの指示を行う。その後、DMAエンジン部105は、メモリ104から読み出されたデータの入力をメモリ制御部103から受ける。そして、DMAエンジン部105は、取得したデータを送信先の主演算装置10のメモリ104へPCI制御部106及びPCIスイッチ40を介して送信する。
また、DMAエンジン部105は、DMAにより他のシステムボード1上の主演算装置10のDMAエンジン部105から送信されたデータをPCI制御部106から受信する。そして、DMAエンジン部105は、受信したデータの書き込みをメモリ制御部103へ指示する。
特に、XYZ方向に対するHalving_Doubling処理の場合、DMAエンジン部105は、以下の処理を行う。DMAエンジン部105は、自己のシステムボード1上の集約演算装置20から他のシステムボード1上の集約演算装置20へ送信されるデータをメモリ104から取得する。そして、DMAエンジン部105は、宛先である他のシステムボード1上の集約演算装置20に繋がる主演算装置10のメモリ104へ、PCI制御部106及びPCIスイッチ40を介して取得したデータを送信する。
また、DMAエンジン部105は、他のシステムボード1上の集約演算装置20から自己のシステムボード1上の集約演算装置20へ送信されたデータをPCI制御部106から受信する。そして、DMAエンジン部105は、受信したデータのメモリ104への書き込みをメモリ制御部103へ指示する。
メモリ制御部103は、接続されたメモリ104に対するデータの読み出し及び書き込みを制御する。メモリ制御部103は、DMAエンジン部105からの読み出しの指示にしたがいメモリ104からデータを読み出し、読み出したデータをDMAエンジン部105へ出力する。また、メモリ制御部103は、DMAエンジン部105からの書込みの指示にしたがいメモリ104へデータを書き込む。
また、メモリ制御部103は、ネットワーク制御部109からの読み出しの指示にしたがいメモリ104からデータを読み出し、読み出したデータをDMAエンジン部105へ出力する。また、メモリ制御部103は、ネットワーク制御部199からの書込みの指示にしたがいメモリ104へデータを書き込む。
次に、図8を参照して、集約演算装置20の詳細について説明する。図8は、集約演算装置のハードウェア構成図である。ここで、本実施例では、集約演算装置20は、主演算装置10とは構成が異なる、主演算装置10の廉価版の装置を利用したが、構成が同じ装置を用いることも可能である。
集約演算装置20は、並列演算装置201、演算制御部202、メモリ制御部203及びメモリ204を有する。さらに、集約演算装置20は、DMAエンジン部205、PCI制御部206、ジョブ管理部207、ネットワーク構成管理部208、ネットワーク制御部209、通信用バッファ210及びインターコネクト装置211を有する。
PCI制御部206は、図6のPCI制御部106と同様の動作により、Allreduce処理におけるPCIを用いた通信の制御を行う。また、ジョブ管理部207は、図6のジョブ管理部107と同様の動作により、Allreduce処理におけるジョブの管理を行う。また、演算制御部202は、図6の演算制御部102と同様の動作により、Allreduce処理における並列演算装置201とメモリ制御部203との間のデータ転送の制御と言った演算に関する制御を行う。並列演算装置201は、Allreduce処理に関する演算を実行する。この並列演算装置201が、「演算実行部」の一例にあたる。
ネットワーク構成管理部208は、CPU30が実行するデバイスドライバよりシステムボード1内及びシステムボード1間の結線表を取得する。結線表は、主演算装置10と集約演算装置20との間のインターコネクトの接続状態、各主演算装置10と他のシステムボード1の主演算装置10の接続状態及び集約演算装置20と他のシステムボード1の集約演算装置20との接続状態を含む。ネットワーク構成管理部208は、取得した結線表をネットワーク制御部209へ出力する。
ネットワーク制御部209は、結線表をネットワーク構成管理部108から取得する。さらに、ネットワーク制御部109は、Allreduce処理の情報をジョブ管理部107から取得する。そして、ネットワーク制御部209は、取得した情報にしたがい結線表を用いて通信相手及び送信するデータを決定する。次に、ネットワーク制御部209は、送信を決定したデータの取得要求をメモリ制御部203へ出力する。その後、ネットワーク制御部209は、取得要求に応じたデータの入力をメモリ制御部203から受ける。そして、ネットワーク制御部209は、取得したデータを決定した通信相手に送信する。
また、ネットワーク制御部209は、データの受信の通知をインターコネクト装置111から受ける。そして、ネットワーク制御部209は、通信用バッファ210に格納された受信したデータを取得する。そして、ネットワーク制御部209は、取得したデータとともに書き込みの指示をメモリ制御部203へ出力する。
さらに、ネットワーク制御部209は、取得したデータを用いたAllreduce処理における演算の実行をジョブ管理部207に依頼することで、メモリ204に格納したデータを用いたAllreduce処理における演算を並列演算装置201に実行させる。そして、ネットワーク制御部209は、メモリ204に格納されたデータを取得することで演算結果を取得する。
ここで、ネットワーク制御部209によるAllreduce処理の詳細について説明する。図9は、集約演算装置におけるネットワーク制御部のブロック図である。図9では、ネットワーク制御部109におけるAllReduce処理を行うための機能を記載し、他の機能については省略した。またここでは、説明の都合上、ネットワーク制御部209は、主演算装置10や他のシステムボード1上の集約演算装置20と直接通信を行うように説明する。さらに、並列演算装置201も、メモリ制御部203と直接通信を行うように説明する。また、実際には並列演算装置201がAllreduce処理の演算を行うが、ここでは並列演算装置201による演算処理を省略して説明する。
図9に示すように、ネットワーク制御部209は、統括管理部291、順序決定部292、データ送信部293及びデータ受信部294を有する。
順序決定部292は、結線表の入力をネットワーク構成管理部208から受ける。そして、順序決定部292は、情報処理システム3における次元として、4次元トーラス構造を形成するW次元、X次元、Y次元、Z次元を取得する。次に、順序決定部292は、例えば、アルファベットの順番に、4つの次元をソートする。そして、順序決定部292は、ソート後の次元の順序を、Halving処理を実行する次元の順序として統括管理部291に通知する。本実施例では、順序決定部292は、W次元、X次元、Y次元、Z次元の順にHalving処理を実行すると決定する。
データ送信部293は、送信するデータの入力を統括管理部291から受ける。さらに、データ送信部293は、データを送信する宛先の情報の入力を統括管理部291から受ける。そして、データ送信部293は、W次元のHalving処理又はDoubling処理の場合、自己が搭載されたシステムボード1が接続する他のシステムボード1上の宛先となる集約演算装置20へのデータ送信をメモリ制御部203に指示する。これに対して、X、Y、Zの何れかの次元のHalving処理又はDoubling処理の場合、データ送信部293は、他のシステムボード1上の宛先となる主演算装置10へデータを送信するため、自己が搭載されたシステムボード1上の主演算装置10へデータを送信する。このように、X、Y、Zの何れかの次元のHalving処理又はDoubling処理の場合、集約演算装置20は、主演算装置10を介して他のシステムボード1と通信を行う。このデータ送信部293が、「送信部」の一例にあたる。
データ受信部294は、X、Y、Zの何れかの次元のHalving処理又はDoubling処理の場合、他のシステムボード1上の集約演算装置20から送信されたデータの入力を主演算装置10から受ける。そして、データ受信部294は、取得したデータをメモリ制御部203を介してメモリ204に格納する。このデータ受信部294が、「受信部」の一例にあたる。
統括管理部291は、Allreduce処理の実行命令の入力をジョブ管理部207から受ける。また、統括管理部291は、結線表の入力をネットワーク構成管理部208から受ける。さらに、統括管理部291は、Halving処理を実行する次元の順序の入力を順序決定部292から受ける。Halving処理とは、保持する配列データを基に2分割を繰り返しながら次元方向に並ぶシステムボード1に分配する処理である。
次に、統括管理部291は、各主演算装置10から受信した1/4配列データを、メモリ制御部203を介してメモリ204から取得する。以下では、各主演算装置10から受信した1/4配列データについて、同じ処理を行うので、1つの1/4配列データに着目して説明する。
統括管理部291は、最初のHalving処理を行うW次元の方向に自己が搭載された集約演算装置20から延びる経路上に並んで接続されるシステムボード1の数であるW方向数を結線表から取得する。ここでは、W方向に4つのシステムボード1が並んで接続される場合、すなわちW方向数が4の場合で説明する。統括管理部291は、1/4配列データをW方向数である4つに分割する。その後、統括管理部291は、W次元の方向に自己が搭載された集約演算装置20から延びる経路上に並んで接続されるシステムボード1上の各集約演算装置20との間でHalving処理を実行する。
統括管理部291は、1回目のHalving処理において、自己が搭載された集約演算装置20からW次元の方向に延びる経路上に並んで接続されるシステムボード1の数であるW方向の数を結線表から取得する。ここでは、W方向に4つのシステムボード1が並んで接続される場合、すなわちW方向の数が4の場合で説明する。統括管理部291は、1/4配列データをW方向の数である4つに分割する。その後、統括管理部291は、W次元の方向に自己が搭載された集約演算装置20から延びる経路上に並んで接続されるシステムボード1上の各集約演算装置20との間でHalving処理を実行する。
以下に、図10を参照して、W次元のHalving処理の詳細について説明する。図10は、W次元のHalving処理について説明するための図である。ここでは、システムボード1及び1W1〜1W3がW次元方向に接続されて並ぶ。システムボード1は、集約演算装置21〜24を有する。また、集約演算装置21W1〜21W3は、システムボード1W1〜1W3上の、システムボード1における集約演算装置21と同じ位置に存在する。
集約演算装置21は、主演算装置10から受信した1/4配列データ121を保持する。また、集約演算装置22は、主演算装置10から受信した1/4配列データ122を保持する。また、集約演算装置23は、主演算装置10から受信した1/4配列データ123を保持する。また、集約演算装置24は、主演算装置10から受信した1/4配列データ124を保持する。すなわち、図10におけるシステムボード1の上に記載したボックスの中の1/4配列データ121、122、123及び124を含む4つの帯のそれぞれは、集約演算装置21〜24が有するデータにあたる。さらに、帯の中の1/4配列データ121、122、123及び124の位置は、主演算装置10が保持する配列データ120におけるそれぞれの位置を表す。これは、他のシステムボード1W1〜1W3についても同様である。
システムボード1W1上の集約演算装置21W1は、1/4配列データ121W1を保持する。また、システムボード1W2上の集約演算装置21W2は、1/4配列データ121W2を保持する。また、システムボード1W3上の集約演算装置21W3は、1/4配列データ121W3を保持する。
そして、1次元トーラスの接続を有する集約演算装置21及び21W1〜21W3が、Halving処理を実行する。同様に、集約演算装置22〜24についても、他のシステムボード1W1〜1W3上の同じ位置の集約演算装置20との間でHalving処理を実行する。
ここで、図11を参照して、Halving処理について説明する。図11は、集約演算装置によるHalving処理を表す図である。集約演算装置21及び21W1〜21W3は、それぞれ1/4配列データ121及び121W1〜121W3を有する。
集約演算装置21は、集約演算装置21W1〜21W3のうちのいずれかに1/4配列データ121の下半分のデータ301を送信する。図11では、集約演算装置21は、集約演算装置21W1へデータ301を送信する。集約演算装置21からデータ301を受信する集約演算装置21W1は、1/4配列データ121W1の上半分のデータ302を集約演算装置21へ送信する。残りの集約演算装置21W2及び21W3もそれぞれ、1/4配列データ121W2の上半分のデータと1/4配列データ121W3の下半分のデータとを相互に送受信する。そして、集約演算装置21は、1/4配列データ121における受信したデータ302の位置のデータとデータ302とを用いて演算を行う。ここでは、演算結果を、演算前のデータの元の値を並べた数字で表す。集約演算装置21W1〜21W3も同様に演算を行う。
次に、集約演算装置21は、演算により求めたデータのうちの下半分のデータ303を、集約演算装置21W2又は21W3のうち前のステップで配列データの同じ位置に演算結果を有する装置へ送信する。ここでは、集約演算装置21は、集約演算装置21W2へデータを送信する。また、集約演算装置21からデータ303を受信する集約演算装置21W2は、演算により求めたデータのうちの上半分のデータ304を、集約演算装置21へ送信する。残りの集約演算装置21W1及び21W3もそれぞれ、演算により求めたデータうちの上半分のデータと下半分のデータとを相互に送受信する。そして、集約演算装置21は、1つ前のステップにおける演算により求めたデータのうちの上半分のデータ305と受信したデータ304とを用いて演算を行う。これにより、集約演算装置21は、1/4配列データ121を4分割した1番目の部分の集約演算の結果としてデータ306を取得する。同様に、集約演算装置21W1〜21W3は、それぞれ、1/4配列データ121W1〜121W3を4分割した3番目、2番目、4番目の部分の集約演算の結果を取得する。これにより、集約演算装置21及び21W1〜21W3は、それぞれ元の1/4配列データ121及び121W1〜121W3を4分割した場合の異なる位置の集約演算結果をそれぞれが保持する。
図12は、Halving処理の前後における各集約演算装置が有するデータの長さを表す図である。図12では、状態351がHalving処理前の各集約演算装置21及び21W1〜21W3が保持するデータの長さを表し、状態352がHalving処理前の各集約演算装置21及び21W1〜21W3が保持するデータの長さを表す。状態351及び352共に、紙面に向かって左から順に各集約演算装置21及び21W1〜21W3が保持するデータを表す。さらに、図21における各データは、元の配列データに対するデータの大きさを表す。
例えば、集約演算装置21Aは、W次元のHalving処理前には、状態351に示すように1/4配列データ121を有する。そして、W次元のHalving処理を行うと、状態352に示すように1/4配列データ121の1/4のサイズの1/16配列データ131を有する。他の集約演算装置21B〜Dも、主演算装置10が有する元の配列データの1/16のサイズのデータをそれぞれが保持する。
図9に戻って説明を続ける。以上に説明した順に、統括管理部291は、W次元のHalving処理のステップ毎に、主演算装置10から取得した1/4配列データ又は演算結果を、メモリ制御部203を介してメモリ204から取得する。そして、統括管理部291は、W次元のHalving処理のステップ毎に取得したデータを半分にしていくことで送信データを生成しデータ送信部293へ出力する。さらに、統括管理部291は、W次元のHalving処理においてステップ毎に上述した順に宛先をデータ送信部293に通知する。これにより、統括管理部291は、上述したW次元のHalving処理におけるデータ送信をデータ送信部293に行わせる。
次に、集約演算装置21は、X次元方向へのHalving処理に移る。図3を参照して、X次元のHalving処理の詳細について説明する。図13は、X次元のHalving処理について説明するための図である。ここでは、システムボード1及び1X1〜1X3がX次元方向に接続されて並ぶ。システムボード1及び1X1〜1X3は、それぞれ集約演算装置21及び21X1〜21X3を有する。集約演算装置21X1〜21X3は、システムボード1X1〜1X3上の、システムボード1における集約演算装置21と同じ位置に存在する。すなわち、集約演算装置21及び21X1〜21X3が、X方向のHalving処理を実行する。
集約演算装置21は、W方向のHalving処理で算出した1/16配列データ131を保持する。また、システムボード1X1上の集約演算装置21X1は、1/16配列データ131X1を保持する。また、システムボード1X2上の集約演算装置21X2は、1/16配列データ131X2を保持する。また、システムボード1W3上の集約演算装置21X3は、1/16配列データ131X3を保持する。
そして、1次元トーラスの接続を有する集約演算装置21及び21X1〜21X3が、Halving処理を実行する。同様に、集約演算装置22〜24についても、他のシステムボード1X1〜1X3上の同じ位置の集約演算装置20との間でHalving処理を実行する。
ここで、集約演算装置21は、集約演算装置21X1〜21X3と直接は接続されていない。そのため、集約演算装置21は、図14に示すように、主演算装置10をホップすることで、集約演算装置21X1〜21X3と通信を行う。図14は、X次元における集約演算装置間の通信を説明するための図である。
X次元のHalving処理の場合も、図11で表される処理と同様の処理を、集約演算装置21及び21X1〜21X3が行う。これにより、集約演算装置21は、主演算装置10が有する元の配列データ120の1/64のサイズの演算結果を取得する。この段階で、各集約演算装置20が有する元の配列データの1/64のサイズの配列データは、W次元、X次元が一致する全てのシステムボード1内の128基の全ての主演算装置10上の配列データを集約した値となる。
図9に戻って説明を続ける。以上に説明した順に、統括管理部291は、X次元のHalving処理のステップ毎に演算結果をメモリ制御部203を介してメモリ204から取得する。そして、統括管理部291は、演算結果を順次半分にしていくことで送信データを生成しデータ送信部293へ出力する。さらに、統括管理部291は、X次元のHalving処理においてステップ毎に上述した順に宛先をデータ送信部293に通知する。これにより、統括管理部291は、上述したX次元のHalving処理におけるデータ送信をデータ送信部293に行わせる。
この後、統括管理部291は、Y次元及びZ次元についても同様にHalving処理を実行する。これにより、全ての集約演算装置20は、各主演算装置10が有する配列データの1/1024の長さの配列データを有することになる。
その後、統括管理部291は、Halving処理を行った次元の順番の逆順で、次元毎にHalving処理時の順番の逆順を辿りデータのコピーを実行し、Doubling処理を行う。すなわち、本実施例の場合、統括管理部291は、Z次元、Y次元、X次元、W次元の順にDoubling処理を行う。これにより、統括管理部291は、各主演算装置10から受信した1/4配列データを用いた集約演算結果を取得する。Doubling処理は、演算結果を各次元方向に並ぶ各システムボード1との間で授受する処理である。
例えば、X次元のDoubling処理の場合、図13に示す集約演算装置21及び21X1〜21X3の間でデータのコピーを実行する。また、W次元のDoubling処理の場合、図10に示す集約演算装置21及び21W1〜21W3の間でデータのコピーが実行される。Doubling処理の場合、コピーを行うにしたがい保持する演算結果のサイズは倍に増える。
ここで、図15を参照して、W次元のDoubling処理の場合について説明する。図15は、集約演算装置によるDoubling処理を表す図である。X次元のDoubling処理が完了した時点で、集約演算装置21及び21W1〜21W3は、それぞれ、主演算装置10が保持する配列データの1/16のサイズの演算結果を有する。また、集約演算装置21及び21W1〜21W3は、それぞれ配列データにおける異なる位置の演算結果を保持する。ここでは、集約演算装置21及び21W1〜21W3は、それぞれデータ311〜314を有する。
集約演算装置21は、W次元のHalving処理において最後の通信相手である集約演算装置21W2にデータ311をコピーする。このコピーは、配列データにおける同じ位置へのコピーである。これに対して、集約演算装置21W2は、データ313を集約演算装置21へコピーする。同様に、残りの集約演算装置21W1及び21W3も、データ312及び314を互いにコピーし合う。これにより、集約演算装置21及び21W1〜21W3は、それぞれ、主演算装置10が保持する配列データの1/8のサイズの演算結果を有することになる。
次に、集約演算装置21は、1つ前のステップ以前から有するデータ311と1つ前のステップで集約演算装置21W2からコピーされたデータ315とを、Halbing処理における最初の通信相手である集約演算装置21W1へ送信する。同様に、集約演算装置21W1〜21W3も、最初の通信相手に対して主演算装置10が保持する配列データの1/8のサイズの演算結果をコピーする。これにより、集約演算装置21及び21W1〜21W3は、主演算装置10が保持する配列データの1/4のサイズの演算結果を有することになる。例えば、集約演算装置21は、図7に示す主演算装置10から受信した1/4配列データ121を用いた集約演算結果127を取得することができる。
図9に戻って説明を続ける。以上に説明した順に、統括管理部291は、Z次元、Y次元、X次元、W次元のHalving処理のステップ毎に演算結果をメモリ制御部203を介してメモリ204から取得する。そして、統括管理部291は、コピーされた演算結果を合わせて、保持する演算結果のサイズを順次倍にしたデータを送信データとしてデータ送信部293へ出力する。さらに、統括管理部291は、各次元のDoubling処理においてステップ毎に上述した順に宛先をデータ送信部293に通知する。これにより、統括管理部291は、上述した各次元のDoubling処理におけるデータ送信をデータ送信部293に行わせる。
その後、統括管理部291は、各主演算装置10から取得した1/4配列データを用いた集約演算結果を、1/4配列データの送信元の主演算装置10へ送信することで、システムボード内処理を行いAllreduce処理を完了する。以下では、集約演算装置20から主演算装置10への1/4配列データを用いた集約演算結果の送信を、システムボード内ブロードキャストと言う場合がある。この統括管理部291が、「処理制御部」の一例にあたる。
次に、図16〜24を参照して、本実施例に係る集約演算装置20によるHalving−Doubling処理の具体例について説明する。図16は、初期状態を表す図である。図17は、W次元のHalving処理を表す図である。図18は、X次元のHalving処理を表す図である。図19は、Y次元のHalving処理を表す図である。図20は、Z次元のHalving処理を表す図である。図21は、Z次元のDoubling処理を表す図である。図22は、Y次元のDoubling処理を表す図である。図23は、X次元のDoubling処理を表す図である。図24は、W次元のDoubling処理を表す図である。ここでは、各システムボード1は、それぞれ集約演算装置20を1つ有し、それぞれを集約演算装置401〜416とする。また、4次元空間のサイズはW〜Z次元のいずれも2とする。すなわち、システムボード1は、各次元毎に2つ存在し、全部で16個存在する。また、集約演算装置20は、集約演算として加算を行う場合で説明する。さらに、各集約演算装置20が有する。また、図16〜24において、破線で結ばれる次元がW次元を表し、実線で結ばれる次元がX次元を表し、一点鎖線で結ばれる次元がY次元を表し、2点鎖線で表される次元がZ次元を表す。
図16では、システムボード内Reduce処理で配布された配列データを、各集約演算装置401〜416の中に記載した。ここでは、集約演算装置401〜416は、それぞれ、1〜16の値が16個並ぶ配列データを有する。
図16の状態でW次元のHalving処理が行われることで、図17に示す状態となる。具体的には、集約演算装置401と集約演算装置402との間でHalving処理が行われ、集約演算装置401の保持する配列データの上半分及び集約演算装置402の保持する配列データの下半分が、相互の配列データが加算された3となる。また、集約演算装置403と集約演算装置404との間でHalving処理が行われ、集約演算装置403の保持する配列データの上半分及び集約演算装置404の保持する配列データの下半分が、相互の配列データが加算された7となる。また、集約演算装置405と集約演算装置406との間でHalving処理が行われ、集約演算装置405の保持する配列データの上半分及び集約演算装置406の保持する配列データの下半分が、相互の配列データが加算された11となる。また、集約演算装置407と集約演算装置408との間でHalving処理が行われ、集約演算装置407の保持する配列データの上半分及び集約演算装置408の保持する配列データの下半分が、相互の配列データが加算された15となる。また、集約演算装置409と集約演算装置410との間でHalving処理が行われ、集約演算装置409の保持する配列データの上半分及び集約演算装置410の保持する配列データの下半分が、相互の配列データが加算された19となる。また、集約演算装置411と集約演算装置412との間でHalving処理が行われ、集約演算装置411の保持する配列データの上半分及び集約演算装置412の保持する配列データの下半分が、相互の配列データが加算された23となる。また、集約演算装置413と集約演算装置414との間でHalving処理が行われ、集約演算装置413の保持する配列データの上半分及び集約演算装置414の保持する配列データの下半分が、相互の配列データが加算された31となる。また、集約演算装置415と集約演算装置416との間でHalving処理が行われ、集約演算装置415の保持する配列データの上半分及び集約演算装置416の保持する配列データの下半分が、相互の配列データが加算された31となる。
図17の状態でX次元のHalving処理が行われることで、図18に示す状態となる。具体的には、集約演算装置401と集約演算装置403との間でHalving処理が行われ、集約演算装置401の保持する演算結果の上半分及び集約演算装置403の保持する演算結果の下半分が、相互の配列データが加算された10となる。また、集約演算装置402と集約演算装置404との間でHalving処理が行われ、集約演算装置402の保持する演算結果の上半分及び集約演算装置404の保持する演算結果の下半分が、相互の配列データが加算された10となる。また、集約演算装置405と集約演算装置407との間でHalving処理が行われ、集約演算装置405の保持する演算結果の上半分及び集約演算装置407の保持する演算結果の下半分が、相互の配列データが加算された26となる。また、集約演算装置406と集約演算装置408との間でHalving処理が行われ、集約演算装置406の保持する演算結果の上半分及び集約演算装置408の保持する演算結果の下半分が、相互の配列データが加算された26となる。また、集約演算装置409と集約演算装置411との間でHalving処理が行われ、集約演算装置409の保持する演算結果の上半分及び集約演算装置410の保持する演算結果の下半分が、相互の配列データが加算された42となる。また、集約演算装置410と集約演算装置412との間でHalving処理が行われ、集約演算装置410の保持する演算結果の上半分及び集約演算装置412の保持する演算結果の下半分が、相互の配列データが加算された42となる。また、集約演算装置413と集約演算装置415との間でHalving処理が行われ、集約演算装置413の保持する演算結果の上半分及び集約演算装置415の保持する演算結果の下半分が、相互の配列データが加算された58となる。また、集約演算装置414と集約演算装置416との間でHalving処理が行われ、集約演算装置414の保持する演算結果の上半分及び集約演算装置416の保持する演算結果の下半分が、相互の配列データが加算された58となる。
図18の状態でY次元のHalving処理が行われることで、図19に示す状態となる。具体的には、集約演算装置401と集約演算装置405との間でHalving処理が行われ、集約演算装置401の保持する演算結果の上半分及び集約演算装置405の保持する演算結果の下半分が、相互の配列データが加算された36となる。また、集約演算装置402と集約演算装置406との間でHalving処理が行われ、集約演算装置402の保持する演算結果の上半分及び集約演算装置406の保持する演算結果の下半分が、相互の配列データが加算された36となる。また、集約演算装置403と集約演算装置407との間でHalving処理が行われ、集約演算装置403の保持する演算結果の上半分及び集約演算装置407の保持する演算結果の下半分が、相互の配列データが加算された36となる。また、集約演算装置404と集約演算装置408との間でHalving処理が行われ、集約演算装置404の保持する演算結果の上半分及び集約演算装置408の保持する演算結果の下半分が、相互の配列データが加算された36となる。また、集約演算装置409と集約演算装置413との間でHalving処理が行われ、集約演算装置409の保持する演算結果の上半分及び集約演算装置413の保持する演算結果の下半分が、相互の配列データが加算された100となる。また、集約演算装置410と集約演算装置414との間でHalving処理が行われ、集約演算装置410の保持する演算結果の上半分及び集約演算装置414の保持する演算結果の下半分が、相互の配列データが加算された100となる。また、集約演算装置411と集約演算装置415との間でHalving処理が行われ、集約演算装置411の保持する演算結果の上半分及び集約演算装置415の保持する演算結果の下半分が、相互の配列データが加算された100となる。また、集約演算装置412と集約演算装置416との間でHalving処理が行われ、集約演算装置412の保持する演算結果の上半分及び集約演算装置416の保持する演算結果の下半分が、相互の配列データが加算された100となる。
図19の状態でZ次元のHalving処理が行われることで、図20に示す状態となる。具体的には、集約演算装置401と集約演算装置409との間でHalving処理が行われ、集約演算装置401の保持する演算結果の上半分及び集約演算装置409の保持する演算結果の下半分が、相互の配列データが加算された136となる。また、集約演算装置402と集約演算装置410との間でHalving処理が行われ、集約演算装置402の保持する演算結果の上半分及び集約演算装置410の保持する演算結果の下半分が、相互の配列データが加算された136となる。また、集約演算装置403と集約演算装置411との間でHalving処理が行われ、集約演算装置403の保持する演算結果の上半分及び集約演算装置411の保持する演算結果の下半分が、相互の配列データが加算された136となる。また、集約演算装置404と集約演算装置412との間でHalving処理が行われ、集約演算装置404の保持する演算結果の上半分及び集約演算装置412の保持する演算結果の下半分が、相互の配列データが加算された136となる。また、集約演算装置405と集約演算装置413との間でHalving処理が行われ、集約演算装置405の保持する演算結果の上半分及び集約演算装置413の保持する演算結果の下半分が、相互の配列データが加算された136となる。また、集約演算装置406と集約演算装置414との間でHalving処理が行われ、集約演算装置406の保持する演算結果の上半分及び集約演算装置414の保持する演算結果の下半分が、相互の配列データが加算された136となる。また、集約演算装置407と集約演算装置415との間でHalving処理が行われ、集約演算装置407の保持する演算結果の上半分及び集約演算装置415の保持する演算結果の下半分が、相互の配列データが加算された136となる。また、集約演算装置408と集約演算装置416との間でHalving処理が行われ、集約演算装置408の保持する演算結果の上半分及び集約演算装置416の保持する演算結果の下半分が、相互の配列データが加算された136となる。
図20の状態でZ次元のDoubling処理が行われることで、図21に示す状態となる。具体的には、集約演算装置401と集約演算装置409との間でDoubling処理が行われ、集約演算装置401及び集約演算装置409の保持する配列データの1番目及び2番目が136となる。また、集約演算装置402と集約演算装置410との間でDoubling処理が行われ、集約演算装置402及び集約演算装置410の保持する配列データの9番目及び10番目が136となる。また、集約演算装置403と集約演算装置411との間でDoubling処理が行われ、集約演算装置403及び集約演算装置411の保持する配列データの7番目及び8番目が136となる。また、集約演算装置404と集約演算装置412との間でDoubling処理が行われ、集約演算装置404及び集約演算装置412の保持する配列データの13番目及び14番目が136となる。また、集約演算装置405と集約演算装置413との間でDoubling処理が行われ、集約演算装置405及び集約演算装置413の保持する配列データの3番目及び4番目が136となる。また、集約演算装置406と集約演算装置414との間でDoubling処理が行われ、集約演算装置406及び集約演算装置414の保持する配列データの11番目及び12番目が136となる。また、集約演算装置407と集約演算装置415との間でDoubling処理が行われ、集約演算装置407及び集約演算装置415の保持する配列データの7番目及び8番目が136となる。また、集約演算装置408と集約演算装置416との間でDoubling処理が行われ、集約演算装置408及び集約演算装置416の保持する配列データの15番目及び16番目が136となる。
図21の状態でY次元のDoubling処理が行われることで、図22に示す状態となる。具体的には、集約演算装置401と集約演算装置405との間でDoubling処理が行われ、集約演算装置401及び集約演算装置405の保持する配列データの1番目〜4番目が136となる。また、集約演算装置402と集約演算装置406との間でDoubling処理が行われ、集約演算装置402及び集約演算装置406の保持する配列データの9番目〜12番目が136となる。また、集約演算装置403と集約演算装置407との間でDoubling処理が行われ、集約演算装置403及び集約演算装置407の保持する配列データの5番目〜8番目が136となる。また、集約演算装置404と集約演算装置408との間でDoubling処理が行われ、集約演算装置404及び集約演算装置408の保持する配列データの15番目〜16番目が136となる。また、集約演算装置409と集約演算装置413との間でDoubling処理が行われ、集約演算装置409及び集約演算装置413の保持する配列データの1番目〜4番目が136となる。また、集約演算装置410と集約演算装置414との間でDoubling処理が行われ、集約演算装置410及び集約演算装置414の保持する配列データの9番目〜12番目が136となる。また、集約演算装置411と集約演算装置415との間でDoubling処理が行われ、集約演算装置411及び集約演算装置415の保持する配列データの5番目〜8番目が136となる。また、集約演算装置412と集約演算装置416との間でDoubling処理が行われ、集約演算装置412及び集約演算装置416の保持する配列データの12番目〜16番目が136となる。
図22の状態でX次元のDoubling処理が行われることで、図23に示す状態となる。具体的には、集約演算装置401と集約演算装置403との間でDoubling処理が行われ、集約演算装置401及び集約演算装置403の保持する配列データの1番目〜8番目が136となる。また、集約演算装置402と集約演算装置404との間でDoubling処理が行われ、集約演算装置402及び集約演算装置404の保持する配列データの9番目〜16番目が136となる。また、集約演算装置405と集約演算装置407との間でDoubling処理が行われ、集約演算装置405及び集約演算装置407の保持する配列データの1番目〜8番目が136となる。また、集約演算装置406と集約演算装置408との間でDoubling処理が行われ、集約演算装置406及び集約演算装置408の保持する配列データの9番目〜16番目が136となる。また、集約演算装置409と集約演算装置411との間でDoubling処理が行われ、集約演算装置409及び集約演算装置411の保持する配列データの1番目〜8番目が136となる。また、集約演算装置410と集約演算装置412との間でDoubling処理が行われ、集約演算装置410及び集約演算装置412の保持する配列データの9番目〜16番目が136となる。また、集約演算装置413と集約演算装置415との間でDoubling処理が行われ、集約演算装置413及び集約演算装置415の保持する配列データの1番目〜8番目が136となる。また、集約演算装置414と集約演算装置416との間でDoubling処理が行われ、集約演算装置414及び集約演算装置416の保持する配列データの9番目〜16番目が136となる。
図22の状態でX次元のDoubling処理が行われることで、図23に示す状態となる。具体的には、集約演算装置401と集約演算装置403との間でDoubling処理が行われ、集約演算装置401及び集約演算装置403の保持する配列データの1番目〜8番目が136となる。また、集約演算装置402と集約演算装置404との間でDoubling処理が行われ、集約演算装置402及び集約演算装置404の保持する配列データの9番目〜16番目が136となる。また、集約演算装置405と集約演算装置407との間でDoubling処理が行われ、集約演算装置405及び集約演算装置407の保持する配列データの1番目〜8番目が136となる。また、集約演算装置406と集約演算装置408との間でDoubling処理が行われ、集約演算装置406及び集約演算装置408の保持する配列データの9番目〜16番目が136となる。また、集約演算装置409と集約演算装置411との間でDoubling処理が行われ、集約演算装置409及び集約演算装置411の保持する配列データの1番目〜8番目が136となる。また、集約演算装置410と集約演算装置412との間でDoubling処理が行われ、集約演算装置410及び集約演算装置412の保持する配列データの9番目〜16番目が136となる。また、集約演算装置413と集約演算装置415との間でDoubling処理が行われ、集約演算装置413及び集約演算装置415の保持する配列データの1番目〜8番目が136となる。また、集約演算装置414と集約演算装置416との間でDoubling処理が行われ、集約演算装置414及び集約演算装置416の保持する配列データの9番目〜16番目が136となる。
図23の状態でW次元のDoubling処理が行われることで、図24に示す状態となる。具体的には、集約演算装置401と集約演算装置402との間でDoubling処理が行われ、集約演算装置401及び集約演算装置402の保持する配列データの1番目〜16番目が136となる。また、集約演算装置403と集約演算装置404との間でDoubling処理が行われ、集約演算装置403及び集約演算装置404の保持する配列データの1番目〜16番目が136となる。また、集約演算装置405と集約演算装置406との間でDoubling処理が行われ、集約演算装置405及び集約演算装置406の保持する配列データの1番目〜16番目が136となる。また、集約演算装置407と集約演算装置408との間でDoubling処理が行われ、集約演算装置407及び集約演算装置408の保持する配列データの1番目〜16番目が136となる。また、集約演算装置409と集約演算装置410との間でDoubling処理が行われ、集約演算装置409及び集約演算装置410の保持する配列データの1番目〜16番目が136となる。また、集約演算装置411と集約演算装置412との間でDoubling処理が行われ、集約演算装置411及び集約演算装置412の保持する配列データの1番目〜16番目が136となる。また、集約演算装置413と集約演算装置414との間でDoubling処理が行われ、集約演算装置413及び集約演算装置414の保持する配列データの1番目〜16番目が136となる。また、集約演算装置415と集約演算装置416との間でDoubling処理が行われ、集約演算装置415及び集約演算装置416の保持する配列データの1番目〜16番目が136となる。これにより、図24に示すように、集約演算装置401〜416の全てが、配列データの全てにおいて集約演算結果を取得する。
次に、図25を参照して、本実施例に係る情報処理システム3によるAllreduce処理の流れについて説明する。図25は、実施例1に係る情報処理システムによるAllreduce処理のフローチャートである。
順序決定部292は、結線表をネットワーク構成管理部208から受信する。そして、順序決定部292は、情報処理システム3の次元であるW〜Z次元を確認する。次に、順序決定部292は、処理を行う順番をD0〜D3として、各次元をD0〜D3の何れかとして各次元の処理順を決定する(ステップS1)。例えば、順序決定部292は、W〜Zの順番でD0〜D3を割り当てる。その後、順序決定部292は、D0〜D3の各次元への割り当て情報を統括管理部291に通知する。
各主演算装置10のデータ分割部191は、メモリ104に格納された配列データを4分割する。そして、データ送信部192は、4分割した配列データのそれぞれを、異なる集約演算装置20へ送信することでシステムボード内Reduce処理を実行する(ステップS2)。集約演算装置20のデータ受信部294は、各主演算装置10から送信された1/4配列データを受信する。そして、データ受信部294は、1/4配列データをメモリ204に格納する。
統括管理部291は、D0〜D3の各次元への割り当て情報を順序決定部292から受信する。そして、統括管理部291は、i=0とする(ステップS3)。
次に、統括管理部291は、メモリ204から1/4配列データを取得する。そして、統括管理部291は、Di次元のHalving処理を実行する(ステップS4)。
次に、統括管理部291は、i=3か否かを判定する(ステップS5)。これにより、統括管理部291は、全ての次元についてのHalving処理が完了したか否かを判定できる。i=3でない場合(ステップS5:否定)、統括管理部291は、iを1つインクリメントし(ステップS6)、ステップS4へ戻る。
これに対して、i=3の場合(ステップS5:肯定)、統括管理部291は、Di次元のDoubling処理を実行する(ステップS7)。
次に、統括管理部291は、i=0か否かを判定する(ステップS8)。これにより、統括管理部291は、全ての次元についてのDoubling処理が完了したか否かを判定できる。i=0でない場合(ステップS8:否定)、統括管理部291は、iを1つデクリメントし(ステップS9)、ステップS7へ戻る。
これに対して、i=0の場合(ステップS8:肯定)、統括管理部291は、1/4配列データに対する集約演算結果を用いて、データシステムボード内ブロードキャストを実行する(ステップS10)。
次に、図26及び27を参照して、本実施例に係るHalving_Doubling処理を用いた場合と、従来のHalving_Doubling処理を用いた場合とのデータ転送量の差について説明する。図26は、実施例に係るHalving_Doubling処理を用いた場合のデータ転送量を説明するための図である。図27は、従来のHalving_Doubling処理を用いた場合のデータ転送量を説明するための図である。図26及び27において、各ステップの紙面に向かって右に記載した数字は、転送されるデータの主演算装置10が有する配列データに対するサイズを表す。
本実施例に係るHalving_Doubling処理を用いる場合、ボード内Reduce処理(ステップS101)の前には、主演算装置10が保持する配列データはまだ分割されていないので、転送データは1/1のサイズである。そして、ボード内Reduce処理(ステップS101)が行われると、転送データは、主演算装置10が保持する配列データの1/4となる。次に、W次元のHalving処理が行われると(ステップS102)、転送データは、主演算装置10が保持する配列データの1/16となる。次に、X次元のHalving処理が行われると(ステップS103)、転送データは、主演算装置10が保持する配列データの1/64となる。次に、Y次元のHalving処理が行われると(ステップS104)、転送データは、主演算装置10が保持する配列データの1/256となる。次に、Z次元のHalving処理が行われると(ステップS105)、転送データは、主演算装置10が保持する配列データの1/1024となる。その後、Z次元のDoubling処理が行われると(ステップS106)、転送データは、主演算装置10が保持する配列データの1/256となる。次に、Y次元のDoubling処理が行われると(ステップS107)、転送データは、主演算装置10が保持する配列データの1/64となる。次に、X次元のDoubling処理が行われると(ステップS108)、転送データは、主演算装置10が保持する配列データの1/16となる。次に、W次元のDoubling処理が行われると(ステップS109)、転送データは、主演算装置10が保持する配列データの1/4となる。その後、システムボード内ブロードキャストが行われると(ステップS110)、元の配列データのサイズに戻る。
一方、従来のHalving_Doubling処理を用いる場合について説明する。ここでは、各次元毎にHalving処理とDoubling処理とを連続して行っていく場合で説明する。この場合、図27に示すように、ボード内Reduce処理(ステップS121)の前には、主演算装置10が保持する配列データはまだ分割されていないので、転送データは1/1のサイズである。そして、ボード内Reduce処理(ステップS121)が行われると、転送データは、主演算装置10が保持する配列データの1/4となる。次に、W次元のHalving処理が行われると(ステップS122)、転送データは、主演算装置10が保持する配列データの1/16となる。次に、W次元のDoubling処理が行われて(ステップS123)、転送データは、主演算装置10が保持する配列データの1/4に戻る。次に、X次元のHalving処理が行われると(ステップS124)、転送データは、主演算装置10が保持する配列データの1/16となる。次に、X次元のDoubling処理が行われて(ステップS125)、転送データは、主演算装置10が保持する配列データの1/4に戻る。次に、Y次元のHalving処理が行われると(ステップS126)、転送データは、主演算装置10が保持する配列データの1/16となる。次に、Y次元のDoubling処理が行われて(ステップS127)、転送データは、主演算装置10が保持する配列データの1/4に戻る。次に、Z次元のHalving処理が行われると(ステップS128)、転送データは、主演算装置10が保持する配列データの1/16となる。次に、Z次元のDoubling処理が行われて(ステップS129)、転送データは、主演算装置10が保持する配列データの1/4に戻る。その後、システムボード内ブロードキャストが行われると(ステップS130)、元の配列データのサイズに戻る。
このように、本実施例に係る集約演算装置20は、最小で元の配列データの1/1024のサイズのデータ転送とすることができる。これに対して、従来のHalving_Doublingの手法では、データ転送量は、最小で元の配列データの1/16のサイズとなる。このように、本実施例に係る集約演算装置20は、集約演算処理の全体として、データ転送量を大きく削減することができる。
以上に説明したように、本実施例に係る情報処理システムは、主演算装置から分割された配列データを取得し、各次元についてのHalving処理をまとめて行った後に、各次元についてのDoubling処理をまとめて行い、演算結果をブロードキャストする。これにより、Allreduce処理におけるデータ転送量を軽減することができ、通信時間を短縮することができる。また、分割された配列データが配られた集約演算装置全てが並行して動作するので、演算量を均等に分配して演算量の負荷分散を行うことができ、情報処理システム全体の処理速度を向上させることができる。
(変形例)
図28は、変形例に係る情報処理システムのシステム構成図である。実施例1では、W〜Z次元のいずれもサイズが4であり、4つのシステムボード1でリングが構成される場合で説明した。しかし、各次元のサイズは、異なってもよい。そこで、本変形例では、各次元のサイズが異なる場合について説明する。
本変形例に係る情報処理システム3は、システムボード1の主演算装置10と集約演算装置20の搭載数は実施例1と同様である。ただし、3次元トーラスメッシュ2に含まれるシステムボード1の数が、実施例1と異なる。
情報処理システム3ではHalving_Doubling処理が行われるため、W〜Z次元のサイズは、2のべき乗であり、1、2、4のいずれかの値となる。すなわち、システムボード1は、各次元で、1、2又は4個のいずれかで環状となる。
そこで、本実施例に係る情報処理システム3は、W次元のサイズが4であり、X次元のサイズが2であり、Y次元のサイズが1であり、Z次元のサイズが4である。
この場合、X次元のトーラスは、特定のシステムボード1から延びるX次元の2つの方向のどちらの方向も同じシステムボード1を指す。すなわち、X次元の通信は、W次元及びZ次元の通信に比べて帯域幅が2倍となる。
また、Y次元には1つのシステムボード1が配置されており、Halving_DoublingはY次元については行わない。そのため、Y次元の帯域幅をX次元又はZ次元のいずれかに割り振ることも可能である。
この場合も、集約演算装置20は、実施例1と同様に、主演算装置10から分割された配列データを取得し、各次元についてのHalving処理をまとめて行った後に、各次元についてのDoubling処理をまとめて行い、演算結果をブロードキャストする。これにより、集約演算装置20は。Allreduce処理を実行できる。
以上に説明したように、本実施例に係る情報処理システムは、各次元のサイズが異なる場合にも実施例1と同様のAllreduce処理を実行することができる。そして、この場合にも、Allreduce処理におけるデータ転送量を軽減することができ、通信時間を短縮することができる。また、演算量を均等に分配して演算量の負荷分散を行うことができ、情報処理システム全体の処理速度を向上させることができる。