IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特表2024-544114ストリーミング入力データを処理するためのスケーラブルなハードウェアアーキテクチャテンプレート
<>
  • 特表-ストリーミング入力データを処理するためのスケーラブルなハードウェアアーキテクチャテンプレート 図1
  • 特表-ストリーミング入力データを処理するためのスケーラブルなハードウェアアーキテクチャテンプレート 図2
  • 特表-ストリーミング入力データを処理するためのスケーラブルなハードウェアアーキテクチャテンプレート 図3
  • 特表-ストリーミング入力データを処理するためのスケーラブルなハードウェアアーキテクチャテンプレート 図4
  • 特表-ストリーミング入力データを処理するためのスケーラブルなハードウェアアーキテクチャテンプレート 図5
  • 特表-ストリーミング入力データを処理するためのスケーラブルなハードウェアアーキテクチャテンプレート 図6
  • 特表-ストリーミング入力データを処理するためのスケーラブルなハードウェアアーキテクチャテンプレート 図7
  • 特表-ストリーミング入力データを処理するためのスケーラブルなハードウェアアーキテクチャテンプレート 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-28
(54)【発明の名称】ストリーミング入力データを処理するためのスケーラブルなハードウェアアーキテクチャテンプレート
(51)【国際特許分類】
   G06F 30/32 20200101AFI20241121BHJP
   G06F 30/337 20200101ALI20241121BHJP
   G06F 30/27 20200101ALI20241121BHJP
   G06F 115/10 20200101ALN20241121BHJP
