JPWO2011058640A1 - 並列計算用の通信方法、情報処理装置およびプログラム - Google Patents
並列計算用の通信方法、情報処理装置およびプログラム Download PDFInfo
- Publication number
- JPWO2011058640A1 JPWO2011058640A1 JP2011540362A JP2011540362A JPWO2011058640A1 JP WO2011058640 A1 JPWO2011058640 A1 JP WO2011058640A1 JP 2011540362 A JP2011540362 A JP 2011540362A JP 2011540362 A JP2011540362 A JP 2011540362A JP WO2011058640 A1 JPWO2011058640 A1 JP WO2011058640A1
- Authority
- JP
- Japan
- Prior art keywords
- communication
- nodes
- node
- buffer
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/40—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1881—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management
Abstract
並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の方法にて第1のノードと複数の第2のノードの各々との間で移動する通信データの通信用のバッファへの配置を示す情報を、第1のノードがバリア同期または全ノードへのリダクションを使用した同報通信によって前記複数の第2のノードの各々に通知し、複数の第2のノードの各々が、通信用のバッファへの配置を示す情報を使用して第1のノードと前記複数の第2のノードの各々との間の通信データの転送を行う通信方法である。
Description
本発明は、並列計算用の通信方法、情報処理装置およびプログラムに関する。
並列計算機システムを用いた集団通信(Collective Communication)を実施する装置において、プロセッサ、メモリなどの部品に比較して相対的に低速度である通信経路を利用したデータ転送を削減し通信時間を短縮することが知られている。
集団通信には、同報通信、バリア同期(barrier synchronization)、ギャザ(gather)、全ノードへのギャザ、スキャッタ(scatter)、リダクション(reduction)、全ノードへのリダクション、全体全通信(all−to−all)等が含まれる。
同報通信とは同一のメッセージを複数のあて先に同時に送る通信方法である。バリア同期とは、同期用の関数の呼び出しが同期に参加する全てのノードで行われることで同期が完了する同期方法である。スキャッタとは、送信基点となるノードから複数のノードに対し、同報通信と同様に一斉にデータを送信する集団通信であって、送信先毎にデータが異なることを許容する通信方法である。又、ギャザとは、複数のノードからのデータを、ある1つの受信ノードに対し、一斉に集約する集団通信であり、スキャッタとは逆方向にデータを転送する通信方法である。リダクションとは、各ノードが演算対象をリダクション装置に送信し、演算結果をリダクション装置から受信する通信方法である。
ある種類の集団通信を別の種類の集団通信を組み合わせて実現することが知られている。例えば全ノードへのギャザ乃至全ノードへのリダクションは、それぞれ、1ノードでのギャザおよび1ノードでのリダクションと、その1ノードから、他の全てのノードへの同報通信を組み合わせて実現することができる。
Rajeev Thakur, Rolf Rabenseifner, William Gropp"Optimization of Collective Communication Operations in MPICH", International Journal of High Performance Computing Applications
Juan Fernandez, Eitan Frachtenberg, Fabrizio Petrini "BCS-MPI: A New Approach in the System Software Design for Large-Scale Parallel Computers", Proceedings of the ACM/IEEE SC2003 Conference (SC 03)
A. Gara et al. "Overview of the BlueGene/L system architecture", IBM J. RES & DEV. VOL. 49 NO. 2/3 MARCH/MAY 2005
"MPI: A Message-Passing Interface Standard", Message Passing Interface Forum, June 23, 2008 (URL: http://www.mpi-forum.org/docs/mpi21-report.pdf、2009年7月29日現在)
「MPI Reference, 3 集団通信」、東京工業大学、廣瀬研究室(URL:http://www.cv.titech.ac.jp/~hiro-lab/study/mpi_reference/chapter3.html、2009年7月29日現在)
An Online Publishing Project of Addison-Wesley Inc., Argonne National Laboratory, and the NSF Center for Research on Parallel Computation. "Designing and Building Parallel Programs v1.3" / dbpp@mcs.anl.gov, "Part II: Tools, 8 Message Passing Interface, 8.3 Global Operations"(URL:http://www.it.uom.gr/teaching/dbpp/text/node97.html、2009年7月29日現在)
"Concurrency: Mutual exclusion and synchronization" (URL: http://www.cs.helsinki.fi/u/alanko/rio/S02/kalvokopiot/ch3_p2.pdf、2009年5月14日現在)
"Barrier Synchronization", Maurice Herlihy & Nir Shavit (URL: http://www.cs.brown.edu/courses/cs176/ch17.ppt、2009年5月14日現在)
「RDMAプロトコル:ネットワークパフォーマンスの向上」(URL:http://h50146.www5.hp.com/products/servers/proliant/whitepaper/wp049_060331/pdfs/wp049_060330.pdf、2009年5月14日現在)
「高機能・高性能システムインターコネクト技術の開発」九州大学/富士通株式会社 石畑宏明(URL: http://www.psi-project.jp/images/event/hiroaki_ishihata_20061220.pdf、2009年5月14日現在)
「コレクティブ通信をサポートする高機能スイッチの開発」富士通株式会社 清水俊幸(URL: http://www.psi-project.jp/images/event/toshiyuki_shimizu_20080218.pdf、2009年5月14日現在)
富士通フォーラム2008「ペタスケールコンピューティングを担う先進技術」(URL: http://forum.fujitsu.com/2008/tokyo/exhibition/downloads/pdf/technology02_panf_jp.pdf、2009年5月14日現在)
並列計算におけるノード間通信方法としてのスキャッタおよびギャザ等の集団通信方法を実施する際に、限られた通信資源にて高性能を達成し得る構成を提供することが目的である。
並列計算用の集団通信にて、ノード間を転送される通信データの通信用のバッファへの配置を示す情報をバリア同期ないし全ノードへのリダクションを使用した同報通信により通知し、通信データの通信用のバッファへの配置を示す情報を使用してノード間のデータの転送を行う構成を設ける。
並列計算におけるノード間通信方法としてのスキャッタおよびギャザ等の集団通信方法を実施する際に、限られた通信資源にて高性能を達成し得る。
実施例の並列計算用の通信方法は、複数のノードが同時に並行してデータ処理演算を行って一の演算結果を求める並列計算(以下、「並列計算」と称する)においてノード間通信を行う際の通信方法に係る。実施例の並列計算用の通信方法は、以下に述べる(1)乃至(5)の集団通信用の通信方法のうちの少なくとも一の方法を含む。
(1)並列計算におけるノード間通信としてのスキャッタおよびギャザを含む複数の種類の集団通信において使用される通信資源として以下に述べる通信資源を使用する。尚、並列計算におけるノード間通信としてのスキャッタ、ギャザを夫々以下単にスキャッタ、ギャザと称する。すなわち1対1のノード間通信である1対1通信において使用される通信資源を集団通信においても使用する。また1対1通信を行う際に使用するデータ通信経路を、集団通信を高速化する際にも使用する。更に、並列計算を実行する各ノード上の通信装置、通信ケーブル、通信中継装置を含む通信資源を、集団通信においても使用する。尚通信装置とは例えば通信カードであり、通信カードとは例えばNIC(Network Interface Card)である。
(2)スキャッタおよびギャザを含む複数の種類の集団通信において共通に使用でき、有効かつ単純な通信方法として、以下に述べる通信方法を使用する。すなわち「(比較的)短いデータに対し信頼性のある同報通信方法」、「通信装置内にあってノードのソフトウェアから操作可能なバッファ」および「通信装置における、複数データの並列待ち合わせ方法」のうちの少なくとも一のものを使用する。
(1)並列計算におけるノード間通信としてのスキャッタおよびギャザを含む複数の種類の集団通信において使用される通信資源として以下に述べる通信資源を使用する。尚、並列計算におけるノード間通信としてのスキャッタ、ギャザを夫々以下単にスキャッタ、ギャザと称する。すなわち1対1のノード間通信である1対1通信において使用される通信資源を集団通信においても使用する。また1対1通信を行う際に使用するデータ通信経路を、集団通信を高速化する際にも使用する。更に、並列計算を実行する各ノード上の通信装置、通信ケーブル、通信中継装置を含む通信資源を、集団通信においても使用する。尚通信装置とは例えば通信カードであり、通信カードとは例えばNIC(Network Interface Card)である。
(2)スキャッタおよびギャザを含む複数の種類の集団通信において共通に使用でき、有効かつ単純な通信方法として、以下に述べる通信方法を使用する。すなわち「(比較的)短いデータに対し信頼性のある同報通信方法」、「通信装置内にあってノードのソフトウェアから操作可能なバッファ」および「通信装置における、複数データの並列待ち合わせ方法」のうちの少なくとも一のものを使用する。
ここで上記「(比較的)短いデータに対し信頼性のある同報通信」における「短い(データ)」の定義について以下に説明する。「短い」とは、単に「並列計算で同報通信したいデータの長さに比べて、当該同報通信1回で送れるデータが短い」ことを指す。「短い(データ)」の意義について更に以下に説明する。一般に通信方式の機能が限定されるほど、当該方式のハードウェアとしての実装は容易になる。「短い(データ)」としては、例えば「1回の物理パケット長より短いメッセージ」、制御パケット等の「固定長のヘッダ部分だけで、可変長のメッセージ本文がない」データ等が挙げられる。ここで「1回の物理パケット長より短いメッセージに限る」という制限や「固定長のヘッダ部分だけで、可変長のメッセージ本文がない」という制限つきの同報通信機能を想定する。当該想定において、上記制限付きに機能は、より一般の「複数の物理パケットからなるメッセージ本文つき」(すなわち「短い(データ)」でない場合の)同報通信機能に比べ、実現が容易であることに意味がある。
尚上記「(比較的)短いデータに対し信頼性のある同報通信方法」、「通信装置内にあってノードのソフトウェアから操作可能なバッファ」又は「通信装置における、複数データの並列待ち合わせ方法」は、集団通信の高速化の際に使用するものとする。
(3)「信頼性のある1対1通信」と「必ずしも信頼性のない同報通信」とを組み合わせて「信頼性のある同報通信方法」を構築する。そして当該「信頼性のある同報通信方法」をスキャッタ、ギャザを含む集団通信の実現あるいは当該集団通信の高速化の際に使用する。
(3)「信頼性のある1対1通信」と「必ずしも信頼性のない同報通信」とを組み合わせて「信頼性のある同報通信方法」を構築する。そして当該「信頼性のある同報通信方法」をスキャッタ、ギャザを含む集団通信の実現あるいは当該集団通信の高速化の際に使用する。
ここで「信頼性のある通信」とは、当該通信の手続が終了した際にデータが相手側に正しく届く保証のある通信を意味し、「必ずしも信頼性のない通信」とは、当該通信の手続が終了した際にデータが相手側に正しく届く保証のない通信を意味する。必ずしも信頼性のない同報通信としては、例えばマルチキャストによる通信がある。マルチキャストはネットワーク内で、複数の相手を指定して同じデータを送信する通信方法であり、通常、通信の手続が終了した際にデータが相手側に正しく届く保証はなく、よって「必ずしも信頼性のない通信」と言える。
(4)上記(1)乃至(3)の通信方法のうちの少なくとも一の方法を、RDMA(Remote Direct Memory Access)機能と組み合わせてスキャッタ、ギャザを含む集団通信の実現あるいは当該集団通信の高速化の際に使用する。
(5)上記(1)乃至(4)の通信方法のうちの少なくとも一の方法の実施において、システムの通信ネットワークに含まれる複数の通信ネットワークを共用する。そしてスキャッタ、ギャザを含む複数の集団通信の実現あるいは当該集団通信の高速化の際に使用する。
(4)上記(1)乃至(3)の通信方法のうちの少なくとも一の方法を、RDMA(Remote Direct Memory Access)機能と組み合わせてスキャッタ、ギャザを含む集団通信の実現あるいは当該集団通信の高速化の際に使用する。
(5)上記(1)乃至(4)の通信方法のうちの少なくとも一の方法の実施において、システムの通信ネットワークに含まれる複数の通信ネットワークを共用する。そしてスキャッタ、ギャザを含む複数の集団通信の実現あるいは当該集団通信の高速化の際に使用する。
すなわち実施例による並列計算用の通信方法は、並列計算を行うシステムにおけるノード間通信としての集団通信を実施する際の通信方法である。
並列計算システムにおける集団通信用の通信方式としては、大別して以下の3種類1)、2)、3)の方法がある。
1)第1の実現例として、各ノードが信頼性のある1対1通信により所定のアルゴリズムに従ってデータをノード間で転送することによって集団通信を実現する方法である。この方法では特に集団通信用の通信ネットワークや集団通信を高速化する機構を使わず、通常の1対1通信用の通信ネットワークを使用して集団通信を行う。そのため実現費用が低いことが利点である。上記「高速化する機構」とは、集団通信専用に設けられる装置等を指す。この方法に関連する技術としては、中継アルゴリズムの選択、システムが使用する通信資源の特性の利用等によって中継の各段において1対1通信を高速化する技術などがある。夫々の技術には転送回数を減らすこと等によって転送時間を短縮する点で一定の効果があるが、以下に述べる限界が考えられる。
1)第1の実現例として、各ノードが信頼性のある1対1通信により所定のアルゴリズムに従ってデータをノード間で転送することによって集団通信を実現する方法である。この方法では特に集団通信用の通信ネットワークや集団通信を高速化する機構を使わず、通常の1対1通信用の通信ネットワークを使用して集団通信を行う。そのため実現費用が低いことが利点である。上記「高速化する機構」とは、集団通信専用に設けられる装置等を指す。この方法に関連する技術としては、中継アルゴリズムの選択、システムが使用する通信資源の特性の利用等によって中継の各段において1対1通信を高速化する技術などがある。夫々の技術には転送回数を減らすこと等によって転送時間を短縮する点で一定の効果があるが、以下に述べる限界が考えられる。
同一データを複数ノードに送る処理、あるいは複数のノードからのデータの待ち合わせが必要な処理には、その際のノード数に比例した処理時間がかかる。このため多数ノードとの通信では中継処理が必要であり、その中継処理の回数はノード数の(2を底とする)対数の程度で増加する。
中継処理に際してはデータがネットワークインターフェースからノード内に入り、その後ネットワークインターフェースから出ていくので、ネットワークインターフェース通過の時間の2回分、中継処理毎に通信遅延が生ずる。
ネットワークインターフェースのバンド幅によっても、中継処理を含めた通信のバンド幅が制限される。
2)第2の実現例として、1対1通信で使用する通信経路に、特定の集団通信を行う機能を統合する方法がある。代表的な例としては一般的なデータ長に対し信頼性のある同報通信、および(データの転送方向が同報通信の逆である)他のノードのデータを集約する集団通信(ギャザ)を統合したシステムがある。上記一般的なデータ長とは、例えば通信装置がサポートする任意のパケットサイズを指す。統合した集団通信の高速化の有効性は原理的に高いが、回路の大規模化という物量の面から実現費用が高くなりやすいと考えられる。ここで統合した集団通信の高速化の有効性が原理的に高い理由は、集団通信専用に設けられるハードウェアを使用することによる。物量の面からの制約から、同報通信やギャザをハードウェアで実行可能なノードの集合に対し「所属するノードのアドレスが特定の条件(例えば、「全て連番」など)を満たす」などの制約をつける場合も多いと考えられる。
3)第3の実現例として、各種類の集団通信の夫々に専用のネットワークを用意する方法がある。代表的な例として、集団通信としてのバリア同期処理、リダクション処理の夫々に対し専用の通信ネットワークを用意する。さらに上記2)の方法も併用し、1対1通信で使用する通信経路に一般的なデータ長に対し信頼性のある同報通信機能を統合するシステムである。集団通信の高速化の有効性は原理的に高いが、システム全体としての部品点数の増加により、個々の部品の回路規模の面で物量の制約が厳しくなることが考えられる。個々の部品の性能が出る条件が限定されることにより、システム全体としても性能が出る使用方法が限定されやすいと考えられる。
2)第2の実現例として、1対1通信で使用する通信経路に、特定の集団通信を行う機能を統合する方法がある。代表的な例としては一般的なデータ長に対し信頼性のある同報通信、および(データの転送方向が同報通信の逆である)他のノードのデータを集約する集団通信(ギャザ)を統合したシステムがある。上記一般的なデータ長とは、例えば通信装置がサポートする任意のパケットサイズを指す。統合した集団通信の高速化の有効性は原理的に高いが、回路の大規模化という物量の面から実現費用が高くなりやすいと考えられる。ここで統合した集団通信の高速化の有効性が原理的に高い理由は、集団通信専用に設けられるハードウェアを使用することによる。物量の面からの制約から、同報通信やギャザをハードウェアで実行可能なノードの集合に対し「所属するノードのアドレスが特定の条件(例えば、「全て連番」など)を満たす」などの制約をつける場合も多いと考えられる。
3)第3の実現例として、各種類の集団通信の夫々に専用のネットワークを用意する方法がある。代表的な例として、集団通信としてのバリア同期処理、リダクション処理の夫々に対し専用の通信ネットワークを用意する。さらに上記2)の方法も併用し、1対1通信で使用する通信経路に一般的なデータ長に対し信頼性のある同報通信機能を統合するシステムである。集団通信の高速化の有効性は原理的に高いが、システム全体としての部品点数の増加により、個々の部品の回路規模の面で物量の制約が厳しくなることが考えられる。個々の部品の性能が出る条件が限定されることにより、システム全体としても性能が出る使用方法が限定されやすいと考えられる。
並列計算において複数のノードが協調して行う通信である「集団通信」の性能向上に際し、集団通信の種類に固有の通信パターンに適した配線接続(トポロジー)や特別な仕組みを持つ通信方式や高速化機構を使用することが有効と考えられる。上記高速化機構とは、集団通信の種類に固有な専用の装置を指す。一方、多数のノードからなる並列計算機システムの制作に際しては、ネットワークの特定の構成部品に対する物量上の制約が大きい場合が多いと考えられる。どの部品への制限が支配的になるかは、システムの構造や通信媒体の性質に依存する。代表的な例として、各ノードの通信インタフェース数、通信ケーブルおよび通信中継装置の総数、個々の構成部品の回路規模等による制限が考えられる。これらの制限のため集団通信専用ネットワークの作成や各集団通信の種類毎の高速化機構を設置する代わりに1対1通信の組み合わせで集団通信を行う構成を採用する場合が考えられる。実施例による並列計算用の通信方法では、ネットワーク構成部品の物量の増加を抑えた集団通信用のネットワークによって、高性能な並列計算における集団通信を実現する。
実施例による並列計算用の通信方法は、上記の如く、以下に示す(1)、(2)、(3)、(4)、(5)の方法のうちの少なくとも一の方法を使用する。
(1)スキャッタ、ギャザを含む各種の集団通信に共通の通信経路ないし高速化機構において、1対1通信のデータ通信経路と、並列計算を実行するノード上の通信インタフェース、通信ケーブル、通信中継装置を含む通信機構を利用する。このようにしてネットワーク全体で実現費用を抑える。
(2)スキャッタ、ギャザを含む複数の種類の集団通信に対し共通に有効かつ単純な機構としての以下の構成(i)、(ii)、(iii)を使用する。すなわち、(i)上記(比較的)短いデータに対し信頼性のある同報通信、(ii)通信装置内にあって並列計算を実行するノードのソフトウェアから操作可能なバッファ、および(iii)通信装置での複数データの並列待ち合わせ機構を使用する。使用方法としては、上記構成(i)、(ii)、(iii)のうちの一のもの、あるいは複数を組み合わせて使用する。具体例につき後述する。このようにして複数の種類の集団通信に共通の構成を設けることにより、個々の種類の集団通信専用の通信経路や高速化機構を作る場合に生じ得る回路規模の増大を抑える。
(3)上記(比較的)短いデータに対し信頼性のある同報通信を持たない通信方式を採用する場合に、「信頼性のある1対1通信」と「必ずしも信頼性のない同報通信」とを組み合わせて「信頼性のある同報通信」を実現する。そして当該「信頼性のある同報通信」を、スキャッタ、ギャザを含む集団通信を高速化する手段として利用する。
(4)上記(1)乃至(3)の方法のうちの少なくとも一の方法を、RDMA機能と組み合わせてスキャッタ、ギャザを含む各種の集団通信を行う。
(5)上記(1)乃至(4)の方法のうちの一又は複数の方法を実施する際、システムのネットワークが含む複数のネットワークを利用する。
(1)スキャッタ、ギャザを含む各種の集団通信に共通の通信経路ないし高速化機構において、1対1通信のデータ通信経路と、並列計算を実行するノード上の通信インタフェース、通信ケーブル、通信中継装置を含む通信機構を利用する。このようにしてネットワーク全体で実現費用を抑える。
(2)スキャッタ、ギャザを含む複数の種類の集団通信に対し共通に有効かつ単純な機構としての以下の構成(i)、(ii)、(iii)を使用する。すなわち、(i)上記(比較的)短いデータに対し信頼性のある同報通信、(ii)通信装置内にあって並列計算を実行するノードのソフトウェアから操作可能なバッファ、および(iii)通信装置での複数データの並列待ち合わせ機構を使用する。使用方法としては、上記構成(i)、(ii)、(iii)のうちの一のもの、あるいは複数を組み合わせて使用する。具体例につき後述する。このようにして複数の種類の集団通信に共通の構成を設けることにより、個々の種類の集団通信専用の通信経路や高速化機構を作る場合に生じ得る回路規模の増大を抑える。
(3)上記(比較的)短いデータに対し信頼性のある同報通信を持たない通信方式を採用する場合に、「信頼性のある1対1通信」と「必ずしも信頼性のない同報通信」とを組み合わせて「信頼性のある同報通信」を実現する。そして当該「信頼性のある同報通信」を、スキャッタ、ギャザを含む集団通信を高速化する手段として利用する。
(4)上記(1)乃至(3)の方法のうちの少なくとも一の方法を、RDMA機能と組み合わせてスキャッタ、ギャザを含む各種の集団通信を行う。
(5)上記(1)乃至(4)の方法のうちの一又は複数の方法を実施する際、システムのネットワークが含む複数のネットワークを利用する。
図1は実施例による並列計算用の通信方法に適用可能な、集団通信用の機構の使用例を概念的に示すブロック図であり、上記方法(1)の実現例を示す。
図1中、ノード11,12,13,14,15,16,17,18は、夫々並列計算を行うノードである。又、図1中の通信中継装置R1,R2,R3,R4は、各々が1対1通信と集団通信とに共通して使用される通信中継装置である。尚通信中継装置とは、例えばいわゆるスイッチ、あるいはルータである。各ノード11乃至18が1対1通信に使用される通信中継装置R1乃至R4を集団通信においても使用することにより、システム全体で要される通信資源の量を効果的に削減できる。ここで1対1通信とは、例えばTCP/IP(Transmission Control Protocol/Internet Protocol)を利用した通信、更にRDMA機能を利用した通信等である。
なお、以後の、各図面を参照しての説明における「バッファ」としては、「ネットワーク上の記憶装置のアドレスと当該記憶装置上のアドレスとの対を指定することによって他の全てのノードから送信データをRDMA機構により取得可能なネットワーク上の記憶装置」を使用する。例えば、以下の(p)乃至(r)のような場所の記憶装置を通信用のバッファとして使用する。また、当該(p)乃至(r)のような場所を複数併用してもよい。通信用のバッファの具体例につき、図20とともに後述する。
(p)送信側のノード自体が持つメモリ、あるいは送信側のノードが有する通信カード上のメモリ。
(q)通信中継装置自体が持つメモリ、あるいは通信中継装置が有する通信カード上のメモリ。
(r)ネットワーク上の記憶装置(通信中継装置内のメモリ、あるいは通信中継装置に連動するメモリ)。
(p)送信側のノード自体が持つメモリ、あるいは送信側のノードが有する通信カード上のメモリ。
(q)通信中継装置自体が持つメモリ、あるいは通信中継装置が有する通信カード上のメモリ。
(r)ネットワーク上の記憶装置(通信中継装置内のメモリ、あるいは通信中継装置に連動するメモリ)。
ここで通信用のバッファとしてのメモリの実装位置の違いによる影響は、下記の(a)乃至(d)の範囲に限定される。
(a)通信手順上で使用するRDMA機能の実施に際しての「ネットワーク上の送信データの場所(ネットワーク上の記憶装置のアドレスと、当該記憶装置上のアドレスとの対)」の差
(b)RDMA機能を起動する際に使用されるコマンド(ないしコマンド列)の差
(c)通信用のバッファの実装位置による通信遅延の差(例えば、NICや通信中継装置等の通信装置上のメモリを使用する場合、送信側のノードのメモリ(主記憶)を使用する場合に比べ、送信データがネットワークに送出される際の遅延時間が、一般的には小さい)
(d)通信用のバッファの実装位置による容量の差(通信装置上のメモリの容量は、送信側のノードの主記憶の容量に比べ、一般的には小さい)
説明の便宜上、上記(p)乃至(r)のメモリを区別せずに単に通信用のバッファと称する。
(b)RDMA機能を起動する際に使用されるコマンド(ないしコマンド列)の差
(c)通信用のバッファの実装位置による通信遅延の差(例えば、NICや通信中継装置等の通信装置上のメモリを使用する場合、送信側のノードのメモリ(主記憶)を使用する場合に比べ、送信データがネットワークに送出される際の遅延時間が、一般的には小さい)
(d)通信用のバッファの実装位置による容量の差(通信装置上のメモリの容量は、送信側のノードの主記憶の容量に比べ、一般的には小さい)
説明の便宜上、上記(p)乃至(r)のメモリを区別せずに単に通信用のバッファと称する。
図1中、機構C1,C2,C3,C4は集団通信用の機構である。集団通信用の機能とは、例えば図15乃至図19とともに後述する「バリア同期」や「リダクション」を実現する回路や装置、あるいは「通信データの通信用のバッファ」等である。又、上記方法(2)における(i)(比較的)短いデータに対し信頼性のある同報通信を行う機構、あるいは(ii)通信装置内にあって並列計算を実行するノードのソフトウェアから操作可能なバッファである。あるいは上記方法(2)における(iii)通信装置での複数データの並列待ち合わせ機構である。あるいは上記方法(3)における「「信頼性のある1対1通信」と「必ずしも信頼性のない同報通信」とを組み合わせて構築する「信頼性のある同報通信」」を実行する機構である。あるいは上記方法(4)におけるRDMA機能を実行する機構、あるいは上記方法(5)における複数のネットワークである。
図2は、上記方法(2)の実現例について概念的に説明するブロック図である。図2中、ノード11,12,13,14は、並列計算を行うノードであり、夫々が通信カード(例えばNIC)11a,12a、13a、14aを有する。各ノード11乃至14は、通信中継装置R11を介し、相互に通信可能に接続され、ネットワークを形成する。上記方法(2)の(i)(比較的)短いデータに対し信頼性のある同報通信は、例えば上記バリア同期や全ノードへのリダクションを使用して実現される。バリア同期や全ノードへのリダクションを実現する回路は例えば通信中継装置R11内に設けられ、あるいは専用のリダクション装置に設けられる。ノード11乃至14は、スキャッタ、ギャザ等の集団通信を実施する際、通信データの通信用のバッファへの配置を示す情報を伝達する手段として上記方法(2)における信頼性のある同報通信あるいは上記方法(3)における信頼性のある同報通信を利用する事ができる。方法(2)の信頼性のある同報通信を効率的に実現する手段として、バリア同期や全ノードへのリダクションを利用することができる。この点につき、図9A乃至13Bまたは、図17乃至図19とともに後述する。
上記方法(2)の(ii)通信装置内にあって並列計算を実行するノードのソフトウェアから操作可能なバッファを有する通信装置あるいはノードとして、通信装置あるいはノードN11を設けることができる。当該バッファの用途として、例えば後述する図4A,ステップS1、図5A,ステップS11における「データ用バッファ」、図9A,ステップS31における「バッファ」としての用途が挙げられる。又、図11A,ステップS41における「通信用のバッファ」、図15,ステップS101における「通信データの通信用のバッファ」としての用途が挙げられる。
上記方法(2)の(iii)通信装置での複数データの並列待ち合わせ機構として、例えば以下の構成が挙げられる。すなわち、後述する図9A、ステップS33の「受信完了を待ち合わせる」構成、図11A,ステップS42の「送信データの受信完了待ち」の構成、図12A,ステップS52の「全データの受信完了を待ち合わせる」構成等である。これらの構成としては、例えば上記バリア同期を実行する構成が挙げられる。
図3は、上記方法(2)の(ii)通信装置内にあって並列計算を実行するノードのソフトウェアから操作可能なバッファとして利用可能な、通信カード上のバッファ、あるいは通信中継装置と連動するバッファを説明するブロック図である。ここで通信中継装置と連動するバッファとは、通信中継装置がデータを中継する際、当該通信中継装置の機能として、自動的に当該データを記録する際の記録先のバッファを意味する。当該記録先のバッファとは、例えば図3の例では、通信中継装置R21がデータを記録する通信カード12cのバッファ12cbを意味する。なお「バッファを保持する専用ノード」を別途設けることも可能であり、その場合当該バッファを保持する専用ノードをソフトウェアによって通信手順上に割り当てて使用することができる。すなわち通信手順を規定するソフトウェアが、バッファを保持する専用ノードを使用する手順を含むようにすることができる。
図3中、ノード11,12は夫々並列計算を実行するノードであり、夫々通信カード(NIC等)11c、12cを有する。ノード11,12は通信中継装置R21を介し相互に通信可能に接続され、ネットワークを形成する。ノード11,12は夫々主記憶装置内にバッファ11b、12bを有し、又、通信カード11c、12cも夫々バッファ11cb、12cbを有する。これらバッファ11b、12b、11cb、12cbは、上記「通信装置内にあって並列計算を実行するノードのソフトウェアから操作可能なバッファ」として利用可能なバッファである。また、大規模なネットワークでは何段もの階層的な中継処理が必要であるが、以下の説明では便宜上、中継処理がある場合は「中継処理の1段分」のみを表記する。
図3中、ノード11、ノード12を含むノード間で集団通信が実施される場合、例えばノード11からノード12にデータが転送される。その際、ノード11のバッファ11bから通信カード11cのバッファ11cbにデータが転送され、更に通信中継装置R21を介して通信カード12cのバッファ12cbに転送され、更にノード12のバッファ12bに転送される。各バッファ間のデータの転送は、TCP/IP、あるいは更にRDMA機能を利用して実施することができる。各バッファ間のデータの転送の詳細につき、図9B乃至13Bとともに後述する。
上記方法(2)における(iii)通信装置での複数データの並列待ち合わせ機構として、例えば上記「バリア同期」を用いることができる。上記の如く、バリア同期とは、同期用の関数の呼び出しが同期に参加する全てのノードで行われることで同期が完了する同期方法である。高速なバリア同期機構を備えたネットワークが大規模な並列計算システムではしばしば使用される。それらの並列計算システムに実施例による並列計算用の通信方法を適用できる。
次に上記方法(3)の実現例について説明する。上記方法(3)では、各ノードに付属する通信装置が必ずしも信頼性のない同報通信機能を持ち、かつ、信頼性のある1対1通信を持つ場合に、これらを組み合わせて信頼性のある同報通信機能を実現する。具体的には、1対1通信による通信データのリカバリを実行することにより、信頼性を確保する。リカバリの方法として、例えば後述する(a)再送による方法、(b)送信データに冗長性を持たせる方法、がある。
その結果、必ずしも信頼性のない同報通信で信頼性のある同報通信を実現することができる。例えば信頼性のある1対1通信の繰り返しによって送信データのリカバリに必要なデータ(以下「リカバリ情報」と称する)を送信する。リカバリ情報の送信は、「必ずしも信頼性のない同報通信」による送信データの転送の前でも後でもよい。リカバリ情報は送信データの完全性のチェックと送信データのリカバリに必要な情報を含み、例えば送信データのサイズ、エラー検出コード、場合によってはタイムアウト時間その他の情報を含む。尚、当該(3)の方法で実現する信頼性のある同報通信は、実施例による並列計算用の通信方法による集団通信において、例えば図9A,ステップS32,図9B,ステップS34における「信頼性のある同報通信」として使用され得る。同様に当該(3)の方法で実現する信頼性のある同報通信は、実施例による並列計算用の通信方法による集団通信において、例えば図12A,ステップS51,図12B,ステップS53における「信頼性のある同報通信」として使用され得る。
リカバリ情報の送信が「必ずしも信頼性のない同報通信」による送信データの転送の前の場合、受信側のノードが送信データを受け取った直後に送信データの正当性を確認できる。このため、各々の送信データに対する通信用のバッファの割付時間を短くすることが可能となる。
リカバリ情報の送信が「必ずしも信頼性のない同報通信」による送信データの転送の後の場合、例えば予め送信データの中に誤り訂正符合を埋め込んでおくことができる。その結果、送信データのパケット全体が消失していない限り送信データを再度転送することなしに送信データのリカバリが可能になる場合がある。
送信データのリカバリの方法として、例えば以下の方法(a)、(b)が考えられる。
(a)再送による方法
(1)受信側のノードが受信したデータのパケット異常を検出して送信側のノードに送信データの再送を要求する。
(1)受信側のノードが受信したデータのパケット異常を検出して送信側のノードに送信データの再送を要求する。
(2)送信側のノードが、受信側のノードからの受信確認応答のタイムアウトを検出した場合、送信データを再送する。
(b)送信データに冗長性を持たせる方法
Forward Error Correction(FEC:前方誤り訂正)等を利用することができる。すなわち送信するデータを複数のパケットに分けて送信する際、誤り訂正符号化処理により、例えばN+1パケットを送信する。この場合、N+1パケットのうちNパケットを正しく受信できれば元のデータが復元できるように送信データを変換して送信する。
Forward Error Correction(FEC:前方誤り訂正)等を利用することができる。すなわち送信するデータを複数のパケットに分けて送信する際、誤り訂正符号化処理により、例えばN+1パケットを送信する。この場合、N+1パケットのうちNパケットを正しく受信できれば元のデータが復元できるように送信データを変換して送信する。
以下図4A乃至7Cとともに、上記(3)の方法の実現例について説明する。
図4A,4Bとともに、リカバリ情報を送信データの前に送信する場合の動作の流れについて説明する。
図4A中、送信側のノードは、必ずしも信頼性のない同報通信(後述するステップS3)と、リカバリの際の信頼性のある1対1通信(後述するスップS7)との両方で使用するデータ用のバッファを設定する(ステップS1)。次に送信側ノードは、信頼性のある1対1通信によりリカバリ情報を送信する(ステップS2)。この場合図6Aとともに後述するように、リカバリ情報は同報通信の段階毎(階層毎)に順次ノード間で転送される。同報通信の段階(階層)とは、同報通信を複数回繰り返して順次データを転送する際の、同報通信の回数を意味する。また図6Aに示す如く各同報通信の段階(階層)において送信先が複数の場合、信頼性のある1対1通信を送信先のノード数分繰り返すことにより、当該複数の送信先に対する同報を達成する。信頼性のある1対1通信は、例えばRDMA機能の利用により実現可能である。
次に送信側のノードは、必ずしも信頼性のない同報通信によって送信データを送信する(ステップS3)。
図4B中、受信側のノードは、上記ステップS2で送信側のノードから送信されたリカバリ情報を、上記信頼性のある1対1通信により受信する(ステップS4)。この場合も、リカバリ情報は同報通信の段階毎(階層毎)に順次ノード間で転送される。次に受信側のノードは、上記ステップS3にて送信側のノードから必ずしも信頼性のない同報通信によって送信された送信データを、当該必ずしも信頼性のない同報通信によって受信する(ステップS5)。次に受信側のノードは、上記受信したリカバリ情報に基づいて、誤り検出及び訂正若しくは再送処理等を行うことにより、上記受信した送信データの完全性をチェックし、受信した送信データのリカバリが必要か否か判断する(ステップS6)。リカバリが必要な場合(YES)、信頼性のある1対1通信によって受信した送信データのリカバリを行う(ステップS7)。信頼性のある1対1通信としては、例えばRDMA機能による通信を使用することができる。受信した送信データの誤り検出及び訂正若しくは再送処理等のリカバリが不要の場合(ステップS6のNO)、動作を終了する。
次に図5A,5Bとともに、リカバリ情報を送信データの後に送信する場合の動作の流れについて説明する。
図5A中、送信側のノードは、必ずしも信頼性のない同報通信(後述するステップS12)と、リカバリの際の信頼性のある1対1通信(後述するスップS17)との両方で使用するデータ用のバッファを設定する(ステップS11)。次に送信側のノードは、必ずしも信頼性のない同報通信によって送信データを送信する(ステップS12)。上記の如く、必ずしも信頼性のない同報通信としては、例えばマルチキャストによる通信を使用し得る。次に送信側ノードは、信頼性のある1対1通信により、リカバリ情報を送信する(ステップS13)。この場合図6Aとともに後述するように、リカバリ情報は同報通信の段階毎(階層毎)に順次ノード間で転送される。また図8Bに示す如く、各同報通信の段階毎(階層毎)に送信先が複数の場合、信頼性のある1対1通信を送信先の個数分繰り返すことにより、当該複数の送信先に対する同報を達成する。信頼性のある1対1通信は、例えばRDMA機能の利用により実現可能である。
図5B中、受信側のノードは、上記ステップS12にて送信側のノードから必ずしも信頼性のない同報通信によって送信された送信データを、当該必ずしも信頼性のない同報通信によって受信する(ステップS14)。次に受信側のノードは、上記ステップS13で送信側のノードから信頼性のある1対1通信で送信されたリカバリ情報を、当該信頼性のある1対1通信により受信する(ステップS15)。この場合も、リカバリ情報は同報通信の段階毎(階層毎)に順次ノード間で転送される。次に受信側のノードは、上記受信したリカバリ情報に基づいて上記受信した送信データの完全性をチェックし、受信したデータのリカバリが必要か否か判断する(ステップS16)。リカバリが必要な場合(YES)、信頼性のある1対1通信によって受信した送信データのリカバリを行う(ステップS17)。信頼性のある1対1通信としては、例えばRDMA機能による通信を使用することができる。受信した送信データのリカバリが不要の場合(ステップS16のNO)、動作を終了する。
次に図6A,6B,6Cとともに、図4A,4Bとともに説明した、リカバリ情報を送信データの前に送信する場合につき、具体例を挙げて説明する。
図6A,6B,6Cの具体例は、受信側のノードが送信データのリカバリを行う場合、RRDMA(Read Remote Direct Memory Access)機能を使用する例である。RRDMA機能とは、他ノードのメモリのアドレスを指定してデータを直接転送する機能であるRDMA機能のうち、受信側から通信を開始する場合の機能を指す。RRDMA機能はGet機能とも称される。図6A,6B,6Cの例の場合、並列計算用の通信ネットワークがRRDMA機能を有し、RRDMA機能の使用によって受信ノード側が送信データのリカバリを起動する。例えば、後述する図6Cのステップで、受信側のノードが、RRDMA機能により、同じく後述する図6Bのステップで一旦受信した送信データを、当該受信側のノードに再度転送する。当該具体例はRRDMA機能を利用するため、上記方法(3)と方法(4)との組み合わせの例と言える。
なお上記RDMA機能とはリモートホストのメモリにCPUを介さず直接値を書き込むアクセス機能である。RDMA機能によればCPUへの負荷が非常に小さく、かつ極めて小さい遅延で通信できることが可能となる。InfiniBand、Virtual Interface Architecture(VIA)、iWarpなどの通信規格においては、RDMA機能は標準的な機能として定義されている。なおiWarpはEthernet上のTCP/IPコネクションを通してRDMAを行う機能(RDMA over TCP/IP)を含む。いずれの規格によるRDMA機能の実現も(実装手段の細部は異なるが)基本機能の面では、特に違いはない。非特許文献9には上記RDMA over TCP/IPとRDMA over InfiniBandの技術解説が記載されている。
図6A,6B,6Cの具体例の場合は、送信側のノード11が、受信側のノード21,22,31,32,33、34に対し、同報を行う。図6A,6B,6Cに示す如く、各ノード11,21,22,31,32,33,34は、夫々データ用のバッファ11b,21b,22b,31b,32b,33b,34bを設定する。第1のステップで図6Aに示す如く、送信側のノード11から、リカバリ情報の同報通信の第1段階の受信側のノード21,22に対し、リカバリ情報を同報する。実際には上記の如く信頼性のある1対1通信で受信側のノード21,22の夫々に対し順次リカバリ情報が送信される。リカバリ情報は上記の如く、送信するデータの伝送エラー検出および回復用情報として、データの大きさ、エラー検出コード、タイムアウト時間などの情報を含む。
次に、このようにリカバリ情報を受信したリカバリ情報の同報通信の第1段階の受信側のノード21,22は、リカバリ情報の同報通信の第2段階の受信側のノード31,32,33,34に対し、夫々当該リカバリ情報を同報する。この場合も実際には上記の如く信頼性のある1対1通信でノード21,22からノード31,32,33,34の夫々に対し、順次リカバリ情報が送信される。
第2のステップでは図6Bに示す如く、送信側のノード11は必ずしも信頼性のない同報通信(例えばマルチキャスト)により全ての受信側のノード21,22,31,32,33,34に対し送信データを送信する。その結果、送信側のノード11のバッファ11bから、受信側のノード21,22,31,32,33,34の夫々のバッファ21b,22b,31b,32b,33b,34bに送信データが転送される。上記必ずしも信頼性のない同報通信は、例えば上記の如く、マルチキャストによる同報通信とすることができる。
第3のステップでは図6Cに示す如く、受信した送信データのリカバリが必要(図4BのYES)な受信側のノード21,32,33が、夫々RRDMA機能により受信した送信データのリカバリを行う。
次に図7A,7B,7Cとともに、図5A,5Bとともに説明した、リカバリ情報を送信データの後の送信する場合につき、具体例を挙げて説明する。
図7A,7B,7Cの具体例も、上記した図6A,6B,6Cの具体例と同様、受信側のノードが受信した送信データのリカバリを行う場合、RRDMA機能を使用する。当該具体例もRRDMA機能を利用するため、上記方法(3)と方法(4)との組み合わせの例と言える。
図7A,7B,7Cの具体例の場合も図6A,6B,6Cの具体例同様、送信側のノード11が、受信側のノード21,22,31,32,33、34に対し、同報を行う。図7A,7B,7Cに示す如く、各ノード11,21,22,31,32,33,34は、夫々データ用のバッファ11b,21b,22b,31b,32b,33b,34bを設定する。第1のステップでは図7Aに示す如く、送信側のノード11は必ずしも信頼性のない同報通信により全ての受信側のノード21,22,31,32,33,34に対し送信データを送信する。その結果、送信側のノード11のバッファ11bから、受信側のノード21,22,31,32,33,34の夫々のバッファ21b,22b,31b,32b,33b,34bに対し、送信データが転送される。上記必ずしも信頼性のない同報通信は、例えば上記の如く、マルチキャストによる同報通信とすることができる。
第2のステップで図7Bに示す如く、送信側のノード11から、リカバリ情報の同報通信の第1段階の受信側のノード21,22に対し、リカバリ情報を同報する。実際には上記の如く信頼性のある1対1通信で受信側のノード21,22の夫々に対し順次リカバリ情報が送信される。リカバリ情報は上記の如く、送信するデータの伝送エラー検出および回復用情報として、データの大きさ、エラー検出コード、タイムアウト時間などの情報を含む。リカバリ情報のデータフォーマット例につき、図21とともに後述する。
次に、このようにリカバリ情報を受信したリカバリ情報の同報通信の第1段階の受信側のノード21,22は、リカバリ情報の同報通信の第2段階の受信側のノード31,32,33,34に対し、夫々当該リカバリ情報を同報する。この場合も実際には上記の如く信頼性のある1対1通信でノード21,22からノード31,32,33,34の夫々に対し、順次リカバリ情報が送信される。
第3のステップでは図7Cに示す如く、受信した送信データのリカバリが必要(図4BのYES)な受信側のノード21,32,33が、夫々RRDMA機能により受信した送信データのリカバリを行う。
次に図8とともに、上記(5)の方法について説明する。図8の例では上記(5)の方法における「複数のネットワーク」として、第1のネットワークおよび第2のネットワークを使用する。
図8中、第1のネットワークは通信中継装置R31を有し、「短いデータに対し信頼性のある同報通信」の機能をサポートする。当該短いデータに対し信頼性のある同報通信は、実施例による並列計算用の通信方法において、例えば上述する図9A,ステップS32,図9B,ステップS34における「信頼性のある同報通信」として使用され得る。同様に当該短いデータに対し信頼性のある同報通信は、実施例による並列計算用の通信方法において、例えば後述する図12A,ステップS51,図12B,ステップS53における「信頼性のある同報通信」としても使用され得る。すなわち送信側のノード11は通信カード11c1を使用し、第1のネットワークの通信中継装置R31を介して「通信データの通信用のバッファへの配置を示す情報」を送信する。受信側の各ノード21は通信カード21c1を使用し、第1のネットワークの通信中継装置R31を介して「通信データの通信用のバッファへの配置を示す情報」を受信する。
他方、第2のネットワークは通信中継装置R32を有し、信頼性のある1対1通信方法(RRDMAあるいはWRDMA(Write Remote Direct Memory Access)機能による通信方法等)をサポートする。ここでWRDMA機能とは、他ノードのメモリからデータを直接転送する機能であるRDMA機能のうち、送信側から通信を開始する機能を言う。当該信頼性のある1対1通信は、実施例による並列計算用の通信方法において、例えば後述する図9B,ステップS35における「RRDMA」機能によるデータ転送の手段として使用され得る。同様に当該信頼性のある1対1通信は、実施例による並列計算用の通信方法において、例えば後述する図12B,ステップS54における「WRDMA」機能によるデータ転送の手段としても使用され得る。すなわち受信側の各ノード21は通信カード21c2を使用し、第2のネットワークの通信中継装置S2を介し、送信側のノード11の通信カード11c2から、通信データを受信(図9B,ステップS35)する。あるいは送信側の各ノード21は通信カード21c2を使用し、第2のネットワークの通信中継装置S2を介し、更に通信カード11c2を介し、受信側のノード11に対し、通信データを送信(図12B,ステップS54)する。
このように上記(5)の方法によれば、実施例による並列計算用の通信方法における「短いデータに対し信頼性のある同報通信」および「信頼性のある1対1通信」の夫々につき、異なる2つのネットワーク、第1および第2のネットワークを使用することができる。
以下に実施例による並列計算用の通信方法につき、図9A乃至図13Bとともに説明する。
実施例による並列計算用の通信方法では、システム構成に依存して物量面の制約が支配的なネットワークの部分を、並列計算におけるノード間通信のうちの1対1通信と、スキャッタ、ギャザを含む複数の種類の集団通信とが共用する。すなわちシステム構成に依存して物量面の制約が支配的なネットワークの部分を、並列計算におけるノード間通信のうちの1対1通信の際に使用する。同時に、当該ネットワークの部分を、スキャッタ、ギャザを含む複数の種類の集団通信の際にも使用する。その結果、1対1通信の際に使用するネットワークと、スキャッタ、ギャザを含む複数の種類の集団通信の際に使用するネットワークとを個別に設ける場合に比し、システムの実現費用を抑え、且つ、システム全体としての性能の維持が果たせる。
まず実施例1による並列計算用の通信方法につき、図9A乃至図11Bとともに説明する。
実施例1では、短いデータに対し信頼性のある同報通信の機能および1対1通信としてのRRDMA機能を使用し、スキャッタを高速化する。上記の如くRDMA機能によれば極めて小さい遅延で通信を行い得る。RRDMA機能は上記の如くRDMA機能のうち受信側から通信を開始する場合の機能であるから、スキャッタにおけるデータ転送をRRDMA機能で行うことにより、スキャッタを高速化し得る。
図9A中、送信側のノードは、複数の受信側のノードの各々に送信する通信データを通信用のバッファに配置(格納)する(ステップS31)。ここで通信用のバッファとして、例えば図2に示される通信装置あるいはノードN11が有するバッファ、図3に示される各バッファ11b、11cb、12b、12cb等を利用することができる。次に送信側のノードは、「短いデータに対し信頼性のある同報通信」により、通信データの通信用のバッファへの配置完了メッセージ(以下単に「配置完了メッセージ」と称する)を通知する(ステップS32)。当該「配置完了メッセージ」は、「通信データを通信用のバッファへ配置した旨の通知」と、「通信データの通信用のバッファへの配置状況を示す情報」とを含む。「配置完了メッセージ」は、「通信データの通信用のバッファへの配置を示す情報」に対応する。すなわち「通信データの通信用のバッファへの配置を示す情報」は、「通信データを通信用のバッファへ配置した旨の通知」と、「通信データの通信用のバッファへの配置状況を示す情報」とを含む。上記「通信データの通信用のバッファへの配置状況を示す」とは、通信用のバッファのどの部分に各受信側のノードに対する通信データが配置されたかを示す情報である。この点につき図20とともに具体例を後述する。上記ステップS32の「短いデータに対し信頼性のある同報通信」は、例えば図4A乃至図7Cとともに説明した、「必ずしも信頼性のない同報通信」と「信頼性のある1対1通信」とを組み合わせて構築することができる。あるいは図15,図16とともに説明する「バリア同期」を使用した同報通信を「短いデータに対し信頼性のある同報通信」として使用することもできる。あるいは図17乃至図19とともに説明する「リダクション装置」により実現される「全ノードへのリダクション」を使用した同報通信を「短いデータに対し信頼性のある同報通信」として使用することもできる。
次に送信側のノードは、受信側のノードの各々が通信データを受信したことを示す受信完了の通知を待つ(ステップS33)。受信側のノードの各々から受信完了の通知が届いたら、当該スキャッタの動作を終了する。
図9B中、受信側のノードの各々は、上記ステップS32で送信側のノードから「短いデータに対し信頼性のある同報通信」で送信された配置完了メッセージを、当該「短いデータに対し信頼性のある同報通信」で受信する(ステップS34)。次に受信側のノードの各々はRRDMA機能によって、自ノードに対する通信データを上記通信用のバッファから受信する(ステップS35)。より具体的には、各受信側のノードは、上記受信した配置完了メッセージが含む、通信用のバッファのどの部分に各受信側のノードに対する通信データが配置されたかを示す情報に基づき、該当する通信用のバッファのアドレスを得る。各受信側のノードは、このようにして得られた該当する通信用のバッファのアドレスを指定してRRDMAを行うことにより、自ノードに対する通信データを通信用のバッファから読み出して得ることができる。RRDMA機能により自ノードに対する通信データを受信すると、各受信側のノードは受信完了の通知を送信側のノードに対し行い(ステップS36)、スキャッタの動作を終了する。
図10A,10B,10Cは、図9A,9Bとともに上述した実施例1の具体例を示す。図10Aに示す第1のステップで送信側のノード11は、一連の通信データを自ノードのバッファ11b1,11b2,11b3に配置し、「短いデータに対し信頼性のある同報通信」により、他のノード21,22,23(受信側のノード)全てに対し上記配置完了メッセージを通知する。ここでの通知は同報によるものであるため、各ノード21,22,23に対し、共通の配置完了メッセージを通知することになる。各受信側のノード21,22、23は共通の配置完了メッセージを受信し、例えば予め決められた規則に従って、自ノードに対する通信データが配置された通信用のバッファの部分を認識し得る。
図10Bに示す第2のステップでは、送信側のノード11以外のノード(受信側のノード)21,22,23は、RRDMA機能により、自ノード宛の通信データを通信用のバッファから読み出して取得する。通信データを取得した各ノード(受信側のノード)21,22,23は、取得した通信データを夫々自ノードのバッファ21b、22b、23bに格納する。当該具体例はスキャッタの例であるため、送信側のノード11のバッファ11b、11b2,11b3に配置された通信データは、バッファ11b、11b2,11b3毎に相互に異なることが許容される。受信側の各ノード21,22、23は以下のようにして、自ノードに対する通信データが、夫々バッファ11b1,11b2,11b3に配置されたことを認識する。すなわち各受信ノードは、上記配置完了メッセージが含む、通信用のバッファのどの部分に自ノードに対する通信データが配置されたかを示す情報に基づき、自ノードに対する通信データが配置されたバッファを認識する。そして、受信側の各ノード21,22、23は夫々該当するバッファ11b1,11b2,11b3を指定してRRDMAを実施する。その結果受信側の各ノード21,22、23は夫々該当するバッファ11b1,11b2,11b3から通信データを読み出して受信する。したがって上記の如く、バッファ11b、11b2,11b3に配置された通信データがバッファ11b、11b2,11b3毎に相互に異なる場合、受信側のノード21,22、23は夫々、相異なる通信データを受信することになる。したがってスキャッタが実現される。
図10Cに示す第3のステップでは、上記第2のステップで自ノードに対する通信データを受信した各受信ノードは、送信側のノードに対し、受信完了の通知を送信する。送信側のノードは当該受信完了の通知を受ける。その結果スキャッタの動作が終了する。
ここで上記実施例1で使用される「短いデータに対し信頼性のある同報通信」(図9A中、ステップS32中「信頼性のある同報通信」)と、受信完了の待ち合わせ(ステップS33)とにつき、以下に補足して説明する。
実施例による並列計算用の通信方法において、ノード間通信としての同報通信は「送信側のノードと受信側のノードとの全てが夫々のプログラム上の特定箇所で同期する」ことを前提条件として実施される。その場合、予め送信側のノードと受信側のノードとの間で、特定の同報通信を行う通信用のバッファのアドレスについての情報を交換しておく。その結果、バリア同期の機能と、信頼性のある1対1通信としてのRRDMA機能とを組み合わせて同報通信の機能を実現することができる(例えば後述する図15中、ステップS102,S103)。
ここで例えば、標準的な並列計算用の通信ライブラリ(のインターフェース規定)としてMPI(Message Passing Interface(非特許文献4,5,6参照))がある。MPIにおける同報通信では、受信側と送信側とが共にMPI_Bcast()という同じ関数を「送信側」、「受信側」を示す引数を指定して呼び出す。したがってこの場合上記前提条件「送信側のノードと受信側のノードとの全てが夫々のプログラム上の特定箇所で同期する」ことが成り立つ。
又、上記予め相互に交換しておく通信用のバッファのアドレスについての情報を、夫々の受信側のノード毎に異なるものとすることができる。そして各受信側のノードが送信側のノードの通信用のバッファの異なるアドレスを指定して通信データを受信することが可能である。そのようにして結果的に「1つの送信側のノードが一連のデータを一斉に送信し、各受信のノードが、当該一連のデータの、夫々異なる部分を受信するスキャッタの機能」を実現し得る。その場合の実施例を、上記実施例1の変形例として、図11A,11Bとともに説明する。
当該実施例1の変形例では、上記の如く、予め相互に交換しておく通信用のバッファのアドレスを、夫々の受信側のノード毎に異なるものとする。すなわち、受信側の各ノードが以下に述べる情報を有するように、送信側のノードと受信側の各ノードとの間で予め通信用のバッファのアドレスについての情報を相互に交換する。当該相互の情報の交換の結果、例えば図10A,10B,10Cに示す送信側のノード11のバッファ11b1,11b2,11b3のうち、バッファb1についての情報を受信側のノード21が有し、バッファb2についての情報を受信側のノード22が有する。そしてバッファb3についての情報を受信側のノード23が有する。その状態で図11A中、ステップS41にて送信側のノードは通信データを通信用のバッファ11b1,11b2,11b3に配置する。配置が終了すると送信側のノードは「通信データ配置完了を待つバリア同期」の同期信号を送信する。
そしてステップS42にて送信側のノードは、受信側の各ノード21,22,23による通信データの「受信完了を待つバリア同期」の同期信号を送信する。当該「受信完了を待つバリア同期」は、送信側のノード11では、受信側の各ノード21,22,23から当該「受信完了を待つバリア同期」の同期信号を受信した段階で終了する。このようにして送信側のノード11と各受信側のノード21,22,23を含めた全てのノードが当該「受信完了を待つバリア同期」の同期信号を受信した段階で当該「受信完了を待つバリア同期」が終了する。当該「受信完了を待つバリア同期」が終了すると、スキャッタの動作が終了する。
他方図11BのステップS43で、受信側の各ノードは上記「通信データ配置完了を待つバリア同期」の同期信号を送信する。当該「通信データ配置完了を待つバリア同期」は、「通信データ配置完了を待つバリア同期」の同期信号を送信側のノードと各受信側のノードを含めた全てのノードが受信した段階で終了する。したがって当該「通信データ配置完了を待つバリア同期」が終了する場合には送信側のノードが「通信データ配置完了を待つバリア同期」の同期信号を送信する必要がある。ここで上記の如く、送信側のノードは通信データの通信用のバッファへのアドレスの配置が完了すると当該「通信データ配置完了を待つバリア同期」の同期信号を送信する(ステップS31)。したがって当該「通信データ配置完了を待つバリア同期」が終了するということは、送信側のノードが通信データの通信用のバッファへのアドレスの配置が完了することを意味する。したがって当該「通信データ配置完了を待つバリア同期」が終了した段階で、受信側の各ノードはステップS44にて、上記予め交換した通信用のバッファのアドレスについての情報に基づいて、RRDMAを実行する。
ここで上記の如く、上記予めなされる通信用のバッファのアドレスについての情報の交換の結果上記の如く、例えば送信側のノード11のバッファ11b1,11b2,11b3のうち、バッファb1についての情報を受信側のノード21が有する。同様にバッファb2についての情報を受信側のノード22が有し、バッファb3についての情報を受信側のノード23が有する。したがって受信側の各ノードは自ノードに対する通信データが配置されたバッファを指定してRRDMAを実施し得る。RRDMAの結果自ノードに対する通信データが得られると、受信側の各ノードは上記の如く、「受信完了を待つバリア同期」の同期信号を送信する。その結果上記の如く、スキャッタの動作が終了する。
次に実施例2の並列計算用の通信方法について説明する。
実施例2ではノード間の1対1通信としてのWRDMA機能を利用してギャザの動作の高速化を図る。
図12A中、受信側のノードは、複数の送信側のノードの各々から受信する通信データの通信用のバッファへの配置を示す情報を、短いデータに対し信頼性のある同報通信で受信側の各ノードに通知する(ステップS51)。ギャザに係る実施例2の場合の「通信データの通信用のバッファへの配置を示す情報」は、「通信用のバッファのどの部分に各送信側のノードが通信データを配置する(書き込む)かを示す情報」を含む。「通信用のバッファのどの部分に各送信側のノードが通信データを配置する(書き込む)かを示す情報」の具体例につき、図20ともに後述する。ここで通信用のバッファとして、例えば図2に示される通信装置あるいはノードN11が有するバッファ、図3に示される各バッファ11b、11cb、12b、12cb等を利用することができる。
上記ステップS51の「短いデータに対し信頼性のある同報通信」(図12A、ステップS51中、「信頼性のある同報通信」)について説明する。例えば図4A乃至図7Cとともに説明した、「必ずしも信頼性のない同報通信」と「信頼性のある1対1通信」とを組み合わせて当該「短いデータに対し信頼性のある同報通信」を構築し得る。あるいは図15,図16とともに説明する「バリア同期」を使用した同報通信を当該「短いデータに対し信頼性のある同報通信」として使用することもできる。あるいは図17,図18とともに説明する「リダクション装置」により実現される「全ノードへのリダクション」を使用した同報通信を当該「短いデータに対し信頼性のある同報通信」として使用することもできる。
次に受信側のノードは、送信側のノードの各々からの通信データの受信を待ち合わせる(ステップS52)。全ての送信側のノードから通信データを受信し終えると、ギャザの動作を終了する。
図12B中、送信側のノードの各々は、上記ステップS51で受信側のノードから短いデータに対し信頼性のある同報通信で送信された通信データの通信用のバッファへの配置を示す情報を、当該短いデータに対し信頼性のある同法通信で受信する(ステップS53)。次に送信側のノードの各々はWRDMA機能によって、自ノードの通信データを通信用のバッファへ送信する(ステップS54)。より具体的には、各送信側のノードは、上記受信した通信データの通信用のバッファへの配置を示す情報が示す、通信用のバッファのどの部分に自ノードが通信データを配置する(書き込む)かを示す情報に基づき、該当する通信用のバッファのアドレスを得る。各送信側のノードは、このようにして得られた該当する通信用のバッファのアドレスを指定してWRDMAを行うことにより、自ノードの通信データを送信して当該通信データを、通信用のバッファ中、しかるべき部分に配置する(書き込む)ことができる。その後ギャザの動作を終了する。
図13A,13Bは、図12A,12Bとともに上述した実施例2の具体例を示す。図13Aに示す第1のステップで受信側のノード11は、上記短いデータに対し信頼性のある同報通信にて、上記通信データの通信用のバッファへの配置を示す情報を各送信側のノード21,22,23に送信する。ここでの送信は同報によるものであるため、各ノード21,22,23に対し、共通の通信データの通信用のバッファへの配置を示す情報を通知することになる。各送信側のノード21,22、23は共通の通信データの通信用のバッファへの配置を示す情報を受信し、当該受信した情報から、例えば予め決められた規則に従って、自ノードの通信データを配置すべき通信用のバッファの部分を認識し得る。
なお、上記短いデータに対し信頼性のある同報通信の代わりに、上記実施例1の集団通信方法(スキャッタ)にて、上記通信データの通信用のバッファへの配置を示す情報を各送信側のノード21,22,23に送信するようにしてもよい。このようにして実施例1の集団通信方法を適用する場合、受信側のノード11は各送信側のノード21,22,23に対し、夫々該当するバッファ11b1,11b2,11b3の情報のみを送信することができる。すなわちノード21にはバッファ11b1の情報を送信し、ノード22にはバッファ11b2の情報を送信し、ノード23にはバッファ11b3の情報を送信することができる。
図13Bに示す第2のステップでは、受信側のノード11以外のノード(送信のノード)21,22,23は、WRDMA機能により、自ノードのバッファ21b、22b、23bから、夫々通信データを送信する。各送信側のノード21,22,23から送信された通信データは、受信側のノード11のバッファ11b1,11b2,11b3に夫々配置される(書き込まれる)。この点につき、以下に詳細に説明する。すなわち各送信側のノード21,22,23は、上記受信した通信データの通信用のバッファへの配置を示す情報により、受信側のノード11のバッファ11b1,11b2,11b3のうち、自ノードの通信データを配置するバッファを認識する。そして、送信側の各ノード21,22、23は夫々該当するバッファ11b1,11b2,11b3を指定してWRDMAを実施する。その結果送信側の各ノード21,22、23は夫々該当するバッファ11b1,11b2,11b3に通信データを配置することができる。したがってギャザの機能が実現される。
図14は、上記送信側のノードおよび受信側のノードの各々のハードウェア構成例について説明する図である。各ノード110は、バス113を介して相互に接続されるCPU111とメモリ112とを含む。CPU111は各種演算を行う。メモリ112には、CPU111が実行するプログラムの他、各種データが格納される。メモリ112は上記実施例1、実施例2の夫々による並列計算用の通信方法で使用される通信用のバッファとしても使用され得る。また、メモリ112には、上記実施例1、実施例2の夫々による並列計算用の通信方法を実現するプログラムも格納される。CPU111は同プログラムを実行することにより、図4A乃至7C,図9A乃至13Bとともに述べた動作、並びに後述する図15,図16とともに述べる動作、並びに後述する図17,図18とともに述べる動作を実行することができる。またノード110は、ネットワーク上の他のノードと通信する際に使用する通信カード(通信装置)120を有する。通信カード120は例えばNICとすることができる。
図15は、上記「短いデータに対し信頼性のある同報通信」方法(特にバリア同期を使用する場合)の動作の流れを説明するフローチャートである。図15中、ステップS101で、送信側のノード(実施例2の場合、受信側のノード)が、予め決められた格納場所に「通信データの通信用のバッファへの配置を示す情報」を格納する。次にステップS102で、送信側のノードと複数の受信側のノード(実施例2の場合、受信側のノードと複数の送信側のノード)とを含む全ノードがバリア同期(図16とともに後述する)を行う。次にステップS103にて、複数の受信側の通信ノード(実施例2の場合、複数の送信側のノード)の各々が、上記予め決められた格納場所から、上記「通信データの通信用のバッファへの配置を示す情報」をRRDMA機能により自ノードに転送する。その結果、複数の受信側の通信ノード(実施例2の場合、複数の送信側のノード)の各々は「通信データの通信用のバッファへの配置を示す情報」を得ることができる。
当該図15の方法では、ステップS102のバリア同期において、上記全ノードが相互に同期をとる。そしてこのように同期がとれた後、ステップS103にて、各受信側のノード(実施例2の場合各送信側のノード)は予め決められた格納場所から「通信データの通信用のバッファへの配置を示す情報」を得る。すなわち「短いデータに対し信頼性のある同報通信」方法が実現される。尚予めステップS101にて、送信側のノード(実施例2の場合受信側のノード)は上記予め決められた格納場所に「通信データの通信用のバッファへの配置を示す情報」を配置する。また上記予め決められた格納場所の情報は、上記全ノードで予め共有されており、送信側のノード(実施例2の場合受信側のノード)は「通信データの通信用のバッファへの配置を示す情報」を、一定の配置タイミングで上記予め決められた格納場所に配置し、その後、一定の解放タイミングで上記予め決められた格納場所を解放する。バリア同期は上記一定の配置タイミングから一定の解放タイミングまでの期間を受信側のノード(実施例2では送信側のノード)に通知する手段として使用される。尚上記一定の配置タイミングから一定の解放タイミングまでの期間とはすなわち上記予め決められた格納場所に「通信データの通信用のバッファへの配置を示す情報」が存在する期間である。なお、ステップS103の後に再度バリア同期を行うことにより、送信側のノード(実施例2では受信側のノード)が上記一定の解放タイミングを得るようにしても良い。
図16は、図15のステップS102のバリア同期の動作の流れを示すフローチャートである。図15中、ステップS111で上記全ノードの各々は、他の全ノードに対し、「バリア同期」信号を送信する。「バリア同期」信号は、単にタイミングを通知するためのみに必要な最短の信号であればよい。ステップS112で各ノードは他の全ノードから「バリア同期」信号を受信すると(YES)、当該バリア同期の動作を終了する。
なおバリア同期に関し、非特許文献7の第13頁に「プログラムの書き方」という観点による図が記載されている。更に非特許文献8の第9乃至15頁にバリア同期の概念が記載されている。特に非特許文献7には以下の点が記載されている。全てのスレッド(thread:並列処理での個々の処理の流れ)が、ある処理ブロックを抜ける(言い換えれば、次の処理へと進む直前の点まで到達する)まで、どのスレッドも次の処理ブロックへ進まない。
図17とともに、上記データが短い場合の信頼性のある同報通信の実現手段として、リダクション装置による全ノードへのリダクションを使用する場合を説明する。リダクション装置については図19とともに後述する。
全ノードへのリダクションでは、全てのノードからのリダクションにおける演算対象となるデータに対して、加算、あるいは最大値をとる演算などを施した結果が、全てのノードで受け取られる。リダクション装置を使用して全ノードへのリダクションを実行する場合は、全てのノードが演算対象をリダクション装置に送信し、演算結果をリダクション装置から受信する。リダクション装置を使用した全てのノードへのリダクションにより上記データが短い場合の信頼性のある同報通信を実現する場合、ステップS121で送信側のノードは「通信データの通信用のバッファへの配置を示す情報」(以下では「バッファ情報」)をリダクション装置に送信する。ステップS122で複数の受信側の通信ノードの各々は、"0"の情報をリダクション装置に送信する。ステップS123でリダクション装置は、ステップS121で送信されたバッファ情報と、ステップS122で送信された"0"情報との和演算を行う。すなわち、バッファ情報と、各受信側のノードからの"0"情報との総和をとる。総和の結果、「バッファ情報」+"0"+"0"+"0"+...=「バッファ情報」となり、演算結果「バッファ情報」が得られる。リダクション装置は演算結果「バッファ情報」を、全ノードに送信する。その結果ステップS124で、複数の受信側の通信ノードの各々は、「バッファ情報」を得ることができる。すなわちデータが短い場合の信頼性のある同報通信方法が実現される。
図18は、リダクション装置を使用した、データが短い場合の信頼性のある同報通信方法の動作の流れを、説明するフローチャートである。図18中、ステップS131(図17中、ステップS121,S122に対応)で、各ノードがリダクション装置に情報を送信する。ステップS132(ステップS123に対応)で、リダクション装置が、各ノードが送信した上記情報を受信する。ステップS133(ステップS123)に対応)で、リダクション装置が上記受信した情報に基づいて演算(例えば上記総和演算)を行う。ステップS134(ステップS123に対応)で、リダクション装置が、上記演算の結果を各ノードに送信する。ステップS135(ステップS124に対応)で、各ノードが演算の結果を受信する。
図19は上記リダクション装置について説明するブロック図である。リダクション装置CC1はネットワーク上で、各通信ノード11,21,22,23と、通信中継装置S1を介し、相互に接続されている。リダクション装置CC1は、例えば図13とともに上述した各ノードと同様のハードウェア構成を有する。リダクション装置CC1は上記の如く、全ノード11,21,22,23から情報を受信し、受信した情報に対し所定の演算(例えば上記の如く、総和演算)を行い、演算結果を全ノードに送信する。
リダクション装置につき、非特許文献10,11,12に説明がなされている。尚非特許文献10,11において、「コレクティブ通信」という用語が使われている場合、実際には「リダクション」のことだけを指している場合が多い。ただし、全ノードへのリダクション用の関数である「MPI_Allreduce」の動作は計算過程において「バリア同期」の動作を含む(値を計算するため結果的に同期処理をしている)ため、「リダクション」および「バリア同期」」を指している場合もある。非特許文献12では、リダクション装置が並列計算の高速化に果たす役割の説明がなされている。尚用語「高機能スイッチ」は、MPIの集団通信用の函数である「MPI_Allreduce」の動作をハードウェアで実現している。「MPI_Allreduce」では、全てのノードが持っている入力データから計算した値、例えば総和を関数の出力として得ることができる。このため、例えば「数値と見なせる大きさのデータ」に対して、データを発信するノード以外が全て"0"を指定してMPI_Allreduceを呼び出すことにより、そのデータの同報通信が実現される。
図20は上記「通信用のバッファ」の及び「通信データが配置される部分」の設定例を説明する図である。
図20の設定例の場合、ノードが有する主記憶500中、先頭アドレス521の領域520が「通信用のバッファ」として設定される。更に「通信用のバッファ」520中、先頭アドレス521からオフセット522離れたアドレスから開始され長さ523を有する領域525が「通信データが配置される部分」として設定される。すなわち「通信データが配置される部分」525は、主記憶500中、「先頭アドレス521」+「オフセット522」で得られるアドレスから「先頭アドレス521」+「オフセット522」+「長さ523」で得られるアドレスまでの範囲を有する。
ここで上記の如く実施例1では、「通信データの通信用のバッファへの配置を示す情報」は、「通信データを通信用のバッファへ配置した旨の通知」と、「通信データの通信用のバッファへの配置状況を示す情報」とを含む。そして「通信データの通信用のバッファへの配置状況を示す情報」とは、「通信用のバッファのどの部分に各受信側のノードに対する通信データが配置されたかを示す情報」である。したがって図20の設定例の場合、「通信用のバッファのどの部分に各受信側のノードに対する通信データが配置されたかを示す情報」は、「通信データが配置される部分」525を示す情報である。したがって実施例1では図20の設定例の場合、上記「通信用のバッファのどの部分に各受信側のノードに対する通信データが配置されたかを示す情報」は、上記先頭アドレス521,オフセット522及び長さ523を含む。すなわち実施例1では、「通信データの通信用のバッファへの配置を示す情報」は「通信データが配置される部分」525を示す情報を含む。
又実施例2の場合の「通信データの通信用のバッファへの配置を示す情報」は上記の如く、「通信用のバッファのどの部分に各送信側のノードが通信データを配置する(書き込む)かを示す情報」を含む。したがって実施例2では図20の設定例の場合、「通信用のバッファのどの部分に各送信側のノードが通信データを配置する(書き込む)かを示す情報」が、「通信データが配置される部分」525を示す情報である。したがって実施例2では図20の設定例の場合、上記「通信用のバッファのどの部分に各送信側のノードが通信データを配置する(書き込む)かを示す情報」は、上記先頭アドレス521,オフセット522及び長さ523を含む。すなわち、実施例2では、「通信データの通信用のバッファへの配置を示す情報」は「通信データが配置される部分」525を示す情報を含む。
図21は上記リカバリ情報のデータフォーマット例について説明するための図である。図21のデータフォーマット例では図示の如く、リカバリ情報300は、エラー検出コードを格納する領域310,データの大きさを示す情報を格納する領域320及びタイムアウト時間を格納する領域330を有する。
Claims (20)
- 並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法にて第1のノードと複数の第2のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報を、前記第1のノードがバリア同期または全ノードへのリダクションを使用した同報通信によって前記複数の第2のノードの各々に通知するステップと、
前記複数の第2のノードの各々が、前記通信用のバッファへの配置を示す情報を使用して、前記第1のノードと前記複数の第2のノードの各々との間の前記通信データの転送を行うステップとを有する並列計算用の通信方法。 - 並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第1のノードと前記複数の第2のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報のリカバリ情報を第1のノードが複数の第2のノードの各々に対し1対1通信乃至同報通信によって送信するステップと、
前記第1のノードが前記通信用のバッファへの配置を示す情報を複数の第2のノードの各々に対し同報通信にて送信するステップと、
前記複数の第2のノードの各々が、前記通信用のバッファへの配置を示す情報を受信するステップと、
前記複数の第2のノードの各々が当該受信された通信用のバッファへの配置を示す情報のリカバリが必要か否かをチェックするステップと、
前記複数の第2のノードの各々が前記受信された通信用のバッファへの配置を示す情報のリカバリが必要と判断した場合、前記リカバリ情報を使用して前記通信用のバッファへの配置を示す情報のリカバリを行うステップと、
前記第2のノードの各々が、前記通信用のバッファへの配置を示す情報を使用して前記第1のノードと前記複数の第2のノードの各々との間の前記通信データの転送を行うステップとを有する並列計算用の通信方法。 - 並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法におけるノード間の通信データの転送を、リモートホストのメモリにCPUを介さず直接値を書きこむ方法を使用して実施することを特徴とする、請求項1記載の並列計算用の通信方法。
- 並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法においてノード間で転送する通信データの通信用のバッファへの配置を示す情報を、前記ノード間で第1の通信ネットワークに係る通信中継装置を使用して通知するステップと、
前記ノード間の前記通信データの転送を、前記第1の通信ネットワークとは異なる第2の通信ネットワークに係る通信中継装置を使用して行うステップとを有する請求項1に記載の並列計算用の通信方法。 - 並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法にて第1のノードと複数の第2のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報を、バリア同期または全ノードに対するリダクションを使用して前記複数の第2のノードの各々に通知する手段と、
前記複数の第2のノードの各々による、前記通信用のバッファへの配置を示す情報を使用した、前記第1のノードと前記複数の第2のノードの各々との間の前記通信データの転送の完了を判断する手段とを有する、第1のノードとしての情報処理装置。 - 並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第1のノードと前記複数の第2のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報のリカバリ情報を第2のノードの各々に対し1対1通信によって送信する手段と、
前記通信用のバッファへの配置を示す情報を複数の第2のノードの各々に対し同報通信にて送信する手段と、
前記複数の第2のノードの各々による、前記通信用のバッファへの配置を示す情報を使用した、前記第1のノードと前記複数の第2のノードの各々との間の前記通信データの転送の完了を判断する手段とを有する、第1のノードとして情報処理装置。 - 並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法における前記複数の第2のノードの各々との間の通信データの転送を、リモートホストのメモリにCPUを介さず直接値を書きこむ方法を使用して実施する手段を有する、請求項5記載の情報処理装置。
- 並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記複数の第2のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報を第1の通信ネットワークに係る通信中継装置を使用して前記複数の第2のノードの各々に通知する手段と、
前記複数の第2のノードの各々との前記通信データの転送を、前記第1の通信ネットワークとは異なる第2の通信ネットワークに係る通信中継装置を使用して行う手段とを有する、前記第1のノードとしての、請求項5記載の情報処理装置。 - 並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法にて第1のノードと複数の第2のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報の通知をバリア同期または全ノードへのリダクションを使用して前記第1のノードから受信する手段と、
前記通信用のバッファへの配置を示す情報を使用して、前記第1のノードとの間の前記通信データの転送を行う手段とを有する、前記複数の第2のノードの各々としての情報処理装置。 - 並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第1のノードとの間で転送する通信データの通信用のバッファへの配置を示す情報のリカバリ情報を第1のノードから1対1通信によって受信する手段と、
第1のノードから前記通信用のバッファへの配置を示す情報を同報通信にて受信する手段と、
当該受信された通信用のバッファへの配置を示す情報のリカバリが必要か否かをチェックする手段と、
前記受信された通信用のバッファへの配置を示す情報のリカバリが必要と判断した場合、前記リカバリ情報を使用して前記通信用のバッファへの配置を示す情報のリカバリを行う手段と、
前記通信用のバッファへの配置を示す情報を使用して前記第1のノードとの間の前記通信データの転送を行う手段とを有する、前記複数の第2のノードの各々としての情報処理装置。 - 並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法における前記第1のノードとの間の通信データの転送を、リモートホストのメモリにCPUを介さず直接値を書きこむ方法を使用して実施する手段を有する、前記複数の第2のノードの各々としての、請求項9記載の情報処理装置。
- 並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第1のノードとの間で転送する通信データの通信用のバッファへの配置を示す情報を、前記第1のノードから、第1の通信ネットワークに係る通信中継装置を使用して受信する手段と、
前記第1のノードとの間の前記通信データの転送を、前記第1の通信ネットワークとは異なる第2の通信ネットワークに係る通信中継装置を使用して行う手段とを有する、前記複数の第2のノードの各々としての、請求項9記載の情報処理装置。 - 前記第1のノードとしての情報処理装置を制御するコンピュータを、
並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法にて第1のノードと複数の第2のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報を、バリア同期または全ノードへのリダクションを使用して前記複数の第2のノードの各々に通知する手段と、
前記複数の第2のノードの各々による、前記通信用のバッファへの配置を示す情報を使用した、前記第1のノードと前記複数の第2のノードの各々との間の前記通信データの転送の完了を判断する手段として機能させるプログラム。 - 前記第1のノードとしての情報処理装置を制御するコンピュータを、
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第1のノードと前記複数の第2のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報のリカバリ情報を第2のノードの各々に対し1対1通信によって送信する手段と、
前記通信用のバッファへの配置を示す情報を複数の第2のノードの各々に対し同報通信にて送信する手段と、
前記複数の第2のノードの各々による、前記通信用のバッファへの配置を示す情報を使用した、前記第1のノードと前記複数の第2のノードの各々との間の前記通信データの転送の完了を判断する手段として機能させるプログラム。 - 前記第1のノードとしての情報処理装置を制御するコンピュータを、
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法におけるノード間の通信データの転送を、リモートホストのメモリにCPUを介さず直接値を書きこむ方法を使用して実施する手段として機能させる、請求項13記載のプログラム。 - 前記第1のノードとしての情報処理装置を制御するコンピュータを、
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記複数の第2のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報を第1の通信ネットワークに係る通信中継装置を使用して前記複数の第2のノードの各々に通知する手段と、
前記複数の第2のノードの各々との前記通信データの転送を、前記第1の通信ネットワークとは異なる第2の通信ネットワークに係る通信中継装置を使用して行う手段として機能させる、請求項13記載のプログラム。 - 前記複数の第2のノードの各々としての情報処理装置を制御するコンピュータを、
並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法にて第1のノードと複数の第2のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報の通知をバリア同期または全ノードへのリダクションを使用して前記第1のノードから受ける手段と、
前記通信用のバッファへの配置を示す情報を使用して、前記第1のノードとの間の前記通信データの転送を行う手段として機能させるプログラム。 - 前記複数の第2のノードの各々としての情報処理装置を制御するコンピュータを、
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第1のノードとの間で転送する通信データの通信用のバッファへの配置を示す情報のリカバリ情報を第1のノードから1対1通信によって受信する手段と、
第1のノードから前記通信用のバッファへの配置を示す情報を同報通信にて受信する手段と、
当該受信された通信用のバッファへの配置を示す情報のリカバリが必要か否かをチェックする手段と、
前記受信された通信用のバッファへの配置を示す情報のリカバリが必要と判断した場合、前記リカバリ情報を使用して前記通信用のバッファへの配置を示す情報のリカバリを行う手段と、
前記通信用のバッファへの配置を示す情報を使用して前記第1のノードとの間の前記通信データの転送を行う手段として機能させるプログラム。 - 前記複数の第2のノードの各々としての情報処理装置を制御するコンピュータを、
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法における前記第1のノードとの間の通信データの転送を、リモートホストのメモリにCPUを介さず直接値を書きこむ方法を使用して実施する手段として機能させる、請求項17記載のプログラム。 - 前記複数の第2のノードの各々としての情報処理装置を制御するコンピュータを、
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第1のノードとの間で転送する通信データの通信用のバッファへの配置を示す情報を、前記第1のノードから、第1の通信ネットワークに係る通信中継装置を使用して受信する手段と、
前記第1のノードとの間の前記通信データの転送を、前記第1の通信ネットワークとは異なる第2の通信ネットワークに係る通信中継装置を使用して行う手段として機能させる、請求項17記載のプログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2009/069301 WO2011058640A1 (ja) | 2009-11-12 | 2009-11-12 | 並列計算用の通信方法、情報処理装置およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2011058640A1 true JPWO2011058640A1 (ja) | 2013-03-28 |
JP5331898B2 JP5331898B2 (ja) | 2013-10-30 |
Family
ID=43991318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011540362A Expired - Fee Related JP5331898B2 (ja) | 2009-11-12 | 2009-11-12 | 並列計算用の通信方法、情報処理装置およびプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20120221669A1 (ja) |
JP (1) | JP5331898B2 (ja) |
WO (1) | WO2011058640A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5540694B2 (ja) * | 2009-12-22 | 2014-07-02 | 日本電気株式会社 | 並列計算機、計算機、通信方法およびプログラム |
KR102161510B1 (ko) * | 2013-09-02 | 2020-10-05 | 엘지전자 주식회사 | 포터블 디바이스 및 그 제어 방법 |
JP6417727B2 (ja) * | 2014-06-09 | 2018-11-07 | 富士通株式会社 | 情報集約システム、プログラム、および方法 |
JP6464739B2 (ja) * | 2014-12-26 | 2019-02-06 | 富士通株式会社 | 情報処理システムの制御プログラム,情報処理装置,及び情報処理システム |
CN105868002B (zh) * | 2015-01-22 | 2020-02-21 | 阿里巴巴集团控股有限公司 | 一种用于在分布式计算中处理重发请求的方法与设备 |
JP6597231B2 (ja) * | 2015-11-27 | 2019-10-30 | 富士通株式会社 | 演算装置、プログラム、情報処理方法 |
JP6891399B2 (ja) * | 2016-04-11 | 2021-06-18 | 富士通株式会社 | データ処理プログラム、データ処理方法およびデータ処理装置 |
JP2018160180A (ja) * | 2017-03-23 | 2018-10-11 | 富士通株式会社 | 情報処理システム、情報処理装置および情報処理システムの制御方法 |
JP2022137816A (ja) | 2021-03-09 | 2022-09-22 | 富士通株式会社 | 情報処理装置及び情報処理装置の制御方法 |
WO2022259452A1 (ja) * | 2021-06-10 | 2022-12-15 | 日本電信電話株式会社 | 中間装置、通信方法、およびプログラム |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2539436B2 (ja) * | 1987-06-08 | 1996-10-02 | 株式会社日立製作所 | プロセツサ間通信方式 |
JPH09198361A (ja) * | 1996-01-23 | 1997-07-31 | Kofu Nippon Denki Kk | マルチプロセッサシステム |
JP3532037B2 (ja) * | 1996-07-31 | 2004-05-31 | 富士通株式会社 | 並列計算機 |
US7555566B2 (en) * | 2001-02-24 | 2009-06-30 | International Business Machines Corporation | Massively parallel supercomputer |
JP4168281B2 (ja) * | 2004-09-16 | 2008-10-22 | 日本電気株式会社 | 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム |
US20070268898A1 (en) * | 2006-05-17 | 2007-11-22 | Ovidiu Ratiu | Advanced Routing |
US20080022079A1 (en) * | 2006-07-24 | 2008-01-24 | Archer Charles J | Executing an allgather operation with an alltoallv operation in a parallel computer |
US7797445B2 (en) * | 2008-06-26 | 2010-09-14 | International Business Machines Corporation | Dynamic network link selection for transmitting a message between compute nodes of a parallel computer |
US9396021B2 (en) * | 2008-12-16 | 2016-07-19 | International Business Machines Corporation | Techniques for dynamically assigning jobs to processors in a cluster using local job tables |
-
2009
- 2009-11-12 WO PCT/JP2009/069301 patent/WO2011058640A1/ja active Application Filing
- 2009-11-12 JP JP2011540362A patent/JP5331898B2/ja not_active Expired - Fee Related
-
2012
- 2012-05-09 US US13/467,347 patent/US20120221669A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
WO2011058640A1 (ja) | 2011-05-19 |
JP5331898B2 (ja) | 2013-10-30 |
US20120221669A1 (en) | 2012-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5331898B2 (ja) | 並列計算用の通信方法、情報処理装置およびプログラム | |
JP5828966B2 (ja) | Pcieスイッチング・ネットワークにおけるパケット伝送を実現する方法、装置、システム、及び記憶媒体 | |
US9503383B2 (en) | Flow control for reliable message passing | |
JP4857262B2 (ja) | エンド・ツー・エンドの信頼性のあるグループ通信のための方法および装置 | |
US8756270B2 (en) | Collective acceleration unit tree structure | |
KR20190108188A (ko) | 탄성 패브릭 어댑터 - 무접속의 신뢰할 수 있는 데이터그램 | |
CN103141050B (zh) | 快速通道互联系统中数据包重传方法、节点 | |
AU2011265444B2 (en) | Low latency FIFO messaging system | |
JP2012048712A (ja) | ローカル・アダプタの読み取り操作により操作の完了が確認されるまで操作の肯定応答を遅延させる方法 | |
JP6148459B2 (ja) | データを送信ノードから宛先ノードに移送する方法 | |
JP2016515361A (ja) | アプリケーションにより提供される送信メタデータに基づくネットワーク送信調整 | |
JP5477112B2 (ja) | ネットワークシステムの試験方法 | |
US7548972B2 (en) | Method and apparatus for providing likely updates to views of group members in unstable group communication systems | |
WO2008057831A2 (en) | Large scale multi-processor system with a link-level interconnect providing in-order packet delivery | |
US11108663B1 (en) | Ring control data exchange system | |
JP5331897B2 (ja) | 通信方法、情報処理装置及びプログラム | |
CN112583570A (zh) | 一种序列号同步的方法及装置 | |
JP6740683B2 (ja) | 並列処理装置及び通信制御方法 | |
US10681145B1 (en) | Replication in a protocol offload network interface controller | |
Kamp | AXI over Ethernet; a protocol for the monitoring and control of FPGA clusters | |
JP3148733B2 (ja) | 信号処理装置及び信号処理システム | |
US20240086265A1 (en) | Selective aggregation of messages in collective operations | |
Setia et al. | GUI Based Simulation of Interconnection Networks | |
EP2647152B1 (en) | Reliable and fast method and system to broadcast data | |
Dobrescu et al. | Real time dependable communication infrastructure for a collaborative groupware system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130430 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130628 |
|
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: 20130723 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130729 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |