JP5568048B2 - 並列計算機システム、およびプログラム - Google Patents

並列計算機システム、およびプログラム Download PDF

Info

Publication number
JP5568048B2
JP5568048B2 JP2011083098A JP2011083098A JP5568048B2 JP 5568048 B2 JP5568048 B2 JP 5568048B2 JP 2011083098 A JP2011083098 A JP 2011083098A JP 2011083098 A JP2011083098 A JP 2011083098A JP 5568048 B2 JP5568048 B2 JP 5568048B2
Authority
JP
Japan
Prior art keywords
processing
worker
time
node
master
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.)
Expired - Fee Related
Application number
JP2011083098A
Other languages
English (en)
Other versions
JP2012221004A (ja
Inventor
真生 濱本
哲也 山田
敦 友田
篤志 宮本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2011083098A priority Critical patent/JP5568048B2/ja
Priority to US13/437,523 priority patent/US9043804B2/en
Publication of JP2012221004A publication Critical patent/JP2012221004A/ja
Application granted granted Critical
Publication of JP5568048B2 publication Critical patent/JP5568048B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Description

本発明は、並列処理と同期処理を繰り返す計算処理をマスタノードとワーカノードを用いて行う並列計算機システム、そのバリア同期に関するものである。
近年のストレージ、ネットワークをはじめとするIT機器の目覚ましい発展により、扱う問題規模、処理すべきデータ規模は益々大きくなり、例えば高速フーリエ変換処理、遺伝的アルゴリズムを用いた処理、シミュレーション処理など、を実行する、より高い処理性能を有する計算機システムに対する強い要求がある。一方、マイクロプロセッサの動作周波数が頭打ちとなった2004年以降、計算機システムの処理性能向上へのアプローチは高周波数化から大並列化へと大きく変化した。このため、今後の計算機システムにおいては並列処理技術が益々重要になる。
大規模並列処理を行う計算機システムは、複数のサーバを高速なネットワークで連結させたコンピュータクラスタと呼ばれる構成をとるのが一般的である。このコンピュータクラスタは計算処理の流れを管理するマスタノードと、実際に計算処理を実行する複数のワーカノード(スレーブノードとも呼ばれる)から構成されるのが一般的であり、これをマスタ・ワーカ方式という。マスタ・ワーカ方式はマスタノードからワーカノードへの計算処理(以下、タスク)割当てと、ワーカノード上でのタスク処理と、全てのワーカノードへ割当てたタスク処理が完了することを待ち合わせる同期処理(バリア同期と呼ばれる)によって並列処理を実現する。ここで、同期処理はプログラムにおける演算順序を保証する上で重要な役割を持ち、一般的にタスク処理を完了したワーカノードからマスタノードへの通信処理(同期通信と呼ばれる)と、マスタノード上でのフラグ管理やカウンタによる全てのタスク処理が完了したかのチェック(以下、集計処理と呼ぶ)によって実現される。なお、タスク処理とは、ワーカノードがある同期ポイントから次の同期ポイントまでに完了すべき処理を指している。
この様な処理技術に関し、例えば下記に示す先行技術文献がある。
特開2001−51966号公報 特開2005−71280号公報
並列処理においては上述した同期処理が処理性能向上における大きな阻害要因となる。これは並列数を増やす、すなわちワーカノード数を増やすほど、同期処理におけるマスタノードへの負荷が増大し、同期処理時間が増大するためである。特に高速フーリエ変換処理やシミュレーション処理、遺伝的アルゴリズムを用いた処理などにおいては、非常に多くのワーカノードを用いてタスク処理と同期処理を数ミリ秒間隔といった短い時間で何度も繰り返す処理を行うために、その同期処理に伴うオーバヘッド(すなわち同期オーバヘッド)は無視できない。
また、今後の数十万ノード以上の大規模計算システムにおいてはこの同期オーバヘッドが処理性能向上の大きな足かせとなる。例えば、同期オーバヘッド(すなわち同期処理時間)は上述した同期通信時間と集計処理時間の和で算出できるが、マスタノード上での1ワーカノードあたりの集計処理時間を10ナノ秒とすると100万ワーカノードでは集計処理時間だけで10ミリ秒が必要となり、演算効率が非常に悪くなることがわかる。
ノード数の増大に伴う同期処理時間(同期オーバヘッド)の増加は、同期通信と集計処理による同期処理を行う計算機システムにおいて本質的な課題であり、例えばワーカノードの階層化を行い、かつ特定のマスタノードを用いない特許文献1による同期技術などでも解決されない。上記の課題に対し、特許文献2の同期技術(以下、従来技術)がある。この従来技術は一定時間間隔ごとに時刻を基準として同期を行うことにより、同期通信と集計処理を完全に排除し、ノード数と同期処理時間を非依存とした同期技術である。
従来技術では破綻なく同期を行うために、各ワーカノードのタスク処理における最悪ケースの処理時間よりも大きな時間間隔を確保し、同期時刻を設定する。ここで最悪ケースとは、タスク処理において処理時間を最長化する分岐先が選択され、かつ全てのメモリアクセスがキャッシュミスした状況が該当する。そのため、従来技術はタスクの処理時間ばらつきが小さく、かつタスク処理を所定時間内に完了できるように最適化したプログラミングを行うリアルタイムシミュレーションにおいては有効である。しかし、タスク処理時間のばらつきが比較的大きなアプリケーションに対しては、滅多に発生しない最悪ケースの処理時間を考慮した大きな同期時間間隔の設定が必要となるため、従来技術では同期オーバヘッドが増大する課題があった。すなわち、従来技術ではタスク処理時間のばらつきが比較的大きなアプリケーションに対して同期オーバヘッドが増大する課題があった。
本発明の目的は、上述した従来技術における課題を解決し、同期オーバヘッドの増大を阻止し、高速な並列処理を実行可能な並列計算機システム、およびプログラムを提供することにある。
上記の目的を達成するため、本発明においては、同期処理を行うマスタノードあるいはタスク処理を行うワーカノードとなる複数の計算ユニットをネットワークで接続し、並列計算を行う並列計算機システムであって、マスタノードは、全てのワーカノードにおけるタスク処理が基本処理時間以内に完了することを期待したマスタ判定時刻を設定し、複数のワーカノードに対して処理開始通知を送信し、マスタ判定時刻において、ワーカノードからの処理未完了通知を受信しているかを確認し、受信している場合には、複数のワーカノードに対して処理延長通知を送信し、受信していない場合には複数のワーカノードに対して同期完了通知を送信し、ワーカノードは、マスタノードから処理開始通知または同期完了通知を受信した場合に、基本処理時間を用いてワーカ判定時刻を設定し、ワーカ判定時刻において、タスク処理が完了していない場合は、マスタノードへ処理未完了通知を送信し、タスク処理が完了している場合はマスタノードからの同期完了通知を待つ構成の並列計算機システムを提供する。
また、上記の目的を達成するため、本発明においては、上記の並列計算機システムであって、マスタノードは、少なくとも一つのワーカノードにおけるタスク処理が基本処理時間までに完了しなかった場合に、補正処理時間を用いてマスタ判定時刻を再設定し、ワーカノードは、マスタノードから処理延長通知を受信した場合に、補正処理時間を用いてワーカ判定時刻を再設定する構成の並列計算機システムを提供する。
更に、上記の目的を達成するため、本発明においては、処理部と記憶部を備え、同期処理を行うマスタノードあるいはタスク処理を行うワーカノードとなる複数の計算ユニットをネットワークで接続し、並列計算を行う並列計算機システムの処理部で実行されるプログラムであって、マスタノードとなる計算ユニットの処理部を、全てのワーカノードにおけるタスク処理が基本処理時間以内に完了することを期待したマスタ判定時刻を設定し、複数のワーカノードに対して処理開始通知を送信し、マスタ判定時刻において、ワーカノードからの処理未完了通知を受信しているかを確認し、受信している場合には、複数のワーカノードに対して処理延長通知を送信し、受信していない場合には複数のワーカノードに対して同期完了通知を送信するよう動作させ、ワーカノードとなる計算ユニットの処理部を、マスタノードから処理開始通知または同期完了通知を受信した場合に、基本処理時間を用いてワーカ判定時刻を設定し、ワーカ判定時刻において、タスク処理が完了していない場合は、マスタノードへ処理未完了通知を送信し、タスク処理が完了している場合はマスタノードからの同期完了通知を待つよう動作させるプログラムを提供する。
また、更に、上記の目的を達成するため、本発明の上記のプログラムは、マスタノードとなる計算ユニットの処理部を、少なくとも一つのワーカノードにおけるタスク処理が基本処理時間までに完了しなかった場合に、補正処理時間を用いてマスタ判定時刻を再設定するよう動作させ、ワーカノードとなる計算ユニットの処理部を、マスタノードから処理延長通知を受信した場合に、補正処理時間を用いてワーカ判定時刻を再設定するよう動作させるプログラムを提供する。
各ワーカノードにおけるタスク処理時間のばらつきが比較的大きなアプリケーションをワーカノード数が極めて大きな並列計算機システムを用いて実行する場合において、その同期オーバヘッドを削減し、高速な並列処理を実現する。
第1の実施例にかかる並列計算機システムの一構成を示す図である。 第1の実施例にかかる、同期判定時刻までに全てのワーカノードがタスク処理を完了した場合の動作を示すタイムチャート図である。 第1の実施例にかかる、同期判定時刻までに一部のワーカノードがタスク処理を完了しなかった場合の動作を示すタイムチャート図である。 第1の実施例にかかる、計算機システムにおいて同期判定時刻までに全てのワーカノードが処理を完了した場合のタイムチャートを示す図である。 第1の実施例にかかる、計算機システムにおいて同期判定時刻までに一部のワーカノードが処理を完了しなかった場合のタイムチャートを示す図である。 第1の実施例にかかる、マスタノードのフローチャートを示す図である。 第1の実施例にかかる、ワーカノードのフローチャートを示す図である。 第1の実施例にかかる、計算ユニットの構成を示す図である。 第1の実施例にかかる、計算ユニットの構成を示す図である。 第1の実施例にかかる、Hypervisorが有するタスク処理状況情報を示す図である。 第1の実施例にかかる、Hypervisorが有する割込間隔情報を示す図である。 第1の実施例にかかる、タスク処理のテーブルを示す図である。 第1の実施例にかかる、アルゴリズムのフローチャートを示す図である。
本発明においては、ある所定の時刻を設定し、その時刻までにタスク処理が完了しなかったワーカノードのみが処理未完了通知をマスタノードへ送信し、マスタノードがワーカノードのタスク処理状況を把握することを可能とする。これにより、マスタノードは一部のワーカノードがタスク処理を完了していない場合は処理時間を延長する通知(処理延長通知)を全てのワーカノードへ送信し、その同期時刻を遅らせることが可能となり、タスク処理状況に応じた適応的な同期時刻設定が可能となる。また、前記ある所定の時刻においてマスタノードが全てのワーカノードのタスク処理が完了していることを把握した場合には、全てのワーカノードへ同期完了通知を送信し、これを受けたワーカノードは次の所定の時刻を設定して次のタスク処理を開始する。
そして、本発明においては、マスタノードから全ワーカノードへの同期完了通知および処理延長通知の通信と、ワーカノードからマスタノードへの処理未完了通知の通信を新たに実施することで、タスク処理状況に応じた適応的な同期時刻設定を可能とし、上記の課題を解決する。ここで、前者の同期完了通知および処理延長通知はブロードキャストによる通信であるため、その通信時間はワーカノード数に依存せず、高速に行うことができる。一方、後者の処理未完了通知についても、処理が完了していないワーカノードからのみの通信であり、さらにマスタノードはその通知を1つ受信するだけで処理時間延長を判定できるため、その通信時間はワーカノード数に依存せず、高速に行うことができる。そのため、新たに追加となる通信に要する時間、すなわち本方式における同期オーバヘッドは、従来技術による同期オーバヘッドより非常に小さく、全体として従来技術よりもその同期オーバヘッドを小さくすることができる。そして、ワーカノード数と同期オーバヘッドを非依存としつつ、比較的処理時間のばらつきが大きなアプリケーションに対しても、小さな同期オーバヘッドで並列計算を実行することが可能となる。
以下、本発明の実施の形態を図面に従い説明する。
図1に第1の実施例が適用される並列計算機システム100の構成を示す。本実施例にかかる並列計算機システム100は、複数の計算ユニット110と、それらを接続するネットワーク120から構成される。計算ユニット110は一般的なサーバ(計算機)であり、内部の構成は図8を用いて後で詳述する。またネットワーク120も同様に一般的なものであり、例えばEthernet(登録商標)、インフィニバンド(InfiniBand)などで実現する。また、本実施例にかかる並列計算機システム100は図1に示すように計算ユニット110のうち1台をマスタノード(110−M)とし、その他をワーカノード(110−W)とするマスタ・ワーカ方式によって並列計算を実行する。
本実施例の対象はこの並列計算機システム100を用いて並列計算を行う上で必須となるバリア同期の同期方式とその実現手段である。以下、本実施例にかかるバリア同期方式とその実現手段について説明する。
まず、本実施例にかかるバリア同期方式について説明する。
本実施例にかかるバリア同期方式では、全てのワーカノードにおけるタスク処理が所定時間(これを基本処理時間Tと定義する)以内に終わることを期待して、ある同期判定時刻を設定し、前記同期判定時刻におけるワーカノードのタスク処理状況によって、マスタノードが同期判定を行う。タスク処理状況の把握は、ワーカノードが基本処理時間T以内にタスク処理を完了しなかった場合にのみ、マスタノードへ処理未完了通知を送信することで行う。すなわち、同期判定時刻までにマスタノードに通知がなければ全てのワーカノードにおけるタスク処理が完了したと判定する。
図2、図3に本実施例にかかるバリア同期方式の概要を示す。図2は同期判定時刻までに全てのワーカノードがタスク処理を完了した場合の動作タイムチャート200を示している。この場合、同期判定時刻2で同期を完了し、次のタスク処理へ進む。
一方、図3には同期判定時刻までに一部のワーカノードがタスク処理を完了しなかった場合の動作タイムチャート300を示している。この場合、所定延長時間(これを補正処理時間ΔTと定義する)だけ同期判定時刻2を延長した同期判定時刻2’を設定し、同期判定時刻2’にて再度同期判定を行う。図3の例では同期判定時刻2’にて同期を完了し、次のタスク処理へ進む。ここで、基本処理時間Tおよび補正処理時間ΔTはアプリケーションのプログラム中に記述される設定値である。
以上が本実施例にかかる同期方式の概要である。
以下、バリア同期方式の詳細を説明する。本実施例におけるバリア同期方式は、(a)同期判定時刻までに全てのワーカノードが処理を完了した場合と、(b)同期判定時刻までに一部のワーカノードが処理を完了しなかった場合の二つの場合がある。
なお、以下の説明において、実行するプログラムは高速フーリエ変換処理、シミュレーション処理、遺伝的アルゴリズムを用いた処理などを想定し、これらの処理は、下記特徴を有することとする。
・全ワーカノードが同一のプログラムを実行するSPMD(Single Program Multiple Data)型である。
・同期完了後の中間結果データ転送処理などの通信先が予め固定されている。
・ワーカノードはタスク処理と同期処理を規定回数繰り返す。
(a)の説明
まず、図4を用いて、バリア同期方式において、同期判定時刻までに全てのワーカノードが処理を完了した場合の、並列計算機システム100の動作について説明する。図4の400は同期判定時刻までに全てのワーカノードが処理を完了した場合の詳細タイムチャートである。並列計算機システム100における、マスタノード(M)とワーカノード(W1、W2、W3)が行う同期処理に関する処理と通信(実線矢印)を時系列で示している。本実施例においてワーカノード数はいくつでもよいが、ここでは簡単化して説明するためワーカノード数を3つとして説明する。
まず、図4において、並列処理プログラムが実行されると、マスタノードは基本処理時間Tと補正処理時間ΔTを並列処理プログラムより取得する(時刻450)。本実施例において基本処理時間Tと補正処理時間ΔTは大きな特徴であり、重要なパラメータである。基本処理時間Tと補正処理時間ΔTはアプリケーションのプログラマが設定するパラメータであり、並列処理プログラム中に記述されている。
次に、マスタノードは全ワーカノードへ通信402を行う(時刻452)。通信402ではワーカノードへワーカノードが実行すべきプログラムとその初期値などを送信するという従来技術同様の通信である。ここで初期値とはプログラムにおけるワーカノードごとの入力パラメータであり、入力データに関する情報や中間結果データの送受信あて先情報などである。
マスタノードから通信402を受信したワーカノードは取得した情報を元にプロセスを起動し、タスク処理開始の準備を行う。
次にマスタノードは全ワーカノードへ通信404を行う(時刻454)。通信404はブロードキャストによる処理開始通知と基本処理時間Tの送信であり、本実施例においてはこの処理開始通知と後述する同期完了通知を送信する際に、基本処理時間Tの情報を一緒に送信する。基本処理時間Tの送信は後述するワーカノード側の同期判定時刻に関する設定を可能とし、処理開始通知はワーカノードが次の処理を行うためのトリガとなる役割がある。
通信404の後、マスタノードはワーカノードがタスク処理を基本処理時間T以内に完了しなかった場合に、ワーカノードからの処理未完了通知を確実に受信できる時刻(これをマスタ判定時刻と定義する)を算出し、その時刻まで待機する。マスタ判定時刻は通信404を行った直後の時刻と、ブロードキャストによる通信404がワーカノードへ到達する遅延時間の最大値(ブロードキャストの最悪遅延時間T_nw1)と、基本処理時間Tと、ワーカノードが送信した処理未完了通知がマスタノードへ到達する遅延時間の最悪値(マスタノードとワーカノード間通信の最悪遅延時間T_nw2)を用いて算出できる。
図4の例では、マスタ判定時刻1=(時刻454)+T_nw1+T+T_nw2と算出できる。ここで、T_nw1とT_nw2はマスタノードと、マスタノードに対してネットワーク距離的に最も遠い位置にあるワーカノード間の通信において、ブロードキャスト通信と1対1通信のそれぞれのケースについて、(通過するネットワークスイッチの最大ホップ数)×(ネットワークスイッチの1ホップあたりの最大遅延時間)+(ノード上での通信終端処理の最大遅延時間)を算出することで得ることができる。これはよく知られた最悪遅延時間の算出方法である。
一方、通信404を受信したワーカノードはマスタノードへタスク処理状況を報告する時刻(これをワーカ判定時刻と定義する)を算出し、その時刻までタスク処理を行う。ここで、ワーカ判定時刻は通信404を受信した直後の時刻と基本処理時間Tから算出できる。例えば、あるワーカノードが通信404を最悪遅延時間で受信したとすると、そのワーカノードにおいてはワーカ判定時刻1=(時刻456)+Tと算出される。ここで、ワーカ判定時刻1はワーカノードごとに若干のばらつきが生じるが、特に問題はない。なぜなら、全てのワーカノードにおけるワーカ判定時刻1は(ワーカ判定時刻1+T_nw2 ≦ マスタ判定時刻1)の条件を満たしており、マスタノードがワーカノードからの処理未完了通知をマスタ判定時刻1までに確実に受信できるためである。
ワーカ判定時刻1に到達した時点でワーカノードはタスク処理の状況をマスタノードへ通知する。ここで本実施例において、ワーカノードはタスク処理が完了していない場合のみマスタノードへ処理未完了通知を送信し、タスク処理が完了している場合はマスタノードからの同期完了通知を待つ。すなわち、図4の例では全てのワーカノードはマスタノードへ何も送信せず、同期完了通知を待つことになる。
一方、時刻がマスタ判定時刻1に到達すると、マスタノードはワーカノードから処理未完了通知を受信しているかを確認する。本実施例においてマスタノードは、処理未完了通知を受信していない場合には全てのワーカノードにおいてタスク処理が完了したと判定し、1つ以上の処理未完了通知を受信していた場合にはタスク処理が完了していないワーカノードがあると判定する。すなわち、図4の例では処理未完了通知を受信していないため、全てのワーカノードにおいてタスク処理が完了したと判定する。
ここで、このワーカ判定時刻1におけるワーカノードの通知の仕組みとマスタ判定時刻1におけるマスタノードの判定の仕組みが、本実施例にかかるバリア同期方式の大きな特徴であり、この特徴が同期オーバヘッドをノード数に非依存とすることを可能とする。なぜなら、ある所定時刻までに必ず通知が来ることが保障されていた場合、前記処理時刻において全ての処理完了通知を得ていることと、処理未完了通知を1つも得ていないことは等価だからである。
全てのワーカノードにおいてタスク処理が完了したと判定したマスタノードは基本処理時間Tと補正処理時間ΔTの更新を行う。基本処理時間Tと補正処理時間ΔTを更新するアルゴリズムについては様々なものが適用可能であり、例えば補正処理時間ΔTは固定であるとして、当該タスク処理区間において一度でも処理未完了通知を受信していた場合は、基本処理時間Tを補正処理時間ΔTだけ加えた値に更新するなどがある。
その後、マスタノードは全ワーカノードへ通信406を行う(時刻458)。通信406はブロードキャストによる同期完了通知と基本処理時間Tの送信である。同期完了通知にはワーカノードが次のタスク処理を行うためのトリガとなる役割があり、基本処理時間Tはワーカノードが次のタスク処理のためのワーカ判定時刻を算出するために必要である。その後、マスタノードはマスタ判定時刻2を算出し、その時刻まで待機する。また、通信406を受信したワーカノードはワーカ判定時刻2を算出し、その時刻までタスク処理を行う。
以上が実施例1にかかるバリア同期方式において、同期判定時刻までに全てのワーカノードが処理を完了した場合の並列計算機システム100の動作である。
(b)の説明
次に、図5を用いて、バリア同期方式において、同期判定時刻までに一部のワーカノードが処理を完了しなかった場合の並列計算機システム100の動作について説明する。図5の500は同期判定時刻までに一部のワーカノードが処理を完了しなかった場合の並列計算機システム100の動作を示すタイムチャートである。図の見方は図4と同様であり、図4と同一のものには同一の符号を付している。
図5においてワーカ判定時刻1までの動作は、図4に示した同期判定時刻までに全てのワーカノードが処理を完了した場合のシステム全体の動作と同様であるため、説明を省略する。以下、ワーカ判定時刻1からの動作について説明する。
ワーカ判定時刻1に到達した時点でワーカノードはタスク処理の状況をマスタノードへ通知する。図5の例ではワーカノード2(W2)のタスク処理が未完了であるため、ワーカノード2のみがマスタノードへ処理未完了通知(通信502)を送信する。送信が完了すると、ワーカノードは未完了のタスク処理を再開する。
時刻がマスタ判定時刻1に到達すると、マスタノードはワーカノードから処理未完了通知を受信しているかを確認する。図5のタイムチャート500では処理未完了通知を受信しているため、タスク処理が完了していないワーカノードがあると判定し、マスタノードは全ワーカノードへ通信504を行う(時刻558)。通信504はブロードキャストによる処理延長通知と補正処理時間ΔTの送信である。処理延長通知によりワーカノードはタスク処理時間が延長されたことを認識でき、補正処理時間ΔTはワーカノードがワーカ判定時刻を補正するために必要である。
その後マスタノードは延長後のマスタ判定時刻であるマスタ判定時刻1’を算出し、その時刻まで待機する。マスタ判定時刻1’は通信504を行った直後の時刻と、ブロードキャストの最悪遅延時間T_nw1と、補正処理時間ΔTと、マスタノードとワーカノード間通信の最悪遅延時間T_nw2の和として算出でき、マスタ判定時刻1’=(時刻558)+T_nw1+ΔT+T_nw2として求められる。
一方、通信504を受信したワーカノードは延長後のワーカ判定時刻であるワーカ判定時刻1’を算出し、その時刻までタスク処理を行う。ワーカ判定時刻1’は通信504を受信した直後の時刻と補正処理時間ΔTから算出でき、例えば通信504を最悪遅延時間で受信したワーカノードにおいては、ワーカ判定時刻1’= (時刻560)+ΔTとして求められる。ワーカ判定時刻1’についてもワーカ判定時刻1と同様にその時刻はワーカノードごとにばらつくが、特に問題はない。
ここで、このワーカ判定時刻1とマスタ判定時刻1をワーカ判定時刻1’とマスタ判定時刻1’へ補正する仕組みが本実施例にかかる同期方式の大きな特徴であり、この特徴が最悪ケースの処理時間を想定した同期間隔を設定する従来技術に対し、その同期オーバヘッドを大きく削減することを可能とする。
ワーカ判定時刻1’に到達した時点でワーカノードはタスク処理の状況をマスタノードへ通知する。ここでは全てのワーカノードがタスク処理を完了しているために、マスタノードへの処理未完了通知は送信されない。そのため、マスタ判定時刻1’において、マスタノードは全てのワーカノードがタスク処理を完了したと判定する。そして、基本処理時間Tと補正処理時間ΔTの更新を行い、全ワーカノードへ通信406を行う(時刻562)。通信406はブロードキャストによる同期完了通知と基本処理時間Tの送信である。その後、マスタノードはマスタ判定時刻2’を算出し、その時刻まで待機する。また、通信406を受信したワーカノードはワーカ判定時刻2’を算出し、その時刻までタスク処理を行う。
以上が実施例1にかかるバリア同期方式において、同期判定時刻までに一部のワーカノードが処理を完了しなかった場合の並列計算機システム100の動作である。
以上までに、実施例1にかかる並列計算機システム100のバリア同期に関する動作について説明した。以下、図6、図7に示すマスタノードとワーカノードのフローチャートの各処理ステップと、図4、図5に示した各時刻における処理との対応について述べ、実施例1にかかるバリア同期方式を実現するマスタノードとワーカノードのそれぞれの動作を説明する。
まず、図6を用いて実施例1にかかるマスタノードの動作を示す。
並列処理プログラムが実行されると、まずステップST600として基本処理時間Tと補正処理時間ΔTの取得を行う。これは時刻450の動作に対応する。次にステップST602としてマスタノードは全ワーカノードへワーカノードが実行すべきプログラムとその初期値を送信する。これは時刻452の動作に対応する。次に、ステップST604として全ワーカノードへ処理開始通知を送信する。このとき基本処理時間Tの情報も一緒に送信する。その後、ステップST606としてマスタ判定時刻を算出し、タイマへ設定する。これは時刻454の動作に対応する。次に、ステップST608としてマスタ判定時刻まで待機し、マスタ判定時刻にてステップST610としてワーカノードから処理未完了通知を受信したかを確認する。これはマスタ判定時刻1の動作に対応する。
ここで、ワーカノードから処理未完了通知を受信していない場合、ステップST612として基本処理時間Tと補正処理時間ΔTを更新し、さらにステップST620として全ワーカノードへ同期完了通知を送信する。このとき基本処理時間Tの情報も一緒に送信する。その後、ステップST622としてプログラム中の全ての処理を完了したかを判定し、全て完了したならば終了し、全て完了していないならばステップST624として次のタスク処理のマスタ判定時刻を設定する。そしてステップST608へ戻る。
これは図4の時刻458、図5の時刻562の動作に対応する。一方、ステップST610にてワーカノードから処理未完了通知を受信していた場合は、ステップST630として全ワーカノードへ処理延長通知を送信する。このとき、補正処理時間ΔTの情報も一緒に送信する。その後、ステップST632として延長後のマスタ判定時刻を算出して、タイマへ設定する。そしてステップST608へ戻る。これは時刻558の動作に対応する。
次に図7を用いて実施例1にかかるワーカノードの動作を示す。
ワーカノードは、まず、ステップST702としてマスタノードからワーカノードが実行すべきプログラムとその初期値を取得する。これは時刻452の動作に対応する。次に、ステップST704としてマスタノードから処理開始通知を受信するまで待機する。マスタノードから処理開始通知を受信すると、一緒に送信されてきた基本処理時間Tの情報を用いて、ステップ706としてワーカ判定時刻を算出し、タイマへ設定する。これは時刻456の動作に対応する。次に、ステップST708としてワーカ判定時刻までタスク処理を行い、ワーカ判定時刻にてステップST710としてタスク処理が完了しているかを確認する。これはワーカ判定時刻1の動作に対応する。
ここで、既にタスク処理が完了している場合、ステップST720としてマスタノードから同期完了通知を受信するまで待機する。マスタノードから同期完了通知を受信した場合は、ステップST726へ移行する。そして、プログラム中の全ての処理を完了したかを判定し、全て完了したならば終了し、全て完了していないならば、ステップST728として同期完了通知と共に送信されてきた基本処理時間Tの情報を用いて次のタスク処理のワーカ判定時刻を設定する。そしてステップST708へ戻る。これは図4の時刻460、図5の時刻564の動作に対応する。
一方、ステップST710にてタスク処理が完了していなかった場合、ステップST730へ移行してマスタノードへ処理未完了通知を送信し、ステップST732として未完了のタスク処理を再開する。これはワーカ判定時刻1の動作に対応する。ステップST734としてマスタノードからの処理延長通知を受信するとステップST736へ移行し、処理延長通知と共に送信されてきた補正処理時間ΔTの情報を用いて延長後のワーカ判定時刻を算出し、タイマへ設定する。そしてステップST708へ戻る。これは時刻560の動作に対応する。
以上が実施例1にかかるマスタノードとワーカノードの動作である。これにより、従来技術の課題を解決し、比較的処理時間のばらつきが大きなアプリケーションに対しても、小さな同期オーバヘッドで並列計算を実行することが可能である。
以上、実施例1にかかるバリア同期方式について説明した。以下、図8A、図8Bを用いて、図1の計算ユニット110上で上記のバリア同期方式を実現する手段の一具体的構成を説明する。
図8Aは本実施例にかかる計算ユニット110の構成図である。計算ユニット110は図示を省略した内部バス等で相互に接続された処理部として機能するプロセッサ810、通信制御部820−a、b、インターバルタイマ830、及び記憶部であるメモリ840を有している。プロセッサ810はメモリ840に記憶された各種プログラムを実行するデバイスであり、中央処理部(Central Processing Unit:CPU)とも呼ばれる。
通信制御部820−a、820−bはネットワーク120と計算ユニット110とのインタフェースとなるユニットであり、他計算ユニットとの1対1通信およびブロードキャスト通信などの機能を提供する。通信制御部820−a、820−bはネットワーク120からデータを受信すると、メモリ840へ受信データを書き込み、プロセッサ810へ通信があったことを示す割込通知(通信割込と呼ぶ)を送信する。通信割込を受けたプロセッサ810は現在の処理を中断して通信割込処理を実行し、通信割込処理が終了すると中断しておいた処理を続行する。本実施例における計算ユニット110は通信制御部820−a、820−bを2つ有している。本実施例では2つある通信制御部820−a、820−bの内、片方を図4、図5に示した通信404、通信406、通信502、通信504など同期に関する通信を行う専用デバイスとして用いる。この理由は後述するが、ここでは通信制御部820−aを同期に関する通信を行う専用デバイスに選択したとして以下の説明を行う。
インターバルタイマ830は、内部または外部のクロックに同期してカウントアップする実時間カウンタ832を有する。この実時間カウンタ832はプロセッサ810から読み出し可能である。また、インターバルタイマ830は割込間隔設定レジスタ834を有し、これを用いてタイマ割込時間間隔を設定することができ、インターバルタイマ830は割込間隔設定レジスタ834に設定された時間が経過するとプロセッサ810へタイマ割込をかける。プロセッサ810はタイマ割込を受けると、現在の処理を中断してタイマ割込処理を実行し、タイマ割込処理が終了すると中断しておいた処理を続行する。タイマ割込処理では、割込間隔設定レジスタ834を再設定し、再びタイマ割込が発生するようにする。
メモリ840は並列処理プログラム842、オペレーティングシステム(以下、OS)844とハイパーバイザ(Hypervisor)850を有する。並列処理プログラム842はアプリケーションのプログラマが作成した実行対象となるプログラムである。OS844は割込処理や通信制御部820などの各種デバイスの制御を実行するプログラムであり、Windows(登録商標)やLinuxなど既存のOSである。
ハイパーバイザ850はOS844からハードウェアを仮想化,または一部機能を隠ぺいするためのものであり、本実施例においては特に割込処理、バリア同期処理、分散並列処理をOS844から隠ぺいする。すなわち、本実施例に係るバリア同期方式を実現するために必要な追加処理のみをハイパーバイザ850が行い、それ以外の割込処理については従来通りOS844が行う。
そのため、図8Bに示すように、本実施例にかかるハイパーバイザ850は割込処理プログラム852、分散並列処理制御部880に加え、通信制御設定部854、バリア同期制御部860、タイマ割込制御部870を有する。
図8Bに示すように、割込処理プログラム852はインターバルタイマ830、通信制御部820からの割込に対する処理や、並列処理プログラム842における基本処理時間Tの設定や後述するタスク処理完了フラグ情報902の書き込みなど本実施例に必須のシステムコールに対する処理を行い、これ以外の割込処理についてはOS844へ依頼する。
図8Bの通信制御設定部854は通信制御部820への設定を行う。本実施例にかかる通信制御設定部854はマスタ・ワーカ情報882の値に応じて通信制御部820への設定値を切り替える特徴がある。
バリア同期制御部860は本実施例にかかるバリア同期方式を実現するための制御部であり、同期制御プログラム862とタスク処理状況情報864と間隔最適化プログラム866を有する。同期制御プログラム862は上述したマスタノードにおける処理時間の延長判定処理やタスク処理状況情報864へのアクセスなど、バリア同期を実現するためのプログラムである。
図9に示すように、タスク処理状況情報864はタスク処理の状況に関する情報であり、タスク処理完了フラグ情報902と処理未完了通知情報904から構成される。タスク処理完了フラグ情報902はワーカノードがタスク処理を完了したか否かを示すフラグであり、ワーカノードがタスク処理を完了した時点で同期制御プログラム862を介してフラグが立てられる。処理未完了通知情報904はワーカノードから処理未完了通知を受信したか否かを示す情報であり、ワーカノードから処理未完了通知があった場合は通信制御部820−aによってこのメモリ領域に書き込まれる。間隔最適化プログラム866は割込時間間隔情報876にある基本処理時間T、補正処理時間ΔTの値を、より同期オーバヘッドを小さくする最適な値に更新するためのプログラムである。
図8Bのタイマ割込制御部870はインターバルタイマ830に対するタイマ割込の間隔設定を行う制御部であり、タイマ設定プログラム872と割込時間間隔情報876を有する。タイマ設定プログラム872は割込時間間隔情報876を用いてインターバルタイマ830のタイマ割込をマスタ判定時刻またはワーカ判定時刻に発生させるためのプログラムである。
図10に示すように、割込時間間隔情報876は、基本処理時間Tの情報である基本処理時間1002、補正処理時間ΔTの情報である補正処理時間1004、ブロードキャストの最悪遅延時間T_nw1の情報であるBC最悪遅延時間1006、マスタノードとワーカノード間通信の最悪遅延時間T_nw2の情報であるMW最悪遅延時間1008、タイマ割込間隔1010というマスタ判定時刻とワーカ判定時刻の算出に関する情報を有する。
図8Bの分散並列処理制御部880は、複数ノードを用いた一般的な分散並列処理の基本機能を提供する基盤であり、マスタ・ワーカ情報882を有する。マスタ・ワーカ情報882は当該計算ユニットがマスタノードであるのかワーカノードであるのかを示す識別情報である。
以上が本実施例1にかかる計算ユニット110の構成の一例である。以下、計算ユニット110を用いて、図6、図7に示したマスタノードとワーカノードの動作を実現する具体的手段を説明する。
まず、マスタノードの動作の実現手段について示す。図6に示したマスタノードの動作を実現するには、本実施例の特徴となる次の6つの手段を実現できればよい。ここで、括弧内の符号はマスタノードの動作における関連する図6中のステップを示している。
(M−1)基本処理時間T、補正処理時間ΔTの取得手段(ST600)
(M−2)マスタ・ワーカの識別手段(ST602)
(M−3)処理開始・同期完了・処理延長の通知手段(ST604、ST620、ST630)
(M−4)マスタ判定時刻にタイマ割込を得る手段(ST606、ST608、ST624、ST632)
(M−5)全ワーカノードの処理完了の判定手段(ST610)
(M−6)基本処理時間Tと補正処理時間ΔTの更新手段(ST612)
以下、(M−1)〜(M−6)までの実現手段を示す。
(M−1)の実現手段
基本処理時間Tと補正処理時間ΔTの取得については、これらを割込時間間隔情報876の基本処理時間1002および補正処理時間1004に設定するためのアプリケーション・プログラム・インタフェース(API)を用意し、アプリケーションのプログラマに公開することにより、実行時に並列処理プログラム842から得られる。並列処理プログラム842から得られなかった場合は基本処理時間1002および補正処理時間1004のデフォルト値を採用する。
(M−2)の実現手段
本実施例においてマスタノードとワーカノードではその動作が異なる。そのため、計算ユニット110がマスタノードであるのか、ワーカノードであるのかを事前に認識する必要がある。本実施例において計算ユニット110がマスタノードであることは分散並列処理制御部880のプログラムにてステップST602を行う際に識別可能であり、このときにマスタ・ワーカ情報882へその識別情報を書き込む。この情報を参照することで計算ユニット110はマスタノードであることを識別可能である。
(M−3)の実現手段
本実施例にかかるマスタノードは処理開始通知、同期完了通知、処理延長通知という3種類のブロードキャスト通信を行う。前記3種の通知については、処理開始、同期完了、処理延長ごとに識別コードを設定し、データとして送信することで受信側にて識別可能である。送信についてはOS844の基本機能を使用して通信制御部820−aへブロードキャストによる送信を依頼し、これを受けた通信制御部820−aが送信を実行する。ここで、処理開始と同期完了の通知を行う際には、識別コードに加えて基本処理時間Tの情報も一緒に送信する。また、処理延長の通知を行う際には、識別コードに加えて補正処理時間ΔTの情報も一緒に送信する。
(M−4)の実現手段
マスタノードについては基本処理時間Tに基づくマスタ判定時刻(ST606、ST624)と補正処理時間ΔTに基づくマスタ判定時刻(ST632)の2種類のタイマ割込間隔がある。
前者については、タイマ設定プログラム872が割込時間間隔情報876を参照し、タイマ割込間隔1010=(T+T_nw1+T_nw2)を計算することで得られる。また、後者についても同様にタイマ設定プログラム872が割込時間間隔情報876を参照し、タイマ割込間隔1010=(ΔT+T_nw1+T_nw2)を計算することで得られる。上記より得られたタイマ割込間隔1010をインターバルタイマ830の割込間隔設定レジスタ834に設定することでマスタ判定時刻にタイマ割込を得ることができる。なお、ブロードキャストの最悪遅延時間T_nw1、マスタノードとワーカノード間通信の最悪遅延時間T_nw2は並列計算システム100の設計値であるため、割込時間間隔情報876のBC最悪遅延時間1006およびMW最悪遅延時間1008に予め設定しておく。
(M−5)の実現手段
ここでは処理未完了通知情報904を得る手段と、この情報を基に全ワーカノードの処理完了判定を行う手段を示す。
まず、処理未完了通知情報904を得る手段を示す。処理未完了通知情報904はワーカ判定時刻に処理が完了しなかったワーカノードから送信される処理未完了通知である。本実施例にかかるハイパーバイザ850は、この情報を通信制御部820−aを介して効率よく得られるようにするために、(1)で述べたステップST602において自身がマスタノードであると認識した段階で、通信制御設定部854を起動する。そして、通信制御設定部854は通信制御部820−aに対し、次の設定を行う。
(M−5−1)外部からデータを受信してもプロセッサ810に割込通知(通信割込)を送信しない。
(M−5−2)受信データの書込み先を処理未完了通知情報904のアドレス領域とする。
(M−5−1)は処理未完了通知の収集に伴う処理時間オーバヘッドの削減を目的としたものである。処理未完了通知はワーカ判定時刻に処理が完了しなかったワーカノードから送信されるため、最悪ケースにおいては全ワーカノードからの処理未完了通知が送信される可能性がある。この場合、通信制御部820−aが受信した数だけ割込通知をあげたとすると、プロセッサ810は膨大な回数の通信割込処理を実行する必要があり、ワーカノード数に依存した大きな処理時間が必要となる。これはマスタノードが処理延長通知を送信する時間が遅れることにつながり、大きな処理時間オーバヘッドとなる。そのため、(M−5−1)の設定を行うことで、前記大きな処理時間オーバヘッドの発生を回避する。
ここで、(M−5−1)の設定を行うことはプロセッサ810が外部からデータを受信したことを検出できない状態にするため、通常は問題である。しかしながら、本実施例におけるマスタノードは、同期に関する受信データがワーカノードからの処理未完了通知のみであり、また、この処理未完了通知があった場合、少なくともマスタ判定時刻までには受信しているという2つの特徴を有している。そのため、本実施例にかかるマスタノードにおいては(M−5−1)の設定を行っても問題なく処理未完了通知を受信可能であり、また通信制御部820−aを同期に関する通信を行うための専用インタフェースとし、通信制御部820−bをその他の通信のためのインタフェースとすることで、その他の通信も問題なく行うことができる。
さらに、本実施例におけるワーカノードからマスタノードへの処理未完了通知の送信(通信502)には片方向通信を用いることが好ましい。これは、片方向通信には再送しないという特徴があり、これを用いることでマスタ判定時刻以降に処理未完了通知がマスタノードへ届かないことを保証できるためである。例えば、処理未完了通知が大量に発生し、ネットワーク120上または計算ユニット110上でパケットロスが発生した場合を考える。このとき、ワーカノードが処理未完了通知を再送したとし、それがマスタ判定時刻以降の処理延長通知後にマスタノードに到達したとすると、マスタノードは受信した処理未完了通知が、前の処理完了判定のものであるのか、現在の処理完了判定のものであるのかを判別する必要がある。これはマスタノードの判定処理を複雑化するため好ましくない。さらに本実施例におけるマスタノードは、ワーカノードが送信する全ての処理未完了通知を受ける必要はなく、1つ以上受けられればよい。以上より、本実施例においては片方向通信を用いることが好ましい。なお、片方向通信の例としてはUDP(User Datagram Protocol)やRDMA(Remote Direct Memory Access)などがある。
(M5−2)は使用するメモリ領域の抑制を目的としたものである。ワーカノード数が膨大である場合、全ての処理未完了通知を受けるためには非常に大きなメモリ領域を確保する必要がある。しかし、本実施例における同期方式ではマスタ判定時刻までに処理未完了通知を1つでも受信したかのみ分かればよい。そのため、必要なメモリ領域は処理未完了通知データを1つ格納できる領域のみであり、(M−5−2)の設定を行うことでメモリ領域の使用量を大きく削減できる。
以上により、本実施例にかかる計算ユニット110のマスタノードは処理未完了通知情報904を通信制御部820−aを介して効率よく得ることができる。
次に処理未完了通知情報904を基に全ワーカノードの処理完了判定を行う手段を示す。本実施例にかかる計算ユニット110では、全ワーカノードの処理完了判定を同期制御プログラム862が行い、これはリセット処理と判定処理からなる。
まず、リセット動作として、同期制御プログラム862は通信404、通信504、通信406の直前に処理未完了通知情報904をクリアする操作を行う。これは処理未完了通知情報904の初期化、または前のステップST610で参照した処理未完了通知情報904の削除を目的とし、これにより次に実行するステップST610の全ワーカノードの処理完了判定を正しく行うことができるようになる。
次に、判定処理であるが、これはマスタ判定時刻から開始される。まず、マスタ判定時刻になり、インターバルタイマ830からのタイマ割込を受けたプロセッサ810は同期制御プログラム862を実行する。同期制御プログラム862はタスク処理状況情報864にある処理未完了通知情報904を参照し、処理未完了通知のデータがある場合は一部のワーカノードがタスク処理を完了していないと判定し、処理未完了通知のデータが無い場合は全ワーカノードがタスク処理を完了したと判定する。そして、同期制御プログラム862は上記判定結果に基づき、通信504を行うか、または間隔最適化プログラム866を呼び出し、基本処理時間Tと補正処理時間ΔTを更新した上で通信406を行う。
以上により、本実施例にかかる計算ユニット110のマスタノードは全ワーカノードの処理完了判定を行うことができる。
(M−6)の実現手段
最後に、基本処理時間Tと補正処理時間ΔTの更新手段を示す。基本処理時間Tと補正処理時間ΔTの更新は間隔最適化プログラム866が行う。ステップST610にて全ワーカノードがタスク処理を完了したと判定されると、同期制御プログラム862にて間隔最適化プログラム866が呼び出され、所定のアルゴリズムにて算出された基本処理時間Tと補正処理時間ΔTの値によって割込時間間隔情報876にある基本処理時間1002と補正処理時間1006の値が更新される。
アルゴリズムの一例を次に述べる。本アルゴリズムに使用するパラメータとしては当該タスク処理における処理時間延長回数N_adjと、当該タスク処理までの処理時間延長継続回数N_stg、処理時間無延長継続回数N_stg_nがあり、これを元に基本処理時間T、補正処理時間ΔTを修正する。ここで、処理時間延長回数N_adjは当該タスク処理において何回処理時間延長がされたかを示し、補正処理時間ΔTの修正量に影響する。また処理時間延長継続回数N_stgは直近のタスク処理において何回連続して処理時間延長があったかを、処理時間無延長継続回数N_stg_nは直近のタスク処理において何回連続して処理時間延長がなかったかをそれぞれ示し、基本処理時間Tの修正量に影響する。
図11のテーブル1100に示すように、例えば、同期ポイントで区切られた異なる5つのタスク処理(タスク処理IDの1〜5)があり、これらがタスク処理ID1から5まで順番に処理されており、各タスク処理における処理時間延長回数N_adjがそれぞれ5回、1回、5回、0回、0回であったとき、処理時間延長継続回数N_stgは1回、2回、3回、0回、0回、処理時間無延長継続回数N_stg_nは0回、0回、0回、1回、2回となる。
本アルゴリズムにおいて補正処理時間ΔTを更新する方法の概要を以下に示す。
(M−6−1)処理時間延長回数N_adjによって増減を決定する。
補正処理時間ΔTを適切に設定することで各タスク処理時間のばらつきに速やかに追従することが可能となる。処理時間延長回数N_adjはタスク処理時間のばらつきに対する補正処理時間ΔTの適切さを判定する指標であり、これが大きければ補正処理時間ΔTが小さすぎ、これが“1”であれば補正処理時間ΔTが大きすぎると判断できる。図11では上記判断基準に「処理時間延長回数N_adjが“0”のときは判断不能として変更しない」という条件を加えた場合の補正処理時間ΔTの更新例を示している。
本アルゴリズムにおいて基本処理時間Tを更新する方法の概要を以下に示す。
(M−6−2)処理時間延長継続回数N_stgと処理時間無延長継続回数N_stg_nによって増減を決定する。
処理時間延長継続回数N_stgが規定回数以上であれば基本処理時間Tが過小評価されていると判断してTを増加させ、逆に処理時間無延長継続回数N_stg_nが規定回数以上であれば基本処理時間Tが過大評価されていると判断してTを削減する。これにより、基本処理時間Tを適切な値に収束させることができる。図11にはN_stgが2以上でTを増加、N_stg_nが2以上でTを削減する基本処理時間Tの更新例を示している。
(M−6−3)削減方法には補正処理時間ΔTに依存したものと、依存しないものの2つを用いる。
基本処理時間Tを増加させる場合、補正処理時間ΔTと処理時間延長回数N_adjの積によって目標値の指標を容易に算出可能であるが、基本処理時間Tを削減する場合は目標値の指標算出は困難である。そこで本アルゴリズムでは補正処理時間ΔTがタスク処理における処理時間ばらつきの大きさを反映した値となるように制御されている点に着目し、この補正処理時間ΔTを用いて基本処理時間Tを更新することとする。
しかし、この方法だけでは補正処理時間ΔTが小さいときにタスク処理時間が突然大幅に小さくなると、この変化量に基本処理時間Tが追従するまでに大きな時間が必要となり、その間の同期オーバヘッドが増大する。そこで、このようなケースの対策として、処理時間無延長継続回数N_stg_nが大きい場合に基本処理時間Tを単純に半分にするなどの補正処理時間ΔTに依存しない大幅な削減を行う。これにより、基本処理時間Tを削減するケースにおいても同期オーバヘッドを増やすことなく速やかに追従することが可能となる。
本アルゴリズムのフローチャートを図12に示す。ここでは更新前の基本処理時間、すなわちn−1番目の基本処理時間をT[n−1]、更新後の基本処理時間、すなわちn番目の基本処理時間をT[n]として説明する。また補正処理時間ΔTについても同様である。
まず、基本処理時間Tについての更新のために、ST1200として処理時間延長継続回数N_stg_nに着目し、予め設定した第1の閾値THstg1との比較を行う。N_stg_nがTHstg1より大きい場合にはST1210へ移行し、ΔTに依存しない削減手段(T[n]=T[n−1]/2)を適用する。N_stg_nがTHstg1より小さい場合にはST1202へ移行し、N_stg_nと予め設定した第2の閾値THstg2との比較を行う。N_stg_nがTHstg2より大きい場合にはST1212へ移行し、ΔTに依存した削減手段(T[n]=T[n−1]−ΔT[n−1])を適用する。N_stg_nがTHstg2より小さい場合にはST1204へ移行し、N_stgと予め設定した第3の閾値THstg3との比較を行う。N_stgがTHstg3より大きい場合にはST1214へ移行し、Tを増加させる手段(T[n]=T[n−1]+ΔT[n−1]/2)を適用する。N_stgがTHstg3より小さい場合にはST1216へ移行し、Tを変更しない手段(T[n]=T[n−1])を適用する。以上により基本処理時間Tの更新が完了する。
次に補正処理時間ΔTの更新を行う。まず、ST1220として処理時間延長回数N_adjの値をチェックする。N_adjが“0”であるならばST1230へ移行し、ΔTを変更しない手段(ΔT[n]=ΔT[n−1])を適用する。
N_adjが“0”でないならば、ST1222へ移行し、“1”であるかをチェックする。N_adjが“1”であるならばST1232へ移行し、ΔTを削減する手段(ΔT[n]=ΔT[n−1]/2)を適用する。N_adjが“1”でないならば、ST1234へ移行し、N_adjを基にΔTを増減させる手段(ΔT[n]=ΔT[n−1]×N_adj)/4)を適用する。ここで、ΔT[n−1]×N_adjは直前のタスク処理における総延長時間を示しており、本例では総延長時間の1/4をΔT[n]として設定している。
すなわちタスク処理における処理時間延長回数N_adjが4回程度になるように制御している。処理時間延長回数N_adjが1以下のとき、補正処理時間ΔTが非常に大きくなっている懸念があり、本実施例にかかるバリア同期方式の同期オーバヘッド増大につながる。これに対し、各ワーカノードにおいてタスク処理の処理時間延長1回に必要な処理時間(本実施例にかかるバリア同期方式の同期オーバヘッドとも言える)は通常のバリア同期方式における集計処理1ノード分程度であるため、処理時間延長が数回分程度では数十ナノ秒程度であり無視できるほど小さい。すなわち、本実施例においては処理時間延長回数N_adjが数回程度になるように制御するのが好ましい。
以上に述べた基本処理時間T、および補正処理時間ΔTの更新アルゴリズムにより、様々なプログラムにおいて適切に基本処理時間Tおよび補正所時間ΔTを設定でき、同期オーバヘッドを小さく保つことが可能となる。なお、基本処理時間Tおよび補正処理時間ΔTをユーザーが指定しているケースにおいては、あえて基本処理時間Tと補正処理時間ΔTを更新しないことも可能である。
以上に示した(M−1)〜(M−6)の実現手段により、本実施例にかかる計算ユニット110は図4に示すマスタノードの動作を実現する。
次に、図7を用いて、ワーカノードの動作の実現手段について示す。図7に示したワーカノードの動作を実現するには本実施例の特徴となる次の7つの手段を実現できればよい。ここで、括弧内の符号はワーカノードの動作における関連するステップを示している。
(W−1)マスタ・ワーカの識別手段(ST702)
(W−2)処理開始・同期完了・処理延長の取得手段(ST704、ST720、ST734)
(W−3)ワーカ判定時刻にタイマ割込を得る手段(ST706、ST728、ST736)
(W−4)タスク処理の実行手段(ST708)
(W−5)タスク処理完了の判定手段(ST710)
(W−6)処理未完了通知の送信手段(ST730)
(W−7)タスク処理の再開手段(ST732)
以下、(W−1)〜(W−7)までの実現手段を示す。
(W−1)の実現手段
本実施例においてマスタノードとワーカノードではその動作が異なる。そのため、計算ユニット110がマスタノードであるのか、ワーカノードであるのかを事前に認識する必要がある。本実施例において計算ユニット110がワーカノードであることは分散並列処理制御部880のプログラムにてステップST702を行う際に識別可能であり、このときにマスタ・ワーカ情報882へその識別情報を書き込む。この情報を参照することで計算ユニット110はワーカノードであることが識別可能である。
(W−2)の実現手段
本実施例にかかるワーカノードは処理開始通知、同期完了通知、処理延長通知という3種類のブロードキャスト通信を受信する。前記3種の通知についてはデータとして送られてくる識別コードにより識別可能である。受信については通信制御部820−aからの割込通知を受けたプロセッサ810が、現在の処理を中断し、割込処理プログラム852が割込処理内容を解釈してOS844へ割込処理を委託し、OS850が通信割込処理を行うことで通知データを取得する。その後、同期制御プログラム862が起動され、通知データが処理開始または同期完了の通知であった場合には、一緒に送られている基本処理時間Tの情報を基本処理時間1002へ設定し、さらにタスク処理完了フラグ情報902のフラグクリアを行う。一方、処理延長の通知であった場合には、一緒に送られている補正処理時間ΔTの情報を補正処理時間1004へ設定する。
(W−3)の実現手段
ワーカノードについては基本処理時間Tに基づくワーカ判定時刻(ST706、ST728)と補正処理時間ΔTに基づくワーカ判定時刻(ST736)の2種類のタイマ割込間隔がある。
前者については、処理開始通知または同期完了通知を受けた後に起動されるタイマ設定プログラム872が基本処理時間1002を参照し、タイマ割込間隔1010=Tとして得られる。また、後者については処理延長通知を受けた直後に起動されるタイマ設定プログラム872が補正処理時間876を参照し、タイマ割込間隔1010=ΔTとして得られる。上記より得られたタイマ割込間隔1010をインターバルタイマ830の割込間隔設定レジスタ834に設定することでワーカ判定時刻にタイマ割込を得ることができる。
(W−4)の実現手段
タスク処理は並列処理プログラム842によって実行される。タイマ設定を完了した段階で、ハイパーバイザ850のタイマ割込処理が終了し、並列処理プログラム842が開始される。並列処理プログラム842は次のタイマ割込が発生するまで実行される。並列処理プログラム842は計算処理が同期ポイントに到達した(すなわちタスク処理を完了した)時点で、タスク処理完了フラグ情報902のフラグを立て、待機する。なお、タスク処理完了フラグ情報902のフラグのクリアは、上述した処理開始通知または同期完了通知を受けた直後に起動される同期制御プログラム862によって行われている。
(W−5)の実現手段
タスク処理完了の判定は同期制御プログラム862が行う。ワーカ判定時刻となり、タイマ割込を受けたプロセッサ810は並列処理プログラム842を中断し、同期制御プログラム862を実行する。同期制御プログラム862はタスク処理完了フラグ情報902を参照し、フラグが立っているならばタスク処理完了と判定して割込処理を終了する。一方、フラグが立っていないならばタスク処理未完了と判定し、処理未完了通知をマスタノードへ送信する。
(W−6)の実現手段
処理未完了通知の送信は同期制御プログラム862がOS844の基本機能を使用して通信制御部820−aへ1対1通信による送信を依頼し、これを受けた通信制御部820−aが送信を実行することで行われる。ここでの通信方式はワーカノードからマスタノードへの片方向通信で行うのが望ましい。
(W−7)の実現手段
タスク処理の再開はハイパーバイザ850のタイマ割込処理完了後に行われる。具体的には処理未完了通知を通信制御部820−aへ依頼した後、ハイパーバイザ850のタイマ割込処理は終了し、中断されていた並列処理プログラム842が再開され、タスク処理が再開される。
以上に示した(W−1)〜(W−7)の実現手段により、本実施例にかかる計算ユニット110は図7に示すワーカノードの動作を実現する。
なお、上記に示したバリア同期制御部860、タイマ割込制御部870、通信制御設定部854の動作はマスタノードとワーカノードとで異なるが、これはマスタ・ワーカ情報882を参照することにより、当該計算ユニット110がどちらの役割かが判定可能であるため、適切に動作可能である。
以上に説明した本実施例にかかるハイパーバイザ850を用いた計算ユニット110とネットワーク120を用いることで、本実施例にかかるバリア同期方式を実現できる。これにより、各ワーカノードにおけるタスク処理時間のばらつきが比較的大きなアプリケーションをノード数が極めて大きな並列計算機システム100を用いて実行する場合において、その同期オーバヘッドを大きく削減した高速な並列処理が可能となる。
なお、以上の実施例は説明を簡単にするために並列計算機システム100が均一の計算機ユニット110群から構成されることを前提として行った。しかし、本発明に係るバリア同期方式においては、ネットワーク通信に関する2つの最悪遅延時間(最悪遅延時間T_nw1、最悪遅延時間T_nw2)が予め分かっており、かつ計算ユニットが2つの通信制御部を有していれば実現可能である。すなわち、計算ユニット110と、それとは異なる計算ユニット150、計算ユニット160などを組合せても、全ての計算ユニットが2つの通信制御部を有しているならば、それぞれの計算ユニットにおける最悪遅延時間T_nw1、最悪遅延時間T_nw2を予め算出することによって、本発明に係るバリア同期方式を実現する並列計算機システムを構成可能である。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。上記した実施例は本発明を分かりやすく説明するために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよいし、プロセスがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体におくことができるし、必要に応じてネットワーク等を介してダウンロードすることも可能であることは言うまでもない。
本発明は、並列処理と同期処理を繰り返す計算処理をマスタノードとワーカノードを用いて行う並列計算機システム、そのバリア同期プログラムとして極めて有用である。
100 並列計算機システム
110 計算ユニット
110−M マスタノード
110−W ワーカノード
120 ネットワーク
200、300、400、500 タイムチャート
810 プロセッサ
820−a,820−b 通信制御部
830 インターバルタイマ
832 実時間カウンタ
834 割込間隔設定レジスタ
840 メモリ
842 並列処理プログラム
844 OS
850 Hypervisor
852 割込処理プログラム
854 通信制御設定部
860 バリア同期制御部
862 同期制御プログラム
864 タスク処理状況情報
866 間隔最適化プログラム
870 タイマ割込制御部
872 タイマ設定プログラム
876 割込時間間隔情報
880 分散並列処理制御部
882 マスタ・ワーカ情報
902 タスク処理完了フラグ情報
904 処理未完了通知情報
1002 基本処理時間
1004 補正処理時間
1006 BC最悪遅延時間
1008 MW最悪遅延時間
1010 タイマ割込間隔
1100 タスク処理テーブル

