(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-11
(45)【発行日】2024-11-19
(54)【発明の名称】再粒状化されたタイル実行のための統合されたプログラミングインタフェース
(51)【国際特許分類】
G06F 17/16 20060101AFI20241112BHJP
G06F 9/50 20060101ALI20241112BHJP
G06F 9/345 20180101ALI20241112BHJP
G06F 17/10 20060101ALI20241112BHJP
【FI】
G06F17/16 K
G06F9/50 150E
G06F9/345 Z
G06F17/10 A
G06F17/16 P
【外国語出願】
(21)【出願番号】P 2020150856
(22)【出願日】2020-09-08
【審査請求日】2023-09-04
(32)【優先日】2019-12-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】サラ バーソヒ
(72)【発明者】
【氏名】ムハンマド アール.ハギハト
【審査官】坂東 博司
(56)【参考文献】
【文献】国際公開第2019/211226(WO,A1)
【文献】特開2019-197445(JP,A)
【文献】特開2018-106591(JP,A)
【文献】Minjie Wang, Chien-chinHuang, Jinyang Li,Supporting Very Large Models using Automatic Dataflow Graph Partitioning,EuroSys '19: Proceedings of the Fourteenth EuroSys Conference 2019,EuroSys,2019年03月25日,pp.1-17,[online],[令和6年9月18日検索],インターネット <URL:https://dl.acm.org/doi/pdf/10.1145/33024224.3303953 >
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/16
G06F 9/50
G06F 9/345
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
ネットワークコントローラと、
前記ネットワークコントローラに結合されたプロセッサと、
前記プロセッサに結合されたメモリと
を備える計算システムであって、
前記メモリは、前記プロセッサにより実行される場合、前記計算システムに、
アプリケーションにおけるテンソル演算を検出することであって、前記テンソル演算は、指定されていない入力テンソルサイズを有する、検出することと、
ランタイム時の前記入力テンソルサイズを決定することと、
前記入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいて前記テンソル演算の分割構成を選択することと
を実行させる、実行可能なプログラム命令のセットを有する、
計算システム。
【請求項2】
前記分割構成は、第1動作の行列形状の第1のセット、および第2の動作の行列形状の第2のセットを定義する、請求項1に記載の計算システム。
【請求項3】
前記分割構成はさらに、前記第1動作のハードウェアリソースの第1のセット、および前記第2の動作のハードウェアリソースの第2のセットを定義し、ハードウェアリソースの前記第1のセットとハードウェアリソースの前記第2のセットとは異なるタイプのリソースである、請求項2に記載の計算システム。
【請求項4】
前記1または複数のランタイム条件は、予想される消費電力、行列のスパース性またはハードウェアリソースの利用可能性のうち1または複数を含む、請求項1に記載の計算システム。
【請求項5】
前記分割構成を選択するために、前記実行可能なプログラム命令は、実行される場合、前記計算システムに、前記入力テンソルサイズと前記1または複数のランタイム条件のうち少なくとも1つとをルックアップテーブルで検索させる、請求項1に記載の計算システム。
【請求項6】
前記テンソル演算は、行列乗算演算、畳み込み演算、正規化演算、正規化線型単位演算または指数線型単位演算のうち1または複数を含む、請求項1から5のいずれか一項に記載の計算システム。
【請求項7】
1または複数の基板と、
前記1または複数の基板に結合されたロジックを備える半導体装置であって、
前記ロジックは、1または複数の構成可能ロジックまたは固定機能ハードウェアロジックで少なくとも部分的に実装され、
前記ロジックは前記1または複数の基板に結合されて、
アプリケーションにおけるテンソル演算を検出し、前記テンソル演算は、指定されていない入力テンソルサイズを有し、
ランタイム時の前記入力テンソルサイズを決定し、
前記入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいて前記テンソル演算の分割構成を選択する、
半導体装置。
【請求項8】
前記分割構成は、第1動作の行列形状の第1のセット、および第2の動作の行列形状の第2のセットを定義する、請求項7に記載の半導体装置。
【請求項9】
前記分割構成はさらに、前記第1動作のハードウェアリソースの第1のセット、および前記第2の動作のハードウェアリソースの第2のセットを定義し、ハードウェアリソースの前記第1のセットとハードウェアリソースの前記第2のセットとは異なるタイプのリソースである、請求項8に記載の半導体装置。
【請求項10】
前記1または複数のランタイム条件は、予想される消費電力、行列のスパース性またはハードウェアリソースの利用可能性のうち1または複数を含む、請求項7に記載の半導体装置。
【請求項11】
前記分割構成を選択するために、前記1または複数の基板に結合された前記ロジックは、前記入力テンソルサイズと前記1または複数のランタイム条件のうち少なくとも1つとをルックアップテーブルで検索する、請求項7に記載の半導体装置。
【請求項12】
前記テンソル演算は、行列乗算演算、畳み込み演算、正規化演算、正規化線型単位演算または指数線型単位演算のうち1または複数を含む、請求項7から11のいずれか一項に記載の半導体装置。
【請求項13】
計算システムに、
アプリケーションにおけるテンソル演算を検出することであって、前記テンソル演算は、指定されていない入力テンソルサイズを有する、検出することと、
ランタイム時の前記入力テンソルサイズを決定することと、
前記入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいて前記テンソル演算の分割構成を選択することと
を実行させる、
プログラム。
【請求項14】
前記分割構成は、第1動作の行列形状の第1のセット、および第2の動作の行列形状の第2のセットを定義する、請求項13に記載のプログラム。
【請求項15】
前記分割構成はさらに、前記第1動作のハードウェアリソースの第1のセット、および前記第2の動作のハードウェアリソースの第2のセットを定義し、ハードウェアリソースの前記第1のセットとハードウェアリソースの前記第2のセットとは異なるタイプのリソースである、請求項14に記載のプログラム。
【請求項16】
前記1または複数のランタイム条件は、予想される消費電力、行列のスパース性またはハードウェアリソースの利用可能性のうち1または複数を含む、請求項13に記載のプログラム。
【請求項17】
前記分割構成を選択するために、前記計算システムに、前記入力テンソルサイズと前記1または複数のランタイム条件のうち少なくとも1つとをルックアップテーブルで検索させる、請求項13に記載のプログラム。
【請求項18】
前記テンソル演算は、行列乗算演算、畳み込み演算、正規化演算、正規化線型単位演算または指数線型単位演算のうち1または複数を含む、請求項13から17のいずれか一項に記載のプログラム。
【請求項19】
請求項13から18のいずれか一項に記載のプログラムを格納する、コンピュータ可読記憶媒体。
【請求項20】
アプリケーションにおけるテンソル演算を検出する段階であって、前記テンソル演算は、指定されていない入力テンソルサイズを有する、検出する段階と、
ランタイム時の前記入力テンソルサイズを決定する段階と、
前記入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいて前記テンソル演算の分割構成を選択する段階とを備える、
方法。
【請求項21】
前記分割構成は、第1動作の行列形状の第1のセット、および第2の動作の行列形状の第2のセットを定義する、請求項20に記載の方法。
【請求項22】
前記分割構成はさらに、前記第1動作のハードウェアリソースの第1のセット、および前記第2の動作のハードウェアリソースの第2のセットを定義し、ハードウェアリソースの前記第1のセットとハードウェアリソースの前記第2のセットとは異なるタイプのリソースである、請求項21に記載の方法。
【請求項23】
前記1または複数のランタイム条件は、予想される消費電力、行列のスパース性またはハードウェアリソースの利用可能性のうち1または複数を含む、請求項20に記載の方法。
【請求項24】
前記分割構成を選択する段階は、前記入力テンソルサイズと前記1または複数のランタイム条件のうち少なくとも1つとをルックアップテーブルで検索する段階を含む、請求項20に記載の方法。
【請求項25】
前記テンソル演算は、行列乗算演算、畳み込み演算、正規化演算、正規化線型単位演算または指数線型単位演算のうち1または複数を含む、請求項20から24のいずれか一項に記載の方法。
【請求項26】
アプリケーションにおけるテンソル演算を検出する段階であって、前記テンソル演算は、指定されていない入力テンソルサイズを有する、検出する段階を実行する手段と、
ランタイム時の前記入力テンソルサイズを決定する段階を実行する手段と、
前記入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいて前記テンソル演算の分割構成を選択する段階を実行する手段とを備える、
半導体装置。
【請求項27】
前記分割構成は、第1動作の行列形状の第1のセット、および第2の動作の行列形状の第2のセットを定義する、請求項26に記載の半導体装置。
【請求項28】
前記分割構成はさらに、前記第1動作のハードウェアリソースの第1のセット、および前記第2の動作のハードウェアリソースの第2のセットを定義し、ハードウェアリソースの前記第1のセットとハードウェアリソースの前記第2のセットとは異なるタイプのリソースである、請求項27に記載の半導体装置。
【請求項29】
前記1または複数のランタイム条件は、予想される消費電力、行列のスパース性またはハードウェアリソースの利用可能性のうち1または複数を含む、請求項26に記載の半導体装置。
【請求項30】
前記分割構成を選択する段階を実行する前記手段は、前記入力テンソルサイズと前記1または複数のランタイム条件のうち少なくとも1つとをルックアップテーブルで検索することを実行する手段を含む、請求項26に記載の半導体装置。
【請求項31】
前記テンソル演算は、行列乗算演算、畳み込み演算、正規化演算、正規化線型単位演算または指数線型単位演算のうち1または複数を含む、請求項26から30のいずれか一項に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は概して、アプリケーションプログラミングインタフェース(API)に関する。より具体的には、実施形態は、再粒状化された(regrained)タイル実行のための統合されたプログラミングインタフェースに関する。
【背景技術】
【0002】
命令セットアーキテクチャ(ISA)は概して、データ処理、メモリ演算、算術演算、制御フロー演算などのプロセッサの動作に対してサポートされるデータの種類、レジスタ、およびハードウェアサポートを定義する。最近の人工知能(AI)における発展は、ISAの拡張がニューラルネットワークのトレーニングおよび推論演算をより明示的にサポートするという結果に繋がったかもしれない。したがって、ソフトウェアの開発者は、AIアプリケーションのコードをカスタマイズして、拡張されたISAによって促進された新たな計算機能のおよび加速された実行を利用し得る。しかしながら、コードのカスタマイズは、特に、異なるISAおよびプロセッサにわたってアプリケーションが配置されている場合に時間がかかり、高コストであり、非効率的であり得る。
【図面の簡単な説明】
【0003】
以下の明細書および添付の特許請求の範囲を読むことによって、且つ以下の図面を参照することによって、実施形態の様々な利点が当業者に明らかになる。
【0004】
【
図1】実施形態に係る、アプリケーションの配置の例のブロック図である。
【0005】
【
図2】実施形態に係る、性能強化計算システムを動作させる方法の例のフローチャートである。
【0006】
【
図3】実施形態に係る、分割構成の例のブロック図である。
【0007】
【
図4】実施形態に係る、行列の乗算演算のための分割構成の例の図である。
【0008】
【
図5】実施形態に係る、性能強化計算システムの例のブロック図である。
【0009】
【
図6】実施形態に係る、半導体装置の例の図である。
【0010】
【
図7】実施形態に係る、プロセッサの例のブロック図である。
【0011】
【
図8】実施形態に係る、マルチプロセッサベースの計算システムの例のブロック図である。
【発明を実施するための形態】
【0012】
図1を参照すると、配置シナリオ10が示されている。ここで、アプリケーション開発者12が、計算システム20(例えば、1または複数のプロセッサコアを含むバックエンドプラットフォーム、図示せず)を有する実行環境16に配置するためのアプリケーション14を生成する。アプリケーション14は、ニューラルネットワーク(例えば、畳み込みニューラルネットワーク/CNN、深層ニューラルネットワーク/DNNなど)のトレーニング(例えば、ネットワーク層の重みの反復選択)および/またはニューラルネットワークのリアルタイム動作(例えば、画像認識、自然言語処理/NLPなどに関する推論を引き出すため)を含み得る。実施形態において、アプリケーション14は、計算システム20にアクセス可能なフォルダに、アプリケーション14の構成設定の読み出しおよび書き込みを行うように設計されている、ポータブルアプリケーションである。
【0013】
示される例において、アプリケーション14は、1または複数の一般的なテンソル演算18(18a‐18b、例えば、行列乗算演算、畳み込み演算、正規化演算、正規化線形ユニット/relu演算、指数線形ユニット/elu演算、および/または、他の複合命令セットコンピュータ/CISC演算)を含む。一般に、テンソルは、ニューラルネットワークによる入力データの自動分類を容易にする多次元データアレイであり得る。テンソルの多次元的性質は一般的に、行列ベースの数学的演算の使用を要求する。ここで、行列のサイズ(例えば、列および/または行の長さ)は変化する。アプリケーション開発者12によりアプリケーション14が作成される場合に入力テンソルサイズを指定することは不可能な場合がある。
【0014】
それに応じて、示されるテンソル演算18は、アプリケーション14がアプリケーション開発者12により作成される場合に、指定されていないテンソル入力サイズを有する。むしろ、計算システム20は、ランタイム時(例えば、ニューラルネットワークのトレーニングおよび/または推論の間)にテンソル演算18のテンソル入力サイズ22(例えば、入力された列および/または行の長さ)を決定し得る。実施形態において、計算システム20はまた、1または複数のランタイム条件24(例えば、予想される消費電力、行列のスパース性、ハードウェアリソースの利用可能性など)を決定し、テンソル入力サイズ22に基づいてテンソル演算18の分割構成26を選択する。
【0015】
1つの例において、分割構成26は、第1のテンソル演算18a行列形状の第1のセット(例えば、「タイル」の列および幅の組み合わせ)および第2テンソル演算18bの行列形状の第2のセットを定義する。分割構成26はまた、第1のテンソル演算18aのハードウェアリソースの第1のセット(例えば、計算コアプール)および第2テンソル演算18bのハードウェアリソースの第2のセットを定義し得る。ここで、ハードウェアリソースの第1のセットとハードウェアリソースの第2のセットとは、異なるタイプのハードウェアリソースである。例えば、ハードウェアリソースの第1のセットは、スカラコアを含む比較的軽量の(例えば、「軽い」)計算コアプールであり得る。一方、ハードウェアリソースの第2のセットは、比較的重い計算コアプールであり得る。計算システム20は、分割構成26を使用して、アプリケーション14から、出力28(例えば、ランタイムテンソルサイズと利用可能な計算リソースとに基づいて、トレーニングまたは推論を実行する最適化コードなど)を生成し得る。
【0016】
したがって、示される解決手段は、アプリケーション開発者12の観点から、時間的コストがより低く、より安価であり、より効率的である。実際、最適化および変形が、アプリケーション開発者12によって特定のテンソルサイズまたはテンソルコアに静的に結び付けられていないので、同じアプリケーション14は、異なるISAおよびプロセッサにわたってはるかに容易に配置され得る。さらに、分割構成26が生成される場合のランタイム条件24を考慮することにより、性能が向上される。例えば、行列のスパース性(例えば、行列におけるゼロ値の分散)についての知識を利用することは、比較的軽い計算コアプールおよび/または演算のための異なる浮動小数点フォーマットを選択することを可能にし得る。
【0017】
図2は、性能強化計算システムを動作させる方法30を示す。方法30は、一組のロジック命令として1または複数のモジュールに実装されてよい。当該ロジック命令は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、プログラマブルROM(PROM)、ファームウェア、フラッシュメモリなどといった機械可読またはコンピュータ可読記憶媒体に、例えばプログラマブルロジックアレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)などの構成可能ロジックに、例えば特定用途向け集積回路(ASIC)、相補型金属酸化膜半導体(CMOS)技術もしくはトランジスタ-トランジスタロジック(TTL)技術、またはそれらの任意の組み合わせなどの回路技術を使用する機能固定型ロジックハードウェアに格納される。
【0018】
例えば、方法30に示す演算を実行するコンピュータプログラムコードは、1または複数のプログラミング言語の任意の組み合わせで記述されてよい。当該1または複数のプログラミング言語は、Java(登録商標)、Smalltalk、またはC++などのオブジェクト指向プログラミング言語、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む。さらに、ロジック命令は、アセンブラ命令、ISA命令、機械命令、機械依存命令、マイクロコード、状態設定データ、統合回路の構成データ、電子回路をパーソナライズする状態情報、および/または、ハードウェア(例えば、ホストプロセッサ、中央処理装置/CPU、マイクロコントローラなど)固有の他の構造コンポーネントを含み得る。
【0019】
示される処理ブロック32は、アプリケーションにおけるテンソル演算を検出し、ここで、テンソル演算は、指定されていない入力テンソルサイズを有する。実施形態において、テンソル演算は一般的であり、行列乗算演算(例えば、matmul)、畳み込み演算(例えば、conv2d、conv2d_transpose、conv3d)、正規化演算(例えば、l2_normalize)、正規化線型単位演算、指数線型単位演算など、または、それらの任意の組み合わせを含む。テンソル演算は、実行のためにアプリケーション14を解析および/またはコンパイルすることによって検出され得る。ブロック34では、ランタイム時の入力テンソルサイズを決定する。実施形態において、入力テンソルサイズは、ニューラルネットワークへの入力データ(例えば、入力画像、発話など)を分析すること、およびニューラルネットワークにおいて先行する層から出力されたデータを分析することなどによって決定される。
【0020】
入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいて、ブロック36におけるテンソル演算に対して分割構成が選択される。1つの例において、ランタイム条件は、予想される消費電力、行列のスパース性および/またはハードウェアリソースの利用可能性を含む。さらに、分割構成は、第1動作の行列形状の第1のセット(例えば、タイルサイズ)、第2の動作の行列形状の第2のセットなどを定義し得る。実施形態において、分割構成はさらに、第1動作のハードウェアリソースの第1のセット、第2の動作のハードウェアリソースの第2のセットなどを定義し、ここでハードウェアリソースの第1のセットとハードウェアリソースの第2のセットとは異なるタイプのリソースである。そのようなタイルサイズおよびリソース選択へのアプローチは、行列計算粒度がオンザフライで、且つリアルタイムで変更(例えば、再粒状化)されることを可能にする。
【0021】
ブロック36は、入力テンソルサイズとランタイム条件の少なくとも1つとをルックアップテーブルで検索することを含み得る。これに関して、各テンソル演算は、計算、メモリおよび通信パターンの観点で一般的によく理解されているので、オフラインチューニング/ベンチマークプロセスが、異なるテンソルサイズおよび利用可能なリソースのセットに対して最適に近いマッピングをキャプチャすることが可能であり得る。したがって、ランタイム時に、検出されたテンソルサイズおよび利用可能なテンソルコアの列挙に基づいて、テーブルルックアップは、ランタイムエンジンにより実行され、任意の最適化テンソルコア内の最適化コードの生成(例えば、最適なタイルサイズなど)とともに、最も最適な/最適に近い実行/分割プランを取得し得る。チューニングプロセスがオフラインで行われるとき、ランタイムスケジューリングオーバーヘッドは最少になり得る。
【0022】
したがって、示される方法30は、分割構成を生成する場合にランタイム条件を考慮することによって性能を向上させる、再粒状化されたタイル実行の解決手段を提供する。例えば、予想される消費電力についての知識を利用することは、テンソル演算をより電力効率の良いコアプールにマッピングすることを可能にし得る。示される方法30はまた、アプリケーション開発者の観点から、時間的コストがより低く、より安価であり、より効率的である。実際、同じアプリケーションは、特定のテンソル入力サイズに結び付けられた最適化がアプリケーション開発者によってアプリケーションに組み込まれていないので、異なるISAおよびプロセッサにわたっての配置をはるかに容易にし得る。
【0023】
図3は、統合された動的ディスパッチ42(例えば、「粒状化装置」)が計算粒状ポータブルアプリケーション44を受信する分割構成40を示す。動的ディスパッチ42は、例えば、ディスパッチ42がONEAPIなどの統合されたプログラミングモデルを使用して、異種ハードウェアリソースのセット(例えば、CPU、グラフィックス処理装置/GPU、FPGA、専用アクセラレータなど)にわたって実行するようにアプリケーション44を構成する程度まで「統合」されているとみなされ得る。実施形態において、ディスパッチ42は、ランタイム時にアプリケーション44の分割構成の選択を容易にするベンチマークデータを含むプリコンパイルプランルックアップテーブル46を含む。さらに、プリコンパイル粒状最適化ライブラリ(「libs」)48のセットは、例えば、ベクトル性能ライブラリ、16×16(例えば、16要素×16要素)の性能ライブラリ、32×32(例えば、32要素×32要素)性能ライブラリなどを含み得る。
【0024】
示される例において、分割構成は、スカラコア50(例えば、統合された軽い計算コアプールから選択される)、16wideベクトル計算レーン52(例えば、統合された重い計算ベクトルコアプールから選択される)、16×16テンソルコア54(例えば、統合された媒体計算2次元/2Dテンソルコアプールから選択される)、32×32テンソルコア56(例えば、統合された重い計算GPU/2Dテンソルコアプールから選択される)などの使用を定義/指定する。実施形態において、ディスパッチ42は、ランタイム時に、異種テンソルコアにおけるアプリケーション44の最適な実行のために、潜在的には協働実行のために、カスタマイズされたモジュール58(例えば、ベクトルモジュール、16×16モジュール、32×32モジュール)を生成する。
【0025】
図4は、活性化行列60(例えば、ニューラルネットワーク層の活性化を表す行列X)と重み行列62(例えば、活性化に適用される重みを表す行列W)との間の行列乗算(matmul)演算のための分割構成を示す。ここで、Y=X.Wである。特に、バッチサイズがより大きいトレーニングの間、活性化行列60を読み込むことは、コアのメモリ帯域幅に圧力をかけ得る。これは、重み行列62に関しても同様に当てはまってよい。生成されたオフラインチューニングプランに基づいて、ランタイムエンジンは、Xが52×32要素行列であり、Wが32×64要素行列であるX.W演算を、3つの部分に分割することを決定し得る。
【0026】
行列Xの0から31の行は、行列Wとともに、「負荷の重い」32×32計算要素テンソルコアによって読み取られる。タイルmatmul演算は、出力行列64の行0から31を生成するために、2回行われる。
【0027】
行列Xの行32から47および列0から31、ならびに行列Wの上半分は、16×16テンソルコアによって読み取られ、出力行列64の上半分の部分和を生成する。
【0028】
同時に、行列Xの行32から47および列32から63、ならびに行列Wの下半分は、別の16×16テンソルコアによって読み取られ、出力行列64の上半分の部分和を生成する。
【0029】
2つのコア間のリダクション段階の間、部分和のペアが追加され、出力行列64の行32から47の最終結果を生成する。
【0030】
4つの16wideベクトルユニットは、行列Xの最後の4つの行を読み込み、各ベクトルユニットは、行列Wの列の4分の1を処理する。各ベクトルユニットは、出力行列64の列の4分の1を生成し、行48から51に出力する。
【0031】
図5を参照すると、性能強化計算システム151が示されている。システム151は概して、計算機能(例えば、パーソナルデジタルアシスタント(PDA)、ノートブックコンピュータ、タブレットコンピュータ、コンバーチブル型タブレット、サーバ)、通信機能(例えば、スマートフォン)、撮像機能(例えば、カメラ、カムコーダ)、メディア再生機能(例えば、スマートテレビ(TV))、ウェアラブル機能(例えば、腕時計、眼鏡、帽子、靴、装身具)、車両機能(例えば、車、トラック、バイク)、ロボット機能(例えば、自律ロボット)など、またはそれらの任意の組み合わせを有する、電子デバイス/プラットフォームの一部であってよい。示される例において、システム151は、システムメモリ157に結合されている統合メモリコントローラ(IMC)155を有するホストプロセッサ153(例えば、複数のコアを有するCPU、図示せず)を含む。
【0032】
示されるシステム151はさらに、システムオンチップ(SoC)として半導体ダイ163上に、ホストプロセッサ153と共に実装される入力出力(IO)モジュール159と、グラフィックスプロセッサ161とを含む。示されているIOモジュール159は、例えば、ディスプレイ165(例えば、タッチスクリーン、液体水晶ディスプレイ/LCD、発光ダイオード/LEDディスプレイ)、ネットワークコントローラ167(例えば、有線および/または無線)、および大容量ストレージ169(例えば、ハードディスクドライブ/HDD、光ディスク、ソリッドステートドライブ/SSD、フラッシュメモリ)と通信する。
【0033】
実施形態において、ホストプロセッサ153、グラフィックスプロセッサ161および/またはIOモジュール159は、システムメモリ157および/または大容量ストレージ169から取得されたプログラム命令171を実行して、既に説明された方法30(
図2)の1または複数の態様を実行する。したがって、示される命令171の実行は、計算システム151に、アプリケーションにおけるテンソル演算を検出させ得る。ここでテンソル演算は、指定されていないテンソル入力サイズを有し、ランタイム時の入力テンソルサイズを決定し、入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいてテンソル演算の分割構成を選択する。実施形態において、分割構成は、第1動作の行列形状の第1のセット、および第2の動作の行列形状の第2のセットを定義する。また、分割構成は、第1動作のハードウェアリソースの第1のセット、および第2の動作のハードウェアリソースの第2のセットなどを定義し得、ここでハードウェアリソースの第1のセットとハードウェアリソースの第2のセットとは異なるタイプのリソースである。1つの例において、分割構成を選択するために、命令171は、実行させる場合、計算システム151に、入力テンソルサイズとランタイム条件の少なくとも1つとをルックアップテーブルで検索させる。
【0034】
したがって、示されるシステム151は、少なくとも分割構成を生成する場合にランタイム条件を考慮する、再粒状化されたタイル実行の解決手段を提供する程度まで性能強化されたとみなされる。例えば、予想されるハードウェアリソースの利用可能性についての知識を利用することは、実行時間を低減することを可能にし得る。また、示されるシステム151は、アプリケーションの開発時間を節約し、コストを低減し、効率性を向上させる。実際、同じアプリケーションは、特定のテンソル入力サイズまたは特定のテンソルコアに結び付けられた最適化がアプリケーション開発者によってアプリケーションに組み込まれていないので、異なるISAおよびプロセッサにわたっての配置をはるかに容易にし得る。
【0035】
図6は、半導体パッケージ装置173を示す。示される装置173は、1または複数の基板175(例えば、シリコン、サファイヤ、ヒ化ガリウム)と、1または複数の基板175に結合されたロジック177(例えば、トランジスタアレイおよび他の集積回路(IC)コンポーネント)とを含む。ロジック177は、少なくとも部分的に、構成可能ロジック、または機能固定型ロジックハードウェア内に実装されてよい。1つの例において、ロジック177は、既に説明された方法30(
図2)の1または複数の態様を実装する。したがって、ロジック177は、アプリケーションにおけるテンソル演算を検出し得る。ここで、テンソル演算は、指定されていないテンソル入力サイズを有し、ランタイム時の入力テンソルサイズを決定し、入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいてテンソル演算の分割構成を選択する。1つの例において、分割構成を選択するために、ロジック177は、入力テンソルサイズとランタイム条件の少なくとも1つとをルックアップテーブルで検索する。
【0036】
したがって、示される装置173は、少なくとも分割構成を生成する場合にランタイム条件を考慮する、再粒状化されたタイル実行の解決手段を提供する程度まで性能強化されたとみなされる。例えば、予想されるハードウェアリソースの利用可能性についての知識を利用することは、実行時間を低減することを可能にし得る。また、示される装置173は、アプリケーションの開発時間を節約し、コストを低減し、効率性を向上させる。実際、同じアプリケーションは、テンソル入力サイズがアプリケーション開発者によってアプリケーションに組み込まれていないので、異なるISAおよびプロセッサにわたっての配置をはるかに容易にし得る。
【0037】
1つの例では、ロジック177は、1または複数の基板175内に配置された(例えば、埋め込まれた)トランジスタチャネル領域を含む。したがって、ロジック177と、1または複数の基板175との間のインタフェースは、段階接合とならなくなり得る。ロジック177はさらに、1または複数の基板175の初期ウェハ上に成長するエピタキシャル層を含むとみなされ得る。
【0038】
図7は、一実施形態に係るプロセッサコア200を示す。プロセッサコア200は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、またはコードを実行する他のデバイスなどの任意の種類のプロセッサのコアであってよい。1つのプロセッサコア200だけが
図7において示されているが、処理要素は、
図7に示されたプロセッサコア200の1より多くのものを代替的に含んでよい。プロセッサコア200は、シングルスレッドコアであってよく、または、少なくとも1つの実施形態については、プロセッサコア200は、コアごとに1より多くのハードウェアスレッドコンテキスト(または、「論理プロセッサ」を含み得るという点で、マルチスレッドであってよい。
【0039】
図7はまた、プロセッサコア200に結合されたメモリ270を示す。メモリ270は、当業者にとって既知である、またはそうでなければ当業者が入手可能な(メモリ階層の様々な層を含む)多種多様なメモリのうち任意のものであってよい。メモリ270は、プロセッサコア200により実行される1または複数のコード213命令を含み得る。ここで、コード213は、既に説明された方法30(
図2)の1または複数の態様を実装し得る。プロセッサコア200は、コード213によって示される命令のプログラムシーケンスに従う。各命令は、フロントエンドポーション210に入り、1または複数のデコーダ220によって処理されてよい。デコーダ220は、その出力として、固定幅マイクロオペレーションなどのマイクロオペレーションを予め定義されたフォーマットで生成してよく、または、他の命令、マイクロ命令、または元のコード命令を反映する制御信号を生成してよい。示されるフロントエンドポーション210はまた、レジスタリネーミングロジック225およびスケジューリングロジック230を含む。それらは概して、リソースを割り当て、変換命令に対応する動作を実行のためにキューに入れる。
【0040】
プロセッサコア200は、実行ユニットのセット255‐1から255‐Nを有する実行ロジック250を含むよう示されている。いくつかの実施形態は、特定の機能または機能セット専用の複数の実行ユニットを含んでよい。他の実施形態は、1つの実行ユニットだけを含み得るか、または、特定の機能を実行できる1つの実行ユニットを含み得る。示される実行ロジック250は、コード命令によって指定される動作を実行する。
【0041】
コード命令によって指定される動作の実行完了後、バックエンドロジック260は、コード213の命令をリタイアさせる。一実施形態において、プロセッサコア200はアウトオブオーダ実行を許可するが、命令のインオーダリタイアメントを必要とする。リタイアメントロジック265は、当業者にとって既知の様々な形態(例えば、リオーダバッファなど)をとり得る。このように、プロセッサコア200は、少なくとも、デコーダによって生成される出力と、レジスタリネーミングロジック225によって利用されるハードウェアレジスタおよびテーブルと、実行ロジック250によって修正される任意レジスタ(図示せず)とに関して、コード213の実行中に変換される。
【0042】
図7には示されていないが、処理要素が、プロセッサコア200を有するチップ上に他の要素を含んでよい。例えば、処理要素が、プロセッサコア200とともにメモリ制御ロジックを含んでよい。処理要素は、I/O制御ロジックを含んでよく、および/または、メモリ制御ロジックと統合されたI/O制御ロジックを含んでよい。処理要素は、1または複数のキャッシュも含んでよい。
【0043】
ここで
図8を参照すると、一実施形態に係る計算システム1000の実施形態のブロック図が示されている。
図8に示されているのは、第1の処理要素1070および第2の処理要素1080を備えるマルチプロセッサシステム1000である。2つの処理要素1070および1080が示されているが、システム1000の一実施形態はまた、そのような処理要素を1つだけしか含まなくてもよいことが理解されるべきである。
【0044】
システム1000はポイントツーポイント相互接続システムとして示されている。ここで、第1の処理要素1070および第2の処理要素1080は、ポイントツーポイント相互接続1050を介して結合される。
図8に示される相互接続の任意のものまたは全てのものは、ポイントツーポイント相互接続ではなくマルチドロップバスとして実装されてよいことが理解されたい。
【0045】
図8に示されるように、処理要素1070および1080の各々は、第1のプロセッサコアおよび第2のプロセッサコア(すなわち、プロセッサコア1074aおよび1074b、ならびにプロセッサコア1084aおよび1084b)を含むマルチコアプロセッサであってよい。そのようなコア1074a、1074b、1084a、1084bは、
図7に関連して上記において説明されたものと同様の方式で命令コードを実行するよう構成されてよい。
【0046】
処理要素1070、1080はそれぞれ、少なくとも1つの共有キャッシュ1896a、1896bを含んでよい。共有キャッシュ1896aおよび1896bはそれぞれ、コア1074a、1074bおよび1084a、1084bなどの、プロセッサの1または複数のコンポーネントによって利用されるデータ(例えば、命令)を格納してよい。例えば、共有キャッシュ1896a、1896bは、プロセッサのコンポーネントがより高速にアクセスできるよう、メモリ1032、1034に格納されたデータをローカルにキャッシュしてよい。1または複数の実施形態において、共有キャッシュ1896a、1896bは、レベル2(L2)、レベル3(L3)、レベル4(L4)、または他のレベルのキャッシュなどの1または複数の中間レベルキャッシュ、最後レベルキャッシュ(LLC)、および/またはそれらの組み合わせを含んでよい。
【0047】
2つの処理要素1070、1080だけで示されているが、実施形態の範囲はそのように限定されるものではないことが理解されるべきである。他の実施形態において、1または複数の追加の処理要素が所与のプロセッサに存在してよい。代替的に、処理要素1070、1080のうち1または複数は、アクセラレータまたはフィールドプログラマブルゲートアレイなどの、プロセッサ以外の要素であってよい。例えば、1または複数の追加の処理要素は、第1のプロセッサ1070と同じ1または複数の追加のプロセッサ、第1のプロセッサ1070とは異種または非対称のプロセッサである1または複数の追加のプロセッサ、アクセラレータ(例えば、グラフィックスアクセラレータもしくはデジタル信号処理(DSP)ユニットなど)、フィールドプログラマブルゲートアレイ、または、任意の他の処理要素を含んでよい。アーキテクチャの特性、マイクロアーキテクチャの特性、熱特性、電力消費特性などを含む広範な価値基準に関して、処理要素1070と処理要素1080との間に様々な差異が存在し得る。これらの差異は、処理要素1070、1080間の非対称性および異種性として効果的に現れ得る。少なくとも1つの実施形態において、様々な処理要素1070、1080は、同一ダイパッケージに存在してよい。
【0048】
第1の処理要素1070はさらに、メモリコントローラロジック(MC)1072と、ポイントツーポイント(P-P)インタフェース1076および1078とを有してよい。同様に、第2の処理要素1080は、MC1082とP-Pインタフェース1086および1088とを含んでよい。
図8に示されるように、MC1072および1082は、プロセッサをそれぞれのメモリ、すなわち、メモリ1032とメモリ1034とに結合する。それらのメモリは、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部であってよい。MC1072および1082は処理要素1070および1080の中に統合されているものとして示されているが、代替の実施形態では、MCロジックは、処理要素1070、1080に統合されるのではなく、処理要素1070、1080の外部の別個のロジックであってよい。
【0049】
第1の処理要素1070および第2の処理要素1080は、それぞれP-P相互接続1076、1086を介してI/Oサブシステム1090に結合されてよい。
図8に示されるように、I/Oサブシステム1090は、P-Pインタフェース1094および1098を有する。さらに、I/Oサブシステム1090は、I/Oサブシステム1090を高性能グラフィックスエンジン1038と結合するインタフェース1092を有する。一実施形態において、グラフィックスエンジン1038をI/Oサブシステム1090に結合するためにバス1049が使用されてよい。代替的に、ポイントツーポイント相互接続がこれらのコンポーネントを結合してよい。
【0050】
同様に、インタフェース1096を介してI/Oサブシステム1090が第1のバス1016に結合されてよい。一実施形態において、第1のバス1016は、ペリフェラルコンポーネントインターコネクト(PCI)バス、またはPCIエクスプレスバスもしくは別の第3世代のI/O相互接続バスなどのバスであってよいが、本実施形態の範囲はそのように限定されるものではない。
【0051】
図8に示されるように、様々なI/Oデバイス1014(例えば、生体スキャナ、スピーカ、カメラ、センサ)がバスブリッジ1018とともに第1のバス1016に結合されてよい。バスブリッジ1018は、第1のバス1016を第2のバス1020に結合してよい。一実施形態において、第2のバス1020は、ローピンカウント(LPC)バスであってよい。一実施形態において、例えば、キーボード/マウス1012、1または複数の通信デバイス1026、およびコード1030を含み得るディスクドライブまたはその他の大容量ストレージデバイスなどのデータストレージユニット1019を含む、様々なデバイスが第2のバス1020に結合されてよい。示されるコード1030は、既に説明された方法30(
図2)の1または複数の態様を実装し得る。さらに、オーディオI/O1024が第2のバス1020に結合されてよく、バッテリ1010が計算システム1000に電力を供給してよい。
【0052】
他の実施形態が企図されることに留意されたい。例えば、
図8のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス、または別のそのような通信トポロジを実装してよい。また、
図8の要素は、代替的に、
図8に示されたものより多いまたはより少ない統合チップを使用して分割されてよい。
【0053】
追加の留意点および例
【0054】
例1は、ネットワークコントローラを含む性能強化計算システム、ネットワークコントローラに結合されたプロセッサ、およびプロセッサに結合されたメモリを含み、ここで、メモリは、プロセッサにより実行される場合、計算システムにアプリケーションにおけるテンソル演算を検出させる、実行可能なプログラム命令のセットを含み、ここで、テンソルアプリケーションは、指定されていない入力テンソルサイズを有し、ランタイム時の入力テンソルサイズを決定し、入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいてテンソル演算の分割構成を選択する。
【0055】
例2は、例1の計算システムを含み、ここで、分割構成は、第1動作の行列形状の第1のセット、および第2の動作の行列形状の第2のセットを定義する。
【0056】
例3は例2の計算システムを含み、ここで、分割構成はさらに、第1動作のハードウェアリソースの第1のセット、および第2の動作のハードウェアリソースの第2のセットを定義し、ここで、ハードウェアリソースの第1のセットとハードウェアリソースの第2のセットとは異なるタイプのリソースである。
【0057】
例4は例1の計算システムを含み、ここで、1または複数のランタイム条件は、予想される消費電力、行列のスパース性またはハードウェアリソースの利用可能性のうち1または複数を含む。
【0058】
例5は、例1の計算システムを含み、ここで、分割構成を選択するために、命令は、実行される場合、計算システムに、入力テンソルサイズと1または複数のランタイム条件のうち少なくとも1つとをルックアップテーブルで検索させる。
【0059】
例6は例1から例5のいずれか1つの計算システムを含み、ここで、テンソル演算は、行列乗算演算、畳み込み演算、正規化演算、正規化線型単位演算または指数線型単位演算のうち1または複数を含む。
【0060】
例7は、1または複数の基板を含む半導体装置、および1または複数の基板に結合されたロジックを含み、ここで、ロジックは、1または複数の構成可能ロジックまたは固定機能ハードウェアロジックで少なくとも部分的に実装され、ロジックは1または複数の基板に結合されてアプリケーションにおけるテンソル演算を検出し、ここで、テンソル演算は、指定されていない入力テンソルサイズを有し、ランタイム時の入力テンソルサイズを決定し、入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいてテンソル演算の分割構成を選択する。
【0061】
例8は、例7の半導体装置を含み、ここで、分割構成は、第1動作の行列形状の第1のセット、および第2の動作の行列形状の第2のセットを定義する。
【0062】
例9は例8の半導体装置を含み、ここで、分割構成はさらに、第1動作のハードウェアリソースの第1のセット、および第2の動作のハードウェアリソースの第2のセットを定義し、ここで、ハードウェアリソースの第1のセットとハードウェアリソースの第2のセットとは異なるタイプのリソースである。
【0063】
例10は例7の半導体装置を含み、ここで、1または複数のランタイム条件は、予想される消費電力、行列のスパース性またはハードウェアリソースの利用可能性のうち1または複数を含む。
【0064】
例11は例7の半導体装置を含み、ここで、分割構成を選択するために、1または複数の基板に結合されたロジックは、入力テンソルサイズと1または複数のランタイム条件のうち少なくとも1つとをルックアップテーブルで検索する。
【0065】
例12は例7から例11のいずれか1つの半導体装置を含み、ここで、テンソル演算は、行列乗算演算、畳み込み演算、正規化演算、正規化線型単位演算または指数線型単位演算のうち1または複数を含む。
【0066】
例13は、実行可能なプログラム命令のセットを含む少なくとも1つのコンピュータ可読記憶媒体を備え、当該実行可能なプログラム命令のセットは、計算システムにより実行される場合、計算システムに、アプリケーションにおけるテンソル演算を検出することであって、ここで、テンソル演算は、指定されていない入力テンソルサイズを有する、検出することと、ランタイム時の入力テンソルサイズを決定することと、入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいてテンソル演算の分割構成を選択することとを実行させる。
【0067】
例14は、例13の少なくとも1つのコンピュータ可読記憶媒体を含み、ここで、分割構成は、第1動作の行列形状の第1のセット、および第2の動作の行列形状の第2のセットを定義する。
【0068】
例15は例14の少なくとも1つのコンピュータ可読記憶媒体を含み、ここで、分割構成はさらに、第1動作のハードウェアリソースの第1のセット、および第2の動作のハードウェアリソースの第2のセットを定義し、ここで、ハードウェアリソースの第1のセットとハードウェアリソースの第2のセットとは異なるタイプのリソースである。
【0069】
例16は例13の少なくとも1つのコンピュータ可読記憶媒体を含み、ここで、1または複数のランタイム条件は、予想される消費電力、行列のスパース性またはハードウェアリソースの利用可能性のうち1または複数を含む。
【0070】
例17は、例13の少なくとも1つのコンピュータ可読記憶媒体を含み、ここで、分割構成を選択するために、命令は、実行される場合、計算システムに、入力テンソルサイズと1または複数のランタイム条件のうち少なくとも1つとをルックアップテーブルで検索させる。
【0071】
例18は例13から例17のいずれか1つの少なくとも1つのコンピュータ可読記憶媒体を含み、ここで、テンソル演算は、行列乗算演算、畳み込み演算、正規化演算、正規化線型単位演算または指数線型単位演算のうち1または複数を含む。
【0072】
例19は性能強化計算システムを動作させる方法を含み、方法は、アプリケーションにおけるテンソル演算を検出することであって、ここで、テンソル演算は、指定されていない入力テンソルサイズを有する、検出することと、ランタイム時の入力テンソルサイズを決定することと、入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいてテンソル演算の分割構成を選択することとを含む。
【0073】
例20は、例19の方法を含み、ここで、分割構成は、第1動作の行列形状の第1のセット、および第2の動作の行列形状の第2のセットを定義する。
【0074】
例21は例20の方法を含み、ここで、分割構成はさらに、第1動作のハードウェアリソースの第1のセット、および第2の動作のハードウェアリソースの第2のセットを定義し、ここで、ハードウェアリソースの第1のセットとハードウェアリソースの第2のセットとは異なるタイプのリソースである。
【0075】
例22は例19の方法を含み、ここで、1または複数のランタイム条件は、予想される消費電力、行列のスパース性またはハードウェアリソースの利用可能性のうち1または複数を含む。
【0076】
例23は例19の方法を含み、ここで、分割構成を選択することは、入力テンソルサイズと1または複数のランタイム条件のうち少なくとも1つとをルックアップテーブルで検索することを含む。
【0077】
例24は例19から例23のいずれか1つの方法を含み、ここで、テンソル演算は、行列乗算演算、畳み込み演算、正規化演算、正規化線型単位演算または指数線型単位演算のうち1または複数を含む。
【0078】
例25は例19から例24のいずれか1つの方法を実行する手段を含む。
【0079】
したがって、本明細書に説明される技術は、一般的なテンソル演算をターゲットとする統合されたプログラミングインタフェースと、利用可能な計算リソースに基づいて計算アーキテクチャを再粒状化するランタイム手順とを提供する。結果として、アプリケーションは、利用可能なテンソルコアに適切にマッピングされ、一度だけ書き込まれる。
【0080】
実施形態は、全ての種類の半導体集積回路(「IC」)チップでの使用に適用可能である。これらICチップの例としては、限定ではないが、プロセッサ、コントローラ、チップセットコンポーネント、プログラマブルロジックアレイ(PLA)、メモリチップ、ネットワークチップ、システムオンチップ(SoC)、SSD/NANDコントローラASICなどが含まれる。加えて、図面のうちのいくつかにおいて、信号線が線で表されている。このいくつかは、より多くの成分信号パスを示すべく異なっていてよく、複数の成分信号パスを示すべく数字のラベルを有してよく、および/または、情報の主な流れ方向を示すべく1または複数の終点に矢印を有してよい。しかしながら、このことは限定的に解釈されるべきではない。むしろ、かかる追加の詳細は、1または複数の例示的な実施形態に関連して使用され、回路の理解をより容易にし得るものである。追加の情報を有するか否かにかかわらず、示されたあらゆる信号線は実際には、移動方向が複数あり得る1または複数の信号を含んでよく、例えば、差動ペアで実装されるデジタル線またはアナログ線、光ファイバ線、および/または、シングルエンド線といったあらゆる好適な種類の信号方式で実装されてよい。
【0081】
例示的な大きさ/モデル/値/範囲が与えられている場合があるが、実施形態はそれに限定されるものではない。時間を経て製造技術(例えば、フォトリソグラフィ)が成熟するにつれ、より小型のデバイスが製造され得ることが予期される。加えて、例示および説明を簡潔にするために、および、実施形態の特定の態様を不明瞭にしないように、ICチップおよび他のコンポーネントへのよく知られた電源/グラウンド接続は、図中に示されていてもよく、または示されていなくてよい。さらに、実施形態を不明瞭にすることを回避すべく、構成は、ブロック図の形で示されてよく、また、かかるブロック図構成の実装に関する詳細は、実施形態が実装されるべき計算システムに大きく依存することに鑑みれば、すなわち、かかる詳細は、当業者の十分知見の範囲内である。例示的な実施形態を説明すべく、具体的な詳細(例えば、回路)が記載される場合、これらの具体的な詳細なしで、またはこれらの具体的な詳細の変形例によって、実施形態が実施され得ることが、当業者には、明らかである。したがって、詳細な説明は、限定的ではなく、例示的なものとしてみなされるべきである。
【0082】
「結合」という用語は、対象のコンポーネント間の任意の種類の直接的または間接的関係、を指すために本明細書において使用されてよく、電気的、機械的、流体的、光学的、電磁的、電子機械的、または他の接続に適用されてよい。加えて、「第1」、「第2」などの用語は、説明を容易にするためだけに本明細書において使用されてよく、別途記載がない限り、何ら特定の時間的または時系列的な意味を含まない。
【0083】
本願および特許請求の範囲において使用される「のうち1または複数」という用語によって結合される項目の列挙は、列挙された用語の任意の組み合わせを意味してよい。例えば、「A、B、またはCのうち1または複数」という文言は、A;B;C;AおよびB;AおよびC;BおよびC;またはA、B、およびCを意味してよい。
【0084】
当業者ならば、上述の説明から、実施形態の広範な技術が、様々な形態で実装され得ることを理解するであろう。したがって、実施形態はそれらの特定の例に関連して説明されてきたが、実施形態の真の範囲は、このように限定されるべきではない。なぜなら、図面、明細書、および以下の特許請求の範囲を精査すれば、当業者には他の修正形態が明らかになるからである。
[考えられる他の項目]
(項目1)
ネットワークコントローラと、
上記ネットワークコントローラに結合されたプロセッサと、
上記プロセッサに結合されたメモリと
を備える計算システムであって、
上記メモリは、上記プロセッサにより実行される場合、上記計算システムに
アプリケーションにおけるテンソル演算を検出させる、実行可能なプログラム命令のセットを含み、
上記テンソル演算は、
指定されていない入力テンソルサイズを有し、
ランタイム時の上記入力テンソルサイズを決定し、
上記入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいて上記テンソル演算の分割構成を選択する、
計算システム。
(項目2)
上記分割構成は、第1動作の行列形状の第1のセット、および第2の動作の行列形状の第2のセットを定義する、項目1に記載の計算システム。
(項目3)
上記分割構成はさらに、上記第1動作のハードウェアリソースの第1のセット、および上記第2の動作のハードウェアリソースの第2のセットを定義し、ここで、上記ハードウェアリソースの上記第1のセットと上記ハードウェアリソースの上記第2のセットとは異なるタイプのリソースである、項目2に記載の計算システム。
(項目4)
上記1または複数のランタイム条件は、予想される消費電力、行列のスパース性またはハードウェアリソースの利用可能性のうち1または複数を含む、項目1に記載の計算システム。
(項目5)
上記分割構成を選択するために、上記命令は、実行される場合、上記計算システムに、上記入力テンソルサイズと上記1または複数のランタイム条件のうち少なくとも1つとをルックアップテーブルで検索させる、項目1に記載の計算システム。
(項目6)
上記テンソル演算は、行列乗算演算、畳み込み演算、正規化演算、正規化線型単位演算または指数線型単位演算のうち1または複数を含む、項目1に記載の計算システム。
(項目7)
1または複数の基板と、
上記1または複数の基板に結合されたロジックを備える半導体装置であって、
上記ロジックは、1または複数の構成可能ロジックまたは固定機能ハードウェアロジックで少なくとも部分的に実装され、
上記ロジックは上記1または複数の基板に結合されて、
アプリケーションにおけるテンソル演算を検出し、上記テンソル演算は、指定されていない入力テンソルサイズを有し、
ランタイム時の上記入力テンソルサイズを決定し、
上記入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいて上記テンソル演算の分割構成を選択する、
半導体装置。
(項目8)
上記分割構成は、第1動作の行列形状の第1のセット、および第2の動作の行列形状の第2のセットを定義する、項目7に記載の半導体装置。
(項目9)
上記分割構成はさらに、上記第1動作のハードウェアリソースの第1のセット、および上記第2の動作の上記ハードウェアリソースの上記第2のセットを定義し、上記ハードウェアリソースの上記第1のセットとハードウェアリソースの第2のセットとは異なるタイプのリソースである。項目8に記載の半導体装置。
(項目10)
上記1または複数のランタイム条件は、予想される消費電力、行列のスパース性またはハードウェアリソースの利用可能性のうち1または複数を含む、項目7に記載の半導体装置。
(項目11)
上記分割構成を選択するために、上記1または複数の基板に結合された上記ロジックは、上記入力テンソルサイズと上記1または複数のランタイム条件のうち少なくとも1つとをルックアップテーブルで検索する、項目7に記載の半導体装置。
(項目12)
上記テンソル演算は、行列乗算演算、畳み込み演算、正規化演算、正規化線型単位演算または指数線型単位演算のうち1または複数を含む、項目7に記載の半導体装置。
(項目13)
実行可能なプログラム命令のセットを備える少なくとも1つのコンピュータ可読記憶媒体であって、上記実行可能なプログラム命令のセットは、計算システムにより実行される場合、上記計算システムに、
アプリケーションにおけるテンソル演算を検出することであって、上記テンソル演算は、指定されていない入力テンソルサイズを有する、検出することと、
ランタイム時の上記入力テンソルサイズを決定することと、
上記入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいて上記テンソル演算の分割構成を選択することと
を実行させる、少なくとも1つのコンピュータ可読記憶媒体。
(項目14)
上記分割構成は、第1動作の行列形状の第1のセット、および第2の動作の行列形状の第2のセットを定義する、項目13に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目15)
上記分割構成はさらに、上記第1動作のハードウェアリソースの第1のセット、および上記第2の動作の上記ハードウェアリソースの上記第2のセットを定義し、上記ハードウェアリソースの上記第1のセットとハードウェアリソースの第2のセットとは異なるタイプのリソースである。項目14に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目16)
上記1または複数のランタイム条件は、予想される消費電力、行列のスパース性またはハードウェアリソースの利用可能性のうち1または複数を含む、項目13に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目17)
上記分割構成を選択するために、上記命令は、実行される場合、上記計算システムに、上記入力テンソルサイズと上記1または複数のランタイム条件のうち少なくとも1つとをルックアップテーブルで検索させる、項目13に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目18)
上記テンソル演算は、行列乗算演算、畳み込み演算、正規化演算、正規化線型単位演算または指数線型単位演算のうち1または複数を含む、項目13に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目19)
アプリケーションにおけるテンソル演算を検出する段階であって、上記テンソル演算は、指定されていない入力テンソルサイズを有する、検出する段階と、
ランタイム時の上記入力テンソルサイズを決定する段階と、
上記入力テンソルサイズおよび1または複数のランタイム条件に少なくとも部分的に基づいて上記テンソル演算の分割構成を選択する段階とを備える、方法。
(項目20)
上記分割構成は、第1動作の行列形状の第1のセット、および第2の動作の行列形状の第2のセットを定義する、項目19に記載の方法。
(項目21)
上記分割構成はさらに、上記第1動作のハードウェアリソースの第1のセット、および上記第2の動作の上記ハードウェアリソースの上記第2のセットを定義し、上記ハードウェアリソースの上記第1のセットとハードウェアリソースの第2のセットとは異なるタイプのリソースである。項目20に記載の方法。
(項目22)
上記1または複数のランタイム条件は、予想される消費電力、行列のスパース性またはハードウェアリソースの利用可能性のうち1または複数を含む、項目19に記載の方法。
(項目23)
上記分割構成を選択する段階は、上記入力テンソルサイズと上記1または複数のランタイム条件のうち少なくとも1つとをルックアップテーブルで検索する段階を含む、項目19に記載の方法。
(項目24)
上記テンソル演算は、行列乗算演算、畳み込み演算、正規化演算、正規化線型単位演算または指数線型単位演算のうち1または複数を含む、項目19に記載の方法。