JP2023542261A - 複数のアキュムレータを有するシストリックアレイセル - Google Patents

複数のアキュムレータを有するシストリックアレイセル Download PDF

Info

Publication number
JP2023542261A
JP2023542261A JP2022570187A JP2022570187A JP2023542261A JP 2023542261 A JP2023542261 A JP 2023542261A JP 2022570187 A JP2022570187 A JP 2022570187A JP 2022570187 A JP2022570187 A JP 2022570187A JP 2023542261 A JP2023542261 A JP 2023542261A
Authority
JP
Japan
Prior art keywords
input
submatrix
multiplication
sub
matrix
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.)
Pending
Application number
JP2022570187A
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2023542261A publication Critical patent/JP2023542261A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5443Sum of products
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8046Systolic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3884Pipelining
    • G06F2207/3892Systolic array

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Abstract

本明細書は、ハードウェア処理ユニットのシストリックアレイについて記載する。一局面では、行列計算ユニットは、シストリックアレイに配置された複数のセルを含む。各セルは、入力行列の要素または部分行列の積を求めるよう構成される乗算回路と、入力累算値と乗算回路によって出力された積との和を求めるよう構成される加算回路と、加算回路の出力に接続される複数のアキュムレータと、アキュムレータから、加算回路によって出力された和を受け取るための所与のアキュムレータを選択するよう構成されるコントローラ回路とを含む。

Description

