JP2014049074A - 計算ノード間メッセージ通信状況取得プログラム、方法、及びシステム - Google Patents

計算ノード間メッセージ通信状況取得プログラム、方法、及びシステム Download PDF

Info

Publication number
JP2014049074A
JP2014049074A JP2012194029A JP2012194029A JP2014049074A JP 2014049074 A JP2014049074 A JP 2014049074A JP 2012194029 A JP2012194029 A JP 2012194029A JP 2012194029 A JP2012194029 A JP 2012194029A JP 2014049074 A JP2014049074 A JP 2014049074A
Authority
JP
Japan
Prior art keywords
time
message
starting point
control communication
transmission
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
Application number
JP2012194029A
Other languages
English (en)
Other versions
JP5949346B2 (ja
Inventor
Naoyuki Shida
直之 志田
Sachi Matsumoto
幸 松本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012194029A priority Critical patent/JP5949346B2/ja
Publication of JP2014049074A publication Critical patent/JP2014049074A/ja
Application granted granted Critical
Publication of JP5949346B2 publication Critical patent/JP5949346B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】ユーザプログラムを変更せずに、並列コンピューティングを効率的に実行させるための情報を簡便に取得する。
【解決手段】第1の計算ノードがメッセージの送信命令を実行し、第2の計算ノードがメッセージの受信命令を実行する場合に、前記メッセージの転送に関連する時間を取得するプログラムであって、前記第1の計算ノード及び前記第2の計算ノードのうちの一方から他方に、前記メッセージの転送の開始の起点となる制御通信を送信し、前記起点となる制御通信を、前記他方の計算ノードにおいて受信し、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とを検出し、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とに基づいて、前記メッセージの送信命令及び受信命令の各々における、前記メッセージの転送開始までに要する待ち時間及び/又は前記メッセージの転送に要する経過時間を特定する。
【選択図】図1

Description

本発明は、複数の計算ノードで互いにメッセージを通信する際における通信状況の取得に関する。
複数の計算ノードを持つ並列コンピュータにおいては、複数の計算ノードの間で連繋して処理を遂行するために、計算ノード間でメッセージ通信(データの伝送)を行う場合がある。
計算ノード間のメッセージ通信を行う標準インタフェースとしては、メッセージパッシングインタフェース(MPI)がある。このMPIの一般的実装には、短メッセージ通信用のEager通信や、長メッセージ通信用のRendezvous通信が含まれる。Eager通信は、送受信バッファを介した通信であり、比較的短いメッセージを転送する通信である。また、Rendezvous通信は、RDMA(リモートダイレクトメモリアクセス)を利用した通信であり、比較的長いメッセージを転送する通信である。
例えば、計算ノード1からのメッセージを、計算ノード2が利用して処理を実行する場合を想定する。この場合、計算ノード1の送信準備が完了した後、直ちに計算ノード1から計算ノード2にメッセージが送信されるのが理想である。しかしながら、例えば計算ノード1におけるメッセージの送信の準備が間に合わず、メッセージ受信に待ち時間が発生してしまう場合がある。これは、例えば、計算ノード2の処理の負荷に比して計算ノード1の処理の負荷が重いために、第1の計算ノードのメッセージ送信の準備が遅れる場合に発生し得る。
並列コンピューティングを効率的に実行させるためには、この待ち時間を可能な限り短くすることが望ましい。そのために、ユーザは、各計算ノードに、適切な処理の配分を行いたいと欲する。この処理の配分は、ユーザに委ねられているため、ユーザは、各計算ノードにおける待ち時間を把握することが必要である。ユーザは、待ち時間を知ることができれば、この待ち時間が短くなるように、各計算ノードの処理配分を決定することができる。
例えば、以下のユーザプログラムを実行してメッセージを送信側から受信側に転送する場合を考える。
(送信側計算ノード) (受信側計算ノード)
MPI_Send(...,comm); MPI_Recv(...,comm,&status);
上記の命令は、送信側で送信関数MPI_Send()を実行し、受信側で受信関数MPI_Recv()を実行することで送信側から受信側にメッセージの転送が行われる(なお、引数commは、通信を行うグループの指定であり、statusは、受信状況を受け取る配列を指定する)。この場合、通信待ち時間やメッセージ転送時間をユーザが把握することができない。このため、例えば、上記ユーザプログラムに以下に示す複数の関数を挿入することで対処することが考えられる。すなわち、
(送信側) (受信側)
ds1 = MPI_Wtime() dr1 = MPI_Wtime();
MPI_Barrier(comm); MPI_Barrier(comm);
ds2 = MPI_Wtime(); dr2 = MPI_Wtime();
MPI_Send(...,comm); MPI_Recv(...,comm,&status);
ds3 = MPI_Wtime(); dr3 = MPI_Wtime();
上記のプログラムにおいて、MPI_Barrier(comm)は、バリヤ同期を取る関数である。すなわち、送信側と受信側で対応するバリヤ関数が同期して実行される。commによって、同期を取るグループが指定される。すなわち、送信側と受信側に存在するバリヤ関数のうち、同じcommの値を持つバリヤ関数が同時に実行される。対応するバリヤ関数が同時に実行されることで、同期を取ることができる。
MPI_Wtime()は、現在の時刻を取得する関数である。上記の場合には、MPI_Wtime()は、その関数の実行された時刻を返す。このような複数の関数を挿入すれば、通信待ち時間やメッセージ転送時間の近似値が計測できる。例えば、ds2−ds1(dr2−dr1)を計算することによって、送信側(受信側)の通信待ち時間の近似値を得ることができる。また、ds3−ds2(dr3−dr2)を計算することによって、送信側(受信側)のメッセージ転送時間の近似値を取得することができる。待ち時間が取得できれば、ユーザは、各計算ノードに割り当てるプログラムの負荷の配分を調整することができる。こうすることで、各計算ノードの同期すべき時刻を近づけて、待ち時間を短縮することができる。待ち時間が短縮されることにより、並列コンピューティングの、より効率的な実行が可能となる。
しかしながら、上述のように、待ち時間等を取得するためには、ユーザプログラムに追加的なプログラムを挿入しなければならない。このためには、プログラムの構造を理解していなければならない。また、追加的なプログラムを挿入することは、ユーザに対して負担をかけることにもつながる。
1つの側面では、本発明は、並列コンピューティングを効率的に実行させるための情報を簡便に取得することを目的とする。
実施態様によれば、第1の計算ノードがメッセージの送信命令を実行し、第2の計算ノードがメッセージの受信命令を実行する場合に、前記メッセージの転送に関連する時間を取得するプログラムであって、前記第1の計算ノード及び前記第2の計算ノードのうちの一方から他方に、前記メッセージの転送の開始の起点となる制御通信を送信し、前記起点となる制御通信を、前記他方の計算ノードにおいて受信し、少なくとも、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とを検出し、少なくとも、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とに基づいて、前記メッセージの送信命令及び前記メッセージの受信命令の各々における、前記メッセージの転送開始までに要する待ち時間及び/又は前記メッセージの転送に要する経過時間を特定する、処理をコンピュータに実行させるプログラムが提供される。
実施態様によれば、並列コンピューティングを効率的に実行させるための情報を簡便に取得することができる。
一実施形態のEagerプロトコルのメッセージ転送を示す図である。 一実施形態のEagerプロトコルのメッセージ送信を示すフローチャートである。 一実施形態のEagerプロトコルのメッセージ受信を示すフローチャートである。 一実施形態のRendezvous(Put)プロトコルのメッセージ転送を示す図である。 一実施形態のRendezvous(Put)プロトコルのメッセージ送信を示すフローチャートである。 一実施形態のRendezvous(Put)プロトコルのメッセージ受信を示すフローチャートである。 一実施形態のRendezvous(Get)プロトコルのメッセージ転送を示す図である。 一実施形態のRendezvous(Get)プロトコルのメッセージ送信を示すフローチャートである。 一実施形態のRendezvous(Get)プロトコルのメッセージ受信を示すフローチャートである。 一実施形態のハードウエア構成を例示する図である。 一実施形態の機能ブロック図である。 図1のEagerプロトコルのメッセージ転送の他のタイミングを示す図である。
以下に、図面を用いて本発明の実施形態を詳細に説明する。なお、以下の実施形態は、発明を理解するためのものであり、本発明の範囲を限定するためのものではない点に留意すべきである。また、以下の複数の実施形態は、相互に排他的なものではない。したがって、矛盾が生じない限り、異なる実施形態の各要素を組み合わせることも意図されていることに留意すべきである。また、請求項に記載された方法やプログラムに係る発明は、矛盾のない限り処理の順番を入れ替えてもよく、あるいは、複数の処理を同時に実施してもよい。そして、これらの実施形態も、請求項に記載された発明の技術的範囲に包含されることは言うまでもない。
また、コンピュータが読み出したプログラムコードを実行することにより、後述の実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどの他のプログラムが実際の処理の一部または全部を行ない、その処理によって実施形態の機能が実現される場合も、本発明に含まれることは言うまでもない。
なお、メッセージの転送は、1つの計算ノードが複数のコアを持つ場合には、1つの計算ノード内でもコア間で発生し得る。これをノード内通信と呼ぶ。また、計算ノード間の通信は、ノード間通信と呼ばれ、計算ノード間を結ぶインタフェースをインターコネクトと呼ぶ。また、グリッドと呼ばれる単体の計算機間を結ぶ比較的距離の長いインタフェースとしては、一般的なネットワーク(LAN、WAN、インターネット等)が用いられる。なお、本明細書においては、主にインターコネクト及びネットワークの語を用いるが、いずれも、計算ノード間の通信を行うインタフェースとして用いられ得るものである。
以上の説明で用いた「計算ノード」の語は、プロセッサエレメント(PE)、プロセス、グリッドなどの語を代表する言葉として用いている点に留意すべきである。また、計算ノードは、物理的に特定できる計算資源でなくてもよく、仮想的なプロセッサ、あるいは、所定のソフトウエアを実行するプロセス等であってもよい。
また、メッセージとは、計算ノード間で転送すべきデータを意味する。
加えて、「メッセージ転送時間」及び「通信待ち時間」を以下のように定義する。
「メッセージ転送時間」:実際にインターコネクト上にデータが流れている時間。
「通信待ち時間」:送信処理関数が実行され、データを送信しようとした場合、受信側がデータの受信準備ができていないために送信が開始できない時間。或いは、受信処理関数が実行され、受信側でデータの受信準備ができているが、送信側からデータが送られてこない時間。
また、明細書においては、説明を分かりやすくするために、第1の計算ノードと第2の計算ノードを用いて説明するが、3以上の計算ノードが関与するシステムにおいても、同様に、本発明の各実施形態が適用できることは言うまでもない。なお、第1の計算ノードと第2の計算ノードは、単に便宜上付与した名前に過ぎず、「第1」及び「第2」の語が、計算ノードの機能に関して特別な意味を持つものではない。したがって、第1の計算ノードと第2の計算ノードは、それぞれについて説明されている役割を交換しても、実施形態の実行に影響を及ぼすことはない。
また、本明細書における実施形態は、プログラムによってインプリメントすることができる。したがって、各種の時間計測においては、プログラムの実行に伴う遅延や、タイマ設定の命令のプログラム上での位置等によって、実際に計測されるべき時間と、タイマ等によって得られる値には誤差が伴う点にも留意すべきである。なお、この誤差は、無視し得る範囲に収まると予測される。当業者であれば、本発明の実施形態に即して、このような誤差を考慮して適切なインプリメンテーションを行うことができることは言うまでもない。
図1は、一実施形態のEagerプロトコルのメッセージ転送を示している。図1には、第1の計算ノードにおいて送信処理関数が実行され、第2の計算ノードにおいて受信処理関数が実行された例が示されている。受信処理関数の例を以下に示す。
(第1の計算ノード) (第2の計算ノード)
MPI_Send(...,comm); MPI_Recv(...,comm,&status);
図1において、送信処理関数は以下のシーケンスを有する。Eagerプロトコルのメッセージ転送は、比較的小さいデータを転送する際に利用される。メッセージの転送には、バッファが利用される。
時刻t151において、送信処理関数MPI_Send(...,comm);が実行され、送信処理が開始される。
時刻t151からt152の間の待ち時間101は、主に送信処理関数の準備処理にかかる時間である。t152において、第1の計算ノードから、メッセージの転送の起点となる制御通信140が、第2の計算ノードに送信される。この起点となる制御通信140は、受信側の第2の計算ノードに対して、メッセージ転送が開始されることを伝える役割を果たす。受信側の第2の計算ノードは、この起点となる制御通信140を受信した時刻を知ることによって、その後にメッセージの転送が速やかに開始されることを知ることができる。この起点となる制御通信140は、時刻t162に、第2の計算ノードに到達している。したがって、第2の計算ノードにおいては、t162以降、速やかにメッセージ転送が実行されることを知ることができる。したがって、時刻t152は、第1の計算ノードにおける、待ち時間101とメッセージ転送時間102との境界の時刻に極めて近い時刻であると認識することができる。同様に時刻t162は、第2の計算ノードにおける待ち時間111と、メッセージ転送時間112との境界の時刻に極めて近い時刻であると認識することができる。
この起点となる制御通信140は、メッセージ転送への影響を考え、極めて短い通信時間にすることが望ましい。実際のMPI通信は、タグ情報などを格納したヘッダとデータとを含む。したがって、データ長を0バイトとすれば、転送データ長は、ヘッダ長だけとなるため、最短の転送データ長となる。なお、転送データを高速に転送可能なハードウエア機構を持つ場合には、ヘッダにデータを付けたものを用いてもよい。この起点となる制御通信を図1に示すEager通信プロトコルに実装することによって、待ち時間とメッセージ転送時間を分離して認識することが可能となる。待ち時間とメッセージ転送時間とがどのように利用できるかについては後述する。
時刻t152からt153の間のメッセージ転送時間102において、メッセージ転送150が行われて、メッセージが第2の計算ノードに転送される。
時刻t153からt154の終了処理103は、Eager通信の送信処理の終了処理であり、所定の処理を実行するための時間である。終了処理103は、予め予測し得る時間である。
図1において、第2の計算ノードの受信処理関数は、時刻t161に開始される。そして、時刻t162に、起点となる制御通信140が受信されるため、時刻t161からt162の間は、待ち時間111となる。
時刻t162からt163の間は、メッセージ転送時間112であり、メッセージ転送150が行われる。
時刻t163からt164の終了処理113は、Eager通信の受信処理の終了処理であり、所定の処理を実行するための時間である。終了処理113は、予め予測し得る時間である。
図1において、待ち時間101よりも待ち時間111が長くなっている。この長い待ち時間111が存在する第2の計算ノードは、計算資源を有効に利用できていないことを示している。例えば、ユーザは、第2の計算ノードに対して、受信処理関数の前に、より重い処理プログラムを配置することにより、計算資源をより有効に活用することができる。したがって、ユーザは、待ち時間101及び待ち時間111の情報に基づいて、計算資源をより有効に活用するように、計算ノード1と計算ノード2の処理プログラムの配置の決定を行うことができる。
また、メッセージ転送時間102とメッセージ転送時間112とは、必ずしも同じ時間になるとは限らない。メッセージ転送時間は、通信経路のトラフィックにも影響を受ける。例えば、物理的に近い複数の計算ノードは、高速なインターコネクト1012(図10)を利用できるが、コンピュータ1010(図10)の計算ノードと物理的に離れている他のコンピュータ1060(図10)に存在する計算ノードとは、ネットワーク1019や通信制御装置1018(図10)を介することとなる。特にバッファを介するEager通信の場合には、例えば、メッセージ転送時間102よりもメッセージ転送時間112が長くなることがあり得る。このような状況が発生した場合には、処理プログラムを同一コンピュータ内の複数の計算ノードに割り当てることが有効となる。あるいは、メッセージの大きさに比してメッセージ転送時間102とメッセージ転送時間112の両者が長いと判断される場合には、利用している通信路のトラフィックが混んでいることが予測される。このような場合には、トラフィックが集中しないように、処理プログラムの再配置をすることが有効な場合がある。
このように、複数の計算ノードのメッセージ転送時間を比較検討することにより、ネットワーク資源の効率的活用を行うことができる。
図2は、一実施形態のEagerプロトコルのメッセージ送信を示すフローチャートである。
ステップ202において、送信処理関数が実行され送信処理が開始される。
ステップ204において、待ち時間101を取得するために、タイマのカウントが開始されてもよい。このステップの実行時刻は、図1における時刻t151である。
ステップ206において、所定の通信準備処理が行われる。
ステップ208において、待ち時間101が終了するため、待ち時間101の計測のためのタイマのカウントを終了させる。そして、メッセージ転送時間102を取得するために、タイマのカウントが開始される。このステップの実行時刻は、図1における時刻t152である。
以上の処理は、所定の処理であるため、待ち時間101は、所定の時間となることが予測される。なお、所定の時間よりも長くなる場合としては、割り込み処理の存在、他のタスク処理の存在等が挙げられる。
ステップ210において、メッセージの転送の開始の起点となる制御通信140の送信指示が行われる。
ステップ212において、起点となる制御通信140の送信が完了したか否かがチェックされる。このチェックが「はい」であれば、処理はステップ214に移る。このチェックが「いいえ」であれば、ステップ212が繰り返される。
ステップ214において、メッセージ転送150の送信指示がなされる。
ステップ216において、メッセージ転送150の送信が完了したか否かがチェックされる。このチェックが「はい」であれば、処理はステップ218に移る。このチェックが「いいえ」であれば、ステップ216が繰り返される。メッセージ送信の完了は、ハードウエアによるチェック機構によって検知してもよい。
ステップ218において、メッセージ転送時間102が終了するため、メッセージ転送時間102の計測のためのタイマのカウントを終了させてもよい。
ステップ220において、送信処理が終了する。このステップにおいて実行される送信処理の終了処理103は、極めて短いものであるので、計測を省略してもよい。
図3は、一実施形態のEagerプロトコルのメッセージ受信を示すフローチャートである。
ステップ302において、受信処理関数が実行され受信処理が開始される。
ステップ304において、待ち時間111を取得するために、タイマのカウントが開始される。このステップの実行時刻は、図1における時刻t161である。
ステップ306において、メッセージの転送の開始の起点となる制御通信140の受信が完了したか否かがチェックされる。このチェックの結果が「はい」であればステップ308に移動する。このチェック結果が「いいえ」であれば、ステップ306を繰り返す。このステップ306において、起点となる制御通信140の到来を待つことができる。
ステップ308において、待ち時間111の計測のためのタイマのカウントを終了させる。そして、メッセージ転送時間112を取得するために、タイマのカウントが開始される。このステップの実行時刻は、図1における時刻t162である。
ステップ310において、メッセージ転送150の受信が完了したか否かがチェックされる。このチェックが「はい」であれば、処理はステップ312に移る。この判断が「いいえ」であれば、ステップ310が繰り返される。このステップ310が繰り返されている間、メッセージ転送150が継続されることになる。
ステップ312において、メッセージ転送時間112が終了するため、メッセージ転送時間112の計測のためのタイマのカウントを終了させてもよい。
ステップ314において、受信処理が終了する。このステップにおいて実行される受信処理の終了処理113は、極めて短いものであるので、計測を省略してもよい。
図4は、一実施形態のRendezvous(Put)プロトコルのメッセージ転送を示している。Rendezvousプロトコルは、上述のEagerプロトコルと比較して、より長いメッセージを転送する場合に利用されてもよい。メッセージの転送量に応じて、Eagerプロトコル又はRendezvousプロトコルが、システムにおいて自動的に選択されるように設定してもよい。Rendezvousプロトコルには、RDMA(Remote Direct Memory Access)が利用される。メッセージ送信側が積極的に動作して、メッセージを受信側のメモリにPutする場合と、メッセージ受信側が積極的に動作して、メッセージを送信側のメモリからGetする場合がある。図4は、PutのRendezvousプロトコルの処理を示している。GetのRendezvousプロトコルについては、図7ないし図9を用いて後述する。
図4に戻る。図4に示されたRendezvous(Put)プロトコルと、図1に示されたEagerプロトコルとの主な違いとしては、Rendezvous(Put)プロトコルには、制御通信430とメッセージ送信開始要求450が存在することである。したがって、その他の処理については、説明を簡略化する。
制御通信430は、メッセージのPut送信455の受信側である第2の計算ノードから第1の計算ノードに送られる。制御通信430には、RDMAをPutで実行するために、受信側(第2の計算ノード)のメモリアドレスなどの情報が含まれる。第1の計算ノードは、第2の計算ノードのメモリアドレスに対してRDMAを実行することによって、メッセージを第2の計算ノードのメモリに書き込むことができる。なお、第2の計算ノードは、RDMAを実行するために、メッセージ送信開始要求450を送る。このメッセージ送信開始要求450は、RDMAを実行するための要求であるため、ハードウエアレベルにおける要求であり、第2の計算ノードのソフトウエアレベルに伝達されない。以上がRendezvousプロトコルの概要である。
本実施形態においては、時刻t461において、第2の計算ノードから制御通信430が送信される。制御通信430は、時刻t451で、第1の計算ノードにおいて受信される。
時刻t452において、メッセージ転送の起点となる制御通信440が第2の計算ノードに送信される。
時刻t462において、この起点となる制御通信440が、第2の計算ノードによって受信される。第2の計算ノードが、この起点となる制御通信440を受信することによって、第2の計算ノードは、その後速やかにPut送信455によるメッセージ転送が行われることを知ることができる。
時刻t453において、第1の計算ノードは、メッセージ送信開始要求450を送信する。
時刻t463において、第2の計算ノードは、メッセージ送信開始要求450を受信する。なお、上述のように、このメッセージ送信開始要求450は、ハードウエアレベルで、RDMAを実行するために利用される要求であるため、第2の計算ノードは、ソフトウエアレベルにおいて、このメッセージ送信開始要求450を関知しなくてもよい。
その後、Put送信455により、RDMAが順次実行される。
したがって、待ち時間401は、送信処理関数の開始時刻t450から時刻t452までの時間であると判断してもよい。また、待ち時間411は、受信処理関数の開始時刻t460から時刻t462までの時間であると判断してもよい。
また、メッセージ転送時間402は、時刻t452からt454までの時間であると判断してもよい。そして、メッセージ転送時間412は、時刻t462からt464までの時間であると判断してもよい。
なお、終了処理403及び終了処理413については、図1において述べたように、計測を省略してもよい。
図5は、一実施形態のRendezvous(Put)プロトコルのメッセージ送信を示すフローチャートを示している。
ステップ502において、送信処理関数が実行され送信処理が開始される。
ステップ504において、待ち時間401を取得するために、タイマのカウントが開始される。
ステップ506において、制御通信430の受信が完了したか否かがチェックされる。上述のように、制御通信430には、PutによるRDMAを実行するために必要なメモリアドレス等が含まれる。
ステップ508において、待ち時間401の計測を終了させるため、タイマのカウントを終了させてもよい。そして、メッセージ転送時間402を取得するために、タイマのカウントが開始されてもよい。
ステップ510において、メッセージ転送の起点となる制御通信440の送信指示が行われる。
ステップ512において、起点となる制御通信440の送信が完了したか否かがチェックされる。このチェックが「はい」であれば、処理はステップ514に移る。このチェックが「いいえ」であれば、ステップ512が繰り返される。
ステップ514において、メッセージのPut送信455の送信指示がなされる。
ステップ515において、メッセージのPut送信455の送信が完了したか否かがチェックされる。このチェックが「はい」であれば、処理はステップ526に移る。このチェックが「いいえ」であれば、ステップ515が繰り返される。メッセージ送信の完了は、ハードウエアによるチェック機構によって検知してもよい。
ステップ526において、メッセージ転送時間402が終了するため、メッセージ転送時間402の計測のためのタイマのカウントを終了させてもよい。
ステップ527において、送信処理が終了する。このステップにおいて実行される送信処理の終了処理403は、極めて短いものであるので、計測を省略してもよい。
図6は、一実施形態のRendezvous(Put)プロトコルのメッセージ受信を示すフローチャートを示している。
ステップ602において、受信処理関数が実行され受信処理が開始される。
ステップ604において、待ち時間411を取得するために、タイマのカウントが開始される。
ステップ606において、制御通信430の送信指示がなされる。
ステップ608において、制御通信430の送信が完了したか否かがチェックされる。このチェックが「はい」であれば、処理は610に移る。このチェックが「いいえ」であれば、ステップ608が繰り返される。
ステップ610において、メッセージ転送の起点となる制御通信440の受信完了がなされたか否かがチェックされる。このチェックにおいて「はい」であれば処理はステップ612に移る。このチェックが「いいえ」であれば、ステップ610が繰り返される。
ステップ612において、待ち時間411の計測のためのタイマのカウントを終了させる。そして、メッセージ転送時間412を取得するために、タイマのカウントが開始される。このステップの実行時刻は、図4における時刻t462である。
ステップ614において、Put送信455のRDMA書き込みが完了したか否かがチェックされる。このチェックが「はい」であれば、処理はステップ616に移る。この判断が「いいえ」であれば、ステップ614が繰り返される。このステップ614が繰り返されている間、Put送信455が継続されてもよい。
ステップ616において、メッセージ転送時間412が終了するため、メッセージ転送時間412の計測のためのタイマのカウントを終了させてもよい。
ステップ618において、受信処理が終了する。このステップにおいて実行される受信処理の終了処理413は、極めて短いものであるので、計測を省略してもよい。
図7は、一実施形態のRendezvous(Get)プロトコルのメッセージ転送を示している。図4のRendezvous(Put)プロトコルとの主な相違点は、制御通信730が計算ノード1から計算ノード2に送られる点、メッセージ転送の起点となる制御通信740及びメッセージ送信開始要求750が、第2の計算ノードから送信され、第1の計算ノードで受信される点である。
RendezvousプロトコルにおけるGet通信は、受信処理関数が存在する第2の計算ノードが、第1の計算ノードのメモリのデータをRDMAによってGetすることによってなされる。
制御通信730は、第1の計算ノードが、時刻t751において送信する。送信された制御通信730は、時刻t761において、第2の計算ノードによって受信される。
起点となる制御通信740は、第2の計算ノードの時刻t762で送信され、t752で第1の計算ノードによって受信される。
その後、メッセージ送信開始要求750が第2の計算ノードから第1の計算ノードに送信される(t763)。メッセージ送信開始要求750は、t753で第1の計算ノードによって受信される。そして、その後メッセージのGet送信755がなされる。
したがって、待ち時間701は、送信処理関数の開始時刻t750から時刻t752までの時間であると判断してもよい。また、待ち時間711は、受信処理関数の開始時刻t760から時刻t762までの時間であると判断してもよい。
また、メッセージ転送時間702は、時刻t752からt754までの時間であると判断してもよい。そして、メッセージ転送時間712は、時刻t762からt764までの時間であると判断してもよい。
なお、終了処理703及び終了処理713については、図1において述べたように、計測を省略してもよい。
図8は、一実施形態のRendezvous(Get)プロトコルのメッセージ送信を示すフローチャートを示している。
ステップ802において、送信処理関数が実行され送信処理が開始される。
ステップ804において、待ち時間701を取得するために、タイマのカウントが開始される。
ステップ806において、制御通信730の送信指示がなされる。
ステップ808において、制御通信730の送信が完了したか否かがチェックされる。このチェックが「はい」であれば、処理は810に移る。このチェックが「いいえ」であれば、ステップ808が繰り返される。
ステップ810において、メッセージ転送の起点となる制御通信740の受信完了がなされたか否かがチェックされる。このチェックにおいて「はい」であれば処理はステップ812に移る。このチェックが「いいえ」であれば、ステップ810が繰り返される。
ステップ812において、待ち時間701の計測のためのタイマのカウントを終了させる。そして、メッセージ転送時間702を取得するために、タイマのカウントが開始される。このステップの実行時刻は、図7における時刻t752である。
ステップ814において、Get送信755のRDMAが完了したか否かがチェックされる。このチェックが「はい」であれば、処理はステップ816に移る。この判断が「いいえ」であれば、ステップ814が繰り返される。このステップ814が繰り返されている間、Get送信755が継続されてもよい。
ステップ816において、メッセージ転送時間702が終了するため、メッセージ転送時間702の計測のためのタイマのカウントを終了させてもよい。
ステップ818において、送信処理が終了する。このステップにおいて実行される送信処理の終了処理703は、極めて短いものであるので、計測を省略してもよい。
図9は、一実施形態のRendezvous (Get)プロトコルのメッセージ受信を示すフローチャートを示している。
ステップ902において、受信処理関数が実行され受信処理が開始される。
ステップ904において、待ち時間711を取得するために、タイマのカウントが開始される。
ステップ906において、制御通信730の受信が完了したか否かがチェックされる。上述のように、制御通信730には、GetによるRDMAを実行するために必要な、メモリアドレス等が含まれる。
ステップ908において、待ち時間711の計測を終了させるため、タイマのカウントを終了させてもよい。そして、メッセージ転送時間712を取得するために、タイマのカウントが開始されてもよい。
ステップ910において、メッセージ転送の起点となる制御通信740の送信指示が行われる。
ステップ912において、起点となる制御通信740の送信が完了したか否かがチェックされる。このチェックが「はい」であれば、処理はステップ914に移る。このチェックが「いいえ」であれば、ステップ912が繰り返される。
ステップ914において、メッセージのGet送信755の受信指示がなされる。
ステップ916において、メッセージのGet送信755の受信が完了したか否かがチェックされる。このチェックが「はい」であれば、処理はステップ918に移る。このチェックが「いいえ」であれば、ステップ916が繰り返される。メッセージ受信の完了は、ハードウエアによるチェック機構によって検知してもよい。
ステップ918において、メッセージ転送時間712が終了するため、メッセージ転送時間712の計測のためのタイマのカウントを終了させてもよい。
ステップ920において、受信処理が終了する。このステップにおいて実行される受信処理の終了処理713は、極めて短いものであるので、計測を省略してもよい。
図10は、一実施形態のハードウエア構成1000を例示している。コンピュータ1010は、複数の計算ノード1、計算ノード2、ないし計算ノードnを有している。計算ノード1は、CPU1、メモリ1及び通信モジュール1を含む。計算ノード2は、CPU2、メモリ2及び通信モジュール2を含む。計算ノードnは、CPUn、メモリn及び通信モジュールnを含む。
各々の計算ノードは、ネットワーク1019で接続されてもよい。加えて、各々の計算ノードは、インターコネクト1012で接続されてもよい。或いは、コンピュータ1010は、複数のインターコネクトを含み、各々のインターコネクトは物理的に近い位置に配置された複数の計算ノードのうちの一部を接続する構成であってもよい(不図示)。
また、コンピュータ1010は、ストレージ1014、可搬記録媒体駆動装置1015、通信制御装置1018を有してもよい。ストレージ1014は、計算ノード1ないしnにおいて計測された通信時間結果1ないしnを記憶してもよい。可搬型記憶媒体駆動装置は、記録媒体1016を読み書きするよう構成されてもよい。通信制御装置1018は、コンピュータ1010の外部の機器との通信を制御するよう動作してもよい。
また、コンピュータ1010は、他のコンピュータ1060及びユーザ端末1050にネットワーク1019を介して接続されてもよい。他のコンピュータ1060は、コンピュータ1010と同様の計算ノードを有し、コンピュータ1010と連繋して、計算処理を実行するようにプログラムが配置されてもよい。ユーザ端末1050は、たとえば、ストレージ1014に記憶された通信時間結果1ないしnを加工する処理を行ってもよい。そして、ユーザ端末1050は、この加工された通信結果1ないしnを表示装置に出力し及び/又はプリンタ等に出力してもよい。また、ユーザ端末1050は、ユーザの入力を受け付ける入力装置を備えてもよい(不図示)。
図11は、一実施形態のシステム1100の機能ブロック図を示している。システム1100は、送信部1112、受信部1114、時刻検出部1120、経過時間特定部1130を有し、通信時間結果1140を出力してもよい。
送信部1112は、起点となる制御通信、メッセージを含む諸データを送信してもよい。受信部1114は、起点となる制御通信、メッセージを含む諸データを受信してもよい。
時刻検出部1120は、起点となる制御通信の送受信時刻を検出してもよい。また、時刻検出部1120は、実行開始時刻検出部1122、及びメッセージ送受信完了時刻検出部1124を含んでもよい。実行開始時刻検出部1122は、送信処理関数及び受信処理関数の実行開始時刻を検出してもよい。メッセージ送受信完了時刻検出部1124は、メッセージの送受信の完了時刻を検出してもよい。
経過時間特定部1130は、待ち時間特定部1132、及びメッセージ転送時間特定部1134を含んでもよい。待ち時間特定部1132は、時刻検出部1120で検出された複数の時刻を基にして、送信処理関数及び受信処理関数の待ち時間を特定してもよい。メッセージ転送時間特定部1134は、時刻検出部1120で検出された複数の時刻を基にして、メッセージの転送時間を特定してもよい。そして、経過時間特定部1130は、特定された経過時間を通信時間結果1140として、出力してもよい。通信時間結果1140は、更に、例えばユーザ端末1050で必要な加工が施され、ユーザに分かりやすい形態で、ディスプレイに表示され、又はプリンタ等に出力されてもよい。
図12を参照する。図12は、図1のEagerプロトコルのメッセージ転送の他のタイミングを示している。図1と比較してタイミングに関し大きく異なる点は、第1の計算ノードの送信処理関数の開示時刻t151aよりも、第2の計算ノードの受信処理関数の開始時刻t161aが遅い時刻に開始される場合を示している。Eagerプロトコルは、送受信バッファを利用するため、第1の計算ノードのメッセージ転送の開始時刻t152aは、第2の計算ノードの受信処理関数の開始時刻t161aよりも前であってもよい。(なお、図4及び図7を用いて説明したRendezvousプロトコルの場合は、RDMAを利用するため、メッセージ転送の開始に先立ちメッセージ送信開始要求450又は750を送信する必要がある点に留意する必要がある。)
図12において、メッセージ転送の起点となる制御通信140aは、第2の計算ノードの受信処理関数の開始時刻t161aよりも前に、第1の計算ノードから送信されてもよい。すなわち、Eagerプロトコルでは、送受信バッファを利用するため、メッセージ転送150aは、第2の計算ノードの受信処理関数の開始時刻t161aに左右されることなく、実行されてもよい。
このため、送信処理関数の開始時刻t151aと、受信処理関数の開始時刻t161aとのタイミングは異なるが、待ち時間111aについては、図1の待ち時間111と比較して短くなり得る。また、メッセージ転送時間102a及びメッセージ転送時間112aについては、図1の場合と略同じ時間になり得る。したがって、図12に示されるタイミングでメッセージ転送が行われることに関して、待ち時間及びメッセージ転送時間は、略理想的なものであると判断することができる。
しかしながら、その後のメッセージ転送においては、上述のようにタイミングが異なっているために、待ち時間を発生せる原因となる場合も想定される。このため、送信処理関数及び受信処理関数の開始時刻(t151a、t161a)、メッセージ転送の開始時刻(t152a、t162a)、メッセージ転送の終了時刻(t153a、t163a)、送信処理関数及び受信処理関数の終了時刻(t154a、t164a)自体、又はその差の時間を、ユーザが検討する情報としてユーザに提示してもよい。図4及び図7を用いて説明したRendezvousプロトコルについても同様である。
以上のように、各通信ノードにおけるメッセージ転送時間と通信待ち時間とを分離して把握することが可能になることで、各計算ノードに対する処理の配置決定を、より適切に行うことができる。
なお、本実施形態の全部又は一部はプログラムによってインプリメントされ得る。このプログラムは、記録媒体1016に格納することができる。記録媒体1016とは、構造(structure)を有する1つ以上の非一時的(non−transitory)な、有形(tangible)な、記録媒体を言う。例示として、記録媒体1016としては、磁気記録媒体、光ディスク、光磁気記録媒体、不揮発性メモリなどがある。磁気記録媒体には、HDD、フレキシブルディスク(FD)、磁気テープ(MT)などがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc−Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。また、光磁気記録媒体には、MO(Magneto−Optical disk)などがある。記録媒体1016に格納されたプログラムが読み込まれ、プロセッサによって実行されることにより、本発明の実施形態の全部又は一部が実施され得る。
コンピュータが読み出したプログラムコードを実行することにより、上述の実施形態の機能が実現され得る。
以上の実施形態に関し以下の付記を開示する。
(付記1)
第1の計算ノードがメッセージの送信命令を実行し、第2の計算ノードがメッセージの受信命令を実行する場合に、前記メッセージの転送に関連する時間を取得するプログラムであって、
前記第1の計算ノード及び前記第2の計算ノードのうちの一方から他方に、前記メッセージの転送の開始の起点となる制御通信を送信し、
前記起点となる制御通信を、前記他方の計算ノードにおいて受信し、
少なくとも、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とを検出し、
少なくとも、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とに基づいて、前記メッセージの送信命令及び前記メッセージの受信命令の各々における、前記メッセージの転送開始までに要する待ち時間及び/又は前記メッセージの転送に要する経過時間を特定する、
処理、をコンピュータに実行させるプログラム。
(付記2)
前記検出する処理は、
前記メッセージの送信命令の実行開始時刻と、前記メッセージの受信命令の実行開始時刻とを検出し、
前記メッセージの転送における、メッセージ送信完了時刻と、メッセージ受信完了時刻とを検出する、
処理を含み、
前記特定する処理は、
前記メッセージの送信命令の実行開始時刻と、前記メッセージの受信命令の実行開始時刻と、前記メッセージ送信完了時刻と、メッセージ受信完了時刻とを利用する、付記1記載のプログラム。
(付記3)
前記特定する処理は、
前記第1の計算ノードにおける前記メッセージの送信命令の実行開始時刻と、前記第1の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻との差に基づいて、前記第1の計算ノードにおける前記メッセージの転送開始までに要する待ち時間を特定し、又は前記第2の計算ノードにおける前記メッセージの受信命令の実行開始時刻と、前記第2の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻との差に基づいて、前記第2の計算ノードにおける前記メッセージの転送開始までに要する待ち時間を特定する、
処理を含む、付記2記載のプログラム。
(付記4)
前記特定する処理は、
前記第1の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻と、前記第1の計算ノードにおける前記メッセージの転送終了時刻との差に基づいて、前記第1の計算ノードにおける前記メッセージの転送時間を特定し、又は前記第2の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻と、前記第2の計算ノードにおける前記メッセージの転送終了時刻との差に基づいて、前記第2の計算ノードにおける前記メッセージの転送時間を特定する、
処理を含む、付記2又は3記載のプログラム。
(付記5)
前記メッセージの転送は、CPUコア間通信、インターコネクト、バス、LAN、WAN、インターネットのうち、少なくとも1つを用いて実行される、
付記2ないし4のうちいずれか1項に記載のプログラム。
(付記6)
第1の計算ノードがメッセージの送信命令を実行し、第2の計算ノードがメッセージの受信命令を実行する場合に、前記メッセージの転送に関連する時間を取得する方法であって、
前記第1の計算ノード及び前記第2の計算ノードのうちの一方から他方に、前記メッセージの転送の開始の起点となる制御通信を送信し、
前記起点となる制御通信を、前記他方の計算ノードにおいて受信し、
少なくとも、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とを検出し、
少なくとも、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とに基づいて、前記メッセージの送信命令及び前記メッセージの受信命令の各々における、前記メッセージの転送開始までに要する待ち時間及び/又は前記メッセージの転送に要する経過時間を特定する、
処理、を有する方法。
(付記7)
前記検出する処理は、
前記メッセージの送信命令の実行開始時刻と、前記メッセージの受信命令の実行開始時刻とを検出し、
前記メッセージの転送における、メッセージ送信完了時刻と、メッセージ受信完了時刻とを検出する、
処理を含み、
前記特定する処理は、
前記メッセージの送信命令の実行開始時刻と、前記メッセージの受信命令の実行開始時刻と、前記メッセージ送信完了時刻と、メッセージ受信完了時刻とを利用する、付記6記載の方法。
(付記8)
前記特定する処理は、
前記第1の計算ノードにおける前記メッセージの送信命令の実行開始時刻と、前記第1の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻との差に基づいて、前記第1の計算ノードにおける前記メッセージの転送開始までに要する待ち時間を特定し、又は前記第2の計算ノードにおける前記メッセージの受信命令の実行開始時刻と、前記第2の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻との差に基づいて、前記第2の計算ノードにおける前記メッセージの転送開始までに要する待ち時間を特定する、
処理を含む、付記7記載の方法。
(付記9)
前記特定する処理は、
前記第1の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻と、前記第1の計算ノードにおける前記メッセージの転送終了時刻との差に基づいて、前記第1の計算ノードにおける前記メッセージの転送時間を特定し、又は前記第2の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻と、前記第2の計算ノードにおける前記メッセージの転送終了時刻との差に基づいて、前記第2の計算ノードにおける前記メッセージの転送時間を特定する、
処理を含む、付記7又は8項記載の方法。
(付記10)
前記メッセージの転送は、CPUコア間通信、インターコネクト、バス、LAN、WAN、インターネットのうち、少なくとも1つを用いて実行される、
付記7ないし9のうちいずれか1項に記載の方法。
(付記11)
第1の計算ノードがメッセージの送信命令を実行し、第2の計算ノードがメッセージの受信命令を実行する場合に、前記メッセージの転送に関連する時間を取得するシステムであって、
前記第1の計算ノード及び前記第2の計算ノードのうちの一方から他方に、前記メッセージの転送の開始の起点となる制御通信を送信する送信部と、
前記起点となる制御通信を、前記他方の計算ノードにおいて受信する受信部と、
少なくとも、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とを検出する時刻検出部と、
少なくとも、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とに基づいて、前記メッセージの送信命令及び前記メッセージの受信命令の各々における、前記メッセージの転送開始までに要する待ち時間及び/又は前記メッセージの転送に要する経過時間を特定する経過時間特定部と、
を有するシステム。
(付記12)
前記時刻検出部は、
前記メッセージの送信命令の実行開始時刻と、前記メッセージの受信命令の実行開始時刻とを検出する実行開始時刻検出部と、
前記メッセージの転送における、メッセージ送信完了時刻と、メッセージ受信完了時刻とを検出するメッセージ送受信完了時刻検出部と、を含み、
前記経過時間特定部は、
前記メッセージの送信命令の実行開始時刻と、前記メッセージの受信命令の実行開始時刻と、前記メッセージ送信完了時刻と、メッセージ受信完了時刻とを利用する、
付記11記載のシステム。
(付記13)
前記経過時間特定部は、
前記第1の計算ノードにおける前記メッセージの送信命令の実行開始時刻と、前記第1の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻との差に基づいて、前記第1の計算ノードにおける前記メッセージの転送開始までに要する待ち時間を特定し、又は前記第2の計算ノードにおける前記メッセージの受信命令の実行開始時刻と、前記第2の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻との差に基づいて、前記第2の計算ノードにおける前記メッセージの転送開始までに要する待ち時間を特定する、待ち時間特定部、
を有する、付記12記載のシステム。
(付記14)
前記経過時間特定部は、
前記第1の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻と、前記第1の計算ノードにおける前記メッセージの転送終了時刻との差に基づいて、前記第1の計算ノードにおける前記メッセージの転送時間を特定し、又は前記第2の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻と、前記第2の計算ノードにおける前記メッセージの転送終了時刻との差に基づいて、前記第2の計算ノードにおける前記メッセージの転送時間を特定する、メッセージ転送時間特定部、
を有する、付記12又は13記載のシステム。
(付記15)
前記メッセージの転送は、CPUコア間通信、インターコネクト、バス、LAN、WAN、インターネットのうち、少なくとも1つを用いて実行される、
付記12ないし14のうちいずれか1項に記載のシステム。
1100 システム
1112 送信部
1114 受信部
1120 時刻検出部
1122 実行開始時刻検出部
1124 メッセージ送受信完了時刻検出部
1130 経過時間特定部
1132 待ち時間特定部
1134 メッセージ転送時間特定部
1140 通信時間結果

Claims (7)

  1. 第1の計算ノードがメッセージの送信命令を実行し、第2の計算ノードがメッセージの受信命令を実行する場合に、前記メッセージの転送に関連する時間を取得するプログラムであって、
    前記第1の計算ノード及び前記第2の計算ノードのうちの一方から他方に、前記メッセージの転送の開始の起点となる制御通信を送信し、
    前記起点となる制御通信を、前記他方の計算ノードにおいて受信し、
    少なくとも、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とを検出し、
    少なくとも、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とに基づいて、前記メッセージの送信命令及び前記メッセージの受信命令の各々における、前記メッセージの転送開始までに要する待ち時間及び/又は前記メッセージの転送に要する経過時間を特定する、
    処理、をコンピュータに実行させるプログラム。
  2. 前記検出する処理は、
    前記メッセージの送信命令の実行開始時刻と、前記メッセージの受信命令の実行開始時刻とを検出し、
    前記メッセージの転送における、メッセージ送信完了時刻と、メッセージ受信完了時刻とを検出する、
    処理を含み、
    前記特定する処理は、
    前記メッセージの送信命令の実行開始時刻と、前記メッセージの受信命令の実行開始時刻と、前記メッセージ送信完了時刻と、メッセージ受信完了時刻とを利用する、請求項1記載のプログラム。
  3. 前記特定する処理は、
    前記第1の計算ノードにおける前記メッセージの送信命令の実行開始時刻と、前記第1の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻との差に基づいて、前記第1の計算ノードにおける前記メッセージの転送開始までに要する待ち時間を特定し、又は前記第2の計算ノードにおける前記メッセージの受信命令の実行開始時刻と、前記第2の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻との差に基づいて、前記第2の計算ノードにおける前記メッセージの転送開始までに要する待ち時間を特定する、
    処理を含む、請求項2記載のプログラム。
  4. 前記特定する処理は、
    前記第1の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻と、前記第1の計算ノードにおける前記メッセージの転送終了時刻との差に基づいて、前記第1の計算ノードにおける前記メッセージの転送時間を特定し、又は前記第2の計算ノードにおける前記起点となる制御通信の送信時刻又は前記起点となる制御通信の受信時刻と、前記第2の計算ノードにおける前記メッセージの転送終了時刻との差に基づいて、前記第2の計算ノードにおける前記メッセージの転送時間を特定する、
    処理を含む、請求項2又は3記載のプログラム。
  5. 前記メッセージの転送は、CPUコア間通信、インターコネクト、バス、LAN、WAN、インターネットのうち、少なくとも1つを用いて実行される、
    請求項2ないし4のうちいずれか1項に記載のプログラム。
  6. 第1の計算ノードがメッセージの送信命令を実行し、第2の計算ノードがメッセージの受信命令を実行する場合に、前記メッセージの転送に関連する時間を取得する方法であって、
    前記第1の計算ノード及び前記第2の計算ノードのうちの一方から他方に、前記メッセージの転送の開始の起点となる制御通信を送信し、
    前記起点となる制御通信を、前記他方の計算ノードにおいて受信し、
    少なくとも、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とを検出し、
    少なくとも、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とに基づいて、前記メッセージの送信命令及び前記メッセージの受信命令の各々における、前記メッセージの転送開始までに要する待ち時間及び/又は前記メッセージの転送に要する経過時間を特定する、
    処理、を有する方法。
  7. 第1の計算ノードがメッセージの送信命令を実行し、第2の計算ノードがメッセージの受信命令を実行する場合に、前記メッセージの転送に関連する時間を取得するシステムであって、
    前記第1の計算ノード及び前記第2の計算ノードのうちの一方から他方に、前記メッセージの転送の開始の起点となる制御通信を送信する送信部と、
    前記起点となる制御通信を、前記他方の計算ノードにおいて受信する受信部と、
    少なくとも、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とを検出する時刻検出部と、
    少なくとも、前記起点となる制御通信の送信時刻と、前記起点となる制御通信の受信時刻とに基づいて、前記メッセージの送信命令及び前記メッセージの受信命令の各々における、前記メッセージの転送開始までに要する待ち時間及び/又は前記メッセージの転送に要する経過時間を特定する経過時間特定部と、
    を有するシステム。
JP2012194029A 2012-09-04 2012-09-04 計算ノード間メッセージ通信状況取得プログラム、方法、及びシステム Expired - Fee Related JP5949346B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012194029A JP5949346B2 (ja) 2012-09-04 2012-09-04 計算ノード間メッセージ通信状況取得プログラム、方法、及びシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012194029A JP5949346B2 (ja) 2012-09-04 2012-09-04 計算ノード間メッセージ通信状況取得プログラム、方法、及びシステム

Publications (2)

Publication Number Publication Date
JP2014049074A true JP2014049074A (ja) 2014-03-17
JP5949346B2 JP5949346B2 (ja) 2016-07-06

Family

ID=50608632

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012194029A Expired - Fee Related JP5949346B2 (ja) 2012-09-04 2012-09-04 計算ノード間メッセージ通信状況取得プログラム、方法、及びシステム

Country Status (1)

Country Link
JP (1) JP5949346B2 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009199121A (ja) * 2008-02-19 2009-09-03 Nec Corp 情報処理装置、通信情報採取方法、及び、プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009199121A (ja) * 2008-02-19 2009-09-03 Nec Corp 情報処理装置、通信情報採取方法、及び、プログラム

Also Published As

Publication number Publication date
JP5949346B2 (ja) 2016-07-06

Similar Documents

Publication Publication Date Title
US20090248934A1 (en) Interrupt dispatching method in multi-core environment and multi-core processor
JP6091724B2 (ja) リンクのヘルスチェック方法および装置
US20180285294A1 (en) Quality of service based handling of input/output requests method and apparatus
Larsen et al. Architectural breakdown of end-to-end latency in a TCP/IP network
JP5490336B2 (ja) Pciエクスプレス・マルチプル・ルートi/o仮想化環境における低待ち時間の優先順位付け
CN109688058B (zh) 报文处理方法、装置及网络设备
CN110622478A (zh) 数据同步处理的方法和装置
WO2015014198A1 (en) Data packet processing
WO2018077052A1 (zh) 一种虚拟交换机的升级方法和装置
TWI497970B (zh) 用於改良之時脈偏移測量之技術
US20170364279A1 (en) Systems and methods for non-uniform memory access aligned i/o for virtual machines
US10621124B2 (en) Method, device and computer program product for enabling SR-IOV functions in endpoint device
US9270620B2 (en) Memory transfer optimization of network adapter data placement when performing header-data split operations
US8588095B2 (en) Data conversion device and data conversion method
US20170235685A1 (en) I/o processing system including dynamic missing interrupt and input/output detection
CN109417507B (zh) 一种通过部分直接内存访问dma访问内存的方法和系统
JP5853819B2 (ja) 制御プログラム、制御方法、記憶制御装置および情報処理システム
WO2017080386A1 (zh) 一种报文处理方法和装置
US20160188340A1 (en) System and method for performing parallel operations using a plurality of nodes
JP5949346B2 (ja) 計算ノード間メッセージ通信状況取得プログラム、方法、及びシステム
WO2018057165A1 (en) Technologies for dynamically transitioning network traffic host buffer queues
US10284501B2 (en) Technologies for multi-core wireless network data transmission
WO2022116901A1 (zh) Iis总线译码方法、装置、示波器及计算机可读存储介质
JP2010165105A (ja) 通信装置及びその制御プログラム
WO2018196223A1 (zh) 一种数据处理方法及相关设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151023

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151027

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151222

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160523

R150 Certificate of patent or registration of utility model

Ref document number: 5949346

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees