JP2023145676A - 伝搬レイテンシの短縮 - Google Patents
伝搬レイテンシの短縮 Download PDFInfo
- Publication number
- JP2023145676A JP2023145676A JP2023126257A JP2023126257A JP2023145676A JP 2023145676 A JP2023145676 A JP 2023145676A JP 2023126257 A JP2023126257 A JP 2023126257A JP 2023126257 A JP2023126257 A JP 2023126257A JP 2023145676 A JP2023145676 A JP 2023145676A
- Authority
- JP
- Japan
- Prior art keywords
- matrix
- tile
- layer
- cycle
- tiles
- 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
Links
- 239000011159 matrix material Substances 0.000 claims abstract description 73
- 238000000034 method Methods 0.000 claims abstract description 48
- 238000012545 processing Methods 0.000 claims description 80
- 238000004590 computer program Methods 0.000 abstract description 15
- 239000010410 layer Substances 0.000 description 94
- 239000013598 vector Substances 0.000 description 70
- 238000004891 communication Methods 0.000 description 39
- 230000015654 memory Effects 0.000 description 32
- 238000012546 transfer Methods 0.000 description 21
- 230000004913 activation Effects 0.000 description 15
- 238000004364 calculation method Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 11
- 238000013528 artificial neural network Methods 0.000 description 10
- 238000010801 machine learning Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 238000003491 array Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 239000011229 interlayer Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- 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/088—Non-supervised learning, e.g. competitive learning
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
- 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)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Multi Processors (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Advance Control (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
- Magnetic Resonance Imaging Apparatus (AREA)
- Complex Calculations (AREA)
Abstract
【課題】アクセラレータのタイル間の伝搬レイテンシを短縮するように動作をスケジューリングするために記憶媒体上に符号化されたコンピュータプログラムを含む方法、システムおよび装置を提供する。【解決手段】マトリクス演算を少なくとも部分的に並列で実行するように構成されたアクセラレータによって実行されるプログラムの最初の層に対するスケジュールを生成する要求を受け取る。プログラムは、最初の層を含む複数の層を定義し、各層が値のそれぞれのマトリクスを使用して実行されるマトリクス演算を定義する。スケジュールの複数の初期のブロックは、初期の割り当て方向に従って割り当てられ、選択された特定のサイクルの後に処理されるブロックが、第1のマトリクスの別の第2の次元に沿って処理されるように、特定のサイクルにおいて割り当て方向が切り換えられ、割り当て方向に従って、残るすべての割り当てられていないブロックが割り当てられる。【選択図】図1A
Description
本明細書は機械学習アクセラレータに関する。
機械学習アクセラレータは、高度な並列同期動作を実行するように設計された特定用途向け集積回路(ASIC)である。並列処理は、同時に実行することができる様々な独立した処理要素を統合することによって達成される。
そのようなデバイスは、ニューラルネットワークを通る推測パスを加速するのに適切である。ニューラルネットワークは、多層動作を採用して、1つまたは複数の入力から1つまたは複数の出力を予測する機械学習モデルである。ニューラルネットワークは、一般的には入力層と出力層との間に1つまたは複数の隠れ層を含む。各層の出力は、ネットワークにおける、たとえば次の隠れ層または出力層といった別の層に対する入力として使用される。
一般的には、各層に対して必要な計算動作は、マトリクス乗算を実行することによって達成され得る。大抵の場合、マトリクスのうちの1つは、たとえばマトリクスとベクトルの乗算といったベクトルである。したがって、機械学習アクセラレータは、マトリクス乗算の乗算および加算を高度な並列処理で実行することを可能にする。
しかしながら、ニューラルネットワークの各層の間の従属性により、これらの計算メカニズムには生来のレイテンシがある。レイテンシが生じるのは、1つの層の出力が次の層に対する入力になるためである。したがって、ニューラルネットワークの層は、通常は並列ではなく順次に実行されなければならない。言い換えれば、一般的には、1つの層の最後の計算動作が完結してからでないと、次の層の最初の計算は開始することができない。
一般に、異なるそれぞれの層に割り当てられた複数のタイルを使用する機械学習アクセラレータには、2つのタイプのレイテンシが生じる。第1に、チップの素子が計算を実行するように実際に利用可能なとき、入力データを待つことによって計算レイテンシが生じる。第2に、1つのタイルによって計算される1つの層の出力を、第2のタイルによって計算される別の層の入力になるように伝搬させる必要があるため、伝搬レイテンシが生じる。計算レイテンシは、より多くの計算素子を有するより大きいデバイスを作製することによって改善され得る。しかしながら、デバイスがより大きくなるにつれて、データを伝える必要のあるタイル間の距離もより長くなるため、伝搬レイテンシが増加する傾向がある。
本明細書は、機械学習アクセラレータにおいて、システムが、計算レイテンシを短縮するばかりでなく、タイル間でデータを伝える必要があるときには伝搬レイテンシをも短縮する、機械学習アクセラレータ向けのスケジュールを生成するやり方を説明するものである。
本明細書で説明される主題の特定の実施形態は、以下の利点の1つまたは複数を実現するように実施され得る。機械学習アクセラレータの計算レイテンシおよび伝搬レイテンシは、動作のスケジュールを変更することによって短縮され得る。これによって、割高であるかまたは複雑なハードウェア変更を必要とすることなく、性能が向上する。以下で説明されるスケジューリング技法の性能向上は、タイルが1つしかないときにも計算上の利点があり、この場合、いくつかのスケジュールは、固有の計算上の従属性があるにもかかわらず、100%に近い利用率を達成し得る。
本明細書の主題の1つまたは複数の実施形態の詳細を、添付図面および以下の記述において説明する。主題の他の特徴、態様、および利点が、記述、図面、および特許請求の範囲から明らかになるであろう。
様々な図面における類似の参照番号および名称は、類似の要素を示す。
本明細書は、たとえば機械学習アクセラレータといったマルチタイルアクセラレータの、タイル間の伝搬レイテンシを短縮するように、タイル動作をスケジューリングするための技法を説明するものである。
本明細書では、タイルは、マトリクスの一部において計算を実行することができるセルの計算配列を有するデバイスを指す。したがって、タイルは、マトリクスベクトル乗算の固定サイズブロックを実行するように構成された任意の適切なアクセラレータを指す。各セルは、セルが数学的な計算または他の計算を実行することを可能にする回路を含むことができる。一般的なシナリオでは、タイルは、入力ベクトルを受け取り、計算配列を使用して入力ベクトルに重みマトリクスを掛けて、出力ベクトルを生成する。
本明細書では、スケジュールは、特定のタイルが作用するべきマトリクスの部分の時系列シーケンスを指す。本明細書では、マトリクスのそのような個別の部分はブロックとも称される。したがって、スケジュールは、特定のタイルに関するブロックの順序付けを指定する。
タイルがマトリクスの別々のブロックに対して作用する各回は、スケジュールの1つの繰返しと称され得る。マトリクスがタイルの計算配列内に完全に適合する場合には、すべてのマトリクス演算がスケジューリングなしで実行され得る。しかしながら、マトリクスが計算配列よりも大きいときには、システムは、マトリクスの別々のブロックを処理するべき順序を規定するスケジュールを生成することができる。便宜上、本明細書におけるスケジュールの動作は、明確に識別可能なクロックサイクルに割り当てられるものと見なされる。しかしながら、これらのクロックサイクルが実際のハードウェアクロックサイクルに相当する必要はなく、同じ技法が、複数のハードウェアクロックサイクルを含む期間に計算を割り当てるために使用され得る。
図1Aは、スケジュールを変化させてニューラルネットワークの2つの層の間のレイテンシを短縮し得る様子を示すものである。図1の左側は、2つのニューラルネットワーク層の動作を実行するために2つのタイルが使用される簡単なスケジュールを示す。それにもかかわらず、この簡単なスケジュールにはレイテンシがあり、これは図1の右側の改善されたスケジュールを使用することによって短縮され得る。
第1の層102は第1の重みマトリクスM1 110を有する。第1の層102の動作は、入力ベクトルV1 115を受け取るステップと、入力ベクトル115に第1の重みマトリクス110を掛けて出力ベクトルV2 117を生成するステップとを含む。
この例では、第1の重みマトリクス110は、第1の層102の動作を実行するように割り当てられた第1のタイルの計算配列よりも大きい。第1の重みマトリクス110は、幅も高さも第1のタイルの計算配列の2倍である。したがって、第1の層の動作は、特定のスケジュールに従って、複数のクロックサイクルにわたって複数のブロックにおいて実行される必要がある。
図1の例では、第1のスケジュール106は、第1の層102の動作に行優先スケジュールを割り当て、これは、第1の層102に割り当てられた第1のタイルが、第1のマトリクス110の上半分に対して2回の繰返し動作を実行し、次いで、第1のマトリクス110の下半分に対して2回の繰返し動作を実行することを意味する。図1では、クロックサイクル割り当ては、対応するマトリクスブロック上に示されている。したがって、第1のスケジュールによれば、第1のタイルが第1のマトリクス110を処理する順序は、サイクル0およびサイクル1においてマトリクスの上半分を処理し、サイクル2およびサイクル3においてマトリクスの下半分を処理するものになる。
次いで、個々の繰返しの部分結果を合計することにより、第1の層102の出力ベクトル117が生成される。したがって、出力ベクトル117の前半は、クロックサイクル0からの部分結果とクロックサイクル2からの部分結果とを合計することを含む。出力ベクトル117の後半は、クロックサイクル1からの部分結果とクロックサイクル3からの部分結果とを合計することを含む。
次いで、出力ベクトル117は、通信ハードウェアを通じて、第2の重みマトリクスM2 120を有する第2の層104のマトリクス演算を実行するように割り当てられた第2のタイルまで伝搬される。この例では、アクセラレータの伝搬レイテンシは2クロックサイクルと想定される。
この図では、第2の層104も、第1のスケジュール106による行優先スケジュールを有する。
第1の層102に割り当てられた第1のタイルと第2の層104に割り当てられた第2のタイルとは、同時に動作することができる。しかしながら、層間の計算は、生来、ある特定のデータ依存性を導入し、伝搬レイテンシが、第2の層104の動作を開始することができる時間に影響を与える遅延を導入する。
詳細には、第2のマトリクス120の左上のブロックは、サイクル0とサイクル2との両方が第1の層102によって実行されるまで実行され得ない。したがって、第1の層のサイクル2が実行された後、第2の層104を計算する第2のタイルまで出力ベクトル117の左半分を伝搬させるのに、サイクル3および4が費やされることになる。したがって、第2の層が計算され得るのは、早くてもサイクル5においてである。
同じ理由から、第2の層104の第2のマトリクス120の左下のブロックは、第1の層102に対してサイクル1とサイクル3との両方が実行されてデータが伝搬されるまでは実行され得ず、2サイクルの伝搬遅延を招く。サイクル6は既に右上のブロックに割り当てられているので、第1のスケジュール106は、第2のマトリクス120の左下の部分にはサイクル7から始まる処理を割り当てる。
したがって、図1Aは、第1のスケジュール106が実行時に合計8サイクルをもたらす様子を示す。
第2のスケジュール108は、第1の層102の実行順序を調整する。第2のスケジュール108は、第1の層102に対して、行優先の順序付けではなく列優先の順序付けを割り当てる。
言い換えれば、第1の層は、最初にサイクル0において第1のマトリクス110の左上の部分に対して作用し、次にサイクル1において第1のマトリクス110の左下の部分に対して作用することができる。
この時点で、第2の層104の動作は、第2のマトリクス120の左上ブロックに対する処理を直ちに開始し得ることに留意されたい。したがって、第2のマトリクス120の左上のブロックはサイクル2およびサイクル3の2サイクルの伝搬遅延の後にサイクル4において既に処理され得、第2のマトリクス120の右上のブロックはサイクル5において処理され得る。
第1の層102の動作の行/列の順序付けをこのように再配置すると、2つの層の全体的な実行時間を7サイクルに短縮する。実際には、このシステムは、第1の層102における行/列の順序付けを変更することにより、第1の層および第2の層に対して作用するように割り当てられた2つのタイル間の伝搬レイテンシの1つの全体サイクルを隠すことができた。これは簡単な例であるが、それでも層102および104を通る単一パスに関する時間節約は12.5%であった。
この技法は、(1)割り当て方向を切り換える特定のサイクルMと、(2)マトリクスの「左下のブロック」を処理する特定のサイクルTiとの、2つの値を選択する問題へと一般化して改善され得る。本明細書では、マトリクスの「左下の」ブロックはマトリクスの最後のブロックであって、これが処理されるまで、次の層は、現行の層によって生成された出力を処理し始めることができないことを意味する。したがって、「左下の」ブロックは、スケジュールにおける特定の配置に依拠して、マトリクスの何らかのコーナーブロック、または前の層から最後に到着する行または列の部分を使用する何らかのエッジブロックであり得る。
層n-1と層nとの間のNサイクルの伝搬レイテンシと、層nと層n+1との間のCサイクルの伝搬レイテンシとを有するアクセラレータについては、システムは、層nのマトリクスの左下のブロックを、層の最初から少なくともNサイクルおよび層の最後から少なくともCサイクルで処理するようにスケジューリングすることによって、伝搬レイテンシを軽減することができる。
改善されたスケジュールは、このように、選択されたサイクルMの後に割り当て方向を切り換える。一般に、Mは、特定のサイクルTiにおけるサイクル、またはTiの前のサイクルを指定する。サイクルMにおいて、スケジュールは、ブロック割り当てを、行優先順から列優先順に、またはその逆方向に、切り換えることができる。これは、サイクルTiの後に、タイルが、次の層向けのさらなる出力を生成するのに十分なデータを受け取り続けるからである。以下で説明する技法は、任意のサイズのマトリクス用のレイテンシを軽減するためにスケジュールの行/列の割り当て方向を変更するやり方をさらに説明するものである。
割り当て方向における同一の切り換えは、タイルが1つしかなく伝搬レイテンシがゼロかそれに近い機械学習アクセラレータにおけるレイテンシをも短縮することができる。たとえば、デバイスが含むのは単一のタイルのみであって、これに、両方の層に関する計算結果が割り当てられた状況を想定されたい。
図1Bは、2つの層の各々において4×4のマトリクスを処理する9つの計算要素を有する単一のタイルに対するスケジューリング割り当てを示す。
第1のスケジュール107は、基本的な行優先の順序付けを示す。いくつかの計算要素は、他の計算が完了するのを待っているため、することがないという問題が生じる可能性がある。
サイクル0では、9つの計算要素のすべてが、うまく、M1 111の第1の2つの行およびM1 111の第3の行の第1の要素に対して作業する。しかし、第1のスケジュール107におけるサイクル1では、9つの計算要素のうちの7つにしか作業がない。これは、行優先スケジュールを使用すると、第2の層の左上コーナーは、第1の層の右下コーナーが処理されるまで計算され得ないからである。したがって、第2の層104に対する第1の結果が計算され得るのは、1サイクル遅れることになる。
代わりに、割り当て方向切り換えを使用する第2のスケジュール109を検討する。すなわち、システムは、マトリクス111の第1の列を割り当てた後に、列優先割り当てに切り換えることができる。したがって、サイクル1の代わりに、サイクル0においてマトリクス111の左下のブロックが計算される。そこで、サイクル0において左下のブロックが既に処理されているので、サイクル1において第2の層の動作を直ちに開始することができる。
結果として、計算配列のいくつかの要素が、第1の層の動作が完了するのを待たずに第2の層の動作に対して作業し始めることができたので、割り当て方向を切り換えた第2のスケジュールにおけるサイクル1は100%の利用率を達成することができた。同じ技法が、ニューラルネットワークの層を通して利用率を改善するために使用され得る。
図2は、アクセラレータのレイテンシを短縮するスケジュールを生成するための例示の処理の流れ図である。便宜上、この処理は、1つまたは複数の位置にある1つまたは複数のコンピュータのシステムによって実行され、本明細書に従って適切にプログラムされるものと説明される。
システムは、第1のマトリクスを有する第1の層に対するスケジュールを生成するようにとの要求を受け取る(210)。第1の層は、層の各々によって実行される動作を指定する入力プログラムによって定義された複数の層のうちの1つであり得る。複数のタイルを有するデバイスにおいて、各層が、複数のタイルを有するデバイスのそれぞれのタイルに割り当てられ得る。各層がそれぞれのマトリクスを有し得る。たとえば、入力プログラムは、ニューラルネットワークアーキテクチャの動作を指定することができる。
システムは、第1の次元における初期の割り当て方向に従って、スケジュールの複数の初期のブロックを割り当てる(220)。割り当て方向はマトリクスの第1の次元を指定するものであり、これに沿ってスケジュールの繰返しが実行されることになる。たとえば、割り当て方向は、当初は行優先の順序付けまたは列優先の順序付けを指定することができる。
システムは左下のブロックに対するサイクルを選択する(230)。上記で説明されたように、Tiはマトリクスの左下のブロックが実行されるサイクルを表す。これも上記で説明されたように、特定のタイプのスケジュールと一緒にTiを選択すれば、割り当て方向を切り換えるサイクルであるMをも決定することができる。
一般に、Tiの選択肢に関係なく、層i-1と層iとの間にはTiサイクルのレイテンシが隠され得、層iと層i+1との間にはWi×Hi-Tiサイクルのレイテンシが隠され得る。言い換えれば、システムは、i-1からiへの移行におけるTiサイクルのレイテンシを選択するという犠牲を払って、iからi+1への移行におけるレイテンシを隠すことができる。
いくつかのマトリクスは、伝搬レイテンシを完全に隠すことができるほど十分に大きいものであり得る。層iの最後において、Liは、伝搬レイテンシばかりでなくあらゆる終結する計算または活性化関数をも含む全体の最後の層のレイテンシを表すと想定する。層iに関するすべてのレイテンシを隠すためには次の不等式が成立する必要があり、
Wi×Hi≧Li-1+LiWi
はブロック数で表現したマトリクスの幅であり、Hiはブロック数で表現したマトリクスの高さである。ブロックサイズはタイルのハードウェアによって決定され得る。
Wi×Hi≧Li-1+LiWi
はブロック数で表現したマトリクスの幅であり、Hiはブロック数で表現したマトリクスの高さである。ブロックサイズはタイルのハードウェアによって決定され得る。
この条件が成立するとき、システムはTiをLi-1に選択することができる。
言い換えれば、システムは、左下のブロックを、前の層がこのブロックを処理するために必要な出力を生成した後にできるだけ早く実行するように、各ブロックをスケジューリングすることができる。
しかしながら、すべてのマトリクスが層間のレイテンシを完全に隠すことができるほど十分に大きいわけではない。その場合、スケジュールは、結果が出るまで待機を強制するためのアイドルサイクルを導入することができる。層iにSi個のアイドルサイクルが続く場合、層iに関するすべての有効なスケジュールについて次の不等式が成立する。
Wi×Hi≧max(Li-1-Si-1,0)+max(Li-Si,0)。
Wi×Hi≧max(Li-1-Si-1,0)+max(Li-Si,0)。
有効なスケジュールに対してこの不等式が成立する場合には、システムは、次式に従ってTiを割り当てることができる。
Ti=max(Li-1-Si-1,0)
Ti=max(Li-1-Si-1,0)
システムは、アイドルサイクルを伴うこの機構を使用するときには、アイドルサイクルで導入される合計遅延時間を最短にするために、各層を通して、プログラムによってアイドルサイクル数を選択する。そうするために、システムは、以下の不等式が成立するように、各層kについて、整数のアイドルサイクル数Skを選択するための最適化プロシージャを実行することができる。
Wi×Hi-max(Li-Si,0)≧0
かつ
Si-1≧Li-1+max(Li-Si,0)-Wi×Hi
Wi×Hi-max(Li-Si,0)≧0
かつ
Si-1≧Li-1+max(Li-Si,0)-Wi×Hi
システムは、特定のブロックの後に処理される各ブロックが、第2の次元に沿って順次に処理されるように、割り当て方向を切り換える(240)。切り換えサイクルMの選択は、使用されているスケジュールのタイプに依拠する。Mの選択の例は、図3A~図3Cを参照しながら以下でより詳細に説明される。
システムは、切り換えられた割り当て方向に従って、割り当てられていないすべての残りブロックを割り当てる(250)。言い換えれば、システムは、割り当てられていないすべてのブロックを、第2の次元による順序付けで割り当てることができる。
図3A~図4は、切り換えられた割り当て方向を使用する例示のスケジュールを示す。図3A~図3Cにおいて、番号を付けられた矢印は、特定の順序で実行されるように割り当てられたブロックのラインを表す。
図3Aは、行優先順を実行してから列優先順に切り換える様子を示す。言い換えれば、システムは、最初に処理されるブロックを最上部の行に沿って割り当て、次いで、2番目に処理されるブロックを第2の列に沿って割り当てる、などである。
この例では、サイクルMは、ブロックの第4の行に沿って、どこか中ほどに生じる。システムは、このように割り当て方向を切り換えて、ブロックを列優先順で割り当て始める。システムは、このようにして、選択されたサイクルTiにおいて実行されるマトリクスの左下のコーナーをスケジューリングすることができる。言い換えれば、システムは、手付かずの行の数が、現在のサイクルとTiとの間の差に等しくなるまで行優先順を計算する。
図3Aに示されたスケジュールでは、大半の計算が列優先段階において実行される。これは、非常に均一な速度で出力を送出して、いくつかのアイドルサイクルを各列の最後に残す傾向がある。これは、たとえばLSTMの場合のように各層向けの出力が付加的処理を必要とするとき、有利になり得る。
図3Bは、行制限を伴う行優先順を実行する様子を示す図である。この例では、行優先段階は、限定された数のブロックのみを処理してから次の行に移動する。この例示のスケジュールでは、初期の行は後の行よりも多くのブロックを含む。いくつかの実装形態では、システムはN=(Ti/Hi-1)の値を計算することによって行制限を計算し、Hiはマトリクスの各列におけるブロックの数である。次いで、システムは、初期の行に関するNの上限と、後の行に関するNの下限とを使用することができる。
したがって、この例における左下のブロックTiのサイクルは、Nの2つの値と、マトリクスの行数とによって与えられる。言い換えれば、マトリクスに8つの行があって、floor(N)=3、ceiling(N)=4であれば、Ti=5×4+3×3-(3-1)=27となる。この場合、切り換えサイクルMは、M=5×4+3×3=29で与えられる。
図3Bのスケジュールは、最初の少数の列を処理するときに遅延を除去して、メモリ要件を軽減する。しかしながら、図3Bのスケジュールは、実施するのがより複雑になり得る。
図4は対角スケジューリングを示す。示されるように、行優先順中に、各行は、対角線の傾斜によって定義される、ブロックの減少する数を受け取る。この例では、システムは、左上の対角線を満たすために必要なブロックの数を計算することによってTiを選択し、M=Tiを選択することができる。
対角線のスケジュールは、行優先段階と列優先段階との間に対称性があるが、上記で言及された両方のスケジュールの不利益もある。
図5は、専用論理回路の一例、詳細にはASIC500を示す概略図である。ASIC500は、簡潔さのためにタイルと称される複数の同期プロセッサを含む。たとえば、ASIC500が含むタイル502のうちの1つまたは複数が、たとえば乗法演算や加法演算などの同期計算を実行するように構成された専用回路を含む。詳細には、各タイル502に含まれ得るセルの計算配列における各セルは、数学的演算を実行するように構成されている(たとえば、本明細書で説明されて図6に示された例示的タイル200を参照されたい)。いくつかの実装形態では、タイル502は、第1の次元501(たとえば行)と、第2の次元503(たとえば列)とに沿って、グリッドパターンに配置されている。たとえば、図5に示される例では、タイル502は4つの別々のセクション(510a、510b、510c、510d)に分割されており、各セクションが、18(縦)×16(横)のグリッドに配置された288のタイルを含有している。いくつかの実装形態では、図5に示されるASIC500は、それぞれがセルのサブセット/サブアレイ、ローカルメモリおよびバスラインを含む個別のタイルに細分された/配置されたセルの単一のシストリックアレイを含むものとして理解され得る(たとえば図6を参照されたい)。
ASIC500はベクトル処理ユニット504をも含む。ベクトル処理ユニット504には、タイル502から出力を受け取り、受け取った出力に基づいてベクトル計算出力値を計算するように構成された回路が含まれる。たとえば、いくつかの実装形態では、ベクトル処理ユニット504には、タイル502から受け取った出力に対して累積動作を実行するように構成された回路(たとえば乗算回路、加算回路、シフタ、および/またはメモリ)が含まれる。代わりに、またはそれに加えて、ベクトル処理ユニット504は、タイル502の出力に対して非線形関数を適用するように構成された回路を含む。代わりに、またはそれに加えて、ベクトル処理ユニット504は、正規化数、プールされた値、または両方を生成する。ベクトル処理ユニットのベクトル計算出力は、1つまたは複数のタイルに記憶され得る。たとえば、ベクトル計算出力は、タイル502に対して一意的に関連付けられたメモリに記憶され得る。代わりに、またはそれに加えて、ベクトル処理ユニット504のベクトル計算出力は、たとえば計算の出力としてASIC500の外部回路に転送され得る。いくつかの実装形態では、ベクトル処理ユニット504はセグメント化され、各セグメントが含む回路が、タイル502の対応する集合から出力を受け取り、受け取った出力に基づいてベクトル計算出力を計算するように構成されている。たとえば、図5に示される例では、ベクトル処理ユニット504は、第1の次元501に沿って広がる2つの行を含み、2つの行の各々が、32の列に配置された32のセグメント506を含む。各セグメント506に含まれる回路(たとえば乗算回路、加算回路、シフタ、および/またはメモリ)が、本明細書で説明されたように、タイル502の対応する列からの出力(たとえば蓄積された合計)に基づいてベクトル計算を実行するように構成されている。ベクトル処理ユニット504は、図5に示されるように、タイル502のグリッドの中央に配置され得る。ベクトル処理ユニット504の他の位置の配置も可能である。
ASIC500は通信インターフェース508(たとえばインターフェース508a、508b)をも含む。通信インターフェース508は、並直列変換器/直並列変換器(SerDes)インターフェースと汎用入出力(GPIO)インターフェースとの1つまたは複数のセットを含む。SerDesインターフェースは、ASIC500向けの指令(たとえば以下で説明される制御可能なバスラインを動作させるための指令)および/または入力データを受け取ったり、ASIC500から外部回路へデータを出力したりするように構成されている。たとえば、SerDesインターフェースは、通信インターフェース508に含まれるSerDesインターフェースのセットを通じて、32Gbps、56Gbps、または任意の適切なデータレートで、指令および/または入力データを伝送するように構成され得る。GPIOインターフェースは、デバッグするため、および/またはブートストラップするためのインターフェースを提供するように構成されている。たとえば、ASIC500は、オンにされたときブートプログラムを実行し得る。プログラムが障害を起こすと、管理者は、GPIOインターフェースを使用して障害の原因をデバッグし得る。
ASIC500は、通信インターフェース508、ベクトル処理ユニット504、および複数のタイル502の間でデータを伝達するように構成された複数の制御可能なバスラインをさらに含む(たとえば図6を参照されたい)。制御可能なバスラインは、たとえば、グリッドの第1の次元501(たとえば行)と第2の次元503(たとえば列)との両方に沿って延びる配線を含む。第1の次元501に沿って延びる制御可能なバスラインの第1のサブセットは、データを第1の方向(たとえば図5の右方向)に転送するように構成され得る。第1の次元501に沿って延びる制御可能なバスラインの第2のサブセットは、データを第2の方向(たとえば図5の左方向)に転送するように構成され得る。第2の次元503に沿って延びる制御可能なバスラインの第1のサブセットは、データを第3の方向(たとえば図5の上方向)に転送するように構成され得る。第2の次元503に沿って延びる制御可能なバスラインの第2のサブセットは、データを第4の方向(たとえば図5の下方向)に転送するように構成され得る。
それぞれの制御可能なバスラインは、クロック信号によってデータをラインに沿って伝達するように使用されるフリップフロップなどの複数のコンベヤ要素を含む。制御可能なバスラインを通じてデータを転送することは、各クロックサイクルにおいて、制御可能なバスラインの第1のコンベヤ要素から、制御可能なバスラインの隣接した第2のコンベヤ要素まで、データをシフトすることを含み得る。いくつかの実装形態では、データは、制御可能なバスラインを通じて、クロックサイクルの立ち上がりエッジまたは立下りエッジで伝達される。第1のクロックサイクルにおいて制御可能なバスラインの第1のコンベヤ要素(たとえばフリップフロップ)上に存在するデータは、第2のクロックサイクルで、制御可能なバスラインの第2のコンベヤ要素(たとえばフリップフロップ)に転送され得る。いくつかの実装形態では、コンベヤ要素は、互いから周期的に所定距離の間隔があり得る。たとえば、場合によっては、それぞれの制御可能なバスラインが複数のコンベヤ要素を含み、各コンベヤ要素が、対応するタイル502の内部に、または最も近くに配置されている。
それぞれの制御可能なバスラインは、複数のマルチプレクサおよび/またはデマルチプレクサをも含む。制御可能なバスラインのマルチプレクサ/デマルチプレクサは、バスラインとASICチップ500の素子との間でデータを転送するように構成されている。たとえば、制御可能なバスラインのマルチプレクサ/デマルチプレクサは、タイル502、ベクトル処理ユニット504、または通信インターフェース508との間でデータを転送し合うように構成され得る。タイル502、ベクトル処理ユニット504、および通信インターフェースの間でデータを転送することは、所望のデータ転送に基づいてマルチプレクサに制御信号を送ることを含み得る。制御信号は、マルチプレクサおよび/またはデマルチプレクサに直接結合されたレジスタに記憶され得る。そこで、制御信号の値は、たとえば、ソース(たとえばタイル502またはベクトル処理ユニット504の内部メモリ)から制御可能なバスラインにどのようなデータが転送されるか、あるいは制御可能なバスラインからシンク(たとえばタイル502またはベクトル処理ユニット504の内部メモリ)にどのようデータが転送されるかを決定し得る。
制御可能なバスラインはローカルレベルで制御されるように構成されており、それぞれのタイル、ベクトル処理ユニット、および/または通信インターフェースが、タイル、ベクトル処理ユニット、および/または通信インターフェースを通過する制御可能なバスラインを操作するために、それ自体の制御要素のセットを含む。たとえば、それぞれのタイル、1Dベクトル処理ユニット、および通信インターフェースが、そのタイル、1Dベクトル処理ユニット、および通信インターフェースとの間のデータ転送を制御するための、コンベヤ要素、マルチプレクサおよび/またはデマルチプレクサの対応するセットを含み得る。
ASICチップ500の動作に関連したレイテンシを最小化するために、様々な素子の間でデータが伝わる距離を短縮するように、タイル502およびベクトル処理ユニット504が配置され得る。特定の実装形態では、タイル502と通信インターフェース508との両方が複数のセクションに分離され得、タイルセクションと通信インタフェースセクションとの両方が、タイルと通信インターフェースとの間でデータが伝わる最大距離を短縮するように配置される。たとえば、いくつかの実装形態では、タイル502の第1のグループが、通信インターフェース508の第1の側の第1のセクションに配置され得、タイル502の第2のグループが、前記通信インターフェースの第2の側の第2のセクションに配置され得る。その結果、通信インターフェースから最も遠いタイルまでの距離が、タイル502のすべてが通信インターフェースの一方の側の単一のセクションに配置される構成と比較して半分になり得る。
あるいは、タイルは、4つのセクションなどの異なる数のセクションに配置されてよい。たとえば、図5に示される例では、ASIC500の複数のタイル502は複数のセクション510(510a、510b、510c、510d)に配置される。各セクション510が、グリッドパターンに配置されたタイル502の類似数を含む(たとえば、各セクション510が、16行×16列に配置された256のタイルを含み得る)。通信インターフェース508は、タイル502のセクション510のいずれかの側に配置された第1の通信インターフェース508aおよび第2の通信インターフェース508bといった複数のセクションにも分割される。第1の通信インターフェース508aは、制御可能なバスラインを介して、ASICチップ500の左側の2つのタイルセクション510a、510cに結合され得る。第2の通信インターフェース508bは、制御可能なバスラインを介して、ASICチップ500の右側の2つのタイルセクション510b、510dに結合され得る。その結果、通信インターフェース508との間でデータが伝わる最大距離(したがってデータ伝搬に関連したレイテンシ)は、単一の通信インターフェースのみが利用可能な機構と比較して半分になり得る。タイル502と通信インターフェース508との他の結合機構も、データレイテンシを短縮することができる。タイル502と通信インターフェース508との結合機構は、制御可能なバスラインのコンベヤ要素およびマルチプレクサに制御信号を供給することによってプログラムされ得る。
いくつかの実装形態では、1つまたは複数のタイル502は、制御可能なバスラインおよび/またはASIC500の内部の他のタイル(本明細書では「制御タイル」と称される)に対して読取り動作および書込み動作を開始するように構成される。ASIC500の内部の残りのタイルは、入力データに基づいて計算を実行する(たとえば層推論を計算する)ように構成され得る。いくつかの実装形態では、制御タイルは、ASIC500の内部の他のタイルと同一の素子および配置を含む。制御タイルは、ASIC500の、特別な1つまたは複数のタイル、特別な1つまたは複数の行、あるいは特別な1つまたは複数の列として追加され得る。たとえば、各タイル502が入力データに対して計算を実行するように構成されているタイル502の対称なグリッドについては、入力データに対する計算を実行するタイル502に関する読取り動作および書込み動作を扱うように、制御タイルの1つまたは複数の追加の行が含まれ得る。たとえば、それぞれのセクション510が18行のタイルを含み、タイルの最後の2つの行は制御タイルを含み得る。いくつかの実装形態では、個別の制御タイルを設けると、計算のために使用される他のタイルにおいて利用可能なメモリの量が増加する。本明細書で説明されたような制御専用の個別のタイルは必要ではないが、場合によっては個別の制御タイルは設けられない。むしろ、各タイルに読取り動作や書込み動作を開始させるための指令は、そのタイルのローカルメモリに記憶されてよい。
その上、図5に示された各セクション510は、18行×16列に配置されたタイルを含んでいるが、タイル502の数や、1つのセクションにおける配置は、異なり得る。たとえば、セクション510は、場合によっては同数の行と列とを含み得る。
その上、タイル502は、図5では4つのセクションに分割して示されているが、他の異なるグループ分けにも分割され得る。たとえば、いくつかの実装形態では、タイル502は、ベクトル処理ユニット504の上の(たとえば図5に示されるページの最上部に近い)第1のセクションと、ベクトル処理ユニット504の下の(たとえば図5に示されるページの最下部に近い)第2のセクションなどの、2つの異なるセクションにグループ分けされる。そのような機構では、各セクションは、たとえば(縦方向503に沿った)32×(横方向501に沿った)18のタイルといった576のタイルを含有し得る。セクションには、別の総数のタイルが含有されてよく、異なるサイズの配列に配置されてよい。場合によっては、セクション間の分割は、ASIC500のハードウェア機能によって線引きされる。たとえば、図5に示されるように、セクション510a、510bは、ベクトル処理ユニット504によってセクション510c、510dから分離され得る。
レイテンシは、タイルセクション510に対してベクトル処理ユニット504を中央に配置することによっても短縮され得る。いくつかの実装形態では、タイル502の第1の半分はベクトル処理ユニット504の第1の側に配置され、タイル502の第2の半分はベクトル処理ユニット504の第2の側に配置される。
たとえば、図5に示されるASICチップ500では、ベクトル処理ユニット504には2つのセクション(たとえば2つの行)が含まれ、その各々が、タイル502の列と同数の複数のセグメント506を含む。各セグメント506は、タイルのセクション510の内部のタイル502の対応する列から、蓄積された合計などの出力を受け取るように構成して配置され得る。図5に示される例では、ベクトル処理ユニット504の第1の側(たとえばベクトル処理ユニット504の上)に配置されたタイルセクション510a、510bは、制御可能なバスラインを介してセグメント506の上部の行に結合され得る。ベクトル処理ユニット504の第2の側(たとえばベクトル処理ユニット504の下)に配置されたタイルセクション510c、510dは、制御可能なバスラインを介してセグメント506の下部の行に結合され得る。その上、処理ユニット504の上の第1の半分の内部の各タイル502と、処理ユニット504の下の第2の半分の内部のそれぞれのタイル502とが、ベクトル処理ユニット504から同一の距離に配置され得るので、2つの半分の間の全体的なレイテンシには差がない。たとえば、第1のセクション510aにおける行i(変数iは行位置に対応する)のタイル502と、タイルの第2のセクション(たとえばセクション510c)における行m-1-iのタイル502とが、ベクトル処理ユニット504から同一の距離に配置され得る(mは各セクションにおける行の総数を表し、どちらのセクションでも、行は同じ向きに沿って増加すると想定する)。
このように構成されたタイルセクション510では、ベクトル処理ユニット504をすべてのタイル502の最遠端部(たとえば下部)に配置した機構と比較して、ベクトル処理ユニット504との間でデータが伝わる距離(したがってデータ伝搬に関連したレイテンシ)が、半減し得る。たとえば、セクション510aからタイル502の列を通して蓄積された合計を受け取ることに関連したレイテンシは、セクション510aおよび510cからタイル502の列を通って蓄積された合計を受け取ることに関連したレイテンシの半分になり得る。タイル502とベクトル処理ユニット504との結合機構は、制御可能なバスラインのコンベヤ要素およびマルチプレクサに制御信号を供給することによってプログラムされ得る。
ASICチップ500の動作中に、アクティブ化入力がタイル間でシフトされてよい。たとえば、アクティブ化入力は第1の次元501に沿ってシフトされ得る。加えて、タイル502による計算からの出力(たとえばタイル502の内部の計算配列による計算の出力)は、第2の次元503に沿ってタイル間でシフトされ得る。
いくつかの実装形態では、データがタイル502をスキップしてASICチップ500の動作に関連したレイテンシを短縮するように、制御可能なバスラインが物理的に配線され得る。たとえば、第1のタイル502による計算の出力は、第1のタイル502から、グリッドの第2の次元503に沿って、少なくともタイル1つ分は離れている第2のタイル502へとシフトされ得、したがって間のタイルをスキップする。別の例では、第1のタイル502からのアクティブ化入力は、第1のタイル502から、グリッドの第1の次元501に沿って、少なくともタイル1つ分は離れている第2のタイル502へとシフトされ得、したがって間のタイルをスキップする。アクティブ化入力または出力データをシフトするとき少なくとも1つのタイルをスキップすることにより、全体的なデータ経路長が短縮され得、データがより速く転送されてレイテンシが短縮される(たとえば、スキップされたタイルではデータを記憶するためにクロックサイクルを利用する必要はない)。
例示の実装形態では、セクション510aの各列の内部の各タイル502は、制御可能なバスラインによって、出力データを、第2の次元503に沿ってベクトル処理ユニット504の方へ通すように構成され得る。各列の内部のタイル502は、(たとえばタイル間の制御可能なバスラインの物理的配線によって)次の隣接したタイルをスキップすることにより、データをベクトル処理ユニット504の方へ通すようにさらに構成され得る。すなわち、第1のセクション510aにおける位置(i,j)=(0,0)のタイル502(変数iは行位置に対応し、変数jは列位置に対応する)は、出力データを、位置(i,j)=(2,0)におけるタイル502に渡すように配線され得、同様に、第1のセクション510aにおける位置(i,j)=(2,0)のタイル502は、出力データを、位置(i,j)=(4,0)のタイル502に渡すように配線され得る、などである。スキップされない最後のタイル(たとえば位置(i,j)=(16,0)にあるタイル502)は、出力データを、ベクトル処理ユニット504に渡す。図5に示された例などの、18行のタイルを有するセクション510については、タイルをスキップすることにより、セクション510の内部のすべてのタイルは、ベクトル処理ユニット504から多くとも9つの「タイルホップ」であることが保証され、したがって、データ経路長を短縮してデータレイテンシを半減することにより、ASICチップ500の性能を改善する。
別の例示的実装形態では、セクション510a、510cの各行の内部の各タイル502およびセクション510b、510dの各行の内部の各タイル502は、制御可能なバスラインを通じて、第1の次元501に沿って、アクティブ化入力を通すように構成され得る。たとえば、セクション510a、510b、510c、510dの内部のいくつかのタイルは、アクティブ化入力を、グリッド500の中央の方または通信インターフェース508の方へ通すように構成され得る。各行の内部のタイル502は、たとえばタイル間に制御可能なバスラインを配線することによって、隣接したタイルをスキップするようにさらに構成され得る。たとえば、第1のセクション510aにおける位置(i,j)=(0,0)のタイル502(変数iは行位置に対応し、変数jは列位置に対応する)は、アクティブ化入力を、位置(i,j)=(0,2)におけるタイル502に渡すように構成され得、同様に、第1のセクション510aにおける位置(i,j)=(0,2)のタイル502が、出力データを、位置(i,j)=(0,4)のタイル502に渡すように構成され得る、などである。場合によっては、スキップされない最後のタイル(たとえば位置(i,j)=(0,14)のタイル502)は、アクティブ化入力を別のタイルに渡さない。
同様に、スキップされるタイルは、アクティブ化入力を反対方向に通し得る。たとえば、第1のセクション510aにおける位置(i,j)=(0,15)のタイル502(変数iは行位置に対応し、変数jは列位置に対応する)は、アクティブ化入力を、位置(i,j)=(0,13)におけるタイル502に渡すように構成され得、同様に、第1のセクション510aにおける位置(i,j)=(0,13)のタイル502が、出力データを、位置(i,j)=(0,11)のタイル502に渡すように構成され得る、などである。場合によっては、スキップされない最後のタイル(たとえば位置(i,j)=(0,1)のタイル502)は、アクティブ化入力を別のタイルに渡さない。いくつかの実装形態では、タイルをスキップすることによって、データ経路長および結果として生じるデータレイテンシを半減することにより、ASICチップ500の性能を改善することが可能である。
本明細書で説明されたように、いくつかの実装形態では、タイル502のうちの1つまたは複数は制御情報の記憶専用である。すなわち、制御情報の記憶専用のタイル502は、重み入力やアクティブ化入力などの入力データに対する演算に参加しない。制御情報は、たとえば、制御可能なバスラインをASICチップ500の動作中に構成するための制御データを含むことができ、その結果、ASICチップ500の周囲でデータが移動され得る。制御データは、制御可能なバスラインのコンベヤ要素およびマルチプレクサを制御するための制御信号の形で、制御可能なバスラインに供給され得る。制御データは、制御可能なバスラインの特定のコンベヤ要素が、制御可能なバスラインの次のコンベヤ要素にデータを渡すかどうかを規定し、その結果、データは所定のスケジュールに従ってタイル間で転送される。制御データは、バスラインとの間のデータ転送を実行するかどうかをさらに規定する。たとえば、制御データは、マルチプレクサに、バスラインからメモリおよび/またはタイルの内部の他の回路へとデータを転送するように指示する制御信号を含むことができる。別の例では、制御データは、マルチプレクサに、メモリおよび/またはタイルの内部の回路からバスラインへとデータを転送するように指示する制御信号を含むことができる。別の例では、制御データは、マルチプレクサに、バスラインと通信インターフェース508との間、および/またはバスラインとベクトル処理ユニット504との間でデータを転送するように指示する制御信号を含むことができる。あるいは、本明細書で開示されたように、専用の制御タイルは使用されない。むしろ、そのような場合には、各タイルのローカルメモリが、その特別なタイル向けの制御情報を記憶する。
図6は、ASICチップ500に用いるタイル600の例を示す。各タイル600が、ローカルメモリ602と、メモリ602に結合された計算配列604とを含む。ローカルメモリ602は、計算配列604に近接して配置された物理メモリを含む。計算配列604は複数のセル606を含む。計算配列604の各セル606は、セル606に対するアクティブ化入力および重み入力などのデータ入力に基づいて計算(たとえば乗法および蓄積の演算)を実行するように構成された回路を含む。各セルは、クロック信号のサイクルに基づいて計算(たとえば乗法および蓄積の演算)を実行することができる。計算配列604は、列よりも多くの行、行よりも多くの列、または同数の列と行を有することができる。たとえば、図6に示される例では、計算配列604は、8行×8列に構成された64のセルを含む。特に、16のセル、32のセル、128のセル、または256のセルを有する計算配列などの計算配列の他のサイズも可能である。各タイルが、同数のセルおよび/または同一サイズの計算配列を含むことができる。そこで、ASICチップに関して並列で実行され得る動作の総数は、チップの内部の同一サイズの計算配列を有するタイルの総数に依拠する。たとえば、図5に示された、約1150のタイルを含有しているASICチップ500については、サイクルごとに約72,000の並列計算が可能であることを意味する。使用され得るクロック速度の例は、それだけではないが、225MHz、500MHz、750MHz、1GHz、1.25GHz、1.5GHz、1.75GHz、または2GHzを含む。個々のタイルの計算配列604は、図1に示されたように、タイルのより大きなシストリックアレイのサブセットである。
タイル600に含有されるメモリ602は、たとえばSRAMなどのランダムアクセスメモリ(RAM)を含むことができる。各メモリ602は、図5に示されたASICチップのn個のタイル502に関連した合計のメモリの1/nを記憶するように構成され得る。メモリ602は、単一チップとして、または複数のチップで与えられ得る。たとえば、図6に示されるメモリ602は、4つの単一のポートSRAMとして与えられ、その各々が計算配列604に結合されている。あるいは、メモリ602は、いくつかある構成の中で特に、2つの単一ポートSRAMまたは8つの単一ポートSRAMとして与えられ得る。メモリの統合容量は、誤り訂正コーディングの後に、それだけではないが、たとえば16kB、32kB、64kB、または128kBであり得る。計算配列に対して物理メモリ602を局所的に与えることにより、いくつかの実装形態では、ASIC500の配線密度が大幅に低減され得る。メモリがASIC500の内部に集中する代替構成では、本明細書で説明されたように局所的に与えられるのとは対照的に、メモリ帯域幅の各ビットに対して配線が必要になってしまう。ASIC500の各タイルをカバーするために必要な配線の総数は、ASIC 100の内部の利用可能空間をはるかに超過することになる。対照的に、各タイルに専用メモリを与えると、ASIC500の領域を張り巡らすのに必要な配線の総数がかなり低減され得る。
タイル600は、制御可能なバスラインをも含む。制御可能なバスラインは、複数の異なるグループへと分類され得る。たとえば、制御可能なバスラインは、タイル間でそれぞれの基本的な方向にデータを転送するように構成された汎用の制御可能なバスライン610の第1のグループを含むことができる。すなわち、制御可能なバスライン610の第1のグループは、タイルのグリッドの第1の次元501に沿って第1の方向(図6では「東」と称される)にデータを転送するように構成されたバスライン610aと、タイルのグリッドの第1の次元101に沿って第1の方向と反対の第2の方向(図6では「西」と称される)にデータを転送するように構成されたバスライン610bと、タイルのグリッドの第2の次元103に沿って第3の方向(図6では「北」と称される)にデータを転送するように構成されたバスライン610cと、タイルのグリッドの第2の次元103に沿って第3の方向と反対の第4の方向(図6では「南」と称される)にデータを転送するように構成されたバスライン610dとを含むことができる。汎用バスライン610は、制御データ、アクティブ化入力データ、通信インターフェースとやり取りするデータ、ベクトル処理ユニットとやり取りするデータ、タイル600に記憶されるデータおよび/またはタイル600によって使用されるデータ(たとえば重み入力)を搬送するように構成され得る。タイル600は、制御可能なバスラインを制御するための1つまたは複数の制御要素621(たとえばフリップフロップおよびマルチプレクサ)を含み得、したがってメモリ602との間でデータをルーティングする。
制御可能なバスラインは、本明細書では計算配列の部分和バスライン620と称される制御可能なバスラインの第2のグループをも含むことができる。計算配列の部分和バスライン620は、計算配列604による計算から出力されたデータを搬送するように構成され得る。たとえば、図6に示されるように、バスライン620は、計算配列604の行から取得された部分和データを搬送するように構成され得る。そのような場合には、バスライン620の数は、配列604の行数に一致することになる。たとえば、8×8の計算配列に対して8つの部分和バスライン620があり、その各々が、計算配列604における対応する行の出力に結合されている。計算配列の出力バスライン620は、たとえばASICチップの内部の別のタイルの計算配列に対する入力として、このタイルに結合するようにさらに構成され得る。たとえば、タイル600の配列部分和バスライン620は、タイル600から少なくとも1つのタイル分離れて配置された第2のタイルの計算配列の入力(たとえば部分和620a)を受け取るように構成され得る。次いで、計算配列604の出力が部分和ライン620に加算されて新規の部分和620bを生成し、これがタイル600から出力され得る。次いで、部分和620bは、別のタイルあるいはベクトル処理ユニットに渡されてよい。たとえば、各バスライン620は、ベクトル処理ユニットの対応するセグメント(図5のセグメント506など)に結合されてよい。
図5を参照しながら説明されたように、制御可能なバスラインは、データをバスラインに沿って伝達することを可能にするように構成されたコンベヤ要素(たとえばフリップフロップ)などの回路を含むことができる。いくつかの実装形態では、それぞれの制御可能なバスラインは、各タイル向けに、対応するコンベヤ要素を含む。図5を参照しながらさらに説明されたように、制御可能なバスラインが含み得るマルチプレクサなどの回路は、ASICチップの別々のタイル、ベクトル処理ユニットおよび通信インターフェースの間でのデータの転送を可能にするように構成されている。マルチプレクサは、データに対するソースまたはシンクがあるところならどこにでも配置され得る。たとえば、いくつかの実装形態では、図6に示されるように、マルチプレクサなどの制御回路621は、制御可能なバスラインの交差(たとえば汎用バスライン610aと610dとの交差、汎用バスライン610aと610cとの交差、汎用バスライン610bと610dとの交差、および/または汎用バスライン610bと610cとの交差)に配置され得る。バスラインの交差におけるマルチプレクサは、交差においてバスライン間でデータを転送するように構成され得る。それゆえに、マルチプレクサの適切な動作により、制御可能なバスラインにわたってデータが伝わる方向を変化させることができる。たとえば、汎用バスライン610a上を第1の次元101に沿って伝わるデータは、代わりに第2の次元103に沿って伝わるように、汎用バスライン610dに転送され得る。いくつかの実装形態では、マルチプレクサは、タイル600のメモリ602とデータを転送し合うことができるように、メモリ602に隣接して配置され得る。
本明細書で説明された主題および機能的動作の実施形態は、デジタル電子回路、実体的に実施されたコンピュータソフトウェアまたはファームウェア、本明細書で開示された構造およびそれらの構造的等価物を含むコンピュータハードウェア、あるいはそれらの1つまたは複数の組合せで実施され得る。本明細書で説明された主題の実施形態は、1つまたは複数のコンピュータプログラムとして、すなわち、データ処理装置によって実行するように、あるいはデータ処理装置の動作を制御するように、有形の非一時的記憶媒体上に符号化されたコンピュータプログラムの命令の1つまたは複数のモジュールとして、実施され得る。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムアクセスメモリデバイスもしくはシリアルアクセスメモリデバイス、またはそれらの1つまたは複数の組合せであり得る。代わりに、またはそれに加えて、プログラム命令は、たとえばデータ処理装置で実行するために、適切な受信装置へ伝送するように、情報を符号化するようにマシンで生成された電気信号、光信号、または電磁気信号といった、人為的に生成されて伝搬される信号に基づいて符号化され得る。
「データ処理装置」という用語は、データ処理ハードウェアを指し、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含めて、データ処理用のあらゆる種類の装置、デバイス、およびマシンを包含する。データ処理装置は、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)でもあり得、あるいはこれらをさらに含むことができる。データ処理装置は、ハードウェアに加えて、たとえばプロセッサのファームウェア、プロトコルのスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つまたは複数の組合せを構成するコードといった、コンピュータプログラムの実行環境を生成するコードを、任意選択で含むことができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードと称されたり、記述されたりすることもある)は、コンパイル型言語またはインタープリタ型言語、宣言型言語または手続き型言語を含めて任意の形式のプログラミング言語で記述され得、また、スタンドアロンプログラムとして、あるいはモジュール、コンポーネント、サブルーチン、またはコンピュータ環境で用いる適切な他のユニットとして、任意の形式で配布され得る。コンピュータプログラムは、ファイルシステムの中のファイルに対応することができるが、これは必須ではない。プログラムは、たとえばマークアップ言語のドキュメントに記憶された1つまたは複数のスクリプトといった他のプログラムまたはデータを保持するファイルの一部に、対象となるプログラム専用の単一ファイルに、あるいは、たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイルといった複数の統合されたファイルに、記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置された、もしくは複数のサイトにわたって分散してデータ通信ネットワークで相互に連結された複数のコンピュータ上で、実行されるように、配布され得る。
特定の動作またはアクションを実行するように構成された1つまたは複数のコンピュータのシステムについては、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せがインストールされていて、作動すると、システムに動作またはアクションを実行させることを意味する。特定の動作またはアクションを実行するように構成された1つまたは複数のコンピュータプログラムについては、1つまたは複数のプログラムが、データ処理装置によって実行されたとき、この装置に動作またはアクションを実行させる指令を含むことを意味する。
本明細書で使用される「エンジン」または「ソフトウェアエンジン」は、入力とは異なる出力をもたらす、ソフトウェアで実施された入出力システムを指す。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット(「SDK」)、またはオブジェクトなど、符号化された機能性ブロックであり得る。各エンジンは、たとえばサーバ、携帯電話、タブレットコンピュータ、ノート型コンピュータ、音楽プレーヤ、eブックリーダ、ラップトップまたはデスクトップのコンピュータ、PDA、スマートフォン、あるいは1つまたは複数のプロセッサおよびコンピュータ可読媒体を含む他の固定機器または携帯機器といった、任意の適切なタイプのコンピュータデバイス上で実施され得る。加えて、2つ以上のエンジンが、同一のコンピュータデバイスまたは別々のコンピュータデバイス上で実施され得る。
本明細書で説明された処理および論理の流れは、入力データに作用して出力を生成することによって機能を果たすように1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルコンピュータによって実行され得る。処理の流れや論理の流れは、たとえばFPGA、ASICといった専用論理回路、あるいは専用論理回路と1つまたは複数のプログラムされたコンピュータとの組合せによっても実行され得る。
コンピュータプログラムを実行するのに適するコンピュータは、汎用マイクロプロセッサもしくは専用マイクロプロセッサまたはその両方、あるいは任意の他の種類の中央処理装置に基づくものであり得る。一般に、中央処理装置は、命令およびデータを、読取り専用メモリもしくはランダムアクセスメモリまたはその両方から受け取る。コンピュータの必須要素は、命令を実施または実行するための中央処理装置ならびに命令およびデータを記憶するための1つまたは複数の記憶デバイスである。中央処理装置およびメモリは、専用論理回路を追加することができ、あるいは専用論理回路に組み込むことができる。一般に、コンピュータは、たとえば磁気ディスク、光磁気ディスク、または光ディスクといった、データを記憶するための1つまたは複数の大容量記憶デバイスをも含み、あるいは、これらからデータを受け取り、もしくはこれらへデータを転送し、またはその両方を行うために、これらに対して動作可能に結合される。しかしながら、コンピュータにはそのようなデバイスがなくてもよい。その上に、コンピュータは、別のデバイス、たとえばほんの少数を挙げると、移動電話、携帯情報端末(PDA)、移動式のオーディオプレーヤまたはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)受信器、または移動式記憶デバイス(たとえばユニバーサルシリアルバス(USB)のフラッシュドライブ)の中に組み込まれ得る。
コンピュータプログラムの命令およびデータを記憶するのに適切なコンピュータ可読媒体には、例として、たとえばEPROM、EEPROM、およびフラッシュメモリデバイスといった半導体メモリデバイス、たとえば内蔵ハードディスク、取外し可能ディスクといった磁気ディスクと、光磁気ディスクと、CD-ROMおよびDVD-ROMディスクとを含む、すべての形態の不揮発性記憶デバイスが含まれる。
ユーザとの対話を提供するために、本明細書で説明された主題の実施形態は、ユーザに情報を表示するための、たとえばCRT(ブラウン管)またはLCD(液晶ディスプレイ)のモニタといった表示デバイス、ならびにユーザがコンピュータに入力を与えることができるキーボード、および、たとえばマウス、トラックボール、または存在感知ディスプレイもしくは他のサーフェスといったポインティングデバイスを有するコンピュータ上で実施され得る。ユーザとの対話を提供するために、他の種類のデバイスも同様に使用され得、たとえば、ユーザに提供されるフィードバックは、たとえば視覚フィードバック、聴覚フィードバック、触覚フィードバックといった任意の形式の感覚フィードバックであり得、また、ユーザからの入力は、音響、音声、または触覚の入力を含む任意の形式で受け取られ得る。加えて、コンピュータは、ユーザが使用しているデバイスとの間でドキュメントを送受することにより、たとえばユーザのデバイス上のウェブブラウザから受け取った要求に応答して、このウェブブラウザにウェブページを送ることによって、ユーザと対話することができる。また、コンピュータは、たとえばメッセージングアプリケーションを実行しているスマートフォンといったパーソナルデバイスにテキストメッセージまたは他の形態のメッセージを送り、ユーザから、返報として応答メッセージを受け取ることによって、ユーザと対話することができる。
本明細書で説明された主題の実施形態は、たとえばデータサーバとしてのバックエンドコンポーネント、またはたとえばアプリケーションサーバといったミドルウェアコンポーネント、またはたとえばユーザが本明細書で説明された主題の実装形態と対話することを可能にする、グラフィカルユーザインターフェース、ウェブブラウザ、もしくはアプリケーションを有するクライアントコンピュータといったフロントエンドコンポーネント、あるいは1つまたは複数のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、もしくはフロントエンドコンポーネントの任意の組合せを含む、コンピュータシステムにおいて実施され得る。システムのコンポーネントは、たとえば通信ネットワークであるデジタルデータ通信の任意の形式または媒体によって相互に連結され得る。通信ネットワークの例は、ローカルエリアネットワーク(LAN)およびたとえばインターネットである広域ネットワーク(WAN)を含む。
コンピュータシステムは、クライアントおよびサーバを含むことができる。一般に、クライアントとサーバとは互いに遠く離れていて、典型的には通信ネットワークを通じて対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で動作中の、互いにクライアント対サーバの関係を有する各コンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、たとえば、クライアントとして働くデバイスと対話するユーザにデータを表示したり、ユーザ入力を受け取ったりするために、ユーザデバイスに、たとえばHTMLページといったデータを伝送する。ユーザデバイスにおいて生成された、たとえばユーザとの対話処理の結果といったデータは、サーバにおいてデバイスから受け取られ得る。
前述の実施形態に加えて、以下の実施形態も革新的である。
実施形態1は、
マトリクス演算を少なくとも部分的に並列で実行するように構成されたアクセラレータによって実行されるプログラムの最初の層に対するスケジュールを生成するようにとの要求を受け取るステップであって、プログラムが、最初の層を含む複数の層を定義し、プログラムの各層が、値のそれぞれのマトリクスを使用して実行されるマトリクス演算を定義する、ステップと、
初期の割り当て方向に従って、スケジュールの複数の初期のブロックを割り当てるステップであって、初期の割り当て方向が、複数の初期のブロックが実行される最初の層に対する最初のマトリクスの最初の次元を指定する、ステップと、
次の層の処理を開始する前に必要な、マトリクスの最後のブロックの処理のために、特定のサイクルを選択するステップと、
選択された特定のサイクルの後に処理されるブロックが、最初のマトリクスの別の第2の次元に沿って処理されるように、割り当て方向を切り換えるステップと、
切り換えられた割り当て方向に従って、残るすべての割り当てられていないブロックを割り当てるステップと
を含む方法である。
マトリクス演算を少なくとも部分的に並列で実行するように構成されたアクセラレータによって実行されるプログラムの最初の層に対するスケジュールを生成するようにとの要求を受け取るステップであって、プログラムが、最初の層を含む複数の層を定義し、プログラムの各層が、値のそれぞれのマトリクスを使用して実行されるマトリクス演算を定義する、ステップと、
初期の割り当て方向に従って、スケジュールの複数の初期のブロックを割り当てるステップであって、初期の割り当て方向が、複数の初期のブロックが実行される最初の層に対する最初のマトリクスの最初の次元を指定する、ステップと、
次の層の処理を開始する前に必要な、マトリクスの最後のブロックの処理のために、特定のサイクルを選択するステップと、
選択された特定のサイクルの後に処理されるブロックが、最初のマトリクスの別の第2の次元に沿って処理されるように、割り当て方向を切り換えるステップと、
切り換えられた割り当て方向に従って、残るすべての割り当てられていないブロックを割り当てるステップと
を含む方法である。
実施形態2は、実施形態1に記載の方法であって、特定のサイクルを選択するステップが、
前の層の伝搬レイテンシを計算するステップと、
前の層の伝搬レイテンシに基づいて特定のサイクルを割り当てるステップと
を含む、方法である。
前の層の伝搬レイテンシを計算するステップと、
前の層の伝搬レイテンシに基づいて特定のサイクルを割り当てるステップと
を含む、方法である。
実施形態3は、実施形態1または2に記載の方法であって、特定のサイクルを選択するステップが、
前の層の伝搬レイテンシを計算するステップと、
前の層のアイドルサイクル数を計算するステップと、
前の層の伝搬レイテンシと前の層のアイドルサイクル数との間の最大値を選択するステップと
を含む、方法である。
前の層の伝搬レイテンシを計算するステップと、
前の層のアイドルサイクル数を計算するステップと、
前の層の伝搬レイテンシと前の層のアイドルサイクル数との間の最大値を選択するステップと
を含む、方法である。
実施形態4は、実施形態1から3のいずれか1つに記載の方法であって、スケジュールが、複数の初期のブロックを行優先順で割り当て、残るすべての割り当てられていないブロックを割り当てるステップが、ブロックを列優先順で割り当てる、方法である。
実施形態5は、実施形態4に記載の方法であって、スケジューリングされていない行の数が現在のサイクルと選択された特定のサイクルとの間の差に等しいサイクルを選択するステップを含む、割り当て方向を切り換えるサイクルを選択するステップをさらに含む方法である。
実施形態6は、実施形態4に記載の方法であって、スケジュールが、マトリクスの部分的な行のみに沿って複数の初期のブロックを割り当てる、方法である。
実施形態7は、実施形態6に記載の方法であって、スケジュールが、初期の複数の部分的な行と、初期の部分的な行よりも小さい後続の複数の部分的な行とを割り当てる、方法である。
実施形態8は、実施形態7に記載の方法であって、初期の部分的な行は、ceiling(N)によって与えられる長さを有し、後続の部分的な行は、floor(N)によって与えられる長さを有し、Nは、選択されたサイクルを前の層におけるマトリクスのブロック高さで割ることによって与えられる、方法である。
実施形態9は、実施形態4に記載の方法であって、スケジュールが、マトリクスの対角線によって定義された空間を満たすために、行優先順で初期のブロックを割り当てる、方法である。
実施形態10は、実施形態9に記載の方法であって、割り当て方向を切り換えるステップが特定の選択されたサイクルで生じる、方法である。
実施形態11は、実施形態1から10のいずれか1つに記載の方法であって、アクセラレータが複数のタイルを有し、各層が複数のタイルのそれぞれのタイルによって計算される、方法である。
実施形態12は、実施形態1から10のいずれか1つに記載の方法であって、アクセラレータが、両方の層の動作を実行する単一のタイルを有する、方法である。
実施形態13は、1つまたは複数のコンピュータと、命令を記憶している1つまたは複数の記憶デバイスとを備えるシステムであって、1つまたは複数のコンピュータが、上記命令を実行することにより、実施形態1から12のいずれか1つに記載の方法を実行する、システムである。
実施形態14は、コンピュータプログラムを用いて符号化されたコンピュータ記憶媒体であって、データ処理装置が、コンピュータプログラムに含まれる命令を実行することにより、実施形態1から12のいずれか1つに記載の方法を実行する、コンピュータ記憶媒体である。
本明細書は多くの特定の実装形態の詳細を含むが、これらは、何らかの発明の範囲に対する限定または特許請求され得るものの範囲に対する限定としてではなく、特定の発明の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。本明細書の個別の実施形態の文脈で説明された特定の特徴は、1つの実施形態の中で組み合わせて実施することもできる。反対に、1つの実施形態の文脈で説明された様々な特徴はまた、複数の実施形態で別個に実施され得、または任意の適切なサブ組合せで実施され得る。その上に、各特徴は、上記ではある組合せにおいて働くように記載されており、場合によっては最初からそのように請求されているが、請求された組合せの1つまたは複数の特徴は、場合によってはその組合せから実現されてもよく、請求された組合せは、部分組合せまたは部分組合せの変形形態を対象とするものでもよい。
同様に、動作は特定の順序で図面に示されているが、これは、望ましい結果を達成するために、そのような動作が、示される特定の順序または連続した順序で実行されること、あるいはすべての図示の動作が実行されることを必要とするものとして理解されるべきではない。ある特定の環境では、マルチタスキングおよび並列処理が有利であり得る。その上に、上記で説明した実施形態における様々なシステムモジュールと構成要素との分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきでなく、説明されたプログラム構成要素およびシステムは、概して、単一のソフトウェア製品において互いに統合されるか、または複数のソフトウェア製品にパッケージングされ得ることを理解されたい。
主題の特定の実施形態が説明されてきた。他の実施形態は、以下の特許請求の範囲内に入る。たとえば、特許請求の範囲で列挙される作用は、異なる順序で実行しても、望ましい結果を達成することができる。一例として、添付図に示された処理は、望ましい結果を達成するのに、示された特定の順番または順序を必ずしも必要とするものではない。ある特定のいくつかの事例では、マルチタスキングおよび並列処理が有利であり得る。
102 第1の層
104 第2の層
106 第1のスケジュール
107 第1のスケジュール
108 第2のスケジュール
109 第2のスケジュール
110 第1の重みマトリクス
111 マトリクス
115 入力ベクトル
117 出力ベクトル
119 出力ベクトル
120 第2の重みマトリクス
121 マトリクス
500 ASIC
501 第1の次元
502 タイル
503 第2の次元
504 ベクトル処理ユニット
506 セグメント
508 通信インターフェース
508a 通信インターフェース
508b 通信インターフェース
510a セクション
510b セクション
510c セクション
510d セクション
600 タイル
602 ローカルメモリ
604 計算配列
606 セル
610a バスライン
610b バスライン
610c バスライン
610d バスライン
620 部分和バスライン
620a 部分和
620b 部分和
621 制御要素
104 第2の層
106 第1のスケジュール
107 第1のスケジュール
108 第2のスケジュール
109 第2のスケジュール
110 第1の重みマトリクス
111 マトリクス
115 入力ベクトル
117 出力ベクトル
119 出力ベクトル
120 第2の重みマトリクス
121 マトリクス
500 ASIC
501 第1の次元
502 タイル
503 第2の次元
504 ベクトル処理ユニット
506 セグメント
508 通信インターフェース
508a 通信インターフェース
508b 通信インターフェース
510a セクション
510b セクション
510c セクション
510d セクション
600 タイル
602 ローカルメモリ
604 計算配列
606 セル
610a バスライン
610b バスライン
610c バスライン
610d バスライン
620 部分和バスライン
620a 部分和
620b 部分和
621 制御要素
Claims (12)
- マトリクス演算を少なくとも部分的に並列で実行するように構成されたアクセラレータによって実行されるプログラムの最初の層に対するスケジュールを生成するようにとの要求を受け取るステップであって、前記プログラムが、前記最初の層を含む複数の層を定義し、前記プログラムの各層が、値のそれぞれのマトリクスを使用して実行されるマトリクス演算を定義する、ステップと、
初期の割り当て方向に従って、前記スケジュールの複数の初期のブロックを割り当てるステップであって、前記初期の割り当て方向が、前記複数の初期のブロックが実行される前記最初の層に対する最初のマトリクスの最初の次元を指定する、ステップと、
次の層の処理を開始する前に必要な、マトリクスの最後のブロックの処理のために、特定のサイクルを選択するステップと、
前記選択された特定のサイクルの後に処理されるブロックが、前記最初のマトリクスの別の第2の次元に沿って処理されるように、前記割り当て方向を切り換えるステップと、
前記切り換えられた割り当て方向に従って、残るすべての割り当てられていないブロックを割り当てるステップと
を含むコンピュータ実施方法。 - 前記特定のサイクルを選択するステップが、
前の層の前記伝搬レイテンシを計算するステップと、
前記前の層の前記伝搬レイテンシに基づいて前記特定のサイクルを割り当てるステップと
を含む、請求項1に記載の方法。 - 前記特定のサイクルを選択するステップが、
前の層の前記伝搬レイテンシを計算するステップと、
前記前の層のアイドルサイクル数を計算するステップと、
前記前の層の前記伝搬レイテンシと前記前の層の前記アイドルサイクル数との間の最大値を選択するステップと
を含む、請求項1に記載の方法。 - 前記スケジュールが前記複数の初期のブロックを行優先順で割り当て、残るすべての割り当てられていないブロックを割り当てるステップが列優先順序でブロックを割り当てる、請求項1に記載の方法。
- スケジューリングされていない行の数が現在のサイクルと前記選択された特定のサイクルとの間の差に等しいサイクルを選択するステップを含む、前記割り当て方向を切り換えるサイクルを選択するステップをさらに含む、請求項4に記載の方法。
- 前記スケジュールが前記マトリクスの部分的な行のみに沿って前記複数の初期のブロックを割り当てる、請求項4に記載の方法。
- 前記スケジュールが、初期の複数の部分的な行と、前記初期の部分的な行よりも小さい後続の複数の部分的な行とを割り当てる、請求項6に記載の方法。
- 前記初期の部分的な行が、ceiling(N)によって与えられる長さを有し、前記後続の部分的な行が、floor(N)によって与えられる長さを有し、Nは、前記選択されたサイクルを前の層におけるマトリクスのブロック高さで割ることによって与えられる、請求項7に記載の方法。
- 前記スケジュールが、前記マトリクスの対角線によって定義された空間を満たすために、前記行優先順で前記初期のブロックを割り当てる、請求項4に記載の方法。
- 前記割り当て方向を切り換えるステップが前記特定の選択されたサイクルで生じる、請求項9に記載の方法。
- 前記アクセラレータが複数のタイルを有し、各層が前記複数のタイルのそれぞれのタイルによって計算される、請求項1に記載の方法。
- 前記アクセラレータが、両方の層の動作を実行する単一のタイルを有する、請求項1に記載の方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962890351P | 2019-08-22 | 2019-08-22 | |
US62/890,351 | 2019-08-22 | ||
PCT/US2020/047254 WO2021035079A1 (en) | 2019-08-22 | 2020-08-20 | Propagation latency reduction |
JP2021577625A JP7326501B2 (ja) | 2019-08-22 | 2020-08-20 | 伝搬レイテンシの短縮 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021577625A Division JP7326501B2 (ja) | 2019-08-22 | 2020-08-20 | 伝搬レイテンシの短縮 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023145676A true JP2023145676A (ja) | 2023-10-11 |
Family
ID=72428336
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021577625A Active JP7326501B2 (ja) | 2019-08-22 | 2020-08-20 | 伝搬レイテンシの短縮 |
JP2023126257A Pending JP2023145676A (ja) | 2019-08-22 | 2023-08-02 | 伝搬レイテンシの短縮 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021577625A Active JP7326501B2 (ja) | 2019-08-22 | 2020-08-20 | 伝搬レイテンシの短縮 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20220318638A1 (ja) |
EP (1) | EP3973394A1 (ja) |
JP (2) | JP7326501B2 (ja) |
KR (2) | KR20240091068A (ja) |
CN (1) | CN114026543A (ja) |
TW (2) | TWI817490B (ja) |
WO (1) | WO2021035079A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113469631B (zh) * | 2021-09-03 | 2021-12-10 | 浙江凯乐士科技集团股份有限公司 | 拣选调度方法、设备及矩阵分拣*** |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7814297B2 (en) * | 2005-07-26 | 2010-10-12 | Arm Limited | Algebraic single instruction multiple data processing |
US8181003B2 (en) * | 2008-05-29 | 2012-05-15 | Axis Semiconductor, Inc. | Instruction set design, control and communication in programmable microprocessor cores and the like |
US8766666B2 (en) * | 2010-06-10 | 2014-07-01 | Micron Technology, Inc. | Programmable device, hierarchical parallel machines, and methods for providing state information |
US9378065B2 (en) * | 2013-03-15 | 2016-06-28 | Advanced Elemental Technologies, Inc. | Purposeful computing |
US9501325B2 (en) * | 2014-04-11 | 2016-11-22 | Maxeler Technologies Ltd. | System and method for shared utilization of virtualized computing resources |
US20170249282A1 (en) * | 2014-10-08 | 2017-08-31 | Analog Devices, Inc. | Configurable pre-processing array |
CN107168683B (zh) * | 2017-05-05 | 2020-06-09 | 中国科学院软件研究所 | 申威26010众核cpu上gemm稠密矩阵乘高性能实现方法 |
US10671349B2 (en) | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
US10482337B2 (en) | 2017-09-29 | 2019-11-19 | Infineon Technologies Ag | Accelerating convolutional neural network computation throughput |
CN111194451B (zh) * | 2017-10-20 | 2024-02-27 | 渊慧科技有限公司 | 门控激活单元运算的并行执行 |
CN108462495A (zh) * | 2018-04-03 | 2018-08-28 | 北京航空航天大学 | 一种基于gpu的多元ldpc码高速并行译码器及其译码方法 |
-
2020
- 2020-08-20 WO PCT/US2020/047254 patent/WO2021035079A1/en unknown
- 2020-08-20 JP JP2021577625A patent/JP7326501B2/ja active Active
- 2020-08-20 KR KR1020247017680A patent/KR20240091068A/ko active Application Filing
- 2020-08-20 US US17/636,662 patent/US20220318638A1/en active Pending
- 2020-08-20 EP EP20768427.5A patent/EP3973394A1/en active Pending
- 2020-08-20 KR KR1020217042808A patent/KR102670905B1/ko active IP Right Grant
- 2020-08-20 CN CN202080047574.8A patent/CN114026543A/zh active Pending
- 2020-08-21 TW TW111117324A patent/TWI817490B/zh active
- 2020-08-21 TW TW109128654A patent/TWI767303B/zh active
-
2023
- 2023-08-02 JP JP2023126257A patent/JP2023145676A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021035079A1 (en) | 2021-02-25 |
US20220318638A1 (en) | 2022-10-06 |
JP2022544739A (ja) | 2022-10-21 |
KR20240091068A (ko) | 2024-06-21 |
TW202301172A (zh) | 2023-01-01 |
EP3973394A1 (en) | 2022-03-30 |
JP7326501B2 (ja) | 2023-08-15 |
KR20220011740A (ko) | 2022-01-28 |
TWI767303B (zh) | 2022-06-11 |
TWI817490B (zh) | 2023-10-01 |
KR102670905B1 (ko) | 2024-05-31 |
CN114026543A (zh) | 2022-02-08 |
TW202109341A (zh) | 2021-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI767310B (zh) | 處理器、運算方法及電腦程式產品 | |
JP2023109933A (ja) | ニューラルネットワークプロセッサにおけるバッチ処理 | |
US20240104012A1 (en) | Topological scheduling | |
JP7476299B2 (ja) | 同期プロセッサのためのコンパイル | |
JP2023145676A (ja) | 伝搬レイテンシの短縮 | |
TW202424806A (zh) | 在神經網路中傳播延遲減少之電腦實施方法 | |
TWI776212B (zh) | 用於積體電路加速器之系統、方法及電腦儲存媒體 | |
TW202316365A (zh) | 用於實施分組卷積之神經網路架構 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230803 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230803 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20240716 |