JP2022506345A - ドット積計算機およびその演算方法 - Google Patents
ドット積計算機およびその演算方法 Download PDFInfo
- Publication number
- JP2022506345A JP2022506345A JP2021523664A JP2021523664A JP2022506345A JP 2022506345 A JP2022506345 A JP 2022506345A JP 2021523664 A JP2021523664 A JP 2021523664A JP 2021523664 A JP2021523664 A JP 2021523664A JP 2022506345 A JP2022506345 A JP 2022506345A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- value
- product
- mask
- binary
- 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.)
- Ceased
Links
- 238000004364 calculation method Methods 0.000 title abstract description 36
- 239000013598 vector Substances 0.000 claims abstract description 770
- 238000000034 method Methods 0.000 claims abstract description 65
- 230000015654 memory Effects 0.000 claims description 79
- 230000006870 function Effects 0.000 claims description 35
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000013527 convolutional neural network Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 241001465754 Metazoa Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 229910000831 Steel Inorganic materials 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000010959 steel Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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
- 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/30018—Bit or string instructions
-
- 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
Description
本特許は、米国特許出願第16/184,985号(出願日:2018年11月8日)の恩恵を主張する出願から生じる。米国特許出願第16/184,985号の内容は全て、参照により本願に組み込まれる。米国特許出願第16/184,985号の優先権をここに主張する。
Claims (40)
- 制御ベクトルのトレーリングバイナリカウントを決定するカウンタであって、前記制御ベクトルは、第1スパースベクトルの第1ビットマップ及び第2スパースベクトルの第2ビットマップに対する第1論理AND演算の第1結果に対応する、カウンタと、
前記トレーリングバイナリカウントに基づいてマスクベクトルを生成するマスク生成器と、
インタフェースであって、
前記第1ビットマップ及び前記マスクベクトルについての第2論理AND演算の第2結果に基づく前記第1スパースベクトルの第1の値にアクセスする、且つ
前記第2ビットマップおよび前記マスクベクトルについての第3論理AND演算の第3結果に基づく前記第2スパースベクトルの第2の値にアクセスするインタフェースと、
前記第1の値と前記第2の値とを乗算して、積を生成する乗算器と
を備えるドット積計算機。 - 前記第1ビットマップは、第1ベクトルの第1要素がそれぞれ、ゼロ値または非ゼロ値に相当するかを特定するためのものであり、前記第2ビットマップは、第2ベクトルの第2要素がそれぞれ、ゼロ値または非ゼロ値に相当するかを特定するためのものであり、
前記第1スパースベクトルは、第1密ベクトルの非ゼロ値に対応し、前記第2スパースベクトルは、第2密ベクトルの非ゼロ値に対応する
請求項1に記載のドット積計算機。 - インプットとしての前記第1ビットマップおよび前記第2ビットマップについての前記第1論理AND演算に基づいて前記制御ベクトルを生成する論理ゲートをさらに備える、請求項1または2に記載のドット積計算機。
- 前記マスク生成器は、最下位ビットに複数の第1二進値を含む前記マスクベクトルを生成し、前記複数の第1二進値の数は、前記トレーリングバイナリカウントに対応しており、前記マスク生成器は、第1ベクトルと同じ次元を有する前記マスクベクトルを生成する、請求項1から3のいずれか一項に記載のドット積計算機。
- 前記第2結果内の二進値の第1の数の決定であって、前記インタフェースは、二進値の前記第1の数に対応する第1アドレスに基づいて前記第1の値にアクセスする、決定と、
前記第3結果内の二進値の第2の数の決定であって、前記インタフェースは、二進値の前記第2の数に対応する第2のアドレスに基づいて前記第2の値にアクセスする、決定とを
行う要素位置決定器をさらに備える、請求項1から4のいずれか一項に記載のドット積計算機。 - 前記積を保存するストレージをさらに含む、請求項1から5のいずれか一項に記載のドット積計算機。
- 前記制御ベクトルのバイナリビットに対応する値から1を減算することにより差分ベクトルを生成する減算器と、
前記制御ベクトル及び前記差分ベクトルについての論理AND演算に対応して更新された制御ベクトルを生成し、且つ
前記更新された制御ベクトルのすべての要素が同一の二進値に対応するかを決定する、
反復制御ベクトル生成器と
をさらに備える、請求項1から6のいずれか一項に記載のドット積計算機。 - 前記更新された制御ベクトルのすべての前記要素が前記同一の二進値に対応すると、前記反復制御ベクトル生成器が決定したとき、前記インタフェースは、前記積をドット積結果として出力する、請求項7に記載のドット積計算機。
- 前記トレーリングバイナリカウントは、第1トレーリングバイナリカウントであり、前記マスクベクトルは第1マスクベクトルであり、前記積は、第1の積であり、前記更新された制御ベクトルのすべての前記要素が前記同一の二進値に対応していないと、前記反復制御ベクトル生成器が決定したとき、
前記カウンタは、前記更新された制御ベクトルの第2トレーリングバイナリカウントを決定し、
前記マスク生成器は、前記第2トレーリングバイナリカウントに対応する第2マスクベクトルを生成し、
前記インタフェースは、
前記第1ビットマップ及び前記第2マスクベクトルについての第4論理AND演算の第4結果に基づく前記第1スパースベクトルの第3の値にアクセスし、且つ
前記第2ビットマップ及び前記第2マスクベクトルについての第5論理AND演算の第5結果に基づく前記第2スパースベクトルの第4の値にアクセスし、
前記乗算器は、前記第3の値を前記第4の値と乗算して、第2の積を生成し、前記ドット積計算機は、前記第1の積を前記第2の積と合計する加算器をさらに備える請求項7または8に記載のドット積計算機。 - 前記差分ベクトルは、第1差分ベクトルであり、前記更新された制御ベクトルは、第1の更新された制御ベクトルであり、前記要素は第1要素であり、
前記減算器は、前記更新された制御ベクトルの二進数変換したものから1を減算することにより、第2差分ベクトルを生成し、
前記反復制御ベクトル生成器は、前記更新された制御ベクトル及び前記第2差分ベクトルについての論理AND演算に対応する第2の更新された制御ベクトルを生成し、
前記インタフェースは、前記第2の更新された制御ベクトルのすべての第2要素が前記同一の二進値に対応するとき、前記第1の積と前記第2の積の和をドット積結果として出力する
請求項9に記載のドット積計算機。 - コンピュータに、
実行されたとき、機械に少なくとも、制御ベクトルのトレーリングバイナリカウントを決定する手順であって、前記制御ベクトルは、第1スパースベクトルの第1ビットマップ及び第2スパースベクトルの第2ビットマップに対する第1論理AND演算の第1結果に対応する、手順と、
前記トレーリングバイナリカウントに基づいて、マスクベクトルを生成する手順と、
(A)前記第1ビットマップ及び前記マスクベクトルについての第2論理AND演算の第2結果に基づく前記第1スパースベクトルの第1の値と、(B)前記第2ビットマップ及び前記マスクベクトルについての第3論理AND演算の第3結果に基づく第2ベクトルに対応する前記第2スパースベクトルの第2の値とを乗算する手順と
を実行させるためのプログラム。 - 前記第1ビットマップは、第1ベクトルのゼロ値または非ゼロ値をそれぞれ特定し、前記第2ビットマップは、前記第2ベクトルのゼロ値または非ゼロ値をそれぞれ特定し、
前記第1スパースベクトルは、第1密ベクトルの非ゼロ値に対応し、前記第2スパースベクトルは、第2密ベクトルの非ゼロ値に対応する
請求項11に記載のプログラム。 - 前記コンピュータに、インプットとしての第1ビットマップ及び前記第2ビットマップについての前記第1論理AND演算に基づいて、前記制御ベクトルを生成する手順を実行させる、請求項11または12に記載のプログラム。
- 前記コンピュータに、最下位ビットに複数の第1二進値を含む前記マスクベクトルを生成する手順を実行させ、前記複数の第1二進値の数は前記トレーリングバイナリカウントに対応し、前記マスクベクトルは第1ベクトルと同じ次元を持つ、請求項11から13のいずれか一項に記載のプログラム。
- 前記コンピュータに、
前記第2結果内の二進値の第1の数を決定する手順と、
二進値の前記第1の数に対応する第1アドレスに基づく前記第1の値にアクセスする手順と、
前記第3結果内の二進値の第2の数を決定する手順と、
二進値の前記第2の数に対応する第2のアドレスに基づいて前記第2の値にアクセスする手順と
を実行させる、請求項11から14のいずれか一項に記載のプログラム。 - 前記コンピュータに、前記第1の値と前記第2の値との積をローカルメモリに保存する手順を実行させる、請求項11から15のいずれか一項に記載のプログラム。
- 前記コンピュータに、
前記制御ベクトルのバイナリビットに対応する値から1を減算することで差分ベクトルを生成する手順と、
前記制御ベクトル及び前記差分ベクトルについての論理AND演算に対応する更新された制御ベクトルを生成する手順と、
前記更新された制御ベクトルのすべての要素が同一の二進値に対応するかを決定する手順と
を実行させる、請求項11から16のいずれか一項に記載のプログラム。 - 前記コンピュータに、前記更新された制御ベクトルのすべての前記要素が前記同一の二進値に対応するとき、前記第1の値と前記第2の値との積をドット積結果として出力する手順を実行させる、請求項17に記載のプログラム。
- 前記トレーリングバイナリカウントは、第1トレーリングバイナリカウントであり、前記マスクベクトルは第1マスクベクトルであり、積は第1の積であり、前記更新された制御ベクトルのすべての前記要素が前記同一の二進値に対応していないとき、前記コンピュータに、
前記更新された制御ベクトルの第2トレーリングバイナリカウントを決定する手順と、
前記第2トレーリングバイナリカウントに対応する第2マスクベクトルを生成する手順と、
前記第1ビットマップ及び前記第2マスクベクトルについての第4論理AND演算の第4結果に基づく前記第1スパースベクトルの第3の値にアクセスする手順と、
前記第2ビットマップ及び前記第2マスクベクトルについての第5論理AND演算の第5結果に基づく前記第2スパースベクトルの第4の値にアクセスする手順と、
前記第3の値を前記第4の値と乗算して、第2の積を生成する手順と、
前記第1の積を前記第2の積と合計する手順と
を実行させる、請求項17または18に記載のプログラム。 - 前記差分ベクトルは第1差分ベクトルであり、前記更新された制御ベクトルは、第1の更新された制御ベクトルであり、前記要素は第1要素であり、前記コンピュータに、
前記更新された制御ベクトルの二進数変換したものから1を減算することで、第2差分ベクトルを生成する手順と、
前記更新された制御ベクトルと前記第2差分ベクトルとの間の論理AND関数に対応する第2の更新された制御ベクトルを生成する手順と、
前記第2の更新された制御ベクトルのすべての第2要素が前記同一の二進値に対応するとき、前記第1の積と前記第2の積との和をドット積結果として出力する手順と
を実行させる、請求項19に記載のプログラム。 - 2つのベクトル間のドット積を決定する方法であって、
少なくとも1つの論理回路、制御ベクトルのトレーリングバイナリカウント、第1ベクトルの第1ビットマップ及び第2ベクトルの第2ビットマップに対する第1論理AND演算の第1結果に対応する前記制御ベクトルを決定する段階と、
前記トレーリングバイナリカウントに対応するマスクベクトルを、前記少なくとも1つの論理回路を用いて、生成する段階と、
前記第1ビットマップ及び前記マスクベクトルについての第2論理AND演算の第2結果に基づいて前記第1ベクトルに対応する第1スパースベクトルの第1の値にアクセスする段階と、
前記第2ビットマップ及び前記マスクベクトルについての第3論理AND演算の第3結果に基づいて前記第2ベクトルに対応する第2スパースベクトルの第2の値にアクセスする段階と
前記第1の値と前記第2の値を、前記少なくとも1つの論理回路を用いて、乗算することで、積を生成する段階と
を備える方法。 - 前記第1ビットマップは、前記第1ベクトルの第1要素が、ゼロ値または非ゼロ値に相当するのかに対応して、前記第2ビットマップは、前記第2ベクトルの第2要素がゼロ値または非ゼロ値に相当するのかに対応し、
前記第1スパースベクトルは、前記第1ベクトルの非ゼロ値に対応し、前記第2スパースベクトルは、前記第2ベクトルの非ゼロ値に対応する
請求項21に記載の方法。 - インプットとしての第1ビットマップおよび前記第2ビットマップについての前記第1論理AND演算に基づいて、前記制御ベクトルを生成する段階をさらに備える、請求項21または22に記載の方法。
- 最下位ビットに複数の第1二進値を含む前記マスクベクトルを生成する段階であって、前記複数の第1二進値の数は、前記トレーリングバイナリカウントに対応し、前記マスクベクトルは、前記第1ベクトルと同じ次元を有する、段階をさらに備える請求項21から23のいずれか一項に記載の方法。
- 前記第2結果内の二進値の第1の数を決定する段階と、
二進値の前記第1の数に対応する第1アドレスに基づいて前記第1の値にアクセスする段階と、
前記第3結果内の二進値の第2の数を決定する段階と、
二進値の前記第2の数に対応する第2のアドレスに基づいて前記第2の値にアクセスする段階と
をさらに備える請求項21から24のいずれか一項に記載の方法。 - 前記第1の値と前記第2の値との前記積をローカルメモリに保存する段階をさらに備える請求項21から25のいずれか一項に記載の方法。
- 前記制御ベクトルのバイナリビットに対応する値から1を減算することにより差分ベクトルを生成する段階と、
前記制御ベクトルおよび前記差分ベクトルについての論理AND演算も対応する更新された制御ベクトルを生成する段階と、
前記更新された制御ベクトルのすべての要素が同一の二進値に対応するかを決定する段階と
をさらに備える請求項21から26のいずれか一項に記載の方法。 - 前記更新された制御ベクトルのすべて前記要素が、前記同一の二進値に対応するとき、前記第1の値と前記第2の値との前記積を、ドット積結果として出力する段階をさらに備える請求項27に記載の方法。
- 前記トレーリングバイナリカウントは、第1トレーリングバイナリカウントであり、前記マスクベクトルは、第1マスクベクトルであり、前記積は、第1の積であり、前記更新された制御ベクトルのすべての前記要素が前記同一の二進値に対応していないとき、
前記更新された制御ベクトルの第2トレーリングバイナリカウントを決定する段階と、
前記第2トレーリングバイナリカウントに対応する第2マスクベクトルを生成する段階と、
前記第1ビットマップおよび前記第2マスクベクトルについての第4論理AND演算の第4結果に基づく前記第1スパースベクトルの第3の値にアクセスする段階と、
前記第2ビットマップおよび前記第2マスクベクトルについての第5論理AND演算の第5結果に基づく前記第2スパースベクトルの第4の値にアクセスする段階と、
前記第3の値を前記第4の値と乗算して、第2の積を生成する段階と、
前記第1の積を前記第2の積と合計する段階と
をさらに備える請求項27または28に記載の方法。 - 前記差分ベクトルは第1差分ベクトルであり、前記更新された制御ベクトルは第1の更新された制御ベクトルであり、前記要素は第1要素であり、
前記更新された制御ベクトルの二進数変換したものから1を減算することで第2差分ベクトルを生成する段階と、
前記更新された制御ベクトルおよび前記第2差分ベクトルについての論理AND演算に対応する第2の更新された制御ベクトルを生成する段階と、
前記第2の更新された制御ベクトルのすべて第2要素が前記同一の二進値に対応するとき、前記第1の積と前記第2の積との和をドット積結果として出力する段階と
をさらに備える請求項29に記載の方法。 - 制御ベクトルのトレーリングバイナリカウントを決定するための第1手段であって、前記制御ベクトルは、第1スパースベクトルの第1ビットマップ及び第2スパースベクトルの第2ビットマップに対する第1論理AND演算の第1結果に対応する、第1手段と、
前記トレーリングバイナリカウントに基づいてマスクベクトルを生成するための第2手段と、
第3手段であって、
前記第1ビットマップ及び前記マスクベクトルについての第2論理AND演算の第2結果に基づく前記第1スパースベクトルの第1の値にアクセスするため、および
前記第2ビットマップおよび前記マスクベクトルについての第3論理AND演算の第3結果に基づく前記第2スパースベクトルの第2の値にアクセスするための第3手段と、
前記第1の値と前記第2の値とを乗算して、積を生成するための第4手段と
を備えるドット積計算機。 - 前記第1ビットマップは、第1ベクトルの第1要素がそれぞれ、ゼロ値または非ゼロ値に相当するかを特定するためのものであり、前記第2ビットマップは、第2ベクトルの第2要素がそれぞれ、ゼロ値または非ゼロ値に相当するかを特定するためのものであり、
前記第1スパースベクトルは、第1密ベクトルの非ゼロ値に対応し、前記第2スパースベクトルは、第2密ベクトルの非ゼロ値に対応する
請求項31に記載のドット積計算機。 - インプットとしての前記第1ビットマップおよび前記第2ビットマップについての前記第1論理AND演算に基づく前記制御ベクトルを生成するための第5手段をさらに備える、請求項31または32に記載のドット積計算機。
- 前記第2手段は、最下位ビットに複数の第1二進値を含む前記マスクベクトルを生成するための手段を含んで、前記複数の第1二進値の数は、前記トレーリングバイナリカウントに対応しており、前記第2手段は、第1ベクトルと同じ次元を有する前記マスクベクトルを生成するための手段を含む、請求項31から33のいずれか一項に記載のドット積計算機。
- 前記第2結果内の二進値の第1の数の決定であって、前記第3手段は、二進値の前記第1の数に対応する第1アドレスに基づいて前記第1の値にアクセスするための手段を含む、決定と、
前記第3結果内の二進値の第2の数の決定であって、前記第3手段は、二進値の前記第2の数に対応する第2のアドレスに基づいて前記第2の値にアクセスするための手段を含む、決定と
を行う第6手段をさらに備える、請求項31から34のいずれか一項に記載のドット積計算機。 - 前記積を保存する第7手段をさらに含む、請求項31から35のいずれか一項に記載のドット積計算機。
- 前記制御ベクトルのバイナリビットに対応する値から1を減算することにより差分ベクトルを生成するための第8手段と、
前記制御ベクトル及び前記差分ベクトルについての論理AND演算に対応して更新された制御ベクトルを生成するため、且つ
前記更新された制御ベクトルのすべての要素が同一の二進値に対応するかを決定するための、
第9手段と
をさらに備える、請求項31から36のいずれか一項に記載のドット積計算機。 - 反復制御ベクトル生成器が、前記更新された制御ベクトルのすべての前記要素が前記同一の二進値に対応すると決定したとき、前記第3手段は、前記積をドット積結果として出力するための手段を含む、請求項37に記載のドット積計算機。
- 前記トレーリングバイナリカウントは、第1トレーリングバイナリカウントであって、前記マスクベクトルは第1マスクベクトルであって、前記積は、第1の積であって、反復制御ベクトル生成器が前記更新された制御ベクトルのすべての前記要素が前記同一の二進値に対応していないと決定したとき、
前記第1手段は、前記更新された制御ベクトルの第2トレーリングバイナリカウントを決定するための手段を含み、
前記第2手段は、前記第2トレーリングバイナリカウントに対応する第2マスクベクトルを生成するための手段を含み、
前記第3手段は、
前記第1ビットマップ及び前記第2マスクベクトルについての第4論理AND演算の第4結果に基づく前記第1スパースベクトルの第3の値にアクセスするための、および
前記第2ビットマップ及び前記第2マスクベクトルについての第5論理AND演算の第5結果に基づく前記第2スパースベクトルの第4の値にアクセスするための手段を含み、
前記第4手段は、前記第3の値を前記第4の値と乗算して、第2の積を生成するための手段を含み、前記ドット積計算機は、
前記第1の積を前記第2の積と合計する加算器をさらに備える
請求項37または38に記載のドット積計算機。 - 前記差分ベクトルは、第1差分ベクトルであり、前記更新された制御ベクトルは、第1の更新された制御ベクトルであり、前記要素は第1要素であり、
前記第8手段は、前記更新された制御ベクトルの二進数変換したものから1を減算することにより、第2差分ベクトルを生成するための手段を含み、
前記第9手段は、前記更新された制御ベクトル及び前記第2差分ベクトルについての論理AND演算に対応する第2の更新された制御ベクトルを生成するための手段を含み、
前記第3手段は、前記第2の更新された制御ベクトルのすべての第2要素が前記同一の二進値に対応するとき、前記第1の積と前記第2の積の和をドット積結果として出力するための手段を含む
請求項39に記載のドット積計算機。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/184,985 | 2018-11-08 | ||
US16/184,985 US10768895B2 (en) | 2018-11-08 | 2018-11-08 | Dot product calculators and methods of operating the same |
PCT/EP2019/080136 WO2020094586A1 (en) | 2018-11-08 | 2019-11-04 | Dot product calculators and methods of operating the same |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022506345A true JP2022506345A (ja) | 2022-01-17 |
JPWO2020094586A5 JPWO2020094586A5 (ja) | 2022-10-20 |
Family
ID=68461801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021523664A Ceased JP2022506345A (ja) | 2018-11-08 | 2019-11-04 | ドット積計算機およびその演算方法 |
Country Status (7)
Country | Link |
---|---|
US (3) | US10768895B2 (ja) |
EP (1) | EP3877839A1 (ja) |
JP (1) | JP2022506345A (ja) |
KR (1) | KR20210092751A (ja) |
CN (1) | CN113330421B (ja) |
DE (1) | DE112019005586T5 (ja) |
WO (1) | WO2020094586A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018182445A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Method and apparatus for converting scatter control elements to gather control elements used to sort vector data elements |
WO2019000300A1 (zh) * | 2017-06-29 | 2019-01-03 | 北京清影机器视觉技术有限公司 | 二维数据匹配方法、装置和逻辑电路 |
US10768895B2 (en) | 2018-11-08 | 2020-09-08 | Movidius Limited | Dot product calculators and methods of operating the same |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
EP3938888A1 (en) * | 2019-03-15 | 2022-01-19 | INTEL Corporation | Systolic disaggregation within a matrix accelerator architecture |
WO2020190802A1 (en) | 2019-03-15 | 2020-09-24 | Intel Corporation | Compression techniques |
US20200302282A1 (en) * | 2019-03-19 | 2020-09-24 | Cirrus Logic International Semiconductor Ltd. | Neurons for artificial neural networks |
US11741349B2 (en) * | 2019-10-31 | 2023-08-29 | Arm Limited | Performing matrix-vector multiply operations for neural networks on electronic devices |
US11500680B2 (en) * | 2020-04-24 | 2022-11-15 | Alibaba Group Holding Limited | Systolic array-friendly data placement and control based on masked write |
US11789646B2 (en) | 2021-09-24 | 2023-10-17 | Intel Corporation | Methods, apparatus, and articles of manufacture to increase data reuse for multiply and accumulate (MAC) operations |
US11669489B2 (en) * | 2021-09-30 | 2023-06-06 | International Business Machines Corporation | Sparse systolic array design |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62233884A (ja) * | 1986-04-04 | 1987-10-14 | Hitachi Ltd | ベクトル・プロセツサ |
JP2011511986A (ja) * | 2008-02-11 | 2011-04-14 | リニア アルジェブラ テクノロジーズ リミテッド | プロセッサ |
WO2018080624A1 (en) * | 2016-10-27 | 2018-05-03 | Google Llc | Exploiting input data sparsity in neural network compute units |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080071851A1 (en) * | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
US20160358069A1 (en) * | 2015-06-03 | 2016-12-08 | Samsung Electronics Co., Ltd. | Neural network suppression |
US10223359B2 (en) * | 2016-10-10 | 2019-03-05 | The Directv Group, Inc. | Determining recommended media programming from sparse consumption data |
US20180189675A1 (en) * | 2016-12-31 | 2018-07-05 | Intel Corporation | Hardware accelerator architecture and template for web-scale k-means clustering |
US10146738B2 (en) * | 2016-12-31 | 2018-12-04 | Intel Corporation | Hardware accelerator architecture for processing very-sparse and hyper-sparse matrix data |
US10096134B2 (en) * | 2017-02-01 | 2018-10-09 | Nvidia Corporation | Data compaction and memory bandwidth reduction for sparse neural networks |
US10171084B2 (en) * | 2017-04-24 | 2019-01-01 | The Regents Of The University Of Michigan | Sparse coding with Memristor networks |
US20180330235A1 (en) * | 2017-05-15 | 2018-11-15 | National Taiwan University | Apparatus and Method of Using Dual Indexing in Input Neurons and Corresponding Weights of Sparse Neural Network |
TWI684141B (zh) | 2017-10-12 | 2020-02-01 | 英屬開曼群島商意騰科技股份有限公司 | 人工神經元中以非零封包加速乘法運算的裝置及方法 |
KR20190106010A (ko) * | 2018-03-07 | 2019-09-18 | 삼성전자주식회사 | 전자 장치 및 머신 러닝 수행 방법 |
US10768895B2 (en) | 2018-11-08 | 2020-09-08 | Movidius Limited | Dot product calculators and methods of operating the same |
-
2018
- 2018-11-08 US US16/184,985 patent/US10768895B2/en active Active
-
2019
- 2019-11-04 WO PCT/EP2019/080136 patent/WO2020094586A1/en unknown
- 2019-11-04 EP EP19798070.9A patent/EP3877839A1/en active Pending
- 2019-11-04 DE DE112019005586.0T patent/DE112019005586T5/de active Pending
- 2019-11-04 KR KR1020217015961A patent/KR20210092751A/ko unknown
- 2019-11-04 JP JP2021523664A patent/JP2022506345A/ja not_active Ceased
- 2019-11-04 CN CN201980088183.8A patent/CN113330421B/zh active Active
-
2020
- 2020-08-24 US US17/001,455 patent/US11023206B2/en active Active
-
2021
- 2021-04-28 US US17/243,282 patent/US11656845B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62233884A (ja) * | 1986-04-04 | 1987-10-14 | Hitachi Ltd | ベクトル・プロセツサ |
JP2011511986A (ja) * | 2008-02-11 | 2011-04-14 | リニア アルジェブラ テクノロジーズ リミテッド | プロセッサ |
WO2018080624A1 (en) * | 2016-10-27 | 2018-05-03 | Google Llc | Exploiting input data sparsity in neural network compute units |
Also Published As
Publication number | Publication date |
---|---|
US11023206B2 (en) | 2021-06-01 |
US20210247961A1 (en) | 2021-08-12 |
US20200387350A1 (en) | 2020-12-10 |
WO2020094586A1 (en) | 2020-05-14 |
US20200150926A1 (en) | 2020-05-14 |
CN113330421B (zh) | 2024-01-16 |
CN113330421A (zh) | 2021-08-31 |
US11656845B2 (en) | 2023-05-23 |
KR20210092751A (ko) | 2021-07-26 |
DE112019005586T5 (de) | 2021-12-16 |
EP3877839A1 (en) | 2021-09-15 |
US10768895B2 (en) | 2020-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2022506345A (ja) | ドット積計算機およびその演算方法 | |
US20200364552A1 (en) | Quantization method of improving the model inference accuracy | |
CN108229648B (zh) | 匹配存储器中数据位宽的卷积计算方法和装置、设备、介质 | |
US10268451B2 (en) | Method and processing apparatus for performing arithmetic operation | |
CN109521994B (zh) | 乘法硬件电路、片上系统及电子设备 | |
JP2019102084A (ja) | ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置 | |
TW202207052A (zh) | 用以解碼零值壓縮資料向量之方法、系統、製造物品及設備 | |
TW201737115A (zh) | 一種機器學習系統的訓練方法和訓練系統 | |
US8681166B1 (en) | System and method for efficient resource management of a signal flow programmed digital signal processor code | |
WO2019215907A1 (ja) | 演算処理装置 | |
WO2022126116A1 (en) | Data-type-aware clock-gating | |
TWI775210B (zh) | 用於卷積運算的資料劃分方法及處理器 | |
CN111033462A (zh) | 在基于处理器的系统中使用矩阵处理器提供高效浮点运算 | |
JP2022512211A (ja) | 画像処理方法、装置、車載演算プラットフォーム、電子機器及びシステム | |
US11256940B1 (en) | Method, apparatus and system for gradient updating of image processing model | |
TW202333041A (zh) | 執行浮點運算的系統及方法 | |
US20220318604A1 (en) | Sparse machine learning acceleration | |
CN115480731A (zh) | 运算方法、装置、芯片、设备和介质 | |
CN114254563A (zh) | 数据处理方法及装置、电子设备、存储介质 | |
CN114356494A (zh) | 一种神经网络模拟器的数据处理方法、装置和终端 | |
KR20210152957A (ko) | 신경망을 위한 향상된 곱셈 누산 디바이스 | |
CN108229668B (zh) | 基于深度学习的运算实现方法、装置和电子设备 | |
EP3923132A1 (en) | Device for performing multiply/accumulate operations | |
CN116402090B (zh) | 神经网络计算图的处理方法、装置和设备 | |
CN113642712B (zh) | 一种基于深度学习的点云数据处理器及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20221012 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20221012 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230726 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230808 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231026 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20240123 |
|
A045 | Written measure of dismissal of application [lapsed due to lack of payment] |
Free format text: JAPANESE INTERMEDIATE CODE: A045 Effective date: 20240528 |