関連出願の参照
本出願は、米国特許法119条の下、2020年11月30日提出の米国仮出願63/119,556への優先権の利益を主張し、その全体が参照により本明細書に組み込まれる。
技術分野
本明細書は、ハードウェア処理ユニットのシストリックアレイに関する。
背景
シストリックアレイは、データを計算し、ネットワークを介して渡す処理ユニットのネットワークである。シストリックアレイ内のデータは、処理ユニット間をパイプライン方式で流れ、各処理ユニットは、その上流の隣接する処理ユニットから受信したデータに基づいて部分的な結果を独立して計算し得る。セルとも称され得る処理ユニットは、データを上流処理ユニットから下流処理ユニットに渡すよう、共に結線され得る。シストリックアレイは、機械学習適用例において、例えば、行列乗算を実行するために、使用される。
概要
概して、本明細書で説明する主題の1つの革新的な局面は、シストリックアレイに配置された複数のセルを含む行列計算ユニットにおいて具現化され得る。各セルは、入力行列の要素または部分行列の積を求めるよう構成される乗算回路と、入力累算値と乗算回路によって出力された積との和を求めるよう構成される加算回路と、加算回路の出力に接続される複数のアキュムレータと、複数のアキュムレータから、加算回路によって出力された和を受け取るための所与のアキュムレータを選択するよう構成されるコントローラ回路とを含む。
これらおよび他の実現例は、各々、以下の特徴のうちの1つ以上を任意選択で含み得る。いくつかの局面では、コントローラ回路は、セルによって受け取られたセレクタデータに基づいて、乗算回路によって求められる複数の積の各々について、所与のアキュムレータを選択するよう構成される。
いくつかの局面では、各セルは、第1の部分行列を受け取るよう構成される第1の入力レジスタと、第2の部分行列を受け取るよう構成される第2の入力レジスタとを含み、乗算回路によって求められる積は、第1の部分行列と第2の部分行列との積を含む。各セルは、セレクタデータを受け取るよう構成される1つ以上のセレクタレジスタをさらに含み得る。コントローラ回路は、セレクタデータに基づいて、乗算回路によって求められる複数の積の各々について、所与のアキュムレータを選択するよう構成され得る。
いくつかの局面では、セレクタデータは、第1の部分行列内の非ゼロ要素の位置を示す、第1の部分行列のスパース性パターンを定義するデータを含み得る。セレクタデータは、第2の部分行列内の非ゼロ要素の位置を示す、第2の部分行列のスパース性パターンを定義するデータを含み得る。
いくつかの局面では、セレクタデータは、第1の部分行列が属する第1のサブ乗算を示し得る。セレクタデータは、第2の部分行列が属する第2のサブ乗算を示し得る。第1のサブ乗算が第2のサブ乗算と一致するとき、コントローラ回路は、第1のサブ乗算および第2のサブ乗算に対応する所与のアキュムレータを選択するよう構成され得る。第1のサブ乗算が第2のサブ乗算と一致しないとき、コントローラは、複数のアキュムレータのすべてへの書き込み入力を無効にするよう構成され得る。
いくつかの局面では、各アキュムレータは、入力行列の所与のセットについて加算回路によって出力された値を累算する。
概して、本明細書に記載される主題の、別の革新的な局面は、データ処理セルにおいて具現化され得る。データ処理セルは、入力行列の部分行列の積を求めるよう構成される乗算回路と、入力累算値と乗算回路によって出力された積との和を求めるよう構成される加算回路と、加算回路の出力に接続される複数のアキュムレータと、複数のアキュムレータから、加算回路によって出力された和を受け取る所与のアキュムレータを選択するよう構成されるコントローラ回路とを含み得る。
これらおよび他の実現例は、各々、以下の特徴のうちの1つ以上を任意選択で含み得る。いくつかの局面では、コントローラ回路は、データ処理セルによって受け取られたセレクタデータに基づいて、乗算回路によって求められる複数の積の各々について、所与のアキュムレータを選択するよう構成される。
いくつかの局面では、データ処理セルは、第1の部分行列を受け取るよう構成される第1の入力レジスタと、第2の部分行列を受け取るよう構成される第2の入力レジスタとを含む。乗算回路によって求められる積は、第1の部分行列と第2の部分行列との積を含む。データ処理セルは、セレクタデータを受け取るよう構成される1つ以上のセレクタレジスタを含み得る。コントローラ回路は、セレクタデータに基づいて、乗算回路によって求められる複数の積の各々について、所与のアキュムレータを選択するよう構成され得る。
いくつかの局面では、セレクタデータは、第1の部分行列内の非ゼロ要素の位置を示す、第1の部分行列のスパース性パターンを定義するデータを含む。セレクタデータは、第2の部分行列内の非ゼロ要素の位置を示す、第2の部分行列のスパース性パターンを定義するデータを含み得る。
いくつかの局面では、セレクタデータは、第1の部分行列が属する第1のサブ乗算を示す。セレクタデータは、第2の部分行列が属する第2のサブ乗算を示し得る。第1のサブ乗算が第2のサブ乗算と一致するとき、コントローラは、第1のサブ乗算および第2のサブ乗算に対応する所与のアキュムレータを選択するよう構成され得る。第1のサブ乗算が第2のサブ乗算と一致しないとき、コントローラは、複数のアキュムレータのすべてへの書き込み入力を無効にするよう構成され得る。
いくつかの局面では、複数のアキュムレータの各アキュムレータは、入力行列の所与のセットについて加算回路によって出力された値を累算する。
これらおよび他の実現例は、各々、以下の特徴のうちの1つ以上を任意選択で含み得る。いくつかの局面では、行列を乗算するための方法は、セルの第1の入力レジスタが、第1の入力部分行列を受け取ることと、セルの第2の入力レジスタが、第2の入力部分行列を受け取ることと、(i)第1の入力部分行列と第2の入力部分行列との積と(ii)所与のアキュムレータの現在の累算値との和を受け取るよう、セルのコントローラが、セルの複数のアキュムレータから所与のアキュムレータを選択することと、セルの乗算回路が、第1の入力行列と第2の入力行列との積を生成することと、セルの加算回路が、第1の入力行列と第2の入力行列との積を現在の累算値に加算することによって、更新された累算値を生成することと、更新された累算値を所与のアキュムレータに記憶することとを含む。
これらおよび他の実現例は、各々、以下の特徴のうちの1つ以上を任意選択で含み得る。いくつかの局面では、乗算回路によって求められる積は、第1の部分行列と第2の部分行列との積を含む。いくつかの局面は、セルの1つ以上のセレクタレジスタが、セレクタデータを受け取ることを含む。所与のアキュムレータを選択することは、セレクタデータに基づいて所与のアキュムレータを選択することを含み得る。
いくつかの局面では、セレクタデータは、第1の部分行列内の非ゼロ要素の位置を示す、第1の入力部分行列のスパース性パターンを定義するデータを含む。セレクタデータは、第2の部分行列内の非ゼロ要素の位置を示す、第2の入力部分行列のスパース性パターンを定義するデータを含む。
いくつかの局面では、セレクタデータは、第1の入力部分行列が属する第1のサブ乗算を示す。セレクタデータは、第2の入力部分行列が属する第2のサブ乗算を示し得る。第1のサブ乗算が第2のサブ乗算と一致する場合、コントローラは、第1のサブ乗算および第2のサブ乗算に対応する所与のアキュムレータを選択し得る。第1のサブ乗算が第2のサブ乗算と一致しない場合、コントローラは、複数のアキュムレータのすべてへの書き込み入力を無効にする。
いくつかの局面では、複数のアキュムレータの各アキュムレータは、入力行列の所与のセットについて加算回路によって出力された値を累算する。
この明細書において記載される主題は、以下の利点の1つ以上を実現するように特定の実施の形態において実現され得る。本明細書に記載されるシストリックアレイセルは、複数のアキュムレータと、セルが様々な異なる行列乗算計算を実行することを可能にするコントローラ回路とを含み得る。これは、シストリックアレイ内のさらなる柔軟性を提供し、より少ないハードウェアを使用しながら行列計算の効率を増加させる。例えば、コントローラ回路および複数のアキュムレータの使用は、疎行列に対して実行される演算が、密行列に対してそれら演算を直接実行するよりも高速かつ効率的に実行されることを可能にし得る。コントローラ回路および複数のアキュムレータはまた、セルが、異なるスパース性パターン、例えば、部分行列およびタイル共有を伴う「nのうちの1」のパターン上で行列計算を行うことも可能にする。
前述の主題の様々な特徴および利点は、図に関して以下で説明される。さらなる特徴および利点は、本明細書に記載される主題および特許請求の範囲から明らかである。
行列計算ユニットを含む例示的な処理システムを示す。 行列計算ユニットを含む例示的なアーキテクチャを示す。 シストリックアレイ内のセルの例示的なアーキテクチャを示す。 行列乗算を実行するための例示的なプロセスのフロー図である。
様々な図面における同様の参照番号および名称は、同様の要素を示す。
詳細な説明
概して、本文書は、複数のアキュムレータを含むセルのシストリックアレイを説明する。セルは、計算を実行するための計算ユニット、例えば乗算および/または加算回路を含み得る。例えば、シストリックアレイは、入力行列に対して行列-行列乗算を実行し得、各セルは、各入力行列の一部の部分的な行列積を求め得る。セルのシストリックアレイは、処理システム、例えば、機械学習モデルをトレーニングおよび/または機械学習計算を実行するために使用される専用機械学習プロセッサ、グラフィックス処理ユニット(GPU)、または行列乗算を実行する別の適切な処理システムの行列計算ユニットの一部とし得る。
シストリックアレイは、各セルが入力行列の要素の一部の積の部分和を計算する出力固定(output stationary)行列乗算技術を実行し得る。出力固定技術では、入力行列の要素は、シストリックアレイの行を横切って、または列を横切って、反対または直交方向にシフトされ得る。セルは、2つの部分行列を受け取るたびに、それら部分行列の積を求め、2つの入力部分行列のそのセルの部分について当該セルによって求められた積のすべての部分和を累算する。
シストリックアレイセルは、コントローラ、例えば、制御回路と、シストリックアレイが、異なるスパース性パターンを有する異なる行列に対する演算などの様々な行列演算をサポートすることを可能にする、複数のアキュムレータとを含み得る。スパース性パターンは、行列内の非ゼロ要素の数を示し、「yのうちのx」のスパース性パターンとして表すことができ、ここでxは非ゼロ要素の最大数であり、yは要素の総数である。例えば、「4のうちの1」のスパース性パターンは、行列が4つの要素を含み、要素のうちの多くとも1つが非ゼロであることを示し得る。コントローラは、セルによって受け取られたセレクタデータに基づいて、どのアキュムレータにおいて積が累算されるかを制御し得る。たとえば、セレクタデータは、部分行列のスパース性データと、部分行列内の非ゼロ要素を識別するデータとを含み得る。このデータに基づいて、コントローラは、アキュムレータのうちの1つが非ゼロ要素と別の行列要素との積を累算することを可能にし得る。
シストリックアレイは、機械学習モデルをトレーニングし、機械学習計算を実行するときに、疎行列をより効率的に処理するよう適合され、その結果、密行列に対して直接同じまたは同様の計算を実行するよりも、より少ない計算リソースを使用して、より高速なトレーニングおよび計算をもたらす。複数のアキュムレータおよび制御回路を含めることは、シストリックアレイのハードウェアを調整する必要なく、異なるスパース性パターンを有する行列を動的に、効率的に取り扱う柔軟性を提供する。代わりに、制御回路および制御入力を用いて、入力行列のスパース性パターンに基づいて、各計算に対して適切なアキュムレータを選択し得、それは、異なるスパース性パターンをより効率的に処理するための動的柔軟性を提供する。
図1は、行列計算ユニット112を含む例示的な処理システム100を示す。システム100は、複数のアキュムレータを有するセルのシストリックアレイを有する行列計算ユニット112を実現し得るシステムの一例である。
システム100は、1つ以上の計算コア103を含み得るプロセッサ102を含む。各計算コア103は、複数のアキュムレータを有するセルのシストリックアレイを使用して行列-行列乗算を実行するために使用され得る行列計算ユニット112を含み得る。システム100は、専用ハードウェアチップの形態であり得る。
いくつかの実現例では、計算コア103またはそれの別の構成要素は、行列を制御情報とともに行列計算ユニット112に送り得る。制御情報は、行列計算ユニット112によって実行されるべき動作を定義し得る。制御情報はまた、行列計算ユニット112のシストリックアレイを通るデータフローを定義するかまたは別様に制御し得る。たとえば、制御情報は、各入力行列の個々の要素または部分行列がシストリックアレイを通してシフトされるべきかどうかを定義し得る。部分行列の場合、制御情報は、例えば、2×2、2×4といった部分行列の次元、適切な場合には部分行列のスパース性パターン、および/または各部分行列の非ゼロ要素を定義し得る。より大きな入力行列の一部である、単一の要素を有する部分行列、例えば1×1部分行列も、行列要素と称され得る。各部分行列に対してスパース性パターンおよび非ゼロ要素を定義する情報は、以下により詳細に説明されるように、シストリックアレイを通して、例えば部分行列とともに、シフトされ得る。
各行列計算ユニット112は、機械学習モデルのトレーニングまたは使用中に行列乗算計算を実行するために使用され得る。例えば、行列乗算は、深層ニューラルネットワークモデルなどの深層学習モデルのトレーニングおよび使用中に実行される一般的な計算である。行列計算ユニット112のシストリックアレイは、機械学習モデルをトレーニングし、機械学習計算を実行するときに、疎行列をより効率的に処理するよう適合され、その結果、密行列に対して直接同じまたは同様の計算を実行するよりも、より少ない計算リソースを使用して、より高速なトレーニングおよび計算をもたらす。深層学習モデルの多くの行列計算にわたって集約されると、これは実質的な性能改善をもたらす。
図2は、行列計算ユニットを含む例示的なアーキテクチャを示す。行列計算ユニットは、2次元シストリックアレイ206である。2次元シストリックアレイ206は、正方形アレイとし得る。アレイ206は、複数のセル204を含む。いくつかの実現例では、シストリックアレイ206の第1の次元220はセルの列に対応し、シストリックアレイ206の第2の次元222はセルの行に対応する。シストリックアレイ206は、列よりも多くの行、行よりも多くの列、または等しい数の列および行を有し得る。したがって、シストリックアレイ206は、正方形以外の形状を有し得る。図1の行列計算ユニット112は、シストリックアレイ206として実現し得る。
シストリックアレイ206は、行列乗算または他の計算、例えば畳み込み、相関、またはデータ分類に使用し得る。例えば、シストリックアレイ206は、ニューラルネットワーク計算に使用し得る。
シストリックアレイ206は、値ローダ202および値ローダ208を含む。値ローダ202は、部分行列をアレイ206の行に送り得、値ローダ208は、部分行列をアレイの列に送り得る。しかしながら、いくつかの他の実現例では、値ローダ202および208は、部分行列をシストリックアレイ206の列の両側に送り得る。別の例では、値ローダ202は、シストリックアレイ206の行を横切って部分行列を送り得、値ローダは、シストリックアレイ206の列を横切って部分行列を送り得、またはその逆である。ニューラルネットワークの例では、値ローダ202は、活性化入力をアレイ206の行(または列)に送り得、値ローダ208は、重み入力を値ローダ202のそれとは反対側(または直交側)からアレイ206の行(または列)に送り得る。さらに別の例では、値ローダ202は、アレイ206を対角線状に横切って活性化入力を送り得、値ローダ208は、アレイ206を対角線状に横切って、たとえば値ローダ202のそれとは反対方向に、または値ローダ202の方向と直交する方向に、重み入力を送り得る。
値ローダ202は、統合バッファまたは他の適切なソースから部分行列を受け取り得る。各値ローダ202は、対応する部分行列をアレイ206の別個の最も左のセルに送り得る。最も左のセルは、アレイ206の最も左の列に沿ったセルであり得る。例えば、値ローダ202Aは、セル214に、ある部分行列を送り得る。値ローダ202Aは、その部分行列を隣接する値ローダにも送り得、当該部分行列は、アレイ206の別の最も左のセルにおいて使用され得る。これは、部分行列がアレイ206の別の特定のセルで使用するためにシフトされることを可能にする。
値ローダ208も、統合バッファまたは他の適切なソースから部分行列を受け取り得る。各値ローダ208は、対応する部分行列をアレイ206の別個の最も上のセルに送り得る。最も上のセルは、アレイ206の最も上の行に沿ったセルであり得る。例えば、値ローダ208Aは、セル214に、ある部分行列を送り得る。値ローダ208Aは、その部分行列を隣接する値ローダにも送り得、当該部分行列は、アレイ206の別の最も上のセルにおいて使用され得る。これは、部分行列がアレイ206の別の特定のセルで使用するためにシフトされることを可能にする。
いくつかの実現例では、ホストインターフェイスが、部分行列(たとえば活性化入力)を、アレイ206全体にわたって、ある次元に沿って、たとえば右に、シフトさせ、一方、部分行列(たとえば重み入力)を、アレイ206全体にわたって、直交次元に沿って、たとえば下に、シフトさせる。例えば、1クロックサイクルにわたって、セル214における部分行列(たとえば活性化入力)は、セル214の右にあるセル215内のレジスタにシフトし得る。同様に、セル214における部分行列(たとえば重み入力)は、セル215の下にあるセル218におけるレジスタにシフトし得る。他の例では、重み入力は、活性化入力の方向とは反対の方向(例えば、右から左)にシフトされ得る。
値ローダ202および208はまた、セレクタデータを、それらがアレイ206に送る各部分行列とともに送り得る。疎行列適用例で使用される場合、セレクタデータは、部分行列のスパース性パターンを定義するスパース性データを含み得る。そのような適用例では、部分行列の要素のうちの1つのみが非ゼロ値を有し得る。スパース性パターンは、部分行列において非ゼロ値を有し得る1つの要素の位置を示し得る。このデータはセレクタデータとともに含まれ得、なぜならば、部分行列において非ゼロ値を有することができる要素は、それにもかかわらず、ゼロの値を有する場合があるからである。
例えば、1つは活性化入力を表し、1つは重みを表す、2つの行列の積を、出力固定技術を使用して求めるために、各セルは、セル内にシフトされた行列要素の積の和を累算する。各クロックサイクルで、各セルは、所与の重み入力および所与の活性化入力を処理して、2つの入力の積を求め得る。セルは、セルのアキュムレータによって維持される累算値に各積を加算し得る。たとえば、セル215は、2つの行列要素、たとえば、第1の活性化入力および第1の重み入力、の第1の積を求め、その積をアキュムレータに記憶し得る。セル215は、活性化入力をセル216にシフトし、重み入力をセル218にシフトし得る。同様に、セル215は、セル214から第2の活性化入力を受け取り得、値ローダ208Bから第2の重み入力を受け取り得る。セル215は、第2の活性化入力と第2の重み入力との積を求め得る。セル215は、これを前の累算値に加算して、更新された累算値を生成し得る。
スパース性、タイル共有、および他の適用例の場合、セルは、セルの複数のアキュムレータの各々において値を累算し得る。セルによって受け取られる部分行列の各対について、セルは、2つの部分行列の積を求め、その積をアキュムレータのうちの1つに記憶し得る。各セルのコントローラは、以下でより詳細に説明されるように、部分行列とともにセルにシフトされたセレクタデータに基づいて適切なアキュムレータを選択し得る。
行列要素のすべてがシストリックアレイの行を通過した後、各セルは、その累算値を、行列乗算の部分的な結果としてシフトアウトし得る。これらの累算値は、次いで、機械学習モデルのトレーニングまたは使用中にさらなる計算のために使用され得る。例示的な個々のセルは、図3を参照して以下でさらに説明される。
セルは、出力を、それらの列に沿って、例えば、アレイ206内の列の底部に向かって、通過、例えばシフトさせることができる。いくつかの実現例では、各列の底部において、アレイ206は、各列からの各出力を記憶および累算するアキュムレータユニット210を含み得る。アキュムレータユニット210は、それの列の各出力を累算して、最終的な累算値を生成し得る。最終累算値は、ベクトル計算ユニットまたは他の適切な構成要素に転送され得る。
シストリックアレイ206のセル204は、隣接するセルに結線され得る。たとえば、セル215は、配線のセットを使用してセル214およびセル216に結線され得る。いくつかの実現例では、出力データをセルからアキュムレータユニット210にシフトアウトするとき、セルは、数値を単一のクロックサイクルで出力し得る。そうするために、セルは、出力値を表すために使用されるコンピュータ数値形式の各ビットに対する出力配線を有し得る。例えば、出力値が32ビット浮動小数点形式、例えば、float32またはFP32を使用して表される場合、セルは、出力値全体を単一のクロックサイクルでシフトアウトするために、32本の出力配線を有し得る。
場合によっては、計算ユニットおよび/またはセルのアキュムレータへの入力は、計算ユニットおよび/またはアキュムレータの内部精度よりも低い精度を有する。たとえば、入力行列の浮動小数点値は、たとえばbfloat16またはBF16形式で、16ビットであり得る。しかしながら、乗算回路、加算回路、および/またはアキュムレータは、より高精度の数、例えば、FP32数で動作し得る。この例では、上流セルのアキュムレータの出力は、FP32数であり得る。したがって、FP32数を1クロックサイクルで出力するために、上流セルは、下流セルへの32本の出力配線を有し得る。セル204は、他のレベルの精度を有する他の数値形式で動作し得る。
図3は、シストリックアレイ内のセルの例示的なアーキテクチャ300を示す。例えば、図2のシストリックアレイ206のセル204は、アーキテクチャ300を使用して実現され得る。セルは、2つの入力行列の行列-行列乗算を実行するために使用され得る。セルは、行列-行列乗算を実行することに関して説明されるが、セルは、他の計算、例えば、畳み込み、相関、またはデータ分類を実行するために使用され得る。
セルは、入力レジスタ302および入力レジスタ304を含む入力レジスタを含み得る。入力レジスタ302は、Aレジスタ303およびAセレクタレジスタ304を含む。Aレジスタ302は、シストリックアレイ内のセルの位置に応じて、右隣のセル(例えば、所与のセルの右に位置する隣接セル)から、または図2のシストリックアレイ206で使用される場合には別の構成要素(例えば、値ローダ208)から、入力行列の部分行列を受け取る。Aセレクタレジスタ304は、シストリックアレイ内のセルの位置に応じて、右隣のセルまたは値ローダ208から、受け取られた各部分行列について、セレクタデータを受け取るセレクタレジスタである。ニューラルネットワーク実現例では、Aレジスタ303は、重み入力行列の部分行列を受け取り得る。部分行列およびセレクタデータは、1つ以上の配線を含み得るバス330を介して受け取られる。
入力レジスタ306は、Bレジスタ307およびBセレクタレジスタ308を含む。Bレジスタ307は、シストリックアレイ内のセルの位置に応じて、左の隣接セル(例えば、所与のセルの左に位置する隣接セル)から、または別の構成要素(例えば、図2のシストリックアレイ206で使用される場合、値ローダ202)から、入力行列の部分行列を受け取る。B-セレクタレジスタ308は、シストリックアレイ内のセルの位置に応じて、左の隣接セルまたは値ローダ202から、受け取られた各部分行列について、セレクタデータを受け取るセレクタレジスタである。ニューラルネットワーク実現例では、Bレジスタ307は、活性化入力行列の部分行列を受け取り得る。部分行列およびセレクタデータは、1つ以上の配線を含み得るバス332を介して受け取られる。ニューラルネットワークなどの機械学習モデルのトレーニングおよび使用中、活性化入力は、行列の形態であり得る対応する重みによって乗算され得る。
セル300は、乗算回路312と、加算回路314と、コントローラ310と、N個のアキュムレータ316-1~316-N(Nは2以上の整数である)と、マルチプレクサ330とを含み、これらの各々はハードウェア回路において実現され得る。マルチプレクサ330は任意選択であり、セル300を含むシストリックアレイに対する適用例に応じて除外され得る。
概して、乗算回路312は、レジスタ303および306に記憶された部分行列の積を求め得る。加算回路314は、その積とアキュムレータ316のうちの1つの現在の累算値との和を求め、その和を記憶のために当該1つのアキュムレータ316に送り得る。
コントローラ310は、Aセレクタレジスタ304のセレクタデータおよび/またはBセレクタレジスタ308のセレクタデータに基づいて、積を加算すべきアキュムレータ316を選択し得る。セレクタデータに基づいてアキュムレータを選択するためにセレクタデータがどのように使用されるかの例を以下に提供する。いずれの場合も、コントローラ310は、選択されたアキュムレータ316の書き込みイネーブルをセットして、加算回路314からの書き込みを可能にし得る。例えば、コントローラ310は、選択されたアキュムレータ316の書き込みイネーブルをセットして、加算動作に対応するクロックサイクルの間に加算回路314からの書き込みを有効にする。
いくつかの実現例では、セル300は、単一のセレクタレジスタまたは2つを超えるセレクタレジスタを含み得る。例えば、1つ以上のセレクタレジスタは、コントローラ310による使用のためにセレクタデータを受け取り得る。
同様に、加算回路が、積を、選択されたアキュムレータの現在の累算値に加算することを可能にするために、コントローラ310は、マルチプレクサ330が選択されたアキュムレータ316の現在の値を入力として加算回路314に渡すように、マルチプレクサのセレクタ値をセットし得る。
入力行列のすべての要素について乗算が完了した後、各アキュムレータ316は、その累算値をセル300からシフトアウトし得る。いくつかの実現例では、図3に示すように、各アキュムレータ316は、その累算値をセル300からシフトするためのそれぞれのバス334-1~334-Nを有する。いくつかの実現例では、マルチプレクサ330または別のマルチプレクサを使用して、セル300からの各出力を1つのバス上で、たとえば一度に1つシフトし得る。
セルはまた、行列要素を、他のセルからシフトインし、他のセルにシフトアウトするためのバスを含む。例えば、セルは、左の隣接セルから行列要素を受け取るためのバス332と、行列要素を右の隣接セルにシフトするためのバス338とを含む。同様に、セルは、一番上の隣接セルから行列要素を受け取るためのバス330と、一番下の隣接セルに行列要素をシフトするためのバス340とを含む。セルはまた、一番上の隣接セルから累算値を受け取るためのバス334-1~334-Nと、累算値を一番下の隣接セルにシフトするためのバス342-1~342-Nとを含む。各バスは、配線のセットとして実現し得る。
セル300を含むシストリックアレイは、様々な行列計算適用例で使用され得る。これらの適用例では、同じ入力行列の変形にわたる複数のパスを使用して、より密な行列を処理し得る。例えば、「4のうち2」のスパース性パターンを有する行列は、「4のうち1」のスパース性パターンを有する2つの行列の和と、シストリックアレイのセルによって別々に処理されるそれらのサブパート(subpart)とに分割され得る。別の例では、「4のうち2」のスパース性パターンを有する行列は、結果の適切なシフトおよび加算を用いて、「3のうちの1」のスパース性パターンを有する2つの行列に分割されて、結合された結果を生成し得る。別の例では、一方または両方の行列のサイズを増大させて、それらのスパース性をあるパターンに適合するよう増大させ得、他方の行列を調整して、広げられていない入力の場合と同じ結果を生じさせ得る。
適用例の一例は、基本的スパース性である。本適用例では、行列は、各ブロック内に最大で1つの非ゼロ要素を有するk×1個または1×k個のブロックに分割され、すなわち、「kのうち1」のスパース性パターンである。この例では、1つの行列のみが疎であり、他方が密である場合、Aセレクタレジスタ304またはBセレクタレジスタ308の一方のみが使用されなければならない。これは、シストリックアレイに送信される必要があるデータの量を低減し、シストリックアレイによって実行される制御動作の数を低減し、より高速な、より効率的な計算をもたらし得る。一例は、「kのうち1」のスパース性を有するk×1個のブロックの行列Aを密行列B(自明な「1のうち1」のスパース性を有する1×1個のブロック)で乗算することである。この例では、出力も、k×1個のブロックから、アレイセル当たり1つのブロック、およびアキュムレータ316当たりそのブロックの1つの要素で、構築され得る。すなわち、ブロックが3×1個のブロックである場合、3つのアキュムレータ316が、3つの要素の各々に対して1つ、使用され得る。Aにおける非ゼロ要素の位置は、Aセレクタレジスタ304にシフトされたセレクタデータを使用して符号化され得、この値は、乗算結果をどのアキュムレータに加算すべきかを直接符号化し得る。
この例では、新たな1×k個のブロックがAレジスタ307にシフトされ、新たな1×1個のブロックがBレジスタ303にシフトされるたびに、コントローラ310は、セレクタデータを使用して非ゼロ値を識別し、それの対応するアキュムレータ316を選択し得る。次いで、コントローラ310は、加算回路314が積を選択されたアキュムレータ316の現在の累算値に加算し、和が選択されたアキュムレータ316に記憶されるように、選択されたアキュムレータ316の書込みイネーブルおよびマルチプレクサ303のセレクタ値をセットし得る。1×k個のブロックは値ローダ213から行に沿ってシフトされ得、1×1個のブロックは値ローダ202から行に沿ってシフトされ得る。
別の例示的な適用例は、単一のAまたはB入力要素が最大で1つの非ゼロ要素を有する小さい部分行列を表すブロック内のスパース性である。その場合、Aセレクタレジスタ304およびBセレクタレジスタ308のセレクタデータは、どの要素が非ゼロであるかを示すであろう。例えば、各要素は、2×2の部分行列であり得る。2つの部分行列の積は、多くとも1つのスカラー積で計算され得、同じ形式の別の部分行列またはすべてゼロのいずれかである。次いで、各セル300は、1つの要素がそのアキュムレータ316の各々にある出力部分行列を表す。特に、Aが値xを位置(ar,ac)に有する部分行列を表し、Bが値yを位置(br,bc)に有する部分行列を表す場合、結果は、ac≠brである場合はゼロであり、そうでない場合は値x*yを位置(ar,bc)に有する部分行列である。これは、コントローラ310によって使用されて、マルチプレクサのセレクタ値およびアキュムレータの書き込みイネーブルを、この結果として生じる部分行列をセルの現在値に加算するよう、セットし得る。
異なるスパース性パターンを適応させることによって、シストリックアレイは、行列計算をより効率的に実行し得る。例えば、これは、シストリックアレイに入力される行列を調整する必要なく、非ゼロ値に対してのみ計算が実行されることを保証し得る(か、または、少なくとも、ゼロ値を伴う計算の数を低減し得る)。
別の例示的な適用例は、複数の、より小さい乗算が、同じ、より大きいアレイ内で実行される、タイル共有である。例えば、A行列およびB行列の各行列要素は、特定のサブ乗算を割り当てられ得、各サブ乗算は異なるアキュムレータ316に入る。Aセレクタレジスタ304およびBセレクタレジスタ308のセレクタデータは、AおよびBの各要素を、その要素が属するサブ乗算でタグ付けするために使用される。レジスタ303および307にそれぞれ記憶されたA要素およびB要素が同じサブ乗算に属さない場合、アキュムレータ316の書き込みイネーブルは、コントローラ310によって無効にされ得る。同じセル内に複数のアキュムレータが存在しない場合、そのようなタイル共有は、各サブ乗算を実行するために複数のセルを使用することなしに可能ではない。したがって、同じセル内の複数のアキュムレータ、およびアキュムレータを有効化/無効化するための制御回路の使用は、同じ動作を実行するために必要とされる計算リソースの量(たとえば、セルの数)を低減し、単一のアキュムレータセルに対して著しい速度および他の性能の利点をもたらすことができる。
例えば、コントローラ310は、レジスタ303および307にシフトされた要素の各対について、2つの要素が属するサブ乗算を判断し得る。要素が同じサブ乗算に属する場合、コントローラ310は、サブ乗算に対応するアキュムレータ316が有効にされ、他のアキュムレータの書き込みイネーブルが無効にされるように、アキュムレータ316の書き込みイネーブルをセットし得る。コントローラ310はまた、加算回路314が積を対応するアキュムレータ316の現在の累算値に加算するように、マルチプレクサのセレクタ値をセットし得る。2つの要素が異なるサブ乗算に属する場合、コントローラ310は、アキュムレータ316のすべてへの書き込みイネーブルを無効にし得る。追加の論理により、同じ行列要素をサブ乗算間で共有することが可能である。
コントローラ310は、たとえば、コアまたは他の構成要素から受信された制御信号に基づいて、様々な適用例を処理するように設定可能であり得る。コントローラ310はまた、たとえば、Aセレクタレジスタ304またはBセレクタレジスタ308のセレクタデータを使用せず、積と単一のアキュムレータの現在のアキュムレータ値との和を単一のアキュムレータに送り返すことによって、単一のアキュムレータを使用して密行列のための行列計算を実行し得る。複数のアキュムレータ316と組み合わせたコントローラ310の使用は、ハードウェア変更を必要とすることなく、様々な適用例に対して最も効率的な方法で各適用例を扱う柔軟性を提供する。
図5は、行列乗算を実行するための例示的なプロセス500のフロー図である。プロセス500は、乗算ユニットのシストリックアレイの1つ以上のセルの各々によって実行され得る。プロセス500は、各セルによって複数回実行され得、各セルによって計算された結果は、最終行列乗算結果を求めるために使用され得る。
セルの第1の入力レジスタは、第1の入力部分行列を受け取る(502)。例えば、セル300のAレジスタ303は、第1の入力部分行列を受け取り得る。第1の入力部分行列は、重み入力を表し得る。第1の入力部分行列とともに、第1のセレクタレジスタ、例えば、Aセレクタレジスタ304は、第1のセレクタデータを受け取り得る。第1のセレクタデータは、例えば、第1の入力部分行列のスパース性と、第1の入力部分行列内の非ゼロ要素の位置とを定義し得る。別の例では、第1のセレクタデータは、第1の入力部分行列が属する第1のサブ乗算を示し得る。
セルの第2の入力レジスタは、第2の入力部分行列を受け取る(504)。例えば、セル300のBレジスタ307は、第2の入力部分行列を受け取り得る。第2の入力部分行列は、活性化入力を表し得る。第2の入力部分行列とともに、第2のセレクタレジスタ、例えば、Bセレクタレジスタ308は、第2のセレクタデータを受け取り得る。第2のセレクタデータは、例えば、第2の入力部分行列のスパース性と、第2の入力部分行列内の非ゼロ要素の位置とを定義し得る。別の例では、第2のセレクタデータは、第2の入力部分行列が属する第2のサブ乗算を示し得る。
セルのコントローラは、セルの複数のアキュムレータから1つ以上のアキュムレータを選択する(506)。コントローラは、第1のセレクタ値および/または第2のセレクタ値に基づいて1つ以上のアキュムレータを選択し得る。例えば、セレクタデータが、入力部分行列のうちの1つについてスパース性および非ゼロ要素の位置を定義する場合、コントローラは、非ゼロ要素に対応するアキュムレータを選択し得る。コントローラは、選択されたアキュムレータへの書き込み入力を有効にし得る。コントローラは、同じ乗算器、例えば乗算回路を、複数の加算器、例えば複数の加算回路間で共有するために、複数のアキュムレータを使用し得る。
第1のセレクタデータが、第1の入力部分行列が属する第1のサブ乗算を示し、第2のセレクタデータが、第2の入力部分行列が属する第2のサブ乗算を示す場合、コントローラは、第1のサブ乗算が第2のサブ乗算と一致するかどうかを判断し得る。そうである場合、コントローラは、一致するサブ乗算に対応するアキュムレータを選択し、選択されたアキュムレータへの書き込み入力を有効にし得る。そうでない場合、セルは乗算を実行しなくてもよく、コントローラはアキュムレータのすべてへの書き込み入力を無効にし得る。
セルの乗算回路は、第1の入力部分行列と第2の入力部分行列との積を求める(508)。たとえば、乗算回路は、一度に1つ、第1の入力部分行列の対応する要素に、第2の入力部分行列の対応する要素を乗算することによって、行列-行列乗算を実行し得る。
セルの加算回路は、積と選択されたアキュムレータの現在の累算値との和を求める(510)。例えば、コントローラは、選択されたアキュムレータの出力が加算回路の入力に渡されるように、アキュムレータの出力と加算回路への入力との間に配置されたマルチプレクサに対してセレクタ値をセットし得る。和は、記憶のために、選択されたアキュムレータに送られ得る。
本明細書において記載される主題および機能的動作の実施形態は、本明細書に開示される構造およびそれらの構造的等価物を含む、デジタル電子回路系において、有形で実施されるコンピュータソフトウェアもしくはファームウェアにおいて、コンピュータハードウェアにおいて、またはそれらの1つ以上の組合せにおいて実現され得る。本明細書に記載される主題の実施形態は、1つ以上のコンピュータプログラムとして、すなわち、データ処理装置による実行のために、または、データ処理装置の動作を制御するために有形の非一時的なプログラム担体上でエンコードされたコンピュータプログラム命令の1つ以上のモジュールとして実現され得る。代替的に、または加えて、プログラム命令は、データ処理装置による実行に対して好適な受信側装置への送信のために情報をエンコードするよう生成される、例えばマシンにより生成された電気信号、光信号、または電磁気信号などの、人為的に生成された伝搬される信号上でエンコードすることができる。コンピュータ記憶媒体は、機械可読記憶装置、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、または、それらの1つ以上の組合せであり得る。
本明細書に記載されるプロセスおよび論理フローは、入力データ上で動作し出力を生成することにより機能を実行するよう1つ以上のプログラマブルプロセッサが1つ以上のコンピュータプログラムを実行することによって実行され得る。プロセスおよび論理フローは、たとえばFPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)といった特殊目的論理回路、またはGPGPU(汎用グラフィック処理装置)によっても実行され得、装置もそれらにより実現され得る。
コンピュータプログラムの実行に好適であるプロセッサは、例として、汎用マイクロプロセッサもしくは特殊目的マイクロプロセッサもしくはその両方または任意の種類の中央処理ユニットに基づき得る。一般に、中央処理ユニットは、リードオンリメモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受取る。コンピュータの必須の要素は、命令を実行するための中央処理ユニットと、命令およびデータを記憶するための1つ以上のメモリデバイスとである。一般に、コンピュータはさらに、たとえば磁気ディスク、光磁気ディスクまたは光ディスクといった、データを格納するための1つ以上の大容量記憶装置を含むか、当該1つ以上の大容量記憶装置からデータを受取るかもしくは当該1つ以上の大容量記憶装置にデータを転送するよう作動的に結合されるか、またはその両方を行うことにもなる。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。さらに、コンピュータはたとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶装置(たとえばユニバーサルシリアルバス(USB)フラッシュドライブ)といった別のデバイスに埋め込まれ得る。
コンピュータプログラム命令およびデータを格納するのに好適であるコンピュータ可読媒体は、例として、たとえばEPROM、EEPROMおよびフラッシュメモリデバイスといった半導体メモリデバイスを含むすべての形態の不揮発性メモリ、媒体およびメモリデバイス;たとえば内部ハードディスクまたはリムーバブルディスクといった磁気ディスク;光磁気ディスク;ならびにCD-ROMおよびDVD-ROMディスクを含む。プロセッサおよびメモリは、特殊目的論理回路によって補足され得るか、または特殊目的論理回路に組み込まれ得る。
本明細書は多くの特定の実現例の詳細を含んでいるが、これらは如何なる発明の範囲または請求され得るものの範囲に対する限定としても解釈されるべきではなく、特定の発明の特定の実施形態に特有の特徴であり得る記載として解釈されるべきである。本明細書において別々の実施形態の文脈で記載される特定の特徴は、単一の実施形態において組合せでも実現され得る。反対に、単一の実施形態の文脈において記載されるさまざまな特徴は、複数の実施形態において別々に、または任意の好適な部分的組合わせでも実現され得る。さらに、特徴は、ある組合せにおいて作用すると上で記載され、最初はそのように請求されていさえする場合もあるが、請求される組合せからの1つ以上の特徴はいくつかの場合には当該組合せから削除され得、請求される組合せは、部分的組合わせまたは部分的組合わせの変形例に向けられ得る。
同様に、動作が図においては特定の順に示されているが、そのような動作は、望ましい結果を達成するために、示された当該特定の順もしくは連続した順で実行される必要があると理解されるべきではなく、または、すべての示された動作が実行される必要があると理解されるべきではない。特定の状況では、マルチタスク化および並列処理化が有利である場合もある。さらに、上述の実施形態における様々なシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきではなく、記載されるプログラムコンポーネントおよびシステムは一般に単一のソフトウェア製品に統合され得るかまたは複数のソフトウェア製品にパッケージ化され得ることが理解されるべきである。
主題の特定の実施形態が記載された。他の実施形態は以下の請求の範囲内にある。たとえば、請求項において記載されるアクションは、異なる順で実行され得、それでも望ましい結果を達成し得る。一例として、添付の図において示されるプロセスは、望ましい結果を達成するために、示された特定の順または連続する順であることを必ずしも必要としない。ある実現例においては、マルチタスキングおよび並列処理が有利であり得る。

Claims (14)

  1. データ処理セルであって、
    入力行列の部分行列の積を求めるよう構成される乗算回路と、
    入力累算値と前記乗算回路によって出力された前記積との和を求めるよう構成される加算回路と、
    前記加算回路の出力に接続される複数のアキュムレータと、
    前記複数のアキュムレータから、前記加算回路によって出力された前記和を受け取る所与のアキュムレータを選択するよう構成されるコントローラ回路とを備える、データ処理セル。
  2. 前記コントローラ回路は、前記データ処理セルによって受け取られたセレクタデータに基づいて、前記乗算回路によって求められる複数の積の各々について、前記所与のアキュムレータを選択するよう構成される、請求項1に記載のデータ処理セル。
  3. 第1の部分行列を受け取るよう構成される第1の入力レジスタと、第2の部分行列を受け取るよう構成される第2の入力レジスタとをさらに備え、前記乗算回路によって求められる前記積は、前記第1の部分行列と前記第2の部分行列との積を含む、請求項1または2に記載のデータ処理セル。
  4. セレクタデータを受け取るよう構成される1つ以上のセレクタレジスタをさらに備え、前記コントローラ回路は、前記セレクタデータに基づいて、前記乗算回路によって求められる複数の積の各々について、前記所与のアキュムレータを選択する、請求項3に記載のデータ処理セル。
  5. 前記セレクタデータは、前記第1の部分行列内の非ゼロ要素の位置を示す、前記第1の部分行列のスパース性パターンを定義するデータを含み、および/または、
    前記セレクタデータは、前記第2の部分行列内の非ゼロ要素の位置を示す、前記第2の部分行列のスパース性パターンを定義するデータを含む、請求項4に記載のデータ処理セル。
  6. 前記セレクタデータは、前記第1の部分行列が属する第1のサブ乗算を示し、
    前記セレクタデータは、前記第2の部分行列が属する第2のサブ乗算を示し、
    前記第1のサブ乗算が前記第2のサブ乗算と一致する場合、前記コントローラは、前記第1のサブ乗算および前記第2のサブ乗算に対応する前記所与のアキュムレータを選択するよう構成され、
    前記第1のサブ乗算が前記第2のサブ乗算と一致しない場合、前記コントローラは、前記複数のアキュムレータのすべてへの書き込み入力を無効にするよう構成される、請求項4に記載のデータ処理セル。
  7. 前記複数のアキュムレータの各アキュムレータは、入力行列の所与のセットについて前記加算回路によって出力された値を累算する、先行する請求項のいずれか1項に記載のデータ処理セル。
  8. 複数の、請求項1に記載の前記データ処理セルを備える、行列計算ユニット。
  9. 行列を乗算するための方法であって、
    セルの第1の入力レジスタが、第1の入力部分行列を受け取ることと、
    前記セルの第2の入力レジスタが、第2の入力部分行列を受け取ることと、
    (i)前記第1の入力部分行列と前記第2の入力部分行列との積と(ii)所与のアキュムレータの現在の累算値との和を受け取るよう、前記セルのコントローラが、前記セルの複数のアキュムレータから前記所与のアキュムレータを選択することと、
    前記セルの乗算回路が、前記第1の入力行列と前記第2の入力行列との積を生成することと、
    前記セルの加算回路が、前記第1の入力行列と前記第2の入力行列との前記積を前記現在の累算値に加算することによって、更新された累算値を生成することと、
    前記更新された累算値を前記所与のアキュムレータに記憶することとを含む、方法。
  10. 前記乗算回路によって求められる前記積は、前記第1の部分行列と前記第2の部分行列との積を含む、請求項9に記載の方法。
  11. 前記セルの1つ以上のセレクタレジスタがセレクタデータを受け取ることを含み、前記所与のアキュムレータを選択することは、前記セレクタデータに基づいて前記所与のアキュムレータを選択することを含む、請求項9または10に記載の方法。
  12. 前記セレクタデータは、前記第1の部分行列内の非ゼロ要素の位置を示す、前記第1の入力部分行列のスパース性パターンを定義するデータを含み、および/または、
    前記セレクタデータは、前記第2の部分行列内の非ゼロ要素の位置を示す、前記第2の入力部分行列のスパース性パターンを定義するデータを含む、請求項11に記載の方法。
  13. 前記セレクタデータは、前記第1の入力部分行列が属する第1のサブ乗算を示し、
    前記セレクタデータは、前記第2の入力部分行列が属する第2のサブ乗算を示し、
    前記第1のサブ乗算が前記第2のサブ乗算と一致する場合、前記コントローラは、前記第1のサブ乗算および前記第2のサブ乗算に対応する前記所与のアキュムレータを選択し、
    前記第1のサブ乗算が前記第2のサブ乗算と一致しない場合、前記コントローラは、前記複数のアキュムレータのすべてへの書き込み入力を無効にする、請求項11に記載の方法。
  14. 前記複数のアキュムレータの各アキュムレータは、入力行列の所与のセットについて前記加算回路によって出力された値を累算する、請求項9に記載の方法。
JP2022570187A 2020-11-30 2021-11-30 複数のアキュムレータを有するシストリックアレイセル Pending JP2023542261A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063119556P 2020-11-30 2020-11-30
US63/119,556 2020-11-30
PCT/US2021/061198 WO2022115783A1 (en) 2020-11-30 2021-11-30 Systolic array cells with multiple accumulators

Publications (1)

Publication Number Publication Date
JP2023542261A true JP2023542261A (ja) 2023-10-06

Family

ID=79093069

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022570187A Pending JP2023542261A (ja) 2020-11-30 2021-11-30 複数のアキュムレータを有するシストリックアレイセル

Country Status (6)

Country Link
US (1) US20220171605A1 (ja)
EP (1) EP4136552A1 (ja)
JP (1) JP2023542261A (ja)
KR (1) KR20220161485A (ja)
CN (1) CN115552396A (ja)
WO (1) WO2022115783A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11635958B1 (en) * 2022-01-03 2023-04-25 Globalfoundries U.S. Inc. Multi-port register file for partial-sum accumulation

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11328037B2 (en) * 2017-07-07 2022-05-10 Intel Corporation Memory-size- and bandwidth-efficient method for feeding systolic array matrix multipliers

Also Published As

Publication number Publication date
CN115552396A (zh) 2022-12-30
WO2022115783A1 (en) 2022-06-02
KR20220161485A (ko) 2022-12-06
US20220171605A1 (en) 2022-06-02
EP4136552A1 (en) 2023-02-22