【FI】
G06F30/32
G06F30/337
G06F30/27
G06F115:10
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024519431
(86)(22)【出願日】2021-12-10
(85)【翻訳文提出日】2024-05-08
(86)【国際出願番号】 US2021062817
(87)【国際公開番号】W WO2023107119
(87)【国際公開日】2023-06-15
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ヤン,ヤン
(72)【発明者】
【氏名】クーセラ,アキ・オスカリ
【テーマコード(参考)】
5B146
【Fターム(参考)】
5B146AA22
5B146DC04
5B146GC11
5B146GC25
5B146GG22
5B146GL09
(57)【要約】
ストリーミング入力データを処理するための拡張ハードウェアアーキテクチャを生成するための、コンピュータ記憶媒体に符号化されるコンピュータプログラムを含む方法、システム、および装置について説明する。一態様では、方法は、ハードウェアアーキテクチャテンプレートを表すデータを受信することを含む。ハードウェアアーキテクチャテンプレートには、構成可能な設計パラメータのセットが含まれている。設計パラメータのセットの値は、ストリーミング入力データの特性に基づいて決定される。決定プロセスには、構成可能な設計パラメータのセットの検索空間に基づいて複数の候補ハードウェアアーキテクチャを生成することであって、各候補ハードウェアアーキテクチャには、それぞれの設計パラメータ値が含まれる、ことと、各候補ハードウェアアーキテクチャに関連付けられるそれぞれの性能値を決定することと、それぞれの性能値に基づいてハードウェアアーキテクチャを選択することと、選択される候補ハードウェアアーキテクチャに関連付けられるパラメータ値に基づいて値を決定することと、が含まれる。値を含む出力データは、ハードウェアアーキテクチャテンプレートを使用してハードウェアアーキテクチャをインスタンス化するために生成される。
【特許請求の範囲】
【請求項1】
方法であって、
それぞれのストリーミング入力データに対して演算を実行するように構成されるハードウェア構成要素のハードウェアアーキテクチャを生成するためのハードウェアアーキテクチャテンプレートを表すデータを受信することを含み、前記ハードウェアアーキテクチャテンプレートは、(i)ハードウェアアーキテクチャ内のクラスタの量、(ii)各クラスタ内の処理装置の量、(iii)各処理装置内のハードウェア装置アレイのサイズのうちの2つ以上を含む構成可能な設計パラメータのセットを含み、
前記方法は、
所与のハードウェア構成要素の所与のハードウェアアーキテクチャについて、前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データの特性に少なくとも部分的に基づいて、前記構成可能な設計パラメータのセットの値を決定することをさらに含み、前記決定することは、
前記構成可能な設計パラメータのセットの検索空間に基づいて、前記ハードウェアアーキテクチャテンプレートを使用して、前記所与のハードウェア構成要素の複数の候補ハードウェアアーキテクチャを生成することを含み、各候補ハードウェアアーキテクチャは、前記構成可能な設計パラメータのセットに対するそれぞれの設計パラメータ値を含み、
前記複数の候補ハードウェアアーキテクチャの各々について、性能モデルおよび前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データの前記特性に基づいて、前記候補ハードウェアアーキテクチャに関連付けられる性能測定値のセットのそれぞれの値を決定することを含み、
前記所与のハードウェアアーキテクチャとして、前記性能測定値のセットの前記それぞれの値に少なくとも部分的に基づいて、前記複数の候補ハードウェアアーキテクチャから候補ハードウェアアーキテクチャを選択することを含み、
前記所与のハードウェアアーキテクチャの前記構成可能な設計パラメータのセットの前記値として、前記選択される候補ハードウェアアーキテクチャに関連付けられる設計パラメータ値を決定することを含み、
前記方法は、
前記所与のハードウェアアーキテクチャの前記設計パラメータのセットの前記値を示す出力データを生成することをさらに含む、方法。
【請求項2】
前記出力データを前記ハードウェアアーキテクチャテンプレートに提供することと、
前記所与のハードウェアアーキテクチャの前記設計パラメータのセットの前記値に基づいて、前記所与のハードウェアアーキテクチャをインスタンス化することと、
前記所与のハードウェアアーキテクチャに基づいて前記所与のハードウェア構成要素を製造することと、をさらに含む、請求項1に記載の方法。
【請求項3】
前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データの前記特性は、前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データの各フレームの到着レートおよび各フレームのサイズを含む、請求項1に記載の方法。
【請求項4】
前記性能測定値のセットは、前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データを処理するための待ち時間、電力消費、リソース使用量、またはスループットのうちの少なくとも1つの測定値を含み、前記性能モデルは、分析コストモデル、機械学習コストモデル、またはハードウェアシミュレーションモデルのうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項5】
前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データは、時系列に従って画像センサによって収集されるストリーミング画像フレームを含む、請求項1に記載の方法。
【請求項6】
前記ストリーミング画像フレームの特性は、画像フレームの特定の到着レートおよび前記画像フレームの各々のそれぞれの画像解像度のうちの少なくとも1つを含む、請求項5に記載の方法。
【請求項7】
前記ストリーミング画像フレームの特性は、垂直ブランキング期間または水平ブランキング期間のうちの少なくとも1つを含むブランキング期間を含む、請求項5に記載の方法。
【請求項8】
前記ストリーミング画像フレームの特性はピクセル形式を含み、前記ピクセル形式はRGBまたはYUVカラー形式を含む、請求項5に記載の方法。
【請求項9】
前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データは、音声センサによって収集されるストリーミング音声を含む、請求項1に記載の方法。
【請求項10】
前記ストリーミング入力データの特性は、前記ストリーミング音声の特定のサンプルレート、前記ストリーミング音声のビット深度、前記ストリーミング音声のビットレート、または前記ストリーミング音声の音声形式のうちの少なくとも1つを含む、請求項9に記載の方法。
【請求項11】
前記所与のハードウェア構成要素を使用して前記それぞれのストリーミング入力データに対して演算を実行することは、
前記ストリーミング入力データの各フレームについて:
前記フレームの入力ベクトルを、各々が前記入力ベクトルの重複しない値を含む前記フレームの入力ベクトルを複数の部分ベクトルにセグメント化することを含み、
前記複数の部分ベクトルの各部分ベクトルについて、
前記部分ベクトルを、各々がそれぞれの量の処理装置を有し、各処理装置は前記所与のハードウェアアーキテクチャの前記設計パラメータのセットの前記値に対応するそれぞれのサイズのハードウェア装置アレイを有する、複数のクラスタのうちのそれぞれのクラスタに割り当てることと、
前記部分ベクトルの各値とメモリに記憶される行列の部分行の対応する値とを前記それぞれのクラスタで乗算し、それぞれの部分和を生成することと、
前記それぞれの部分和をアキュムレータアレイに記憶することと、を含む、請求項1に記載の方法。
【請求項12】
前記所与のハードウェア構成要素を使用して、前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データに対して演算を実行することは、メモリに記憶される前記行列の疎レベルに基づいて前記演算を実行することを含む、請求項11に記載の方法。
【請求項13】
前記実行する演算は、密行列モードと疎行列モードとの間で切り替えられ、前記切り替えプロセスは、制御およびステータス(CSR)レジスタによって制御される、請求項1に記載の方法。
【請求項14】
メモリに記憶される前記行列の前記部分行の前記対応する値を生成することが疎行列モードで実行されるとき、前記生成することは、
メモリに記憶される前記行列の前記部分行の非ゼロ値を決定することと、
前記行列内の前記部分行の前記非ゼロ値の位置を示す識別子を生成することと、を含み、前記識別子はインデックスまたはビットマップを含み、
対応する識別子に関連付けられる非ゼロ値の圧縮ベクトルを、前記行列の前記部分行の前記対応する値として生成することをさらに含む、請求項11に記載の方法。
【請求項15】
前記対応する識別子に基づいて、前記圧縮ベクトルに対応する前記部分ベクトルの値を選択することと、
前記部分ベクトルの前記選択される値の各々を、前記圧縮ベクトルの対応する非ゼロ値と乗算することと、をさらに含む、請求項14に記載の方法。
【請求項16】
前記所与のハードウェアアーキテクチャは、メモリに記憶される1つまたは複数の行列の上限疎レベルを示すデータを含み、前記所与のハードウェアアーキテクチャは、前記1つまたは複数の行列のうちの第1の行列とは異なる疎レベルを有する1つまたは複数の行列のうちの第2の行列を使用して前記ストリーミング入力データを処理するために動的に再インスタンス化されるように構成される、請求項1に記載の方法。
【請求項17】
前記構成可能な設計パラメータのセットの前記検索空間に基づいて、前記ハードウェアアーキテクチャテンプレートを使用して前記複数の候補ハードウェアアーキテクチャを生成することは、ランダム検索アルゴリズム、網羅的検索アルゴリズム、または遺伝的アルゴリズムのうちの少なくとも1つを使用して、前記設計パラメータのセットの前記検索空間を探索することを含む、請求項1に記載の方法。
【請求項18】
前記構成可能な設計パラメータのセットの前記検索空間を探索することは、
各処理装置内のハードウェア装置アレイの前記サイズおよびクラスタ内の処理装置の前記量に対応する設計パラメータ値を探索することと、
前記ハードウェア装置アレイの前記サイズおよび前記クラスタ内の処理装置の前記量に対応する前記設計パラメータ値が前記クラスタのスケーラビリティ限界にあることを決定することと、
これに応じて、クラスタの前記量に対応する設計パラメータ値を探索することと、を含む、請求項1に記載の方法。
【請求項19】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに請求項1~請求項18のいずれか1項に記載のそれぞれの演算を実行させる命令を記憶する1つまたは複数のコンピュータ可読記憶媒体。
【請求項20】
1つまたは複数のコンピュータと、1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに請求項1~請求項18のいずれか1項に記載のそれぞれの演算を実行させる命令を記憶する1つまたは複数の記憶デバイスと、を含む、システム。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本明細書は、スケーラブルなハードウェアアーキテクチャテンプレートを使用して、ストリーミング入力データに対して演算を実行するハードウェア構成要素(例えば機械学習プロセッサ)のハードウェア設計パラメータを生成すること、およびそのパラメータを使用してプロセッサを製造することに関する。
【背景技術】
【0002】
背景
人工知能(AI)は、機械によって実証される知能であり、コンピュータプログラムまたは機械の思考および学習の能力を表す。1つまたは複数のコンピュータを使用してAI計算を実行し、それぞれのタスクに合わせて機械をトレーニングすることができる。AI計算には、1つまたは複数の機械学習モデルによって表される計算が含まれ得る。
【0003】
ニューラルネットワークは、機械学習モデルのサブフィールドに属する。ニューラルネットワークは、複数の演算(例えばベクトル演算や行列演算)を表す1つまたは複数のノード層を使用することができる。1つまたは複数のコンピュータは、ニューラルネットワークの演算または計算を実行して、出力、例えば受信した入力の分類、予測、またはセグメンテーションを生成するように構成することができる。一部のニューラルネットワークには、出力層に加えて1つまたは複数の隠れ層が含まれている。各隠れ層の出力は、ネットワーク内の次の層、つまり次の隠れ層または出力層への入力として使用される。ネットワークの各層は、ネットワークパラメータのそれぞれのセットの現在値に従って、受信した入力から出力を生成する。
【発明の概要】
【発明が解決しようとする課題】
【0004】
概要
以下の明細書で説明される技術は、スケーラブルなハードウェアアーキテクチャテンプレートを使用して、ストリーミング入力データに対して演算を実行するハードウェア構成要素(例えば機械学習プロセッサ)のハードウェア設計パラメータを生成すること、およびそのパラメータを使用してプロセッサを製造することに関する。ハードウェアアーキテクチャテンプレートは、ストリーミング入力データの特性に基づいてアーキテクチャをスケールアップまたはスケールダウンできるように、ストリーミング入力データに対して演算を実行するように構成できるハードウェア構成要素を製造するための構成可能な設計パラメータのセットを含むことができる。この技術を使用して、設計パラメータのセットの値を決定し、ハードウェアアーキテクチャテンプレートと決定される値を使用してハードウェアアーキテクチャをインスタンス化することができる。
【0005】
ハードウェアアーキテクチャ表現とも呼ばれるハードウェアアーキテクチャは、一般に、設計される(または設計されるべき)電子または電気機械ハードウェアブロック、構成要素、またはシステムの表現に関する。ハードウェアアーキテクチャには、そのようなハードウェアブロック、構成要素、またはシステムを識別、プロトタイピング、および/または製造するためのデータが含まれ得る。ハードウェアアーキテクチャは、ブロック、構成要素、またはシステムの構造を表すデータ、例えば、ハードウェアブロック、構成要素、またはシステムに含まれるサブ構成要素またはサブシステムおよびそれらの相互関係を識別するデータを用いて符号化することができる。ハードウェアアーキテクチャには、ハードウェアブロック、構成要素、またはシステムの製造プロセスを表すデータ、もしくはハードウェアブロック、構成要素、またはシステム、あるいはその両方の設計を効果的に実装するための規律を表すデータも含まれ得る。
【0006】
本文書における「ハードウェアアーキテクチャテンプレート」という用語は、ストリーミング入力に対して機械学習計算を実行するように構成される機械学習プロセッサなどのハードウェア構成要素の設計パラメータのセットを有するテンプレートを表すデータを指す。ハードウェアアーキテクチャテンプレートは、ハードウェアアーキテクチャに含まれるさまざまなコンピューティング装置の、例えばタイプ、量、階層などの設計パラメータのセットに基づいて調整またはカスタマイズされる複数の態様を備えた、ハードウェアアーキテクチャの事前設定される一般設計とすることができる。
【0007】
ハードウェアアーキテクチャテンプレートは抽象化することができ、設計パラメータのセットの値が決定されるまでインスタンス化されない。例えば本書で説明するさまざまなプロセスを使用して設計パラメータの値を決定した後、ハードウェアアーキテクチャテンプレートを使用して、決定される設計パラメータのセットの値に基づいてハードウェアアーキテクチャをインスタンス化することができる。いくつかの実装では、ハードウェアアーキテクチャテンプレートは、ハードウェア回路に合成でき、オブジェクト指向方式、例えばCまたはC++でプログラムできる高レベルコンピュータ言語で符号化されるデータを表すことができる。わかりやすくするために、この文書では「ハードウェアアーキテクチャテンプレート」という用語を「テンプレート」と呼ぶこともある。
【0008】
設計パラメータのセットは、特定の設計要件または基準が与えられる場合に、設計パラメータのセットのそれぞれの値の検索が実行される多次元の「検索空間」を形成または有することができる。設計パラメータの値は、1つまたは複数のアルゴリズムまたは技術を使用して検索空間を探索することによって決定することができる。この文書では、「検索空間」という用語は、利用可能なリソースが与えられる設計パラメータのセットに対する可能な解決策(例えば、値)のすべて、または少なくともセットを包含する解決策空間を指し、例えば、ハードウェアアーキテクチャに含まれるさまざまなコンピューティング装置のすべての可能なタイプと量である。
【0009】
テンプレートは、計算演算を実行するために使用されるデータの特性に基づいて再構成することができる。いくつかの状況によっては、テンプレートによって生成されるハードウェアアーキテクチャは、入力データの変更(例えば、異なる疎レベルの異なる入力行列など)によりオンザフライで再インスタンス化され得る。
【0010】
「ハードウェア構成要素」という用語は、コンピューティング演算(例えば機械学習計算)を実行するためのハードウェア構成要素を指し、これには、例えば、ストリーミング入力データに基づいて、ベクトル削減、テンソル乗算、基本的な算術演算、および論理演算を実行するように構成される適切なハードウェアコンピューティング装置またはコンピューティング装置のクラスタが含まれる。例えば、ハードウェア構成要素には、1つまたは複数のタイル(例えば、積和演算(MAC)装置)、複数のMAC装置を含む1つまたは複数の処理要素、複数の処理要素と、グラフィック処理装置(GPU)およびテンソル処理装置(TPU)などの処理装置とを含む1つまたは複数のクラスタを含めることができる。
【0011】
「ストリーミング入力データ」という用語は、データを処理するためにハードウェア構成要素に継続的に提供されるデータを指す。例えば、データにはデータの複数のフレームが含まれ得、各フレームは特定の時間間隔で生成され、データの各フレームは特定のレートで処理するためにハードウェア構成要素に提供される。「時間間隔」および「レート」という用語は、データのフレームおよび次のフレームを生成または受信するための期間または周波数を指す。例えば、ストリーミング入力データのレートは、数ミリ秒、秒、分、またはその他の適切な期間ごとに1フレームのデータとすることができる。
【0012】
ストリーミング入力データは、時系列に従って画像センサによって収集されるストリーミング画像フレームまたはビデオフレームであり得る。画像センサにはカメラまたはレコーダーが含まれ得る。ストリーミング画像フレームは、画像センサによって特定のレートで収集されるか、または特定の到着レートでハードウェア構成要素に提供され得る。
【0013】
ストリーミング入力データの各フレームは、特定のサイズを有することができる。例えば、ストリーミング画像フレームの各々は、それぞれの画像解像度、例えば、50×50ピクセル、640×480ピクセル、1440×1080ピクセル、または4096×2160ピクセルを含むことができる。
【0014】
ハードウェア構成要素は、特定のレートで受信したストリーミング入力データを処理するように構成することができる。上述のように、ストリーミング入力データは、例えば1つまたは複数のソースからフレームごとに連続的に生成され、特定の到着レートでハードウェア構成要素に提供されることができる。例えば、レートは単位時間あたりのフレーム、または単位時間あたりのピクセル数にすることができる。理想的には、ハードウェア構成要素は、入力データの次のフレームが到着する前にストリーミング入力データの各フレームを処理して、時間内に出力データを生成することができる。しかし、ハードウェア構成要素が次のフレームが到着する前にフレームを処理できない場合、ハードウェア構成要素はストリーミング入力データの後続のフレームを処理するためのバックプレッシャを引き起こし得る。バックプレッシャにより、出力データ生成の中断や時間遅延が発生し、システムのオーバーヘッドが増加し得、特に、システム内の他のハードウェア構成要素が、ハードウェア構成要素によって生成される出力データを処理するように構成されている場合、または、ハードウェア構成要素の演算および/またはハードウェア構成要素による計算にエラーが発生し得る。
【0015】
いくつかの実装では、システムは、より大きなフレームサイズ、またはより高い周波数、あるいはその両方を有する新しいストリーミング入力データを使用して、より高い精度で出力データを生成することができる(例えば、画像あたりの解像度が高く、単位時間あたりより多くの画像フレーム)。最初は適切だったハードウェア構成要素が、次のフレームが到着する前に新しいストリーミング入力データの各フレームを処理できなくなる可能性があり、後から到着するストリーミング入力データのフレームを処理するためのバックプレッシャが発生する。
【0016】
一般化行列乗算(GEMM)および一般化行列ベクトル乗算(GEMV)を実行する技術は、ストリーミング入力データの各フレームが連続して受信されるため、ストリーミング入力データの処理には適用できない。例えば、ストリーミング入力データの各フレームは入力行列で表すことができ、入力行列は特定の時間ウィンドウ中にハードウェア構成要素によって行ごとに受信される。GEMMまたはGEMV技術の例は、ループタイリングとして知られており、ループネスト最適化とも呼ばれ、これは、行列間または行列ベクトルの計算を実行するために、ループの反復空間をより小さなチャンクまたはブロックに分割し、入力の各々のより小さなチャンクまたはブロックを並列で計算できるようにする。しかし、入力はシーケンスに従って行ごとに受信されるため、ループタイル技術はストリーミング入力データの処理には適合しない可能性がある。現在のフレームの最後の行または次のフレームの行を事前に記憶し、現在のフレームの別の行を並行して処理しながらこれらの行に対して演算を実行することは不可能であるか、または少なくとも非現実的である。
【0017】
いくつかの技術は、ストリーミング入力データのサイズまたは周波数が増加するときに、より多くの処理要素(PE)またはコンピューティング装置を含めることによってバックプレッシャ問題を解決することに頼る。しかし、非効率的でスケーラブルではない可能性があり、フレームサイズや到着レートが増加すると、すぐにハードウェア構成要素の最大電力要件に達する可能性がある。例えば、ストリーミング入力データを処理する(例えば、入力データの各フレームを使用して計算を実行する)ように構成されるエッジデバイス(例えば、スマートフォン、タブレット、ラップトップ、時計)には、電力消費率の上限がある可能性がある。したがって、エッジデバイスのハードウェア構成要素内に統合されるコンピューティング装置の総量または数は、最大電力要件、または充電ごとのバッテリ寿命の要件、あるいはその両方によって制限され得る。
【0018】
ストリーミング入力データをハイスループットでより効率的かつ堅牢に処理するために、この文書で説明される技術は、設計パラメータのセットを備えたハードウェアアーキテクチャテンプレートを実装する。説明される技術を実行するシステムは、ストリーミング入力データの特性に基づいて設計パラメータのセットの値を決定し、決定される設計パラメータ値を持つハードウェアアーキテクチャテンプレートを使用してハードウェアアーキテクチャをインスタンス化することができる。ハードウェアアーキテクチャには、設計パラメータ値によって指定されるコンピューティング装置の特定の配置が含まれ、ストリーミング入力データの処理に適したハードウェア構成要素を表す。ハードウェアアーキテクチャは、ハードウェア構成要素の製造に使用することができる。
【0019】
一態様によれば、この文書は、特定のストリーミング入力データに基づいてハードウェアアーキテクチャを生成する方法を説明する。ハードウェアアーキテクチャを使用して、特定のストリーミング入力データを十分に処理できるハードウェア構成要素を製造することができる。この方法には、構成可能な設計パラメータのセットを含むハードウェアアーキテクチャテンプレートを表すデータを受信することが含まれ、設計パラメータのセットには、クラスタの量、各クラスタ内の処理装置の量、および各処理装置内のハードウェア装置アレイのサイズのうちの2つ以上を含めることができる。
【0020】
この方法は、ハードウェア構成要素によって処理されるストリーミング入力データの特性に少なくとも部分的に基づいて、構成可能な設計パラメータのセットの値を決定することをさらに含む。決定プロセスには、構成可能な設計パラメータの検索空間を使用して、複数の候補ハードウェアアーキテクチャを生成することと、各候補ハードウェアアーキテクチャに関連付けられる性能測定値のセットのそれぞれの値を決定することと、性能測定値のセットのそれぞれの値に少なくとも部分的に基づいて、複数の候補ハードウェアアーキテクチャのすべてから1つの候補ハードウェアアーキテクチャを選択することと、選択される候補ハードウェアアーキテクチャに基づいて設計パラメータの値を決定することと、が含まれる。
【0021】
この方法によって生成される出力データは、ハードウェアアーキテクチャを製造するための設計パラメータ値を少なくとも含むことができる。
【0022】
いくつかの実装では、方法は、出力データをハードウェアアーキテクチャテンプレートに提供すること、決定される設計パラメータ値に基づいてハードウェアアーキテクチャをインスタンス化すること、およびハードウェアアーキテクチャを使用してハードウェア構成要素を製造することを含む。
【0023】
いくつかの実装では、ストリーミング入力データの特性には、各フレームの到着レートおよび各フレームのサイズが含まれ得る。性能測定値のセットは、特定のハードウェア構成要素のそれぞれのストリーミング入力データを処理するための待ち時間、電力消費、リソース使用量、またはスループットのうちの少なくとも1つの測定値を含むことができる。性能モデルには、分析コストモデル、機械学習コストモデル、またはハードウェアシミュレーションモデルのうちの少なくとも1つを含めることができる。ストリーミング入力データは、時系列に従って画像センサによって収集されるストリーミング画像フレームであり得る。ストリーミング画像フレームの特性には、特定の到着レートが含まれ得、ストリーミング画像フレームの各フレームは、それぞれの画像解像度を持ち得る。いくつかの実装では、ストリーミング画像フレームの特性は、画像フレームのそれぞれの画像解像度を含むことができる。ストリーミング画像フレームの特徴は、ブランキング期間(例えば、垂直ブランキング期間および/または水平ブランキング期間)、ピクセルまたはカラー形式(例えば、RGBまたはYUVカラー形式)、および画像フレームの到着順序を含むことができる。ストリーミング入力データは、音声センサによって収集されるストリーミング音声にすることができる。音声ストリーミングデータの特性には、ストリーミング音声の特定のサンプルレート、ストリーミング音声のビット深度、ストリーミング音声のビットレート、またはストリーミング音声の音声形式のうちの少なくとも1つが含まれ得る。
【0024】
いくつかの実施形態では、ストリーミング入力データは、行列形式またはベクトル形式で受信することができる。この方法にはさらに、入力フレームを行列から複数のベクトルにセグメント化することと、行列乗算により、行列乗算による行列を複数のベクトルに分解することと、行列の疎レベルを決定することと(例えば、メモリ装置に記憶され、ストリーミング入力データと乗算するために使用される行列)、および/または計算効率を向上させるために、記憶される行列内の非ゼロ値を決定することと、が含まれる。
【0025】
本明細書で説明する主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するために実装することができる。この文書で説明される技術は、異なるフレームサイズおよび到着レートで異なるストリーミングデータを処理できるハードウェア構成要素(例えば機械学習プロセッサ)を生成するのに堅牢であり得る。より具体的には、説明される技術を実行するシステムは、ハードウェアアーキテクチャテンプレートの設計パラメータ値を決定することによって、特定のストリーミング入力データ用のハードウェアアーキテクチャをカスタマイズすることができる。この技術によりパラメータ値を迅速に決定できるため、機敏なハードウェア開発が可能になる。ハードウェアアーキテクチャテンプレートを使用すると、決定される設計パラメータ値に基づいてハードウェアアーキテクチャをインスタンス化でき、データレート、データサイズ、および/またはその他の特性の幅広いバリエーションを有するストリーミング入力データをサポートできるスケーラブルでカスタマイズ可能なハードウェアアーキテクチャが可能になる。インスタンス化されるハードウェアアーキテクチャを強化して、特定のストリーミング入力データを処理する際のバックプレッシャを軽減したり、排除さえもすることもできる。ハードウェアアーキテクチャは、非ストリーミングで50%の疎レベルまでの異なる疎レベルを持つさまざまな行列を処理するために、オンザフライで再インスタンス化されるように構成することができる。
【0026】
さらに、この文書で説明されている技術は、ストリーミング入力データの処理効率を向上させる。より具体的には、説明される技術は、ストリーミング入力データに対して、例えば機械学習計算などの計算を実行するために、より少ない計算リソース、より少ない電力、およびより少ないメモリを使用することができる。テンプレートの設計パラメータ値は、1つまたは複数の要因、要件、または基準に基づいて決定され、例えば、設計パラメータ値は、電力使用量を最小限に抑え、特定の入力到着レートを維持するように決定することができる。例えば、ハードウェア構成要素の電力および/またはサイズ要件を満たしながら、ストリーミング入力データをバックプレッシャなしで処理できるように設計パラメータを決定することができる。説明した技術を実行するシステムは、メモリ使用量を削減するために疎行列に対して特定の処理を実行することもできる。例えば、システムは、ストリーミング入力データを処理するために非ストリーミング行列のゼロ値を記憶したり、非ストリーミング行列の非ゼロ値に関連付けられる入力値に対してのみ演算を実行したりすることを控えることができ、これにより、演算を実行するための計算リソースが削減され、データ転送のためのメモリ帯域幅と記憶のためのメモリサイズが削減される。
【0027】
さらに、この文書で説明される技術は、ハイスループットおよび性能でストリーミング入力データを処理することができる。説明される技術は、さまざまな処理要件に従って処理速度とコンピューティング装置のアイドル時間のバランスをとることにより、ストリーミング入力データを処理する際の待ち時間を短縮することができる。例えば、テンプレートによって生成されるハードウェア構成要素は、ストリーミング入力データの各フレームをより高速に処理できるため、ハードウェア構成要素内の1つまたは複数のコンピューティング装置のアイドル時間が増加し得る。あるいは、ハードウェア構成要素は、速度を落として各フレームを処理することもできるが、依然として各フレームを適時に処理することができる。説明した技術は、潜在的な論理の輻輳やハードウェアクロックレートの低下を回避することで、ハイスループットを保証することもできる。例えば、説明されている技術では、生成されるハードウェアアーキテクチャがスケーラビリティの限界に達するまで、設計パラメータのセットのサブセットのみを探索でき、この場合、設計パラメータのサブセットの値をさらに増やすと、論理の輻輳が発生したり、ハードウェアのクロックレートに悪影響を及ぼす可能性がある。
【0028】
本明細書の主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0029】
図1】例示的なアーキテクチャ設計システムを示す図である。
図2】ストリーミング入力データのフレームを処理するための例示的なシナリオを示す図である。
図3】ストリーミング入力データのフレームを処理するための別の例示的なシナリオを示す図である。
図4】ストリーミング入力データのフレームを処理するための別の例示的なシナリオを示す図である。
図5】ストリーミング入力データのフレームを処理するための別の例示的なシナリオを示す図である。
図6】非ストリーミング行列のデータアクセスパターンの例を示す図である。
図7】疎非ストリーミング行列を処理する例示的なプロセスである図である。
図8】ハードウェアアーキテクチャテンプレートを使用して出力データを生成する例示的なプロセスのフロー図である。
【発明を実施するための形態】
【0030】
さまざまな図面における同様の参照番号および指定は、同様の要素を示す。
詳細な説明
図1は、例示的なアーキテクチャ設計システム100を示す。アーキテクチャ設計システム100は、1つまたは複数の場所にある1つまたは複数のコンピュータ上で実装されるシステムの一例であり、以下に説明するシステム、構成要素、および技術を実装することができる。アーキテクチャ設計システム100の構成要素の一部は、1つまたは複数のコンピュータ上で実行されるように構成されるコンピュータプログラムとして実装することができる。
【0031】
図1に示すように、アーキテクチャ設計システム100は、入力データ110を処理して、ハードウェア構成要素の拡張ハードウェアアーキテクチャに関連付けられる出力データ170を生成するように構成されるアーキテクチャ強化サブシステム120を含むことができる。
【0032】
より具体的には、出力データ170を使用してハードウェアアーキテクチャをインスタンス化することができ、そのハードウェアアーキテクチャを使用して、ストリーミング入力データ、例えば画像のストリーミングを処理するように構成されるハードウェア構成要素を製造することができる。ハードウェア構成要素は、ストリーミング入力データを処理するためのさまざまな演算、例えば、構成要素によって記憶される行列またはベクトルとストリーミング入力データを使用する機械学習計算の演算を実行するように構成することができる。ストリーミング入力データは、ベクトル、行列、またはテンソル形式にすることができる。ハードウェア構成要素は、グラフィック処理装置(GPU)、テンソル処理装置(TPU)、特定用途向け集積回路(ASIC)、または画像のストリーミングを適切に処理するように構成される別の適切な処理装置または回路であり得る。
【0033】
一例としては、ハードウェア構成要素は、スマートフォン、コンピュータ、ポータブルタブレットなどのクライアントデバイスまたはエッジデバイスの一部である可能性があり、ストリーミング入力データ(例えば画像やビデオのストリーミング)を処理するように構成される1つまたは複数の計算装置を備えて設計される。ストリーミング入力データは、定義される時間間隔でフレームごとにハードウェア構成要素によって受信され、受信順序に従って、例えばエッジデバイスに記憶されている他のデータを使用してエッジデバイスによって処理され得る。例えば、エッジデバイスは、ニューラルネットワークの推論演算を実行して入力ビデオをフレームごとに処理し、エッジデバイスに記憶されているネットワークの重みを使用して顔を認識することができる。
【0034】
入力データ110は、特定のハードウェアアーキテクチャを有するハードウェア構成要素によって処理されるストリーミング入力データの特性を表すデータを含むことができる。特性には、ストリーミング入力データの特定の受信レートが含まれ得る。例えば、受信レートは、ミリ秒、秒、分、またはその他の適切な時間単位ごとに1フレームとすることができる。いくつかの実装では、ストリーミング入力データは、例えばビデオなどの複数の画像フレームを含むことができる。特性には、時間ステップで受信した各フレームの特定のデータサイズをさらに含めることができる。例えば、各フレームが画像フレームである場合、データサイズは、720×480ピクセル、1280×720ピクセル、1920×1080ピクセル、4096×2160ピクセル、またはそれ以上のピクセル解像度とすることができる。別の例では、各フレームのデータサイズは、各フレームのビットまたはバイトの量であり得る。例えば、フレームが他のタイプのデータである場合、データサイズはビットまたはバイトで表現することができる。
【0035】
入力データは、他の特性を含むこともできる。特性の一例としては、ストリーミング入力データを受信するように構成されるセンサのブランキング期間が挙げられ得る。ブランキング期間には、垂直ブランキング期間、水平ブランキング期間、またはその両方が含まれ得る。ブランキング期間とは、一般的に、センサがフレームまたはフィールドの最後の可視ライン(例えば、下部または左側のライン)の終了を受信する時間と、センサが次のフレームの第1の可視ライン(例えば、上部または右側のライン)の開始を受信する時間との間の期間を指す。特定の一例では、ブランキング期間の周波数(すなわち、期間の逆数)は、垂直ブランキング期間については60Hz、水平ブランキング期間については15,750Hzとすることができる。他の周波数も使用することができる。したがって、ハードウェア構成要素の処理レートは、ストリーミング画像フレームのブランキング期間に対応できるのが理想的である。
【0036】
別の例示的な特性としては、ストリーミング入力画像データのピクセル形式(またはカラー形式)、例えば、RGBまたはYUVが挙げられ得る。さらに、ストリーミング入力データの特性には、ストリーミング入力データの各フレームの到着順序を含めることができる。
【0037】
ストリーミング入力データは、音声データまたは信号であってもよい。例えば、音声データには、1人または複数の個人によって発せられる1つまたは複数のスピーチの録音、音の録音、背景雑音、または他の適切なタイプの音声データが含まれ得る。ストリーミング音声データには、スマートスピーカーやその他のタイプのデジタルアシスタントデバイスによって捕捉される音声が含まれ得る。ストリーミング音声入力には、ポッドキャスト、ラジオ放送、および/または音声センサ(例えば、マイク)によって捕捉できる他のタイプの音声が含まれ得る。
【0038】
ストリーミング入力データは、ストリーミング音声入力データの異なる特性を含むことができる。例えば、ストリーミング音声の特性にはサンプリングレートが含まれ得る。サンプリングレートは一般に、音声センサを使用して音声信号からサンプリングされるアナログ信号のサンプリング周波数、すなわち、単位時間あたりに収集されるサンプルアナログ信号の量を指す。サンプリングレートは、44.1kHz、48kHz、88.2kHz、96kHz、192kHz、またはそれ以上であり得る。別の例として、ストリーミング音声入力データの特性にはビット深度が含まれ得る。ビット深度は通常、音声サンプルごとのビットサイズを指し、時には音声サンプルの音声解像度とも呼ばれる。ビット深度は、4ビット、16ビット、24ビット、64ビット、またはその他の適切なビット深度にすることができる。いくつかの実装では、ストリーミング音声入力データの特性にはビットレートが含まれ得る。ビットレートは一般に、単位時間あたりに伝送または処理されるビットの量を指す。ビットレートは、サンプリングレートとビット深度に基づいて計算でき、例えば、デジタル音声のコンパクトディスク音声(CD)のサンプリングレートが44.1kHzの場合、ビットレートは1.4Mbit/s、ビット深度は16ビット、かつダブルトラックである。ハードウェア構成要素の処理レートは、ハードウェア構成要素がストリーミング入力音声を処理する際のバックログを回避するために、音声ストリーミング入力データのビットレートよりも高速であることが理想的である。
【0039】
音声ストリーミング入力データの他の特性には、データの音声形式が含まれ得る。例えば、音声ストリーミング入力データは、パルス符号変調(PCM)、MPEG-1音声層3(MP3)、Windows Media Audio(WMA)、またはその他の適切な音声形式の音声形式で符号化することができる。
【0040】
いくつかの実装では、入力データ110は、ハードウェア構成要素(例えば機械学習計算を実行する機械学習プロセッサ)によって処理されるストリーミング入力データを含むことができる。アーキテクチャ拡張サブシステム120は、ストリーミング入力データを分析して、ストリーミング入力データの特性(例えば各フレームの受信レートまたは到着レート、および各フレームのサイズ)を表すデータを生成するように構成することができる。
【0041】
任意選択として、入力データ110は、ハードウェアアーキテクチャテンプレートをインスタンス化するための構成可能な設計パラメータのセットの初期値を表すデータを含むこともできる。初期値は、デフォルトのアーキテクチャ(例えばクラスタごとに1つのMAC装置を含むアーキテクチャ)をインスタンス化するために使用することができる。例えば、デフォルトのアーキテクチャには、クラスタ内にスタティックランダムアクセスメモリ(SRAM)ベースのラインバッファ装置を含めることができ、この場合、ラインバッファ装置は単一のメモリバンクを持ち、各フレームの入力ピクセルのライン全体を記憶するように構成されている。別の例として、初期値には、デフォルトアーキテクチャのゼロアキュムレータアレイを示すデータが含まれ得る。
【0042】
上記の例におけるストリーミング入力データは画像フレームのストリームであるが、いくつかの例を挙げると、ストリーミング入力データには音声録音、ベクトルやテンソルなどのデータ構造などのさまざまなタイプのデータが含まれ得ることを理解されたい。
【0043】
出力データ170は、アーキテクチャテンプレートを使用してハードウェアアーキテクチャをインスタンス化または再インスタンス化するための拡張パラメータ値の少なくともセットを含むことができる。拡張パラメータ値のセットは、アーキテクチャテンプレートの設計パラメータのセットに対して決定される。設計パラメータには、少なくともハードウェアアーキテクチャ内のクラスタの量、各クラスタ内のPEの量、各処理要素(PE)内のMACアレイのサイズ、またはこれらのパラメータの2つ以上の任意の組み合わせを含むことができる。例えば、MACアレイのサイズは1、4、10、またはそれ以上にすることができる。別の例として、各クラスタ内のPEの量は1、4、7、20、50またはそれ以上になる可能性がある。別の例として、ハードウェアアーキテクチャ内のクラスタの量は、1、2、8、15、30、またはそれ以上になる可能性がある。いくつかの実装では、出力データ170は、拡張パラメータ値のセットを含む、拡張ハードウェアアーキテクチャを定義するデータ、およびハードウェア構成要素がどのように製造されるべきかを定義する任意の他のデータを含むことができる。
【0044】
出力データ170は、上述のように、ハードウェア回路に合成し、オブジェクト指向方式でプログラムできる高レベルコンピュータ言語、例えば、CまたはC++で符号化することができる。他の例では、出力データ170は、拡張パラメータ値のリストであり得る。
【0045】
出力データ170は、出力データ内のパラメータ値を使用してテンプレートによってインスタンス化されるハードウェアアーキテクチャを有するハードウェア構成要素を生産するために、製造システム175に提供することができる。製造システム175は、ハードウェア構成要素を製造するための任意の適切なシステム、例えば、製作システムまたは化学機械研磨システムであり得る。
【0046】
アーキテクチャ拡張サブシステム120は、入力データ110に基づいてアーキテクチャテンプレート195を処理することによって出力データ170を生成するように構成される拡張エンジン130を含むことができる。例えば、アーキテクチャ拡張サブシステム120は、アーキテクチャテンプレート195を表すデータを拡張エンジン130に記憶し、提供するように構成されるメモリ装置190を含むことができる。あるいは、拡張エンジン130は、アーキテクチャ拡張サブシステム120の外部にあるサーバまたはメモリ装置からアーキテクチャテンプレート195を受信することができる。
【0047】
アーキテクチャテンプレート195は、複数の構成可能な設計パラメータを備えた高レベルのプログラムコードであり得る。アーキテクチャテンプレート195は、設計パラメータ値のセットを受信するように構成されており、システムによって実行されると、特定のタイプのストリーミング入力データを処理するためのハードウェア構成要素の製造に使用されるハードウェアアーキテクチャを表す出力データを生成することができる。例えば、拡張エンジン130は、アーキテクチャテンプレート195に複数の設計パラメータ値のセットを提供し、複数の候補アーキテクチャ145を生成することができる。
【0048】
拡張エンジン130は、複数の候補アーキテクチャ145を生成するように構成される候補生成器140を含む。候補生成器140は、入力データ110およびアーキテクチャテンプレート195を処理して、複数の候補アーキテクチャ145を生成することができる。候補生成器140は、特定の期間に利用可能なリソースが与えられる設計パラメータのセットによって形成される検索空間内の複数のパラメータ値を探索するように構成されている。検索空間は、ストリーミング入力データを処理するための対象となる計算要件に応じて、十、数百、数万の設計点(例えば、各々がすべての設計パラメータのそれぞれの値を含むタプル)、または他の適切な数の設計点の範囲のサイズを有することができる。探索によって得られる候補設計パラメータ値の各セットについて、候補生成器140は、アーキテクチャテンプレート195を使用して、対応するハードウェアアーキテクチャをインスタンス化することができる。検索空間の探索の詳細については、以下で説明する。
【0049】
拡張エンジン130は、候補アーキテクチャ145を分析し、1つまたは複数の性能モデル185を使用して各候補アーキテクチャ145の性能値155を生成するように構成される分析エンジン150も含む。例えば、性能値は、ストリーミング入力データを処理する際の候補アーキテクチャ145の性能を示す、任意の適切な数値(例えば0から100の範囲のスカラー値)を含むことができる。例えば、候補アーキテクチャ145の性能値155は、候補ハードウェアアーキテクチャ145が、ストリーミング入力データを処理するために使用されるときにどの程度効率的であるかを示すことができる。例えば、効率は、計算速度、バックプレッシャ状況にある時間の割合、データ処理レート、またはバックプレッシャを回避するためのデータ処理レート要件を満たすアーキテクチャのデータ処理レートと比較した電力消費または空間消費に基づくことができる。第1のストリーミング入力データを処理するときに、ハードウェアアーキテクチャが高い性能値(例えば、100のうち90)を持つと予測されることは珍しいことではないが、第1のストリーミング入力データとは異なる特性を持つ第2のストリーミング入力データを処理する場合は、性能値が低くなる(例えば、100のうち30)。したがって、特定のストリーミング入力データを処理するための複数の、例えばすべての候補アーキテクチャに関連付けられる性能値を生成することによって、システム100は、アーキテクチャテンプレート195を使用して、特定のストリーミング入力データを処理するための最良の性能の候補アーキテクチャ設計のうちの1つまたは複数を効率的に取得することができる。
【0050】
性能モデル185は、ハードウェアアーキテクチャが特定のタイプのストリーミング入力データを処理するための性能のさまざまな態様にアクセスするように構成される分析モデル、機械学習ベースモデル、またはシミュレーションモデルであり得る。性能メトリクスは、ハードウェアアーキテクチャのさまざまな態様、例えば、電力消費、リソース使用量、スループット、または入力データ110によって示される特性を有するストリーミング入力データを処理するときにバックプレッシャが存在するであろうかどうかを測定することができる。
【0051】
性能モデル185は、アーキテクチャ強化サブシステム120内のメモリ装置190に記憶されるデータで表すことができ、あるいは外部メモリ装置またはサーバによって提供することができる。
【0052】
選択エンジン160は、図1に示すように、性能値155に基づいて拡張ハードウェアアーキテクチャとして複数の候補アーキテクチャ145から候補アーキテクチャを選択するように構成することができる。例えば、選択エンジン160は、最高の性能値155を有する候補アーキテクチャを拡張候補アーキテクチャとして選択することができる。別の例として、選択エンジン160は、指定される、例えば事前定義される、閾値を超える性能値155を持ち、最小限の電力またはリソース、あるいはその両方を使用する候補アーキテクチャを選択することができる。例えば、選択エンジン160は、指定される閾値を満たさない、または超えない性能値155を有する各候補アーキテクチャを候補アーキテクチャ145からフィルタリングすることができる。次いで、選択エンジン160は、残りの候補アーキテクチャから、その性能値、消費電力推定値、必要なリソースおよび/または回路基板上の空間などに基づいて、特定の候補アーキテクチャを選択することができる。例えば、選択エンジン160は、消費電力が最小である、および/または必要な空間が最小である残りの候補アーキテクチャ145を選択することができる。
【0053】
別の例では、選択エンジン160は、消費電力および/または必要な空間に基づいて候補アーキテクチャ145をフィルタリングすることができる。例えば、ハードウェア構成要素が設計されているデバイスは、例えば特にそのデバイスがスマートフォンまたは他のモバイルデバイスである場合など、利用可能な電力および/または空間が限られている可能性がある。この例では、選択エンジン160は、候補アーキテクチャ145から、利用可能な電力または空間を超えるであろう各候補アーキテクチャ145をフィルタリングすることができる。次いで、選択エンジン160は、例えば最高の性能値155を有する残りの候補アーキテクチャを選択することによって、性能値155に基づいて残りの候補アーキテクチャ145から選択することができる。
【0054】
選択エンジン160は、さらなる演算のために、拡張ハードウェアアーキテクチャ、または拡張パラメータ値、あるいはその両方を出力データ170に符号化することができる。例えば、拡張パラメータ値を複数のコンピュータに提供して、拡張ハードウェアアーキテクチャを並列にインスタンス化することができる。別の例として、拡張ハードウェアアーキテクチャは、拡張ハードウェアアーキテクチャに基づいて、対応するハードウェア構成要素を例えば並行して製造するために、1つまたは複数の製造装置に提供され得る。
【0055】
図2図5は、異なる設計を有する例示的なハードウェア構成要素がストリーミング入力データのフレームを処理する例示的なシナリオを示す。便宜上、上記のプロセスは、1つまたは複数の場所に配置される1つまたは複数のコンピュータのハードウェア構成要素によって実行されるものとして説明されている。例えば、図1のアーキテクチャ設計システム100を使用して製造され、適切にプログラムされるハードウェア構成要素は、これらのプロセスを実行することができる。
【0056】
テンプレートを使用して製造される説明されるハードウェア構成要素は、異なるレベルの設計でストリーミング入力データを処理するように構成されている。例えば、ハードウェアアーキテクチャには、クラスタの第1のレベルの設計、処理要素(この文書では処理装置とも呼ばれる)の第2のレベルの設計、およびハードウェア装置アレイ(ハードウェアコンピューティング装置アレイ、または以下ではハードウェアコンピューティングアレイ、例えばMAC装置アレイとも呼ばれる)の第3レベルの設計を有することができる。説明されるハードウェアアーキテクチャは、設計の各レベルを決定した後、テンプレートからインスタンス化することができる。例えば、設計パラメータは、クラスタの量および/または配置、各クラスタ内のPEの量および/または配置、ならびに/もしくは各PE内のハードウェア装置アレイの量を含むことができる。別の例として、設計パラメータは、各ハードウェア装置アレイの次元、例えば、ハードウェア装置アレイ内のハードウェア装置(例えば、MAC装置)の次元または量に対応する。
【0057】
図2に示すように、例示的なハードウェアアーキテクチャ200は、1つの処理装置240を含む1つのクラスタ230を含むことができる。処理装置240は、ハードウェアコンピューティング装置アレイ250を含むことができる。別の例として、図3に示すハードウェアアーキテクチャ300では、各クラスタ330は複数の処理装置340a~cを含むことができ、各処理装置340a~cはそれぞれ、1つのハードウェア装置アレイ350a~cを有する。さらに、ハードウェアアーキテクチャ400の別の例は、複数のクラスタ430a、430bを含むことができる。各クラスタ430aおよび430bは、処理装置440aおよび440bを含むことができる。各処理装置440aおよび440bは、それぞれ1つのハードウェア装置アレイ450aおよび450bを含むことができる。さらに、ハードウェアアーキテクチャ500の別の例は、複数のクラスタ530a~xを含むことができ、各クラスタは複数の処理装置540a~xを有し、各処理装置540a~xはハードウェア装置アレイ550a~zを含む。図示を容易にするために、各ハードウェアアーキテクチャ200~500について、図2図5には2つ、3つ、または4つのクラスタ、処理装置、またはハードウェア装置アレイのみが示されているが、ハードウェアアーキテクチャには、他の量のクラスタ、処理装置、およびハードウェア装置アレイを含めることができることを理解されたい。
【0058】
ハードウェアアーキテクチャは、単位時間あたり、例えば各フレームの時間ステップで、ストリーミング入力データのフレームを処理するように構成することができる。ストリーミング入力データの各フレームは、複数の次元を持つベクトル形式(例えば、2、5、10、または20エントリのベクトル)で受信することができる。入力ベクトルの次元は1×inputdimにすることができる。あるいは、ストリーミング入力データの各フレームを行列形式で受信し、入力行列を複数のベクトルに分割することでベクトルとして処理することもできる。
【0059】
一般に、ハードウェアアーキテクチャは、事前に記憶される行列またはベクトルを用いて入力ベクトルに対して演算を実行することができる。事前に記憶される行列は、例えば、inputdim×outputdimなどの次元を持つ行列として構造化することができる。いくつかの実装では、演算にはベクトルまたは行列の乗算が含まれるため、ハードウェアアーキテクチャによって生成される出力データは、1×outputdimの次元のベクトル形式にすることができる。または、例えば演算に行列間の乗算が含まれる場合など、出力を行列形式にすることができる。
【0060】
説明されるテンプレートを使用して設計パラメータ値に基づいてハードウェアアーキテクチャを決定した後、説明されるハードウェアアーキテクチャに基づいて製造されるハードウェア構成要素またはシステムは、ストリーミング入力データ(例えば、入力ベクトル)の各フレームを、ハードウェア装置アレイの次元(例えば、アレイ内のMAC装置の量)に基づいて1つまたは複数の部分タイルに分割することができる。例えば、MAC装置アレイがアレイ内にD MAC装置を含むと仮定すると、各入力タイルの次元は次元Dになる可能性がある。部分タイルは、以下の明細書では部分セグメントとも呼ばれる。各部分タイルには、入力ベクトルの重複しない値が含まれる。
【0061】
再び図2図5を参照すると、ストリーミング入力は、フレームごとに行列またはベクトル形式で受信することができる。フレームのストリーミング入力が行列形式で受信される場合、コントローラまたはスケジューラは、ハードウェア構成要素によるさらなる処理のために、入力行列を細長いベクトルまたは複数のベクトルに再マッピングまたは再形成することができる。例えば、ストリーミング入力データの各フレームが行列形式で受信される場合、コントローラまたはスケジューラは行列の各行をベクトルとして扱い、行列の乗算による行列からの計算を行列の乗算によるベクトルに変換することができる。入力行列またはベクトルによって乗算される他の行列は、例えば追加のストリーミング入力データではなく、メモリ装置に記憶される行列である。
【0062】
ストリーミング入力ベクトル210は、各々がハードウェア装置アレイ250のサイズに対応する次元Dを有する複数の重複しない部分セグメント215a~215cに分割することができる。システム内のコントローラまたはスケジューラ(例えば、ハードウェア階層状態機械)は、これらのセグメント215a~cを生成し、これらのセグメントを使用して異なるクラスタ、PE、およびMAC装置アレイで実行される演算をスケジュールすることができる。同様に、ストリーミング入力ベクトル310、410、および510は、それぞれ、複数の部分セグメント315a~c、415a~c、および515a~cに分割することができる。図2図5には部分セグメントが3つしか示されていないが、時間ステップに対する入力ベクトルの各フレームは、3を超える部分セグメント(例えば、4、8、12、24、51)または別の適切な数の部分セグメントに分割できることを理解されたい。
【0063】
一般に、次元Dは、ハードウェア構成要素に記憶される入力行列の列または行の長さであるinputdimと同じか、それより小さくすることができる。例えば、ストリーミング入力データのフレームの入力次元は100にすることができる。各部分タイルおよび対応するハードウェア装置アレイは、1、10、20、50、100の次元、または別の適切な次元を持つことができる。
【0064】
構成要素またはシステムは、部分セグメントのすべてを1つまたは複数のバッファ、例えばハードウェア装置アレイを含む処理装置内のバッファに記憶することができる。
【0065】
ハードウェア構成要素またはシステムは、サイズDのベクトルに基づいて各入力部分タイルに対して演算を実行するように構成でき、これは、事前に記憶される行列の対応する行または列(例えば、部分タイルに対応する部分行または列)からフェッチまたはプリフェッチされる。再び図2図5を参照すると、事前に記憶される行列は、それぞれ、行列データ220、320、420、および520であることができる。演算には、例えば、ドット積および他の適切な要素ごとの算術演算が含まれ得る。ハードウェア構成要素またはシステムは、この時間ステップで上記の演算を実行することによって部分出力(例えば、部分和)を生成し、その部分出力をアキュムレータアレイに記憶でき、例えば、図2図5にそれぞれ示されるアキュムレータアレイ260、360、460、および560である。
【0066】
ハードウェア構成要素またはシステムは、各入力部分タイルおよび事前に記憶される行列の対応する部分行または列に対して、上記の演算を繰り返し実行することができる。繰り返しの合計回数は、例えば、クラスタ、PE、ハードウェア装置アレイのさまざまな量や各ハードウェア装置アレイの次元Dなどの設計パラメータに基づき得る。
【0067】
例えば、再び図2を参照すると、ストリーミング入力データのフレームごとに、ハードウェア構成要素またはシステムは、上記の演算をoutputdim時間繰り返すことができる。したがって、すべての部分出力を記憶するためのアキュムレータアレイのサイズは、outputdimになり得る。アキュムレータアレイ260は、記憶される部分出力を集約し、集約される出力をさらなる演算に提供することができる。
【0068】
別の例として、再び図3を参照すると、ハードウェアアーキテクチャ300は、クラスタ330内に複数の処理装置340a~cを含むことができる。各処理装置340a~cが、サイズ1のハードウェア装置アレイ350a~c(MACアレイ)を有することができると仮定すると(例えば、各ハードウェア装置アレイ350a~cにおいて単一のMAC装置のみ)、この場合、MACアレイの量は、クラスタ330内の処理装置340a~cの量に等しくなる。説明されるハードウェア構成要素またはシステムは、ハードウェア装置アレイの次元が1であるため、入力ベクトルを各々が1要素の次元を有する複数の部分タイルに分割することができる。
【0069】
出力次元が処理装置の量以上であると仮定すると、1つまたは複数の処理装置を使用して、複数の部分タイル、つまり
【0070】
【数1】
【0071】
個の部分タイルを実行することができる。各処理装置は、
【0072】
【数2】
【0073】
のサイズのアキュムレータアレイを持つことができる。例えば、出力次元が10で、クラスタあたりの処理装置350の量が5である場合、各処理装置350は2つの部分入力タイルをそれぞれ処理するために2回使用され、各処理装置350は、サイズ2のアキュムレータアレイ360を有することができる。図3の処理装置は、計算リソースの効率を高めるために、出力次元以下になるように設計されている。
【0074】
図4を参照すると、例示的なハードウェアアーキテクチャ400は、複数のクラスタ、例えば2つのクラスタ430aおよび430bを含むことができる。ストリーミング入力ベクトル410は、複数の部分セグメント415a~cに分割される。複数の部分セグメント415a~cの各々は、ハードウェア装置アレイ450aおよび450bと同じ次元を有する。
【0075】
複数の部分セグメント415a~cは、2つのクラスタ430aおよび430bの各々に均等に分散され得る。例えば、図4に示すように、部分セグメント415aおよび415cがクラスタ430aに割り当てられ、部分セグメント415bおよび他の部分セグメント(図示せず)がクラスタ430bに割り当てられる。
【0076】
クラスタ430aおよび430bの各々は、行列データ420の対応する部分行または部分列を使用して、割り当てられる部分セグメントを処理するように構成することができる。各クラスタで実行されるプロセスおよび演算は、図2に関して説明したものと同様である。各クラスタ430aおよび430bは、割り当てられる部分セグメントを処理することによってそれぞれの部分和を生成することができ、部分和は1×outputdimの次元を有することができる。各クラスタ430aおよび430bはさらに、それぞれの部分和ベクトルをアキュムレータ装置455に提供するように構成することができる。アキュムレータ装置455は、異なるクラスタからの部分和ベクトルを結合して出力ベクトルを生成し、その出力ベクトルをアキュムレータアレイ460に提供するように構成することができる。いくつかの実装では、アキュムレータアレイは1×outputdimの次元を持つことができる。
【0077】
図5を参照すると、上述のように、例示的なハードウェアアーキテクチャ500は、複数のクラスタ530a~xを含むことができ、各クラスタは複数の処理装置540a~xを有し、各処理装置は、それぞれのハードウェア装置アレイ550a~yを有する。
【0078】
図4のプロセスと同様に、説明されるハードウェア構成要素またはシステムは、時間ステップで入力ベクトルのフレームを複数の部分セグメント5151a~cに分割するように構成することができる。各クラスタ530a~xには、部分セグメントのそれぞれのサブセットが実質的に均等に割り当てられる。例えば、図5に示すように、部分セグメント515aおよび515cはクラスタ530aに割り当てられ、部分セグメント515bおよび別の部分セグメント(図示せず)はクラスタ530xに割り当てられる。
【0079】
各クラスタ530a~xは、図3に関して説明したものと同様のそれぞれのプロセスおよび演算を実行する。各クラスタ530a~xは、1×outputdimの次元を有するそれぞれの部分和ベクトルを生成し、それぞれの部分和をアキュムレータ装置555に提供することができる。アキュムレータ装置555は、対応する部分和ベクトルを結合し、さらなる演算のためにアキュムレータアレイ560に提供する出力ベクトルを生成するように構成されている。アキュムレータアレイ560は、1×outputdimの次元を含むことができる。
【0080】
再び図1を参照し、図2図5に関連して、アーキテクチャ設計システム100は、異なるストリーミング入力データの特性に応じて、ハードウェアアーキテクチャ200、300、400、および500を生成することができる。例えば、ストリーミング入力データの到着レートがより遅い場合(例えば、1秒あたり)、または各フレームのサイズが小さい場合(例えば、一画像フレームに120ピクセル)、アーキテクチャ設計システム100は、クラスタ内の単一の処理装置を使用して、ハードウェアアーキテクチャ200と同様のハードウェアアーキテクチャを生成することができる。別の例として、ストリーミング入力データの到着レートがより速い場合(例えば、ミリ秒あたり)、または各フレームがハードウェアアーキテクチャ300、400、または500と同様にサイズが大きい場合(例えば、一画像フレームに4000ピクセル)、クラスタ内に複数の処理要素があり、または複数のクラスタがある。
【0081】
上述のように、ハードウェアアーキテクチャの例は、ハードウェア装置アレイの次元、処理装置内のハードウェア装置アレイの量、クラスタ内の処理装置の量、ハードウェアアーキテクチャ内のクラスタの量のうちの少なくとも1つに関連付けられる設計パラメータ値のセットを持つことができる。システムは、入力データ到着レート、スループット、消費電力、および利用可能な領域または空間の要件の制約を考慮して、設計パラメータのセットによって形成される検索空間を使用して、設計パラメータ値のセットを決定するように構成されている。設計パラメータ値のセットを決定する詳細は、図8に関連して説明される。
【0082】
入力ベクトルを処理するために使用される事前に記憶される行列に目を向ける。非ストリーミング行列とも呼ばれる事前記憶行列は、例えばオンチップの静的ランダムアクセスメモリ(SRAM)装置などのデバイス上のメモリにフェッチまたは事前フェッチされる。事前に記憶される行列のサイズは時間ステップでの入力ベクトルのサイズに対応するため、ベクトル入力がより大きくなると事前に記憶される行列もより大きくなる必要があり、結果としてオンチップSRAMの消費が増加する。
【0083】
図6は、非ストリーミング行列600のデータアクセスパターン例を示す。便宜上、データアクセスパターンは、1つまたは複数の場所にある1つまたは複数のコンピュータのシステムによって実行されるプロセスに関連付けられる。例えば、図1のアーキテクチャ設計システム100から生成されるハードウェアアーキテクチャに基づいて製造され、適切にプログラムされるハードウェア構成要素は、データアクセスパターンを生成するプロセスを実行することができる。
【0084】
図5に関連して、ハードウェアアーキテクチャが2つのクラスタ(例えばクラスタ630aおよび630b)を含み、各クラスタが3つのPE(または処理装置)640a~cを有し、各PE2がサイズ4のMACアレイを有すると仮定すると、システムは、図6に示すように、非ストリーミング行列600の例を2つの矩形で示す2つの部分に分割することができる。上部をクラスタ630aに割り当てることができ、下部をクラスタ630bに割り当てることができる。
【0085】
システムは、非ストリーミング行列600のそれぞれの部分にアクセスして、対応する部分セグメントを処理することができる。非ストリーミング行列600の次元は8×9である。例えば、クラスタ630aがPE640aでサイズ4の部分セグメント615aを受信するときである。クラスタは、上部の第1の列(例えば、非ストリーミング行列600の部分列)にアクセスし、部分セグメント615aの各要素に対して、PE640aで部分列の対応する要素とともに要素ごとの演算を実行することもでき、第1の部分和を生成する。同様に、クラスタ630aは、PE640bで部分セグメント615aを受信し、上部の第2の列にアクセスし、PE640bを使用して部分セグメント615aと上部の第2の列の演算を実行して、第2の部分和を生成することができる。クラスタ630aは、PE640cで部分セグメント615aを受信し、上部の第3の列にアクセスし、PE640cを使用して部分セグメント615aと上部の第3の列の演算を実行して、第3の部分和を生成することができる。第1、第2、および第3の部分和は、次元3の部分和ベクトルに配置することができる。
【0086】
次に、PE640a~cは、上部の4列目から6列目にアクセスして次元3の第2の部分和ベクトルを生成し、上部の7列目から9列目にアクセスして次元3の第3の部分和ベクトルを生成することで、演算を繰り返すことができる。クラスタ630aは、第1、第2、および第3の部分和ベクトルをアキュムレータ装置(例えば、図5のアキュムレータ装置555)に提供して、次元1×9の中間部分和ベクトルを形成することができる。
【0087】
非ストリーミング行列600の下部に目を向けると、クラスタ630bおよびその対応するPE640d~fは、下部の各列にアクセスして、次元1×9の別の中間部分和ベクトルを生成することができる。いくつかの実装では、システムは2つの中間部分和ベクトルを出力データとして提供することができる。あるいは、システムは部分和ベクトルを結合して、1×9の次元の出力データを生成することもできる。
【0088】
ストリーミング入力データのフレームが行列形式である場合、システムは、ストリーミング入力データのフレームを処理するための上述の技術と同様のプロセスに従って演算を実行することができる。例えば、入力フレームの次元がM行K列で、ハードウェア構成要素またはシステムで行ごとに受信され、非ストリーミング行列の次元がK行N列の場合である。システムは入力行列の各行を処理し、非ストリーミング行列をM回ロードすることができる。
【0089】
しかし、入力フレームのサイズが大きく、非ストリーミング行列が特定の疎レベルを有する疎行列(すなわち、特定のパーセントのゼロ要素を有する行列)である場合、大きなサイズの非ストリーミング行列を複数回ロードまたはプリフェッチすることは、電力消費と計算リソースの点で非効率的である。疎非ストリーミング行列を処理する技術は、図7に関連して説明される。
【0090】
図7は、疎非ストリーミング行列を処理する例示的なプロセス700である。便宜上、プロセス700は、1つまたは複数の場所に配置される1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。例えば、図1のアーキテクチャ設計システム100から生成されるハードウェアアーキテクチャに従って製造され、適切にプログラムされるハードウェア構成要素は、プロセス700を実行することができる。
【0091】
非ストリーミング行列は事前に決定され、オンチップメモリに記憶されるため、システムは行列の疎レベルおよび行列のゼロ要素を決定することができる。疎レベルは10%、20%、50%、またはその他の適切な疎レベルにすることができる。
【0092】
いくつかの実装では、疎レベルは、1×Nベクトルのブロック内のK個の非ゼロ要素として定義されるブロック疎比とすることができる。非ストリーミング行列のブロック疎率は、顔検出、視線検出、または深度マップ生成などのそれぞれのタスクに調整することができる。疎レベルは事前に決定できるため、本明細書で説明されるハードウェア構成要素またはシステムは、オフラインで疎行列を前処理して圧縮することができる。
【0093】
さらに、説明される技術は、事前に決定される疎レベルおよびストリーミング入力データの特性に基づいて、入力ベクトルを分割するためのセグメント化サイズ(次元サイズD)を決定することもできる。次元サイズDを決定した後、システムはD要素の粒度で非ストリーミング行列にアクセスし、非ストリーミング行列の部分列または行ごとに非ゼロ要素を符号化することができる。このように、説明される技術は、既存の圧縮形式(例えば、圧縮疎行(CSR)形式や圧縮疎列(CSC)形式)を使用する場合よりも、ハードウェア装置アレイの利用率を最大化し、メタデータ記憶のオーバーヘッドとハードウェアインデックスのデコードの複雑さを軽減することができる。
【0094】
図7に示すように、例示的な非ストリーミング行列(例えば、行列データ720)は、影付き領域で示される非ゼロ要素735と、白色領域で示されるゼロ要素740とを含む。例えば、ベクトルデータ735a~dの各々は、4つの要素を含む。ベクトルデータ735aの第1と第3の要素は非ゼロであり、ベクトルデータ735aの第2と第4の要素はゼロである。ベクトルデータ735bの第1と第4の要素は非ゼロであり、ベクトルデータ735bの第2と第3の要素はゼロである。ベクトルデータ735cの第2と第3の要素は非ゼロであり、ベクトルデータ735cの第1と第4の要素はゼロである。
【0095】
システムは、各ベクトルデータ735a~dを処理して、それぞれの圧縮データ750a~dを生成することができ、各圧縮データは、元のベクトルデータ735a~dに対する相対位置を示す識別子760を有する非ゼロ要素のみを含む。識別子760は、インデックスマッピングまたはビットマップに基づいて生成することができる。PEで部分セグメントを受信した後、システムは識別子を使用して部分セグメントから値を選択し、部分セグメントを処理することができる。部分セグメントから選択される値は、対応する圧縮データ750a~dの非ゼロ要素に対応する。
【0096】
例えば、ベクトルデータ735aに基づいて生成される圧縮データ750は、非ゼロデータ、すなわち第1および第3の要素、および第1および第3の要素に関連付けられる識別子760のみを含むことができる。識別子760は、圧縮データ750の第1の要素がベクトルデータ735aの第1の位置に対応し、圧縮データ750aの第2の要素がベクトルデータ735aの第3の位置に対応することを示すように構成される。ベクトルデータ735aを対応する入力部分セグメントで処理すると、システムは、入力部分セグメントの第1と第3の位置にある部分セグメントから値を選択し、圧縮データ750a内の対応する非ゼロ要素とともに選択した値の要素ごとの演算を実行することしかできない。
【0097】
さらに、説明される技術は、密計算と疎計算の両方をサポートすることができる。より具体的には、説明される技術は、ハードウェア構成要素がストリーミング入力データを処理するための演算を実行しているときに、ハードウェア構成要素に記憶されている入力行列の変更の決定に応答してハードウェア構成要素がストリーミング入力データを処理するモードを、密モードと疎モードの間で切り替えることができる。例えば、製造されるハードウェア構成要素には、新しい非ストリーミング行列が疎行列モードの閾値疎値に適格であるとの決定に応答して新しい非ストリーミングデータとともにストリーミング入力データを処理するハードウェア構成要素を密行列モードから疎行列モードに切り替えるために使用される制御およびステータスレジスタ(CSR)を含めることができる。識別子は疎行列モードでのみ使用されることに留意されたい。
【0098】
図8は、ハードウェアアーキテクチャテンプレートを使用して出力データを生成する例示的なプロセス800のフロー図である。便宜上、プロセス800は、1つまたは複数の場所に配置される1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。例えば、図1のアーキテクチャ設計システム100などの適切にプログラムされるシステムは、プロセス800を実行することができる。
【0099】
システムは、ハードウェアアーキテクチャテンプレートを表すデータを受信する(810)。上述のように、ハードウェアアーキテクチャテンプレートは、構成可能な設計パラメータのセットを含み、決定される設計パラメータ値に基づいてハードウェアアーキテクチャをインスタンス化するように構成される。ハードウェアアーキテクチャを使用して、特定のストリーミング入力データを処理するように構成されるハードウェア構成要素を製造することができる。設計パラメータのセットには、(i)ハードウェアアーキテクチャ内のクラスタの量、(ii)各クラスタ内の処理装置の量、および(iii)各処理装置内のハードウェア装置アレイのサイズのうちの2つ以上が含まれる。
【0100】
システムは、ハードウェア構成要素を製造するためのハードウェアアーキテクチャについて、構成可能な設計パラメータのセットの値を決定する(820)。値の決定は、所与のハードウェア構成要素のそれぞれのストリーミング入力データの特性に少なくとも部分的に基づく。決定プロセスの詳細は、ステップ840~870に関連して説明される。
【0101】
システムは、値(830)を含む出力データを生成する。いくつかの実装では、出力データは、ハードウェアテンプレートの決定される値をとともに構成可能な設計パラメータのセットを設定することによって生成される、インスタンス化されるハードウェアアーキテクチャを含むことができる。あるいは、出力データには、取得される設計パラメータ値と、テンプレートからの値に基づいて生成される対応するハードウェアアーキテクチャの両方を含むことができる。システムはさらに、ハードウェアアーキテクチャに基づいてハードウェア構成要素を製造するための出力データを提供することができる。
【0102】
構成可能な設計パラメータのセットの値を生成するために、システムはまず、構成可能な設計パラメータのセットの検索空間に基づいて複数の候補ハードウェアアーキテクチャを生成する(840)。上述のように、検索空間は構成可能な設計パラメータのセットに基づいており、利用可能な計算リソース、消費電力、およびオンチップ領域の使用量に基づく可能なパラメータ値によって制限される。システムは、1つまたは複数の可能な設計パラメータ値のセットのうちのそれぞれの設計パラメータ値のセットを有する複数の候補ハードウェアアーキテクチャを生成することができる。
【0103】
1つまたは複数の可能な設計パラメータ値のセットは、1つまたは複数の異なる検索アルゴリズムを使用して決定することができる。例えば、システムはランダム検索、網羅的検索、または遺伝的検索アルゴリズムを実行できる。
【0104】
ハードウェア構成要素を製造するための設計パラメータのセットの範囲の一例は、5つのクラスタ、20のPE、および100のMAC装置アレイであり得る。つまり、候補ハードウェア構成要素は1~5の範囲のクラスタの量を持つことができ、各クラスタは1~20の範囲のPEの量を持つことができ、各PEはそれぞれのサイズを持つ1~100のMAC装置アレイを持つことができる。システムは、上記の検索アルゴリズムを使用して複数の候補ハードウェアアーキテクチャを生成し、例の範囲から複数の可能な値を検索し、各セットを適用して、テンプレートを使用してそれぞれのハードウェア構成要素をインスタンス化できる。例えば、システムは設計パラメータのセットの最小値から開始し、1つまたは複数の設計パラメータの値を徐々に増加させることができる。システムは、スループット要件に適した設計パラメータ値のセットを取得すると、検索を停止できる。
【0105】
いくつかの実装では、システムは、ハードウェア装置アレイのサイズ、PE内のハードウェア装置アレイの量、およびクラスタ内のPEの量に関連付けられるパラメータ値を探索できるが、転換点を決定するまでクラスタの量を検索したり増加したりすることはできず、ハードウェア装置アレイのサイズまたはクラスタあたりのPEの量をさらに増やすと、計算クロックレートに悪影響を及ぼしたり、論理の輻輳を引き起こしたりする。つまり、ハードウェア装置アレイのサイズおよびクラスタあたりの処理装置の量が、クラスタのスケーラビリティの限界に達している。このようにして、システムはより多くのハードウェア装置とPEを配置し、必要なスループットを満たすハードウェアアーキテクチャをインスタンス化するためのクラスタの量を最小限にすることができる。
【0106】
システムは、複数の候補ハードウェアアーキテクチャの各々について、性能測定値のセットのそれぞれの値を決定する(850)。性能値のセットのそれぞれの値は、性能モデル(またはコストモデル)を使用して候補ハードウェアアーキテクチャごとに決定される。性能値は各々、コストまたは複数のコストの組み合わせを表す数値に関連付けられている。コストは、待ち時間、スループット、電力消費、オンチップ領域の使用量、計算リソースの使用量、またはそれらの任意の適切な組み合わせのレベルを表すことができる。
【0107】
性能モデルは、設計パラメータ値のセットとともにハードウェアアーキテクチャを処理するための任意の適切なモデルであり得る。性能モデルは、ほんの数例を挙げると、分析モデル、機械学習ベースのモデル、またはハードウェアシミュレーションモデルなどであり得る。
【0108】
分析モデルは、一般に、ハードウェアアーキテクチャのトポロジ(例えば、インターフェース、配線、乗算器、加算器、論理装置などのコンピューティング装置の量)を決定し、そのトポロジに基づいてハードウェアアーキテクチャの性能値を決定することができる。分析モデルの一例としては、機械のピーク性能、機械のピーク帯域幅、および演算強度の関数としてハードウェアアーキテクチャの性能値を生成するルーフラインベースのモデルが挙げられ得る。ルーフラインベースのモデルの出力は、特定の計算要件またはリソース制限の下でのハードウェアアーキテクチャの性能の上限(例えば、「天井」)を表す関数曲線であり得る。ルーフラインベースのモデルは、全体的な性能の「ボトルネック」要因を自動的に決定し、上述のように、待ち時間、スループットまたは消費電力、もしくはその両方のレベルを表す性能値を出力できる。
【0109】
あるいは、性能モデルは、ラベル付きトレーニングサンプルとともにトレーニングされる機械学習モデル(例えば、教師あり学習)であってもよい。トレーニングサンプルは、高レベル合成とレジスタ転送レベルのシミュレーションを使用して生成できる。トレーニングされる機械学習モデルは、性能値の予測を生成するように構成されており、例えば多層パーセプトロンモデルなどの任意の適切な機械学習モデルであり得る。
【0110】
さらに、性能モデルはシミュレーションモデルであってもよい。シミュレーションモデルは、1つまたは複数のランダム化される入力刺激を与えたハードウェアアーキテクチャの特性に基づいて、電力計算とスループットの推定値を生成できる。
【0111】
システムは、ハードウェア構成要素のハードウェアアーキテクチャとして候補ハードウェアアーキテクチャを選択する(860)。より具体的には、システムは、性能値に少なくとも部分的に基づいて拡張ハードウェアアーキテクチャを選択することができる。上述のように、ハードウェアアーキテクチャは、最も高い性能値を有する候補ハードウェアアーキテクチャとなり得る。あるいは、ハードウェアアーキテクチャは、適切な性能値を持ちながら、必要な計算リソースを最小限にすることができる。
【0112】
システムは、選択される候補ハードウェアアーキテクチャに関連付けられる設計パラメータ値に基づいて値を決定する(870)。決定される値は、テンプレートを使用してハードウェアアーキテクチャをインスタンス化するために提供される、またはハードウェア構成要素の製造に使用される出力データに含めることができる。
【0113】
本明細書で説明される主題および関数演算の実施形態は、デジタル電子回路、有形に具体化されるコンピュータソフトウェアまたはファームウェア、本明細書で開示される構造およびそれらの構造的等価物を含むコンピュータハードウェア、またはそれらの1つまたは複数の組み合わせで実装することができる。本明細書で説明される主題の実施形態は、1つまたは複数のコンピュータプログラム、例えば、データ処理装置による実行またはデータ処理装置の演算の制御のために有形の非一時的記憶媒体上に符号化されるコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムアクセスメモリデバイスまたはシリアルアクセスメモリデバイス、またはそれらの1つまたは複数の組み合わせであり得る。代替的または追加的に、プログラム命令は、人工的に生成される伝播信号(例えば、機械生成される電気信号、光信号、または電磁信号)上に符号化され得、これは、データ処理装置による実行のために適切な受信装置に送信するための情報を符号化するために生成される。
【0114】
「データ処理装置」という用語は、データ処理ハードウェアを指し、例としてプログラム可能なプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。この装置はまた、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路であってもよく、またはそれをさらに含むこともできる。この装置には、ハードウェアに加えて、コンピュータプログラムの実行環境を作成するコードを任意選択で含めることができ、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つまたは複数の組み合わせを構成するコードである。
【0115】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも呼ばれまたは説明され得るコンピュータプログラムは、任意の形式のプログラミング言語で記述することができ、コンパイル言語またはインタプリタ言語、あるいは宣言言語または手続き言語を含み、スタンドアロンプログラムとして、またはコンピューティング環境での使用に適したモジュール、構成要素、サブルーチン、またはその他の装置としてなど、あらゆる形式で展開できる。プログラムは、ファイルシステム内のファイルに対応し得るが、対応する必要はない。プログラムは、他のプログラムやデータを保持するファイルの一部(例えば、マークアップ言語文書に記憶される1つまたは複数のスクリプト)、問題のプログラム専用の単一ファイル、または複数の調整されるファイルに記憶でき、例えば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイルである。コンピュータプログラムは、1つのコンピュータ、もしくは1つのサイトに配置されている、または複数のサイトに分散されデータ通信ネットワークによって相互接続されている複数のコンピュータ上で実行されるように展開できる。
【0116】
1つまたは複数のコンピュータからなるシステムが特定の演算またはアクションを実行するように構成されているということは、システムに、演算中にその演算またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせがインストールされていることを意味する。1つまたは複数のコンピュータプログラムが特定の演算またはアクションを実行するように構成されるということは、1つまたは複数のプログラムに、データ処理装置によって実行されると、装置に演算またはアクションを実行させる命令が含まれていることを意味する。
【0117】
本明細書で使用される「エンジン」または「ソフトウェアエンジン」は、入力とは異なる出力を提供するソフトウェア実装される入力/出力システムを指す。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット(「SDK」)、またはオブジェクトなど、符号化される関数ブロックである場合がある。各エンジンは、任意の適切なタイプのコンピューティングデバイスに実装でき、例えば、サーバ、携帯電話、タブレットコンピュータ、ノートブックコンピュータ、音楽プレーヤー、電子ブックリーダー、ラップトップコンピュータまたはデスクトップコンピュータ、PDA、スマートフォン、もしくは1つまたは複数のプロセッサとコンピュータ可読媒体を含むその他の据え置き型または携帯型のデバイスである。さらに、2つ以上のエンジンが同じコンピューティングデバイス上に実装されてもよいし、異なるコンピューティングデバイス上に実装されてもよい。
【0118】
本明細書で説明されるプロセスおよび論理フローは、入力データを演算し出力を生成することによって関数を実行する1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルコンピュータによって実行することができる。プロセスおよび論理フローは、例えばFPGAまたはASICなどの専用論理回路によって、もしくは専用論理回路と1つまたは複数のプログラムされるコンピュータの組み合わせによって実行することもできる。
【0119】
コンピュータプログラムの実行に適したコンピュータは、汎用または専用のマイクロプロセッサもしくはその両方、あるいは任意の他の種類の中央処理装置に基づくことができる。一般に、中央処理装置は、読み取り専用メモリ、またはランダムアクセスメモリ、あるいはその両方から命令とデータを受信する。コンピュータの必須要素は、命令を遂行または実行するための中央処理装置と、命令とデータを記憶するための1つまたは複数のメモリデバイスである。中央処理装置とメモリは、専用の論理回路によって補完したり、専用の論理回路に組み込んだりすることができる。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス(例えば、磁気ディスク、光磁気ディスク、または光ディスク)を含むか、あるいはこれらの大容量記憶デバイスからデータを受信するか、データを転送するか、またはその両方であるように演算可能に接続される。しかし、コンピュータにそのようなデバイスが搭載されている必要はない。さらに、コンピュータは、ほんの数例を挙げると、例えば、携帯電話、パーソナルデジタルアシスタント(PDA)、モバイル音声またはビデオプレーヤー、ゲームコンソール、全地球測位システム(GPS)受信機、または例えば、ユニバーサルシリアルバス(USB)フラッシュドライブなどのポータブル記憶デバイスなど、他のデバイスに組み込むこともできる。
【0120】
コンピュータプログラムの命令とデータの記憶に適したコンピュータ可読媒体は、例として、例えばEPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイスを含む、あらゆる形態の不揮発性メモリ、媒体およびメモリデバイス、磁気ディスク(例えば、内蔵ハードディスクやリムーバブルディスク)、光磁気ディスク、CD-ROMディスクおよびDVD-ROMディスクが含まれる。
【0121】
ユーザとの対話を提供するには、本明細書で説明される主題の実施形態は、ユーザに情報を表示するための表示デバイス(例えば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニター)と、キーボードおよびポインティングデバイスを備えたコンピュータ上で実装でき、例えば、マウス、トラックボールやプレゼンス感知ディスプレイ、またはユーザがコンピュータに入力を提供できるその他の表面などである。他の種類のデバイスを使用して、ユーザとの対話を提供することもでき、例えば、ユーザに提供されるフィードバックは、例えば視覚的フィードバック、聴覚的フィードバック、触覚的フィードバックなど、任意の形式の感覚的フィードバックとすることができる。ユーザからの入力は、音響、音声、または触覚入力などを含む、あらゆる形式で受信することができる。さらに、コンピュータは、ユーザが使用するデバイスとの間で文書を送受信することにより、ユーザと対話できる。例えば、Webブラウザから受信した要求に応じて、ユーザのデバイス上のWebブラウザにWebページを送信することによる。また、コンピュータは、テキストメッセージまたは他の形式のメッセージをパーソナルデバイス(例えば、スマートフォン)に送信し、メッセージングアプリケーションを実行し、応答メッセージをユーザからリターンで受信することによってユーザと対話することができる。
【0122】
本明細書で説明する主題の実施形態は、バックエンド構成要素を含むコンピューティングシステムで実装することができ、例えば、データサーバとして、またはミドルウェア構成要素を含み、例えば、アプリケーションサーバ、または、フロントエンド構成要素を含み、例えば、グラフィカルユーザインターフェース、ウェブブラウザ、またはユーザが本明細書で説明される主題の実装と対話できるアプリを備えたクライアントコンピュータ、もしくは、そのようなバックエンド、ミドルウェア、またはフロントエンド構成要素の1つまたは複数の任意の組み合わせである。システムの構成要素は、デジタルデータ通信の任意の形式または媒体(例えば通信ネットワーク)によって相互接続することができる。通信ネットワークの例には、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、例えばインターネットが含まれる。
【0123】
コンピューティングシステムは、クライアントとサーバを含むことができる。クライアントとサーバは一般的に、互いにリモートにあり、通常は通信ネットワークを通じて対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で実行され、相互にクライアントとサーバの関係を持つコンピュータプログラムによって発生する。いくつかの実施形態では、サーバは、例えばクライアントとして機能するデバイスと対話するユーザにデータを表示し、ユーザからのユーザ入力を受信する目的で、データ(例えばHTMLページ)をユーザデバイスに送信する。ユーザデバイスで生成されるデータ(例えばユーザ対話の結果)は、デバイスからサーバで受信することができる。
【0124】
上述の実施形態に加えて、以下の実施形態も革新的である。
実施形態1は、それぞれのストリーミング入力データに対して演算を実行するように構成されるハードウェア構成要素のハードウェアアーキテクチャを生成するためのハードウェアアーキテクチャテンプレートを表すデータを受信することであって、ハードウェアアーキテクチャテンプレートは、(i)ハードウェアアーキテクチャ内のクラスタの量、(ii)各クラスタ内の処理装置の量、(iii)各処理装置内のハードウェア装置アレイのサイズのうちの2つ以上を含む、構成可能な設計パラメータのセットが含まれる、受信することと、所与のハードウェア構成要素の所与のハードウェアアーキテクチャについて、所与のハードウェア構成要素のそれぞれのストリーミング入力データの特性に少なくとも部分的に基づいて、構成可能な設計パラメータのセットの値を決定することと、を含み、決定することは、構成可能な設計パラメータのセットの検索空間に基づいて、ハードウェアアーキテクチャテンプレートを使用して所与のハードウェア構成要素の複数の候補ハードウェアアーキテクチャを生成することであって、各候補ハードウェアアーキテクチャには、構成可能な設計パラメータのセットに対するそれぞれの設計パラメータ値が含まれる、生成することと、複数の候補ハードウェアアーキテクチャの各々について、性能モデルおよび所与のハードウェア構成要素のそれぞれのストリーミング入力データの特性に基づいて、候補ハードウェアアーキテクチャに関連付けられる性能測定値のセットのそれぞれの値を決定することと、所与のハードウェアアーキテクチャとして、性能測定値のセットのそれぞれの値に少なくとも部分的に基づいて、複数の候補ハードウェアアーキテクチャから候補ハードウェアアーキテクチャを選択することと、所与のハードウェアアーキテクチャの構成可能な設計パラメータのセットの値として、選択される候補ハードウェアアーキテクチャに関連付けられる設計パラメータ値を決定することと、所与のハードウェアアーキテクチャの設計パラメータのセットの値を示す出力データを生成することと、を含む、方法である。
【0125】
実施形態2は、出力データをハードウェアアーキテクチャテンプレートに提供することと、所与のハードウェアアーキテクチャの設計パラメータのセットの値に基づいて、所与のハードウェアアーキテクチャをインスタンス化することと、所与のハードウェアアーキテクチャに基づいて所与のハードウェア構成要素を製造することと、をさらに含む、実施形態1の方法である。
【0126】
実施形態3は、実施形態1または実施形態2の方法であり、所与のハードウェア構成要素のそれぞれのストリーミング入力データの特性には、所与のハードウェア構成要素のそれぞれのストリーミング入力データの各フレームの到着レートおよび各フレームのサイズが含まれる。
【0127】
実施形態4は、実施形態1~実施形態3のいずれか1つの方法であり、性能測定値のセットは、所与のハードウェア構成要素のそれぞれのストリーミング入力データを処理するための待ち時間、電力消費、リソース使用量、またはスループットのうちの少なくとも1つの測定値を含み、性能モデルには、分析コストモデル、機械学習コストモデル、またはハードウェアシミュレーションモデルのうちの少なくとも1つが含まれる。
【0128】
実施形態5は、所与のハードウェア構成要素のそれぞれのストリーミング入力データが、時系列に従って画像センサによって収集されるストリーミング画像フレームを含む、実施形態1~実施形態4のいずれか1つの方法である。
【0129】
実施形態6は、ストリーミング画像フレームの特性が、画像フレームの特定の到着レートおよび画像フレームの各々のそれぞれの画像解像度のうちの少なくとも1つを含む、実施形態5の方法である。
【0130】
実施形態7は、ストリーミング画像フレームの特性が、垂直ブランキング期間または水平ブランキング期間のうちの少なくとも1つを含むブランキング期間を含む、実施形態5の方法である。
【0131】
実施形態8は、ストリーミング画像フレームの特性がピクセル形式を含み、ピクセル形式がRGBまたはYUVカラー形式を含む、実施形態5の方法である。
【0132】
実施形態9は、実施形態1~実施形態8のいずれか1つの方法であり、所与のハードウェア構成要素のそれぞれのストリーミング入力データは、音声センサによって収集されるストリーミング音声を含む。
【0133】
実施形態10は、請求項9に記載の方法であり、ストリーミング入力データの特性は、ストリーミング音声の特定のサンプルレート、ストリーミング音声のビット深度、ストリーミング音声のビットレート、またはストリーミング音声の音声形式のうちの少なくとも1つを含む。
【0134】
実施形態11は、実施形態1~実施形態10のいずれか1つの方法であり、所与のハードウェア構成要素を使用してそれぞれのストリーミング入力データに対して演算を実行することは、ストリーミング入力データの各フレームについて、フレームの入力ベクトルを、各々が入力ベクトルの重複しない値を含む複数の部分ベクトルにセグメント化することと、複数の部分ベクトルの各部分ベクトルについて、その部分ベクトルを複数のクラスタのそれぞれのクラスタに割り当てることであって、各々はそれぞれの量の処理装置を有し、各処理装置は、所与のハードウェアアーキテクチャの設計パラメータのセットの値に対応するそれぞれのサイズのハードウェア装置アレイを有する、割り当てることと、部分ベクトルの各値とメモリに記憶される行列の部分行の対応する値とをそれぞれのクラスタで乗算し、それぞれの部分和を生成することと、それぞれの部分和をアキュムレータアレイに記憶することと、を含む。
【0135】
実施形態12は、実施形態11の方法であり、所与のハードウェア構成要素を使用して、所与のハードウェア構成要素のそれぞれのストリーミング入力データに対して演算を実行することは、メモリに記憶される行列の疎レベルに基づいて演算を実行することを含む。
【0136】
実施形態13は、実施形態1~実施形態12のいずれか1つの方法であり、実行する演算は、密行列モードと疎行列モードとの間で切り替えられ、切り替えプロセスは、制御およびステータス(CSR)レジスタによって制御される。
【0137】
実施形態14は、実施形態11の方法であり、メモリに記憶される行列の部分行の対応する値を生成することが疎行列モードで実行されるとき、生成することは、メモリに記憶される行列の部分行の非ゼロ値を決定することと、行列内の部分行の非ゼロ値の位置を示す識別子を生成することであって、識別子にはインデックスまたはビットマップが含まれる、決定することと、対応する識別子に関連付けられる非ゼロ値の圧縮ベクトルを、行列の部分行の対応する値として生成することと、をさらに含む。
【0138】
実施形態15は、実施形態14の方法であり、対応する識別子に基づいて、圧縮ベクトルに対応する部分ベクトルの値を選択することと、部分ベクトルの選択される値の各々を、圧縮ベクトルの対応する非ゼロ値と乗算することと、をさらに含む。
【0139】
実施形態16は、実施形態1~実施形態15のいずれか1つの方法であり、所与のハードウェアアーキテクチャには、メモリに記憶される1つまたは複数の行列の上限疎レベルを示すデータが含まれており、所与のハードウェアアーキテクチャは、1つまたは複数の行列のうちの第1の行列とは異なる疎レベルを有する1つまたは複数の行列のうちの第2の行列を使用してストリーミング入力データを処理するために動的に再インスタンス化されるように構成される。
【0140】
実施形態17は、実施形態1~実施形態16のいずれか1つの方法であり、構成可能な設計パラメータのセットの検索空間に基づいて、ハードウェアアーキテクチャテンプレートを使用して複数の候補ハードウェアアーキテクチャを生成することは、ランダム検索アルゴリズム、網羅的検索アルゴリズム、または遺伝的アルゴリズムのうちの少なくとも1つを使用して、設計パラメータのセットの検索空間を探索することを含む。
【0141】
実施形態18は、実施形態1~実施形態17のいずれか1つの方法であり、構成可能な設計パラメータのセットの検索空間を探索することは、各処理装置内のハードウェア装置アレイのサイズおよびクラスタ内の処理装置の量に対応する設計パラメータ値を探索することと、ハードウェア装置アレイのサイズおよびクラスタ内の処理装置の量に対応する設計パラメータ値がクラスタのスケーラビリティ限界にあることを決定することと、これに応じて、クラスタの量に対応する設計パラメータ値を探索することと、を含む。
【0142】
実施形態19は、1つまたは複数のコンピュータと、1つまたは複数のコンピュータによって実行されると、1つまたは複数のコンピュータに実施形態1~実施形態18のいずれか1つの方法を実行させるように演算可能な命令を記憶する1つまたは複数の記憶デバイスとを含むシステムである。
【0143】
実施形態20は、コンピュータプログラムで符号化されるコンピュータ記憶媒体であり、プログラムは、データ処理装置によって実行されると、データ処理装置に実施形態1~実施形態18のいずれか1つの方法を実行させるように演算可能な命令を含む。
【0144】
本明細書には多くの具体的な実装の詳細が含まれているが、これらは、発明の範囲または特許請求され得る範囲を限定するものとして解釈されるべきではなく、特定の発明の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。本明細書において別個の実施形態の文脈で説明されるとある特徴は、単一の実施形態において組み合わせて実装することもできる。逆に、単一の実施形態の文脈で説明されるさまざまな特徴は、複数の実施形態で個別に、または任意の適切なサブコンビネーションで実装することもできる。さらに、特徴はとある組み合わせで作用するものとして上述され得、最初はそのように特許請求されることもあるが、場合によっては、特許請求される組み合わせから1つまたは複数の特徴がその組み合わせから削除されることがあり、特許請求される組み合わせは、サブコンビネーションまたはサブコンビネーションのバリエーションを対象とし得る。
【0145】
同様に、演算は特定の順序で図面に示されているが、これは、望ましい結果を達成するために、そのような演算が図示される特定の順序または一連の順序で実行されること、または図示されるすべての演算が実行されることを必要とするものとして理解されるべきではない。とある状況では、マルチタスクと並列処理が有利な場合がある。さらに、上述の実施形態におけるさまざまなシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されるプログラム構成要素およびシステムは、一般に、単一のソフトウェア製品に統合することも、複数のソフトウェア製品にパッケージ化することもできることを理解されたい。
【0146】
主題の特定の実施形態について説明した。他の実施形態は、特許請求の範囲内である。例えば、特許請求の範囲に記載されるアクションは、異なる順序で実行されても、依然として望ましい結果を達成することができる。一例として、添付の図に示されているプロセスは、望ましい結果を達成するために、必ずしも示されている特定の順序、または一連の順序を必要とするわけではない。とある場合では、マルチタスクと並列処理が有利な場合がある。
図1
図2
図3
図4
図5
図6
図7
図8
【手続補正書】
【提出日】2024-05-22
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法であって、
それぞれのストリーミング入力データに対して演算を実行するように構成されるハードウェア構成要素のハードウェアアーキテクチャを生成するためのハードウェアアーキテクチャテンプレートを表すデータを受信することを含み、前記ハードウェアアーキテクチャテンプレートは、(i)ハードウェアアーキテクチャ内のクラスタの量、(ii)各クラスタ内の処理装置の量、(iii)各処理装置内のハードウェア装置アレイのサイズのうちの2つ以上を含む構成可能な設計パラメータのセットを含み、
前記方法は、
所与のハードウェア構成要素の所与のハードウェアアーキテクチャについて、前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データの特性に少なくとも部分的に基づいて、前記構成可能な設計パラメータのセットの値を決定することをさらに含み、前記決定することは、
前記構成可能な設計パラメータのセットの検索空間に基づいて、前記ハードウェアアーキテクチャテンプレートを使用して、前記所与のハードウェア構成要素の複数の候補ハードウェアアーキテクチャを生成することを含み、各候補ハードウェアアーキテクチャは、前記構成可能な設計パラメータのセットに対するそれぞれの設計パラメータ値を含み、
前記複数の候補ハードウェアアーキテクチャの各々について、性能モデルおよび前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データの前記特性に基づいて、前記候補ハードウェアアーキテクチャに関連付けられる性能測定値のセットのそれぞれの値を決定することを含み、
前記所与のハードウェアアーキテクチャとして、前記性能測定値のセットの前記それぞれの値に少なくとも部分的に基づいて、前記複数の候補ハードウェアアーキテクチャから候補ハードウェアアーキテクチャを選択することを含み、
前記所与のハードウェアアーキテクチャの前記構成可能な設計パラメータのセットの前記値として、前記選択される候補ハードウェアアーキテクチャに関連付けられる設計パラメータ値を決定することを含み、
前記方法は、
前記所与のハードウェアアーキテクチャの前記設計パラメータのセットの前記値を示す出力データを生成することをさらに含む、方法。
【請求項2】
前記出力データを前記ハードウェアアーキテクチャテンプレートに提供することと、
前記所与のハードウェアアーキテクチャの前記設計パラメータのセットの前記値に基づいて、前記所与のハードウェアアーキテクチャをインスタンス化することと、
前記所与のハードウェアアーキテクチャに基づいて前記所与のハードウェア構成要素を製造することと、をさらに含む、請求項1に記載の方法。
【請求項3】
前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データの前記特性は、前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データの各フレームの到着レートおよび各フレームのサイズを含む、請求項1または2に記載の方法。
【請求項4】
前記性能測定値のセットは、前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データを処理するための待ち時間、電力消費、リソース使用量、またはスループットのうちの少なくとも1つの測定値を含み、前記性能モデルは、分析コストモデル、機械学習コストモデル、またはハードウェアシミュレーションモデルのうちの少なくとも1つを含む、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データは、時系列に従って画像センサによって収集されるストリーミング画像フレームを含む、請求項1~4のいずれか一項に記載の方法。
【請求項6】
前記ストリーミング画像フレームの特性は、画像フレームの特定の到着レートおよび前記画像フレームの各々のそれぞれの画像解像度のうちの少なくとも1つを含む、請求項5に記載の方法。
【請求項7】
前記ストリーミング画像フレームの特性は、垂直ブランキング期間または水平ブランキング期間のうちの少なくとも1つを含むブランキング期間を含む、請求項5に記載の方法。
【請求項8】
前記ストリーミング画像フレームの特性はピクセル形式を含み、前記ピクセル形式はRGBまたはYUVカラー形式を含む、請求項5に記載の方法。
【請求項9】
前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データは、音声センサによって収集されるストリーミング音声を含む、請求項1~8のいずれか一項に記載の方法。
【請求項10】
前記ストリーミング入力データの特性は、前記ストリーミング音声の特定のサンプルレート、前記ストリーミング音声のビット深度、前記ストリーミング音声のビットレート、または前記ストリーミング音声の音声形式のうちの少なくとも1つを含む、請求項9に記載の方法。
【請求項11】
前記所与のハードウェア構成要素を使用して前記それぞれのストリーミング入力データに対して演算を実行することは、
前記ストリーミング入力データの各フレームについて:
前記フレームの入力ベクトルを、各々が前記入力ベクトルの重複しない値を含む前記フレームの入力ベクトルを複数の部分ベクトルにセグメント化することを含み、
前記複数の部分ベクトルの各部分ベクトルについて、
前記部分ベクトルを、各々がそれぞれの量の処理装置を有し、各処理装置は前記所与のハードウェアアーキテクチャの前記設計パラメータのセットの前記値に対応するそれぞれのサイズのハードウェア装置アレイを有する、複数のクラスタのうちのそれぞれのクラスタに割り当てることと、
前記部分ベクトルの各値とメモリに記憶される行列の部分行の対応する値とを前記それぞれのクラスタで乗算し、それぞれの部分和を生成することと、
前記それぞれの部分和をアキュムレータアレイに記憶することと、を含む、請求項1~10のいずれか一項に記載の方法。
【請求項12】
前記所与のハードウェア構成要素を使用して、前記所与のハードウェア構成要素の前記それぞれのストリーミング入力データに対して演算を実行することは、メモリに記憶される前記行列の疎レベルに基づいて前記演算を実行することを含む、請求項11に記載の方法。
【請求項13】
前記実行する演算は、密行列モードと疎行列モードとの間で切り替えられ、前記切り替えプロセスは、制御およびステータス(CSR)レジスタによって制御される、請求項1~12のいずれか一項に記載の方法。
【請求項14】
メモリに記憶される前記行列の前記部分行の前記対応する値を生成することが疎行列モードで実行されるとき、前記生成することは、
メモリに記憶される前記行列の前記部分行の非ゼロ値を決定することと、
前記行列内の前記部分行の前記非ゼロ値の位置を示す識別子を生成することと、を含み、前記識別子はインデックスまたはビットマップを含み、
対応する識別子に関連付けられる非ゼロ値の圧縮ベクトルを、前記行列の前記部分行の前記対応する値として生成することをさらに含む、請求項11に記載の方法。
【請求項15】
前記対応する識別子に基づいて、前記圧縮ベクトルに対応する前記部分ベクトルの値を選択することと、
前記部分ベクトルの前記選択される値の各々を、前記圧縮ベクトルの対応する非ゼロ値と乗算することと、をさらに含む、請求項14に記載の方法。
【請求項16】
前記所与のハードウェアアーキテクチャは、メモリに記憶される1つまたは複数の行列の上限疎レベルを示すデータを含み、前記所与のハードウェアアーキテクチャは、前記1つまたは複数の行列のうちの第1の行列とは異なる疎レベルを有する1つまたは複数の行列のうちの第2の行列を使用して前記ストリーミング入力データを処理するために動的に再インスタンス化されるように構成される、請求項1~15のいずれか一項に記載の方法。
【請求項17】
前記構成可能な設計パラメータのセットの前記検索空間に基づいて、前記ハードウェアアーキテクチャテンプレートを使用して前記複数の候補ハードウェアアーキテクチャを生成することは、ランダム検索アルゴリズム、網羅的検索アルゴリズム、または遺伝的アルゴリズムのうちの少なくとも1つを使用して、前記設計パラメータのセットの前記検索空間を探索することを含む、請求項1~16のいずれか一項に記載の方法。
【請求項18】
前記構成可能な設計パラメータのセットの前記検索空間を探索することは、
各処理装置内のハードウェア装置アレイの前記サイズおよびクラスタ内の処理装置の前記量に対応する設計パラメータ値を探索することと、
前記ハードウェア装置アレイの前記サイズおよび前記クラスタ内の処理装置の前記量に対応する前記設計パラメータ値が前記クラスタのスケーラビリティ限界にあることを決定することと、
これに応じて、クラスタの前記量に対応する設計パラメータ値を探索することと、を含む、請求項1~17のいずれか一項に記載の方法。
【請求項19】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに請求項1~請求項18のいずれか1項に記載のそれぞれの演算を実行させる命令を記憶するプログラム
【請求項20】
1つまたは複数のコンピュータと、1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに請求項1~請求項18のいずれか1項に記載のそれぞれの演算を実行させる命令を記憶する1つまたは複数の記憶デバイスと、を含む、システム。
【国際調査報告】