JP5540694B2 - 並列計算機、計算機、通信方法およびプログラム - Google Patents

並列計算機、計算機、通信方法およびプログラム Download PDF

Info

Publication number
JP5540694B2
JP5540694B2 JP2009290787A JP2009290787A JP5540694B2 JP 5540694 B2 JP5540694 B2 JP 5540694B2 JP 2009290787 A JP2009290787 A JP 2009290787A JP 2009290787 A JP2009290787 A JP 2009290787A JP 5540694 B2 JP5540694 B2 JP 5540694B2
Authority
JP
Japan
Prior art keywords
group
computer
multicast packet
data
packet
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.)
Active
Application number
JP2009290787A
Other languages
English (en)
Other versions
JP2011133972A (ja
Inventor
善之 大野
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2009290787A priority Critical patent/JP5540694B2/ja
Publication of JP2011133972A publication Critical patent/JP2011133972A/ja
Application granted granted Critical
Publication of JP5540694B2 publication Critical patent/JP5540694B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Description

本発明は、並列計算機、計算機、通信方法およびプログラムに関する。
一般に、大規模な問題を高速に計算するために、複数の計算機が相互結合網で接続された並列計算機システム(「並列計算機」とも称される)が用いられる。
この並列計算機システムでは、計算対象の問題に付随するデータは、計算機と同数の部分データに分割され、各部分データは、計算機のいずれかに保持される。なお、各計算機は、1つの部分データのみを保持する。各計算機は、部分データを用いて計算を行う際に、各計算機間で演算に必要なデータおよび演算結果のデータを相互に通信する必要がある。
計算機間の通信をプログラムする一般的な方式として、MPI(Message Passing Interface)が知られている。MPIでは、一対の計算機間での通信である一対一通信のほかに、複数の計算機間での通信である集合通信を設定することができる。
集合通信としては、例えば、マルチキャスト通信(Multicast)および全対全通信(All to All)がある。
マルチキャスト通信では、1つの計算機が、あるグループに属する複数の計算機に対して、同一のデータを送信する(特許文献1参照)。
全対全通信では、全計算機が、全計算機に対して、互いに異なるデータを送信する。
全対全通信において、全計算機が全計算機に対して個別に順番にデータを送信する場合、各計算機は、全計算機の数(以下「N」とする)だけ、データ送信を行う必要がある。よって、N×N回のデータ送信が必要となる。このため、送信準備のためのオーバーヘッドが大きくなり、通信時間が長くなってしまう。
全対全通信は、大規模な並列計算において頻繁に使用される。このため、全対全通信にかかる時間を削減することが、並列計算および並列計算機システムの性能の向上につながる。
非特許文献1には、全対全通信におけるデータ送信回数を少なくできる技術、具体的には、全対全通信において1つの計算機が行う通信回数をlog(N)回にすることができる技術が開示されている。
以下に、非特許文献1に開示された全対全通信方法の概要を記す。
非特許文献1に開示された全対全通信方法では、全計算機数がN個の場合、各計算機が他のlog(N)個の計算機のそれぞれに対して一対一通信でデータを送信することで、全対全通信が実現される。
図15は、非特許文献1で開示された全対全通信方法のアルゴリズムを説明するための疑似プログラムを示した図である。
図16は、P0〜P7の8個の計算機が非特許文献1で開示された全対全通信を行う場合の動作を説明するための図である。なお、図16において、「P」に添えてある数値「0」〜「7」は、計算機番号を表す。
図16に示した例では、各計算機は、8個のデータを自計算機内のメモリ内に保持する。例えば、P0は、初期状態ではデータ00〜07をP0内のメモリ内に保持する(図16(a)参照)。
全対全通信が行われる場合、まず、各計算機は、送信すべきデータのメモリ内での配置を変更する(図16(a)および図16(b)参照)。
その後、各計算機は、3回(3= log8)のデータ送信を行う。
1回目のデータ送信では、P0からP1、P1からP2、…、P6からP7、P7からP0というように、各計算機は、計算機番号が自計算機の計算機番号よりも1だけ大きい計算機に対してデータを送信する。このとき、各計算機は、自計算機内のメモリ内のデータのうち半分のデータを他の計算機に対して送信する(図16(b)および図16(c)参照)。なお、図16では、網掛けされているデータが、送信されるデータを表している。
2回目のデータ送信では、各計算機は、計算機番号が自計算機の計算機番号よりも2だけ大きい計算機に対してデータを送信する(図16(c)および図16(d)参照)。
3回目のデータ送信では、各計算機は、計算機番号が自計算機の計算機番号よりも4だけ大きい計算機に対してデータを送信する(図16(d)および図16(e)参照)。
計3回のデータ送信が終了後、各計算機は、自計算機内のメモリ内のデータを指定されたメモリアドレスに書き戻すことで全対全通信が実現される。
特開2000−99487号公報
"Efficient algorithms for all-to-all communications in multiport message passing systems", Proceedings of the sixth annual ACM symposium on Parallel algorithms and architectures, 1994.
全対全通信を行うために、全計算機が全計算機に対して個別に順番にデータを送信すると、データ送信の効率が悪くなる。例えば、計算機の数をN個とした場合、1つの計算機は、他のN−1個の計算機に対してデータを送信する必要がある。
一方、非特許文献1に開示された全対全通信方法では、1つの計算機が行うデータの送信回数はlog(N)回となるため、データ送信回数は少なくなる。
しかしながら、非特許文献1に開示された全対全通信方法では、1つの計算機が送信するデータ量が多くなるという問題がある。以下、この問題を説明する。
例えば、全対全通信において1つの計算機が1つの計算機に対して送信すべきデータのサイズがDバイトであるとすると、1つの計算機が他の計算機に送信すべきデータのサイズ(データ量)は、(N−1)×Dバイトとなる。
しかし、非特許文献1に開示された全対全通信方法では、1つの計算機が他の計算機に送信する送信データの量は、N×log(N)×D/2となる。これは、本来送信すべきデータ量の約log(N)/2倍となる。
このように、全対全通信を行うために、全計算機が全計算機に対して個別に順番にデータを送信すると、1つの計算機が行うデータ送信の回数が多くなり、非特許文献1に記載の方法では、1つの計算機が送信するデータの量が多くなる。よって、全対全通信にかかる時間が長くなるという課題があった。
本発明の目的は、上述の課題を解決可能な並列計算機、計算機、通信方法およびプログラムを提供することにある。
本発明の並列計算機は、複数の計算機と、前記複数の計算機を相互に接続する相互結合網と、を含み、前記複数の計算機が前記相互結合網を介して全対全通信を行う並列計算機であって、
前記複数の計算機は、前記計算機の数よりも小さい数のグループにグルーピングされており、
前記相互結合網は、マルチキャストパケットを受信すると、当該マルチキャストパケットを、当該マルチキャストパケットにて指定された送信先に送信し、
前記計算機は、
全対全通信時に前記グループ単位で当該グループに属する計算機に送信される特定データと、自計算機宛のデータがマルチキャストパケットに搭載された箇所を示す情報と、を記憶する記憶手段と、
全対全通信時に、前記グループ単位で当該グループに属する計算機に送信される特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが搭載され当該グループが送信先として指定されたマルチキャストパケットを生成し、当該マルチキャストパケットを前記相互結合網に送信する送信手段と、
前記相互結合網からマルチキャストパケットを受信すると、前記情報を参照して、当該マルチキャストパケットから自計算機宛のデータを抽出する抽出手段と、を含む。
本発明の計算機は、マルチキャストパケットを受信すると当該マルチキャストパケットを当該マルチキャストパケットにて指定された送信先に送信する相互結合網を介して全対全通信を行う複数の計算機の1つとして使用され、前記複数の計算機が前記計算機の数よりも小さい数のグループにグルーピングされている、計算機であって、
全対全通信時に前記グループ単位で当該グループに属する計算機に送信される特定データと、自計算機宛のデータがマルチキャストパケットに搭載された箇所を示す情報と、を記憶する記憶手段と、
全対全通信時に、前記グループ単位で当該グループに属する計算機に送信される特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが搭載され当該グループが送信先として指定されたマルチキャストパケットを生成し、当該マルチキャストパケットを前記相互結合網に送信する送信手段と、
前記相互結合網からマルチキャストパケットを受信すると、前記情報を参照して、当該マルチキャストパケットから自計算機宛のデータを抽出する抽出手段と、を含む。
本発明の通信方法は、複数の計算機と、前記複数の計算機を相互に接続する相互結合網と、を含み、前記複数の計算機が前記相互結合網を介して全対全通信を行い、前記複数の計算機が前記計算機の数よりも小さい数のグループにグルーピングされた並列計算機での通信方法であって、
前記計算機が、全対全通信時に前記グループ単位で当該グループに属する計算機に送信される特定データと、自計算機宛のデータがマルチキャストパケットに搭載された箇所を示す情報と、を記憶手段に記憶する記憶ステップと、
前記計算機が、全対全通信時に、前記グループ単位で当該グループに属する計算機に送信される特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが搭載され当該グループが送信先として指定されたマルチキャストパケットを生成し、当該マルチキャストパケットを前記相互結合網に送信する送信ステップと、
前記相互結合網が、マルチキャストパケットを受信すると、当該マルチキャストパケットを、当該マルチキャストパケットにて指定された送信先に送信する転送ステップと、
前記計算機が、前記相互結合網からマルチキャストパケットを受信すると、前記情報を参照して、当該マルチキャストパケットから自計算機宛のデータを抽出する抽出ステップと、を含む。
本発明の通信方法は、マルチキャストパケットを受信すると当該マルチキャストパケットを当該マルチキャストパケットにて指定された送信先に送信する相互結合網を介して全対全通信を行う複数の計算機の1つとして使用され、前記複数の計算機が前記計算機の数よりも小さい数のグループにグルーピングされている、計算機での通信方法であって、
全対全通信時に前記グループ単位で当該グループに属する計算機に送信される特定データと、自計算機宛のデータがマルチキャストパケットに搭載された箇所を示す情報と、を記憶手段に記憶する記憶ステップと、
全対全通信時に、前記グループ単位で当該グループに属する計算機に送信される特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが搭載され当該グループが送信先として指定されたマルチキャストパケットを生成し、当該マルチキャストパケットを前記相互結合網に送信する送信ステップと、
前記相互結合網からマルチキャストパケットを受信すると、前記情報を参照して、当該マルチキャストパケットから自計算機宛のデータを抽出する抽出ステップと、を含む。
本発明のプログラムは、マルチキャストパケットを受信すると当該マルチキャストパケットを当該マルチキャストパケットにて指定された送信先に送信する相互結合網を介して全対全通信を行う複数の計算機の1つとして使用され、前記複数の計算機が前記計算機の数よりも小さい数のグループにグルーピングされている、コンピュータに、
全対全通信時に前記グループ単位で当該グループに属する計算機に送信される特定データと、自計算機宛のデータがマルチキャストパケットに搭載された箇所を示す情報と、を記憶手段に記憶する記憶手順と、
全対全通信時に、前記グループ単位で当該グループに属する計算機に送信される特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが搭載され当該グループが送信先として指定されたマルチキャストパケットを生成し、当該マルチキャストパケットを前記相互結合網に送信する送信手順と、
前記相互結合網からマルチキャストパケットを受信すると、前記情報を参照して、当該マルチキャストパケットから自計算機宛のデータを抽出する抽出手順と、を実行させる。
本発明によれば、並列計算機において、1計算機あたりのデータ送信回数が少なく、また、1計算機あたり送信データ量も増えない全対全通信を行うことが可能になる。
本発明の実施形態に従った並列計算機システムの構成を示す図である。 計算ノードのグループ分けの一例を示す図である。 ユニキャストパケットのデータ構造の一例と、マルチキャストパケットのデータ構造の一例と、スキャッタパケットのデータ構造の一例とを示す図である。 図1に示した計算ノードの構成を示す図である。 図4に示した通信制御情報保持部で保持される情報を示す図である。 図4に示した送信部および受信部の構成を示す図である。 動作例における並列計算機システムでの全対全通信パターンを示す図である。 動作例における並列計算機システムでの全対全通信前後の、各計算ノードのメモリの様子を示す図である。 動作例における並列計算機システムでの全対全通信の開始時の、計算ノード21−1の通信制御情報保持部で保持される情報を示す図である。 動作例における並列計算機システムの計算ノード21−3で通信コマンド生成処理にて生成した通信コマンド情報を示す図である。 動作例における並列計算機システムでの通信制御情報更新処理完了時の、計算ノード21−1の通信制御情報保持部で保持される情報を示す図である。 動作例における並列計算機システムにて、計算ノード21−1が送信する1つのスキャッタパケットを示す図である。 動作例における並列計算機システムで、図12に示したスキャッタパケットが流れる様子を示す図である。 動作例における並列計算機システムで、計算ノード21−16が図12に示したスキャッタパケットを受信する時の、通信制御情報保持部内の受信予定情報の一部を示す図である。 非特許文献1で開示される、全対全通信方法の疑似プログラムを示した図である。 非特許文献1で開示される、全対全通信方法を使った全対全通信の一例における各プロセスのメモリの様子を示した図である。
以下、本発明の一実施形態の並列計算機システム(「並列計算機」とも称される)を説明する。
図1は、本実施形態の並列計算機システムを示したブロック図である。図1に示すように、並列計算機システムは、計算機クラスタ20−1〜20−4と、クラスタ間ネットワーク11と、を含む。
計算機クラスタ20−1は、計算ノード21−1〜21−4と、クラスタ内ネットワーク22−1と、を含む。計算機クラスタ20−1では、計算ノード21−1〜21−4が、クラスタ内ネットワーク22−1を介して相互に接続されている。計算機クラスタ20−2〜20−4も、計算機クラスタ20−1と同様の構成である。
なお、計算機クラスタ内の計算ノードの数は、4に限らず、2以上であればよい。また、各計算機クラスタ内の計算ノードの数は、同じでもよいし、互いに異なってもよいし、任意に設定可能である。
各計算ノード21−1〜21−16は、一般的に計算機と呼ぶことができる。
本実施形態では、各計算ノードの符号「21−1」〜「21−16」は、その符号が付与された計算ノードの番号も兼ねる。
計算ノード21−1〜21−16にて構成される計算機群は、1つまたは複数のグループにグルーピングされる。本実施形態では、計算機群は、計算機群内の計算ノードの数よりも小さい数のグループにグルーピングされる。
クラスタ間ネットワーク11は、計算機クラスタ20−1〜20−4を相互に結合している。クラスタ間ネットワーク11の形態は、計算機クラスタ20−1〜20−4を相互に接続できる構成であれば任意であり、例えば、多段結合網、ツリー網、または、トーラス網などでよい。
クラスタ内ネットワーク22−1〜22−4、および、クラスタ間ネットワーク11を合わせて、計算ノード21−1〜21−16を相互に接続する相互結合網10と呼ぶ。
計算ノード21−1〜21−16は、いくつかの計算ノードからなるグループに分けられ、各計算ノードは、どれか1つのグループに属している。
グループ分けの方法は任意であるが、計算機クラスタ単位で各計算ノードがグループ分けされると、後述する全対全通信の効率がよくなる。
図2は、各計算ノードのグループ分けの一例を示した図である。
本実施形態では、図2に示すように、計算ノード21−1〜21−16は、計算機クラスタごとに、グループID(1)〜グループID(4)の4つのグループにグループ分けされる。このように、各計算ノードが1つずつどこかのグループに属するようにグループ分けされたグループを、必須グループと呼ぶことにする。
なお、必須グループとは別に、任意に計算ノードがグループ分けされてもよく、そのようなグループを任意グループと呼ぶことにする。例えば、図2のように、必須グループであるグループID(1)〜グループID(4)とは別に、計算ノード21−1、21−5、21−9および21−13が属するグループID(5)や、全計算ノードが属するグループID(6)が追加で定められてもよい。なお、グループID(6)にて特定されるグループも、必須グループの一例とすることができる。
グループIDは、後述の相互結合網10でのマルチキャスト転送処理において、マルチキャストパケットの転送先(送信先)となる計算ノード群を識別するために利用される。相互結合網10でのマルチキャスト転送処理によって、マルチキャストパケットにて指定されたグループIDに属する計算ノードに対して、同一マルチキャストパケットがマルチキャスト転送される。
次に、相互結合網10について、説明する。
相互結合網10は、計算ノード21−1〜21−16のそれぞれが送信したパケットを、そのパケットが指定する宛先へ転送する。
図3は、相互結合網10で転送されるパケットを示した図である。
相互結合網10では、ユニキャストパケット、マルチキャストパケットおよびスキャッタパケットの3種類のパケットが送受信される。
ユニキャストパケットは、1つの計算ノードから他の1つの計算ノードへデータを送信するために用いられる。ユニキャストパケットは、コマンド情報として(00)を有し、送信元計算ノード情報、送信先計算ノード情報、データ長、および、送信データを含む。
相互結合網10は、送信元計算ノードよりユニキャストパケットを受信した場合、そのユニキャストパケットを、そのユニキャストパケット内の送信先計算ノード情報が示す計算ノードのみに送信する。
マルチキャストパケットは、1つの計算ノードから1つまたは複数の計算ノードへ同一データを同時に送信するために用いられる。マルチキャストパケットは、コマンド情報として(01)を有し、送信元計算ノード情報、送信先計算ノード群を示すグループID、データ長、および、送信データを含む。
相互結合網10は、送信元計算ノードよりマルチキャストパケットを受信した場合、マルチキャストパケットをコピーし、そのマルチキャストパケットを、そのマルチキャストパケットが示すグループIDに属する計算ノードにのみ同時に転送する(マルチキャスト転送処理)。
スキャッタパケットは、1つの計算ノードから1つまたは複数の計算ノードへそれぞれ異なるデータを同時に送信するために用いられる。本実施形態では、スキャッタパケットは、計算ノード21−1〜21−16が全対全通信を行うときに使用される。スキャッタパケットは、コマンド情報として(10)を有し、送信元計算ノード情報、送信先計算ノード群を示すグループID、スキャッタパケットID(スキャッタID)、送信データ長、および、送信データを含む。
スキャッタパケット内の送信データは、複数の計算ノード(例えば、同一のグループに属する複数の計算ノード)に対して送られるべき異なるデータを、後述のデータ結合処理により結合されたものである。
相互結合網10は、送信元計算ノードよりスキャッタパケットを受信した場合、マルチキャストパケットと同様に、マルチキャスト転送処理によって、そのスキャッタパケットをコピーし、そのスキャッタパケットを、そのスキャッタパケットが示すグループIDに属する計算ノードにのみマルチキャスト転送する。
なお、本実施形態で使用されるパケットの種類は3種のみであり、各種類のパケットは、上記のパケットフォーマットを有するが、パケットの種類はこの限りでなく、他のパケットの種類を増やしてもよく、また、パケットフォーマットについても変更してもよい。
計算ノード21−1〜21−16は、相互結合網10を介して全対全通信を行う。
次に、計算ノード21−1〜21−16の構成を説明する。計算ノード21−1〜21−16は、互いに同一の構成を有しているので、以下では、計算ノード21−1を例に説明する。
図4は、計算ノード21−1を示したブロック図である。なお、計算ノード21−2〜21−16については、以下の説明のうち「21−1」という記載を、「21−2」〜「21−16」のいずれかに読み替えればよい。
図4において、計算ノード21−1は、計算ユニット211と、メモリ212と、通信制御情報保持部(以下「保持部」と称する)213と、送信部214と、受信部215と、を含む。なお、メモリ212と保持部213は、記憶部216に含まれる。記憶部216は、一般的に記憶手段と呼ぶことができる。
計算ユニット211は、計算ノード21−1が有する機能のうち主に計算を担当する。また、計算ユニット211は、計算だけではなく、他の計算ノードへのデータ送信要求を送信部214に対して発行する。
メモリ212は、計算ノード21−1の記憶領域である。メモリ212は、データを記憶するデータ記憶部2121と、プログラムを記憶するプログラム記憶部2122と、を含む。
データ記憶部2121には、計算ノード21−1が全対全通信を行う際に計算機群を構成する計算ノード21−1〜21−16に送信され全対全通信時に計算ノード21−1〜21−16と1対1で対応する複数のデータ(以下、単に「複数のデータ」と称する)が記憶されている。
メモリ212は、計算ユニット211からの読み出し要求に応じて、または、送信部214からの読み出し要求に応じて、データ記憶部2121内のデータの一部またはプログラム記憶部2122内のプログラムの一部を読み出し、そのデータの一部またはプログラムの一部を、読み出し要求の送信元に送信する。
また、メモリ212は、計算ユニット211からの書き込み要求に応じて、または、受信部215からの書き込み要求に応じて、データ記憶部2121内のデータを書き換える。
保持部213は、通信に関する制御情報を保持する。
図5は、保持部213に保持された制御情報の一例を示した図である。
保持部213は、グループ情報2131と、受信予定情報2132と、スキャッタ送信予定情報2133と、を保持している。
グループ情報2131は、計算ノードのグループ分け結果を示した情報である。グループ情報2131は、グループIDごとに、グループIDと、そのグループIDが示すグループに所属する計算ノードと、を示す。
グループIDが示すグループに所属する計算ノード(以下「所属計算ノード」と称する)を示す形式は、所属計算ノードのリストを示したリスト形式でもよいし、所属計算ノード番号の範囲を示した形式でもよく、形式は問わない。なお、本実施形態では、グループ情報2131は、所属計算ノードをリスト形式で示す。
受信予定情報2132は、計算ノード21−1が受信すべきパケットに関する情報である。受信予定情報2132は、計算ノード21−1が受信すべきパケットの送信元計算ノードの番号と、そのパケットの種類を示すコマンド情報(図3参照)と、そのパケットから抽出されたデータが書き込まれるメモリアドレス(以下、単に「メモリアドレス」と称する)と、追加情報と、を含む。
計算ノード21−1が、ある計算ノードが送信したユニキャストパケットを受信すべき場合は、受信予定情報2132には、そのユニキャストパケットを送信する計算ノードを示す情報(計算ノードの番号)と、ユニキャストパケットを示すコマンド情報「00」と、メモリアドレスとが、互いに関連づけられたユニキャストパケット用レコードが記載される。なお、ユニキャストパケット用レコードには、追加情報は示されない。
計算ノード21−1が、ある計算ノードが送信したマルチキャストパケットを受信すべき場合は、受信予定情報2132には、そのマルチキャストパケットを送信する送信元計算ノードを示す情報と、マルチキャストパケットを示すコマンド情報「01」と、メモリアドレスとが、互いに関連づけられたマルチキャストパケット用レコードが記載される。なお、マルチキャストパケット用レコードには、追加情報は示されない。
計算ノード21−1が、ある計算ノードが送信したスキャッタパケットを受信すべき場合は、受信予定情報2132には、そのスキャッタパケットを送信する送信元計算ノードを示す情報と、スキャッタパケットを示すコマンド情報「10」と、メモリアドレスと、追加情報とが、互いに関連づけられたスキャッタパケット用レコードが記載される。
追加情報は、一般的に、全対全通信時に計算ノード21−1宛のデータがスキャッタパケットパケットに記載された箇所を示した箇所情報(第2情報)と呼ぶことができる。
追加情報は、スキャッタIDと、受信オフセットと、受信データサイズと、を示す。
スキャッタIDは、送信元計算ノードが複数のスキャッタパケットを送信した場合にスキャッタパケットを一意に決定するためのIDである。受信オフセットは、スキャッタパケット内のデータのうち、計算ノード21−1が受信すべきデータ(計算ノード21−1宛のデータ)の位置を示す。受信データサイズは、受信すべきデータのサイズを示す。
スキャッタ送信予定情報2133は、計算ノード21−1が送信するスキャッタパケットに関する情報である。
スキャッタ送信予定情報2133は、一般的に、複数のデータのうちグループIDにて特定されるグループに属する各計算ノードに全対全通信時に送信される各データ(特定データ)がスキャッタパケットに記載される箇所をグループ単位で示した箇所情報(第1情報)を含む。
スキャッタ送信予定情報2133には、計算ノード21−1から送信されるスキャッタパケットのスキャッタIDと、送信先となるグループIDと、送信すべきデータが記憶されたメモリアドレスのリスト(以下「メモリアドレスリスト」と称する)と、送信すべきデータのサイズのリスト(以下「データサイズリスト」と称する)と、を示す送信用レコードが記載される。
なお、メモリアドレスリストおよびデータサイズリストでは、リストに記載されたデータ(メモリアドレスおよびデータサイズ)の並び順が、送信先となるグループIDについてグループ情報2131の所属計算ノード情報に示された計算ノードの並び順と対応している。
例えば、図5に示す例では、スキャッタID「17」を含む送信用レコードは、スキャッタID「17」にて特定されるスキャッタパケットが、グループID「2」にて特定されるグループに属する計算ノードに送信されることを示す情報である。
さらに説明すると、スキャッタID「17」を含む送信用レコードは、スキャッタパケットを用いることによって、計算ノード21−5に計算ノード21−1が有するメモリ内のアドレス[512]からの16バイトのデータを送信する処理と、計算ノード21−6に計算ノード21−1が有するメモリ内のアドレス[528]からの16バイトのデータを送信する処理と、計算ノード21−7に計算ノード21−1が有するメモリ内のアドレス[544]からの16バイトのデータを送信する処理と、計算ノード21−8に計算ノード21−1が有するメモリ内のアドレス[560]からの16バイトのデータを送信する処理と、一度に行うことを意味する。
図4に戻って、送信部214および受信部215は、クラスタ内ネットワーク22−1に接続されており、相互結合網10を介して他の計算ノードとデータの送受信を行う。
送信部214は、一般的に送信手段と呼ぶことができる。
送信部214は、全対全通信時に必須グループ内の計算ノードに対応する各データを送信する状況になると、グループ単位で、その各データをメモリ216から読み出し、グループ単位で、その各データがスキャッタ送信予定情報2133にて示された箇所に記載されそのグループを送信先として指定したスキャッタパケットを生成し、そのスキャッタパケットを相互結合網10に送信する。
なお、送信部214は、計算ユニット211からのデータ送信要求(例えば、スキャッタコマンド発行要求)に従って、メモリ212内のデータ記憶部2121からデータを読み出し、そのデータを送信するためのパケット(例えば、スキャッタパケット)を生成し、そのパケットを相互結合網10に送信する。
図6(a)は、送信部214の一例を示したブロック図である。
図6(a)において、送信部214は、送信命令処理部2141と、パケット生成部2142と、出力部2143と、を含む。
送信命令処理部2141は、計算ユニット211からのデータ送信要求を受け付けると、パケット生成部2142に対してパケット生成処理要求を出す。なお、データ送信要求は、計算ユニット211内のメモリのメモリアドレスおよびデータサイズを示し、パケット生成処理要求は、データ送信要求内のメモリアドレスおよびデータサイズを示す。
パケット生成部2142は、送信命令処理部2141からパケット生成処理要求を受け付けると、メモリ212に対して、パケット生成処理要求内のメモリアドレスおよびデータサイズを示した読み出し要求を出して、メモリ212から、そのメモリアドレスからのデータサイズに示されたサイズのデータまたはプログラムを読み出す。その後、パケット生成部2142は、そのプログラムまたはデータを送信するためのパケットを生成し、そのパケットを出力部2143に転送する。
出力部2143は、パケット生成部2142からパケットを受け付けると、そのパケットをクラスタ内ネットワーク22−1に送信する。
ここで、送信命令処理部2141がパケット生成部2142にパケット生成処理要求を送信し、パケット生成部2142がパケットを生成するパケット生成処理について詳しく説明する。
送信命令処理部2141がパケット生成部2142に対して発行するパケット生成処理要求は、「ユニキャストパケット生成要求」、「マルチキャストパケット生成要求」および「スキャッタパケット生成要求」の3種類のいずれかである。
なお、送信命令処理部2141は、計算ユニット211から、ユニキャストパケットを指定したデータ送信要求を受け付けた場合、ユニキャストパケット生成要求を、パケット生成部2142に発行する。
また、送信命令処理部2141は、計算ユニット211から、マルチキャストパケットを指定したデータ送信要求を受け付けた場合、マルチキャストパケット生成要求を、パケット生成部2142に発行する。
また、送信命令処理部2141は、計算ユニット211から、データ送信要求の一例であるスキャッタコマンド発行要求を受け付けた場合、スキャッタパケット生成要求を、パケット生成部2142に発行する。なお、スキャッタコマンド発行要求は、スキャッタIDを含み、スキャッタパケット生成要求は、スキャッタコマンド発行要求内のスキャッタIDを含む。
パケット生成部2142は、ユニキャストパケット生成要求を受け付けると、ユニキャストパケット生成要求に含まれるメモリアドレスおよびデータサイズを元に、メモリ212から、メモリアドレスおよびデータサイズにて特定されるデータを読み出し、そのデータを送信するためのユニキャストパケットを生成する。
パケット生成部2142は、マルチキャストパケット生成要求を受け付けると、マルチキャストパケット生成要求に含まれるメモリアドレスおよびデータサイズを元に、メモリ212から、メモリアドレスおよびデータサイズにて特定されるデータを読み出し、そのデータを送信するためのマルチキャストパケットを生成する。
一方、パケット生成部2142は、スキャッタパケット生成要求を受け付けた場合は、スキャタパケット生成処理を実行して、スキャッタパケットを生成する。以下にスキャッタパケット生成処理を説明する。
スキャッタパケットは、グループIDで指定されたグループに所属する全計算ノードに対してそれぞれ送信すべき互いに異なるデータを結合したデータを有する。
パケット生成部2142は、スキャッタパケット生成要求を受けた場合、まず、スキャッタパケット生成要求が有するスキャッタIDを有する送信用レコード(図5参照)を、保持部213内のスキャッタ送信予定情報213より取得する。
パケット生成部2142は、スキャッタIDを有する送信用レコードを取得すると、その送信用レコードに記載されたメモリアドレスおよびデータサイズにて特定される各データを、メモリ212から読み出す。
パケット生成部2142は、例えば、スキャッタID「17」を有する送信用レコードを取得した場合、計算ノード21−1が有するメモリ212から、アドレス[512]からの16バイトのデータと、アドレス[528]からの16バイトのデータと、アドレス[544]からの16バイトのデータと、アドレス[560]からの16バイトのデータと、を読み出す。
パケット生成部2142は、メモリ212から各データを読み出すと、その各データを、そのデータに対応するメモリアドレスまたはデータサイズがメモリアドレスリストまたはデータサイズリストに記載された順に並べて送信データを作成し、その送信データを有し、かつ、送信用レコードに記載されたグループIDが送信先として指定されたスキャッタパケットを生成する。
受信部215は、一般的に抽出手段と呼ぶことができる。
受信部215は、例えば、相互結合網10からスキャッタパケットを受信すると、保持部213内の受信予定情報2132(図5参照)を参照して、そのスキャッタパケットから計算ノード21−1と対応するデータを抽出する。
受信部215は、相互結合網10からパケットを受け付けると、そのパケット内のデータをメモリ212へ書き込み、計算ユニット211へ受信完了を通知する。
図6(b)は、受信部215の一例を示したブロック図である。
図6(b)において、受信部215は、入力部2151と、受信判定部2152と、受信命令処理部2153と、を含む。
入力部2151は、クラスタ内ネットワーク22−1からパケットを受信する。入力部2151が受信するパケットは、ユニキャストパケット、マルチキャストパケットおよびスキャッタパケットの3種類のうちのいずれかである。入力部2151は、パケットを受信すると、そのパケットを受信判定部2152に転送する。
受信判定部2152は、入力部2151から転送されたパケットを受け付けると、そのパケット内のコマンド情報を確認する。
コマンド情報が、「00」(ユニキャストパケット)であった場合、受信判定部2152は、保持部213を参照して、受信予定情報2132内に、そのパケット内の送信元計算ノードを示したユニキャストパケット用レコードがあるか確認する。
もし、受信予定情報2132内に、そのパケット内の送信元計算ノードを示したユニキャストパケット用レコードがない場合、受信判定部2152は、そのパケットは受信すべきパケットでないと判定して、そのパケットを破棄する。
一方、受信予定情報2132内に、そのパケット内の送信元計算ノードを示したユニキャストパケット用レコードがあった場合、受信判定部2152は、そのパケットは受信すべきパケットであると判定し、そのユニキャストパケット用レコードからメモリアドレスを取得し、そのメモリアドレスを用いて、メモリ212に対して、パケットのデータ部に記載されたデータを書き込む。その後、受信判定部2152は、受信予定情報2132から、そのユニキャストパケット用レコードを削除する。
コマンド情報が、「01」(マルチキャストパケット)であった場合、受信判定部2152は、保持部213を参照して、受信予定情報2132内に、そのパケット内の送信元計算ノードを示したマルチキャストパケット用レコードがあるか確認する。
もし、受信予定情報2132内に、そのパケット内の送信元計算ノードを示したマルチキャストパケット用レコードがない場合、受信判定部2152は、そのパケットは受信すべきパケットでないと判定して、そのパケットを破棄する。
一方、受信予定情報2132内に、そのパケット内の送信元計算ノードを示したマルチキャストパケット用レコードがあった場合、受信判定部2152は、そのパケットは受信すべきパケットであると判定し、そのマルチキャストパケット用レコードからメモリアドレスを取得し、そのメモリアドレスを用いて、メモリ212に対して、パケットのデータ部に記載されたデータを書き込む。その後、受信判定部2152は、受信予定情報2132から、そのマルチキャストパケット用レコードを削除する。
コマンド情報が、「10」(スキャッタパケット)であった場合は、受信判定部2152は、そのパケットのデータ部のうち、受信オフセット位置にあるデータ、すなわち、自計算ノードで取得すべきデータ(自計算ノード宛のデータ)を抽出するデータ抽出処理を実行する。
データ抽出処理では、受信判定部2152は、保持部213を参照して、受信予定情報2132内に、そのパケット内の送信元計算ノードを示し、かつ、そのパケット内のスキャッタIDを示すスキャッタパケット用レコードがあるか確認する。
もし、受信予定情報2132内に、そのパケット内の送信元計算ノードを示し、かつ、そのパケット内のスキャッタIDを示すスキャッタパケット用レコードがない場合、受信判定部2152は、そのパケットは受信すべきパケットでないと判定して、そのパケットを破棄する。
一方、受信予定情報2132内に、そのパケット内の送信元計算ノードを示し、かつ、そのパケット内のスキャッタIDを示すスキャッタパケット用レコードがあった場合、受信判定部2152は、そのスキャッタパケット用レコードから、メモリアドレス、受信オフセットおよび受信データサイズを読み取り、その後、そのスキャッタパケット用レコードを受信予定情報2132から削除する。
続いて、受信判定部2152は、そのパケットのデータ部の先頭から受信オフセットずれた位置にあるデータを受信データサイズ分抜き出し、メモリアドレスを用いて、メモリ212に対して、その抜き出されたデータを書き込む。以上の処理が終了すると、受信判定部2152は、受信命令処理部2153に対して、そのパケットの受信が完了したことを通知する。
受信命令処理部2153は、パケットの受信が完了したことを受信判定部2152から通知されると、計算ユニット21−1に対して、パケットの受信が完了したことを通知する。
以上が、本発明の一実施形態の並列計算機システムの説明であり、次に、本実施形態の並列計算機システムで全対全通信を行う場合の動作例を説明する。
図7は、以下の動作例で説明する全対全通信の転送パターンを示した図である。
具体的には、図7(a)は、本動作例での全対全通信において、送信側計算ノードから送信先計算ノード(受信側計算ノード)に送信される転送データが格納されている送信側計算ノードのメモリアドレスを示した図である。
図7(b)は、本動作例での全対全通信において、送信側計算ノードから送信先計算ノードに送信される転送データのデータサイズを示した図である。
図7(c)は、送信先計算ノード(受信側計算ノード)別に、送信先計算ノード(受信側計算ノードにて受信されたデータが書き込まれるメモリアドレスを示した図である。
なお、図7において、計算ノード番号1〜16は、それぞれ、計算ノード21−1〜21−16に対応している。
例えば、計算ノード21−1から計算ノード21−16へデータが送信される場合には、計算ノード21−1のメモリアドレス[120]からの8バイトのデータが計算ノード21−16へ送信され、計算ノード21−16は、計算ノード21−1から受信したデータを、メモリアドレス[248]に書き込む。
図7に示した転送パターンの情報は、例えば、各計算ノードのメモリ212内のプログラム記憶部2122に保持される。
なお、図7に示した転送パターンは、計算ノード21−1〜21−16内のデータを要素とする行列において、それら要素の転置を実施するための転送パターンである。図8は、全対全通信前後の各計算ノードのメモリの様子を示した図である。
図9は、全対全通信が開始される前の状況(以下「初期状態」と称する)で、各計算ノード内の保持部213が保持している情報を示した図である。
初期状態では、各計算ノードは、必須グループであるグループID(1)〜グループID(4)と、グループID(1)〜グループID(4)の所属計算ノード情報と、を示したグループ情報2131を、共有している。また、初期状態では、受信予定情報2132およびスキャッタ送信予定情報2133には、何も情報(レコード)がない。
なお、本動作例では、グループ情報2131に必須グループしかないが、他のグループもあってもよい。また、受信予定情報2132およびスキャッタ送信予定情報2133に情報(レコード)が含まれていないが、他の全対全通信、ユニキャスト通信、または、マルチキャスト通信などの通信が同時に起こっている場合には、それらの通信に関する情報が保持されてもよい。
上記のような初期状態のもと、図7に示した転送パターンにしたがった全対全通信の動作を説明する。
全対全通信を行うにあたって、各計算ノード(例えば、各計算ユニット211)は、メモリ212内のプログラム記憶部2122で保持されている転送パターンを実通信コマンドに変換する「通信コマンド生成処理」を実施する。
以下に、計算ノード21−3を例に通信コマンド生成処理を説明する。
各計算ノード(例えば、各計算ユニット211)は、まず、自計算ノードを含め全ての計算ノードにデータを送信するための全コマンド送信情報を作成する。
本実施形態では、各計算ノード(例えば、各計算ユニット211)は、送信元計算ノードとして、計算ノード21−1〜21−16を順に設定し、それぞれの送信元計算ノードに対して、送信先のグループIDとして、必須グループであるグループID(1)〜グループID(4)を設定して、全コマンド送信情報を作成していく。
例えば、最初は、計算ノード21−1からグループID(1)へのスキャッタパケットを用いた送信に関する情報が、全コマンド送信情報として設定される。なお、以下では、スキャッタパケットを用いた送信を「スキャッタ送信」と称し、スキャッタ送信に関する情報を「スキャッタコマンド情報」と称する。
計算ノード21−1からグループID(1)へのスキャッタ送信に関するスキャッタコマンド情報は、以下のように作成される。
グループID(1)には、順に、計算ノード21−1、21−2、21−3、21−4が属している。このため、各計算ノード(例えば、計算ユニット21−1)は、図7に示した転送パターンを参照して、計算ノード21−1からグループID(1)へのスキャッタ送信に使用される、送信データのメモリアドレスリストおよび送信データのデータサイズリストを作成する。
この場合、各計算ノード(例えば、各計算ユニット211)は、図7に示した転送パターンを参照して、計算ノード21−1から計算ノード21−1へ送信されるデータについてのメモリ212での先頭アドレスとそのデータサイズと、計算ノード21−1から計算ノード21−2へ送信されるデータについてのメモリ212での先頭アドレスとそのデータサイズと、計算ノード21−1から計算ノード21−3へ送信されるデータについてのメモリ212での先頭アドレスとそのデータサイズと、計算ノード21−1から計算ノード21−4へ送信されるデータについてのメモリ212での先頭アドレスとそのデータサイズと、を特定して、メモリアドレスリストおよびデータサイズリストを作成する。
続いて、各計算ノード(例えば、各計算ユニット211)は、送信元計算ノードとして計算ノード21−1が設定され、かつ、グループIDとしてグループID(1)が設定され、かつ、メモリアドレスリストとしてその作成されたメモリアドレスリストが設定され、かつ、データサイズリストとしてその作成されたデータサイズリストが設定されたスキャッタコマンド情報を、全コマンド送信情報に設定する。
以下、各計算ノード(例えば、各計算ユニット211)は、上記と同様に、各計算ノードから各必須グループへのスキャッタ送信に関するスキャッタコマンド情報を作成していき、それらスキャッタコマンド情報を、全コマンド送信情報に設定していく。
続いて、各計算ノード(例えば、各計算ユニット211)は、全コマンド送信情報内の各スキャッタコマンド情報に対して、それぞれスキャッタIDを順に付与していく。
スキャッタIDの付与は、IDの重複がないようにすれば、どのような順序づけであってもよい。
このように、計算ノード数×必須グループ数(16×4=64)個の全スキャッタコマンド情報が作成される。
図10(a)は、計算ノードにて作成された全コマンド送信情報を示した図である。
次に、各計算ノード(例えば、各計算ユニット211)は、自計算ノードが受信すべきスキャッタパケットに関する情報(以下「自計算ノードコマンド受信情報」と称する)を作成する。
各計算ノード(例えば、各計算ユニット211)は、先に生成したスキャッタコマンド情報より、自計算ノードが属するグループIDを送信先にするスキャッタコマンド情報を抜き出す。例えば、全コマンド送信情報が図10(a)に示したように設定されている場合、計算ノード21−3は、グループID(1)に属するので、計算ノード21−3は、スキャッタID1、5、9、・・・、61の16個のスキャッタコマンド情報を抜き出す。
続いて、各計算ノード(例えば、各計算ユニット211)は、その抜き出されたスキャッタコマンド情報のそれぞれについて、以下の処理を行う。
まず、各計算ノード(例えば、各計算ユニット211)は、抜き出されたスキャッタコマンド情報より、送信元計算ノードを抜き出す。続いて、各計算ノード(例えば、各計算ユニット211)は、図7に示した転送パターンを参照して、その送信元計算ノードからのスキャッタパケットから自計算ノード宛のデータを抽出するために使用する情報を作成する。
例えば、送信元計算ノード21−1からグループID(1)へ送信されるスキャッタパケットは、スキャッタID(1)のスキャッタパケットである。スキャッタID(1)ののスキャッタパケットは、計算ノード21−1、21−2、21−3、21−4に対して、それぞれ順に、8バイトのデータ、8バイトのデータ、8バイトのデータ、8バイトのデータを送信するために使用される。
計算ノード21−3には、計算ノード21−1を送信元計算ノードとするスキャッタID(1)のスキャッタパケットが転送される。
図7に示した転送パターンによれば、このスキャッタパケットのデータ部の16バイト目(先頭16バイトは、21−1への8バイト+21−2への8バイト)からの8バイトのデータが、計算ノード21−3が受信すべきデータ(計算ノード21−3宛のデータ)となる。
このため、計算ノード21−3(例えば、計算ノード21−3内の計算ユニット211)は、図7に示した転送パターンを参照し、スキャッタID(1)のスキャッタパケットのデータ部の16バイト目からの8バイトのデータ(計算ノード21−3宛のデータ)を抽出するための情報として、追加情報を生成する。この追加情報は、スキャッタID=1、受信オフセット16、および、受信データサイズ=8を示す。
また、計算ノード21−3(例えば、計算ノード21−3内の計算ユニット211)は、図7に示した転送パターンを参照し、計算ノード21−1からの計算ノード21−3宛のデータを書き込むメモリアドレスとして「128」を特定する。
その後、計算ノード21−3(例えば、計算ノード21−3内の計算ユニット211)は、送信元計算ノードとメモリアドレスと追加情報とが設定されたスキャッタコマンド受信情報を作成し、そのスキャッタコマンド受信情報を、自計算ノードコマンド受信情報に設定する。
以下、各計算ノード(例えば、各計算ユニット211)は、上記と同様に、スキャッタコマンド受信情報を作成していき、それらスキャッタコマンド受信情報を、自計算ノードコマンド受信情報に設定していく。図10(b)は、計算ノード21−3にて作成された自計算ノードコマンド受信情報を示した図である。
次に、各計算ノード(例えば、各計算ユニット211)は、保持部213内の受信予定情報2132およびスキャッタ送信予定情報2133(図5参照)を更新する「通信制御情報更新処理」を行う。
各計算ノード(例えば、各計算ユニット211)は、通信コマンド生成処理で作成された全コマンド送信情報から、自計算ノードが送信するスキャッタパケットについてのスキャッタコマンド情報を抜き出す。
各計算ノードは、スキャッタコマンド情報を抜き出すと、そのスキャッタコマンド情報に基づいて、保持部213内のスキャッタ送信予定情報2133を更新し、同時に、保持部213内の受信予定情報2132の更新を行う。
図11は、通信制御情報更新処理後の計算ノード21−1内の保持部213が保持する情報を示した図である。
図11では、図9に示した保持部213内の情報(初期状態での保持部213内の情報)と比べて、通信制御情報更新処理により、計算ノード21−1が受信すべきパケットの情報(受信予定情報2132内の各レコード)、および、送信すべきスキャッタパケットの情報(スキャッタ送信予定情報2133内の各送信レコード)が追加されている。
通信制御情報更新処理が終了すると、各計算ノード(例えば、各計算ユニット211)は、「通信コマンド送信処理」を行う。
通信コマンド送信処理では、各計算ノードは、通信コマンド生成処理で生成された全コマンド送信情報のうち、自計算ノードが送信元になっているスキャッタコマンド情報に基づいて、実際にスキャッタコマンド発行要求を発行し、スキャッタパケットの送信を行う。
各計算ノードが複数のスキャッタコマンド発行要求を発行することになるが、複数のスキャッタコマンド発行要求の発行順序は問わない。本動作例では、スキャッタIDの小さい順にスキャッタコマンド発行要求を発行するとする。
通信コマンド送信処理では、まず、各計算ノードの計算ユニット211が、全コマンド送信情報のうち、自計算ノードが発行すべきスキャッタコマンドの情報であるスキャッタコマンド情報から、スキャッタIDを抜き出す。
計算ユニット211は、スキャッタIDを抜き出すと、そのスキャッタIDについてのスキャッタコマンド発行要求を送信部214に発行する。
例えば、計算ノード21−1では、計算ユニット211は、送信部214に対して、スキャッタID「1」を含むスキャッタコマンド発行要求と、スキャッタID「2」を含むスキャッタコマンド発行要求と、スキャッタID「3」を含むスキャッタコマンド発行要求と、スキャッタID「4」を含むスキャッタコマンド発行要求と、を順に発行する。
送信部214がスキャッタコマンド発行要求を受け付けると、送信部214内の送信命令処理部2141は、そのスキャッタコマンド発行要求が保持するスキャッタIDを抜き出す。送信命令処理部2141は、スキャッタIDを抜き出すと、そのスキャッタIDを含むスキャッタパケット生成要求を、パケット生成部2142に発行する。
パケット生成部2142は、スキャッタパケット生成要求を受け付けると、スキャッタパケット生成要求が保持するスキャッタIDを含む送信用レコードを、保持部213より取得する。
例えば、計算ノード21−1が、スキャッタID4にて特定されるスキャッタパケットを発行する場合、パケット生成部2142は、保持部213より、グループID(1)、メモリアドレスリスト([96、104、112、120])およびデータサイズリスト([8、8、8、8])を含む送信用レコードを取得する。
パケット生成部2142は、グループID(1)、メモリアドレスリスト([96、104、112、120])およびデータサイズリスト([8、8、8、8])を含む送信レコードを取得すると、スキャッタID「4」を含む送信用レコードを、保持部213内のスキャッタ送信予定情報2133から削除する。
パケット生成部2142は、グループID(1)、メモリアドレスリスト([96、104、112、120])およびデータサイズリスト([8、8、8、8])を含む送信用レコードを取得すると、そのメモリアドレスリスト([96、104、112、120])およびデータサイズリスト([8、8、8、8])を元に、メモリ212に対して、データ読み出し要求を発行する。
このデータ読み出し要求により、メモリ212のアドレス96からの8バイトのデータ「113」、アドレス104からの8バイトのデータ「114」、アドレス112からの8バイトのデータ「115」、アドレス120からの8バイトのデータ「116」が、メモリ212より順に読み出される。
パケット生成部2142は、メモリ212より読み出されたデータを読み出し順に結合し、その結合されたデータをデータ部として持つスキャッタパケットを作成する。
図12は、パケット生成部2142にて作成されたスキャッタパケットを示した図である。
パケット生成部2142は、スキャッタパケットを生成すると、そのスキャッタパケットを、出力部2143に転送する。
出力部2143は、スキャッタパケットを受け付けると、出力処理により、そのスキャッタパケットを相互接続網10に対して送信する。
相互接続網10では、スキャッタパケットを受信すると、そのスキャッタパケットを、そのスキャッタパケットが含むグループIDに属する計算ノードに、マルチキャスト送信する。
図13は、計算ノード21−1が送信したスキャッタID4のスキャッタパケットがマルチキャスト送信される様子を示した図である。
次に、スキャッタパケットを受信した計算ノードが行う、スキャッタパケット受信処理について、図12に示したスキャッタパケットを計算ノード21−16が受信する場合を例に説明する。
スキャッタパケットは、まず、受信部215内の入力部2151にて受信される。
入力部2151は、スキャッタパケットを受信すると、そのスキャッタパケットを、受信判定部2152に転送する。
受信判定部2152は、スキャッタパケットを受け付けると、受信判定処理を実行する。
受信判定処理では、受信判定部2152は、まず、スキャッタパケット内のコマンド情報を確認する。この例では、コマンド情報が10(スキャタパケット)であるので、受信判定部2152は、データ抽出処理を実行する。
データ抽出処理では、受信判定部2152は、まず、スキャッタパケットから、送信元計算ノード情報(21−1)とスキャッタID(4)を読み出す。
受信判定部2152は、送信元計算ノード情報(21−1)とスキャッタID(4)を読み出すと、保持部213を参照する。
このとき、計算ノード21−16の保持部213には、図14で示すような受信予定情報2132が保持されているとする。
保持部213には、送信元計算ノード情報「21−1」とスキャッタID「4」を示すスキャッタパケット用レコードがあるので、受信判定部2152は、スキャッタID「4」を示すスキャッタパケット用レコードの追加情報に示された受信オフセット「24」および受信データサイズ「8」と、メモリアドレス「128」を読み出す。
受信判定部2152は、受信オフセット「24」と、受信データサイズ「8」と、メモリアドレス「128」と、を読み出すと、スキャッタID「4」を示すスキャッタパケット用レコードを削除する。
受信判定部2152は、保持部213から、受信オフセットと受信データサイズと書き込みメモリアドレスを読み出すと、スキャッタパケットのデータ部から、スキャッタパケットのデータ部の先頭から受信オフセットだけずれた位置から受信データサイズ分のデータ「116」を抽出する。
データ抽出処理が終了すると、受信判定部2152は、抽出データ「116」とメモリアドレス「128」とを、受信命令処理部2153に転送する。
受信命令処理部2153は、抽出データ「116」とメモリアドレス「128」とを受け付けると、抽出データ「116」を、メモリ212のメモリアドレス「128」に書き込む。
メモリ212に対してデータの書き込みが終了すると、受信命令処理部2153は、受信終了通知を計算ユニット212に対して送信して受信処理が完了する。
全ての計算ノードが、通信コマンド生成処理で生成されたスキャッタコマンド情報のうち、それぞれの計算ノードが送信元となるスキャッタコマンド情報に応じたスキャッタパケットを上述のように送信し、また、送信されたスキャッタパケットが相互結合網10でマルチキャスト転送により、各計算ノードに入力され、各計算ノードにて受信判定処理・データ抽出処理・データ書き込み処理からなる受信処理が実行されることで、全対全通信が実現される。
本実施形態では、各計算ノードは、記憶部216と、送信部214と、受信部215と、を含む。計算ノードは、計算ノードの総数よりも小さい数のグループにグルーピングされている。
記憶部216は、全対全通信時にグループ単位でグループに属する計算ノードに送信される特定データと、特定データがマルチキャストパケットに搭載される箇所をグループ単位で示す第1情報と、自計算機宛のデータがマルチキャストパケットに搭載された箇所を示す第2情報と、を記憶する。
送信部214は、全対全通信時に、グループ単位でグループに属する計算ノードに送信される特定データを記憶部216から読み出し、グループ単位で、特定データが第1情報にて示された箇所に搭載されグループが送信先として指定されたマルチキャストパケット(上記では「スキャッタパケット」と称した)を生成し、そのマルチキャストパケット(スキャッタパケット)を相互結合網10に送信する。
受信部215は、相互結合網10からマルチキャストパケット(スキャッタパケット)を受信すると、第2情報を参照して、そのマルチキャストパケット(スキャッタパケット)から自計算ノード宛のデータを抽出する。
このため、本実施形態によれば、各計算ノードは、全対全通信を行う際に少なくとも2つの計算ノードに送信するデータを1つのパケットで送信でき、各計算ノードが送信するデータの送信回数を少なくすることができる。例えば、16個の各計算ノードが、各計算ノードに対して1つ1つデータを転送していたのでは、計算ノードの個数分、つまり15回(自計算ノードに送信する必要がないため、16−1=15)の送信回数が必要だが、本実施形態によれば、各計算ノードが送信するデータの送信回数は、グルーピングされたグループの個数分だけでよい。本実施形態では4回でよく、送信回数が4分の1でよく、送信にかかるオーバーヘッドが削減できる。
また、本実施形態によれば、各計算ノードが送信する送信データのデータサイズは、送信すべきデータのサイズを超えることはない。非特許文献1で開示された方法では、本実施形態と同数の計算ノードで全対全通信が実施される場合、本実施形態と比較して1計算ノードあたりに2倍のサイズのデータを送信する必要がある。
また、本実施形態のように、クラスタ間ネットワーク11とクラスタ内ネットワーク22−1〜22−4というように複数種類の性能を持つネットワークが存在する場合、クラスタ間ネットワークには、各クラスタ内ネットワークよりも多くのデータが往来するため、クラスタ間ネットワークの通信速度が遅くなる可能性が高い。
クラスタ毎に計算ノードがグルーピングされた場合、クラスタ間ネットワークに流れるデータ量は、各計算ノードが各計算ノードに対して1つ1つデータを転送する場合と同量のデータしか流れる必要がない。
また、計算ノードのグルーピングの方法によって、各計算ノードのデータ送信回数、または、受信パケットの個数が変わってくる。つまり、全対全通信で送信すべきデータのサイズや、相互結合網の構成・性能に応じて、計算ノードのグルーピングを変えることで、高性能な全対全通信を実施できるカスタマイズ性も持ち合わせているといえる。
例えば、各計算ユニット211が、グループに属する計算ノードの数が、全対全通信にて通信されるデータの量が多くなるほど少なくなるように、複数の計算ノードを複数の計算ノードの数よりも少ない数のグループにグルーピングしてもよい。この場合、各計算ユニット211は、グルーピング手段として機能する。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明の要旨を逸脱しない範囲で当業者が理解しうる各種の変形が可能である。
例えば、通信を制御するための情報は、保持部213にて保持されていたが、各計算ノードのメモリで保持されてもよい。
また、本実施形態では、計算ノード上の各機能を有するハードウェアが処理を行う例を説明したが、コンピュータにて読み取り可能な記録媒体に記録されたソフトウェア(プログラム)が各計算ノード(コンピュータ)にて実行されることによって、各計算ノード(コンピュータ)が、計算ユニット211、メモリ212、保持部213、送信部214および受信部215として機能してもよい。
また、本実施形態では、全対全通信の転送パターンを実際の通信コマンドに変換する通信コマンド生成処理を、各計算ノードが処理していたが、あらかじめ並列プログラムのコンパイラが通信コマンド生成処理を行って、通信コマンドを生成し、その生成された通信コマンドが、各計算ノードのメモリ212内のプログラム記憶部2122で保持されてもよい。
(付記1)複数の計算機と、前記複数の計算機を相互に接続する相互結合網と、を含み、前記複数の計算機が前記相互結合網を介して全対全通信を行い、前記複数の計算機が前記計算機の数よりも小さい数のグループにグルーピングされた並列計算機での通信方法であって、
前記計算機が、全対全通信時に前記グループ単位で当該グループに属する計算機に送信される特定データと、前記特定データがマルチキャストパケットに搭載される箇所を前記グループ単位で示す第1情報と、自計算機宛のデータがマルチキャストパケットに搭載された箇所を示す第2情報と、を記憶手段に記憶する記憶ステップと、
前記計算機が、全対全通信時に、前記グループ単位で当該グループに属する計算機に送信される特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが前記第1情報にて示された箇所に搭載され当該グループが送信先として指定されたマルチキャストパケットを生成し、当該マルチキャストパケットを前記相互結合網に送信する送信ステップと、
前記相互結合網が、マルチキャストパケットを受信すると、当該マルチキャストパケットを、当該マルチキャストパケットにて指定された送信先に送信する転送ステップと、
前記計算機が、前記相互結合網からマルチキャストパケットを受信すると、前記第2情報を参照して、当該マルチキャストパケットから自計算機宛のデータを抽出する抽出ステップと、を含む通信方法。
(付記2)付記1に記載の通信方法において、
前記グループ単位で当該グループに属する計算機にて計算機クラスタが構成される、通信方法。
(付記3)付記1または2に記載の通信方法において、
前記計算機が、前記グループに属する計算機の数が、全対全通信にて通信されるデータの量が多くなるほど少なくなるように、前記複数の計算機を前記グループにグルーピングするグルーピングステップを、さらに含む通信方法。
(付記4)マルチキャストパケットを受信すると当該マルチキャストパケットを当該マルチキャストパケットにて指定された送信先に送信する相互結合網を介して全対全通信を行う複数の計算機の1つとして使用され、前記複数の計算機が前記計算機の数よりも小さい数のグループにグルーピングされている、計算機での通信方法であって、
全対全通信時に前記グループ単位で当該グループに属する計算機に送信される特定データと、前記特定データがマルチキャストパケットに搭載される箇所を前記グループ単位で示す第1情報と、自計算機宛のデータがマルチキャストパケットに搭載された箇所を示す第2情報と、を記憶手段に記憶する記憶ステップと、
全対全通信時に、前記グループ単位で当該グループに属する計算機に送信される特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが前記第1情報にて示された箇所に搭載され当該グループが送信先として指定されたマルチキャストパケットを生成し、当該マルチキャストパケットを前記相互結合網に送信する送信ステップと、
前記相互結合網からマルチキャストパケットを受信すると、前記第2情報を参照して、当該マルチキャストパケットから自計算機宛のデータを抽出する抽出ステップと、を含む通信方法。
(付記5)付記4に記載の通信方法において、
前記グループ単位で当該グループに属する計算機にて計算機クラスタが構成される、通信方法。
(付記6)付記4または5に記載の通信方法において、
前記計算機が、前記グループに属する計算機の数が、全対全通信にて通信されるデータの量が多くなるほど少なくなるように、前記複数の計算機を前記グループにグルーピングするグルーピングステップを、さらに含む通信方法。
(付記7)マルチキャストパケットを受信すると当該マルチキャストパケットを当該マルチキャストパケットにて指定された送信先に送信する相互結合網を介して全対全通信を行う複数の計算機の1つとして使用され、前記複数の計算機が前記計算機の数よりも小さい数のグループにグルーピングされている、コンピュータに、
全対全通信時に前記グループ単位で当該グループに属する計算機に送信される特定データと、前記特定データがマルチキャストパケットに搭載される箇所を前記グループ単位で示す第1情報と、自計算機宛のデータがマルチキャストパケットに搭載された箇所を示す第2情報と、を記憶手段に記憶する記憶手順と、
全対全通信時に、前記グループ単位で当該グループに属する計算機に送信される特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが前記第1情報にて示された箇所に搭載され当該グループが送信先として指定されたマルチキャストパケットを生成し、当該マルチキャストパケットを前記相互結合網に送信する送信手順と、
前記相互結合網からマルチキャストパケットを受信すると、前記第2情報を参照して、当該マルチキャストパケットから自計算機宛のデータを抽出する抽出手順と、を実行させるためのプログラム。
(付記8)付記7に記載のプログラムにおいて、
前記グループ単位で当該グループに属する計算機にて計算機クラスタが構成される、プログラム。
(付記9)付記7または8に記載のプログラムにおいて、
前記グループに属する計算機の数が、全対全通信にて通信されるデータの量が多くなるほど少なくなるように、前記複数の計算機を前記グループにグルーピングするグルーピング手順を、前記コンピュータに実行させるプログラム。
10 相互結合網
11 クラスタ間ネットワーク
20−1〜20−4 計算機クラスタ
21−1〜21−16 計算ノード
22−1〜22−4 クラスタ内ネットワーク
211 計算ユニット
212 メモリ
2121 データ記憶部
2122 プログラム記憶部
213 通信制御情報保持部
214 送信部
2141 送信命令処理部
2142 パケット生成部
2143 出力部
215 受信部
2151 入力部
2152 受信判定部
2153 受信命令処理部
216 記憶部

Claims (11)

  1. 複数の計算機と、前記複数の計算機を相互に接続する相互結合網と、を含み、前記複数の計算機が前記相互結合網を介して全対全通信を行う並列計算機であって、
    前記複数の計算機は、前記計算機の数よりも小さい数のグループにグルーピングされており、
    前記相互結合網は、マルチキャストパケットを受信すると、当該マルチキャストパケットを、当該マルチキャストパケットにて指定された送信先に送信し、
    前記計算機は、
    全対全通信時に前記グループ単位で当該グループに属する計算機に送信される特定データと、自計算機宛のデータがマルチキャストパケットに搭載された箇所を示す情報と、を記憶する記憶手段と、
    全対全通信時に、前記グループ単位で当該グループに属する計算機に送信される特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが搭載され当該グループが送信先として指定されたマルチキャストパケットを生成し、当該マルチキャストパケットを前記相互結合網に送信する送信手段と、
    前記相互結合網からマルチキャストパケットを受信すると、前記情報を参照して、当該マルチキャストパケットから自計算機宛のデータを抽出する抽出手段と、を含む、並列計算機。
  2. 請求項1に記載の並列計算機において、
    前記記憶手段は、さらに、前記特定データのうちの、送信先のグループに属するそれぞれの計算機宛のデータ毎の、自計算機のメモリにおけるアドレスからなるリストであり、当該リスト内でのアドレスの記憶順序により、前記アドレスから読み出したデータのマルチキャストパケット内における搭載順序が定まるものである、前記グループ単位毎の搭載順序情報を記憶し、
    前記送信手段は、全対全通信時に、前記特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが前記搭載順序情報にて示された搭載順序に従って搭載され当該グループが送信先として指定されたマルチキャストパケットを生成する、並列計算機。
  3. 請求項1または2に記載の並列計算機において、
    前記グループ単位で当該グループに属する計算機にて計算機クラスタが構成される、並列計算機。
  4. 請求項1から3のいずれか1項に記載の並列計算機において、
    前記計算機は、前記グループに属する計算機の数が、全対全通信にて通信されるデータの量が多くなるほど少なくなるように、前記複数の計算機を前記グループにグルーピングするグルーピング手段を、さらに含む、並列計算機。
  5. マルチキャストパケットを受信すると当該マルチキャストパケットを当該マルチキャストパケットにて指定された送信先に送信する相互結合網を介して全対全通信を行う複数の計算機の1つとして使用され、前記複数の計算機が前記計算機の数よりも小さい数のグループにグルーピングされている、計算機であって、
    全対全通信時に前記グループ単位で当該グループに属する計算機に送信される特定データと、自計算機宛のデータがマルチキャストパケットに搭載された箇所を示す情報と、を記憶する記憶手段と、
    全対全通信時に、前記グループ単位で当該グループに属する計算機に送信される特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが搭載され当該グループが送信先として指定されたマルチキャストパケットを生成し、当該マルチキャストパケットを前記相互結合網に送信する送信手段と、
    前記相互結合網からマルチキャストパケットを受信すると、前記情報を参照して、当該マルチキャストパケットから自計算機宛のデータを抽出する抽出手段と、を含む計算機。
  6. 請求項5に記載の計算機において、
    前記記憶手段は、さらに、前記特定データのうちの、送信先のグループに属するそれぞれの計算機宛のデータ毎の、自計算機のメモリにおけるアドレスからなるリストであり、当該リスト内でのアドレスの記憶順序により、前記アドレスから読み出したデータのマルチキャストパケット内における搭載順序が定まるものである、前記グループ単位毎の搭載順序情報を記憶し、
    前記送信手段は、全対全通信時に、前記特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが前記搭載順序情報にて示された搭載順序に従って搭載され当該グループが送信先として指定されたマルチキャストパケットを生成する、計算機。
  7. 請求項5または6に記載の計算機において、
    前記グループ単位で当該グループに属する計算機にて計算機クラスタが構成される、計算機。
  8. 請求項5から7のいずれか1項に記載の計算機において、
    前記計算機は、前記グループに属する計算機の数が、全対全通信にて通信されるデータの量が多くなるほど少なくなるように、前記複数の計算機を前記グループにグルーピングするグルーピング手段を、さらに含む計算機。
  9. 複数の計算機と、前記複数の計算機を相互に接続する相互結合網と、を含み、前記複数の計算機が前記相互結合網を介して全対全通信を行い、前記複数の計算機が前記計算機の数よりも小さい数のグループにグルーピングされた並列計算機での通信方法であって、
    前記計算機が、全対全通信時に前記グループ単位で当該グループに属する計算機に送信される特定データと、自計算機宛のデータがマルチキャストパケットに搭載された箇所を示す情報と、を記憶手段に記憶する記憶ステップと、
    前記計算機が、全対全通信時に、前記グループ単位で当該グループに属する計算機に送信される特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが搭載され当該グループが送信先として指定されたマルチキャストパケットを生成し、当該マルチキャストパケットを前記相互結合網に送信する送信ステップと、
    前記相互結合網が、マルチキャストパケットを受信すると、当該マルチキャストパケットを、当該マルチキャストパケットにて指定された送信先に送信する転送ステップと、
    前記計算機が、前記相互結合網からマルチキャストパケットを受信すると、前記情報を参照して、当該マルチキャストパケットから自計算機宛のデータを抽出する抽出ステップと、を含む通信方法。
  10. マルチキャストパケットを受信すると当該マルチキャストパケットを当該マルチキャストパケットにて指定された送信先に送信する相互結合網を介して全対全通信を行う複数の計算機の1つとして使用され、前記複数の計算機が前記計算機の数よりも小さい数のグループにグルーピングされている、計算機での通信方法であって、
    全対全通信時に前記グループ単位で当該グループに属する計算機に送信される特定データと、自計算機宛のデータがマルチキャストパケットに搭載された箇所を示す情報と、を記憶手段に記憶する記憶ステップと、
    全対全通信時に、前記グループ単位で当該グループに属する計算機に送信される特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが搭載され当該グループが送信先として指定されたマルチキャストパケットを生成し、当該マルチキャストパケットを前記相互結合網に送信する送信ステップと、
    前記相互結合網からマルチキャストパケットを受信すると、前記情報を参照して、当該マルチキャストパケットから自計算機宛のデータを抽出する抽出ステップと、を含む通信方法。
  11. マルチキャストパケットを受信すると当該マルチキャストパケットを当該マルチキャストパケットにて指定された送信先に送信する相互結合網を介して全対全通信を行う複数の計算機の1つとして使用され、前記複数の計算機が前記計算機の数よりも小さい数のグループにグルーピングされている、コンピュータに、
    全対全通信時に前記グループ単位で当該グループに属する計算機に送信される特定データと、自計算機宛のデータがマルチキャストパケットに搭載された箇所を示す情報と、を記憶手段に記憶する記憶手順と、
    全対全通信時に、前記グループ単位で当該グループに属する計算機に送信される特定データを前記記憶手段から読み出し、前記グループ単位で、前記特定データが搭載され当該グループが送信先として指定されたマルチキャストパケットを生成し、当該マルチキャストパケットを前記相互結合網に送信する送信手順と、
    前記相互結合網からマルチキャストパケットを受信すると、前記情報を参照して、当該マルチキャストパケットから自計算機宛のデータを抽出する抽出手順と、を実行させるためのプログラム。
JP2009290787A 2009-12-22 2009-12-22 並列計算機、計算機、通信方法およびプログラム Active JP5540694B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009290787A JP5540694B2 (ja) 2009-12-22 2009-12-22 並列計算機、計算機、通信方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009290787A JP5540694B2 (ja) 2009-12-22 2009-12-22 並列計算機、計算機、通信方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2011133972A JP2011133972A (ja) 2011-07-07
JP5540694B2 true JP5540694B2 (ja) 2014-07-02

Family

ID=44346670

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009290787A Active JP5540694B2 (ja) 2009-12-22 2009-12-22 並列計算機、計算機、通信方法およびプログラム

Country Status (1)

Country Link
JP (1) JP5540694B2 (ja)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0676693B1 (en) * 1994-04-05 2000-08-23 International Business Machines Corporation Method and system for dynamically selecting a communication mode
US5787249A (en) * 1996-04-30 1998-07-28 International Business Machines Coporation Method for managing membership of a group of processors in a distributed computing environment
JPH11110362A (ja) * 1997-10-01 1999-04-23 Hitachi Ltd 計算機間データ通信方法
JP2000099487A (ja) * 1998-09-25 2000-04-07 Nippon Telegr & Teleph Corp <Ntt> マルチプロセッサシステムにおける同報通信方法及び送受信装置及び送信装置及び受信装置及びこの方法を記録した記録媒体
JP4290652B2 (ja) * 2002-11-05 2009-07-08 ライトフリート コーポレイション 光学的ファンアウト・ブロードキャスト接続
JP4291281B2 (ja) * 2005-02-03 2009-07-08 富士通株式会社 情報処理システム、計算ノード、情報処理システムの制御方法
WO2010073895A1 (ja) * 2008-12-26 2010-07-01 シャープ株式会社 通信システム、基地局装置および移動局装置
JP5133312B2 (ja) * 2009-09-09 2013-01-30 日本電信電話株式会社 情報転送システムおよび情報転送方法
WO2011058640A1 (ja) * 2009-11-12 2011-05-19 富士通株式会社 並列計算用の通信方法、情報処理装置およびプログラム

Also Published As

Publication number Publication date
JP2011133972A (ja) 2011-07-07

Similar Documents

Publication Publication Date Title
CN108062285B (zh) 一种访问NVMe存储设备的方法和NVMe存储设备
JP4528551B2 (ja) ストレージシステム
JP4763405B2 (ja) データ・フロー・アプリケーションのためのネットワーク・オン・チップ半自動通信アーキテクチャ
US9917884B2 (en) File transmission method, apparatus, and distributed cluster file system
US8204054B2 (en) System having a plurality of nodes connected in multi-dimensional matrix, method of controlling system and apparatus
US20210004171A1 (en) I/o request processing method and device
US20130188640A1 (en) Multicast miss notification for a distributed network switch
US20030159081A1 (en) Data transmission across asynchronous clock domains
WO2020259418A1 (zh) 一种数据访问方法、网卡及服务器
US9680931B1 (en) Message passing for low latency storage networks
CN104737142A (zh) 多时隙链路层流控制单元
CN103209210A (zh) 一种提高基于纠删码的存储集群恢复性能的方法
CN104662525A (zh) 并行计算机、节点装置以及并行计算机的控制方法
JP5347975B2 (ja) ネットワークスイッチ、経路設定方法およびプログラム
JP6070357B2 (ja) ストレージ装置
CN113259268A (zh) 一种支持冗余架构的网口与串口数据转发网关及方法
AU2014336967B2 (en) Network interface
US20240048475A1 (en) Interconnection device
JP2008225558A (ja) データ中継集積回路、データ中継装置およびデータ中継方法
JP5540694B2 (ja) 並列計算機、計算機、通信方法およびプログラム
US8386692B2 (en) Method for communicating between nodes and server apparatus
JP5435024B2 (ja) ネットワークスイッチ、経路設定方法、プログラムおよび並列計算機システム
US20200092196A1 (en) Parallel computer system, method of controlling a parallel computer system, and a non-temporary computer-readable medium that stores a program
WO2022267909A1 (zh) 一种数据读写方法以及相关装置
CN113434455B (zh) 一种基于fpga的光纤接口数据缓存管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140128

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140325

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: 20140408

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140421

R150 Certificate of patent or registration of utility model

Ref document number: 5540694

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150