(57)【要約】  並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の方法にて第１のノードと複数の第２のノードの各々との間で移動する通信データの通信用のバッファへの配置を示す情報を、第１のノードがバリア同期または全ノードへのリダクションを使用した同報通信によって前記複数の第２のノードの各々に通知し、複数の第２のノードの各々が、通信用のバッファへの配置を示す情報を使用して第１のノードと前記複数の第２のノードの各々との間の通信データの転送を行う通信方法である。
2011058640.tif 000002
【特許請求の範囲】
【請求項１】
並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法にて第１のノードと複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報を、前記第１のノードがバリア同期または全ノードへのリダクションを使用した同報通信によって前記複数の第２のノードの各々に通知するステップと、
前記複数の第２のノードの各々が、前記通信用のバッファへの配置を示す情報を使用して、前記第１のノードと前記複数の第２のノードの各々との間の前記通信データの転送を行うステップとを有する並列計算用の通信方法。
【請求項２】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第１のノードと前記複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報のリカバリ情報を第１のノードが複数の第２のノードの各々に対し１対１通信乃至同報通信によって送信するステップと、
前記第１のノードが前記通信用のバッファへの配置を示す情報を複数の第２のノードの各々に対し同報通信にて送信するステップと、
前記複数の第２のノードの各々が、前記通信用のバッファへの配置を示す情報を受信するステップと、
前記複数の第２のノードの各々が当該受信された通信用のバッファへの配置を示す情報のリカバリが必要か否かをチェックするステップと、
前記複数の第２のノードの各々が前記受信された通信用のバッファへの配置を示す情報のリカバリが必要と判断した場合、前記リカバリ情報を使用して前記通信用のバッファへの配置を示す情報のリカバリを行うステップと、
前記第２のノードの各々が、前記通信用のバッファへの配置を示す情報を使用して前記第１のノードと前記複数の第２のノードの各々との間の前記通信データの転送を行うステップとを有する並列計算用の通信方法。
【請求項３】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法におけるノード間の通信データの転送を、リモートホストのメモリにＣＰＵを介さず直接値を書きこむ方法を使用して実施することを特徴とする、請求項１記載の並列計算用の通信方法。
【請求項４】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法においてノード間で転送する通信データの通信用のバッファへの配置を示す情報を、前記ノード間で第１の通信ネットワークに係る通信中継装置を使用して通知するステップと、
前記ノード間の前記通信データの転送を、前記第１の通信ネットワークとは異なる第２の通信ネットワークに係る通信中継装置を使用して行うステップとを有する請求項１に記載の並列計算用の通信方法。
【請求項５】
並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法にて第１のノードと複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報を、バリア同期または全ノードに対するリダクションを使用して前記複数の第２のノードの各々に通知する手段と、
前記複数の第２のノードの各々による、前記通信用のバッファへの配置を示す情報を使用した、前記第１のノードと前記複数の第２のノードの各々との間の前記通信データの転送の完了を判断する手段とを有する、第１のノードとしての情報処理装置。
【請求項６】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第１のノードと前記複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報のリカバリ情報を第２のノードの各々に対し１対１通信によって送信する手段と、
前記通信用のバッファへの配置を示す情報を複数の第２のノードの各々に対し同報通信にて送信する手段と、
前記複数の第２のノードの各々による、前記通信用のバッファへの配置を示す情報を使用した、前記第１のノードと前記複数の第２のノードの各々との間の前記通信データの転送の完了を判断する手段とを有する、第１のノードとして情報処理装置。
【請求項７】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法における前記複数の第２のノードの各々との間の通信データの転送を、リモートホストのメモリにＣＰＵを介さず直接値を書きこむ方法を使用して実施する手段を有する、請求項５記載の情報処理装置。
【請求項８】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報を第１の通信ネットワークに係る通信中継装置を使用して前記複数の第２のノードの各々に通知する手段と、
前記複数の第２のノードの各々との前記通信データの転送を、前記第１の通信ネットワークとは異なる第２の通信ネットワークに係る通信中継装置を使用して行う手段とを有する、前記第１のノードとしての、請求項５記載の情報処理装置。
【請求項９】
並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法にて第１のノードと複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報の通知をバリア同期または全ノードへのリダクションを使用して前記第１のノードから受信する手段と、
前記通信用のバッファへの配置を示す情報を使用して、前記第１のノードとの間の前記通信データの転送を行う手段とを有する、前記複数の第２のノードの各々としての情報処理装置。
【請求項１０】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第１のノードとの間で転送する通信データの通信用のバッファへの配置を示す情報のリカバリ情報を第１のノードから１対１通信によって受信する手段と、
第１のノードから前記通信用のバッファへの配置を示す情報を同報通信にて受信する手段と、
当該受信された通信用のバッファへの配置を示す情報のリカバリが必要か否かをチェックする手段と、
前記受信された通信用のバッファへの配置を示す情報のリカバリが必要と判断した場合、前記リカバリ情報を使用して前記通信用のバッファへの配置を示す情報のリカバリを行う手段と、
前記通信用のバッファへの配置を示す情報を使用して前記第１のノードとの間の前記通信データの転送を行う手段とを有する、前記複数の第２のノードの各々としての情報処理装置。
【請求項１１】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法における前記第１のノードとの間の通信データの転送を、リモートホストのメモリにＣＰＵを介さず直接値を書きこむ方法を使用して実施する手段を有する、前記複数の第２のノードの各々としての、請求項９記載の情報処理装置。
【請求項１２】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第１のノードとの間で転送する通信データの通信用のバッファへの配置を示す情報を、前記第１のノードから、第１の通信ネットワークに係る通信中継装置を使用して受信する手段と、
前記第１のノードとの間の前記通信データの転送を、前記第１の通信ネットワークとは異なる第２の通信ネットワークに係る通信中継装置を使用して行う手段とを有する、前記複数の第２のノードの各々としての、請求項９記載の情報処理装置。
【請求項１３】
前記第１のノードとしての情報処理装置を制御するコンピュータを、
並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法にて第１のノードと複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報を、バリア同期または全ノードへのリダクションを使用して前記複数の第２のノードの各々に通知する手段と、
前記複数の第２のノードの各々による、前記通信用のバッファへの配置を示す情報を使用した、前記第１のノードと前記複数の第２のノードの各々との間の前記通信データの転送の完了を判断する手段として機能させるプログラム。
【請求項１４】
前記第１のノードとしての情報処理装置を制御するコンピュータを、
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第１のノードと前記複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報のリカバリ情報を第２のノードの各々に対し１対１通信によって送信する手段と、
前記通信用のバッファへの配置を示す情報を複数の第２のノードの各々に対し同報通信にて送信する手段と、
前記複数の第２のノードの各々による、前記通信用のバッファへの配置を示す情報を使用した、前記第１のノードと前記複数の第２のノードの各々との間の前記通信データの転送の完了を判断する手段として機能させるプログラム。
【請求項１５】
前記第１のノードとしての情報処理装置を制御するコンピュータを、
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法におけるノード間の通信データの転送を、リモートホストのメモリにＣＰＵを介さず直接値を書きこむ方法を使用して実施する手段として機能させる、請求項１３記載のプログラム。
【請求項１６】
前記第１のノードとしての情報処理装置を制御するコンピュータを、
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報を第１の通信ネットワークに係る通信中継装置を使用して前記複数の第２のノードの各々に通知する手段と、
前記複数の第２のノードの各々との前記通信データの転送を、前記第１の通信ネットワークとは異なる第２の通信ネットワークに係る通信中継装置を使用して行う手段として機能させる、請求項１３記載のプログラム。
【請求項１７】
前記複数の第２のノードの各々としての情報処理装置を制御するコンピュータを、
並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法にて第１のノードと複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報の通知をバリア同期または全ノードへのリダクションを使用して前記第１のノードから受ける手段と、
前記通信用のバッファへの配置を示す情報を使用して、前記第１のノードとの間の前記通信データの転送を行う手段として機能させるプログラム。
【請求項１８】
前記複数の第２のノードの各々としての情報処理装置を制御するコンピュータを、
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第１のノードとの間で転送する通信データの通信用のバッファへの配置を示す情報のリカバリ情報を第１のノードから１対１通信によって受信する手段と、
第１のノードから前記通信用のバッファへの配置を示す情報を同報通信にて受信する手段と、
当該受信された通信用のバッファへの配置を示す情報のリカバリが必要か否かをチェックする手段と、
前記受信された通信用のバッファへの配置を示す情報のリカバリが必要と判断した場合、前記リカバリ情報を使用して前記通信用のバッファへの配置を示す情報のリカバリを行う手段と、
前記通信用のバッファへの配置を示す情報を使用して前記第１のノードとの間の前記通信データの転送を行う手段として機能させるプログラム。
【請求項１９】
前記複数の第２のノードの各々としての情報処理装置を制御するコンピュータを、
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法における前記第１のノードとの間の通信データの転送を、リモートホストのメモリにＣＰＵを介さず直接値を書きこむ方法を使用して実施する手段として機能させる、請求項１７記載のプログラム。
【請求項２０】
前記複数の第２のノードの各々としての情報処理装置を制御するコンピュータを、
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第１のノードとの間で転送する通信データの通信用のバッファへの配置を示す情報を、前記第１のノードから、第１の通信ネットワークに係る通信中継装置を使用して受信する手段と、
前記第１のノードとの間の前記通信データの転送を、前記第１の通信ネットワークとは異なる第２の通信ネットワークに係る通信中継装置を使用して行う手段として機能させる、請求項１７記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列計算用の通信方法、情報処理装置およびプログラムに関する。
【背景技術】
【０００２】
並列計算機システムを用いた集団通信（Ｃｏｌｌｅｃｔｉｖｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）を実施する装置において、プロセッサ、メモリなどの部品に比較して相対的に低速度である通信経路を利用したデータ転送を削減し通信時間を短縮することが知られている。【０００３】
集団通信には、同報通信、バリア同期（ｂａｒｒｉｅｒ  ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ）、ギャザ（ｇａｔｈｅｒ)、全ノードへのギャザ、スキャッタ（ｓｃａｔｔｅｒ）、リダクション（ｒｅｄｕｃｔｉｏｎ）、全ノードへのリダクション、全体全通信（ａｌｌ−ｔｏ−ａｌｌ）等が含まれる。【０００４】
同報通信とは同一のメッセージを複数のあて先に同時に送る通信方法である。バリア同期とは、同期用の関数の呼び出しが同期に参加する全てのノードで行われることで同期が完了する同期方法である。スキャッタとは、送信基点となるノードから複数のノードに対し、同報通信と同様に一斉にデータを送信する集団通信であって、送信先毎にデータが異なることを許容する通信方法である。又、ギャザとは、複数のノードからのデータを、ある１つの受信ノードに対し、一斉に集約する集団通信であり、スキャッタとは逆方向にデータを転送する通信方法である。リダクションとは、各ノードが演算対象をリダクション装置に送信し、演算結果をリダクション装置から受信する通信方法である。【０００５】
ある種類の集団通信を別の種類の集団通信を組み合わせて実現することが知られている。例えば全ノードへのギャザ乃至全ノードへのリダクションは、それぞれ、１ノードでのギャザおよび１ノードでのリダクションと、その１ノードから、他の全てのノードへの同報通信を組み合わせて実現することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−１３４３１１号公報
【特許文献２】特開２００６−２７９３９０号公報
【特許文献３】特開平１１−２５９４１１号公報
【非特許文献】
【０００７】
【非特許文献１】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、２００９年７月２９日現在)
【非特許文献５】「MPI Reference, 3 集団通信」、東京工業大学、廣瀬研究室(ＵＲＬ：http://www.cv.titech.ac.jp/~hiro-lab/study/mpi_reference/chapter3.html、２００９年７月２９日現在)
【非特許文献６】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"（ＵＲＬ：http://www.it.uom.gr/teaching/dbpp/text/node97.html、２００９年７月２９日現在)
【非特許文献７】"Concurrency: Mutual exclusion and synchronization" (URL: http://www.cs.helsinki.fi/u/alanko/rio/S02/kalvokopiot/ch3_p2.pdf、２００９年５月１４日現在）
【非特許文献８】"Barrier Synchronization", Maurice Herlihy & Nir Shavit (URL: http://www.cs.brown.edu/courses/cs176/ch17.ppt、２００９年５月１４日現在)
【非特許文献９】「ＲＤＭＡプロトコル：ネットワークパフォーマンスの向上」（ＵＲＬ：http://h50146.www5.hp.com/products/servers/proliant/whitepaper/wp049_060331/pdfs/wp049_060330.pdf、２００９年５月１４日現在）
【非特許文献１０】「高機能・高性能システムインターコネクト技術の開発」九州大学／富士通株式会社  石畑宏明(URL: http://www.psi-project.jp/images/event/hiroaki_ishihata_20061220.pdf、２００９年５月１４日現在)
【非特許文献１１】「コレクティブ通信をサポートする高機能スイッチの開発」富士通株式会社  清水俊幸(URL: http://www.psi-project.jp/images/event/toshiyuki_shimizu_20080218.pdf、２００９年５月１４日現在)
【非特許文献１２】富士通フォーラム２００８「ペタスケールコンピューティングを担う先進技術」(URL: http://forum.fujitsu.com/2008/tokyo/exhibition/downloads/pdf/technology02_panf_jp.pdf、２００９年５月１４日現在)
【発明の概要】
【発明が解決しようとする課題】
【０００８】
並列計算におけるノード間通信方法としてのスキャッタおよびギャザ等の集団通信方法を実施する際に、限られた通信資源にて高性能を達成し得る構成を提供することが目的である。
【課題を解決するための手段】
【０００９】
並列計算用の集団通信にて、ノード間を転送される通信データの通信用のバッファへの配置を示す情報をバリア同期ないし全ノードへのリダクションを使用した同報通信により通知し、通信データの通信用のバッファへの配置を示す情報を使用してノード間のデータの転送を行う構成を設ける。
【発明の効果】
【００１０】
並列計算におけるノード間通信方法としてのスキャッタおよびギャザ等の集団通信方法を実施する際に、限られた通信資源にて高性能を達成し得る。
【図面の簡単な説明】
【００１１】
【図１】実施例の並列計算用の通信方法による、並列計算において１対１通信と集団通信とによる通信資源の共有について説明するブロック図である。
【図２】実施例の並列計算用の通信方法による、集団通信に共通な機能をネットワークに付加する点について説明するブロック図である。
【図３】実施例の並列計算用の通信方法による、通信装置内に通信用のバッファを設ける例について説明するブロック図である。
【図４Ａ】実施例の並列計算用の通信方法による、集団通信に使用する信頼性のある同報通信方法を実現する方法について説明する動作フローチャート（その１）である。
【図４Ｂ】実施例の並列計算用の通信方法による、集団通信に使用する信頼性のある同報通信方法を実現する方法について説明する動作フローチャート（その２）である。
【図５Ａ】実施例の並列計算用の通信方法による、集団通信に使用する信頼性のある同報通信方法を実現する方法について説明する動作フローチャート（その３）である。
【図５Ｂ】実施例の並列計算用の通信方法による、集団通信に使用する信頼性のある同報通信方法を実現する方法について説明する動作フローチャート（その４）である。
【図６Ａ】図４Ａ，４Ｂの方法における動作の流れについて説明する図（その１）である。
【図６Ｂ】図４Ａ，４Ｂの方法における動作の流れについて説明する図（その２）である。
【図６Ｃ】図４Ａ，４Ｂの方法における動作の流れについて説明する図（その３）である。
【図７Ａ】図５Ａ，５Ｂの方法における動作の流れについて説明する図（その１）である。
【図７Ｂ】図５Ａ，５Ｂの方法における動作の流れについて説明する図（その２）である。
【図７Ｃ】図５Ａ，５Ｂの方法における動作の流れについて説明する図（その３）である。
【図８】実施例の並列計算用の通信方法による、異なる種類のネットワークを使用して集団通信を行う例について説明するブロック図である。
【図９Ａ】実施例の並列計算用の通信方法よる、集団通信（スキャッタ）を行う際の動作の流れを説明するフローチャート（その１）である。
【図９Ｂ】実施例の並列計算用の通信方法よる、集団通信（スキャッタ）を行う際の動作の流れを説明するフローチャート（その２）である。
【図１０Ａ】図９Ａ，９Ｂの方法における動作の流れについて説明する図（その１）である。
【図１０Ｂ】図９Ａ，９Ｂの方法における動作の流れについて説明する図（その２）である。
【図１０Ｃ】図９Ａ，９Ｂの方法における動作の流れについて説明する図（その３）である。
【図１１Ａ】実施例の並列計算用の通信方法による、集団通信（スキャッタ）を行う際にバリア同期を行う際の動作の流れを説明するフローチャート（その１）である。
【図１１Ｂ】実施例の並列計算用の通信方法による、集団通信（スキャッタ）を行う際にバリア同期を行う際の動作の流れを説明するフローチャート（その２）である。
【図１２Ａ】実施例の並列計算用の通信方法による、集団通信（ギャザ）を行う際の動作の流れを説明するフローチャート（その１）である。
【図１２Ｂ】実施例の並列計算用の通信方法による、集団通信（ギャザ）を行う際の動作の流れを説明するフローチャート（その２）である。
【図１３Ａ】図１２Ａ，１２Ｂの方法における動作の流れについて説明する図（その１）である。
【図１３Ｂ】図１２Ａ，１２Ｂの方法における動作の流れについて説明する図（その２）である。
【図１４】各ノード（送信側のノード、受信側のノードあるいは中継ノード）のハードウェア構成例について説明するブロック図である。
【図１５】バリア同期を使用する同報の動作の流れを示すフローチャートである。
【図１６】図１５におけるバリア同期の動作の流れを示すフローチャートである。
【図１７】実施例における同報通信（リダクション装置を使用する方法）の動作の流れを示すフローチャートである。
【図１８】リダクション装置を使用する同報の動作の流れを示すフローチャートである。
【図１９】図１７、図１８に記載されたリダクション装置を使用する同報について説明するブロック図である。
【図２０】「通信用のバッファ」について説明するための図である。
【図２１】「リカバリ情報」のデータフォーマット例について説明するための図である。
【発明を実施するための形態】
【００１２】
実施例の並列計算用の通信方法は、複数のノードが同時に並行してデータ処理演算を行って一の演算結果を求める並列計算（以下、「並列計算」と称する）においてノード間通信を行う際の通信方法に係る。実施例の並列計算用の通信方法は、以下に述べる（１）乃至（５）の集団通信用の通信方法のうちの少なくとも一の方法を含む。
（１）並列計算におけるノード間通信としてのスキャッタおよびギャザを含む複数の種類の集団通信において使用される通信資源として以下に述べる通信資源を使用する。尚、並列計算におけるノード間通信としてのスキャッタ、ギャザを夫々以下単にスキャッタ、ギャザと称する。すなわち１対１のノード間通信である１対１通信において使用される通信資源を集団通信においても使用する。また１対１通信を行う際に使用するデータ通信経路を、集団通信を高速化する際にも使用する。更に、並列計算を実行する各ノード上の通信装置、通信ケーブル、通信中継装置を含む通信資源を、集団通信においても使用する。尚通信装置とは例えば通信カードであり、通信カードとは例えばＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
（２）スキャッタおよびギャザを含む複数の種類の集団通信において共通に使用でき、有効かつ単純な通信方法として、以下に述べる通信方法を使用する。すなわち「（比較的）短いデータに対し信頼性のある同報通信方法」、「通信装置内にあってノードのソフトウェアから操作可能なバッファ」および「通信装置における、複数データの並列待ち合わせ方法」のうちの少なくとも一のものを使用する。
【００１３】
ここで上記「（比較的）短いデータに対し信頼性のある同報通信」における「短い（データ）」の定義について以下に説明する。「短い」とは、単に「並列計算で同報通信したいデータの長さに比べて、当該同報通信１回で送れるデータが短い」ことを指す。「短い（データ）」の意義について更に以下に説明する。一般に通信方式の機能が限定されるほど、当該方式のハードウェアとしての実装は容易になる。「短い（データ）」としては、例えば「１回の物理パケット長より短いメッセージ」、制御パケット等の「固定長のヘッダ部分だけで、可変長のメッセージ本文がない」データ等が挙げられる。ここで「１回の物理パケット長より短いメッセージに限る」という制限や「固定長のヘッダ部分だけで、可変長のメッセージ本文がない」という制限つきの同報通信機能を想定する。当該想定において、上記制限付きに機能は、より一般の「複数の物理パケットからなるメッセージ本文つき」（すなわち「短い（データ）」でない場合の）同報通信機能に比べ、実現が容易であることに意味がある。
【００１４】
尚上記「（比較的）短いデータに対し信頼性のある同報通信方法」、「通信装置内にあってノードのソフトウェアから操作可能なバッファ」又は「通信装置における、複数データの並列待ち合わせ方法」は、集団通信の高速化の際に使用するものとする。
（３）「信頼性のある１対１通信」と「必ずしも信頼性のない同報通信」とを組み合わせて「信頼性のある同報通信方法」を構築する。そして当該「信頼性のある同報通信方法」をスキャッタ、ギャザを含む集団通信の実現あるいは当該集団通信の高速化の際に使用する。
【００１５】
ここで「信頼性のある通信」とは、当該通信の手続が終了した際にデータが相手側に正しく届く保証のある通信を意味し、「必ずしも信頼性のない通信」とは、当該通信の手続が終了した際にデータが相手側に正しく届く保証のない通信を意味する。必ずしも信頼性のない同報通信としては、例えばマルチキャストによる通信がある。マルチキャストはネットワーク内で、複数の相手を指定して同じデータを送信する通信方法であり、通常、通信の手続が終了した際にデータが相手側に正しく届く保証はなく、よって「必ずしも信頼性のない通信」と言える。
（４）上記（１）乃至（３）の通信方法のうちの少なくとも一の方法を、ＲＤＭＡ（Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）機能と組み合わせてスキャッタ、ギャザを含む集団通信の実現あるいは当該集団通信の高速化の際に使用する。
（５）上記（１）乃至（４）の通信方法のうちの少なくとも一の方法の実施において、システムの通信ネットワークに含まれる複数の通信ネットワークを共用する。そしてスキャッタ、ギャザを含む複数の集団通信の実現あるいは当該集団通信の高速化の際に使用する。
【００１６】
すなわち実施例による並列計算用の通信方法は、並列計算を行うシステムにおけるノード間通信としての集団通信を実施する際の通信方法である。
【００１７】
並列計算システムにおける集団通信用の通信方式としては、大別して以下の３種類１）、２）、３）の方法がある。
１）第１の実現例として、各ノードが信頼性のある１対１通信により所定のアルゴリズムに従ってデータをノード間で転送することによって集団通信を実現する方法である。この方法では特に集団通信用の通信ネットワークや集団通信を高速化する機構を使わず、通常の１対１通信用の通信ネットワークを使用して集団通信を行う。そのため実現費用が低いことが利点である。上記「高速化する機構」とは、集団通信専用に設けられる装置等を指す。この方法に関連する技術としては、中継アルゴリズムの選択、システムが使用する通信資源の特性の利用等によって中継の各段において１対１通信を高速化する技術などがある。夫々の技術には転送回数を減らすこと等によって転送時間を短縮する点で一定の効果があるが、以下に述べる限界が考えられる。
【００１８】
同一データを複数ノードに送る処理、あるいは複数のノードからのデータの待ち合わせが必要な処理には、その際のノード数に比例した処理時間がかかる。このため多数ノードとの通信では中継処理が必要であり、その中継処理の回数はノード数の（２を底とする）対数の程度で増加する。
【００１９】
中継処理に際してはデータがネットワークインターフェースからノード内に入り、その後ネットワークインターフェースから出ていくので、ネットワークインターフェース通過の時間の２回分、中継処理毎に通信遅延が生ずる。
【００２０】
ネットワークインターフェースのバンド幅によっても、中継処理を含めた通信のバンド幅が制限される。
２）第２の実現例として、１対１通信で使用する通信経路に、特定の集団通信を行う機能を統合する方法がある。代表的な例としては一般的なデータ長に対し信頼性のある同報通信、および(データの転送方向が同報通信の逆である)他のノードのデータを集約する集団通信（ギャザ）を統合したシステムがある。上記一般的なデータ長とは、例えば通信装置がサポートする任意のパケットサイズを指す。統合した集団通信の高速化の有効性は原理的に高いが、回路の大規模化という物量の面から実現費用が高くなりやすいと考えられる。ここで統合した集団通信の高速化の有効性が原理的に高い理由は、集団通信専用に設けられるハードウェアを使用することによる。物量の面からの制約から、同報通信やギャザをハードウェアで実行可能なノードの集合に対し「所属するノードのアドレスが特定の条件（例えば、「全て連番」など）を満たす」などの制約をつける場合も多いと考えられる。
３）第３の実現例として、各種類の集団通信の夫々に専用のネットワークを用意する方法がある。代表的な例として、集団通信としてのバリア同期処理、リダクション処理の夫々に対し専用の通信ネットワークを用意する。さらに上記２）の方法も併用し、１対１通信で使用する通信経路に一般的なデータ長に対し信頼性のある同報通信機能を統合するシステムである。集団通信の高速化の有効性は原理的に高いが、システム全体としての部品点数の増加により、個々の部品の回路規模の面で物量の制約が厳しくなることが考えられる。個々の部品の性能が出る条件が限定されることにより、システム全体としても性能が出る使用方法が限定されやすいと考えられる。
【００２１】
並列計算において複数のノードが協調して行う通信である「集団通信」の性能向上に際し、集団通信の種類に固有の通信パターンに適した配線接続（トポロジー）や特別な仕組みを持つ通信方式や高速化機構を使用することが有効と考えられる。上記高速化機構とは、集団通信の種類に固有な専用の装置を指す。一方、多数のノードからなる並列計算機システムの制作に際しては、ネットワークの特定の構成部品に対する物量上の制約が大きい場合が多いと考えられる。どの部品への制限が支配的になるかは、システムの構造や通信媒体の性質に依存する。代表的な例として、各ノードの通信インタフェース数、通信ケーブルおよび通信中継装置の総数、個々の構成部品の回路規模等による制限が考えられる。これらの制限のため集団通信専用ネットワークの作成や各集団通信の種類毎の高速化機構を設置する代わりに１対１通信の組み合わせで集団通信を行う構成を採用する場合が考えられる。実施例による並列計算用の通信方法では、ネットワーク構成部品の物量の増加を抑えた集団通信用のネットワークによって、高性能な並列計算における集団通信を実現する。
【００２２】
実施例による並列計算用の通信方法は、上記の如く、以下に示す（１）、（２）、（３）、（４）、（５）の方法のうちの少なくとも一の方法を使用する。
（１）スキャッタ、ギャザを含む各種の集団通信に共通の通信経路ないし高速化機構において、１対１通信のデータ通信経路と、並列計算を実行するノード上の通信インタフェース、通信ケーブル、通信中継装置を含む通信機構を利用する。このようにしてネットワーク全体で実現費用を抑える。
（２）スキャッタ、ギャザを含む複数の種類の集団通信に対し共通に有効かつ単純な機構としての以下の構成（ｉ）、（ｉｉ）、（ｉｉｉ）を使用する。すなわち、（ｉ）上記（比較的）短いデータに対し信頼性のある同報通信、（ｉｉ）通信装置内にあって並列計算を実行するノードのソフトウェアから操作可能なバッファ、および（ｉｉｉ）通信装置での複数データの並列待ち合わせ機構を使用する。使用方法としては、上記構成（ｉ）、（ｉｉ）、（ｉｉｉ）のうちの一のもの、あるいは複数を組み合わせて使用する。具体例につき後述する。このようにして複数の種類の集団通信に共通の構成を設けることにより、個々の種類の集団通信専用の通信経路や高速化機構を作る場合に生じ得る回路規模の増大を抑える。
（３）上記（比較的）短いデータに対し信頼性のある同報通信を持たない通信方式を採用する場合に、「信頼性のある１対１通信」と「必ずしも信頼性のない同報通信」とを組み合わせて「信頼性のある同報通信」を実現する。そして当該「信頼性のある同報通信」を、スキャッタ、ギャザを含む集団通信を高速化する手段として利用する。
（４）上記（１）乃至（３）の方法のうちの少なくとも一の方法を、ＲＤＭＡ機能と組み合わせてスキャッタ、ギャザを含む各種の集団通信を行う。
（５）上記（１）乃至（４）の方法のうちの一又は複数の方法を実施する際、システムのネットワークが含む複数のネットワークを利用する。
【００２３】
図１は実施例による並列計算用の通信方法に適用可能な、集団通信用の機構の使用例を概念的に示すブロック図であり、上記方法（１）の実現例を示す。
【００２４】
図１中、ノード１１，１２，１３，１４，１５，１６，１７，１８は、夫々並列計算を行うノードである。又、図１中の通信中継装置Ｒ１，Ｒ２，Ｒ３，Ｒ４は、各々が１対１通信と集団通信とに共通して使用される通信中継装置である。尚通信中継装置とは、例えばいわゆるスイッチ、あるいはルータである。各ノード１１乃至１８が１対１通信に使用される通信中継装置Ｒ１乃至Ｒ４を集団通信においても使用することにより、システム全体で要される通信資源の量を効果的に削減できる。ここで１対１通信とは、例えばＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を利用した通信、更にＲＤＭＡ機能を利用した通信等である。
【００２５】
なお、以後の、各図面を参照しての説明における「バッファ」としては、「ネットワーク上の記憶装置のアドレスと当該記憶装置上のアドレスとの対を指定することによって他の全てのノードから送信データをＲＤＭＡ機構により取得可能なネットワーク上の記憶装置」を使用する。例えば、以下の(p)乃至(r)のような場所の記憶装置を通信用のバッファとして使用する。また、当該(p)乃至(r)のような場所を複数併用してもよい。通信用のバッファの具体例につき、図２０とともに後述する。
(p)送信側のノード自体が持つメモリ、あるいは送信側のノードが有する通信カード上のメモリ。
(q)通信中継装置自体が持つメモリ、あるいは通信中継装置が有する通信カード上のメモリ。
(r)ネットワーク上の記憶装置（通信中継装置内のメモリ、あるいは通信中継装置に連動するメモリ）。
【００２６】
ここで通信用のバッファとしてのメモリの実装位置の違いによる影響は、下記の(a)乃至(d)の範囲に限定される。
【００２７】
(a)通信手順上で使用するＲＤＭＡ機能の実施に際しての「ネットワーク上の送信データの場所（ネットワーク上の記憶装置のアドレスと、当該記憶装置上のアドレスとの対）」の差
(b)ＲＤＭＡ機能を起動する際に使用されるコマンド（ないしコマンド列）の差
(c)通信用のバッファの実装位置による通信遅延の差（例えば、ＮＩＣや通信中継装置等の通信装置上のメモリを使用する場合、送信側のノードのメモリ（主記憶）を使用する場合に比べ、送信データがネットワークに送出される際の遅延時間が、一般的には小さい）
(d)通信用のバッファの実装位置による容量の差（通信装置上のメモリの容量は、送信側のノードの主記憶の容量に比べ、一般的には小さい）
説明の便宜上、上記(p)乃至(r)のメモリを区別せずに単に通信用のバッファと称する。
【００２８】
図１中、機構Ｃ１，Ｃ２，Ｃ３，Ｃ４は集団通信用の機構である。集団通信用の機能とは、例えば図１５乃至図１９とともに後述する「バリア同期」や「リダクション」を実現する回路や装置、あるいは「通信データの通信用のバッファ」等である。又、上記方法（２）における（ｉ）（比較的）短いデータに対し信頼性のある同報通信を行う機構、あるいは（ｉｉ）通信装置内にあって並列計算を実行するノードのソフトウェアから操作可能なバッファである。あるいは上記方法（２）における（ｉｉｉ）通信装置での複数データの並列待ち合わせ機構である。あるいは上記方法（３）における「「信頼性のある１対１通信」と「必ずしも信頼性のない同報通信」とを組み合わせて構築する「信頼性のある同報通信」」を実行する機構である。あるいは上記方法（４）におけるＲＤＭＡ機能を実行する機構、あるいは上記方法（５）における複数のネットワークである。
【００２９】
図２は、上記方法（２）の実現例について概念的に説明するブロック図である。図２中、ノード１１，１２，１３，１４は、並列計算を行うノードであり、夫々が通信カード（例えばＮＩＣ）１１ａ，１２ａ、１３ａ、１４ａを有する。各ノード１１乃至１４は、通信中継装置Ｒ１１を介し、相互に通信可能に接続され、ネットワークを形成する。上記方法（２）の（ｉ）（比較的）短いデータに対し信頼性のある同報通信は、例えば上記バリア同期や全ノードへのリダクションを使用して実現される。バリア同期や全ノードへのリダクションを実現する回路は例えば通信中継装置Ｒ１１内に設けられ、あるいは専用のリダクション装置に設けられる。ノード１１乃至１４は、スキャッタ、ギャザ等の集団通信を実施する際、通信データの通信用のバッファへの配置を示す情報を伝達する手段として上記方法（２）における信頼性のある同報通信あるいは上記方法（３）における信頼性のある同報通信を利用する事ができる。方法（２）の信頼性のある同報通信を効率的に実現する手段として、バリア同期や全ノードへのリダクションを利用することができる。この点につき、図９Ａ乃至１３Ｂまたは、図１７乃至図１９とともに後述する。
【００３０】
上記方法（２）の（ｉｉ）通信装置内にあって並列計算を実行するノードのソフトウェアから操作可能なバッファを有する通信装置あるいはノードとして、通信装置あるいはノードＮ１１を設けることができる。当該バッファの用途として、例えば後述する図４Ａ，ステップＳ１、図５Ａ，ステップＳ１１における「データ用バッファ」、図９Ａ，ステップＳ３１における「バッファ」としての用途が挙げられる。又、図１１Ａ，ステップＳ４１における「通信用のバッファ」、図１５，ステップＳ１０１における「通信データの通信用のバッファ」としての用途が挙げられる。
【００３１】
上記方法（２）の（ｉｉｉ）通信装置での複数データの並列待ち合わせ機構として、例えば以下の構成が挙げられる。すなわち、後述する図９Ａ、ステップＳ３３の「受信完了を待ち合わせる」構成、図１１Ａ，ステップＳ４２の「送信データの受信完了待ち」の構成、図１２Ａ，ステップＳ５２の「全データの受信完了を待ち合わせる」構成等である。これらの構成としては、例えば上記バリア同期を実行する構成が挙げられる。
【００３２】
図３は、上記方法（２）の（ｉｉ）通信装置内にあって並列計算を実行するノードのソフトウェアから操作可能なバッファとして利用可能な、通信カード上のバッファ、あるいは通信中継装置と連動するバッファを説明するブロック図である。ここで通信中継装置と連動するバッファとは、通信中継装置がデータを中継する際、当該通信中継装置の機能として、自動的に当該データを記録する際の記録先のバッファを意味する。当該記録先のバッファとは、例えば図３の例では、通信中継装置Ｒ２１がデータを記録する通信カード１２ｃのバッファ１２ｃｂを意味する。なお「バッファを保持する専用ノード」を別途設けることも可能であり、その場合当該バッファを保持する専用ノードをソフトウェアによって通信手順上に割り当てて使用することができる。すなわち通信手順を規定するソフトウェアが、バッファを保持する専用ノードを使用する手順を含むようにすることができる。
【００３３】
図３中、ノード１１，１２は夫々並列計算を実行するノードであり、夫々通信カード（ＮＩＣ等）１１ｃ、１２ｃを有する。ノード１１，１２は通信中継装置Ｒ２１を介し相互に通信可能に接続され、ネットワークを形成する。ノード１１，１２は夫々主記憶装置内にバッファ１１ｂ、１２ｂを有し、又、通信カード１１ｃ、１２ｃも夫々バッファ１１ｃｂ、１２ｃｂを有する。これらバッファ１１ｂ、１２ｂ、１１ｃｂ、１２ｃｂは、上記「通信装置内にあって並列計算を実行するノードのソフトウェアから操作可能なバッファ」として利用可能なバッファである。また、大規模なネットワークでは何段もの階層的な中継処理が必要であるが、以下の説明では便宜上、中継処理がある場合は「中継処理の１段分」のみを表記する。
【００３４】
図３中、ノード１１、ノード１２を含むノード間で集団通信が実施される場合、例えばノード１１からノード１２にデータが転送される。その際、ノード１１のバッファ１１ｂから通信カード１１ｃのバッファ１１ｃｂにデータが転送され、更に通信中継装置Ｒ２１を介して通信カード１２ｃのバッファ１２ｃｂに転送され、更にノード１２のバッファ１２ｂに転送される。各バッファ間のデータの転送は、ＴＣＰ／ＩＰ、あるいは更にＲＤＭＡ機能を利用して実施することができる。各バッファ間のデータの転送の詳細につき、図９Ｂ乃至１３Ｂとともに後述する。
【００３５】
上記方法（２）における（ｉｉｉ）通信装置での複数データの並列待ち合わせ機構として、例えば上記「バリア同期」を用いることができる。上記の如く、バリア同期とは、同期用の関数の呼び出しが同期に参加する全てのノードで行われることで同期が完了する同期方法である。高速なバリア同期機構を備えたネットワークが大規模な並列計算システムではしばしば使用される。それらの並列計算システムに実施例による並列計算用の通信方法を適用できる。
【００３６】
次に上記方法（３）の実現例について説明する。上記方法（３）では、各ノードに付属する通信装置が必ずしも信頼性のない同報通信機能を持ち、かつ、信頼性のある１対１通信を持つ場合に、これらを組み合わせて信頼性のある同報通信機能を実現する。具体的には、１対１通信による通信データのリカバリを実行することにより、信頼性を確保する。リカバリの方法として、例えば後述する（ａ）再送による方法、（ｂ）送信データに冗長性を持たせる方法、がある。
【００３７】
その結果、必ずしも信頼性のない同報通信で信頼性のある同報通信を実現することができる。例えば信頼性のある１対１通信の繰り返しによって送信データのリカバリに必要なデータ（以下「リカバリ情報」と称する）を送信する。リカバリ情報の送信は、「必ずしも信頼性のない同報通信」による送信データの転送の前でも後でもよい。リカバリ情報は送信データの完全性のチェックと送信データのリカバリに必要な情報を含み、例えば送信データのサイズ、エラー検出コード、場合によってはタイムアウト時間その他の情報を含む。尚、当該（３）の方法で実現する信頼性のある同報通信は、実施例による並列計算用の通信方法による集団通信において、例えば図９Ａ，ステップＳ３２，図９Ｂ，ステップＳ３４における「信頼性のある同報通信」として使用され得る。同様に当該（３）の方法で実現する信頼性のある同報通信は、実施例による並列計算用の通信方法による集団通信において、例えば図１２Ａ，ステップＳ５１，図１２Ｂ，ステップＳ５３における「信頼性のある同報通信」として使用され得る。
【００３８】
リカバリ情報の送信が「必ずしも信頼性のない同報通信」による送信データの転送の前の場合、受信側のノードが送信データを受け取った直後に送信データの正当性を確認できる。このため、各々の送信データに対する通信用のバッファの割付時間を短くすることが可能となる。
【００３９】
リカバリ情報の送信が「必ずしも信頼性のない同報通信」による送信データの転送の後の場合、例えば予め送信データの中に誤り訂正符合を埋め込んでおくことができる。その結果、送信データのパケット全体が消失していない限り送信データを再度転送することなしに送信データのリカバリが可能になる場合がある。
【００４０】
送信データのリカバリの方法として、例えば以下の方法（ａ）、（ｂ）が考えられる。
【００４１】
(a)再送による方法
(1)受信側のノードが受信したデータのパケット異常を検出して送信側のノードに送信データの再送を要求する。
【００４２】
(2)送信側のノードが、受信側のノードからの受信確認応答のタイムアウトを検出した場合、送信データを再送する。
【００４３】
(b)送信データに冗長性を持たせる方法
Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ（ＦＥＣ：前方誤り訂正)等を利用することができる。すなわち送信するデータを複数のパケットに分けて送信する際、誤り訂正符号化処理により、例えばＮ＋１パケットを送信する。この場合、Ｎ＋１パケットのうちNパケットを正しく受信できれば元のデータが復元できるように送信データを変換して送信する。
【００４４】
以下図４Ａ乃至７Ｃとともに、上記（３）の方法の実現例について説明する。
【００４５】
図４Ａ，４Ｂとともに、リカバリ情報を送信データの前に送信する場合の動作の流れについて説明する。
【００４６】
図４Ａ中、送信側のノードは、必ずしも信頼性のない同報通信（後述するステップＳ３）と、リカバリの際の信頼性のある１対１通信（後述するスップＳ７）との両方で使用するデータ用のバッファを設定する（ステップＳ１）。次に送信側ノードは、信頼性のある１対１通信によりリカバリ情報を送信する（ステップＳ２）。この場合図６Ａとともに後述するように、リカバリ情報は同報通信の段階毎（階層毎）に順次ノード間で転送される。同報通信の段階（階層）とは、同報通信を複数回繰り返して順次データを転送する際の、同報通信の回数を意味する。また図６Ａに示す如く各同報通信の段階（階層）において送信先が複数の場合、信頼性のある１対１通信を送信先のノード数分繰り返すことにより、当該複数の送信先に対する同報を達成する。信頼性のある１対１通信は、例えばＲＤＭＡ機能の利用により実現可能である。
【００４７】
次に送信側のノードは、必ずしも信頼性のない同報通信によって送信データを送信する（ステップＳ３）。
【００４８】
図４Ｂ中、受信側のノードは、上記ステップＳ２で送信側のノードから送信されたリカバリ情報を、上記信頼性のある１対１通信により受信する（ステップＳ４）。この場合も、リカバリ情報は同報通信の段階毎（階層毎）に順次ノード間で転送される。次に受信側のノードは、上記ステップＳ３にて送信側のノードから必ずしも信頼性のない同報通信によって送信された送信データを、当該必ずしも信頼性のない同報通信によって受信する（ステップＳ５）。次に受信側のノードは、上記受信したリカバリ情報に基づいて、誤り検出及び訂正若しくは再送処理等を行うことにより、上記受信した送信データの完全性をチェックし、受信した送信データのリカバリが必要か否か判断する（ステップＳ６）。リカバリが必要な場合（ＹＥＳ）、信頼性のある１対１通信によって受信した送信データのリカバリを行う（ステップＳ７）。信頼性のある１対１通信としては、例えばＲＤＭＡ機能による通信を使用することができる。受信した送信データの誤り検出及び訂正若しくは再送処理等のリカバリが不要の場合（ステップＳ６のＮＯ）、動作を終了する。
【００４９】
次に図５Ａ，５Ｂとともに、リカバリ情報を送信データの後に送信する場合の動作の流れについて説明する。
【００５０】
図５Ａ中、送信側のノードは、必ずしも信頼性のない同報通信（後述するステップＳ１２）と、リカバリの際の信頼性のある１対１通信（後述するスップＳ１７）との両方で使用するデータ用のバッファを設定する（ステップＳ１１）。次に送信側のノードは、必ずしも信頼性のない同報通信によって送信データを送信する（ステップＳ１２）。上記の如く、必ずしも信頼性のない同報通信としては、例えばマルチキャストによる通信を使用し得る。次に送信側ノードは、信頼性のある１対１通信により、リカバリ情報を送信する（ステップＳ１３）。この場合図６Ａとともに後述するように、リカバリ情報は同報通信の段階毎（階層毎）に順次ノード間で転送される。また図８Ｂに示す如く、各同報通信の段階毎（階層毎）に送信先が複数の場合、信頼性のある１対１通信を送信先の個数分繰り返すことにより、当該複数の送信先に対する同報を達成する。信頼性のある１対１通信は、例えばＲＤＭＡ機能の利用により実現可能である。
【００５１】
図５Ｂ中、受信側のノードは、上記ステップＳ１２にて送信側のノードから必ずしも信頼性のない同報通信によって送信された送信データを、当該必ずしも信頼性のない同報通信によって受信する（ステップＳ１４）。次に受信側のノードは、上記ステップＳ１３で送信側のノードから信頼性のある１対１通信で送信されたリカバリ情報を、当該信頼性のある１対１通信により受信する（ステップＳ１５）。この場合も、リカバリ情報は同報通信の段階毎（階層毎）に順次ノード間で転送される。次に受信側のノードは、上記受信したリカバリ情報に基づいて上記受信した送信データの完全性をチェックし、受信したデータのリカバリが必要か否か判断する（ステップＳ１６）。リカバリが必要な場合（ＹＥＳ）、信頼性のある１対１通信によって受信した送信データのリカバリを行う（ステップＳ１７）。信頼性のある１対１通信としては、例えばＲＤＭＡ機能による通信を使用することができる。受信した送信データのリカバリが不要の場合（ステップＳ１６のＮＯ）、動作を終了する。
【００５２】
次に図６Ａ，６Ｂ，６Ｃとともに、図４Ａ，４Ｂとともに説明した、リカバリ情報を送信データの前に送信する場合につき、具体例を挙げて説明する。
【００５３】
図６Ａ，６Ｂ，６Ｃの具体例は、受信側のノードが送信データのリカバリを行う場合、ＲＲＤＭＡ（Ｒｅａｄ  Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）機能を使用する例である。ＲＲＤＭＡ機能とは、他ノードのメモリのアドレスを指定してデータを直接転送する機能であるＲＤＭＡ機能のうち、受信側から通信を開始する場合の機能を指す。ＲＲＤＭＡ機能はＧｅｔ機能とも称される。図６Ａ，６Ｂ，６Ｃの例の場合、並列計算用の通信ネットワークがＲＲＤＭＡ機能を有し、ＲＲＤＭＡ機能の使用によって受信ノード側が送信データのリカバリを起動する。例えば、後述する図６Ｃのステップで、受信側のノードが、ＲＲＤＭＡ機能により、同じく後述する図６Ｂのステップで一旦受信した送信データを、当該受信側のノードに再度転送する。当該具体例はＲＲＤＭＡ機能を利用するため、上記方法（３）と方法（４）との組み合わせの例と言える。
【００５４】
なお上記ＲＤＭＡ機能とはリモートホストのメモリにＣＰＵを介さず直接値を書き込むアクセス機能である。ＲＤＭＡ機能によればＣＰＵへの負荷が非常に小さく、かつ極めて小さい遅延で通信できることが可能となる。ＩｎｆｉｎｉＢａｎｄ、Ｖｉｒｔｕａｌ  Ｉｎｔｅｒｆａｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＶＩＡ）、ｉＷａｒｐなどの通信規格においては、ＲＤＭＡ機能は標準的な機能として定義されている。なおｉＷａｒｐはＥｔｈｅｒｎｅｔ上のＴＣＰ／ＩＰコネクションを通してＲＤＭＡを行う機能（ＲＤＭＡ  ｏｖｅｒ  ＴＣＰ／ＩＰ）を含む。いずれの規格によるＲＤＭＡ機能の実現も（実装手段の細部は異なるが）基本機能の面では、特に違いはない。非特許文献９には上記ＲＤＭＡ  ｏｖｅｒ  ＴＣＰ／ＩＰとＲＤＭＡ  ｏｖｅｒ  ＩｎｆｉｎｉＢａｎｄの技術解説が記載されている。
【００５５】
図６Ａ，６Ｂ，６Ｃの具体例の場合は、送信側のノード１１が、受信側のノード２１，２２，３１，３２，３３、３４に対し、同報を行う。図６Ａ，６Ｂ，６Ｃに示す如く、各ノード１１，２１，２２，３１，３２，３３，３４は、夫々データ用のバッファ１１ｂ，２１ｂ，２２ｂ，３１ｂ，３２ｂ，３３ｂ，３４ｂを設定する。第１のステップで図６Ａに示す如く、送信側のノード１１から、リカバリ情報の同報通信の第１段階の受信側のノード２１，２２に対し、リカバリ情報を同報する。実際には上記の如く信頼性のある１対１通信で受信側のノード２１，２２の夫々に対し順次リカバリ情報が送信される。リカバリ情報は上記の如く、送信するデータの伝送エラー検出および回復用情報として、データの大きさ、エラー検出コード、タイムアウト時間などの情報を含む。
【００５６】
次に、このようにリカバリ情報を受信したリカバリ情報の同報通信の第１段階の受信側のノード２１，２２は、リカバリ情報の同報通信の第２段階の受信側のノード３１，３２，３３，３４に対し、夫々当該リカバリ情報を同報する。この場合も実際には上記の如く信頼性のある１対１通信でノード２１，２２からノード３１，３２，３３，３４の夫々に対し、順次リカバリ情報が送信される。
【００５７】
第２のステップでは図６Ｂに示す如く、送信側のノード１１は必ずしも信頼性のない同報通信（例えばマルチキャスト）により全ての受信側のノード２１，２２，３１，３２，３３，３４に対し送信データを送信する。その結果、送信側のノード１１のバッファ１１ｂから、受信側のノード２１，２２，３１，３２，３３，３４の夫々のバッファ２１ｂ，２２ｂ，３１ｂ，３２ｂ，３３ｂ，３４ｂに送信データが転送される。上記必ずしも信頼性のない同報通信は、例えば上記の如く、マルチキャストによる同報通信とすることができる。
【００５８】
第３のステップでは図６Ｃに示す如く、受信した送信データのリカバリが必要（図４ＢのＹＥＳ）な受信側のノード２１，３２，３３が、夫々ＲＲＤＭＡ機能により受信した送信データのリカバリを行う。
【００５９】
次に図７Ａ，７Ｂ，７Ｃとともに、図５Ａ，５Ｂとともに説明した、リカバリ情報を送信データの後の送信する場合につき、具体例を挙げて説明する。
【００６０】
図７Ａ，７Ｂ，７Ｃの具体例も、上記した図６Ａ，６Ｂ，６Ｃの具体例と同様、受信側のノードが受信した送信データのリカバリを行う場合、ＲＲＤＭＡ機能を使用する。当該具体例もＲＲＤＭＡ機能を利用するため、上記方法（３）と方法（４）との組み合わせの例と言える。
【００６１】
図７Ａ，７Ｂ，７Ｃの具体例の場合も図６Ａ，６Ｂ，６Ｃの具体例同様、送信側のノード１１が、受信側のノード２１，２２，３１，３２，３３、３４に対し、同報を行う。図７Ａ，７Ｂ，７Ｃに示す如く、各ノード１１，２１，２２，３１，３２，３３，３４は、夫々データ用のバッファ１１ｂ，２１ｂ，２２ｂ，３１ｂ，３２ｂ，３３ｂ，３４ｂを設定する。第１のステップでは図７Ａに示す如く、送信側のノード１１は必ずしも信頼性のない同報通信により全ての受信側のノード２１，２２，３１，３２，３３，３４に対し送信データを送信する。その結果、送信側のノード１１のバッファ１１ｂから、受信側のノード２１，２２，３１，３２，３３，３４の夫々のバッファ２１ｂ，２２ｂ，３１ｂ，３２ｂ，３３ｂ，３４ｂに対し、送信データが転送される。上記必ずしも信頼性のない同報通信は、例えば上記の如く、マルチキャストによる同報通信とすることができる。
【００６２】
第２のステップで図７Ｂに示す如く、送信側のノード１１から、リカバリ情報の同報通信の第１段階の受信側のノード２１，２２に対し、リカバリ情報を同報する。実際には上記の如く信頼性のある１対１通信で受信側のノード２１，２２の夫々に対し順次リカバリ情報が送信される。リカバリ情報は上記の如く、送信するデータの伝送エラー検出および回復用情報として、データの大きさ、エラー検出コード、タイムアウト時間などの情報を含む。リカバリ情報のデータフォーマット例につき、図２１とともに後述する。
【００６３】
次に、このようにリカバリ情報を受信したリカバリ情報の同報通信の第１段階の受信側のノード２１，２２は、リカバリ情報の同報通信の第２段階の受信側のノード３１，３２，３３，３４に対し、夫々当該リカバリ情報を同報する。この場合も実際には上記の如く信頼性のある１対１通信でノード２１，２２からノード３１，３２，３３，３４の夫々に対し、順次リカバリ情報が送信される。
【００６４】
第３のステップでは図７Ｃに示す如く、受信した送信データのリカバリが必要（図４ＢのＹＥＳ）な受信側のノード２１，３２，３３が、夫々ＲＲＤＭＡ機能により受信した送信データのリカバリを行う。
【００６５】
次に図８とともに、上記（５）の方法について説明する。図８の例では上記（５）の方法における「複数のネットワーク」として、第１のネットワークおよび第２のネットワークを使用する。
【００６６】
図８中、第１のネットワークは通信中継装置Ｒ３１を有し、「短いデータに対し信頼性のある同報通信」の機能をサポートする。当該短いデータに対し信頼性のある同報通信は、実施例による並列計算用の通信方法において、例えば上述する図９Ａ，ステップＳ３２，図９Ｂ，ステップＳ３４における「信頼性のある同報通信」として使用され得る。同様に当該短いデータに対し信頼性のある同報通信は、実施例による並列計算用の通信方法において、例えば後述する図１２Ａ，ステップＳ５１，図１２Ｂ，ステップＳ５３における「信頼性のある同報通信」としても使用され得る。すなわち送信側のノード１１は通信カード１１ｃ１を使用し、第１のネットワークの通信中継装置Ｒ３１を介して「通信データの通信用のバッファへの配置を示す情報」を送信する。受信側の各ノード２１は通信カード２１ｃ１を使用し、第１のネットワークの通信中継装置Ｒ３１を介して「通信データの通信用のバッファへの配置を示す情報」を受信する。
【００６７】
他方、第２のネットワークは通信中継装置Ｒ３２を有し、信頼性のある１対１通信方法（ＲＲＤＭＡあるいはＷＲＤＭＡ（Ｗｒｉｔｅ  Ｒｅｍｏｔｅ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）機能による通信方法等）をサポートする。ここでＷＲＤＭＡ機能とは、他ノードのメモリからデータを直接転送する機能であるＲＤＭＡ機能のうち、送信側から通信を開始する機能を言う。当該信頼性のある１対１通信は、実施例による並列計算用の通信方法において、例えば後述する図９Ｂ，ステップＳ３５における「ＲＲＤＭＡ」機能によるデータ転送の手段として使用され得る。同様に当該信頼性のある１対１通信は、実施例による並列計算用の通信方法において、例えば後述する図１２Ｂ，ステップＳ５４における「ＷＲＤＭＡ」機能によるデータ転送の手段としても使用され得る。すなわち受信側の各ノード２１は通信カード２１ｃ２を使用し、第２のネットワークの通信中継装置Ｓ２を介し、送信側のノード１１の通信カード１１ｃ２から、通信データを受信（図９Ｂ，ステップＳ３５）する。あるいは送信側の各ノード２１は通信カード２１ｃ２を使用し、第２のネットワークの通信中継装置Ｓ２を介し、更に通信カード１１ｃ２を介し、受信側のノード１１に対し、通信データを送信（図１２Ｂ，ステップＳ５４）する。
【００６８】
このように上記（５）の方法によれば、実施例による並列計算用の通信方法における「短いデータに対し信頼性のある同報通信」および「信頼性のある１対１通信」の夫々につき、異なる２つのネットワーク、第１および第２のネットワークを使用することができる。
【００６９】
以下に実施例による並列計算用の通信方法につき、図９Ａ乃至図１３Ｂとともに説明する。
【００７０】
実施例による並列計算用の通信方法では、システム構成に依存して物量面の制約が支配的なネットワークの部分を、並列計算におけるノード間通信のうちの１対１通信と、スキャッタ、ギャザを含む複数の種類の集団通信とが共用する。すなわちシステム構成に依存して物量面の制約が支配的なネットワークの部分を、並列計算におけるノード間通信のうちの１対１通信の際に使用する。同時に、当該ネットワークの部分を、スキャッタ、ギャザを含む複数の種類の集団通信の際にも使用する。その結果、１対１通信の際に使用するネットワークと、スキャッタ、ギャザを含む複数の種類の集団通信の際に使用するネットワークとを個別に設ける場合に比し、システムの実現費用を抑え、且つ、システム全体としての性能の維持が果たせる。
【００７１】
まず実施例１による並列計算用の通信方法につき、図９Ａ乃至図１１Ｂとともに説明する。
【００７２】
実施例１では、短いデータに対し信頼性のある同報通信の機能および１対１通信としてのＲＲＤＭＡ機能を使用し、スキャッタを高速化する。上記の如くＲＤＭＡ機能によれば極めて小さい遅延で通信を行い得る。ＲＲＤＭＡ機能は上記の如くＲＤＭＡ機能のうち受信側から通信を開始する場合の機能であるから、スキャッタにおけるデータ転送をＲＲＤＭＡ機能で行うことにより、スキャッタを高速化し得る。
【００７３】
図９Ａ中、送信側のノードは、複数の受信側のノードの各々に送信する通信データを通信用のバッファに配置（格納）する（ステップＳ３１）。ここで通信用のバッファとして、例えば図２に示される通信装置あるいはノードＮ１１が有するバッファ、図３に示される各バッファ１１ｂ、１１ｃｂ、１２ｂ、１２ｃｂ等を利用することができる。次に送信側のノードは、「短いデータに対し信頼性のある同報通信」により、通信データの通信用のバッファへの配置完了メッセージ（以下単に「配置完了メッセージ」と称する）を通知する（ステップＳ３２）。当該「配置完了メッセージ」は、「通信データを通信用のバッファへ配置した旨の通知」と、「通信データの通信用のバッファへの配置状況を示す情報」とを含む。「配置完了メッセージ」は、「通信データの通信用のバッファへの配置を示す情報」に対応する。すなわち「通信データの通信用のバッファへの配置を示す情報」は、「通信データを通信用のバッファへ配置した旨の通知」と、「通信データの通信用のバッファへの配置状況を示す情報」とを含む。上記「通信データの通信用のバッファへの配置状況を示す」とは、通信用のバッファのどの部分に各受信側のノードに対する通信データが配置されたかを示す情報である。この点につき図２０とともに具体例を後述する。上記ステップＳ３２の「短いデータに対し信頼性のある同報通信」は、例えば図４Ａ乃至図７Ｃとともに説明した、「必ずしも信頼性のない同報通信」と「信頼性のある１対１通信」とを組み合わせて構築することができる。あるいは図１５，図１６とともに説明する「バリア同期」を使用した同報通信を「短いデータに対し信頼性のある同報通信」として使用することもできる。あるいは図１７乃至図１９とともに説明する「リダクション装置」により実現される「全ノードへのリダクション」を使用した同報通信を「短いデータに対し信頼性のある同報通信」として使用することもできる。
【００７４】
次に送信側のノードは、受信側のノードの各々が通信データを受信したことを示す受信完了の通知を待つ（ステップＳ３３）。受信側のノードの各々から受信完了の通知が届いたら、当該スキャッタの動作を終了する。
【００７５】
図９Ｂ中、受信側のノードの各々は、上記ステップＳ３２で送信側のノードから「短いデータに対し信頼性のある同報通信」で送信された配置完了メッセージを、当該「短いデータに対し信頼性のある同報通信」で受信する（ステップＳ３４）。次に受信側のノードの各々はＲＲＤＭＡ機能によって、自ノードに対する通信データを上記通信用のバッファから受信する（ステップＳ３５）。より具体的には、各受信側のノードは、上記受信した配置完了メッセージが含む、通信用のバッファのどの部分に各受信側のノードに対する通信データが配置されたかを示す情報に基づき、該当する通信用のバッファのアドレスを得る。各受信側のノードは、このようにして得られた該当する通信用のバッファのアドレスを指定してＲＲＤＭＡを行うことにより、自ノードに対する通信データを通信用のバッファから読み出して得ることができる。ＲＲＤＭＡ機能により自ノードに対する通信データを受信すると、各受信側のノードは受信完了の通知を送信側のノードに対し行い（ステップＳ３６）、スキャッタの動作を終了する。
【００７６】
図１０Ａ，１０Ｂ，１０Ｃは、図９Ａ，９Ｂとともに上述した実施例１の具体例を示す。図１０Ａに示す第１のステップで送信側のノード１１は、一連の通信データを自ノードのバッファ１１ｂ１，１１ｂ２，１１ｂ３に配置し、「短いデータに対し信頼性のある同報通信」により、他のノード２１，２２，２３（受信側のノード）全てに対し上記配置完了メッセージを通知する。ここでの通知は同報によるものであるため、各ノード２１，２２，２３に対し、共通の配置完了メッセージを通知することになる。各受信側のノード２１，２２、２３は共通の配置完了メッセージを受信し、例えば予め決められた規則に従って、自ノードに対する通信データが配置された通信用のバッファの部分を認識し得る。
【００７７】
図１０Ｂに示す第２のステップでは、送信側のノード１１以外のノード（受信側のノード）２１，２２，２３は、ＲＲＤＭＡ機能により、自ノード宛の通信データを通信用のバッファから読み出して取得する。通信データを取得した各ノード（受信側のノード）２１，２２，２３は、取得した通信データを夫々自ノードのバッファ２１ｂ、２２ｂ、２３ｂに格納する。当該具体例はスキャッタの例であるため、送信側のノード１１のバッファ１１ｂ、１１ｂ２，１１ｂ３に配置された通信データは、バッファ１１ｂ、１１ｂ２，１１ｂ３毎に相互に異なることが許容される。受信側の各ノード２１，２２、２３は以下のようにして、自ノードに対する通信データが、夫々バッファ１１ｂ１，１１ｂ２，１１ｂ３に配置されたことを認識する。すなわち各受信ノードは、上記配置完了メッセージが含む、通信用のバッファのどの部分に自ノードに対する通信データが配置されたかを示す情報に基づき、自ノードに対する通信データが配置されたバッファを認識する。そして、受信側の各ノード２１，２２、２３は夫々該当するバッファ１１ｂ１，１１ｂ２，１１ｂ３を指定してＲＲＤＭＡを実施する。その結果受信側の各ノード２１，２２、２３は夫々該当するバッファ１１ｂ１，１１ｂ２，１１ｂ３から通信データを読み出して受信する。したがって上記の如く、バッファ１１ｂ、１１ｂ２，１１ｂ３に配置された通信データがバッファ１１ｂ、１１ｂ２，１１ｂ３毎に相互に異なる場合、受信側のノード２１，２２、２３は夫々、相異なる通信データを受信することになる。したがってスキャッタが実現される。
【００７８】
図１０Ｃに示す第３のステップでは、上記第２のステップで自ノードに対する通信データを受信した各受信ノードは、送信側のノードに対し、受信完了の通知を送信する。送信側のノードは当該受信完了の通知を受ける。その結果スキャッタの動作が終了する。
【００７９】
ここで上記実施例１で使用される「短いデータに対し信頼性のある同報通信」（図９Ａ中、ステップＳ３２中「信頼性のある同報通信」）と、受信完了の待ち合わせ（ステップＳ３３）とにつき、以下に補足して説明する。
【００８０】
実施例による並列計算用の通信方法において、ノード間通信としての同報通信は「送信側のノードと受信側のノードとの全てが夫々のプログラム上の特定箇所で同期する」ことを前提条件として実施される。その場合、予め送信側のノードと受信側のノードとの間で、特定の同報通信を行う通信用のバッファのアドレスについての情報を交換しておく。その結果、バリア同期の機能と、信頼性のある１対１通信としてのＲＲＤＭＡ機能とを組み合わせて同報通信の機能を実現することができる（例えば後述する図１５中、ステップＳ１０２，Ｓ１０３）。
【００８１】
ここで例えば、標準的な並列計算用の通信ライブラリ（のインターフェース規定）としてＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ（非特許文献４，５，６参照））がある。ＭＰＩにおける同報通信では、受信側と送信側とが共にＭＰＩ＿Ｂｃａｓｔ（）という同じ関数を「送信側」、「受信側」を示す引数を指定して呼び出す。したがってこの場合上記前提条件「送信側のノードと受信側のノードとの全てが夫々のプログラム上の特定箇所で同期する」ことが成り立つ。
【００８２】
又、上記予め相互に交換しておく通信用のバッファのアドレスについての情報を、夫々の受信側のノード毎に異なるものとすることができる。そして各受信側のノードが送信側のノードの通信用のバッファの異なるアドレスを指定して通信データを受信することが可能である。そのようにして結果的に「１つの送信側のノードが一連のデータを一斉に送信し、各受信のノードが、当該一連のデータの、夫々異なる部分を受信するスキャッタの機能」を実現し得る。その場合の実施例を、上記実施例１の変形例として、図１１Ａ，１１Ｂとともに説明する。
【００８３】
当該実施例１の変形例では、上記の如く、予め相互に交換しておく通信用のバッファのアドレスを、夫々の受信側のノード毎に異なるものとする。すなわち、受信側の各ノードが以下に述べる情報を有するように、送信側のノードと受信側の各ノードとの間で予め通信用のバッファのアドレスについての情報を相互に交換する。当該相互の情報の交換の結果、例えば図１０Ａ，１０Ｂ，１０Ｃに示す送信側のノード１１のバッファ１１ｂ１，１１ｂ２，１１ｂ３のうち、バッファｂ１についての情報を受信側のノード２１が有し、バッファｂ２についての情報を受信側のノード２２が有する。そしてバッファｂ３についての情報を受信側のノード２３が有する。その状態で図１１Ａ中、ステップＳ４１にて送信側のノードは通信データを通信用のバッファ１１ｂ１，１１ｂ２，１１ｂ３に配置する。配置が終了すると送信側のノードは「通信データ配置完了を待つバリア同期」の同期信号を送信する。
【００８４】
そしてステップＳ４２にて送信側のノードは、受信側の各ノード２１，２２，２３による通信データの「受信完了を待つバリア同期」の同期信号を送信する。当該「受信完了を待つバリア同期」は、送信側のノード１１では、受信側の各ノード２１，２２，２３から当該「受信完了を待つバリア同期」の同期信号を受信した段階で終了する。このようにして送信側のノード１１と各受信側のノード２１，２２，２３を含めた全てのノードが当該「受信完了を待つバリア同期」の同期信号を受信した段階で当該「受信完了を待つバリア同期」が終了する。当該「受信完了を待つバリア同期」が終了すると、スキャッタの動作が終了する。
【００８５】
他方図１１ＢのステップＳ４３で、受信側の各ノードは上記「通信データ配置完了を待つバリア同期」の同期信号を送信する。当該「通信データ配置完了を待つバリア同期」は、「通信データ配置完了を待つバリア同期」の同期信号を送信側のノードと各受信側のノードを含めた全てのノードが受信した段階で終了する。したがって当該「通信データ配置完了を待つバリア同期」が終了する場合には送信側のノードが「通信データ配置完了を待つバリア同期」の同期信号を送信する必要がある。ここで上記の如く、送信側のノードは通信データの通信用のバッファへのアドレスの配置が完了すると当該「通信データ配置完了を待つバリア同期」の同期信号を送信する（ステップＳ３１）。したがって当該「通信データ配置完了を待つバリア同期」が終了するということは、送信側のノードが通信データの通信用のバッファへのアドレスの配置が完了することを意味する。したがって当該「通信データ配置完了を待つバリア同期」が終了した段階で、受信側の各ノードはステップＳ４４にて、上記予め交換した通信用のバッファのアドレスについての情報に基づいて、ＲＲＤＭＡを実行する。
【００８６】
ここで上記の如く、上記予めなされる通信用のバッファのアドレスについての情報の交換の結果上記の如く、例えば送信側のノード１１のバッファ１１ｂ１，１１ｂ２，１１ｂ３のうち、バッファｂ１についての情報を受信側のノード２１が有する。同様にバッファｂ２についての情報を受信側のノード２２が有し、バッファｂ３についての情報を受信側のノード２３が有する。したがって受信側の各ノードは自ノードに対する通信データが配置されたバッファを指定してＲＲＤＭＡを実施し得る。ＲＲＤＭＡの結果自ノードに対する通信データが得られると、受信側の各ノードは上記の如く、「受信完了を待つバリア同期」の同期信号を送信する。その結果上記の如く、スキャッタの動作が終了する。
【００８７】
次に実施例２の並列計算用の通信方法について説明する。
【００８８】
実施例２ではノード間の１対１通信としてのＷＲＤＭＡ機能を利用してギャザの動作の高速化を図る。
【００８９】
図１２Ａ中、受信側のノードは、複数の送信側のノードの各々から受信する通信データの通信用のバッファへの配置を示す情報を、短いデータに対し信頼性のある同報通信で受信側の各ノードに通知する（ステップＳ５１）。ギャザに係る実施例２の場合の「通信データの通信用のバッファへの配置を示す情報」は、「通信用のバッファのどの部分に各送信側のノードが通信データを配置する（書き込む）かを示す情報」を含む。「通信用のバッファのどの部分に各送信側のノードが通信データを配置する（書き込む）かを示す情報」の具体例につき、図２０ともに後述する。ここで通信用のバッファとして、例えば図２に示される通信装置あるいはノードＮ１１が有するバッファ、図３に示される各バッファ１１ｂ、１１ｃｂ、１２ｂ、１２ｃｂ等を利用することができる。
【００９０】
上記ステップＳ５１の「短いデータに対し信頼性のある同報通信」（図１２Ａ、ステップＳ５１中、「信頼性のある同報通信」）について説明する。例えば図４Ａ乃至図７Ｃとともに説明した、「必ずしも信頼性のない同報通信」と「信頼性のある１対１通信」とを組み合わせて当該「短いデータに対し信頼性のある同報通信」を構築し得る。あるいは図１５，図１６とともに説明する「バリア同期」を使用した同報通信を当該「短いデータに対し信頼性のある同報通信」として使用することもできる。あるいは図１７，図１８とともに説明する「リダクション装置」により実現される「全ノードへのリダクション」を使用した同報通信を当該「短いデータに対し信頼性のある同報通信」として使用することもできる。
【００９１】
次に受信側のノードは、送信側のノードの各々からの通信データの受信を待ち合わせる（ステップＳ５２）。全ての送信側のノードから通信データを受信し終えると、ギャザの動作を終了する。
【００９２】
図１２Ｂ中、送信側のノードの各々は、上記ステップＳ５１で受信側のノードから短いデータに対し信頼性のある同報通信で送信された通信データの通信用のバッファへの配置を示す情報を、当該短いデータに対し信頼性のある同法通信で受信する（ステップＳ５３）。次に送信側のノードの各々はＷＲＤＭＡ機能によって、自ノードの通信データを通信用のバッファへ送信する（ステップＳ５４）。より具体的には、各送信側のノードは、上記受信した通信データの通信用のバッファへの配置を示す情報が示す、通信用のバッファのどの部分に自ノードが通信データを配置する（書き込む）かを示す情報に基づき、該当する通信用のバッファのアドレスを得る。各送信側のノードは、このようにして得られた該当する通信用のバッファのアドレスを指定してＷＲＤＭＡを行うことにより、自ノードの通信データを送信して当該通信データを、通信用のバッファ中、しかるべき部分に配置する（書き込む）ことができる。その後ギャザの動作を終了する。
【００９３】
図１３Ａ，１３Ｂは、図１２Ａ，１２Ｂとともに上述した実施例２の具体例を示す。図１３Ａに示す第１のステップで受信側のノード１１は、上記短いデータに対し信頼性のある同報通信にて、上記通信データの通信用のバッファへの配置を示す情報を各送信側のノード２１，２２，２３に送信する。ここでの送信は同報によるものであるため、各ノード２１，２２，２３に対し、共通の通信データの通信用のバッファへの配置を示す情報を通知することになる。各送信側のノード２１，２２、２３は共通の通信データの通信用のバッファへの配置を示す情報を受信し、当該受信した情報から、例えば予め決められた規則に従って、自ノードの通信データを配置すべき通信用のバッファの部分を認識し得る。
【００９４】
なお、上記短いデータに対し信頼性のある同報通信の代わりに、上記実施例１の集団通信方法（スキャッタ）にて、上記通信データの通信用のバッファへの配置を示す情報を各送信側のノード２１，２２，２３に送信するようにしてもよい。このようにして実施例１の集団通信方法を適用する場合、受信側のノード１１は各送信側のノード２１，２２，２３に対し、夫々該当するバッファ１１ｂ１，１１ｂ２，１１ｂ３の情報のみを送信することができる。すなわちノード２１にはバッファ１１ｂ１の情報を送信し、ノード２２にはバッファ１１ｂ２の情報を送信し、ノード２３にはバッファ１１ｂ３の情報を送信することができる。
【００９５】
図１３Ｂに示す第２のステップでは、受信側のノード１１以外のノード（送信のノード）２１，２２，２３は、ＷＲＤＭＡ機能により、自ノードのバッファ２１ｂ、２２ｂ、２３ｂから、夫々通信データを送信する。各送信側のノード２１，２２，２３から送信された通信データは、受信側のノード１１のバッファ１１ｂ１，１１ｂ２，１１ｂ３に夫々配置される（書き込まれる）。この点につき、以下に詳細に説明する。すなわち各送信側のノード２１，２２，２３は、上記受信した通信データの通信用のバッファへの配置を示す情報により、受信側のノード１１のバッファ１１ｂ１，１１ｂ２，１１ｂ３のうち、自ノードの通信データを配置するバッファを認識する。そして、送信側の各ノード２１，２２、２３は夫々該当するバッファ１１ｂ１，１１ｂ２，１１ｂ３を指定してＷＲＤＭＡを実施する。その結果送信側の各ノード２１，２２、２３は夫々該当するバッファ１１ｂ１，１１ｂ２，１１ｂ３に通信データを配置することができる。したがってギャザの機能が実現される。
【００９６】
図１4は、上記送信側のノードおよび受信側のノードの各々のハードウェア構成例について説明する図である。各ノード１１０は、バス１１３を介して相互に接続されるＣＰＵ１１１とメモリ１１２とを含む。ＣＰＵ１１１は各種演算を行う。メモリ１１２には、ＣＰＵ１１１が実行するプログラムの他、各種データが格納される。メモリ１１２は上記実施例１、実施例２の夫々による並列計算用の通信方法で使用される通信用のバッファとしても使用され得る。また、メモリ１１２には、上記実施例１、実施例２の夫々による並列計算用の通信方法を実現するプログラムも格納される。ＣＰＵ１１１は同プログラムを実行することにより、図４Ａ乃至７Ｃ，図９Ａ乃至１３Ｂとともに述べた動作、並びに後述する図１５，図１６とともに述べる動作、並びに後述する図１７，図１８とともに述べる動作を実行することができる。またノード１１０は、ネットワーク上の他のノードと通信する際に使用する通信カード（通信装置）１２０を有する。通信カード１２０は例えばＮＩＣとすることができる。
【００９７】
図１５は、上記「短いデータに対し信頼性のある同報通信」方法（特にバリア同期を使用する場合）の動作の流れを説明するフローチャートである。図１５中、ステップＳ１０１で、送信側のノード（実施例２の場合、受信側のノード）が、予め決められた格納場所に「通信データの通信用のバッファへの配置を示す情報」を格納する。次にステップＳ１０２で、送信側のノードと複数の受信側のノード（実施例２の場合、受信側のノードと複数の送信側のノード）とを含む全ノードがバリア同期（図１６とともに後述する）を行う。次にステップＳ１０３にて、複数の受信側の通信ノード（実施例２の場合、複数の送信側のノード）の各々が、上記予め決められた格納場所から、上記「通信データの通信用のバッファへの配置を示す情報」をＲＲＤＭＡ機能により自ノードに転送する。その結果、複数の受信側の通信ノード（実施例２の場合、複数の送信側のノード）の各々は「通信データの通信用のバッファへの配置を示す情報」を得ることができる。
【００９８】
当該図１５の方法では、ステップＳ１０２のバリア同期において、上記全ノードが相互に同期をとる。そしてこのように同期がとれた後、ステップＳ１０３にて、各受信側のノード（実施例２の場合各送信側のノード）は予め決められた格納場所から「通信データの通信用のバッファへの配置を示す情報」を得る。すなわち「短いデータに対し信頼性のある同報通信」方法が実現される。尚予めステップＳ１０１にて、送信側のノード（実施例２の場合受信側のノード）は上記予め決められた格納場所に「通信データの通信用のバッファへの配置を示す情報」を配置する。また上記予め決められた格納場所の情報は、上記全ノードで予め共有されており、送信側のノード（実施例２の場合受信側のノード）は「通信データの通信用のバッファへの配置を示す情報」を、一定の配置タイミングで上記予め決められた格納場所に配置し、その後、一定の解放タイミングで上記予め決められた格納場所を解放する。バリア同期は上記一定の配置タイミングから一定の解放タイミングまでの期間を受信側のノード（実施例２では送信側のノード）に通知する手段として使用される。尚上記一定の配置タイミングから一定の解放タイミングまでの期間とはすなわち上記予め決められた格納場所に「通信データの通信用のバッファへの配置を示す情報」が存在する期間である。なお、ステップＳ１０３の後に再度バリア同期を行うことにより、送信側のノード（実施例２では受信側のノード）が上記一定の解放タイミングを得るようにしても良い。
【００９９】
図１６は、図１５のステップＳ１０２のバリア同期の動作の流れを示すフローチャートである。図１５中、ステップＳ１１１で上記全ノードの各々は、他の全ノードに対し、「バリア同期」信号を送信する。「バリア同期」信号は、単にタイミングを通知するためのみに必要な最短の信号であればよい。ステップＳ１１２で各ノードは他の全ノードから「バリア同期」信号を受信すると（ＹＥＳ）、当該バリア同期の動作を終了する。
【０１００】
なおバリア同期に関し、非特許文献７の第１３頁に「プログラムの書き方」という観点による図が記載されている。更に非特許文献８の第９乃至１５頁にバリア同期の概念が記載されている。特に非特許文献７には以下の点が記載されている。全てのスレッド（ｔｈｒｅａｄ：並列処理での個々の処理の流れ）が、ある処理ブロックを抜ける（言い換えれば、次の処理へと進む直前の点まで到達する）まで、どのスレッドも次の処理ブロックへ進まない。
【０１０１】
図１７とともに、上記データが短い場合の信頼性のある同報通信の実現手段として、リダクション装置による全ノードへのリダクションを使用する場合を説明する。リダクション装置については図１９とともに後述する。
【０１０２】
全ノードへのリダクションでは、全てのノードからのリダクションにおける演算対象となるデータに対して、加算、あるいは最大値をとる演算などを施した結果が、全てのノードで受け取られる。リダクション装置を使用して全ノードへのリダクションを実行する場合は、全てのノードが演算対象をリダクション装置に送信し、演算結果をリダクション装置から受信する。リダクション装置を使用した全てのノードへのリダクションにより上記データが短い場合の信頼性のある同報通信を実現する場合、ステップＳ１２１で送信側のノードは「通信データの通信用のバッファへの配置を示す情報」（以下では「バッファ情報」）をリダクション装置に送信する。ステップＳ１２２で複数の受信側の通信ノードの各々は、"０"の情報をリダクション装置に送信する。ステップＳ１２３でリダクション装置は、ステップＳ１２１で送信されたバッファ情報と、ステップＳ１２２で送信された"０"情報との和演算を行う。すなわち、バッファ情報と、各受信側のノードからの"０"情報との総和をとる。総和の結果、「バッファ情報」＋"０"＋"０"＋"０"＋...＝「バッファ情報」となり、演算結果「バッファ情報」が得られる。リダクション装置は演算結果「バッファ情報」を、全ノードに送信する。その結果ステップＳ１２４で、複数の受信側の通信ノードの各々は、「バッファ情報」を得ることができる。すなわちデータが短い場合の信頼性のある同報通信方法が実現される。
【０１０３】
図１８は、リダクション装置を使用した、データが短い場合の信頼性のある同報通信方法の動作の流れを、説明するフローチャートである。図１８中、ステップＳ１３１（図１７中、ステップＳ１２１，Ｓ１２２に対応）で、各ノードがリダクション装置に情報を送信する。ステップＳ１３２（ステップＳ１２３に対応）で、リダクション装置が、各ノードが送信した上記情報を受信する。ステップＳ１３３（ステップＳ１２３）に対応）で、リダクション装置が上記受信した情報に基づいて演算（例えば上記総和演算）を行う。ステップＳ１３４（ステップＳ１２３に対応）で、リダクション装置が、上記演算の結果を各ノードに送信する。ステップＳ１３５（ステップＳ１２４に対応）で、各ノードが演算の結果を受信する。
【０１０４】
図１９は上記リダクション装置について説明するブロック図である。リダクション装置ＣＣ１はネットワーク上で、各通信ノード１１，２１，２２，２３と、通信中継装置Ｓ１を介し、相互に接続されている。リダクション装置ＣＣ１は、例えば図１３とともに上述した各ノードと同様のハードウェア構成を有する。リダクション装置ＣＣ１は上記の如く、全ノード１１，２１，２２，２３から情報を受信し、受信した情報に対し所定の演算（例えば上記の如く、総和演算）を行い、演算結果を全ノードに送信する。
【０１０５】
リダクション装置につき、非特許文献１０，１１，１２に説明がなされている。尚非特許文献１０，１１において、「コレクティブ通信」という用語が使われている場合、実際には「リダクション」のことだけを指している場合が多い。ただし、全ノードへのリダクション用の関数である「ＭＰＩ＿Ａｌｌｒｅｄｕｃｅ」の動作は計算過程において「バリア同期」の動作を含む（値を計算するため結果的に同期処理をしている）ため、「リダクション」および「バリア同期」」を指している場合もある。非特許文献１２では、リダクション装置が並列計算の高速化に果たす役割の説明がなされている。尚用語「高機能スイッチ」は、ＭＰＩの集団通信用の函数である「ＭＰＩ＿Ａｌｌｒｅｄｕｃｅ」の動作をハードウェアで実現している。「ＭＰＩ＿Ａｌｌｒｅｄｕｃｅ」では、全てのノードが持っている入力データから計算した値、例えば総和を関数の出力として得ることができる。このため、例えば「数値と見なせる大きさのデータ」に対して、データを発信するノード以外が全て"0"を指定してＭＰＩ＿Ａｌｌｒｅｄｕｃｅを呼び出すことにより、そのデータの同報通信が実現される。
【０１０６】
図２０は上記「通信用のバッファ」の及び「通信データが配置される部分」の設定例を説明する図である。
【０１０７】
図２０の設定例の場合、ノードが有する主記憶５００中、先頭アドレス５２１の領域５２０が「通信用のバッファ」として設定される。更に「通信用のバッファ」５２０中、先頭アドレス５２１からオフセット５２２離れたアドレスから開始され長さ５２３を有する領域５２５が「通信データが配置される部分」として設定される。すなわち「通信データが配置される部分」５２５は、主記憶５００中、「先頭アドレス５２１」＋「オフセット５２２」で得られるアドレスから「先頭アドレス５２１」＋「オフセット５２２」＋「長さ５２３」で得られるアドレスまでの範囲を有する。
【０１０８】
ここで上記の如く実施例１では、「通信データの通信用のバッファへの配置を示す情報」は、「通信データを通信用のバッファへ配置した旨の通知」と、「通信データの通信用のバッファへの配置状況を示す情報」とを含む。そして「通信データの通信用のバッファへの配置状況を示す情報」とは、「通信用のバッファのどの部分に各受信側のノードに対する通信データが配置されたかを示す情報」である。したがって図２０の設定例の場合、「通信用のバッファのどの部分に各受信側のノードに対する通信データが配置されたかを示す情報」は、「通信データが配置される部分」５２５を示す情報である。したがって実施例１では図２０の設定例の場合、上記「通信用のバッファのどの部分に各受信側のノードに対する通信データが配置されたかを示す情報」は、上記先頭アドレス５２１，オフセット５２２及び長さ５２３を含む。すなわち実施例１では、「通信データの通信用のバッファへの配置を示す情報」は「通信データが配置される部分」５２５を示す情報を含む。
【０１０９】
又実施例２の場合の「通信データの通信用のバッファへの配置を示す情報」は上記の如く、「通信用のバッファのどの部分に各送信側のノードが通信データを配置する（書き込む）かを示す情報」を含む。したがって実施例２では図２０の設定例の場合、「通信用のバッファのどの部分に各送信側のノードが通信データを配置する（書き込む）かを示す情報」が、「通信データが配置される部分」５２５を示す情報である。したがって実施例２では図２０の設定例の場合、上記「通信用のバッファのどの部分に各送信側のノードが通信データを配置する（書き込む）かを示す情報」は、上記先頭アドレス５２１，オフセット５２２及び長さ５２３を含む。すなわち、実施例２では、「通信データの通信用のバッファへの配置を示す情報」は「通信データが配置される部分」５２５を示す情報を含む。
【０１１０】
図２１は上記リカバリ情報のデータフォーマット例について説明するための図である。図２１のデータフォーマット例では図示の如く、リカバリ情報３００は、エラー検出コードを格納する領域３１０，データの大きさを示す情報を格納する領域３２０及びタイムアウト時間を格納する領域３３０を有する。
【図１】
2011058640.tif 000003
【図２】
2011058640.tif 000004
【図３】
2011058640.tif 000005
【図４Ａ】
2011058640.tif 000006
【図４Ｂ】
2011058640.tif 000007
【図５Ａ】
2011058640.tif 000008
【図５Ｂ】
2011058640.tif 000009
【図６Ａ】
2011058640.tif 000010
【図６Ｂ】
2011058640.tif 000011
【図６Ｃ】
2011058640.tif 000012
【図７Ａ】
2011058640.tif 000013
【図７Ｂ】
2011058640.tif 000014
【図７Ｃ】
2011058640.tif 000015
【図８】
2011058640.tif 000016
【図９Ａ】
2011058640.tif 000017
【図９Ｂ】
2011058640.tif 000018
【図１０Ａ】
2011058640.tif 000019
【図１０Ｂ】
2011058640.tif 000020
【図１０Ｃ】
2011058640.tif 000021
【図１１Ａ】
2011058640.tif 000022
【図１１Ｂ】
2011058640.tif 000023
【図１２Ａ】
2011058640.tif 000024
【図１２Ｂ】
2011058640.tif 000025
【図１３Ａ】
2011058640.tif 000026
【図１３Ｂ】
2011058640.tif 000027
【図１４】
2011058640.tif 000028
【図１５】
2011058640.tif 000029
【図１６】
2011058640.tif 000030
【図１７】
2011058640.tif 000031
【図１８】
2011058640.tif 000032
【図１９】
2011058640.tif 000033
【図２０】
2011058640.tif 000034
【図２１】
2011058640.tif 000035
【手続補正書】
【提出日】平成24年5月2日(2012.5.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法にて第１のノードと複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報を、前記第１のノードがバリア同期または全ノードへのリダクションを使用した同報通信によって前記複数の第２のノードの各々に通知するステップと、
前記複数の第２のノードの各々が、前記通信用のバッファへの配置を示す情報を使用して、前記第１のノードと前記複数の第２のノードの各々との間の前記通信データの転送を行うステップとを有する並列計算用の通信方法。
【請求項２】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第１のノードと前記複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報のリカバリ情報を第１のノードが複数の第２のノードの各々に対し１対１通信乃至同報通信によって送信するステップと、
前記第１のノードが前記通信用のバッファへの配置を示す情報を複数の第２のノードの各々に対し同報通信にて送信するステップと、
前記複数の第２のノードの各々が、前記通信用のバッファへの配置を示す情報を受信するステップと、
前記複数の第２のノードの各々が当該受信された通信用のバッファへの配置を示す情報のリカバリが必要か否かをチェックするステップと、
前記複数の第２のノードの各々が前記受信された通信用のバッファへの配置を示す情報のリカバリが必要と判断した場合、前記リカバリ情報を使用して前記通信用のバッファへの配置を示す情報のリカバリを行うステップと、
前記第２のノードの各々が、前記通信用のバッファへの配置を示す情報を使用して前記第１のノードと前記複数の第２のノードの各々との間の前記通信データの転送を行うステップとを有する並列計算用の通信方法。
【請求項３】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法におけるノード間の通信データの転送を、リモートホストのメモリにＣＰＵを介さず直接値を書きこむ方法を使用して実施することを特徴とする、請求項１記載の並列計算用の通信方法。
【請求項４】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法においてノード間で転送する通信データの通信用のバッファへの配置を示す情報を、前記ノード間で第１の通信ネットワークに係る通信中継装置を使用して通知するステップと、
前記ノード間の前記通信データの転送を、前記第１の通信ネットワークとは異なる第２の通信ネットワークに係る通信中継装置を使用して行うステップとを有する請求項１に記載の並列計算用の通信方法。
【請求項５】
並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法にて第１のノードと複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報を、バリア同期または全ノードに対するリダクションを使用して前記複数の第２のノードの各々に通知する手段と、
前記複数の第２のノードの各々による、前記通信用のバッファへの配置を示す情報を使用した、前記第１のノードと前記複数の第２のノードの各々との間の前記通信データの転送の完了を判断する手段とを有する、第１のノードとしての情報処理装置。
【請求項６】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第１のノードと前記複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報のリカバリ情報を第２のノードの各々に対し１対１通信によって送信する手段と、
前記通信用のバッファへの配置を示す情報を複数の第２のノードの各々に対し同報通信にて送信する手段と、
前記複数の第２のノードの各々による、前記通信用のバッファへの配置を示す情報を使用した、前記第１のノードと前記複数の第２のノードの各々との間の前記通信データの転送の完了を判断する手段とを有する、第１のノードとして情報処理装置。
【請求項７】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法における前記複数の第２のノードの各々との間の通信データの転送を、リモートホストのメモリにＣＰＵを介さず直接値を書きこむ方法を使用して実施する手段を有する、請求項５記載の情報処理装置。
【請求項８】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報を第１の通信ネットワークに係る通信中継装置を使用して前記複数の第２のノードの各々に通知する手段と、
前記複数の第２のノードの各々との前記通信データの転送を、前記第１の通信ネットワークとは異なる第２の通信ネットワーク係る通信中継装置を使用して行う手段とを有する、前記第１のノードとしての、請求項５記載の情報処理装置。
【請求項９】
並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法にて第１のノードと複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報の通知をバリア同期または全ノードへのリダクションを使用して前記第１のノードから受信する手段と、
前記通信用のバッファへの配置を示す情報を使用して、前記第１のノードとの間の前記通信データの転送を行う手段とを有する、前記複数の第２のノードの各々としての情報処理装置。
【請求項１０】
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第１のノードとの間で転送する通信データの通信用のバッファへの配置を示す情報のリカバリ情報を第１のノードから１対１通信によって受信する手段と、
第１のノードから前記通信用のバッファへの配置を示す情報を同報通信にて受信する手段と、
当該受信された通信用のバッファへの配置を示す情報のリカバリが必要か否かをチェックする手段と、
前記受信された通信用のバッファへの配置を示す情報のリカバリが必要と判断した場合、前記リカバリ情報を使用して前記通信用のバッファへの配置を示す情報のリカバリを行う手段と、
前記通信用のバッファへの配置を示す情報を使用して前記第１のノードとの間の前記通信データの転送を行う手段とを有する、前記複数の第２のノードの各々としての情報処理装置。
【請求項１１】
前記複数の第２のノードの各々としての情報処理装置を制御するコンピュータを、
並列計算において使用されるノード間通信方法としてのスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法にて第１のノードと複数の第２のノードの各々との間で転送する通信データの通信用のバッファへの配置を示す情報の通知をバリア同期または全ノードへのリダクションを使用して前記第１のノードから受ける手段と、
前記通信用のバッファへの配置を示す情報を使用して、前記第１のノードとの間の前記通信データの転送を行う手段として機能させるプログラム。
【請求項１２】
前記複数の第２のノードの各々としての情報処理装置を制御するコンピュータを、
並列計算におけるスキャッタおよびギャザを含む複数の集団通信方法のうちの少なくとも一の集団通信方法において前記第１のノードとの間で転送する通信データの通信用のバッファへの配置を示す情報のリカバリ情報を第１のノードから１対１通信によって受信する手段と、
第１のノードから前記通信用のバッファへの配置を示す情報を同報通信にて受信する手段と、
当該受信された通信用のバッファへの配置を示す情報のリカバリが必要か否かをチェックする手段と、
前記受信された通信用のバッファへの配置を示す情報のリカバリが必要と判断した場合、前記リカバリ情報を使用して前記通信用のバッファへの配置を示す情報のリカバリを行う手段と、
前記通信用のバッファへの配置を示す情報を使用して前記第１のノードとの間の前記通信データの転送を行う手段として機能させるプログラム。
【国際調査報告】
2011058640.tif 000036
2011058640.tif 000037
2011058640.tif 000038