(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-06-28
(54)【発明の名称】加速処理デバイス及び機械学習用データ共有の方法
(51)【国際特許分類】
G06F 15/173 20060101AFI20240621BHJP
G06F 15/80 20060101ALI20240621BHJP
【FI】
G06F15/173 660Z
G06F15/80
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023577205
(86)(22)【出願日】2022-06-10
(85)【翻訳文提出日】2024-01-17
(86)【国際出願番号】 US2022033014
(87)【国際公開番号】W WO2023278126
(87)【国際公開日】2023-01-05
(32)【優先日】2021-06-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】マキシム ヴィー. カザコフ
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045GG12
5B045KK08
(57)【要約】
データを処理するように構成された複数の計算ユニットと、複数の計算ユニットとは別にインスタンス化された複数の算術論理ユニットであって、データを算術論理ユニットにおいて記憶し、データを使用して計算を実行するように構成された複数の算術論理ユニットと、算術論理ユニットを接続する相互接続ネットワークであって、算術論理ユニット間の通信のためのデータへの共有アクセスを算術論理ユニットに提供するように構成された相互接続ネットワークと、を備える処理デバイスが提供される。相互接続ネットワークは、計算ユニット間の通信のためのデータへの共有アクセスを計算ユニットに提供するように構成されている。
【選択図】
図4
【特許請求の範囲】
【請求項1】
処理デバイスであって、
データを処理するように構成された複数の計算ユニットと、
前記複数の計算ユニットとは別にインスタンス化された複数の算術論理ユニットであって、前記データを前記複数の算術論理ユニットにおいて記憶し、前記データを使用して計算を実行するように構成された複数の算術論理ユニットと、
前記複数の算術論理ユニットを接続する相互接続ネットワークであって、前記複数の算術論理ユニット間の通信のための前記データへの共有アクセスを前記複数の算術論理ユニットに提供するように構成された相互接続ネットワークと、を備える、
処理デバイス。
【請求項2】
前記相互接続ネットワークは、前記複数の計算ユニット間の通信のための前記データへの共有アクセスを前記複数の計算ユニットに提供するように構成されている、
請求項1の処理デバイス。
【請求項3】
各算術論理ユニットは、前記データを記憶するように構成された専用のレジスタファイルを備える、
請求項1の処理デバイス。
【請求項4】
前記専用のレジスタファイルは、スクラッチパッドメモリである、
請求項3の処理デバイス。
【請求項5】
複数の相互接続ネットワークを備え、
前記複数の計算ユニットは、計算ユニットのグループを含み、
前記複数の算術論理ユニットは、算術論理ユニットのグループを含み、
各相互接続ネットワークは、前記算術論理ユニットのグループのうち何れかのグループの算術論理ユニットを互いに接続し、前記何れかのグループの算術論理ユニット間の通信のための前記データへの共有アクセスを提供する、
請求項1の処理デバイス。
【請求項6】
前記相互接続ネットワークは、パイプラインボトルネックを回避するのに十分なデータ帯域幅を、行列乗算演算の実行中、及び、前記行列乗算演算から得られたデータを使用する後処理演算の実行中に提供するように構成されている、
請求項1の処理デバイス。
【請求項7】
前記相互接続ネットワークのデータ帯域幅は、前記複数の計算ユニット間でデータを共有する第2レベルのキャッシュメモリの別のデータ帯域幅よりも大きい、
請求項6の処理デバイス。
【請求項8】
前記計算ユニットをメモリと接続し、データ通信のために前記算術論理ユニットによってアクセスされない別の相互接続ネットワークを備える、
請求項1の処理デバイス。
【請求項9】
データ共有の方法であって、
複数の計算ユニットとは別にインスタンス化された複数の算術論理ユニットのうち何れかの算術論理ユニットにおいて、行列乗算計算を実行する命令を受信することと、
前記行列乗算計算を実行するために使用されるデータが、前記何れかの算術論理ユニットのローカルレジスタファイル内で利用可能である場合に、前記行列乗算計算を実行するために前記ローカルレジスタファイルの前記データにアクセスすることと、
前記データがローカルレジスタファイル内で利用可能ではなく、前記複数の算術論理ユニットのうち他の算術論理ユニットのレジスタファイル内で利用可能である場合に、前記複数の算術論理ユニットを接続する1つ以上の相互接続を介して、前記他の算術論理ユニットのレジスタファイルの前記データにアクセスすることと、を含む、
データ共有の方法。
【請求項10】
前記何れかの算術論理ユニットが、前記データが前記ローカルレジスタファイルにおいて利用可能であるか否かを判定することと、
前記データが前記ローカルレジスタファイル内で利用可能ではないと判定された場合に、前記何れかの算術論理ユニットが、前記データが前記他の算術論理ユニットのレジスタファイル内で利用可能であるかどうかを判定することと、を含む、
請求項9の方法。
【請求項11】
前記データが前記他の算術論理ユニットのレジスタファイル内で利用可能ではないと判定された場合に、メモリの前記データにアクセスすることを含む、
請求項10の方法。
【請求項12】
前記計算ユニットをメモリに接続し、データ通信のために前記算術論理ユニットによってアクセスされない別の相互接続ネットワークを介して、メモリの前記データにアクセスすることを含む、
請求項11の方法。
【請求項13】
前記何れかの算術論理ユニットが、前記行列乗算計算を実行することと、前記行列乗算計算から得られたデータを前記ローカルレジスタファイルに記憶することと、を含む、
請求項9の方法。
【請求項14】
前記複数の計算ユニットのうち何れかの計算ユニットが、前記複数の算術論理ユニットを接続する1つ以上の相互接続を介して、前記ローカルレジスタファイル内の前記行列乗算計算から得られたデータにアクセスすることを含む、
請求項13の方法。
【請求項15】
前記複数の計算ユニットは、計算ユニットのグループを含み、
前記複数の算術論理ユニットは、算術論理ユニットのグループを含み、
各相互接続ネットワークは、前記算術論理ユニットのグループのうち何れかのグループの算術論理ユニットを互いに接続し、前記何れかグループの算術論理ユニット間の通信のための前記データへの共有アクセスを提供する、
請求項9の方法。
【請求項16】
パイプラインボトルネックを引き起こすことなく前記行列乗算計算を実行するために、前記複数の算術論理ユニットを接続する1つ以上の相互接続を介して、前記他の算術論理ユニットのレジスタファイルの前記データにアクセスすることと、
前記パイプラインボトルネックを引き起こすことなく、前記行列乗算演算から得られたデータを使用して後処理演算を実行することと、を含む、
請求項9の方法。
【請求項17】
前記相互接続ネットワークのデータ帯域幅は、前記複数の計算ユニット間でデータを共有する第2レベルのキャッシュメモリの別のデータ帯域幅よりも大きい、
請求項9の方法。
【請求項18】
処理デバイスであって、
データを処理するように構成された計算ユニットの複数のグループと、
前記計算ユニットの複数のグループとは別にインスタンス化された算術論理ユニットの複数のグループであって、前記データを前記算術論理ユニットにおいて記憶し、前記データを使用して計算を実行するように構成された算術論理ユニットの複数のグループと、
複数の相互接続ネットワークであって、各々が、前記算術論理ユニットのグループのうち何れかのグループの算術論理ユニットを接続し、何れかのグループの算術論理ユニットに前記データへの共有アクセスを提供する複数の相互接続ネットワークと、を備える、
処理デバイス。
【請求項19】
各相互接続ネットワークは、前記データへの共有アクセスを前記計算ユニットに提供するように構成されている、
請求項18の処理デバイス。
【請求項20】
各算術論理ユニットは、前記データを記憶するように構成された専用のレジスタファイルを備える、
請求項18の処理デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、「ACCELERATED PROCESSING DEVICE AND METHOD OF SHARING DATA FOR MACHINE LEARNING」と題する2021年6月30日に出願された米国特許出願第17/364,780号の利益を主張するものであり、この米国特許出願は、参照により、本明細書に完全に記載されているかのように組み込まれる。
【背景技術】
【0002】
機械学習(例えば、深層学習)は、特定のタスクを行うための予測又は決定(例えば、画像が特定のオブジェクトを含むかどうか)を行うために、様々な技術(例えば、画像分類)で広く使用されている。例えば、畳み込みニューラルネットワーク(convolutional neural network、CNN)は、機械学習アプリケーションで広く使用されている深層学習アルゴリズムのクラスである。これらのネットワークは、典型的には、複数の層を含む。各層において、フィルタのセットが前の層の出力に適用され、各層の出力は、メモリに書き込まれ、メモリから読み出される。
【0003】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0004】
【
図1】本開示の1つ以上の特徴が実装され得る例示的なデバイスのブロック図である。
【
図2】本開示の1つ以上の特徴を実装するための例示的な構成要素を示すブロック図である。
【
図3】本開示の1つ以上の特徴を実装するための加速処理デバイスの例示的な構成要素を示すブロック図である。
【
図4】
図3に示された加速処理デバイスの例示的な構成要素を更に詳細に示すブロック図である。
【
図5】
図4に示される加速処理デバイスの構成要素間の例示的な相互接続を示すブロック図である。
【
図6】本開示の特徴による、例示的なデータ共有の方法を示すフロー図である。
【発明を実施するための形態】
【0005】
機械学習モデルは、典型的には、大きいメモリ帯域幅を使用し、これは、帯域幅のボトルネックにつながり、性能に悪影響を及ぼし、電力消費の増加をもたらす可能性がある。機械学習ニューラルネットワークの異なる層において出力データを記憶するために使用されるメモリの量は、典型的には、オンチップメモリに保存することができないほど大きい。したがって、データを記憶することは、オフチップメモリとの間でデータを転送することを含む。
【0006】
深層学習アルゴリズム(例えば、CNN、再帰型ニューラルネットワーク、及び、他の形態の人工ニューラルネットワーク)は、典型的には、行列乗算を含む。GPU等の加速プロセッサ(accelerated processors)は、最近、行列乗算の効率を高めるために並列化を採用する様々な行列乗算技術を実行するために使用されている。例えば、2つの行列は、典型的には、より小さい部分(例えば、列、行、並びに、列及び行の部分)に分割され、2つの行列の行列乗算演算は、各々が1つの行列の部分と別の行列の部分との乗算を含む複数の行列乗算計算を実行することによって行われる。行列乗算計算は、行列乗算演算を行うために、プロセッサネットワークの異なるプロセッサコアにマッピングされ、異なるプロセッサコアによって実行される。
【0007】
従来のGPUアーキテクチャは、機械学習にあまり適していない。機械学習アプリケーションの実行中に処理される演算は、典型的には、行列乗算演算から得られるデータを使用して演算が実行される他の演算(例えば、ReLU及びBatchNorm等の後処理演算)が後に続く行列乗算演算等の一連の演算を含む。行列乗算演算から得られるデータは、これらの後処理演算中に、GPUのCUにおいて処理される。したがって、CUが結果として生じるデータにアクセスするのに十分な帯域幅が利用可能でない場合、ボトルネックが発生する。しかしながら、従来のGPUのキャッシュサブシステムアーキテクチャ(例えば、L1、L2キャッシュ等)は、ボトルネックを防止するのに十分迅速にCU間でデータを共有するのに十分な帯域幅を提供せず、これは、全体的な性能に悪影響を与える。
【0008】
GPUアーキテクチャに対する最近の開発は、後処理演算がCUの既存のALUユニット上で実現される一方で、行列乗算演算を処理するために使用される専用算術論理ユニットALUを各CU内にインスタンス化することによって、これらのボトルネックを防止する。各CU内にインスタンス化されたこれらの専用ALUは、上述したボトルネックを防ぐ一方で、専用ALUは、典型的には、行列乗算演算中にデータが複数回非効率的にフェッチされることから生じる他のタイプのボトルネックを引き起こす。
【0009】
例えば、行列乗算は、典型的には、再利用可能なデータを含む。2つの行列が乗算される場合、第1の行列のためのデータは、第2の行列の複数のブロックのために使用される。第1の行列の同じデータが異なるCUに繰り返しフェッチされて、別の行列のブロックと乗算される。すなわち、ボトルネック(すなわち、行列乗算ボトルネック)は、典型的には、同じデータが、各CU内の専用算術論理ユニットALUのために、GPUのキャッシュサブシステムアーキテクチャから複数回非効率的にフェッチされるために生じる。
【0010】
いくつかの従来の加速プロセッサは、データ再利用のために設計され、これらの行列乗算ボトルネックを低減するために、CU間のデータ共有のために各CU内でインスタンス化されたALU間の相互接続を含む。しかしながら、これらの専用加速プロセッサは、非行列乗算演算を実行するのにあまり適していない。
【0011】
本開示は、行列乗算演算及び非行列乗算演算を効率的に実行するためのデバイス及び方法を提供する。本開示の特徴は、CUとは別にインスタンス化されたALUと、ALUを接続し、CUによるデータへの共有アクセスを提供するように構成された専用ALU相互接続と、を含む。各ALUは、ALUに提供されるデータを記憶し、行列乗算計算等の演算を実行することから生じるデータを受信するための、それ自体のレジスタファイル(例えば、スクラッチパッドメモリ(scratchpad memory))を含む。レジスタファイルは、データを記憶するために各CUによってアクセス可能であり、ALUは、データを使用して計算を実行し、データを読み出して後処理動作として実行する。
【0012】
ポスト行列乗算演算を実行するためにデータがALUからCUに送信されるが、本開示の特徴は、行列乗算演算の実行のためのボトルネックを回避するのに十分な帯域幅と、後処理演算等の他の演算の実行のためのボトルネックを回避するのに十分な帯域幅と、を提供する。したがって、全体の効率が上昇する。
【0013】
データを処理するように構成された複数の計算ユニットと、複数の算術論理ユニットであって、複数の計算ユニットとは別にインスタンス化され、データを算術論理ユニットにおいて記憶し、データを使用して計算を実行するように構成された複数の算術論理ユニットと、相互接続ネットワークであって、算術論理ユニットを接続し、算術論理ユニット間の通信のためにデータへの共有アクセスを算術論理ユニットに提供するように構成された相互接続ネットワークと、を備える処理デバイスが提供される。
【0014】
複数の計算ユニットとは別にインスタンス化された複数の算術論理ユニットのうち何れかにおいて、行列乗算計算を実行するために使用されるデータが1つの算術論理ユニットのローカルレジスタファイル内で利用可能である場合に、行列乗算計算を実行する命令を受信することと、行列乗算計算を実行するためにローカルレジスタファイルからのデータにアクセスすることと、データがローカルレジスタファイル内で利用可能ではないが、他の算術論理ユニットのうち何れかのレジスタファイル内で利用可能である場合に、算術論理ユニットを接続する1つ以上の相互接続を介して他の算術論理ユニットのレジスタファイルのデータにアクセスすることと、を含むデータ共有の方法が提供される。
【0015】
データを処理するように構成された計算ユニットの複数のグループと、計算ユニットの複数のグループとは別にインスタンス化され、データを算術論理ユニットに記憶し、データを使用して計算を実行するように構成された算術論理ユニットの複数のグループと、各々が算術論理ユニットのグループのうち何れかの算術論理ユニットを接続し、算術論理ユニットの1つのグループの算術論理ユニットにデータへの共有アクセスを提供する複数の相互接続ネットワークと、を備える処理デバイスが提供される。
【0016】
図1は、本開示の1つ以上の特徴が実装され得る例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含み得る。デバイス100は、プロセッサ102と、メモリ104と、記憶装置106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含み得る。デバイス100は、
図1に示されていない追加の構成要素を含み得ることを理解されたい。
【0017】
様々な代替例では、プロセッサ102は、中央処理ユニット(central processing unit、CPU)、グラフィックス処理ユニット(graphics processing unit、GPU)、同じダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであってもよい。様々な代替例では、メモリ104は、プロセッサ102と同じダイ上に位置しているか、又は、プロセッサ102とは別に位置する。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory、RAM)、ダイナミックRAM(dynamic RAM、DRAM)、キャッシュ)を含む。
【0018】
記憶装置106は、固定又はリムーバブル記憶装置(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
【0019】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションの構成要素であること、並びに、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合に、同じ方式で動作することに留意されたい。出力ドライバ114は、表示デバイス118に結合されている加速処理デバイス(accelerated processing device、APD)116を含む。APDは、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れて、それらの計算及びグラフィックスレンダリングコマンドを処理し、表示のために表示デバイス118にピクセル出力を提供するように構成されている。以下で更に詳細に説明するように、APD116は、単一命令複数データ(single-instruction-multiple-data、SIMD)パラダイムに従って計算を行うように構成された1つ以上の並列処理ユニットを含む。こうして、様々な機能は、本明細書では、APD116によって又はAPD116と併せて実行されるものとして説明されているが、様々な代替例では、APD116によって行われるものとして説明される機能は、ホストプロセッサ(例えば、プロセッサ102)によって駆動されず、表示デバイス118にグラフィック出力を提供するように構成された同様の能力を有する他のコンピューティングデバイスによって、追加的又は代替的に行われる。例えば、SIMDパラダイムに従って処理タスクを行う任意の処理システムが、本明細書に説明される機能を行うように構成され得ることが企図される。代替的に、SIMDパラダイムに従って処理タスクを行わないコンピューティングシステムが、本明細書に説明される機能を行うことが企図される。
【0020】
図2は、デバイス100のブロック図であり、APD116上での処理タスクの実行に関する追加の詳細を示している。プロセッサ102は、システムメモリ104内で、プロセッサ102による実行のための1つ以上の制御論理モジュールを維持する。制御論理モジュールは、オペレーティングシステム120、カーネルモードドライバ122及びアプリケーション126を含む。これらの制御論理モジュールは、プロセッサ102及びAPD116の動作の様々な特徴を制御する。例えば、オペレーティングシステム120は、ハードウェアと直接通信し、プロセッサ102上で実行される他のソフトウェアのためのハードウェアへのインターフェースを提供する。カーネルモードドライバ122は、例えば、プロセッサ102上で実行されるソフトウェア(例えば、アプリケーション126)にアプリケーションプログラミングインターフェース(application programming interface、API)を提供して、APD116の様々な機能にアクセスすることによって、APD116の動作を制御する。また、カーネルモードドライバ122は、APD116の処理構成要素(以下で更に詳細に説明されるSIMDユニット138等)によって実行するためのプログラムをコンパイルするジャストインタイムコンパイラを含む。
【0021】
APD116は、行列乗算演算等のグラフィックス演算及び並列処理に適し得る非グラフィックス演算等のような選択された機能のためのコマンド及びプログラムを実行する。APD116は、プロセッサ102から受信したコマンドに基づいて、ピクセル動作、幾何学計算及び表示デバイス118への画像のレンダリング等のグラフィックスパイプライン動作を実行するために使用することができる。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学又は他のタスクに関連する動作等のように、グラフィックス動作に直接関連しない計算処理動作を実行する。
【0022】
APD116は、プロセッサ102の要求で、SIMDパラダイムに従って並列の方式で動作を行う1つ以上のSIMDユニット138を含む計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、したがって同じプログラムを実行するが、そのプログラムを異なるデータで実行することができるものである。一例では、各SIMDユニット138は、16個のレーンを含み、各レーンは、SIMDユニット138内の他のレーンと同時に同じ命令を実行するが、その命令を異なるデータで実行することができる。レーンは、全てのレーンが所定の命令を実行する必要がない場合、予測でオフに切り替えることができる。また、予測は、分岐制御フローを有するプログラムを実行するために使用することができる。より具体的には、制御フローが個々のレーンによって行われる計算に基づいている条件付き分岐又は他の命令を有するプログラムについては、現在実行されていない制御フローパスに対応するレーンの予測及び異なる制御フローパスのシリアル実行が、任意の制御フローを可能にする。
【0023】
計算ユニット132内の実行の基本的単位は、ワークアイテムである。各ワークアイテムは、特定のレーンにおいて並列で実行されるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のSIMDユニット138上の「ウェーブフロント(wavefront)」として同時に実行することができる。1つ以上のウェーブフロントが「ワークグループ」に含まれ、これは、同じプログラムを実行するように指定されたワークアイテムの集合体を含む。ワークグループは、ワークグループを構成するウェーブフロントの各々を実行することによって実行することができる。代替例では、ウェーブフロントは、単一のSIMDユニット138上で連続して、又は、異なるSIMDユニット138上で部分的に若しくは完全に並列に実行される。ウェーブフロントは、単一のSIMDユニット138上で同時に実行することができるワークアイテムの最大集合体と考えることができる。したがって、プロセッサ102から受信されたコマンドが、特定のプログラムを単一のSIMDユニット138上で同時に実行させることができない程度にプログラムが並列化されることを示す場合、そのプログラムは、2つ以上のSIMDユニット138上に並列化されるか、又は、同じSIMDユニット138上で直列化される(又は必要に応じて並列化及び直列化の両方が行われる)ウェーブフロントに分けられる。スケジューラ136は、異なる計算ユニット132及びSIMDユニット138上の様々なウェーブフロントのスケジューリングに関連する動作を行う。
【0024】
計算ユニット132によって与えられる並列処理は、ピクセル値計算、頂点変換及び他のグラフィック動作等のグラフィック関連動作に好適である。したがって、場合によっては、プロセッサ102からのグラフィックス処理コマンドを受け入れるグラフィックスパイプライン134は、並列で実行するために計算タスクを計算ユニット132に提供する。
【0025】
また、計算ユニット132は、グラフィックに関連しない計算タスク、又は、グラフィックスパイプライン134の「通常の」動作の一部(例えば、グラフィックスパイプライン134の動作に対して行われる処理を補足するために行われるカスタム動作)として行われない計算タスクを行うために使用される。プロセッサ102上で実行されるアプリケーション126又は他のソフトウェアは、そのような計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
【0026】
APD116は、行列乗算演算及び非行列乗算演算を含む機械学習アプリケーションを実行するように構成されている。以下でより詳細に説明されるように、APD116は、行列乗算演算を実行し、ポスト行列乗算演算等の他の演算を実行するように構成されている。
【0027】
上述したように、ニューラルネットワークの異なる層にアクティベーションテンソルデータ(activation tensor data)を記憶するために使用されるメモリの量は、典型的には、アクティベーションテンソルデータをオンチップメモリ(例えば、APD116のメモリ)に保存することができないほど大きい(例えば、初期の層において)。したがって、アクティベーションテンソルデータを記憶することは、リンク(例えば、バス)を介して、APD116とオフチップメモリ(例えば、メモリ104)との間のデータの転送を含む。APD116は、オフチップメモリに転送されるデータを圧縮する(例えば、帯域幅を節約する)ように構成されている。
【0028】
APD116は、テンソル値を、複数の特徴マップのスパース性のメトリックのうち何れかに従ってテンソル値が記憶される順序を変更すること、チャネルの第1の構成を有する複数の異なるタイプのメモリフォーマット化のうち何れかを使用すること、及び、複数のタイプの圧縮アルゴリズムのうち何れかを使用することによって、圧縮するように構成されている。簡略化された説明のために、本明細書に記載の実施例は、テンソル値が、特徴マップのスパース性に基づいて、NHWC(すなわち、チャネルファースト)フォーマット化に従ってメモリに書き込まれる順序を変更することによる4Dテンソル値のデルタベースの圧縮を含む。
【0029】
図3は、本開示の1つ以上の特徴を実装するための加速処理デバイスの例示的な構成要素を示すブロック図である。説明を簡単にするために、加速処理デバイスをGPU300として説明する。GPU300は、加速処理デバイスの一例である。
【0030】
図3に示すように、GPU300は、複数の計算ユニット302を含む。各計算ユニット302は、対応するレベル1キャッシュ304と通信する、対応するレベル1キャッシュコントローラ306を含む。
図3に更に示されるように、GPU300は、レベル2キャッシュ308と通信するレベル2キャッシュコントローラ310を含む。レベル2キャッシュ308は、CU302の各々によって共有される。また、キャッシュコントローラ310は、
図3に示されるように、次のキャッシュレベル(より高いキャッシュレベル)と通信することができる。
【0031】
また、GPU300は、ALUネットワーク312を含む。ALUネットワーク312は、CU302とは別にインスタンス化された複数のALU、及び、
図4に関して以下でより詳細に説明するように、ALUのレジスタファイル内のCU302によるデータへの共有アクセスを提供するためにALUを接続する専用ALU相互接続を含む。
【0032】
図4は、
図3に示されるGPU300の例示的な構成要素を更に詳細に示すブロック図である。
図4に示すように、GPU300は、CUの第1のグループ302(1)と、CUの第2のグループ301(2)と、第1のALUネットワーク312(1)と、第2のALUネットワーク312(2)と、を含む。また、GPU300は、レベル2キャッシュ308と、CU302によるレベル2キャッシュ308へのデータアクセスのための相互接続408と、を含む。
【0033】
図4は、CUの2つのグループ(すなわち、302(1)及び301(2))及び2つのALUネットワーク(すなわち、312(1)及び312(2))を示す。
図4に示されたCUグループの数及びALUネットワークの数は、単なる例である。本開示の特徴は、任意の数のCUグループと任意の数のALUネットワークを使用して実装することができる。また、
図4には、各CUグループ(302(1)及び301(2))内の20個のCU302と、各ALUネットワーク(312(1)及び312(2))内の8個のALU412が示されている。各グループに示されたCUの数及び各ALUネットワークに示されたALUの数は、単なる例である。本開示の特徴は、グループごとに任意の数のCU、及び、ALUネットワークごとに任意の数のALUを使用して実装することができる。
【0034】
ALUネットワーク312(1)及び312(2)の各々は、複数のALU412及び複数の相互接続406を含む。各ALU412は、例えば
図5に示されるスクラッチパッドメモリ502のような、それ自体の対応するレジスタファイルを含む。相互接続406は、ALU412の各々に、ALU412間の通信のために他のALU412に記憶されたデータへの共有アクセスを提供する。また、相互接続406は、CU302の各々に、CU302間の通信のために何れかのALU412に記憶されたデータへの共有アクセスを提供する。図に示すように、したがって、レジスタファイル(例えば、スクラッチパッドメモリ502)は、(例えば、他のALU412及びCU302によって)ALU412に提供されるデータを記憶するために、且つ、行列乗算演算及びポスト行列乗算演算等の演算の実行中に計算を実行することから生じるデータを記憶するために使用される。スクラッチパッドメモリ502に記憶されたデータは、行列乗算計算を実行し、且つ、後処理演算を実行するために、他のALU412及びCU302からも読み出される。
【0035】
図5は、
図4に示される加速処理デバイスの構成要素間の例示的な相互接続を示すブロック図である。
図5に示される矢印は、ALUとCU302との間の相互接続を表すために使用される。各ALU412のレジスタファイルは、複数のCU302によって直接アクセス可能である。例えば、
図5の矢印504によって示されるように、
図5の上部ALU412のスクラッチパッドメモリ502は、3つのCU302(
図5の左端の3つのCU302)と直接通信しており、(矢印506によって示されるように)隣接するALU412のスクラッチパッドメモリ502に接続されている。ALUネットワークの他のALU412のスクラッチパッドメモリ502は、矢印508を介して接続される。すなわち、対応するALUネットワークの他のALU412のスクラッチパッドメモリ502は、矢印506及び508によって表される相互接続を介して、
図5の上部ALU412によって間接的にアクセス可能である。
【0036】
図6は、本開示の特徴による、例示的なデータ共有の方法600を示すフロー図である。
【0037】
ブロック602に示すように、方法600は、行列乗算計算を実行する命令を受信することを含む。例えば、行列乗算計算を実行する命令は、何れかのCU302から受信される。
【0038】
上述したように、多くの場合、以前に記憶されたデータは、行列乗算計算を実行するために再使用可能である。したがって、ALUは、最初に、決定ブロック604において、再使用可能なデータがそれ自体のローカルレジスタファイル(例えば、スクラッチパッドメモリ)内で利用可能である(すなわち、記憶されている)かどうかを判定する。再使用可能なデータがそれ自体のローカルレジスタファイルで利用可能である場合(決定ブロック604:「はい」)、ALUは、ブロック606においてそのデータにアクセスし、ブロック608においてそのデータを使用して行列乗算計算を実行するために、他のアクセスされたデータと共にそのデータを使用する。
【0039】
再使用可能なデータがそれ自体のローカルレジスタファイルにおいて利用可能でないとき(決定ブロック604:「いいえ」)、ALUは、決定ブロック610において、再使用可能なデータが別のALU(例えば、最も近いALU)のレジスタファイルにおいて利用可能である(すなわち、記憶されている)かどうかを判定する。再使用可能なデータが別のALUのレジスタファイルにおいて利用可能である場合(決定ブロック610:「はい」)、ALUは、ブロック612において、1つ以上の相互接続406を介して、他のALUのレジスタファイルからデータにアクセスし、ブロック608において、データを使用して行列乗算計算を実行するために、他のアクセスされたデータと共にデータを使用する。
【0040】
再使用可能なデータが別のALUのレジスタファイルにおいて利用可能でない場合(決定ブロック610:「いいえ」)、ALUは、ブロック614においてメモリ(例えば、キャッシュメモリ又はメインメモリ)からのデータにアクセスし、ブロック608においてそのデータを使用して行列乗算計算を実行するために、他のアクセスされたデータと共にそのデータを使用する。
【0041】
行列乗算計算が完了すると、ブロック608において実行された行列乗算計算から得られたデータは、ブロック616においてALUのローカルレジスタファイルに記憶される。次に、結果データは、CUによってアクセスされて、上述した後処理動作を実行することができる。例えば、CUは、矢印504(
図5に示す)によって示される相互接続を介して結果データに直接アクセスするか、又は、矢印504及び506(
図5に示す)によって示される1つ以上の相互接続を介して別のALUからの結果データにアクセスする。
【0042】
したがって、加速処理デバイスは、本明細書で説明する高帯域幅アーキテクチャを使用して、行列乗算演算及び後処理演算を効率的に実行する。
【0043】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。
【0044】
図に示され及び/又は本明細書で説明する様々な機能ユニット(プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、加速処理デバイス116、CUグループ302(1)及び301(2)、ALUネットワーク312(1)及び312(2)、ALU相互接続406、スクラッチパッドメモリ508等のローカルレジスタファイルを含むが、これらに限定されない)は、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、汎用コンピュータ、プロセッサ若しくはプロセッサコアによって実行可能な非一時的なコンピュータ可読記憶媒体又は別の記憶媒体に記憶されたプログラム、ソフトウェア若しくはファームウェアとして実装され得る。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実装することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶させることが可能な命令)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果はマスクワークとすることができ、このマスクワークをその後の半導体製造プロセスにおいて使用して、本開示の特徴を実装するプロセッサを製造する。
【0045】
本明細書に提供される方法又はフロー図は、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実装することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
【国際調査報告】