(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024131509
(43)【公開日】2024-09-30
(54)【発明の名称】演算機及び演算機の診断方法
(51)【国際特許分類】
G06N 3/063 20230101AFI20240920BHJP
G06F 17/10 20060101ALI20240920BHJP
G06F 7/57 20060101ALI20240920BHJP
【FI】
G06N3/063
G06F17/10 V
G06F7/57 202
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023041819
(22)【出願日】2023-03-16
(71)【出願人】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】100113549
【弁理士】
【氏名又は名称】鈴木 守
(74)【代理人】
【識別番号】100115808
【弁理士】
【氏名又は名称】加藤 真司
(74)【代理人】
【識別番号】100169199
【弁理士】
【氏名又は名称】石本 貴幸
(72)【発明者】
【氏名】堀口 辰也
(72)【発明者】
【氏名】広津 鉄平
(72)【発明者】
【氏名】山田 洋平
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056GG01
(57)【要約】 (修正有)
【課題】電力性能比を損なうことなく、演算機能の故障診断を行う演算機及び演算機の診断方法を提供する。
【解決手段】ニューラルネットワークによる演算に用いられるPE(Processing Element)は、入力値及び重み係数に基づいて演算を行う演算部を備える。PEは、演算部に入力される入力値又は重み係数の少なくとも一方がゼロを示す値の場合、入力値の替わりに故障診断用の第1テスト値及び第2テスト値に基づく演算を行い、演算結果の正否を判定する。また、PEは、入力値又は重み係数の少なくとも一方がゼロを示す値の場合、演算部の出力値としてゼロを選択して出力する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
ニューラルネットワークによる演算に用いられる演算機(10)であって、
入力値及びパラメータに基づいて演算を行う演算部(20)と、
前記入力値又は前記パラメータの少なくとも一方がゼロを示す値の場合、前記入力値の替わりに故障診断用の第1テスト値を選択し、前記パラメータの替わりに故障診断用の第2テスト値を選択する第1選択部(24A,24B)と、
前記演算部による前記第1テスト値及び前記第2テスト値に基づく演算結果の正否を判定する判定部(34)と、
前記入力値又は前記パラメータの少なくとも一方がゼロを示す値の場合、前記演算部の出力値としてゼロを選択する第2選択部(32)と、
を備える演算機。
【請求項2】
前記第1テスト値及び前記第2テスト値は、他の前記演算機と共有されるテストモジュール(50)から出力され、
前記判定部は、前記テストモジュールによる前記第1テスト値及び前記第2テスト値に基づく演算結果と前記演算部による演算結果とを比較することで、前記演算部の演算結果の正否を判定する、
請求項1に記載の演算機。
【請求項3】
前記第1テスト値及び前記第2テスト値は、他の前記演算機に入力された前記入力値及び前記パラメータであり、
前記判定部は、他の前記演算機による前記入力値及び前記パラメータに基づく演算結果と前記演算部による演算結果とを比較することで、前記演算部の演算結果の正否を判定する、
請求項1に記載の演算機。
【請求項4】
前記演算部が少なくとも所定回数の演算を行う毎に、前記第1テスト値及び前記第2テスト値に基づく前記演算部の演算結果の正否を判定する、請求項1から請求項3に記載の演算機。
【請求項5】
前記判定部によって前記演算部による演算結果が正しくないと判定された場合、ホストコンピュータに判定結果を出力する、請求項1から請求項3に記載の演算機。
【請求項6】
前記判定部が前記演算部による演算結果が正しくないと判定した場合、後段で処理を行う他の演算機に判定結果を出力する、請求項1から請求項3に記載の演算機。
【請求項7】
ニューラルネットワークによる演算に用いられる演算機の診断方法であって、
演算部に入力される入力値又はパラメータの少なくとも一方がゼロを示す値の場合、前記入力値の替わりに故障診断用の第1テスト値を選択し、前記パラメータの替わりに故障診断用の第2テスト値を選択する第1工程と、
前記演算部による前記第1テスト値及び前記第2テスト値に基づく演算結果の正否を判定する第2工程と、
前記入力値又は前記パラメータの少なくとも一方がゼロを示す値の場合、前記演算部の出力値としてゼロを選択する第3工程と、
を有する演算機の診断方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算機及び演算機の診断方法に関する。
【背景技術】
【0002】
ニューラルネットワーク等の演算処理を対象としたハードウェアアクセラレータは、一般的に2次元状に配列した複数の演算機であるPE(Processing Element)を用いて処理の高速化を行っている(特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ここで、PEが演算を正しく行っていることの診断方法として、複数のPEを多重冗長化して複数の演算結果を比較する方法が用いられている。しかしながら、PEを多重冗長化すると電力性能比が損なわれることとなる。
【0005】
本発明は上記背景に鑑み、電力性能比を損なうことなく、演算機能の故障診断を行うことができる、演算機及び演算機の診断方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明は上記課題を解決するために以下の技術的手段を採用する。特許請求の範囲及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示す一例であって、本発明の技術的範囲を限定するものではない。
【0007】
本発明の一態様の演算機(10)は、ニューラルネットワークによる演算に用いられる演算機(10)であって、入力値及びパラメータに基づいて演算を行う演算部(20)と、前記入力値又は前記パラメータの少なくとも一方がゼロを示す値の場合、前記入力値の替わりに故障診断用の第1テスト値を選択し、前記パラメータの替わりに故障診断用の第2テスト値を選択する第1選択部(24A,24B)と、前記演算部による前記第1テスト値及び前記第2テスト値に基づく演算結果の正否を判定する判定部(34)と、前記入力値又は前記パラメータの少なくとも一方がゼロを示す値の場合、前記演算部の出力値としてゼロを選択する第2選択部(32)と、を備える。
【0008】
本構成によれば、ニューラルネットワークによる演算に用いられる演算機が入力値及びパラメータに基づいて演算を行う。なお、パラメータは、一例として重み係数である。本構成は、入力値又はパラメータの少なくとも一方がゼロを示す値の場合、演算部の出力値としてゼロを選択し、入力値の替わりに故障診断用の第1テスト値を選択し、パラメータの替わりに故障診断用の第2テスト値を選択する。そして、第1テスト値及び第2テスト値に基づく演算部の演算結果の正否を判定部が判定し、演算部の演算結果が正しくない場合にエラー信号を出力する。
【0009】
従って、本構成は、故障診断のために演算機を多重冗長化する必要がないため、電力性能比を損なうことなく、演算機能の故障診断を行うことができる。
【0010】
上記の演算機において、前記第1テスト値及び前記第2テスト値は、他の前記演算機と共有されるテストモジュール(50)から出力され、前記判定部は、前記テストモジュールによる前記第1テスト値及び前記第2テスト値に基づく演算結果と前記演算部による演算結果とを比較することで、前記演算部の演算結果の正否を判定してもよい。
【0011】
上記の演算機において、前記第1テスト値及び前記第2テスト値は、他の前記演算機に入力された前記入力値及び前記パラメータであり、前記判定部は、他の前記演算機による前記入力値及び前記パラメータに基づく演算結果と前記演算部による演算結果とを比較することで、前記演算部の演算結果の正否を判定してもよい。
【0012】
上記の演算機において、前記演算部が少なくとも所定回数の演算を行う毎に、前記第1テスト値及び前記第2テスト値に基づく前記演算部の演算結果の正否を判定してもよい。
【0013】
上記の演算機において、前記判定部によって前記演算部による演算結果が正しくないと判定された場合、ホストコンピュータに判定結果を出力してもよい。
【0014】
上記の演算機において、前記判定部が前記演算部による演算結果が正しくないと判定した場合、後段で処理を行う他の演算機に判定結果を出力してもよい。
【0015】
本発明に一態様の演算機の診断方法は、ニューラルネットワークによる演算に用いられる演算機の診断方法であって、演算部に入力される入力値又はパラメータの少なくとも一方がゼロを示す値の場合、前記入力値の替わりに故障診断用の第1テスト値を選択し、前記パラメータの替わりに故障診断用の第2テスト値を選択する第1工程と、前記演算部による前記第1テスト値及び前記第2テスト値に基づく演算結果の正否を判定する第2工程と、前記入力値又は前記パラメータの少なくとも一方がゼロを示す値の場合、前記演算部の出力値としてゼロを選択する第3工程と、を有する。
【発明の効果】
【0016】
本発明によれば、電力性能比を損なうことなく、演算機能の故障診断を行うことができる。
【図面の簡単な説明】
【0017】
【
図1】第1実施形態の故障診断機能を有するPEの概略構成図である。
【
図2】第1実施形態の故障診断機能の流れを示すフローチャートである。
【
図3】第2実施形態の故障診断機能を有するPEの概略構成図である。
【
図4】第2実施形態の故障診断機能の流れを示すフローチャートである。
【
図5】第3実施形態の故障診断機能を有するPEの概略構成図である。
【
図6】第4実施形態の故障診断機能を有するPEアレイの概略構成図である。
【0018】
以下、図面を参照して本発明の実施形態を説明する。なお、以下に説明する実施形態は、本発明を実施する場合の一例を示すものであって、本発明を以下に説明する具体的構成に限定するものではない。本発明の実施にあたっては、実施形態に応じた具体的構成が適宜採用されてよい。
【0019】
図1は、本実施形態の演算機であるPE(Processing Element)10の概略構成図である。本実施形態のPE10は、複数が2次元状(アレイ状ともいう)に配列されて演算装置であるハードウェアアクセラレータを構成し、ニューラルネットワークに基づく演算を行う。なお、このような複数のPEによる構成をメニーコアプロセッサともいう。
【0020】
本実施形態のPE10は、各々が故障診断機能を有している。本実施形態のPE10は、
図1に示されるように、演算部20、レジスタ22A,22B、ゼロ検出部24A,24B、ゼロ検出信号出力部26、セレクタ28A,28B、レジスタ30、出力値選択部32、及び故障判定部34を備える。
【0021】
演算部20は、PE10への入力値(Input)及びパラメータである重み係数(Weight)に基づいて演算を行う。なお、
図1に示されるPE10は乗算器であり、演算部20は演算として乗算を行う。すなわち、本実施形態の故障診断機能は、一例として、演算部20で行われる乗算が正しく行われているか否かを診断する。
【0022】
入力値は、例えば、外部メモリからニューラルネットワークに最初に入力される値や他のPE10の出力値である。他のPE10の出力値とは、二次元状に配列された複数のPE10のうち、前段のPE10の演算結果である。重み係数は、例えば、外部メモリから転送される値(行列)である。
【0023】
レジスタ22Aは、PE10に入力された入力値を一時的に記憶する。レジスタ22Bは、PE10に入力された重み係数を一時的に記憶する。
【0024】
ゼロ検出部24Aは、入力値がゼロ(0)を示す値であるか否かを検出する。ゼロ検出部24Bは、重み係数がゼロ(0)を示す値であるか否かを検出する。ゼロを示す値とは、ゼロだけではなく、ゼロに等しい値も含む。なお、ゼロに等しい値は、ゼロに近似する値であり、その範囲は予め設定されている。また、ゼロを示す値とは、十進数でいうところのゼロだけでなく、二進数でいうところのゼロも含み、例えば、“01”等に進数で表される任意の値がゼロと定義されてもよい。
【0025】
ゼロ検出信号出力部26は、入力値及び重み係数の少なくとも一方がゼロを示す値である場合、ゼロ検出信号を出力する。また、入力値及び重み係数が共にゼロを示す値でない場合、ゼロ検出信号出力部26は、非ゼロ検出信号を出力する。
【0026】
ゼロ検出信号及び非ゼロ検出信号は、セレクタ28A,28B、及び出力値選択部32へ出力される。なお、ゼロ検出信号が出力される場合とは、PE10が故障診断を実行する場合である。一方、非ゼロ検出信号が出力される場合とは、PE10が通常のニューラルネットワークに基づく演算を行う場合である。
【0027】
セレクタ28Aは、ゼロ検出信号が入力された場合、入力値の替わりにテストモジュール50から出力される第1テスト値を選択して演算部20に出力する。一方で、非ゼロ検出信号が入力された場合、セレクタ28Aは入力値を演算部20に出力する。
【0028】
セレクタ28Bは、ゼロ検出信号が入力された場合、重み係数の替わりにテストモジュール50から出力される第2テスト値を選択して演算部20に出力する。一方で、非ゼロ検出信号が入力された場合、セレクタ28Aは重み係数を演算部20に出力する。
【0029】
ここで、テストモジュール50の構成について説明する。テストモジュール50は、2つ以上の他のPE10と共有されるものであり、複数のPE10に対して第1テスト値、第2テスト値を出力する。本実施形態のテストモジュール50は、テストパターン生成部60、レジスタ62A,62B、演算部64、レジスタ66を備える。
【0030】
テストパターン生成部60は、一例として、ランダムに第1テスト値及び第2テスト値を生成し、レジスタ62A,62Bに出力する。なお、テストパターン生成部60は、ランダムではなく、予め設定された第1テスト値及び第2テスト値の組の複数パターンから一つを選択し、出力してもよい。
【0031】
レジスタ62Aは、第1テスト値を一時的に記憶し、第1テスト値を演算部64及びPE10のセレクタ28Aへ出力する。
【0032】
レジスタ62B、第2テスト値を一時的に記憶し、第1テスト値を演算部64及びPE10のセレクタ28Bへ出力する。
【0033】
演算部64は、第1テスト値と第2テスト値とに基づく演算として乗算を行う。この演算部64による演算結果は正しい値(以下「正解値」という。)として扱われる。
【0034】
レジスタ66は、演算部64の演算結果を一時的に記憶し、PE10の故障判定部34に出力する。
【0035】
PE10が備える演算部20は、セレクタ28A,28Bから出力された値に基づいて乗算を行う。すなわち、セレクタ28Aから入力値が出力され、セレクタ28Bから重み係数が出力された場合、演算部20は、入力値と重み係数とを乗算する。一方、セレクタ28Aから第1テスト値が出力され、セレクタ28Bから第2テスト値が出力された場合、演算部20は、第1テスト値と第2テスト値とを乗算する。なお、第1テスト値と第2テスト値との乗算結果を、以下の説明ではエラー診断値という。
【0036】
レジスタ30は、演算部20の演算結果を一時的に記憶し、出力値選択部32、及び故障判定部34へ出力する。
【0037】
出力値選択部32は、ゼロ検出信号出力部26からゼロ検出信号が入力された場合、出力値としてゼロを出力する。一方で、ゼロ検出信号出力部26から非ゼロ検出信号が入力された場合、出力値選択部32は、演算部20の演算結果を出力値として出力する。
【0038】
故障判定部34は、演算部20による第1テスト値及び第2テスト値に基づく演算結果の正否を判定する。本実施形態の故障判定部34は、演算部20から出力されたエラー診断値とテストモジュール50から出力された正解値とを比較する機能を有している。故障判定部34は、エラー診断値と正解値とが異なっていれば、演算部20にエラーが生じているとしてPEエラー信号(Err)を出力する。
【0039】
PEエラー信号は、ユーザがエラーの発生を認識できるように、ホストコンピュータ等の外部の情報処理装置に通知される。なお、ホストコンピュータは故障診断結果として、全てのPE10のPEエラー信号の論理和を求めて、その結果を出力してもよいし、PEエラー信号を出力したPE10の座標を出力してもよい。
【0040】
なお、本実施形態の故障判定部34は、エラー診断値と正解値とが同じであれば、何ら信号を出力しないが、これに限らず、故障判定部34は演算部20に故障が無いことを示す信号をホストコンピュータ等へ出力してもよい。
【0041】
図2は、本実施形態の故障診断機能の流れを示すフローチャートである。なお、故障診断は、ニューラルネットワークによる演算中にPE10毎に実行される。
【0042】
まず、ステップ100では、PE10に入力値及び重み係数が入力される。
【0043】
次のステップ102では、入力値及び重み係数の少なくとも一方がゼロを示す値であるか否かを検出する。この検出は、ゼロ検出部24A,24Bによって行われる。入力値及び重み係数の少なくとも一方がゼロを示す値である場合には肯定判定とされ、ゼロ検出信号出力部26がゼロ検出信号を出力してステップ104へ移行する。一方、入力値及び重み係数の何れもゼロを示す値でない場合には否定判定とされ、ゼロ検出信号出力部26が非ゼロ検出信号を出力してステップ112へ移行する。
【0044】
ステップ104では、ゼロ検出信号がセレクタ28A,28Bに入力されることで、テストモジュール50からの第1テスト値及び第2テスト値が選択され、演算部20が第1テスト値及び第2テスト値に基づく乗算を行いエラー診断値が算出される。
【0045】
次のステップ106では、演算部20が算出したエラー診断値とテストモジュール50が算出した正解値とが同じであるか否かを故障判定部34が判定し、肯定判定の場合はステップ110へ移行する。一方、否定判定の場合、すなわち、エラー診断値と正解値とが異なる場合には、ステップ108へ移行する。
【0046】
ステップ108では、故障判定部34がPEエラー信号を出力し、ステップ110へ移行する。
【0047】
ステップ110では、PE10がゼロを後段のPE10へ出力し、ステップ100へ戻る。
【0048】
一方、ステップ102で否定判定となった場合に移行するステップ112では、演算部20が入力値及び重み係数に基づく乗算を行う。
【0049】
次のステップ114では、演算部20が演算結果を後段のPE10へ出力し、ステップ100へ戻る。
【0050】
次に、本実施形態のPE10において、故障診断を行う場合、PE10出力値としてゼロを選択する理由について説明する。
【0051】
ニューラルネットワーク処理,特にハードウェアアクセラレータを用いた処理においては、乗算を行う演算器の入力に対してゼロ値が用いられることが多い。これは、以下の理由のためである。
【0052】
理由(1):活性化関数にReLU (Rectified Linear Unit)が用いられる。
活性化関数によって、後段のニューラルネットワークのレイヤーへの入力値がゼロとなるケースが発生する。
【0053】
理由(2):画像特徴量を正しく抽出できている場合,重み行列が疎(sparse)になる。
重み行列が、ゼロを多く含む行列となる。
【0054】
このような、演算器の入力に対してゼロ値が用いられることが多いという特徴により、演算結果が自明、すなわち演算結果がゼロとなる畳み込み処理(乗算処理)が、PE10に多数発生することが予測される。
【0055】
演算結果が自明な演算(出力がゼロ)の場合、すなわち入力値及び重み係数の少なくとも一方がゼロを示す値の場合には、PE10の出力値として、事前に規定された値(ゼロ)を出力し、実際の演算としてはPE10にテストパターン(第1テスト値、第2テスト値)を入力することで故障診断を行っても、実質的に演算結果は変化しない。
【0056】
以上説明したように、本実施形態のPE10は故障診断機能を有している。この故障診断機能は、PE10への入力値又は重み係数の少なくとも一方がゼロを示す値の場合、演算部20の出力値としてゼロを選択し、入力値の替わりに故障診断用の第1テスト値を選択し、重み係数の替わりに故障診断用の第2テスト値を選択する。そして、第1テスト値及び第2テスト値に基づく演算部20の演算結果の正否を判定部が判定し、演算部20の演算結果が正しくない場合にPEエラー信号を出力する。
【0057】
従って、本実施形態のPE10は、故障診断のためにPE10を多重冗長化する必要がないため、電力性能比を損なうことなく、演算機能の故障診断を行うことができる。
【0058】
なお、本実施形態の故障診断機能を行うためにPE10には、ゼロ検出部24A,24B、ゼロ検出信号出力部26、セレクタ28A,28B、出力値選択部32、及び故障判定部34が備えられるが、これらが要するハードウエア面積のオーバーヘッドはPE10を多重化する場合に比べて小さい。
【0059】
また、本実施形態のテストモジュール50は、複数のPE10で共有される。このため、テストモジュール50を追加してもハードウエア面積のオーバーヘッドはPE10を多重化する場合に比べて小さい。
【0060】
また、本実施形態の故障診断機能は、電力消費量が相対的に大きい乗算を行うPE10が有する。このため、加算、減算、除算等の他の演算を行う演算部20(PE10)に対しては、従来の多重冗長化による故障診断が行われてもよい。さらに、本実施形態の故障診機能を有するPE10と従来の多重冗長化による故障診断が行われるPE10とがアレイ状に配列されて演算装置を構成してもよい。
【0061】
(第2実施形態)
本実施形態のPE10は、演算部20が少なくとも所定回数の演算を行う毎に、故障診断を実行する。
【0062】
図2は、本実施形態の故障診断機能を有するPE10の概略構成図である。本実施形態のPE10は、カウンタ70、回数判定部72、及び故障診断実行制御部74を備える。なお、
図2において、
図1と同様の構成は同じ符号を付してその説明を省略する。
【0063】
カウンタ70は、ゼロ検出信号又は非ゼロ検出信号が入力され、非ゼロ検出信号が入力される毎にカウント値をインクリメントする。一方で、非ゼロ検出信号が入力された場合、カウンタ70は、カウント値をゼロに戻す。すなわち、カウンタ70は、故障診断を実行することなく演算部20が演算を行った連続回数をカウントする。また、カウンタ70は、故障診断が実行される場合に、カウント値をリセットする。
【0064】
カウンタ70は、リセット信号(rst)が入力された場合にもカウント値をゼロに戻す。リセット信号が入力される場合とは、例えば、ニューラルネットワークの一つのレイヤー分の処理が完了する毎である。
【0065】
回数判定部72は、カウント値が所定の閾値Nを超えたか否かを判定する。閾値Nは、例えば、一つのレイヤー分の処理が完了するまでに少なくとも1回は故障診断を行うように設定される。
【0066】
故障診断実行制御部74は、ゼロ検出部24A,24Bの少なくとも一方がゼロを示す値を検出した場合、又はカウント値が閾値Nに達した場合にゼロ検出信号を出力する。すなわち、故障診断実行制御部74は、カウント値が閾値Nに達した場合、入力値及び重み係数の値にかかわらず、ゼロ検出信号を出力して演算部20の故障診断を行うこととなる。
【0067】
なお、故障診断実行制御部74は、ゼロ検出部24A,24Bが共にゼロを示す値を検出せず、かつカウント値が閾値N以下の場合に非ゼロ検出信号を出力する。
【0068】
図4は、第2実施形態の故障診断機能の流れを示すフローチャートである。
【0069】
まず、ステップ200では、PE10に入力値及び重み係数が入力される。
【0070】
次のステップ202では、入力値及び重み係数の少なくとも一方がゼロを示す値であるか否かを検出する。入力値及び重み係数の少なくとも一方がゼロを示す値である場合には、肯定判定とされステップ204へ移行する。一方、入力値及び重み係数の何れもゼロを示す値でない場合には、否定判定とされステップ208へ移行する。
【0071】
ステップ204では、故障診断実行制御部74がゼロ検出信号を出力して故障診断を実行する。なお、ステップ204の処理は、
図2のステップ104~110と同じである。
【0072】
次のステップ206では、カウンタ70にゼロ検出信号が入力されるので、カウンタ70がカウント値をリセットしてステップ200へ戻る。
【0073】
一方、ステップ202で否定判定となった場合に移行するステップ208では、カウンタ70に非ゼロ検出信号が入力されるので、カウンタ70がカウント値をインクリメントする。
【0074】
次のステップ210では、カウント値が閾値Nを超えたか否かを回数判定部72が判定し、工程判定の場合はステップ204へ移行する。一方、否定判定の場合はステップ210へ移行する。
【0075】
ステップ212では、演算部20が入力値及び重み係数に基づく演算を実行し、ステップ200へ戻る。なお、ステップ212の処理は、
図2のステップ112,114と同じである。
【0076】
以上説明したように、本実施形態のPE10は、故障診断を実行することなく演算部20が演算を行った連続回数をカウントして閾値Nと比較することで、少なくともN回の演算を行う毎に故障診断を実行する。
【0077】
これにより、本実施形態は、別途スケジューリング等を行うことなく、PE10の故障診断が可能となる。また、閾値NをPE10毎に設定できるので、PE10毎に独立して故障診断の頻度を変更できる。
【0078】
(第3実施形態)
本実施形態では、PE10は第1テスト値及び第2テスト値がテストモジュール50から入力されるのではなく、第1テスト値及び第2テスト値が他のPE10から入力される。
【0079】
図5は、本実施形態の故障診断機能を有するPE10の概略構成図である。
図5において、
図1と同様の構成は同じ符号を付してその説明を省略する。
【0080】
図5は、PE10AとPE10Bが対となっている。すなわち、PE10Aに入力される第1テスト値及び第2テスト値は、PE10Bに入力された入力値及び重み係数である。
【0081】
PE10Aの故障判定部34は、PE10Bの演算部20による入力値及び重み係数に基づく演算結果とPE10Aの演算部20による演算結果とを比較することで、PE10Aの演算部20の演算結果の正否を判定する。
【0082】
すなわち、PE10Aのゼロ検出信号出力部26がゼロ検出信号を出力すると、PE10Aの演算部20は、PE10Bに入力された入力値及び重み係数を第1テスト値及び第2テスト値として演算を行う。そして、PE10Aの故障判定部34は、PE10Bからの出力値を正解値として、PE10Aの演算部20の故障の有無を判定する。
【0083】
これにより、本実施形態のPE10Aは、テストモジュール50を用いることなく、演算部20の故障診断を行なえるので、ハードウェアアクセラレータにおけるハードウエア面積をより小さくできる。
【0084】
なお、PE10Bが故障診断を行う場合は、PE10Bは、PE10Aに入力された入力値及び重み係数を第1テスト値及び第2テスト値として演算を行い、PE10Aの出力値を正解値として故障の有無を判定する。
【0085】
また、
図5に示すPE10A,10Bには、
図2に示すカウンタ70、回数判定部72、及び故障診断実行制御部74が設けられてもよい。
【0086】
また、本実施形態では、PE10AとPE10Bとのように、PE10は、対となった他のPE10から第1テスト値、第2テスト値、及び正解値が入力されるが、他のPE10と対となっていなくてもよい。
【0087】
(第4実施形態)
本実施形態では、PE10がPEエラー信号を出力する場合の他の形態について説明する。
図6は、本実施形態の故障診断機能を有するPEアレイ100の概略構成図である。上述のようにPEアレイ100は、複数のPE10が2次元状に配列されて構成される。
【0088】
PE10は、故障判定部34によって演算部20による演算結果が正しくないと判定された場合、後段で処理を行う他のPE10に当該判定結果であるPEエラー信号を出力する。
【0089】
図6の例は、PE10
11に故障が発生した場合、その後段に位置するPE10
12及びPE10
21にPEエラー信号が出力される。そして、このPEエラー信号は、最後段のPE10
nmにまで出力され、最後段のPE10
nmからホストコンピュータにニューラルネットワークによる処理結果と共にアノテーションとしてエラー通知を出力される。
【0090】
なお、他のPE10へ出力されるPEエラー信号には、例えば、エラー信号が発生した入力値(例えば画像データ)を示すIDが付加されてもよい。そして、PEエラー信号を出力したPE10が複数存在する場合には、その都度IDがPEエラー信号に付加されて後段のPE10へ出力される。また、IDは、入力値を示すものではなく、エラー信号が発生したPE10を示すものでもよい。これにより、ニューラルネットワークによる演算結果の検証が可能となる。
【0091】
以上、本発明を、上記実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。発明の要旨を逸脱しない範囲で上記実施形態に多様な変更又は改良を加えることができ、該変更又は改良を加えた形態も本発明の技術的範囲に含まれる。
【0092】
上記実施形態では、乗算演算を行う演算部20の故障診断について説明したが、故障診断の対象は乗算演算する演算部20に限らない。所定の値が入力された場合に、演算結果が自明となるのであれば、乗算に限らず、他の演算を行う演算部20を故障診断の対象としてもよい。
【0093】
上記実施形態では、PE10に入力されるパラメータを重み係数とする形態について説明したが、これに限らず、パラメータは一定の頻度でゼロを示す値となる可能性があるデータであれば、重み係数に限らず、他のパラメータでもよい。
【0094】
10・・・PE、20・・・演算部、24A・・・ゼロ検出部、
24B・・・ゼロ検出部、32・・・出力値選択部、34・・・故障判定部、
50・・・テストモジュール