JP6495779B2 - 演算処理管理方法及び演算装置 - Google Patents

演算処理管理方法及び演算装置 Download PDF

Info

Publication number
JP6495779B2
JP6495779B2 JP2015158741A JP2015158741A JP6495779B2 JP 6495779 B2 JP6495779 B2 JP 6495779B2 JP 2015158741 A JP2015158741 A JP 2015158741A JP 2015158741 A JP2015158741 A JP 2015158741A JP 6495779 B2 JP6495779 B2 JP 6495779B2
Authority
JP
Japan
Prior art keywords
arithmetic
checkpoint
processing
global
node
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.)
Active
Application number
JP2015158741A
Other languages
English (en)
Other versions
JP2017037507A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2015158741A priority Critical patent/JP6495779B2/ja
Publication of JP2017037507A publication Critical patent/JP2017037507A/ja
Application granted granted Critical
Publication of JP6495779B2 publication Critical patent/JP6495779B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Retry When Errors Occur (AREA)

Description

本発明は、複数の異なる演算部を有する演算装置が、ネットワークによって複数接続されているシステムにおける演算処理管理方法及び演算装置に関する。
従来画像処理に用いられてきたGPU(Graphics Processing Unit)を汎用計算に応用し、並列計算を実行するGPGPU(General Purpose GPU)は、近年HPC(High Performance Computing)をはじめとする並列計算環境にも応用されている。また並行プログラミング等のトレンドと相まって、GPGPUの適用範囲が広がっている。
ここで、複数ノードを用いたクラスタシステムも並列計算のための一手法であり、ノード間でプロセス配置を最適化させるSSI(Single System Image)等といったスループット向上のための研究開発が行われている(例えば、非特許文献1参照)。
また、従来において、GPGPU上で処理を実行させるためには、専用のプログラミング言語による記述が必要であり、NVIDIA(登録商標)社のCUDA(Compute Unified Device Architecture:登録商標)等といったベンダ固有の実行環境が必要である。しかしながら、ハードウェアアーキテクチャの異なる場合でも一元的に動作させたいというヘテロジーニアスコンピューティングへの要求を背景に、OpenCL(登録商標)と呼ばれる特定の計算デバイスに依存しない環境が開発され、マルチコアCPU(Central Processing Unit)や、GPU、DSP(Digital Signal Processor)といったデバイスの違いに関わらないプログラミングが可能となっている(例えば、非特許文献2参照)。
GPGPUを用いる場合、同時実行させたい並列処理が、CPUのメイン処理から分散タスクとしてGPGPUへ割り振られる。その際にCPUの管理するメモリからGPGPUのメモリへのデータ転送が必要となる。その後、CPUはそれぞれの実行結果を受け取り、チェック処理等を行う。
GPGPUはCPUと比較して、シンプルな計算を並列に行うことに特化しているため、スループット性に優れるという利点があるが、一方で計算結果の誤りが多くなるという欠点を有している。この計算結果の誤りは、本来の画像処理目的であれば許容される程度の誤りであるが、数値計算等の用途では誤差が伝搬もしくは拡大するといった問題があるため許容されない場合がある。このため、GPGPUの実行結果に何らかのエラーが含まれる場合に、予め保存しておいたチェックポイントデータを用いて、再度計算を実行するといったリカバリ技術に関する手法が提案されている(例えば、非特許文献3参照)。
Christine Morin, et al.,"Kerrighed: A Single System Image Cluster Operating System for High Performance Computing", Euro-Par 2003 Parallel Processing, Lecture Notes in Computer Science, Volume 2790, 2003, p.1291-p.1294. John E. Stone, et al.,"OpenCL:A Parallel Programming Standard for Heterogeneous Computing Systems", Computing in Science & Engineering,2010, Volume:12 ,Issue: 3,p.66-72. Xinhai Xu, et al.,'HiAL-Ckpt: A Hierarchical Application-Level Checkpointing for CPU-GPU Hybrid Systems', The 5th International Conference on Computer Science & Education Hefei,Chine, August 24-27,2010,p1895 - 1899.
しかしながら、非特許文献3に記載の技術によるチェックポイント及びリカバリの手法は、1つのCPUに対してのみ有効であり、複数ノードをまたがるSSIのようなクラスタ環境は考慮されていない。
例えば、SSIでは計算途中のプロセスが他ノードへマイグレーションするケースがあるため、チェックポイントデータに関しても、同様に他ノードへマイグレーションを行う必要がある。
また、比較的時間を要する計算を実行する場合には、一部のノードで障害が発生した際の復旧手段としてクラスタワイドにチェックポイントデータを保存し、他の代替ノードにて計算を引き継ぎ実行する必要がある。
非特許文献3には、GPGPUによる処理を行うサーバが複数ある場合について、上記の課題を解決していない。
このような背景に鑑みて本発明がなされたのであり、本発明は、異なる演算部を有する演算装置が複数ある場合におけるチェックポイントの設定及びリカバリを可能とする演算処理管理方法及び演算装置を提供することを課題とする。
前記した課題を解決するため、請求項1に記載の発明は、複数の異なる演算部を具備する演算装置が、互いに複数接続しているシステムにおいて、前記演算装置が、各演算部に対し演算処理の割り振りを行うステップと、前記演算処理の割り振りを決定すると、前記演算処理に関するチェックポイントを生成するステップと、通信ネットワークによって、前記システムにおけるすべての演算装置間で、個々の前記演算装置のメモリに設けられているメモリ領域であるグローバル領域に同一の前記チェックポイントに関する情報を同期させて保存するステップと、前記演算処理を行っている他演算装置における前記演算部の障害を検出すると、前記障害を生じていない別の演算装置が、前記グローバル領域に保存したチェックポイントに関する情報を読み出し、前記読みだしたチェックポイントに関する情報に従って前記演算処理を再開するステップと、を実行することを特徴とする演算処理管理方法とした。
また、請求項4に記載の発明は、複数の異なる演算部を具備する演算装置が、互いに複数接続しているシステムを構成する演算装置であって、各演算部に対し演算処理の割り振りを行う割振処理部と、前記演算処理の割り振りを決定すると、前記演算処理に関するチェックポイントを生成し、通信ネットワークによって、前記システムにおけるすべての演算装置間で、個々の前記演算装置のメモリに設けられているメモリ領域であるグローバル領域に同一の前記チェックポイントに関する情報を同期させて保存するチェックポイント処理部と、前記演算処理を行っている他演算装置における前記演算部の障害を検出すると、前記グローバル領域に保存したチェックポイントを読み出し、前記読みだしたチェックポイントに従って前記演算処理を再開するリカバリ処理部と、を有することを特徴とする演算装置とした。
このようにすることにより、演算装置は、異なる演算部を有している演算装置で構成されるシステムにおいて、すべての演算装置間で、チェックポイントに関する情報を共有して保持することで、システム内の演算装置に障害が発生しても、チェックポイントに関する情報を基に、他の演算装置で演算処理を再開することができるので、演算装置の障害に対するシステムの信頼性を向上させることができる。
請求項2に記載の発明は、前記同期させてグローバル領域に保存するチェックポイントに関する情報を選択可能であることを特徴とする請求項1に記載の演算処理管理方法とした。
このようにすることにより、演算装置は、チェックポイントに関する情報を格納するグローバル領域のリソースを節約することができる。
請求項3に記載の発明は、前記演算装置が、個々の前記演算装置のメモリに設けられているメモリ領域であるローカル領域に前記演算装置自身に関するチェックポイントを保存し、前記演算処理が終了すると、前記グローバル領域及び前記ローカル領域から、該演算処理に関するチェックポイントに関する情報を削除するステップを実行することを特徴とする請求項1又は請求項2に記載の演算処理管理方法とした。
このようにすることで、チェックポイントに関する情報を格納するグローバル領域及び前記ローカル領域のリソースを有効に使用することができる。
本発明によれば、異なる演算部を有する演算装置が複数ある場合におけるチェックポイントの設定及びリカバリを可能とする演算処理管理方法及び演算装置を提供することができる。
本実施形態に係る計算器システムの構成の概要を説明するための図である。 本実施形態に係るノードの構成図である。 計算機システムにおける各ノードのハードウェア構成を示す図である。 本実施形態に係るプロセステーブル及びグローバルプロセステーブルの例を示す図である。 本実施形態で使用される計算機システムの構成を示す図である。 本実施形態に係るプロセスの割振手順を示すシーケンス図である。 本実施形態に係るGPGPUへのプロセス割振手順の詳細を示すフローチャートである(その1)。 本実施形態に係るGPGPUへのプロセス割振手順の詳細を示すフローチャートである(その2)。 本実施形態に係る計算機システムにおけるリカバリの手順を示すシーケンス図である。 本実施形態に係る障害検定・リカバリ処理の詳細な手順を示すフローチャートである。
<本願発明の概要>
まず、本実施形態に係る計算器システムの構成と特徴について説明する。
図1は、本実施形態に係る計算器システムの構成の概要を説明するための図である。
図1に示す計算機システムZ1では、3つのノード(演算装置)1(1a〜1c)が設置されている。各ノード1a〜1cは、例えば、SSIを構成している。各ノード1では、OS(Operation System)402が実行されており、複数のプロセス(演算処理)401が実行されている。なお、プロセス401は、CPU(演算部)11(図2参照)又はGPGPU(演算部)21(図2参照)によって実行される。
また、各ノード1のCPU用メモリ12(図2参照)において、プロセステーブル201が格納されているとともに、チェックポイントデータ保持領域202が確保されている。
ここで、プロセステーブル201は、実行されているプロセス401のGPGPU21(図2参照)の割り振りに関する情報(割振情報)を保持するものである。
また、チェックポイントデータ保持領域202は、GPGPU21が実行するプロセス401のチェックポイントデータが格納される記憶領域である。チェックポイントデータは、登録された時点におけるプロセス401の実行状態に関するデータが格納されている。
各ノード1は、ネットワーク2(図3参照)で接続され、クラスタZ2(図5参照)構成をとることで、計算機システムZ1はSSIとして動作する。すなわち、複数ノード1にまたがってリアルタイムに状態同期を行うことで、計算機システムZ1は、仮想的に1つのノードとして動作する。
そして、計算機システムZ1に共通のプロセステーブル201及びチェックポイントデータ保持領域202として、グローバルプロセステーブル301及びグローバルチェックポイントデータ保持領域(記憶部)302を有している。
グローバルプロセステーブル301には、計算機システムZ1におけるノード1間で共有すべき割振情報が格納されている。すなわち、プロセステーブル201が自身のノード1における割振情報のみを格納しているのに対し、グローバルプロセステーブル301には、計算機システムZ1の各ノード1から登録された割振情報が格納されている。
また、グローバルチェックポイントデータ保持領域302には、計算機システムZ1におけるノード1間で共有すべきチェックポイントデータが格納されている。すなわち、チェックポイントデータ保持領域202が自身のノード1におけるチェックポイントデータのみを格納しているのに対し、グローバルチェックポイントデータ保持領域302には、計算機システムZ1の各ノード1から登録されたチェックポイントデータが格納されている。
なお、グローバルプロセステーブル301及びグローバルチェックポイントデータ保持領域302には、計算機システムZ1で実行されるすべてのプロセス401に関する情報が格納される必要はなく、所定の設定に基づいて選択されたプロセス401に関する情報が格納されればよい。
グローバルプロセステーブル301及びグローバルチェックポイントデータ保持領域302は、各ノード1が同一のデータを常時同期させながら保持している。
<機能ブロック図>
図2は、本実施形態に係るノードの構成図である。
ノード1は、CPU11、GPGPU21、CPU用メモリ12、GPGPU用メモリ22、HD(Hard Disk)等の記憶装置31及び入力装置(入力部)33を有するコンピュータである。なお、図2に示す例では、ノード1に対し、GPGPU21(21a〜21b)が3つ搭載されているが、1つのGPGPU21が備えられてもよいし、2つ又は4つ以上のGPGPU21がノード1に搭載されてもよい。
CPU11、GPGPU21及び記憶装置31は、バス32によって接続されている。
そして、ノード1には、CPU11に対応して設置されているCPU用メモリ12、各GPGPU21に対応して設置されているGPGPU用メモリ22a〜22cを有している。
また、CPU用メモリ12には、プロセステーブル201、チェックポイントデータ保持領域202、グローバルプロセステーブル301及びグローバルチェックポイントデータ保持領域302が格納されている。プロセステーブル201、チェックポイントデータ保持領域202、グローバルプロセステーブル301及びグローバルチェックポイントデータ保持領域302については、図1で説明済みであるので、ここでの説明を省略する。なお、プロセステーブル201及びチェックポイントデータ保持領域202をローカル領域200、グローバルプロセステーブル301及びグローバルチェックポイントデータ保持領域302をグローバル領域300と称する。
ここで、グローバル領域300は、グローバルメモリ空間である。グローバルメモリ空間とは、各ノード1において共通して有されているメモリ空間である。例えば、ノード1aのメモリにおけるアドレス「AAA」は、「01AAA」となる(「01」はノード1aの識別番号)。そして、ノード1b,1cは、このメモリアドレス「01AAA」を自身のメモリに割り振ることで、メモリ空間の共有が行われている。すなわち、グローバルメモリ空間における「01AAA」は、ノード1aのメモリにおけるアドレスを指すとともに、ノード1b及びノード1cのメモリにおけるアドレスをも指している。
なお、プロセステーブル201、チェックポイントデータ保持領域202、グローバルプロセステーブル301及びグローバルチェックポイントデータ保持領域302は、記憶装置31に格納されてもよい。
また、記憶装置31に格納されているプログラムがCPU用メモリ12に展開され、CPU11によって実行されることで、処理部100及び処理部100を構成している割振処理部101、チェックポイント処理部102、リカバリ処理部103及び監視処理部104が具現化している。
割振処理部101は、プロセス401をGPGPU21や、自身におけるCPU11に割り振る。
チェックポイント処理部102は、GPGPU21に割り振ったプロセス401の割振情報や、チェックポイントデータを、プロセステーブル201や、チェックポイントデータ保持領域202、グローバルプロセステーブル301、グローバルチェックポイントデータ保持領域302に格納する。また、チェックポイント処理部102は、他のノード1に障害が生じた際において、グローバル領域300からチェックポイントデータを取得する等の処理を行う。
リカバリ処理部103は、他のノード1において、障害が発生した際、チェックポイント処理部102が取得したチェックポイントデータを基に、障害が発生したノード1で実行されていたプロセス401を、自身のノード1で実行する。
監視処理部104は、障害が発生したノード1があるか否かを監視する。
なお、割振処理部101、チェックポイント処理部102、リカバリ処理部103及び監視処理部104が行う詳細な処理の流れについては後記して説明する。
各GPGPU用メモリ22a〜22cには、割振処理部101によって割り振られたプロセス401(401a〜401c)が、GPGPU21a〜21cによって実行されている。
<ハードウェア構成>
図3は、計算機システムにおける各ノードのハードウェア構成を示す図である。
ここでは、ネットワーク2によって接続されたノード1が2つあり(ノード1a,1b)、各ノード1において1つのCPU11と、3つのGPGPU21とが備わっている場合を示す(GPGPU21a〜GPGPU21c)。
図2で説明しているように、CPU11に対応してCPU用メモリ12が備わっており、GPGPU21に対応してGPGPU用メモリ22も3つ備わっている(GPGPU用メモリ22a〜22c)。
そして、図3に示すように、CPU11と、各GPGPU21はバス32によって接続され、CPU用メモリ12−GPGPU用メモリ22(22a〜22c)間のデータ転送はDMA(Direct Memory Access)により行われる。
なお、ここでは、1つのノード1が有するGPGPU21の数が、それぞれのノード1において同じであるとしているが、異なっていてもよい。また、ここでは、1つのノード1が1つのCPU11を有するシングルコアを想定しているが、2つ以上のCPUを有するマルチコアの構成を有してもよい。
<プロセステーブル及びグローバルプロセステーブル>
図4は、本実施形態に係るプロセステーブル及びグローバルプロセステーブルの例を示す図である。
プロセステーブル201及びグローバルプロセステーブル301において、「GPGPU ID」の欄には、GPGPU21デバイスの識別子が格納される。「Process ID」の欄には、「GPGPU ID」欄に登録されているGPGPU21に割り振るプロセス401の識別子が格納される。「メソッド名」の欄には、GPGPU21に割り振るプロセス401のメソッド名が格納される。なお、括弧内はメソッドの引数である。「メモリ開始アドレス」には、チェックポイントデータ保持領域202又はグローバルチェックポイントデータ保持領域302の開始地点を表すアドレスが格納される。「メモリサイズ」の欄には、チェックポイントデータ保持領域202の大きさを示す値が格納される。
このように、プロセステーブル201及びグローバルプロセステーブル301は、同じ構成を有しているが、前記したように、プロセステーブル201が自身のノード1における割振情報のみを格納しているのに対し、グローバルプロセステーブル301には、計算機システムZ1の各ノード1から登録された割振情報が格納されている。
<計算機システムの構成>
図5は、本実施形態で使用される計算機システムの構成を示す図である。
計算機システムZ1(図1参照)において、複数のノード1(1a〜1c)は高速なネットワーク2を介して接続されるクラスタZ2構成となっている。
OS402(図1参照)及びプロセス401は各ノード1上で動作し、各プロセス401がリアルタイムに状態同期を行う事で、仮想的に1つのシステムとして動作する。
そして、ノード1のうちの1つにおける状態や、データに変更が生じた場合、ノード1は、即座に差分データ403を他のノード1へ送信することにより、クラスタZ2全体の同期を行う。
<プロセスの割り振り>
図6は、本実施形態に係るプロセスの割振手順を示すシーケンス図である。適宜、図2を参照する。なお、図6に示すノード1では、3つのGPGPU21a〜21cが備えられており、そのうち、2つのGPGPU21に対してプロセス401が割り振られる場合を示す。図6における各処理の詳細は後記して説明する。
まず、CPU11は、プロセスaをGPGPU21へ割り振るべきか否かを判定し、割り振る場合、割振処理部101は、GPGPU21(ここでは、GPGPU21a)へプロセスaを割り振るプロセスaの割振処理を行う(S101)。
なお、CPU11が、どのGPGPU21にプロセス401を割り振るかは、図示しないスケジューラの指示等に従ってCPU11が判断する。
また、CPU11はプロセスaに関するチェックポイントを生成し、生成したチェックポイントのデータ(チェックポイントデータ)をチェックポイントデータ保持領域202や、グローバルチェックポイントデータ保持領域302に格納する。また、CPU11は、該GPGPU21へのプロセス401の割振情報をプロセステーブル201や、グローバルプロセステーブル301に格納する。このようにして、CPU11は、チェックポイント登録処理を行う(S102)。チェックポイントデータがグローバルチェックポイントデータ保持領域302に格納されたり、割振情報がグローバルプロセステーブル301に格納されたりすることによって、チェックポイントデータや、割振情報が計算機システムZ1内の各ノード1で共有される。
プロセスaを割り振られたGPGPU21aは、プロセスaの実行を開始する(S151)。
同様に、CPU11は、プロセスbをGPGPU21へ割り振るべきか否かを判定し、割り振る場合、CPU11は、GPGPU21(ここでは、GPGPU21b)へプロセスbを割り振るプロセスbの割振り処理を行う(S111)。また、CPU11はプロセスbに関するチェックポイントを生成し、チェックポイント登録処理を行う(S112)。
プロセスbを割り振られたGPGPU21bは、プロセスbの実行を開始する(S161)。
プロセスaの処理が終了すると(S152)、CPU11は、GPGPU21aからプロセスaの返却値を受け取り、データの破損や欠落、エラー等が無いこと等を確認することで正当性を確認する(S121)。正当性の確認後、CPU11が、プロセスaのチェックポイント解除処理を行う(S122)。チェックポイント解除処理については後記して説明する。
同様に、プロセスbの処理が終了すると(S162)、CPU11が、GPGPU21bからのプロセスbの返却値を受け取り、データの破損や欠落、エラー等が無いことを確認し正当性を確認する(S131)。正当性の確認後、チェックポイント処理部102が、プロセスbのチェックポイント解除処理を行う(S132)。
<フローチャート>
図7及び図8は、本実施形態に係るGPGPUへのプロセス割振手順の詳細を示すフローチャートである。
まず、割振処理部101が、CPU11及びGPGPU21でのプロセス401のスコアSを算出する(図7のS201)。
このスコアSiは、例えば、以下の式(1)で算出される。
=tm+s ・・・ (1)
ここで、iはCPU11もしくはGPGPU21を示す。そして、式(1)におけるtm及びsは以下の式(2)及び式(3)で定義される。
Figure 0006495779

ここで、Cは、CPU11もしくはGPGPU21でのプロセス401の計算試行回数であり、tiは、1回のプロセス401の計算試行における計算時間である。
そして、割振処理部101は、算出したスコアを基に、処理対象となっているプロセス401をGPGPU21に割り振るか否かを判定する(S202)。具体的には、割振処理部101は、CPU11及びGPGPU21のうち、スコアの小さい方にプロセス401を割り振る。ちなみに、ステップS202では、処理対象となっているプロセス401をCPU11に割り振るか、GPGPU21に割り振るかを決めており、どのGPGPU21に割る振るかまでは決めていない。複数あるGPGPU21のうち、どのGPGPU21にプロセス401を割り振るかは、前記したように、図示しないスケジューラの指示等に基づいて行われる。
なお、ここでは、スコアを基にプロセス401の割り振りを決定しているが、スコアに限らなくてもよい。また、ステップS201,S202の処理は、図6のステップS101、S111の処理に相当する。
ステップS202の結果、GPGPU21に割り振らないと判定した場合(S202→No)、処理部100は、自身で処理対象となっているプロセス401を実行し、計算を行う(S211)。
ステップS202の結果、GPGPU21に割り振ると判定した場合(S202→Yes)、チェックポイント処理部102はチェックポイントを生成し(S221)、生成したチェックポイントのデータ(チェックポイントデータ)及び割振情報をローカル領域200に格納する(S222)。具体的には、チェックポイント処理部102は、チェックポイントデータをチェックポイントデータ保持領域202に格納し、割振情報をプロセステーブル201に格納する。
その後、チェックポイント処理部102は、当該チェックポイントデータ及び割振情報をグローバル領域300に格納するか否かを判定する(S223)。どのチェックポイントデータ及び割振情報をグローバル領域300に格納するか否かは、ユーザが任意に設定できる。例えば、実行されたすべてのプロセス401のチェックポイントデータ及び割振情報をグローバル領域300に格納するようにしてもよいし、特定の種類のプロセス401についてチェックポイントデータ及び割振情報をグローバル領域300に格納するようにしてもよい。このようにグローバル領域300に格納する情報を選択可能とすることで、グローバル領域300のリソースを節約することができる。
ステップS223の結果、グローバル領域300に格納しない場合(S223→No)、処理部100は、ステップS231へ処理を進める。
ステップS223の結果、グローバル領域300に格納する場合(S223→Yes)、チェックポイント処理部102は、チェックポイントデータ及び割振情報をグローバル領域300に格納する(S224)。具体的には、チェックポイント処理部102は、チェックポイントデータをグローバルチェックポイントデータ保持領域302に格納し、割振情報をグローバルプロセステーブル301に格納する。ステップS224の処理により、チェックポイントデータ及び割振情報が、計算機システムZ1における各ノード1で共有される。
ステップS221〜S224の処理は、図6のステップS102,S112の処理に相当する。
そして、割振処理部101は、処理対象となるプロセス401をGPGPU21へ割り振る(S231)。前記したように、プロセス401は図示しないスケジューラの指示に従って割り振られるが、適当な(例えば、ランダムに)GPGPU21に割り振られてもよいし、所定のルールに従って割り振られてもよい。GPGPU21は、並列処理が可能であるため、プロセス401を割り振られたGPGPU21が別のプロセス401を実行中であっても構わない。
ステップS231は、図6のステップS101,S111に相当する処理である。このように、図6では、わかりやすくするため、プロセス401の割振処理の後に、チェックポイント登録処理が行われているが、実際には、図7に示すように、プロセス401の割振処理と、チェックポイント登録処理は、並行して行われる。
GPGPU21は、割り振られたプロセス401を実行し(図8のS233)、計算処理を行う(S234)。ステップS233,S234の処理は、図6のステップS151、S161の処理に相当する。ちなみに、図8において、破線枠の処理はGPGPU21での処理を示している。同様に、実線枠の処理はCPU11での処理を示している。
計算処理を終了したGPGPU21は、返却値をCPU11に返す(S235)。ステップS235は、図6のステップS152,S162に相当する処理である。
処理部100は、返された返却値を取得し、返却値においてデータの欠損や、データの欠落、エラー等がないか否かといった正当性があるか否かを判定する(S236)。ステップS237の処理は、図6のステップS121、S131の処理に相当する。
ステップS236の結果、正当性がない場合(S236→No)、割振処理部101は、チェックポイントデータを取得し(S237)、割振処理部101は。取得したチェックポイントデータを基にGPGPU21に再計算を行わせる。GPGPU21はステップS233へ処理を戻し、GPGPU21が再計算を行う。なお、ステップS237で割振処理部101は、チェックポイントデータを、ローカル領域200から取得してもよいし、グローバル領域300から取得してもよい。GPGPU21による再計算において、グローバル領域300に格納されているチェックポイントデータを使用することで、ローカル領域200に格納されているチェックポイントデータを使用して再計算を行う場合と同様、計算の信頼性を向上させることができる。なお、グローバル領域300に格納されているチェックポイントデータを基にGPGPU21に再計算を行わせることは、一般的なチェックポイントデータを基に再計算を行わせることと同様の処理であるため、ここでの詳細な説明を省略する。
ステップS236の結果、正当性がある場合(S236→Yes)、プロセステーブル201からレコードを削除し(S241)、チェックポイント処理部102が、チェックポイントデータ保持領域202に格納されているチェックポイントデータを削除する(S242)。
その後、チェックポイント処理部102は、処理対象となっているプロセス401に関するチェックポイントデータや、割振情報がグローバル領域300にデータが保存されているか否かを判定する(S243)。処理対象となっているプロセス401に関するチェックポイントデータや、割振情報がグローバル領域300にデータが保存されているか否かは、チェックポイント処理部102が、グローバルプロセステーブル301の「Process ID」の欄を参照すること判定される。
ステップS243の結果、グローバル領域300にデータが保存されていない場合(S243→No)、処理部100は処理を終了する。
ステップS243の結果、グローバル領域300にデータが保存されている場合(S243→Yes)、チェックポイント処理部102は、グローバルプロセステーブル301における該当するレコードを削除し(S244)、グローバルチェックポイントデータ保持領域302に格納されているデータを削除し(S245)、処理を終了する。
ステップS241〜S245の処理は、図6のステップS122,S132の処理に相当する。
このように、プロセス401の終了後にローカル領域200及びグローバル領域300に格納されているチェックポイントデータを削除することで、ローカル領域200及びグローバル領域300のリソースを有効に使用することができる。
<リカバリ処理の実際>
図9は、本実施形態に係る計算機システムにおけるリカバリの手順を示すシーケンス図である。図9における各処理の詳細は後記して説明する。
ここでは、ノード1cが監視処理部104を実行している監視用ノードであり、ノード1aが計算アプリケーションのプロセス401を実行している。ノード1bはノード1aにノード単位の障害が発生したときに、プロセス401を代替実行するノード1である。なお、ここでは、1つのノード1に1つのGPGPU21が備えられている例を示しているが、1つのノード1に複数のGPGPU21が備えられていてもよい。
また、図9において、ノード1aにおけるCPU11をCPU11Aと称し、ノード1bにおけるCPU11をCPU11Bと称し、ノード1cにおけるCPU11をCPU11Cと称することとする。さらに、図9では、ノード1aにおけるGPGPU21をGPGPU21Aと称し、ノード1bにおけるGPGPU21をGPGPU21Bと称し、ノード1cにおけるGPGPU21をGPGPU21Cと称することとする。
まず、ノード1aのCPU11Aは、プロセスaをGPGPU21へ割り振るべきか否かを判定し、割り振る場合、CPU11Aは、ノード1aのGPGPU21へプロセスaを割り振るプロセスaの割振処理を行う(S301)。また、CPU11Aはプロセスaに関するチェックポイントを生成し、生成したチェックポイントデータをチェックポイントデータ保持領域202や、グローバルチェックポイントデータ保持領域302に格納する。また、CPU11Aは、該GPGPU21への割振情報をプロセステーブル201や、グローバルプロセステーブル301に格納する。このようにして、CPU11Aは、チェックポイント登録処理を行う(S302)。チェックポイント登録処理によって、チェックポイントデータ及び割振情報がノード1b及びノード1cに共有される(S303)。
プロセスaを割り振られたGPGPU21Aは、プロセスaの実行を開始する(S311)。
なお、ステップS301,S302,S303,S311は、図6のステップS101、S102,S111,S112,S151,S161と同様の処理であるので、ここでの説明を省略する。
ここで、プロセスaの実行中にノード1aに障害が発生する(S321)と、ノード1cのCPU11Cで実行されている監視処理部104(図2参照)が、プロセス401を代替実行するノード1としてノード1bにプロセスaの起動を指示する(S322)。なお、プロセス401の代替実行を行うノード1の選定は、各ノード1で実行されている、図示しないスケジューラの指示に基づいて行われる。
ノード1bのCPU11Bは、GPGPU21Bにおいてプロセスaを起動する(S331)。CPU11Bは、一般的に行われているコンテキストスイッチの手法でプロセスaを起動(再開)するが、この際、グローバルチェックポイントデータ保持領域302に格納されているチェックポイントデータを参照し、GPGPU21Bに該チェックポイントに基づいてプロセスaを開始させる(S341)。
その後、プロセスaが終了する(S342)と、ノード1bのCPU11Bが、GPGPU21Bから送られた返却値を基に正当性確認処理を行い(S332)、ローカル領域200及びグローバル領域300におけるチェックポイントデータを解除するチェックポイント解除処理を行う(S333)。
ステップS332,S333,S342の処理は、図6のステップS121,S122,S152,S131,S132,S162と同様の処理であるので、ここでの説明を省略する。
その後、ノード1bのCPU11Bは、新たなプロセス401をGPGPU21Bに実行させる等する。
このように監視専用のノード1を設置することで、監視専用のノード1以外のノード1が監視処理部104を実行させる必要がなくなるので、監視専用のノード1以外のノード1の処理負担を軽減させることができる。
<障害検知・リカバリ処理>
図10は、本実施形態に係る障害検知・リカバリ処理の詳細な手順を示すフローチャートである。なお、図10において、一点鎖線で枠が示されている処理はノードcで行われている処理を示し、実線で枠が示されている処理はノード1bのCPU11で行われている処理を示し、破線で枠が示されている処理はノード1bのGPGPU21で行われている処理を示す。
まず、ノード1cの監視処理部104がノード1aにおける障害を検知したか否かを判定する(S401)。ノード1aの障害は、各ノード1から発せられているハートビート等を基に判定される。
ステップS401の結果、障害が検知されていない場合(S401→No)、監視処理部104は、ステップS401へ処理を戻す。
ステップS401の結果、障害が検知されると(S401→Yes)、監視処理部104は、ノード1bにノード1aで実行されていたプロセス401の起動を指示する(S402)。監視処理部104は、各ノード1で実行されている、図示しないスケジューラの指示等に基づいて、プロセスを代替実行するノードを決定する。ステップS401,S402の処理は、図9のステップS322に相当する処理である。
ノード1bのチェックポイント処理部102は、グローバル領域300を参照し、チェックポイントデータを取得する(S411)。
その後、リカバリ処理部103は、実行するプロセス401の「Process ID」をキーとしてグローバルプロセステーブル301を参照する。そして、リカバリ処理部103は、処理対象となっているプロセス401が、障害が発生したノード1aにおけるGPGPU21で実行されていたことを確認すると、取得したチェックポイントデータを基に、GPGPU21にプロセス401を割り振り(S412)、実行させる(S413)。すなわち、ノード1bのリカバリ処理部103は、プロセスIDをキーとして、グローバルプロセスデータ301の「GPGPU ID」の欄を参照し、障害が発生したノード1aにおいて、処理対象となっているプロセス401がGPGPU21で実行されているのを確認する。そして、ノード1bのリカバリ処理部103は、障害が発生したノード1aにおいて、処理対象となっているプロセス401がGPGPU21で実行されていたことから、自身においてもGPGPU21で処理対象となっているプロセス401を実行する。このようにすることで、図7のステップS201で行っていたスコアの算出を再度行う必要がなくなり、処理時間を短縮することができる。
また、このようにすることで、障害が発生したノード1におけるGPGPU用メモリ22の内容を移行する必要がなくなるので、移行に要する処理コストを低減することができる。
また、リカバリ処理部103は、グローバルチェックポイントデータ保持領域302に格納されている、再開するプロセス401に関するチェックポイントデータを、自身のチェックポイントデータ保持領域202にコピーする。また、リカバリ処理部103は、該プロセス401の割振情報を、グローバルプロセステーブル301から、再開するプロセス401に関する割振情報をプロセステーブル201にコピーする。
なお、ノード1bがプロセス401を実行(再開)する手順は、前記したように、一般的なコンテキストスイッチの手法において、コンテキストの保存領域の代わりにグローバル領域300を参照することで行われる。すなわち、一般的なコンテキストスイッチのためのデータの読み込み元をグローバルチェックポイントデータ保持領域302にすることで、本実施形態の効果を得ることができる。つまり、一般的なコンテキストスイッチのためのプログラムを利用することができる。
また、前記したように、リカバリ処理部103は、再開対象となっているプロセス401を、適当なGPGPU21もしくは所定のルールに基づいてGPGPU21に割り振る。
ここで、ステップS411,S412の処理が図9のステップS331の処理に相当し、ステップS421の処理が図9のステップS341の処理に相当する。
なお、本実施形態では、ノード1cのみが監視処理部104を実行しているが、ノード1a〜1cのそれぞれが監視処理部104を実行していてもよい。例えば、ノード1aに障害が発生したことを、ノード1b及びノード1cが検知すると、ノード1b及びノード1cは図示しないスケジューラの指示に従ってプロセス401を実行する。すなわち、図10におけるステップS402の処理が、スケジューラからの指示に変更されること以外は、図10における処理を同様の処理が行われる。ここで、スケジューラは、各ノード1で実行されているものであり、各ノード1間で同期をとりつつ、プロセス401の実行管理を行っているものである。
このように、監視処理部104を分散して実行させることで、ノード1の障害検知の精度を向上させることができる。
本実施形態によれば、CPU11や、GPGPU21等の異なるプロセッサを有しているノード1で構成される計算機システムZ1において、すべてのノード1間で、チェックポイントデータを共有して保持することで、計算機システムZ1内のノード1に障害が発生しても、チェックポイントデータを基に、他のノード1でプロセス401を再開することができるので、ノード1の障害に対する計算機システムZ1の信頼性を向上させることができる。
なお、本実施形態では、ローカル領域200及びグローバル領域300において、GPGPU21が実行しているプロセス401に関する情報が格納されているとしているが、CPU11が実行しているプロセスに関する情報が格納されてもよい。
1,1a〜1c ノード(演算装置)
2 ネットワーク
11 CPU(演算部)
12 CPU用メモリ
21,21a〜21c GPGPU(演算部)
22,22a〜22c GPGPU用メモリ
100 処理部
101 割振処理部
102 チェックポイント処理部
103 リカバリ処理部
104 監視処理部
200 ローカル処理部
201 プロセステーブル
202 チェックポイントデータ保持領域
300 グローバル領域
301 グローバルプロセステーブル
302 グローバルチェックポイントデータ保持領域(記憶部)
401,401a〜401c プロセス(演算処理)
Z1 計算機システム

