IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-517688行列の固有値計算のためのハードウェアアクセラレーション
<>
  • 特表-行列の固有値計算のためのハードウェアアクセラレーション 図1
  • 特表-行列の固有値計算のためのハードウェアアクセラレーション 図2
  • 特表-行列の固有値計算のためのハードウェアアクセラレーション 図3
  • 特表-行列の固有値計算のためのハードウェアアクセラレーション 図4A
  • 特表-行列の固有値計算のためのハードウェアアクセラレーション 図4B
  • 特表-行列の固有値計算のためのハードウェアアクセラレーション 図5A
  • 特表-行列の固有値計算のためのハードウェアアクセラレーション 図5B
  • 特表-行列の固有値計算のためのハードウェアアクセラレーション 図6A
  • 特表-行列の固有値計算のためのハードウェアアクセラレーション 図6B
  • 特表-行列の固有値計算のためのハードウェアアクセラレーション 図7
  • 特表-行列の固有値計算のためのハードウェアアクセラレーション 図8
  • 特表-行列の固有値計算のためのハードウェアアクセラレーション 図9
  • 特表-行列の固有値計算のためのハードウェアアクセラレーション 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-23
(54)【発明の名称】行列の固有値計算のためのハードウェアアクセラレーション
(51)【国際特許分類】
   G06G 7/16 20060101AFI20240416BHJP
   G06N 3/063 20230101ALI20240416BHJP
   G06G 7/60 20060101ALI20240416BHJP