Similar Documents

Publication Publication Date Title
CN111291859B (zh) 通用矩阵-矩阵乘法数据流加速器半导体电路
EP3627338B1 (en) Efficient utilization of systolic arrays in computational processing
JP5408913B2 (ja) 高速かつ効率的な行列乗算ハードウェアモジュール
CN109324827B (zh) 用于处理用于访问数据的指令的装置、方法和系统
JP2022084674A (ja) 代替ループ限界値
CN110383300B (zh) 一种计算装置及方法
TWI832006B (zh) 實行卷積運算的系統及方法
JP2018055677A (ja) 外積累算演算のためのプロセッサおよび方法
Hickmann et al. Intel nervana neural network processor-t (nnp-t) fused floating point many-term dot product
JP2023542261A (ja) 複数のアキュムレータを有するシストリックアレイセル
JP2014186461A (ja) 演算処理装置及び演算処理方法
WO2020060885A1 (en) Digital circuit with compressed carry
CN112241251B (zh) 用于处理浮点数的设备和方法
CN112241252A (zh) 用于处理浮点数的设备和方法
WO2023114417A2 (en) One-dimensional computational unit for an integrated circuit
JP7566931B2 (ja) 出力後処理を伴うシストリックアレイセル
GB2614705A (en) Neural network accelerator with configurable pooling processing unit
CN117492838A (zh) 访问序言和结尾数据
CN114443146A (zh) 基于存算一体存储器的矢量处理器及其运行方法
US20240220202A1 (en) Multi-Modal Systolic Array For Matrix Multiplication
Murakami FPGA implementation of a SIMD-based array processor with torus interconnect
WO2024144950A1 (en) Multi-modal systolic array for matrix multiplication
JP2024510625A (ja) 行列乗算演算のための行列の近似
GB2614327A (en) Configurable pooling process unit for neural network accelerator
CN113626760A (zh) 用于对矩阵值灵活求和的设备和方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230327

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230327

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240229

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240319

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240614

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20241001