JP7194824B2 - 不可逆スパースロードsimd命令ファミリ - Google Patents

不可逆スパースロードsimd命令ファミリ Download PDF

Info

Publication number
JP7194824B2
JP7194824B2 JP2021521289A JP2021521289A JP7194824B2 JP 7194824 B2 JP7194824 B2 JP 7194824B2 JP 2021521289 A JP2021521289 A JP 2021521289A JP 2021521289 A JP2021521289 A JP 2021521289A JP 7194824 B2 JP7194824 B2 JP 7194824B2
Authority
JP
Japan
Prior art keywords
input vector
vector operands
threshold
zero
processing
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
JP2021521289A
Other languages
English (en)
Other versions
JP2022505316A (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 JP2022505316A publication Critical patent/JP2022505316A/ja
Application granted granted Critical
Publication of JP7194824B2 publication Critical patent/JP7194824B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30181Instruction operation extension or modification
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • 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
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • 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
    • 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/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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/048Activation functions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Neurology (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Description

(関連技術の説明)
新たな技術分野は、機械学習モデルの1つのタイプであるニューラルネットワークによる機械学習である。ニューラルネットワークは、手書き数字クラス分類及び顔検出等のタスクにおいて優れたパフォーマンスを実証している。また、ニューラルネットワークは、他のより困難な視覚クラス分類タスクにおいて良好に実行する可能性を示している。ニューラルネットワークの他のアプリケーションは、音声認識、言語モデリング、感情分析、テキスト予測等を含む。
ディープニューラルネットワーク(DNN)は、それらの様々なデータ構造においてスパース性(sparsity)又はゼロ値を示すことが知られている。例えば、ResNet-50及びAlexNetにおける活性化は、それぞれ58%及び55%の平均スパース性を示すが、DeepCompression AlexNetにおける重みは、推論段階で65%のスパース性を示す。DNNデータ構造におけるゼロ値は、結果として得られる積和(MAD)演算を生じさせ、この積和演算は、乗累算(MAC)演算の一部であり、不要であり非効率的となる可能性がある。この結果、一般的なハードウェアプラットフォーム上のDNNの実装が非効率的になる。
添付図面と併せて以下の説明を参照することによって、本明細書に記載される方法及びメカニズムの利点をより良く理解することができる。
コンピューティングシステムの一実施形態のブロック図である。 コンピューティングシステムの別の実施形態のブロック図である。 計算ユニットロジックの一実施形態のブロック図である。 ベクトル不可逆結合スパースロード命令(vector lossy combined sparse load instruction)を実行する方法の一実施形態を示す一般化されたフロー図である。 ベクトル不可逆シングルスパースロード命令を実行する方法の一実施形態を示す一般化されたフロー図である。 累積非ゼロカウントアレイを処理する方法の一実施形態を示す一般化されたフロー図である。 ベクトル不可逆スパースロード及びスキップ命令を実行する方法の一実施形態を示す一般化されたフロー図である。 不可逆スパースロード命令を実行する方法の一実施形態を示す一般化されたフロー図である。 ニューラルネットワークを実装する方法の一実施形態を示す一般化されたフロー図である。 一実施形態による内積及び外積行列乗算演算を実施するための擬似コードの例を示す図である。 一実施形態によるベクトル不可逆結合スパースロード命令を実施するための擬似コードの一例を示す図である。 ベクトル不可逆結合スパースロード命令を実施するためのロジックの一実施形態のブロック図である。 一実施形態によるベクトル不可逆シングルスパースロード命令を実施するための擬似コードの一例を示す図である。 一実施形態によるベクトル不可逆スパースロード及びスキップ命令を実施するための擬似コードの一例を示す図である。
以下の説明では、本明細書で提示される方法及びメカニズムの十分な理解をもたらすために、多くの具体的な詳細が記載される。しかしながら、当業者は、これらの具体的な詳細無しに様々な実施形態が実施され得ることを認識すべきである。場合によっては、本明細書で説明するアプローチを曖昧にすることを回避するために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図面に示される要素は、必ずしも縮尺通りに描かれていないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張される場合がある。
本明細書では、不可逆スパースロード(lossy sparse load)の単一命令複数データ(SIMD)命令ファミリを実現するための様々なシステム、装置及び方法が開示されている。ディープニューラルネットワーク(DNN)のデータ構造は、通常、ある程度のスパース性(すなわち、ゼロ値)を含む。様々な実施形態では、SIMD不可逆スパースロード命令ファミリ及び関連するマイクロアーキテクチャ拡張が、システムによって利用される。この命令ファミリは、DNNのトレーニング及び推論中に遭遇する動的なスパース性のために、プロセッサのパフォーマンス及びパワーを最適化する。一実施形態では、冗長な乗累算(MAC)又は積和(MAD)演算は、入力ベクトルオペランドをユーザ定義マスクに掛けることによって識別され、除去される。ユーザ定義マスクは、オプションで追加のスパース性を入力データ構造に付与し、特定のDNNのレジリエンシ(resiliency)を利用することによってパフォーマンス及びパワーゲインを向上させる。様々な実施形態では、命令は、ブロックとして、又は、スキップキューを介して選択的に、SIMDスケジューラによってウェーブフロント(wavefront)(すなわち、ワープ(warp))基準でスキップされる。
システムは、1つ以上のメモリに結合された複数の計算ユニットを有する少なくとも1つのプロセッサを含む。一実施形態では、各計算ユニットは、不可逆スパースロードユニットと、複数の処理要素と、を含む。一実施形態では、処理要素はSIMDユニットである。一実施形態では、不可逆スパースロードユニットは、ペンディング命令の1つ以上の入力ベクトルオペランドに存在する非ゼロ値の数を決定する。一実施形態では、不可逆スパースロードユニットは、1つ以上の入力ベクトルオペランド内の非ゼロ値の数が閾値以上であると決定したことに応じて、1つ以上の入力ベクトルオペランドを複数の処理要素によって処理させる。そうではなく、1つ以上の入力ベクトルオペランド内の非ゼロ値の数が閾値未満である場合、不可逆スパースロードユニットは、複数の処理要素による1つ以上の入力ベクトルオペランドの処理をスキップさせる。一実施形態では、閾値はプログラム可能である。
一実施形態では、システムは、システムの処理要素によって実行されるニューラルネットワークのプログラムコードを受信し、プログラムコードは、1つ以上の第1命令と、1つ以上の第2命令と、を含む。システムは、処理要素上で第1命令を実行し、第1及び第2命令の入力ベクトルオペランド内の非ゼロ値の数について第2命令の実行をスキップする。システムは、第1命令を実行し、第2命令をスキップすることによってニューラルネットワークを実装する。一実施形態では、システムは、ニューラルネットワークを実装して、第1データセットのクラス分類を生成する。上記の特性では、第1命令及び第2命令が事前に識別可能ではないことに留意されたい。むしろ、第1命令は、それらのオペランドが閾値量未満のスパース性を有することに基づいて実行時に識別され、第2命令は、それらのオペランドが閾値量以上のスパース性を有することに基づいて実行時に識別される。様々な実施形態では、スパース性の閾値量は、ニューラルネットワークの実施に対するエラーの許容度に基づいてユーザ設定可能である。
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、ニューラルネットワーク105と、プロセッサ(複数可)110と、入力/出力(I/O)インタフェース120と、バス125と、メモリサブシステム130と、を少なくとも含む。他の実施形態では、コンピューティングシステム100は、他のコンポーネントを含むことができ、及び/又は、異なるように構成され得る。様々な実施形態では、ニューラルネットワーク105は、様々な機械学習アルゴリズム又は機械学習モデルを実施するためのロジックを含む。一実施形態では、ニューラルネットワーク105は、畳み込みニューラルネットワークの1つ以上の層を実装する。例えば、この実施形態では、ニューラルネットワーク105は、1つ以上の畳み込み層及び/又は1つ以上の全結合層を実装する。別の実施形態では、ニューラルネットワーク105は、リカレントニューラルネットワークの1つ以上の層を実装する。様々な実施形態では、ニューラルネットワーク105は、確率的勾配降下法(SGD)による逆方向伝播(backward propagation)アルゴリズムを使用してトレーニングされる。一実施形態では、ニューラルネットワーク105のロジックは、複数の乗累算(MAC)ユニットと、周辺機器と、内部メモリストレージと、を含む。実施形態に応じて、様々なソフトウェア深層学習フレームワーク(例えば、Caffe、TensorFlow、Torch)の何れかが、特定の処理ユニット(例えば、グラフィックスプロセッシングユニット(GPU))上でニューラルネットワーク105をトレーニングするために使用される。
ニューラルネットワーク105は、実施形態によって異なる様々なアプリケーションで利用される。例えば、一実施形態では、ニューラルネットワーク105は、ビデオフレームを分析して、ビデオフレームに対して1つ以上のラベル確率を生成する。例えば、可能性のあるユースケースは、少なくとも視線追跡(eye tracking)、物体認識(object recognition)、点群推定(point cloud estimation)、レイトレーシング(ray tracing)、ライトフィールドモデリング(light field modeling)、デプストラッキング(depth tracking)等を含む。視線追跡ユースケースの場合、ニューラルネットワーク105によって生成される確率は、学習されたパターン、ドウェル(dwell)、遷移角度、ブリンク(blink)等に基づいている。他の実施形態では、ニューラルネットワーク105は、他のタイプのユースケースのためにトレーニングされ、カスタマイズされる。
概して、ニューラルネットワークの実装は、2つの幅広いタイプのスパース性を示す。第1スパース性は、ネットワークをプルーニング(pruning)することによって生じる重みの静的スパース性である。第2スパース性は、トレーニングにおけるエラーと同様に、アクティブ化における動的スパース性である。アクティブ化におけるスパース性は、負の入力をゼロにする関数、ReLU(Rectified Linear Unit)等の活性化関数の存在によって生じる。対照的に、ReLU等の活性化関数の負の入力と、最大プーリング層の非最大入力と、に対してゼロが逆伝播され得るので、エラーにおけるスパース性は、活性化関数及び最大プーリング層の両方の存在に起因する。ニューラルネットワーク105によって処理されているデータ構造に存在する静的スパース性及び動的スパース性を利用するために、命令ファミリ及び関連するマイクロアーキテクチャ拡張が本開示において導入される。命令ファミリ及び関連するマイクロアーキテクチャ拡張により、ニューラルネットワーク105のパフォーマンスを改善し、消費電力を低減することができる。
プロセッサ(複数可)110は、任意の数及びタイプの処理ユニット(例えば、中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC))を表す。一実施形態では、ニューラルネットワーク105に関連する処理のいくつかは、プロセッサ(複数可)110によって実行される。さらに、ニューラルネットワーク105は、これらのタイプの処理ユニット及び/又は他のタイプの処理要素の何れかを使用して実装される。メモリサブシステム130は、任意の数及びタイプのメモリデバイスを表す。例えば、メモリサブシステム130内のメモリのタイプは、高帯域幅メモリ(HBM)、不揮発性メモリ(NVM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、又は、強誘電体ランダムアクセスメモリ(FeRAM)等を含むことができる。メモリサブシステム130は、ニューラルネットワーク105及びプロセッサ(複数可)110によってアクセス可能である。I/Oインタフェース120は、任意の数及びタイプのI/Oインタフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCI-Extended(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々なタイプの周辺機器は、I/Oインタフェース120に結合され得る。このような周辺機器は、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶装置、及び、ネットワークインタフェースカード等を含むが、これらに限定されない。
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、様々な他のタイプのコンピューティングシステム若しくはデバイスの何れかである。コンピューティングシステム100のコンポーネントの数は、実施形態によって異なることに留意されたい。例えば、他の実施形態では、各コンポーネントの数は、図1に示す数よりも多い又は少ない。他の実施形態では、コンピューティングシステム100は、図1に示されていない他のコンポーネントを含むことにも留意されたい。さらに、他の実施形態では、コンピューティングシステム100は、図1に示す以外の他の方法で構成される。
図2を参照すると、コンピューティングシステム200の別の実施形態のブロック図が示されている。一実施形態では、システム200は、GPU205と、システムメモリ225と、ローカルメモリ230と、を含む。一実施形態では、(図1の)ニューラルネットワーク105は、GPU205上で実行される。また、システム200は、図を曖昧にするのを回避するために図示されていない他のコンポーネントも含む。GPU205は、コマンドプロセッサ235と、制御ロジック240と、ディスパッチユニット250と、計算ユニット255A~255Nと、メモリコントローラ220と、グローバルデータ共有部270と、レベル1(L1)キャッシュ265と、レベル2(L2)キャッシュ260と、を少なくとも含む。他の実施形態では、GPU205は、他のコンポーネントを含み、図示したコンポーネントのうち1つ以上を省略し、図2において1つのインスタンスのみが示されている場合であっても、コンポーネントの複数のインスタンスを有し、及び/又は、他の適切な方法で構成されている。
様々な実施形態において、コンピューティングシステム200は、様々なタイプのソフトウェアアプリケーションの何れかを実行する。所定のソフトウェアアプリケーションの実行の一部として、コンピューティングシステム200のホストCPU(図示省略)は、GPU205上で実行されるカーネルを起動する。コマンドプロセッサ235は、ホストCPUからカーネルを受信し、ディスパッチユニット250を使用して、カーネルを計算ユニット255A~255Nにディスパッチする。制御ロジック240は、GPU205の様々なリソースを監視し、ディスパッチユニット250が、ウェーブフロントを計算ユニット255A~255Nにディスパッチする方法を決定するのを支援する。計算ユニット255A~255N上で実行されるカーネル内のスレッドは、GPU205内のグローバルデータ共有部270、L1キャッシュ265及びL2キャッシュ260に対してデータを読み書きする。図2には示されていないが、一実施形態では、計算ユニット255A~255Nは、各計算ユニット255A~N内に1つ以上のキャッシュ及び/又はローカルメモリも含む。
図3を参照すると、計算ユニットロジック300の一実施形態のブロック図が示されている。一実施形態では、計算ユニットロジック300は、(図2の)計算ユニット255A~255Nの各々に含まれている。一実施形態では、ロジック300は、不可逆スパースロードユニット(LSLU)305と、メモリ310と、ベクトル汎用レジスタ(VGPR)315と、単一命令複数データ(SIMD)ユニット320と、スケジューラ325と、を含む。LSLU305は、本明細書において「ロードユニット」とも呼ばれることに留意されたい。さらに、SIMDユニット320は、本明細書において「処理要素」とも呼ばれることに留意されたい。一実施形態では、ロジック300は、グラフィックスプロセッシングユニット(GPU)内に含まれている。別の実施形態では、ロジック300は、フィールドプログラマブルゲートアレイ(FPGA)内に含まれている。さらなる実施形態では、ロジック300は、特定用途向け集積回路(ASIC)内に含まれている。他の実施形態では、ロジック300は、他のタイプの処理ユニット、コンピューティングデバイス、及び/又は、コンピューティングシステム内に含まれている。ロジック300は、本明細書において「制御ロジック」とも呼ばれることに留意されたい。
一実施形態では、LSLU305は、メモリ310からVGPR315にオペランドをロードし、次に、入力ベクトルオペランド内の非ゼロ値の数を決定する。別の実施形態では、LSLU305は、メモリ310からVGPR315に入力ベクトルオペランドをロードする前に、入力ベクトルオペランド内の非ゼロ値の数を決定する。一実施形態では、「非ゼロ値」という用語は、ゼロに等しくない値として定義されることに留意されたい。別の実施形態では、「非ゼロ値」という用語は、閾値を上回る値、又は、閾値を上回る絶対値を有する値として定義される。例えば、一実施形態では、閾値は、プログラム可能な小さな正の値(例えば、0.1)である。いくつかの実施形態では、所定の入力ベクトルオペランド内の非ゼロ値の数が閾値未満である場合、LSLU305は、所定のベクトルオペランドをメモリ310からVGPR315にロードしない。この閾値数は、LSLU305において、マスク/閾値306として示される。非ゼロ値の数を閾値数と比較するために使用される比較ロジックは、LSLU305において、比較器307として示される。他の実施形態では、LSLU305は、所定の入力ベクトルオペランド内の非ゼロ値の数が閾値数未満である場合でも、メモリ310からVGPR315又はバッファ308に所定の入力ベクトルオペランドをロードするが、所定の入力ベクトルオペランド内の非ゼロ値の数が閾値数未満である場合、LSLU305は、VGPR315内の所定の入力ベクトルオペランドを破棄、無効化、及び/又は、上書きする。
また、ロジック300には、SIMDユニット320上で実行される命令を発行するスケジューラ325も示されている。一実施形態では、SIMDユニット320は、スケジューラ325によって実行のために発行された命令の入力ベクトルオペランドに対して行列乗算を実行する。行列乗算は、実行される命令のタイプに応じて、内積又は外積の行列乗算とすることができる。他の実施形態では、SIMDユニット320は、スケジューラ325によって実行のために発行された命令の入力ベクトルオペランドに対して他のタイプの演算を実行する。一実施形態では、所定の命令の入力ベクトルオペランド(複数可)が閾値未満の非ゼロ値の数を有するとLSLU305が判別した場合、スケジューラ325は、SIMDユニット320上で所定の命令をスケジュールしない。むしろ、スケジューラ325は、次の命令に進む。閾値未満の非ゼロ値の数を有する命令をスキップすることによって、SIMDユニット320上でのニューラルネットワーク実装の効率が向上する。
図4を参照すると、ベクトル不可逆結合スパースロード命令を実行する方法400の一実施形態が示されている。説明のために、この実施形態でのステップ、及び、図5~図9のステップが順番に示されている。ただし、説明する方法の様々な実施形態では、説明する要素の1つ以上が、同時に実行されてもよいし、図示した順序と異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。他の追加の要素も、必要に応じて実行される。本明細書で説明する様々なシステム又は装置の何れも、方法400を実施するように構成されている。
不可逆スパースロードユニット(LSLU)は、現在のインデックスに加えてA及びBの両方の入力ベクトルオペランドを、データセット及びこのデータセットについての最大インデックスにロードする(ブロック405)。次に、LSLUは、A及びBの入力ベクトルオペランドの各々における非ゼロ値の数を決定する(ブロック410)。次いで、各入力ベクトルオペランド内の非ゼロ値の数が閾値未満であり、データセットへの現在のインデックスが最大インデックス未満である場合(条件ブロック415:「はい」)、LSLUは、入力ベクトルオペランドのアドレスへのポインタをストライドだけインクリメントし、LSLUは、現在のデータセットインデックスをインクリメントする(ブロック420)。ブロック420の後、方法400はブロック410に戻る。何れかの入力ベクトルオペランド内の非ゼロ値の数が閾値以上である場合、又は、データセットへの現在のインデックスが最大インデックスに等しい場合(条件ブロック415:「いいえ」)、LSLUは、ベクトルレジスタファイル内の入力ベクトルオペランドA及びBの値に値を返す(ブロック425)。ブロック425の後、方法400は終了する。一実施形態では、ベクトル不可逆結合スパースロード命令は、オペランドに対して乗累算(MAC)演算を実行する前に、A及びBの各々に1つのオペランドを繰り返しロードする、ブロックサイズが1の最も単純な内積及び外積の実装を対象としている。
図5を参照すると、ベクトル不可逆シングルスパースロード命令を実行する方法500の一実施形態が示されている。LSLUは、指定されたアドレスに対する入力ベクトルオペランド、オペランド識別子(ID)及びN値についてのロード命令を受信し、N値は入力ベクトルオペランドの総数を指定する(ブロック505)。次に、LSLUは、変数「i」を0に等しく設定し(ブロック510)、次いで、LSLUは、変数「i」がウェーブフロントの総スレッド数未満であるかどうかをチェックする(条件ブロック515)。変数「i」が総スレッド数未満である場合(条件ブロック515:「はい」)、LSLUは、入力ベクトルオペランドをメモリからベクトルレジスタファイルにロードし、LSLUは、入力ベクトルオペランド内の非ゼロ値の数をカウントし、この数を「accNZCount」アレイに記憶する(ブロック520)。次に、LSLUは、変数「i」をインクリメントし(ブロック525)、方法500は条件ブロック515に戻る。変数「i」がスレッド数と等しい場合(条件ブロック515:「いいえ」)、LSLUは、ベクトル「v」の値を返す(ブロック530)。ブロック530の後、方法500は終了する。「accNZCount」アレイを処理するための一実施形態は、以下の図6に関連する記載において説明される。
図6を参照すると、累算された非ゼロカウント(すなわち、accNZCount)アレイを処理する方法600の一実施形態が示されている。一実施形態では、方法600は、方法500で説明したベクトル不可逆シングルスパースロード命令の実行後に実行される。LSLUは、accNZCountアレイを受信する(ブロック605)。次に、変数「i」がゼロに初期化される(ブロック610)。次いで、LSLUは、変数「i」がウェーブフロントの総スレッド数未満であるかどうかを判別する(条件ブロック615)。
変数「i」がウェーブフロントの総スレッド数未満である場合(条件ブロック615:「はい」)、LSLUは、2つの入力オペランドの各々における非ゼロ値の数が閾値(すなわち、NZThres)未満であるかどうかを判別する(条件ブロック620)。2つの入力オペランドの各々の非ゼロカウントが閾値未満である場合(条件ブロック620:「はい」)、スレッド冗長インジケータは、現在のインデックス「i」について1に設定される(ブロック625)。そうではなく、2つの入力オペランドの何れかの非ゼロカウントが閾値以上である場合(条件ブロック620:「いいえ」)、スレッド冗長インジケータは、現在のインデックス「i」について0に設定される(ブロック630)。ブロック625,630の後、現在のインデックス「i」がインクリメントされ(ブロック635)、次に、方法600は条件ブロック615に戻る。
変数「i」が総スレッド数と等しい場合(条件ブロック615:「いいえ」)、LSLUは、複数のスレッド冗長インジケータに対してビット単位のAND演算を実行することによって、ウェーブフロント全体が冗長であるかどうかを判別する(ブロック640)。次に、LSLUは、ウェーブフロント全体が冗長であるかどうかを示す冗長ウェーブフロント値を返す(ブロック645)。ブロック645の後、方法600は終了する。
図7を参照すると、ベクトル不可逆スパースロード及びスキップ命令を実行する方法700の一実施形態が示されている。LSLUは、プログラムコード内のベクトル不可逆スパースロード及びスキップ命令を検出し、この命令の異なる符号化フィールドを取得する(ブロック705)。一実施形態では、符号化フィールドは、アドレス、N(入力ベクトルオペランドの総数)、r_offset1、r_offset2及びr_baseを含み、これらを使用して、所定のゼロ値についての冗長インデックスを計算する。他の実施形態では、ベクトル不可逆スパースロード及びスキップ命令は、他の数及び/又はタイプの符号化フィールドを含む。
次に、LSLUは、変数「i」をゼロに設定する(ブロック710)。次いで、LSLUは、変数「i」が「N」値未満であるかどうかを判別する(条件ブロック715)。変数「i」が「N」値未満である場合(条件ブロック715:「はい」)、LSLUは、データセットからの次の値のグループを、メモリからベクトルレジスタファイルにロードし、ロードされた値のグループ内の非ゼロ値の数のカウントを生成する(ブロック720)。この非ゼロ値の数は、図7において「NZCount[i]」で表される。
非ゼロ値の数が閾値(すなわち、NZThres)未満である場合(条件ブロック725:「はい」)、LSLUは、冗長な乗累算(MAC)インデックス(すなわち、ridx)を生成し、冗長なMACインデックスをスキップキューに書き込む(ブロック730)。ブロック730の後にLSLUは変数「i」をインクリメントし(ブロック735)、次に、方法700は条件ブロック715に戻る。非ゼロ値の数が閾値以上である場合(条件ブロック725:「いいえ」)、LSLUは変数「i」をインクリメントし(ブロック735)、方法700は条件ブロック715に戻る。変数「i」が「N」値と等しい場合(条件ブロック715:「いいえ」)、LSLUは値「v」のグループを返す(ブロック740)。ブロック740の後に、方法700は終了する。スケジューラは、実行される命令をSIMDユニットに発行する前にスキップキューにクエリを行い、この命令のインデックスがスキップキューに記憶されている場合に、次の命令に移ることに留意されたい。
図8を参照すると、不可逆スパースロード命令を実行する方法800の一実施形態が示されている。不可逆スパースロードユニットは、実行される不可逆スパースロード命令を受信する(ブロック805)。不可逆スパースロードユニットは、受信した不可逆スパースロード命令の1つ以上の入力ベクトルオペランド内に含まれる非ゼロ値の数を決定する(ブロック810)。非ゼロ値の数が閾値未満である場合(条件ブロック815:「はい」)、不可逆スパースロードユニットは、1つ以上の入力ベクトルオペランドについての命令が実行のために発行されるのを抑制する(ブロック820)。換言すれば、ブロック820において、不可逆スパースロードユニットは、1つ以上の入力ベクトルオペランドの処理をスキップさせる。一実施形態では、閾値はユーザ設定可能である。一実施形態では、ユーザは、基礎となるニューラルネットワークにおけるエラーに対する許容度に基づいて閾値を設定する。非ゼロ値の数が閾値以上である場合(条件ブロック815:「いいえ」)、不可逆スパースロードユニットは、1つ以上の入力ベクトルオペランドについての命令を実行のために発行させる(ブロック825)。ブロック820,825の後、方法800は終了する。不可逆スパースロードユニットが受信する不可逆スパースロード命令毎に方法800が繰り返されることに留意されたい。
図9を参照すると、ニューラルネットワークを実装する方法900の一実施形態が示されている。コンピューティングシステムは、ニューラルネットワークを実装するためのプログラムコードを受信する(ブロック905)。プログラムコードは、ニューラルネットワークを実装するための複数の命令を含む。一実施形態では、コンピューティングシステムは、複数の計算ユニットを含み、各計算ユニットは、不可逆スパースロードユニットを含む。
システムは、プログラムコードからの1つ以上の第1命令を複数の計算ユニット上で実行する(ブロック910)。また、システムは、プログラムコードからの1つ以上の第2命令の、複数の計算ユニット上での実行をスキップする(ブロック915)。システムは、1つ以上の第1命令を実行し、1つ以上の第2命令の実行をスキップすることによって、ニューラルネットワークを実装する(ブロック920)。
次いで、システムは、ニューラルネットワークを使用して、第1データセットのクラス分類を生成する(ブロック925)。ブロック925の後に、方法900は終了する。一実施形態では、第1データセットは画像であり、クラス分類は、この画像が属する所定のカテゴリを識別する。別の実施形態では、第1データセットはビデオであり、クラス分類は、このビデオを所定のカテゴリに割り当てる。他の実施形態では、第1データセットは他のタイプのデータを含む。方法900を複数回実施して、任意の数のデータセットのクラス分類を生成することができることに留意されたい。
図10を参照すると、内積及び外積行列乗算演算を実施するための擬似コードの例が示されている。GPU及び他のタイプの処理ユニット上で密行列乗算を実現するための多種多様な汎用行列乗算(GEMM)ルーチンが存在する。所定のシナリオにおける最適なルーチンは、オペランド行列のサイズ、ローカルメモリ及びグローバルメモリのサイズ、並びに、計算及び圧縮に利用可能なアクセラレータの機能によって決定される。GEMMアルゴリズムは、内積を利用するか外積を利用するかに基づいて、大まかに区別され得る。擬似コード1005は、内積行列乗算演算を実施するため一例として図10の上部に示されている。matrixMul関数は、MxK行列Aと、KxP行列Bとの間で密行列乗算を実行し、MxP行列Cを生成する。擬似コード1005は、行列Aを行優先フォーマット(row major format)で記憶し、行列Bを列優先フォーマット(column major format)で記憶すると仮定する。matrixMul関数は、innerProd関数を繰り返し呼び出し、Aのi番目の行と、Bのj番目の列との間で内積を実行することによって、各要素C[i][j]を計算する。DNN実装では、行列Aは前の層の出力アクティベーションに対応し、行列Bは現在の層の重みに対応し、行列Cは現在の層の出力アクティベーションに対応する。
擬似コード1010は、外積行列乗算演算を実施するための一例として図10の下部に示されている。matrixMul関数は、outerProd関数を繰り返し呼び出し、行列CにおけるN×N値のブロックを計算する。outerProd関数の名前は、A[i:i+N][:]におけるNサイズの列と、B[:][j:j+N]におけるNサイズの行との間の外積を合計することに由来する。行列A及びBにおけるスパース性により、innerProd関数及びouterProd関数で実行される乗累算(MAC)演算が冗長になる。これらの関数の両方は、通常、SIMDユニット毎にGPUで並列化される。SIMDユニットにおいて冗長MACによって個々のスレッドをマスクするだけで、電力及びエネルギーを節約することができるが、実行時間を節約するには、冗長ウェーブフロント全体をスキップする必要がある。したがって、一実施形態では、ウェーブフロントの全てのスレッドが、A又はBの何れかからゼロオペランド値をロードする場合、ウェーブフロント全体が除去される。別の実施形態では、スレッドによってロードされる値の全てではないが殆どがゼロである場合に、DNNアプリケーションのレジリエンシを利用して、冗長であるウェーブフロントを識別することによって、冗長ウェーブフロントに遭遇する可能性を高める。一実施形態では、ウェーブフロントが冗長であるとみなされるためにゼロである必要がある値の数は、ユーザ設定可能である。この実施形態では、最終的なアプリケーションは、結果において許容可能な劣化で維持することのできる非ゼロの数(すなわち、不可逆性の量)を指示する。
図11を参照すると、ベクトル不可逆結合スパースロード命令を実施するための擬似コード1105の一例が示されている。擬似コード1105は、ベクトル不可逆結合スパースロード(又は、V_LCSLD)命令を使用して内積行列乗算を実施するための一例として示されている。他の実施形態では、擬似コード1105は、他のタイプ及び/又は構成の命令を含むことができる。一実施形態では、V_LCSLD命令は、オペランドに対してMAC演算を実行する前に、行列A及びBの各々に1つのオペランドを繰り返しロードする、ブロックサイズが1の最も単純な内積及び外積の実装を主に対象としている。V_LCSLD命令は、両方のオペランドを組み合わせた形でメモリから読み出し、各オペランドの非ゼロの数が、設けられた不可逆閾値(thres)を超えた場合にのみ、値をベクトルレジスタファイル(VGPR)に返すことによって動作する。現在のロードが殆どのスレッドでゼロ値を返す場合、V_LCSLD命令は、次のMACのためのオペランドロードに自動的に進む。
一実施形態では、innerProd関数は、vA値及びvB値に対してMAC演算を実行する前に、V_LCSLD関数を繰り返し呼び出して、vA値及びvB値をロードする。V_LCSLD関数は、ウェーブフロント内の全てのスレッドについてのオペランドA及びBを、それぞれベクトルvA及びvBにロードする。次に、V_LCSLD関数は、vA及びvB内の非ゼロ値の数をカウントする。ループの終了条件が満たされていない場合(すなわち、非ゼロの数がNZThres内にあり、現在のループインデックスがmaxIdx未満の場合)、V_LCSLD関数は、次のオペランド値をロードし、このインデックス(すなわち、idx)をインクリメントする。終了時に、vA及びvBの現在の値が現在のidx値とともに返され、最終的なinnerProd関数が正しく実行されるようになる。
図12を参照すると、ベクトル不可逆結合スパースロード命令を実施するためのロジック1200の一実施形態のブロック図が示されている。一実施形態では、ロジック1200は、キャッシュ1205と、ゼロチェックロジック1210と、次アドレス生成器1215と、入力ベクトルオペランドA及びBの非ゼロ値カウントロジック1220,1225と、を少なくとも含む。ベクトルA及びBのオペランド内の非ゼロ値の数は、ロジック1220,1225の各々によってカウントされる。非ゼロ値の数は、A及びBのオペランドの閾値と比較され、これらの比較の出力がORゲートに送られる。このORゲートの出力は、入力ベクトルオペランドが冗長であるかどうかを示す「IsRedundant」信号である。他の実施形態では、ロジック1200は、他のコンポーネントを含むことができ、及び/又は、他の適切な方法で構成することができる。
図13を参照すると、ベクトル不可逆シングルスパースロード命令を実施するための擬似コード1305の一例が示されている。擬似コード1305は、ベクトル不可逆シングルスパースロード(又は、V_LSSLD)命令を使用して外積行列乗算を実施するための一例として示されている。他の実施形態では、擬似コード1305は、他のタイプ及び/又は構成の命令を含むことができる。V_LSSLD命令は、N>1のブロックサイズを有する外積実装を対象としている。V_LSSLD命令は、複数のオペランドロードのブロックに続く冗長MACのブロックを正常にスキップする。V_LSSLD命令は、VGPRにロードされた値の中のゼロの数をカウントし、オペランドのロードのブロック全体に亘ってカウントを累算する。ロード終了時に、S_Z_CHECK_BRANCH命令は、累算値を、設けられた不可逆閾値と比較する。この比較は、現在のMACブロックが冗長である場合に、実行が、MACに流入するか次のロードブロックに進むかを決定する。accNZCountアレイは、ロードブロック内の異なるスレッドによってロードされたオペランド毎に遭遇した非ゼロの数を累算する。
図14を参照すると、ベクトル不可逆スパースロード及びスキップ命令を実施するための擬似コード1405の一例が示されている。擬似コード1405は、ベクトル不可逆スパースロード及びスキップ(又は、V_LSLS)命令を使用して外積行列乗算を実施するための一例として示されている。他の実施形態では、擬似コード1405は、他のタイプ及び/又は構成の命令を含むことができる。V_LSLS命令は、散在したスパース性を有する行列上で動作するブロック化された外積の実装を対象とする。V_LSLS命令によって、GPUは、オペランドロードのブロックに続くMACのブロック内の個々の冗長MAC(ウェーブフロントレベルでの)をスキップすることができる。V_LSLS命令は、冗長MACインデックスのリストを含むskipQueueに書き込む。skipQueueの先頭は、現在の命令が冗長であるかどうかをチェックするために、命令をフェッチ又はディスパッチする前にスケジューラによって読み出される。現在の命令が冗長である場合、スケジューラは、キューから現在の命令を削除した後に、次の命令をフェッチしてディスパッチすることに移る。そうでない場合、現在の命令が正常に実行される。
一実施形態では、V_LSLS命令は、VGPRにロードされた値の非ゼロの数をカウントする。V_LSLS命令は、ロードされたベクトル内の非ゼロの数が閾値未満である場合に、どの命令が冗長になるかを判別する。この判別は、skipQueueに転送される。v_lsls命令の引数r_size、r_offset1、r_offset2及びr_baseによって、V_LSLS命令は、skipQueueに記憶する冗長MACのプログラムカウンタオフセットを自動的に生成することができる。一実施形態では、引数r_size、r_offset1、r_offset2及びr_baseは、GEMMコードの構造に基づいてコンパイラによってプログラムされる。一実施形態では、skipQueueは、LSLUのバッファに実装される。skipQueueのサイズによって、スキップ可能なMACの最大数が決まる。したがって、一実施形態では、skipQueueは、外積の実装で遭遇すると予想される最大ブロックサイズを収容するサイズに設定される。
一実施形態では、DNNは、低精度のオペランドを利用する。低精度のオペランドを利用することによって、ウェーブフロント内のスレッドが、ロードするオペランド値を多くし、単一の命令内で実行するMACを多くすることができる。例えば、精度を32ビットから8ビットに下げることによって、スレッドは、ロード命令毎に4倍の行列値をロードし、MAC命令毎に単一の値ではなく、これらの値のうち4つの値に対して動作することができる。全ての値をゼロにする必要がある場合には、MACは、MACによって操作される全ての低精度値がゼロを含む場合にのみ冗長になるが、そのような場合に遭遇する確率は極めて低い。したがって、一実施形態では、新しい閾値「intraMAC」を導入して、MAC演算の値が冗長とみなされているかどうかを判別する。新しい閾値「intraMAC」によって、各スレッドの単一のMAC命令内にいくつかの不可逆性が存在することを可能にし、低精度の非ゼロ値の数がintraMAC未満である場合には、MAC命令をスキップすることができる。本明細書で導入されるスパースロード命令ファミリは、精度の低い実装に容易に拡張することができる。
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書に記載された方法及び/又はメカニズムを実施する。例えば、汎用プロセッサ又は専用プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態において、そのようなプログラム命令は、高水準プログラミング言語によって表すことができる。他の実施形態では、プログラム命令は、高水準プログラミング言語からバイナリ、中間又は他の形式にコンパイルされてもよい。或いは、ハードウェアの動作又は設計を記述するプログラム命令を書き込むことができる。このようなプログラム命令を、C等の高水準のプログラミング言語によって表すことができる。或いは、Verilog等のハードウェア設計言語(HDL)を使用することができる。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に、このようなコンピューティングシステムは、少なくとも1つのメモリと、プログラム命令を実行することができる1つ以上のプロセッサと、を含む。
上記の実施形態は、実装態様の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に認識されると、当業者には多数の変形及び修正が明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正の全てを包含すると解釈されることが意図されている。

Claims (17)

  1. 複数の処理要素と、
    制御ロジックと、を備えるシステムであって、
    前記制御ロジックは、
    1つ以上の入力ベクトルオペランドに含まれる非ゼロ値の数を決定することと、
    前記1つ以上の入力ベクトルオペランド内の非ゼロ値の数が第1閾値以上であると決定したことに応じて、前記1つ以上の入力ベクトルオペランドをベクトルレジスタファイルに提供し、前記1つ以上の入力ベクトルオペランドを前記複数の処理要素によって処理させることと、
    前記非ゼロ値の数が前記第1閾値未満であると決定したことに応じて、前記1つ以上の入力ベクトルオペランドを前記ベクトルレジスタファイルに提供することなく前記入力ベクトルオペランドのアドレスへのポインタをインクリメントし、前記複数の処理要素による前記1つ以上の入力ベクトルオペランドの処理をスキップさせることと、
    を行うように構成されており、
    前記システムは、1つ以上の第1入力ベクトルオペランドを処理し、1つ以上の第2入力ベクトルオペランドの処理をスキップすることによって、所定のアプリケーションを実行するように構成されている、
    システム。
  2. 前記所定のアプリケーションは、第1データセットのクラス分類を生成するニューラルネットワーク実装であり、前記システムは、ニューラルネットワークの1つ以上の層に対する前記1つ以上の第2入力ベクトルオペランドに関連する処理をスキップすることによって、前記ニューラルネットワークを実装する場合の消費電力及び実行時間のうち少なくとも1つを低減するように構成されている、
    請求項1のシステム。
  3. 非ゼロ値は、ゼロに等しくない任意の値、又は、絶対値が少なくとも閾値だけゼロよりも大きい値である、
    請求項1のシステム。
  4. 前記第1閾値及び前記閾値は、プログラム可能である、
    請求項3のシステム。
  5. 前記入力ベクトルオペランドは、行列乗算演算に用いられる
    請求項1のシステム。
  6. 前記制御ロジックは、所定の入力ベクトルオペランド内の非ゼロ値の数が前記第1閾値未満であると決定したことに応じて、前記所定の入力ベクトルオペランドを処理する命令のプログラムカウンタオフセットをスキップキューに記憶するように構成されている、
    請求項1のシステム。
  7. 複数の処理要素に結合された制御ロジックが、1つ以上の入力ベクトルオペランドに含まれる非ゼロ値の数を決定することと、
    前記1つ以上の入力ベクトルオペランド内の非ゼロ値の数が第1閾値以上であると決定したことに応じて、前記1つ以上の入力ベクトルオペランドをベクトルレジスタファイルに提供し、前記1つ以上の入力ベクトルオペランドを前記複数の処理要素によって処理させることと、
    前記非ゼロ値の数が前記第1閾値未満であると決定したことに応じて、前記1つ以上の入力ベクトルオペランドを前記ベクトルレジスタファイルに提供することなく前記入力ベクトルオペランドのアドレスへのポインタをストライド値だけインクリメントし、前記複数の処理要素による前記1つ以上の入力ベクトルオペランドの処理をスキップさせることと、
    1つ以上の第1入力ベクトルオペランドを処理し、1つ以上の第2入力ベクトルオペランドの処理をスキップすることによって、所定のアプリケーションを実行することと、を含む、
    方法。
  8. 前記所定のアプリケーションは、第1データセットのクラス分類を生成するニューラルネットワーク実装であり、前記方法は、ニューラルネットワークの1つ以上の層に対する前記1つ以上の第2入力ベクトルオペランドに関連する処理をスキップすることによって、前記ニューラルネットワークを実装する場合の消費電力及び実行時間のうち少なくとも1つを低減することを含む、
    請求項の方法。
  9. 非ゼロ値は、ゼロに等しくない任意の値、又は、絶対値が少なくとも閾値だけゼロよりも大きい値である、
    請求項の方法。
  10. 前記第1閾値及び前記閾値は、プログラム可能である、
    請求項の方法。
  11. 前記入力ベクトルオペランドは、行列乗算演算に用いられる
    請求項の方法。
  12. 所定の入力ベクトルオペランド内の非ゼロ値の数が前記第1閾値未満であると決定したことに応じて、前記所定の入力ベクトルオペランドを処理する命令のプログラムカウンタオフセットをスキップキューに記憶することを含む、
    請求項の方法。
  13. 複数の処理要素と、
    スケジューラと、
    不可逆スパースロードユニットと、を備える装置であって、
    前記不可逆スパースロードユニットは、
    1つ以上の入力ベクトルオペランドに含まれる非ゼロ値の数を決定することと、
    前記1つ以上の入力ベクトルオペランド内の非ゼロ値の数が第1閾値以上であると決定したことに応じて、前記1つ以上の入力ベクトルオペランドをベクトルレジスタファイルに提供し、前記1つ以上の入力ベクトルオペランドを前記複数の処理要素によって処理させることと、
    前記非ゼロ値の数が前記第1閾値未満であると決定したことに応じて、前記1つ以上の入力ベクトルオペランドを前記ベクトルレジスタファイルに提供することなく前記入力ベクトルオペランドのアドレスへのポインタをストライド値だけインクリメントし、前記複数の処理要素による前記1つ以上の入力ベクトルオペランドの処理をスキップさせることと、
    を行うように構成されており、
    前記装置は、1つ以上の第1入力ベクトルオペランドを処理し、1つ以上の第2入力ベクトルオペランドの処理をスキップすることによって、所定のアプリケーションを実行するように構成されている、
    装置。
  14. 前記所定のアプリケーションは、第1データセットのクラス分類を生成するニューラルネットワーク実装であり、前記装置は、ニューラルネットワークの1つ以上の層に対する前記1つ以上の第2入力ベクトルオペランドに関連する処理をスキップすることによって、前記ニューラルネットワークを実装する場合の消費電力及び実行時間のうち少なくとも1つを低減するように構成されている、
    請求項13の装置。
  15. 非ゼロ値は、ゼロに等しくない任意の値、又は、絶対値が少なくとも閾値だけゼロよりも大きい値である、
    請求項13の装置。
  16. 前記第1閾値及び前記閾値は、プログラム可能である、
    請求項15の装置。
  17. 前記入力ベクトルオペランドは、行列乗算演算に用いられる
    請求項13の装置。
JP2021521289A 2018-11-19 2019-06-26 不可逆スパースロードsimd命令ファミリ Active JP7194824B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/194,981 2018-11-19
US16/194,981 US11663001B2 (en) 2018-11-19 2018-11-19 Family of lossy sparse load SIMD instructions
PCT/US2019/039264 WO2020106321A1 (en) 2018-11-19 2019-06-26 Family of lossy sparse load simd instructions

Publications (2)

Publication Number Publication Date
JP2022505316A JP2022505316A (ja) 2022-01-14
JP7194824B2 true JP7194824B2 (ja) 2022-12-22

Family

ID=67297336

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021521289A Active JP7194824B2 (ja) 2018-11-19 2019-06-26 不可逆スパースロードsimd命令ファミリ

Country Status (6)

Country Link
US (1) US11663001B2 (ja)
EP (1) EP3884379A1 (ja)
JP (1) JP7194824B2 (ja)
KR (1) KR102598174B1 (ja)
CN (1) CN113168324A (ja)
WO (1) WO2020106321A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10503507B2 (en) * 2017-08-31 2019-12-10 Nvidia Corporation Inline data inspection for workload simplification
JP7189000B2 (ja) * 2018-12-12 2022-12-13 日立Astemo株式会社 情報処理装置、車載制御装置、車両制御システム
US20230053294A1 (en) * 2021-08-13 2023-02-16 Taiwan Semiconductor Manufacturing Co., Ltd. Bitwise product-sum accumulations with skip logic
US20240004656A1 (en) * 2022-06-29 2024-01-04 Advanced Micro Devices, Inc. Accelerating predicated instruction execution in vector processors

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180300605A1 (en) 2017-04-17 2018-10-18 Microsoft Technology Licensing, Llc Reducing power consumption in a neural network processor by skipping processing operations

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240522A (ja) * 1997-02-26 1998-09-11 Matsushita Electric Works Ltd 演算装置
US7159099B2 (en) * 2002-06-28 2007-01-02 Motorola, Inc. Streaming vector processor with reconfigurable interconnection switch
US10528864B2 (en) * 2016-08-11 2020-01-07 Nvidia Corporation Sparse convolutional neural network accelerator
US10832135B2 (en) * 2017-02-10 2020-11-10 Samsung Electronics Co., Ltd. Automatic thresholds for neural network pruning and retraining
US10482156B2 (en) * 2017-12-29 2019-11-19 Facebook, Inc. Sparsity-aware hardware accelerators
US11636327B2 (en) * 2017-12-29 2023-04-25 Intel Corporation Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism
US10572568B2 (en) * 2018-03-28 2020-02-25 Intel Corporation Accelerator for sparse-dense matrix multiplication
US10817260B1 (en) * 2018-06-13 2020-10-27 Amazon Technologies, Inc. Reducing dynamic power consumption in arrays

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180300605A1 (en) 2017-04-17 2018-10-18 Microsoft Technology Licensing, Llc Reducing power consumption in a neural network processor by skipping processing operations

Also Published As

Publication number Publication date
JP2022505316A (ja) 2022-01-14
US11663001B2 (en) 2023-05-30
EP3884379A1 (en) 2021-09-29
WO2020106321A1 (en) 2020-05-28
KR20210090260A (ko) 2021-07-19
CN113168324A (zh) 2021-07-23
KR102598174B1 (ko) 2023-11-06
US20200159529A1 (en) 2020-05-21

Similar Documents

Publication Publication Date Title
JP7194824B2 (ja) 不可逆スパースロードsimd命令ファミリ
US11948073B2 (en) Machine learning inference engine scalability
US11763156B2 (en) Neural network compression based on bank-balanced sparsity
Huynh et al. Deepsense: A gpu-based deep convolutional neural network framework on commodity mobile devices
KR102598173B1 (ko) 최적화된 딥 네트워크 처리를 위한 그래프 매칭
US11157213B2 (en) Parallel memory access and computation in memory devices
US20200302285A1 (en) Auto generation and tuning tool for convolution kernels
US20200134432A1 (en) Low Latency Long Short-Term Memory Inference with Sequence Interleaving
KR102586988B1 (ko) 다중-커널 웨이브프론트 스케줄러
US11669473B2 (en) Allreduce enhanced direct memory access functionality
US20200089550A1 (en) Broadcast command and response
US11436486B2 (en) Neural network internal data fast access memory buffer
GB2579702A (en) Accelerated access to computations results generated from data stored in memory devices
US20220092410A1 (en) Architected library interface for kernel fusion
JP7427001B2 (ja) 行列数学命令セットのタイリングアルゴリズム
Silva et al. Cuda-based parallelization of power iteration clustering for large datasets
Santoso et al. Understanding of gpu architectural vulnerability for deep learning workloads
CN110969259B (zh) 具有数据关联自适应舍入的处理核心
US20210173796A1 (en) Memory request priority assignment techniques for parallel processors
US20220197878A1 (en) Compressed Read and Write Operations via Deduplication
US20210256380A1 (en) Method and device for reducing a size of a neural network model

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210608

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220810

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221212

R150 Certificate of patent or registration of utility model

Ref document number: 7194824

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150