Claims (15)

  1. 同期処理を行うマスタノードあるいはタスク処理を行うワーカノードとなる複数の計算ユニットをネットワークで接続し、並列計算を行う並列計算機システムであって、
    前記マスタノードは、
    全ての前記ワーカノードにおけるタスク処理が基本処理時間以内に完了することを期待したマスタ判定時刻を設定し、
    複数の前記ワーカノードに対して処理開始通知を送信し、
    前記マスタ判定時刻において、前記ワーカノードからの処理未完了通知を受信しているかを確認し、受信している場合には、複数の前記ワーカノードに対して処理延長通知を送信し、受信していない場合には複数の前記ワーカノードに対して同期完了通知を送信し、
    前記ワーカノードは
    前記マスタノードから前記処理開始通知または前記同期完了通知を受信した場合に、前記基本処理時間を用いてワーカ判定時刻を設定し、
    前記ワーカ判定時刻において、タスク処理が完了していない場合は、前記マスタノードへ処理未完了通知を送信し、タスク処理が完了している場合は前記マスタノードからの同期完了通知を待つ、
    ことを特徴とする並列計算機システム。
  2. 請求項1記載の並列計算機システムであって、
    前記マスタノードは、
    少なくとも一つの前記ワーカノードにおけるタスク処理が前記基本処理時間までに完了しなかった場合に、補正処理時間を用いて前記マスタ判定時刻を再設定し、
    前記ワーカノードは
    前記マスタノードから前記処理延長通知を受信した場合に、前記補正処理時間を用いて前記ワーカ判定時刻を再設定し、
    ことを特徴とする並列計算機システム。
  3. 請求項2記載の並列計算機システムであって、
    前記マスタノードは、
    前記同期完了通知または前記処理開始通知を送信する際に、前記基本処理時間の情報も併せて送信し、
    前記処理延長通知を送信する際に、前記補正処理時間の情報も併せて送信する、
    ことを特徴とする並列計算機システム。
  4. 請求項2記載の並列計算機システムであって、
    前記マスタノードは、
    前記基本処理時間、または前記補正処理時間の値を更新することが可能である、
    ことを特徴とする並列計算機システム。
  5. 請求項1記載の並列計算機システムであって、
    前記計算ユニットは、処理部、記憶部、及び前記ネットワークに接続される複数の通信制御部を備え、
    ことを特徴とする並列計算機システム。
  6. 請求項5記載の並列計算機システムであって、
    前記通信制御部の一つは、前記マスタノートと前記ワーカノード間の前記処理開始通知、前記処理未完了通知、前記処理延長通知、及び前記同期完了通知の送受信に用いる、
    ことを特徴とする並列計算機システム。
  7. 請求項5記載の並列計算機システムであって、
    前記計算ユニットの前記記憶部は、当該計算ユニットが前記マスタノード、或いは前記ワーカノードの何れであるかを識別するマスタ・ワーカ情報を記憶する記憶領域を備える、
    ことを特徴とする並列計算機システム。
  8. 請求項7記載の並列計算機システムであって、
    前記マスタノードとして動作する前記計算ユニットから、前記ワーカノードが実行すべきプログラムを受信した前記計算ユニットは、前記記憶領域に前記マスタ・ワーカ情報を記憶する、
    ことを特徴とする並列計算機システム。
  9. 処理部と記憶部を備え、同期処理を行うマスタノードあるいはタスク処理を行うワーカノードとなる複数の計算ユニットをネットワークで接続し、並列計算を行う並列計算機システムの前記処理部で実行されるプログラムであって、
    前記マスタノードとなる前記計算ユニットの前記処理部を、
    全ての前記ワーカノードにおけるタスク処理が基本処理時間以内に完了することを期待したマスタ判定時刻を設定し、
    複数の前記ワーカノードに対して処理開始通知を送信し、
    前記マスタ判定時刻において、前記ワーカノードからの処理未完了通知を受信しているかを確認し、受信している場合には、複数の前記ワーカノードに対して処理延長通知を送信し、受信していない場合には複数の前記ワーカノードに対して同期完了通知を送信するよう動作させ、
    前記ワーカノードとなる前記計算ユニットの前記処理部を、
    前記マスタノードから前記処理開始通知または前記同期完了通知を受信した場合に、前記基本処理時間を用いてワーカ判定時刻を設定し、
    前記ワーカ判定時刻において、タスク処理が完了していない場合は、前記マスタノードへ処理未完了通知を送信し、タスク処理が完了している場合は前記マスタノードからの同期完了通知を待つよう動作させる、
    ことを特徴とするプログラム。
  10. 請求項9記載のプログラムであって、
    前記マスタノードとなる前記計算ユニットの前記処理部を、
    少なくとも一つの前記ワーカノードにおけるタスク処理が前記基本処理時間までに完了しなかった場合に、補正処理時間を用いて前記マスタ判定時刻を再設定するよう動作させ、
    前記ワーカノードとなる前記計算ユニットの前記処理部を
    前記マスタノードから前記処理延長通知を受信した場合に、前記補正処理時間を用いて前記ワーカ判定時刻を再設定するよう動作させる、
    ことを特徴とするプログラム。
  11. 請求項10記載のプログラムであって、
    前記マスタノードとなる前記計算ユニットの前記処理部を、
    前記同期完了通知または前記処理開始通知を送信する際に、前記基本処理時間の情報も併せて送信し、
    前記処理延長通知を送信する際に、前記補正処理時間の情報も併せて送信するよう動作させる、
    ことを特徴とするプログラム。
  12. 請求項10記載のプログラムであって、
    前記マスタノードとなる前記計算ユニットの前記処理部を、
    前記基本処理時間、または前記補正処理時間の値を所定の計算法によって更新するよう動作させる、
    ことを特徴とするプログラム。
  13. 請求項9記載のプログラムであって、
    前記計算ユニットの前記処理部は、
    当該計算ユニットが前記マスタノード、或いは前記ワーカノードの何れであるかを識別するマスタ・ワーカ情報を前記記憶部に記憶するよう動作させる、
    ことを特徴とするプログラム。
  14. 請求項13記載のプログラムであって、
    前記マスタノードとして動作する前記計算ユニットの前記処理部を、
    前記ワーカノードとなる前記計算ユニットに、前記ワーカノードが実行すべきプログラムとその初期値を送信するよう動作させる、
    ことを特徴とするプログラム。
  15. 請求項14記載のプログラムであって、
    前記ワーカノードとなる前記計算ユニットの前記処理部に、
    前記プログラムとその初期値を受信した際、前記記憶部にワーカノードであることを示す前記マスタ・ワーカ情報を記憶するよう動作させる、
    ことを特徴とするプログラム。
