JP7379779B2 - 行列処理装置 - Google Patents
行列処理装置 Download PDFInfo
- Publication number
- JP7379779B2 JP7379779B2 JP2022142663A JP2022142663A JP7379779B2 JP 7379779 B2 JP7379779 B2 JP 7379779B2 JP 2022142663 A JP2022142663 A JP 2022142663A JP 2022142663 A JP2022142663 A JP 2022142663A JP 7379779 B2 JP7379779 B2 JP 7379779B2
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- processing
- matrix processing
- operations
- memory
- 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
Links
- 239000011159 matrix material Substances 0.000 title claims description 995
- 238000012545 processing Methods 0.000 title claims description 458
- 230000015654 memory Effects 0.000 claims description 199
- 230000006854 communication Effects 0.000 claims description 34
- 238000004891 communication Methods 0.000 claims description 34
- 238000013528 artificial neural network Methods 0.000 claims description 10
- 230000002093 peripheral effect Effects 0.000 claims description 7
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 238000003860 storage Methods 0.000 description 32
- 238000000034 method Methods 0.000 description 28
- 238000004364 calculation method Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 16
- 230000036961 partial effect Effects 0.000 description 11
- 238000013473 artificial intelligence Methods 0.000 description 9
- 238000010801 machine learning Methods 0.000 description 9
- 238000013459 approach Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000007175 bidirectional communication Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 241001465754 Metazoa Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical group [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000004378 air conditioning Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 235000013305 food Nutrition 0.000 description 1
- 238000011773 genetically engineered mouse model Methods 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000007788 liquid Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 239000003921 oil Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000005086 pumping Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000009423 ventilation Methods 0.000 description 1
- 239000002351 wastewater Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Mathematical Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Molecular Biology (AREA)
- Mathematical Optimization (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Programmable Controllers (AREA)
Description
[例示的な行列処理アーキテクチャ]
[例示的なコンピュータプロセッサアーキテクチャ]
[プログラマブルな行列処理エンジン]
[例示的な実施態様]
[項目1]
複数のプログラマブルな行列ルーチンを格納する回路を有するプログラマブルな行列ルーチンメモリであって、前記複数のプログラマブルな行列ルーチンのそれぞれは、複数の行列演算の対応する行列演算を実行するための命令を含み、前記プログラマブルな行列ルーチンメモリは、複数の行列演算を実行するために実行される前記複数のプログラマブルな行列ルーチンを用いてプログラムされる、プログラマブルな行列ルーチンメモリと、
行列計算を実行するための回路を有する1つまたは複数の行列処理ユニットと、
回路を有するコントローラであって、
前記複数の行列演算の特定の行列演算を実行するためのコマンドを受信し、
前記特定の行列演算に対応するプログラマブルな行列ルーチンを識別し、前記プログラマブルな行列ルーチンは前記複数のプログラマブルな行列ルーチンから識別され、
前記プログラマブルな行列ルーチンを前記プログラマブルな行列ルーチンメモリから受信し、
前記プログラマブルな行列ルーチンを実行し、前記1つまたは複数の行列処理ユニットを用いて、前記プログラマブルな行列ルーチンの実行に関連付けられた1つまたは複数の行列計算が実行され、
前記特定の行列演算の結果を決定し、前記結果は前記プログラマブルな行列ルーチンの実行に基づいて決定される、回路を有するコントローラと、
を備える、
行列処理回路。
[項目2]
前記プログラマブルな行列ルーチンを実行する前記回路は、
前記特定の行列演算に関連付けられた1つまたは複数の行列オペランドを受信し、
前記1つまたは複数の行列処理ユニットを用いて、前記1つまたは複数の行列オペランドに対して前記1つまたは複数の行列計算を実行する、
項目1に記載の行列処理回路。
[項目3]
前記行列処理回路は、複数のメモリリソースブロックをさらに備え、
前記特定の行列演算に関連付けられた前記1つまたは複数の行列オペランドを受信する前記回路はさらに、
前記1つまたは複数の行列オペランドに関連付けられた行列データをメモリから受信し、
前記1つまたは複数の行列オペランドを前記行列データから取り出し、
1つまたは複数の前記複数のメモリリソースブロック内に前記1つまたは複数の行列オペランドを格納する、
項目2に記載の行列処理回路。
[項目4]
前記プログラマブルな行列ルーチンは前記特定の行列演算を実行するための命令のセットを有し、
命令の前記セットは、
前記行列データを前記メモリから受信し、前記1つまたは複数の行列オペランドを前記行列データから取り出す、命令の第1のサブセットと、
前記1つまたは複数の行列オペランドに対して前記1つまたは複数の行列計算を実行する、命令の第2のサブセットと、
を含む、
項目3に記載の行列処理回路。
[項目5]
前記1つまたは複数の行列処理ユニットは、複数の行列処理ユニットを有し、
前記行列処理回路は、行列処理クラスタをさらに備え、前記行列処理クラスタは前記複数の行列処理ユニットと前記複数のメモリリソースブロックを有する、
項目3または4に記載の行列処理回路。
[項目6]
前記コントローラは、
前記複数のプログラマブルな行列ルーチンをホストコンピューティングシステムから受信し、
前記プログラマブルな行列ルーチンメモリ内に前記複数のプログラマブルな行列ルーチンを格納する、
ための回路をさらに有する、
項目1から5のいずれか一項に記載の行列処理回路。
[項目7]
前記1つまたは複数の行列計算は、1つまたは複数の行列乗算計算を有する、項目1から6のいずれか一項に記載の行列処理回路。
[項目8]
前記1つまたは複数の行列計算は、1つまたは複数の畳み込み計算を有する、項目1から7のいずれか一項に記載の行列処理回路。
[項目9]
前記特定の行列演算は、人工ニューラルネットワークにおける演算と関連付けられている、項目1から8のいずれか一項に記載の行列処理回路。
[項目10]
アプリケーションを実行するプロセッサであって、前記アプリケーションの実行は複数の行列演算を有する、プロセッサと、
前記複数の行列演算を実行する行列処理回路と、を備えるシステムであって、
前記行列処理回路は、
複数のプログラマブルな行列ルーチンを格納する回路を含むプログラマブルな行列ルーチンメモリであって、前記複数のプログラマブルな行列ルーチンのそれぞれは、前記複数の行列演算の対応する行列演算を実行するための命令を含み、前記プログラマブルな行列ルーチンメモリは、前記複数の行列演算を実行するために実行される前記複数のプログラマブルな行列ルーチンを用いてプログラムされる、プログラマブルな行列ルーチンメモリと、
1つまたは複数の行列処理クラスタであって、前記1つまたは複数の行列処理クラスタのそれぞれは複数の行列処理ユニットを含み、前記複数の行列処理ユニットは行列計算を実行するための回路を有する、1つまたは複数の行列処理クラスタと、
回路を有するコントローラであって、前記回路は、
前記複数の行列演算の特定の行列演算を実行するコマンドを受信し、
前記特定の行列演算に対応するプログラマブルな行列ルーチンを識別し、前記プログラマブルな行列ルーチンは前記複数のプログラマブルな行列ルーチンから識別され、
前記プログラマブルな行列ルーチンを前記プログラマブルな行列ルーチンメモリから受信し、
前記プログラマブルな行列ルーチンの実行を、前記1つまたは複数の行列処理クラスタにわたって分散し、
前記特定の行列演算の結果を決定し、前記結果は前記プログラマブルな行列ルーチンの実行に基づいて決定される、コントローラと、
を有する、
システム。
[項目11]
前記1つまたは複数の行列処理クラスタは、
複数の行列処理クラスタと、
前記複数の行列処理クラスタと通信可能に結合するように相互接続された多次元メッシュと、
を含む、項目10に記載のシステム。
[項目12]
前記1つまたは複数の行列処理クラスタのそれぞれは、
前記特定の行列演算に関連付けられた1つまたは複数の行列オペランドを受信し、
前記複数の行列処理ユニットを用いて、前記1つまたは複数の行列オペランドに対して複数の行列計算を実行する、
ための回路をさらに有する、
項目10または11に記載のシステム。
[項目13]
前記行列処理回路は、1つまたは複数のメモリモジュールをさらに有し、
前記1つまたは複数の行列処理クラスタのそれぞれは、複数のメモリリソースブロックをさらに含み、
前記特定の行列演算に関連付けられた前記1つまたは複数の行列オペランドを受信する前記回路はさらに、
前記1つまたは複数の行列オペランドに関連付けられた行列データを、前記1つまたは複数のメモリモジュールから受信し、
前記1つまたは複数の行列オペランドを前記行列データから取り出し、
1つまたは複数の前記複数のメモリリソースブロック内に前記1つまたは複数の行列オペランドを格納する、
項目12に記載のシステム。
[項目14]
前記プログラマブルな行列ルーチンは、前記特定の行列演算を実行するための命令のセットを有し、
命令の前記セットは、
前記行列データを前記1つまたは複数のメモリモジュールから受信し、前記1つまたは複数の行列オペランドを前記行列データから取り出す、命令の第1のサブセットと、
前記1つまたは複数の行列オペランドに対して前記複数の行列計算を実行する、命令の第2のサブセットと、
を含む、
項目13に記載のシステム。
[項目15]
前記コントローラは、
前記複数のプログラマブルな行列ルーチンを前記プロセッサから受信し、
前記プログラマブルな行列ルーチンメモリ内に前記複数のプログラマブルな行列ルーチンを格納する、
ための回路をさらに有する、
項目10から14のいずれか一項に記載のシステム。
[項目16]
命令を格納する少なくとも1つの非一時的機械アクセス可能記憶媒体であって、前記命令は、機械に対して実行された場合、前記機械に、
複数の行列演算の特定の行列演算を実行するためのコマンドを受信させ、
前記特定の行列演算に対応するプログラマブルな行列ルーチンを識別させ、前記プログラマブルな行列ルーチンは複数のプログラマブルな行列ルーチンから識別され、前記複数のプログラマブルな行列ルーチンのそれぞれは、前記複数の行列演算の対応する行列演算を実行するためのプログラマブルな命令を有し、
前記プログラマブルな行列ルーチンをプログラマブルな行列ルーチンメモリから受信させ、前記プログラマブルな行列ルーチンメモリは、前記複数の行列演算を実行するために実行される前記複数のプログラマブルな行列ルーチンを用いてプログラムされ、
前記プログラマブルな行列ルーチンを実行させ、1つまたは複数の行列処理ユニットを用いて、前記プログラマブルな行列ルーチンの実行に関連付けられた1つまたは複数の行列計算が実行され、前記1つまたは複数の行列処理ユニットは、行列計算を実行するための回路を含み、
前記特定の行列演算の結果を決定させ、前記結果は前記プログラマブルな行列ルーチンの実行に基づいて決定される、
非一時的機械アクセス可能記憶媒体。
[項目17]
前記機械に前記プログラマブルな行列ルーチンを実行させる前記命令は、さらに前記機械に、
前記特定の行列演算に関連付けられた1つまたは複数の行列オペランドを受信させ、
前記1つまたは複数の行列処理ユニットを用いて、前記1つまたは複数の行列オペランドに対して前記1つまたは複数の行列計算を実行させる、
項目16に記載の非一時的機械アクセス可能記憶媒体。
[項目18]
前記機械に前記特定の行列演算に関連付けられた前記1つまたは複数の行列オペランドを受信させる前記命令は、さらに前記機械に、
前記1つまたは複数の行列オペランドに関連付けられた行列データをメモリから受信させ、
前記1つまたは複数の行列オペランドを前記行列データから取り出させ、
1つまたは複数の複数のメモリリソースブロック内に前記1つまたは複数の行列オペランドを格納させる、
項目17に記載の非一時的機械アクセス可能記憶媒体。
[項目19]
前記プログラマブルな行列ルーチンは、前記特定の行列演算を実行するための命令のセットを有し、
命令の前記セットは、
前記行列データを前記メモリから受信し、前記1つまたは複数の行列オペランドを前記行列データから取り出す、命令の第1のサブセットと、
前記1つまたは複数の行列オペランドに対して前記1つまたは複数の行列計算を実行する、命令の第2のサブセットと、
を含む、
項目18に記載の非一時的機械アクセス可能記憶媒体。
[項目20]
前記命令は、さらに前記機械に、
前記複数のプログラマブルな行列ルーチンをホストコンピューティングシステムから受信させ、
前記プログラマブルな行列ルーチンメモリ内に前記複数のプログラマブルな行列ルーチンを格納させる、
項目16から19のいずれか一項に記載の非一時的機械アクセス可能記憶媒体。
[項目21]
複数の行列演算の特定の行列演算を実行するためのコマンドを受信する段階と、
前記特定の行列演算に対応するプログラマブルな行列ルーチンを識別する段階であって、前記プログラマブルな行列ルーチンは、複数のプログラマブルな行列ルーチンから識別され、前記複数のプログラマブルな行列ルーチンのそれぞれは、前記複数の行列演算の対応する行列演算を実行するためのプログラマブルな命令を有する、識別する段階と、
前記プログラマブルな行列ルーチンをプログラマブルな行列ルーチンメモリから受信する段階であって、前記プログラマブルな行列ルーチンメモリは、前記複数の行列演算を実行するために実行される前記複数のプログラマブルな行列ルーチンを用いてプログラムされる、受信する段階と、
前記プログラマブルな行列ルーチンを実行する段階であって、前記プログラマブルな行列ルーチンの実行に関連付けられた1つまたは複数の行列計算は1つまたは複数の行列処理ユニットを用いて実行され、前記1つまたは複数の行列処理ユニットは、行列計算を実行する回路を含む、実行する段階と、
前記特定の行列演算の結果を決定する段階であって、前記結果は、前記プログラマブルな行列ルーチンの実行に基づいて決定される、決定する段階と、
を備える方法。
[項目22]
前記プログラマブルな行列ルーチンを実行する段階は、
前記特定の行列演算に関連付けられた1つまたは複数の行列オペランドを受信する段階と、
前記1つまたは複数の行列処理ユニットを用いて、前記1つまたは複数の行列オペランドに対して前記1つまたは複数の行列計算を実行する段階と、
を有する、
項目21に記載の方法。
[項目23]
前記特定の行列演算に関連付けられた前記1つまたは複数の行列オペランドを受信する段階は、
前記1つまたは複数の行列オペランドに関連付けられた行列データをメモリから受信する段階と、
前記1つまたは複数の行列オペランドを前記行列データから取り出す段階と、
1つまたは複数の複数のメモリリソースブロック内に前記1つまたは複数の行列オペランドを格納する段階と、
を含む、
項目22に記載の方法。
[項目24]
前記プログラマブルな行列ルーチンは、前記特定の行列演算を実行するための命令のセットを備え、
命令の前記セットは、
前記行列データを前記メモリから受信し、前記1つまたは複数の行列オペランドを前記行列データから取り出す、命令の第1のサブセットと、
前記1つまたは複数の行列オペランドに対して前記1つまたは複数の行列計算を実行する、命令の第2のサブセットと、
を有する、
項目23に記載の方法。
[項目25]
前記複数のプログラマブルな行列ルーチンをホストコンピューティングシステムから受信する段階と、
前記プログラマブルな行列ルーチンメモリ内に、前記複数のプログラマブルな行列ルーチンを格納する段階と、
をさらに備える、
項目21から24のいずれか一項に記載の方法。
Claims (16)
- パッケージ上に集積された複数の行列処理チップであって、前記複数の行列処理チップのそれぞれは、行列命令を処理する、複数の行列処理チップと、
前記複数の行列処理チップのうち2つまたは2つ以上の行列処理チップを接続するためのチップ間リンクであって、前記2つまたは2つ以上の行列処理チップ間の通信を可能にする、チップ間リンクと、
複数の高帯域幅メモリ(HBM)モジュールであって、前記複数のHBMモジュールのうちの1つのHBMモジュールは、前記複数の行列処理チップのうちの1つの行列処理チップによって処理するための行列データを格納する、複数のHBMモジュールと、を備え、
前記行列処理チップは、
前記行列処理チップをホストプロセッサに結合するホストインタフェースと、
複数のプログラマブルな行列ルーチンの行列演算を制御および/または管理するコントローラであって、前記複数のプログラマブルな行列ルーチンのそれぞれには、行列演算を実行するための命令が含まれる、コントローラと、
前記コントローラに結合され、前記複数のプログラマブルな行列ルーチンの特定のプログラマブルな行列ルーチンからの行列乗算命令に基づいて行列乗算演算を実行するように構成された、複数の行列処理ユニットであって、前記行列乗算命令は、第1入力行列と第2入力行列とを含む行列オペランドを指定し、前記複数の行列処理ユニットは、第1入力行列と第2入力行列とを乗じることで出力行列を生成する、複数の行列処理ユニットと、を有する、
装置。 - 前記行列処理チップは、複数の行列処理クラスタを有し、
前記複数の行列処理ユニットのそれぞれは、前記複数の行列処理クラスタのいずれかに含まれ、
前記装置は、複数のクラスタコントローラであって、前記複数のクラスタコントローラのそれぞれは、前記複数の行列処理クラスタのうち対応する行列処理クラスタ内の行列演算を制御する、複数のクラスタコントローラをさらに備える、
請求項1に記載の装置。 - パッケージ上に集積された複数の行列処理チップであって、前記複数の行列処理チップのそれぞれは、行列命令を処理する、複数の行列処理チップと、
前記複数の行列処理チップのうち2つまたは2つ以上の行列処理チップを接続するためのチップ間リンクであって、前記2つまたは2つ以上の行列処理チップ間の通信を可能にする、チップ間リンクと、
複数の高帯域幅メモリ(HBM)モジュールであって、前記複数のHBMモジュールのうちの1つのHBMモジュールは、前記複数の行列処理チップのうちの1つの行列処理チップによって処理するための行列データを格納する、複数のHBMモジュールと、を備え、
前記行列処理チップは、
前記行列処理チップをホストプロセッサに結合するホストインタフェースと、
行列ルーチンの行列演算を制御および/または管理するコントローラと、
前記コントローラに結合され、前記行列ルーチンからの行列乗算命令に基づいて行列乗算演算を実行するように構成された、複数の行列処理ユニットであって、前記行列乗算命令は、第1入力行列と第2入力行列とを含む行列オペランドを指定し、前記複数の行列処理ユニットは、第1入力行列と第2入力行列とを乗じることで出力行列を生成する、複数の行列処理ユニットと、を有する装置であって、
前記行列処理チップは、複数の行列処理クラスタを有し、
前記複数の行列処理ユニットのそれぞれは、前記複数の行列処理クラスタのいずれかに含まれ、
前記装置は、複数のクラスタコントローラであって、前記複数のクラスタコントローラのそれぞれは、前記複数の行列処理クラスタのうち対応する行列処理クラスタ内の行列演算を制御する、複数のクラスタコントローラをさらに備える、
装置。 - 前記複数のクラスタコントローラのそれぞれは、前記対応する行列処理クラスタ内の1または複数の行列処理ユニットを用いて、前記行列乗算命令を実行させる、請求項2または3に記載の装置。
- 少なくとも1つの行列処理ユニットは、前記複数のHBMモジュールの前記1つのHBMモジュールから前記行列データを受信し、前記行列データは、前記行列乗算命令の前記行列オペランドに関連付けられる、請求項1に記載の装置。
- 前記少なくとも1つの行列処理ユニットは、前記行列オペランドを用いて前記行列乗算命令を実行する、請求項5に記載の装置。
- 前記行列乗算命令は、前記複数の行列処理チップの少なくとも1つによって実行される前記特定のプログラマブルな行列ルーチンの複数の命令のうちの1つである、請求項6に記載の装置。
- 前記特定のプログラマブルな行列ルーチンは、複数の前記行列処理チップによって実行される分散された行列乗算ルーチンを含む、請求項7に記載の装置。
- 少なくとも1つの前記行列処理チップは、前記複数のプログラマブルな行列ルーチンから前記特定のプログラマブルな行列ルーチンを識別する、請求項7に記載の装置。
- 前記ホストインタフェースは、前記行列処理チップをペリフェラルコンポーネントインターコネクトエクスプレスバスに結合する、請求項1に記載の装置。
- 前記特定のプログラマブルな行列ルーチンの前記複数の命令は、1つ又は複数の畳み込み演算を実行するために実行される、請求項7に記載の装置。
- 前記特定のプログラマブルな行列ルーチンは、ニューラルネットワーク内の演算に関連付けられる、請求項11に記載の装置。
- 前記コントローラは、前記複数のクラスタコントローラと共に、行列演算を制御および/または管理する、請求項4に記載の装置。
- 前記複数のHBMモジュールは、前記複数の行列処理チップの第1行列処理チップと結合した4つのHBMモジュールと、前記複数の行列処理チップの第2行列処理チップと結合した別の4つのHBMモジュールとを有する、請求項1に記載の装置。
- 前記コントローラは、チップレベルコントローラを有する、請求項2または3に記載の装置。
- 前記チップレベルコントローラは、前記複数のクラスタコントローラと共に、行列演算を制御および/または管理する、請求項15に記載の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/395,654 US10228937B2 (en) | 2016-12-30 | 2016-12-30 | Programmable matrix processing engine |
US15/395,654 | 2016-12-30 | ||
JP2022063915A JP7401171B2 (ja) | 2016-12-30 | 2022-04-07 | 行列処理回路、システム、非一時的機械アクセス可能記憶媒体および方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022063915A Division JP7401171B2 (ja) | 2016-12-30 | 2022-04-07 | 行列処理回路、システム、非一時的機械アクセス可能記憶媒体および方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022177096A JP2022177096A (ja) | 2022-11-30 |
JP7379779B2 true JP7379779B2 (ja) | 2023-11-15 |
Family
ID=60673822
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017198749A Active JP7057093B2 (ja) | 2016-12-30 | 2017-10-12 | プログラマブルな行列処理エンジン |
JP2022063915A Active JP7401171B2 (ja) | 2016-12-30 | 2022-04-07 | 行列処理回路、システム、非一時的機械アクセス可能記憶媒体および方法 |
JP2022142663A Active JP7379779B2 (ja) | 2016-12-30 | 2022-09-08 | 行列処理装置 |
JP2023205119A Pending JP2024026273A (ja) | 2016-12-30 | 2023-12-05 | 行列処理装置 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017198749A Active JP7057093B2 (ja) | 2016-12-30 | 2017-10-12 | プログラマブルな行列処理エンジン |
JP2022063915A Active JP7401171B2 (ja) | 2016-12-30 | 2022-04-07 | 行列処理回路、システム、非一時的機械アクセス可能記憶媒体および方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023205119A Pending JP2024026273A (ja) | 2016-12-30 | 2023-12-05 | 行列処理装置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10228937B2 (ja) |
EP (3) | EP4321993A3 (ja) |
JP (4) | JP7057093B2 (ja) |
CN (2) | CN115659113A (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10482155B2 (en) | 2016-12-30 | 2019-11-19 | Intel Corporation | Winograd algorithm on a matrix processing architecture |
US11748625B2 (en) | 2016-12-30 | 2023-09-05 | Intel Corporation | Distributed convolution for neural networks |
US20190392297A1 (en) * | 2016-12-30 | 2019-12-26 | Intel Corporation | Deep learning hardware |
US10169296B2 (en) | 2016-12-30 | 2019-01-01 | Intel Corporation | Distributed matrix multiplication for neural networks |
US10949496B2 (en) | 2016-12-30 | 2021-03-16 | Intel Corporation | Dimension shuffling using matrix processors |
US11055695B2 (en) * | 2017-06-12 | 2021-07-06 | Discover Financial Services | Automated system and method for testing bank identification numbers in a networked system |
US11036827B1 (en) * | 2017-10-17 | 2021-06-15 | Xilinx, Inc. | Software-defined buffer/transposer for general matrix multiplication in a programmable IC |
CN109086244A (zh) * | 2018-07-11 | 2018-12-25 | 中国人民解放军国防科技大学 | 一种基于向量处理器的矩阵卷积向量化实现方法 |
CN112213993A (zh) * | 2019-07-11 | 2021-01-12 | 航天长征化学工程股份有限公司 | 一种基于云端的控制系统和方法 |
US11520562B2 (en) | 2019-08-30 | 2022-12-06 | Intel Corporation | System to perform unary functions using range-specific coefficient sets |
US11372644B2 (en) | 2019-12-09 | 2022-06-28 | Meta Platforms, Inc. | Matrix processing instruction with optional up/down sampling of matrix |
CN111008513B (zh) * | 2019-12-16 | 2022-07-15 | 北京华大九天科技股份有限公司 | 一种平板显示版图物理验证中的单元矩阵合并方法 |
CN113536221B (zh) * | 2020-04-21 | 2023-12-15 | 中科寒武纪科技股份有限公司 | 运算方法、处理器以及相关产品 |
CN112162851B (zh) * | 2020-09-14 | 2022-12-13 | Oppo(重庆)智能科技有限公司 | dex预编译方法、装置、计算机设备及存储介质 |
US11748251B2 (en) | 2021-01-08 | 2023-09-05 | Microsoft Technology Licensing, Llc | Storing tensors in memory based on depth |
US12079301B2 (en) | 2021-01-08 | 2024-09-03 | Microsoft Technology Licensing, Llc | Performing tensor operations using a programmable control engine |
CN113377546B (zh) * | 2021-07-12 | 2022-02-01 | 中科弘云科技(北京)有限公司 | 通信避免方法、装置、电子设备和存储介质 |
KR20240092304A (ko) * | 2022-12-14 | 2024-06-24 | 리벨리온 주식회사 | 뉴럴 프로세서 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110307685A1 (en) | 2010-06-11 | 2011-12-15 | Song William S | Processor for Large Graph Algorithm Computations and Matrix Operations |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5014235A (en) * | 1987-12-15 | 1991-05-07 | Steven G. Morton | Convolution memory |
JP2620487B2 (ja) * | 1992-05-22 | 1997-06-11 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・パッケージ |
JPH05346914A (ja) * | 1992-06-16 | 1993-12-27 | Matsushita Electron Corp | ニューロプロセッサ |
US5530661A (en) * | 1994-10-05 | 1996-06-25 | Winnov | Data bit-slicing apparatus and method for computing convolutions |
US5864689A (en) * | 1995-12-05 | 1999-01-26 | Advanced Micro Devices, Inc. | Microprocessor configured to selectively invoke a microcode DSP function or a program subroutine in response to a target address value of branch instruction |
US5721945A (en) * | 1996-05-06 | 1998-02-24 | Advanced Micro Devices | Microprocessor configured to detect a DSP call instruction and to direct a DSP to execute a routine corresponding to the DSP call instruction |
JPH10222487A (ja) * | 1997-02-04 | 1998-08-21 | Hitachi Ltd | 並列計算機上でのプログラム実行方法 |
US6349379B2 (en) * | 1997-04-30 | 2002-02-19 | Canon Kabushiki Kaisha | System for executing instructions having flag for indicating direct or indirect specification of a length of operand data |
US6701028B1 (en) * | 2000-01-11 | 2004-03-02 | Applied Materials, Inc. | Method and apparatus for fast signal convolution using spline kernel |
US6944747B2 (en) * | 2002-12-09 | 2005-09-13 | Gemtech Systems, Llc | Apparatus and method for matrix data processing |
WO2005029347A2 (en) * | 2003-09-19 | 2005-03-31 | Koninklijke Philips Electronics N.V. | Integrated circuit with a plurality of communicating digital signal processors |
US7475101B2 (en) * | 2003-09-29 | 2009-01-06 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using streaming |
US7571435B2 (en) * | 2003-09-29 | 2009-08-04 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using preloading of floating point registers |
US8495122B2 (en) * | 2003-12-29 | 2013-07-23 | Xilinx, Inc. | Programmable device with dynamic DSP architecture |
US7548892B2 (en) * | 2004-04-30 | 2009-06-16 | Microsoft Corporation | Processing machine learning techniques using a graphics processing unit |
US20060161612A1 (en) * | 2005-01-14 | 2006-07-20 | International Business Machines Corporation | Method and structure for a generalized cache-register file interface with data restructuring methods for multiple cache levels and hardware pre-fetching |
US8055878B2 (en) * | 2005-02-08 | 2011-11-08 | International Business Machines Corporation | Method and structure for skewed block-cyclic distribution of lower-dimensional data arrays in higher-dimensional processor grids |
US20060265445A1 (en) * | 2005-05-20 | 2006-11-23 | International Business Machines Corporation | Method and structure for improving processing efficiency in parallel processing machines for rectangular and triangular matrix routines |
US8392487B1 (en) * | 2007-03-29 | 2013-03-05 | Compass Electro-Optical Systems Ltd | Programmable matrix processor |
US9600281B2 (en) * | 2010-07-12 | 2017-03-21 | International Business Machines Corporation | Matrix multiplication operations using pair-wise load and splat operations |
JP5346914B2 (ja) | 2010-12-27 | 2013-11-20 | 京セラドキュメントソリューションズ株式会社 | 画像形成装置 |
US9960917B2 (en) * | 2011-12-22 | 2018-05-01 | Intel Corporation | Matrix multiply accumulate instruction |
US9317482B2 (en) * | 2012-10-14 | 2016-04-19 | Microsoft Technology Licensing, Llc | Universal FPGA/ASIC matrix-vector multiplication architecture |
JP5951570B2 (ja) * | 2013-09-13 | 2016-07-13 | 株式会社東芝 | 行列演算装置 |
US10061747B2 (en) * | 2014-05-07 | 2018-08-28 | Seagate Technology Llc | Storage of a matrix on a storage compute device |
US10255547B2 (en) * | 2014-12-04 | 2019-04-09 | Nvidia Corporation | Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system |
US9996350B2 (en) * | 2014-12-27 | 2018-06-12 | Intel Corporation | Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array |
US9606934B2 (en) * | 2015-02-02 | 2017-03-28 | International Business Machines Corporation | Matrix ordering for cache efficiency in performing large sparse matrix operations |
US20160239706A1 (en) * | 2015-02-13 | 2016-08-18 | Qualcomm Incorporated | Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks |
US9953394B2 (en) * | 2015-02-26 | 2018-04-24 | Tata Consultancy Services Limited | Methods and systems for designing correlation filter |
US9965318B2 (en) * | 2015-03-16 | 2018-05-08 | Tata Consultancy Services Limited | Concurrent principal component analysis computation |
US10198401B2 (en) | 2016-12-30 | 2019-02-05 | Intel Corporation | Max pooling in a matrix processing architecture |
US20180188972A1 (en) | 2016-12-30 | 2018-07-05 | Intel Corporation | Matrix storage using data shifting memory |
US10169296B2 (en) | 2016-12-30 | 2019-01-01 | Intel Corporation | Distributed matrix multiplication for neural networks |
US10482155B2 (en) | 2016-12-30 | 2019-11-19 | Intel Corporation | Winograd algorithm on a matrix processing architecture |
US10949496B2 (en) | 2016-12-30 | 2021-03-16 | Intel Corporation | Dimension shuffling using matrix processors |
US11748625B2 (en) | 2016-12-30 | 2023-09-05 | Intel Corporation | Distributed convolution for neural networks |
-
2016
- 2016-12-30 US US15/395,654 patent/US10228937B2/en active Active
-
2017
- 2017-10-12 JP JP2017198749A patent/JP7057093B2/ja active Active
- 2017-12-18 EP EP23219551.1A patent/EP4321993A3/en active Pending
- 2017-12-18 EP EP22195212.0A patent/EP4120071A1/en active Pending
- 2017-12-18 EP EP17208110.1A patent/EP3343356A1/en active Pending
-
2018
- 2018-01-02 CN CN202211088794.2A patent/CN115659113A/zh active Pending
- 2018-01-02 CN CN201810002887.6A patent/CN108268425B/zh active Active
-
2019
- 2019-01-31 US US16/264,483 patent/US10896039B2/en active Active
-
2022
- 2022-04-07 JP JP2022063915A patent/JP7401171B2/ja active Active
- 2022-09-08 JP JP2022142663A patent/JP7379779B2/ja active Active
-
2023
- 2023-12-05 JP JP2023205119A patent/JP2024026273A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110307685A1 (en) | 2010-06-11 | 2011-12-15 | Song William S | Processor for Large Graph Algorithm Computations and Matrix Operations |
Also Published As
Publication number | Publication date |
---|---|
US20180189057A1 (en) | 2018-07-05 |
US10896039B2 (en) | 2021-01-19 |
EP4321993A2 (en) | 2024-02-14 |
CN115659113A (zh) | 2023-01-31 |
CN108268425A (zh) | 2018-07-10 |
US10228937B2 (en) | 2019-03-12 |
JP7401171B2 (ja) | 2023-12-19 |
JP2018139097A (ja) | 2018-09-06 |
EP4321993A3 (en) | 2024-05-22 |
EP3343356A1 (en) | 2018-07-04 |
CN108268425B (zh) | 2023-10-13 |
US20190171450A1 (en) | 2019-06-06 |
EP4120071A1 (en) | 2023-01-18 |
JP2022177096A (ja) | 2022-11-30 |
JP7057093B2 (ja) | 2022-04-19 |
JP2024026273A (ja) | 2024-02-28 |
JP2022095843A (ja) | 2022-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7379779B2 (ja) | 行列処理装置 | |
CN108268933B (zh) | 矩阵处理架构中的最大池化 | |
US10482155B2 (en) | Winograd algorithm on a matrix processing architecture | |
US10922380B2 (en) | Distributed matrix multiplication for neural networks | |
EP3343355B1 (en) | Dimension shuffling using matrix processors | |
US20220121954A1 (en) | Distributed convolution for neural networks | |
EP3343563A1 (en) | Matrix storage using data shifting memory | |
US11562213B2 (en) | Methods and arrangements to manage memory in cascaded neural networks | |
US20230023303A1 (en) | Machine learning network implemented by statically scheduled instructions | |
CN117795496A (zh) | 可重新配置计算组构中的并行矩阵运算 | |
US20230059948A1 (en) | Kernel mapping to nodes in compute fabric | |
KR20240117476A (ko) | 컴퓨팅 아키텍처 | |
CN117222991A (zh) | 片上网络处理系统 | |
US10579335B2 (en) | Multiplier circuit for accelerated square operations | |
Liang et al. | Design of 16-bit fixed-point CNN coprocessor based on FPGA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220908 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230630 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230725 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230823 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20231003 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231010 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7379779 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |