JP7419157B2 - プログラム生成装置、並列演算デバイス、及び、並列演算デバイスに並列演算を実行させるためのコンピュータプログラム - Google Patents

プログラム生成装置、並列演算デバイス、及び、並列演算デバイスに並列演算を実行させるためのコンピュータプログラム Download PDF

Info

Publication number
JP7419157B2
JP7419157B2 JP2020084388A JP2020084388A JP7419157B2 JP 7419157 B2 JP7419157 B2 JP 7419157B2 JP 2020084388 A JP2020084388 A JP 2020084388A JP 2020084388 A JP2020084388 A JP 2020084388A JP 7419157 B2 JP7419157 B2 JP 7419157B2
Authority
JP
Japan
Prior art keywords
calculation
cores
surplus
parallel
redundant
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
JP2020084388A
Other languages
English (en)
Other versions
JP2021179774A (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 JP2020084388A priority Critical patent/JP7419157B2/ja
Priority to US17/246,940 priority patent/US20210357285A1/en
Priority to DE102021204690.8A priority patent/DE102021204690A1/de
Priority to CN202110510303.8A priority patent/CN113672377A/zh
Publication of JP2021179774A publication Critical patent/JP2021179774A/ja
Application granted granted Critical
Publication of JP7419157B2 publication Critical patent/JP7419157B2/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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0775Content or structure details of the error report, e.g. specific table structure, specific error fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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/1629Error detection by comparing the output of redundant processing systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Detection And Correction Of Errors (AREA)
  • Advance Control (AREA)

Description

本発明は、概して、並列演算デバイスにおける誤りの検出に関する。
近年、クラウド側の機器に代えて又は加えて、エッジ側の機器(例えば自動車や産業機器)にAI機能が組み込まれている。
一般に、AI(Artificial Intelligence)機能は、並列演算デバイス(並列演算可能なデバイス)の一例であるGPU(Graphics Processing Unit)により実現される。AI機能による推論の正確性は、推論のモデルの正確性に加えて、当該推論を行うGPUの正確性にも依存する。GPU内の要素は、データ系と制御系に大別することができる。
データ系の誤りを検出する方法としては、冗長符号(例えば、ECC(Error Correcting Code)やCRC(Cyclic Redundancy Code))を用いた誤り検出を採用することができる。
一方、制御系の誤りを検出する方法としては、制御系を含むハードウェア資源の冗長化(例えば、二重化)を採用することができる。しかし、この方法では、多くのハードウェア資源が必要になってしまう。
制御系を含むハードウェア資源の冗長化を避けるべく、特許文献1に開示の方法、すなわち、演算履歴を表すシグネチャを演算するコードをCPU(Central Processing Unit)によるプログラムの実行前に当該プログラムに埋め込む方法を利用することが考えられる。以下、便宜上、シグネチャ演算のコードが埋め込まれる前のプログラム(つまり、オリジナルのプログラム)に記述されているコードが表す演算を「アプリ演算」と言う。
特開平6-83663号公報
特許文献1に開示の方法によれば、定期的に、シグネチャの値を期待値と比較することで、制御系の誤りの有無をチェックすることが期待できる。
しかし、GPUに特許文献1に開示の方法を適用すると、スループットの低下が懸念される。なぜなら、GPUは、複数の演算グループ(一般に、SM(Streaming Multiprocessor)と呼ばれる)を有し、各演算グループが、複数のコアと、複数のコアに命令を割り当てる制御系(典型的には、スケジューラ)とを有するが、このような構成のGPUに特許文献1に開示の方法を適用すると、複数の演算グループの全てのコアにシグネチャ演算が割当てられるためである。
この種の問題は、GPU以外の並列演算デバイスについてもあり得る。
複数の演算グループを有する並列演算デバイスに所定の処理の並列演算を実行させるためのプログラムが入力される。当該プログラムは、所定の処理を構成する複数の演算であるアプリ演算と、冗長演算(アプリ演算の冗長演算であって第1の演算グループにおける余剰コアに割り当てられる演算)と、診断演算(二つ以上の第1の演算グループがそれぞれ有する二つ以上の余剰コアによる同一の冗長演算の冗長演算結果の比較であって第2の演算グループにおける余剰コアに割り当てられる演算)とをそれぞれ規定した情報を有する。余剰コアは、アプリ演算が割り当てられないコアである。一実施形態によれば、このようなプログラムを生成するプログラム生成装置が構築される。
本発明によれば、並列演算デバイスのハードウェア資源の冗長化を招かず且つスループット低下を抑制して制御系の誤りを検出するプログラムを生成することができる。
第1の実施形態に係るプログラム生成装置の構成例を示す。 第2の並列演算プログラムに従う並列演算の概要の一例を示す。 第1の実施形態に係るプログラム生成装置が行う処理の流れの例を示す。 第2の実施形態に係るプログラム生成装置の構成例を示す。 第2の実施形態に係るプログラム生成装置が行う処理の流れの例を示す。 第3の実施形態に係る並列演算デバイスの構成例を示す。 第3の実施形態に係る並列演算デバイスが行う処理の流れの例を示す。 第4の実施形態に係る並列演算デバイスの構成例を示す。 第4の実施形態に係る並列演算デバイスが行う処理の流れの例を示す。 第4の実施形態に係る並列演算デバイスが行う処理の一例を示す。 第2の並列演算プログラムの構成例を示す。
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、MVNE(Non-Volatile Memory Express)ドライブ、又は、SCM(Storage Class Memory)でよい。
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。
また、以下の説明では、「yyy部」の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてもよいし、一つ以上のハードウェア回路(例えばFPGA又はASIC)によって実現されてもよいし、それらの組合せによって実現されてもよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び/又はインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
また、以下の説明では、各要素の「識別情報」として、IDが採用されるが、IDに代えて又は加えて、他種の情報(例えば名前)が採用されてよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号を使用することがある。
以下、幾つかの実施形態を説明する。
[第1の実施形態]
図1は、第1の実施形態に係るプログラム生成装置の構成例を示す。
プログラム生成装置100は、所定の処理を並列演算デバイス160に並列演算させるコンピュータプログラムである並列演算プログラムを生成する装置である。並列演算デバイス160は、複数の演算グループ161を有する。各演算グループ161は、複数のコア10と、当該複数のコア10に同一の演算命令を割り当てる制御系20とを有する。なお、本実施形態において、「同一の演算命令」は、同一の計算式の命令に相当する。また、本実施形態において、計算式が同一でも使用される変数値が異なれば、演算は異なる。すなわち、同一の計算式と異なる複数の変数値を用いて行われる複数の演算は、異なる演算である。
プログラム生成装置100は、物理計算機群(一つ以上の物理的な計算機)であってもよいし、物理計算機群(例えば、クラウド基盤)上に実現される論理的な装置でもよい。物理計算機群には、物理的又は論理的な計算リソースとして、インターフェース装置101、記憶装置102及びそれらに接続されたプロセッサ103が備えられる。プログラム生成装置100は、余剰コア特定部111と、プログラム生成部112とを有する。
インターフェース装置101を介して、第1の並列演算プログラム140とデバイス種類情報141とがプログラム生成装置100に入力される。第1の並列演算プログラム140は、所定の処理を構成するアプリ演算を規定しており当該所定の処理の並列演算を並列演算デバイス160(例えばGPU)に実行させるためのコンピュータプログラムである。デバイス種類情報141は、並列演算デバイス160の種類(例えば、デバイス名及び/又は型番)を表す情報を含む。
インターフェース装置101を介して、第2の並列演算プログラム150がプログラム生成装置100から出力される。第2の並列演算プログラム150は、第1の並列演算プログラム140を基にプログラム生成装置100により生成されたコンピュータプログラムである。具体的には、第2の並列演算プログラム150は、第1の並列演算プログラム140が表す所定の処理に加えて並列演算デバイス160の制御系20(典型的にはスケジューラ)の誤りの有無を検出することを並列演算デバイス160に実行させるコンピュータプログラムである。
記憶装置102は、プロセッサ103により実行されるコンピュータプログラム群(一つ以上のコンピュータプログラム)と、プロセッサ103により参照又は更新される情報とを格納する。情報として、例えば、並列演算デバイスDB(データベース)116がある。並列演算デバイスDB116は、並列演算デバイスのデバイス種類毎に、並列演算デバイスの構成を表すデバイス構成情報を含む。並列演算デバイスのデバイス種類毎に、構成情報は、下記(a)~(d)のうちの少なくとも(a)を含む。
(a)並列演算デバイスの総コア数。
(b)演算グループ161の数。
(c)演算グループ161毎の構成情報であるグループ構成情報。各演算グループ161について、グループ構成情報は、当該演算グループ161のIDと当該演算グループ161における各コア10のIDとのうちの少なくとも一つ。
(d)並列演算デバイスの記憶領域のアドレス範囲。
プロセッサ103が、記憶装置102内のコンピュータプログラム群を実行することで、余剰コア特定部111及びプログラム生成部112が実現される。余剰コア特定部111は、第1の並列演算プログラム140を基に、当該並列演算における余剰コア数を特定する。プログラム生成部112は、第1の並列演算プログラム140を基に第2の並列演算プログラム150を生成する。
余剰コア特定部111は、余剰コア数算出部121を有する。余剰コア数算出部121は、入力されたデバイス種類情報をキーに並列演算デバイスDB116からデバイス構成情報を取得し、デバイス構成情報が表す総コア数を特定する。また、余剰コア数算出部121は、第1の並列演算プログラム140(具体的には、例えば、第1の並列演算プログラム140のソースコード)を基に、使用コア10cの総数である使用コア数を算出する。「使用コア」とは、アプリ演算が割り当てられるコアである。余剰コア数算出部121は、総コア数から使用コア数を減算することで余剰コア数を算出する。余剰コア数は、余剰コア10rの総数である。「余剰コア」とは、アプリ演算が割り当てられないコア(例えば、アイドル状態になるコア)である。
プログラム生成部112は、冗長演算コア指定部131と診断演算コア指定部132とを有する。
冗長演算コア指定部131は、算出された余剰コア数と、第1の並列演算プログラム140と、取得されたデバイス構成情報とを基に、例えば下記を行う。
すなわち、冗長演算コア指定部131は、デバイス構成情報を基に、複数の演算グループ161から二つ以上の第1の演算グループ161Aと一つ以上の第2の演算グループ161Bとを決定する。第1の演算グループ161Aは、制御系20の誤り有無を含む診断の対象とされる演算グループである。第2の演算グループ161Bは、各第1の演算グループ161Aについて、当該第1の演算グループ161Aの制御系20Aに誤りが有るか否かの診断を行う演算グループである。
また、冗長演算コア指定部131は、デバイス構成情報を基に、各第1の演算グループ161Aについて、余剰コア10rを決定する。すなわち、各第1の演算グループ161Aが、少なくとも一つの余剰コア10rを有することになる。なお、第2の演算グループ161Bについては、全てのコア10が余剰コア10rである。
また、冗長演算コア指定部131は、第1の並列演算プログラム140を基に、冗長演算を規定した情報を生成する。「冗長演算」は、第1の並列演算プログラム140が規定するアプリ演算の冗長演算である。冗長演算の具体例は後に説明する。
また、冗長演算コア指定部131は、冗長演算を第1の演算グループ161Aの余剰コア10rに割り当てることと、当該冗長演算の結果の格納先(並列演算デバイス160が有する記憶領域における格納先)を決定することとを行う。
また、冗長演算コア指定部131は冗長演算を規定した情報を設定する。編集中プログラム」は、第1の並列演算プログラム140が有しアプリ演算を規定した情報が記述されたプログラムでよく、第2の並列演算プログラム150に至る途中のプログラムに相当する。「冗長演算を規定した情報」は、冗長演算の結果の格納先(例えば、メモリアドレス)を表す情報を含んでもよい。また、「冗長演算を規定した情報」は、冗長演算の割当先のコアのIDを含んでもよい。また、冗長演算コア指定部131は、いずれの演算グループ161が第1の演算グループ161Aであるかといずれの演算グループ161が第2の演算グループ161Bであるかとのうちの少なくとも一つを表す情報を編集中プログラムに設定してもよいし、第1の演算グループ161Aの数と第2の演算グループ161Bの数とのうちの少なくとも一つを表す情報を編集中プログラムに設定してもよい。また、冗長演算コア指定部131は、余剰コア数と使用コア数とのうちの少なくとも一つを表す情報を編集中プログラムに設定してもよい。
診断演算コア指定部132は、冗長演算コア指定部131から出力された情報を基に、診断演算を規定した情報を生成し、当該情報を編集中プログラムに設定する。ここで、「冗長演算コア指定部131から出力された情報」は、編集中プログラム又はそれが有する情報を含む。また、「診断演算」は、二つ以上の第1の演算グループがそれぞれ有する二つ以上の余剰コアによる同一の冗長演算の実行結果の比較であって、第2の演算グループにおける余剰コアに割り当てられる演算である。「診断演算を規定した情報」は、当該診断演算の結果の格納先を表す情報を含んでもよい。また、「診断演算を規定した情報」は、当該診断演算の割当先のコアのIDを含んでもよい。
冗長演算及び診断演算が規定された編集中プログラムが、生成された第2の並列演算プログラム150に相当する。第2の並列演算プログラム150が、インターフェース装置101を介して出力される。
以上の説明によれば、第2の並列演算プログラム150は、第1の並列演算プログラム140に規定されているアプリ演算を規定した情報の他に、冗長演算を規定した情報と診断演算を規定した情報とを有する。ここで、アプリ演算、冗長演算及び診断演算の各々について、演算が同じか異なるかは、例えば、演算において使用される関数それ自体が同じか異なるかであってもよいし、関数それ自体が同じでも変数値が同じか異なるかであってもよい。例えば、関数が同じで変数値範囲が異なるアプリ演算は、異なるアプリ演算でよい。
また、第2の並列演算プログラム150は、下記(A)乃至(E)のうちの少なくとも一つを表す情報を含んでよい。これにより、第2の並列演算プログラム150の実行において並列演算デバイス160に対する詳細な指定が可能である。
(A)いずれの演算グループが第1の演算グループであるかと第1の演算グループの数とのうちの少なくとも一つ。
(B)いずれの演算グループが第2の演算グループであるかと第2の演算グループの数とのうちの少なくとも一つ。
(C)冗長演算について、下記(c1)及び(c2)のうちの少なくとも一つ。
(c1)当該冗長演算が割り当てられる余剰コア。
(c2)前記並列演算デバイスにおける、冗長演算の結果の格納先。
(D)診断演算について、下記(d1)及び(d2)のうちの少なくとも一つ。
(d1)当該診断演算が割り当てられる余剰コア。
(d2)前記並列演算デバイスにおける、診断演算の結果の格納先。
(E)余剰コア数及び使用コア数とのうちの少なくとも一つ。
第2の並列演算プログラム150が並列演算デバイス160により実行されることで、図1が例示する下記が実現される。なお、下記において、いずれの演算グループ161が第1の演算グループ161Aでありいずれの演算グループ161が第2の演算グループ161Bであるかは、第2の並列演算プログラム150において指定されていてもよいし、並列演算デバイス160により決定されてもよい。また、いずれのコア10が使用コア10cでありいずれのコアが余剰コア10rであるかも、第2の並列演算プログラム150において指定されていてもよいし、並列演算デバイス160により決定されてもよい。
・複数の演算グループ161のうちの二つ以上の演算グループ161の各々が、第1の演算グループ161Aであり、一つの演算グループ161が、第2の演算グループ161Bである。
・二つ以上の第1の演算グループ161Aa、161Abの各々について、一つ(又は複数)のコア10が余剰コア10rであり、当該余剰コア10r以外のコア10が使用コア10cである。
・第2の演算グループ161Bにおいて、全てのコア10が余剰コア10rである。
第2の演算グループ161Bの数は、第1の演算グループ161Aの数に依存する。典型的には、第2の演算グループ161Bは、第1の演算グループ161Aより少ない。
図2が、第2の並列演算プログラム150に従う並列演算の概要の一例を示す。
第2の並列演算プログラム150に従い、二つ以上の第1の演算グループ161Aa、161Ab、…に命令Aが割り当てられ、二つ以上の第1の演算グループ161Aa、161Ab、…の各々において、命令Aがキャッシュされる。命令Aは、アプリ演算とそれの冗長演算との命令である。各第1の演算グループ161Aにおいて、制御系20Aが、キャッシュされている命令Aを、当該第1の演算グループ161Aにおける複数のコアに割り当てる、具体的には、命令Aに従うアプリ演算を使用コア10cに割り当て、命令Aに従う冗長演算を余剰コア10rに割り当てる。
第2の並列演算プログラム150に従い、第2の演算グループ161Bに命令Bが割り当てられ、第2の演算グループ161Bにおいて、命令Bがキャッシュされる。命令Bは、診断演算の命令である。第2の演算グループ161Bにおいて、制御系20Bが、キャッシュされている命令Bを、当該第2の演算グループ161Bにおける全ての余剰コア10rBに割り当てる。
命令Aが各第1の演算グループ161Aに割り当てられ命令Bが第2の演算グループ161Bに割り当てられることで、例えば一定時間T毎に、アプリ演算、冗長演算及び診断演算が並列演算デバイス160において並列に実行される。
具体的には、例えば、時刻間t-tにおいて、二つ以上の第1の演算グループ161Aa、161Ab、…が、それぞれ、アプリ演算とそれの冗長演算とを行い、アプリ演算結果と冗長演算結果D1a、D1b、…とを、例えば第2の並列演算プログラム150にそれぞれ規定されている記憶領域に格納する。そして、第2の演算グループ161Bが、当該記憶領域から冗長演算結果D1a、D1b、…を読み出し、読み出した冗長演算結果D1a、D1b、…の比較である診断演算を実行する(例えば、余剰コア10rB1が、D1aとD1bとを比較する)。冗長演算結果D1a、D1b、…が、全て同じであれば、診断演算結果は、いずれの制御系20Aにも誤りが無いという結果である。少なくとも一つの余剰コア10rBが、冗長演算結果の不一致を検出した場合、誤りがあるとの結果を出力する。この結果から、当該不一致の冗長演算結果を出した余剰コア10rを含む演算グループ161A内の制御系20Aに誤りがあると推定できる。いずれかの制御系20Aに誤りがあれば、当該制御系20Aから割り当てられる命令Aに誤りがあり、結果として、当該制御系20Aからの命令Aに従う冗長演算の結果が、正常な制御系20Aからの命令Aに従う冗長演算の結果と一致しないことになる。いずれの二つ以上の第1の演算グループ161Aから出力された冗長演算結果が不一致であったかは、例えば、冗長演算結果の不一致を検出した余剰コア10rBが出力した情報(例えば、冗長演算結果を出力した第1の演算グループ161のIDを含んだ情報)から、並列演算デバイス160の外部システム(例えば上位システム)が特定可能である。
以降、同様の処理が行われる。すなわち、時刻間t-t(n+1)(nは自然数)に、並列に、下記(X)及び(Y)が実行される。演算を規定した情報の少なくとも一部がカーネルとして並列演算デバイス160において実現され当該情報が表す演算が並列演算デバイス160において実行される。
(X)各第1の演算グループ161Aが、アプリ演算と冗長演算とを実行し、アプリ演算結果と冗長演算結果Dna、Dnb、…とを記憶領域に格納する。
(Y)第2の演算グループ161Bが、当該格納された冗長演算結果Dna、Dnb、…を読み出し、それらの比較である診断演算を行い、診断演算結果を記憶領域に格納する。
本実施形態では、時刻間t-t(n+1)のnの値に関わらず、演算グループ161とその役割(診断対象であるか診断を行うか)は固定されているが、nの値によって、演算グループ161とその役割は変化してもよい。例えば、定期的に又は不定期的に、第1の演算グループ161Aから第2の演算グループ161Bに切り替わる演算グループ161と第2の演算グループ161Bから第1の演算グループ161Aに切り替わる演算グループ161とがあってもよい。演算グループ161の役割の変化とそのタイミングを表す情報は第2の並列演算プログラム150に記述され、当該情報を基に、並列演算デバイス160において、演算グループ161の役割の変化が行われてもよい。なお、役割変化が行われても、第1の演算グループ161Aの数と第2の演算グループ161Bの数は維持されてよい。
図3は、プログラム生成装置100が行う処理の流れの例を示す。
第1の入力ソースから、第1の並列演算プログラム140が、余剰コア特定部111及びプログラム生成部112に入力される(S301)。第1の入力ソースは、外部記憶装置やユーザ端末等でよい。
第1の入力ソース又は第2の入力ソースから、デバイス種類情報141が、余剰コア特定部111に入力される(S302)。第2の入力ソースは、例えば、コマンド又はGUI(Graphical User Interface)でよい。
余剰コア特定部111における余剰コア数算出部121が、余剰コア数を算出する(S303)。具体的には、余剰コア数算出部121が、S302で入力されたデバイス種類情報141をキーに並列演算デバイスDB116からデバイス構成情報を取得する。デバイス種類情報141の入力と並列演算デバイスDB116の存在とに代えて、デバイス構成情報それ自体が、例えば第1の入力ソース又は第2の入力ソースから入力されてもよい。余剰コア数算出部121は、取得されたデバイス構成情報が表す総コア数を特定する。また、余剰コア数算出部121は、S301で入力された第1の並列演算プログラム140を基に使用コア数を特定する。余剰コア数算出部121は、総コア数から使用コア数を減算することで、余剰コア数を算出する。具体的には、例えば、余剰コア数算出部121が、第1の並列演算プログラム140を基に、スレッドの数(例えば、1スレッドが1コアに対応)と、ブロック(スレッドの塊)の数とを特定し、スレッド数及びブロック数を基に使用コア数を特定する。例えば、ブロック数が1であり、1ブロックを構成するスレッドの数が700であり、ブロック数が1の場合、使用コア数は、700(=1×700)である。また、例えば、1ブロックを構成するスレッドの数が200であり、ブロック数が5の場合、使用コア数は、1000(=5×200)である。余剰コア数算出部121が、このような使用コア数を総コア数から減算することにより、余剰コア数を算出する。
プログラム生成部112における冗長演算コア指定部131は、S301で入力された第1の並列演算プログラム140と、S303で算出された余剰コア数と、S302で取得されたデバイス構成情報とを基に、冗長演算と、冗長演算の割当先のコア(冗長演算用の余剰コア)と、冗長演算結果の格納先とを決定し、決定されたそれらの内容を表す情報を編集中プログラムに設定する(S304)。
プログラム生成部112における診断演算コア指定部132は、S304での決定の内容と、S302で取得されたデバイス構成情報とを基に、診断演算と、診断演算の割当先のコア(診断演算用の余剰コア)と、診断演算結果の格納先とを決定し、決定されたそれらの内容を表す情報を編集中プログラムに設定する(S305)。これにより、編集中プログラムが第2の並列演算プログラム150となる、言い換えれば、第2の並列演算プログラム150が生成されたこととなる。
診断演算コア指定部132は、生成された第2の並列演算プログラム150を出力する(S306)。
以上、第1の実施形態によれば、第1の並列演算プログラム140に規定されているアプリ演算が割り当てられない複数の余剰コア10rが特定され、第1の演算グループ161A(診断対象の演算グループ)における余剰コア10rにアプリ演算の冗長演算が割り当てられ、第2の演算グループ161B(診断用の演算グループ)における余剰コア10rに診断演算が割り当てられる。各第1の演算グループ161Aの余剰コア10rが冗長演算を行い、第2の演算グループ161Bの余剰コア10rが冗長演算結果の比較である診断演算を行う。不一致の冗長演算結果があれば、当該冗長演算結果を出した余剰コア10rを含む第1の演算グループ161A内の制御系20Aに誤りがあることを検出できる。このようにして、並列演算デバイス160のハードウェア資源の冗長化を招かず且つスループット低下を抑制して制御系20Aの誤りを検出するプログラムを自動生成することができる。
また、第1の実施形態によれば、並列演算デバイス160の総コア数が特定され、第1の並列演算プログラム140を基に使用コア数が特定され、それらの差分が、余剰コア数として算出される。これにより、第1の並列演算プログラム140を実行する並列演算デバイス160に生じる余剰コアの数を正確に特定できる。
第2の並列演算プログラム150の構成は、図11に例示される構成でよい。すなわち、下記に述べる構成が採用されてよい。
第2の並列演算プログラム150は、アプリ演算規定情報1101、冗長演算規定情報1102及び診断演算規定情報1103を有する。
アプリ演算規定情報1101は、アプリ演算を規定した情報である。例えば、アプリ演算規定情報1101は、アプリ演算の命令を表すアプリ演算命令情報1111(例えば、アプリ演算の計算式と変数値範囲とを含んだ情報)、アプリ演算に使用される情報(例えば、計算式の変数値)が入力される位置(例えば、記憶領域のアドレス)を表すアプリ演算入力位置情報1112、及び、アプリ演算の結果の出力先(格納先)を表すアプリ演算出力位置情報1113を含む。例えば、アプリ演算が割り当てられた使用コア10cは、情報1112が表す位置から値を読み出し、当該値を入力として情報1111に従うアプリ演算を行い、当該アプリ演算の結果を、情報1113が表す出力先に出力する。
冗長演算規定情報1102は、冗長演算を規定した情報である。例えば、冗長演算規定情報1102は、冗長演算の命令を表す冗長演算命令情報1121(例えば、冗長演算の計算式と変数値範囲とを含んだ情報)、冗長演算に使用される情報(例えば、計算式の変数値)が入力される位置を表す冗長演算入力位置情報1122、及び、冗長演算の結果の出力先を表す冗長演算出力位置情報1123を含む。例えば、冗長演算が割り当てられた余剰コア10rは、情報1122が表す位置から値を読み出し、当該値を入力として情報1121に従う冗長演算を行い、当該冗長演算の結果を、情報1123が表す出力先に出力する。
診断演算規定情報1103は、診断演算を規定した情報である。例えば、診断演算規定情報1103は、診断演算の命令を表す診断演算命令情報1131(例えば、診断演算の計算式と変数値範囲とを含んだ情報)、診断演算に使用される情報(冗長演算結果)が入力される位置を表す診断演算入力位置情報1132、及び、診断演算の結果の出力先を表す診断演算出力位置情報1133を含む。例えば、診断演算が割り当てられた余剰コア10rBは、情報1132が表す位置から値を読み出し、当該値を入力として情報1131に従う診断演算を行い、当該診断演算の結果を、情報1133が表す出力先に出力する。
情報1101が、アプリ演算コードと呼ばれ、情報1102が、冗長演算コードと呼ばれ、情報1103が、診断演算コードと呼ばれてよい。アプリ演算コード、冗長演算コード及び診断演算コードの少なくとも一つが、複数存在してもよい。
図11が例示する構成は、概念的な構成でよく、実際には一部が重複していてもよい。
例えば、アプリ演算命令情報1111の少なくとも一部(例えば、計算式を表す情報)と冗長演算命令情報1121の少なくとも一部が重複してもよい。具体的には、例えば、第1の並列演算プログラム140が有する単一のアプリ演算コードにおいて、y = a*x + bの計算式と、0≦x≦31を第1の演算グループ160Aaが担当すること、32≦x≦63を第1の演算グループ160Abが担当することとが記述されていたとする。プログラム生成部112が、各第1の演算グループ160Aのx範囲(変数値範囲)を、x範囲の一部が他の第1の演算グループ160Aのx範囲の一部と重複するよう調整することで、冗長演算を規定する。例えば、プログラム生成部112が、第1の演算グループ160Abのx範囲を30≦x≦61に変更することで、x = 30, 31が第1の演算グループ160Aaのx範囲(0≦x≦31)と重複する冗長演算(計算式は、アプリ演算と同じy = a*x + b)を規定する。このように、アプリ演算コードの一部が、アプリ演算と冗長演算(x範囲が30≦x≦31)を行うコードに変わっている。つまり、アプリ演算コードの少なくとも一部が冗長演算コードの少なくとも一部と不可別となり得る。故に、アプリ演算コードと冗長演算コードが組み合わさったコードが存在してもよい。このようなコードが、アプリ演算と冗長演算を規定したコードの一例である。
また、例えば、診断演算では、冗長演算結果の出力先から冗長演算結果が読み出されるので、情報1123及び1132は同一の情報でよい。
[第2の実施形態]
第2の実施形態を説明する。その際、第1の実施形態との相違点を主に説明し、第1の実施形態との共通点については説明を省略又は簡略する。
図4は、第2の実施形態に係るプログラム生成装置の構成例を示す。
プログラム生成装置400において、余剰コア特定部411が、余剰コア数算出部121の他に、余剰コア確保部401を含む。余剰コア確保部401は、算出された余剰コア数が余剰コアの不足を意味する数である場合(言い換えれば、算出された余剰コア数が必要な余剰コア数に満たない場合)、必要な余剰コア数分(又はそれより多い)余剰コアを確保する。
図5は、プログラム生成装置100が行う処理の流れの例を示す。
S301~S303(図3参照)の後、余剰コア確保部401は、第1の並列演算プログラム140を基に必要な余剰コア数を特定し(例えば、第1の並列演算プログラム140に記述されている、アプリ演算を規定した情報から、必要と推定される冗長演算の数を基に、必要な余剰コア数を特定し)、S303で算出された余剰コア数が、特定された必要な余剰コア数未満か否かの判断である不足判断を行う(S501)。不足判断の結果が偽の場合(S501:NO)、算出された余剰コア数を基に、S304~S306(図3参照)が行われる。
不足判断の結果が真の場合(例えば、算出された余剰コア数が0の場合)(S501:YES)、余剰コア確保部401は、第1の並列演算プログラム140を基に特定された使用コア数分の複数の使用コアの一部の使用コアを余剰コアとすることで、必要な余剰コア数分の余剰コアを確保する(S502)。確保された余剰コアの数、言い換えれば、必要な余剰コア数を基に、S304~S306(図3参照)が行われる。
第2の実施形態によれば、余剰コアが不足している場合でも、アプリ演算と並列に冗長演算及び診断演算を必要な余剰コア数分の余剰コアにより実行することができる。
[第3の実施形態]
第3の実施形態を説明する。第3の実施形態は、第1の実施形態に係るプログラム生成装置100又は第2の実施形態に係るプログラム生成装置400により生成された第2の並列演算プログラム150を実行する並列演算デバイス160に関する。
図6は、第3の実施形態に係る並列演算デバイス160の構成例を示す。
並列演算デバイス160は、複数の演算グループ161の他に、命令割当て部601と、記憶領域602(例えば、メモリ)とを有する。
命令割当て部601が、並列演算デバイス160に入力された第2の並列演算プログラム150に記述されている情報(例えば、アプリ演算、冗長演算及び診断演算といった演算を規定した情報)を基に、命令を複数の演算グループ161に割り当てる。
記憶領域602は、アプリ演算結果が格納される領域であるアプリ演算結果領域621と、冗長演算結果が格納される領域である冗長演算結果領域622と、診断演算結果が格納される領域である診断演算結果領域623とを含む。領域621、622及び623は、いずれも、第2の並列演算プログラム150に規定された情報が表す領域である。具体的には、例えば、アプリ演算結果領域621は、図11が示す情報1113が表す領域であり、冗長演算結果領域622は、図11が示す情報1123が表す領域であり、診断演算結果領域623は、図11が示す情報1133が表す領域である。
アプリ演算結果領域621に格納されているアプリ演算結果が、アプリ演算結果に基づく処理を実行する上位システムに出力される(例えば、上位システムにより読み出される)。また、診断演算結果領域623に格納されている診断演算結果が、上位システムに出力される(例えば、上位システムにより読み出される)。上位システムは、例えば、通常、入力された(例えば読み出された)アプリ演算結果を基に、ユーザからのデータ入力無しに処理を走らせる自動処理を行うようになっている。上位システムは、例えば、自動処理を、制御系20の誤りが検出されるまで継続するようになっている。上位システムは、例えば、受信した(例えば読み出された)診断演算結果から、制御系20の誤りが検出されたことを特定した場合、自動処理に代えて、ユーザからのデータ入力を適宜に必要とする手動処理を走らせる。このように、上位システムは、診断演算結果から制御系20の誤りが検出されたか否かに応じて、所定の処理(例えば、処理モード)を変更するか継続するかを決定できる。なお、上位システムは、並列演算デバイス160の一つ以上の外部システムの少なくとも一つの一例でよい。また、アプリ演算結果の出力先の外部システムと診断演算結果の出力先の外部システムは同一でも異なっていてもよい。
並列演算デバイス160は、上位システムのような外部システムに対するインターフェースであり外部システムへ出力されるデータを加工する機能を含む外部インターフェース630を有する。例えば、外部インターフェース630が、診断演算結果領域623に格納されているデータを解析し解析結果を診断演算結果として上位システムに出力してもよい。また、外部インターフェース630としての機能は、図6が示す例の通り、演算グループ161の外で実現されてもよいし、それに代えて又は加えて、アプリ演算結果の出力用の外部インターフェースが各第1の演算グループ161Aの使用コア10cにより実現されてもよいし、診断演算結果の出力用の外部インターフェースが第2の演算グループ161Bの余剰コア10rにより実現されてもよい。
図7は、並列演算デバイス160が行う処理の流れの例を示す。
第2の並列演算プログラム150が命令割当て部601に入力される(S701)。
命令割当て部601が、第2の並列演算プログラム150に基づき、各演算グループ161の制御系20に命令を割り当てる(S702)。具体的には、命令割当て部601は、第1の演算グループ161Aに命令Aを割り当て、第2の演算グループ161Bに命令Bを割り当てる。命令A及び命令Bは、上述した通りである。すなわち、命令Aは、アプリ演算とそれの冗長演算との命令(例えば、一つ以上のアプリ演算コードと、当該一つ以上のアプリ演算コードの各々についての冗長演算コードとが表す演算の命令)である。命令Bは、命令Bは、診断演算の命令(例えば、一つ以上の診断演算コードが表す演算の命令)である。第1の演算グループ161Aにおいて、制御系20Aが、命令Aに従い、アプリ演算コードを使用コア10cに割り当て、冗長演算コードを余剰コア10rに割り当てる。第2の演算グループ161Bにおいて、制御系20Bが、命令Bに従い、診断演算コードを余剰コア10rに割り当てる。
アプリ演算及び冗長演算が並列に実行され、それぞれの実行結果が記憶領域602に格納される(S703)。具体的には、例えば、第2の並列演算プログラム150には、アプリ演算及び冗長演算の各々について、格納先(ここでは、記憶領域602のアドレス)を表す情報が記述されている。各第1の演算グループ161Aにおける使用コア10cが、割り当てられたアプリ演算を実行し、アプリ演算の結果の格納先として指定されているアプリ演算結果領域621に、アプリ演算結果を格納する。各第1の演算グループ161Aにおける余剰コア10rが、割り当てられた冗長演算を実行し、冗長演算の結果の格納先として指定されている冗長演算結果領域622に、冗長演算結果を格納する。このようなS703は、命令Aに従う全てのアプリ演算及び冗長演算が終わるまで繰り返し行われる。
S703と並列に、診断演算が実行され、診断演算結果が記憶領域602に格納される(S704)。具体的には、例えば、第2の並列演算プログラム150には、診断演算について、格納先を表す情報が記述されている。第2の演算グループ161Bにおける余剰コア10rが、割り当てられた命令Bに従い、冗長演算の結果の格納先として指定されている冗長演算結果領域622から冗長演算結果を読み出し、読み出された冗長演算結果を比較する診断演算を実行し、診断演算の結果の格納先として指定されている診断演算結果領域623に、診断演算結果を格納する。このようなS704は、全ての冗長演算結果の比較が終わるまで繰り返し行われる。
アプリ演算結果領域621内のアプリ演算結果が、例えば外部インターフェース630により上位システムに出力される(S705)。S705は、命令Aに従う全てのアプリ演算が終わった後に行われてもよいし、定期的に(例えば、一定時間T毎に(例えば、アプリ演算の都度に))行われてもよい。
診断演算結果領域623内の診断演算結果が、不一致の冗長演算結果が得られたことを意味する結果であるか否かを、例えば外部インターフェース630が判断する(S706)。S706の判断結果が真の場合(S706:YES)、外部インターフェース630が、制御系20に誤りがあることを意味する情報である制御系誤り情報を診断演算結果として上位システムに出力する(S707)。S706及びS707は、命令Bに従う全ての診断演算が終わった後に行われてもよいし、定期的に(例えば、一定時間T毎に(例えば、診断演算の都度に))行われてもよい。
第3の実施形態によれば、第1又は第2の実施形態において生成された第2の並列演算プログラム150を用いて、ハードウェア資源の増大とスループット低下とを抑制して並列演算デバイス160の制御系20の誤りを検出することができる。
なお、第2の並列演算プログラム150は、予め並列演算デバイス160に組み込まれていてもよい。また、第3の実施形態では、第2の並列演算プログラム150は、プログラム生成装置100又は400以外により(例えばユーザにより)生成されたプログラムでもよい。
[第4の実施形態]
第4の実施形態を説明する。その際、第3の実施形態との相違点を主に説明し、第3の実施形態との共通点については説明を省略又は簡略する。
図8は、第4の実施形態に係る並列演算デバイスの構成例を示す。
並列演算デバイス860が、情報管理部801と特徴判定部804とを更に有する。
情報管理部801は、診断演算結果領域623から特定される誤り結果(誤り有りを意味する診断演算結果)に関する情報である制御系誤りDB803(誤り管理情報の一例)を管理する。制御系誤りDB803は、並列演算デバイス860の記憶領域802に格納されるデータベースである。記憶領域802は、例えばメモリにおける領域であり、記憶領域602と同じ又は異なる領域である。このような情報管理部801により、並列演算デバイス860の後述のデバイス特徴の判定が可能である。制御系誤りDB803は、例えば、後述するように、誤り結果が得られた命令毎の誤り回数(誤り結果が得られた回数)を表す情報と、誤り結果毎の発生時刻を表す情報とを含む。
特徴判定部804が、制御系誤りDB803を基に、並列演算デバイス860の特性と状況のうちの少なくとも一つを含むデバイス特徴を判定する。例えば外部インターフェース630が、判定されたデバイス特徴を表す情報を、上位システムに出力する。これにより、上位システムが、デバイス特徴に応じた処理を実行することが可能である。本実施形態は、デバイス特徴の少なくとも一部として、脆弱命令とエラー種類とのうちの少なくとも一つが採用される。脆弱命令とエラー種類についてはそれぞれ後述する。
なお、デバイス特徴を表す情報の出力先となる外部システムは、アプリ演算結果の出力先と同じでも異なっていてもよいし、診断演算結果の出力先と同じでも異なっていてもよい。
図9は、並列演算デバイス860が行う処理の流れの例を示す。
図7のS701~S707に加えて、S706:YESの場合、S908及びS909が行われる。すなわち、情報管理部801は、制御系誤りDB803を更新する(S908)。特徴判定部804が、制御系誤りDB803を基に、並列演算デバイス860のデバイス特徴を判定し、例えば外部インターフェース630が、判定されたデバイス特徴を表す情報を、上位システムに出力する(S909)。
図10は、並列演算デバイス860が行う処理の一例を示す。
並列演算デバイス860の内部又は外部に、時刻ソース1011がある。時刻ソース1011は、例えばGPS(Global Positioning System)センサ又はタイマでよく、時刻を表す情報を出力する。時刻ソース1011は、例えば定期的に時刻を表す情報を出力する。
制御系誤りDB803が、第1のテーブル1001、第2のテーブル1002及び第3のテーブル1003を含む。第1のテーブル1001及び第2のテーブル1002は、脆弱命令の判定に利用される情報の一例であり、第3のテーブル1003は、エラー種類の判定に利用される情報の一例である。第1のテーブル1001及び第2のテーブル1002が存在せず第3のテーブル1003が存在してもよいし、第3のテーブル1003が存在せず第1のテーブル1001及び第2のテーブル1002が存在してもよい。
第1のテーブル1001は、時刻と命令Aとの対応関係を表すテーブルである。情報管理部801は、命令Aを、命令割当て部601から取得してもよいし、第1の演算グループ161Aから取得してもよい。また、命令Aそれ自体に代えて、命令AのIDが取得されて第1のテーブル1001に登録されてもよい。
第2のテーブル1002は、命令Aと誤り回数との対応関係を表すテーブルである。「誤り回数」とは、誤り結果が発生した回数である。
第3のテーブル1003は、誤り発生時刻のリストに相当するテーブルである。「誤り発生時刻」とは、誤り結果が発生した時刻である。
各時刻間t-t(n+1)について、命令Aがいずれかの第1の演算グループ161Aに割り当てられた場合、並列演算デバイス860では、例えば、この時刻間t-t(n+1)内に、以下のような処理が行われる。
・情報管理部801が、当該割り当てられた命令A(例えば、命令A3)と、時刻ソース11が出力する情報が表す時刻t(例えば、時刻t11)とを取得し、取得した時刻と命令Aとの組を第1のテーブル1001に追加する。
・当該命令Aについて、この時刻間t-t(n+1)に、冗長演算及び診断演算が行われる。
・診断演算結果領域623に誤り結果が格納された場合、情報管理部801が、時刻t(例えば、時刻t11)をキーに第1のテーブル1001から命令A(例えば、命令A3)を特定し、特定した命令Aに対応した誤り回数(第2のテーブル1002に登録されている誤り回数)を1インクリメントする。このようにして、当該命令A(例えば、命令A3)の誤り回数が更新される。
・診断演算結果領域623に誤り結果が格納された場合、情報管理部801が、時刻tを誤り発生時刻として第3のテーブル1003に登録する。
特徴判定部804が、例えば定期的に又は不定期的に、制御系誤りDB803のうちの第2のテーブル1002を参照し、誤り回数が最も多い命令Aを、脆弱命令と判定する。「誤り回数が最も多い命令A」は、第2のテーブル1002が表す誤り回数が相対的に多い命令Aの一例である。「誤り回数が最も多い命令A」に代えて、誤り回数が上位X%の命令Aが脆弱命令と判定されてもよい。また、それに代えて、誤り回数が所定の閾値以上である命令A、すなわち、誤り回数が絶対的に多い命令Aが、脆弱命令と判定されてもよい。「脆弱命令」は、誤り結果が発生し易いと判定された命令Aである。脆弱命令の判定が可能となることで、制御系20Aの誤り耐性を向上させる第2の並列演算プログラム150の生成に貢献することが期待される。例えば、或る命令Aについて誤り結果が生じ易い場合、当該命令Aと同じアプリ演算結果が得られる別の命令Aの演算コードを記述するといったことが可能となる。
特徴判定部804が、例えば定期的に又は不定期的に、制御系誤りDB803のうちの第3のテーブル1003を参照し、誤り発生時刻の間隔の傾向からエラー種類を判定する。例えば、特徴判定部804は、エラー発生時刻間(エラー発生時刻と次のエラー発生時刻の間隔)の長さが所定の閾値以下であれば、誤り結果の原因としてのエラーの種類を一時エラーと判定する。一方、特徴判定部804は、エラー発生時刻間の長さが所定の閾値を超えていれば、誤り結果の原因としてのエラーの種類を恒久エラーと判定する。このようにして、並列演算デバイス860におけるエラーの種類を、上位システムを介さず、効率的に特定することが期待できる。
以上、幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。例えば、上述の実施形態では、説明を簡単にするために、同一命令Aについてのアプリ演算、冗長演算及び診断演算が同一時刻間において行われるとしたが、同一命令Aについて冗長演算の開始から診断演算の開始が可能になるまでの時間や、診断演算に要する時間等を予め見積もっておき、見積もられた種々の時間を基に、命令Aに紐付けられる時刻や、エラー発生時刻とされる時刻が補正され、補正後の時刻が、制御系誤りDB803に登録されてもよい。
100:プログラム生成装置

Claims (10)

  1. 複数の演算グループを有し並列演算可能なデバイスである並列演算デバイスの構成を表すデバイス構成情報と、所定の処理を構成するアプリ演算を規定し前記所定の処理の並列演算を前記並列演算デバイスに実行させるための第1の並列演算プログラムとを基に、当該並列演算における余剰コア数を特定する余剰コア特定部と、
    前記複数の演算グループの各々は、複数のコアと、当該複数のコアに同一の演算命令を割り当てる制御系とを有し、
    余剰コアは、アプリ演算が割り当てられないコアであり、
    アプリ演算の他に冗長演算と診断演算とを規定し前記所定の処理の並列演算を前記並列演算デバイスに実行させるための第2の並列演算プログラムを、前記第1の並列演算プログラムを基に生成するプログラム生成部と
    を有し、
    冗長演算は、アプリ演算の冗長演算であって、第1の演算グループにおける余剰コアに割り当てられる演算であり、
    診断演算は、二つ以上の第1の演算グループがそれぞれ有する二つ以上の余剰コアによる同一の冗長演算の実行結果の比較であって、第2の演算グループにおける余剰コアに割り当てられる演算である、
    プログラム生成装置。
  2. 前記余剰コア特定部は、
    前記第1の並列演算プログラムを基に前記並列演算デバイスの使用コア数を特定し、
    前記デバイス構成情報が表す総コア数から当該特定された使用コア数を減算することで、余剰コア数を算出し、
    使用コアは、アプリ演算が割り当てられるコアであり、
    当該算出された余剰コア数が、前記特定された余剰コア数である、
    請求項1に記載のプログラム生成装置。
  3. 前記余剰コア特定部は、
    前記第1の並列演算プログラムを基に必要な余剰コア数を特定し、
    前記算出された余剰コア数が、前記特定された必要な余剰コア数未満か否かの判断である不足判断を行い、
    当該不足判断の結果が真の場合、前記算出された使用コア数分の複数の使用コアの一部の使用コアを余剰コアとすることで、前記特定された必要な余剰コア数を確保し、
    当該確保された必要な余剰コア数が、前記特定された余剰コア数である、
    請求項2に記載のプログラム生成装置。
  4. 前記第2の並列演算プログラムは、下記(A)乃至(E)のうちの少なくとも一つを表す情報を含む、
    (A)いずれの演算グループが第1の演算グループであるかと第1の演算グループの数とのうちの少なくとも一つ、
    (B)いずれの演算グループが第2の演算グループであるかと第2の演算グループの数とのうちの少なくとも一つ、
    (C)冗長演算について、下記(c1)及び(c2)のうちの少なくとも一つ、
    (c1)当該冗長演算が割り当てられる余剰コア、
    (c2)前記並列演算デバイスにおける、冗長演算の結果の格納先、
    (D)診断演算について、下記(d1)及び(d2)のうちの少なくとも一つ、
    (d1)当該冗長演算が割り当てられる余剰コア、
    (d2)前記並列演算デバイスにおける、診断演算の結果の格納先、
    (E)余剰コア数及び使用コア数とのうちの少なくとも一つ、
    請求項1に記載のプログラム生成装置。
  5. 請求項1に記載のプログラム生成装置により生成された前記第2の並列演算プログラムを実行する並列演算可能なデバイスである並列演算デバイスであって、
    複数の演算グループと、
    前記第2の並列演算プログラムに従い、アプリ演算とそれの冗長演算との命令である第1の命令を前記複数の演算グループのうちの二つ以上の第1の演算グループに割り当て、且つ、診断演算の命令である第2の命令を前記複数の演算グループのうちの一つ以上の第2の演算グループに割り当てる命令割当て部と、
    記憶領域と
    を備え、
    前記複数の演算グループの各々は、複数のコアと、当該複数のコアに同一の演算命令を割り当てる制御系とを有し、
    余剰コアは、アプリ演算が割り当てられないコアであり、
    前記二つ以上の第1の演算グループの各々において、使用コアが、制御系からの第1の命令に従いアプリ演算を実行し、アプリ演算結果を、前記第2の並列演算プログラムに規定されている第1の記憶領域に格納し、
    前記二つ以上の第1の演算グループの各々において、余剰コアが、制御系からの第1の命令に従いアプリ演算と並列に冗長演算を実行し、冗長演算結果を、前記第2の並列演算プログラムに規定されている第2の記憶領域に格納し、
    前記一つ以上の第2の演算グループの各々において、余剰コアが、制御系からの第2の命令に従い前記第2の記憶領域内の二つ以上の冗長演算結果を比較する診断演算を実行し、誤りの有無を含む診断演算結果を、前記第2の並列演算プログラムに規定されている第3の記憶領域に格納し、
    前記第1の記憶領域に格納されているアプリ演算結果が、前記並列演算デバイスの一つ以上の外部システムの少なくとも一つに提供され、
    前記第3の記憶領域に格納されている診断演算結果が、前記並列演算デバイスの一つ以上の外部システムの少なくとも一つに提供される、
    並列演算デバイス。
  6. 誤り有りを意味する診断演算結果である誤り結果に関する情報である誤り管理情報を管理する情報管理部、
    を更に有する請求項5に記載の並列演算デバイス。
  7. 前記誤り管理情報を基に前記並列演算デバイスの特性と状況とのうちの少なくとも一つを含むデバイス特徴を判定する特徴判定部を更に有し、
    前記判定されたデバイス特徴を表す情報が、前記一つ以上の外部システムの少なくとも一つに提供される、
    請求項6に記載の並列演算デバイス。
  8. 前記誤り管理情報は、誤り結果が得られた第1の命令毎に誤り結果が得られた回数である誤り回数を表す情報を含み、
    前記デバイス特徴は、誤り回数が絶対的に又は相対的に多い第1の命令である脆弱命令を含む、
    請求項7に記載の並列演算デバイス。
  9. 前記誤り管理情報は、誤り結果毎に誤り結果の発生時刻である誤り発生時刻を表す情報を含み、
    前記デバイス特徴は、誤り発生時刻と次の誤り発生時刻との間の長さに従うエラー種類を含む、
    請求項7に記載の並列演算デバイス。
  10. 複数の演算グループを有する並列演算デバイスに所定の処理の並列演算を実行させるためのコンピュータプログラムであって、
    前記所定の処理を構成する演算であるアプリ演算を規定した情報と、
    前記複数の演算グループの各々は、複数のコアと、当該複数のコアに複数の演算命令を割り当てる制御系とを有し、
    余剰コアは、アプリ演算が割り当てられないコアであり、
    前記複数の演算グループのうちの第1の演算グループにおける余剰コアに割り当てられる演算でありアプリ演算の冗長演算を規定した情報と、
    二つ以上の第1の演算グループがそれぞれ有する二つ以上の余剰コアによる同一の冗長演算の冗長演算結果の比較であって、前記複数の演算グループのうちの第2の演算グループにおける余剰コアに割り当てられる演算である診断演算を規定した情報と
    を有するコンピュータプログラム。
JP2020084388A 2020-05-13 2020-05-13 プログラム生成装置、並列演算デバイス、及び、並列演算デバイスに並列演算を実行させるためのコンピュータプログラム Active JP7419157B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2020084388A JP7419157B2 (ja) 2020-05-13 2020-05-13 プログラム生成装置、並列演算デバイス、及び、並列演算デバイスに並列演算を実行させるためのコンピュータプログラム
US17/246,940 US20210357285A1 (en) 2020-05-13 2021-05-03 Program Generation Apparatus and Parallel Arithmetic Device
DE102021204690.8A DE102021204690A1 (de) 2020-05-13 2021-05-10 Programmerzeugungseinrichtung und Vorrichtung für eine parallele Arithmetik
CN202110510303.8A CN113672377A (zh) 2020-05-13 2021-05-11 程序生成装置、并行运算设备以及计算机可读记录介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020084388A JP7419157B2 (ja) 2020-05-13 2020-05-13 プログラム生成装置、並列演算デバイス、及び、並列演算デバイスに並列演算を実行させるためのコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2021179774A JP2021179774A (ja) 2021-11-18
JP7419157B2 true JP7419157B2 (ja) 2024-01-22

Family

ID=78280747

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020084388A Active JP7419157B2 (ja) 2020-05-13 2020-05-13 プログラム生成装置、並列演算デバイス、及び、並列演算デバイスに並列演算を実行させるためのコンピュータプログラム

Country Status (4)

Country Link
US (1) US20210357285A1 (ja)
JP (1) JP7419157B2 (ja)
CN (1) CN113672377A (ja)
DE (1) DE102021204690A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011044078A (ja) 2009-08-24 2011-03-03 Internatl Business Mach Corp <Ibm> フォールト・トレラント・コンピュータ・システム、方法及びプログラム
US20140189319A1 (en) 2012-12-28 2014-07-03 Dennis R. Bradford Opportunistic Utilization of Redundant ALU

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5074290B2 (ja) * 2008-05-13 2012-11-14 株式会社日立国際電気 冗長切替システム、冗長管理装置およびアプリケーション処理装置
JP5684514B2 (ja) * 2010-08-19 2015-03-11 株式会社東芝 冗長化制御システム、及びその演算データの伝送方法
US8914706B2 (en) * 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
US9329936B2 (en) * 2012-12-31 2016-05-03 Intel Corporation Redundant execution for reliability in a super FMA ALU
CN103294169B (zh) * 2013-05-31 2015-10-28 上海交通大学 一种功耗优化的众核***的冗余保护***及方法
US9448933B2 (en) * 2013-08-29 2016-09-20 Advanced Micro Devices, Inc. Using redundant transactions to verify the correctness of program code execution
CN103678013A (zh) * 2013-12-18 2014-03-26 哈尔滨工业大学 多核处理器操作***级进程的冗余检测***
CN104391763B (zh) * 2014-12-17 2016-05-18 中国人民解放军国防科学技术大学 基于设备视图冗余的众核处理器容错方法
CN105279049A (zh) * 2015-06-16 2016-01-27 康宇星科技(北京)有限公司 一种故障自主恢复三模冗余容错计算机ip核的设计方法
DE102015222321A1 (de) * 2015-11-12 2017-05-18 Siemens Aktiengesellschaft Verfahren zum Betrieb eines Mehrkernprozessors
JP6834446B2 (ja) * 2016-12-14 2021-02-24 オムロン株式会社 制御システム、制御プログラムおよび制御方法
JP6843650B2 (ja) * 2017-02-27 2021-03-17 三菱重工業株式会社 冗長化システム及び冗長化方法
US10776121B2 (en) * 2017-05-10 2020-09-15 Atlantic Technical Organization System and method of execution map generation for schedule optimization of machine learning flows
US10621022B2 (en) * 2017-10-03 2020-04-14 Nvidia Corp. System and methods for hardware-software cooperative pipeline error detection
US10621020B2 (en) * 2017-11-15 2020-04-14 Accenture Global Solutions Limited Predictive self-healing error remediation architecture
US10942824B2 (en) * 2018-10-08 2021-03-09 Hewlett Packard Enterprise Development Lp Programming model and framework for providing resilient parallel tasks
US10725788B1 (en) * 2019-03-25 2020-07-28 Intel Corporation Advanced error detection for integer single instruction, multiple data (SIMD) arithmetic operations
US20210149763A1 (en) * 2019-11-15 2021-05-20 Intel Corporation Systems and methods for error detection and control for embedded memory and compute elements

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011044078A (ja) 2009-08-24 2011-03-03 Internatl Business Mach Corp <Ibm> フォールト・トレラント・コンピュータ・システム、方法及びプログラム
US20140189319A1 (en) 2012-12-28 2014-07-03 Dennis R. Bradford Opportunistic Utilization of Redundant ALU

Also Published As

Publication number Publication date
CN113672377A (zh) 2021-11-19
JP2021179774A (ja) 2021-11-18
US20210357285A1 (en) 2021-11-18
DE102021204690A1 (de) 2021-11-18

Similar Documents

Publication Publication Date Title
US8146092B2 (en) System and method for selecting and executing an optimal load distribution processing in a storage system
US20190129815A1 (en) Drive extent based end of life detection and proactive copying in a mapped raid (redundant array of independent disks) data storage system
US8533681B2 (en) Atomicity violation detection using access interleaving invariants
US9396353B2 (en) Data allocation among devices with different data rates
US20180074746A1 (en) Distributed storage system and control method for distributed storage system
US20130054520A1 (en) File system migration
US11036587B2 (en) Method, apparatus, and computer program product for managing storage system using partial drive failure prediction
CN107451006B (zh) 限制存储设备中的性能变化的技术
CN109725827B (zh) 管理存储***的方法、***和计算机程序产品
US9436554B2 (en) Information processing apparatus and data repairing method
JP7419157B2 (ja) プログラム生成装置、並列演算デバイス、及び、並列演算デバイスに並列演算を実行させるためのコンピュータプログラム
JP4668556B2 (ja) タスク管理システム
CN111913835A (zh) 基于交叉映射的数据多备份存储方法、装置、计算机设备及存储介质
CN115359834B (zh) 一种盘仲裁区域检测方法、装置、设备及可读存储介质
CN115033337A (zh) 虚拟机内存迁移方法、装置、设备及存储介质
CN111061591B (zh) 基于存储器完整性检查控制器实现数据完整性检查的***和方法
US20200341911A1 (en) Method, device, and computer program product for managing storage system
EP3504627B1 (en) Read operation redirect
US11762729B2 (en) Apparatus and method for anomaly countermeasure decision, execution and evaluation
CN117971564B (zh) 数据恢复方法、装置、计算机设备及存储介质
CN117234431B (zh) 缓存管理方法、装置、电子设备及存储介质
KR102562160B1 (ko) 인메모리를 이용한 가상 머신 시스템 및 그 동작 방법
US11995485B2 (en) Automatically switching between quantum services and classical services based on detected events
JP7478037B2 (ja) 継続的インテグレーションシステム及び継続的インテグレーション方法
CN113656406A (zh) 一种索引页合并方法、装置、设备及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230303

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231115

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240110

R150 Certificate of patent or registration of utility model

Ref document number: 7419157

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150