JP2020067722A - 並列処理装置、並列演算実行プログラムおよびバックアップ方法 - Google Patents

並列処理装置、並列演算実行プログラムおよびバックアップ方法 Download PDF

Info

Publication number
JP2020067722A
JP2020067722A JP2018198773A JP2018198773A JP2020067722A JP 2020067722 A JP2020067722 A JP 2020067722A JP 2018198773 A JP2018198773 A JP 2018198773A JP 2018198773 A JP2018198773 A JP 2018198773A JP 2020067722 A JP2020067722 A JP 2020067722A
Authority
JP
Japan
Prior art keywords
node
nodes
information
job
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018198773A
Other languages
English (en)
Other versions
JP7192388B2 (ja
Inventor
睦浩 田中
Mutsuhiro Tanaka
睦浩 田中
忠雄 天田
Tadao Amada
忠雄 天田
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 JP2018198773A priority Critical patent/JP7192388B2/ja
Priority to US16/657,060 priority patent/US11392463B2/en
Publication of JP2020067722A publication Critical patent/JP2020067722A/ja
Application granted granted Critical
Publication of JP7192388B2 publication Critical patent/JP7192388B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2038Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2048Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2025Failover techniques using centralised failover control functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Abstract

【課題】バックアップにかかる時間を短縮すること。【解決手段】ノードN0〜N3でバリア同期を行う際に、ノードN0は、ノードN0〜N3のうち最初に同期をとるノードN1に自ノードの情報(自ノードのチェックポイントデータ)を送信するとともに、ノードN1からノードN1の情報(ノードN1のチェックポイントデータ)を受信する。ノードN0は、送信した自ノードの情報を自ノードの記憶装置201内の第1の記憶領域に格納するとともに、受信したノードN1の情報を記憶装置201内の第2の記憶領域に格納する。【選択図】図2

Description

本発明は、並列処理装置、並列演算実行プログラムおよびバックアップ方法に関する。
複数のデータ処理装置(ノード)をネットワークで接続したシステム、例えば、HPC(High Performance Computing)分野で使われるシステムで実行されるジョブには、長大なデータを多数ノードで長時間にわたって処理するという特徴がある。一方、ハードウェアエラー等の理由で処理を途中で停止しなければならない事態が発生した場合、それまでの処理結果が保証できなくなるため、定期的に中間結果のバックアップをとるといった運用がなされることがある。
先行技術としては、例えば、通常処理の間、基本メモリ素子に書き込まれたデータの写像が、遠隔チェックポイント・メモリ素子によって捕獲され、新たなチェックポイントが望まれる場合、以前に捕獲されたデータを用いて、新たなチェックポイント状態を確立するものがある。また、論理ノード番号と物理ノード番号との対応関係を示すノード番号変換テーブルを含むジョブ管理情報と、論理ノード番号を含むプロセス管理情報とを取得して、ジョブをリスタートするためのリスタートファイルを作成する技術がある。
特表2000−501216号公報 特開2011−186606号公報
しかしながら、従来技術では、複数のノードでジョブを並列実行する際の各ノードの途中の処理結果のバックアップにかかる時間が増大するという問題がある。
一つの側面では、本発明は、バックアップにかかる時間を短縮することを目的とする。
1つの実施態様では、同一のジョブを実行する複数のノードでバリア同期を行う際に、前記複数のノードのうち自ノードと最初に同期をとる他ノードに自ノードの情報を送信するとともに、前記他ノードから前記他ノードの情報を受信し、送信した前記自ノードの情報を自ノードの記憶装置内の第1の記憶領域に格納するとともに、受信した前記他ノードの情報を前記記憶装置内の第2の記憶領域に格納する、並列処理装置が提供される。
本発明の一側面によれば、バックアップにかかる時間を短縮することができる。
図1は、処理システム100のシステム構成例を示す説明図である。 図2は、実施の形態にかかるバックアップ方法の一実施例を示す説明図である。 図3は、ノードNiのハードウェア構成例を示すブロック図である。 図4は、ノードNiの機能的構成例を示すブロック図である。 図5は、ノードNiの動作例を示す説明図(その1)である。 図6は、ノードNiの動作例を示す説明図(その2)である。 図7は、ノードNiの動作例を示す説明図(その3)である。 図8は、スモールストレージ領域310の他の例を示すブロック図である。 図9は、ログインサーバ103のジョブ実行依頼処理手順の一例を示すフローチャートである。 図10は、ストレージサーバ102のロード処理手順の一例を示すフローチャートである。 図11は、管理サーバ101の実行制御処理手順の一例を示すフローチャートである。 図12は、ノードNiの並列演算実行処理手順の一例を示すフローチャート(その1)である。 図13は、ノードNiの並列演算実行処理手順の一例を示すフローチャート(その2)である。 図14は、ノードNiの並列演算実行処理手順の一例を示すフローチャート(その3)である。 図15は、ターゲット問題の具体例を示す説明図である。 図16Aは、プログラムの一例を示す説明図(その1)である。 図16Bは、プログラムの一例を示す説明図(その2)である。 図16Cは、プログラムの一例を示す説明図(その3)である。 図16Dは、プログラムの一例を示す説明図(その4)である。 図17Aは、メモリマップの一例を示す説明図(その1)である。 図17Bは、メモリマップの一例を示す説明図(その2)である。
以下に図面を参照して、本発明にかかる並列処理装置、並列演算実行プログラムおよびバックアップ方法の実施の形態を詳細に説明する。
(実施の形態)
まず、実施の形態にかかる処理システム100のシステム構成について説明する。
図1は、処理システム100のシステム構成例を示す説明図である。図1において、処理システム100は、ノードN0〜Nn(n:1以上の自然数)と、予備ノードRN(図1では、2台)と、管理サーバ101と、ストレージサーバ102と、ログインサーバ103と、を含む。処理システム100において、ノードN0〜Nn、予備ノードRN、管理サーバ101、ストレージサーバ102およびログインサーバ103は、ネットワーク110を介して相互に通信可能に接続される。ネットワーク110は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
ノードN0〜Nnは、計算処理を実行するコンピュータであり、並列処理装置の一例である。ノードN0〜Nnは、例えば、インタコネクトを通じて相互に通信しながら計算処理を実行する。各ノードN0〜Nnは、例えば、サーバである。ただし、各ノードN0〜Nnは、物理サーバ上で起動される仮想マシンによって実現されることにしてもよい。
以下の説明では、ノードN0〜Nnのうちの任意のノードを「ノードNi」と表記する場合がある(i=0,1,…,n)。
予備ノードRNは、ハードウェア故障等の理由でノードNiの計算処理が停止したときに、そのノードNiの計算処理を引き継いで実行するノードである。管理サーバ101は、ジョブの実行を制御したり、ジョブの実行中にエラーが発生したときの対処を実施したりするコンピュータである。
ストレージサーバ102は、外部ストレージ120を有し、ジョブの実行に用いるデータやプログラムを格納するコンピュータである。例えば、ストレージサーバ102は、ジョブの実行を開始する際に、各ノードNiにデータおよびプログラムをロードし、ジョブの実行が終了したら、ジョブの実行結果をセーブする。
ログインサーバ103は、処理システム100のユーザがログインして使用するコンピュータである。ログインサーバ103では、プログラムの作成やコンパイルが実施される。コンパイル済のプログラムや初期データは、例えば、インタコネクト経由でログインサーバ103からストレージサーバ102に格納される。
なお、図1の例では、管理サーバ101、ストレージサーバ102およびログインサーバ103を、それぞれ別々のコンピュータとしたが、これに限らない。例えば、管理サーバ101、ストレージサーバ102およびログインサーバ103は、1台のサーバやノードNiで実現することにしてもよい。また、各ノードNiと各種サーバ101〜103との通信には、各ノードNiの計算処理に影響が出ないように、ノード間のネットワークとは異なる別ネットワークを用いて行うことにしてもよい。
ここで、複数のノードでジョブを実行中に、ハードウェアエラー等の理由で処理を途中で停止しなければならない事態が発生した場合、処理結果が保証できなくなる。このような場合に、ハードウェアエラーが発生したノードを除外して最初からジョブの実行をやり直すとなると、エラー発生までに使用していた資源(ノード数×実行時間)が全て無駄になってしまう。
長大なデータを多数ノードで長時間にわたって処理するようなジョブであるほど、処理を途中で停止した際の損失は大きいものとなる。従来の汎用機では、定期的に外部ストレージへ各ノードの中間結果を格納するようにし、ハードウェアエラーが発生した際に、中間状態からジョブを再開可能にして処理の手戻りを少なくする試みがなされている(いわゆる、チェックポイントリスタート機能)。
しかし、HPC分野へチェックポイントリスタート機能を適用しようとすると、多数ノード(例えば、数万台のノード)から1ヶ所ないし、ストライピングを使用した場合でも数カ所のストレージへ中間結果を書き出すことになる。このため、ストレージへのアクセスが集中して、ジョブの処理時間よりもストレージへの中間結果の書き出し(バックアップ)に時間がかかり、システム性能の低下を招くおそれがある。
そこで、本実施の形態では、バリア同期ごとに、ペアとなっているノード間で相互にバックアップをとることで、定期的なバックアップの際に生じるストレージへのアクセス集中を防いで、バックアップにかかる時間を短縮するバックアップ方法について説明する。ここで、図2を用いて、処理システム100の処理例について説明する。
図2は、実施の形態にかかるバックアップ方法の一実施例を示す説明図である。図2において、ノードN0〜N3と、予備ノードRNとが示されている。ここでは、同一のジョブをノードN0〜N3で並列実行する場合を想定する(n=3)。各ノードNiは、バリア同期機構により必要に応じて同期処理をしながら計算処理を進めていく。なお、図2中、「○印」は、各ノードN0〜N3の状態を表している。
バリア同期とは、並列実行されている処理(スレッド、プロセス)の実行の進行具合を合わせるための同期方法の一つである。バリア同期では、同期をとるバリアポイントが設定される。例えば、バリア同期を行うプロセスは、バリアポイントに到達した場合、処理を一時的に停止し、並列処理されている全てのプロセスがバリアポイントに到達した時点で、停止した処理を再開する。これにより、並列処理されている複数のプロセス間で、並列処理の同期をとることができる。
本実施の形態の一実施例として、バリア同期はバタフライバリアで実装するものとする。バタフライバリアとは、同期処理を複数のステージに分割し、ステージごとに各プロセスが他のプロセスと信号の通信を行って同期をとる方法である。なお、バタフライバリアによるバリア同期については、例えば、特開2010−122848号公報を参照することができる。
ノードN0〜N3でバリア同期を行う場合、まず、ノードN0,N1間で同期をとり、ノードN2,N3間で同期をとる(バリアステージ1)。すなわち、ノードN0,N1は、最初に同期をとるペアである。同様に、ノードN2,N3は、最初に同期をとるペアである。
この際、ノードN0は、ノードN1に自ノードの情報を送信するとともに、ノードN1からノードN1の情報を受信する。各ノードの情報は、例えば、各ノードの中間結果を含むチェックポイントデータである。そして、ノードN0は、送信した自ノードの情報を自ノードの記憶装置201内の第1の記憶領域に格納するとともに、受信したノードN1の情報を記憶装置201内の第2の記憶領域に格納する。
また、ノードN1は、ノードN0に自ノードの情報を送信するとともに、ノードN0からノードN0の情報を受信する。そして、ノードN1は、送信した自ノードの情報を自ノードの記憶装置202内の第1の記憶領域に格納するとともに、受信したノードN0の情報を記憶装置202内の第2の記憶領域に格納する。
同様に、ノードN2は、ノードN3に自ノードの情報を送信するとともに、ノードN3からノードN3の情報を受信する。そして、ノードN2は、送信した自ノードの情報を自ノードの記憶装置203内の第1の記憶領域に格納するとともに、受信したノードN3の情報を記憶装置203内の第2の記憶領域に格納する。
また、ノードN3は、ノードN2に自ノードの情報を送信するとともに、ノードN2からノードN2の情報を受信する。そして、ノードN3は、送信した自ノードの情報を自ノードの記憶装置204内の第1の記憶領域に格納するとともに、受信したノードN2の情報を記憶装置204内の第2の記憶領域に格納する。
つぎに、ノードN0,N2間で同期をとり、ノードN1,N3間で同期をとる(バリアステージ2)。これにより、ノードN0〜N3間で同期をとることができる。なお、バリアステージ1以外のタイミング(例えば、バリアステージ2)では、ノード間で各ノードのチェックポイントデータのやり取りは行わない。
このように、各ノードN0〜N3によれば、バリア同期を行う際に、バリアステージ1で同期対象となる2台のノード間で、チェックポイントデータを互いに保持しあうことができる。これにより、ジョブを実行中の定期的なバックアップの際に生じるストレージへのアクセス集中を防いで、各ノードN0〜N3のチェックポイントデータ(中間結果)のバックアップにかかる時間を短縮することができる。
また、ハードウェアエラー等が発生した場合には、各ノード間で相互保持したチェックポイントデータを用いて、ジョブを途中から再開することができる。例えば、ノードN1にハードウェアエラーが発生した場合、ノードN0から予備ノードRNに、ノードN0の記憶装置201に格納されたノードN1の情報(チェックポイントデータ)を移行することで、ジョブを中間状態から再開することが可能となる。
すなわち、処理システム100によれば、ハードウェア故障等の理由により途中でプログラムが停止するような事態が発生した場合も、プログラムを最初から再実行するのではなく、途中の状態をセーブ(チェックポイント)する機能を実装し、かつ、予め準備された予備ノードにハードウェア故障が発生したノードの処理を引き継がせることによって、プログラムを途中から再実行(リスタート)させることができる。
(ノードNiのハードウェア構成例)
図3は、ノードNiのハードウェア構成例を示すブロック図である。図3において、ノードNiは、CPU(Central Processing Unit)301と、メインメモリ302と、ディスク303と、を有する。CPU301は、メモリインタフェース304と、IO(Input Output)インタフェース305と、バリア装置306と、インターノードインタフェース307と、を含む。また、各構成部はバス300によってそれぞれ接続される。
ここで、CPU301は、ノードNiの全体の制御を司る。CPU301は、複数のコアを有していてもよい。メインメモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。CPU301は、メモリインタフェース304を介して、メインメモリ302にアクセスする。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メインメモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
ディスク303は、各種情報を記憶する記憶装置である。例えば、ディスク303は、HDD(Hard Disk Drive)やSSD(Solid State Drive)などである。CPU301は、IOインタフェース305を介して、ディスク303にアクセスする。
ディスク303には、スモールストレージ領域310が設けられる。スモールストレージ領域310は、自ノードメモリ領域311と、他ノードメモリ領域312とを含む。スモールストレージ領域310の記憶容量は、例えば、最大でメインメモリ302の記憶容量の2倍となる。自ノードメモリ領域311は、図2で説明した第1の記憶領域に相当する。また、他ノードメモリ領域312は、図2で説明した第2の記憶領域に相当する。ディスク303は、図2に示した記憶装置201〜204の一例である。
バリア装置306は、バリア同期を行う。例えば、バリア装置306は、自ノードの状態をインタコネクト経由で他ノードに送り、他ノードから送られてきた状態を受信して、全体として計算処理がどこまで進んでいるかを検出可能である。
インターノードインタフェース307は、通信回線を通じてネットワーク110に接続され、ネットワーク110を介して他のコンピュータに接続される。そして、インターノードインタフェース307は、ネットワーク110と自装置内部とのインタフェースを司り、他のコンピュータからのデータの入出力を制御する。
なお、バリア装置306は、CPU301とは別体に設けられることにしてもよく、また、ソフトウェアによって実現されることにしてもよい。また、スモールストレージ領域310は、例えば、メインメモリ302やメモリカード(不図示)などに設けられることにしてもよい。また、図1に示した予備ノードRN、管理サーバ101、ストレージサーバ102およびログインサーバ103についても、ノードNiと同様のハードウェア構成により実現することができる。ただし、管理サーバ101、ストレージサーバ102およびログインサーバ103は、バリア装置306を有していなくてもよい。
(ノードNiの機能的構成例)
図4は、ノードNiの機能的構成例を示すブロック図である。図4において、ノードNiは、通信制御部401と、格納部402と、検出部403と、再開制御部404と、を含む。通信制御部401〜再開制御部404は制御部となる機能であり、具体的には、例えば、図3に示したメインメモリ302、ディスク303などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。各機能部の処理結果は、例えば、メインメモリ302、ディスク303などの記憶装置に記憶される。
通信制御部401は、同一のジョブを実行するノードN0〜Nnでバリア同期を行う際に、ノードN0〜Nnのうち自ノードと最初に同期をとる他ノードに自ノードの情報を送信するとともに、他ノードから他ノードの情報を受信する。ここで、各ノードNiの情報は、各ノードNiの中間結果、すなわち、バリア同期を行うまでに各ノードNiで実行された計算処理の結果を含むチェックポイントデータである。
他ノードは、ノードN0〜Nnのうち自ノードと最初に同期をとるグループ内の少なくともいずれかのノードNj(j≠i、j=0,1,…,n)である。最初に同期をとるグループとは、バリア同期の第1ステージ(バリアステージ1)で同期をとるグループである。最初に同期をとるグループ内のノード数は、2以上であればよく、偶数であっても奇数であってもよい。
なお、ノードN0〜Nnのうち自ノードと最初に同期をとるグループ内のノード数が「2」の場合の各ノードNiの動作例については、図5を用いて後述する。また、ノードN0〜Nnのうち自ノードと最初に同期をとるグループ内のノード数が「3」の場合の各ノードNiの動作例については、図7を用いて後述する。
以下の説明では、ノードN0〜Nnのうち自ノードと最初に同期をとる他ノードを「自ノードとペアとなる他ノード」と表記する場合がある。なお、自ノードと最初に同期をとる他ノードの情報は、例えば、予めノードIDテーブル(不図示)に記憶されている。ノードIDテーブルは、例えば、メインメモリ302やディスク303などの記憶装置により実現される。
具体的には、例えば、通信制御部401は、ジョブを実行中にバリア同期ポイントに到達すると、自ノードとペアとなる他ノードと同期をとる。より詳細に説明すると、例えば、通信制御部401は、図3に示したバリア装置306を用いて、各ノードの状態をノード間で通知し合うことで、自ノードとペアとなる他ノードと同期をとる。
そして、通信制御部401は、自ノードとペアとなる他ノードとの同期が完了すると、メインメモリ302からデータを読み出して、読み出したデータをチェックポイントデータとして他ノードに送信する。また、通信制御部401は、自ノードとペアとなる他ノードとの同期が完了すると、他ノードからチェックポイントデータを受信する。
他ノードのチェックポイントデータは、他ノードのメインメモリ302から読み出されたデータである。読み出し対象となるデータは、例えば、メインメモリ302内の全データであってもよく、また、メインメモリ302内のシステム領域を除くデータであってもよい。
なお、各ノードNiにおいてバリア同期ポイントに到達すると、各ノードNiにおけるジョブの処理は停止される。そして、ノードN0〜Nnでバリア同期が成立すると、各ノードNiにおいて停止されたジョブの処理が再開される。
格納部402は、通信制御部401によって送信された自ノードの情報を、自ノードの記憶装置内の第1の記憶領域に格納する。また、格納部402は、通信制御部401によって受信された他ノードの情報を、自ノードの記憶装置内の第2の記憶領域に格納する。
具体的には、例えば、格納部402は、送信された自ノードのチェックポイントデータ(自ノードのメインメモリ302内のデータ)を、図3に示したディスク303内のスモールストレージ領域310の自ノードメモリ領域311に格納する。また、格納部402は、受信された他ノードのチェックポイントデータ(他ノードのメインメモリ302内のデータ)を、ディスク303内のスモールストレージ領域310の他ノードメモリ領域312に格納する。
これにより、同一ジョブを実行中のノードN0〜Nnでバリア同期を行う際に、バリア同期の第1ステージ(バリアステージ1)で同期をとるノード間で、メインメモリ302内のデータ(チェックポイントデータ)のバックアップをとりあうことができる。
なお、ノードN0〜Nnで実行されるジョブは、例えば、分割後の処理の実行時間が、各ノードNiのチェックポイントデータ(メインメモリ302のデータ)を他ノードに送るのに要する時間より長い時間となるように分割されて実行される。
検出部403は、ノードN0〜Nnのうち自ノードと最初に同期をとる他ノードで障害が発生したことを検出する。具体的には、例えば、検出部403は、管理サーバ101からON ERROR解除トラップを受信したことに応じて、ノードN0〜Nnのうちのいずれかのノードで障害が発生したと判断する。
ON ERROR解除トラップは、障害(回復不能なエラー)が発生したノードの存在を通知する情報である。ON ERROR解除トラップは、障害が発生したノードの情報(例えば、ノード番号)と、障害が発生したノードの計算処理を引き継ぐ予備ノードRNの情報(例えば、物理ノード情報)とを含む。
つぎに、検出部403は、ON ERROR解除トラップから特定される障害が発生したノードが、自ノードとペアとなる他ノードであるか否かを判断する。そして、検出部403は、障害が発生したノードが、自ノードとペアとなる他ノードであれば、当該他ノードで障害が発生したことを検出する。
また、通信制御部401は、ノードN0〜Nnのうち自ノードと最初に同期をとる他ノードで障害が発生したことが検出された場合、他ノードの処理を引き継ぐ予備ノードRNに、自ノードの記憶装置内の第2の記憶領域に格納された他ノードの情報を送信する。
具体的には、例えば、通信制御部401は、自ノードとペアとなる他ノードで障害が発生した場合、ディスク303内のスモールストレージ領域310の他ノードメモリ領域312から他ノードのチェックポイントデータを読み出す。そして、通信制御部401は、ON ERROR解除トラップから特定される予備ノードRNに、読み出した他ノードのチェックポイントデータを送信する。この際、通信制御部401は、予備ノードRNの情報(例えば、物理ノード情報)を用いて、ノードIDテーブル(不図示)を更新する。
また、予備ノードRNには、管理サーバ101の制御に従って、ストレージサーバ102からジョブのプログラムがロードされる。この結果、予備ノードRNが、障害が発生した他ノードの処理を引き継ぎ可能な状態となり、ジョブを並列実行するノード群に組み込まれる。
なお、通信制御部401は、自ノードとペアとなる他ノードで障害が発生した場合に、スモールストレージ領域310の自ノードメモリ領域311から自ノードのチェックポイントデータをあわせて読み出すことにしてもよい。そして、通信制御部401は、読み出した自ノードのチェックポイントデータを、他ノードのチェックポイントデータとともに予備ノードRNに送信することにしてもよい。これにより、予備ノードRNに、ノードNiのチェックポイントデータを保持させることができる。
再開制御部404は、自ノードの記憶装置内の第1の記憶領域に格納された自ノードの情報に基づいて、ジョブの実行を再開する。具体的には、例えば、再開制御部404は、障害が発生した他ノードの処理を引き継ぐ予備ノードRNを認識する。すなわち、障害が発生した他ノードを予備ノードRNに切り替えて、同一のジョブを並列実行するノード群が、ノードN0〜Nnのうち障害が発生したノードを除く残余のノードと、予備ノードRNとに更新される。
つぎに、再開制御部404は、ディスク303内のスモールストレージ領域310の自ノードメモリ領域311に格納された自ノードのチェックポイントデータに基づいて、ジョブの再開ポイントを復元する。そして、再開制御部404は、全ノードでの再開ポイントの復元が完了したら、エラーが発生した処理(ルーチン)の再実行を行って、ジョブの実行を再開する。
上述した説明では、通信制御部401は、バリア装置306を用いて、各ノードの状態をノード間で通知し合うことで、自ノードとペアとなる他ノードと同期をとることにしたが、これに限らない。例えば、通信制御部401は、他ノードと同期をとるタイミングで他ノードに自ノードの情報を送信することにしてもよい。そして、通信制御部401は、自ノードの情報を送信し、かつ、他ノードから他ノードの情報を受信したことに応じて、他ノードとの同期が完了したと判断することにしてもよい。
具体的には、例えば、通信制御部401は、ジョブを実行中にバリア同期ポイントに到達すると、メインメモリ302からデータを読み出して、読み出したデータをチェックポイントデータとして他ノードに送信する。そして、通信制御部401は、自ノードのチェックポイントデータを送信し、かつ、他ノードからチェックポイントデータを受信したことに応じて、他ノードとの同期が完了したと判断する。
これにより、各ノードの状態をノード間で通知しあうことなく、自ノードとペアとなる他ノードと同期をとることができる。すなわち、バリア同期の第1ステージ(バリアステージ1)の完了を、ノード間でのチェックポイントデータの相互保持の完了をもって判断可能となり、ノード間の同期確認にかかる通信を削減することができる。なお、通信制御部401は、自ノードのチェックポイントデータが自ノードメモリ領域311に格納され、他ノードのチェックポイントデータが他ノードメモリ領域312に格納されるのを待って、他ノードとの同期が完了したと判断してもよい。
また、通信制御部401は、バリア同期ごとに、自ノードと最初に同期をとる他ノードに自ノードの情報を送信するとともに、他ノードから他ノードの情報を受信することにしてもよい。これにより、ノードN0〜Nnでジョブを実行中のバリア同期ごとに、その都度、バリア同期の第1ステージで同期をとるノード間で、チェックポイントデータを相互保持することができる。
また、通信制御部401は、ジョブの実行を開始してから所定時間Tが経過した後のバリア同期ごとに、他ノードに自ノードの情報を送信するとともに、他ノードから他ノードの情報を受信することにしてもよい。すなわち、ジョブの実行を開始してから所定時間Tが経過するまでは、バリア同期を行うタイミングとなっても、ノード間でのチェックポイントデータの相互保持は実施しない。所定時間Tは、任意に設定可能である。
これにより、ジョブの実行を開始してしばらくはバックアップをとるメリットが少ないことを考慮して、ノード間でのチェックポイントデータの相互保持を実施するタイミングを遅らせることができる。なお、ジョブの実行を開始してから所定時間Tが経過した段階から、ノード間でのチェックポイントデータの相互保持を実施する場合の動作例については、図6を用いて後述する。
(ノードNiの動作例)
つぎに、バリア同期を行うにあたり、最初に同期をとるグループ内のノード間でチェックポイントデータを相互保持する際のノードNiの動作例について説明する。ここでは、最初に同期をとるグループ内のノードを「ノードN0,N1」とし、2ノード間でチェックポイントデータを相互保持する場合を例に挙げて説明する。
図5は、ノードNiの動作例を示す説明図(その1)である。図5において、バリア同期を行う際に、最初に同期をとるノードN0,N1が示されている。ただし、図5の例では、各ノードN0,N1のバリア装置306の図示を省略している。以下、ノードN0,N1間でチェックポイントデータを相互保持する場合の各ノードN0,N1の動作例について説明する。
ノードN0は、ジョブを実行中にバリア同期ポイントに到達すると、自ノードとペアとなるノードN1と同期をとる。ノードN0は、ノードN1との同期が完了すると、メインメモリ302からデータを読み出して、読み出したデータを自ノードのチェックポイントデータとして、ノードN1に送信する(図5中、矢印501)。
同様に、ノードN1は、ジョブを実行中にバリア同期ポイントに到達すると、自ノードとペアとなるノードN0と同期をとる。ノードN1は、ノードN0との同期が完了すると、メインメモリ302からデータを読み出して、読み出したデータを自ノードのチェックポイントデータとして、ノードN0に送信する(図5中、矢印502)。
つぎに、ノードN0は、送信した自ノードのチェックポイントデータ(ノードN0のメインメモリ302内のデータ)を、ディスク303内の自ノードメモリ領域311に格納する(図5中、矢印503)。また、ノードN0は、受信したノードN1のチェックポイントデータ(ノードN1のメインメモリ302内のデータ)を、ディスク303内の他ノードメモリ領域312に格納する(図5中、矢印502)。
同様に、ノードN1は、送信した自ノードのチェックポイントデータ(ノードN1のメインメモリ302内のデータ)を、ディスク303内の自ノードメモリ領域311に格納する(図5中、矢印504)。また、ノードN1は、受信したノードN0のチェックポイントデータ(ノードN0のメインメモリ302内のデータ)を、ディスク303内の他ノードメモリ領域312に格納する(図5中、矢印501)。
ここで、ノードN0,N1間でのチェックポイントデータの相互保持にかかる時間について説明する。ここでは、各ノードN0,N1のメインメモリ302の記憶容量を「64[GB]」とし、CPU/ディスク間の帯域を「100[MB/sec]」とする。また、メインメモリ帯域およびネットワーク帯域は、CPU/ディスク間の帯域より大きいものとする。
この場合、ノードN0,N1間でのチェックポイントデータの相互保持にかかる時間は、「約22分(=64[GB]×2/100[MB/sec]/60=21.33[min])+レイテンシ(α)」となる。したがって、ノードN0,N1間でチェックポイントデータを送り合う間隔は、(22+α)分以上とすることが望ましい。
上述した例は、メインメモリ302内の全データを送り合うことを前提としたが、各ノードN0,N1の処理に必要なデータ(配列)だけ抽出して、スモールストレージ領域310に格納することにしてもよい。これにより、ノードN0,N1間でのチェックポイントデータの相互保持にかかる時間を短縮することができる。
(所定時間Tが経過した段階からチェックポイントデータの相互保持を実施する場合)
つぎに、ジョブの実行を開始してから所定時間Tが経過した段階から、ノード間でのチェックポイントデータの相互保持を実施する場合の動作例について説明する。
図6は、ノードNiの動作例を示す説明図(その2)である。図6の(6−1)および(6−2)において、ノードNiでのデータ処理およびセーブ処理の実行にかかる時間が示されている。データ処理は、ノードNiで実行されるジョブの計算処理に相当する。セーブ処理は、ノードNiで実行されるノード間でチェックポイントデータを相互保持する処理に相当する。
(6−1)の例は、ジョブを実行中のバリア同期ごとに、ノード間でチェックポイントデータを相互保持する場合の動作例を示している。具体的には、各データ処理(i),(ii),(iii)の実行が完了する度に、各セーブ処理(a),(b),(c)がそれぞれ実行されている。
(6−2)の例は、ジョブの実行を開始してから所定時間Tが経過した後のバリア同期ごとに、ノード間でチェックポイントデータを相互保持する場合の動作例を示している。ここでは、データ処理(ii)を実行中に所定時間Tが経過している。この場合、実行が完了したタイミングではセーブ処理は実行されず、データ処理(ii),(iii)の実行が完了する度に、各セーブ処理(a),(b)がそれぞれ実行される。
例えば、全体の処理に24時間かかるとし、上記(6−1)のように、1時間ごとにセーブ処理を実行し(すなわち、1時間ごとにバリア同期が発生)、セーブ処理に10分かかるとする。この場合、ジョブが完了するまでに要する時間は、「27.8時間=24×60+23×10=1670分」となる。
また、所定時間Tを「10時間」とし、上記(6−2)のように、ジョブの実行を開始してから10時間が経過した後のバリア同期ごとに、ノード間でチェックポイントデータを相互保持するとする。この場合、ジョブが完了するまでに要する時間は、「25.8時間≒24×60+11×10=1550分」となる。
このように、ジョブの実行を開始してから所定時間Tが経過するまでは、バリア同期を行うタイミングとなっても、ノード間でのチェックポイントデータの相互保持を実施しないことで、ジョブの実行が完了するまでの時間を短縮させることができる。
(最初に同期をとるグループ内のノード数が「3」の場合の動作例)
つぎに、ノードN0〜Nnのうち最初に同期をとるグループ内のノード数が「3」の場合のノードNiの動作例について説明する。
図7は、ノードNiの動作例を示す説明図(その3)である。図7において、ノードN0〜N8が示されている。ここでは、同一のジョブをノードN0〜N8で並列実行する場合を想定する(n=8)。また、最初に同期をとるグループを、「ノードN0,N1,N2」、「ノードN3,N4,N5」および「ノードN6,N7,N8」とする。なお、図7中、「○印」は、各ノードN0〜N8の状態を表している。
ノードN0〜N8でバリア同期を行う場合、まず、ノードN0,N1,N2間で同期をとり、ノードN3,N4,N5間で同期をとり、ノードN6,N7,N8間で同期をとる(バリアステージ1)。ここで、ノードN0,N1,N2のグループを例に挙げて、ノード間でチェックポイントデータを相互保持するための動作例について説明する。
ノードN0は、ノードN0,N1,N2間で同期をとるにあたり、例えば、ノードN1に自ノードのチェックポイントデータを送信するとともに、ノードN2からノードN2のチェックポイントデータを受信する。そして、ノードN0は、送信した自ノードのチェックポイントデータを自ノードメモリ領域311に格納するとともに、受信したノードN2のチェックポイントデータを他ノードメモリ領域312に格納する。
また、ノードN1は、ノードN0,N1,N2間で同期をとるにあたり、例えば、ノードN2に自ノードのチェックポイントデータを送信するとともに、ノードN0からノードN0のチェックポイントデータを受信する。そして、ノードN1は、送信した自ノードのチェックポイントデータを自ノードメモリ領域311に格納するとともに、受信したノードN0のチェックポイントデータを他ノードメモリ領域312に格納する。
また、ノードN2は、ノードN0,N1,N2間で同期をとるにあたり、例えば、ノードN0に自ノードのチェックポイントデータを送信するとともに、ノードN1からノードN1のチェックポイントデータを受信する。そして、ノードN2は、送信した自ノードのチェックポイントデータを自ノードメモリ領域311に格納するとともに、受信したノードN1のチェックポイントデータを他ノードメモリ領域312に格納する。
このように、最初に同期をとるグループ内のノード数が「3」の場合であっても、グループ内のノード間でチェックポイントデータを相互保持することができる。すなわち、バリア同期の際に最初に同期をとるグループ内のノード数が2以外の構成に拡張でき、ひいては、全ノード数が偶数以外に拡張可能である。なお、グループ内のノード数が「2」の場合に比べて、3ノードで同期がとれるまでの時間は増える可能性はある。
(スモールストレージ領域310の他の例)
つぎに、ノードNiが有するディスク303内のスモールストレージ領域310の他の例について説明する。ここでは、ノードN0〜Nnのうち最初に同期をとるグループ内のノード数が「3」の場合を例に挙げて説明する。
図8は、スモールストレージ領域310の他の例を示すブロック図である。図8において、スモールストレージ領域310は、自ノードメモリ領域311と、他ノードメモリ領域312−1と、他ノードメモリ領域312−2とを含む。すなわち、スモールストレージ領域310に、グループ内の他ノードのチェックポイントデータを格納するためのメモリ領域をそれぞれ設ける。
この場合、ノードNiの通信制御部401は、バリア同期を行う際に、グループ内の他ノードそれぞれに自ノードの情報を送信するとともに、他ノードそれぞれから当該他ノードの情報を受信する。そして、格納部402は、送信された自ノードの情報を、自ノードの記憶装置内の第1の記憶領域に格納する。また、格納部402は、受信された他ノードそれぞれの情報を、自ノードの記憶装置内の他ノードそれぞれに対応する第2の記憶領域に格納する。
ここで、ノードN0,N1,N2のグループ内のノードN0を例に挙げて、具体的な処理内容について説明する。まず、ノードN0は、例えば、バリア同期ポイントに到達すると、メインメモリ302からデータを読み出して、読み出したデータをチェックポイントデータとして、ノードN1,N2に送信する。また、ノードN0は、各ノードN1,N2がバリア同期ポイントに到達すると、各ノードN1,N2から各ノードN1,N2のチェックポイントデータを受信する。
つぎに、ノードN0は、送信した自ノードのチェックポイントデータ(自ノードのメインメモリ302内のデータ)を、スモールストレージ領域310の自ノードメモリ領域311に格納する。また、ノードN0は、受信したノードN1のチェックポイントデータ(ノードN1のメインメモリ302内のデータ)を、スモールストレージ領域310の他ノードメモリ領域312−1に格納する。また、ノードN0は、受信したノードN2のチェックポイントデータ(ノードN2のメインメモリ302内のデータ)を、スモールストレージ領域310の他ノードメモリ領域312−2に格納する。
これにより、ノードN0は、最初に同期をとるグループ内の他ノード(ノードN1,N2)それぞれのチェックポイントデータを保持することができる。このため、例えば、グループ内のノードN1,N2が同時にハードウェア故障となっても、2台の予備ノードRNを準備して、ノードN0のスモールストレージ領域310内の情報からジョブを再実行することが可能となる。
また、ノードN0は、グループ内のノード間でのチェックポイントデータの相互保持の完了をもって、バリア同期の第1ステージ(バリアステージ1)の完了を判断することにしてもよい。これにより、バリア同期の第1ステージ(バリアステージ1)を、1回のデータ転送で完了することができる(図7の例では、2回転送)。
(処理システム100の各種処理手順例)
つぎに、処理システム100の各種処理手順例について説明する。まず、ログインサーバ103のジョブ実行依頼処理手順について説明する。
図9は、ログインサーバ103のジョブ実行依頼処理手順の一例を示すフローチャートである。図9のフローチャートにおいて、まず、ログインサーバ103は、ユーザの操作入力により、ジョブのプログラムを作成する(ステップS901)。そして、ログインサーバ103は、作成したプログラムをコンパイルする(ステップS902)。
つぎに、ログインサーバ103は、コンパイルされたプログラムを、ストレージサーバ102の外部ストレージ120に格納する(ステップS903)。そして、ログインサーバ103は、管理サーバ101にジョブの実行依頼を送信して(ステップS904)、本フローチャートによる一連の処理を終了する。これにより、管理サーバ101に対して、ジョブの実行依頼を行うことができる。
つぎに、ストレージサーバ102のロード処理手順について説明する。
図10は、ストレージサーバ102のロード処理手順の一例を示すフローチャートである。図10のフローチャートにおいて、まず、ストレージサーバ102は、管理サーバ101から、全ノードN0〜Nnへのロード要求を受信したか否かを判断する(ステップS1001)。
ここで、ストレージサーバ102は、ロード要求を受信するのを待つ(ステップS1001:No)。そして、ストレージサーバ102は、ロード要求を受信した場合(ステップS1001:Yes)、全ノードN0〜Nnに対して、外部ストレージ120に格納された、ジョブの実行に用いるプログラム、データを送信する(ステップS1002)。
つぎに、ストレージサーバ102は、ノードNiからジョブの実行結果を受信したか否かを判断する(ステップS1003)。ここで、ジョブの実行結果を受信していない場合(ステップS1003:No)、ストレージサーバ102は、管理サーバ101から、予備ノードRNへのロード要求を受信したか否かを判断する(ステップS1004)。
ここで、予備ノードRNへのロード要求を受信していない場合(ステップS1004:No)、ストレージサーバ102は、ステップS1003に戻る。一方、予備ノードRNへのロード要求を受信した場合(ステップS1004:Yes)、予備ノードRNに対して、外部ストレージ120に格納された、ジョブの実行に用いるプログラムを送信して(ステップS1005)、ステップS1003に戻る。
また、ステップS1003において、ノードNiからジョブの実行結果を受信した場合(ステップS1003:Yes)、ストレージサーバ102は、受信したジョブの実行結果を外部ストレージ120に格納して(ステップS1006)、本フローチャートによる一連の処理を終了する。
これにより、管理サーバ101からの要求に応じて、ジョブを並列実行するノードN0〜Nnにプログラムやデータを送信したり、ハードウェア故障等が発生したノードの処理を引き継ぐ予備ノードRNにプログラムを送信したりすることができる。
つぎに、管理サーバ101の実行制御処理手順について説明する。
図11は、管理サーバ101の実行制御処理手順の一例を示すフローチャートである。図11のフローチャートにおいて、まず、管理サーバ101は、ログインサーバ103からジョブの実行依頼を受信したか否かを判断する(ステップS1101)。ここで、管理サーバ101は、ジョブの実行依頼を受信するのを待つ(ステップS1101:No)。
そして、管理サーバ101は、ジョブの実行依頼を受信した場合(ステップS1101:Yes)、ストレージサーバ102に対して、全ノードN0〜Nnへのロード要求を送信する(ステップS1102)。つぎに、管理サーバ101は、ジョブの実行が終了したか否かを判断する(ステップS1103)。
ここで、ジョブの実行が終了していない場合(ステップS1103:No)、管理サーバ101は、ノードN0〜NnのうちのいずれかのノードNiからFatal Errorを受信したか否かを判断する(ステップS1104)。Fatal Errorは、ハードウェア故障等の障害が発生したことを示す信号である。
ここで、Fatal Errorを受信していない場合(ステップS1104:No)、管理サーバ101は、ステップS1103に戻る。一方、Fatal Errorを受信した場合(ステップS1104:Yes)、管理サーバ101は、予備ノードRNを準備する(ステップS1105)。
つぎに、管理サーバ101は、ストレージサーバ102に対して、準備した予備ノードRNへのロード要求を送信する(ステップS1106)。そして、管理サーバ101は、全ノードにON Error解除トラップを送信して(ステップS1107)、ステップS1103に戻る。
ON Error解除トラップによれば、全ノードに対して新たに予備ノードRNを使用することを通知することができる。全ノードとは、ノードN0〜NnのうちのFatal Errorの送信元ノードを除く残りのノード、および、準備された予備ノードRNである。
また、ステップS1103において、ジョブの実行が終了した場合(ステップS1103:Yes)、管理サーバ101は、本フローチャートによる一連の処理を終了する。これにより、ジョブの実行を制御することができる。例えば、ジョブ実行中にハードウェア故障等が発生した障害ノードを切り離しつつ、予備ノードRNに処理を引き継がせることができる。
つぎに、ノードNiの並列演算実行処理手順について説明する。ここでは、ジョブを実行中にバリア同期を行う際に最初に同期をとるグループ内のノード数が「2」の場合を例に挙げて説明する。
図12〜図14は、ノードNiの並列演算実行処理手順の一例を示すフローチャートである。図12のフローチャートにおいて、まず、ノードNiは、ストレージサーバ102から、ジョブの実行に用いるプログラム、データを受信する(ステップS1201)。そして、ノードNiは、受信したプログラム、データを用いて、ジョブの実行を開始する(ステップS1202)。
つぎに、ノードNiは、管理サーバ101からON Error解除トラップを受信したか否かを判断する(ステップS1203)。ここで、ON Error解除トラップを受信していない場合(ステップS1203:No)、ノードNiは、バリア同期ポイントに到達したか否かを判断する(ステップS1204)。
ここで、バリア同期ポイントに到達していない場合(ステップS1204:No)、ノードNiは、ステップS1203に戻る。一方、バリア同期ポイントに到達した場合(ステップS1204:Yes)、ノードNiは、最初に同期をとる他ノードとの同期待ちをする(ステップS1205)。
そして、ノードNiは、最初に同期をとる他ノードとの2ノード間の同期が完了したか否かを判断する(ステップS1206)。ここで、2ノード間の同期が完了していない場合(ステップS1206:No)、ノードNiは、ステップS1205に戻る。一方、2ノード間の同期が完了した場合には(ステップS1206:Yes)、ノードNiは、図13に示すステップS1301に移行する。
図13のフローチャートにおいて、まず、ノードNiは、ジョブの全計算処理が終了したか否かを判断する(ステップS1301)。ここで、全計算処理が終了していない場合(ステップS1301:No)、ノードNiは、自ノードのチェックポイントデータを、同期が完了した他ノードに送信し、当該他ノードからチェックポイントデータを受信する(ステップS1302)。自ノードのチェックポイントデータは、メインメモリ302から読み出される。
つぎに、ノードNiは、自ノードのチェックポイントデータを自ノードメモリ領域311に格納するとともに、受信した他ノードのチェックポイントデータを他ノードメモリ領域312に格納する(ステップS1303)。そして、ノードNiは、全ノード間での同期待ちをする(ステップS1304)。
そして、ノードNiは、全ノード間の同期が完了したか否かを判断する(ステップS1305)。ここで、全ノード間の同期が完了していない場合(ステップS1305:No)、ノードNiは、ステップS1304に戻る。一方、全ノード間の同期が完了した場合(ステップS1305:Yes)、ノードNiは、図12に示したステップS1203に戻る。
すなわち、ペアとなっている2ノード間での同期がとれたところでチェックポイントデータの相互保持のフェーズに入り、チェックポイントデータの相互保持の完了後に、全体のバリア同期を待って次の計算処理に入ることができる。
また、ステップS1301において、全計算処理が終了した場合(ステップS1301:Yes)、ノードNiは、全ノード間での同期待ちをする(ステップS1306)。そして、ノードNiは、全ノード間の同期が完了したか否かを判断する(ステップS1307)。
ここで、ノードNiは、全ノード間の同期が完了していない場合(ステップS1307:No)、ステップS1306に戻って、全ノード間の同期が完了するのを待つ。そして、全ノード間の同期が完了した場合(ステップS1307:Yes)、ノードNiは、ストレージサーバ102にジョブの実行結果を送信して(ステップS1308)、本フローチャートによる一連の処理を終了する。
また、図12に示したステップS1203において、ON Error解除トラップを受信した場合(ステップS1203:Yes)、ノードNiは、図14に示すステップS1401に移行する。なお、自ノードにおいてハードウェア故障等の障害が発生した場合は、ノードNiは、管理サーバ101にFatal Errorを送信する。ただし、障害により通信不能となっている場合は、ノードNiとペアとなっている他ノードが、生存監視等の方法でノードNiの異常を検知して、管理サーバ101にFatal Errorを送信する。
図14のフローチャートにおいて、まず、ノードNiは、自ノードが、故障ノードの替わりに組み込まれる予備ノードRNであるか否かを判断する(ステップS1401)。ここで、予備ノードRNの場合(ステップS1401:Yes)、ノードNiは、ストレージサーバ102から、ジョブの実行に用いるプログラムを受信する(ステップS1402)。
そして、ノードNiは、故障ノードを自ノードに置き換えた形でジョブを実行するノード群(ノードN0〜Nn)を構成するために、MPI(Message Passing Interface)を初期化する(ステップS1403)。つぎに、ノードNiは、バリア同期の際に最初に同期をとるペアノードからチェックポイントデータを受信する(ステップS1404)。受信されたチェックポイントデータは、自ノードメモリ領域311に格納される。
つぎに、ノードNiは、全ノード間での同期待ちをする(ステップS1405)。そして、ノードNiは、全ノード間の同期が完了したか否かを判断する(ステップS1406)。ここで、ノードNiは、全ノード間の同期が完了するのを待つ(ステップS1406:No)。
そして、全ノード間の同期が完了した場合(ステップS1406:Yes)、ノードNiは、自ノードメモリ領域311に格納されたチェックポイントデータを用いて、ジョブの実行を再開して(ステップS1407)、図12に示したステップS1203に戻る。
また、ステップS1401において、予備ノードRNではない場合(ステップS1401:No)、ノードNiは、スモールストレージ領域310の自ノードメモリ領域312からチェックポイントデータを読み出す(ステップS1408)。つぎに、ノードNiは、予備ノードRNの情報に基づいて、ノードIDテーブルを更新する(ステップS1409)。
そして、ノードNiは、バリア同期の際に最初に同期をとるペアノードに、読み出したチェックポイントデータを送信して(ステップS1410)、ステップS1405に移行する。ただし、ノードNiが故障ノードのペアノードではない場合には、ステップS1401において、予備ノードRNではない場合に(ステップS1401:No)、ノードNiは、ステップS1405に移行することにしてもよい。
これにより、ジョブを実行中のバリア同期ごとに、バリア同期の第1ステージで同期をとるペアノードとの間で、チェックポイントデータをバックアップし合うことができる。また、ペアノードに障害が発生した場合は、故障ノードの替わりに組み込まれた予備ノードRNにチェックポイントデータを送信して、ジョブの実行を中間状態から再開することができる。
なお、図12,13には図示していないが、ステップS1205〜S1206、ステップS1304〜S1305およびステップS1306〜S1307の同期待ち中においても、ON ERROR解除トラップを受信したときには、ステップS1203に戻って処理を継続するものとする。これはノードNiが同期待ちでハングアップしないために必要である。
(処理システム100の実施例)
つぎに、多数ノードで計算する具体的なターゲット問題を例に挙げて、処理システム100の実施例について説明する。
図15は、ターゲット問題の具体例を示す説明図である。ここでは、図15に示す行列ベクトル演算を、ノードN0〜Npで計算する場合を想定する。ただし、下記(1)〜(5)を前提とする。
(1)「y=A*x」を計算する。
(2)「A=MxN」の要素を持つ。
(3)1行(M要素数)を複数ノードで処理し、最後に全体結果を1つのノードに集めて結果をストレージサーバ102に格納するものとする。
(4)1行ごとにバリア同期を実施するものとする。すなわち、ハードウェア故障が発生した場合でも再実行は1行分で済むことになる。
(5)A,xのデータは、予め全ノードにロードされているものとする。
例えば、a[0:n][0]〜a[0:n][2]に関する計算をノードN0で実行し、a[0:n][3]〜a[0:n][5]に関する計算をノードN1で実行し、a[0:n][m−2]〜a[0:n][m]に関する計算をノードNpで実行する。
ここで、各ノードN0〜Npにロードするプログラムの一例について説明する。
図16A、図16B、図16Cおよび図16Dは、プログラムの一例を示す説明図である。図16A〜図16Dにおいて、プログラム1600は、各ノードN0〜Npにロードするプログラムを簡素化して示したものである。ただし、図16A〜図16Dでは、プログラム1600の一部を抜粋して表示している。また、下記<1>〜<8>を前提とする。
<1>管理サーバ101からのON Error解除トラップで、予備ノードRNの物理ノード情報、故障ノードの仮想ノード番号が送付される。
<2>ハード故障発生時、管理サーバ101の要求により予備ノードRNにロードされるプログラムには予備ノード情報を含んでいるものとする。例えば、MPI通信を使う場合、予備ノードRNでMPI初期化処理をしたら、故障ノードを予備ノードRNに置き換えた形でノード群が構成されるものとする。
<3>copyareaは、int型で領域として確保している。
<4>エラーハンドラの関数(On_error)があり、バリア待ちの最中でも割り込んで処理できる関数とする。
<5>ペア2ノード間の終了状況を知ることができる関数(PairBarrier)があるものとする。
<6>ペア2ノード間の相互保持関数(MutualCp)があるものとする。
<7>自ノード内領域コピー関数(IntermediateCP)があるものとする。
<8>自ノードの物理ノード情報を取得できる関数(PhysicalNode)があるものとする。
図17Aおよび図17Bは、メモリマップの一例を示す説明図である。図17Aおよび図17Bにおいて、ノードNiおよびノードN(i+1)のメモリマップが示されている。図17Aおよび図17Bの例では、0x80000000以降にスモールストレージ領域が設けられている。
システム領域(OS領域)とプログラム領域は、0x00000000〜0x3FFFFFFFにあるものとし、計算に用いるエリアは0x40000000〜0x7FFFFFFFの間に要素数CA分だけあるものとする。このエリアには、(2)テーブル領域、(3)データ領域y、(4)データ領域A、および(5)データ領域xがある。計算結果は、(3)データ領域yに記憶されるものとする。
スモールストレージは、自ノードでデータバックアップ領域0x80000000〜0xBFFFFFFFと、ペアノードのバックアップ領域0xC0000000〜0xFFFFFFFFとからなる。いずれも要素数はCAである。
(2)テーブル領域には、バリアポイント番号と、仮想ノード→実ノード変換のテーブル領域があり、バリアポイント番号によって行列計算の何行目まで実行したかがわかるようになっている。また、仮想ノード→実ノード変換のテーブルを持つことによって、プログラムの変更なしに予備ノードRNを使用できるようにし、プログラムの再実行に支障がないようにしている。
図16Bに示した符号1601部分は、行列計算のメインルーチンである。1行の行列要素をist,ienまでに分割して計算し、lineで処理行を進めていき最後にMPI_Allreduce関数で最終結果を得るようになっている。ハードウェア故障がない場合には、whileループを繰り返し実行し、yの要素数がNになるまで演算を繰り返す。
図16Bに示した符号1602部分は、On_error処理のルーチンである。ハードウェア故障が発生したときは、ハードウェア故障が発生したノードが直接、あるいはペアとなっているノードが生存監視等の方法で異常を検知し、ハードウェア故障が発生したことを管理サーバ101に通知する。管理サーバ101は、ハードウェア故障を検知すると、予備ノードRNを準備し、続いて並列動作しているノード群(プログラム中ではMPI_COMM_WORLDが組となっている)に対して、ON Error解除トラップを発行する。
ON Error解除トラップを受け取ったノードは、多くはバリア待ちでループ状態になっているが、割り込み処理でOn_error関数を実行する。On_error関数は、予備ノードRNとハードウェア故障が発生していないノード(正常ノード)で動作が異なる。
予備ノードRNについては、ストレージサーバ102からプログラムをロード、MPI関数を使うための初期化処理を実行し、ペアとなるノードからcopyarea_pairのデータを受信する。管理サーバ101から予備ノード情報を含んだ形でプログラムをロードし、MPI_init時には故障ノードを予備ノードに置き換えた形で初期化されるものとし、MPI通信でcopyarea_pairが受信できるようになっているものとする(前提<2>)。その後、他ノードと同じバリア待ちのルーチンに入り、自身はバリア待ち状態となる。
正常ノードは、自ノードのcopyarea_myのエリアをbaseareaにコピーし、トラップ情報(ON Error解除トラップ)からハードウェア故障が発生した仮想ノードの物理ノード番号を予備ノードRNの物理ノード番号に置き換える。また、正常ノードは、自ノードのペアがハードウェア故障を起こした場合には、small storageにあるcopyarea_pairを予備ノードRNに送り、その後バリア待ち状態となる。
全ノードがバリア待ち状態に入ったことを認識したノードから、バリア状態を抜けてwhile文の先頭から再実行する。なお、while文中のMPI_Barrier時には処理行を示すlineは更新されていないので、lineについてはbaseareaにある値をそのまま使えばよい。
以上説明したように、実施の形態にかかるノードNiによれば、同一のジョブを実行するノードN0〜Nnでバリア同期を行う際に、ノードN0〜Nnのうち自ノードと最初に同期をとる他ノードに自ノードのチェックポイントを送信するとともに、他ノードから他ノードのチェックポイントデータを受信することができる。そして、ノードNiによれば、送信した自ノードのチェックポイントデータをディスク303内の自ノードメモリ領域311に格納するとともに、受信した他ノードのチェックポイントデータをディスク303内の他ノードメモリ領域312に格納することができる。ノードNiのチェックポイントデータは、ノードNiのメインメモリ302内の情報である。他ノードのチェックポイントデータは、他ノードのメインメモリ302内の情報である。
これにより、同一ジョブを実行中のノードN0〜Nnでバリア同期を行うタイミングで、バリア同期の第1ステージで同期をとるノード間において、メインメモリ302内のデータ(チェックポイントデータ)のバックアップをとりあうことができる。
また、ノードNiによれば、バリア同期を行う際に、ノードN0〜Nnのうち自ノードと最初に同期をとるグループ内の少なくともいずれかの他ノードに自ノードのチェックポイントデータを送信するとともに、グループ内の少なくともいずれかの他ノードから当該他ノードのチェックポイントデータを受信することができる。
これにより、バリア同期の第1ステージで同期をとるグループ内のノード数が3以上の場合であっても、グループ内のノード間でチェックポイントデータを相互保持することができる。また、グループ内の各ノードNiのチェックポイントデータを、グループ内のいずれか一つの他ノードが保持すればよいようにペアを形成することで、各ノードNiにおけるバックアップにかかる記憶容量の増加を防ぐことができる。
また、ノードNiによれば、バリア同期を行う際に、ノードN0〜Nnのうち自ノードと最初に同期をとるグループ内の他ノードそれぞれに自ノードのチェックポイントデータを送信するとともに、他ノードそれぞれから当該他ノードのチェックポイントデータを受信することができる。そして、ノードNiによれば、送信した自ノードのチェックポイントデータをディスク303内の自ノードメモリ領域311に格納するとともに、受信した他ノードそれぞれのチェックポイントデータをディスク303内の他ノードそれぞれに対応する他ノードメモリ領域312(例えば、図8に示した他ノードメモリ領域312−1,312−2)に格納することができる。
これにより、バリア同期の第1ステージで同期をとるグループ内の他ノードそれぞれのチェックポイントデータを保持することができる。このため、グループ内のノードが複数同時にハードウェア故障となっても、グループ内の正常ノードのスモールストレージ領域310内の情報をもとにジョブを途中から再実行することが可能となる。
また、ノードNiによれば、他ノードと同期をとるタイミング、すなわち、バリア同期ポイントに到達したタイミングで、他ノードに自ノードのチェックポイントデータを送信することができる。そして、ノードNiによれば、他ノードに自ノードのチェックポイントデータを送信し、かつ、他ノードから他ノードのチェックポイントデータを受信したことに応じて、他ノードとの同期が完了したと判断することができる。
これにより、バリア同期の第1ステージの完了を、ノード間でのチェックポイントデータの相互保持の完了をもって判断することができる。このため、ノード間で同期をとるにあたり、各ノードの状態を通知しあわなくてもよく、ノード間の同期確認にかかる通信を削減することができる。
また、ノードNiによれば、ジョブの実行を開始してから所定時間Tが経過した後のバリア同期ごとに、他ノードに自ノードのチェックポイントデータを送信するとともに、他ノードから他ノードのチェックポイントデータを受信することができる。
これにより、ジョブの実行を開始してしばらくはバックアップをとるメリットが少ないことを考慮して、ノード間でのチェックポイントデータの相互保持を実施するタイミングを遅らせることができる。
また、ノードNiによれば、他ノードで障害が発生した場合、他ノードの処理を引き継ぐ予備ノードRNに、ディスク303内の他ノードメモリ領域312に格納された他ノードのチェックポイントデータを送信することができる。そして、ノードNiによれば、ディスク303内の自ノードメモリ領域311に格納された自ノードのチェックポイントデータに基づいて、ジョブの実行を再開することができる。
これにより、バリア同期の第1ステージで同期をとる他ノードで障害が発生しても、全ノードでバリア同期が成功した時点のチェックポイントデータを用いて、処理(エラーが発生したルーチン)の再実行を行って、ジョブの実行を再開することができる。このため、ハードウェア故障等でノードが使用できなくなっても、最長で定期的なセーブ処理が実施される間隔までの手戻りとすることができる。例えば、全体の処理に24時間かかるジョブを1時間ごとに区切って実行するとする。本バックアップ方法を使わない場合のペナルティは、ハードウェア故障までにジョブを実行した時間であり、最長24時間となる。一方、本バックアップ方法を使った場合のペナルティは、「1時間(最長)+23×チェックポイントデータの相互保持にかかる時間+α(管理サーバ101が予備ノードRNを準備する等の時間)」となる。
より具体的に説明すると、例えば、全体の処理に24時間かかるとし、1時間ごとにセーブ処理を実行し(すなわち、1時間ごとにバリア同期が発生)、セーブ処理に10分かかるとする。この場合、ジョブが完了するまでに要する時間は、「27.8時間=24×60+23×10=1670分」となる。
また、3回に1回、ジョブの実行を開始してから10時間が経過した後のいずれかのタイミングでハードウェア故障が発生するとする。この場合、6本のプログラム(ジョブ)を実行するのにかかる時間は、本処理システム100では、「169.0時間(=1670×6+60×(6/3)=10,140分)」となる。
一方、既存の処理システムでは、「187.0時間(=1670×6+600×(6/3)=11,220分)」となる(ただし、ペナルティを10時間として計算している。)。この場合、本処理システム100のほうが、既存の処理システムよりも時間が短くなっており、メリットがあるといえる。
また、システム内にストレージが一つある従来方式と、本実施の形態の相互保持時間を以下の前提で比較する。
(1)ノード当たりの相互保持データ量が8MB
(2)ノード数100
(3)通信帯域はIO帯域よりも大きいものとする。かつ、送信・受信は同時に処理できるものとする。
(4)従来方式のストレージのIO帯域はストライピング技術を用いて1GB/secを実現しているものとする。
(5)本実施の形態のIOはノード内に実装されるが、100MB/secのディスクで構成されるものとし、IO帯域は100MB/secとする。
従来方式では、100ノード分の8MBデータを1GB/secの帯域を持ったストレージに格納するため、0.8秒(=8MB x 100/1GB/sec)を要する。それに対して、本実施の形態では、相互保持データをペアノードに格納するため、100ノードでもデータ量は8MBのままである。0.08秒(=8MB x 1/100MB/sec)となり、バックアップ時間は1/10となる。また、本実施の形態ではシステムのストレージを広帯域とする必要はないため、ストレージにかかるコストを下げられる可能性がある。
これらのことから、実施の形態にかかる処理システム100およびノードNiによれば、ジョブを実行中の定期的なバックアップの際に生じるストレージへのアクセス集中を防いで、システム全体への負荷を減らし、バックアップにかかる時間を短縮することができる。
なお、本実施の形態で説明したバックアップ方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本並列演算実行プログラムは、ハードディスク、フレキシブルディスク、CD(Compact Disc)−ROM、MO(Magneto−Optical disk)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本並列演算実行プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した並列処理装置(ノードNi)は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けICやFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)同一のジョブを実行する複数のノードでバリア同期を行う際に、前記複数のノードのうち自ノードと最初に同期をとる他ノードに自ノードの情報を送信するとともに、前記他ノードから前記他ノードの情報を受信し、
送信した前記自ノードの情報を自ノードの記憶装置内の第1の記憶領域に格納するとともに、受信した前記他ノードの情報を前記記憶装置内の第2の記憶領域に格納する、
制御部を有することを特徴とする並列処理装置。
(付記2)前記制御部は、
前記バリア同期を行う際に、前記複数のノードのうち自ノードと最初に同期をとるグループ内の少なくともいずれかの他ノードに自ノードの情報を送信するとともに、前記グループ内の少なくともいずれかの他ノードから当該他ノードの情報を受信する、
ことを特徴とする付記1に記載の並列処理装置。
(付記3)前記制御部は、
前記バリア同期を行う際に、前記グループ内の他ノードそれぞれに自ノードの情報を送信するとともに、前記他ノードそれぞれから当該他ノードの情報を受信し、
送信した前記自ノードの情報を前記第1の記憶領域に格納するとともに、受信した前記他ノードそれぞれの情報を前記記憶装置内の前記他ノードそれぞれに対応する第2の記憶領域に格納する、
ことを特徴とする付記2に記載の並列処理装置。
(付記4)前記制御部は、
前記他ノードと同期をとるタイミングで前記他ノードに自ノードの情報を送信し、
前記他ノードに自ノードの情報を送信し、かつ、前記他ノードから前記他ノードの情報を受信したことに応じて、前記他ノードとの同期が完了したと判断する、
ことを特徴とする付記1〜3のいずれか一つに記載の並列処理装置。
(付記5)前記ジョブの実行を開始してから所定時間が経過した後のバリア同期ごとに、前記他ノードに自ノードの情報を送信するとともに、前記他ノードから前記他ノードの情報を受信する、ことを特徴とする付記1〜4のいずれか一つに記載の並列処理装置。
(付記6)前記制御部は、
前記他ノードで障害が発生した場合、前記他ノードの処理を引き継ぐ予備ノードに、前記第2の記憶領域に格納された前記他ノードの情報を送信し、
前記第1の記憶領域に格納された自ノードの情報に基づいて、前記ジョブの実行を再開する、
ことを特徴とする付記1〜5のいずれか一つに記載の並列処理装置。
(付記7)自ノードの情報は、自ノードのメインメモリ内の情報であり、
前記他ノードの情報は、前記他ノードのメインメモリ内の情報である、
ことを特徴とする付記1〜6のいずれか一つに記載の並列処理装置。
(付記8)同一のジョブを実行する複数のノードでバリア同期を行う際に、前記複数のノードのうち自ノードと最初に同期をとる他ノードに自ノードの情報を送信するとともに、前記他ノードから前記他ノードの情報を受信し、
送信した前記自ノードの情報を自ノードの記憶装置内の第1の記憶領域に格納するとともに、受信した前記他ノードの情報を前記記憶装置内の第2の記憶領域に格納する、
処理をコンピュータに実行させることを特徴とする並列演算実行プログラム。
(付記9)同一のジョブを実行する複数のノードでバリア同期を行う際に、前記複数のノードのうち自ノードと最初に同期をとる他ノードに自ノードの情報を送信するとともに、前記他ノードから前記他ノードの情報を受信し、
送信した前記自ノードの情報を自ノードの記憶装置内の第1の記憶領域に格納するとともに、受信した前記他ノードの情報を前記記憶装置内の第2の記憶領域に格納する、
処理をコンピュータが実行することを特徴とするバックアップ方法。
100 処理システム
101 管理サーバ
102 ストレージサーバ
103 ログインサーバ
110 ネットワーク
120 外部ストレージ
201,202,203,204 記憶装置
300 バス
301 CPU
302 メインメモリ
303 ディスク
304 メモリインタフェース
305 IOインタフェース
306 バリア装置
307 インターノードインタフェース
310 スモールストレージ領域
311 自ノードメモリ領域
312,312−1,312−2 他ノードメモリ領域
401 通信制御部
402 格納部
403 検出部
404 再開制御部
1600 プログラム
N0〜Nn,Ni ノード

Claims (8)

  1. 同一のジョブを実行する複数のノードでバリア同期を行う際に、前記複数のノードのうち自ノードと最初に同期をとる他ノードに自ノードの情報を送信するとともに、前記他ノードから前記他ノードの情報を受信し、
    送信した前記自ノードの情報を自ノードの記憶装置内の第1の記憶領域に格納するとともに、受信した前記他ノードの情報を前記記憶装置内の第2の記憶領域に格納する、
    制御部を有することを特徴とする並列処理装置。
  2. 前記制御部は、
    前記バリア同期を行う際に、前記複数のノードのうち自ノードと最初に同期をとるグループ内の少なくともいずれかの他ノードに自ノードの情報を送信するとともに、前記グループ内の少なくともいずれかの他ノードから当該他ノードの情報を受信する、
    ことを特徴とする請求項1に記載の並列処理装置。
  3. 前記制御部は、
    前記バリア同期を行う際に、前記グループ内の他ノードそれぞれに自ノードの情報を送信するとともに、前記他ノードそれぞれから当該他ノードの情報を受信し、
    送信した前記自ノードの情報を前記第1の記憶領域に格納するとともに、受信した前記他ノードそれぞれの情報を前記記憶装置内の前記他ノードそれぞれに対応する第2の記憶領域に格納する、
    ことを特徴とする請求項2に記載の並列処理装置。
  4. 前記制御部は、
    前記他ノードと同期をとるタイミングで前記他ノードに自ノードの情報を送信し、
    前記他ノードに自ノードの情報を送信し、かつ、前記他ノードから前記他ノードの情報を受信したことに応じて、前記他ノードとの同期が完了したと判断する、
    ことを特徴とする請求項1〜3のいずれか一つに記載の並列処理装置。
  5. 前記ジョブの実行を開始してから所定時間が経過した後のバリア同期ごとに、前記他ノードに自ノードの情報を送信するとともに、前記他ノードから前記他ノードの情報を受信する、ことを特徴とする請求項1〜4のいずれか一つに記載の並列処理装置。
  6. 前記制御部は、
    前記他ノードで障害が発生した場合、前記他ノードの処理を引き継ぐ予備ノードに、前記第2の記憶領域に格納された前記他ノードの情報を送信し、
    前記第1の記憶領域に格納された自ノードの情報に基づいて、前記ジョブの実行を再開する、
    ことを特徴とする請求項1〜5のいずれか一つに記載の並列処理装置。
  7. 同一のジョブを実行する複数のノードでバリア同期を行う際に、前記複数のノードのうち自ノードと最初に同期をとる他ノードに自ノードの情報を送信するとともに、前記他ノードから前記他ノードの情報を受信し、
    送信した前記自ノードの情報を自ノードの記憶装置内の第1の記憶領域に格納するとともに、受信した前記他ノードの情報を前記記憶装置内の第2の記憶領域に格納する、
    処理をコンピュータに実行させることを特徴とする並列演算実行プログラム。
  8. 同一のジョブを実行する複数のノードでバリア同期を行う際に、前記複数のノードのうち自ノードと最初に同期をとる他ノードに自ノードの情報を送信するとともに、前記他ノードから前記他ノードの情報を受信し、
    送信した前記自ノードの情報を自ノードの記憶装置内の第1の記憶領域に格納するとともに、受信した前記他ノードの情報を前記記憶装置内の第2の記憶領域に格納する、
    処理をコンピュータが実行することを特徴とするバックアップ方法。
JP2018198773A 2018-10-22 2018-10-22 並列処理装置、並列演算実行プログラムおよびバックアップ方法 Active JP7192388B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018198773A JP7192388B2 (ja) 2018-10-22 2018-10-22 並列処理装置、並列演算実行プログラムおよびバックアップ方法
US16/657,060 US11392463B2 (en) 2018-10-22 2019-10-18 Effective backup of data used by multiple nodes executing parallel processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018198773A JP7192388B2 (ja) 2018-10-22 2018-10-22 並列処理装置、並列演算実行プログラムおよびバックアップ方法

Publications (2)

Publication Number Publication Date
JP2020067722A true JP2020067722A (ja) 2020-04-30
JP7192388B2 JP7192388B2 (ja) 2022-12-20

Family

ID=70280782

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018198773A Active JP7192388B2 (ja) 2018-10-22 2018-10-22 並列処理装置、並列演算実行プログラムおよびバックアップ方法

Country Status (2)

Country Link
US (1) US11392463B2 (ja)
JP (1) JP7192388B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022169072A (ja) * 2021-04-27 2022-11-09 株式会社日立製作所 ストレージシステム、ストレージノード仮想計算機復旧方法、及び復旧プログラム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200266995A1 (en) * 2020-05-04 2020-08-20 Vinodh Gopal Managing state in accelerators
US20210390618A1 (en) * 2020-06-16 2021-12-16 The Financial Risk Group Inc. Financial Risk Assessment

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006155473A (ja) * 2004-12-01 2006-06-15 Fujitsu Ltd 情報処理装置
US20070233870A1 (en) * 2006-03-28 2007-10-04 Fujitsu Limited Cluster control apparatus, cluster control method, and computer product
JP2007286860A (ja) * 2006-04-17 2007-11-01 Hitachi Ltd データ転送方法及び情報処理装置
JP2010122848A (ja) * 2008-11-19 2010-06-03 Fujitsu Ltd バリア同期装置、バリア同期処理システム及び方法、リダクション演算装置、リダクション演算処理システム及び方法
JP2012058958A (ja) * 2010-09-08 2012-03-22 Fujitsu Ltd リダクション演算装置、処理装置及びコンピュータシステム
JP2017138780A (ja) * 2016-02-03 2017-08-10 日本電信電話株式会社 並列計算処理装置および並列計算処理方法
JP2017535853A (ja) * 2014-10-20 2017-11-30 アビニシオ テクノロジー エルエルシー 計算の非決定性の下でのリカバリ及び耐障害

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5737514A (en) 1995-11-29 1998-04-07 Texas Micro, Inc. Remote checkpoint memory system and protocol for fault-tolerant computer system
US8464256B1 (en) * 2009-04-10 2013-06-11 Open Invention Network, Llc System and method for hierarchical interception with isolated environments
JP5672521B2 (ja) 2010-03-05 2015-02-18 日本電気株式会社 コンピュータシステム、およびそのチェックポイントリスタート方法
US9098439B2 (en) * 2012-01-05 2015-08-04 International Business Machines Corporation Providing a fault tolerant system in a loosely-coupled cluster environment using application checkpoints and logs
US10346267B2 (en) * 2014-10-31 2019-07-09 Red Hat, Inc. Registering data modification listener in a data-grid
US10776225B2 (en) * 2018-06-29 2020-09-15 Hewlett Packard Enterprise Development Lp Proactive cluster compute node migration at next checkpoint of cluster cluster upon predicted node failure

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006155473A (ja) * 2004-12-01 2006-06-15 Fujitsu Ltd 情報処理装置
US20070233870A1 (en) * 2006-03-28 2007-10-04 Fujitsu Limited Cluster control apparatus, cluster control method, and computer product
JP2007265013A (ja) * 2006-03-28 2007-10-11 Fujitsu Ltd クラスタ制御プログラム、クラスタ制御方法およびクラスタ制御装置
JP2007286860A (ja) * 2006-04-17 2007-11-01 Hitachi Ltd データ転送方法及び情報処理装置
JP2010122848A (ja) * 2008-11-19 2010-06-03 Fujitsu Ltd バリア同期装置、バリア同期処理システム及び方法、リダクション演算装置、リダクション演算処理システム及び方法
JP2012058958A (ja) * 2010-09-08 2012-03-22 Fujitsu Ltd リダクション演算装置、処理装置及びコンピュータシステム
JP2017535853A (ja) * 2014-10-20 2017-11-30 アビニシオ テクノロジー エルエルシー 計算の非決定性の下でのリカバリ及び耐障害
JP2017138780A (ja) * 2016-02-03 2017-08-10 日本電信電話株式会社 並列計算処理装置および並列計算処理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022169072A (ja) * 2021-04-27 2022-11-09 株式会社日立製作所 ストレージシステム、ストレージノード仮想計算機復旧方法、及び復旧プログラム
US11762741B2 (en) 2021-04-27 2023-09-19 Hitachi, Ltd. Storage system, storage node virtual machine restore method, and recording medium
JP7355778B2 (ja) 2021-04-27 2023-10-03 株式会社日立製作所 ストレージシステム、ストレージノード仮想計算機復旧方法、及び復旧プログラム

Also Published As

Publication number Publication date
US11392463B2 (en) 2022-07-19
US20200125461A1 (en) 2020-04-23
JP7192388B2 (ja) 2022-12-20

Similar Documents

Publication Publication Date Title
US8954645B2 (en) Storage writes in a mirrored virtual machine system
JP6362685B2 (ja) オンライン・ホット・スタンバイ・データベースのためのレプリケーション方法、プログラム、および装置
US8990617B2 (en) Fault-tolerant computer system, fault-tolerant computer system control method and recording medium storing control program for fault-tolerant computer system
US7594138B2 (en) System and method of error recovery for backup applications
EP1999586B1 (en) System, method and computer program product for storing multiple types of information
EP2626786B1 (en) Multicore processor system, method of monitoring control, and monitoring control program
AU2014374256B2 (en) Systems and methods for improving snapshot performance
JP5452615B2 (ja) 書込待ち行列機構を用いて、マルチアレイの整合性グループを実施するための方法
CN110071821A (zh) 备用节点的指定
JP7192388B2 (ja) 並列処理装置、並列演算実行プログラムおよびバックアップ方法
US10860447B2 (en) Database cluster architecture based on dual port solid state disk
US20120084260A1 (en) Log-shipping data replication with early log record fetching
US11748215B2 (en) Log management method, server, and database system
US9430485B2 (en) Information processor and backup method
US11307944B2 (en) Automated failover for asynchronous remote copy
US10146648B1 (en) Preserving disaster recovery protection for a data storage object
JP6708923B2 (ja) ストレージシステム
CN109165117B (zh) 数据处理的方法和系统
KR101761528B1 (ko) 격리된 파티션들을 사용하는 탄력적인 가상 다중경로 자원 액세스
KR100234634B1 (ko) 검사복구기능을 가진 입출력 장치
JP6668733B2 (ja) 制御装置、管理装置、ストレージシステム、制御プログラム、管理プログラム、制御方法、および管理方法
US20210240351A1 (en) Remote copy system and remote copy management method
CN114328374A (zh) 一种快照方法、装置、相关设备及数据库系统
JP6036690B2 (ja) 分散実行システム及び分散プログラム実行方法
US20240152429A1 (en) Recoverable Processes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210709

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220704

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221121

R150 Certificate of patent or registration of utility model

Ref document number: 7192388

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150