JP2011083098A 2011-04-04 2011-04-04 並列計算機システム、およびプログラム Expired - Fee Related JP5568048B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011083098A JP5568048B2 (ja) 2011-04-04 2011-04-04 並列計算機システム、およびプログラム
US13/437,523 US9043804B2 (en) 2011-04-04 2012-04-02 Parallel computer system and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011083098A JP5568048B2 (ja) 2011-04-04 2011-04-04 並列計算機システム、およびプログラム

Publications (2)

Publication Number Publication Date
JP2012221004A JP2012221004A (ja) 2012-11-12
JP5568048B2 true JP5568048B2 (ja) 2014-08-06

Family

ID=46929067

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011083098A Expired - Fee Related JP5568048B2 (ja) 2011-04-04 2011-04-04 並列計算機システム、およびプログラム

Country Status (2)

Country Link
US (1) US9043804B2 (ja)
JP (1) JP5568048B2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130247069A1 (en) * 2012-03-15 2013-09-19 International Business Machines Corporation Creating A Checkpoint Of A Parallel Application Executing In A Parallel Computer That Supports Computer Hardware Accelerated Barrier Operations
US9285865B2 (en) * 2012-06-29 2016-03-15 Oracle International Corporation Dynamic link scaling based on bandwidth utilization
US9373074B2 (en) * 2012-10-09 2016-06-21 Qualcomm Incorporated Method and apparatus for time management and scheduling for sychronous processing on a cluster of processing nodes
JP5994601B2 (ja) * 2012-11-27 2016-09-21 富士通株式会社 並列計算機、並列計算機の制御プログラム及び並列計算機の制御方法
JP2015095132A (ja) * 2013-11-13 2015-05-18 富士通株式会社 情報処理システム、情報処理システムの制御方法及び管理装置の制御プログラム
WO2015083276A1 (ja) * 2013-12-06 2015-06-11 株式会社日立製作所 情報処理システム及び情報処理システムの制御方法
US9824130B1 (en) * 2013-12-13 2017-11-21 Open Text Corporation Optimizing synchronization of enterprise content management systems
JP6536069B2 (ja) * 2015-02-20 2019-07-03 日本電気株式会社 リングバス転送システム、マスタノード、スレーブノード、リングバス転送方法
US10013157B2 (en) * 2015-07-22 2018-07-03 Box, Inc. Composing web-based interactive 3D scenes using high order visual editor commands
CN105260241B (zh) * 2015-10-23 2019-04-16 南京理工大学 集群系统中进程相互协作的方法
JP6587566B2 (ja) * 2016-03-23 2019-10-09 ルネサスエレクトロニクス株式会社 半導体装置
CN106202387B (zh) * 2016-07-08 2019-05-21 苏州超块链信息科技有限公司 一种数据一致性并行维护方法
US10498741B2 (en) 2016-09-19 2019-12-03 Box, Inc. Sharing dynamically changing units of cloud-based content
CN110914806B (zh) * 2017-05-18 2022-06-14 华为技术有限公司 同步分布式多节点代码执行的系统和方法
GB2569275B (en) 2017-10-20 2020-06-03 Graphcore Ltd Time deterministic exchange
GB2569276B (en) * 2017-10-20 2020-10-14 Graphcore Ltd Compiler method
GB201717295D0 (en) 2017-10-20 2017-12-06 Graphcore Ltd Synchronization in a multi-tile processing array
US10963003B2 (en) 2017-10-20 2021-03-30 Graphcore Limited Synchronization in a multi-tile processing array
JP7070124B2 (ja) * 2018-06-12 2022-05-18 オムロン株式会社 製造管理装置、製造管理方法、およびプログラム
JP7159696B2 (ja) * 2018-08-28 2022-10-25 富士通株式会社 情報処理装置,並列計算機システムおよび制御方法
JP7338354B2 (ja) * 2019-09-20 2023-09-05 富士通株式会社 情報処理装置,情報処理システム及び通信管理プログラム
JP7327137B2 (ja) 2019-12-13 2023-08-16 富士通株式会社 演算処理装置、演算処理プログラムおよび演算処理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2535664B2 (ja) * 1990-10-29 1996-09-18 株式会社ピーエフユー 処理条件成立待ち合わせ方式
US5701439A (en) * 1992-03-30 1997-12-23 Boeing North American, Inc. Combined discrete-event and continuous model simulation and analysis tool
US5721921A (en) * 1995-05-25 1998-02-24 Cray Research, Inc. Barrier and eureka synchronization architecture for multiprocessors
JP2001015966A (ja) 1999-07-02 2001-01-19 Hitachi Ltd 半導体装置
JP2001051966A (ja) * 1999-08-16 2001-02-23 Nec Corp ノード装置、並列処理システム、並列処理方法、および、並列処理プログラムを記録した記録媒体
JP4080397B2 (ja) 2003-08-27 2008-04-23 三菱電機株式会社 並列計算機
FR2939922B1 (fr) * 2008-12-16 2011-03-04 Bull Sas Gestionnaire physique de barriere de synchronisation entre processus multiples
US9207977B2 (en) * 2012-02-06 2015-12-08 Honeywell International Inc. Systems and methods for task grouping on multi-processors

Also Published As

Publication number Publication date
US9043804B2 (en) 2015-05-26
US20120254881A1 (en) 2012-10-04
JP2012221004A (ja) 2012-11-12

Similar Documents

Publication Publication Date Title
JP5568048B2 (ja) 並列計算機システム、およびプログラム
US10020980B2 (en) Arbitration processing method after cluster brain split, quorum storage apparatus, and system
AU2014235793B2 (en) Automatic tuning of virtual data center resource utilization policies
EP3129903B1 (en) Systems and methods for fault tolerant communications
US9176786B2 (en) Dynamic and automatic colocation and combining of service providers and service clients in a grid of resources for performing a data backup function
CN110377570B (zh) 节点切换方法、装置、计算机设备及存储介质
US9489230B1 (en) Handling of virtual machine migration while performing clustering operations
CN1561489A (zh) 计算机网络内的数据块存储
US10579579B2 (en) Programming interface operations in a port in communication with a driver for reinitialization of storage controller elements
US10606780B2 (en) Programming interface operations in a driver in communication with a port for reinitialization of storage controller elements
CN104468521A (zh) 在线迁移方法、装置和系统
CN105373563B (zh) 数据库切换方法及装置
US20170111240A1 (en) Service Elastic Method and Apparatus in Cloud Computing
CN104753816A (zh) 一种rdma连接的报文处理方法及相关装置
CN102917068A (zh) 一种自适应大规模集群通信系统及其通信方法
US11442959B2 (en) System and method of time-based snapshot synchronization
CN103746843A (zh) 一种用于处理rpc命令的方法与设备
WO2017071430A1 (zh) 处理报文的方法、网卡及系统、更新信息的方法及主机
CN111404842A (zh) 数据传输方法、装置及计算机存储介质
CN110557399A (zh) 管理数据同步方法、装置、存储设备及可读存储介质
CN113626139B (zh) 一种高可用的虚拟机存储方法及装置
CN104580328A (zh) 虚拟机迁移方法、装置及系统
CN111262654A (zh) 非周期csi请求的响应方法、系统、电子设备和介质
JP6468066B2 (ja) 並列演算装置、並列演算システム、集合通信方法及び集合通信プログラム
JP6365854B2 (ja) サービス処理方法、関連するデバイス、及びシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140523

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140620

R150 Certificate of patent or registration of utility model

Ref document number: 5568048

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees