(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-08
(54)【発明の名称】機械学習ワークロードにおけるテンソルオブジェクトサポートのための方法および装置
(51)【国際特許分類】
G06F 12/02 20060101AFI20240201BHJP
G06F 12/00 20060101ALI20240201BHJP
G06F 17/16 20060101ALI20240201BHJP
【FI】
G06F12/02 580E
G06F12/00 592
G06F17/16 B
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023547669
(86)(22)【出願日】2022-01-12
(85)【翻訳文提出日】2023-08-07
(86)【国際出願番号】 US2022012166
(87)【国際公開番号】W WO2022173545
(87)【国際公開日】2022-08-18
(32)【優先日】2021-02-11
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】エリナ・カメネツカヤ
(72)【発明者】
【氏名】リアン・リ
(72)【発明者】
【氏名】アンドリュー・エヴァン・グルーバー
(72)【発明者】
【氏名】ジェフリー・レガー
(72)【発明者】
【氏名】バラジ・カリダス
(72)【発明者】
【氏名】ルイハオ・チャン
【テーマコード(参考)】
5B056
5B160
【Fターム(参考)】
5B056BB26
5B056DD12
5B056HH03
5B160GA10
(57)【要約】
本開示は、装置、たとえば、GPUを含む、グラフィックス処理のための方法およびデバイスに関する。装置は、1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正し得る。装置はまた、修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定し得る。さらに、装置は、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータにアクセスすることであって、1つまたは複数のテンソルオブジェクトの各々のためのデータが、少なくとも1つのデータ命令に対応する、ことを行い得る。装置はまた、1つまたは複数のテンソルオブジェクトに関連付けられた、アクセスされたデータに基づいて、少なくとも1つのデータ命令を実行し得る。
【特許請求の範囲】
【請求項1】
グラフィックス処理の方法であって、
1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正するステップと、
前記修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、前記1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定するステップと、
前記1つまたは複数のサポートされたメモリレイアウトに基づいて、前記1つまたは複数のテンソルオブジェクトに関連付けられたデータにアクセスするステップであって、前記1つまたは複数のテンソルオブジェクトの各々のための前記データが、少なくとも1つのデータ命令に対応する、ステップと、
前記1つまたは複数のテンソルオブジェクトに関連付けられた、前記アクセスされたデータに基づいて、前記少なくとも1つのデータ命令を実行するステップと
を含む方法。
【請求項2】
前記1つまたは複数のサポートされたメモリレイアウトに基づいて、前記1つまたは複数のテンソルオブジェクトに関連付けられた前記データを変換するステップ
をさらに含む、請求項1に記載の方法。
【請求項3】
前記少なくとも1つのテクスチャメモリオブジェクトを修正するステップが、前記1つまたは複数のテンソルオブジェクトのためのデータを並べ替えるステップ、または前記1つまたは複数のテンソルオブジェクトのためのデータをマッピングするステップのうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項4】
前記1つまたは複数のテンソルオブジェクトのための前記1つまたは複数のサポートされたメモリレイアウトを実装するステップ
をさらに含む、請求項1に記載の方法。
【請求項5】
前記1つまたは複数のサポートされたメモリレイアウトが、前記1つまたは複数のテンソルオブジェクトのための前記データ構造に対応する、請求項1に記載の方法。
【請求項6】
前記1つまたは複数のサポートされたメモリレイアウトが、前記1つまたは複数のテンソルオブジェクトのための1つまたは複数のパッキングタイプに関連付けられる、請求項1に記載の方法。
【請求項7】
前記1つまたは複数のテンソルオブジェクトに関連付けられた前記データのうちの少なくともいくつかを記憶するステップ
をさらに含む、請求項1に記載の方法。
【請求項8】
前記データのうちの前記少なくともいくつかが、1つまたは複数の汎用レジスタ(GPR)またはオンチップメモリに記憶される、請求項7に記載の方法。
【請求項9】
前記少なくとも1つのデータ命令を実行するステップが、1つまたは複数の演算を実行するステップを含み、
前記1つまたは複数の演算が、行列乗算演算または畳み込み演算のうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項10】
前記1つまたは複数のサポートされたメモリレイアウトが、少なくとも1つの次元に関連付けられ、
前記少なくとも1つの次元が、幅、高さ、特徴、またはバッチのうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項11】
前記少なくとも1つのデータ命令が、コードまたはシェーダコードに対応する、請求項1に記載の方法。
【請求項12】
前記1つまたは複数のテンソルオブジェクトに関連付けられた前記データが、前記データのための少なくとも1つの要求に基づいてアクセスされる、請求項1に記載の方法。
【請求項13】
前記少なくとも1つのテクスチャメモリオブジェクトが、2次元(2D)構造または3次元(3D)構造に対応し、
前記1つまたは複数のテンソルオブジェクトが、3次元(3D)構造または4次元(4D)構造に対応する、請求項1に記載の方法。
【請求項14】
前記1つまたは複数のテンソルオブジェクトに関連付けられた前記データが、シェーダプロセッサ(SP)またはテクスチャプロセッサ(TP)によってアクセスされる、請求項1に記載の方法。
【請求項15】
前記少なくとも1つのデータ命令が、機械学習アプリケーションまたはニューラルネットワーク(NN)に基づいて実行される、請求項1に記載の方法。
【請求項16】
グラフィックス処理のための装置であって、
メモリと、
前記メモリに結合された少なくとも1つのプロセッサと
を備え、前記少なくとも1つのプロセッサが、
1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正すること、
前記修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、前記1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定すること、
前記1つまたは複数のサポートされたメモリレイアウトに基づいて、前記1つまたは複数のテンソルオブジェクトに関連付けられたデータにアクセスすることであって、前記1つまたは複数のテンソルオブジェクトの各々のための前記データが、少なくとも1つのデータ命令に対応する、アクセスすること、および
前記1つまたは複数のテンソルオブジェクトに関連付けられた、前記アクセスされたデータに基づいて、前記少なくとも1つのデータ命令を実行すること
を行うように構成される、装置。
【請求項17】
前記少なくとも1つのプロセッサが、
前記1つまたは複数のサポートされたメモリレイアウトに基づいて、前記1つまたは複数のテンソルオブジェクトに関連付けられた前記データを変換すること
を行うようにさらに構成される、請求項16に記載の装置。
【請求項18】
前記少なくとも1つのテクスチャメモリオブジェクトを修正することが、前記1つまたは複数のテンソルオブジェクトのためのデータを並べ替えること、または前記1つまたは複数のテンソルオブジェクトのためのデータをマッピングすることのうちの少なくとも1つを含む、請求項16に記載の装置。
【請求項19】
前記少なくとも1つのプロセッサが、
前記1つまたは複数のテンソルオブジェクトのための前記1つまたは複数のサポートされたメモリレイアウトを実装すること
を行うようにさらに構成される、請求項16に記載の装置。
【請求項20】
前記1つまたは複数のサポートされたメモリレイアウトが、前記1つまたは複数のテンソルオブジェクトのための前記データ構造に対応する、請求項16に記載の装置。
【請求項21】
前記1つまたは複数のサポートされたメモリレイアウトが、前記1つまたは複数のテンソルオブジェクトのための1つまたは複数のパッキングタイプに関連付けられる、請求項16に記載の装置。
【請求項22】
前記少なくとも1つのプロセッサが、
前記1つまたは複数のテンソルオブジェクトに関連付けられた前記データのうちの少なくともいくつかを記憶すること
を行うようにさらに構成される、請求項16に記載の装置。
【請求項23】
前記データのうちの前記少なくともいくつかが、1つまたは複数の汎用レジスタ(GPR)またはオンチップメモリに記憶される、請求項22に記載の装置。
【請求項24】
前記少なくとも1つのデータ命令を実行することが、1つまたは複数の演算を実行するように構成された前記少なくとも1つのプロセッサを含み、
前記1つまたは複数の演算が、行列乗算演算または畳み込み演算のうちの少なくとも1つを含む、請求項16に記載の装置。
【請求項25】
前記1つまたは複数のサポートされたメモリレイアウトが、少なくとも1つの次元に関連付けられ、
前記少なくとも1つの次元が、幅、高さ、特徴、またはバッチのうちの少なくとも1つを含む、請求項16に記載の装置。
【請求項26】
前記少なくとも1つのデータ命令が、コードまたはシェーダコードに対応する、請求項16に記載の装置。
【請求項27】
前記1つまたは複数のテンソルオブジェクトに関連付けられた前記データが、前記データのための少なくとも1つの要求に基づいてアクセスされる、請求項16に記載の装置。
【請求項28】
前記少なくとも1つのテクスチャメモリオブジェクトが、2次元(2D)構造または3次元(3D)構造に対応し、
前記1つまたは複数のテンソルオブジェクトが、3次元(3D)構造または4次元(4D)構造に対応する、請求項16に記載の装置。
【請求項29】
前記1つまたは複数のテンソルオブジェクトに関連付けられた前記データが、シェーダプロセッサ(SP)またはテクスチャプロセッサ(TP)によってアクセスされる、請求項16に記載の装置。
【請求項30】
前記少なくとも1つのデータ命令が、機械学習アプリケーションまたはニューラルネットワーク(NN)に基づいて実行される、請求項16に記載の装置。
【請求項31】
グラフィックス処理のための装置であって、
1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正するための手段と、
前記修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、前記1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定するための手段と、
前記1つまたは複数のサポートされたメモリレイアウトに基づいて、前記1つまたは複数のテンソルオブジェクトに関連付けられたデータにアクセスするための手段であって、前記1つまたは複数のテンソルオブジェクトの各々のための前記データが、少なくとも1つのデータ命令に対応する、手段と、
前記1つまたは複数のテンソルオブジェクトに関連付けられた、前記アクセスされたデータに基づいて、前記少なくとも1つのデータ命令を実行するための手段と
を備える装置。
【請求項32】
グラフィックス処理のためのコンピュータ実行可能コードを記憶するコンピュータ可読媒体であって、前記コンピュータ実行可能コードが、プロセッサによって実行されると、前記プロセッサに、
1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正すること、
前記修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、前記1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定すること、
前記1つまたは複数のサポートされたメモリレイアウトに基づいて、前記1つまたは複数のテンソルオブジェクトに関連付けられたデータにアクセスすることであって、前記1つまたは複数のテンソルオブジェクトの各々のための前記データが、少なくとも1つのデータ命令に対応する、アクセスすること、および
前記1つまたは複数のテンソルオブジェクトに関連付けられた、前記アクセスされたデータに基づいて、前記少なくとも1つのデータ命令を実行すること
を行わせる、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、その全体が参照により本明細書に明確に組み込まれる、2021年2月11日に出願された、「METHODS AND APPARATUS FOR TENSOR OBJECT SUPPORT IN MACHINE LEARNING WORKLOADS」と題する米国特許出願第17/173,643号の利益を主張する。
【0002】
本開示は、一般に処理システムに関し、より詳細には、グラフィックス処理のための1つまたは複数の技法に関する。
【背景技術】
【0003】
コンピューティングデバイスは、多くの場合、視覚コンテンツをレンダリングおよび表示するために、(たとえば、グラフィックス処理ユニット(GPU)、中央処理ユニット(CPU)、ディスプレイプロセッサなどを利用して)グラフィックスおよび/またはディスプレイ処理を実行する。そのようなコンピューティングデバイスは、たとえば、コンピュータワークステーション、スマートフォンなどのモバイルフォン、埋込みシステム、パーソナルコンピュータ、タブレットコンピュータ、およびビデオゲームコンソールを含み得る。GPUは、グラフィックス処理コマンドを実行し、フレームを出力するために一緒に動作する、1つまたは複数の処理段階を含むグラフィックス処理パイプラインを実行するように構成される。中央処理ユニット(CPU)は、GPUに1つまたは複数のグラフィックス処理コマンドを出すことによって、GPUの動作を制御し得る。現代のCPUは、通常、複数のアプリケーションを同時に実行することが可能であり、その各々は、実行中にGPUを利用する必要があり得る。ディスプレイプロセッサは、CPUから受信されたデジタル情報をアナログ値に変換するように構成され、視覚コンテンツを表示するためのディスプレイパネルにコマンドを出し得る。ディスプレイ上の視覚的提示のためのコンテンツを提供するデバイスは、GPUおよび/またはディスプレイプロセッサを利用し得る。
【0004】
デバイスのGPUは、グラフィックス処理パイプラインにおいてプロセスを実行するように構成され得る。さらに、ディスプレイプロセッサまたはディスプレイ処理ユニット(DPU)は、ディスプレイ処理のプロセスを実行するように構成され得る。しかしながら、ワイヤレス通信およびより小型のハンドヘルドデバイスの出現で、向上したグラフィックスまたはディスプレイ処理の必要が高まっている。
【発明の概要】
【課題を解決するための手段】
【0005】
以下は、そのような態様の基本的理解を可能にするために、1つまたは複数の態様の簡略化された概要を提示する。本概要は、すべての企図される態様の広範な概説ではなく、すべての態様の重要なまたは重大な要素を識別するものでもなく、いずれかまたはすべての態様の範囲を定めるものでもない。その唯一の目的は、後で提示されるより詳細な説明の前置きとして、1つまたは複数の態様のいくつかの概念を簡略化された形で提示することである。
【0006】
本開示の一態様では、方法、コンピュータ可読媒体、および装置が提供される。装置は、グラフィックス処理ユニット(GPU)、またはグラフィックス処理を実行することができる任意の装置であり得る。装置は、1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正し得る。装置はまた、修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定し得る。装置はまた、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータを変換し得る。さらに、装置は、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを実装し得る。装置はまた、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータにアクセスすることであって、1つまたは複数のテンソルオブジェクトの各々のためのデータが、少なくとも1つのデータ命令に対応する、ことを行い得る。その上、装置は、1つまたは複数のテンソルオブジェクトに関連付けられたデータのうちの少なくともいくつかを記憶し得る。装置はまた、1つまたは複数のテンソルオブジェクトに関連付けられた、アクセスされたデータに基づいて、少なくとも1つのデータ命令を実行し得る。
【0007】
本開示の1つまたは複数の例の詳細が、添付の図面および以下の説明に記載される。本開示の他の特徴、目的、および利点は、説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0008】
【
図1】本開示の1つまたは複数の技法による、例示的なコンテンツ生成システムを示すブロック図である。
【
図2】本開示の1つまたは複数の技法による、例示的なGPUを示す図である。
【
図3】本開示の1つまたは複数の技法による、グラフィックス処理のためのデータ記憶プロセスを示す図である。
【
図4A】本開示の1つまたは複数の技法による、グラフィックス処理のためのテンソルオブジェクトデータを示す図である。
【
図4B】本開示の1つまたは複数の技法による、グラフィックス処理のためのテンソルオブジェクトデータを示す図である。
【
図5A】本開示の1つまたは複数の技法による、グラフィックス処理のためのテンソルオブジェクトを示す図である。
【
図5B】本開示の1つまたは複数の技法による、グラフィックス処理のためのテンソルオブジェクトを示す図である。
【
図6】本開示の1つまたは複数の技法による、GPUとメモリとの間の例示的な通信を示す通信フロー図である。
【
図7】本開示の1つまたは複数の技法による、グラフィックス処理の例示的な方法のフローチャートである。
【発明を実施するための形態】
【0009】
グラフィックス処理のいくつかの態様では、テンソルオブジェクトからのデータを処理するとき、メモリに対応するデータレイアウトは、テクスチャオブジェクトのデータレイアウトに対応しないことがある。たとえば、メモリにおいてデータを効率的に消費するために、データが一定のフォーマットであることが有益であり得る。いくつかの事例では、テクスチャオブジェクトのためのデータフォーマットは、メモリのためのデータフォーマットに効率的に記憶されないことがある。既存のテクスチャオブジェクトを利用して、メモリデータを記憶するために、正常な記憶を可能にするためにデータが変換される場合、有益であり得る。次元/データパッキングおよびデータインターリービングのいくつかの手法は、いくつかの制限を有し得る。これらの制限の各々は、GPUにおいて性能を低減し、かつ/または電力を無駄にし得る、追加のシェーダ命令を生じ得る。本開示の態様は、GPUにおけるシェーダ命令の量を低減または最適化することができる、次元/データパッキングおよびデータインターリービングを提供し得る。たとえば、本開示の態様は、次元またはメモリ効率パッキングを組み合わせるための考慮などなしに、たとえば、シェーダコードの生の3Dまたは4D座標を使用して、直接的にシェーダコードの内部のテンソルオブジェクトアクセスを可能にし得る。さらに、本開示の態様は、正常な記憶を可能にするためにデータを変換することなどによって、既存のテクスチャオブジェクトを利用して、メモリデータを記憶し得る。たとえば、3Dまたは4Dオブジェクトを既存のテクスチャメモリオブジェクト上にマッピングまたは変換することによって、データがメモリに記憶されることが可能になり得る。
【0010】
システム、装置、コンピュータプログラム製品、および方法の様々な態様について、添付の図面を参照しながら以下でさらに十分に説明する。しかしながら、本開示は、多くの異なる形態で具現されてよく、本開示全体にわたって提示される任意の特定の構造または機能に限定されるものと解釈されるべきではない。むしろ、これらの態様は、本開示が周到で完全になり、本開示の範囲を当業者に十分に伝えるように提供される。本明細書の教示に基づいて、本開示の範囲が、本開示の他の態様とは無関係に実装されるにせよ、または本開示の他の態様と組み合わせて実装されるにせよ、本明細書で開示するシステム、装置、コンピュータプログラム製品、および方法の任意の態様を包含するものであることを、当業者は諒解されたい。たとえば、本明細書に記載する任意の数の態様を使用して、装置が実装されてもよく、または方法が実践されてもよい。加えて、本開示の範囲は、本明細書に記載する本開示の様々な態様に加えて、またはそれらの態様以外に、他の構造、機能、または構造および機能を使用して実践されるそのような装置または方法を包含するものとする。本明細書で開示する任意の態様は、請求項の1つまたは複数の要素によって具現され得る。
【0011】
様々な態様について本明細書で説明するが、これらの態様の多くの変形および置換が、本開示の範囲内に入る。本開示の態様のいくつかの潜在的な利益および利点が述べられるが、本開示の範囲は、特定の利益、使用、または目的に限定されるものではない。むしろ、本開示の態様は、異なるワイヤレス技術、システム構成、ネットワーク、および送信プロトコルに広く適用可能であるものであり、そのうちのいくつかが例として図および以下の説明において示される。詳細な説明および図面は、限定的ではなく、本開示の例示にすぎず、本開示の範囲は、添付の特許請求の範囲およびその均等物によって定義される。
【0012】
様々な装置および方法を参照しながら、いくつかの態様が提示される。これらの装置および方法は、以下の詳細な説明において説明され、様々なブロック、構成要素、回路、プロセス、アルゴリズムなど(「要素」と総称される)によって添付の図面に示される。これらの要素は、電子ハードウェア、コンピュータソフトウェア、またはそれらの任意の組合せを使用して実装され得る。そのような要素がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。
【0013】
例として、要素、または要素の任意の部分、または要素の任意の組合せは、1つまたは複数のプロセッサを含む「処理システム」(処理ユニットと呼ばれることもある)として実装され得る。プロセッサの例は、マイクロプロセッサ、マイクロコントローラ、グラフィックス処理ユニット(GPU)、汎用GPU(GPGPU)、中央処理ユニット(CPU)、アプリケーションプロセッサ、デジタル信号プロセッサ(DSP)、縮小命令セットコンピューティング(RISC)プロセッサ、システムオンチップ(SOC)、ベースバンドプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD)、状態機械、ゲート論理、ディスクリートハードウェア回路、および本開示全体にわたって説明する様々な機能を実行するように構成された他の好適なハードウェアを含む。処理システムの中の1つまたは複数のプロセッサは、ソフトウェアを実行し得る。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれ以外で呼ばれるかどうかにかかわらず、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェア構成要素、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行ファイル、実行スレッド、手順、関数などを意味するように広く解釈され得る。アプリケーションという用語は、ソフトウェアを指すことがある。本明細書で説明するように、1つまたは複数の技法は、アプリケーション、すなわち、ソフトウェアが1つまたは複数の機能を実行するように構成されることを指すことがある。そのような例では、アプリケーションは、メモリ、たとえば、プロセッサのオンチップメモリ、システムメモリ、または任意の他のメモリ上に記憶され得る。プロセッサなど、本明細書で説明するハードウェアは、アプリケーションを実行するように構成され得る。たとえば、アプリケーションについて、ハードウェアによって実行されると、ハードウェアに本明細書で説明する1つまたは複数の技法を実行させる、コードを含むものとして説明することがある。一例として、ハードウェアは、メモリからコードにアクセスし、メモリからアクセスされたコードを実行して、本明細書で説明する1つまたは複数の技法を実行し得る。いくつかの例では、構成要素が本開示において識別される。そのような例では、構成要素は、ハードウェア、ソフトウェア、またはそれらの組合せであり得る。構成要素は、別個の構成要素、または単一の構成要素の下位構成要素であり得る。
【0014】
したがって、本明細書で説明する1つまたは複数の例では、説明する機能は、ハードウェア、ソフトウェア、またはそれらの任意の組合せにおいて実装され得る。ソフトウェアにおいて実装される場合、機能は、コンピュータ可読媒体上に記憶され得るか、またはコンピュータ可読媒体上に1つもしくは複数の命令もしくはコードとして符号化され得る。コンピュータ可読媒体は、コンピュータ記憶媒体を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、電気的消去可能プログラマブルROM(EEPROM)、光ディスクストレージ、磁気ディスクストレージ、他の磁気記憶デバイス、上述のタイプのコンピュータ可読媒体の組合せ、または、コンピュータによってアクセスされ得る命令もしくはデータ構造の形態のコンピュータ実行可能コードを記憶するために使用され得る任意の他の媒体を備えることができる。
【0015】
概して、本開示は、単一のデバイスもしくは複数のデバイスにおいてグラフィックス処理パイプラインを有し、グラフィカルコンテンツのレンダリングを改善し、かつ/または処理ユニット、すなわち、GPUなど、本明細書で説明する1つもしくは複数の技法を実行するように構成された任意の処理ユニットの負荷を低減するための技法について説明する。たとえば、本開示は、グラフィックス処理を利用する任意のデバイスにおけるグラフィックス処理のための技法について説明する。他の例示的な利益について、本開示全体にわたって説明する。
【0016】
本明細書で使用する「コンテンツ」という用語の事例は、「グラフィカルコンテンツ」、「画像」を指すことがあり、その逆も同様である。このことは、それらの用語が形容詞として使用されているか、名詞として使用されているか、または他の品詞として使用されているかにかかわらず、当てはまる。いくつかの例では、本明細書で使用する「グラフィカルコンテンツ」という用語は、グラフィックス処理パイプラインの1つまたは複数のプロセスによって作り出されたコンテンツを指すことがある。いくつかの例では、本明細書で使用する「グラフィカルコンテンツ」という用語は、グラフィックス処理を実行するように構成された処理ユニットによって作り出されたコンテンツを指すことがある。いくつかの例では、本明細書で使用する「グラフィカルコンテンツ」という用語は、グラフィックス処理ユニットによって作り出されたコンテンツを指すことがある。
【0017】
いくつかの例では、本明細書で使用する「ディスプレイコンテンツ」という用語は、ディスプレイ処理を実行するように構成された処理ユニットによって生成されたコンテンツを指すことがある。いくつかの例では、本明細書で使用する「ディスプレイコンテンツ」という用語は、ディスプレイ処理ユニットによって生成されたコンテンツを指すことがある。グラフィカルコンテンツは、ディスプレイコンテンツになるように処理され得る。たとえば、グラフィックス処理ユニットは、フレームなどのグラフィカルコンテンツをバッファ(フレームバッファと呼ばれることがある)に出力し得る。ディスプレイ処理ユニットは、バッファから1つまたは複数のフレームなどのグラフィカルコンテンツを読み出し、それにおいて1つまたは複数のディスプレイ処理技法を実行して、ディスプレイコンテンツを生成し得る。たとえば、ディスプレイ処理ユニットは、フレームを生成するために、1つまたは複数のレンダリングされたレイヤ上で合成を実行するように構成され得る。別の例として、ディスプレイ処理ユニットは、2つ以上のレイヤを一緒に単一のフレームに合成、混合、またはさもなければ結合するように構成され得る。ディスプレイ処理ユニットは、フレームにおいてスケーリング、たとえば、アップスケーリングまたはダウンスケーリングを実行するように構成され得る。いくつかの例では、フレームはレイヤを指すことがある。他の例では、フレームは、フレームを形成するためにすでに一緒に混合されている、2つ以上のレイヤを指すことがあり、すなわち、フレームは、2つ以上のレイヤを含み、2つ以上のレイヤを含むフレームは、後で混合され得る。
【0018】
図1は、本開示の1つまたは複数の技法を実装するように構成された、例示的なコンテンツ生成システム100を示すブロック図である。コンテンツ生成システム100は、デバイス104を含む。デバイス104は、本明細書で説明する様々な機能を実行するための1つまたは複数の構成要素または回路を含み得る。いくつかの例では、デバイス104の1つまたは複数の構成要素は、SOCの構成要素であり得る。デバイス104は、本開示の1つまたは複数の技法を実行するように構成された1つまたは複数の構成要素を含み得る。図示の例では、デバイス104は、処理ユニット120と、コンテンツエンコーダ/デコーダ122と、システムメモリ124とを含み得る。いくつかの態様では、デバイス104は、いくつかの任意の構成要素、たとえば、通信インターフェース126と、トランシーバ132と、受信機128と、送信機130と、ディスプレイプロセッサ127と、1つまたは複数のディスプレイ131とを含み得る。ディスプレイ131への言及は、1つまたは複数のディスプレイ131を指すことがある。たとえば、ディスプレイ131は、単一のディスプレイまたは複数のディスプレイを含み得る。ディスプレイ131は、第1のディスプレイと第2のディスプレイとを含み得る。第1のディスプレイは左目ディスプレイであり得、第2のディスプレイは右目ディスプレイであり得る。いくつかの例では、第1および第2のディスプレイは、その上に提示するための異なるフレームを受信し得る。他の例では、第1および第2のディスプレイは、その上に提示するための同じフレームを受信し得る。さらなる例では、グラフィックス処理の結果は、デバイス上に表示されなくてもよく、たとえば、第1および第2のディスプレイは、その上に提示するためのいかなるフレームも受信しなくてもよい。代わりに、フレームまたはグラフィックス処理結果は、別のデバイスに転送され得る。いくつかの態様では、このことは、分割レンダリングと呼ばれることがある。
【0019】
処理ユニット120は、内部メモリ121を含み得る。処理ユニット120は、グラフィックス処理パイプライン107などにおいて、グラフィックス処理を実行するように構成され得る。コンテンツエンコーダ/デコーダ122は、内部メモリ123を含み得る。いくつかの例では、デバイス104は、1つまたは複数のディスプレイ131による提示の前に、処理ユニット120によって生成された1つまたは複数のフレームにおいて1つまたは複数のディスプレイ処理技法を実行するために、ディスプレイプロセッサ127などのディスプレイプロセッサを含み得る。ディスプレイプロセッサ127は、ディスプレイ処理を実行するように構成され得る。たとえば、ディスプレイプロセッサ127は、処理ユニット120によって生成された1つまたは複数のフレームにおいて1つまたは複数のディスプレイ処理技法を実行するように構成され得る。1つまたは複数のディスプレイ131は、ディスプレイプロセッサ127によって処理されたフレームを表示またはさもなければ提示するように構成され得る。いくつかの例では、1つまたは複数のディスプレイ131は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、プロジェクションディスプレイデバイス、拡張現実ディスプレイデバイス、仮想現実ディスプレイデバイス、ヘッドマウントディスプレイ、または任意の他のタイプのディスプレイデバイスのうちの1つまたは複数を含み得る。
【0020】
システムメモリ124など、処理ユニット120およびコンテンツエンコーダ/デコーダ122の外部のメモリは、処理ユニット120およびコンテンツエンコーダ/デコーダ122にとってアクセス可能であり得る。たとえば、処理ユニット120およびコンテンツエンコーダ/デコーダ122は、システムメモリ124などの外部メモリから読み出し、かつ/または外部メモリに書き込むように構成され得る。処理ユニット120およびコンテンツエンコーダ/デコーダ122は、バスを介してシステムメモリ124に通信可能に結合され得る。いくつかの例では、処理ユニット120およびコンテンツエンコーダ/デコーダ122は、バスまたは異なる接続を介して互いに通信可能に結合され得る。
【0021】
コンテンツエンコーダ/デコーダ122は、システムメモリ124および/または通信インターフェース126など、任意のソースからグラフィカルコンテンツを受信するように構成され得る。システムメモリ124は、受信された符号化または復号されたグラフィカルコンテンツを記憶するように構成され得る。コンテンツエンコーダ/デコーダ122は、たとえば、システムメモリ124および/または通信インターフェース126から、符号化されたピクセルデータの形式で、符号化または復号されたグラフィカルコンテンツを受信するように構成され得る。コンテンツエンコーダ/デコーダ122は、任意のグラフィカルコンテンツを符号化または復号するように構成され得る。
【0022】
内部メモリ121またはシステムメモリ124は、1つまたは複数の揮発性または不揮発性メモリまたは記憶デバイスを含み得る。いくつかの例では、内部メモリ121またはシステムメモリ124は、RAM、SRAM、DRAM、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、磁気データ媒体もしくは光記憶媒体、または任意の他のタイプのメモリを含み得る。
【0023】
内部メモリ121またはシステムメモリ124は、いくつかの例によれば、非一時的記憶媒体であり得る。「非一時的」という用語は、記憶媒体が搬送波または伝搬される信号において具現化されないことを示すことがある。しかしながら、「非一時的」という用語は、内部メモリ121もしくはシステムメモリ124が非可動であること、またはそのコンテンツが静的であることを意味するものと解釈されるべきではない。一例として、システムメモリ124は、デバイス104から取り外され、別のデバイスに移動され得る。別の例として、システムメモリ124は、デバイス104から取外し可能でないことがある。
【0024】
処理ユニット120は、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、汎用GPU(GPGPU)、またはグラフィックス処理を実行するように構成され得る任意の他の処理ユニットであり得る。いくつかの例では、処理ユニット120は、デバイス104のマザーボードに組み込まれ得る。いくつかの例では、処理ユニット120は、デバイス104のマザーボード内のポートにインストールされるグラフィックスカード上に存在し得るか、またはさもなければ、デバイス104と相互動作するように構成された周辺デバイス内に組み込まれ得る。処理ユニット120は、1つまたは複数のマイクロプロセッサ、GPU、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、算術論理ユニット(ALU)、デジタル信号プロセッサ(DSP)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、他の等価な集積論理回路もしくはディスクリート論理回路、またはそれらの任意の組合せなど、1つまたは複数のプロセッサを含み得る。技法が部分的にソフトウェアにおいて実装される場合、処理ユニット120は、好適な非一時的コンピュータ可読記憶媒体、たとえば、内部メモリ121にソフトウェアのための命令を記憶し得、本開示の技法を実行するために、1つまたは複数のプロセッサを使用して、ハードウェアにおいて命令を実行し得る。ハードウェア、ソフトウェア、ハードウェアおよびソフトウェアの組合せなどを含む、上記のいずれもが、1つまたは複数のプロセッサであると見なされ得る。
【0025】
コンテンツエンコーダ/デコーダ122は、コンテンツ復号を実行するように構成された任意の処理ユニットであり得る。いくつかの例では、コンテンツエンコーダ/デコーダ122は、デバイス104のマザーボードに組み込まれ得る。コンテンツエンコーダ/デコーダ122は、1つまたは複数のマイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、算術論理ユニット(ALU)、デジタル信号プロセッサ(DSP)、ビデオプロセッサ、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、他の等価な集積論理回路もしくはディスクリート論理回路、またはそれらの任意の組合せなど、1つまたは複数のプロセッサを含み得る。技法が部分的にソフトウェアにおいて実装される場合、コンテンツエンコーダ/デコーダ122は、好適な非一時的コンピュータ可読記憶媒体、たとえば、内部メモリ123にソフトウェアのための命令を記憶し得、本開示の技法を実行するために、1つまたは複数のプロセッサを使用して、ハードウェアにおいて命令を実行し得る。ハードウェア、ソフトウェア、ハードウェアおよびソフトウェアの組合せなどを含む、上記のいずれもが、1つまたは複数のプロセッサであると見なされ得る。
【0026】
いくつかの態様では、コンテンツ生成システム100は、任意の通信インターフェース126を含み得る。通信インターフェース126は、受信機128および送信機130を含み得る。受信機128は、デバイス104に関して本明細書で説明する任意の受信機能を実行するように構成され得る。さらに、受信機128は、別のデバイスから情報、たとえば、目もしくは頭位置情報、レンダリングコマンド、またはロケーション情報を受信するように構成され得る。送信機130は、デバイス104に関して本明細書で説明する任意の送信機能を実行するように構成され得る。たとえば、送信機130は、コンテンツのための要求を含み得る情報を、別のデバイスに送信するように構成され得る。受信機128および送信機130は、トランシーバ132に組み合わせられ得る。そのような例では、トランシーバ132は、デバイス104に関して本明細書で説明する任意の受信機能および/または送信機能を実行するように構成され得る。
【0027】
再び
図1を参照すると、いくつかの態様では、処理ユニット120は、1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正するように構成された、決定構成要素198を含み得る。決定構成要素198はまた、修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定するように構成され得る。決定構成要素198はまた、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータを変換するように構成され得る。決定構成要素198はまた、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを実装するように構成され得る。決定構成要素198はまた、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータにアクセスすることであって、1つまたは複数のテンソルオブジェクトの各々のためのデータが、少なくとも1つのデータ命令に対応する、ことを行うように構成され得る。決定構成要素198はまた、1つまたは複数のテンソルオブジェクトに関連付けられたデータのうちの少なくともいくつかを記憶するように構成され得る。決定構成要素198はまた、1つまたは複数のテンソルオブジェクトに関連付けられた、アクセスされたデータに基づいて、少なくとも1つのデータ命令を実行するように構成され得る。以下の説明は、グラフィックス処理に焦点を合わせることがあるが、本明細書で説明する概念は、他の同様の処理技法に適用可能であり得る。
【0028】
本明細書で説明するように、デバイス104などのデバイスは、本明細書で説明する1つまたは複数の技法を実行するように構成された、任意のデバイス、装置、またはシステムを指すことがある。たとえば、デバイスは、サーバ、基地局、ユーザ機器、クライアントデバイス、局、アクセスポイント、コンピュータ、たとえば、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、コンピュータワークステーション、もしくはメインフレームコンピュータ、最終製品、装置、電話、スマートフォン、サーバ、ビデオゲームプラットフォームもしくはコンソール、ハンドヘルドデバイス、たとえば、ポータブルビデオゲームデバイスもしくは携帯情報端末(PDA)、ウェアラブルコンピューティングデバイス、たとえば、スマートウォッチ、拡張現実デバイス、もしくは仮想現実デバイス、非ウェアラブルデバイス、ディスプレイもしくはディスプレイデバイス、テレビ、テレビセットトップボックス、中間ネットワークデバイス、デジタルメディアプレーヤ、ビデオストリーミングデバイス、コンテンツストリーミングデバイス、車載コンピュータ、任意のモバイルデバイス、グラフィカルコンテンツを生成するように構成された任意のデバイス、または本明細書で説明する1つもしくは複数の技法を実行するように構成された任意のデバイスであり得る。本明細書のプロセスは、特定の構成要素(たとえば、GPU)によって実行されるものとして説明され得るが、さらなる実施形態では、開示する実施形態に合わせて、他の構成要素(たとえば、CPU)を使用して実行され得る。
【0029】
GPUは、GPUパイプラインにおいて複数のタイプのデータまたはデータパケットを処理することができる。たとえば、いくつかの態様では、GPUは、2つのタイプのデータまたはデータパケット、たとえば、コンテキストレジスタパケットおよびドローコールデータを処理することができる。コンテキストレジスタパケットは、グラフィックスコンテキストがどのように処理されることになるかを調整することができる、グローバル状態情報、たとえば、グローバルレジスタに関する情報、シェーディングプログラム、または定数データのセットであり得る。たとえば、コンテキストレジスタパケットは、カラーフォーマットに関する情報を含み得る。コンテキストレジスタパケットのいくつかの態様では、どのワークロードがコンテキストレジスタに属するかを示すビットがあり得る。また、同時におよび/または並列に実行している複数の機能またはプログラミングもあり得る。たとえば、機能またはプログラミングは、ある動作、たとえば、カラーモードまたはカラーフォーマットを表すことができる。したがって、コンテキストレジスタは、GPUの複数の状態を定義することができる。
【0030】
コンテキスト状態は、個々の処理ユニットがどのように機能するか、たとえば、頂点フェッチャ(VFD)、頂点シェーダ(VS)、シェーダプロセッサ、もしくはジオメトリプロセッサ、および/または何のモードで処理ユニットが機能するかを決定するために利用され得る。そうするために、GPUは、コンテキストレジスタおよびプログラミングデータを使用することができる。いくつかの態様では、GPUは、モードまたは状態のコンテキストレジスタ定義に基づいて、パイプラインにおいてワークロード、たとえば、頂点またはピクセルワークロードを生成することができる。いくつかの処理ユニット、たとえば、VFDは、これらの状態を使用して、いくつかの機能、たとえば、頂点がどのようにアセンブルされるかを決定することができる。これらのモードまたは状態は変化し得るので、GPUは、対応するコンテキストを変更する必要があり得る。さらに、モードまたは状態に対応するワークロードは、変化するモードまたは状態に従い得る。
【0031】
図2は、本開示の1つまたは複数の技法による、例示的なGPU200を示す。
図2に示されているように、GPU200は、コマンドプロセッサ(CP)210と、ドローコールパケット212と、VFD220と、VS222と、頂点キャッシュ(VPC)224と、三角形セットアップエンジン(TSE:triangle setup engine)226と、ラスタライザ(RAS)228と、Zプロセスエンジン(ZPE)230と、ピクセル補間器(PI)232と、フラグメントシェーダ(FS)234と、レンダバックエンド(RB)236と、レベル2(L2)キャッシュ(UCHE)238と、システムメモリ240とを含む。
図2は、GPU200が処理ユニット220~238を含むことを表示しているが、GPU200は、いくつかの追加の処理ユニットを含み得る。さらに、処理ユニット220~238は、一例にすぎず、任意の組合せまたは順序の処理ユニットが、本開示に従ってGPUによって使用され得る。GPU200はまた、コマンドバッファ250と、コンテキストレジスタパケット260と、コンテキスト状態261とを含む。
【0032】
図2に示されているように、GPUは、CP、たとえば、CP210、またはハードウェアアクセラレータを利用して、コマンドバッファをコンテキストレジスタパケット、たとえば、コンテキストレジスタパケット260、および/またはドローコールデータパケット、たとえば、ドローコールパケット212にパースすることができる。次いで、CP210は、別個のパスを通して、GPUにおける処理ユニットまたはブロックに、コンテキストレジスタパケット260またはドローコールデータパケット212を送ることができる。さらに、コマンドバッファ250は、コンテキストレジスタおよびドローコールの異なる状態を交互にすることができる。たとえば、コマンドバッファは、以下のようにして構築され得、すなわち、コンテキストNのコンテキストレジスタ、コンテキストNのドローコール、コンテキストN+1のコンテキストレジスタ、およびコンテキストN+1のドローコールである。
【0033】
グラフィックス処理のいくつかの態様は、いくつかの異なるデータ構造、たとえば、テンソルオブジェクトまたはテンソルを利用し得る。テンソルオブジェクトは、機械学習アプリケーション、たとえば、ニューラルネットワーク(NN)またはディープニューラルネットワーク(DNN)において使用される、多次元データ構造を指す。テンソルオブジェクトは、元のデータ、事前トレーニングされた重み、またはニューラルネットワークレイヤの結果などのデータに対応し得る。テンソルオブジェクトは、任意のタイプの次元に関連付けられ得るが、典型的なDNNアプリケーションは、1次元(1D)、2次元(2D)、3次元(3D)、および/または4次元(4D)テンソルを使用する。
【0034】
図3は、グラフィックス処理のための例示的なデータ記憶プロセスを示す
図300である。
図3は、典型的なDNN畳み込みレイヤの入力として使用される、2つのタイプのテンソル、すなわち、「活性化」テンソル、たとえば、活性化テンソル310、および「重み」テンソル、たとえば、重みテンソル320の配列を示す。
図300はまた、UCHE330と、テクスチャパイプ(TP)332と、シェーダプロセッサ(SP)340と、汎用レジスタ(GPR)342と、定数メモリ344と、算術論理ユニット(ALU)346とを含む。
図3に示されているように、
図300における処理の出力は、別のテンソルオブジェクトであり得る。
図3における例では、入力活性化テンソル310は、その幅、高さ、および特徴数(すなわち、深度)によって表される3Dオブジェクトである。
図3にさらに示されているように、重みテンソル320は、3D重みの配列として表される、4Dオブジェクトに対応し得る。3D重みの各々は、等しい幅、高さ、および特徴数を有し得る。これらの事例では、個々の3D重みは、DNN用語において「バッチ」と呼ばれることがある。
【0035】
図3は、活性化テンソル310および重みテンソル320のためのデータがハードウェアによって消費されていること、すなわち、ハードウェアフローを示す。活性化テンソル310のための活性化データ、および重みテンソル320のための重みデータは、キャッシュ、たとえば、UCHE330によってロードされ、テクスチャパイプ、たとえば、TP332に送られ得る。次いで、活性化データは、汎用レジスタ、たとえば、GPR342、またはシェーダプロセッサ、たとえば、SP340の他のストレージに送られ得る。重みデータは、SP340における定数メモリ344にロードコマンドとして送られ得る。データがGPUのSP340にロードされると、GPUは、たとえば、ALU346を用いて、畳み込み演算または行列乗算など、いくつかの算術論理ユニット(ALU)演算を実行し得る。そのため、活性化データおよび重みデータは、SP340にロードされ得、次いで、いくつかのALU演算がデータ上で実行され得る。これらの演算の出力は、プロセスにおける別のステップのためのテンソルオブジェクトを出力するために処理され得る。
【0036】
グラフィックス処理のいくつかの態様では、いくつかの手法は、明示的テンソルオブジェクトアブストラクションレイヤを利用しないことがある。しかしながら、テクスチャメモリオブジェクトが、標準的な1D、2D、または3Dテクスチャメモリオブジェクトにマッピングされる場合、テンソルデータを記憶するために、テクスチャメモリオブジェクトを使用することが可能であり得る。さらに、畳み込みレイヤアルゴリズムの性質のために、3Dおよび4Dテンソルは、特殊なインターリーブまたはパックされたデータフォーマットを使用して、メモリにおいて表され得る。
【0037】
図4Aおよび
図4Bは、それぞれ、グラフィックス処理のためのテンソルオブジェクトデータを示す
図400および410である。より詳細には、
図4Aおよび
図4Bは、GPUにおいてメモリに記憶され得るテンソルオブジェクトデータを示す。
図4Aは、異なるデータパッキングフォーマット、たとえば、3Dパッキングタイプから2Dパッキングタイプを使用して、メモリにおいて表される3Dテンソルオブジェクトのためのデータを示す。
図4Aはまた、幅(W)、高さ(H)、および特徴(F)(たとえば、深度)を含む、実際の3Dテンソルオブジェクト次元を示す。
図4Aはまた、テクスチャメモリオブジェクト2D表現を示し、テクスチャメモリオブジェクト2D表現は、3Dオブジェクトからのデータを2D表現にパッキングすることに対応し得る。
図4Aに示されているように、テクスチャメモリオブジェクト2D表現は、係数4で幅を乗算すること、ならびに係数4で特徴を除算することなどによって、データをマッピングするように区分され得る。
【0038】
図4Bは、異なるデータパッキングフォーマット、たとえば、4Dテクスチャオブジェクトを2D配列にパッキングすることを使用して、メモリにおいて表される4Dテンソルオブジェクトのためのデータを示す。
図4Bはまた、4つの次元、たとえば、幅(W)、高さ(H)、特徴(F)(たとえば、深度)、およびバッチ(B)を含む、実際の4Dテンソルオブジェクトを示す。さらに、
図4Bは、データパッキング後のテクスチャメモリオブジェクト3D表現を示す。テクスチャメモリオブジェクト3D表現は、係数4で幅を乗算すること、ならびに係数4で特徴またはバッチを除算することなどによって、データをマッピングするように区分され得る。いくつかの態様では、
図4Bに示されているデータパッキングフォーマットは、4次元が利用可能でない場合に利用され得る。
【0039】
グラフィックス処理のいくつかの態様では、テンソルオブジェクトからのデータを処理するとき、メモリに対応するデータレイアウトは、テクスチャオブジェクトのデータレイアウトに対応しないことがある。たとえば、メモリにおいてデータを効率的に消費するために、データが一定のフォーマットであることが有益であり得る。いくつかの事例では、テクスチャオブジェクトのためのデータフォーマットは、メモリのためのデータフォーマットに効率的に記憶されないことがある。既存のテクスチャオブジェクトを利用して、メモリデータを記憶するために、正常な記憶を可能にするためにデータが変換される場合、有益であり得る。
【0040】
次元/データパッキングおよびデータインターリービングのいくつかの手法は、いくつかの制限を有し得る。たとえば、各3Dまたは4Dテンソル座標をその2Dまたは3D表現に下げるようにマッピングするために、特殊なアドレッシング計算が、シェーダプロセッサ(SP)において明示的に実行される必要があり得る。さらに、境界外(OOB)チェックが、シェーダプロセッサにおいて明示的に実行される必要があり得る。さらに、テクスチャプロセッサ(TP)は、複数のエッジモード条件チェッカーを含み得るが、複数の次元が単一の次元にパックされ得るので、これらの条件チェッカーが活用されないことがある。これらの制限の各々は、GPUにおいて性能を低減し、かつ/または電力を無駄にし得る、追加のシェーダ命令を生じ得る。したがって、GPUにおけるシェーダ命令の量を低減または最適化することができる、次元パッキングおよびデータインターリービングを提供することが有益であり得る。
【0041】
本開示の態様は、GPUにおけるシェーダ命令の量を低減または最適化することができる、次元/データパッキングおよびデータインターリービングを提供し得る。たとえば、本開示の態様は、次元またはメモリ効率パッキングを組み合わせるための考慮などなしに、たとえば、シェーダコードの生の3Dまたは4D座標を使用して、直接的にシェーダコードの内部のテンソルオブジェクトアクセスを可能にし得る。さらに、本開示の態様は、正常な記憶を可能にするためにデータを変換することなどによって、既存のテクスチャオブジェクトを利用して、メモリデータを記憶し得る。たとえば、3Dまたは4Dオブジェクトを既存のテクスチャメモリオブジェクト上にマッピングまたは変換することによって、データがメモリに記憶されることが可能になり得る。
【0042】
本開示のいくつかの態様では、テンソルオブジェクト構造は、既存のテクスチャメモリオブジェクトを使用して定義され得る。その上、テンソルオブジェクト構造は、既存のまたは追加のシェーダ命令を用いて、効率的にデータの読取りおよび書込みを行うために使用され得る。たとえば、これらの既存のまたは追加のシェーダ命令は、テクスチャパイプ(TP)を利用する命令であり得る。さらに、シェーダ命令は、GPR、ローカルメモリ、定数バッファ、またはグローバルメモリに出力するために、シェーダパイプ(SP)を使用する、LOAD/STORE命令であり得る。
【0043】
いくつかの事例では、テクスチャメモリオブジェクトのいくつかの制限を回避するために、本開示の態様は、テクスチャメモリオブジェクトがテンソルメモリオブジェクトのためのデータをサポートすることを可能にし得る。たとえば、テクスチャメモリオブジェクトは、テンソルオブジェクトをサポートするために使用され得る、4次元の追加を可能にし得る。したがって、本開示の態様は、いくつかのデータまたは次元が、テクスチャオブジェクトとテンソルオブジェクトの両方とともに利用されることを可能にし得る。そのため、テンソルオブジェクトとともに利用されるいくつかのメモリレイアウトはまた、テクスチャオブジェクトとともに利用され得る。
【0044】
いくつかの態様では、テクスチャメモリオブジェクトは、テンソルオブジェクトのためのデータ構造をサポートするために修正または調整され得る。たとえば、テクスチャメモリオブジェクト、たとえば、2Dオブジェクトまたはピクチャは、テンソルオブジェクト、たとえば、3Dまたは4Dオブジェクトのためのデータ構造をサポートするために調整または修正され得る。そのため、テクスチャメモリオブジェクトの能力は、テクスチャメモリオブジェクトを修正することなどによって、テンソルオブジェクトをサポートするように拡張され得る。したがって、本開示の態様は、テンソルオブジェクト構造が、既存のテクスチャメモリオブジェクトを使用して定義されることを可能にし得る。
【0045】
さらに、いくつかの態様では、たとえば、シェーダコードの生の3Dまたは4D座標を使用して、直接的にシェーダコードの内部のテンソルオブジェクトアクセスを可能にするために、本開示の態様は、いくつかの命令を実行し得る。たとえば、本開示の態様は、通常のテクスチャメモリオブジェクトとテンソルオブジェクトとの間の区別を可能にし得る、テクスチャメモリオブジェクト構造の修正を実行し得る。これによって、メモリ効率的なデータアクセスのためのサポートされたレイアウトおよび/またはパッキングタイプのリストの追加も可能になり得る。そのため、本開示の態様は、テクスチャメモリオブジェクトをテンソルオブジェクトとして設定またはラベリングし得る。したがって、テクスチャメモリオブジェクトは、1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために修正または調整され得る。
【0046】
本開示はまた、テクスチャメモリオブジェクトをテンソルオブジェクトとして設定またはラベリングすることに基づく、メモリアクセスに対応するレイアウトのリストを提供し得る。レイアウトおよびパッキングタイプのこのリストによって、本開示の態様がデータパッキングのために次元をマッピングすることが可能になり得る。たとえば、いくつかの事例では、テクスチャメモリオブジェクトは、あるモードが活性化される場合など、テンソルオブジェクトとして扱われ得る。したがって、あるモードが活性化される場合、テクスチャメモリオブジェクトは、テンソルオブジェクトに対応し得る。
【0047】
本開示の態様はまた、利用可能なオブジェクトサポート、たとえば、2D配列オブジェクトサポートに基づいて、いくつかの次元、たとえば、幅、高さ、および特徴次元におけるTP境界外(OOB)チェックの効率的な使用を可能にし得る。このOOBチェックは、データがアンパックされるという事実によるものであり得る。その上、本開示の態様は、異なるピクセルのようなフォーマット、たとえば、Vector4または赤緑青アルファ(RGBA:red green blue alpha)ピクセルのようなフォーマットを形成するために、ある量のスカラー値、たとえば、4つのスカラー値ごとのテンソルデータグループ化を可能にし得る。これらのピクセルのようなフォーマットは、コアレッシングされた読取りおよび書込みアクセスをTPおよびSPが可能にするために、ALUユニットによって活用され得る。
【0048】
図5Aおよび
図5Bは、それぞれ、本開示の1つまたは複数の技法による、グラフィックス処理のためのテンソルパッキングプロセスを示す
図500および550である。
図5Aおよび
図5Bは、
図5Aにおける元の3Dテンソル510で開始し、
図5Bにおけるパックされた3Dテンソル560において終了する、テンソルパッキングプロセスの一例を示す。
図5Aは、異なる次元、たとえば、幅、高さ、および特徴を含む、元の3Dテンソル510を示す。
図5Bは、異なる次元、たとえば、幅、高さ、および特徴を含む、パックされた3Dテンソル560を示す。
図5Bに示されているように、パックされた3Dテンソル560は、元の3Dテンソル510のいくつかの特徴を含み得る。さらに、
図5Bは、パックされたテンソル560のテクセル562、たとえば、単一のRGBAテクセルを示し、テクセル562は、元のテンソル510からのいくつかの特徴、たとえば、4つの特徴を保持することができる。たとえば、特徴次元は、ある数、たとえば、4によって除算され得、その理由は、テクセル562が、深度次元においてその数の特徴、たとえば、4つの特徴を有し得るからである。
【0049】
いくつかの態様では、
図5Bにおけるテクセル562は、
図5Aにおけるテンソル510における特徴または次元の各々のためのデータを含み得る。たとえば、いくつかの特徴、たとえば、4つの特徴がある場合、テクセル562は、これらの特徴の各々を含み得る。そうすることによって、GPUにおける異なるユニット、たとえば、ALUは、特徴の各々のための情報の処理を開始し得る。そのため、本開示の態様は、これらの特徴をハードウェア上にマッピングするために、複数の特徴を一緒にユニット、たとえば、ピクセルまたはテクセルにパックするために、ハードウェアフレンドリーなレイアウトを含み得る。したがって、本開示の態様は、GPUの効率を最適化または改善し得る。
【0050】
図5Aおよび
図5Bに示されているように、元のテンソルオブジェクトにおけるいくつかの特徴のためのデータは、メモリレイアウトまたはサポートされたメモリレイアウトに対応し得る。元のテンソルオブジェクトにおけるいくつかの次元、たとえば、幅、高さ、および/または特徴次元のためのデータは、パックされたテンソルオブジェクトにおける特定のユニット、たとえば、ピクセルまたはテクセルに対応し得る。パックされたテンソルオブジェクトにおける各ユニット、たとえば、ピクセルまたはテクセルは、各次元のためのデータを処理し得るので、データが次元ごとに処理されるようになる。したがって、元のテンソルオブジェクトにおける各次元のためのデータは、パックされたテンソルオブジェクトにおけるユニットごとに、たとえば、ピクセルまたはテクセルユニットごとに処理され得、データは、次元ごとに、パックされたテンソルオブジェクトにおける各ユニット内で処理され得る。
【0051】
図6は、本開示の1つまたは複数の技法による、グラフィックス処理の通信フロー
図600である。
図6に示されているように、
図600は、本開示の1つまたは複数の技法による、GPU602、たとえば、GPUにおけるシェーダプロセッサまたはテクスチャプロセッサと、メモリ604、たとえば、GPUにおけるメモリとの間の例示的な通信を含む。
【0052】
610において、GPU602は、1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正し得る。いくつかの態様では、少なくとも1つのテクスチャメモリオブジェクトを修正することは、1つもしくは複数のテンソルオブジェクトのためのデータを並べ替えること、または1つもしくは複数のテンソルオブジェクトのためのデータをマッピングすることのうちの少なくとも1つを含み得る。さらに、少なくとも1つのテクスチャメモリオブジェクトは、2次元(2D)構造または3次元(3D)構造に対応し得、1つまたは複数のテンソルオブジェクトは、3次元(3D)構造または4次元(4D)構造に対応し得る。
【0053】
620において、GPU602は、修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定し得る。1つまたは複数のサポートされたメモリレイアウトは、1つまたは複数のテンソルオブジェクトのためのデータ構造に対応し得る。また、1つまたは複数のサポートされたメモリレイアウトは、1つまたは複数のテンソルオブジェクトのための1つまたは複数のパッキングタイプに関連付けられ得る。さらに、1つまたは複数のサポートされたメモリレイアウトは、少なくとも1つの次元に関連付けられ得、少なくとも1つの次元が、幅、高さ、特徴、またはバッチのうちの少なくとも1つを含む。
【0054】
630において、GPU602は、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータ、たとえば、データ662を変換し得る。1つまたは複数のテンソルオブジェクトに関連付けられたデータ、たとえば、データ662は、シェーダプロセッサ(SP)またはテクスチャプロセッサ(TP)によってアクセスされ得る。
【0055】
640において、GPU602は、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを実装し得る。
【0056】
650において、GPU602は、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータ、たとえば、データ662にアクセスすることであって、1つまたは複数のテンソルオブジェクトの各々のためのデータが、少なくとも1つのデータ命令に対応する、ことを行い得る。1つまたは複数のテンソルオブジェクトに関連付けられたデータ、たとえば、データ662は、データのための少なくとも1つの要求に基づいてアクセスされ得る。
【0057】
660において、GPU602は、1つまたは複数のテンソルオブジェクトに関連付けられたデータ、たとえば、データ662のうちの少なくともいくつかを記憶し得る。いくつかの事例では、データ、たとえば、データ662のうちの少なくともいくつかは、1つまたは複数の汎用レジスタ(GPR)またはオンチップメモリに記憶され得る。
【0058】
670において、GPU602は、1つまたは複数のテンソルオブジェクトに関連付けられた、アクセスされたデータ、たとえば、データ662に基づいて、少なくとも1つのデータ命令を実行し得る。いくつかの態様では、少なくとも1つのデータ命令を実行することは、1つまたは複数の演算を実行することを含み得、そこで、1つまたは複数の演算が、行列乗算演算または畳み込み演算のうちの少なくとも1つを含み得る。少なくとも1つのデータ命令は、コードまたはシェーダコードに対応し得る。また、少なくとも1つのデータ命令は、機械学習アプリケーションまたはニューラルネットワーク(NN)に基づいて実行され得る。
【0059】
図7は、本開示の1つまたは複数の技法による、グラフィックス処理の例示的な方法のフローチャート700である。方法は、グラフィックス処理のための装置、GPUもしくは他のグラフィックスプロセッサ、シェーダプロセッサ、テクスチャプロセッサ、ワイヤレス通信デバイス、および/または
図1~
図6の例に関して使用されるようなグラフィックス処理を実行することができる任意の装置など、装置によって実行され得る。
【0060】
702において、装置は、
図1~
図6における例に関して説明したように、1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正し得る。たとえば、GPU602は、1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正し得る。さらに、処理ユニット120は、702を実行し得る。いくつかの態様では、
図1~
図6における例に関して説明したように、少なくとも1つのテクスチャメモリオブジェクトを修正することは、1つもしくは複数のテンソルオブジェクトのためのデータを並べ替えること、または1つもしくは複数のテンソルオブジェクトのためのデータをマッピングすることのうちの少なくとも1つを含み得る。さらに、
図1~
図6における例に関して説明したように、少なくとも1つのテクスチャメモリオブジェクトは、2次元(2D)構造または3次元(3D)構造に対応し得、1つまたは複数のテンソルオブジェクトは、3次元(3D)構造または4次元(4D)構造に対応し得る。
【0061】
704において、装置は、
図1~
図6における例に関して説明したように、修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定し得る。たとえば、GPU602は、修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定し得る。さらに、処理ユニット120は、704を実行し得る。1つまたは複数のサポートされたメモリレイアウトは、
図1~
図6における例に関して説明したように、1つまたは複数のテンソルオブジェクトのためのデータ構造に対応し得る。また、1つまたは複数のサポートされたメモリレイアウトは、
図1~
図6における例に関して説明したように、1つまたは複数のテンソルオブジェクトのための1つまたは複数のパッキングタイプに関連付けられ得る。さらに、1つまたは複数のサポートされたメモリレイアウトは、
図1~
図6における例に関して説明したように、少なくとも1つの次元に関連付けられ得、少なくとも1つの次元が、幅、高さ、特徴、またはバッチのうちの少なくとも1つを含む。
【0062】
706において、装置は、
図1~
図6における例に関して説明したように、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータを変換し得る。たとえば、GPU602は、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータを変換し得る。さらに、処理ユニット120は、706を実行し得る。1つまたは複数のテンソルオブジェクトに関連付けられたデータは、
図1~
図6における例に関して説明したように、シェーダプロセッサ(SP)またはテクスチャプロセッサ(TP)によってアクセスされる。
【0063】
708において、装置は、
図1~
図6における例に関して説明したように、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを実装し得る。たとえば、GPU602は、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを実装し得る。さらに、処理ユニット120は、708を実行し得る。
【0064】
710において、装置は、
図1~
図6における例に関して説明したように、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータにアクセスすることであって、1つまたは複数のテンソルオブジェクトの各々のためのデータが、少なくとも1つのデータ命令に対応する、ことを行い得る。たとえば、GPU602は、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータにアクセスし得る。さらに、処理ユニット120は、710を実行し得る。1つまたは複数のテンソルオブジェクトに関連付けられたデータは、
図1~
図6における例に関して説明したように、データのための少なくとも1つの要求に基づいてアクセスされ得る。
【0065】
712において、装置は、
図1~
図6における例に関して説明したように、1つまたは複数のテンソルオブジェクトに関連付けられたデータのうちの少なくともいくつかを記憶し得る。たとえば、GPU602は、1つまたは複数のテンソルオブジェクトに関連付けられたデータのうちの少なくともいくつかを記憶し得る。さらに、処理ユニット120は、712を実行し得る。いくつかの事例では、データのうちの少なくともいくつかは、
図1~
図6における例に関して説明したように、1つまたは複数の汎用レジスタ(GPR)またはオンチップメモリに記憶され得る。
【0066】
714において、装置は、
図1~
図6における例に関して説明したように、1つまたは複数のテンソルオブジェクトに関連付けられた、アクセスされたデータに基づいて、少なくとも1つのデータ命令を実行し得る。たとえば、GPU602は、1つまたは複数のテンソルオブジェクトに関連付けられた、アクセスされたデータに基づいて、少なくとも1つのデータ命令を実行し得る。さらに、処理ユニット120は、714を実行し得る。いくつかの態様では、少なくとも1つのデータ命令を実行することは、
図1~
図6における例に関して説明したように、1つまたは複数の演算を実行することを含み得、そこで、1つまたは複数の演算が、行列乗算演算または畳み込み演算のうちの少なくとも1つを含み得る。少なくとも1つのデータ命令は、
図1~
図6における例に関して説明したように、コードまたはシェーダコードに対応し得る。その上、少なくとも1つのデータ命令は、
図1~
図6における例に関して説明したように、機械学習アプリケーションまたはニューラルネットワーク(NN)に基づいて実行され得る。
【0067】
構成では、グラフィックス処理のための方法または装置が提供される。装置は、グラフィックス処理を実行することができるGPU、グラフィックスプロセッサ、または何らかの他のプロセッサであり得る。態様では、装置は、デバイス104内の処理ユニット120であり得るか、またはデバイス104もしくは別のデバイス内の何らかの他のハードウェアであり得る。装置は、1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正するための手段を含み得る。装置は、修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定するための手段をさらに含み得る。装置は、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータにアクセスするための手段であって、1つまたは複数のテンソルオブジェクトの各々のためのデータが、少なくとも1つのデータ命令に対応する、手段をさらに含み得る。装置は、1つまたは複数のテンソルオブジェクトに関連付けられた、アクセスされたデータに基づいて、少なくとも1つのデータ命令を実行するための手段をさらに含み得る。装置は、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータを変換するための手段をさらに含み得る。装置は、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを実装するための手段をさらに含み得る。装置は、1つまたは複数のテンソルオブジェクトに関連付けられたデータのうちの少なくともいくつかを記憶するための手段をさらに含み得る。
【0068】
本明細書で説明する主題は、1つまたは複数の利益または利点を実現するために実装され得る。たとえば、説明したグラフィックス処理技法は、本明細書で説明するデータパッキング技法を実装するために、グラフィックス処理を実行することができる、GPU、グラフィックスプロセッサ、または何らかの他のプロセッサによって使用され得る。このことはまた、他のグラフィックス処理技法と比較して、低コストで達成され得る。その上、本明細書のグラフィックス処理技法は、データ処理または実行を改善または加速させることができる。さらに、本明細書のグラフィックス処理技法は、リソースもしくはデータ利用、および/またはリソース効率を改善することができる。さらに、本開示の態様は、テンソルオブジェクトサポートを改善し、かつ/または性能オーバーヘッドを低減するために、データパッキングを利用することができる。
【0069】
開示するプロセス/フローチャートにおけるブロックの特定の順序または階層が、例示的な手法の例示であることを理解されたい。設計選好に基づいて、プロセス/フローチャートにおけるブロックの特定の順序または階層は、並べ替えられる場合があることを理解されたい。さらに、いくつかのブロックが組み合わせられてもよく、または省略されてもよい。添付の方法クレームは、様々なブロックの要素を例示的な順序で提示したものであり、提示された特定の順序または階層に限定されるものではない。
【0070】
上記の説明は、本明細書で説明した様々な態様を任意の当業者が実践することを可能にするように提供される。これらの態様に対する様々な修正は当業者には容易に明らかであり、本明細書で定義する一般原理は他の態様に適用され得る。したがって、特許請求の範囲は、本明細書に示す態様に限定されるものではなく、特許請求の範囲の文言と一致する全範囲が与えられるべきであり、単数形の要素への言及は、そのように明記されていない限り、「唯一無二の」ではなく、むしろ「1つまたは複数の」を意味するものとする。「例示的」という語は、「例、事例、または例示として機能すること」を意味するように本明細書で使用される。「例示的」として本明細書で説明するいかなる態様も、必ずしも他の態様よりも好ましいかまたは有利であると解釈されるべきではない。
【0071】
別段に明記されていない限り、「いくつか」という用語は、1つまたは複数を指し、「または」という用語は、文脈が別段に規定しない限り、「および/または」として解釈され得る。「A、B、またはCのうちの少なくとも1つ」、「A、B、またはCのうちの1つまたは複数」、「A、B、およびCのうちの少なくとも1つ」、「A、B、およびCのうちの1つまたは複数」、および「A、B、C、またはそれらの任意の組合せ」などの組合せは、A、B、および/またはCの任意の組合せを含み、複数のA、複数のB、または複数のCを含み得る。具体的には、「A、B、またはCのうちの少なくとも1つ」、「A、B、またはCのうちの1つまたは複数」、「A、B、およびCのうちの少なくとも1つ」、「A、B、およびCのうちの1つまたは複数」、および「A、B、C、またはそれらの任意の組合せ」などの組合せは、Aのみ、Bのみ、Cのみ、AおよびB、AおよびC、BおよびC、またはAおよびBおよびCであってもよく、任意のそのような組合せは、A、B、またはCのうちの1つまたは複数のメンバーを含み得る。当業者に知られているか、または後に知られることになる、本開示全体にわたって説明する様々な態様の要素に対するすべての構造的および機能的均等物が、参照により本明細書に明確に組み込まれ、特許請求の範囲によって包含されるものとする。その上、本明細書で開示されたものはいずれも、そのような開示が特許請求の範囲において明示的に列挙されているかどうかにかかわらず、公に供されるものではないことが意図される。「モジュール」、「機構」、「要素」、「デバイス」などの語は、「手段」という語の代用ではないことがある。したがって、いかなるクレーム要素も、その要素が「のための手段」という語句を使用して明確に列挙されていない限り、ミーンズプラスファンクションとして解釈されるべきではない。
【0072】
1つまたは複数の例では、本明細書で説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。たとえば、「処理ユニット」という用語が本開示全体にわたって使用されているが、そのような処理ユニットは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。本明細書で説明する任意の機能、処理ユニット、技法、または他のモジュールが、ソフトウェアにおいて実装される場合、本明細書で説明するその機能、処理ユニット、技法、または他のモジュールは、コンピュータ可読媒体上の1つもしくは複数の命令もしくはコードとしてコンピュータ可読媒体上に記憶されるか、または送信され得る。
【0073】
本開示によれば、「または」という用語は、文脈が別段に規定しない限り、「および/または」として解釈され得る。加えて、「1つまたは複数の」または「少なくとも1つの」などの語句が、本明細書で開示するいくつかの特徴に対して使用されており、他の特徴に対しては使用されていないことがあるが、そのような言葉が使用されなかった特徴は、文脈が別段に規定しない限り、そのような示唆される意味を有するものと解釈され得る。
【0074】
1つまたは複数の例では、本明細書で説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。たとえば、「処理ユニット」という用語が本開示全体にわたって使用されているが、そのような処理ユニットは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。本明細書で説明する任意の機能、処理ユニット、技法、または他のモジュールが、ソフトウェアにおいて実装される場合、本明細書で説明するその機能、処理ユニット、技法、または他のモジュールは、コンピュータ可読媒体上の1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、または送信され得る。コンピュータ可読媒体は、コンピュータデータ記憶媒体、またはコンピュータプログラムを1つの場所から別の場所に転送することを容易にする任意の媒体を含む通信媒体を含むことができる。このように、コンピュータ可読媒体は一般に、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明する技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶デバイスを備え得る。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびBlu-ray(登録商標)ディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0075】
コードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、算術論理ユニット(ALU)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積論理回路もしくはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、上記の構造、または本明細書で説明する技法の実装に好適な任意の他の構造のいずれかを指すことがある。また、技法は、1つまたは複数の回路または論理要素において完全に実装され得る。
【0076】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット、たとえば、チップセットを含む、多種多様なデバイスまたは装置において実装され得る。開示した技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットについて本開示で説明するが、それらは必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明したように、様々なユニットは、任意のハードウェアユニットにおいて組み合わせられてもよく、または好適なソフトウェアおよび/もしくはファームウェアとともに、上記で説明したような1つもしくは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合によって提供されてもよい。したがって、本明細書で使用する「プロセッサ」という用語は、上記の構造、または本明細書で説明する技法の実装に好適な任意の他の構造のいずれかを指すことがある。また、技法は、1つまたは複数の回路または論理要素において完全に実装され得る。
【0077】
以下の態様は、例示的なものにすぎず、限定なしで、本明細書で説明する他の態様または教示と組み合わせられ得る。
【0078】
態様1は、グラフィックス処理の方法である。方法は、1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正するステップと、修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定するステップと、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータにアクセスするステップであって、1つまたは複数のテンソルオブジェクトの各々のためのデータが、少なくとも1つのデータ命令に対応する、ステップと、1つまたは複数のテンソルオブジェクトに関連付けられた、アクセスされたデータに基づいて、少なくとも1つのデータ命令を実行するステップとを含む。
【0079】
態様2は、1つまたは複数のサポートされたメモリレイアウトに基づいて、1つまたは複数のテンソルオブジェクトに関連付けられたデータを変換するステップをさらに含む、態様1の方法である。
【0080】
態様3は、少なくとも1つのテクスチャメモリオブジェクトを修正するステップが、1つもしくは複数のテンソルオブジェクトのためのデータを並べ替えるステップ、または1つもしくは複数のテンソルオブジェクトのためのデータをマッピングするステップのうちの少なくとも1つを含む、態様1および2のいずれかの方法である。
【0081】
態様4は、1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを実装するステップをさらに含む、態様1から3のいずれかの方法である。
【0082】
態様5は、1つまたは複数のサポートされたメモリレイアウトが、1つまたは複数のテンソルオブジェクトのためのデータ構造に対応する、態様1から4のいずれかの方法である。
【0083】
態様6は、1つまたは複数のサポートされたメモリレイアウトが、1つまたは複数のテンソルオブジェクトのための1つまたは複数のパッキングタイプに関連付けられる、態様1から5のいずれかの方法である。
【0084】
態様7は、1つまたは複数のテンソルオブジェクトに関連付けられたデータのうちの少なくともいくつかを記憶するステップをさらに含む、態様1から6のいずれかの方法である。
【0085】
態様8は、データのうちの少なくともいくつかが、1つまたは複数の汎用レジスタ(GPR)またはオンチップメモリに記憶される、態様1から7のいずれかの方法である。
【0086】
態様9は、少なくとも1つのデータ命令を実行するステップが、1つまたは複数の演算を実行するステップを含み、1つまたは複数の演算が、行列乗算演算または畳み込み演算のうちの少なくとも1つを含む、態様1から8のいずれかの方法である。
【0087】
態様10は、1つまたは複数のサポートされたメモリレイアウトが、少なくとも1つの次元に関連付けられ、少なくとも1つの次元が、幅、高さ、特徴、またはバッチのうちの少なくとも1つを含む、態様1から9のいずれかの方法である。
【0088】
態様11は、少なくとも1つのデータ命令が、コードまたはシェーダコードに対応する、態様1から10のいずれかの方法である。
【0089】
態様12は、1つまたは複数のテンソルオブジェクトに関連付けられたデータが、データのための少なくとも1つの要求に基づいてアクセスされる、態様1から11のいずれかの方法である。
【0090】
態様13は、少なくとも1つのテクスチャメモリオブジェクトが、2次元(2D)構造または3次元(3D)構造に対応し、1つまたは複数のテンソルオブジェクトが、3次元(3D)構造または4次元(4D)構造に対応する、態様1から12のいずれかの方法である。
【0091】
態様14は、1つまたは複数のテンソルオブジェクトに関連付けられたデータが、シェーダプロセッサ(SP)またはテクスチャプロセッサ(TP)によってアクセスされる、態様1から13のいずれかの方法である。
【0092】
態様15は、少なくとも1つのデータ命令が、機械学習アプリケーションまたはニューラルネットワーク(NN)に基づいて実行される、態様1から14のいずれかの方法である。
【0093】
態様16は、メモリに結合され、態様1から15のいずれかに記載の方法を実施するように構成された、少なくとも1つのプロセッサを含む、グラフィックス処理のための装置である。
【0094】
態様17は、態様1から15のいずれかに記載の方法を実施するための手段を含む、グラフィックス処理のための装置である。
【0095】
態様18は、コンピュータ実行可能コードを記憶するコンピュータ可読媒体であり、コードが、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、態様1から15のいずれかに記載の方法を実施させる。
【符号の説明】
【0096】
100 コンテンツ生成システム
104 デバイス
107 グラフィックス処理パイプライン
120 処理ユニット
121、123 内部メモリ
122 コンテンツエンコーダ/デコーダ
124 システムメモリ
126 通信インターフェース
127 ディスプレイプロセッサ
128 受信機
130 送信機
131 ディスプレイ
132 トランシーバ
198 決定構成要素
200 GPU
210 コマンドプロセッサ(CP)、CP
212 ドローコールパケット、ドローコールデータパケット
220 VFD、処理ユニット
222 VS、処理ユニット
224 頂点キャッシュ(VPC)、処理ユニット
226 三角形セットアップエンジン(TSE)、処理ユニット
228 ラスタライザ(RAS)、処理ユニット
230 Zプロセスエンジン(ZPE)、処理ユニット
232 ピクセル補間器(PI)、処理ユニット
234 フラグメントシェーダ(FS)、処理ユニット
236 レンダバックエンド(RB)、処理ユニット
238 L2キャッシュ(UCHE)、処理ユニット
240 システムメモリ
250 コマンドバッファ
260 コンテキストレジスタパケット
261 コンテキスト状態
310 活性化テンソル、入力活性化テンソル
320 重みテンソル
330 UCHE
332 テクスチャパイプ(TP)、TP
340 シェーダプロセッサ(SP)、SP
342 汎用レジスタ(GPR)
344 定数メモリ
346 算術論理ユニット(ALU)、ALU
510 元の3Dテンソル、元のテンソル、テンソル
560 パックされた3Dテンソル、パックされたテンソル
562 テクセル
602 GPU
604 メモリ
662 データ
【手続補正書】
【提出日】2023-08-07
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
グラフィックス処理の方法であって、
1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正するステップ
であって、前記少なくとも1つのテクスチャメモリオブジェクトが、2次元(2D)構造または第1の3次元(3D)構造に対応し、前記1つまたは複数のテンソルオブジェクトが、第2の3次元(3D)構造または4次元(4D)構造に対応する、ステップと、
前記修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、前記1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定するステップ
であって、前記1つまたは複数のサポートされたメモリレイアウトが、少なくとも1つの次元に関連付けられ、前記少なくとも1つの次元が、幅、高さ、特徴、またはバッチのうちの少なくとも1つを含む、ステップと、
前記1つまたは複数のサポートされたメモリレイアウトに基づいて、前記1つまたは複数のテンソルオブジェクトに関連付けられたデータを変換するステップと、
前記1つまたは複数のテンソルオブジェクトのための前記1つまたは複数のサポートされたメモリレイアウトを実装するステップと、
前記1つまたは複数のサポートされたメモリレイアウトに基づいて、前記1つまたは複数のテンソルオブジェクトに関連付けられた
前記データにアクセスするステップであって、前記1つまたは複数のテンソルオブジェクトの各々のための前記データが、少なくとも1つのデータ命令に対応する、ステップと、
前記1つまたは複数のテンソルオブジェクトに関連付けられた、前記アクセスされたデータに基づいて、前記少なくとも1つのデータ命令を実行するステップと
を含む方法。
【請求項2】
前記少なくとも1つのテクスチャメモリオブジェクトを修正するステップが、前記1つまたは複数のテンソルオブジェクト
に関連付けられた前記データを並べ替えるステップ、または前記1つまたは複数のテンソルオブジェクト
に関連付けられた前記データをマッピングするステップのうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項3】
前記1つまたは複数のサポートされたメモリレイアウトが、前記1つまたは複数のテンソルオブジェクトのための前記データ構造に対応する、請求項1に記載の方法。
【請求項4】
前記1つまたは複数のサポートされたメモリレイアウトが、前記1つまたは複数のテンソルオブジェクトのための1つまたは複数のパッキングタイプに関連付けられる、請求項1に記載の方法。
【請求項5】
前記1つまたは複数のテンソルオブジェクトに関連付けられた前記データのうちの少なくともいくつかを記憶するステップ
をさらに含む、請求項1に記載の方法。
【請求項6】
前記データのうちの前記少なくともいくつかが、1つまたは複数の汎用レジスタ(GPR)またはオンチップメモリに記憶される、請求項
5に記載の方法。
【請求項7】
前記少なくとも1つのデータ命令を実行するステップが、1つまたは複数の演算を実行するステップを含み、
前記1つまたは複数の演算が、行列乗算演算または畳み込み演算のうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項8】
前記少なくとも1つのデータ命令が、コードまたはシェーダコードに対応する、請求項1に記載の方法。
【請求項9】
前記1つまたは複数のテンソルオブジェクトに関連付けられた前記データが、前記データのための少なくとも1つの要求に基づいてアクセスされる、請求項1に記載の方法。
【請求項10】
前記1つまたは複数のテンソルオブジェクトに関連付けられた前記データが、シェーダプロセッサ(SP)またはテクスチャプロセッサ(TP)によってアクセスされる、請求項1に記載の方法。
【請求項11】
前記少なくとも1つのデータ命令が、機械学習アプリケーションまたはニューラルネットワーク(NN)に基づいて実行される、請求項1に記載の方法。
【請求項12】
グラフィックス処理のための装置であって、
メモリと、
前記メモリに結合された少なくとも1つのプロセッサと
を備え、前記少なくとも1つのプロセッサが、
1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正すること
であって、前記少なくとも1つのテクスチャメモリオブジェクトが、2次元(2D)構造または第1の3次元(3D)構造に対応し、前記1つまたは複数のテンソルオブジェクトが、第2の3次元(3D)構造または4次元(4D)構造に対応する、修正すること、
前記修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、前記1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定すること
であって、前記1つまたは複数のサポートされたメモリレイアウトが、少なくとも1つの次元に関連付けられ、前記少なくとも1つの次元が、幅、高さ、特徴、またはバッチのうちの少なくとも1つを含む、決定すること、
前記1つまたは複数のサポートされたメモリレイアウトに基づいて、前記1つまたは複数のテンソルオブジェクトに関連付けられたデータを変換すること、
前記1つまたは複数のテンソルオブジェクトのための前記1つまたは複数のサポートされたメモリレイアウトを実装すること、
前記1つまたは複数のサポートされたメモリレイアウトに基づいて、前記1つまたは複数のテンソルオブジェクトに関連付けられた
前記データにアクセスすることであって、前記1つまたは複数のテンソルオブジェクトの各々のための前記データが、少なくとも1つのデータ命令に対応する、アクセスすること、および
前記1つまたは複数のテンソルオブジェクトに関連付けられた、前記アクセスされたデータに基づいて、前記少なくとも1つのデータ命令を実行すること
を行うように構成される、装置。
【請求項13】
前記少なくとも1つのテクスチャメモリオブジェクトを修正することが、前記1つまたは複数のテンソルオブジェクト
に関連付けられた前記データを並べ替えること、または前記1つまたは複数のテンソルオブジェクト
に関連付けられた前記データをマッピングすることのうちの少なくとも1つを含む、請求項
12に記載の装置。
【請求項14】
前記1つまたは複数のサポートされたメモリレイアウトが、前記1つまたは複数のテンソルオブジェクトのための前記データ構造に対応する、請求項
12に記載の装置。
【請求項15】
前記1つまたは複数のサポートされたメモリレイアウトが、前記1つまたは複数のテンソルオブジェクトのための1つまたは複数のパッキングタイプに関連付けられる、請求項
12に記載の装置。
【請求項16】
前記少なくとも1つのプロセッサが、
前記1つまたは複数のテンソルオブジェクトに関連付けられた前記データのうちの少なくともいくつかを記憶すること
を行うようにさらに構成される、請求項
12に記載の装置。
【請求項17】
前記データのうちの前記少なくともいくつかが、1つまたは複数の汎用レジスタ(GPR)またはオンチップメモリに記憶される、請求項
16に記載の装置。
【請求項18】
前記少なくとも1つのデータ命令を実行することが、1つまたは複数の演算を実行するように構成された前記少なくとも1つのプロセッサを含み、
前記1つまたは複数の演算が、行列乗算演算または畳み込み演算のうちの少なくとも1つを含む、請求項
12に記載の装置。
【請求項19】
前記少なくとも1つのデータ命令が、コードまたはシェーダコードに対応する、請求項
12に記載の装置。
【請求項20】
前記1つまたは複数のテンソルオブジェクトに関連付けられた前記データが、前記データのための少なくとも1つの要求に基づいてアクセスされる、請求項
12に記載の装置。
【請求項21】
前記1つまたは複数のテンソルオブジェクトに関連付けられた前記データが、シェーダプロセッサ(SP)またはテクスチャプロセッサ(TP)によってアクセスされる、請求項
12に記載の装置。
【請求項22】
前記少なくとも1つのデータ命令が、機械学習アプリケーションまたはニューラルネットワーク(NN)に基づいて実行される、請求項
12に記載の装置。
【請求項23】
グラフィックス処理のための装置であって、
1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正するための手段
であって、前記少なくとも1つのテクスチャメモリオブジェクトが、2次元(2D)構造または第1の3次元(3D)構造に対応し、前記1つまたは複数のテンソルオブジェクトが、第2の3次元(3D)構造または4次元(4D)構造に対応する、手段と、
前記修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、前記1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定するための手段
であって、前記1つまたは複数のサポートされたメモリレイアウトが、少なくとも1つの次元に関連付けられ、前記少なくとも1つの次元が、幅、高さ、特徴、またはバッチのうちの少なくとも1つを含む、手段と、
前記1つまたは複数のサポートされたメモリレイアウトに基づいて、前記1つまたは複数のテンソルオブジェクトに関連付けられたデータを変換するための手段と、
前記1つまたは複数のテンソルオブジェクトのための前記1つまたは複数のサポートされたメモリレイアウトを実装するための手段と、
前記1つまたは複数のサポートされたメモリレイアウトに基づいて、前記1つまたは複数のテンソルオブジェクトに関連付けられた
前記データにアクセスするための手段であって、前記1つまたは複数のテンソルオブジェクトの各々のための前記データが、少なくとも1つのデータ命令に対応する、手段と、
前記1つまたは複数のテンソルオブジェクトに関連付けられた、前記アクセスされたデータに基づいて、前記少なくとも1つのデータ命令を実行するための手段と
を備える装置。
【請求項24】
グラフィックス処理のためのコンピュータ実行可能コードを記憶する
非一時的コンピュータ可読媒体であって、前記コンピュータ実行可能コードが、プロセッサによって実行されると、前記プロセッサに、
1つまたは複数のテンソルオブジェクトのためのデータ構造をサポートするために、少なくとも1つのテクスチャメモリオブジェクトを修正すること
であって、前記少なくとも1つのテクスチャメモリオブジェクトが、2次元(2D)構造または第1の3次元(3D)構造に対応し、前記1つまたは複数のテンソルオブジェクトが、第2の3次元(3D)構造または4次元(4D)構造に対応する、修正すること、
前記修正された少なくとも1つのテクスチャメモリオブジェクトに基づいて、前記1つまたは複数のテンソルオブジェクトのための1つまたは複数のサポートされたメモリレイアウトを決定すること
であって、前記1つまたは複数のサポートされたメモリレイアウトが、少なくとも1つの次元に関連付けられ、前記少なくとも1つの次元が、幅、高さ、特徴、またはバッチのうちの少なくとも1つを含む、決定すること、
前記1つまたは複数のサポートされたメモリレイアウトに基づいて、前記1つまたは複数のテンソルオブジェクトに関連付けられたデータを変換すること、
前記1つまたは複数のテンソルオブジェクトのための前記1つまたは複数のサポートされたメモリレイアウトを実装すること、
前記1つまたは複数のサポートされたメモリレイアウトに基づいて、前記1つまたは複数のテンソルオブジェクトに関連付けられた
前記データにアクセスすることであって、前記1つまたは複数のテンソルオブジェクトの各々のための前記データが、少なくとも1つのデータ命令に対応する、アクセスすること、および
前記1つまたは複数のテンソルオブジェクトに関連付けられた、前記アクセスされたデータに基づいて、前記少なくとも1つのデータ命令を実行すること
を行わせる、
非一時的コンピュータ可読媒体。
【国際調査報告】