JP2020086837A - 情報処理システム及び情報処理システムの制御方法 - Google Patents

情報処理システム及び情報処理システムの制御方法 Download PDF

Info

Publication number
JP2020086837A
JP2020086837A JP2018219355A JP2018219355A JP2020086837A JP 2020086837 A JP2020086837 A JP 2020086837A JP 2018219355 A JP2018219355 A JP 2018219355A JP 2018219355 A JP2018219355 A JP 2018219355A JP 2020086837 A JP2020086837 A JP 2020086837A
Authority
JP
Japan
Prior art keywords
unit
aggregate
data
arithmetic
information processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018219355A
Other languages
English (en)
Other versions
JP7087953B2 (ja
Inventor
明彦 笠置
Akihiko Kasaoki
明彦 笠置
敬 荒川
Takashi Arakawa
敬 荒川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018219355A priority Critical patent/JP7087953B2/ja
Priority to US16/664,982 priority patent/US11327764B2/en
Publication of JP2020086837A publication Critical patent/JP2020086837A/ja
Application granted granted Critical
Publication of JP7087953B2 publication Critical patent/JP7087953B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)

Abstract

【課題】データ転送量を削減する情報処理システム及び情報処理システムの制御方法を提供する。【解決手段】データ受信部294は、主演算装置10から配列データを取得する。順序決定部292は、システムボード1同士の接続における次元の処理の順番を決定する。統括管理部291は、順番にしたがい、次元毎に、配列データを基に2分割を繰り返しながら次元方向に並ぶシステムボード1に分配する処理を繰り返し、次に、順番の逆順にしたがい、次元毎に、次元方向に並ぶ各システムボード1から受信した受信データに基づく演算結果を、次元方向に並ぶシステムボード1と授受する処理を繰り返す。データ送信部293は、統括管理部291により収集された演算結果を主演算装置10へ送信する。【選択図】図9

Description