Claims (4)

  1. 複数の異なる演算部を具備する演算装置が、互いに複数接続しているシステムにおいて、
    前記演算装置が、
    各演算部に対し演算処理の割り振りを行うステップと、
    前記演算処理の割り振りを決定すると、前記演算処理に関するチェックポイントを生成するステップと、
    通信ネットワークによって、前記システムにおけるすべての演算装置間で、個々の前記演算装置のメモリに設けられているメモリ領域であるグローバル領域に同一の前記チェックポイントに関する情報を同期させて保存するステップと、
    前記演算処理を行っている他演算装置における前記演算部の障害を検出すると、前記障害を生じていない別の演算装置が、前記グローバル領域に保存したチェックポイントに関する情報を読み出し、前記読みだしたチェックポイントに関する情報に従って前記演算処理を再開するステップと、
    を実行することを特徴とする演算処理管理方法。
  2. 前記同期させてグローバル領域に保存するチェックポイントに関する情報を選択可能である
    ことを特徴とする請求項1に記載の演算処理管理方法。
  3. 前記演算装置が、
    個々の前記演算装置のメモリに設けられているメモリ領域であるローカル領域に前記演算装置自身に関するチェックポイントを保存し、
    前記演算処理が終了すると、前記グローバル領域及び前記ローカル領域から、該演算処理に関するチェックポイントに関する情報を削除するステップ
    を実行することを特徴とする請求項1又は請求項2に記載の演算処理管理方法。
  4. 複数の異なる演算部を具備する演算装置が、互いに複数接続しているシステムを構成する演算装置であって、
    各演算部に対し演算処理の割り振りを行う割振処理部と、
    前記演算処理の割り振りを決定すると、前記演算処理に関するチェックポイントを生成し、通信ネットワークによって、前記システムにおけるすべての演算装置間で、個々の前記演算装置のメモリに設けられているメモリ領域であるグローバル領域に同一の前記チェックポイントに関する情報を同期させて保存するチェックポイント処理部と、
    前記演算処理を行っている他演算装置における前記演算部の障害を検出すると、前記グローバル領域に保存したチェックポイントを読み出し、前記読みだしたチェックポイントに従って前記演算処理を再開するリカバリ処理部と、
    を有することを特徴とする演算装置。
JP2015158741A 2015-08-11 2015-08-11 演算処理管理方法及び演算装置 Active JP6495779B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015158741A JP6495779B2 (ja) 2015-08-11 2015-08-11 演算処理管理方法及び演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015158741A JP6495779B2 (ja) 2015-08-11 2015-08-11 演算処理管理方法及び演算装置

Publications (2)

Publication Number Publication Date
JP2017037507A JP2017037507A (ja) 2017-02-16
JP6495779B2 true JP6495779B2 (ja) 2019-04-03

Family

ID=58048608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015158741A Active JP6495779B2 (ja) 2015-08-11 2015-08-11 演算処理管理方法及び演算装置

Country Status (1)

Country Link
JP (1) JP6495779B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7536591B2 (en) * 2003-11-17 2009-05-19 Virginia Tech Intellectual Properties, Inc. Transparent checkpointing and process migration in a distributed system
JP5672521B2 (ja) * 2010-03-05 2015-02-18 日本電気株式会社 コンピュータシステム、およびそのチェックポイントリスタート方法
US9021299B2 (en) * 2011-02-18 2015-04-28 Ab Initio Technology Llc Restarting processes
US9372752B2 (en) * 2013-12-27 2016-06-21 Intel Corporation Assisted coherent shared memory

Also Published As

Publication number Publication date
JP2017037507A (ja) 2017-02-16

Similar Documents

Publication Publication Date Title
Lorch et al. The SMART way to migrate replicated stateful services
US7770064B2 (en) Recovery of application faults in a mirrored application environment
US11016861B2 (en) Crash recoverability for graphics processing units (GPU) in a computing environment
US20170168756A1 (en) Storage transactions
JP6457633B2 (ja) データベース・クラスタのデータ管理方法、ノード、及びシステム
JP6123626B2 (ja) 処理再開方法、処理再開プログラムおよび情報処理システム
US10387053B1 (en) Memory synchronization in a distributed computing system
CN109271376A (zh) 数据库升级方法、装置、设备及存储介质
US9436554B2 (en) Information processing apparatus and data repairing method
JP2014044553A (ja) プログラム、情報処理装置および情報処理システム
JP2006139621A (ja) マルチプロセッシングシステム及びマルチプロセッシング方法
JP6244949B2 (ja) 情報処理装置、制御方法、および制御プログラム
JP4560074B2 (ja) 仮想計算機システム及び同システムにおける仮想計算機復元方法
CN107209748A (zh) 信息处理设备、信息处理方法、主处理器核心、程序、信息处理方法和副处理器核心
US10169441B2 (en) Synchronous data replication in a content management system
JP5672521B2 (ja) コンピュータシステム、およびそのチェックポイントリスタート方法
JP6495779B2 (ja) 演算処理管理方法及び演算装置
CN117056123A (zh) 数据恢复方法、装置、介质及电子设备
CN116680211A (zh) 虚拟内存管理方法、装置、电子设备和存储介质
US10896201B2 (en) Synchronization of block based volumes
US9952941B2 (en) Elastic virtual multipath resource access using sequestered partitions
JP2014153935A (ja) 並列分散処理制御装置、並列分散処理制御システム、並列分散処理制御方法および並列分散処理制御プログラム
JP2010231295A (ja) 解析システム
JP2001022720A (ja) マルチプロセッサシステム
US10592127B2 (en) Method and system for allocating mirrored memories

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180508

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181204

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190130

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190307

R150 Certificate of patent or registration of utility model

Ref document number: 6495779

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150