JP7158543B2 - ニューラルネットワーク命令セットアーキテクチャ - Google Patents

ニューラルネットワーク命令セットアーキテクチャ Download PDF

Info

Publication number
JP7158543B2
JP7158543B2 JP2021123193A JP2021123193A JP7158543B2 JP 7158543 B2 JP7158543 B2 JP 7158543B2 JP 2021123193 A JP2021123193 A JP 2021123193A JP 2021123193 A JP2021123193 A JP 2021123193A JP 7158543 B2 JP7158543 B2 JP 7158543B2
Authority
JP
Japan
Prior art keywords
tensor
memory
neural network
computation
network layer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021123193A
Other languages
English (en)
Other versions
JP2021184276A (ja
Inventor
ナラヤナスワミ,ラビ
ウ,ドン・ヒョク
テマム,オリビエ
カイタン,ハーシット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2021184276A publication Critical patent/JP2021184276A/ja
Priority to JP2022163303A priority Critical patent/JP7485740B2/ja
Application granted granted Critical
Publication of JP7158543B2 publication Critical patent/JP7158543B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Image Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

背景
この明細書は、ディープニューラルネットワーク(DNN: Deep Neural Network)の計算のための命令セットに関する。
ニューラルネットワークは、受け取った入力についてたとえば分類といった出力を生成するためにモデルの1つ以上の層を使用する機械学習モデルである。いくつかのニューラルネットワークは、出力層に加えて1つ以上の隠れ層を含んでいる。各隠れ層の出力は、ネットワークにおける次の層への入力として使用される。すなわち、ネットワークの次の隠れ層または出力層への入力として使用される。ネットワークの各層は、パラメータのそれぞれのセットの現在値に従って、受け取った入力から出力を生成する。
いくつかのニューラルネットワークは、1つ以上の畳み込みニューラルネットワーク層を含んでいる。各畳み込みニューラルネットワーク層は、カーネルの関連付けられるセットを有する。各カーネルは、ユーザによって作成されるニューラルネットワークモデルによって確立される値を含む。いくつかの実現例では、カーネルは特定の画像輪郭、形状または色を識別する。カーネルは、重み入力のマトリクス構造として表わされ得る。各畳み込み層はさらに、アクティベーション入力のセットを処理し得る。アクティベーション入力のセットもマトリクス構造として表わされ得る。
概要
この明細書に記載される主題の革新的な1つの局面は、コンピュータによって実施される方法において具現化され得る。当該方法は、処理ユニットが、テンソル計算を実行するためのパラメータを特定する命令を受け取ることを含む。当該方法は、前記命令を受け取ることに応答して、前記処理ユニットが、複数のループを含むループネストを実行することによって、前記テンソル計算を実行することを含み得、前記ループネストの構造は、前記命令の前記パラメータのうちの1つ以上に基づいて定義される。これらおよび他の実現例は各々、随意に以下の特徴のうち1つ以上を含み得る。たとえば、前記テンソル計算は、ニューラルネットワーク層の計算の少なくとも一部分であり得る。前記命令によって特定される前記パラメータは、前記ニューラルネットワーク層のタイプを特定するパラメータを含み得、前記ループネストの前記構造は、前記ニューラルネットワーク層の前記タイプによって少なくとも部分的に定義され得る。これにより、複数のループを含むループネストを実行することは、ネスト化ループの構造によって特定される順序でテンソルのエレメントに対してトラバーサルを実行することを指し得、前記構造はたとえば、ループネスティングの深さと、スタートおよびエンドインデックスと、ストライド(stride)と、各ループの方向とによってそれぞれ特定される。
いくつかの実現例では、前記テンソル計算は、ニューラルネットワーク層の計算の少なくとも一部分である。いくつかの実現例では、前記命令によって特定される前記データ値は、前記ニューラルネットワーク層のタイプを特定する少なくとも1つの値を含んでおり、前記ループネストの前記構造は、前記ニューラルネットワーク層の前記タイプによって少なくとも部分的に定義される。いくつかの実現例では、前記命令は、前記処理ユニットをテンソルの次元の少なくとも1つのエレメントにアクセスさせ、前記エレメントは、前記テンソル計算の実行中に前記ループネストを実行する際に使用される少なくとも1つの
インデックスの部分である。いくつかの実現例では、前記命令は、前記処理ユニットに記憶媒体におけるアレイの少なくとも1つのメモリアドレスにアクセスさせ、前記アレイの前記メモリアドレスは、前記テンソル計算の実行中に前記処理ユニットによって読み出される変数を含む。
いくつかの実現例では、前記テンソル計算を実行することは、前記処理ユニットが、テンソルトラバーサルユニット(TTU)に少なくとも1つの制御信号を提供して、前記テンソル計算の実行中に前記ループネストを実行する際に使用されるループインデックスを前記TTUに発行させることを含む。いくつかの実現例では、上記方法は、前記処理ユニットが前記TTUに少なくとも1つの制御信号を提供して、前記テンソル計算の実行中に前記ループネストを実行する際に使用される参照されたアレイエレメントのためのアドレスを前記TTUのアレイレファレンスに生成させることをさらに含む。いくつかの実現例では、命令は、前記TTUに関連付けられるアレイレファレンスのためのアドレスを生成するよう、第2のTTUカウンタと合計される第1のTTUカウンタを示す。
いくつかの実現例では、前記テンソル計算を実行することは、前記処理ユニットが、前記テンソル計算の実行に関連付けられる1つ以上のオペランドを管理する第1の同期プロシージャを実行することを含み、オペランドを管理することは、同期フラグ条件に基づいて1つ以上のループネストをストールすることを含む。いくつかの実現例では、前記テンソル計算を実行することは、前記処理ユニットが、前記ループネストの特徴に関連付けられるカウンタをインクリメントすることを管理する第2の同期プロシージャを実行することを含む。
この明細書に記載される主題の別の革新的な局面は、電子システムにおいて具現化され得る。当該電子システムは、前記電子システムに配置されるとともに1つ以上の処理デバイスを含む処理ユニットと、命令を格納するための1つ以上のマシン読取可能なストレージデバイスとを含み、前記命令は、動作を実行するように前記1つ以上の処理デバイスによって実行可能であり、前記動作は、テンソル計算を実行するためのデータ値を特定する命令を前記処理ユニットが受け取ることと、前記命令を受け取ることに応答して、複数のループを含むループネストを実行することによって、前記テンソル計算を前記処理ユニットが実行することとを含み、前記ループネストの構造は、前記命令の前記データ値のうちの1つ以上に基づいて定義される。
この明細書に記載される主題のさらに別の革新的な局面は、処理ユニットによって実行可能な命令を含む一時的でないコンピュータ読取可能記憶媒体において具現化され得、前記命令は、その実行の際には、前記処理ユニットが、テンソル計算を実行するためのデータ値を特定する命令を受け取ることと、前記命令を受け取ることに応答して、前記処理ユニットが、複数のループを含むループネストを実行することによって、前記テンソル計算を実行することとを含む動作を前記処理ユニットに実行させ、前記ループネストの構造は、前記命令の前記データ値のうちの1つ以上に基づいて定義される。
この局面および他の局面の他の実現例は、対応するシステム、装置、および、上記方法のアクションを実行するように構成されコンピュータストレージデバイス上でエンコードされるコンピュータプログラムを含む。1つ以上のコンピュータのシステムは、システムにインストールされ、オペレーションにおいてシステムにアクションを実行させるソフトウェア、ファームウェア、ハードウェアまたはそれらの組み合わせによってそのように構成され得る。1つ以上のコンピュータプログラムは、データ処理装置によって実行されると当該装置にアクションを実行させる命令を有することによって、そのように構成され得る。
この明細書に記載される主題は、以下の利点のうちの1つ以上を実現するように特定の実施形態において実現され得る。処理ユニットは、1つの命令で、ディープネスト化ループを繰り返すようプログラムを開始し得る。処理ユニットは、テンソル計算を実行するためのデータ値でエンコードされる受け取られた命令を実行し得る。処理ユニットの計算バンド幅は、1つ以上の計算を実行するためにテンソルをトラバースする際に、プロセッサが実行する必要がある命令の数を低減することにより増加される。所与のニューラルネットワーク層についてのテンソル計算を実行するための命令は、エンコードされ得、例示的なハードウェアコンピューティングシステムの1つ以上のコンピューティングシステムの間で分散され得る。さまざまな計算システムへのエンコードされた命令の分散は、単一のシステム内での計算バンド幅の増加を可能にする。単一のシステムが所与のテンソルに必要とされる合計の計算のサブセットのみを担うので、計算システムにおける命令量が低減される。
この明細書に記載される主題の1つ以上の実現例の詳細を添付の図面および以下の説明で述べる。当該主題の他の潜在的な特徴、局面および利点は、記載、図面および添付の請求の範囲から明白になるであろう。
例示的な計算システムのブロック図である。 例示的なテンソルトラバーサルユニットを示す図である。 OPコードと、図1の例示的な計算システムによって少なくとも部分的に実行される対応するオペレーションとを含む例示的なテーブルを示す図である。 例示的なアクティベーションテンソル、例示的な重みテンソルおよび例示的な出力テンソルを示す図である。 図1の例示的な計算システムの処理ユニットによって実行され得る例示的なループネストを示す図である。 コンピュータによって実施される方法により、テンソル計算を実行するための処理の例を示すフロー図である。
さまざまな図面における同様の参照番号および指示は、同様の要素を示す。
詳細な説明
この明細書に記載される主題は、ワークロードを実行する処理ユニットが、計算を実行している間に高いパフォーマンスを達成し得るように機械学習推論ワークロードを促進する、コンピュータによって実施される処理または方法に関する。この明細書に記載される処理および方法は、タイルのセットとして構成されるハードウェアコンピューティングシステム内で実行され得る。タイルの各々は、独立(self-contained)しており、ニューラルネットワーク層によって必要とされる計算の少なくとも部分を独立して実行し得る。
ニューラルネットワーク内で実行される計算処理は、1つ以上のサイクルでパラメータ/重みテンソルで入力テンソルを乗算し、多くのサイクルに亘って積の累算を実行することからなり得る。入力重み乗算は、入力テンソルまたはマトリックスの行と乗算された各重みエレメントの積和として記述され得る。ディープニューラルネットワーク(DNN)は、互いにフィードを行う複数の層を含む。所与の層のためのテンソル計算を含む推論ワークロードは、この明細書に記載される方法によって促進される。この明細書に記載される主題はさらに、開示される技術を使用する画像認識および/または分類方法/システムと、ニューラルネットワーク命令セットアーキテクチャを使用するハードウェアとに関し得る。
一般に、ソフトウェアアルゴリズムがN次元のテンソルを処理することによりテンソル
計算を実行する場合、各ループがN次元のテンソルの各次元をトラバースすることを担うネスト化ループが使用され得る。多次元テンソルはマトリックスまたは多次元マトリックスであり得る。N次元のテンソルの各次元は、1つ以上のエレメントを含み得、各エレメントはそれぞれのデータ値を格納し得る。たとえば、テンソルはプログラムにおいて変数であり得、当該変数は3次元を有し得る。第1の次元は、300個のエレメントの長さを有し得、第2の次元は、1000個のエレメントの長さを有し得、第3の次元は、20個のエレメントの長さを有し得る。
ネスト化ループにおいてテンソルをトラバースすることは、エレメントの対応するデータ値をロードまたは格納するよう、エレメントのメモリアドレス値の計算を必要とする。たとえば、forループがネスト化ループであり、3つのループインデックス変数によってトラッキングされる3つのループが3次元のテンソルを通じてトラバースするようネスト化され得る。いくつかの場合において、プロセッサは、外側ループインデックス変数に対する内側ループのループ境界をセットするといった、ループ境界条件を実行する必要があり得る。たとえば、ネスト化ループの最も内側のループから出るべきか否かを決定する際に、プログラムは、最も内側のループのループインデックス変数の現在値を、ネスト化ループの最も外側のループのループインデックス変数の現在値と比較し得る。
3次元のテンソルをトラバースすることに関連付けられる計算タスクは、分岐命令および整数演算命令といった有意な数の命令を必要とし得る。各ループ境界が小さくかつループの数が大きい場合、メモリアドレス計算およびテンソル次元トラバーサルのための計算は、全体的な実行時間の有意な部分を占め得、全体の性能を非常に低下させ得る。以下により詳細に記載されるように、テンソル計算を実行するためのデータ値でエンコードされた命令を受け取る処理ユニットによって実行可能な方法は、1つ以上の計算を実行するためにテンソルをトラバースする際にプロセッサが実行する必要がある命令の数を低減することによって、処理ユニットの計算バンド幅(computation bandwidth)を増加し得る。
いくつかの実現例では、計算バンド幅はたとえば、テンソル上で実行され得るオペレーションの最大レート、または、テンソル上で実行され得るオペレーションの数を指す。
所与の層についてテンソル計算を実行するための命令は、エンコードされ、例示的なハードウェアコンピューティングシステム内において1つ以上のコンピューティングシステム(以下では計算タイルとして記載される)の間で分散され得る。さまざまな計算タイルへのエンコードされた命令の分散によって、単一のタイル内での計算バンド幅の増加が可能になる。さらに複数の計算タイルの間で計算を分散することによって、テンソルをトラバースする際に計算タイルの処理ユニットによって消費される命令の数が、(現在のシステムと比較して)低減される。そのため、命令を消費することはたとえば、計算タイルの処理ユニットによって1つ以上の命令を実行することを指す。単一のタイルは所与のテンソルに必要とされる合計の計算のサブセットのみを担うので、計算タイルにおける命令量が低減され得る。
ニューラルネットワーク推論ワークロードのための内積およびマトリックス乗算を含むニューラルネットワークテンソル計算を促進するためのハードウェアコンピューティングシステムに関する付加的な詳細および説明は、2016年10月27日に出願された、「ニューラルネットワーク計算タイル(Neural Network Compute Tile)」という名称を有
する米国特許出願番号第15/335,769号に記載されている。米国特許出願番号第15/335,769号の開示は全文、明確に本願明細書において参照により援用される。
図1は、ニューラルネットワーク層のための計算を実行するよう1つ以上のテンソルをトラバースするための例示的なコンピューティングシステム100のブロック図を示す。
示されるように、コンピューティングシステム100は、処理ユニット102と、記憶媒体104と、テンソルトラバーサルユニット(TTU: tensor traversal unit)106と、乗累算(MAC:multiply accumulate)オペレータ108と、アクティベーション
ユニット110とを含む。単一のTTUが示されているが、システム100は、所与のニューラルネットワーク層についてテンソル計算を処理するために1つ以上の計算タイルが使用される場合に、テンソルトラバーサルオペレーションと、メモリアクセスオペレーションとを処理するよう、2つ以上のTTU106を含み得る。同様に、単一のMACが示されているが、システム100は複数のMACオペレータ108を含み得る。
処理ユニット102は、記憶媒体104に格納された命令またはプログラムコード、または、別のストレージデバイスに格納された他の命令/コードを含む、コンピューティングシステム100内での実行のための命令を処理するように構成される。処理ユニット102は1つ以上のプロセッサを含み得る。記憶媒体104は、アクティベーションを格納するための第1のバンク112と、重みを格納するための第2のバンク114とを含む1つ以上のメモリバンクまたはユニットを含み得る。いくつかの実現例では、記憶媒体104は1つまたは複数の揮発性メモリユニットである。他のいくつかの実現例では、記憶媒体104は、たとえばリードオンリメモリ(ROM: read-only memory)および/また
は電気的消去可能プログラマブルリードオンリメモリ(EEPROM: electrically erasable programmable read-only memory)のような1つまたは複数の不揮発性メモリユニットである。記憶媒体104はさらに、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくは他の構成におけるデバイスを含むデバイスのアレイといった、コンピュータ読取可能媒体の別の形態にあり得る。
命令セット103は、処理ユニット102によって実行されると、たとえば、第1のバンク112のメモリアドレス位置にアクティベーションを格納することと、第2のバンク114のメモリアドレス位置に重みを格納することとを含む1つ以上のタスクを処理ユニット102に実行させる。さらに、命令103はさらに、第1のバンク112および第2のバンク114からの格納されたデータにアクセスすることと、当該アクセスされたデータをMACオペレータ108に提供することとを処理ユニット102に行わせ得る。以下により詳細に記載されるように、MACオペレータ108は、部分和を生成するか、または、アクティベーションユニット110に提供される出力アクティベーションを生成するかのいずれかを行うよう、アクティベーションを重みと乗算することを含み得る乗算オペレーションを実行し得る。
一般に、コンピューティングシステム100は、出力116を生成するために命令セット103内に含まれる1つ以上の命令を処理する。命令セット103は、テンソルオペレーション(tensorop)命令またはダイレクトメモリアクセスオペレーション(DMAop: direct memory access operation)命令の少なくとも1つを含み得る。コン
ピューティングシステム100は、複数の線形代数計算を含むテンソル計算を実行するために、少なくとも1つのtensoropおよび少なくとも1つのDMAop命令を実行するように構成され得る。
いくつかの実現例では、テンソル計算を実行することは、テンソルの特定の次元のエレメントに対応するメモリアドレス位置にアクセスするようDMAop命令を実行することを含んでおり、少なくとも1つのメモリアドレス位置はテンソルのエレメントについてのデータ値を格納する。テンソル計算は、テンソルの特定の次元に沿ってエレメントをトラバースするようtensoropを実行することをさらに含み得る。いくつかの実現例では、テンソル計算を実行することは、ニューラルネットワーク層のための出力値を作り出
すために、アクティベーションテンソルのエレメントについてのデータ値をパラメータまたは重みテンソルのエレメントについてのデータ値と乗算することに対応する。
示されるように、TTU106は命令バッファ124を含み得る。単一の命令バッファ124が示されているが、計算システム100は、複数の命令バッファ124を含んでもよい。さらに、システム100は複数のTTU106を含み得、各TTU106は1つ以上の命令バッファ124を含み得る。いくつかの実現例では、システム100内の異なる命令バッファ124は、tensorop命令バッファおよびDMAop命令バッファを含み得る。以下により詳細に記載されるように、システム100によって受け取られるとともに処理ユニット102によって実行される命令は、tensorop命令およびDMAop命令のうちの1つを含み得る。いくつかの実現例では、受け取られた命令は、処理ユニット102による実行に先立って命令バッファ124に格納される。
図4を参照して以下により詳細に論じられるように、アクティベーションは、入力テンソルのエレメントに対応するそれぞれのメモリアドレス位置にて、第1のバンク112へあらかじめロードされ得る。同様に、重みは、重みテンソルのエレメントに対応するそれぞれのメモリアドレス位置にて、第2のバンク114へあらかじめロードされ得る。いくつかの実現例では、命令、アクティベーションおよび重みは、ニューラルネットワークハードウェアコンピューティングシステムに関連付けられる外部またはより高いレベルの制御デバイスからシステム100に提供される。
一般に、処理ユニット102がテンソルの特定のエレメントにアクセスするための1つ以上の命令を実行すると、テンソルトラバーサルユニット106は、特定のエレメントの値を表わすデータを読み出すよう処理ユニット102が記憶媒体104にアクセスし得るように、当該エレメントのメモリアドレスを決定する。たとえば、記憶媒体104に格納された命令は、処理ユニット102によって実行され得るネスト化ループプログラムのためのプログラムコードを含み得る。
ネスト化ループプログラムは、命令セット103によって提供されるデータ値に基づいて決定されるある範囲の値を有し得る複数の変数を含み得る。処理ユニット102は、少なくとも2つの多次元アレイのそれぞれのエレメントに対応するメモリアドレス位置へTTU106をアクセスさせるよう、ネスト化ループプログラムのためのプログラムコードを実行し得る。たとえば、複数の変数は、複数の内側および外側ループを含む例示的なディープループネストをインスタンス化するためのデータ値を含み得る。いくつかの実現例では、複数の変数およびデータ値によって、TTU106は、図4Bを参照して以下に記載されるループネスト(たとえばディープループネスト402)のようなディープループネストをインスタンス化し得る。
ネスト化ループに関連付けられる現在のインデックス変数値に基づいて、TTU106は、多次元アレイ変数の第1のエレメントからのオフセットを表わすオフセット値を決定し得る。次いで、処理ユニット102は、オフセット値を使用して記憶媒体から2次元アレイ変数の特定のエレメントにアクセスし得る。
テンソルトラバーサルユニット106は、1つ以上のテンソルに関連付けられるステータスを決定するように構成される。ステータスは、ループ境界値、現在のループインデックス変数値、メモリアドレス値を計算するための次元乗算器、および/または、分岐ループ境界を扱うためのプログラムカウンタ値を含み得る。テンソルトラバーサルユニット106は、テンソルステータスエレメント122および算術論理演算ユニットを含んでいる。テンソルステータスエレメント122の各々は、たとえばレジスタまたは任意の他の好適なストレージ回路といったストレージエレメントであり得る。いくつかの実現例では、
テンソルステータスエレメント122は、物理的または論理的に、異なるグループへと配され得る。
いくつかの実現例では、テンソルステータスエレメント122のあるグループが、物理的または論理的に多次元アレイへと配され得る。たとえば、テンソルステータスエレメント122の各グループは、物理的にまたは論理的に2次元アレイへと配され得る。算術論理演算ユニットは、算術および論理演算を実行するように構成される1つ以上の算術論理演算ユニット(ALU: arithmetic logic unit)を含む。たとえば、算術論理演算ユニットは、足し算、引き算、乗算、除算、論理AND、論理OR、または、任意の他の好適な算術および論理演算を実行するように構成されるデジタル回路を含み得る。
図2は、テンソルトラバーサルユニットのテンソルステータスエレメント200の例示的なセットを示す。テンソルステータスエレメント200は、テンソルトラバーサルユニット106のテンソルステータスエレメント122に対応し得る。テンソルトラバーサルユニット200は、テンソルインデックスエレメント202のグループと、テンソル境界エレメント204のグループと、次元乗算器エレメント206のグループとを含む。テンソルインデックスエレメント202は、M個の行およびN個の列を有する2Dアレイとして物理的または論理的に配され得、MおよびNは1以上の整数である。いくつかの実現例では、テンソルインデックスエレメント202の各行は、テンソルについてのテンソルインデックス情報を表わし得る。たとえば、プログラムが2つのアレイ変数V1およびV2を定義する場合、テンソルトラバーサルユニットは、アレイ変数V1およびV2についてテンソルインデックス情報をそれぞれトラッキングするよう、行202aおよび202bを割り当て得る。いくつかの実現例では、テンソルインデックスエレメント202の各列は、テンソルに関連付けられるネスト化ループインデックス変数値についてのテンソルインデックス情報を表わし得る。たとえば、プログラムが変数V1へアクセスするための3つのループを有するネスト化ループを定義する場合であって、ネスト化ループの各ループがネスト化ループインデックス変数i、jおよびkによってインデキシングされる場合、テンソルトラバーサルユニットは、ネスト化ループインデックス変数i、jおよびkをそれぞれトラッキングするよう、テンソルインデックスエレメントX1,1、X1,2およびX1,3を割り当て得る。
テンソル境界エレメント204は、テンソルインデックスエレメント202と同じ次元を有する2Dアレイとして物理的または論理的に配され得、テンソル境界エレメント204の各エレメントはテンソルインデックスエレメント202における対応するエレメントを有する。いくつかの実現例では、テンソル境界エレメント204の行の各々は、テンソルについてのテンソル境界情報を表し得る。たとえば、プログラムが2つのアレイ変数V1およびV2を定義する場合、テンソルトラバーサルユニットは、それぞれアレイ変数V1およびV2についてテンソル境界情報をトラッキングするよう、行204aおよび204bを割り当て得る。
次元乗算器エレメント206は、テンソルインデックスエレメント202と同じ次元を有する2Dアレイとして物理的または論理的に配され得、次元乗算器エレメント206の各エレメントは、テンソルインデックスエレメント202における対応するエレメントを有する。いくつかの実現例では、次元乗算器エレメント206の各行は、テンソルについての次元乗算器情報を表わし得る。たとえば、プログラムが2つのアレイ変数V1およびV2を定義する場合、テンソルトラバーサルユニットは、アレイ変数V1およびV2についての次元乗算器情報をそれぞれトラッキングするよう、行206aおよび206bを割り当て得る。
いくつかの実現例では、次元乗算器に対してテンソルインデックス値を乗算する乗算器
を使用するのではなく、代替的な実施形態は、乗算器ファンクションの代わりに加算器ファンクションを利用するTTU106を含み得る。これらの実施形態では、処理ユニット102は、(たとえば特定のループの開始値、終了値およびステップ値についての)既に乗算された数をTTU106に提供するようプログラムコードを実行し得る。
ディープニューラルネットワーク(DNN)は、互いへフィードを行う複数の層を含む。いくつかの実現例では、例示的なニューラルネットワークは、畳み込み層(たとえばデプスワイズ(depth-wise))、削減層(reduction layer)、全結合(FC: fully connected)層、分類器層、エレメントワイズ乗算層(element-wise multiply layer)、または、プーリング層(たとえば平均および最大)の層タイプのうちの1つ以上を含み得る。いくつかの実現例では、小さな(たとえば1または2)の入出力深さを有する計算は、全結合層または畳み込み層のような既存の層の特性であり得る浅いカーネル特性を有する層に関連付けられる。一般に、第1の層(たとえば畳み込み層)についてシステム100内で発生するテンソル計算は、第1の層と異なる第2の層(たとえばプーリング層)についての入力アクティベーションとしてその後提供される出力アクティベーションを作り出し得る。
いくつかの実現例では、2以上の計算システム100は、計算タイルのセットとして構成され得る。これらの実現例では、各計算タイルは、所与の層について推論ワークロードを処理するのに必要な計算の部分を独立して実行する。その後、これらの計算の出力は、所与の層について後続の計算を実行するために当該出力を必要とする別のタイルに移動される。さらに、ニューラルネットワーク層は、システム設計者によって望まれる態様で分割され得、各パーティションは、計算の部分が特定の層パーティションに対応するようにタイルにマッピングされ得る。
図1を再び参照して、いくつかの実現例では、システム100は、システム100によって実行される複数のオペレーションをエンコードする少なくとも1つの命令を命令103を介して受け取り、所与のニューラルネットワーク層について必要とされるテンソル計算の少なくとも部分を実行する。命令およびエンコードされたオペレーションは、層のタイプ、アクティベーションテンソルの構造、および重みテンソルの構造を特定し得る。さらに、エンコードされたオペレーションは、当該層タイプのニューラルネットワークによって少なくとも部分的に定義されるループネスト構造を作成するよう、処理ユニット102にプログラムコードを実行させ得る。エンコードされたオペレーションに関して、命令セット103は、テンソルオペレーション(tensorop)命令またはダイレクトメモリアクセスオペレーション(DMAop)命令の少なくとも1つを含み得る。命令セット103はさらに、同期オペレーション(syncing operations)、バリアオペレーション(barrier operations)、フェンシングオペレーション(fencing operations)(以下に記載)といったさまざまな種々のオペレーションをエンコードする1つ以上の他の命令を含み得る。
図3は、OPコードと、システム100によって少なくとも部分的に実行される対応するオペレーションとを含むテーブル300を示す。テーブル300は、オペレーション302、オペレーション304およびオペレーション308を含んでいる。テーブル300に示されるように、システム100はたとえば、命令セット103によって提供される単一の命令によってエンコードされる複数のオペレーションを実行し得る。一般に、命令セット103は、システム100内において特定の計算シーケンスについて発生するオペレーションのタイプを定義するようOPコードを使用する標準化された構造を含み得る。一意のOPコードは、特定のオペレーションタイプに対応し得る。いくつかの実現例では、1つ以上の命令、入力アクティベーションおよび重みの形態にあるエンコードされたオペレーションが、ニューラルネットワークハードウェアコンピューティングシステムに関連
付けられる外部入出力(I/O)デバイスまたはよりハイレベルなコントローラデバイスからシステム100に提供される。1つ以上のデータバスは、例示的なI/Oデバイスからのまたはハードウェアコンピューティングシステムの複数の計算タイル(たとえば複数のシステム100)の間の命令、アクティベーションおよび重みを通過させるように使用され得る。
テーブル300に示されるように、オペレーション302は、対応するOPコードを有する1つ以上のtensoropを含み得るエンコードされたテンソルオペレーションである。いくつかの実現例では、単一の命令または命令セットは、特定のtensoropを示すOPコードの形態のエンコーディングを定義する複数のサブ命令を含み得る。たとえば、サブ命令は、特定のニューラルネットワーク層に対応する計算についてのtensoropをタイルに実行させるよう、1つ以上の計算タイルに分散され得る。たとえば、tensoropサブ命令は、畳み込み層、FC層、プーリング層、削減層、またはエレメントワイズ乗算層といった上述した層のうちの少なくとも1つについてのOPコードを含み得る。tensoropサブ命令は、計算タイル/システム100内に発生するすべてのテンソル計算がtensoropサブ命令からの必要とされるエンコーディングを有するように構成され得る。
一般に、システム100内で発生するテンソル計算は、命令セット103から受け取られる命令によって特定される必要とされるエンコーディングを有することになる。複数のシステム100が計算タイルのセットとして配される場合、tensoropサブ命令およびエンコーディングは、異なる計算タイルが異なる命令を実行することを可能にし得る。いくつかの実現例では、異なるサブ命令は、ニューラルネットワーク層のあるパーティションについてのテンソル計算に対応し得る。tensoropエンコーディングはさらに、TTU106が、所望のTTUテンソルオペレーションを示すメインTTUループネストフィールドを介して処理ユニット102にループインデックスを発行することを可能にする。tensoropエンコーディングはさらに、アドレスを計算するためにどのカウンタがともに加算されるかを示すTTUループマスクに基づいて、TTU106が特定のアレイ/テンソルエレメントについてメモリアドレスを生成することを可能にする。tensoropエンコーディングはさらに、入力アクティベーションテンソル、重みテンソルおよび出力アクティベーションテンソルをトラバースするために、処理ユニット102によって実行可能な複数のTTUループネスト命令を提供し得る。
いくつかの実現例では、2以上の計算システム100が計算タイルのセットとして構成される場合、各計算タイルは命令を独立して実行する独立した(self-contained)ユニットであり得る。一般に、計算タイルは、tensoropおよびDMAopという2つのタイプのオペレーションを定義する命令を実行する。いくつかの実現例では、異なるオペレーションは、同期フラグを通じてデータ上で同期する、計算システム100内の独立制御ユニットによって実行され得る。しかしながら、制御ユニットは独立しているが、維持される必要のある依存関係が存在し得る。たとえば、tensoropは、たとえば記憶媒体104のメモリ位置においてループネストによって必要とされるデータを有さなければ、ループネストにおけるループを実行してはならない。必要とされるデータは、DMAopまたは別のオペレーションによって記憶媒体104に配置され得る。
一般に、システム100内のデータ同期は、同期フラグオペレーションを通じて発生する。いくつかの実現例では、システム100は、バーチャル書き込みポートごとに同期フラグエントリを含むレジスタファイルを有する。たとえば、tensoropは、部分和であり得る2つ以上のテンソルレファレンス(第2のバンク114に書き込まれる)と、アクティベーション(第1のバンク112に書き込まれる)とを有し得る。この実現例では、各部分和およびアクティベーションについての同期フラグレジスタが存在し得る。さ
らに所与の命令セットの実行中に、処理ユニット102は、特定の同期フラグレジスタについてインクリメントをトリガするテンソルレファレンスの次元を選択し得る。さらに、処理ユニット102は、選択同期フラグレジスタに対する必要なカウントについて待機するループネストの深さを選択し得る。これは、データの依存関係が侵されないことを保証する。さらに、選択された同期フラグレジスタに対する必要な同期フラグカウントがまだ到達されていなければ、1つ以上のスレッドがストールすることになる。
たとえば、tensoropエンコーディングは、1つ以上の同期フラグ条件に基づいてループネストのストールを可能にし得る。いくつかの実現例では、TTU106は、1)所定の同期フラグ条件が満たされていない(たとえば同期フラグカウントがしきい値カウント以下である)という条件、または、2)命令パイプラインの特定のステージに検出されたハザードが存在するという条件によってストールされ得る。さらに、tensoropエンコーディングは、所望のビット幅の特定のデータ値(たとえばアクティベーションまたは重み)を受け取るようにMACオペレータ108を構成することを可能にし、かつ、アクティベーションユニット110によって実行される所望のファンクションの選択を可能にする。
tensoropエンコーディングによって定義される同期フラグ条件は、同期ウォッチャオペレーション(sync watcher operation)および同期プロデューサオペレーション(sync producer operation)のうちの少なくとも1つをシステム100の処理ユニット
102に実行させ得る。処理ユニット102によるtensoropの実行中において、同期ウォッチャオペレーションは、どのループ反復を同期すべきかと、ループが反復することを許可される前に必要とされる同期フラグカウントと、次の反復のために予期される同期フラグカウントをどれぐらいインクリメントするべきかとを処理ユニット102に示すように使用され得る。
テーブル300に示されるように、エンコードされたダイレクトメモリアクセスオペレーション命令は1つ以上のDMAopを含み得る。命令セット103によって特定されるDMAオペレーションによって、システム100による特定のtensoropの実行を達成するために、必要に応じて処理ユニット102がデータを移動する。いくつかの実現例では、等しくない幅の2つのメモリリソース(たとえばワイドメモリユニットおよびナローメモリユニット)間でデータが移動される場合、データの転送サイズは、よりワイドなリソースの倍数でなければならない。たとえば、ワイドメモリ(W-mem)にデータを移動させる/ワイドメモリ(W-mem)からデータを移動させるDMAopが与えられた場合、転送のサイズはワイドメモリ幅の倍数でなければならない。同様に、ナローメモリ(N-mem)にデータを移動させる/ナローメモリ(N-mem)からデータを移動させるDMAopの場合、データの転送のサイズはナローメモリ幅の倍数でなければならない。
メモリユニットの属性を説明するために明細書の全体にわたって使用されるワイドおよびナローの指定は、一般に1つ以上のメモリユニットの幅(ビット/バイト)のおよそのサイズを指す。いくつかの実現例では、第1のバンク112のメモリ幅および第2のバンク114のメモリ幅は、たとえば16ビットといった特定数のビットによって定義されない。一般に、システム100の各インスタンス化においては2つの異なるタイプのメモリが存在し、ナロー/ワイドは、メモリの特徴を示すように用いられる、絶対的ではない相対的な用語である。いくつかの例示的な実現例では、第1のバンク112は1つ以上のナローメモリユニットを含み、第2のバンク114は1つ以上のワイドメモリユニットを含む。
上述したように、システム100によって受け取られ処理ユニット102によって実行
される命令は、tensorop命令およびDMAop命令を含み得る。受け取られた命令は、処理ユニット102による実行に先立って命令バッファ124に格納され得る。テーブル300に示されるように、オペレーション304は、1)インバウンド命令バッファと、2)アウトバウンド命令バッファと、3)ナローワイドDMA命令バッファと、4)ワイドナローDMA命令バッファと、5)リングバスDMA命令バッファとを含む(たとえば「書き込み」バッファ位置を示す)命令サブタイプを含み得るDMAオペレーションである。
ここでテーブル300を参照して、処理ユニット102によるオペレーションにおけるDMAopの実行によって、システム100は、命令セット103から(例示的なデータバスを介して)入力アクティベーションおよび他のデータを受け取り、第1のバンク112にアクティベーションを格納する。以下により詳細に記載されるように、入力アクティベーションは、第1のバンク112において、アクティベーションテンソルのそれぞれのエレメントに対応するメモリアドレス位置に格納される。処理ユニット102によるDMAop.outオペレーションの実行により、システム100は、第1のバンク112からデータ(たとえば出力アクティベーション)を読み出し、例示的なデータバスにデータを書き込み、システム100からデータを出力する。処理ユニット102は、第1のバンク112(ナローメモリ)から第2のバンク114(ワイドメモリ)にデータを移動させるためにDMAop.N-Wオペレーションを実行し得る。同様に、処理ユニット102は、第2のバンク114(ワイドメモリ)から第1のバンク112(ナローメモリ)にデータを移動させるためにDMAop.WNオペレーションを実行し得る。
処理ユニット102は、命令セット103から(例示的なデータバスを介して)データを抽出した後、第2のバンク114へデータ(たとえば重み/パラメータ)を書き込むようDMAop.Rバスオペレーションを実行し得る。DMAop.Rバスオペレーションの実行によって、処理ユニット102はさらに、第2のバンク114のメモリアドレス位置に格納されたデータ(たとえば重み)を読み出し/当該データにアクセスし、当該データがシステム100から出力され得るように例示的なデータバスにデータを書き込み得る。いくつかの実現例では、例示的なデータバスは、リング構造において複数の計算システム100を接続するリングバスである。リングにおいて複数のシステム100を接続することに加えて、リングバスはさらに、複数のシステム100を外部のI/Oデバイスまたはよりハイレベルの制御デバイスに接続し得る。計算タイルを接続するためのデータバスオプションを含む、ニューラルネットワークテンソル計算を促進するためのハードウェアコンピューティングシステムに関する付加的な詳細および記載がさらに、2016年10月27日に出願された「ニューラルネットワーク計算タイル(Neural Network Compute Tile)」という名称を有する米国特許出願番号第15/335,769号に記載されてい
る。
いくつかの実現例では、計算タイルの所与のセットについては、計算タイルのセットのうちの少なくとも1つの計算タイルが分類器タイルであり得る。分類器タイルは、ニューラルネットワークの特定の層について発生したテンソル計算に関連付けられるデータ値にファンクションを適用するように構成され得る。たとえば、FC層はタイルに亘って分割され得るので、各タイルは、出力のサブセットを作り出し、第2のバンク114に出力を格納する。一般に、DMAopは、第2のメモリ114のメモリアドレス位置からのリニア出力を、第1の計算タイルからデータリングバスを通じて第2のタイル(たとえば分類器タイル)に移動するよう使用され得る。その後、分類器タイルは、各リニア出力に少なくとも1つのファンクション(たとえばsoftmaxファンクション)を適用し、より高いレベル制御デバイスまたは外部I/Oデバイスにポストファンクション結果を提供する。
テーブル300を再び参照して、いくつかの実現例では、DMAop.infeedおよびDMAop.outfeedが、外部コントローラデバイスおよびシステム100の両方に関連付けられるオペレーションに対応する。一般に、DMAop.infeedオペレーションは、外部コントローラにおいて開始し、DMAop.infeedオペレーションによって、コントローラが例示的なデータバス(たとえばリングバス)に入力アクティベーションおよび重みの両方を提供する。データバスは、マルチタイル配置におけるどの計算タイルがアクティベーションおよび重みを消費するべきであるか示すデータストリーム(たとえばビットマップ)をマルチキャストするように構成され得る。したがって、特定の受取タイルの処理ユニット102は、外部コントローラから計算タイル(システム100)のメモリバンクにアクティベーションおよび重み/パラメータを移動するよう、DMAop.infeedオペレーションの部分を実行し得る。同様に、いくつかの実現例では、処理ユニット102は、計算タイルにおけるメモリバンク112および114から分類器タイルに、ならびに、分類器タイルから外部コントローラに、例示的な推論ワークロードの結果(出力)を移動させるようDMAop.outfeedオペレーションの部分を実行し得る。さらに、外部コントローラは、例示的な外部I/Oデバイスに推論ワークロード結果を移動させるようDMAop.outfeedオペレーションの部分を実行し得る。
オペレーション306は、他のオペレーションがシステム100によって実行されている間、新しい命令の発行を管理するよう処理ユニット102によって実行され得るtilefenceopおよびscalarfenceopオペレーションである。処理ユニット102によるtilefenceop命令の実行によって、システム100は、システム100のそれぞれの命令バッファにおける全てのペンディング命令がリタイアされるまで、任意の新しい命令がシステム100に発行されることをブロックまたは防止する。さらに、scalarfenceop命令は、ペンディング命令が処理ユニット102によって実行されている間に新しい命令の発行を排除するようtilefenceop命令と共働する。たとえばtilefenceop命令によって、処理ユニット102は、tilefenceopに関連付けられる同期フラグカウントメトリックを監視し得る。処理ユニット102は、しきい値tilefenceopカウントメトリックが到達されるまで、新しい命令の発行を防止するようscalarfenceop命令を実行し得る。
図4Aは、例示的な入力アクティベーションテンソル404、例示的な重みテンソル406および例示的な出力テンソル408を示す。図4Bは、内積計算またはマトリックス乗算に関係のあるテンソル計算を実行するよう、処理ユニット102によって実行され得る例示的なディープループネスト402を示す。図4Aでは、計算は、出力テンソル408の形態で出力/結果を生成するよう、1つ以上の計算サイクルでのアクティベーションテンソル404とパラメータ/重みテンソル406との乗算を含み得る。
各テンソル404,406,408は、x、yおよびz次元平面に亘って行列フォーマットで配される複数のデータエレメントを含み得る。アクティベーションは、アクティベーションテンソル404のエレメントに対応する第1のバンク112のそれぞれのメモリアドレス位置から読み出され得る。同様に、重みは、重みテンソルのエレメントに対応するそれぞれのメモリアドレス位置において第2のバンク114から読み出され得る。いくつかの実現例では、処理ユニット102は、ネスト化ループプログラムについて記憶媒体104のあるメモリユニット(たとえばROM/EEPROMメモリユニット)に格納されたプログラムコードを実行し得、これにより、TTU106が、アクティベーションテンソル404および重みテンソル406のそれぞれのエレメントに対応するメモリアドレス位置へアクセスする。処理ユニット102は、部分的にループネストプログラムを実行することにより、1つ以上のテンソル計算を実行し得、これにより所与の次元についてテンソルエレメントをトラバースする複数のループをインスタンス化する。
TTU106がアクティベーションテンソル404および重みテンソル406をトラバースすると、テンソル404におけるx次元データエレメントからの単一のアクティベーションを含む乗算オペレーションが個々に、たとえば特定の重みテンソル406のkx次元における重みの行(複数のデータエレメント)と乗算される。これらの乗算オペレーションは、出力テンソル408のzo次元における第1のx行に対応する出力の行を作り出し得る。一般に、MACオペレータ108は、内積計算に関係のある算術オペレーションを含むテンソル計算を実行し得る。入力アクティベーションは、単一のMACオペレータ108によるそれぞれのアクセスについて第1のバンク112から一つずつ提供される。MACオペレータ108は、出力テンソル408のそれぞれのデータエレメントに対応する単一の出力アクティベーション値を作り出すよう、入力アクティベーションを第2のバンク114からアクセスされる重みと乗算する。
図4Bでは、例示的なディープループネスト402が示されており、最も内側のループ(zo)におけるMACオペレーションを含んでいる。アクティベーションテンソル404に対応する入力次元は[x,y,zi]として示され、重みテンソル406に対応するフィルタ次元は[x,y,zi,zo]として示され、出力テンソル408に対応する出力次元は[x,y,zo]として示される。したがって、ディープループネスト402は、テンソル404,406のさまざまな次元に亘る計算に基づいて出力[x][y][zo]によって示される出力テンソル408を特定する。一般に、ディープループネスト402は、N次元のテンソルをトラバースするためにネスト化ループを処理することによりテンソル計算を実行するよう、システム100によって実行され得るソフトウェアアルゴリズムを提供する。1つの例示的な計算処理において、各ループは、対応するN次元のテンソルの特定の次元をトラバースすることを担い得る。したがって、ディープループネスト402は、複数の計算タイル内で同時に実行され得る1つ以上のテンソル計算の表現を提供する。
代替的な実現例では、出力テンソル408の変動を作り出すディープループネスト402の他の順序が存在する場合がある。システム100は、任意の順序でアクティベーションテンソル404および重みテンソル406をトラバースすることを可能にするデータ値の範囲を含むディープループネスト402をインスタンス化するための命令を受け取り得る。1つ以上のループが、システム100において、空間的に展開され得る。いくつかの実現例では、xxおよびyyループネストは1つ以上の計算タイルに亘って展開され得、これにより、異なる計算タイルが、異なる層パーティションに関連付けられる推論ワークロードを処理することを可能にする。例示的なディープループネスト402において、サイクルごとに読み出されるアクティベーションと、zi*kx*kyサイクルごとに読み出される部分和とが存在し得る。
ループネストの構造(たとえば内側および外側ループの#)は、命令セット103を介してシステム100に提供される命令のデータ値の1つ以上に基づいて定義され得る。畳み込み層内で発生する例示的な計算は、所与の層について推論ワークロードを計算するためにオペレーションをエンコードする命令の実行を記述する基礎として使用され得る。畳み込み層計算は、三次元(3D)テンソルの二次元(2D)空間畳み込みを含み得る。畳み込み層のための計算は、3Dアクティベーションテンソル404と少なくとも1つの3Dフィルタ(重みテンソル406)との間で2D空間畳み込みを実行することを含み得る。
この計算については、深さ次元に沿った内積の和が存在する。3D入力に対して1つの3Dフィルタ406を畳み込むことによって、2D空間面が生成される。示されるように、3D入力テンソル404が畳み込まれる必要のある複数の3Dフィルタが存在し得る。
計算の結果、3Dテンソル出力408が得られる。畳み込み層についての計算が記載されるが、他のニューラルネットワーク層についての計算オペレーションをエンコードする1つ以上の命令が、さらにこの明細書に記載される教示に基づいて生成され得る。
一般に、単一の計算タイルが複数のMACオペレータ108を含む場合、オペレータは、各々が単一のアクティベーション入力を共有してそれぞれの計算を実行することにより、集合的にシングルインストラクションマルチプルデータ(SIMD: single instruction multiple data)機能を提供する。SIMDは一般に、(ディープループネストに基
づいて)すべてのパラレルユニット(単一のシステム100における複数のMACオペレータ108)が同じ命令を共有することを意味するが、各MACオペレータ108は、テンソル404および406の異なるデータエレメントに対して命令を実行する。1つの基本的な例において、1サイクルにおいてアレイ[6,8,10,12]を得るためにエレメントワイズにアレイ[1,2,3,4]および[5,6,7,8]を加算することは典型的に、4つの算術ユニットが各エレメントに対してオペレーションを実行することを必要とする。SIMDを使用することによって、上記4つのユニットは、同じ命令(たとえば、「加算(add)」)を共有し、パラレルで計算を実行し得る。tensoropをル
ープネストの形態でエンコードする単一の命令は、多次元テンソルのあるデータエレメントに関連付けられる推論ワークロードを計算するよう、1つ以上のシステム100に提供され得る。したがって、システム100は、先行する方法に対して、テンソル計算におけるアクセラレーションおよびパラレル性の向上を提供する。
システム100のアクセラレ-タファンクションは少なくとも2つのタイプのパラレル性に対応する。第1のタイプのパラレル性は、ディープネストループ402の最も内側ループの空間的展開を通じて公開(expose)される。システム100はSIMD機能を含んでいるので、ディープループネスト402の最も内側のループ境界は、リニアユニット(たとえば複数のMACのセル)におけるMACオペレータ108の数に固定され得る。パラレル性の第2の局面は、各々がディープループネスト402を実行するが異なる部分上に存在する複数の計算タイルが、特定のニューラルネットワーク層についてテンソル計算を行う構成を有することにより、公開される。アクセラレ-タデバイスにおける構成可能な数のタイルと、各タイル内における構成可能な数のMACオペレータとが存在し得る。
いくつかの実現例では、プログラマまたはデベロッパは、たとえばアクティベーション入力バンド幅を低減し、かつ、部分和読出バンド幅を増加するために、特定のループネストを詳述または構築することを選択し得る。これは、代替的な態様でディープループネスト402を記述または構築することによりなされ得る。テンソル計算を促進するためのこの明細書に記載されるディープループネストは、非常にフレキシブルであり、特定の問題セットを適合するように所望のように構成され得る。この明細書に記載されるニューラルネットワークおよび計算タイル(システム100)は、8つのディープループネスト計算構造までをサポートし得るので、最も良好に局所性(locality)を活用し、かつ、全体的なバンド幅要件を低減するよう、デベロッパが望むように入力および出力はタイル化され得る。
図5は、命令によってエンコードされた1つ以上のオペレーションを実行するためにコンピューティングシステム100を使用することによりテンソル計算を実行する例示的な処理500を示すフロー図である。ブロック502において、処理ユニット102は、システム100においてテンソル計算を実行するためのデータ値を特定する命令を受け取る。ブロック504において、当該命令を受け取ることに応答して、処理ユニット102は、複数のループを含むループネストを実行することによりテンソル計算を実行する。上で論じたように、処理ユニット102は、ネスト化ループプログラムについてのプログラムコードを実行するよう、(命令セット103に関連付けられる命令とは異なる)命令にア
クセスし得る。その後、処理ユニット102は、TTU106が、アクティベーションテンソル404および重みテンソル406のそれぞれのエレメントに対応するメモリアドレス位置にアクセスするようプログラムコードを実行し得る。
ブロック506において、ループネストが層タイプに基づく定義された構造を有する実現例の場合、命令セット103は、当該層のための層タイプおよびループネスト構造を示す特定のデータ値(たとえば1つ以上のOPコード)を含み得る。たとえば、図3のオペレーション302によって示されるように、命令セット103は、畳み込み層およびFC層についてのテンソル計算のためのtensoropに対応する1つ以上のOPコード(たとえばOPコード0)を含み得る。したがって、命令セット103によって提供されるtensorop命令に関連付けられるデータ値を使用して、処理ユニット102は、命令のデータ値に基づいてループネスト構造を定義し得る。ループネスト構造がひとたび定義されると、処理ユニット102は、部分的にループネストプログラムを実行することにより、1つ以上のテンソル計算を実行し、これによりアクティベーションテンソル404および重みテンソル406の所与の次元についてテンソルエレメントをトラバースするループをインスタンス化する。
ブロック508において、処理ユニット102によって、個々の出力アクティベーション116が出力テンソル408のそれぞれのデータエレメントに書き込まれる。さらに、ブロック508において、処理ユニット102は、その後のテンソル計算のために1つ以上の他の計算タイルにテンソル計算の結果が書き込まれるよう、DMAop.outfeedオペレーションを実行し得る。代替的には、DMAop.outfeedオペレーションは、第1の計算タイルにおけるメモリバンク112,114から分類器タイル(たとえば第2の計算タイル)に、ならびに、分類器タイルから外部コントローラおよび外部I/Oデバイスに、推論ワークロードの結果(出力)を移動し得る。
この明細書に記載される主題の実施形態および機能的なオペレーションは、デジタル電子回路、有形的に具現化されたコンピュータソフトウェアもしくはファームウェア、この明細書において開示される構造およびそれらの構造的等価物を含むコンピュータハードウェア、または、それらの1つ以上の組み合わせにおいて実現され得る。この明細書に記載される主題の実施形態は、1つ以上のコンピュータプログラムとして実現され得る。すなわち、データ処理装置による実行またはデータ処理装置のオペレーションを制御するための実行のために有形的で一時的でないプログラムキャリア上でエンコードされるコンピュータプログラム命令の1つ以上のモジュールとして実現され得る。代替的または付加的には、プログラム命令は、たとえば、マシンにより生成された電気信号、光学信号または電磁信号といった人為的に生成された伝播信号上でエンコードされ得る。当該人為的に生成された伝播信号は、データ処理装置による実行のために好適なレシーバ装置への送信のために情報をエンコードするように生成される。コンピュータ記憶媒体は、マシン読取可能なストレージデバイス、マシン読取可能なストレージ基板、ランダムもしくはシリアルアクセスメモリデバイス、または、それらの1つ以上の組み合わせであり得る。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプトまたはコードと称され得るかまたは記載され得る)は、コンパイルもしくは解釈された言語または宣言言語もしくは手続言語を含む任意の形態のプログラミング言語で記述され得、スタンドアロンプログラム、または、モジュール、コンポーネント、サブルーチン、もしくは、コンピューティング環境での使用に好適な他のユニットを含む任意の形態でデプロイされ得る。コンピュータプログラムは、ファイルシステムにおけるファイルに対応し得るが、対応する必要はない。プログラムは、たとえば、マークアップ言語文書に格納される1つ以上のスクリプト、当該プログラムに専用の単一のファイルに格納される1つ以上のスクリプト、または、たとえば
コードの1つ以上のモジュール、サブプログラムもしくは部分を格納するファイルのような複数の協調されたファイルに格納される1つ以上のスクリプトといった、他のプログラムまたはデータを保持するファイルの部分に格納され得る。コンピュータプログラムは、1つのコンピュータ上で実行されるようデプロイされ得るか、または、1つの場所に位置するか、もしくは、複数の場所に亘って分散されて通信ネットワークによって相互接続される複数のコンピュータ上で実行されるようデプロイされ得る。
この明細書に記載される処理および論理フローは、1つ以上のプログラム可能なコンピュータが、入力データに対して動作し出力を生成することによってファンクションを実行するように1つ以上のコンピュータプログラムを実行することによって実行され得る。処理および論理のフローは、たとえばFPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、GPGPU(汎用グラフィックスプロセッシングユニット)または、他のいくつかのタイプのプロセッサといった専用論理回路によって実行され得、また、装置も、当該専用論理回路として実現され得る。
コンピュータプログラムの実行に好適なコンピュータは、例として、汎用もしくは専用マイクロプロセッサ、その両方、または、任意の他の種類の中央演算処理装置に基づき得る。一般に、中央演算処理装置は、リードオンリメモリ、ランダムアクセスメモリ、またはその両方から命令およびデータを受け取る。コンピュータの必須の要素は、命令を実施または実行するための中央演算処理装置と、命令およびデータを格納するための1つ以上のメモリデバイスとである。一般に、コンピュータはさらに、たとえば磁気ディスク、光磁気ディスクまたは光ディスクといったデータを格納するための1つ以上のマスストレージデバイスを含むか、または、当該1つ以上のマスストレージデバイスからデータを受け取るか、1つ以上のマスストレージデバイスへデータを転送するか、もしくは、その両方を行うために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、たとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤー、ゲーム機、全地球測位システム(GPS)レシーバ、または、たとえばユニバーサルシリアルバス(USB)フラッシュドライブのようなポータブルストレージデバイスといった別のデバイスに埋め込まれ得る。
コンピュータプログラム命令およびデータを格納するために好適なコンピュータ読取可能媒体は、例として、たとえばEPROM、EEPROMおよびフラッシュメモリデバイスといった半導体メモリデバイスと、たとえば内部ハードディスクまたはリムーバブルディスクといった磁気ディスクと、光磁気ディスクと、CDROMおよびDVD-ROMディスクとを含む不揮発性メモリ、媒体およびメモリデバイスのすべての形態を含む。プロセッサおよびメモリは、専用論理回路によって補助され得るか、または、専用論理回路に統合され得る。
本明細書に記載の主題の実施形態は、バックエンドコンポーネントをたとえばデータサーバとして含むコンピューティングシステムにおいて実現され得るか、または、ミドルウェアコンポーネントをたとえばアプリケーションサーバとして含むコンピューティングシステムにおいて実現され得るか、または、たとえば、ユーザが本明細書に記載の主題の実現例とインタラクションする際に使用可能なグラフィックユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータといったフロントエンドコンポーネントを含むコンピューティングシステムにおいて実現され得るか、または、そのような1つ以上のバックエンド、ミドルウェア、もしくはフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステムにおいて実現され得る。システムのコンポーネントは、たとえば通信ネットワークといった任意の形態または媒体のデジタルデータ通信によって相互に接続され得る。通信ネットワークの例として、ローカルエリアネットワー
ク(「LAN」)と、たとえばインターネットのようなワイドエリアネットワーク(「WAN」)とが挙げられる。
コンピューティングシステムはクライアントおよびサーバを含み得る。クライアントおよびサーバは一般に互いにリモートであり、典型的に通信ネットワークを介してインタラクションする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されて互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
さらに別の実現例が以下の例において要約される。
例1:コンピュータによって実施される方法であって、処理ユニットが、テンソル計算を実行するためのデータ値を特定する命令を受け取ることと、前記命令を受け取ることに応答して、前記処理ユニットが、複数のループを含むループネストを実行することによって、前記テンソル計算を実行することとを含み、前記ループネストの構造は、前記命令の前記データ値のうちの1つ以上に基づいて定義される、コンピュータによって実施される方法。
例2:前記テンソル計算は、ニューラルネットワーク層の計算の少なくとも一部分である、例1に記載の方法。
例3:前記命令によって特定される前記データ値は、前記ニューラルネットワーク層のタイプを特定する少なくとも1つの値を含んでおり、前記ループネストの前記構造は、前記ニューラルネットワーク層の前記タイプによって少なくとも部分的に定義される、例2に記載の方法。
例4:前記命令は、前記処理ユニットをテンソルの次元の少なくとも1つのエレメントにアクセスさせ、前記エレメントは、前記テンソル計算の実行中に前記ループネストを実行する際に使用される少なくとも1つのインデックスの部分である、例2または3に記載の方法。
例5:前記命令は、前記処理ユニットに記憶媒体におけるアレイの少なくとも1つのメモリアドレスにアクセスさせ、前記アレイの前記メモリアドレスは、前記テンソル計算の実行中に前記処理ユニットによって読み出される変数を含む、例2または3に記載の方法。
例6:前記テンソル計算を実行することは、前記処理ユニットが、テンソルトラバーサルユニット(TTU)に少なくとも1つの制御信号を提供して、前記テンソル計算の実行中に前記ループネストを実行する際に使用されるループインデックスを前記TTUに発行させることを含む、例5に記載の方法。
例7:前記処理ユニットが前記TTUに少なくとも1つの制御信号を提供して、前記テンソル計算の実行中に前記ループネストを実行する際に使用される参照されたアレイエレメントのためのアドレスを前記TTUのアレイレファレンスに生成させることをさらに含む、例5に記載の方法。
例8:前記命令は、前記TTUに関連付けられるアレイレファレンスのためのアドレスを生成するよう、第2のTTUカウンタと合計される第1のTTUカウンタを示す、例7に記載の方法。
例9:前記テンソル計算を実行することは、前記処理ユニットが、前記テンソル計算の実行に関連付けられる1つ以上のオペランドを管理する第1の同期プロシージャを実行す
ることを含み、オペランドを管理することは、同期フラグ条件に基づいて1つ以上のループネストをストールすることを含む、例1~8のいずれか1項に記載の方法。
例10:前記テンソル計算を実行することは、前記処理ユニットが、前記ループネストの特徴に関連付けられるカウンタをインクリメントすることを管理する第2の同期プロシージャを実行することを含む、例9に記載の方法。
例11:電子システムであって、前記電子システムに配置され1つ以上の処理デバイスを含む処理ユニットと、命令を格納するための1つ以上のマシン読取可能なストレージデバイスとを含み、前記命令は、動作を実行するように前記1つ以上の処理デバイスによって実行可能であり、前記動作は、テンソル計算を実行するためのデータ値を特定する命令を前記処理ユニットが受け取ることと、前記命令を受け取ることに応答して、複数のループを含むループネストを実行することによって、前記テンソル計算を前記処理ユニットが実行することとを含み、前記ループネストの構造は、前記命令の前記データ値のうちの1つ以上に基づいて定義される、電子システム。
例12:前記テンソル計算は、ニューラルネットワーク層の計算の少なくとも一部分である、例11に記載の電子システム。
例13:前記命令によって特定される前記データ値は、前記ニューラルネットワーク層のタイプを特定する少なくとも1つの値を含んでおり、前記ループネストの前記構造は、前記ニューラルネットワーク層の前記タイプによって少なくとも部分的に定義される、例12に記載の電子システム。
例14:前記命令は、前記処理ユニットをテンソルの次元の少なくとも1つのエレメントにアクセスさせ、前記エレメントは、前記テンソル計算の実行中に前記ループネストを実行する際に使用される少なくとも1つのインデックスの部分である、例12または13に記載の電子システム。
例15:前記命令は、前記処理ユニットに記憶媒体におけるアレイの少なくとも1つのメモリアドレスにアクセスさせ、前記アレイの前記メモリアドレスは、前記テンソル計算の実行中に前記処理ユニットによって読み出される変数を含む、例12または13に記載の電子システム。
例16:前記テンソル計算を実行することは、前記処理ユニットが、テンソルトラバーサルユニット(TTU)に少なくとも1つの制御信号を提供して、前記テンソル計算の実行中に前記ループネストを実行する際に使用されるループインデックスを前記TTUに発行させることを含む、例15に記載の電子システム。
例17:処理ユニットによって実行可能な命令を含む一時的でないコンピュータ読取可能記憶媒体であって、前記命令は、その実行の際には、前記処理ユニットが、テンソル計算を実行するためのデータ値を特定する命令を受け取ることと、前記命令を受け取ることに応答して、複数のループを含むループネストを実行することによって、前記テンソル計算を前記処理ユニットが実行することとを含む動作を前記処理ユニットに実行させ、前記ループネストの構造は、前記命令の前記データ値のうちの1つ以上に基づいて定義される、一時的でないコンピュータ読取可能記憶媒体。
例18.前記テンソル計算は、ニューラルネットワーク層の計算の少なくとも一部分である、例17に記載の一時的でないコンピュータ読取可能記憶媒体。
例19:前記命令によって特定される前記データ値は、前記ニューラルネットワーク層のタイプを特定する少なくとも1つの値を含んでおり、前記ループネストの前記構造は、前記ニューラルネットワーク層の前記タイプによって少なくとも部分的に定義される、例18に記載の一時的でないコンピュータ読取可能記憶媒体。
例20:前記命令は、前記処理ユニットをテンソルの次元の少なくとも1つのエレメントにアクセスさせ、前記エレメントは、前記テンソル計算の実行中に前記ループネストを実行する際に使用される少なくとも1つのインデックスの部分である、例18に記載の一時的でないコンピュータ読取可能記憶媒体。
この明細書は、多くの特定の実現例の詳細を含んでいるが、これらは、如何なる発明の範囲に対する限定として解釈されるべきでなく、または、特許請求され得るものの限定として解釈されるべきでなく、むしろ特定の発明の特定の実施形態に特有であり得る特徴の記載として解釈されるべきである。また、別個の実施形態のコンテキストでこの明細書に記載されるある特徴は、単一の実施形態における組み合わせで実現され得る。反対に、単一の実施形態のコンテキストで記載されるさまざまな特徴も、別々にまたは任意の好適なサブコンビネーションで、複数の実施形態において実現され得る。さらに、特徴はある組み合わせで作用するように上で記載され得、また最初はそのように特許請求され得るが、ある特許請求された組み合わせからの1つ以上の特徴が、ある場合において当該組み合わせから削除され得、当該特許請求された組み合わせは、サブコンビネーションまたはサブコンビネーションの変形例に向けられ得る。
同様に、オペレーションは特定の順序で図面において示されているが、これは、望ましい結果を達成するために、そのようなオペレーションが、示された特定の順序もしくはシーケンシャルな順序で実行されること、または、すべての示されたオペレーションが実行されることを必要とすると理解されるべきでない。ある状況では、マルチタスクおよびパラレルプロセッシングが有利であり得る。さらに、上で記載された実施形態におけるさまざまなシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきでなく、記載されたプログラムコンポーネントおよびシステムが、一般に単一のソフトウェアプロダクトにおいてともに統合され得るか、または、複数のソフトウェアプロダクトへパッケージ化され得ると理解されるべきである。
主題の特定の実施形態が記載された。他の実施形態は添付の請求の範囲内である。たとえば、請求項において記載されるアクションは、異なる順序で実行され得、それでも望ましい結果を達成し得る。一例として、添付の図面に示す処理は、所望の結果を達成するために、示されている特定の順序、またはシーケンシャルな順序を必ずしも必要としない。ある実現例では、マルチタスクおよびパラレルプロセッシングが有利であり得る。

