JP2022512311A - 行列数学命令セットのタイリングアルゴリズム - Google Patents

行列数学命令セットのタイリングアルゴリズム Download PDF

Info

Publication number
JP2022512311A
JP2022512311A JP2021531339A JP2021531339A JP2022512311A JP 2022512311 A JP2022512311 A JP 2022512311A JP 2021531339 A JP2021531339 A JP 2021531339A JP 2021531339 A JP2021531339 A JP 2021531339A JP 2022512311 A JP2022512311 A JP 2022512311A
Authority
JP
Japan
Prior art keywords
matrix
format
matrix elements
elements
cache
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.)
Granted
Application number
JP2021531339A
Other languages
English (en)
Other versions
JP7427001B2 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2022512311A publication Critical patent/JP2022512311A/ja
Application granted granted Critical
Publication of JP7427001B2 publication Critical patent/JP7427001B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Biomedical Technology (AREA)
  • Medical Informatics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

Figure 2022512311000001
行列数学命令セットのためのタイリングアルゴリズムを実装するためのシステム、装置及び方法が開示される。システムは、メモリと、キャッシュと、プロセッサと、複数の計算ユニットと、を少なくとも含む。メモリは、複数の行列要素を線形フォーマットで記憶し、プロセッサは、複数の行列要素を線形フォーマットからタイリングフォーマットに変換する。各計算ユニットは、メモリからキャッシに複数の行列要素を取り出す。各計算ユニットは、対応するタイル(複数可)の複数の行列要素をキャッシュからロードし、複数の行列要素に対して行列演算を実行して、結果をタイリングフォーマットで生成する行列演算ユニットを含む。システムは、行列演算の結果に基づいて第1のデータセットの分類を生成する。
【選択図】図17

Description

