JP7461945B2 - 部分行列の順序付けを伴う行列乗算器 - Google Patents

部分行列の順序付けを伴う行列乗算器 Download PDF

Info

Publication number
JP7461945B2
JP7461945B2 JP2021523783A JP2021523783A JP7461945B2 JP 7461945 B2 JP7461945 B2 JP 7461945B2 JP 2021523783 A JP2021523783 A JP 2021523783A JP 2021523783 A JP2021523783 A JP 2021523783A JP 7461945 B2 JP7461945 B2 JP 7461945B2
Authority
JP
Japan
Prior art keywords
matrix
submatrix
sub
input register
multiplication
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
JP2021523783A
Other languages
English (en)
Other versions
JPWO2020091848A5 (ja
JP2022506418A (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2022506418A publication Critical patent/JP2022506418A/ja
Publication of JPWO2020091848A5 publication Critical patent/JPWO2020091848A5/ja
Priority to JP2023065959A priority Critical patent/JP2023089161A/ja
Application granted granted Critical
Publication of JP7461945B2 publication Critical patent/JP7461945B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

最近のプロセッサアプリケーションでは、ベクトル、行列、及び、同様の構造の比較的複雑な操作が必要になることがよくある。例えば、ベクトル及び行列の演算は、グラフィックス操作、デジタル信号処理アプリケーション、ニューラルネットワークアプリケーション等で有用である。これらのアプリケーションや操作の処理効率を高めるために、プロセッサは、グラフィックスプロセッシングユニット(GPU)を含むことができる。GPUには、比較的大きなデータブロックに対する並列処理を実行するための専用ハードウェアが含まれている。したがって、GPUは、グラフィックスアプリケーションだけでなく、ベクトル及び行列の操作を必要とする他の演算もサポートすることができる。処理効率をさらに高めるために、GPUは、行列の乗算を含む特定のタイプの行列の演算を実行するための専用ハードウェアを含むことができる。ただし、この専用ハードウェアに対する従来のアプローチは、大量の電力を消費する場合があり、それによって、プロセッサのパフォーマンスに悪影響を与えることがある。
本開示は、添付の図面を参照することによってより良好に理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面において同じ符号を用いた場合、同様又は同一の要素であることを示す。
いくつかの実施形態による、行列乗算器への部分行列の適用を順序付けることによって行列の乗算を実行するように構成された、プロセッサのGPUのブロック図である。 いくつかの実施形態による、図1のGPUでの乗算のための例示的な行列を示す図である。 いくつかの実施形態による、図1の行列乗算器への部分行列の適用を順序付ける例を示す図である。 いくつかの実施形態による、部分行列の順序付けをサポートする図1のGPUの追加の態様のブロック図である。 いくつかの実施形態による、GPUの行列乗算器での部分行列の適用を順序付ける方法のフロー図である。
図1~図5は、行列乗算器での部分行列の適用を順序付けて、行列乗算器の入力レジスタにおける入力変更の数を低減することによって、プロセッサのグラフィックスプロセッシングユニット(GPU)での消費電力を低減するための技術を示している。行列乗算器は、比較的小さい行列(例えば、4×4の行列)に対して行列の乗算を実行するように構成されている。2つの大きな行列(16×16の行列等)を乗算するために、GPUは、大きな行列を小さな部分行列に分解し、その部分行列を行列乗算器の入力レジスタに順番に記憶して、結果行列の各列を計算する。GPUは、入力レジスタにおける部分行列の記憶を順序付けて、行列乗算器の複数の計算サイクルに亘って1つの入力レジスタで入力データを維持し、それによって、GPUにおける消費電力を低減する。
図1は、いくつかの実施形態による、部分行列の適用を順序付けることによって行列の乗算を実行するように構成されたプロセッサのGPU100を示している。少なくとも1つの実施形態では、GPU100は、電子デバイスに代わって動作を実行するために命令セットを実行するように一般に構成されたプロセッサの一部である。したがって、異なる実施形態では、GPU100は、電子デバイス(例えば、デスクトップ又はラップトップコンピュータ、サーバ、ハンドヘルドデバイス(例えば、携帯電話又はタブレット)、ゲームコンソール等)の一部である。GPU100は、一般に、プロセッサに代わって、グラフィックス及びベクトルの処理演算を実行するように構成されている。例えば、いくつかの実施形態では、プロセッサの中央処理装置(図1には示されていないCPU)は、実行される演算のセットをGPUに提供し、それによって、演算のセットは、グラフィックス又はベクトルの処理に関連付けられる。
GPU100は、提供された演算の実行を容易にするために、複数の単一命令複数データ(SIMD)処理ユニット(例えば、SIMDユニット102,104)を含む。また、GPU100は、SIMDユニットをサポートするための追加のモジュール(例えば、SIMDユニットの命令をフェッチ及びデコードするためのフェッチ及びデコードロジック、SIMDユニットのオペランドを記憶するためのレジスタファイル等)を含むことが理解されよう。入力された行列105のセットの行列乗算の演算をサポートするために、各SIMDユニットは、対応する入力レジスタ及び対応する出力レジスタと共に行列乗算器を含む。例えば、SIMDユニット102は、行列乗算器110と、入力レジスタ106,107と、出力レジスタ108と、を含む。「レジスタ」という用語は、行列(部分行列を含む)を記憶するように構成された任意の記憶モジュールを指すことが理解されよう。
行列乗算器110は、レジスタ106,107に記憶された行列を乗算し、その結果となる積をレジスタ108に記憶するように構成されている。入力レジスタ106,107における行列の単一の積を生成することは、本明細書では、行列乗算器110の「乗算サイクル」と呼ばれる。いくつかの実施形態では、SIMDユニット102は、クロック信号(「CLK」で示されている)によってクロックされ、行列乗算器110の乗算サイクルは、CLKクロック信号の単一のクロックサイクルに対応する。すなわち、CLKクロック信号の単一のクロックサイクルに対して、行列乗算器110は、入力レジスタ106,107に記憶された入力オペランドに基づいて、レジスタ108において積を生成するように構成されている。他の実施形態では、行列乗算器110の各乗算サイクルは、CLKクロック信号の複数のサイクルを必要とする。
いくつかの実施形態では、回路面積を節約するために、行列乗算器110は、比較的小さい入力行列の積を生成するように構成されている。例えば、いくつかの実施形態では、行列乗算器110は、4×4×4の乗算器であり、行列乗算器110は、入力レジスタ106に記憶された4×4の行列を、入力レジスタ107に記憶された4×4の行列と乗算して、出力レジスタ108に記憶される4×4の積(結果)を生成するように構成されている。ただし、一部のシナリオでは、CPUは、大きな行列の乗算(例えば、16×16の行列の乗算等)を必要とする演算をGPU100に提供する。大きな行列の乗算をサポートするために、SIMDは、大きな行列を複数の小さな部分行列に分解し、行列乗算器110で部分行列を乗算して中間結果のセットを生成し、中間結果を組み合わせて大きな行列の積を生成するように構成されている。
説明すると、いくつかの実施形態において、行列乗算器110は、行列A(MXKの行列)及び行列B(KXNの行列)で示される入力行列を乗算して、結果行列R(MXN)の行列を計算する。行列A,Bは、それぞれ入力レジスタ106,107に記憶され、結果行列Rは、出力レジスタ108に記憶される。いくつかの実施形態では、行列乗算器110は、以下の式によって示されるように、i番目の行とj番目の列との内積を計算することによって、結果行列Rを計算する。
i,j=SumAi,k×Bk,j、k=0…K-1、iは[0..M-1]、jは[0..N-1]
他の実施形態では、行列乗算器110は、以下の式によって示されるように、A行列の列kとB行列の行kとのK個の外積を合計することによって、結果行列Rを計算する。
R=SumR,R i,j=Ai,k×Bk,j
大きな行列の場合、SIMD102は、入力行列を、行列乗算器110によって指定された入力サイズである小さい部分行列に分解し、行列乗算器110で部分行列を乗算して中間結果のセットを生成し、中間結果を組み合わせて最終結果行列Rを求める。したがって、行列乗算器が内積を計算する実施形態では、SIMD102は、入力行列を小さな部分行列に分解し、異なるセットの内積に基づいて部分行列の異なるセットの積を決定し、次に、得られた内積の外積を計算して、最終結果行列を決定する。
本明細書でさらに説明するように、異なる中間結果(異なる部分行列の積)を計算するには、入力レジスタ106,107に記憶された部分行列を変更する必要があることが理解されよう。しかし、入力レジスタに記憶されたデータの各々を変更することは、GPU102において電力を消費する。さらに、対応する算術論理ユニット(ALU)又は行列乗算器110の他のモジュールの入力においてデータの各々を変更することは、入力データを不変の状態に維持することに比べて、追加の電力を消費する。したがって、電力を節約するために、SIMD102は、入力レジスタ106,107での部分行列の記憶を順序付けて、その部分行列が、結果行列Rの計算にもはや必要とされなくなるまで、複数の連続する乗算サイクルの間、1つの入力レジスタ(例えば、レジスタ107)で維持されるようにする。すなわち、SIMD102は、入力レジスタ106,107での入力された部分行列の適用を順序付けて、1つのレジスタにおける入力スイッチングの量を低減し、結果として、行列乗算器110の1つの入力において電力を節約する。
GPU100での入力部分行列の順序付けの例が、図2及び図3に関して説明されている。図2は、行列A及び行列Bと示される2つの16×16の行列220,222の例を示している。行列A,Bの各々は、16個の4×4の部分行列(例えば、行列Aの部分行列221)を含む。行列A,Bは、GPU102で乗算され、行列Rと示される結果行列224を生成し、これも、複数の4×4の部分行列を含む。行列Rは、部分行列の列のセットとみなすことができる。例えば、Rの最初の列は、部分行列R0,0,R1,0,R2,0,R3,0で構成されている。以下にさらに説明するように、いくつかの実施形態では、GPU100は、Rの部分行列の各列を計算することによって行列Rを計算し、次に、異なる列を連結してR行列を形成する。いくつかの実施形態では、Rの部分行列の各列は、GPU100の異なる対応するSIMDで同時に計算され、1つのSIMDが、部分行列の列を連結してRを形成する。
Rの部分行列の列を計算するために、対応するSIMDは、その行列乗算器を使用して、行列A,Bの対応する部分行列の内積(dot)のセットを求め、内積結果に対して外積を計算する。例えば、部分行列R0,0を生成するために、SIMD102は、以下の計算を実行する。
0,0=A0,0×B0,0
0,0+=A0,1×B1,0
0,0+=A0,2×B2,0
0,0+=A0,3×B3,0
ここで、「+=」は、対応する積を、R0,0の前の値に加算することを示す。同様に、部分行列R1,0を生成するために、SIMD102は、以下の計算を実行する。
1,0=A1,0×B0,0
0,0+=A1,1×B1,0
0,0+=A1,2×B2,0
0,0+=A1,3×B3,0
SIMD102は、同様の計算を実行して、部分行列R2,0,R3,0を生成する。
対応する部分行列を計算するための各乗算を実行するために、SIMD102は、行列A及び行列Bの対応する部分行列をそれぞれ入力レジスタ106,107にロードし、行列乗算器110は、乗算を実行し、結果を出力レジスタ108に記憶する。ただし、上記の例から分かるように、行列Bの部分行列は、行列Rの異なる部分行列を計算するために再利用される。したがって、SIMD102は、入力レジスタ107に記憶された行列Bの部分行列が行列乗算器110の複数の連続する乗算サイクルに亘って変化しないように、乗算を順序付けるように構成されている。それにより、SIMD102は、入力レジスタ107へのロードの数、及び、行列乗算器110の入力の変化を低減し、これにより、電力の消費を低減する。
いくつかの実施形態による、入力される順序付けの一部の例が、図3に示されている。図3は、連続する乗算サイクル310~305のセットと、入力レジスタ106,107の各々の対応する内容を示している。したがって、図示した例では、乗算サイクル301において、SIMD102は、部分行列A0,0,B0,0を、それぞれ入力レジスタ106,107にロードする。以下にさらに説明するように、行列乗算器110は、部分行列を乗算して、結果行列Rの第1の列の中間結果を計算する。次の乗算サイクル302(乗算サイクル301の直後の乗算サイクル)において、SIMD102は、部分行列A1,0を入力レジスタ106にロードするが、部分行列B0,0を入力レジスタ107に維持する。行列乗算器110は、部分行列を乗算して、結果行列Rの第1の列の別の中間結果を計算する。
次の乗算サイクル303において、SIMD102は、部分行列A2,0を入力レジスタ106にロードするが、部分行列B0,0を入力レジスタ107に維持する。行列乗算器110は、部分行列を乗算して、結果行列Rの第1の列のさらに別の中間結果を計算する。次の乗算サイクル304において、SIMD102は、部分行列A3,0を入力レジスタ106にロードするが、部分行列B0,0を入力レジスタ107に維持する。行列乗算器110は、部分行列を乗算して、結果行列Rの第1の列の別の中間結果を計算する。次の乗算サイクル305において、部分行列B0,0を必要とする全ての計算が完了する。したがって、乗算サイクル305において、SIMD102は、部分行列A0,1を入力レジスタ106にロードし、部分行列B1,0を入力レジスタ107にロードする。したがって、図示した例では、4つの継続する(連続する)乗算サイクルにおいて、SIMD102は、入力レジスタ107において部分行列B0,0を維持し、これにより、入力部分行列を変更して行列乗算結果を計算するのに必要な電力を節約する。
SIMD102は、行列乗算器110で乗算の演算を実行し続け、得られた積を組み合わせて、結果行列Rの第1の列を計算する。乗算の順序付け(入力レジスタ106,107にロード及び維持される対応する入力行列を含む)は、以下の通りである。
0,0=A0,0×B0,0
1,0=A1,0×B0,0 <=Bの入力は維持
2,0=A2,0×B0,0 <=Bの入力は維持
3,0=A3,0×B0,0 <=Bの入力は維持(4xを使用)
0,0+=A0,1×B1,0 <=Bの入力を更新
1,0+=A1,1×B1,0 <=Bの入力は維持
2,0+=A2,1×B1,0 <=Bの入力は維持
3,0+=A3,1×B1,0 <=Bの入力は維持(4xを使用)
0,0+=A0,2×B2,0 <=Bの入力を更新
1,0+=A1,2×B2,0 <=Bの入力は維持
2,0+=A2,2×B2,0 <=Bの入力は維持
3,0+=A3,2×B2,0 <=Bの入力は維持(4xを使用)
0,0+=A0,3×B3,0 <=Bの入力を更新
1,0+=A1,3×B3,0 <=Bの入力は維持
2,0+=A2,3×B3,0 <=Bの入力は維持
3,0+=A3,3×B3,0 <=Rの第1の列を完了する計算
GPU102は、結果行列Rの他の列を計算するために同様の計算を実行する。いくつかの実施形態では、GPU102は、結果行列Rの対応する列を同時に計算するために異なるSIMDを使用し、1つのSIMD又は他のモジュールを使用して、異なる列を最終結果行列Rに連結する。
図4は、いくつかの実施形態による、行列乗算器110の入力部分行列の順序付けをサポートする図1のSIMD102の追加の態様を示している。図示した例では、SIMD102は、シーケンサ430に接続されたデータストア435を含む。データストア435は、行列乗算器110の部分行列(例えば、部分行列433)を記憶するように構成されたバッファ、キャッシュ、レジスタファイル又は他のメモリ構造である。シーケンサ430は、入力された行列105(行列A及び行列B)を対応する部分行列に分解し、データストア435に部分行列を記憶するように構成されたハードウェアモジュールである。シーケンサ430は、対応する乗算サイクルにおいて、データストア435から1つ以上の部分行列を取得し、取得した各部分行列を対応する入力レジスタ106,107にロードするようにさらに構成されている。したがって、シーケンサ430は、比較的大きな行列の行列乗算を実行するために、行列乗算器110での入力部分行列の順序付けを制御する。
図5は、いくつかの実施形態による、GPUの行列乗算器での部分行列の適用を順序付ける方法のフロー図である。説明のために、方法500は、図1のGPU100での例示的な実装に関して説明される。ブロック502において、シーケンサ430は、初期の部分行列(例えば、部分行列A0,0及びB0,0)をデータストア435から入力レジスタ106,107にそれぞれロードする。ブロック504において、行列乗算器110は、入力レジスタ106,107に記憶された部分行列を乗算して積を生成し、上記のように、その結果を、結果行列Rの対応する列が存在する場合にはその中間結果に加算する。方法のフローはブロック506に移動し、シーケンサ430は、入力レジスタ106の入力部分行列が行列Aの最後の行に対応するかどうかを判別する。対応しない場合、方法のフローはブロック508に移動し、シーケンサ430は、現在の列(例えば、列0)及び次の行に対応するAの部分行列を入力レジスタ106にロードする。入力レジスタ107に記憶されたBの部分行列が維持されることによって、電力を節約する。方法のフローはブロック504に戻り、行列乗算器110は、次の乗算演算、すなわち、次の乗算サイクルを実行する。
ブロック506に戻ると、入力レジスタ106における入力部分行列が行列Aの最後の行に対応する場合、方法のフローはブロック510に移り、シーケンサ430は、入力レジスタ107に記憶された入力部分行列が行列Bの最後の行に対応するかどうかを判別する。対応しない場合、方法のフローはブロック512に移り、シーケンサ430は、計算中のRの列に対応するBの部分行列を入力レジスタ107にロードする。さらに、シーケンサ430は、最初の行(例えば、行0)及び次の列に対応するAの部分行列を入力レジスタ106にロードする。方法のフローはブロック504に戻り、行列乗算器110は、次の乗算演算を実行する。
ブロック510に戻ると、入力レジスタ107に記憶された入力部分行列が行列Bの最後の行に対応する場合、結果行列Rの対応する列の計算が完了する。したがって、方法のフローはブロック514に移動し、SIMD102は、Rの列の最終的な結果を記憶する。ブロック516において、GPU100は、計算された列の各々を組み合わせて、結果行列Rを生成する。いくつかの実施形態では、GPU102は、さらなる処理のために結果行列RをCPUに提供する。他の実施形態では、GPU100は、結果行列Rを使用して、例えば、表示フレーム内に1つ以上のオブジェクトを生成し、表示デバイスで表示するために表示フレームをフレームバッファに提供する。
本明細書に開示されるように、いくつかの実施形態では、方法は、グラフィックスプロセッシングユニット(GPU)の行列乗算器の第1の乗算サイクルにおいて、第1の行列及び第2の行列を乗算することと、第1の入力レジスタに記憶された第1の行列の第1の部分行列を、第2の入力レジスタに記憶された第2の行列の第1の部分行列と乗算することと、行列乗算器の第1の乗算サイクルに続く第2の乗算サイクルにおいて、第1の入力レジスタに記憶された第1の行列の第1の部分行列を、第2の入力レジスタに記憶された第2の行列の第2の部分行列と乗算することと、第1の乗算サイクル及び第2の乗算サイクルにおいて、第1の部分行列を第1の入力レジスタに維持することと、を含む。一態様において、方法は、行列乗算器の第2の乗算サイクルに続く第3の乗算サイクルにおいて、第1の入力レジスタに記憶された第1の行列の第1の部分行列を、第2の入力レジスタに記憶された第2の行列の第2の部分行列と乗算することと、第1の乗算サイクル、第2の乗算サイクル及び第3の乗算サイクルにおいて、第1の部分行列を第1の入力レジスタに維持することと、を含む。別の態様において、第1の部分行列は、少なくとも1つの非ゼロ要素を含む。
一態様において、方法は、第1の乗算サイクル及び第2の乗算サイクルの結果に基づいて、第1の行列及び第2の行列の積を決定することであって、積は結果行列を含む、ことを含む。別の態様において、積を決定することは、第1の乗算サイクル及び第2の乗算サイクルの結果に基づいて、結果行列の部分行列を決定することを含む。さらに別の態様において、結果行列の部分行列は、結果行列の列及び行の何れかを含む。また別の態様において、積を決定することは、第1の乗算サイクル及び第2の乗算サイクルの結果に基づいて、外積を決定することを含む。さらに別の態様において、方法は、行列乗算器の第1の乗算サイクルに続く第3の乗算サイクルにおいて、第1の入力レジスタに記憶された第1の行列の第2の部分行列を、第2の入力レジスタに記憶された第2の行列の第2の部分行列と乗算することと、第3の乗算サイクルにおいて、第1の行列の第1の部分行列を、第1の行列の第2の部分行列に変更することと、を含む。
本明細書に開示されるように、いくつかの実施形態では、方法は、グラフィックスプロセッシングユニット(GPU)の行列乗算器で第1の行列の部分行列を第2の行列の部分行列と乗算して、行列の積を決定することを含み、乗算することは、第1の複数の乗算サイクルに亘って、行列乗算器の第1の入力レジスタにおいて第1の部分行列を維持することを含む。一態様では、乗算することは、第1の複数の乗算サイクルに亘って、行列乗算器の第2の入力レジスタにおいて部分行列を変更することをさらに含む。別の態様では、乗算することは、第2の複数の乗算サイクルに亘って、行列乗算器の第2の入力レジスタにおいて第2の部分行列を維持することをさらに含む。さらに別の態様では、第1の部分行列の少なくとも1つの要素は非ゼロ要素である。
本明細書に開示されるように、いくつかの実施形態では、グラフィックスプロセッシングユニット(GPU)は、第1の入力レジスタと、第2の入力レジスタと、第1の入力レジスタに記憶された部分行列を、第2の入力レジスタに記憶された部分行列と乗算するための行列乗算器と、第1の入力レジスタ及び第2の入力レジスタに記憶された部分行列を制御するためのシーケンサと、を備え、シーケンサは、行列乗算器の第1の乗算サイクルにおいて、第1の行列の第1の部分行列を第1の入力レジスタに記憶し、第2の行列の第1の部分行列を第2の入力レジスタに記憶し、行列乗算器の第1の乗算サイクルに続く第2の乗算サイクルにおいて、第1の行列の第1の部分行列を第1の入力レジスタに維持し、第2の行列の第2の部分行列を第2の入力レジスタに記憶する、ように構成されている。一態様において、シーケンサは、行列乗算器の第1の乗算サイクルに続く第3の乗算サイクルにおいて、第1の入力レジスタに記憶された第1の行列を維持し、第2の行列の第2の部分行列を第2の入力レジスタに記憶するように構成されている。別の態様において、第1の部分行列は、少なくとも1つの非ゼロ要素を含む。
一態様において、GPUは、第1の乗算サイクル及び第2の乗算サイクルの結果に基づいて、第1の行列と第2の行列の積を決定するように構成されており、積は結果行列を含む。別の態様では、GPUは、第1の乗算サイクル及び第2の乗算サイクルの結果に基づいて結果行列の部分行列を決定することによって、積を決定するように構成されている。また別の態様では、結果行列の部分行列は、結果行列の列及び行の何れかを含む。さらに別の態様では、GPUは、第1の乗算サイクル及び第2の乗算サイクルの結果に基づいて外積を決定することによって、積を決定するように構成されている。別の態様では、シーケンサは、行列乗算器の第1の乗算サイクルに続く第3の乗算サイクルにおいて、第1の行列の第2の部分行列を第1の入力レジスタに記憶し、第2の行列の第2の部分行列を第2の入力レジスタに記憶するように構成されている。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (14)

  1. 第1の行列及び第2の行列を乗算するグラフィックスプロセッシングユニット(GPU)の行列乗算器の第1の乗算サイクルにおいて、第1の入力レジスタに記憶された前記第1の行列の第1の部分行列を、第2の入力レジスタに記憶された前記第2の行列の第1の部分行列と乗算することと、
    前記行列乗算器の前記第1の乗算サイクルに続く第2の乗算サイクルにおいて、前記第1の入力レジスタに記憶された前記第1の行列の前記第1の部分行列を、第2の入力レジスタに記憶された前記第2の行列の第2の部分行列と乗算することと、前記第1の乗算サイクル及び前記第2の乗算サイクルにおいて、前記第1の部分行列を前記第1の入力レジスタに維持することと、
    前記第2の乗算サイクルに続く第3の乗算サイクルにおいて、前記第1の入力レジスタに記憶された前記第1の行列の第2の部分行列を、前記第2の入力レジスタに記憶された前記第2の行列の前記第2の部分行列と乗算することと、
    前記第3の乗算サイクルにおいて、前記第1の行列の前記第1の部分行列を、前記第1の行列の前記第2の部分行列に変更することと、を含む、
    方法。
  2. 前記第1の部分行列は、少なくとも1つの非ゼロ要素を含む、
    請求項1の方法。
  3. 前記第1の乗算サイクル及び前記第2の乗算サイクルの結果に基づいて、前記第1の行列及び前記第2の行列の積を決定することであって、前記積は結果行列を含む、ことをさらに含む、
    請求項1の方法。
  4. 前記積を決定することは、
    前記第1の乗算サイクル及び前記第2の乗算サイクルの結果に基づいて、前記結果行列の部分行列を決定することを含む、
    請求項の方法。
  5. 前記結果行列の前記部分行列は、前記結果行列の列及び行の何れかを含む、
    請求項の方法。
  6. 前記積を決定することは、
    前記第1の乗算サイクル及び前記第2の乗算サイクルの結果に基づいて、外積を決定することを含む、
    請求項の方法。
  7. グラフィックスプロセッシングユニット(GPU)の行列乗算器で第1の行列の部分行列を第2の行列の部分行列と乗算して、行列の積を決定することを含み、
    前記乗算することは、
    第1の複数の乗算サイクルに亘って、前記行列乗算器の第1の入力レジスタにおいて第1の部分行列を維持することと、
    前記第1の複数の乗算サイクルに亘って、前記行列乗算器の第2の入力レジスタにおいて部分行列を変更することと、
    第2の複数の乗算サイクルに亘って、前記行列乗算器の前記第2の入力レジスタにおいて第2の部分行列を維持することと、を含む、
    方法。
  8. 前記第1の部分行列の少なくとも1つの要素は非ゼロ要素である、
    請求項の方法。
  9. 第1の入力レジスタと、
    第2の入力レジスタと、
    前記第1の入力レジスタに記憶された部分行列を、前記第2の入力レジスタに記憶された部分行列と乗算するための行列乗算器と、
    前記第1の入力レジスタ及び前記第2の入力レジスタに記憶された部分行列を制御するためのシーケンサと、を備え、
    前記シーケンサは、
    前記行列乗算器の第1の乗算サイクルにおいて、第1の行列の第1の部分行列を前記第1の入力レジスタに記憶し、第2の行列の第1の部分行列を前記第2の入力レジスタに記憶し、
    前記行列乗算器の前記第1の乗算サイクルに続く第2の乗算サイクルにおいて、前記第1の行列の前記第1の部分行列を前記第1の入力レジスタに維持し、前記第2の行列の第2の部分行列を前記第2の入力レジスタに記憶し、
    前記第2の乗算サイクルに続く第3の乗算サイクルにおいて、前記第1の行列の第2の部分行列を前記第1の入力レジスタに記憶し、前記第2の行列の前記第2の部分行列を前記第2の入力レジスタに記憶するように構成されている、
    グラフィックスプロセッシングユニット(GPU)。
  10. 前記第1の部分行列は、少なくとも1つの非ゼロ要素を含む、
    請求項のGPU。
  11. 前記GPUは、
    前記第1の乗算サイクル及び前記第2の乗算サイクルの結果に基づいて、前記第1の行列と前記第2の行列の積を決定するように構成されており、
    前記積は結果行列を含む、
    請求項のGPU。
  12. 前記GPUは、
    前記第1の乗算サイクル及び前記第2の乗算サイクルの結果に基づいて前記結果行列の部分行列を求めることによって、前記積を決定するように構成されている、
    請求項11のGPU。
  13. 前記結果行列の前記部分行列は、前記結果行列の列及び行の何れかを含む、
    請求項12のGPU。
  14. 前記GPUは、
    前記第1の乗算サイクル及び前記第2の乗算サイクルの結果に基づいて外積を決定することによって、前記積を決定するように構成されている、
    請求項11のGPU。
JP2021523783A 2018-10-31 2019-06-18 部分行列の順序付けを伴う行列乗算器 Active JP7461945B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023065959A JP2023089161A (ja) 2018-10-31 2023-04-13 部分行列の順序付けを伴う行列乗算器

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/176,449 US11093580B2 (en) 2018-10-31 2018-10-31 Matrix multiplier with submatrix sequencing
US16/176,449 2018-10-31
PCT/US2019/037656 WO2020091848A1 (en) 2018-10-31 2019-06-18 Matrix multiplier with submatrix sequencing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023065959A Division JP2023089161A (ja) 2018-10-31 2023-04-13 部分行列の順序付けを伴う行列乗算器

Publications (3)

Publication Number Publication Date
JP2022506418A JP2022506418A (ja) 2022-01-17
JPWO2020091848A5 JPWO2020091848A5 (ja) 2022-06-22
JP7461945B2 true JP7461945B2 (ja) 2024-04-04

Family

ID=70327188

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2021523783A Active JP7461945B2 (ja) 2018-10-31 2019-06-18 部分行列の順序付けを伴う行列乗算器
JP2023065959A Withdrawn JP2023089161A (ja) 2018-10-31 2023-04-13 部分行列の順序付けを伴う行列乗算器

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2023065959A Withdrawn JP2023089161A (ja) 2018-10-31 2023-04-13 部分行列の順序付けを伴う行列乗算器

Country Status (6)

Country Link
US (1) US11093580B2 (ja)
EP (1) EP3891626A4 (ja)
JP (2) JP7461945B2 (ja)
KR (1) KR102586989B1 (ja)
CN (1) CN113168430A (ja)
WO (1) WO2020091848A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210303987A1 (en) * 2020-03-26 2021-09-30 Advanced Micro Devices, Inc. Power reduction for machine learning accelerator background
US11720328B2 (en) 2020-06-26 2023-08-08 Advanced Micro Devices, Inc. Processing unit with small footprint arithmetic logic unit
CN112429475B (zh) * 2020-09-29 2023-06-30 贵州大学 一种胶囊排序送料装置
CN112433760B (zh) * 2020-11-27 2022-09-23 海光信息技术股份有限公司 数据排序方法和数据排序电路
CN112632464B (zh) * 2020-12-28 2022-11-29 上海壁仞智能科技有限公司 用于处理数据的处理装置
US11556337B2 (en) 2021-04-12 2023-01-17 Analog Devices International Unlimited Company Parallel matrix multiplication technique optimized for memory fetches
CN117407640A (zh) * 2022-07-15 2024-01-16 华为技术有限公司 一种矩阵计算方法及装置
KR102640249B1 (ko) * 2023-06-12 2024-02-27 주식회사 하이퍼엑셀 대규모 언어 모델을 위해 멀티-디바이스에 기반한 추론을 수행하는 방법 및 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050193050A1 (en) 2001-03-21 2005-09-01 Apple Computer Inc. Matrix multiplication in a vector processing system
JP5324700B2 (ja) 2009-03-31 2013-10-23 シーメンス アクティエンゲゼルシャフト シールプレートを備えた軸流ターボ機械のロータ
US20170060811A1 (en) 2015-04-28 2017-03-02 Intel Corporation Matrix operands for linear algebra operations

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CH594477A5 (ja) * 1976-08-20 1978-01-13 Agie Ag Ind Elektronik
JPH05324700A (ja) * 1992-05-19 1993-12-07 N T T Data Tsushin Kk 行列乗算装置
JP3935678B2 (ja) * 2001-01-31 2007-06-27 富士通株式会社 Simd積和演算方法、積和演算回路、および、半導体集積回路装置
US20040122887A1 (en) * 2002-12-20 2004-06-24 Macy William W. Efficient multiplication of small matrices using SIMD registers
US20050240646A1 (en) * 2004-04-23 2005-10-27 The Research Foundation Of State University Of New York Reconfigurable matrix multiplier architecture and extended borrow parallel counter and small-multiplier circuits
US8051124B2 (en) * 2007-07-19 2011-11-01 Itt Manufacturing Enterprises, Inc. High speed and efficient matrix multiplication hardware module
US9354944B2 (en) * 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
US8577951B1 (en) * 2010-08-19 2013-11-05 Altera Corporation Matrix operations in an integrated circuit device
US8862653B2 (en) * 2011-04-26 2014-10-14 University Of South Carolina System and method for sparse matrix vector multiplication processing
CN108388541B (zh) 2016-04-22 2020-12-11 安徽寒武纪信息科技有限公司 卷积运算装置及方法
US10032247B2 (en) 2016-06-22 2018-07-24 Palo Alto Research Center Incorporated System and method for speeding up general matrix-vector multiplication on GPU
US10067910B2 (en) 2016-07-01 2018-09-04 Palo Alto Research Center Incorporated System and method for GPU maximum register count optimization applied to general matrix-matrix multiplication
US10929944B2 (en) * 2016-11-23 2021-02-23 Advanced Micro Devices, Inc. Low power and low latency GPU coprocessor for persistent computing
US10817587B2 (en) 2017-02-28 2020-10-27 Texas Instruments Incorporated Reconfigurable matrix multiplier system and method
JP6912703B2 (ja) * 2017-02-24 2021-08-04 富士通株式会社 演算方法、演算装置、演算プログラム及び演算システム
US10521225B2 (en) * 2017-06-29 2019-12-31 Oracle International Corporation Matrix multiplication at memory bandwidth
CN107622037A (zh) 2017-09-27 2018-01-23 郑州云海信息技术有限公司 一种提高图形处理单元的矩阵乘计算性能的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050193050A1 (en) 2001-03-21 2005-09-01 Apple Computer Inc. Matrix multiplication in a vector processing system
JP5324700B2 (ja) 2009-03-31 2013-10-23 シーメンス アクティエンゲゼルシャフト シールプレートを備えた軸流ターボ機械のロータ
US20170060811A1 (en) 2015-04-28 2017-03-02 Intel Corporation Matrix operands for linear algebra operations

Also Published As

Publication number Publication date
EP3891626A4 (en) 2022-08-10
JP2023089161A (ja) 2023-06-27
KR20210071073A (ko) 2021-06-15
EP3891626A1 (en) 2021-10-13
KR102586989B1 (ko) 2023-10-10
US20200133991A1 (en) 2020-04-30
US11093580B2 (en) 2021-08-17
WO2020091848A1 (en) 2020-05-07
JP2022506418A (ja) 2022-01-17
CN113168430A (zh) 2021-07-23

Similar Documents

Publication Publication Date Title
JP7461945B2 (ja) 部分行列の順序付けを伴う行列乗算器
CN111095241B (zh) 加速数学引擎
US10810484B2 (en) Hardware accelerator for compressed GRU on FPGA
US20180107630A1 (en) Processor and method for executing matrix multiplication operation on processor
JP6744913B2 (ja) 浮動小数点数の丸め処理
JP3605181B2 (ja) 掛け算累算命令を使用したデータ処理
JPH10187438A (ja) 乗算器の入力に対する遷移を減少させる方法
JP2014219994A (ja) 算術プロセッサ
US10409604B2 (en) Apparatus and method for performing multiply-and-accumulate-products operations
US9563401B2 (en) Extensible iterative multiplier
US7519646B2 (en) Reconfigurable SIMD vector processing system
CN112507284B (zh) 稀疏矩阵乘法在可重构处理器阵列上的实现方法及装置
JP2014229133A (ja) 移動平均処理プログラム、及びプロセッサ
JPWO2019093451A1 (ja) データ処理装置、ループ制御装置、データ処理方法、ループ制御方法およびプログラム
JPH07271556A (ja) 電子乗算および加算装置および方法
CN112446007A (zh) 一种矩阵运算方法、运算装置以及处理器
US20130166616A1 (en) System and Method for Implementing a Multiplication
JP7377869B2 (ja) グラフィックスプロセッシングユニットでのパイプライン化された行列乗算
US11573765B2 (en) Fused convolution and batch normalization for neural networks
CN115408061B (zh) 复数矩阵运算的硬件加速方法、装置、芯片及存储介质
US20230289191A1 (en) Vertical and horizontal broadcast of shared operands
JP2018005369A (ja) 演算処理装置及び演算処理装置の制御方法
EP1936492A1 (en) SIMD processor with reduction unit
US20240111530A1 (en) Matrix multiplication unit with flexible precision operations
JP3336986B2 (ja) 信号処理プロセッサ及びそれに用いる丸め機能付き積和演算器

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220614

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220614

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221101

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20221213

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20230413

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20231122

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20231222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240325

R150 Certificate of patent or registration of utility model

Ref document number: 7461945

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150