Claims (20)

  1. 複数のニューラルネットワーク層を有するニューラルネットワークについてのテンソル計算を促進するための、コンピュータによって実施される方法であって、
    前記方法は、
    コントローラが、前記コントローラと通信するように構成される複数の計算ユニットのうちの計算ユニットに命令を提供することを含み、前記命令は、前記計算ユニットのプロセッサによって実行されると、前記計算ユニットに動作を実行させ、
    前記動作は、
    前記テンソル計算が、第1の層タイプの第1のニューラルネットワーク層についてであると決定することと、
    前記第1のニューラルネットワーク層への入力を前記計算ユニットに格納するためのメモリアドレス位置の第1のセットを計算することと、
    前記第1のニューラルネットワーク層についての重みを前記計算ユニットに格納するためのメモリアドレス位置の第2のセットを計算することと、
    前記メモリアドレス位置の第1のセットを使用して取得される前記入力と、前記メモリアドレス位置の第2のセットを使用して取得される前記重みとにより、前記第1の層タイプの前記第1のニューラルネットワーク層についてのテンソル計算を実行することとを含む、方法。
  2. 前記計算ユニットにおいて実行される前記テンソル計算は、前記第1のニューラルネットワーク層の計算の少なくとも一部分である、請求項1に記載の方法。
  3. 前記動作はさらに、
    前記計算ユニットにおいて実行されるメモリアクセスオペレーションに基づいて、前記第1のニューラルネットワーク層への前記入力を受け取ることと、
    前記メモリアクセスオペレーションに基づいて、かつ、前記メモリアドレス位置の第1のセットを使用して、前記計算ユニットの第1のメモリに前記入力を格納することとを含む、請求項1または2に記載の方法。
  4. 前記動作はさらに、
    前記計算ユニットにおいて実行されるメモリアクセスオペレーションに基づいて、前記第1のニューラルネットワーク層についての前記重みを受け取ることと、
    前記メモリアクセスオペレーションに基づいて、かつ、前記メモリアドレス位置の第2のセットを使用して、前記計算ユニットの第2のメモリに前記重みを格納することとを含む、請求項3に記載の方法。
  5. 前記テンソル計算を実行することは、
    前記第1のメモリのメモリ位置から入力を取得することと、
    前記第2のメモリのメモリ位置から重みを取得することと、
    前記第1のメモリの前記入力と前記第2のメモリの前記重みとを使用して前記テンソル計算を実行することとを含む、請求項4に記載の方法。
  6. 前記テンソル計算を実行することは、
    前記第1のメモリから取得される前記入力と、前記第2のメモリから取得される前記重みとを使用してアクティベーション値を生成することと、
    それぞれの計算ユニット間でテンソルデータを交換するように構成されるデータバスに、前記アクティベーション値を提供することと、
    前記データバスを使用して第2の計算ユニットに前記アクティベーション値を提供することとを含む、請求項5に記載の方法。
  7. 前記メモリアドレス位置の第1のセットは、入力テンソルの要素を表し、
    前記メモリアドレス位置の第2のセットは、重みテンソルの要素を表す、請求項1~6のいずれかに記載の方法。
  8. 前記動作はさらに、
    ネスト化ループを生成するためのループネスト構造を決定することと、
    前記ループネスト構造を使用して複数のネスト化ループを生成することと、
    前記複数のネスト化ループを使用して前記第1のニューラルネットワーク層についての前記テンソル計算を実行することとを含む、請求項7に記載の方法。
  9. 前記テンソル計算を実行することは、
    前記第1のニューラルネットワーク層への複数の入力を取得するために、前記入力テンソルのメモリアドレス位置にアクセスするよう、テンソルトラバーサルユニットを使用することと、
    前記第1のニューラルネットワーク層についての複数の重みを取得するために、前記重みテンソルのメモリアドレス位置にアクセスするよう、前記テンソルトラバーサルユニットを使用することと、
    前記入力テンソルの前記複数の入力および前記重みテンソルの前記複数の重みを使用して内積を生成することとを含む、請求項7に記載の方法。
  10. 複数のニューラルネットワーク層を有するニューラルネットワークについてのテンソル計算を促進するためのシステムであって、
    前記システムは、
    複数の計算ユニットを含み、各計算ユニットは、前記計算ユニットに前記テンソル計算を実行させるそれぞれの命令を受け取るように構成されており、
    前記システムはさらに、
    前記それぞれの命令を各計算ユニットに提供するように構成されるコントローラを含み、前記それぞれの命令は、前記計算ユニットのそれぞれのプロセッサによって実行されると、前記計算ユニットに動作を実行させ、
    前記動作は、
    前記テンソル計算が、第1の層タイプの第1のニューラルネットワーク層についてであると決定することと、
    前記第1のニューラルネットワーク層への入力を前記計算ユニットに格納するためのメモリアドレス位置の第1のセットを計算することと、
    前記第1のニューラルネットワーク層についての重みを前記計算ユニットに格納するためのメモリアドレス位置の第2のセットを計算することと、
    前記メモリアドレス位置の第1のセットを使用して取得される前記入力と、前記メモリアドレス位置の第2のセットを使用して取得される前記重みとにより、前記第1の層タイプの前記第1のニューラルネットワーク層についてのテンソル計算を実行することとを含む、システム。
  11. 前記計算ユニットにおいて実行される前記テンソル計算は、前記第1のニューラルネットワーク層の計算の少なくとも一部分である、請求項10に記載のシステム。
  12. 前記動作はさらに、
    前記計算ユニットにおいて実行されるメモリアクセスオペレーションに基づいて、前記第1のニューラルネットワーク層への前記入力を受け取ることと、
    前記メモリアクセスオペレーションに基づいて、かつ、前記メモリアドレス位置の第1のセットを使用して、前記計算ユニットの第1のメモリに前記入力を格納することとを含む、請求項10または11に記載のシステム。
  13. 前記動作はさらに、
    前記計算ユニットにおいて実行されるメモリアクセスオペレーションに基づいて、前記第1のニューラルネットワーク層についての前記重みを受け取ることと、
    前記メモリアクセスオペレーションに基づいて、かつ、前記メモリアドレス位置の第2のセットを使用して、前記計算ユニットの第2のメモリに前記重みを格納することとを含む、請求項12に記載のシステム。
  14. 前記テンソル計算を実行することは、
    前記第1のメモリのメモリ位置から入力を取得することと、
    前記第2のメモリのメモリ位置から重みを取得することと、
    前記第1のメモリの前記入力と前記第2のメモリの前記重みとを使用して前記テンソル計算を実行することとを含む、請求項13に記載のシステム。
  15. 前記テンソル計算を実行することは、
    前記第1のメモリから取得される前記入力と、前記第2のメモリから取得される前記重みとを使用してアクティベーション値を生成することと、
    それぞれの計算ユニット間でテンソルデータを交換するように構成されるデータバスに、前記アクティベーション値を提供することと、
    前記データバスを使用して第2の計算ユニットに前記アクティベーション値を提供することとを含む、請求項14に記載のシステム。
  16. 前記メモリアドレス位置の第1のセットは、入力テンソルの要素を表し、
    前記メモリアドレス位置の第2のセットは、重みテンソルの要素を表す、請求項10~15のいずれかに記載のシステム。
  17. 前記動作はさらに、
    ネスト化ループを生成するためのループネスト構造を決定することと、
    前記ループネスト構造を使用して複数のネスト化ループを生成することと、
    前記複数のネスト化ループを使用して前記第1のニューラルネットワーク層についての前記テンソル計算を実行することとを含む、請求項16に記載のシステム。
  18. 前記テンソル計算を実行することは、
    前記第1のニューラルネットワーク層への複数の入力を取得するために、前記入力テンソルのメモリアドレス位置にアクセスするよう、テンソルトラバーサルユニットを使用することと、
    前記第1のニューラルネットワーク層についての複数の重みを取得するために、前記重みテンソルのメモリアドレス位置にアクセスするよう、前記テンソルトラバーサルユニットを使用することと、
    前記入力テンソルの前記複数の入力および前記重みテンソルの前記複数の重みを使用して内積を生成することとを含む、請求項16に記載のシステム。
  19. コンピュータに命令を実行させるためのプログラムであって、前記命令は、動作の実行を引き起こすように1つ以上のプロセッサによって実行可能であり、
    前記動作は、
    コントローラが、前記コントローラと通信するように構成される複数の計算ユニットのうちの計算ユニットに命令を提供することを含み、前記命令は、前記計算ユニットのプロセッサによって実行されると、前記計算ユニットに動作を実行させ、
    前記動作は、
    テンソル計算が、第1の層タイプの第1のニューラルネットワーク層についてであると決定することと、
    前記第1のニューラルネットワーク層への入力を前記計算ユニットに格納するためのメモリアドレス位置の第1のセットを計算することと、
    前記第1のニューラルネットワーク層についての重みを前記計算ユニットに格納するためのメモリアドレス位置の第2のセットを計算することと、
    前記メモリアドレス位置の第1のセットを使用して取得される前記入力と、前記メモリアドレス位置の第2のセットを使用して取得される前記重みとにより、前記第1の層タイプの前記第1のニューラルネットワーク層についてのテンソル計算を実行することとを含む、プログラム。
  20. 前記動作はさらに、
    前記計算ユニットにおいて実行されるメモリアクセスオペレーションに基づいて、前記第1のニューラルネットワーク層への前記入力を受け取るとともに、前記メモリアクセスオペレーションに基づいて、かつ、前記メモリアドレス位置の第1のセットを使用して、前記計算ユニットの第1のメモリに前記入力を格納することと、
    前記計算ユニットにおいて実行されるメモリアクセスオペレーションに基づいて、前記第1のニューラルネットワーク層についての前記重みを受け取るとともに、前記メモリアクセスオペレーションに基づいて、かつ、前記メモリアドレス位置の第2のセットを使用して、前記計算ユニットの第2のメモリに前記重みを格納することとを含む、請求項19に記載のプログラム。
JP2021123193A 2016-10-27 2021-07-28 ニューラルネットワーク命令セットアーキテクチャ Active JP7158543B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022163303A JP7485740B2 (ja) 2016-10-27 2022-10-11 ニューラルネットワーク命令セットアーキテクチャ

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/336,216 2016-10-27
US15/336,216 US9959498B1 (en) 2016-10-27 2016-10-27 Neural network instruction set architecture
US15/455,685 US9836691B1 (en) 2016-10-27 2017-03-10 Neural network instruction set architecture
US15/455,685 2017-03-10
JP2019522877A JP6921951B2 (ja) 2016-10-27 2017-08-29 ニューラルネットワーク命令セットアーキテクチャ

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2019522877A Division JP6921951B2 (ja) 2016-10-27 2017-08-29 ニューラルネットワーク命令セットアーキテクチャ

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022163303A Division JP7485740B2 (ja) 2016-10-27 2022-10-11 ニューラルネットワーク命令セットアーキテクチャ

Publications (2)

Publication Number Publication Date
JP2021184276A JP2021184276A (ja) 2021-12-02
JP7158543B2 true JP7158543B2 (ja) 2022-10-21

Family

ID=60452227

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2019522877A Active JP6921951B2 (ja) 2016-10-27 2017-08-29 ニューラルネットワーク命令セットアーキテクチャ
JP2021123193A Active JP7158543B2 (ja) 2016-10-27 2021-07-28 ニューラルネットワーク命令セットアーキテクチャ
JP2022163303A Active JP7485740B2 (ja) 2016-10-27 2022-10-11 ニューラルネットワーク命令セットアーキテクチャ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2019522877A Active JP6921951B2 (ja) 2016-10-27 2017-08-29 ニューラルネットワーク命令セットアーキテクチャ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2022163303A Active JP7485740B2 (ja) 2016-10-27 2022-10-11 ニューラルネットワーク命令セットアーキテクチャ

