(57)【要約】【課題】パケットの受信開始からリダクション演算を開始するまでの待ち時間を短縮すること。【解決手段】計算ノード装置は、第１データを記憶する記憶部と、第２データを含むパケットを受信する通信部と、前記パケットのエラーチェックを行い、チェック結果を出力するエラーチェック部と、前記エラーチェック部が出力したチェック結果を受信する前に、前記記憶部が記憶する第１データと前記パケットに含まれる第２データとを用いて演算を実行し、前記チェック結果が受信した前記パケットにエラーが無いことを示す場合、実行した前記演算の演算結果を出力する演算部と、を有する。【選択図】図４
2019046379.tif 000002
【特許請求の範囲】
【請求項１】
第１データを記憶する記憶部と、
第２データを含むパケットを受信する通信部と、
前記パケットのエラーチェックを行い、チェック結果を出力するエラーチェック部と、
前記エラーチェック部が出力したチェック結果を受信する前に、前記記憶部が記憶する第１データと前記パケットに含まれる第２データとを用いて演算を実行し、前記チェック結果が受信した前記パケットにエラーが無いことを示す場合、実行した前記演算の演算結果を出力する演算部と、
を有する計算ノード装置。
【請求項２】
前記演算部は、前記チェック結果が前記パケットにエラーがあることを示す場合、前記演算結果を破棄することを特徴とする請求項１記載の計算ノード装置。
【請求項３】
前記第１データが前記記憶部に記憶されておらず且つ前記チェック結果が前記パケットにエラーが無いことを示す場合、前記記憶部は前記第２データを記憶することを特徴とする請求項１または２記載の計算ノード装置。
【請求項４】
複数の計算ノード装置を有する並列計算機システムにおいて、
前記複数の計算ノード装置の各々は、
第１データを記憶する記憶部と、
他の計算ノード装置から第２データを含むパケットを受信する通信部と、
前記パケットのエラーチェックを行い、チェック結果を出力するエラーチェック部と、
前記エラーチェック部が出力したチェック結果を受信する前に、前記記憶部が記憶する第１データと前記パケットに含まれる第２データとを用いて演算を実行し、前記チェック結果が受信した前記パケットにエラーが無いことを示す場合、実行した前記演算の演算結果を出力する演算部と、
を有することを特徴とする並列計算機システム。
【請求項５】
第１データを記憶する記憶部と、通信部と、エラーチェック部と、演算部と、を有する計算ノード装置の制御方法において、
前記通信部が、第２データを含むパケットを受信し、
前記エラーチェック部が、前記パケットのエラーチェックを行い、チェック結果を出力し、
前記演算部が、前記エラーチェック部が出力したチェック結果を受信する前に、前記記憶部が記憶する第１データと前記パケットに含まれる第２データとを用いて演算を実行し、前記チェック結果が受信した前記パケットにエラーが無いことを示す場合、実行した前記演算の演算結果を出力する
計算ノード装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算ノード装置、並列計算機システム、および計算ノード装置の制御方法に関する。
【背景技術】
【０００２】
コンピュータシステムを用いて科学技術計算などの大規模な計算を行う場合、複数の計算機を用いた並列計算が行われる。並列計算が可能なコンピュータシステムは、並列計算機システムと呼ばれる。並列計算を行う複数の計算機の各々を計算ノード装置と呼ぶ。
【０００３】
並列計算を行っている複数の計算ノード装置間で、複数のプロセスが持つデータを対象とした演算であるリダクション演算が行われる。リダクション演算としては、例えば、データの総和を求める演算、最大値、最小値を求める演算等が知られている。
【０００４】
並列演算を実行する複数のノードにおいて、複数組の信号の同期をとる同期部を備えることにより、高速でバリア同期処理を実行するバリア同期装置が知られている（例えば、特許文献１参照）。
【０００５】
中間ノードにより、カットスルーデータパケットを転送することで、パケットにフレームＣＲＣを行う前に、カットスルーデータパケットのパケット送信を開始することを可能にする技術が知られている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−１２２８４８号公報
【特許文献２】特表２０１３−５１３２６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ある計算ノード装置においてリダクション演算を行う場合、当該計算ノード装置は、他の計算ノード装置からパケットを受信し、パケットに含まれるチェックサムを用いてパケットのエラーチェックを行い、エラーが無ければパケット内のデータを用いてリダクション演算を行う。
【０００８】
計算ノード装置は、パケットを末尾まで受信完了しなければ、エラーチェックを行うことは困難である。パケットのサイズが大きくなると、パケットの受信開始から受信完了までの時間が長くなり、エラーチェックの完了までの時間も長くなる。上記のように、リダクション演算は、エラーチェックの完了後に行われる。そのため、パケットのサイズが大きくなると、パケットの受信開始からリダクション演算を開始するまでの待ち時間が長くなる。
【０００９】
１つの側面において、本発明は、パケットの受信開始からリダクション演算を開始するまでの待ち時間を短縮することを目的とする。
【課題を解決するための手段】
【００１０】
実施の形態に係る計算ノード装置は、記憶部と、通信部と、エラーチェック部と、演算部と、を有する。
【００１１】
前記記憶部は、第１データを記憶する。
前記通信部は、第２データを含むパケットを受信する。
前記エラーチェック部は、前記パケットのエラーチェックを行い、チェック結果を出力する。
前記演算部は、前記エラーチェック部が出力したチェック結果を受信する前に、前記記憶部が記憶する第１データと前記パケットに含まれる第２データとを用いて演算を実行する。前記演算部は、前記チェック結果が受信した前記パケットにエラーが無いことを示す場合、実行した前記演算の演算結果を出力する。
【発明の効果】
【００１２】
実施の形態に係る計算ノード装置によれば、パケットの受信開始からリダクション演算を開始するまでの待ち時間を短縮することができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態に係る並列計算機システムの構成図である。
【図２】リダクション演算の例を示す図である。
【図３】パケットのフォーマットを示す図である。
【図４】実施の形態に係る計算ノード装置の構成図である。
【図５】実施の形態に係るネットワークインターフェース部の構成図である。
【図６】実施の形態に係る同期制御・リダクション演算部の構成図である。
【図７】実施の形態に係るネットワークインターフェース部の制御処理のフローチャートである。
【図８】実施の形態に係るリダクション演算器の処理を示す図である。
【図９】実施の形態に係るリダクション演算器の入出力のタイムチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら実施の形態について説明する。
図１は、実施の形態に係る並列計算機システムの構成図である。
【００１５】
並列計算機システム１０１は、計算ノード装置２０１−ｉ（ｉ＝１〜９）を有する。
計算ノード装置２０１−ｉは、並列計算を行うコンピュータである。尚、計算ノード装置２０１−ｉは、ノードｉと表記する場合がある。計算ノード装置２０１−ｉは、隣接する計算ノード装置２０１−ｉと伝送路を介して接続され、互いに通信可能である。計算ノード装置２０１−ｉは、それぞれ４つの計算ノード装置２０１−ｉと接続されている。
【００１６】
計算ノード装置２０１−１は、計算ノード装置２０１−２，２０１−３，２０１−４，２０１−７と接続されている。計算ノード装置２０１−２は、計算ノード装置２０１−１，２０１−３，２０１−５，２０１−８と接続されている。計算ノード装置２０１−３は、計算ノード装置２０１−１，２０１−２，２０１−６，２０１−９と接続されている。計算ノード装置２０１−４は、計算ノード装置２０１−１，２０１−５，２０１−６，２０１−７と接続されている。計算ノード装置２０１−５は、計算ノード装置２０１−２，２０１−４，２０１−６，２０１−８と接続されている。計算ノード装置２０１−６は、計算ノード装置２０１−３，２０１−４，２０１−５，２０１−９と接続されている。計算ノード装置２０１−７は、計算ノード装置２０１−１，２０１−４，２０１−８，２０１−９と接続されている。計算ノード装置２０１−８は、計算ノード装置２０１−２，２０１−５，２０１−７，２０１−９と接続されている。計算ノード装置２０１−９は、計算ノード装置２０１−３，２０１−６，２０１−７，２０１−８と接続されている。
【００１７】
計算ノード装置２０１−ｉは、接続されている計算ノード装置２０１−ｉからパケットを受信してリダクション演算を行う。
【００１８】
尚、実施の形態の計算ノード装置２０１−ｉの数および計算ノード装置２０１−ｉの接続形態（トポロジー）は一例であり、これに限られるものではない。
【００１９】
図２は、リダクション演算の例を示す図である。
図２では、ノード１〜４がそれぞれ有するベクトルＶ１〜Ｖ４を合計するＳＵＭの例を示す。
【００２０】
ベクトルＶ１〜Ｖ４は、それぞれ８個の要素を有する。Ｖ１＝（１，２，３，４，５，６，７）、Ｖ２＝（７，８，９，１０，１１，１２，１３，１４）、Ｖ３＝（１３，１４，１５，１６，１７，１８，１９，２０）、Ｖ４＝（１９，２０，２１，２２，２３，２４，２５，２６）である。
【００２１】
ベクトルＶ１〜Ｖ４を合計すると、ＳＵＭ＝（４０，４４，４８，５２，５６，６０，６４，６８）となる。図２に示すように、リダクション演算によりベクトルＶ１〜Ｖ４は、１つのベクトルに縮約している。
【００２２】
図３は、パケットのフォーマットを示す図である。
パケットは、ルーティングヘッダ、制御情報、データｋ（ｋ＝１〜８）、チェックサム、およびフラグ（Ｆ）を含む。パケットにおいて、先頭から順に、ルーティングヘッダ、制御情報、データｋ、チェックサム、およびフラグが位置する。
【００２３】
ルーティングヘッダは、パケットの宛先を示す宛先情報を含む。
制御情報は、リダクション演算に用いられるパケット、リードパケット、またはライトパケット等のパケットの種類を示す。
【００２４】
データｋは、ペイロードであり、例えば、リダクション演算に用いられるデータである。例えば、データ１〜８は、それぞれ図２の要素１〜８に相当する。
【００２５】
チェックサムは、誤り検出符号であり、パケットのエラーチェックに用いられる値である。チェックサムは、例えば、ＦＣＳ（Frame Check Sequence）である。
【００２６】
フラグは、パケットが無効であるかを示す情報であり、パケットのエラーチェックのチェック結果を示す。パケットのエラーが検出されると、フラグは「エラー有り」、すなわちパケットが無効であることを示す。パケットのエラーが検出されない場合、フラグは「エラー無し」、すなわちパケットは有効であることを示す。
尚、図３に示すパケットのフォーマットは一例であり、これに限られるものではない。
【００２７】
図４は、実施の形態に係る計算ノード装置の構成図である。
計算ノード装置２０１−１は、ルーター部２１１−ｊ（ｊ＝１〜４）、ネットワークインターフェース部２２１、ＣＰＵ（Central Processing Unit）２３１、およびメモリ２４１を有する。
【００２８】
ルーター部２１１−１〜２１１−４は、計算ノード装置２０１−１に隣接する計算ノード装置２０１−２，２０１−３，２０１−４，２０１−７とそれぞれ接続し、計算ノード装置２０１−２，２０１−３，２０１−４，２０１−７と通信する。ルーター部２１１−１〜２１１−４は、互いに接続し、通信可能である。ルーター部２１１−ｊは、例えば、ＬＳＩ等のハードウェア回路により実現可能である。
【００２９】
ルーター部２１１−１は、受信部２１２、パケットチェック部２１３、ルーティング部２１４、ルーティング情報生成部２１５、再送要求生成部２１６、再送バッファ２１７、および送信部２１８を有する。
【００３０】
受信部２１２は、計算ノード装置２０１−２からパケットを受信する。受信部２１２は、通信部の一例である。
【００３１】
パケットチェック部２１３は、受信したパケットに含まれるチェックサムを用いて、当該パケットのエラーチェックを行う。パケットチェック部２１３は、チェック結果をパケットのフラグに記述し、ルーティング部２１４を介して制御部２２２に出力する。このようにエラーチェックのチェック結果は、パケットの末尾のフラグとして送信される。チェック結果は、パケットにエラーが検出されたときは「エラー有り」、パケットにエラーが検出されないとき「エラー無し」となる。パケットチェック部２１３は、パケットを受信しながらパケットのエラーチェックを行うとともにパケットの受信済み部分をルーティング部２１４に出力する。尚、パケットチェック部２１３は、パケットに含まれるチェックサムをルーティング部２１４に出力しなくてもよい。また、パケットチェック部２１３は、パケットにエラーが検出されたとき、再送要求部２１６にチェック結果を出力する。
【００３２】
ルーティング部２１４は、パケットに含まれるルーティングヘッダに基づいて、カットスルー方式により、パケットを受信しながらパケット受信済みの部分を制御部２２２またはルーター部２１１−２〜２１１−４に出力する。
【００３３】
ルーティング情報生成部２１５は、制御部２２２またはルーター部２１１−２〜２１１−４から受信したパケットのルーティングヘッダを更新する。
【００３４】
再送要求生成部２１６は、チェック結果＝エラー有りを受信した場合、パケットの再送要求を当該パケットの送信元に送信する。
【００３５】
再送バッファ２１７は、送信済みのパケットを記憶し、計算ノード装置２０１−２０１−９から当該パケットの再送要求を受信した場合に、再送バッファ２１７内のパケットが再送される。
【００３６】
送信部２１８は、パケットを計算ノード装置２０１−２に出力する。
尚、ルーター部２１１−２〜２１１−４の構成は、ルーター部２１１−１と同様であるので説明は省略する。
【００３７】
ネットワークインターフェース部２２１は、制御部２２２、ノード要求部２２３、およびノード通知部２２４を有する。
【００３８】
制御部２２２は、受信したパケット内のデータを用いてリダクション演算を行う。制御部２２２は、受信したパケットをノード通知部２２４を介してＣＰＵ２３１に出力する。制御部２２２は、ノード要求部２２３から受信したＣＰＵ２３１からの要求をルーター部２１１−ｊに出力する。
【００３９】
ノード要求部２２３は、ＣＰＵ２３１からの要求を制御部２２２に出力する。
ノード通知部２２４は、受信したパケットをＣＰＵ２３１に出力する。
ＣＰＵ２３１は、各種演算処理を行う。
【００４０】
メモリ２４１は、計算ノード装置２０１−１で使用されるプログラムやデータ等を記憶する記憶部である。メモリ２４１は、例えば、ＲＡＭ（Random Access Memory）である。
【００４１】
尚、ルーター部２１１−ｊおよびネットワークインターフェース部２２１は、計算ノード装置２０１−１の外に設けても良い。
【００４２】
また、計算ノード装置２０１−２〜２０１−９の構成は、計算ノード装置２０１−１と同様であるため説明は省略する。
【００４３】
図５は、実施の形態に係るネットワークインターフェース部の構成図である。
ネットワークインターフェース部２２１は、制御部２２２、ノード要求部２２３、およびノード通知部２２４を有する。
【００４４】
制御部２２２は、判定部２５１、同期制御・リダクション演算部２５２、送信部２５３、および受信バッファ２５４を有する。
【００４５】
判定部２５１は、パケットを受信しながら、受信したパケットの制御情報に基づいて、パケットによる処理およびパケットの送信先を判定し、パケットの受信済みの部分を同期制御・リダクション演算部２５２または受信バッファ２５４に出力する。判定部２５１は、受信したパケットの制御情報がリダクション演算を示す場合、パケットの送信先は同期制御・リダクション演算部２５２であり、当該パケットを用いてリダクション演算を行うと判定する。
【００４６】
判定部２５１は、受信したパケットの制御情報がリダクション演算を示す、すなわち受信したパケットがリダクション演算の対象のデータを含む場合に、当該パケットのエラーチェックのチェック結果の受信前に、同期制御・リダクション演算部２５２へ当該パケットの出力を開始する。すなわち、判定部２５１は、パケット全体の受信を完了する前にパケットの受信済み部分を同期制御・リダクション演算部２５２へ出力する。
【００４７】
判定部２５１は、パケットの送信先をＣＰＵ２３１と判定した場合、パケットを受信バッファ２５４に出力および記憶する。
【００４８】
同期制御・リダクション演算部２５２は、バリア同期の制御およびリダクション演算を行う。同期制御・リダクション演算部２５２は、演算結果を送信部２５３またはノード通知部２２４に出力する。同期制御・リダクション演算部２５２は、パケットのエラーチェックのチェック結果の受信前に、当該パケットを用いたリダクション演算を開始する。また、実施の形態において、ＣＰＵ２３１は、同期制御・リダクション演算部２５２で行われるリダクション演算以外の演算を行う。
【００４９】
送信部２５３は、ノード要求部２２３から受信した要求および同期制御・リダクション演算部２５２から受信した演算結果をルーター部２１１−ｊに出力する。
【００５０】
受信バッファ２５４は、判定部２５１から受信したパケットを記憶する。
ノード要求部２２３は、ＣＰＵ２３１からの要求を送信部２５３に出力する。
【００５１】
ノード通知部２２４は、パケットチェック部２１３によるパケットのチェック結果がエラー無しの場合に、受信バッファ２５４に記憶されたパケットをＣＰＵ２３１に出力する。また、ノード通知部２２４は、同期制御・リダクション演算部２５２から受信した演算結果をＣＰＵ２３１に出力する。
【００５２】
図６は、実施の形態に係る同期制御・リダクション演算部の構成図である。
同期制御・リダクション演算部２５２は、同期グループ解析部２６１、待避バッファ２６２、リダクション演算器２６３、先着データバッファ２６４、およびレジスタ２６５を有する。
【００５３】
同期グループ解析部２６１は、バリア同期のグループやリダクション対の検索を行う。
待避バッファ２６２は、先着データが無い場合に受信したパケットを記憶する記憶部である。
【００５４】
リダクション演算器２６３は、先着データバッファ２６４に記憶されたパケットと受信したパケットを用いてリダクション演算を行い、演算結果を出力する。
【００５５】
先着データバッファ２６４は、パケットのチェック結果がエラー無しの場合に、当該パケットを記憶する記憶部である。
【００５６】
レジスタ２６５は、バリア同期のグループやリダクション対を示す情報、およびリダクション演算において用いられる先着データの有無を示す情報などを記憶する。
【００５７】
図７は、実施の形態に係るネットワークインターフェース部の制御処理のフローチャートである。
【００５８】
ここで、受信部２１２は、計算ノード装置２０１−２からパケットを受信し、パケットチェック部２１３がパケットのエラーチェックを行いながら、ルーティング２１４がパケットを制御部２２２に出力するとする。また、実施の形態では、２つのプロセスそれぞれのパケットを用いてリダクション演算を行う場合を説明する。また、２つのプロセスのバリア同期・リダクション演算を繰り返すことで、２より大きい数のプロセスの同期を達成することが出来る。尚、上述のようにパケットチェック部２１３は、パケットのエラーチェックの結果をパケットの末尾のフラグに記述する。尚、実施の形態は、リダクション演算を対象とするため、バリア同期の説明は省略する。
【００５９】
ステップＳ１１において、判定部２５１は、ルーティング部２１４からパケットを受信する。
【００６０】
ステップＳ１２において、判定部２５１は、パケットの制御情報に基づいて、パケットに対する処理と送信先を判定する。受信したパケットの制御情報がバリア同期とリダクション演算を示す場合に、判定部２５１は、受信したパケットを用いてバリア同期とリダクション演算を行うと判定し、送信先は同期制御・リダクション演算であると判定する。受信したパケットを用いてバリア同期とリダクション演算を行うと判定された場合、判定部２５１は、パケットのエラーチェックのチェック結果の受信前に、同期制御・リダクション演算部２５２へ当該パケットの出力を開始する。尚、受信したパケットを用いてバリア同期とリダクション演算を行うと判定された場合、受信したパケットは、計算ノード装置２０１−２〜２０１−９のいずれかが有するリダクション対象のデータを含む。受信したパケットを用いてバリア同期とリダクション演算を行うと判定されない場合、判定部２５１は、パケットのエラーチェックのチェック結果の受信前に、受信バッファ２５４へ当該パケットを出力および記憶する。受信したパケットを用いてバリア同期とリダクション演算を行うと判定された場合、制御はステップＳ１３に進み、受信したパケットを用いてバリア同期とリダクション演算を行うと判定されない場合、制御はステップＳ２３に進む。
【００６１】
ステップＳ１３において、同期グループ解析部２６１は、判定部２５１からパケットを受信し、受信したパケットの制御情報とレジスタ２６５内の情報に基づいて、受信したパケットが対象となるバリア同期のグループとリダクション対を検索する。リダクション対は、リダクション演算において、受信したパケットともに使用される先着データである。
【００６２】
ステップＳ１４において、同期グループ解析部２６１は、リダクション演算において、受信したパケットともに使用される先着データ（すなわち、リダクション対）が先着データバッファ２６４にあるか判定する。先着データの有無を示す情報は、レジスタ２６５に記憶されている。先着データがある場合、制御はステップＳ１５に進み、先着データがない場合、制御はステップＳ１９に進む。
【００６３】
ステップＳ１５において、同期グループ解析部２６１は、受信したパケットをリダクション演算器２６３に出力する。リダクション演算器２６３は、先着データバッファ２６４から先着データを読み出し、受信したパケットと先着データを用いてリダクション演算を行う。
【００６４】
ステップＳ１６において、同期グループ解析部２６１は、パケットのエラーチェックのチェック結果を受信し、チェック結果を参照し、チェック結果がエラー無しを示す場合、制御はステップＳ１７に進み、チェック結果がエラー有りを示す場合、制御はステップＳ１８に進む。
【００６５】
ステップＳ１７において、同期グループ解析部２６１は、チェック結果をリダクション演算器２６３に出力し、リダクション演算器２６３は、チェック結果がエラー無しを示すので、リダクション演算の演算結果を送信部２５３またはノード通知部２２４へ出力する。
【００６６】
ステップＳ１８において、同期グループ解析部２６１は、同期グループ解析部２６１は、リダクション演算器２６３へ演算結果の破棄を指示する。リダクション演算器２６３は、指示を受信すると演算結果を破棄する。すなわち、リダクション演算器２６３は、演算結果を出力しない。
【００６７】
ステップＳ１９において、同期グループ解析部２６１は、受信したパケットに含まれるデータｋを待避バッファ２６２に記憶し、エラーチェックのチェック結果、すなわちパケットの末尾のフラグの受信を待つ。
【００６８】
ステップＳ２０において、同期グループ解析部２６１は、パケットのエラーチェックのチェック結果を受信し、チェック結果を参照し、チェック結果がエラー無しを示す場合、制御はステップＳ２１に進み、チェック結果がエラー有りを示す場合、制御はステップＳ２２に進む。
【００６９】
ステップＳ２１において、同期グループ解析部２６１は、受信したパケットに対応するレジスタ２６５内の先着データの有無を示す情報（フラグ）に先着データがあることを記述する。同期グループ解析部２６１は、待避バッファ２６２に記憶されたパケットに含まれるデータｋを先着データバッファ２６４に記憶する。先着データバッファ２６４に記憶されたデータｋは、先着データとして利用される。
【００７０】
ステップＳ２２において、同期グループ解析部２６１は、待避バッファ２６２に記憶されたパケットを破棄する。
【００７１】
ステップＳ２３において、判定部２５１は、受信したパケットを受信バッファ２５４に記憶する。
【００７２】
ステップＳ２４において、ノード通知部２２４は、パケットチェック部２１３によるチェック結果がエラー無しの場合、受信バッファ２５４からパケットを読み出して、ＣＰＵ２３１に出力する。判定部２５１は、パケットチェック部２１３によるチェック結果がエラー有りの場合、受信バッファ２５４のパケットを破棄する。
【００７３】
図８は、実施の形態に係るリダクション演算器の処理を示す図である。
リダクション演算器２６３は、ＦＩＦＯ（First-In First-Out）２６６、２６７、２６９および演算器２６８を有する。
【００７４】
ＦＩＦＯ２６６は、先着データバッファ２６４から入力される先着データを記憶し、演算器２６８に出力する。ＦＩＦＯ２６６へ入力される先着データのスループットは、２ｎ ｂｉｔ／ｃｙｃｌｅである。ＦＩＦＯ２６６の出力データのスループットはｎ  ｂｉｔ／ｃｙｃｌｅである。
【００７５】
ＦＩＦＯ２６７は、同期グループ解析部２６１から入力される受信したパケットを記憶し、演算器２６８に出力する。ＦＩＦＯ２６７へ入力されるパケットのスループットは、２ｎ ｂｉｔ／ｃｙｃｌｅである。ＦＩＦＯ２６７の出力データのスループットはｎ  ｂｉｔ／ｃｙｃｌｅである。
【００７６】
演算器２６８は、先着データと受信したパケットを用いて演算を行い、演算結果をＦＩＦＯ２６９に出力する。演算器２６８の演算処理のスループットは、ｎ  ｂｉｔ／ｃｙｃｌｅである。
【００７７】
ＦＩＦＯ２６９は、演算器２６８から入力される演算結果を記憶し、出力データとして演算結果を出力する。演算器２６８とＦＩＦＯ２６９との間のスループットは、ｎ  ｂｉｔ／ｃｙｃｌｅである。ＦＩＦＯ２６９の出力データのスループットは、２ｎ  ｂｉｔ／ｃｙｃｌｅである。
【００７８】
多くの場合、短いパケット長のパケットを用いるリダクション演算は使用頻度が少なく、スループットも要求されない。そのため、演算器２６８に計算資源を潤沢に割り当てることは行われない。そのため、図８では、演算器２６８は、リダクション演算器２６３へのパケットのスループットの半分の演算処理能力となっている。
【００７９】
図９は、実施の形態に係るリダクション演算器の入出力のタイムチャートである。
図９は、図８に示すリダクション演算器２６３を用いて、図２に示すフォーマットのパケットを処理した場合のチャイムチャートである。ここでパケットに含まれるデータｋのそれぞれのサイズはｎ  ｂｉｔであるとする。また、先着データは、データｋ’を含み、データｋ’のそれぞれのサイズはｎ  ｂｉｔであるとする。
【００８０】
図９のタイムチャートは、上から順に、サイクルの番号、リダクション演算器２６３に入力される受信パケット、リダクション演算器２６３に入力される先着データ、演算器２６８の出力、リダクション演算器２６３の出力データを示す。
【００８１】
サイクル０において、受信パケットのルーティングヘッダがＦＩＦＯ２６６に入力される。
サイクル１において、受信パケットの制御情報がリダクション演算器２６３に入力される。
サイクル２において、受信パケットのデータ１，２がリダクション演算器２６３に入力される。また、先着データのデータ１’，２’がリダクション演算器２６３に入力される。
【００８２】
サイクル３において、受信パケットのデータ３，４がリダクション演算器２６３に入力される。また、先着データのデータ３’，４’がリダクション演算器２６３に入力される。演算器２６８は、データ１とデータ１’の演算結果であるデータ１’’を出力する。
【００８３】
サイクル４において、受信パケットのデータ５，６がリダクション演算器２６３に入力される。また、先着データのデータ５’，６’がリダクション演算器２６３に入力される。演算器２６８は、データ２とデータ２’の演算結果であるデータ２’’を出力する。
【００８４】
サイクル５において、受信パケットのデータ７，８がリダクション演算器２６３に入力される。また、先着データのデータ７’，８’がリダクション演算器２６３に入力される。演算器２６８は、データ３とデータ３’の演算結果であるデータ３’’を出力する。
【００８５】
サイクル６において、受信パケットのエラーチェックのチェック結果を示すフラグ（Ｆ）がリダクション演算器２６３に入力される。演算器２６８は、データ４とデータ４’の演算結果であるデータ４’’を出力する。上記のように、サイクル６において、受信パケットのエラーチェックのチェック結果を示すフラグがリダクション演算器２６３に到着している。サイクル６の時点で、リダクション演算の演算結果はリダクション演算器２６３から出力されてないので、チェック結果がエラー有りを示す場合は、リダクション演算器２６３から演算結果を出力することなく、演算結果を破棄することが可能である。以下、チェック結果がエラー無しを示すとする。
【００８６】
サイクル７において、演算器２６８は、データ５とデータ５’の演算結果であるデータ５’’を出力する。リダクション演算器２６３は、制御情報を出力する。
【００８７】
サイクル８において、演算器２６８は、データ６とデータ６’の演算結果であるデータ６’’を出力する。リダクション演算器２６３は、データ１’’、２’’を出力する。
【００８８】
サイクル９において、演算器２６８は、データ７とデータ７’の演算結果であるデータ７’’を出力する。リダクション演算器２６３は、データ３’’、４’’を出力する。
【００８９】
サイクル１０において、演算器２６８は、データ８とデータ８’の演算結果であるデータ８’’を出力する。リダクション演算器２６３は、データ５’’、６’’を出力する。
【００９０】
サイクル１１において、リダクション演算器２６３は、データ７’’、８’’を出力する。
【００９１】
実施の形態の計算ノード装置によれば、受信したパケットのエラーチェックの結果を受信する前に当該パケットを用いたリダクション演算を開始するので、パケットの受信からリダクション演算開始までの待ち時間を短縮できる。
【００９２】
以上の実施の形態に関し、さらに以下の付記を開示する。
（付記１）
第１データを記憶する記憶部と、
第２データを含むパケットを受信する通信部と、
前記パケットのエラーチェックを行い、チェック結果を出力するエラーチェック部と、
前記エラーチェック部が出力した前記チェック結果を受信する前に、前記記憶部が記憶する前記第１データと前記パケットに含まれる前記第２データとを用いてリダクション演算を行い、前記エラーチェック部が出力した前記チェック結果が前記パケットにエラーが無いことを示す場合、前記リダクション演算の演算結果を出力する演算部と、
を備える計算ノード装置。
（付記２）
前記演算部は、前記チェック結果が前記パケットにエラーがあることを示す場合、前記演算結果を破棄することを特徴とする付記１記載の計算ノード装置。
（付記３）
前記第１データが前記記憶部に記憶されておらず且つ前記チェック結果が前記パケットにエラーが無いことを示す場合、前記記憶部は前記第２データを記憶することを特徴とする付記１または２記載の計算ノード装置。
（付記４）
複数の計算ノード装置を有する並列計算機システムにおいて、
前記複数の計算ノード装置の各々は、
第１データを記憶する記憶部と、
他の計算ノード装置から第２データを含むパケットを受信する通信部と、
前記パケットのエラーチェックを行い、チェック結果を出力するエラーチェック部と、
前記エラーチェック部が出力したチェック結果を受信する前に、前記記憶部が記憶する第１データと前記パケットに含まれる第２データとを用いて演算を実行し、前記チェック結果が受信した前記パケットにエラーが無いことを示す場合、実行した前記演算の演算結果を出力する演算部と、
を有することを特徴とする並列計算機システム。
（付記５）
前記演算部は、前記チェック結果が前記パケットにエラーがあることを示す場合、前記演算結果を破棄することを特徴とする付記４記載の並列計算機システム。
（付記６）
前記第１データが前記記憶部に記憶されておらず且つ前記チェック結果が前記パケットにエラーが無いことを示す場合、前記記憶部は前記第２データを記憶することを特徴とする付記４または５記載の並列計算機システム。
（付記７）
第１データを記憶する記憶部と、通信部と、エラーチェック部と、演算部と、を有する計算ノード装置の制御方法において、
前記通信部が、第２データを含むパケットを受信し、
前記エラーチェック部が、前記パケットのエラーチェックを行い、チェック結果を出力し、
前記演算部が、前記エラーチェック部が出力したチェック結果を受信する前に、前記記憶部が記憶する第１データと前記パケットに含まれる第２データとを用いて演算を実行し、前記チェック結果が受信した前記パケットにエラーが無いことを示す場合、実行した前記演算の演算結果を出力する
計算ノード装置の制御方法。
（付記８）
前記演算部は、前記チェック結果が前記パケットにエラーがあることを示す場合、前記演算結果を破棄することを特徴とする付記７記載の制御方法。
（付記９）
前記第１データが前記記憶部に記憶されておらず且つ前記チェック結果が前記パケットにエラーが無いことを示す場合、前記記憶部は前記第２データを記憶することを特徴とする付記７または８記載の制御方法。
【符号の説明】
【００９３】
１０１    並列計算機システム
２０１    計算ノード装置
２１１    ルーター部
２１２    受信部
２１３    パケットチェック部
２１４    ルーティング部
２１５    ルーティング情報生成部
２１６    再送要求生成部
２１７    再送バッファ
２１８    送信部
２２１    ネットワークインターフェース部
２２２    制御部
２２３    ノード要求部
２２４    ノード通知部
２３１    ＣＰＵ
２４１    メモリ
２５１    判定部
２５２    同期制御・リダクション演算部
２５３    送信部
２５４    受信バッファ
２６１    同期グループ解析部
２６２    待避バッファ
２６３    リダクション演算器
２６４    先着データバッファ
２６５    レジスタ
２６６，２６７，２６９    ＦＩＦＯ
２６８    演算器
【図１】
2019046379.tif 000003
【図２】
2019046379.tif 000004
【図３】
2019046379.tif 000005
【図４】
2019046379.tif 000006
【図５】
2019046379.tif 000007
【図６】
2019046379.tif 000008
【図７】
2019046379.tif 000009
【図８】
2019046379.tif 000010
【図９】
2019046379.tif 000011
【手続補正書】
【提出日】平成30年9月10日(2018.9.10)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００５８
【補正方法】変更
【補正の内容】
【００５８】
ここで、受信部２１２は、計算ノード装置２０１−２からパケットを受信し、パケットチェック部２１３がパケットのエラーチェックを行いながら、ルーティング部２１４がパケットを制御部２２２に出力するとする。また、実施の形態では、２つのプロセスそれぞれのパケットを用いてリダクション演算を行う場合を説明する。また、２つのプロセスのバリア同期・リダクション演算を繰り返すことで、２より大きい数のプロセスの同期を達成することが出来る。尚、上述のようにパケットチェック部２１３は、パケットのエラーチェックの結果をパケットの末尾のフラグに記述する。尚、実施の形態は、リダクション演算を対象とするため、バリア同期の説明は省略する。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００６０
【補正方法】変更
【補正の内容】
【００６０】
ステップＳ１２において、判定部２５１は、パケットの制御情報に基づいて、パケットに対する処理と送信先を判定する。受信したパケットの制御情報がバリア同期とリダクション演算を示す場合に、判定部２５１は、受信したパケットを用いてバリア同期とリダクション演算を行うと判定し、送信先は同期制御・リダクション演算部２５２であると判定する。受信したパケットを用いてバリア同期とリダクション演算を行うと判定された場合、判定部２５１は、パケットのエラーチェックのチェック結果の受信前に、同期制御・リダクション演算部２５２へ当該パケットの出力を開始する。尚、受信したパケットを用いてバリア同期とリダクション演算を行うと判定された場合、受信したパケットは、計算ノード装置２０１−２〜２０１−９のいずれかが有するリダクション対象のデータを含む。受信したパケットを用いてバリア同期とリダクション演算を行うと判定されない場合、判定部２５１は、パケットのエラーチェックのチェック結果の受信前に、受信バッファ２５４へ当該パケットを出力および記憶する。受信したパケットを用いてバリア同期とリダクション演算を行うと判定された場合、制御はステップＳ１３に進み、受信したパケットを用いてバリア同期とリダクション演算を行うと判定されない場合、制御はステップＳ２３に進む。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００６６
【補正方法】変更
【補正の内容】
【００６６】
ステップＳ１８において、同期グループ解析部２６１は、リダクション演算器２６３へ演算結果の破棄を指示する。リダクション演算器２６３は、指示を受信すると演算結果を破棄する。すなわち、リダクション演算器２６３は、演算結果を出力しない。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００７９
【補正方法】変更
【補正の内容】
【００７９】
図９は、実施の形態に係るリダクション演算器の入出力のタイムチャートである。
図９は、図８に示すリダクション演算器２６３を用いて、図２に示すフォーマットのパケットを処理した場合のタイムチャートである。ここでパケットに含まれるデータｋのそれぞれのサイズはｎ  ｂｉｔであるとする。また、先着データは、データｋ’を含み、データｋ’のそれぞれのサイズはｎ  ｂｉｔであるとする。