【FI】
G06G7/16
G06N3/063
G06G7/60
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023565483
(86)(22)【出願日】2022-04-12
(85)【翻訳文提出日】2023-10-25
(86)【国際出願番号】 EP2022059708
(87)【国際公開番号】W WO2022228883
(87)【国際公開日】2022-11-03
(31)【優先権主張番号】17/245,801
(32)【優先日】2021-04-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】ノウィッキ、トマシュ
(72)【発明者】
【氏名】オネン、オグザン、ムラト
(72)【発明者】
【氏名】ゴクメン、タイフン
(72)【発明者】
【氏名】カランツィス、ヴァシリオス
(72)【発明者】
【氏名】ウー、チャイ、ワー
(72)【発明者】
【氏名】スクイランテ、マーク
(72)【発明者】
【氏名】ラッシュ、マルテ、ヨハネス
(72)【発明者】
【氏名】ヘンシュ、ウィルフリード
(72)【発明者】
【氏名】ホレシュ、リオル
(57)【要約】
行列の固有対のハードウェアアクセラレーションコンピューティングを実施するための技術が提供される。例えば、システムは、プロセッサと、プロセッサに結合された抵抗処理ユニットと、を備える。抵抗処理ユニットは、セルの配列を含み、セルはそれぞれ抵抗デバイスを含み、抵抗デバイスの少なくとも一部は、セルの配列に保存された所定の行列の値を符号化するように調整可能である。所定の行列がセルの配列に記憶されている場合、プロセッサは、初期ベクトルを記憶された行列の固有ベクトルの推定値に収束させるために、記憶された行列に対してアナログ行列-ベクトル乗算演算を実行することを含む処理を実行することによって、記憶された行列の固有ベクトルを判定するように構成される。
【特許請求の範囲】
【請求項1】
システムであって、
プロセッサと、
前記プロセッサに結合された抵抗処理ユニットであって、前記抵抗処理ユニットは、セルの配列を含み、前記セルはそれぞれ抵抗デバイスを含み、前記抵抗デバイスの少なくとも一部は、前記セルの配列に記憶可能な所定の行列の値を符号化するように調整可能である、抵抗処理ユニットと、を備え、
前記所定の行列が前記セルの配列に記憶されている場合、前記プロセッサは、前記記憶された行列の固有ベクトルの推定値に初期ベクトルを収束させるために、前記記憶された行列に対してアナログ行列-ベクトル乗算演算を実行することを含む処理を実行することによって、前記記憶された行列の前記固有ベクトルを判定するように構成される、
システム。
【請求項2】
前記処理を実行する際に、前記プロセッサはさらに、
前記推定された固有ベクトルに関連する固有値を推定することと、
前記処理の結果として、前記記憶された行列の少なくとも1つの固有対を返すことであって、前記記憶された行列の前記少なくとも1つの固有対は、前記推定された固有ベクトルおよび前記推定された固有ベクトルに関連する前記推定された固有値を含む、返すことと、
を行うように構成される、請求項1に記載のシステム。
【請求項3】
前記処理を実行する際に、前記プロセッサは、前記記憶された行列の支配的固有ベクトルを推定し、前記推定された支配的固有ベクトルに関連する支配的固有値を推定するために、べき乗反復処理を実行するように構成される、請求項1に記載のシステム。
【請求項4】
前記処理を実行する際に、前記プロセッサは、
前記所定の行列の逆行列を推定することと、
前記推定された逆行列を前記セルの配列に記憶することと、
前記推定された逆行列の支配的固有ベクトルを推定し、前記推定された逆行列の前記推定された支配的固有ベクトルに関連する支配的固有値を推定するために、逆べき乗反復処理を実行することと、
を行うように構成される、請求項1に記載のシステム。
【請求項5】
前記処理を実行する際に、前記プロセッサは、
第1の反復を実行することであって、前記第1の反復は、
前記セルの配列に前記初期ベクトルを入力することと、
前記セルの配列から出力される第1の出力ベクトルを生成するために、前記セルの配列内の前記記憶された行列と前記初期ベクトルを乗算することによって、第1の行列-ベクトル乗算演算を実行する前記抵抗処理ユニットを使用することと、
前記第1の出力ベクトルを正規化し、それによって第1の正規化ベクトルを生成する正規化処理を実行することと、を含む、実行することと、
少なくとも第2の反復を実行することであって、前記第2の反復は、
前記第1の正規化ベクトルを前記セルの配列に入力することと、
前記セルの配列から出力される第2の出力ベクトルを生成するために、前記セルの配列内の前記記憶された行列と前記第1の正規化ベクトルを乗算することによって、第2の行列-ベクトル乗算演算を実行する前記抵抗処理ユニットを使用することと、
前記第2の出力ベクトルを正規化し、それによって第2の正規化ベクトルを生成する正規化処理を実行することと、を含む、実行することと、
を行うように構成される、請求項1に記載のシステム。
【請求項6】
前記初期ベクトルは、ランダムベクトルおよび前記記憶された行列のターゲット固有ベクトルの推定値のうちの1つを含む、請求項5に記載のシステム。
【請求項7】
前記処理の複数の反復を完了すると、前記プロセッサは、
前記複数の反復のうち最後に完了した反復から生成された最後の出力ベクトルが、前記記憶された行列のターゲット固有ベクトルに収束したかどうかを判定することと、
前記最後の出力ベクトルが前記記憶された行列のターゲット固有ベクトルに収束したと判定したことに応答して、前記最後の出力ベクトルを前記記憶された行列の前記推定された固有ベクトルとして設定することと、
を行うように構成される、請求項5に記載のシステム。
【請求項8】
前記処理を実行する際に、前記プロセッサはさらに、
前記セルの配列内の前記記憶された行列の行列値を更新するために前記抵抗処理ユニットを利用し、それによって、前記所定の行列の前記推定された固有値がゼロに設定された更新された行列を生成することと、
前記所定の行列の第2の固有ベクトルを推定するために、前記セルの配列に記憶された前記更新された行列に対して処理を繰り返すことと、
前記推定された第2の固有ベクトルに関連する第2の固有値を推定することと、
を行うように構成される、請求項1に記載のシステム。
【請求項9】
前記セルの配列内の前記記憶された行列の行列値を更新するために前記抵抗処理ユニットを利用する際に、前記プロセッサは、前記記憶された行列に対して第1のベクトルと第2のベクトルの外積演算を実行するように構成され、
前記第1のベクトルは、前記関連する推定された固有値によってスケーリングされた前記推定された固有ベクトルを含み、
前記第2のベクトルは、前記推定された固有ベクトルの転置を含む、
請求項8に記載のシステム。
【請求項10】
コンピュータプログラム製品であって、
1または複数のコンピュータ可読記憶媒体と、前記1または複数のコンピュータ可読記憶媒体に集合的に記憶されたプログラム命令であって、前記プログラム命令は、
アプリケーションから所定の行列を受信するプログラム命令と、
抵抗処理ユニットのセルの配列に行列を記憶するプログラム命令であって、前記記憶された行列が前記所定の行列と関連付けられている、プログラム命令と、
前記所定の行列の固有ベクトルを判定する処理を実行するプログラム命令であって、前記処理を実行する前記プログラム命令は、前記記憶された行列の前記固有ベクトルの推定値に初期ベクトルを収束させるために、前記記憶された行列に対してアナログ行列-ベクトル乗算演算を実行するプログラム命令を含む、プログラム命令と、
を含む、コンピュータプログラム製品。
【請求項11】
前記処理を実行する前記プログラム命令は、
前記推定された固有ベクトルに関連する固有値を推定するプログラム命令と、
前記所定の行列の少なくとも1つの固有対を前記アプリケーションに返すプログラム命令であって、前記少なくとも1つの固有対は、前記推定された固有ベクトルおよび前記推定された固有ベクトルに関連する前記推定された固有値を含む、プログラム命令と、
をさらに含む、請求項10に記載のコンピュータプログラム製品。
【請求項12】
前記処理を実行するプログラム命令は、前記記憶された行列の支配的固有ベクトルを推定し、前記推定された支配的固有ベクトルに関連する支配的固有値を推定するために、べき乗反復処理を実行するプログラム命令を含む、請求項10に記載のコンピュータプログラム製品。
【請求項13】
前記抵抗処理ユニットの前記セルの配列に前記行列を記憶する前記プログラム命令は、前記所定の行列の逆行列を推定し、前記所定の行列の前記推定された逆行列を前記抵抗処理ユニットの前記セルの配列に記憶するプログラム命令と、
前記推定された逆行列の支配的固有ベクトルを推定し、前記推定された逆行列の前記推定された支配的固有ベクトルに関連する支配的固有値を推定するために、逆べき乗反復処理を実行するプログラム命令を含む前記処理を実行する前記プログラム命令と、を含む、
請求項10に記載のコンピュータプログラム製品。
【請求項14】
前記処理を実行する前記プログラム命令は、
第1の反復を実行するプログラム命令であって、前記第1の反復は、
前記セルの配列に前記初期ベクトルを入力することと、
前記セルの配列から出力される第1の出力ベクトルを生成するために、前記セルの配列内の前記記憶された行列と前記初期ベクトルを乗算することによって、第1の行列-ベクトル乗算演算を実行することと、
前記第1の出力ベクトルを正規化し、それによって第1の正規化ベクトルを生成する正規化処理を実行することと、を含む、プログラム命令と、
少なくとも第2の反復を実行するプログラム命令であって、前記第2の反復は、
前記第1の正規化ベクトルを前記セルの配列に入力することと、
前記セルの配列から出力される第2の出力ベクトルを生成するために、前記セルの配列内の前記記憶された行列と前記第1の正規化ベクトルを乗算することによって、第2の行列-ベクトル乗算演算を実行することと、
前記第2の出力ベクトルを正規化し、それによって第2の正規化ベクトルを生成する前記正規化処理を実行することと、を含む、プログラム命令と、
を含む、請求項10に記載のコンピュータプログラム製品。
【請求項15】
前記処理を実行する前記プログラム命令は、
前記処理の複数の反復を完了すると、前記複数の反復のうち最後に完了した反復から生成された最後の出力ベクトルが、前記記憶された行列のターゲット固有ベクトルに収束したかどうかを判定するプログラム命令と、
前記最後の出力ベクトルが前記記憶された行列の前記ターゲット固有ベクトルに収束したと判定したことに応答して、前記最後の出力ベクトルを前記記憶された行列の前記推定された固有ベクトルとして設定するプログラム命令と、
をさらに含む、請求項14に記載のコンピュータプログラム製品。
【請求項16】
前記セルの配列内の前記記憶された行列の行列値を更新するために前記抵抗処理ユニットを利用し、それによって、前記所定の行列の前記推定された固有値がゼロに設定された更新された行列を生成するプログラム命令と、
前記所定の行列の第2の固有ベクトルを推定するために、前記セルの配列に記憶された前記更新された行列に対して前記処理を繰り返すプログラム命令と、
前記推定された第2の固有ベクトルに関連する第2の固有値を判定するプログラム命令と、
を含む、請求項10に記載のコンピュータプログラム製品。
【請求項17】
前記セルの配列内の前記記憶された行列の行列値を更新するために前記抵抗処理ユニットを利用する前記プログラム命令は、
前記記憶された行列に対して第1のベクトルと第2のベクトルの外積演算を実行するプログラム命令を含み、
前記第1のベクトルは、前記関連する固有値によってスケーリングされた前記推定された固有ベクトルを含み、
前記第2のベクトルは、前記推定された固有ベクトルの転置を含む、
請求項16に記載のコンピュータプログラム製品。
【請求項18】
アプリケーションから所定の行列を受信することと、
抵抗処理ユニットのセルの配列に行列を記憶することであって、前記記憶された行列が前記所定の行列と関連付けられている、記憶することと、
前記所定の行列の固有ベクトルを判定する処理を実行することであって、前記処理を実行することは、前記記憶された行列の前記固有ベクトルの推定値に初期ベクトルを収束させるために、前記記憶された行列に対してアナログ行列-ベクトル乗算演算を実行することを含む、実行することと、
を含む、方法。
【請求項19】
前記処理を実行することは、
前記推定された固有ベクトルに関連する固有値を推定することと、
前記所定の行列の少なくとも1つの固有対を前記アプリケーションに返すことであって、前記少なくとも1つの固有対は、前記推定された固有ベクトルおよび前記推定された固有ベクトルに関連する前記推定された固有値を含む、返すことと、
をさらに含む、請求項18に記載の方法。
【請求項20】
前記処理を実行することは、
前記推定された固有ベクトルに関連する固有値を推定することと、
前記セルの配列内の前記記憶された行列の行列値を更新するために前記抵抗処理ユニットを利用し、それによって、前記所定の行列の前記推定された固有値がゼロに設定された更新された行列を生成することと、
前記所定の行列の第2の固有ベクトルを推定するために、前記セルの配列に記憶された前記更新された行列に対して前記処理を繰り返すことと、
前記推定された第2の固有ベクトルに関連する第2の固有値を推定することと、をさらに含み、
前記セルの配列内の前記記憶された行列の行列値を更新するために前記抵抗処理ユニットシステムを利用することは、前記記憶された行列に対して第1のベクトルと第2のベクトルの外積演算を実行することを含み、
前記第1のベクトルは、前記関連する固有値によってスケーリングされた前記推定された固有ベクトルを含み、
前記第2のベクトルは、前記推定された固有ベクトルの転置を含む、
請求項18に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、ニューロモーフィックコンピューティングのためのアナログ抵抗処理システム、およびアナログ抵抗処理システムを用いてハードウェアアクセラレーション数値コンピューティングタスクを実行するための技術に関するものである。
【背景技術】
【0002】
ニューロモーフィックコンピューティングシステムや人工ニューラルネットワークシステムなどの情報処理システムは、認知認識やコンピューティングのための機械学習や推論処理などの様々なアプリケーションで活用されている。かかるシステムは、一般に、並列に動作して様々な種類の計算を行う多数の高度に相互接続された処理要素(「人工ニューロン」と呼ばれる)を含む、ハードウェアベースのシステムである。人工ニューロン(例えば、プレシナプティックニューロンとポストシナプティックニューロン)は、人工ニューロン間の接続強度を表すシナプス重みを提供する人工シナプスデバイスを用いて接続される。シナプス重みは、調整可能な抵抗性メモリデバイス(例えば、調整可能なコンダクタンス)を有する抵抗処理ユニット(RPU)セルの配列を使用して実装することができ、RPUセルのコンダクタンス状態は、シナプス重みに符号化またはマッピングされる。
【発明の概要】
【0003】
本発明の態様は、添付の特許請求の範囲に定義されるように、行列の固有対のハードウェアアクセラレーションコンピューティングを実装するシステム、コンピュータプログラム製品、および方法を含む。例示的な実施形態では、システムであって、プロセッサと、プロセッサに結合された抵抗処理ユニットと、を備える。抵抗処理ユニットは、セルの配列を含み、セルはそれぞれ抵抗デバイスを含み、抵抗デバイスの少なくとも一部は、セルの配列に保存された所定の行列の値を符号化するように調整可能である。所定の行列がセルの配列に記憶されている場合、プロセッサは、初期ベクトルを記憶された行列の固有ベクトルの推定値に収束させるために、記憶された行列に対してアナログ行列-ベクトル乗算演算を実行することを含む処理を実行することによって、記憶された行列の固有ベクトルを判定するように構成される。
【0004】
他の実施形態は、添付の図と合わせて読まれる例示的な実施形態の以下の詳細な説明で説明されるであろう。
【図面の簡単な説明】
【0005】
図1】本開示の例示的な実施形態による、行列の固有対のハードウェアアクセラレーションコンピューティングを実装するコンピューティングシステムを概略的に示している。
図2】本開示の例示的な実施形態による、行列の固有対のハードウェアアクセラレーションコンピューティングを提供するために、図1のシステムに実装され得るRPUコンピューティングシステムを概略的に示している。
図3】本開示の例示的な実施形態による、固有対コンピューティング処理を実行するための方法を示す図である。
図4A】本開示の例示的な実施形態による、固有対コンピューティング処理を実行するための方法を示す図である。
図4B】本開示の例示的な実施形態による、固有対コンピューティング処理を実行するための方法を示す図である。
図5A】本開示の例示的な実施形態による、行列の固有対のハードウェアアクセラレーションコンピューティングを実装するためのRPUセルの配列を含むRPUコンピューティングシステムによって、アナログ行列-ベクトル乗算演算を実行するための方法を概略的に示している。
図5B】本開示の例示的な実施形態による、行列の固有対のハードウェアアクセラレーションコンピューティングを実装するためのRPUセルの配列を含むRPUコンピューティングシステムによってアナログ外積演算を行うための方法を概略的に示している。
図6A】本開示の例示的な実施形態による、行列の固有対のハードウェアアクセラレーションコンピューティングを実装するための行列-ベクトル演算を実行するためのRPUセルの配列を含むRPUコンピューティングシステムを構成するための方法を概略的に示している。
図6B】本開示の例示的な実施形態による、行列の固有対のハードウェアアクセラレーションコンピューティングを実装するためにアナログ外積演算を実行するRPUセルの配列を含むRPUコンピューティングシステムを構成するための方法を概略的に示す図である。
図7】本開示の例示的な実施形態による、符号付き行列値を用いた固有対コンピューティング処理のための行列-ベクトル演算を実行するために、RPUセルの複数の配列を含むRPUコンピューティングシステムを構成するための方法を概略的に示す図である。
図8】本開示の例示的な実施形態による、固有対コンピューティング処理を実行するように構成されたシステムをホストすることができるコンピューティングノードの例示的なアーキテクチャを概略的に示す図である。
図9】本開示の例示的な実施形態による、クラウドコンピューティング環境を示す図である。
図10】本開示の例示的な実施形態による抽象化モデルレイヤを示す図である。
【発明を実施するための形態】
【0006】
本発明の実施形態は、次に、行列の固有対のハードウェアアクセラレーションコンピューティングを提供するためのシステムおよび方法に関してさらに詳細に説明される。添付の図面に示された様々な特徴は、縮尺通りに描かれていない概略図であることを理解されたい。さらに、同一または類似の参照番号は、同一または類似の特徴、要素、または構造を示すために図面全体を通して使用され、したがって、同一または類似の特徴、要素、または構造についての詳細な説明は、図面のそれぞれについて繰り返されることはない。さらに、「例示的」という用語は、本明細書では「例、実例、または例示として機能すること」を意味するために使用される。本明細書で「例示的」として説明される任意の実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0007】
さらに、回路、構造、要素、コンポーネントなどと共に使用される、1または複数の機能を実行するか、さもなければ何らかの機能性を提供する「ように構成される」という表現は、回路、構造、要素、コンポーネントなどが、ハードウェア、ソフトウェア、および/またはそれらの組み合わせで実装され、ハードウェアを備える実装では、ハードウェアが離散回路素子(例えば、トランジスタ、インバータなど)、プログラマブル素子(ASIC、FPGAなど)、処理デバイス(CPU、GPUなど)、1または複数の集積回路、および/またはそれらの組合せを備え得る実施形態を包含することを意図していることを理解されたい。したがって、例示に過ぎないが、回路、構造、要素、コンポーネントなどが特定の機能を提供するように構成されていると定義される場合、回路、構造、要素、コンポーネントなどが動作状態にあるときに特定の機能を実行することを可能にする要素、処理デバイス、もしくは集積回路、またはその組み合わせで構成されている実施形態(例えば、システム内に接続されているか、そうでなければ配備されている、電源が入っている、入力を受信する、もしくは出力を生成する、またはその組み合わせ。)ならびに、回路、構造、要素、コンポーネントなどが非動作状態(例えば、接続されていない、システム内に配置されていない、電源が入っていない、入力を受信していない、もしくは出力を生成していない、またはその組み合わせ)または部分的に動作状態にある場合のカバー実施形態をカバーすることを意図している。
【0008】
図1は、本開示の例示的な実施形態による、行列の固有対のハードウェアアクセラレーションコンピューティングを実装するコンピューティングシステムを概略的に示している。特に、図1は、アプリケーション110、デジタル処理システム120、およびニューロモーフィックコンピューティングシステム130を備えるコンピューティングシステム100を概略的に示す。デジタル処理システム120は、複数のプロセッサコア122を備える。ニューロモーフィックコンピューティングシステム130は、複数のニューラルコア132を備える。いくつかの実施形態では、ニューロモーフィックコンピューティングシステム130は、各ニューラルコア132が1または複数のアナログ抵抗処理ユニット配列(例えば、アナログRPUクロスバー配列ハードウェア)を備える抵抗処理ユニット(RPU)システムを備える。ニューラルコア132は、RPU配列134上で実行されるベクトル-行列乗算、行列-ベクトル乗算、ベクトル-ベクトル乗算、もしくは行列乗算演算などの数値演算のハードウェアアクセラレーションをサポートするために、アナログ領域で積和(MAC)演算を実行することによって、行列の固有対の計算などの行列分解演算を行うためのハードウェアアクセラレーションをサポートするように構成される。
【0009】
いくつかの実施形態では、デジタル処理システム120は、アプリケーション110によって提供される所定の行列Aの固有対を計算するために実行される固有対計算処理140のような行列分解処理の実行を制御する。固有対計算処理140は、行列の固有対の計算を可能にするために、様々な処理および最適化ソルバー手法を実装する。例えば、いくつかの実施形態では、固有対計算処理140は、固有対判定制御処理142と、行列反転処理144とを実装し、これらは、固有対計算処理140によって利用され、所定の行列Aの1または複数の固有対を計算する。いくつかの実施形態では、固有対判定制御処理142および行列反転処理144は、デジタル処理システム120のプロセッサコア122によって実行されて固有対計算処理140を実行するソフトウェアモジュールである。以下にさらに詳細に説明するように、固有対計算処理140は、ニューロモーフィックコンピューティングシステム130を利用して、図1に概略的に示されるように、RPU配列134の1または複数に記憶される所定の行列(例えば、元の行列Aまたは近似(推定)逆行列A-1)に対して、行列-ベクトル演算およびベクトル-ベクトル積演算などの様々なインメモリ計算を通じてアナログ領域でハードウェアアクセラレーション積和(MAC)演算(例えば、外積演算)を実行する。
【0010】
アプリケーション110は、数値演算を実行し、線形方程式を解き、他の計算を実行するための計算対象として行列および逆行列を利用する任意のタイプの計算アプリケーション(例えば、科学計算アプリケーション、工学アプリケーション、グラフィックスレンダリングアプリケーション、信号処理アプリケーション、顔認識アプリケーション、行列対角化アプリケーション、無線通信用のMIMO(多重入力、多重出力)システム、暗号化など)を含んでよい。数学的には、線形システム(または線形方程式系)とは、同じ変数セットを持つ1または複数の線形方程式の集まりであり、線形システムの解は、(線形システムの)すべての線形方程式が同時に満たされるように変数に値を割り当てることを含む。数学的には、線形システムの理論は数値線形代数の基礎であり、基本的な部分である。数値線形代数は、ベクトルや行列の特性や関連するベクトル/行列演算を利用して、効率的かつ正確な方法で線形システムを解くコンピュータアルゴリズムを実装する。数値線形代数の一般的な問題には、特異値分解、固有ベクトル分解、行列対角化などの行列分解を取得することを含み、これを利用して所定の行列の固有値や固有ベクトルを判定し、それによって線形連立方程式の解法など、線形代数学の一般的な問題を解決することができる。
【0011】
例えば、定数係数の線形方程式系は、行列Aを用いて線形変換を表し、反復処理を利用して行列の固有値および固有ベクトルを判定する代数的方法を用いて解くことができ、行列Aの固有値および固有ベクトルは線形方程式の解を表す。より具体的には、線形方程式系は、以下の固有値方程式の形で表すことができる。
Ax=λx(式1)
ここで、Aは実数または複素数のn×n行列(またはより詳細には対角化可能な行列)であり、ここでλはスカラー数(実数または複素数)であり、行列Aの固有値であり、xは次元nの非ゼロベクトル(場合によっては複素数)であり、行列Aの固有ベクトルとなる。より具体的には、式(1)において、n×nの行列Aは線形変換を表すことができ、固有ベクトルはn×1の行列である。固有値方程式(式1)は、線形変換Aの作用の下で、ベクトルxが共線ベクトルλxに変換されることを意味する。この性質を持つベクトルは線形変換Aの固有ベクトルとみなされ、関連するスカラーλは固有値とみなされる。本明細書で使用する「固有対」という用語は、固有ベクトルとそれに関連する固有値の数学的な対を示すものである。多くの用途において、所定の行列Aの固有対(λ,x)を求めることが望ましく、ここでλは固有値、xは対応する固有ベクトルである。
【0012】
本来、行列Aの線形変換の固有ベクトルxは、固有ベクトルxにAを適用しても方向が変わらない非ゼロベクトルである。線形変換Aの固有ベクトルxへの適用は、固有ベクトルxを固有値λでのみスケーリングする。固有ベクトルは、線形変換が単に所定の方向に伸びるか縮むか、あるいは方向が反転したりする作用の方向を示し、固有値は所定の方向への変化の大きさを示す。言い換えると、固有ベクトルは、線形変換Aが単に伸びるか縮むか、あるいは方向を反転させるベクトルであり、固有ベクトルが伸びる/縮む/方向を反転させる量は、固有値に基づくものである。これに関して、固有値λは、任意のスカラー値(またはゼロまたは複素数)であってよく、固有値λは、負であってもよく、この場合、固有ベクトルは、スケーリングの一部として方向を反転する。
【0013】
正方形のn×n行列Aは、A=XΛX-1(一方、対称行列は定義により対角化可能である)を満たすような反転行列Xおよび対角行列Λが存在する場合に対角化可能である。いくつかの実施形態では、行列Aを対角化する、すなわち、A=XΛX-1を満たす行列XおよびΛを判定することにより、処理が実施される。所定の行列Aは、行列Aがn個の線形独立固有ベクトルを有する場合、対角化可能である。言い換えると、実数n×n行列Aが、n個の固有対(λ,x),(λ,x),...,(λ,x)を持ち、固有ベクトルx,x,...,xが線形独立である場合、A=XΛX-1となり、ここでXは列がベクトルx,x,...,xすなわちX=(x,x,...,x)である反転可能なn×n行列であり、Λはn×n行列であり、以下が成り立つ。
【0014】
この例では、Xの列ベクトルは行列Aの固有ベクトルの基底を形成し、Xのi番目の列はAの固有ベクトルxであり、Λは対角行列であり、i番目の対角要素λが対応する固有値である。この点における対角化可能行列Aの固有分解演算は固有ベクトルの基本性質に基づいており、ここで、X-1AX=ΛはAX=XΛと書き換えることができ、さらにAx=λと書き換えることができ、ここで、Xの列ベクトルxはAの右固有ベクトル、対応する対角エントリは対応する固有値、X-1の行ベクトルはAの左固有ベクトルとする。行列Aを対角化する処理は、固有ベクトルが基底を形成する場合に、行列の固有値と固有ベクトルを求めるのと同じ処理である。なお、対角化は、A=XΛ-1のように、行列のべき乗を効率的に計算するために用いることができることに留意されたい。
【0015】
さらに、Xは、Xの列を対称行列Aのn個の線形独立な固有ベクトルの対称n×n行列とすると、Xは転置XがXの逆行列に等しい直交行列、すなわち、X=X-1である。この点から、固有値方程式(式1)はAX=XΛと書くことができ、ここで、Λは対角n×n行列で、その要素はAの固有値をXの列と順に対応させている。X=XT-1に基づいて、方程式AX=XΛはA=XΛXと書き換えられる場合があり、さらにXAX=Λと書き換えられることができる。
【0016】
いくつかの実施形態では、固有対計算処理140は、所定の対角化可能な行列の固有値および固有ベクトルを判定するための固有分解処理を実装し、固有分解は、例えば、反復数値メソッドに基づく。一般に、小さなn×n行列Aについて、行列Aの固有値は、特性多項式を使用して記号的に判定することができる。具体的には、Ax=λxの固有値方程式(式1)から、右辺にn×nの単位行列Iを掛けるとAx=λIxとなり、これはAx-λIx=0または(A-λI)x=0に書き換えることができる。xが0でないと仮定すると、特性多項式の式p(λ)=det(A-λI)=0を用いて固有値を計算することができ、計算された固有値に基づいて対応する固有ベクトルxを式(A-λI)x=0を用いて計算することができる。n×nの行列Aに対して、多項式p(λ)は、λにおけるn番目の次数であり、n個の平方根λ,λ,...,λを持ち、これらの平方根は行列Aの固有値である。行列Aの各固有値λに対し、(式1)の対応する非ゼロ解xが存在する。実際には、計算にはコストがかかり、高次多項式の正確な(記号的な)平方根を計算することは困難な場合があるため、大きな行列の固有値は特性多項式を使用して計算されない。そのため、固有ベクトルと固有値の推定値を計算するために、反復数値計算アルゴリズムが利用される。
【0017】
いくつかの実施形態において、固有対計算処理140は、「べき乗反復法」として知られる反復数値法を用いて固有分解処理を実行する。より具体的には、いくつかの実施形態では、固有対判定制御処理142は、行列Aの1または複数の固有対を計算するために、対称行列Aに対してべき乗反復処理を実行するように構成された方法を実施する。対称(したがって対角化可能)な行列Aが与えられると、べき乗反復処理を実行して、固有値方程式を満たす、行列Aの最大固有値λ(例えば、絶対値で支配的固有値λ)、および支配的固有値λに対応する対応する支配的(非ゼロ)固有ベクトルvを判定する:Ax=λx。例示的なべき乗反復処理は、図4Aおよび4Bの例示的なフロー図を参照して、以下でさらに詳細に説明される。
【0018】
一般に、べき乗反復法は、支配的固有ベクトルの近似値であってもよいし、ランダムベクトルであってもよい初期ベクトルから始まる。初期ベクトルは、各反復後に支配的固有ベクトルの現在の推定値を表す正規化ベクトル(または単位ベクトル)のシーケンスを計算する反復処理で利用され、シーケンスが支配的固有値または主固有値に対応する固有ベクトルに収束することが期待される。各反復において、結果のベクトルxは行列Aを掛け合わされる。行列Aが、行列Aの他の固有値よりも絶対的な大きさが厳密に大きい固有値を有し、初期ベクトルが支配的固有値に関連する固有ベクトルの方向に非ゼロ成分を有すると仮定すると、計算されたシーケンスベクトルは、支配的固有値に関連する固有ベクトルに収束するだろう。本開示の例示的な実施形態に従って、ハードウェアアクセラレーションコンピューティングは、べき乗反復処理の各反復のための乗算演算(Ax)を実行するためにべき乗反復処理の間に(例えば、RPUコンピューティングシステムを介して)利用される。べき乗反復処理は、支配的固有ベクトルの推定値を計算し、対応する支配的固有値は、例えば、固有ベクトルのレイリー商によって判定され得る。
【0019】
【0020】
さらに、いくつかの実施形態では、固有対判定制御処理142は、所定の対角化可能な行列Aの追加の固有対を計算するために、べき乗反復処理と連携して行列デフレーション処理を実施する。上述のように、べき乗反復処理は、支配的固有ベクトルxの推定値を計算するために利用され、これにより、固有対判定制御処理142は、レイリー商などの任意の適切な処理を介して、対応する支配的固有値λの推定値を計算することができる。行列Aの他の固有対を判定する必要がない場合、べき乗反復処理は、行列Aの支配的固有対(λ,x)の計算で終了する。一方、n×n行列Aの1または複数の1つの付加的な固有対(例えば、(λ,x),(λ,x),...,(λ,x))を判定する場合、固有対判定制御処理142は、行列デフレーション処理を実施してデフレーション行列を計算し、デフレーション行列の支配的固有対の計算を可能にし、べき乗反復処理を用いて行列Aの次の支配的固有対(例えば、(λ,x))に対応する。例示的な行列デフレーション処理は、例示的なフロー図4Bを参照して、以下でさらに詳細に議論される。
【0021】
支配的固有ベクトルx(例えば、正規化固有ベクトルx)および行列Aの対応する支配的固有値λが、べき乗反復処理によって判定されたとする。いくつかの実施形態では、行列デフレ処理は、行列λ を計算し、それを行列Aから減算してデフレーション行列D、すなわちD=A-λ を生成することによって行われる。デフレーション行列Dは、行列Aと同じ固有ベクトルを持ち、同じ固有値を持つが、先に計算されたAの支配的固有値がデフレーション行列Dでゼロにマッピングされるという違いがある。この点で、行列Aの次の下位固有値は、デフレーション行列Dの支配的固有値となり、べき乗反復法の別の反復によって判定することができる。
【0022】
【0023】
【0024】
【0025】
【0026】
図1に模式的に示されるように、行列反転処理144は、アプリケーション110によって提供される行列Aの推定逆行列A-1を計算し、推定された逆行列A-1をRPU配列134に記憶するように構成される方法を実施する。固有対判定制御処理142は、逆べき乗反復処理の第1の反復において、行列Aの最小の固有対を計算するために、推定された逆行列A-1に対して動作することになる。いくつかの実施形態では、行列反転処理は、行列Aの逆行列A-1の推定値を計算するために、任意の適切な処理を使用してデジタル領域で実行される。例えば、いくつかの実施形態では、行列反転処理144は、逆行列A-1の近似値を計算するために、ノイマン級数処理もしくはニュートン反復処理またはその両方を使用して実装され、その例示的な方法は、当業者に知られており、その詳細は、本明細書に記載される例示的な固有対計算技術を理解するために必要ではない。
【0027】
いくつかの実施形態では、行列反転処理144は、2020年12月29日に出願された米国特許出願シリアル番号17/134,814、タイトル:Matrix Inversion Using Analog Resistive Crossbar Array hardwareに開示されているようなハードウェアアクセラレーションコンピューティング技術を実装し、これは共通譲渡されて、参照によって完全に本書に組み込まれる。米国特許出願シリアル番号17/134,814は、例えば、(i)所定の行列Aの第1の推定された逆行列をRPU配列134の1または複数に記憶することと、(ii)第1の推定された逆行列を所定の行列の第2の推定された逆行列に収束するためにRPUセルの配列に記憶された第1の推定された逆行列に第1の反復処理を実行することと、を含む行列反転処理を行う技術を開示する。いくつかの実施形態において、第1の反復処理は、RPUセルの配列に記憶された第1の推定された逆行列を訓練するために訓練データとして所定の行列Aの行ベクトルを利用し、同一行列の行列値に基づいて判定される誤差ベクトルを利用することによってRPUセルの配列に記憶される第1の推定された逆行列の行列値を更新することを含む確率勾配降下最適化処理素含む。行列逆処理フローの更なる詳細は、米国特許出願シリアル番号17/134,814に記載されており、これは参照により本明細書に組み込まれる。
【0028】
図1に概略的に示すように、アプリケーション110の実行中、アプリケーション110は、固有対計算処理140を呼び出して、行列反転処理140に提供される所定の行列Aの1または複数の固有対を計算することができる。いくつかの実施形態では、行列Aは、対称行列または対称正定値(SPD)行列を含む。対称行列は、その転置に等しい正方行列である。SPD行列は、行列のすべての固有値が実数かつ正であり、n個の固有ベクトルの正規直交セット(ここで、対称行列の異なる固有値に対応する固有ベクトルは互いに直交する)を有する正方対称な行列である。SPD行列は、計算を実行するためにSPD行列の固有分解が必要とされる多くの物理的および数学的文脈で生じる。例示の目的のために、本開示の例示的な実施形態は、対称行列およびSPD行列の文脈で本明細書に記載されるが、本明細書に議論される例示的な技術は、非対称行列に容易に適用され得る。
【0029】
いくつかの実施形態では、デジタル処理システム120は、固有対計算処理140の実行を制御する。初期段階として、所定の行列Aの固有対を計算する要求とともにアプリケーション110から行列Aを受け取ると、固有対計算処理140は、固有対計算処理のためのハードウェアアクセラレーションサポートを提供するために、ニューロモーフィックコンピューティングシステム130の1または複数のニューラルコア132および関連するRPU配列134を構成する。さらに、固有対計算処理140は、ニューラルコア132の1または複数のRPU配列134に行列Aを記憶するために、ニューロモーフィックコンピューティングシステム130と通信することになる。いくつかの実施形態では、逆行列A-1が計算に必要な場合、固有対計算処理140は、行列反転処理144を呼び出して、受信した行列Aの近似逆行列A-1を計算し、逆行列A-1を固有対計算処理をサポートするように構成されている1または複数のニューラルコア132のRPU配列134のうちの1または複数に記憶する。その後、固有対判定制御処理142は、行列Aの1または複数の固有対を計算するために、必要に応じて、例えば、べき乗反復処理、逆べき乗反復処理、もしくは行列デフレーション処理、またはその組み合わせ等を含む数値反復処理を実行する。固有対計算方法の例示的な実施形態の詳細については、以下でさらに詳細に説明する。
【0030】
図2は、本開示の例示的な実施形態による、行列の固有対のハードウェアアクセラレーションコンピューティングを提供するために、図1のシステムに実装され得るRPUコンピューティングシステムを概略的に図示する。例えば、図2は、図1のニューロモーフィックコンピューティングシステム130のニューラルコア132および関連するRPU配列134の例示的な実施形態を概略的に示す。より詳細には、図2は、複数の行R1,R2,R3,...,Rm、および複数の列C1,C2,C3,...,Cnに配置されたRPUセル210の2次元(2D)クロスバー配列を備えるRPUシステム200(例えば、ニューロモーフィックコンピューティングシステム)を概略的に示している。各行R1,R2,R3,...,RmのRPUセル210は、それぞれの行制御線RL1,RL2,RL3,...,RLm(まとめて、行制御線RL)に共通接続される。各列C1,C2,C3,...,CnのRPUセル210は、それぞれの列制御線CL1,CL2,CL3,...,CLn(まとめて列制御線CL)と共通に接続されている。各RPUセル210は、行制御線および列制御線のそれぞれの1つのクロスポイント(または交差点)において(およびその間に)接続されている。例示的な実施形態では、行の数(m)および列の数(n)は同じである(すなわち、n=m)。例えば、いくつかの実施形態では、コンピューティングシステム200は、RPUセル210の4,096×4,096の配列を備える。
【0031】
コンピューティングシステム200は、行制御線RL1,RL2,RL3,...,RLmに接続された周辺回路220と、列制御線CL1,CL2,CL3,...,CLnに接続された周辺回路230とをさらに備えている。さらに、周辺回路220は、データ入力/出力(I/O)インターフェースブロック225に接続され、周辺回路230は、データI/Oインターフェースブロック235に接続される。コンピューティングシステム200は、コンピューティングシステム200の周辺回路220および230の動作のための電力分配および制御信号およびクロッキング信号を提供するための電力、クロック、バイアスおよびタイミング回路などの様々な種類の回路ブロックを備える制御信号回路240をさらに備える。
【0032】
いくつかの実施形態では、コンピューティングシステム200の各RPUセル210は、調整可能なコンダクタンス値を有する抵抗素子を含む。動作中、コンピューティングシステム200のRPUセル210の一部または全部は、RPUセル210の配列に記憶されている、受信した所定の行列Aまたは近似逆行列A-1のそれぞれの数値行列値にマッピングされるそれぞれのコンダクタンス値を含む。いくつかの実施形態では、RPUセル210の抵抗素子は、抵抗スイッチングデバイス(界面またはフィラメントスイッチングデバイス)、ReRAM、メモリスタデバイス、相変化メモリ(PCM)デバイスなど)およびRPUセル210の重量を調整するために複数の異なるコンダクタンスレベルの範囲内でプログラム的に調整できる、可変コンダクタンス(または可変抵抗レベル)を有する他の種類のデバイスなどの抵抗素子を用いて実装される。いくつかの実施形態では、RPUセル210の可変コンダクタンス素子は、強誘電体電界効果トランジスタデバイスなどの強誘電体デバイスを使用して実装することができる。さらに、いくつかの実施形態では、RPUセル210は、各RPUセル210がキャパシタおよび読み出しトランジスタを備えるアナログCMOSベースのフレームワークを使用して実装することができる。アナログCMOSベースのフレームワークでは、キャパシタは、RPUセル210のメモリ素子として機能し、キャパシタ電圧の形態で重み値を記憶し、キャパシタ電圧は、キャパシタ電圧のレベルに基づいて読み出しトランジスタのチャネル抵抗を変調するために読み出しトランジスタのゲート端子に印加され、読み出しトランジスタのチャネル抵抗は、RPUセルのコンダクタンスを表し、チャネル抵抗に基づいて発生する読み込み電流のレベルと相関する。
【0033】
行制御線RLおよび列制御線CLはそれぞれ、図示を容易にするために図2に単一の線として示されているが、各行および列制御線は、実装およびRPUセル210の特定のアーキテクチャに応じて、それぞれの行および列のRPUセル210に接続された2以上の制御線を含み得ることが理解されよう。例えば、いくつかの実施形態では、各行制御線RLは、所定のRPUセル210に対するワード線の相補的な対を含むことができる。さらに、各列制御線CLは、例えば、1または複数のソース線(SL)および1または複数のビット線(BL)を含む複数の制御線を備える場合がある。
【0034】
周辺回路220および230は、RPUセル210の2D配列におけるそれぞれの行および列に接続され、本開示の例示的な実施形態に従って、所定の行列Aの固有対のハードウェアアクセラレーションコンピューティングを提供するために、ベクトル-行列乗算関数、行列-ベクトル乗算関数および外積更新演算などの様々なアナログ、インメモリ計算操作を実行するように構成された様々な回路ブロックを備える。例えば、いくつかの実施形態では、RPUセルの読み取り/感知動作(例えば、所定のRPUセル210の重み値を読み取る)をサポートするために、周辺回路220および230は、パルス幅変調(PWM)回路および読み取りパルス駆動回路を備え、これらは、異なる動作中に受け取ったデジタル入力ベクトル値(読み取り入力値)に応じてPWM読み取りパルスを生成してRPUセル210に加えるよう構成される。より具体的には、いくつかの実施形態では、周辺回路220および230は、(行または列に適用される)デジタル入力ベクトルを受け取り、デジタル入力ベクトルの要素を、パルス幅が変化する入力電圧によって表されるアナログ入力ベクトル値に変換するように構成されるデジタル-アナログ(D/A)変換回路を備える。いくつかの実施形態では、入力ベクトルが、調整可能な持続時間(例えば、パルス持続時間は1nsの倍数であり、入力ベクトルの値に比例する)を有する固定振幅Vin=1Vパルスによって表されるときに、時間符号化方式が使用される。行(または列)に印加される入力電圧は、出力電流によって表される出力ベクトル値を生成し、RPUセル210の記憶された重み/値は、出力電流を測定することによって実質的に読み出される。
【0035】
周辺回路220および230は、接続されたRPUセル210から出力され蓄積される読み出し電流(IREAD)を積分し、積分された電流をその後の計算のためにデジタル値(読み出し出力値)に変換する電流積分回路およびアナログ/デジタル(A/D)変換回路をさらに備える。具体的には、RPUセル210で発生した電流を列(または行)単位で合計し、その合計した電流を周辺回路220、230の電流読み出し回路で測定時間tmeasにわたって積分する。電流読み出し回路は、電流積分器とアナログ/デジタル(A/D)変換器とを備える。いくつかの実施形態では、各電流積分器は、キャパシタ上の所定の列(または行)からの電流出力(または負および正の重みを実装するRPUセルの組からの差分電流)を積分するオペアンプを備え、アナログ/デジタル(A/D)変換器は、統合電流(例えば、アナログ値)をデジタル値に変換する。
【0036】
データI/Oインターフェース225および235は、デジタル処理コアとインターフェースするように構成されており、デジタル処理コアは、RPUシステム200(例えば、ニューラルコア)への入力/出力を処理し、異なるRPU配列間でデータをルーティングするように構成されている。データI/Oインターフェース225および235は、(i)デジタル処理コアから外部制御信号およびデータを受け取り、受け取った制御信号およびデータを周辺回路220および230に提供し、(ii)周辺回路220および230からデジタル読み取り出力値を受け取り、デジタル読み取り出力値を処理のためにデジタル処理コアに送るように構成される。
【0037】
図3、4A、および4Bは、本開示の例示的な実施形態による、固有対計算処理を実行するための方法を示す図である。特に、図3は、いくつかの実施形態において、図1のコンピューティングシステム100によって実装される、固有対を計算するためのハイレベルの処理フローを図示する。所定のアプリケーションのランタイム実行中、アプリケーションは、例えば、所定の行列Aの固有分解を必要とするいくつかの計算を実行する必要がある場合がある。コンピューティングシステム100は、所定のアプリケーションから、所定の行列Aの1または複数の固有対を判定する要求を受け取る(ブロック300)。要求は、行列Aの値を含むことになる。いくつかの実施形態では、行列Aは、対称行列、例えば、n行およびn列を有するn×n行列を含み、nは比較的大きく(例えば、100以上)することができる。いくつかの実施形態において、対称行列Aは、SPD行列を備える。コンピューティングシステム100は、所定の行列Aの固有対を計算するために、固有対計算処理(例えば、図1の処理140)を呼び出す。
【0038】
いくつかの実施形態では、固有対計算処理の呼び出しは、固有対計算処理を実行するために必要となるハードウェアアクセラレーションコンピューティング動作を実行するためにニューロモーフィックコンピューティングシステム130(例えば、RPUシステム)を構成する初期処理を備える(ブロック301)。例えば、いくつかの実施形態では、デジタル信号処理システム120は、ニューロモーフィックコンピューティングシステム130のプログラミングインターフェースと通信して、1または複数のニューロンおよびニューロモーフィックコンピューティングシステム130のルーティングシステムを構成し、以下でより詳しく議論するように、(i)所定の行列Aまたは推定された逆行列A-1の行列値を記憶するための1または複数の相互接続RPU配列を実装し、(ii)記憶された行列Aまたは推定された逆行列A-1を使用して、インメモリ計算(行列-ベクトル計算、外積計算など)を実行する1または複数のニューラルコアを割り当ておよび構成する。
【0039】
いくつかの実施形態では、割り当てられ相互接続されるRPU配列の数は、行列AのサイズおよびRPU配列のサイズに依存して変化する。例えば、各RPU配列が4096×4096のサイズを有する場合、1つのRPU配列は、所定のn×n行列A、または所定の行列Aの推定された逆行列A-1(nは4096以下)の値を記憶するように構成され得る。いくつかの実施形態では、所定のn×n行列Aが、n×n行列Aが記憶される物理的RPUよりも小さいとき、任意の未使用RPUセルがゼロに設定され得る、もしくはRPU配列への未使用入力が「ゼロ」電圧によってパディングされ得る、またはその両方である。いくつかの実施形態では、所定のn×n行列Aのサイズが単一のRPU配列のサイズよりも大きい場合、複数のRPU配列を動作的に相互接続して、所定のn×n行列Aの値、または所定のn×n行列Aの推定された逆行列A-1を記憶するのに十分に大きいRPU配列を形成できる。
【0040】
次に、所定の行列Aの逆行列A-1が固有対計算処理に必要であるか否かの判定が行われる(ブロック302)。例えば、上述したように、所定の行列Aの支配的固有対を判定するために固有対計算処理(例えば、べき乗反復処理)を行う場合、所定の行列Aを用いて固有対計算処理を行うことになる。一方、所定の行列Aの最小の固有対を判定するために固有対計算処理(例えば、逆べき乗反復処理)を行う場合、固有対計算処理は、所定の行列Aの逆行列A-1を使用して行われることが好ましい。したがって、所定の行列Aの逆行列A-1が固有対計算処理に必要でないと判定された場合(ブロック302における否定的判定)、デジタル信号処理システム120は、ニューロモーフィックコンピューティングシステム130との通信に進み、構成されたニューラルコアの割り当てられたRPU配列に所定の行列Aを記憶することになる(ブロック303)。
【0041】
一方、所定の行列Aの逆行列A-1が固有対計算処理に必要であると判定された場合(ブロック302の肯定的判定)、いくつかの実施形態では、デジタル信号処理システム120は、所定の行列Aの近似逆行列A-1を判定するために行列反転処理を進め(ブロック304)、近似逆行列A-1を構成済みニューラルコアの割当てRPU配列に記憶することになる(ブロック303)。上述のように、近似逆行列A-1は、行列反転処理144(図1)の動作によって判定される。いくつかの実施形態では、行列反転処理144は、逆行列A-1を推定するために、デジタル領域でノイマン級数反転処理を実行する。いくつかの実施形態では、行列反転処理144は、米国特許出願第17/134,814号に開示されているようなハードウェアアクセラレーション行列反転コンピューティング技術を利用する。
【0042】
行列Aまたは推定された逆行列A-1がRPU配列に記憶されると、記憶された行列の固有対を計算するために固有対計算処理が実行され(ブロック305)、固有対計算処理は、RPUシステムを利用して、例えば、固有ベクトルを計算する行列-ベクトル計算、および記憶された行列の値を更新する外積計算などの記憶された行列に対する種々のハードウェア計算を行うことを含む。いくつかの実施形態において、固有対計算処理(ブロック305)は、図4A、4B、5A、5B、6A、6B、および7と関連して以下でさらに詳細に議論されるような例示的な処理フローおよび計算を使用して実装される。固有対計算処理が完了すると、コンピューティングシステムは、判定された固有対を要求アプリケーションに返す(ブロック306)。
【0043】
ここで、図4Aおよび4Bを参照し、本開示の例示的な実施形態による、行列の固有対を計算するためにべき乗反復処理および行列デフレーション処理が利用される、例示的な固有対計算処理を示すものである。特に、図4Aは、所定の行列Aの支配的固有対を計算するためのべき乗反復処理を示し、図4Bは、図4Aのべき乗反復処理と併せて利用され、デフレーション行列を計算して、デフレーション行列の支配的固有対の計算を可能にする行列デフレーション処理を示す。説明のために、図4Aおよび4Bの処理フローは、RPU配列に記憶された逆行列Aに適用される逆べき乗反復処理とは対照的に、所定の行列AがRPU配列に記憶されている状況下でべき乗反復処理を実行するという文脈で議論されるであろう。
【0044】
【0045】
次に、初期列ベクトルx(0)がRPUシステムに入力され(ブロック401)、支配的固有値に対応する支配的固有ベクトルを推定するための反復固有ベクトル計算処理が実行される。最初の反復では、RPUシステムは、行列-ベクトル乗算演算の積として(n×1列ベクトルである)結果ベクトルを生成するために、初期ベクトルx(0)とRPU配列に記憶された行列Aを掛け合わせることによってアナログ行列-ベクトル乗算処理を実行する(ブロック402)。特に、j番目の反復では、(ブロック402の)行列-ベクトル演算は、以下のように計算される:x(j+1)=Ax(j)。初期の反復について、反復インデックスjは、ゼロに等しく設定される(すなわち、j=0)ように、初期の反復について、結果ベクトルx(1)は、x(1)=Ax(0)として計算される。j番目の反復に続く、x(j+1)は支配的固有ベクトルxの近似値を表す。
【0046】
【0047】
次に、システムが支配的固有ベクトルへの収束をチェックすべきかどうかについての判定がなされる(ブロック404)。いくつかの実施形態では、判定は、以前の収束チェック操作に続いて実行されたべき乗反復処理の反復回数に基づいて行われる。例えば、いくつかの実施形態では、収束チェック操作は、べき乗反復処理のp回の反復ごとに実行することができ、ここでpは、1、2、3、4、5等であってよい。いくつかの実施形態では、第1のp回の反復(例えば、p=5)に続いて初期の収束チェック操作が実行されてよく、収束チェック操作は、その後、収束基準が満たされるまで、べき乗反復処理の各反復の後に実行される。
【0048】
所定の反復に対して収束チェック操作を実行しないと判定された場合(ブロック404における否定的判定)、処理フローは、現在の正規化ベクトルをRPUシステムに入力し(ブロック401)、現在の正規化ベクトルをRPU配列に記憶された行列Aと乗算して行列-ベクトル乗算演算の積として結果の更新ベクトルを生成することによってアナログ行列-ベクトル乗算処理を行うことによって次の反復に続く(ブロック402)。例えば、結果ベクトルx(1)が計算された初期の反復(j=0)に続いて、次の反復(j=j+1=1)には、行列-ベクトル演算x(j+1)=Ax(j)を含み(ブロック402)、x(2)を以下のように計算する:x(2)=Ax(1)。結果ベクトルx(2)は、次にRPUシステムから出力され、デジタル領域で正規化される(ブロック403)。再び、収束基準が満たされるまで、反復処理が継続される。
【0049】
【0050】
【0051】
判定された誤差値(err)の値は、誤差が誤差閾値εを超えるかどうかを判定するために(err≦εであるかどうかを判定するために)誤差閾値εと比較される。いくつかの実施形態では、誤差閾値εの1×10-4またはそれよりも小さい値オーダーの値に設定される。誤差閾値εは、アプリケーションに応じて任意の所望の値となるように選択することができる。例えば、誤差閾値εは、支配的固有ベクトルの現在の推定値が、実際の支配的固有ベクトルの小数点以下3桁、4桁、5桁、6桁まで正確であるような値に設定することができる。
【0052】
【0053】
【0054】
べき乗反復処理の最終ステップ(ブロック407および408)は、行列Aの支配的固有対(λ,x)の推定値をもたらす。行列Aの他の固有対を判定する必要がない場合(ブロック409における否定的判定)、べき乗反復処理は終了し、行列Aの支配的固有対(λ,x)を要求元のアプリケーションに返すことができる(例えば、図3のブロック306)。一方、n×n行列Aの1または複数の1つの付加的な固有対(例えば、(λ,x),(λ,x),...,(λ,x))が判定される場合(ブロック409の肯定的判定)、処理フローは、図4Bの、ブロック410に進む。上述のように、図4Bは、行列Aの次の支配的固有対(例えば、(λ,x)に対応する、デフレーション行列の支配的固有対の計算を可能にするデフレーション行列を計算するために、図4Aのべき乗反復処理と組み合わせて利用される行列デフレーション処理を示している。
【0055】
【0056】
【0057】
【0058】
【0059】
図5A、5B、6Aおよび6Bは、ブロック401および402(図4A)ならびにブロック412および413(図4B)の処理を実施するために、RPUセルの配列に記憶された行列を使用してRPUシステムによって実行されるアナログ行列-ベクトル乗算および外積(更新)計算を概略的に示す図である。より具体的には、図5Aは、本開示の例示的な実施形態による、行列の固有対のハードウェアアクセラレーションコンピューティングを実装するために、RPUセルの配列を含むRPUコンピューティングシステムによってアナログ行列-ベクトル乗算演算を行うための方法を概略的に示すものである。いくつかの実施形態において、図5Aは、図2のコンピューティングシステム200のRPUセル210の配列上に記憶される行列の行列値に対して実行される行列-ベクトル乗算演算(例えば、Ax(j))を概略的に示す。RPUセル210のコンダクタンス値は、RPUセル210の配列に記憶されている行列(例えば、行列A)のそれぞれの行列要素212にマッピングされ、RPUセル210に記憶されている行列要素212は、RPUセル210のそれぞれのコンダクタンス値により符号化される。
【0060】
【0061】
【0062】
【0063】
いくつかの実施形態では、増分更新処理のための第1および第2のベクトルUおよびVの積を判定するために、周辺回路220および230内の確率的トランスレータ回路が、入力ベクトルUおよびVを表す確率的ビットストリームを生成するのに利用され得る。ベクトルUおよびVのための確率的ビットストリームは、RPUセル210の2Dクロスバー配列の行および列に適用され、所定のRPUセル210のコンダクタンス値(したがって、対応する行列値)は、所定のRPUセル210に入力されるUおよびV確率的パルスストリームの一致に依存して変化するだろう。更新演算のためのベクトルクロス積演算は、実数を表す確率的ストリームの一致検出(AND論理ゲート演算を使用)が乗算演算と同等であるという既知の概念に基づいて実施される。
【0064】
図6Aは、本開示の例示的な実施形態による、行列の固有対のハードウェアアクセラレーションコンピューティングを実施するための行列-ベクトル演算を実行するためのRPUセルの配列を含むRPUコンピューティングシステムを構成するための方法を概略的に示すものである。特に、図6Aは、RPUセル605のクロスバー配列(またはRPU配列605)を含むRPU計算システム600を概略的に示しており、RPU配列605の各RPUセル610が、各行(R1,R2,...,Rn)および列(C1,C2,...,Cn)の交差部にアナログ不揮発性抵抗素子(調整可能コンダクタンスGを有する可変抵抗器として表現)を含む。図6Aに描写されるように、RPUセル605の配列は、それぞれのRPUセル610のコンダクタンス値Gij(ここで、iは行インデックス、jは列インデックスを表す)によって符号化される行列Aまたは推定された逆行列A-1の行列値にマッピングされたコンダクタンス値Gijの行列を提供する。例示的な実施形態では、行列Aは、RPU配列605に記憶され、RPUセルのi番目の行は行列Aのi番目の行を表し、RPUセルのj番目の列は行列Aのj番目の列を表す。
【0065】
べき乗反復処理のための行列-ベクトル乗算処理を実行するために(例えば、図4Aのブロック402)、コンピューティングシステム600の周辺回路内のマルチプレクサは、列線ドライバ回路620を列線C1,C2,...,Cnに選択的に接続するように起動される。列線ドライバ回路620は、それぞれの列線C1,C2,...,Cnに接続される複数のデジタル-アナログ(DAC)回路ブロック622-1,622-2,...,622-n(集合的にDAC回路ブロック622)を含む。さらに、コンピューティングシステム600の周辺回路のマルチプレクサは、読み出し回路630を行線R1,R2,...,Rnに選択的に接続するように起動される。読み出し回路630は、それぞれの行線R1,R2,...,Rnに接続される複数の読み出し回路ブロック630-1,630-2,...,630-nを含む。読み出し回路ブロック630-1,630-2,...,630-nは、それぞれの電流積分回路632-1,632-2,...,632-nと、それぞれのアナログ-デジタル(ADC)回路634-1,634-2,...,634-nを含む。電流積分回路は、電流積分回路ブロックを含み、各電流積分器は、負の容量性フィードバックを有するオペレーショナルトランスコンダクタンス増幅器(OTA)を含み、入力電流(集合列電流)を電流積分回路の出力ノード上の出力電圧に変換し、積分期間の終了時に、各ADC回路は、それぞれの電流積分回路の出力ノードで生成された出力電圧をラッチし、出力電圧を量子化してデジタル出力信号を生成する。
【0066】
【0067】
より具体的には、いくつかの実施形態では、DAC回路ブロック622-1,622-2,...,622-nは、入力ベクトルが調整可能な持続時間を有する固定振幅パルス(例えば、V=1V)によって表される時間符号化方式を用いてデジタル-アナログ変換処理を実行するように構成され、パルス持続時間は予め規定された時間周期(例えば、1ナノ秒)の倍数であって、入力ベクトルの値に比例する。例えば、所定のデジタル入力値0.5は4nsの電圧パルスで表すことができ、デジタル入力値1は80nsの電圧パルスで表すことができる(例えば、デジタル入力値1は、積分時間Tmeasに等しいパルス持続時間を有するアナログ電圧パルスに符号化することができる)。図6Aに示すように、結果アナログ入力電圧V,V,...,V(例えば、読み出しパルス)は、列線C1,C2,...,Cnを介してRPUセル605の配列に適用される。
【0068】
【0069】
【0070】
図6Aの例示的な実施形態は、(i)RPUセルのi番目の行が行列Aのi番目の行を表し、RPUセルのj番目の列が行列Aのj番目の列を表すように行列AがRPU配列605に記憶され、(ii)列にはベクトルxが入力され、(iii)列の出力には結果ベクトルが生成される、行列-ベクトル乗算演算(Ax)を行う処理を概略的に示している。他の実施形態では、同じ行列-ベクトル乗算演算(Ax)は、(i)行列Aのi番目の行が転置行列Aのj番目の列としてRPU配列605に記憶されるように行列Aの転置行列AをRPU配列605に記憶し、(ii)入力ベクトルxを行に適用し、(iii)結果ベクトルを列の出力で読み取ることによって実行できる。
【0071】
図6Bは、本開示の例示的な実施形態による、行列の固有対のハードウェアアクセラレーションコンピューティングを実施するためのアナログ外積演算を実行するために、RPUセルの配列を含むRPUコンピューティングシステムを構成するための方法を概略的に示している。より具体的には、図6Bは、ベクトル-ベクトル外積更新演算(例えば、図4Bのブロック410~413)を実行し、RPU配列605に記憶されるデフレーション行列を生成するためにRPUコンピューティングシステム600を構成するための方法を概略的に示す。図6Bは、コンピューティングシステム600の周辺回路内のマルチプレクサが、行線ドライバ回路640を行線R1,R2,...,Rnに選択的に接続するために起動される、RPU演算システム600の構成を概略的に示す図である。行線ドライバ回路640は、それぞれの行線R1,R2,...,Rnに接続される複数のDAC回路ブロック642-1,642-2,...,642-n(総称してDAC回路ブロック642)を含む。さらに図6Bに示すように、更新動作のために、DAC回路ブロック622-1,622-2,...,622-nは、それぞれの列線C1,C2,...,Cnに接続される。DAC回路ブロック642は、上述したDAC回路ブロック622と同様の機能を果たす。
【0072】
【0073】
【0074】
外積更新処理は、ベクトルUおよびVを表す電圧パルスを行および列に同時に印加して、各クロスポイント(RPUセル610)でローカル乗算演算および増分重み更新を行い、それによってRPU配列605にデフレーション行列を生成することによってRPU配列605上で行われる。ここでも、アナログ電圧パルス(例えば、確率パルス)を生成し、アナログ領域でベクトル-ベクトル外積更新処理を実施するために、当業者に知られている様々な方法を使用することができる。
【0075】
図6Aは、アナログ領域で実行される行列-ベクトル乗算演算のための集約された行電流を生成するための例示的な方法を概略的に示しているが、「符号付き行列値」を可能にする差分電流技術を使用して集約された電流を生成するための他の技術を実装することができる。例えば、図7は、本開示の例示的な実施形態による、符号付き行列値を使用して固有対計算処理の行列-ベクトル演算を実行するためにRPUセルの複数の配列を含むRPUコンピューティングシステムを構成するための方法を概略的に示している。特に、図7は、2つの別個のRPU配列610および710の対応する列C1およびClからの異なる列電流I およびI を使用して集約された列電流ICOL1を生成するための方法を概略的に示し、ここでコンダクタンスは(G-G)として判定される。例示の目的で、図7は、上述のような行列-ベクトル演算Axを実行するためのスキームを示し、転置行列AがRPU配列に記憶されていると仮定し、入力ベクトルxをRPU配列の行に適用し、結果ベクトルを列から出力させる。図7は、読み出し回路ブロック630-1に入力される列電流ICOL1をICOL1=I -I として判定される差分読み出し方式を概略的に示している。この差分方式では、ICOL1の大きさが所定の行列値に対応し、行列値の符号は、IがI より大きいか、等しいか、小さいかどうかに依存する。正の符号(ICOL1>0)は、I>I のときに得られる。ゼロ値(ICOL1=0)は、I=I のときに得られる。負の符号(ICOL1<0)は、I<I のときに得られる。
【0076】
より具体的には、図7の例示的な実施形態では、図6Aのコンピューティングシステム600の各RPUセル610は、それぞれのコンダクタンス値Gij およびGij を有する2つの単位RPUセル610-1および610-2を含み、所定のRPUセル610のコンダクタンス値はそれぞれのコンダクタンス値の差、すなわちGij=Gij -Gij として判定され、iおよびjはRPU配列605内のインデックスとなる。このように、負および正の重みは、正のみのコンダクタンス値を用いて容易に符号化することができる。言い換えれば、RPUセルの抵抗デバイスのコンダクタンス値は正のみであることができるので、図7の差分方式は、正(Gij )と負(Gij )の行列値を符号化するために、一対の同一のRPUデバイス配列を実装しており、所定のRPUセルの行列値(Gij)は、一対のRPU配列610および710の同一位置に位置する2つの対応デバイス(Gij -Gij )に記憶される2つのコンダクタンス値の差分に比例する(ここで、2つのRPU配列610および710はチップのバックエンドのメタライゼーション構造において互いに積層することができる)。この例では、単一のRPUタイルは、3つのサイクルすべてにおける配列の並列動作をサポートする周辺回路を有するRPU配列の対とみなされる。
【0077】
図7に示すように、正負の逆行列値を符号化するために使用される同一のRPU配列610および710の対応する行のRPUセル610-1および610-2に、正の電圧パルス(V,V,...,V)と対応する負の電圧パルス(-V,-V,...,-V)が個別に供給される。それぞれのRPU配列610および710の対応する第1の列C1およびC1から出力される集約された列電流I およびI は合成されて差分集約電流ICOL1を生成し、対応する第1の列C1およびC1に接続されている読み出し回路ブロック630-1に入力される。
【0078】
【0079】
所定の計算のために行列Aとその転置(例えば、A)の両方が必要とされる他の固有分解演算または線形システム計算が、本明細書で論じるようなハードウェアアクセラレーション方法を用いて容易に実装されることをさらに理解されたい。例えば、上述したように、所定の行列AがRPUセルの配列に記憶されていると仮定すると、ベクトルxをRPU配列の列線に適用し、結果出力ベクトルをRPU配列の行線から読み出すことによって、行列-ベクトル演算Axを実行することができる。同時に、RPU配列に記憶された行列Aを用い、RPU配列の行線にベクトルxを適用し、RPU配列の列線から出力ベクトルを読み出すことにより、行列-ベクトル演算Axを実行することができる。この点で、行列Aとその転置行列Aを異なるRPU配列に記憶する必要はない。
【0080】
他の実施形態では、所定の対称行列Aの特異値σ,σ,...,σを判定するために、例えば図4Aおよび4Bと関連して上記に示され説明されたものと同じまたは類似の処理フローが使用され、特異値分解(SVD)処理を実行する。一般に、所定の行列AのSVDを計算するための処理は、 AAおよび AAの固有値および固有ベクトルを判定することを含む。所定の行列Aが対称なn×n行列(ただし、SPD行列ではない)であると仮定すると、特異値σ,σ,...,σは、行列AA または行列 AAの固有値の平方根を計算することによって判定される。一方、所定の行列AがSPD行列である場合、特異値σ,σ,...,σは、行列AA または行列 AAの固有値に等しい。
【0081】
【0082】
他の実施形態では、所定の対称n×n行列Aに対するSVD処理は、n×n行列B=AAまたはB=AAの固有値λ,...,λを判定するために、行列AをRPU配列に記憶し、次に、図4Aおよび4Bの処理フローの修正版を含む反復処理を実行することによって行われる。かかる実施形態は、RPU配列が当然、行列Aだけでなくその転置Aも記憶するという事実に基づいている。例えば、図6Aの例示的な実施形態を参照すると、RPU配列605がn×n行列Aを記憶し、ここでRPU配列605の行R1,R2,...,Rnがn×n行列Aの行を表しており、RPU配列605の列C1,C2,...,Cnがn×n行列Aの列を表しているとする。同時に、RPU配列605の列を行として見る観点と、RPU配列605の行を列として見る観点とから、RPU配列605の列は行列Aの転置(A)の行を表し、RPU配列605の行は行列Aの転置(A)の列を表していることが分かる。すなわち、RPU配列605に記憶されたn×n行列Aのi番目の行は、実質的にRPU配列605に記憶された行列Aのn×n転置行列(A)のi番目の列となることが分かる。
【0083】
以上のことから、RPU配列に記憶されている対称n×n行列AのSVDを計算する例示的な処理は、例えばAAの固有値を計算する反復処理に基づいており、例示的な処理は、図4Aのブロック401、402、403の処理フローの変形を使用して、AA(j)=A(A(j))=Ay(j)=x(j+1)(j=0,1,...)を計算することを含む。特に、ブロック400において、初期ベクトルx(0)(n×1列ベクトル)は、上述したように生成される。次に、初期デジタルベクトルx(0)は、RPUシステムに入力され、初期ベクトルx(0)とRPU配列に記憶された行列Aの転置Aを乗算することによって、(ブロック402において)アナログ行列-ベクトル乗算処理(すなわち、A(0)=y(0))を実行し、結果ベクトルy(0)を生成する。いくつかの実施形態では、行列-ベクトル乗算処理A(0)は、初期ベクトルx(0)をRPU配列605(図6A)の行に入力することによって実行され、この場合、行線への入力は、DAC回路(例えば、図6BのDAC回路640)に選択的に接続され、結果ベクトルy(0)がRPU配列の列から出力され、この場合、列線は読み出し回路(例えば、図6Aの読み出し回路630)に選択的に接続され、結果デジタルベクトルy(0)を生成して出力する。
【0084】
次に、結果ベクトルy(0)は、RPU配列605に再入力され、アナログ行列-ベクトル乗算処理Ay(0)を実行し、それによってAy(0)=x(1)を計算することになる。この処理では、ベクトルy(0)は、RPU配列605の列に入力され、この場合、列線への入力は、DAC回路(例えば、図6AのDAC回路620)に選択的に接続され、その結果、ベクトルx(1)は、RPU配列605の行から出力され、その場合、行線は、読み出し回路(例えば、図6Aの読み出し回路630)に選択的に接続され、結果デジタルベクトルx(1)を生成して出力するだろう。
【0085】
結果デジタルベクトルx(1)は、次に、デジタルコンピューティングシステムに出力され、正規化されるであろう(例えば、図4Aのブロック403)。次に、正規化されたベクトルx(1)は、RPUシステムに再入力され、上述したように2つの行列乗算演算を実行することによって(次の反復のために、j=1)AA(1)=A(A(1))=Ay(1)=x(2)を計算することになるであろう。図4Aおよび図4Bの処理フローと同様に、反復処理は、収束基準が満たされるまで(例えば、図4Aのブロック406)継続し、この場合、j番目のの反復に続いて、ベクトルx(j+1)は、行列B=AAに対する支配的固有ベクトルxの近似値を表す。
【0086】
例示的なSVD処理については、固有ベクトルx,x,...,xおよびn×n行列B=AAの対応する固有値λ,...,λ図4Aのブロック408を介して)の一部または全部を計算するために、図4Aおよび図4Bの反復処理フロー(上述したようにブロック401、402、および403の変更を伴う)が実行され得る。行列Bの固有値λ,...,λの計算の後に、SVD処理の特異値は、行列Bの計算された固有値λ,...,λに等しくなる(行列AがSPD行列であると仮定して)。それ以外の場合、デジタル領域では、SVD処理の特異値は、n×n行列Bのそれぞれの固有値λ,...,λの平方根を取ることによって計算される。対称行列Aについて、代替的な実施形態では、まずAx(j)を計算するためにRPU配列の行にx(j)が入力され、A(j)=x(j+1)を計算するために結果ベクトルy(j)が列に入力される場合、図4Aおよび4Bの処理フローがB=AAの固有値を計算するために実行され得ることに留意されたい。
【0087】
本発明の例示的な実施形態は、任意の可能な技術詳細レベルで統合されたシステム、方法もしくはコンピュータプログラム製品またはそれらの組み合せとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでよい。
【0088】
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0089】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置に、または、ネットワーク(例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくはワイヤレスネットワークまたはその組み合わせ)を介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピュータ、もしくはエッジサーバーまたはその組み合わせで構成される。各コンピューティング/処理装置のネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理装置内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0090】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、統合回路のための構成データ、またはSmalltalk、C++などのオブジェクト指向プログラミング言語と「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかであってよい。コンピュータ可読プログラム命令は、スタンドアロンソフトウェアパッケージとして、完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または完全にリモートコンピュータまたはサーバ上で実行可能である。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され、または(例えば、インターネットサービスプロバイダーを使用したインターネット経由で)外部コンピュータに接続されてよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲート配列(FPGA)、またはプログラマブルロジック配列(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0091】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に記載されている。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0092】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/動作を実装するための手段を生成するように、機械を生成するためにコンピュータのプロセッサまたは他のプログラム可能なデータ処理装置に提供されることができる。これらのコンピュータ可読プログラム命令はまた、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実装する命令を含む生成品の1つを命令が記憶されたコンピュータ可読記憶媒体が構成するように、コンピュータ、プログラム可能なデータ処理装置、もしくは特定の方法で機能する他のデバイスまたはその組み合わせに接続可能なコンピュータ可読記憶媒体の中に記憶されることができる。
【0093】
コンピュータ、他のプログラム可能な装置、または他のデバイス上でフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/行為を実行する命令のように、コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置、または他のデバイス上で一連の操作ステップを実行し、コンピュータ実装された過程を生成することができる。
【0094】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品が実行可能な実装の構成、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、モジュール、セグメント、または命令の一部を表してよく、これは、指定された論理機能を実装するための1つまたは複数の実行可能命令を構成する。いくつかの代替の実施形態では、ブロックに示されている機能は、図に示されている順序とは異なる場合がある。例えば、連続して示される2つのブロックは、実際には、1つのステップとして達成される場合があり、同時に、実質的に同時に、部分的または全体的に時間的に重複する方法で実行されるか、またはブロックは、関係する機能に応じて逆の順序で実行される場合がある。ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方のブロックの組み合わせは、指定された機能または動作を実行する、または特別な目的のハードウェアとコンピュータ命令の組み合わせを実行する特別な目的のハードウェアベースのシステムによって実装できることにも留意されたい。
【0095】
これらの概念は、本開示の例示的な実施形態による、固有対計算処理を実行するように構成されるシステムをホストすることができるコンピューティングノードの例示的なアーキテクチャを概略的に示す、図8を参照して説明される。図8は、多数の他の汎用または特殊目的のコンピューティングシステム環境または構成で動作可能な、コンピュータシステム/サーバ812を備えるコンピューティングノード800を図示する。コンピュータシステム/サーバ812と共に使用するのに適し得る周知のコンピューティングシステム、環境、もしくは構成、またはその組み合わせの例としては、パーソナルコンピュータシステム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラム可能家電、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、上記の任意のシステムまたはデバイスなどを含む分散クラウドコンピューティング環境などが挙げられるが、それらに限らない。
【0096】
コンピュータシステム/サーバ812は、プログラムモジュールなどのコンピュータシステム実行可能命令がコンピュータシステムによって実行されるという一般的な文脈で説明される場合がある。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータシステム/サーバ812は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される分散型クラウドコンピューティング環境において実施され得る。分散型クラウドコンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルおよびリモートコンピュータシステム記憶媒体の両方に配置され得る。
【0097】
図8において、コンピューティングノード800のコンピュータシステム/サーバ812は、汎用コンピューティングデバイスの形態で示されている。コンピュータシステム/サーバ812の構成要素は、1または複数のプロセッサまたは処理ユニット816、システムメモリ828、およびシステムメモリ828を含む様々なシステム構成要素をプロセッサ816に結合するバス818を含むことができるが、これらに限定されるものではない。
【0098】
バス818は、メモリバスまたはメモリコントローラ、周辺機器バス、アクセラレーテッドグラフィックスポート、および様々なバスアーキテクチャのいずれかを使用するプロセッサまたはローカルバスを含む、いくつかのタイプのバス構造のうちのいずれか1つまたは複数を表す。例として、限定ではなく、そのようなアーキテクチャには、インダストリスタンダードアーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバスおよびペリフェラルコンポーネントインターコネクト(PCI)バスがある。
【0099】
コンピュータシステム/サーバ812は、典型的には、様々なコンピュータシステム可読媒体を含む。かかる媒体は、コンピュータシステム/サーバ812によってアクセス可能な任意の利用可能な媒体であってもよく、揮発性媒体と不揮発性媒体、取り外し可能媒体と取り外し不可能媒体の両方が含まれる。
【0100】
システムメモリ828は、ランダムアクセスメモリ(RAM)830もしくはキャッシュメモリ832またはその両方など、揮発性メモリとしてのコンピュータシステム可読媒体を含むことができる。コンピュータシステム/サーバ812はさらに、他の取り外し可能/取り外し不能コンピュータシステム可読媒体および揮発性/不揮発性コンピュータシステム可読媒体を含んでもよい。一例として、ストレージシステム834は、取り外し不能な不揮発性磁気媒体(不図示。一般に「ハードドライブ」と呼ばれる)への読み書きのために設けることができる。また、図示は省略するが、取り外し可能な不揮発性磁気ディスク(例えば、フロッピーディスク)への読み書きのための磁気ディスクドライブ、および取り外し可能な不揮発性光学ディスク(CD-ROM、DVD-ROMや他の光学媒体など)への読み書きのための光学ディスクドライブを設けることができる。これらの例において、それぞれを、1つ以上のデータ媒体インタフェースによってバス818に接続することができる。以下でさらに図示および説明するように、メモリ828は、本発明の実施形態の機能を実行するように構成されたプログラムモジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
【0101】
一例として、プログラムモジュール842のセット(少なくとも1つ)を有するプログラム/ユーティリティ840は、オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータと同様に、メモリ828に記憶することができる。オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータ、またはそれらのいくつかの組み合わせの各々は、ネットワーク環境の実装形態を含むことができる。プログラムモジュール842は一般に、本明細書に記載の本開示の実施形態の機能もしくは方法またはその両方を実行する。
【0102】
コンピュータシステム/サーバ812は、キーボード、ポインティングデバイス、ディスプレイ824などの1つ以上の外部装置814、ユーザとコンピュータシステム/サーバ812との対話を可能にする1つ以上の装置、もしくはコンピュータシステム/サーバ812と1つ以上の他のコンピュータ装置との通信を可能にする任意の装置(例えば、ネットワークカードやモデムなど)またはこれらの組み合わせと通信することができる。かかる通信は、入力/出力(I/O)インタフェース822を介して行うことができる。さらに、コンピュータシステム812は、ネットワークアダプタ820を介して1つ以上のネットワーク(ローカルエリアネットワーク(LAN)、汎用広域ネットワーク(WAN)、もしくはパブリックネットワーク(例えばインターネット)またはこれらの組み合わせなど)と通信することができる。図示するように、ネットワークアダプタ820は、バス818を介してコンピュータシステム/サーバ812の他のコンポーネントと通信することができる。なお、図示は省略するが、他のハードウェアコンポーネントもしくはソフトウェアコンポーネントまたはその両方を、コンピュータシステム/サーバ812と併用することができることを理解されたい。それらの一例としては、マイクロコード、デバイスドライバ、冗長化処理ユニット、外付けディスクドライブアレイ、RAIDシステム、SSDドライブ、データアーカイブストレージシステムなどがある。
【0103】
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載した教示の実装形態はクラウドコンピューティング環境に限定されない。むしろ、本発明の実施形態は、現在公知のまたは将来開発される他の任意の種類のコンピュータ環境と共に実施することができる。
【0104】
クラウドコンピューティングは、設定可能なコンピューティングリソースの共有プール(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)へ、簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、リソースは、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの実装モデルを含むことがある。
【0105】
特性は以下の通りである。
【0106】
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
【0107】
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、PDA)による利用が促進される。
【0108】
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
【0109】
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
【0110】
測定されるサービス:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの測定機能を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
【0111】
サービスモデルは以下の通りである。
【0112】
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
【0113】
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
【0114】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含み得る任意のソフトウェアを消費者が展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
【0115】
展開モデルは以下の通りである。
【0116】
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0117】
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0118】
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
【0119】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
【0120】
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0121】
図9を参照すると、例示的なクラウドコンピューティング環境900が示されている。図示するように、クラウドコンピューティング環境900は1つまたは複数のクラウドコンピューティングノード950を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、パーソナルデジタルアシスタント(PDA)もしくは携帯電話954A、デスクトップコンピュータ954B、ラップトップコンピュータ954C、もしくは自動車コンピュータシステム954Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード950は互いに通信することができる。ノード950は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境900は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、図9に示すコンピュータ装置954A~Nの種類は例示に過ぎず、コンピューティングノード950およびクラウドコンピューティング環境900は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
【0122】
図10を参照すると、クラウドコンピューティング環境900(図9)によって提供される機能的抽象化レイヤのセットが示されている。なお、図10に示すコンポーネント、レイヤおよび機能は例示に過ぎず、本発明の実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
【0123】
ハードウェアおよびソフトウェアレイヤ1060は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム1061、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ1062、サーバ1063、ブレードサーバ1064、記憶装置1065、ならびにネットワークおよびネットワークコンポーネント1066が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア1067およびデータベースソフトウェア1068を含む。
【0124】
仮想化レイヤ1070は、抽象化レイヤを提供する。当該レイヤから、例えば以下の仮想エンティティを提供することができる:仮想サーバ1071、仮想ストレージ1072、仮想プライベートネットワークを含む仮想ネットワーク1073、仮想アプリケーションおよびオペレーティングシステム1074、ならびに仮想クライアント1075。
【0125】
一例として、管理レイヤ1080は以下の機能を提供することができる。リソース準備1081は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定1082は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウドコンシューマおよびタスクの識別確認を可能にする。ユーザポータル1083は、コンシューマおよびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理1084は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行1085は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
【0126】
ワークロードレイヤ1090は、クラウドコンピューティング環境が利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション1091、ソフトウェア開発およびライフサイクル管理1092、仮想教室教育の配信1093、データ分析処理1094、取引処理1095、ならびに、ハードウェアアクセラレーションコンピューティングおよびアナログインメモリ計算を提供するために、例えば、図3、4Aおよび4Bと関連して上述した例示的な方法および機能に基づいて、RPU配列を有するRPUシステムを使用して、行列の固有対の計算、行列演算の実行、行列対角化、特異値分解などの固有分解演算を実行するなどの演算を実行するための種々の機能1096が挙げられる。さらに、いくつかの実施形態では、ハードウェアおよびソフトウェアレイヤ1060は、かかるハードウェアアクセラレーションコンピューティングおよびアナログインメモリ計算を実行するための様々なワークロードおよび機能1096を実装またはサポートするために、図1のコンピューティングシステム100を含むであろう。
【0127】
本開示の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であることを意図するものではなく、開示される実施形態に限定されることを意図するものでもない。記載される実施形態の範囲から逸脱することなく、多くの修正および変更が可能であることは当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見られる技術に対する実際の適用または技術的改善を最もよく説明するため、または当業者が本明細書に記載の実施形態を理解できるようにするために選択された。
図1
図2
図3
図4A
図4B
図5A
図5B
図6A
図6B
図7
図8
図9
図10
【手続補正書】
【提出日】2024-01-17
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
システムであって、
プロセッサと、
前記プロセッサに結合された抵抗処理ユニットであって、前記抵抗処理ユニットは、セルの配列を含み、前記セルはそれぞれ抵抗デバイスを含み、前記抵抗デバイスの少なくとも一部は、前記セルの配列に記憶可能な所定の行列の値を符号化するように調整可能である、抵抗処理ユニットと、を備え、
前記所定の行列が前記セルの配列に記憶されている場合、前記プロセッサは、前記記憶された行列の固有ベクトルの推定値に初期ベクトルを収束させるために、前記記憶された行列に対してアナログ行列-ベクトル乗算演算を実行することを含む処理を実行することによって、前記記憶された行列の前記固有ベクトルを判定するように構成される、
システム。
【請求項2】
前記処理を実行する際に、前記プロセッサはさらに、
前記推定された固有ベクトルに関連する固有値を推定することと、
前記処理の結果として、前記記憶された行列の少なくとも1つの固有対を返すことであって、前記記憶された行列の前記少なくとも1つの固有対は、前記推定された固有ベクトルおよび前記推定された固有ベクトルに関連する前記推定された固有値を含む、返すことと、
を行うように構成される、請求項1に記載のシステム。
【請求項3】
前記処理を実行する際に、前記プロセッサは、前記記憶された行列の支配的固有ベクトルを推定し、前記推定された支配的固有ベクトルに関連する支配的固有値を推定するために、べき乗反復処理を実行するように構成される、請求項1に記載のシステム。
【請求項4】
前記処理を実行する際に、前記プロセッサは、
前記所定の行列の逆行列を推定することと、
前記推定された逆行列を前記セルの配列に記憶することと、
前記推定された逆行列の支配的固有ベクトルを推定し、前記推定された逆行列の前記推定された支配的固有ベクトルに関連する支配的固有値を推定するために、逆べき乗反復処理を実行することと、
を行うように構成される、請求項1に記載のシステム。
【請求項5】
前記処理を実行する際に、前記プロセッサは、
第1の反復を実行することであって、前記第1の反復は、
前記セルの配列に前記初期ベクトルを入力することと、
前記セルの配列から出力される第1の出力ベクトルを生成するために、前記セルの配列内の前記記憶された行列と前記初期ベクトルを乗算することによって、第1の行列-ベクトル乗算演算を実行する前記抵抗処理ユニットを使用することと、
前記第1の出力ベクトルを正規化し、それによって第1の正規化ベクトルを生成する正規化処理を実行することと、を含む、実行することと、
少なくとも第2の反復を実行することであって、前記第2の反復は、
前記第1の正規化ベクトルを前記セルの配列に入力することと、
前記セルの配列から出力される第2の出力ベクトルを生成するために、前記セルの配列内の前記記憶された行列と前記第1の正規化ベクトルを乗算することによって、第2の行列-ベクトル乗算演算を実行する前記抵抗処理ユニットを使用することと、
前記第2の出力ベクトルを正規化し、それによって第2の正規化ベクトルを生成する正規化処理を実行することと、を含む、実行することと、
を行うように構成される、請求項1に記載のシステム。
【請求項6】
前記初期ベクトルは、ランダムベクトルおよび前記記憶された行列のターゲット固有ベクトルの推定値のうちの1つを含む、請求項5に記載のシステム。
【請求項7】
前記処理の複数の反復を完了すると、前記プロセッサは、
前記複数の反復のうち最後に完了した反復から生成された最後の出力ベクトルが、前記記憶された行列のターゲット固有ベクトルに収束したかどうかを判定することと、
前記最後の出力ベクトルが前記記憶された行列のターゲット固有ベクトルに収束したと判定したことに応答して、前記最後の出力ベクトルを前記記憶された行列の前記推定された固有ベクトルとして設定することと、
を行うように構成される、請求項5に記載のシステム。
【請求項8】
前記処理を実行する際に、前記プロセッサはさらに、
前記セルの配列内の前記記憶された行列の行列値を更新するために前記抵抗処理ユニットを利用し、それによって、前記所定の行列の前記推定された固有値がゼロに設定された更新された行列を生成することと、
前記所定の行列の第2の固有ベクトルを推定するために、前記セルの配列に記憶された前記更新された行列に対して処理を繰り返すことと、
前記推定された第2の固有ベクトルに関連する第2の固有値を推定することと、
を行うように構成される、請求項1に記載のシステム。
【請求項9】
前記セルの配列内の前記記憶された行列の行列値を更新するために前記抵抗処理ユニットを利用する際に、前記プロセッサは、前記記憶された行列に対して第1のベクトルと第2のベクトルの外積演算を実行するように構成され、
前記第1のベクトルは、前記関連する推定された固有値によってスケーリングされた前記推定された固有ベクトルを含み、
前記第2のベクトルは、前記推定された固有ベクトルの転置を含む、
請求項8に記載のシステム。
【請求項10】
コンピュータプログラム製品であって、
1または複数のコンピュータ可読記憶媒体と、前記1または複数のコンピュータ可読記憶媒体に集合的に記憶されたプログラム命令であって、前記プログラム命令は、
アプリケーションから所定の行列を受信するプログラム命令と、
抵抗処理ユニットのセルの配列に行列を記憶するプログラム命令であって、前記記憶された行列が前記所定の行列と関連付けられている、プログラム命令と、
前記所定の行列の固有ベクトルを判定する処理を実行するプログラム命令であって、前記処理を実行する前記プログラム命令は、前記記憶された行列の前記固有ベクトルの推定値に初期ベクトルを収束させるために、前記記憶された行列に対してアナログ行列-ベクトル乗算演算を実行するプログラム命令を含む、プログラム命令と、
を含む、コンピュータプログラム製品。
【請求項11】
前記処理を実行する前記プログラム命令は、
前記推定された固有ベクトルに関連する固有値を推定するプログラム命令と、
前記所定の行列の少なくとも1つの固有対を前記アプリケーションに返すプログラム命令であって、前記少なくとも1つの固有対は、前記推定された固有ベクトルおよび前記推定された固有ベクトルに関連する前記推定された固有値を含む、プログラム命令と、
をさらに含む、請求項10に記載のコンピュータプログラム製品。
【請求項12】
前記処理を実行するプログラム命令は、前記記憶された行列の支配的固有ベクトルを推定し、前記推定された支配的固有ベクトルに関連する支配的固有値を推定するために、べき乗反復処理を実行するプログラム命令を含む、請求項10に記載のコンピュータプログラム製品。
【請求項13】
前記抵抗処理ユニットの前記セルの配列に前記行列を記憶する前記プログラム命令は、前記所定の行列の逆行列を推定し、前記所定の行列の前記推定された逆行列を前記抵抗処理ユニットの前記セルの配列に記憶するプログラム命令と、
前記推定された逆行列の支配的固有ベクトルを推定し、前記推定された逆行列の前記推定された支配的固有ベクトルに関連する支配的固有値を推定するために、逆べき乗反復処理を実行するプログラム命令を含む前記処理を実行する前記プログラム命令と、を含む、
請求項10に記載のコンピュータプログラム製品。
【請求項14】
前記処理を実行する前記プログラム命令は、
第1の反復を実行するプログラム命令であって、前記第1の反復は、
前記セルの配列に前記初期ベクトルを入力することと、
前記セルの配列から出力される第1の出力ベクトルを生成するために、前記セルの配列内の前記記憶された行列と前記初期ベクトルを乗算することによって、第1の行列-ベクトル乗算演算を実行することと、
前記第1の出力ベクトルを正規化し、それによって第1の正規化ベクトルを生成する正規化処理を実行することと、を含む、プログラム命令と、
少なくとも第2の反復を実行するプログラム命令であって、前記第2の反復は、
前記第1の正規化ベクトルを前記セルの配列に入力することと、
前記セルの配列から出力される第2の出力ベクトルを生成するために、前記セルの配列内の前記記憶された行列と前記第1の正規化ベクトルを乗算することによって、第2の行列-ベクトル乗算演算を実行することと、
前記第2の出力ベクトルを正規化し、それによって第2の正規化ベクトルを生成する前記正規化処理を実行することと、を含む、プログラム命令と、
を含む、請求項10に記載のコンピュータプログラム製品。
【請求項15】
前記処理を実行する前記プログラム命令は、
前記処理の複数の反復を完了すると、前記複数の反復のうち最後に完了した反復から生成された最後の出力ベクトルが、前記記憶された行列のターゲット固有ベクトルに収束したかどうかを判定するプログラム命令と、
前記最後の出力ベクトルが前記記憶された行列の前記ターゲット固有ベクトルに収束したと判定したことに応答して、前記最後の出力ベクトルを前記記憶された行列の前記推定された固有ベクトルとして設定するプログラム命令と、
をさらに含む、請求項14に記載のコンピュータプログラム製品。
【請求項16】
前記セルの配列内の前記記憶された行列の行列値を更新するために前記抵抗処理ユニットを利用し、それによって、前記所定の行列の前記推定された固有値がゼロに設定された更新された行列を生成するプログラム命令と、
前記所定の行列の第2の固有ベクトルを推定するために、前記セルの配列に記憶された前記更新された行列に対して前記処理を繰り返すプログラム命令と、
前記推定された第2の固有ベクトルに関連する第2の固有値を判定するプログラム命令と、
を含む、請求項10に記載のコンピュータプログラム製品。
【請求項17】
前記セルの配列内の前記記憶された行列の行列値を更新するために前記抵抗処理ユニットを利用する前記プログラム命令は、
前記記憶された行列に対して第1のベクトルと第2のベクトルの外積演算を実行するプログラム命令を含み、
前記第1のベクトルは、前記関連する固有値によってスケーリングされた前記推定された固有ベクトルを含み、
前記第2のベクトルは、前記推定された固有ベクトルの転置を含む、
請求項16に記載のコンピュータプログラム製品。
【請求項18】
アプリケーションから所定の行列を受信することと、
抵抗処理ユニットのセルの配列に行列を記憶することであって、前記記憶された行列が前記所定の行列と関連付けられている、記憶することと、
前記所定の行列の固有ベクトルを判定する処理を実行することであって、前記処理を実行することは、前記記憶された行列の前記固有ベクトルの推定値に初期ベクトルを収束させるために、前記記憶された行列に対してアナログ行列-ベクトル乗算演算を実行することを含む、実行することと、
を含む、方法。
【請求項19】
前記処理を実行することは、
前記推定された固有ベクトルに関連する固有値を推定することと、
前記所定の行列の少なくとも1つの固有対を前記アプリケーションに返すことであって、前記少なくとも1つの固有対は、前記推定された固有ベクトルおよび前記推定された固有ベクトルに関連する前記推定された固有値を含む、返すことと、
をさらに含む、請求項18に記載の方法。
【請求項20】
前記処理を実行することは、
前記推定された固有ベクトルに関連する固有値を推定することと、
前記セルの配列内の前記記憶された行列の行列値を更新するために前記抵抗処理ユニットを利用し、それによって、前記所定の行列の前記推定された固有値がゼロに設定された更新された行列を生成することと、
前記所定の行列の第2の固有ベクトルを推定するために、前記セルの配列に記憶された前記更新された行列に対して前記処理を繰り返すことと、
前記推定された第2の固有ベクトルに関連する第2の固有値を推定することと、をさらに含み、
前記セルの配列内の前記記憶された行列の行列値を更新するために前記抵抗処理ユニットを利用することは、前記記憶された行列に対して第1のベクトルと第2のベクトルの外積演算を実行することを含み、
前記第1のベクトルは、前記関連する固有値によってスケーリングされた前記推定された固有ベクトルを含み、
前記第2のベクトルは、前記推定された固有ベクトルの転置を含む、
請求項18に記載の方法。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0046
【補正方法】変更
【補正の内容】
【0046】
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0071
【補正方法】変更
【補正の内容】
【0071】
図6Bは、本開示の例示的な実施形態による、行列の固有対のハードウェアアクセラレーションコンピューティングを実施するためのアナログ外積演算を実行するために、RPUセルの配列を含むRPUコンピューティングシステムを構成するための方法を概略的に示している。より具体的には、図6Bは、ベクトル-ベクトル外積更新演算(例えば、図4Bのブロック410~413)を実行し、RPU配列605に記憶されるデフレーション行列を生成するためにRPUコンピューティングシステム600を構成するための方法を概略的に示す。図6Bは、コンピューティングシステム600の周辺回路内のマルチプレクサが、行線ドライバ回路640を行線R1,R2,...,Rnに選択的に接続するために起動される、RPU演算システム600の構成を概略的に示す図である。行線ドライバ回路60は、それぞれの行線R1,R2,...,Rnに接続される複数のDAC回路ブロック62-1,62-2,...,62-n(総称してDAC回路ブロック62)を含む。さらに図6Bに示すように、更新動作のために、DAC回路ブロック62-1,62-2,...,62-nは、それぞれの列線C1,C2,...,Cnに接続される。DAC回路ブロック642は、上述したDAC回路ブロック622と同様の機能を果たす。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0083
【補正方法】変更
【補正の内容】
【0083】
以上のことから、RPU配列に記憶されている対称n×n行列AのSVDを計算する例示的な処理は、例えばAAの固有値を計算する反復処理に基づいており、例示的な処理は、図4Aのブロック401、402、403の処理フローの変形を使用して、AA(j)=A(A(j))=Ay(j)=x(j+1)(j=0,1,...)を計算することを含む。特に、ブロック400において、初期ベクトルx(0)(n×1列ベクトル)は、上述したように生成される。次に、初期デジタルベクトルx(0)は、RPUシステムに入力され、初期ベクトルx(0)とRPU配列に記憶された行列Aの転置Aを乗算することによって、(ブロック402において)アナログ行列-ベクトル乗算処理(すなわち、A(0)=y(0))を実行し、結果ベクトルy(0)を生成する。いくつかの実施形態では、行列-ベクトル乗算処理A(0)は、初期ベクトルx(0)をRPU配列605(図6A)の行に入力することによって実行され、この場合、行線への入力は、DAC回路(例えば、図6BのDAC回路60)に選択的に接続され、結果ベクトルy(0)がRPU配列の列から出力され、この場合、列線は読み出し回路(例えば、図6Aの読み出し回路630)に選択的に接続され、結果デジタルベクトルy(0)を生成して出力する。
【国際調査報告】