並列処理ユニットで行列演算を実行すると、メモリから大量のデータがロードされ、メモリ帯域幅の利用率が高くなる。行列要素をロードするには、通常、線形フォーマットでメモリに記憶される行列データ要素をステップ実行するためのオフセットを計算することが必要になる。しかしながら、これは、正しい順序で行列の要素を移動して行列演算を実行するのに使用されるオフセットを計算するために、ロード命令毎に複雑な式が必要になる。本明細書で使用される場合、「線形フォーマット」という用語は、メモリの物理的な行又は列の最後に達するまで、連続する行列要素が、隣接する記憶位置に順次記憶されるフォーマットして定義される。行列要素を記憶するための線形フォーマットの例は、行優先順位及び列優先順位を含む。行優先順位では、行列の行の連続する要素は、メモリ内で互いに隣接して存在する。列優先順位では、行列の列の連続する要素は、メモリ内で互いに隣接して存在する。行列要素を線形フォーマットで処理すると、メモリ帯域幅及び行列演算ユニットの使用効率が悪くなる。
添付の図面と併せて以下の説明を参照することによって、本明細書に記載される方法及びメカニズムの利点をより良く理解することができる。
コンピューティングシステムの一の実施形態のブロック図である。 コンピューティングシステムの別の実施形態のブロック図である。 行列演算ユニットの一実施形態のブロック図である。 SIMDユニットによって演算されるソースA行列のデータレイアウトの一実施形態を示す図である。 SIMDユニットによって演算されるソースB行列のデータレイアウトの一実施形態を示す図である。 タイリングブロックのタイリングレイアウトの一実施形態を示す図である。 ソースA行列内の32×32ブロックのフォーマットの一実施形態を示す図である。 ソースA行列内の128×128ブロックのフォーマットの一実施形態を示す図である。 128×128ブロックで構成された画像のフォーマットの一実施形態を示す図である。 ソースB行列の一実施形態を示す図である。 ソースB行列内の32×32ブロックのフォーマットの一実施形態を示す図である。 ソースB行列内の128×128ブロックのフォーマットの一実施形態を示す図である。 128×128ブロックで構成された画像のフォーマットの一実施形態を示す図である。 結果C行列の一実施形態を示す図である。 一実施形態による、ソースA行列を線形フォーマットからタイリングフォーマットに変換するための擬似コードの例を示す図である。 一実施形態による、ソースB行列を線形フォーマットからタイリングフォーマットに変換するための擬似コードの例を示す図である。 行列演算を実行するために行列データを線形フォーマットからタイリングフォーマットに変換するための方法の一実施形態を示す一般化されたフロー図である。
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、多くの具体的な詳細が記載されている。しかしながら、当業者は、様々な実施形態がこれらの具体的な詳細無しに実施され得ることを認識すべきである。いくつかの例では、本明細書で説明するアプローチを不明瞭にすることを回避するために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示す要素が必ずしも縮尺通りに描かれていないことが理解されるであろう。例えば、いくつかの要素の寸法は、他の要素に対して誇張されている場合がある。
行列演算を実行するために、行列データを線形フォーマットからタイリングフォーマット(tiling format)に変換するための様々なシステム、装置及び方法が本明細書に開示されている。システムは、メモリと、キャッシュと、プロセッサと、複数の計算ユニットと、を少なくとも含む。メモリは、複数の行列要素を線形フォーマットで記憶し、プロセッサは、複数の行列要素を線形フォーマットからタイリングフォーマットに変換する。一実施形態では、「タイルフォーマット」又は「タイリングフォーマット」という用語は、所定の行列演算を実行するための行列要素が隣接する記憶位置に記憶されるように、行列要素を記憶位置に記憶するためのフォーマットとして定義される。一実装形態では、所定の行列演算は、行列乗算演算である。別の実施形態では、「タイリングフォーマット」という用語は、タイルの列を構成する行列要素が隣接する記憶位置に記憶されるフォーマットとして定義される。「タイル」という用語は、N×Mブロックの要素として定義され、N及びMは正の整数であり、N又はMの少なくとも1つは1よりも大きい。また、「タイル」は、本明細書では「ブロック」と呼ばれる場合もある。一実施形態では、第1のソース行列のタイルの列の数「M」は、行列演算ユニットのレーンの数に等しい。一実装形態では、行列乗算演算の場合、第1のソース行列がN×M個の要素のタイルに分割され、一方、第2のソース行列が、M×N個の要素のタイルに分割される。
タイリングフォーマットによって、行列データは、オフセット計算を実行することなくデータを連続してロードすることができる特定のレイアウトで配列される結果となる。各計算ユニットは、1つ以上のタイルの行列要素の行及び/又は列をメモリからキャッシュに取り出す。各計算ユニットは、対応するタイル(複数可)の複数の行列要素をキャッシュから取り出し、複数の行列要素に対して行列演算を実行して、結果をタイリングフォーマットで生成する行列演算ユニットを含む。一実施形態では、システムは、機械学習エンジンの一部として複数の計算ユニットで複数の行列演算を実行して、第1のデータセットの分類を生成する。例えば、一実施形態では、システムは、ニューラルネットワークを実施して画像を1つ以上のカテゴリに分類しながら、複数の行列演算を実行する。ニューラルネットワークは、畳み込みニューラルネットワーク、再帰型(recurrent)ニューラルネットワーク又は他のタイプであってもよい。手書き数字分類や顔検出等の様々なタスクをニューラルネットワークで実行することができる。さらに、ニューラルネットワークは、他のより困難な視覚的分類タスクを実行することもできる。ニューラルネットワークの他の用途は、音声認識、言語モデルリング、感情分析、テキスト予測等を含む。他の実施形態では、システムは、他のタイプのソフトウェアアプリケーションの一部として、複数の計算ユニットで複数の行列演算を実行する。
様々な実施形態では、キャッシュはP個のチャネルを有し、Pは1よりも大きい正の整数である。一実施形態では、Pは32に等しい。他の実施形態では、Pは他の数に等しい。要求は、物理アドレスビットの一部に基づいてキャッシュの異なるチャネルにマッピングされる。例えば、一実施形態では、各チャネルは、物理アドレスのビット12~8でマッピングされる。他の実施形態では、チャネルマッピングは、物理アドレスの他のビットに基づく。一実施形態では、行列要素をタイリングフォーマットで記憶すると、キャッシュヒット効率が向上する。典型的な用途では、各計算ユニットは異なる行列タイルを処理するが、タイルは同じキャッシュチャネルにマッピングすることができる。これは、異なる計算ユニットが同じキャッシュチャネルを介してデータを要求することになるため、キャッシュ効率に影響を与える可能性がある。したがって、計算ユニットは、データがキャッシュから返されるのを待機し、キャッシュは、同じチャネルで要求を1つずつ処理する。しかしながら、行列要素がタイリングフォーマットで記憶される場合、異なる計算ユニットが異なるチャネルにマッピングされる。計算ユニットが同じカーネルを並行して実行している場合、要求が異なるチャネル上のキャッシュに送信されるので、キャッシュアクセス効率を向上させるのに役立つ。
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、プロセッサ105A~105Nと、入力/出力(I/O)インタフェース120と、バス125と、メモリコントローラ(複数可)130と、ネットワークインタフェース135と、メモリデバイス(複数可)140と、ディスプレイコントローラ150と、ディスプレイ155と、を少なくとも含む。他の実施形態では、コンピューティングシステム100は、他のコンポーネントを含み、及び/又は、異なるように構成されている。プロセッサ105A~105Nは、システム100に含まれる任意の数のプロセッサを表す。
一実施形態では、プロセッサ105Aは、中央処理装置(CPU)等の汎用プロセッサである。一実施形態では、プロセッサ105Nは、高度に並列なアーキテクチャを有するデータ並列プロセッサである。データ並列プロセッサは、グラフィックスプロセッシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等を含む。いくつかの実施形態では、プロセッサ105A~105Nは、複数のデータ並列プロセッサを含む。一実施形態では、プロセッサ105Nは、ディスプレイ155に送られるピクセルをディスプレイコントローラ150に提供するGPUである。
メモリコントローラ(複数可)130は、プロセッサ105A~105Nによってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ(複数可)130は、任意の数及びタイプのメモリデバイス(複数可)140に結合されている。メモリデバイス(複数可)140は、任意の数及びタイプのメモリデバイスを表す。例えば、メモリデバイス(複数可)140内のメモリのタイプとしては、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)等が挙げられる。
I/Oインタフェース120は、任意の数及びタイプのI/Oインタフェース(例えば、PCI(Peripheral Component Interconnect)バス、PCI-X(PCI-Extended)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々なタイプの周辺装置(図示省略)がI/Oインタフェース120に結合されている。このような周辺装置は、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶装置、ネットワークインタフェースカード等を含むが、これらに限定されない。ネットワークインタフェース135は、ネットワークを介してネットワークメッセージを送受信するために使用される。
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、様々な他のタイプのコンピューティングシステム若しくはコンピューティングデバイスである。コンピューティングシステム100のコンポーネントの数は、実施形態によって異なることに留意されたい。例えば、他の実施形態では、図1に示す数よりも多い又は少ないコンポーネントが存在する。他の実施形態では、コンピューティングシステム100は、図1に示されていない他のコンポーネントを含むことにも留意されたい。さらに、他の実施形態では、コンピューティングシステム100は、図1に示す以外の方法で構成される。
図2を参照すると、コンピューティングシステム200の別の実施形態のブロック図が示されている。一実施形態では、システム200は、GPU205と、システムメモリ225と、ローカルメモリ230と、を含む。また、システム200は、図を不明瞭にすることを回避するために図示されていない他のコンポーネントを含む。GPU205は、コマンドプロセッサ235と、制御ロジック240と、ディスパッチユニット250と、計算ユニット255A~255Nと、メモリコントローラ220と、グローバルデータシェア270と、レベル1(L1)キャッシュ265と、レベル2(L2)キャッシュ260と、を少なくとも含む。他の実施形態では、GPU205は、他のコンポーネントを含み、図示されているコンポーネントのうち1つ以上を省略し、例えば1つのインスタンスしか図2に示されていなくてもコンポーネントの複数のインスタンスを有し、及び/又は、他の適切な方法で構成される。一実施形態では、GPU205の回路は、(図1の)プロセッサ105Nに含まれる。
様々な実施形態では、コンピューティングシステム200は、様々なタイプのソフトウェアアプリケーションの何れかを実行する。所定のソフトウェアアプリケーションの実行の一部として、コンピューティングシステム200のホストCPU(図示省略)は、GPU205で実行されるカーネルを起動する。コマンドプロセッサ235は、ホストCPUからカーネルを受信し、ディスパッチユニット250を使用して、対応するウェーブフロント(wavefront)を計算ユニット255A~255Nに発行する。一実施形態では、各計算ユニット255A~255Nは、行列演算ユニットを含む。例えば、行列演算ユニットは、行列乗算演算を実行する。さらに、様々な実施形態では、行列演算ユニットは、他のタイプの行列演算を実行する。計算ユニット255A~255Nで実行されるウェーブフロントは、データを読み出し、GPU205内のグローバルデータシェア270、L1キャッシュ265及びL2キャッシュ260に書き込む。図2には示されていないが、一実施形態では、計算ユニット255A~255Nは、各計算ユニット255A~255N内に1つ以上のキャッシュ及び/又はローカルメモリも含む。
一実施形態では、行列データは、システムメモリ225及び/又はローカルメモリ230に線形フォーマットで記憶される。行列データをL2キャッシュ260にロードする前に、行列データは、線形フォーマットからタイリングフォーマットに変換される。一実施形態では、「タイリングフォーマット」という用語は、複数の行列要素を一緒にタイルのユニットに記憶することとして定義され、各タイルは、N×Mブロックの行列要素を記憶し、N及びMは正の整数である。「タイリングフォーマット」によって、連続するタイルがメモリに順次記憶される。
一実施形態では、コマンドプロセッサ235は、行列データを線形フォーマットからタイリングフォーマットに変換する。別の実施形態では、ホストプロセッサ(例えば、図1のプロセッサ105A)は、行列データを線形フォーマットからタイリングフォーマットに変換する。次に、計算ユニット255A~255Nでのウェーブフロントの実行中、行列データは、タイリングフォーマットで記憶されているので、L2キャッシュ260から効率的にロードされる。一実施形態では、行列要素がタイリングフォーマットで記憶される場合、行列データ要素は、複数のチャネルでL2キャッシュ260から計算ユニット255A~255Nに並行して読み出される。これは、行列データ要素を線形フォーマットで記憶するよりもより効率的なアプローチであり、行列データ要素は、単一チャネルでL2キャッシュ260から連続して読み出されることになる。
図3を参照すると、行列演算ユニット300の一実施形態のブロック図が示されている。一実施形態では、各計算ユニット255A~255Nは、行列演算ユニット300の回路を含む。一実施形態では、行列演算ユニット300は、アーキテクチャベクトル汎用レジスタ(VGPR)ファイル305と、エクスポートユニット310と、蓄積(accumulation)VGPRファイル315と、単一命令複数データ(SIMD)ユニット320と、SIMDユニット325と、を少なくとも含む。行列演算ユニット300は、図を不明瞭にすることを回避するために図示されていない任意の数の他のコンポーネントも含むことを理解されたい。さらに、他の実施形態では、行列演算ユニット300は、他の適切な方法で構成される。
一実施形態では、SIMDユニット320は、様々な浮動小数点演算を実行するための浮動小数点ユニットであり、SIMDユニット325は、様々な行列演算(例えば、ドット積演算、行列乗算演算)を実行するための行列ユニットである。一実施形態では、アーキテクチャVGPRファイル305及び蓄積VGPRファイル315に接続されて示されている別個の各入力は、それぞれ32ビットの16レーンを有する。他の実施形態では、入力は、他のビット幅の他の数のレーンを有する。一実施形態では、SIMDユニット325は、行列要素がタイリングフォーマットで記憶される場合に、入力行列要素に対してより効率的に動作する。したがって、この実施形態では、行列要素は、アーキテクチャVGPRファイル305及び/又は蓄積VGPRファイル315に読み込まれる前に、線形フォーマットからタイリングフォーマットに変換される。これにより、SIMDユニット325による演算をより効率的に実行することが可能になる。
図4を参照すると、SIMDユニットによって演算されるソースA行列のデータレイアウト400の一実施形態の図が示されている。一実施形態では、(図3の)SIMDユニット325は、ソースA行列を読み込んで、ソースA行列をソースB行列で乗算した行列乗算演算を実行するために、図4に示すデータレイアウト400に従って構成される。例えば、この実施形態では、SIMDユニット毎に64のスレッドがデータレイアウト400に存在する。他の実施形態では、SIMDユニットは、データレイアウトに他の数(例えば、32、128)のスレッドを含む。データレイアウト400の各スレッドは、SIMDユニットのレーンに対応する。
処理されるブロックのサイズに応じて、異なる数のブロックをデータレイアウト400に従ってマッピングすることができる。例えば、各ブロックが32×2のサイズである場合、2つのブロック(Blk0およびBlk1)がVGPRファイルからSIMDユニットにマッピングされる。各ブロックが16×2のサイズである場合、4つのブロック(Blk0、Blk1、Blk2、Blk3)がVGPRファイルからSIMDユニットにマッピングされる。各ブロックのサイズが4×2の場合、16個のブロック(Blk0、Blk1、Blk2、Blk3、Blk4、Blk5、Blk6、Blk7、Blk8、Blk9、Blk10、Blk11、Blk12、Blk13、Blk14、Blk15)がVGPRファイルからSIMDユニットにマッピングされる。
図5を参照すると、SIMDユニットのためのソースB行列のデータレイアウト500の一実施形態の図が示されている。一実施形態では、VGPRファイルとSIMDユニット(例えば、(図3の)SIMDユニット325)との間の接続は、データレイアウト500に従って構成される。例えば、一実施形態では、データレイアウト500は、ソースA行列とソースB行列との間で行列乗算演算を実行するように、ソースB行列をロードするための接続を定義する。一実装形態では、データレイアウト500は、64スレッドのために構成される。他の実施形態では、データレイアウト500は、他の数のスレッドを含む。データレイアウト500の各スレッドは、SIMDユニットのレーンに対応する。処理されるブロックのサイズ(例えば、2×32、2×16、2×4)に応じて、異なる数(例えば、2、4、16)のブロックをデータレイアウト500に従ってマッピングすることができる。
図6を参照すると、ソースA行列のブロック600のタイリングレイアウトの一実施形態の図が示されている。一実施形態では、行列は複数のブロックに分割され、各ブロックはブロック600に従って構成される。ブロック600内の要素の構成は、線形データとタイリングデータとのマッピング関係を示す。例えば、行列要素65は、円605によって示される。この要素の元の位置は(x=3、y=0)である。したがって、位置は、線形フォーマットでは(y×stride+x)=0×4+3=3であり、タイリングフォーマットでは位置65である。一実施形態では、基本的なタイリングブロックは、行列乗算演算を実施するために、ソースA行列の場合32×4であり、ソースB行列の場合4×32である。他の実施形態では、行列演算の基本的なタイリングブロックは、他のサイズであってもよい。一実施形態では、行列階層の次のレベルで、サイズ32×4の8つの基本的なブロックが32×32の中間ブロックに結合される。さらに、行列階層を上に移動すると、16の中間ブロックが128×128の大きいブロックに結合される。残りの説明のために、処理される行列サイズが128×128の大きいブロックに整合されると仮定される。しかしながら、他の実施形態では、行列サイズを他のサイズのブロックに整合することができることを理解されたい。
図7を参照すると、ソースA行列内の32×32のブロック700の一実施形態の図が示されている。4×32の各ブロックは、図示するように、左から右へブロック0からブロック7まで左から右に配置されて、32×32ブロック700を形成する。他の実施形態では、他のサイズのブロックを互いに結合して、行列ブロック階層の上位のブロックを形成することができる。
図8を参照すると、ソースA行列の128×128ブロック800の一実施形態の図が示されている。128×128ブロック800の第1の列は、ブロック800内に示すように、32×32ブロック0~3から構成される。128×128ブロック800の第2の列は32×32ブロック4~7から構成され、128×128ブロック800の第3の列は32×32ブロック8~11から構成され、128×128ブロック800の第4の列(つまり、最も右の列)32×32ブロック12~15から構成される。一実施形態では、各32×32ブロックは、(図7の)ブロック700に従って構成される。
図9を参照すると、128×128ブロックから構成された画像900の一実施形態の図が示されている。他の実施形態では、画像は、他の適切な方法で構成可能な他のサイズのブロックから構成されることを理解されたい。例えば、他の実施形態では、画像は、64×64ブロック、256×256ブロック、又は、他のサイズのブロックから構成することができる。これらの実施形態の場合、画像900について本明細書で説明するメカニズム及び方法を、他のサイズのブロックから生成された他の画像に適用するように適合させることができる。
図10を参照すると、ソースB行列のブロック1000のタイリングレイアウトの一実施形態の図が示されている。一実施形態では、行列演算ユニットは、ソースA行列をソースB行列で乗算する。ソースB行列のブロック1000の構成は、行列乗算演算を実施するための一実施形態によるソースB行列ブロック1000の要素の構成の一例である。
図11を参照すると、ソースB行列の32×32ブロック1100の一実施形態の図が示されている。一実施形態では、ソースB行列の32×32ブロック1100は、8つの異なる32×4ブロックを使用して構成される。図11に示すように、各32×4ブロックは、ブロック1100に示すように、ブロック0からブロック7まで上から下に配置される。他の実施形態では、32×32ブロック1100は、他の数、サイズ、及び/又は、より小さいブロックの配置で構成することができる。
図12を参照すると、ソースB行列の128×128ブロック1200の一実施形態の図が示されている。128×128ブロック1200の第1の行は、左から右に移動する32×32ブロック0~3から構成される。128×128ブロック1200の第2の行は、左から右に移動する32×32ブロック4~7から構成され、128×128ブロック1200の第3の行は、左から右に移動する32×32ブロック8~11から構成され、128×128ブロック1200の第4の行(つまり、最下行)は、左から右に移動する32×32ブロック12~15から構成される。一実施形態では、各32×32ブロックは、(図11の)ブロック1100のレイアウトに従って構成される。
図13を参照すると、128×128ブロックから構成された画像1300の一実施形態の図が示されている。画像1300の第1の行は、左から右に移動する128×128ブロック0~7を含む。同様に、画像1300の第2の行は、左から右に移動する128×128ブロック8~15を含む。画像1300の他の行も同様に構成され、下の行は、左から右に移動する128×128ブロック56~63を含む。一実施形態では、各128×128ブロック0~63は、(図12の)ブロック1200に従って構成される。
図14を参照すると、結果C行列のブロック1400の一実施形態の図が示されている。一実施形態では、行列演算ユニットは、ソースA行列をソースB行列で乗算して、結果C行列を生成する。ブロック1400の要素の構成は、行列乗算演算が一実施形態に従って実行された後の結果C行列内のブロックの要素の構成の一例である。ブロック1400の第1の列は、要素0を含み、その後に要素1、要素2、要素3が続く。ブロック1400の第2の列は、要素7の上に要素6、要素6の上に要素5、要素5の上に要素4を含む。この要素レイアウトのパターンは、行列C1400の右側に移動する列において、最後の最も右側の列が要素60、要素61、要素62、要素63を含むまで続く。
図15を参照すると、一実施形態による、ソースA行列を線形フォーマットからタイリングフォーマットに変換するための擬似コード1500の例が示されている。擬似コード1500は、ある特定の実施形態に使用される特定の値を有する変数の定義を含む。他の実施形態では、これらの変数の値は、タイルのサイズ、行列乗算ユニットのレーンの数及びビット幅、キャッシュチャネルの数等に応じて変わる場合がある。
擬似コード1500及び(図16の)擬似コード1600の説明のために、2つの入力行列、つまりソースA行列及びソースB行列が存在すると仮定される。また、ソースA行列のサイズがM×Kであり、ソースB行列のサイズがK×Nであり、結果C行列のサイズがM×Nであり、M、N及びKが正の整数であることも仮定される。一実施形態では、M、N及びKは、1024に等しい。他の実施形態では、M、N及びKの値が変わる場合がある。
一実施形態では、メモリに2つのセットのバッファがある。A_outbuffer[]及びB_outbuffer[]は、それぞれソースA行列及びソースB行列の行列要素をメモリに線形フォーマットで記憶する。A_package_outbuffer[]及びB_package_outbuffer[]は、それぞれソースA行列及びソースB行列の行列要素をメモリにタイリングフォーマットで記憶する。擬似コード1500の命令に基づいて、連続する記憶位置に線形フォーマットで記憶されるソースA行列の要素は、タイリングフォーマットでタイル高さによって分けられる記憶位置に記憶される。言い換えると、タイル高さに等しいストライドで第2のバッファをステップ実行しながら、第1のバッファ(つまり、A_outbuffer [])の連続した位置から値が読み出され、第2のバッファ(つまり、A_package_outbuffer [])の位置に書き込まれる。ソースA行列及びソースB行列が線形フォーマットからタイリングフォーマットに変換された後、計算ユニット上で実行されるカーネルコードは、メモリからキャッシュ(例えば、L2キャッシュ)にデータをロードする。
図16を参照すると、ソースB行列を線形フォーマットからタイリングフォーマットに変換するための擬似コード1600の一例が示されている。擬似コード1600の説明は、(図15の)擬似コード1500の説明の続きであることを意図している。一実施形態では、擬似コード1600は、ソースB行列を線形フォーマットからタイリングフォーマットに変換するために使用される。ソースB行列が線形フォーマットからタイリングフォーマットに変換されると、カーネルコードは、メモリからキャッシュにデータをロードする。
図17を参照すると、行列演算を実行するために行列データを線形フォーマットからタイリングフォーマットに変換するための方法1700の一実施形態が示されている。説明のために、この実施形態のステップは順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素の1つ以上は、同時に実行されてもよいし、図示した順序とは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。また、他の追加の要素も必要に応じて実行される。本明細書で説明する様々なシステム又は装置の何れも、方法1700を実施するように構成される。
ホストプロセッサ(例えば、CPU)は、線形フォーマットで記憶された行列データに対して行列演算を実行する要求を検出する(ブロック1705)。一実施形態では、行列演算は行列乗算演算である。他の実施形態では、他のタイプの行列演算が要求される。次に、ホストプロセッサは、要求を検出したことに応じて、行列データを線形フォーマットからタイリングフォーマットに変換する(ブロック1710)。ソースA行列及びソースB行列を線形フォーマットからタイリングフォーマットに変換するための擬似コード1500,1600の例は、それぞれ図15及び図16に示されている。他の実施形態では、ソースA行列及びソースB行列を線形フォーマットからタイリングフォーマットに変換するための他の技術を利用することができる。
次に、複数の行列演算ユニットは、タイリングフォーマットの行列データをメモリからキャッシュのN個の全てのチャネルにロードする(ブロック1715)。一実施形態では、キャッシュはL2キャッシュである。一実施形態では、キャッシュはN個のチャネルを有し、Nは1よりも大きい正の整数である。次に、複数の行列演算ユニットは、行列データに対して行列演算を並列に実行して、結果を生成する(ブロック1720)。次に、プロセッサは、結果を使用して、所定のソフトウェアアプリケーションに関連する第1のアクションを完了する(ブロック1725)。一実施形態では、第1のアクションは、第1のデータセットの分類であり、所定のソフトウェアアプリケーションは、機械学習アプリケーションである。一実施形態では、第1のデータセットは画像であり、分類は、画像が属する所定のカテゴリを識別する。別の実施形態では、第1のデータセットはビデオであり、分類は、ビデオを所定のカテゴリに割り当てる。他の実施形態では、第1のデータセットは、他の方法で分類される他のタイプのデータを含む。他の実施形態では、他のタイプのソフトウェアアプリケーションに関連する他のタイプのアクションが実行される。ブロック1725の後に、方法1700は終了する。
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書に記載された方法及び/又はメカニズムを実施する。例えば、汎用プロセッサ又は専用プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態において、そのようなプログラム命令は、高水準プログラミング言語によって表すことができる。他の実施形態では、プログラム命令は、高水準プログラミング言語からバイナリ、中間又は他の形式にコンパイルされてもよい。或いは、ハードウェアの動作又は設計を記述するプログラム命令を書き込むことができる。このようなプログラム命令を、C等の高水準のプログラミング言語によって表すことができる。或いは、Verilog等のハードウェア設計言語(HDL)を使用することができる。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に、このようなコンピューティングシステムは、少なくとも1つのメモリと、プログラム命令を実行することができる1つ以上のプロセッサと、を含む。
上記の実施形態は、実装態様の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に認識されると、当業者には多数の変形及び修正が明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正の全てを包含すると解釈されることが意図されている。

Claims (20)

  1. システムであって、
    複数の行列要素を線形フォーマットで記憶するメモリと、
    キャッシュと、
    前記複数の行列要素を前記線形フォーマットからタイリングフォーマットに変換するように構成されたプロセッサと、
    複数の計算ユニットであって、前記複数の計算ユニットの各々が行列演算ユニットを備える、複数の計算ユニットと、を備え、
    各行列演算ユニットは、
    1つ以上の対応するタイルの所定の複数の行列要素を前記キャッシュからロードすることと、
    前記所定の複数の行列要素に対して行列演算を実行して、結果をタイリングフォーマットで生成することと、
    を行うように構成されており、
    前記システムは、複数の行列演算ユニットからの複数の結果に基づいて第1のデータセットの分類を生成するように構成されている、
    システム。
  2. 前記キャッシュは複数のチャネルを備え、前記複数の計算ユニットは、行列要素を、単一クロックサイクルで前記複数のチャネルに並列にロードするように構成されている、
    請求項1のシステム。
  3. 各計算ユニットは、前記複数の計算ユニットの他の計算ユニットによって実行されるカーネルと同等のカーネルを並列に実行するようにさらに構成されており、
    各行列演算ユニットは、前記キャッシュからの行列要素を、他の行列演算ユニットとは異なるチャネルにロードするように構成されている、
    請求項2のシステム。
  4. 前記プロセッサは、第1のソース行列の複数の行列要素を前記線形フォーマットからタイリングフォーマットに変換する要求を受信したことに応じて、
    前記メモリの第1のバッファの連続する位置から値を読み出すことであって、前記第1のバッファは行列要素を前記線形フォーマットで記憶する、ことと、
    前記値を第2のバッファに書き込みながら、タイル高さに等しいストライドで前記第2のバッファをステップ実行することであって、前記第2のバッファは行列要素を前記タイリングフォーマットで記憶する、ことと、
    を行うように構成されている、
    請求項1のシステム。
  5. 前記行列演算は行列乗算演算であり、前記所定の複数の行列要素は、各行列演算ユニットの複数のレーンで伝達される、
    請求項1のシステム。
  6. 前記第1のデータセットの分類は、機械学習エンジンアプリケーションの実行中に生成される、
    請求項1のシステム。
  7. 連続する記憶位置に前記線形フォーマットで記憶される第1のソース行列の要素は、タイル高さによって分けられる記憶位置に前記タイリングフォーマットで記憶される、
    請求項1のシステム。
  8. 方法であって、
    プロセッサが、メモリに記憶された複数の行列要素を線形フォーマットからタイリングフォーマットに変換することと、
    複数の計算ユニットが、複数の行列要素を前記メモリからキャッシュにロードすることと、
    複数の行列演算ユニットの各々が、1つ以上の対応するタイルの所定の複数の行列要素を前記キャッシュからロードすることと、
    各行列演算ユニットが、前記所定の複数の行列要素に対して行列演算を実行して、結果を前記タイリングフォーマットで生成することと、
    前記複数の行列演算ユニットからの複数の結果に基づいて第1のデータセットの分類を生成することと、を含む、
    方法。
  9. 前記キャッシュは複数のチャネルを備え、前記方法は、前記複数の計算ユニットが、行列要素を、単一クロックサイクルで前記複数のチャネルに並列にロードすることをさらに含む、
    請求項8の方法。
  10. 各計算ユニットが、前記複数の計算ユニットの他の計算ユニットによって実行されるカーネルと同等のカーネルを並列に実行することと、
    各行列演算ユニットが、前記キャッシュからの行列要素を、他の行列演算ユニットとは異なるチャネルにロードすることと、をさらに含む、
    請求項9の方法。
  11. 前記方法は、第1のソース行列の複数の行列要素を前記線形フォーマットからタイリングフォーマットに変換する要求を受信したことに応じて、
    前記メモリ内の第1のバッファの連続する位置から値を読み出すことであって、前記第1のバッファは行列要素を前記線形フォーマットで記憶する、ことと、
    前記値を第2のバッファに書き込みながら、タイル高さに等しいストライドで前記第2のバッファをステップ実行することであって、前記第2のバッファは行列要素を前記タイリングフォーマットで記憶する、ことと、を含む、
    請求項8の方法。
  12. 行列演算ユニット毎に、前記所定の複数の行列要素を前記行列演算ユニットの複数のレーンで伝達することであって、前記行列演算は行列乗算演算である、ことをさらに含む、
    請求項8の方法。
  13. 前記第1のデータセットの分類は、機械学習エンジンアプリケーションの実行中に生成される、
    請求項8の方法。
  14. 連続する記憶位置に前記線形フォーマットで記憶される第1のソース行列の要素は、タイル高さによって分けられる記憶位置に前記タイリングフォーマットで記憶される、
    請求項8の方法。
  15. 装置であって、
    複数の行列要素を線形フォーマットで記憶するメモリと、
    複数の計算ユニットと、を備え、
    前記複数の計算ユニットは、
    前記複数の行列要素が前記線形フォーマットからタイリングフォーマットに変換されるための要求を生成することと、
    前記タイリングフォーマットの前記複数の行列要素に対して行列演算を実行して、複数の結果を前記タイリングフォーマットで生成することと、
    前記複数の結果に基づいて第1のデータセットの分類を生成することと、
    を行うように構成されている、
    装置。
  16. キャッシュをさらに備え、前記キャッシュは複数のチャネルを備え、前記複数の計算ユニットは、行列要素を、単一クロックサイクルで前記複数のチャネルに並列にロードするように構成されている、
    請求項15の装置。
  17. 前記複数の計算ユニットの各々は、
    前記複数の計算ユニットの他の計算ユニットによって実行されるカーネルと同等のカーネルを並列に実行することと、
    前記キャッシュからの行列要素を、前記複数の計算ユニットの他の計算ユニットによって利用される他のチャネルとは異なるチャネルにロードすることと、
    を行うように構成されている、
    請求項16の装置。
  18. 前記装置は、第1のソース行列の複数の行列要素を前記線形フォーマットからタイリングフォーマットに変換する要求を受信したことに応じて、
    前記メモリの第1のバッファの連続する位置から値を読み出すことであって、前記第1のバッファは行列要素を前記線形フォーマットで記憶する、ことと、
    前記値を第2のバッファに書き込みながら、タイル高さに等しいストライドで前記第2のバッファをステップ実行することであって、前記第2のバッファは行列要素を前記タイリングフォーマットで記憶する、ことと、
    を行うように構成されている、
    請求項15の装置。
  19. 行列要素は、前記複数の計算ユニットの各々の複数のレーンで伝達され、前記行列演算は行列乗算演算である、
    請求項15の装置。
  20. 前記第1のデータセットの分類は、機械学習エンジンアプリケーションの実行中に生成される、
    請求項15の装置。
JP2021531339A 2018-12-19 2019-12-18 行列数学命令セットのタイリングアルゴリズム Active JP7427001B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN201811566422.XA CN111338974A (zh) 2018-12-19 2018-12-19 用于矩阵数学指令集的图块化算法
CN201811566422.X 2018-12-19
US16/232,768 US11687615B2 (en) 2018-12-19 2018-12-26 Tiling algorithm for a matrix math instruction set
US16/232,768 2018-12-26
PCT/US2019/067050 WO2020131993A1 (en) 2018-12-19 2019-12-18 Tiling algorithm for a matrix math instruction set

Publications (2)

Publication Number Publication Date
JP2022512311A true JP2022512311A (ja) 2022-02-03
JP7427001B2 JP7427001B2 (ja) 2024-02-02

Family

ID=71099356

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021531339A Active JP7427001B2 (ja) 2018-12-19 2019-12-18 行列数学命令セットのタイリングアルゴリズム

Country Status (6)

Country Link
US (1) US11687615B2 (ja)
EP (1) EP3899716A1 (ja)
JP (1) JP7427001B2 (ja)
KR (1) KR102606207B1 (ja)
CN (1) CN111338974A (ja)
WO (1) WO2020131993A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112433760B (zh) * 2020-11-27 2022-09-23 海光信息技术股份有限公司 数据排序方法和数据排序电路
WO2024167500A1 (en) * 2023-02-10 2024-08-15 Google Llc Tensor mapping unit for a hardware integrated circuit

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020198911A1 (en) * 2001-06-06 2002-12-26 Blomgren James S. Rearranging data between vector and matrix forms in a SIMD matrix processor
US20100241824A1 (en) * 2009-03-18 2010-09-23 International Business Machines Corporation Processing array data on simd multi-core processor architectures
US20110055517A1 (en) * 2009-08-26 2011-03-03 International Business Machines Corporation Method and structure of using simd vector architectures to implement matrix multiplication
US20140201450A1 (en) * 2011-09-15 2014-07-17 Kjetil B. Haugen Optimized Matrix and Vector Operations In Instruction Limited Algorithms That Perform EOS Calculations
US20180321938A1 (en) * 2017-05-08 2018-11-08 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
WO2018213636A1 (en) * 2017-05-17 2018-11-22 Google Llc Performing matrix multiplication in hardware

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2225321T3 (es) 1991-06-11 2005-03-16 Qualcomm Incorporated Aparaato y procedimiento para el enmascaramiento de errores en tramas de datos.
US6067287A (en) 1997-09-15 2000-05-23 Accton Technology Neural fuzzy connection admission controller and method in a node of an asynchronous transfer mode (ATM) communication network
US7469266B2 (en) * 2003-09-29 2008-12-23 International Business Machines Corporation Method and structure for producing high performance linear algebra routines using register block data format routines
US7873812B1 (en) * 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US8122078B2 (en) * 2006-10-06 2012-02-21 Calos Fund, LLC Processor with enhanced combined-arithmetic capability
US8131660B2 (en) 2008-04-08 2012-03-06 Microsoft Corporation Reconfigurable hardware accelerator for boolean satisfiability solver
US8369595B1 (en) 2012-08-10 2013-02-05 EyeVerify LLC Texture features for biometric authentication
US9319137B2 (en) 2013-09-09 2016-04-19 Ciena Corporation Methods and systems for reduced complexity nonlinear compensation
US9613001B2 (en) 2013-12-20 2017-04-04 Intel Corporation Processing device for performing convolution operations
US10015616B2 (en) 2014-06-06 2018-07-03 University Of Maryland, College Park Sparse decomposition of head related impulse responses with applications to spatial audio rendering
JP5976057B2 (ja) 2014-08-28 2016-08-23 京セラドキュメントソリューションズ株式会社 シート収納カセット及びそれを備えた画像形成装置
EP3035204B1 (en) 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US10417555B2 (en) 2015-05-29 2019-09-17 Samsung Electronics Co., Ltd. Data-optimized neural network traversal
US20160379109A1 (en) 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
US10078794B2 (en) 2015-11-30 2018-09-18 Pilot Ai Labs, Inc. System and method for improved general object detection using neural networks
US11055063B2 (en) 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
KR20180012439A (ko) 2016-07-27 2018-02-06 삼성전자주식회사 회선 신경망에서 가속기 및 이의 동작 방법
US20180218303A1 (en) 2017-02-01 2018-08-02 Weather Build, Inc. Systems and methods for analyzing weather event impacts on schedule activities
US9959247B1 (en) 2017-02-17 2018-05-01 Google Llc Permuting in a matrix-vector processor
WO2018174928A1 (en) * 2017-03-20 2018-09-27 Intel Corporation Systems, methods, and apparatuses for zeroing a matrix
KR102367859B1 (ko) 2017-06-07 2022-02-25 주식회사 케이티 특징 벡터를 이용하여 데이터를 분류하는 장치 및 방법
US10582250B2 (en) 2017-07-24 2020-03-03 Advanced Micro Devices, Inc. Integrated video codec and inference engine
US10747844B2 (en) * 2017-12-12 2020-08-18 Tesla, Inc. Systems and methods for converting a matrix input to a vectorized input for a matrix processor
US11561791B2 (en) * 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11948073B2 (en) 2018-04-20 2024-04-02 Advanced Micro Devices, Inc. Machine learning inference engine scalability
US10719323B2 (en) * 2018-09-27 2020-07-21 Intel Corporation Systems and methods for performing matrix compress and decompress instructions
US11769041B2 (en) 2018-10-31 2023-09-26 Advanced Micro Devices, Inc. Low latency long short-term memory inference with sequence interleaving
US11657119B2 (en) * 2018-12-10 2023-05-23 Advanced Micro Devices, Inc. Hardware accelerated convolution
CN111353575A (zh) * 2018-12-20 2020-06-30 超威半导体公司 用于卷积神经网络的图块化格式
CN111723918A (zh) 2019-03-18 2020-09-29 超威半导体公司 用于卷积内核的自动生成和调谐工具

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020198911A1 (en) * 2001-06-06 2002-12-26 Blomgren James S. Rearranging data between vector and matrix forms in a SIMD matrix processor
US20100241824A1 (en) * 2009-03-18 2010-09-23 International Business Machines Corporation Processing array data on simd multi-core processor architectures
US20110055517A1 (en) * 2009-08-26 2011-03-03 International Business Machines Corporation Method and structure of using simd vector architectures to implement matrix multiplication
US20140201450A1 (en) * 2011-09-15 2014-07-17 Kjetil B. Haugen Optimized Matrix and Vector Operations In Instruction Limited Algorithms That Perform EOS Calculations
US20180321938A1 (en) * 2017-05-08 2018-11-08 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
WO2018213636A1 (en) * 2017-05-17 2018-11-22 Google Llc Performing matrix multiplication in hardware

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
AMD GRAPHICS CORE NEXT ARCHITECTURE, GENERATION 3, JPN6022030356, August 2016 (2016-08-01), US, pages 10 - 8, ISSN: 0004835402 *

Also Published As

Publication number Publication date
US20200201931A1 (en) 2020-06-25
WO2020131993A1 (en) 2020-06-25
CN111338974A (zh) 2020-06-26
KR20210082527A (ko) 2021-07-05
EP3899716A1 (en) 2021-10-27
KR102606207B1 (ko) 2023-11-24
US11687615B2 (en) 2023-06-27
JP7427001B2 (ja) 2024-02-02

Similar Documents

Publication Publication Date Title
US11900253B2 (en) Tiling format for convolutional neural networks
US11960934B2 (en) Systems and methods for improved neural network execution
JP7407720B2 (ja) 低電力畳み込みニューラルネットワーク推論アプリケーションのメモリ帯域幅低減技術
CN109919311B (zh) 生成指令序列的方法、执行神经网络运算的方法和装置
US10255547B2 (en) Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system
JP7196167B2 (ja) ホスト通信されるマージされた重みと層単位命令のパッケージとを使用するニューラルネットワークアクセラレータによる多層ニューラルネットワーク処理
US20190114534A1 (en) Neural network processing system having multiple processors and a neural network accelerator
CN108388527B (zh) 直接存储器存取引擎及其方法
TW201447776A (zh) 透過圖形處理單元執行物件偵測運算
US11030095B2 (en) Virtual space memory bandwidth reduction
US10684824B2 (en) Stochastic rounding of numerical values
CN111465943A (zh) 芯片上计算网络
EP3678037A1 (en) Neural network generator
US11275632B2 (en) Broadcast command and response
WO2024027039A1 (zh) 数据处理方法、装置、设备和可读存储介质
JP7427001B2 (ja) 行列数学命令セットのタイリングアルゴリズム
KR20210014561A (ko) 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체
US11409840B2 (en) Dynamically adaptable arrays for vector and matrix operations
KR20210113099A (ko) 조정 가능한 기능-인-메모리 컴퓨팅 시스템
JP2023542935A (ja) 早期解放を伴うレジスタ圧縮
TWI850513B (zh) 用於記憶體內計算的方法及用於計算的系統
US20240127056A1 (en) Computational storage for an energy-efficient deep neural network training system
US12073317B2 (en) Method and system for processing a neural network
CN117875382A (zh) 高能效的深度神经网络训练系统的计算存储装置
US20230237011A1 (en) Mapping logical and physical processors and logical and physical memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220726

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20221026

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20221223

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230509

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230809

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: 20240109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240123

R150 Certificate of patent or registration of utility model

Ref document number: 7427001

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150