本発明は、情報処理システム及び情報処理システムの制御方法に関する。
HPC(High Performance Computing)の分野では、ノードと呼ばれる計算機を多数接続した並列計算システムが用いられることが多い。ノードは、例えば1つのチップセットなどでもよい。近年、並列計算機システムは、深層学習などにも利用される。
並列計算機システムでは、深層学習(Deep Learning)の演算など多くのアプリケーションにて多対多の通信を行う集団通信であるALLreduceの処理が用いられることが多い。Allreduceとは、各プロセスが算出した値を集約し、集約した値を用いて演算を行うことで得られる結果を、全てのプロセスにおいて共通化する処理である。そして、集団通信を行うことで、各ノードが実行するプロセスは、全てのプロセスが有する値の演算結果を保持することになる。このように、Allreduceの処理を行う場合、他の全てのノードが実行するプロセスが有する値を各ノードは取得することとなる。
ただし、Allreduceの処理において、例えば、各ノードそれぞれが有する値を単純にいずれかのノードに集約してReduce処理を行うと、通信量及び演算量に偏りが生じる。そのため、演算はできるだけ同時並列に各ノードが計算し、且つデータ転送量が少なくなることが好ましい。
従来、Allreduceにおける通信データ量を削減する技術として、Halving+Doubling手法が提案されている。Halving+Doubling手法におけるHalving操作を行った場合、通信ステップ毎に通信データ量が半減する。一方、Doubling操作を行った場合、通信ステップ毎に通信データ量が倍増する。すなわち、Halving+Doubling手法では、処理開始後にHalvingを行うことでステップが進むにつれて通信データ量が削減され、その後Doublingを行うことでステップが進むにつれて通信データ量が増加する。そのため、Halving+Doubling手法では、ステップが小さい間は大きなデータによる相互通信が行われ、ステップの中間で小さいデータにより相互通信が行われ、その後ステップが増えるにつれ大きなデータによる相互通信が行われる。
ここで、並列計算機システムの中には、主要な演算を行う主演算装置と集約演算用の集約演算装置とを有するシステムが存在する。この場合、Allreduceの計算には、集約演算装置が用いられ、主演算装置は使用されない。一方、Allreduceの対象となるデータは、各主演算装置上のメモリに格納されたデータである。
例えば、1つのシステムボード上に8つの主演算装置及び4つの集約演算装置を有する並列計算機システムがある。そして、主演算装置及び集約演算装置のいずれも、メモリ及び演算回路を有し、さらに10本のインターコネクトのポートを有する。
そのようなシステムにおける接続の一例として、各主演算装置は、相互に直接結合を持たず4つの集約演算装置と直接接続する。すなわち、各主演算装置は、集約演算装置を介して相互に接続される。この場合、システムボード内の結合に使用したインターコネクトのポート以外に、主演算装置は2つのポートを有し、集約演算装置は6つのポートを有する。そして、これらの残りのポートを用いて主演算装置及び集約演算装置は別のシステムボード上の主演算装置又は集約演算装置と接続する。より詳しくは、主演算装置は、3次元トーラスでシステムボード間を接続する。また、集約演算装置は、1次元トーラスでシステムボード間を接続する。これにより、ここで例示した並列計算機システムには、3次元トーラスメッシュがリングで繋がる構造となる。
ここで、n次元のトーラストポロジにおいて、データの一部を第1の方向に隣接するプロセスに転送し、次のデータ転送処理では第2の方向に隣接するプロセスにデータの一部を転送して集合通信を行う従来技術がある(特許文献1参照)。また、集約したいデータをいくつかに分割して、それぞれの分割されたデータについてクロスバスイッチを用いて担当ノードへ転送し部分領域毎に集約演算を行う従来技術がある(特許文献2参照)。
特開2010−211553号公報 特開2007−249810号公報
しかしながら、従来のHalving+Doubling手法が対象とする並列計算機システム、集約演算を行う演算装置とデータが格納された演算装置とが一致し、さらに、演算装置同士は直接結合される。すなわち、従来のHalving+Doubling手法は、上述した主演算装置と集約演算装置とを有する並列計算機システムとは、演算に用いるデータの位置が異なり、さらに、各演算装置のトポロジ構造も異なるシステムを対象とする。そのため、従来のHalving+Doubling手法を、主演算装置と集約演算装置とを有する並列計算機システムにそのまま適用することは困難である。
また、連続するデータ転送において転送先のプロセスの並ぶ方向を異ならせる従来技術や部分領域毎に集約演算を行う従来技術のいずれでも、主演算装置と集約演算装置とを異ならせたシステムについては考慮しておらず、データ転送量を削減することは困難である。
開示の技術は、上記に鑑みてなされたものであって、データ転送量を削減する情報処理システム及び情報処理システムの制御方法を提供することを目的とする。
本願の開示する情報処理システム及び情報処理システムの制御方法の一つの態様において、情報処理システムは、相互に接続された主演算装置及び集約演算装置をそれぞれ複数搭載した情報処理装置が複数接続されたトーラス構造を有する。前記集約演算装置は、以下の各部を備える。取得部は、自装置に接続する前記主演算装置から配列データを取得する。順番決定部は、前記情報処理装置同士の接続における次元の処理の順番を決定する。演算実行部は、演算を実行する。処理制御部は、前記順番にしたがい、前記次元毎に、前記配列データを基に2分割を繰り返しながら前記次元方向に並ぶ前記情報処理装置に分配する処理を繰り返し、次に、前記順番の逆順にしたがい、前記次元毎に、前記次元方向に並ぶ各前記情報処理装置から受信した受信データに基づき前記演算実行部により算出された演算結果を前記次元方向に並ぶ各前記情報処理装置との間で授受する処理を繰り返す。送信部は、前記処理制御部により収集された前記演算結果を自装置に接続する前記主演算装置へ送信する。
1つの側面では、本発明は、データ転送量を削減することができる。
図1は、実施例1に係る情報処理システムのシステム構成図である。 図2は、システムボードのハードウェア構成図である。 図3は、主演算装置と集約演算装置との接続状態を表す図である。 図4は、情報処理システムにおける各接続状態を表す図である。 図5は、主演算装置のハードウェア構成図である。 図6は、主演算装置におけるネットワーク制御部のブロック図である。 図7は、Allreduce処理におけるシステムボード内処理を説明するための図である。 図8は、集約演算装置のハードウェア構成図である。 図9は、集約演算装置におけるネットワーク制御部のブロック図である。 図10は、W次元のHalving処理について説明するための図である。 図11は、集約演算装置によるHalving処理を表す図である。 図12は、Halving処理の前後における各集約演算装置が有するデータの長さを表す図である。 図13は、X次元のHalving処理について説明するための図である。 図14は、X次元における集約演算装置間の通信を説明するための図である。 図15は、集約演算装置による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処理を表す図である。 図25は、実施例1に係る情報処理システムによるAllreduce処理のフローチャートである。 図26は、実施例に係るHalving_Doubling処理を用いた場合のデータ転送量を説明するための図である。 図27は、従来のHalving_Doubling処理を用いた場合のデータ転送量を説明するための図である。 図28は、変形例に係る情報処理システムのシステム構成図である。 図29は、実施例2に係る情報処理システムによるAllreduce処理のフローチャートである。
以下に、本願の開示する情報処理システム及び情報処理システムの制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理システム及び情報処理システムの制御方法が限定されるものではない。
図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処理におけるデータ転送量を軽減することができ、通信時間を短縮することができる。また、演算量を均等に分配して演算量の負荷分散を行うことができ、情報処理システム全体の処理速度を向上させることができる。
次に、実施例2について説明する。本実施例に係る情報処理システムは、各次元における通信の帯域幅が異なる場合に、帯域幅の大きさに応じてHalving処理及びDoubling処理の実行順を決定することが実施例1と異なる。
本実施例に係る集約演算装置20も、図9のブロック図で表される。ここで、各次元についてのHalving処理をまとめて行った後に、各次元についてのDoubling処理をまとめて行う場合、Halving処理とDoubling処理の組が入れ子構造になる。そして、特定の次元についてHalving処理とDoubling処理の組を入れ子構造の配置位置を内側にするにしたがい、その次元におけるHalving処理及びDoubling処理での転送データのサイズが小さくなる。
そして、実施例1の変形例で説明したように、W〜Z次元のそれぞれで、通信の帯域幅が異なる場合が存在する。そこで、転送データのサイズが大きい状態で大きい帯域幅の次元でのHalving処理及びDoubling処理を行うことが好ましい。以下の説明では、実施例1における各部の機能と同じ機能については説明を省略する。
順序決定部292は、結線表をネットワーク構成管理部208から取得する。次に、順序決定部292は、結線表から各次元のサイズを取得する。ここで、サイズが小さければ、帯域幅が大きくなる。そこで、順序決定部292は、サイズが小さい順に各次元をソートする。すなわち、順序決定部292は、W〜Z次元を、帯域幅の降順にソートする。そして、順序決定部292は、ソート後の次元の順を、Halving処理を実行する次元の順番として決定し、統括管理部291に通知する。
統括管理部291は、Halving処理を実行する次元の順番として、帯域幅の降順にソートされた次元の順番の通知を受ける。そして、統括管理部291は、帯域幅の降順にHalving処理を実行し、その逆順でDoubling処理を実行する。
次に、図29を参照して、本実施例に係る情報処理システム3によるAllreduce処理の流れについて説明する。図29は、実施例2に係る情報処理システムによるAllreduce処理のフローチャートである。
順序決定部292は、結線表をネットワーク構成管理部208から受信する。そして、順序決定部292は、情報処理システム3の次元であるW〜Z次元を確認する。さらに、順序決定部292は、W〜Z次元のそれぞれの帯域を取得する(ステップS201)。
次に、順序決定部292は、W〜Z次元を帯域の降順でソートする。そして、順序決定部292は、ソートした順に各次元をD0〜D3として決定する(ステップS202)。その後、順序決定部292は、D0〜D3の各次元への割り当て情報を統括管理部291に通知する。
各主演算装置10のデータ分割部191は、メモリ104に格納された配列データを4分割する。そして、データ送信部192は、4分割した配列データのそれぞれを、異なる集約演算装置20へ送信することでシステムボード内Reduce処理を実行する(ステップS203)。集約演算装置20のデータ受信部294は、各主演算装置10から送信された1/4配列データを受信する。そして、データ受信部294は、1/4配列データをメモリ204に格納する。
統括管理部291は、帯域の降順にソートされたW〜Z次元に対して割り当てられたD0〜D3の情報を順序決定部292から受信する。そして、統括管理部291は、i=0とする(ステップS204)。
次に、統括管理部291は、メモリ204から1/4配列データを取得する。そして、統括管理部291は、Di次元のHalving処理を実行する(ステップS205)。
次に、統括管理部291は、i=3か否かを判定する(ステップS206)。i=3でない場合(ステップS206:否定)、統括管理部291は、iを1つインクリメントし(ステップS207)、ステップS205へ戻る。
これに対して、i=3の場合(ステップS206:肯定)、統括管理部291は、Di次元のDoubling処理を実行する(ステップS208)。
次に、統括管理部291は、i=0か否かを判定する(ステップS209)。i=0でない場合(ステップS209:否定)、統括管理部291は、iを1つデクリメントし(ステップS210)、ステップS208へ戻る。
これに対して、i=0の場合(ステップS209:肯定)、統括管理部291は、1/4配列データに対する集約演算結果を用いて、データシステムボード内ブロードキャストを実行する(ステップS211)。
以上に説明したように、本実施例に係る集約演算装置は、帯域幅の大きい順に各次元のHalving処理を実行し、その後、逆順でDoubling処理を実行することで、Allreduce処理を実行する。これにより、データ転送量が大きい段階でなるべく大きい帯域幅を用いた通信を行うことができ、通信時間をより短縮することができる。
1 システムボード
2 3次元トーラスメッシュ
3 情報処理システム
10 主演算装置
20 集約演算装置
103 メモリ制御部
104 メモリ
107 ジョブ管理部
108 ネットワーク構成管理部
109 ネットワーク制御部
191 データ分割部
192 データ送信部
193 データ受信部
201 並列演算装置
203 メモリ制御部
204 メモリ
207 ジョブ管理部
208 ネットワーク構成管理部
209 ネットワーク制御部
291 統括管理部
292 順序決定部
293 データ送信部
294 データ受信部

Claims (8)

  1. 相互に接続された主演算装置及び集約演算装置をそれぞれ複数搭載した情報処理装置が複数接続されたトーラス構造を有する情報処理システムであって、
    前記集約演算装置は、
    自装置に接続する前記主演算装置から配列データを取得する取得部と、
    前記情報処理装置同士の接続における次元の処理の順番を決定する順序決定部と、
    演算を実行する演算実行部と、
    前記順番にしたがい、前記次元毎に、前記配列データを基に2分割を繰り返しながら前記次元の方向に並ぶ前記情報処理装置に分配する処理を繰り返し、次に、前記順番の逆順にしたがい、前記次元毎に、前記次元の方向に並ぶ各前記情報処理装置から受信した受信データに基づき前記演算実行部により算出された演算結果を前記次元の方向に並ぶ各前記情報処理装置との間で授受する処理を繰り返す処理制御部と、
    前記処理制御部により収集された前記演算結果を自装置に接続する前記主演算装置へ送信する送信部と
    を備えたことを特徴とする情報処理システム。
  2. 前記取得部は、自装置に接続する前記主演算装置に格納されたデータブロックが、接続する前記主演算装置に接続された前記集約演算装置の数で分割された前記配列データを取得することを特徴とする請求項1に記載の情報処理システム。
  3. 前記主演算装置は、
    自装置が接続する前記集約演算装置の数に保持するデータブロックを分割して前記配列データを生成する分割部と、
    前記分割部により生成された前記配列データのそれぞれを自装置が接続する各前記集約演算装置へ送信するデータ送信部と、
    自装置が接続する前記集約演算装置から演算結果を受信するデータ受信部と
    を備えたことを特徴とする請求項2に記載の情報処理システム。
  4. 前記情報処理装置同士は、前記主演算装置同士の接続において3次元トーラス構造を有し、且つ、前記集約演算装置同士の接続において1次元トーラス構造を有することを特徴とする請求項1〜3のいずれか一つに記載の情報処理システム。
  5. 前記順序決定部は、各次元の帯域の広い順に前記順番を決定することを特徴とする請求項1〜4のいずれか一つに記載の情報処理システム。
  6. 特定の情報処理装置上の、各前記主演算装置は、前記特定の情報処理装置上の全ての前記集約演算装置と接続されることを特徴とする請求項1〜5のいずれか一つに記載の情報処理システム。
  7. 前記トーラス構造は、4次元トーラス構造であることを特徴とする請求項1〜6のいずれか一つに記載の情報処理システム。
  8. 相互に接続された主演算装置及び集約演算装置をそれぞれ複数搭載した情報処理装置が複数接続されたトーラス構造を有する情報処理システムの制御方法であって、
    前記集約演算装置に、
    接続する前記主演算装置から配列データを取得させ、
    前記情報処理装置同士の接続における次元の処理の順番を決定させ、
    前記順番にしたがい、前記次元毎に、前記配列データを基に2分割を繰り返しながら前記次元の方向に並ぶ前記情報処理装置に分配する処理を繰り返させ、
    前記順番の逆順にしたがい、前記次元毎に、前記次元の方向に並ぶ各前記情報処理装置から受信した受信データに基づき算出した演算結果を前記次元の方向に並ぶ前記情報処理装置との間で授受する処理を繰り返させ、
    保持する前記演算結果を接続する前記主演算装置へ送信させる
    ことを特徴とする情報処理システムの制御方法。
JP2018219355A 2018-11-22 2018-11-22 情報処理システム及び情報処理システムの制御方法 Active JP7087953B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018219355A JP7087953B2 (ja) 2018-11-22 2018-11-22 情報処理システム及び情報処理システムの制御方法
US16/664,982 US11327764B2 (en) 2018-11-22 2019-10-28 Information processing system and method for controlling information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018219355A JP7087953B2 (ja) 2018-11-22 2018-11-22 情報処理システム及び情報処理システムの制御方法

Publications (2)

Publication Number Publication Date
JP2020086837A true JP2020086837A (ja) 2020-06-04
JP7087953B2 JP7087953B2 (ja) 2022-06-21

Family

ID=70770392

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018219355A Active JP7087953B2 (ja) 2018-11-22 2018-11-22 情報処理システム及び情報処理システムの制御方法

Country Status (2)

Country Link
US (1) US11327764B2 (ja)
JP (1) JP7087953B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001325239A (ja) * 2000-05-16 2001-11-22 Hitachi Ltd 並列計算機のリダクション処理装置および処理方法
JP2007249810A (ja) * 2006-03-17 2007-09-27 Fujitsu Ltd 並列計算機のリダクション処理方法及び並列計算機
JP2010211553A (ja) * 2009-03-11 2010-09-24 Fujitsu Ltd n次元トーラス型分散処理システム、集団通信方法及び集団通信プログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015069384A (ja) * 2013-09-27 2015-04-13 富士通株式会社 情報処理システム、情報処理システムの制御方法及び情報処理装置の制御プログラム
US10241725B2 (en) * 2015-10-30 2019-03-26 International Business Machines Corporation Workload balancing in a distributed storage system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001325239A (ja) * 2000-05-16 2001-11-22 Hitachi Ltd 並列計算機のリダクション処理装置および処理方法
JP2007249810A (ja) * 2006-03-17 2007-09-27 Fujitsu Ltd 並列計算機のリダクション処理方法及び並列計算機
JP2010211553A (ja) * 2009-03-11 2010-09-24 Fujitsu Ltd n次元トーラス型分散処理システム、集団通信方法及び集団通信プログラム