Country Status (10)

Country Link
US (4) US9959498B1 (ja)
EP (2) EP3532996A1 (ja)
JP (3) JP6921951B2 (ja)
KR (3) KR102525080B1 (ja)
CN (1) CN108009627A (ja)
DE (2) DE102017120588A1 (ja)
GB (1) GB2558980A (ja)
HK (1) HK1254701A1 (ja)
SG (1) SG11201903631XA (ja)
WO (1) WO2018080628A1 (ja)

Families Citing this family (97)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10360163B2 (en) 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
EP4160449A1 (en) * 2016-12-30 2023-04-05 Intel Corporation Deep learning hardware
US9875167B1 (en) 2017-03-29 2018-01-23 Google Inc. Distributed hardware tracing
US10365987B2 (en) 2017-03-29 2019-07-30 Google Llc Synchronous hardware event collection
US10795836B2 (en) 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10684955B2 (en) 2017-04-21 2020-06-16 Micron Technology, Inc. Memory devices and methods which may facilitate tensor memory access with memory maps based on memory operations
US11113051B2 (en) * 2017-04-28 2021-09-07 Tenstorrent Inc. Processing core with metadata actuated conditional graph execution
US10817293B2 (en) * 2017-04-28 2020-10-27 Tenstorrent Inc. Processing core with metadata actuated conditional graph execution
US11138494B2 (en) * 2017-05-02 2021-10-05 International Business Machines Corporation Storage controller acceleration for neural network training and inference
US10565285B2 (en) * 2017-12-18 2020-02-18 International Business Machines Corporation Processor and memory transparent convolutional lowering and auto zero padding for deep neural network implementations
US10747631B2 (en) * 2018-01-19 2020-08-18 DinoplusAI Holdings Limited Mission-critical AI processor with record and replay support
US10373291B1 (en) 2018-01-31 2019-08-06 Google Llc Image transformation for machine learning
US10445638B1 (en) * 2018-02-28 2019-10-15 Amazon Technologies, Inc. Restructuring a multi-dimensional array
US20190318229A1 (en) * 2018-04-12 2019-10-17 Advanced Micro Devices, Inc. Method and system for hardware mapping inference pipelines
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11481612B1 (en) 2018-04-20 2022-10-25 Perceive Corporation Storage of input values across multiple cores of neural network inference circuit
US11210586B1 (en) 2018-04-20 2021-12-28 Perceive Corporation Weight value decoder of neural network inference circuit
US11586910B1 (en) 2018-04-20 2023-02-21 Perceive Corporation Write cache for neural network inference circuit
US11341397B1 (en) 2018-04-20 2022-05-24 Perceive Corporation Computation of neural network node
US11222257B1 (en) 2018-04-20 2022-01-11 Perceive Corporation Non-dot product computations on neural network inference circuit
US11049013B1 (en) * 2018-04-20 2021-06-29 Perceive Corporation Encoding of weight values stored on neural network inference circuit
US20190332925A1 (en) * 2018-04-30 2019-10-31 International Business Machines Corporation Neural hardware accelerator for parallel and distributed tensor computations
CN112106078A (zh) * 2018-05-08 2020-12-18 多伦多大学管理委员会 神经网络处理元件
US10887182B1 (en) * 2018-05-10 2021-01-05 Hrl Laboratories, Llc System and method for pairwise network alignment
CN110490295B (zh) * 2018-05-15 2022-04-05 华为技术有限公司 一种数据处理方法及处理装置
US11443176B2 (en) * 2018-05-17 2022-09-13 International Business Machines Corporation Acceleration of convolutional neural networks on analog arrays
US11449363B2 (en) * 2018-05-31 2022-09-20 Neuralmagic Inc. Systems and methods for improved neural network execution
US20190392287A1 (en) 2018-06-22 2019-12-26 Samsung Electronics Co., Ltd. Neural processor
US11205125B2 (en) 2018-06-29 2021-12-21 International Business Machines Corporation Scheduler and simulator for an area-efficient, reconfigurable, energy-efficient, speed-efficient neural network
US20200019836A1 (en) * 2018-07-12 2020-01-16 International Business Machines Corporation Hierarchical parallelism in a network of distributed neural network cores
US10956315B2 (en) 2018-07-24 2021-03-23 Micron Technology, Inc. Memory devices and methods which may facilitate tensor memory access
EP3732630A1 (en) * 2018-08-03 2020-11-04 Google LLC Distributing tensor computations across computing devices
WO2020033898A1 (en) * 2018-08-09 2020-02-13 Board Of Trustees Of Michigan State University Systems and methods for providing flexible, multi-capacity models for use of deep neural networks in mobile devices
CN110825530B (zh) * 2018-08-10 2022-12-23 昆仑芯(北京)科技有限公司 用于人工智能芯片的指令执行方法和装置
CN112732601A (zh) * 2018-08-28 2021-04-30 中科寒武纪科技股份有限公司 数据预处理方法、装置、计算机设备和存储介质
US11586417B2 (en) * 2018-09-28 2023-02-21 Qualcomm Incorporated Exploiting activation sparsity in deep neural networks
WO2020077565A1 (zh) * 2018-10-17 2020-04-23 北京比特大陆科技有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
KR102637733B1 (ko) 2018-10-31 2024-02-19 삼성전자주식회사 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
US11537853B1 (en) 2018-11-28 2022-12-27 Amazon Technologies, Inc. Decompression and compression of neural network data using different compression schemes
US11263011B2 (en) 2018-11-28 2022-03-01 International Business Machines Corporation Compound instruction set architecture for a neural inference chip
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
CN117785441A (zh) * 2018-12-06 2024-03-29 华为技术有限公司 处理数据的方法和数据处理装置
CN110033091B (zh) 2018-12-13 2020-09-01 阿里巴巴集团控股有限公司 一种基于模型进行预测的方法和装置
US20200202198A1 (en) * 2018-12-21 2020-06-25 Waymo Llc Neural network processor
CN109670158B (zh) * 2018-12-27 2023-09-29 北京及客科技有限公司 一种用于根据资讯数据生成文本内容的方法与设备
US20200234129A1 (en) * 2019-01-22 2020-07-23 Nvidia Corporation Techniques for removing masks from pruned neural networks
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
US11961007B2 (en) 2019-02-06 2024-04-16 Qualcomm Incorporated Split network acceleration architecture
CN109902819B (zh) * 2019-02-12 2023-04-18 Oppo广东移动通信有限公司 神经网络计算方法、装置、移动终端及存储介质
CN111563587B (zh) * 2019-02-14 2022-12-09 上海寒武纪信息科技有限公司 一种神经网络模型的拆分方法及相关产品
US11748599B2 (en) * 2019-02-21 2023-09-05 Texas Instruments Incorporated Super-tiling in neural network processing to enable analytics at lower memory speed
EP3716154A1 (en) * 2019-03-27 2020-09-30 GrAl Matter Labs S.A.S. Neuromorphic processing system and method of operating the same
CN112347186B (zh) * 2019-08-09 2023-02-28 安徽寒武纪信息科技有限公司 数据同步方法及装置以及相关产品
CN111831337B (zh) * 2019-04-19 2022-11-29 安徽寒武纪信息科技有限公司 数据同步方法及装置以及相关产品
CN110059805B (zh) * 2019-04-15 2021-08-31 广州异构智能科技有限公司 用于二值阵列张量处理器的方法
CN110046705B (zh) * 2019-04-15 2022-03-22 广州异构智能科技有限公司 用于卷积神经网络的装置
CN110033086B (zh) * 2019-04-15 2022-03-22 广州异构智能科技有限公司 用于神经网络卷积运算的硬件加速器
CN110033085B (zh) * 2019-04-15 2021-08-31 广州异构智能科技有限公司 张量处理器
US11671111B2 (en) 2019-04-17 2023-06-06 Samsung Electronics Co., Ltd. Hardware channel-parallel data compression/decompression
US11880760B2 (en) 2019-05-01 2024-01-23 Samsung Electronics Co., Ltd. Mixed-precision NPU tile with depth-wise convolution
CN110147253B (zh) * 2019-05-16 2020-10-20 湖南毂梁微电子有限公司 一种基于延迟栅栏同步操作指令的多核处理器同步方法
CN112395002B (zh) * 2019-08-14 2023-04-18 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
US11941533B1 (en) 2019-05-21 2024-03-26 Perceive Corporation Compiler for performing zero-channel removal
KR102192325B1 (ko) * 2019-06-04 2020-12-28 (주)딥엑스 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치
KR102351087B1 (ko) * 2019-06-04 2022-01-14 주식회사 딥엑스 인공신경망의 데이터 로컬리티 기반의 데이터 캐슁을 이용하여 고속의 인공신경망 오퍼레이션을 지원하는 데이터 관리 장치
US11354564B2 (en) * 2019-06-27 2022-06-07 Intel Corporation Tuning of loop orders in blocked dense basic linear algebra subroutines
US20210064987A1 (en) * 2019-09-03 2021-03-04 Nvidia Corporation Processor and system to convert tensor operations in machine learning
US20210081841A1 (en) * 2019-09-12 2021-03-18 Viani Systems, Inc. Visually creating and monitoring machine learning models
US20210103803A1 (en) * 2019-10-08 2021-04-08 Apple Inc. Multi-Mode Planar Engine For Neural Processor
US20210110243A1 (en) * 2019-10-10 2021-04-15 Hewlett Packard Enterprise Development Lp Deep learning accelerator system interface
JP7462140B2 (ja) 2019-10-29 2024-04-05 国立大学法人 熊本大学 ニューラルネットワーク回路及びニューラルネットワーク演算方法
KR20210093127A (ko) * 2020-01-17 2021-07-27 에스케이하이닉스 주식회사 Aim 장치
US11314674B2 (en) * 2020-02-14 2022-04-26 Google Llc Direct memory access architecture with multi-level multi-striding
CN113391842A (zh) * 2020-03-13 2021-09-14 华为技术有限公司 一种单指令多数据simd指令的生成、处理方法以及相关设备
US11568249B2 (en) 2020-04-07 2023-01-31 International Business Machines Corporation Automated decision making for neural architecture search
CN111506520B (zh) 2020-07-01 2020-09-22 腾讯科技(深圳)有限公司 一种地址生成的方法、相关装置以及存储介质
US11954580B2 (en) 2020-09-16 2024-04-09 Meta Platforms, Inc. Spatial tiling of compute arrays with shared control
US20220092408A1 (en) * 2020-09-23 2022-03-24 Facebook, Inc. Neural network weight distribution using a tree direct-memory access (dma) bus
US11526965B2 (en) * 2020-09-28 2022-12-13 Robert Bosch Gmbh Multiplicative filter network
CN114444675A (zh) * 2020-10-30 2022-05-06 北京晶视智能科技有限公司 一种硬件加速器
WO2022092416A1 (ko) * 2020-11-02 2022-05-05 주식회사 딥엑스 인공신경망 데이터 지역성에 기초한 인공 신경망 메모리 시스템
US11704562B1 (en) 2020-11-04 2023-07-18 Meta Platforms, Inc. Architecture for virtual instructions
US11709783B1 (en) 2020-11-11 2023-07-25 Meta Platforms, Inc. Tensor data distribution using grid direct-memory access (DMA) controller
US11972349B1 (en) 2020-11-12 2024-04-30 Meta Platforms, Inc. Flexible compute array utilization in a tensor processor
US11922306B2 (en) 2020-12-28 2024-03-05 Meta Platforms, Inc. Tensor controller architecture
US11790611B2 (en) 2020-12-30 2023-10-17 Meta Platforms, Inc. Visual editor for designing augmented-reality effects that utilize voice recognition
TWI792665B (zh) * 2021-01-21 2023-02-11 創惟科技股份有限公司 人工智慧(ai)演算法運算加速處理器與其方法、計算機系統與非暫態電腦可讀取媒體
US11675592B2 (en) 2021-06-17 2023-06-13 International Business Machines Corporation Instruction to query for model-dependent information
US11734013B2 (en) 2021-06-17 2023-08-22 International Business Machines Corporation Exception summary for invalid values detected during instruction execution
US11269632B1 (en) 2021-06-17 2022-03-08 International Business Machines Corporation Data conversion to/from selected data type with implied rounding mode
US11797270B2 (en) 2021-06-17 2023-10-24 International Business Machines Corporation Single function to perform multiple operations with distinct operation parameter validation
US11693692B2 (en) 2021-06-17 2023-07-04 International Business Machines Corporation Program event recording storage alteration processing for a neural network accelerator instruction
US11669331B2 (en) 2021-06-17 2023-06-06 International Business Machines Corporation Neural network processing assist instruction
US11915001B1 (en) * 2022-12-26 2024-02-27 Rebellions Inc. Neural processor and method for fetching instructions thereof

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003244190A (ja) 2002-02-19 2003-08-29 Matsushita Electric Ind Co Ltd データフロー制御スイッチ用プロセッサ及びデータフロー制御スイッチ
JP2009176110A (ja) 2008-01-25 2009-08-06 Seiko Epson Corp 並列演算装置および並列演算方法
US20130212052A1 (en) 2012-02-15 2013-08-15 Microsoft Corporation Tensor deep stacked neural network
US20140067735A1 (en) 2012-08-29 2014-03-06 Microsoft Corporation Computer-implemented deep tensor neural network

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4874139A (ja) 1971-12-29 1973-10-05
JPS5364439A (en) 1976-11-20 1978-06-08 Agency Of Ind Science & Technol Linear coversion system
JPS58134357A (ja) * 1982-02-03 1983-08-10 Hitachi Ltd ベクトルプロセッサ
US5138695A (en) * 1989-10-10 1992-08-11 Hnc, Inc. Systolic array image processing system
US5325464A (en) * 1990-05-22 1994-06-28 International Business Machines Corporation Pyramid learning architecture neurocomputer
WO1991019267A1 (en) 1990-06-06 1991-12-12 Hughes Aircraft Company Neural network processor
AU658066B2 (en) 1992-09-10 1995-03-30 Deere & Company Neural network based control system
US6243734B1 (en) 1998-10-30 2001-06-05 Intel Corporation Computer product and method for sparse matrices
JP2001117900A (ja) 1999-10-19 2001-04-27 Fuji Xerox Co Ltd ニューラルネットワーク演算装置
US20020044695A1 (en) 2000-05-05 2002-04-18 Bostrom Alistair K. Method for wavelet-based compression of video images
US7016529B2 (en) 2002-03-15 2006-03-21 Microsoft Corporation System and method facilitating pattern recognition
US7493498B1 (en) 2002-03-27 2009-02-17 Advanced Micro Devices, Inc. Input/output permission bitmaps for compartmentalized security
US7426501B2 (en) 2003-07-18 2008-09-16 Knowntech, Llc Nanotechnology neural network methods and systems
US7818729B1 (en) 2003-09-15 2010-10-19 Thomas Plum Automated safe secure techniques for eliminating undefined behavior in computer software
WO2005067572A2 (en) * 2004-01-13 2005-07-28 New York University Method, system, storage medium, and data structure for image recognition using multilinear independent component analysis
CN101441441B (zh) 2007-11-21 2010-06-30 新乡市起重机厂有限公司 起重机智能防摇控制系统的设计方法
WO2009141789A1 (en) * 2008-05-21 2009-11-26 Nxp B.V. A data handling system comprising memory banks and data rearrangement
US8321652B2 (en) 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks
EP2290563B1 (en) 2009-08-28 2017-12-13 Accenture Global Services Limited Accessing content in a network
US8595467B2 (en) 2009-12-29 2013-11-26 International Business Machines Corporation Floating point collect and operate
US8457767B2 (en) 2010-12-31 2013-06-04 Brad Radl System and method for real-time industrial process modeling
US8977629B2 (en) 2011-05-24 2015-03-10 Ebay Inc. Image-based popularity prediction
US8812414B2 (en) 2011-05-31 2014-08-19 International Business Machines Corporation Low-power event-driven neural computing architecture in neural networks
US8909576B2 (en) 2011-09-16 2014-12-09 International Business Machines Corporation Neuromorphic event-driven neural computing architecture in a scalable neural network
US9201828B2 (en) 2012-10-23 2015-12-01 Analog Devices, Inc. Memory interconnect network architecture for vector processor
KR101772299B1 (ko) 2012-12-28 2017-08-28 인텔 코포레이션 스트라이딩된 액세스 패턴을 가진 벡터 레지스터에서 성분들을 축소하기 위한 명령어
CN104463209B (zh) 2014-12-08 2017-05-24 福建坤华仪自动化仪器仪表有限公司 一种基于bp神经网络的pcb板上数字代码识别方法
US10013652B2 (en) 2015-04-29 2018-07-03 Nuance Communications, Inc. Fast deep neural network feature transformation via optimized memory bandwidth utilization
US10489703B2 (en) 2015-05-20 2019-11-26 Nec Corporation Memory efficiency for convolutional neural networks operating on graphics processing units
US20160358069A1 (en) * 2015-06-03 2016-12-08 Samsung Electronics Co., Ltd. Neural network suppression
US10380479B2 (en) * 2015-10-08 2019-08-13 International Business Machines Corporation Acceleration of convolutional neural network training using stochastic perforation
US10509765B2 (en) * 2015-10-08 2019-12-17 Via Alliance Semiconductor Co., Ltd. Neural processing unit that selectively writes back to neural memory either activation function output or accumulator value
JP6750203B2 (ja) * 2015-10-20 2020-09-02 富士通株式会社 畳み込みニューラルネットワークの演算方法及び演算プログラム、情報処理装置
US9904874B2 (en) * 2015-11-05 2018-02-27 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks
US9875104B2 (en) * 2016-02-03 2018-01-23 Google Llc Accessing data in multi-dimensional tensors
US10552119B2 (en) * 2016-04-29 2020-02-04 Intel Corporation Dynamic management of numerical representation in a distributed matrix processor architecture
US10817802B2 (en) * 2016-05-07 2020-10-27 Intel Corporation Apparatus for hardware accelerated machine learning
CN106023065B (zh) * 2016-05-13 2019-02-19 中国矿业大学 一种基于深度卷积神经网络的张量型高光谱图像光谱-空间降维方法
CN106127297B (zh) * 2016-06-02 2019-07-12 中国科学院自动化研究所 基于张量分解的深度卷积神经网络的加速与压缩方法
US10360163B2 (en) 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US10175980B2 (en) * 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
US10733505B2 (en) 2016-11-10 2020-08-04 Google Llc Performing kernel striding in hardware
US10037490B2 (en) 2016-12-13 2018-07-31 Google Llc Performing average pooling in hardware
CN106529511B (zh) * 2016-12-13 2019-12-10 北京旷视科技有限公司 图像结构化方法及装置
US20180189675A1 (en) 2016-12-31 2018-07-05 Intel Corporation Hardware accelerator architecture and template for web-scale k-means clustering
US11164071B2 (en) 2017-04-18 2021-11-02 Samsung Electronics Co., Ltd. Method and apparatus for reducing computational complexity of convolutional neural networks
US10572409B1 (en) 2018-05-10 2020-02-25 Xilinx, Inc. Sparse matrix processing circuitry

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003244190A (ja) 2002-02-19 2003-08-29 Matsushita Electric Ind Co Ltd データフロー制御スイッチ用プロセッサ及びデータフロー制御スイッチ
JP2009176110A (ja) 2008-01-25 2009-08-06 Seiko Epson Corp 並列演算装置および並列演算方法
US20130212052A1 (en) 2012-02-15 2013-08-15 Microsoft Corporation Tensor deep stacked neural network
US20140067735A1 (en) 2012-08-29 2014-03-06 Microsoft Corporation Computer-implemented deep tensor neural network

Also Published As

Publication number Publication date
EP4235509A2 (en) 2023-08-30
US20220318594A1 (en) 2022-10-06
EP4235509A3 (en) 2023-09-20
GB2558980A (en) 2018-07-25
DE202017105403U1 (de) 2017-12-06
KR20230058539A (ko) 2023-05-03
US9836691B1 (en) 2017-12-05
HK1254701A1 (zh) 2019-07-26
US20180121786A1 (en) 2018-05-03
JP2022188245A (ja) 2022-12-20
US9959498B1 (en) 2018-05-01
JP2019533868A (ja) 2019-11-21
WO2018080628A1 (en) 2018-05-03
SG11201903631XA (en) 2019-05-30
US20180197068A1 (en) 2018-07-12
KR102385349B1 (ko) 2022-04-11
GB201715031D0 (en) 2017-11-01
DE102017120588A1 (de) 2018-05-03
EP3532996A1 (en) 2019-09-04
KR102525080B1 (ko) 2023-04-24
US11379707B2 (en) 2022-07-05
JP2021184276A (ja) 2021-12-02
KR20190068616A (ko) 2019-06-18
JP7485740B2 (ja) 2024-05-16
CN108009627A (zh) 2018-05-08
JP6921951B2 (ja) 2021-08-18
KR20220048043A (ko) 2022-04-19

Similar Documents

Publication Publication Date Title
JP7158543B2 (ja) ニューラルネットワーク命令セットアーキテクチャ
JP7279226B2 (ja) 代替ループ限界値
KR102412937B1 (ko) 합성곱 계층 가속 장치, 그것을 포함하는 임베디드 시스템 및 그것의 동작 방법
CN109324827B (zh) 用于处理用于访问数据的指令的装置、方法和系统
JP2022095817A (ja) ベクトル縮小プロセッサ
EP3857384B1 (en) Processing sequential inputs using neural network accelerators
US20210326683A1 (en) Hardware circuit for accelerating neural network computations
US20200250842A1 (en) Method and apparatus with convolution neural network processing
US20230195836A1 (en) One-dimensional computational unit for an integrated circuit
CN117492838A (zh) 访问序言和结尾数据
WO2023059335A1 (en) Hardware accelerator optimized group convolution based neural network models
WO2024058810A1 (en) Reducing memory bank conflicts in a hardware accelerator

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210818

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210818

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220829

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220913

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221011

R150 Certificate of patent or registration of utility model

Ref document number: 7158543

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150