(57)【要約】【課題】データ転送量を削減する情報処理システム及び情報処理システムの制御方法を提供する。【解決手段】データ受信部２９４は、主演算装置１０から配列データを取得する。順序決定部２９２は、システムボード１同士の接続における次元の処理の順番を決定する。統括管理部２９１は、順番にしたがい、次元毎に、配列データを基に２分割を繰り返しながら次元方向に並ぶシステムボード１に分配する処理を繰り返し、次に、順番の逆順にしたがい、次元毎に、次元方向に並ぶ各システムボード１から受信した受信データに基づく演算結果を、次元方向に並ぶシステムボード１と授受する処理を繰り返す。データ送信部２９３は、統括管理部２９１により収集された演算結果を主演算装置１０へ送信する。【選択図】図９
2020086837.tif 000002
【特許請求の範囲】
【請求項１】
相互に接続された主演算装置及び集約演算装置をそれぞれ複数搭載した情報処理装置が複数接続されたトーラス構造を有する情報処理システムであって、
前記集約演算装置は、
自装置に接続する前記主演算装置から配列データを取得する取得部と、
前記情報処理装置同士の接続における次元の処理の順番を決定する順序決定部と、
演算を実行する演算実行部と、
前記順番にしたがい、前記次元毎に、前記配列データを基に２分割を繰り返しながら前記次元の方向に並ぶ前記情報処理装置に分配する処理を繰り返し、次に、前記順番の逆順にしたがい、前記次元毎に、前記次元の方向に並ぶ各前記情報処理装置から受信した受信データに基づき前記演算実行部により算出された演算結果を前記次元の方向に並ぶ各前記情報処理装置との間で授受する処理を繰り返す処理制御部と、
前記処理制御部により収集された前記演算結果を自装置に接続する前記主演算装置へ送信する送信部と
を備えたことを特徴とする情報処理システム。
【請求項２】
前記取得部は、自装置に接続する前記主演算装置に格納されたデータブロックが、接続する前記主演算装置に接続された前記集約演算装置の数で分割された前記配列データを取得することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記主演算装置は、
自装置が接続する前記集約演算装置の数に保持するデータブロックを分割して前記配列データを生成する分割部と、
前記分割部により生成された前記配列データのそれぞれを自装置が接続する各前記集約演算装置へ送信するデータ送信部と、
自装置が接続する前記集約演算装置から演算結果を受信するデータ受信部と
を備えたことを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記情報処理装置同士は、前記主演算装置同士の接続において３次元トーラス構造を有し、且つ、前記集約演算装置同士の接続において１次元トーラス構造を有することを特徴とする請求項１〜３のいずれか一つに記載の情報処理システム。
【請求項５】
前記順序決定部は、各次元の帯域の広い順に前記順番を決定することを特徴とする請求項１〜４のいずれか一つに記載の情報処理システム。
【請求項６】
特定の情報処理装置上の、各前記主演算装置は、前記特定の情報処理装置上の全ての前記集約演算装置と接続されることを特徴とする請求項１〜５のいずれか一つに記載の情報処理システム。
【請求項７】
前記トーラス構造は、４次元トーラス構造であることを特徴とする請求項１〜６のいずれか一つに記載の情報処理システム。
【請求項８】
相互に接続された主演算装置及び集約演算装置をそれぞれ複数搭載した情報処理装置が複数接続されたトーラス構造を有する情報処理システムの制御方法であって、
前記集約演算装置に、
接続する前記主演算装置から配列データを取得させ、
前記情報処理装置同士の接続における次元の処理の順番を決定させ、
前記順番にしたがい、前記次元毎に、前記配列データを基に２分割を繰り返しながら前記次元の方向に並ぶ前記情報処理装置に分配する処理を繰り返させ、
前記順番の逆順にしたがい、前記次元毎に、前記次元の方向に並ぶ各前記情報処理装置から受信した受信データに基づき算出した演算結果を前記次元の方向に並ぶ前記情報処理装置との間で授受する処理を繰り返させ、
保持する前記演算結果を接続する前記主演算装置へ送信させる
ことを特徴とする情報処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム及び情報処理システムの制御方法に関する。
【背景技術】
【０００２】
ＨＰＣ（High  Performance  Computing）の分野では、ノードと呼ばれる計算機を多数接続した並列計算システムが用いられることが多い。ノードは、例えば１つのチップセットなどでもよい。近年、並列計算機システムは、深層学習などにも利用される。
【０００３】
並列計算機システムでは、深層学習（Deep  Learning）の演算など多くのアプリケーションにて多対多の通信を行う集団通信であるＡＬＬｒｅｄｕｃｅの処理が用いられることが多い。Ａｌｌｒｅｄｕｃｅとは、各プロセスが算出した値を集約し、集約した値を用いて演算を行うことで得られる結果を、全てのプロセスにおいて共通化する処理である。そして、集団通信を行うことで、各ノードが実行するプロセスは、全てのプロセスが有する値の演算結果を保持することになる。このように、Ａｌｌｒｅｄｕｃｅの処理を行う場合、他の全てのノードが実行するプロセスが有する値を各ノードは取得することとなる。
【０００４】
ただし、Ａｌｌｒｅｄｕｃｅの処理において、例えば、各ノードそれぞれが有する値を単純にいずれかのノードに集約してＲｅｄｕｃｅ処理を行うと、通信量及び演算量に偏りが生じる。そのため、演算はできるだけ同時並列に各ノードが計算し、且つデータ転送量が少なくなることが好ましい。
【０００５】
従来、Ａｌｌｒｅｄｕｃｅにおける通信データ量を削減する技術として、Ｈａｌｖｉｎｇ＋Ｄｏｕｂｌｉｎｇ手法が提案されている。Ｈａｌｖｉｎｇ＋Ｄｏｕｂｌｉｎｇ手法におけるＨａｌｖｉｎｇ操作を行った場合、通信ステップ毎に通信データ量が半減する。一方、Ｄｏｕｂｌｉｎｇ操作を行った場合、通信ステップ毎に通信データ量が倍増する。すなわち、Ｈａｌｖｉｎｇ＋Ｄｏｕｂｌｉｎｇ手法では、処理開始後にＨａｌｖｉｎｇを行うことでステップが進むにつれて通信データ量が削減され、その後Ｄｏｕｂｌｉｎｇを行うことでステップが進むにつれて通信データ量が増加する。そのため、Ｈａｌｖｉｎｇ＋Ｄｏｕｂｌｉｎｇ手法では、ステップが小さい間は大きなデータによる相互通信が行われ、ステップの中間で小さいデータにより相互通信が行われ、その後ステップが増えるにつれ大きなデータによる相互通信が行われる。
【０００６】
ここで、並列計算機システムの中には、主要な演算を行う主演算装置と集約演算用の集約演算装置とを有するシステムが存在する。この場合、Ａｌｌｒｅｄｕｃｅの計算には、集約演算装置が用いられ、主演算装置は使用されない。一方、Ａｌｌｒｅｄｕｃｅの対象となるデータは、各主演算装置上のメモリに格納されたデータである。
【０００７】
例えば、１つのシステムボード上に８つの主演算装置及び４つの集約演算装置を有する並列計算機システムがある。そして、主演算装置及び集約演算装置のいずれも、メモリ及び演算回路を有し、さらに１０本のインターコネクトのポートを有する。
【０００８】
そのようなシステムにおける接続の一例として、各主演算装置は、相互に直接結合を持たず４つの集約演算装置と直接接続する。すなわち、各主演算装置は、集約演算装置を介して相互に接続される。この場合、システムボード内の結合に使用したインターコネクトのポート以外に、主演算装置は２つのポートを有し、集約演算装置は６つのポートを有する。そして、これらの残りのポートを用いて主演算装置及び集約演算装置は別のシステムボード上の主演算装置又は集約演算装置と接続する。より詳しくは、主演算装置は、３次元トーラスでシステムボード間を接続する。また、集約演算装置は、１次元トーラスでシステムボード間を接続する。これにより、ここで例示した並列計算機システムには、３次元トーラスメッシュがリングで繋がる構造となる。
【０００９】
ここで、ｎ次元のトーラストポロジにおいて、データの一部を第１の方向に隣接するプロセスに転送し、次のデータ転送処理では第２の方向に隣接するプロセスにデータの一部を転送して集合通信を行う従来技術がある（特許文献１参照）。また、集約したいデータをいくつかに分割して、それぞれの分割されたデータについてクロスバスイッチを用いて担当ノードへ転送し部分領域毎に集約演算を行う従来技術がある（特許文献２参照）。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１０−２１１５５３号公報
【特許文献２】特開２００７−２４９８１０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、従来のＨａｌｖｉｎｇ＋Ｄｏｕｂｌｉｎｇ手法が対象とする並列計算機システム、集約演算を行う演算装置とデータが格納された演算装置とが一致し、さらに、演算装置同士は直接結合される。すなわち、従来のＨａｌｖｉｎｇ＋Ｄｏｕｂｌｉｎｇ手法は、上述した主演算装置と集約演算装置とを有する並列計算機システムとは、演算に用いるデータの位置が異なり、さらに、各演算装置のトポロジ構造も異なるシステムを対象とする。そのため、従来のＨａｌｖｉｎｇ＋Ｄｏｕｂｌｉｎｇ手法を、主演算装置と集約演算装置とを有する並列計算機システムにそのまま適用することは困難である。
【００１２】
また、連続するデータ転送において転送先のプロセスの並ぶ方向を異ならせる従来技術や部分領域毎に集約演算を行う従来技術のいずれでも、主演算装置と集約演算装置とを異ならせたシステムについては考慮しておらず、データ転送量を削減することは困難である。
【００１３】
開示の技術は、上記に鑑みてなされたものであって、データ転送量を削減する情報処理システム及び情報処理システムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本願の開示する情報処理システム及び情報処理システムの制御方法の一つの態様において、情報処理システムは、相互に接続された主演算装置及び集約演算装置をそれぞれ複数搭載した情報処理装置が複数接続されたトーラス構造を有する。前記集約演算装置は、以下の各部を備える。取得部は、自装置に接続する前記主演算装置から配列データを取得する。順番決定部は、前記情報処理装置同士の接続における次元の処理の順番を決定する。演算実行部は、演算を実行する。処理制御部は、前記順番にしたがい、前記次元毎に、前記配列データを基に２分割を繰り返しながら前記次元方向に並ぶ前記情報処理装置に分配する処理を繰り返し、次に、前記順番の逆順にしたがい、前記次元毎に、前記次元方向に並ぶ各前記情報処理装置から受信した受信データに基づき前記演算実行部により算出された演算結果を前記次元方向に並ぶ各前記情報処理装置との間で授受する処理を繰り返す。送信部は、前記処理制御部により収集された前記演算結果を自装置に接続する前記主演算装置へ送信する。
【発明の効果】
【００１５】
１つの側面では、本発明は、データ転送量を削減することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、実施例１に係る情報処理システムのシステム構成図である。
【図２】図２は、システムボードのハードウェア構成図である。
【図３】図３は、主演算装置と集約演算装置との接続状態を表す図である。
【図４】図４は、情報処理システムにおける各接続状態を表す図である。
【図５】図５は、主演算装置のハードウェア構成図である。
【図６】図６は、主演算装置におけるネットワーク制御部のブロック図である。
【図７】図７は、Ａｌｌｒｅｄｕｃｅ処理におけるシステムボード内処理を説明するための図である。
【図８】図８は、集約演算装置のハードウェア構成図である。
【図９】図９は、集約演算装置におけるネットワーク制御部のブロック図である。
【図１０】図１０は、Ｗ次元のＨａｌｖｉｎｇ処理について説明するための図である。
【図１１】図１１は、集約演算装置によるＨａｌｖｉｎｇ処理を表す図である。
【図１２】図１２は、Ｈａｌｖｉｎｇ処理の前後における各集約演算装置が有するデータの長さを表す図である。
【図１３】図１３は、Ｘ次元のＨａｌｖｉｎｇ処理について説明するための図である。
【図１４】図１４は、Ｘ次元における集約演算装置間の通信を説明するための図である。
【図１５】図１５は、集約演算装置によるＤｏｕｂｌｉｎｇ処理を表す図である。
【図１６】図１６は、初期状態を表す図である。
【図１７】図１７は、Ｗ次元のＨａｌｖｉｎｇ処理を表す図である。
【図１８】図１８は、Ｘ次元のＨａｌｖｉｎｇ処理を表す図である。
【図１９】図１９は、Ｙ次元のＨａｌｖｉｎｇ処理を表す図である。
【図２０】図２０は、Ｚ次元のＨａｌｖｉｎｇ処理を表す図である。
【図２１】図２１は、Ｚ次元のＤｏｕｂｌｉｎｇ処理を表す図である。
【図２２】図２２は、Ｙ次元のＤｏｕｂｌｉｎｇ処理を表す図である。
【図２３】図２３は、Ｘ次元のＤｏｕｂｌｉｎｇ処理を表す図である。
【図２４】図２４は、Ｗ次元のＤｏｕｂｌｉｎｇ処理を表す図である。
【図２５】図２５は、実施例１に係る情報処理システムによるＡｌｌｒｅｄｕｃｅ処理のフローチャートである。
【図２６】図２６は、実施例に係るＨａｌｖｉｎｇ＿Ｄｏｕｂｌｉｎｇ処理を用いた場合のデータ転送量を説明するための図である。
【図２７】図２７は、従来のＨａｌｖｉｎｇ＿Ｄｏｕｂｌｉｎｇ処理を用いた場合のデータ転送量を説明するための図である。
【図２８】図２８は、変形例に係る情報処理システムのシステム構成図である。
【図２９】図２９は、実施例２に係る情報処理システムによるＡｌｌｒｅｄｕｃｅ処理のフローチャートである。
【発明を実施するための形態】
【００１７】
以下に、本願の開示する情報処理システム及び情報処理システムの制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理システム及び情報処理システムの制御方法が限定されるものではない。
【実施例１】
【００１８】
図１は、実施例１に係る情報処理システムのシステム構成図である。本実施例に係る情報処理システム３は、複数の３次元トーラスメッシュ２を有する。３次元トーラスメッシュ２は、環状に接続された１次元トーラス構造を有する。すなわち、情報処理システム３は、４次元トーラス構造を有する。以下では、３次元トーラスメッシュ２が接続される次元をＷ次元と言う。
【００１９】
３次元トーラスメッシュ２は、複数のシステムボード１を有する。各システムボード１は、３つの次元のそれぞれで隣接するシステムボード１と接続された３次元トーラス構造を有する。以下では、３次元トーラスメッシュ２に含まれる３つの次元をＸ次元、Ｙ次元、Ｚ次元と言う。
【００２０】
図２は、システムボードのハードウェア構成図である。各システムボード１は、複数の主演算装置１０、複数の集約演算装置２０、ＣＰＵ（Central  Processing  Unit）３０、ＰＣＩスイッチ４０、及び、ＨＣＡ（Host  Channel  Adaptor）５０を有する。このシステムボード１が、「情報処理装置」の一例にあたる。
【００２１】
各システムボード１上のＣＰＵ３０は、相互に直接接続される。また、システムボード１上において、ＣＰＵ３０は、ＰＣＩスイッチ４０に接続される。ＣＰＵ３０は、操作者から入力されたジョブの命令を受けて、ジョブを後述する各主演算装置１０及び各集約演算装置２０へ送信する。
【００２２】
各ＰＣＩスイッチ４０は、主演算装置１０、集約演算装置２０及びＣＰＵ３０に接続される。また、各ＰＣＩスイッチ４０は、ＨＣＡ５０に接続される。ＰＣＩスイッチ４０は、主演算装置１０、集約演算装置２０及びＣＰＵ３０によるＰＣＩを用いた通信時の経路選択を行う。
【００２３】
ＨＣＡ５０は、主演算装置１０、集約演算装置２０及びＣＰＵ３０によるインフィニバンドを用いた通信における通信インタフェースである。ＨＣＡ５０は、ＰＣＩスイッチ４０に接続される。また、ＨＣＡ５０は、ネットワークスイッチ６０に接続される。
【００２４】
ネットワークスイッチ６０は、各システムボード１上のＨＣＡ５０が接続される。ネットワークスイッチ６０は、主演算装置１０、集約演算装置２０及びＣＰＵ３０によるインフィニバンドを用いた通信における経路選択を行う。
【００２５】
主演算装置１０は、並列計算を行うための演算回路を有する。主演算装置１０は、例えば、ＧＰＵ（Graphic  Processing  Unit）である。主演算装置１０は、ディープラーニングにおける集約演算以外の演算処理などを実行する。
【００２６】
また、集約演算装置２０は、集合通信による集約演算を行うための演算回路を有する。集約演算装置２０は、例えば、ＧＰＵである。集約演算装置２０は、ディープラーニングにおける集約演算の処理などを実行する。以下では、主演算装置１０及び集約演算装置２０を「ノード」と呼ぶ場合がある。
【００２７】
ここで、本実施例では、各システムボード１上に図３に示すように主演算装置１１〜１８及び集約演算装置２１〜２４が並べられている。そして、各システムボード１上の同じ位置の集約演算装置２１〜２４が接続されて１次元トーラスを形成する場合で説明する。例えば、あるシステムボード１上の集約演算装置２１は、他のシステムボード上の集約演算装置２１と接続される。以下では、同じ位置の集約演算装置２０と言った場合、図３における位置が同じ集約演算装置２０を指すものとする。
【００２８】
図３は、主演算装置と集約演算装置との接続状態を表す図である。主演算装置１０は、本実施例では、１つのシステムボード１上に８つ搭載される。図３では、８つの主演算装置１０を、主演算装置１１〜１８と表した。また、集約演算装置２０は、本実施例では、１つのシステムボード１上に４つ搭載される。図３では、４つの集約演算装置２０を、集約演算装置２１〜２４として表した。
【００２９】
主演算装置１１〜１８は、それぞれ集約演算装置２１〜２４の全てに接続される。また、同じシステムボード１上に搭載された主演算装置１１〜１８同士は直接接続はなされない。すなわち、主演算装置１１〜１８及び集約演算装置２１〜２４は、Ｆａｔ−Ｔｒｅｅ構造の接続形態を有する。
【００３０】
主演算装置１１〜１８は、それぞれ８つの接続ポートを有する。主演算装置１１〜１８は、システムボード１上での集約演算装置２１〜２４とのインターコネクトの接続で４つの接続ポートが使用される。そして、主演算装置１１〜１８の残りの６つの接続ポートは、システムボード１間の接続に使用される。より詳しくは、主演算装置１１〜１８の他のシステムボード１との接続に使用される接続ポートのうち２つはＸ方向の接続に使用され、他の２つはＹ方向の接続に使用され、残りの２つはＺ方向の接続に使用される。
【００３１】
ここで、本実施例では主演算装置１１〜１８は集約演算装置２１〜２４の全てに接続されたが、主演算装置２１〜２４のうちから選択したいくつかと接続される構成でもよい。また、主演算装置１１〜１８及び集約演算装置２１〜２４の個数はこれに限らず、また、それぞれの比率もこれに限らない。
【００３２】
図４における接続状態５０１が、本実施例に係るシステムボード１の接続状態を表す。図４は、情報処理システムにおける各接続状態を表す図である。システムボード１間の主演算装置１１〜１８の接続により、システムボード１はＸＹＺ次元の３次元トーラス構造となる。
【００３３】
集約演算装置２１〜２４も同様に、それぞれ８つの接続ポートを有する。集約演算装置２１〜２４は、システムボード１上での主演算装置１１〜１８とのインターコネクトの接続で８つの接続ポートが使用される。そして、集約演算装置２１〜２４の残りの２つの接続ポートは、システムボード１間の接続に使用される。より詳しくは、集約演算装置２１〜２４の他のシステムボード１との接続に使用される２つの接続ポートは、Ｗ方向の接続に使用される。図４における接続状態５０２が、集約演算装置２１〜２４の接続状態を表す。システムボード１間の集約演算装置２１〜２４の接続により、Ｗ次元は、１次元トーラス構造となる。
【００３４】
そして、接続状態５０１により、システムボード１の３次元トーラス構造を有する３次元トーラスメッシュ２が構築される。また、接続状態５０２により、３次元トーラスメッシュ２は、環状に接続され１次元トーラス構造となる。すなわち、情報処理システム３は、接続状態５０３に示すように、３次元トーラスメッシュ２がリングで繋がる４次元トーラス構造となる。
【００３５】
次に、図５を参照して、主演算装置１０の詳細について説明する。図５は、主演算装置のハードウェア構成図である。
【００３６】
主演算装置１０は、並列演算装置１０１、演算制御部１０２、メモリ制御部１０３及びメモリ１０４を有する。さらに、主演算装置１０は、ＤＭＡ（Direct  Memory  Access）エンジン部１０５、ＰＣＩ制御部１０６、ジョブ管理部１０７、ネットワーク構成管理部１０８、ネットワーク制御部１０９、通信用バッファ１１０及びインターコネクト装置１１１を有する。ここで、図３では、並列演算装置１０１、演算制御部１０２、メモリ制御部１０３及びメモリ１０４を４つずつ記載したが、これらの数に特に制限は無い。
【００３７】
ＰＣＩ制御部１０６は、ＤＭＡエンジン部１０５、ジョブ管理部１０７及びネットワーク構成管理部１０８とＰＣＩスイッチ４０との間のＰＣＩを用いた通信の制御を行う。
【００３８】
ジョブ管理部１０７は、ＰＣＩスイッチ４０及びＰＣＩ制御部１０６を介してＣＰＵ３０から送信されたジョブを実行するための演算命令の入力を受ける。ジョブ管理部１０７は、取得した演算命令をキューとして取り扱う。ジョブ管理部１０７は、演算命令を演算制御部１０２へ出力する。その後、ジョブ管理部１０７は、演算結果の入力を演算制御部１０２から受ける。そして、ジョブ管理部１０７は、各演算制御部１０２から取得した演算結果をまとめてジョブの結果を取得する。その後、ジョブ管理部１０７は、ジョブの結果をＰＣＩ制御部１０６及びＰＣＩスイッチ４０などを介してＣＰＵ３０へ出力する。
【００３９】
演算制御部１０２は、演算命令にしたがい、メモリ制御部１０３を介してメモリ１０４からデータを取得する。そして、演算制御部１０２は、取得したデータ及び演算命令を並列演算装置１０１へ出力する。その後、演算制御部１０２は、演算結果を並列演算装置１−１から取得する。次に、演算制御部１０２は、演算結果をジョブ管理部１０７へ出力する。
【００４０】
並列演算装置１０１は、データ及び演算命令の入力を演算制御部１０２から受ける。そして、並列演算装置１０１は、取得したデータを用いて指定された演算を実行する。その後、並列演算装置１０１は、演算結果を演算制御部１０２へ出力する。
【００４１】
ネットワーク構成管理部１０８は、ＣＰＵ３０が実行するデバイスドライバよりシステムボード１内の結線表を取得する。結線表は、主演算装置１０と集約演算装置２０との間のインターコネクトの接続状態を含む。ネットワーク構成管理部１０８は、取得した結線表をネットワーク制御部１０９へ出力する。
【００４２】
ネットワーク制御部１０９は、通信用バッファ１１０及びインターコネクト装置１１１と接続される。ネットワーク制御部１０９は、通信用バッファ１１０及びインターコネクト装置１１１を用いてインターコネクトを介した他の主演算装置１０との間の通信を制御する。具体的には、ネットワーク制御部１０９は、送信するデータを通信用バッファ１１０に書き込む。そして、ネットワーク制御部１０９は、インターコネクト装置１１１に対して通信用バッファ１１０に格納されたデータの送信を指示することで集約演算装置２０へデータを送信する。
【００４３】
ネットワーク制御部１０９は、システムボード１の結線表をネットワーク構成管理部１０８から取得する。さらに、ネットワーク制御部１０９は、実行されるジョブで行う主演算装置１０及び集約演算装置２０との間の通信の情報をジョブ管理部１０７から取得する。そして、ネットワーク制御部１０９は、取得した通信の情報にしたがい結線表を用いて通信相手及び送信するデータを決定する。次に、ネットワーク制御部１０９は、送信を決定したデータの取得要求をメモリ制御部１０３へ出力する。その後、ネットワーク制御部１０９は、取得要求に応じたデータの入力をメモリ制御部１０３から受ける。そして、ネットワーク制御部１０９は、取得したデータを決定した通信相手に送信する。
【００４４】
また、ネットワーク制御部１０９は、データの受信の通知をインターコネクト装置１１１から受ける。そして、ネットワーク制御部１０９は、通信用バッファ１１０に格納された受信したデータを取得する。そして、ネットワーク制御部１０９は、取得したデータとともに書き込みの指示をメモリ制御部１０３へ出力する。
【００４５】
また、ネットワーク制御部１０９は、他のシステムボード１へのデータの転送命令を集約演算装置２０から受けた場合、メモリ制御部１０３を介して受信したデータをメモリ１０４に格納するとともに、ジョブ管理部１０７にＤＭＡ転送の実行を指示する。これにより、集約演算装置２０から送られてきたデータは、ＤＭＡエンジン部１０５により他のシステムボード１上の主演算装置１０へ送信される。
【００４６】
ネットワーク制御部１０９が行う集約演算装置２０との間の通信には、システムボード１内におけるＲｅｄｕｃｅ処理が含まれる。そこで、図６を参照して、Ａｌｌｒｅｄｕｃｅ処理におけるネットワーク制御部１０９の機能について詳細に説明する。図６は、主演算装置におけるネットワーク制御部のブロック図である。図６では、ネットワーク制御部１０９におけるＡｌｌＲｅｄｕｃｅ処理を行うための機能を記載し、他の機能については省略した。図６に示すように、ネットワーク制御部１０９は、データ分割部１９１、データ送信部１９２及びデータ受信部１９３を有する。
【００４７】
データ分割部１９１は、Ａｌｌｒｅｄｕｃｅ処理の実行命令をジョブ管理部１０７から取得する。そして、Ａｌｌｒｅｄｕｃｅ処理におけるシステムボード内処理において、データ分割部１９１は、Ａｌｌｒｅｄｕｃｅ処理に用いる配列データをメモリ制御部１０３から取得する。次に、データ分割部１９１は、システムボード１内の結線表をネットワーク構成管理部１０８から取得する。
【００４８】
次に、データ分割部１９１は、システムボード１内の結線表から自己が搭載された主演算装置１０に接続する集約演算装置２０を特定する。そして、データ分割部１９１は、自己が搭載された主演算装置１０に接続する集約演算装置２０の数で取得した配列データを分割し、それぞれの送信先の集約演算装置２０を決定する。ここで、送信先の集約演算装置２０は、各データでそれぞれ異なるように決定される。本実施例では、主演算装置１０は４つの集約演算装置２０に接続するので、データ分割部１９１は、配列データを４分割し１／４配列データを生成する。そして、データ分割部１９１は、分割した１／４配列データを送信先の集約演算装置２０の情報とともにデータ送信部１９２へ出力する。このデータ分割部１９１が、「分割部」の一例にあたる。
【００４９】
データ送信部１９２は、Ａｌｌｒｅｄｕｃｅ処理におけるシステムボード内処理において、１／４配列データの入力をデータ分割部１９１から受ける。さらに、データ送信部１９２は、各１／４配列データの送信先の集約演算装置２０の情報の入力をデータ分割部１９１から受ける。そして、データ送信部１９２は、４つの１／４配列データをそれぞれ送信先の集約演算装置２０へ送信する。以下では、配列データの分割及び分割した配列データの集約演算装置２０への送信をシステムボード内Ｒｅｄｕｃｅ処理と言う場合がある。
【００５０】
ここで、図７を参照して、Ａｌｌｒｅｄｕｃｅ処理におけるシステムボード内処理の概要をさらに説明する。図７は、Ａｌｌｒｅｄｕｃｅ処理におけるシステムボード内処理を説明するための図である。ここでは、主演算装置１１〜１７及び集約演算装置２１〜２４を用いて説明する。
【００５１】
主演算装置１１は、例えば、Ａｌｌｒｅｄｕｃｅに用いる配列データ１２０を有する。データ分割部１９１は、配列データ１２０を１／４配列データ１２１〜１２４に分割する。そして、データ送信部１９２は、１／４配列データ１２１を集約演算装置２１へ送信する。また、データ送信部１９２は、１／４配列データ１２２を集約演算装置２２へ送信する。また、データ送信部１９２は、１／４配列データ１２３を集約演算装置２３へ送信する。また、データ送信部１９２は、１／４配列データ１２４を集約演算装置２４へ送信する。このように、データ分割部１９１は、システムボード内処理において、元の配列データ１２０を接続する集約演算装置２１〜２４の台数で分割した１／４配列データ１２１〜１２４をそれぞれ異なる集約演算装置２１〜２４へ配布する。
【００５２】
図６に戻って説明を続ける。また、データ送信部１９２は、ＸＹＺ方向に対するＨａｌｖｉｎｇ＿Ｄｏｕｂｌｉｎｇ処理の場合、他のシステムボード１上の集約演算装置２０から送信されてメモリ１０４に格納されたデータをメモリ制御部１０３から取得する。そして、データ送信部１９２は、取得したデータを宛先の集約演算装置２０へ送信する。
【００５３】
データ受信部１９３は、Ａｌｌｒｅｄｕｃｅ処理におけるシステムボード内処理において、集約演算結果を各集約演算装置２０から受信する。そして、データ受信部１９３は、各集約演算結果を送信元の集約演算装置２０へ送った１／４配列データの集約演算結果として並べることで配列データに対する集約演算結果を生成する。その後、データ受信部１９３は、生成した集約演算結果をメモリ制御部１０３へ出力し、メモリ１０４に格納させる。
【００５４】
すなわち、データ受信部１９３は、Ａｌｌｒｅｄｕｃｅ処理におけるシステムボード内処理として、図７に示す１／４配列データ１２１に対応する集約演算結果１２７を集約演算装置２１から受信する。集約演算結果１２７は、主演算装置１１〜１８のそれぞれが集約演算装置２１へ送信した１／４配列データ１２１〜１２６を用いて集約演算を行った演算結果である。演算には、例えば、加算、乗算、最大値、最小値、平均値などが使用できる。
【００５５】
また、主演算装置１１は、１／４配列データ１２２に対応する集約演算結果を集約演算装置２２から受信する。また、主演算装置１１は、１／４配列データ１２３に対応する集約演算結果を集約演算装置２３から受信する。また、主演算装置１１は、１／４配列データ１２４に対応する集約演算結果を集約演算装置２４から受信する。これにより、主演算装置１１は、配列データ１２０に対応する集約演算結果を取得できる。同様に、主演算装置１２〜１８も、各集約演算装置２１〜２４から集約演算結果を受信することで、それぞれが保持する配列データに対応する主演算装置１１と同様の集約演算結果を取得できる。
【００５６】
また、データ受信部１９３は、ＸＹＺ方向に対するＨａｌｖｉｎｇ＿Ｄｏｕｂｌｉｎｇ処理の場合、他のシステムボード１上の集約演算装置２０へ送信するデータを自己のシステムボード１上の集約演算装置２０から取得する。そして、データ受信部１９３は、受信したデータをメモリ制御部１０３へ出力し、メモリ１０４に格納させる。さらに、データ受信部１９３は、メモリ制御部１０３に宛先の集約演算装置２０へのＤＭＡによるデータ転送をメモリ制御部１０３及びＤＭＡエンジン部１０５に指示する。
【００５７】
通信用バッファ１１０は、集約演算装置２０との間のインターコネクトを介した通信における一時格納領域である。通信用バッファ１１０には、集約演算装置２０へ送信されるデータが格納される。また、通信用バッファ１１０には、集約演算装置２０から受信したデータが格納される。
【００５８】
インターコネクト装置１１１は、インターコネクトにより集約演算装置２０と接続する。インターコネクト装置１１１は、集約演算装置２０との間のインターコネクトを介した通信を行う。インターコネクト装置１１１は、ネットワーク制御部１０９からのデータの送信指示を受けて、通信用バッファ１１０からデータを読み出す。そして、インターコネクト装置１１１は、読み出したデータをネットワーク制御部１０９から指定された通信相手の集約演算装置２０へ送信する。また、インターコネクト装置１１１は、集約演算装置２０からデータを受信し、受信したデータを通信用バッファ１１０に格納する。さらに、インターコネクト装置１１１は、データの受信をネットワーク制御部１０９に通知する。
【００５９】
ＤＭＡエンジン部１０５は、ＣＰＵ３０などを介すことなく、ＰＣＩのバスで接続された他のシステムボード１上の主演算装置１０が有するメモリ１０４へのアクセス制御を行う。ＤＭＡエンジン部１０５は、ジョブにおけるＰＣＩを用いた通信の情報の入力をジョブ管理部１０７から受ける。そして、ＤＭＡエンジン部１０５は、ジョブにおけるＰＣＩを用いた通信の情報にしたがい、メモリ制御部１０３へデータの読み出しの指示を行う。その後、ＤＭＡエンジン部１０５は、メモリ１０４から読み出されたデータの入力をメモリ制御部１０３から受ける。そして、ＤＭＡエンジン部１０５は、取得したデータを送信先の主演算装置１０のメモリ１０４へＰＣＩ制御部１０６及びＰＣＩスイッチ４０を介して送信する。
【００６０】
また、ＤＭＡエンジン部１０５は、ＤＭＡにより他のシステムボード１上の主演算装置１０のＤＭＡエンジン部１０５から送信されたデータをＰＣＩ制御部１０６から受信する。そして、ＤＭＡエンジン部１０５は、受信したデータの書き込みをメモリ制御部１０３へ指示する。
【００６１】
特に、ＸＹＺ方向に対するＨａｌｖｉｎｇ＿Ｄｏｕｂｌｉｎｇ処理の場合、ＤＭＡエンジン部１０５は、以下の処理を行う。ＤＭＡエンジン部１０５は、自己のシステムボード１上の集約演算装置２０から他のシステムボード１上の集約演算装置２０へ送信されるデータをメモリ１０４から取得する。そして、ＤＭＡエンジン部１０５は、宛先である他のシステムボード１上の集約演算装置２０に繋がる主演算装置１０のメモリ１０４へ、ＰＣＩ制御部１０６及びＰＣＩスイッチ４０を介して取得したデータを送信する。
【００６２】
また、ＤＭＡエンジン部１０５は、他のシステムボード１上の集約演算装置２０から自己のシステムボード１上の集約演算装置２０へ送信されたデータをＰＣＩ制御部１０６から受信する。そして、ＤＭＡエンジン部１０５は、受信したデータのメモリ１０４への書き込みをメモリ制御部１０３へ指示する。
【００６３】
メモリ制御部１０３は、接続されたメモリ１０４に対するデータの読み出し及び書き込みを制御する。メモリ制御部１０３は、ＤＭＡエンジン部１０５からの読み出しの指示にしたがいメモリ１０４からデータを読み出し、読み出したデータをＤＭＡエンジン部１０５へ出力する。また、メモリ制御部１０３は、ＤＭＡエンジン部１０５からの書込みの指示にしたがいメモリ１０４へデータを書き込む。
【００６４】
また、メモリ制御部１０３は、ネットワーク制御部１０９からの読み出しの指示にしたがいメモリ１０４からデータを読み出し、読み出したデータをＤＭＡエンジン部１０５へ出力する。また、メモリ制御部１０３は、ネットワーク制御部１９９からの書込みの指示にしたがいメモリ１０４へデータを書き込む。
【００６５】
次に、図８を参照して、集約演算装置２０の詳細について説明する。図８は、集約演算装置のハードウェア構成図である。ここで、本実施例では、集約演算装置２０は、主演算装置１０とは構成が異なる、主演算装置１０の廉価版の装置を利用したが、構成が同じ装置を用いることも可能である。
【００６６】
集約演算装置２０は、並列演算装置２０１、演算制御部２０２、メモリ制御部２０３及びメモリ２０４を有する。さらに、集約演算装置２０は、ＤＭＡエンジン部２０５、ＰＣＩ制御部２０６、ジョブ管理部２０７、ネットワーク構成管理部２０８、ネットワーク制御部２０９、通信用バッファ２１０及びインターコネクト装置２１１を有する。
【００６７】
ＰＣＩ制御部２０６は、図６のＰＣＩ制御部１０６と同様の動作により、Ａｌｌｒｅｄｕｃｅ処理におけるＰＣＩを用いた通信の制御を行う。また、ジョブ管理部２０７は、図６のジョブ管理部１０７と同様の動作により、Ａｌｌｒｅｄｕｃｅ処理におけるジョブの管理を行う。また、演算制御部２０２は、図６の演算制御部１０２と同様の動作により、Ａｌｌｒｅｄｕｃｅ処理における並列演算装置２０１とメモリ制御部２０３との間のデータ転送の制御と言った演算に関する制御を行う。並列演算装置２０１は、Ａｌｌｒｅｄｕｃｅ処理に関する演算を実行する。この並列演算装置２０１が、「演算実行部」の一例にあたる。
【００６８】
ネットワーク構成管理部２０８は、ＣＰＵ３０が実行するデバイスドライバよりシステムボード１内及びシステムボード１間の結線表を取得する。結線表は、主演算装置１０と集約演算装置２０との間のインターコネクトの接続状態、各主演算装置１０と他のシステムボード１の主演算装置１０の接続状態及び集約演算装置２０と他のシステムボード１の集約演算装置２０との接続状態を含む。ネットワーク構成管理部２０８は、取得した結線表をネットワーク制御部２０９へ出力する。
【００６９】
ネットワーク制御部２０９は、結線表をネットワーク構成管理部１０８から取得する。さらに、ネットワーク制御部１０９は、Ａｌｌｒｅｄｕｃｅ処理の情報をジョブ管理部１０７から取得する。そして、ネットワーク制御部２０９は、取得した情報にしたがい結線表を用いて通信相手及び送信するデータを決定する。次に、ネットワーク制御部２０９は、送信を決定したデータの取得要求をメモリ制御部２０３へ出力する。その後、ネットワーク制御部２０９は、取得要求に応じたデータの入力をメモリ制御部２０３から受ける。そして、ネットワーク制御部２０９は、取得したデータを決定した通信相手に送信する。
【００７０】
また、ネットワーク制御部２０９は、データの受信の通知をインターコネクト装置１１１から受ける。そして、ネットワーク制御部２０９は、通信用バッファ２１０に格納された受信したデータを取得する。そして、ネットワーク制御部２０９は、取得したデータとともに書き込みの指示をメモリ制御部２０３へ出力する。
【００７１】
さらに、ネットワーク制御部２０９は、取得したデータを用いたＡｌｌｒｅｄｕｃｅ処理における演算の実行をジョブ管理部２０７に依頼することで、メモリ２０４に格納したデータを用いたＡｌｌｒｅｄｕｃｅ処理における演算を並列演算装置２０１に実行させる。そして、ネットワーク制御部２０９は、メモリ２０４に格納されたデータを取得することで演算結果を取得する。
【００７２】
ここで、ネットワーク制御部２０９によるＡｌｌｒｅｄｕｃｅ処理の詳細について説明する。図９は、集約演算装置におけるネットワーク制御部のブロック図である。図９では、ネットワーク制御部１０９におけるＡｌｌＲｅｄｕｃｅ処理を行うための機能を記載し、他の機能については省略した。またここでは、説明の都合上、ネットワーク制御部２０９は、主演算装置１０や他のシステムボード１上の集約演算装置２０と直接通信を行うように説明する。さらに、並列演算装置２０１も、メモリ制御部２０３と直接通信を行うように説明する。また、実際には並列演算装置２０１がＡｌｌｒｅｄｕｃｅ処理の演算を行うが、ここでは並列演算装置２０１による演算処理を省略して説明する。
【００７３】
図９に示すように、ネットワーク制御部２０９は、統括管理部２９１、順序決定部２９２、データ送信部２９３及びデータ受信部２９４を有する。
【００７４】
順序決定部２９２は、結線表の入力をネットワーク構成管理部２０８から受ける。そして、順序決定部２９２は、情報処理システム３における次元として、４次元トーラス構造を形成するＷ次元、Ｘ次元、Ｙ次元、Ｚ次元を取得する。次に、順序決定部２９２は、例えば、アルファベットの順番に、４つの次元をソートする。そして、順序決定部２９２は、ソート後の次元の順序を、Ｈａｌｖｉｎｇ処理を実行する次元の順序として統括管理部２９１に通知する。本実施例では、順序決定部２９２は、Ｗ次元、Ｘ次元、Ｙ次元、Ｚ次元の順にＨａｌｖｉｎｇ処理を実行すると決定する。
【００７５】
データ送信部２９３は、送信するデータの入力を統括管理部２９１から受ける。さらに、データ送信部２９３は、データを送信する宛先の情報の入力を統括管理部２９１から受ける。そして、データ送信部２９３は、Ｗ次元のＨａｌｖｉｎｇ処理又はＤｏｕｂｌｉｎｇ処理の場合、自己が搭載されたシステムボード１が接続する他のシステムボード１上の宛先となる集約演算装置２０へのデータ送信をメモリ制御部２０３に指示する。これに対して、Ｘ、Ｙ、Ｚの何れかの次元のＨａｌｖｉｎｇ処理又はＤｏｕｂｌｉｎｇ処理の場合、データ送信部２９３は、他のシステムボード１上の宛先となる主演算装置１０へデータを送信するため、自己が搭載されたシステムボード１上の主演算装置１０へデータを送信する。このように、Ｘ、Ｙ、Ｚの何れかの次元のＨａｌｖｉｎｇ処理又はＤｏｕｂｌｉｎｇ処理の場合、集約演算装置２０は、主演算装置１０を介して他のシステムボード１と通信を行う。このデータ送信部２９３が、「送信部」の一例にあたる。
【００７６】
データ受信部２９４は、Ｘ、Ｙ、Ｚの何れかの次元のＨａｌｖｉｎｇ処理又はＤｏｕｂｌｉｎｇ処理の場合、他のシステムボード１上の集約演算装置２０から送信されたデータの入力を主演算装置１０から受ける。そして、データ受信部２９４は、取得したデータをメモリ制御部２０３を介してメモリ２０４に格納する。このデータ受信部２９４が、「受信部」の一例にあたる。
【００７７】
統括管理部２９１は、Ａｌｌｒｅｄｕｃｅ処理の実行命令の入力をジョブ管理部２０７から受ける。また、統括管理部２９１は、結線表の入力をネットワーク構成管理部２０８から受ける。さらに、統括管理部２９１は、Ｈａｌｖｉｎｇ処理を実行する次元の順序の入力を順序決定部２９２から受ける。Ｈａｌｖｉｎｇ処理とは、保持する配列データを基に２分割を繰り返しながら次元方向に並ぶシステムボード１に分配する処理である。
【００７８】
次に、統括管理部２９１は、各主演算装置１０から受信した１／４配列データを、メモリ制御部２０３を介してメモリ２０４から取得する。以下では、各主演算装置１０から受信した１／４配列データについて、同じ処理を行うので、１つの１／４配列データに着目して説明する。
【００７９】
統括管理部２９１は、最初のＨａｌｖｉｎｇ処理を行うＷ次元の方向に自己が搭載された集約演算装置２０から延びる経路上に並んで接続されるシステムボード１の数であるＷ方向数を結線表から取得する。ここでは、Ｗ方向に４つのシステムボード１が並んで接続される場合、すなわちＷ方向数が４の場合で説明する。統括管理部２９１は、１／４配列データをＷ方向数である４つに分割する。その後、統括管理部２９１は、Ｗ次元の方向に自己が搭載された集約演算装置２０から延びる経路上に並んで接続されるシステムボード１上の各集約演算装置２０との間でＨａｌｖｉｎｇ処理を実行する。
【００８０】
統括管理部２９１は、１回目のＨａｌｖｉｎｇ処理において、自己が搭載された集約演算装置２０からＷ次元の方向に延びる経路上に並んで接続されるシステムボード１の数であるＷ方向の数を結線表から取得する。ここでは、Ｗ方向に４つのシステムボード１が並んで接続される場合、すなわちＷ方向の数が４の場合で説明する。統括管理部２９１は、１／４配列データをＷ方向の数である４つに分割する。その後、統括管理部２９１は、Ｗ次元の方向に自己が搭載された集約演算装置２０から延びる経路上に並んで接続されるシステムボード１上の各集約演算装置２０との間でＨａｌｖｉｎｇ処理を実行する。
【００８１】
以下に、図１０を参照して、Ｗ次元のＨａｌｖｉｎｇ処理の詳細について説明する。図１０は、Ｗ次元のＨａｌｖｉｎｇ処理について説明するための図である。ここでは、システムボード１及び１Ｗ１〜１Ｗ３がＷ次元方向に接続されて並ぶ。システムボード１は、集約演算装置２１〜２４を有する。また、集約演算装置２１Ｗ１〜２１Ｗ３は、システムボード１Ｗ１〜１Ｗ３上の、システムボード１における集約演算装置２１と同じ位置に存在する。
【００８２】
集約演算装置２１は、主演算装置１０から受信した１／４配列データ１２１を保持する。また、集約演算装置２２は、主演算装置１０から受信した１／４配列データ１２２を保持する。また、集約演算装置２３は、主演算装置１０から受信した１／４配列データ１２３を保持する。また、集約演算装置２４は、主演算装置１０から受信した１／４配列データ１２４を保持する。すなわち、図１０におけるシステムボード１の上に記載したボックスの中の１／４配列データ１２１、１２２、１２３及び１２４を含む４つの帯のそれぞれは、集約演算装置２１〜２４が有するデータにあたる。さらに、帯の中の１／４配列データ１２１、１２２、１２３及び１２４の位置は、主演算装置１０が保持する配列データ１２０におけるそれぞれの位置を表す。これは、他のシステムボード１Ｗ１〜１Ｗ３についても同様である。
【００８３】
システムボード１Ｗ１上の集約演算装置２１Ｗ１は、１／４配列データ１２１Ｗ１を保持する。また、システムボード１Ｗ２上の集約演算装置２１Ｗ２は、１／４配列データ１２１Ｗ２を保持する。また、システムボード１Ｗ３上の集約演算装置２１Ｗ３は、１／４配列データ１２１Ｗ３を保持する。
【００８４】
そして、１次元トーラスの接続を有する集約演算装置２１及び２１Ｗ１〜２１Ｗ３が、Ｈａｌｖｉｎｇ処理を実行する。同様に、集約演算装置２２〜２４についても、他のシステムボード１Ｗ１〜１Ｗ３上の同じ位置の集約演算装置２０との間でＨａｌｖｉｎｇ処理を実行する。
【００８５】
ここで、図１１を参照して、Ｈａｌｖｉｎｇ処理について説明する。図１１は、集約演算装置によるＨａｌｖｉｎｇ処理を表す図である。集約演算装置２１及び２１Ｗ１〜２１Ｗ３は、それぞれ１／４配列データ１２１及び１２１Ｗ１〜１２１Ｗ３を有する。
【００８６】
集約演算装置２１は、集約演算装置２１Ｗ１〜２１Ｗ３のうちのいずれかに１／４配列データ１２１の下半分のデータ３０１を送信する。図１１では、集約演算装置２１は、集約演算装置２１Ｗ１へデータ３０１を送信する。集約演算装置２１からデータ３０１を受信する集約演算装置２１Ｗ１は、１／４配列データ１２１Ｗ１の上半分のデータ３０２を集約演算装置２１へ送信する。残りの集約演算装置２１Ｗ２及び２１Ｗ３もそれぞれ、１／４配列データ１２１Ｗ２の上半分のデータと１／４配列データ１２１Ｗ３の下半分のデータとを相互に送受信する。そして、集約演算装置２１は、１／４配列データ１２１における受信したデータ３０２の位置のデータとデータ３０２とを用いて演算を行う。ここでは、演算結果を、演算前のデータの元の値を並べた数字で表す。集約演算装置２１Ｗ１〜２１Ｗ３も同様に演算を行う。
【００８７】
次に、集約演算装置２１は、演算により求めたデータのうちの下半分のデータ３０３を、集約演算装置２１Ｗ２又は２１Ｗ３のうち前のステップで配列データの同じ位置に演算結果を有する装置へ送信する。ここでは、集約演算装置２１は、集約演算装置２１Ｗ２へデータを送信する。また、集約演算装置２１からデータ３０３を受信する集約演算装置２１Ｗ２は、演算により求めたデータのうちの上半分のデータ３０４を、集約演算装置２１へ送信する。残りの集約演算装置２１Ｗ１及び２１Ｗ３もそれぞれ、演算により求めたデータうちの上半分のデータと下半分のデータとを相互に送受信する。そして、集約演算装置２１は、１つ前のステップにおける演算により求めたデータのうちの上半分のデータ３０５と受信したデータ３０４とを用いて演算を行う。これにより、集約演算装置２１は、１／４配列データ１２１を４分割した１番目の部分の集約演算の結果としてデータ３０６を取得する。同様に、集約演算装置２１Ｗ１〜２１Ｗ３は、それぞれ、１／４配列データ１２１Ｗ１〜１２１Ｗ３を４分割した３番目、２番目、４番目の部分の集約演算の結果を取得する。これにより、集約演算装置２１及び２１Ｗ１〜２１Ｗ３は、それぞれ元の１／４配列データ１２１及び１２１Ｗ１〜１２１Ｗ３を４分割した場合の異なる位置の集約演算結果をそれぞれが保持する。
【００８８】
図１２は、Ｈａｌｖｉｎｇ処理の前後における各集約演算装置が有するデータの長さを表す図である。図１２では、状態３５１がＨａｌｖｉｎｇ処理前の各集約演算装置２１及び２１Ｗ１〜２１Ｗ３が保持するデータの長さを表し、状態３５２がＨａｌｖｉｎｇ処理前の各集約演算装置２１及び２１Ｗ１〜２１Ｗ３が保持するデータの長さを表す。状態３５１及び３５２共に、紙面に向かって左から順に各集約演算装置２１及び２１Ｗ１〜２１Ｗ３が保持するデータを表す。さらに、図２１における各データは、元の配列データに対するデータの大きさを表す。
【００８９】
例えば、集約演算装置２１Ａは、Ｗ次元のＨａｌｖｉｎｇ処理前には、状態３５１に示すように１／４配列データ１２１を有する。そして、Ｗ次元のＨａｌｖｉｎｇ処理を行うと、状態３５２に示すように１／４配列データ１２１の１／４のサイズの１／１６配列データ１３１を有する。他の集約演算装置２１Ｂ〜Ｄも、主演算装置１０が有する元の配列データの１／１６のサイズのデータをそれぞれが保持する。
【００９０】
図９に戻って説明を続ける。以上に説明した順に、統括管理部２９１は、Ｗ次元のＨａｌｖｉｎｇ処理のステップ毎に、主演算装置１０から取得した１／４配列データ又は演算結果を、メモリ制御部２０３を介してメモリ２０４から取得する。そして、統括管理部２９１は、Ｗ次元のＨａｌｖｉｎｇ処理のステップ毎に取得したデータを半分にしていくことで送信データを生成しデータ送信部２９３へ出力する。さらに、統括管理部２９１は、Ｗ次元のＨａｌｖｉｎｇ処理においてステップ毎に上述した順に宛先をデータ送信部２９３に通知する。これにより、統括管理部２９１は、上述したＷ次元のＨａｌｖｉｎｇ処理におけるデータ送信をデータ送信部２９３に行わせる。
【００９１】
次に、集約演算装置２１は、Ｘ次元方向へのＨａｌｖｉｎｇ処理に移る。図３を参照して、Ｘ次元のＨａｌｖｉｎｇ処理の詳細について説明する。図１３は、Ｘ次元のＨａｌｖｉｎｇ処理について説明するための図である。ここでは、システムボード１及び１Ｘ１〜１Ｘ３がＸ次元方向に接続されて並ぶ。システムボード１及び１Ｘ１〜１Ｘ３は、それぞれ集約演算装置２１及び２１Ｘ１〜２１Ｘ３を有する。集約演算装置２１Ｘ１〜２１Ｘ３は、システムボード１Ｘ１〜１Ｘ３上の、システムボード１における集約演算装置２１と同じ位置に存在する。すなわち、集約演算装置２１及び２１Ｘ１〜２１Ｘ３が、Ｘ方向のＨａｌｖｉｎｇ処理を実行する。
【００９２】
集約演算装置２１は、Ｗ方向のＨａｌｖｉｎｇ処理で算出した１／１６配列データ１３１を保持する。また、システムボード１Ｘ１上の集約演算装置２１Ｘ１は、１／１６配列データ１３１Ｘ１を保持する。また、システムボード１Ｘ２上の集約演算装置２１Ｘ２は、１／１６配列データ１３１Ｘ２を保持する。また、システムボード１Ｗ３上の集約演算装置２１Ｘ３は、１／１６配列データ１３１Ｘ３を保持する。
【００９３】
そして、１次元トーラスの接続を有する集約演算装置２１及び２１Ｘ１〜２１Ｘ３が、Ｈａｌｖｉｎｇ処理を実行する。同様に、集約演算装置２２〜２４についても、他のシステムボード１Ｘ１〜１Ｘ３上の同じ位置の集約演算装置２０との間でＨａｌｖｉｎｇ処理を実行する。
【００９４】
ここで、集約演算装置２１は、集約演算装置２１Ｘ１〜２１Ｘ３と直接は接続されていない。そのため、集約演算装置２１は、図１４に示すように、主演算装置１０をホップすることで、集約演算装置２１Ｘ１〜２１Ｘ３と通信を行う。図１４は、Ｘ次元における集約演算装置間の通信を説明するための図である。
【００９５】
Ｘ次元のＨａｌｖｉｎｇ処理の場合も、図１１で表される処理と同様の処理を、集約演算装置２１及び２１Ｘ１〜２１Ｘ３が行う。これにより、集約演算装置２１は、主演算装置１０が有する元の配列データ１２０の１／６４のサイズの演算結果を取得する。この段階で、各集約演算装置２０が有する元の配列データの１／６４のサイズの配列データは、Ｗ次元、Ｘ次元が一致する全てのシステムボード１内の１２８基の全ての主演算装置１０上の配列データを集約した値となる。
【００９６】
図９に戻って説明を続ける。以上に説明した順に、統括管理部２９１は、Ｘ次元のＨａｌｖｉｎｇ処理のステップ毎に演算結果をメモリ制御部２０３を介してメモリ２０４から取得する。そして、統括管理部２９１は、演算結果を順次半分にしていくことで送信データを生成しデータ送信部２９３へ出力する。さらに、統括管理部２９１は、Ｘ次元のＨａｌｖｉｎｇ処理においてステップ毎に上述した順に宛先をデータ送信部２９３に通知する。これにより、統括管理部２９１は、上述したＸ次元のＨａｌｖｉｎｇ処理におけるデータ送信をデータ送信部２９３に行わせる。
【００９７】
この後、統括管理部２９１は、Ｙ次元及びＺ次元についても同様にＨａｌｖｉｎｇ処理を実行する。これにより、全ての集約演算装置２０は、各主演算装置１０が有する配列データの１／１０２４の長さの配列データを有することになる。
【００９８】
その後、統括管理部２９１は、Ｈａｌｖｉｎｇ処理を行った次元の順番の逆順で、次元毎にＨａｌｖｉｎｇ処理時の順番の逆順を辿りデータのコピーを実行し、Ｄｏｕｂｌｉｎｇ処理を行う。すなわち、本実施例の場合、統括管理部２９１は、Ｚ次元、Ｙ次元、Ｘ次元、Ｗ次元の順にＤｏｕｂｌｉｎｇ処理を行う。これにより、統括管理部２９１は、各主演算装置１０から受信した１／４配列データを用いた集約演算結果を取得する。Ｄｏｕｂｌｉｎｇ処理は、演算結果を各次元方向に並ぶ各システムボード１との間で授受する処理である。
【００９９】
例えば、Ｘ次元のＤｏｕｂｌｉｎｇ処理の場合、図１３に示す集約演算装置２１及び２１Ｘ１〜２１Ｘ３の間でデータのコピーを実行する。また、Ｗ次元のＤｏｕｂｌｉｎｇ処理の場合、図１０に示す集約演算装置２１及び２１Ｗ１〜２１Ｗ３の間でデータのコピーが実行される。Ｄｏｕｂｌｉｎｇ処理の場合、コピーを行うにしたがい保持する演算結果のサイズは倍に増える。
【０１００】
ここで、図１５を参照して、Ｗ次元のＤｏｕｂｌｉｎｇ処理の場合について説明する。図１５は、集約演算装置によるＤｏｕｂｌｉｎｇ処理を表す図である。Ｘ次元のＤｏｕｂｌｉｎｇ処理が完了した時点で、集約演算装置２１及び２１Ｗ１〜２１Ｗ３は、それぞれ、主演算装置１０が保持する配列データの１／１６のサイズの演算結果を有する。また、集約演算装置２１及び２１Ｗ１〜２１Ｗ３は、それぞれ配列データにおける異なる位置の演算結果を保持する。ここでは、集約演算装置２１及び２１Ｗ１〜２１Ｗ３は、それぞれデータ３１１〜３１４を有する。
【０１０１】
集約演算装置２１は、Ｗ次元のＨａｌｖｉｎｇ処理において最後の通信相手である集約演算装置２１Ｗ２にデータ３１１をコピーする。このコピーは、配列データにおける同じ位置へのコピーである。これに対して、集約演算装置２１Ｗ２は、データ３１３を集約演算装置２１へコピーする。同様に、残りの集約演算装置２１Ｗ１及び２１Ｗ３も、データ３１２及び３１４を互いにコピーし合う。これにより、集約演算装置２１及び２１Ｗ１〜２１Ｗ３は、それぞれ、主演算装置１０が保持する配列データの１／８のサイズの演算結果を有することになる。
【０１０２】
次に、集約演算装置２１は、１つ前のステップ以前から有するデータ３１１と１つ前のステップで集約演算装置２１Ｗ２からコピーされたデータ３１５とを、Ｈａｌｂｉｎｇ処理における最初の通信相手である集約演算装置２１Ｗ１へ送信する。同様に、集約演算装置２１Ｗ１〜２１Ｗ３も、最初の通信相手に対して主演算装置１０が保持する配列データの１／８のサイズの演算結果をコピーする。これにより、集約演算装置２１及び２１Ｗ１〜２１Ｗ３は、主演算装置１０が保持する配列データの１／４のサイズの演算結果を有することになる。例えば、集約演算装置２１は、図７に示す主演算装置１０から受信した１／４配列データ１２１を用いた集約演算結果１２７を取得することができる。
【０１０３】
図９に戻って説明を続ける。以上に説明した順に、統括管理部２９１は、Ｚ次元、Ｙ次元、Ｘ次元、Ｗ次元のＨａｌｖｉｎｇ処理のステップ毎に演算結果をメモリ制御部２０３を介してメモリ２０４から取得する。そして、統括管理部２９１は、コピーされた演算結果を合わせて、保持する演算結果のサイズを順次倍にしたデータを送信データとしてデータ送信部２９３へ出力する。さらに、統括管理部２９１は、各次元のＤｏｕｂｌｉｎｇ処理においてステップ毎に上述した順に宛先をデータ送信部２９３に通知する。これにより、統括管理部２９１は、上述した各次元のＤｏｕｂｌｉｎｇ処理におけるデータ送信をデータ送信部２９３に行わせる。
【０１０４】
その後、統括管理部２９１は、各主演算装置１０から取得した１／４配列データを用いた集約演算結果を、１／４配列データの送信元の主演算装置１０へ送信することで、システムボード内処理を行いＡｌｌｒｅｄｕｃｅ処理を完了する。以下では、集約演算装置２０から主演算装置１０への１／４配列データを用いた集約演算結果の送信を、システムボード内ブロードキャストと言う場合がある。この統括管理部２９１が、「処理制御部」の一例にあたる。
【０１０５】
次に、図１６〜２４を参照して、本実施例に係る集約演算装置２０によるＨａｌｖｉｎｇ−Ｄｏｕｂｌｉｎｇ処理の具体例について説明する。図１６は、初期状態を表す図である。図１７は、Ｗ次元のＨａｌｖｉｎｇ処理を表す図である。図１８は、Ｘ次元のＨａｌｖｉｎｇ処理を表す図である。図１９は、Ｙ次元のＨａｌｖｉｎｇ処理を表す図である。図２０は、Ｚ次元のＨａｌｖｉｎｇ処理を表す図である。図２１は、Ｚ次元のＤｏｕｂｌｉｎｇ処理を表す図である。図２２は、Ｙ次元のＤｏｕｂｌｉｎｇ処理を表す図である。図２３は、Ｘ次元のＤｏｕｂｌｉｎｇ処理を表す図である。図２４は、Ｗ次元のＤｏｕｂｌｉｎｇ処理を表す図である。ここでは、各システムボード１は、それぞれ集約演算装置２０を１つ有し、それぞれを集約演算装置４０１〜４１６とする。また、４次元空間のサイズはＷ〜Ｚ次元のいずれも２とする。すなわち、システムボード１は、各次元毎に２つ存在し、全部で１６個存在する。また、集約演算装置２０は、集約演算として加算を行う場合で説明する。さらに、各集約演算装置２０が有する。また、図１６〜２４において、破線で結ばれる次元がＷ次元を表し、実線で結ばれる次元がＸ次元を表し、一点鎖線で結ばれる次元がＹ次元を表し、２点鎖線で表される次元がＺ次元を表す。
【０１０６】
図１６では、システムボード内Ｒｅｄｕｃｅ処理で配布された配列データを、各集約演算装置４０１〜４１６の中に記載した。ここでは、集約演算装置４０１〜４１６は、それぞれ、１〜１６の値が１６個並ぶ配列データを有する。
【０１０７】
図１６の状態でＷ次元のＨａｌｖｉｎｇ処理が行われることで、図１７に示す状態となる。具体的には、集約演算装置４０１と集約演算装置４０２との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０１の保持する配列データの上半分及び集約演算装置４０２の保持する配列データの下半分が、相互の配列データが加算された３となる。また、集約演算装置４０３と集約演算装置４０４との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０３の保持する配列データの上半分及び集約演算装置４０４の保持する配列データの下半分が、相互の配列データが加算された７となる。また、集約演算装置４０５と集約演算装置４０６との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０５の保持する配列データの上半分及び集約演算装置４０６の保持する配列データの下半分が、相互の配列データが加算された１１となる。また、集約演算装置４０７と集約演算装置４０８との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０７の保持する配列データの上半分及び集約演算装置４０８の保持する配列データの下半分が、相互の配列データが加算された１５となる。また、集約演算装置４０９と集約演算装置４１０との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０９の保持する配列データの上半分及び集約演算装置４１０の保持する配列データの下半分が、相互の配列データが加算された１９となる。また、集約演算装置４１１と集約演算装置４１２との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４１１の保持する配列データの上半分及び集約演算装置４１２の保持する配列データの下半分が、相互の配列データが加算された２３となる。また、集約演算装置４１３と集約演算装置４１４との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４１３の保持する配列データの上半分及び集約演算装置４１４の保持する配列データの下半分が、相互の配列データが加算された３１となる。また、集約演算装置４１５と集約演算装置４１６との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４１５の保持する配列データの上半分及び集約演算装置４１６の保持する配列データの下半分が、相互の配列データが加算された３１となる。
【０１０８】
図１７の状態でＸ次元のＨａｌｖｉｎｇ処理が行われることで、図１８に示す状態となる。具体的には、集約演算装置４０１と集約演算装置４０３との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０１の保持する演算結果の上半分及び集約演算装置４０３の保持する演算結果の下半分が、相互の配列データが加算された１０となる。また、集約演算装置４０２と集約演算装置４０４との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０２の保持する演算結果の上半分及び集約演算装置４０４の保持する演算結果の下半分が、相互の配列データが加算された１０となる。また、集約演算装置４０５と集約演算装置４０７との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０５の保持する演算結果の上半分及び集約演算装置４０７の保持する演算結果の下半分が、相互の配列データが加算された２６となる。また、集約演算装置４０６と集約演算装置４０８との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０６の保持する演算結果の上半分及び集約演算装置４０８の保持する演算結果の下半分が、相互の配列データが加算された２６となる。また、集約演算装置４０９と集約演算装置４１１との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０９の保持する演算結果の上半分及び集約演算装置４１０の保持する演算結果の下半分が、相互の配列データが加算された４２となる。また、集約演算装置４１０と集約演算装置４１２との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４１０の保持する演算結果の上半分及び集約演算装置４１２の保持する演算結果の下半分が、相互の配列データが加算された４２となる。また、集約演算装置４１３と集約演算装置４１５との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４１３の保持する演算結果の上半分及び集約演算装置４１５の保持する演算結果の下半分が、相互の配列データが加算された５８となる。また、集約演算装置４１４と集約演算装置４１６との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４１４の保持する演算結果の上半分及び集約演算装置４１６の保持する演算結果の下半分が、相互の配列データが加算された５８となる。
【０１０９】
図１８の状態でＹ次元のＨａｌｖｉｎｇ処理が行われることで、図１９に示す状態となる。具体的には、集約演算装置４０１と集約演算装置４０５との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０１の保持する演算結果の上半分及び集約演算装置４０５の保持する演算結果の下半分が、相互の配列データが加算された３６となる。また、集約演算装置４０２と集約演算装置４０６との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０２の保持する演算結果の上半分及び集約演算装置４０６の保持する演算結果の下半分が、相互の配列データが加算された３６となる。また、集約演算装置４０３と集約演算装置４０７との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０３の保持する演算結果の上半分及び集約演算装置４０７の保持する演算結果の下半分が、相互の配列データが加算された３６となる。また、集約演算装置４０４と集約演算装置４０８との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０４の保持する演算結果の上半分及び集約演算装置４０８の保持する演算結果の下半分が、相互の配列データが加算された３６となる。また、集約演算装置４０９と集約演算装置４１３との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０９の保持する演算結果の上半分及び集約演算装置４１３の保持する演算結果の下半分が、相互の配列データが加算された１００となる。また、集約演算装置４１０と集約演算装置４１４との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４１０の保持する演算結果の上半分及び集約演算装置４１４の保持する演算結果の下半分が、相互の配列データが加算された１００となる。また、集約演算装置４１１と集約演算装置４１５との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４１１の保持する演算結果の上半分及び集約演算装置４１５の保持する演算結果の下半分が、相互の配列データが加算された１００となる。また、集約演算装置４１２と集約演算装置４１６との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４１２の保持する演算結果の上半分及び集約演算装置４１６の保持する演算結果の下半分が、相互の配列データが加算された１００となる。
【０１１０】
図１９の状態でＺ次元のＨａｌｖｉｎｇ処理が行われることで、図２０に示す状態となる。具体的には、集約演算装置４０１と集約演算装置４０９との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０１の保持する演算結果の上半分及び集約演算装置４０９の保持する演算結果の下半分が、相互の配列データが加算された１３６となる。また、集約演算装置４０２と集約演算装置４１０との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０２の保持する演算結果の上半分及び集約演算装置４１０の保持する演算結果の下半分が、相互の配列データが加算された１３６となる。また、集約演算装置４０３と集約演算装置４１１との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０３の保持する演算結果の上半分及び集約演算装置４１１の保持する演算結果の下半分が、相互の配列データが加算された１３６となる。また、集約演算装置４０４と集約演算装置４１２との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０４の保持する演算結果の上半分及び集約演算装置４１２の保持する演算結果の下半分が、相互の配列データが加算された１３６となる。また、集約演算装置４０５と集約演算装置４１３との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０５の保持する演算結果の上半分及び集約演算装置４１３の保持する演算結果の下半分が、相互の配列データが加算された１３６となる。また、集約演算装置４０６と集約演算装置４１４との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０６の保持する演算結果の上半分及び集約演算装置４１４の保持する演算結果の下半分が、相互の配列データが加算された１３６となる。また、集約演算装置４０７と集約演算装置４１５との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０７の保持する演算結果の上半分及び集約演算装置４１５の保持する演算結果の下半分が、相互の配列データが加算された１３６となる。また、集約演算装置４０８と集約演算装置４１６との間でＨａｌｖｉｎｇ処理が行われ、集約演算装置４０８の保持する演算結果の上半分及び集約演算装置４１６の保持する演算結果の下半分が、相互の配列データが加算された１３６となる。
【０１１１】
図２０の状態でＺ次元のＤｏｕｂｌｉｎｇ処理が行われることで、図２１に示す状態となる。具体的には、集約演算装置４０１と集約演算装置４０９との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０１及び集約演算装置４０９の保持する配列データの１番目及び２番目が１３６となる。また、集約演算装置４０２と集約演算装置４１０との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０２及び集約演算装置４１０の保持する配列データの９番目及び１０番目が１３６となる。また、集約演算装置４０３と集約演算装置４１１との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０３及び集約演算装置４１１の保持する配列データの７番目及び８番目が１３６となる。また、集約演算装置４０４と集約演算装置４１２との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０４及び集約演算装置４１２の保持する配列データの１３番目及び１４番目が１３６となる。また、集約演算装置４０５と集約演算装置４１３との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０５及び集約演算装置４１３の保持する配列データの３番目及び４番目が１３６となる。また、集約演算装置４０６と集約演算装置４１４との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０６及び集約演算装置４１４の保持する配列データの１１番目及び１２番目が１３６となる。また、集約演算装置４０７と集約演算装置４１５との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０７及び集約演算装置４１５の保持する配列データの７番目及び８番目が１３６となる。また、集約演算装置４０８と集約演算装置４１６との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０８及び集約演算装置４１６の保持する配列データの１５番目及び１６番目が１３６となる。
【０１１２】
図２１の状態でＹ次元のＤｏｕｂｌｉｎｇ処理が行われることで、図２２に示す状態となる。具体的には、集約演算装置４０１と集約演算装置４０５との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０１及び集約演算装置４０５の保持する配列データの１番目〜４番目が１３６となる。また、集約演算装置４０２と集約演算装置４０６との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０２及び集約演算装置４０６の保持する配列データの９番目〜１２番目が１３６となる。また、集約演算装置４０３と集約演算装置４０７との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０３及び集約演算装置４０７の保持する配列データの５番目〜８番目が１３６となる。また、集約演算装置４０４と集約演算装置４０８との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０４及び集約演算装置４０８の保持する配列データの１５番目〜１６番目が１３６となる。また、集約演算装置４０９と集約演算装置４１３との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０９及び集約演算装置４１３の保持する配列データの１番目〜４番目が１３６となる。また、集約演算装置４１０と集約演算装置４１４との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４１０及び集約演算装置４１４の保持する配列データの９番目〜１２番目が１３６となる。また、集約演算装置４１１と集約演算装置４１５との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４１１及び集約演算装置４１５の保持する配列データの５番目〜８番目が１３６となる。また、集約演算装置４１２と集約演算装置４１６との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４１２及び集約演算装置４１６の保持する配列データの１２番目〜１６番目が１３６となる。
【０１１３】
図２２の状態でＸ次元のＤｏｕｂｌｉｎｇ処理が行われることで、図２３に示す状態となる。具体的には、集約演算装置４０１と集約演算装置４０３との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０１及び集約演算装置４０３の保持する配列データの１番目〜８番目が１３６となる。また、集約演算装置４０２と集約演算装置４０４との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０２及び集約演算装置４０４の保持する配列データの９番目〜１６番目が１３６となる。また、集約演算装置４０５と集約演算装置４０７との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０５及び集約演算装置４０７の保持する配列データの１番目〜８番目が１３６となる。また、集約演算装置４０６と集約演算装置４０８との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０６及び集約演算装置４０８の保持する配列データの９番目〜１６番目が１３６となる。また、集約演算装置４０９と集約演算装置４１１との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０９及び集約演算装置４１１の保持する配列データの１番目〜８番目が１３６となる。また、集約演算装置４１０と集約演算装置４１２との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４１０及び集約演算装置４１２の保持する配列データの９番目〜１６番目が１３６となる。また、集約演算装置４１３と集約演算装置４１５との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４１３及び集約演算装置４１５の保持する配列データの１番目〜８番目が１３６となる。また、集約演算装置４１４と集約演算装置４１６との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４１４及び集約演算装置４１６の保持する配列データの９番目〜１６番目が１３６となる。
【０１１４】
図２２の状態でＸ次元のＤｏｕｂｌｉｎｇ処理が行われることで、図２３に示す状態となる。具体的には、集約演算装置４０１と集約演算装置４０３との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０１及び集約演算装置４０３の保持する配列データの１番目〜８番目が１３６となる。また、集約演算装置４０２と集約演算装置４０４との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０２及び集約演算装置４０４の保持する配列データの９番目〜１６番目が１３６となる。また、集約演算装置４０５と集約演算装置４０７との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０５及び集約演算装置４０７の保持する配列データの１番目〜８番目が１３６となる。また、集約演算装置４０６と集約演算装置４０８との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０６及び集約演算装置４０８の保持する配列データの９番目〜１６番目が１３６となる。また、集約演算装置４０９と集約演算装置４１１との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０９及び集約演算装置４１１の保持する配列データの１番目〜８番目が１３６となる。また、集約演算装置４１０と集約演算装置４１２との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４１０及び集約演算装置４１２の保持する配列データの９番目〜１６番目が１３６となる。また、集約演算装置４１３と集約演算装置４１５との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４１３及び集約演算装置４１５の保持する配列データの１番目〜８番目が１３６となる。また、集約演算装置４１４と集約演算装置４１６との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４１４及び集約演算装置４１６の保持する配列データの９番目〜１６番目が１３６となる。
【０１１５】
図２３の状態でＷ次元のＤｏｕｂｌｉｎｇ処理が行われることで、図２４に示す状態となる。具体的には、集約演算装置４０１と集約演算装置４０２との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０１及び集約演算装置４０２の保持する配列データの１番目〜１６番目が１３６となる。また、集約演算装置４０３と集約演算装置４０４との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０３及び集約演算装置４０４の保持する配列データの１番目〜１６番目が１３６となる。また、集約演算装置４０５と集約演算装置４０６との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０５及び集約演算装置４０６の保持する配列データの１番目〜１６番目が１３６となる。また、集約演算装置４０７と集約演算装置４０８との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０７及び集約演算装置４０８の保持する配列データの１番目〜１６番目が１３６となる。また、集約演算装置４０９と集約演算装置４１０との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４０９及び集約演算装置４１０の保持する配列データの１番目〜１６番目が１３６となる。また、集約演算装置４１１と集約演算装置４１２との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４１１及び集約演算装置４１２の保持する配列データの１番目〜１６番目が１３６となる。また、集約演算装置４１３と集約演算装置４１４との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４１３及び集約演算装置４１４の保持する配列データの１番目〜１６番目が１３６となる。また、集約演算装置４１５と集約演算装置４１６との間でＤｏｕｂｌｉｎｇ処理が行われ、集約演算装置４１５及び集約演算装置４１６の保持する配列データの１番目〜１６番目が１３６となる。これにより、図２４に示すように、集約演算装置４０１〜４１６の全てが、配列データの全てにおいて集約演算結果を取得する。
【０１１６】
次に、図２５を参照して、本実施例に係る情報処理システム３によるＡｌｌｒｅｄｕｃｅ処理の流れについて説明する。図２５は、実施例１に係る情報処理システムによるＡｌｌｒｅｄｕｃｅ処理のフローチャートである。
【０１１７】
順序決定部２９２は、結線表をネットワーク構成管理部２０８から受信する。そして、順序決定部２９２は、情報処理システム３の次元であるＷ〜Ｚ次元を確認する。次に、順序決定部２９２は、処理を行う順番をＤ０〜Ｄ３として、各次元をＤ０〜Ｄ３の何れかとして各次元の処理順を決定する（ステップＳ１）。例えば、順序決定部２９２は、Ｗ〜Ｚの順番でＤ０〜Ｄ３を割り当てる。その後、順序決定部２９２は、Ｄ０〜Ｄ３の各次元への割り当て情報を統括管理部２９１に通知する。
【０１１８】
各主演算装置１０のデータ分割部１９１は、メモリ１０４に格納された配列データを４分割する。そして、データ送信部１９２は、４分割した配列データのそれぞれを、異なる集約演算装置２０へ送信することでシステムボード内Ｒｅｄｕｃｅ処理を実行する（ステップＳ２）。集約演算装置２０のデータ受信部２９４は、各主演算装置１０から送信された１／４配列データを受信する。そして、データ受信部２９４は、１／４配列データをメモリ２０４に格納する。
【０１１９】
統括管理部２９１は、Ｄ０〜Ｄ３の各次元への割り当て情報を順序決定部２９２から受信する。そして、統括管理部２９１は、ｉ＝０とする（ステップＳ３）。
【０１２０】
次に、統括管理部２９１は、メモリ２０４から１／４配列データを取得する。そして、統括管理部２９１は、Ｄｉ次元のＨａｌｖｉｎｇ処理を実行する（ステップＳ４）。
【０１２１】
次に、統括管理部２９１は、ｉ＝３か否かを判定する（ステップＳ５）。これにより、統括管理部２９１は、全ての次元についてのＨａｌｖｉｎｇ処理が完了したか否かを判定できる。ｉ＝３でない場合（ステップＳ５：否定）、統括管理部２９１は、ｉを１つインクリメントし（ステップＳ６）、ステップＳ４へ戻る。
【０１２２】
これに対して、ｉ＝３の場合（ステップＳ５：肯定）、統括管理部２９１は、Ｄｉ次元のＤｏｕｂｌｉｎｇ処理を実行する（ステップＳ７）。
【０１２３】
次に、統括管理部２９１は、ｉ＝０か否かを判定する（ステップＳ８）。これにより、統括管理部２９１は、全ての次元についてのＤｏｕｂｌｉｎｇ処理が完了したか否かを判定できる。ｉ＝０でない場合（ステップＳ８：否定）、統括管理部２９１は、ｉを１つデクリメントし（ステップＳ９）、ステップＳ７へ戻る。
【０１２４】
これに対して、ｉ＝０の場合（ステップＳ８：肯定）、統括管理部２９１は、１／４配列データに対する集約演算結果を用いて、データシステムボード内ブロードキャストを実行する（ステップＳ１０）。
【０１２５】
次に、図２６及び２７を参照して、本実施例に係るＨａｌｖｉｎｇ＿Ｄｏｕｂｌｉｎｇ処理を用いた場合と、従来のＨａｌｖｉｎｇ＿Ｄｏｕｂｌｉｎｇ処理を用いた場合とのデータ転送量の差について説明する。図２６は、実施例に係るＨａｌｖｉｎｇ＿Ｄｏｕｂｌｉｎｇ処理を用いた場合のデータ転送量を説明するための図である。図２７は、従来のＨａｌｖｉｎｇ＿Ｄｏｕｂｌｉｎｇ処理を用いた場合のデータ転送量を説明するための図である。図２６及び２７において、各ステップの紙面に向かって右に記載した数字は、転送されるデータの主演算装置１０が有する配列データに対するサイズを表す。
【０１２６】
本実施例に係るＨａｌｖｉｎｇ＿Ｄｏｕｂｌｉｎｇ処理を用いる場合、ボード内Ｒｅｄｕｃｅ処理（ステップＳ１０１）の前には、主演算装置１０が保持する配列データはまだ分割されていないので、転送データは１／１のサイズである。そして、ボード内Ｒｅｄｕｃｅ処理（ステップＳ１０１）が行われると、転送データは、主演算装置１０が保持する配列データの１／４となる。次に、Ｗ次元のＨａｌｖｉｎｇ処理が行われると（ステップＳ１０２）、転送データは、主演算装置１０が保持する配列データの１／１６となる。次に、Ｘ次元のＨａｌｖｉｎｇ処理が行われると（ステップＳ１０３）、転送データは、主演算装置１０が保持する配列データの１／６４となる。次に、Ｙ次元のＨａｌｖｉｎｇ処理が行われると（ステップＳ１０４）、転送データは、主演算装置１０が保持する配列データの１／２５６となる。次に、Ｚ次元のＨａｌｖｉｎｇ処理が行われると（ステップＳ１０５）、転送データは、主演算装置１０が保持する配列データの１／１０２４となる。その後、Ｚ次元のＤｏｕｂｌｉｎｇ処理が行われると（ステップＳ１０６）、転送データは、主演算装置１０が保持する配列データの１／２５６となる。次に、Ｙ次元のＤｏｕｂｌｉｎｇ処理が行われると（ステップＳ１０７）、転送データは、主演算装置１０が保持する配列データの１／６４となる。次に、Ｘ次元のＤｏｕｂｌｉｎｇ処理が行われると（ステップＳ１０８）、転送データは、主演算装置１０が保持する配列データの１／１６となる。次に、Ｗ次元のＤｏｕｂｌｉｎｇ処理が行われると（ステップＳ１０９）、転送データは、主演算装置１０が保持する配列データの１／４となる。その後、システムボード内ブロードキャストが行われると（ステップＳ１１０）、元の配列データのサイズに戻る。
【０１２７】
一方、従来のＨａｌｖｉｎｇ＿Ｄｏｕｂｌｉｎｇ処理を用いる場合について説明する。ここでは、各次元毎にＨａｌｖｉｎｇ処理とＤｏｕｂｌｉｎｇ処理とを連続して行っていく場合で説明する。この場合、図２７に示すように、ボード内Ｒｅｄｕｃｅ処理（ステップＳ１２１）の前には、主演算装置１０が保持する配列データはまだ分割されていないので、転送データは１／１のサイズである。そして、ボード内Ｒｅｄｕｃｅ処理（ステップＳ１２１）が行われると、転送データは、主演算装置１０が保持する配列データの１／４となる。次に、Ｗ次元のＨａｌｖｉｎｇ処理が行われると（ステップＳ１２２）、転送データは、主演算装置１０が保持する配列データの１／１６となる。次に、Ｗ次元のＤｏｕｂｌｉｎｇ処理が行われて（ステップＳ１２３）、転送データは、主演算装置１０が保持する配列データの１／４に戻る。次に、Ｘ次元のＨａｌｖｉｎｇ処理が行われると（ステップＳ１２４）、転送データは、主演算装置１０が保持する配列データの１／１６となる。次に、Ｘ次元のＤｏｕｂｌｉｎｇ処理が行われて（ステップＳ１２５）、転送データは、主演算装置１０が保持する配列データの１／４に戻る。次に、Ｙ次元のＨａｌｖｉｎｇ処理が行われると（ステップＳ１２６）、転送データは、主演算装置１０が保持する配列データの１／１６となる。次に、Ｙ次元のＤｏｕｂｌｉｎｇ処理が行われて（ステップＳ１２７）、転送データは、主演算装置１０が保持する配列データの１／４に戻る。次に、Ｚ次元のＨａｌｖｉｎｇ処理が行われると（ステップＳ１２８）、転送データは、主演算装置１０が保持する配列データの１／１６となる。次に、Ｚ次元のＤｏｕｂｌｉｎｇ処理が行われて（ステップＳ１２９）、転送データは、主演算装置１０が保持する配列データの１／４に戻る。その後、システムボード内ブロードキャストが行われると（ステップＳ１３０）、元の配列データのサイズに戻る。
【０１２８】
このように、本実施例に係る集約演算装置２０は、最小で元の配列データの１／１０２４のサイズのデータ転送とすることができる。これに対して、従来のＨａｌｖｉｎｇ＿Ｄｏｕｂｌｉｎｇの手法では、データ転送量は、最小で元の配列データの１／１６のサイズとなる。このように、本実施例に係る集約演算装置２０は、集約演算処理の全体として、データ転送量を大きく削減することができる。
【０１２９】
以上に説明したように、本実施例に係る情報処理システムは、主演算装置から分割された配列データを取得し、各次元についてのＨａｌｖｉｎｇ処理をまとめて行った後に、各次元についてのＤｏｕｂｌｉｎｇ処理をまとめて行い、演算結果をブロードキャストする。これにより、Ａｌｌｒｅｄｕｃｅ処理におけるデータ転送量を軽減することができ、通信時間を短縮することができる。また、分割された配列データが配られた集約演算装置全てが並行して動作するので、演算量を均等に分配して演算量の負荷分散を行うことができ、情報処理システム全体の処理速度を向上させることができる。
【０１３０】
（変形例）
図２８は、変形例に係る情報処理システムのシステム構成図である。実施例１では、Ｗ〜Ｚ次元のいずれもサイズが４であり、４つのシステムボード１でリングが構成される場合で説明した。しかし、各次元のサイズは、異なってもよい。そこで、本変形例では、各次元のサイズが異なる場合について説明する。
【０１３１】
本変形例に係る情報処理システム３は、システムボード１の主演算装置１０と集約演算装置２０の搭載数は実施例１と同様である。ただし、３次元トーラスメッシュ２に含まれるシステムボード１の数が、実施例１と異なる。
【０１３２】
情報処理システム３ではＨａｌｖｉｎｇ＿Ｄｏｕｂｌｉｎｇ処理が行われるため、Ｗ〜Ｚ次元のサイズは、２のべき乗であり、１、２、４のいずれかの値となる。すなわち、システムボード１は、各次元で、１、２又は４個のいずれかで環状となる。
【０１３３】
そこで、本実施例に係る情報処理システム３は、Ｗ次元のサイズが４であり、Ｘ次元のサイズが２であり、Ｙ次元のサイズが１であり、Ｚ次元のサイズが４である。
【０１３４】
この場合、Ｘ次元のトーラスは、特定のシステムボード１から延びるＸ次元の２つの方向のどちらの方向も同じシステムボード１を指す。すなわち、Ｘ次元の通信は、Ｗ次元及びＺ次元の通信に比べて帯域幅が２倍となる。
【０１３５】
また、Ｙ次元には１つのシステムボード１が配置されており、Ｈａｌｖｉｎｇ＿ＤｏｕｂｌｉｎｇはＹ次元については行わない。そのため、Ｙ次元の帯域幅をＸ次元又はＺ次元のいずれかに割り振ることも可能である。
【０１３６】
この場合も、集約演算装置２０は、実施例１と同様に、主演算装置１０から分割された配列データを取得し、各次元についてのＨａｌｖｉｎｇ処理をまとめて行った後に、各次元についてのＤｏｕｂｌｉｎｇ処理をまとめて行い、演算結果をブロードキャストする。これにより、集約演算装置２０は。Ａｌｌｒｅｄｕｃｅ処理を実行できる。
【０１３７】
以上に説明したように、本実施例に係る情報処理システムは、各次元のサイズが異なる場合にも実施例１と同様のＡｌｌｒｅｄｕｃｅ処理を実行することができる。そして、この場合にも、Ａｌｌｒｅｄｕｃｅ処理におけるデータ転送量を軽減することができ、通信時間を短縮することができる。また、演算量を均等に分配して演算量の負荷分散を行うことができ、情報処理システム全体の処理速度を向上させることができる。
【実施例２】
【０１３８】
次に、実施例２について説明する。本実施例に係る情報処理システムは、各次元における通信の帯域幅が異なる場合に、帯域幅の大きさに応じてＨａｌｖｉｎｇ処理及びＤｏｕｂｌｉｎｇ処理の実行順を決定することが実施例１と異なる。
【０１３９】
本実施例に係る集約演算装置２０も、図９のブロック図で表される。ここで、各次元についてのＨａｌｖｉｎｇ処理をまとめて行った後に、各次元についてのＤｏｕｂｌｉｎｇ処理をまとめて行う場合、Ｈａｌｖｉｎｇ処理とＤｏｕｂｌｉｎｇ処理の組が入れ子構造になる。そして、特定の次元についてＨａｌｖｉｎｇ処理とＤｏｕｂｌｉｎｇ処理の組を入れ子構造の配置位置を内側にするにしたがい、その次元におけるＨａｌｖｉｎｇ処理及びＤｏｕｂｌｉｎｇ処理での転送データのサイズが小さくなる。
【０１４０】
そして、実施例１の変形例で説明したように、Ｗ〜Ｚ次元のそれぞれで、通信の帯域幅が異なる場合が存在する。そこで、転送データのサイズが大きい状態で大きい帯域幅の次元でのＨａｌｖｉｎｇ処理及びＤｏｕｂｌｉｎｇ処理を行うことが好ましい。以下の説明では、実施例１における各部の機能と同じ機能については説明を省略する。
【０１４１】
順序決定部２９２は、結線表をネットワーク構成管理部２０８から取得する。次に、順序決定部２９２は、結線表から各次元のサイズを取得する。ここで、サイズが小さければ、帯域幅が大きくなる。そこで、順序決定部２９２は、サイズが小さい順に各次元をソートする。すなわち、順序決定部２９２は、Ｗ〜Ｚ次元を、帯域幅の降順にソートする。そして、順序決定部２９２は、ソート後の次元の順を、Ｈａｌｖｉｎｇ処理を実行する次元の順番として決定し、統括管理部２９１に通知する。
【０１４２】
統括管理部２９１は、Ｈａｌｖｉｎｇ処理を実行する次元の順番として、帯域幅の降順にソートされた次元の順番の通知を受ける。そして、統括管理部２９１は、帯域幅の降順にＨａｌｖｉｎｇ処理を実行し、その逆順でＤｏｕｂｌｉｎｇ処理を実行する。
【０１４３】
次に、図２９を参照して、本実施例に係る情報処理システム３によるＡｌｌｒｅｄｕｃｅ処理の流れについて説明する。図２９は、実施例２に係る情報処理システムによるＡｌｌｒｅｄｕｃｅ処理のフローチャートである。
【０１４４】
順序決定部２９２は、結線表をネットワーク構成管理部２０８から受信する。そして、順序決定部２９２は、情報処理システム３の次元であるＷ〜Ｚ次元を確認する。さらに、順序決定部２９２は、Ｗ〜Ｚ次元のそれぞれの帯域を取得する（ステップＳ２０１）。
【０１４５】
次に、順序決定部２９２は、Ｗ〜Ｚ次元を帯域の降順でソートする。そして、順序決定部２９２は、ソートした順に各次元をＤ０〜Ｄ３として決定する（ステップＳ２０２）。その後、順序決定部２９２は、Ｄ０〜Ｄ３の各次元への割り当て情報を統括管理部２９１に通知する。
【０１４６】
各主演算装置１０のデータ分割部１９１は、メモリ１０４に格納された配列データを４分割する。そして、データ送信部１９２は、４分割した配列データのそれぞれを、異なる集約演算装置２０へ送信することでシステムボード内Ｒｅｄｕｃｅ処理を実行する（ステップＳ２０３）。集約演算装置２０のデータ受信部２９４は、各主演算装置１０から送信された１／４配列データを受信する。そして、データ受信部２９４は、１／４配列データをメモリ２０４に格納する。
【０１４７】
統括管理部２９１は、帯域の降順にソートされたＷ〜Ｚ次元に対して割り当てられたＤ０〜Ｄ３の情報を順序決定部２９２から受信する。そして、統括管理部２９１は、ｉ＝０とする（ステップＳ２０４）。
【０１４８】
次に、統括管理部２９１は、メモリ２０４から１／４配列データを取得する。そして、統括管理部２９１は、Ｄｉ次元のＨａｌｖｉｎｇ処理を実行する（ステップＳ２０５）。
【０１４９】
次に、統括管理部２９１は、ｉ＝３か否かを判定する（ステップＳ２０６）。ｉ＝３でない場合（ステップＳ２０６：否定）、統括管理部２９１は、ｉを１つインクリメントし（ステップＳ２０７）、ステップＳ２０５へ戻る。
【０１５０】
これに対して、ｉ＝３の場合（ステップＳ２０６：肯定）、統括管理部２９１は、Ｄｉ次元のＤｏｕｂｌｉｎｇ処理を実行する（ステップＳ２０８）。
【０１５１】
次に、統括管理部２９１は、ｉ＝０か否かを判定する（ステップＳ２０９）。ｉ＝０でない場合（ステップＳ２０９：否定）、統括管理部２９１は、ｉを１つデクリメントし（ステップＳ２１０）、ステップＳ２０８へ戻る。
【０１５２】
これに対して、ｉ＝０の場合（ステップＳ２０９：肯定）、統括管理部２９１は、１／４配列データに対する集約演算結果を用いて、データシステムボード内ブロードキャストを実行する（ステップＳ２１１）。
【０１５３】
以上に説明したように、本実施例に係る集約演算装置は、帯域幅の大きい順に各次元のＨａｌｖｉｎｇ処理を実行し、その後、逆順でＤｏｕｂｌｉｎｇ処理を実行することで、Ａｌｌｒｅｄｕｃｅ処理を実行する。これにより、データ転送量が大きい段階でなるべく大きい帯域幅を用いた通信を行うことができ、通信時間をより短縮することができる。
【符号の説明】
【０１５４】
１  システムボード
２  ３次元トーラスメッシュ
３  情報処理システム
１０  主演算装置
２０  集約演算装置
１０３  メモリ制御部  
１０４  メモリ
１０７  ジョブ管理部
１０８  ネットワーク構成管理部
１０９  ネットワーク制御部
１９１  データ分割部
１９２  データ送信部
１９３  データ受信部
２０１  並列演算装置
２０３  メモリ制御部
２０４  メモリ
２０７  ジョブ管理部
２０８  ネットワーク構成管理部
２０９  ネットワーク制御部
２９１  統括管理部
２９２  順序決定部
２９３  データ送信部
２９４  データ受信部
【図１】
2020086837.tif 000003
【図２】
2020086837.tif 000004
【図３】
2020086837.tif 000005
【図４】
2020086837.tif 000006
【図５】
2020086837.tif 000007
【図６】
2020086837.tif 000008
【図７】
2020086837.tif 000009
【図８】
2020086837.tif 000010
【図９】
2020086837.tif 000011
【図１０】
2020086837.tif 000012
【図１１】
2020086837.tif 000013
【図１２】
2020086837.tif 000014
【図１３】
2020086837.tif 000015
【図１４】
2020086837.tif 000016
【図１５】
2020086837.tif 000017
【図１６】
2020086837.tif 000018
【図１７】
2020086837.tif 000019
【図１８】
2020086837.tif 000020
【図１９】
2020086837.tif 000021
【図２０】
2020086837.tif 000022
【図２１】
2020086837.tif 000023
【図２２】
2020086837.tif 000024
【図２３】
2020086837.tif 000025
【図２４】
2020086837.tif 000026
【図２５】
2020086837.tif 000027
【図２６】
2020086837.tif 000028
【図２７】
2020086837.tif 000029
【図２８】
2020086837.tif 000030
【図２９】
2020086837.tif 000031
【手続補正書】
【提出日】平成30年12月20日(2018.12.20)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図１５
【補正方法】変更
【補正の内容】
【図１５】
2020086837.tif 000032
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図２６
【補正方法】変更
【補正の内容】
【図２６】
2020086837.tif 000033
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図２７
【補正方法】変更
【補正の内容】
【図２７】
2020086837.tif 000034