Also Published As

Publication number Publication date
US20200167162A1 (en) 2020-05-28
US11327764B2 (en) 2022-05-10
JP7087953B2 (ja) 2022-06-21

Similar Documents

Publication Publication Date Title
US11973697B2 (en) Composing diverse remote cores and FPGAs
US11677662B2 (en) FPGA-efficient directional two-dimensional router
JP5543894B2 (ja) NoCシステム及び入力切替装置
US20140331027A1 (en) Asymmetric mesh noc topologies
JP7497946B2 (ja) ハイブリッド・データ-モデル並列処理方法、システム、プログラム
JP7242847B2 (ja) 光ネットワークを用いた再構成可能な計算ポッド
CN116915708A (zh) 路由数据包的方法、处理器及可读存储介质
CN117955897B (zh) 数据通信方法、装置、服务器及存储介质
US20140317379A1 (en) Information processing system, control apparatus, and method of controlling information processing system
JP6946955B2 (ja) 情報処理装置、演算処理装置及び情報処理装置の制御方法
US12045183B2 (en) Distributed processing node and distributed processing system
JP7087953B2 (ja) 情報処理システム及び情報処理システムの制御方法
JP5577745B2 (ja) クラスタシステム、プロセス配置方法、及びプログラム
US9762474B2 (en) Systems and methods for selecting a router to connect a bridge in the network on chip (NoC)
JP6930381B2 (ja) 情報処理システム、演算処理装置及び情報処理システムの制御方法
CN110825689B (zh) 电子芯片的实现方法及电子芯片
CN114661654A (zh) 访问处理装置和方法、处理设备、电子设备和存储介质
CN112905523B (zh) 一种芯片及核间数据传输方法
CN113204422A (zh) 用于分布式并行深度学习的高效片间互连拓扑结构
US20150365343A1 (en) Parallel computer system and control method
Awan et al. Towards Hardware Support for FPGA Resource Elasticity
US12001370B2 (en) Multi-node memory address space for PCIe devices
CN114095289B (zh) 数据多播电路、方法、电子设备及计算机可读存储介质
Christgau et al. Awareness of MPI Virtual Process Topologies on the Single-Chip Cloud Computer
CN115720211A (zh) 网算一体的芯粒间路由器及数据包聚合方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181220

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220428

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220523

R150 Certificate of patent or registration of utility model

Ref document number: 7087953

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150