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

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

77637141つ又は複数のニューラル・ネットワークを使用した画像ブレンディング
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-10-24
(45)【発行日】2025-11-04
(54)【発明の名称】1つ又は複数のニューラル・ネットワークを使用した画像ブレンディング
(51)【国際特許分類】
   G06T 3/4053 20240101AFI20251027BHJP
   G06T 3/4046 20240101ALI20251027BHJP
【FI】
G06T3/4053
G06T3/4046
【請求項の数】 20
【外国語出願】
(21)【出願番号】P 2022077353
(22)【出願日】2022-05-10
(65)【公開番号】P2023091703
(43)【公開日】2023-06-30
【審査請求日】2023-09-20
(31)【優先権主張番号】17/556,885
(32)【優先日】2021-12-20
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ピエタリ カスケラ
(72)【発明者】
【氏名】アンドリュー タオ
(72)【発明者】
【氏名】マイケル ランジンガー
(72)【発明者】
【氏名】デイヴィッド タルジャン
(72)【発明者】
【氏名】ジョナサン フィリップ グスタフ グランスコグ
(72)【発明者】
【氏名】ホルヘ アルベリシオ ラトーレ
【審査官】村山 絢子
(56)【参考文献】
【文献】米国特許出願公開第2019/0096046(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 3/4046
H04N 23/00-23/959
H04N 5/222-5/257
G06T 7/00-7/90
G06V 10/00-20/90
(57)【特許請求の範囲】
【請求項1】
プロセッサであって、
1つ又は複数のニューラル・ネットワークを使用して、2つ又は複数の画像を使用して、該2つ又は複数の画像の1つ又は複数の高解像度表現をブレンドするために使用される1つ又は複数のピクセル・ブレンディング重みを生成するための1つ又は複数の回路を備え
前記1つ又は複数の回路が、さらに、第1の解像度において画像データを処理する深層ニューラル・ネットワークから1つ又は複数のピクセル・ブレンディング重みを受信し、前記ピクセル・ブレンディング重みを第2の解像度にアップサンプリングするためのものであり、
前記1つ又は複数の回路が、さらに、アップサンプリングされている前記ピクセル・ブレンディング重みを、前記第2の解像度にある1つ又は複数の画像とともに、前記1つ又は複数のニューラル・ネットワークのうちのリファインメント・ニューラル・ネットワークに提供して、前記1つ又は複数の画像内の画像特徴に少なくとも部分的に基づいて、前記アップサンプリングされているピクセル・ブレンディング重みを調整するためのものである、プロセッサ。
【請求項2】
前記1つ又は複数の回路が、さらに、前記1つ又は複数の画像の画像データを前記第1の解像度において前記深層ニューラル・ネットワークに提供する前に、前記画像データを、前記第2の解像度からダウンサンプリングするためのものである、請求項に記載のプロセッサ。
【請求項3】
前記深層ニューラル・ネットワークが、U-Netであり、前記リファインメント・ニューラル・ネットワークが、疎なCNNアーキテクチャ内の畳み込み層の間の1つ又は複数のスキップ接続を含む浅層畳み込みニューラル・ネットワークである、請求項に記載のプロセッサ。
【請求項4】
前記1つ又は複数のニューラル・ネットワークが、さらに、履歴ピクセル・データ、フィルタ・パラメータ・データ、ピクセル・ジッタ・データ、フィルタリング済みピクセル・データ、又はワーピング・ピクセル・データのうちの少なくとも1つに関係する1つ又は複数の追加のパラメータを調整するためのものである、請求項に記載のプロセッサ。
【請求項5】
システムであって、
1つ又は複数のニューラル・ネットワークを使用して、2つ又は複数の画像を使用して、該2つ又は複数の画像の1つ又は複数の高解像度表現をブレンドするために使用される1つ又は複数のピクセル・ブレンディング重みを生成するための1つ又は複数のプロセッサを備え
前記1つ又は複数のプロセッサが、さらに、第1の解像度において画像データを処理する深層ニューラル・ネットワークから1つ又は複数のピクセル・ブレンディング重みを受信し、前記ピクセル・ブレンディング重みを第2の解像度にアップサンプリングするためのものであり、
前記1つ又は複数のプロセッサが、さらに、アップサンプリングされている前記ピクセル・ブレンディング重みを、前記第2の解像度にある1つ又は複数の画像とともに、前記1つ又は複数のニューラル・ネットワークのうちのリファインメント・ニューラル・ネットワークに提供して、前記1つ又は複数の画像内の画像特徴に少なくとも部分的に基づいて、前記アップサンプリングされているピクセル・ブレンディング重みを調整するためのものである、システム。
【請求項6】
前記1つ又は複数のプロセッサが、さらに、前記1つ又は複数の画像の画像データを前記第1の解像度において前記深層ニューラル・ネットワークに提供する前に、前記画像データを、前記第2の解像度からダウンサンプリングするためのものである、請求項に記載のシステム。
【請求項7】
前記深層ニューラル・ネットワークが、U-Netであり、前記リファインメント・ニューラル・ネットワークが、浅層畳み込みニューラル・ネットワークである、請求項に記載のシステム。
【請求項8】
前記リファインメント・ニューラル・ネットワークが、疎なCNNアーキテクチャ内の畳み込み層の間の1つ又は複数のスキップ接続を含む、請求項に記載のシステム。
【請求項9】
方法であって、
1つ又は複数のニューラル・ネットワークを使用して、2つ又は複数の画像を使用して、該2つ又は複数の画像の1つ又は複数の高解像度表現をブレンドするために使用される1つ又は複数のピクセル・ブレンディング重みを生成することを含む、前記方法において、
第1の解像度において画像データを処理する深層ニューラル・ネットワークから1つ又は複数のピクセル・ブレンディング重みを受信することと、前記ピクセル・ブレンディング重みを第2の解像度にアップサンプリングすること、
アップサンプリングされている前記ピクセル・ブレンディング重みを、前記第2の解像度にある1つ又は複数の画像とともに、前記1つ又は複数のニューラル・ネットワークのうちのリファインメント・ニューラル・ネットワークに提供して、前記1つ又は複数の画像内の画像特徴に少なくとも部分的に基づいて、前記アップサンプリングされているピクセル・ブレンディング重みを調整することをさらに含む、方法。
【請求項10】
前記1つ又は複数の画像の画像データを前記第1の解像度において前記深層ニューラル・ネットワークに提供する前に、前記画像データを、前記第2の解像度からダウンサンプリングすることをさらに含む、請求項に記載の方法。
【請求項11】
前記深層ニューラル・ネットワークが、U-Netであり、前記リファインメント・ニューラル・ネットワークが、浅層畳み込みニューラル・ネットワークである、請求項に記載の方法。
【請求項12】
前記リファインメント・ニューラル・ネットワークが、疎なCNNアーキテクチャ内の畳み込み層の間の1つ又は複数のスキップ接続を含む、請求項に記載の方法。
【請求項13】
命令セットを記憶されている機械可読媒体であって、前記命令セットが、1つ又は複数の請求項1に記載のプロセッサによって実施されると、前記1つ又は複数のプロセッサに、少なくとも、
第1の解像度において画像データを処理する深層ニューラル・ネットワークから1つ又は複数のピクセル・ブレンディング重みを受信することと、前記ピクセル・ブレンディング重みを第2の解像度にアップサンプリングすることとを行わせるようになっており、
前記命令セットが、実行されると、さらに、前記1つ又は複数のプロセッサに、
1つ又は複数のピクセルの1つ又は複数の深度変動に少なくとも部分的に基づいて1つ又は複数の第2の色を決定することを行わせるようになっており、
前記命令セットが、実行されると、さらに、前記1つ又は複数のプロセッサに、
アップサンプリングされている前記ピクセル・ブレンディング重みを、前記第2の解像度にある1つ又は複数の画像とともに、前記1つ又は複数のニューラル・ネットワークのうちのリファインメント・ニューラル・ネットワークに提供して、前記1つ又は複数の画像内の画像特徴に少なくとも部分的に基づいて、前記アップサンプリングされているピクセル・ブレンディング重みを調整することを行わせるようになっている、機械可読媒体。
【請求項14】
前記命令セットが、実行されると、さらに、前記1つ又は複数のプロセッサに、
前記1つ又は複数の画像の画像データを前記第1の解像度において前記深層ニューラル・ネットワークに提供する前に、前記画像データを、前記第2の解像度からダウンサンプリングすることを行わせるようになっている、請求項13に記載の機械可読媒体。
【請求項15】
前記深層ニューラル・ネットワークが、U-Netであり、前記リファインメント・ニューラル・ネットワークが、浅層畳み込みニューラル・ネットワークである、請求項13に記載の機械可読媒体。
【請求項16】
前記リファインメント・ニューラル・ネットワークが、疎なCNNアーキテクチャ内の畳み込み層の間の1つ又は複数のスキップ接続を含む、請求項13に記載の機械可読媒体。
【請求項17】
画像再構築システムであって、
1つ又は複数のニューラル・ネットワークを使用して、2つ又は複数の画像を使用して、該2つ又は複数の画像の1つ又は複数の高解像度表現をブレンドするために使用される1つ又は複数のピクセル・ブレンディング重みを生成するための1つ又は複数のプロセッサと、
前記1つ又は複数のニューラル・ネットワークのネットワーク・パラメータを記憶するためのメモリと
を備え
前記1つ又は複数のプロセッサが、さらに、第1の解像度において画像データを処理する深層ニューラル・ネットワークから1つ又は複数のピクセル・ブレンディング重みを受信し、前記ピクセル・ブレンディング重みを第2の解像度にアップサンプリングするためのものであり、
前記1つ又は複数のプロセッサが、さらに、アップサンプリングされている前記ピクセル・ブレンディング重みを、前記第2の解像度にある1つ又は複数の画像とともに、前記1つ又は複数のニューラル・ネットワークのうちのリファインメント・ニューラル・ネットワークに提供して、前記1つ又は複数の画像内の画像特徴に少なくとも部分的に基づいて、前記アップサンプリングされているピクセル・ブレンディング重みを調整するためのものである、画像再構築システム。
【請求項18】
前記1つ又は複数のプロセッサが、さらに、前記1つ又は複数の画像の画像データを前記第1の解像度において前記深層ニューラル・ネットワークに提供する前に、前記画像データを、第2の解像度からダウンサンプリングするためのものである、請求項17に記載の画像再構築システム。
【請求項19】
前記深層ニューラル・ネットワークが、U-Netであり、前記リファインメント・ニューラル・ネットワークが、浅層畳み込みニューラル・ネットワークである、請求項17に記載の画像再構築システム。
【請求項20】
前記リファインメント・ニューラル・ネットワークが、疎なCNNアーキテクチャ内の畳み込み層の間の1つ又は複数のスキップ接続を含む、請求項17に記載の画像再構築システム。
【発明の詳細な説明】
【技術分野】
【0001】
少なくとも一実施例は、人工知能を実行及び促進するために使用されるリソースの処理に関する。たとえば、少なくとも一実施例は、本明細書に記載の様々な新規の技法により、ニューラル・ネットワークを訓練するために使用されるプロセッサ又はコンピューティング・システムに関する。
【発明の概要】
【発明が解決しようとする課題】
【0002】
画像及びビデオ・コンテンツは、ますますより高い解像度において生成され、より高い品質のディスプレイに表示されるようになってきている。より高い品質のコンテンツを生成する手法は、特に現代のフレーム・レートでは非常にリソース集約的であることが多く、これはリソース容量が制限されたデバイスにとって問題であり得る。シーケンス内の現在の及び以前のフレームのデータをブレンドすることは、フレーム間でピクセル・データの何らかの時間的平滑化及び累積を提供することによってこのコンテンツの品質を改善するのを助けることができるが、最適なブレンディング重みを決定することは困難であり、不適切なブレンディング重みが使用されることによって、ノイズが多すぎるか、又は、ゴースト発生若しくは時間的不安定性などのアーティファクトを有する画像が生成される可能性がある。
【課題を解決するための手段】
【0003】
図面を参照して、本開示による様々な実施例を説明する。
【図面の簡単な説明】
【0004】
図1】少なくとも一実施例による、例示的な時間的アップサンプリング・パイプラインを示す図である。
図2】少なくとも一実施例による、シーケンス内の画像の色値をブレンドするためのシステムを示す図である。
図3A】少なくとも一実施例による、リファインメント・ネットワークを含むアーキテクチャの構成要素を示す図である。
図3B】少なくとも一実施例による、リファインメント・ネットワークを含むアーキテクチャの構成要素を示す図である。
図3C】少なくとも一実施例による、リファインメント・ネットワークを含むアーキテクチャの構成要素を示す図である。
図4A】少なくとも一実施例による、シーケンス内の画像を生成するためのプロセスを示す図である。
図4B】少なくとも一実施例による、シーケンス内の画像を生成するためのプロセスを示す図である。
図5】少なくとも一実施例による、画像コンテンツを提供するためのシステムの構成要素を示す図である。
図6A】少なくとも一実施例による、推論及び/又は訓練論理を示す図である。
図6B】少なくとも一実施例による、推論及び/又は訓練論理を示す図である。
図7】少なくとも一実施例による、例示的データ・センタ・システムを示す図である。
図8】少なくとも一実施例による、コンピュータ・システムを示す図である。
図9】少なくとも一実施例による、コンピュータ・システムを示す図である。
図10】少なくとも一実施例による、コンピュータ・システムを示す図である。
図11】少なくとも一実施例による、コンピュータ・システムを示す図である。
図12A】少なくとも一実施例による、コンピュータ・システムを示す図である。
図12B】少なくとも一実施例による、コンピュータ・システムを示す図である。
図12C】少なくとも一実施例による、コンピュータ・システムを示す図である。
図12D】少なくとも一実施例による、コンピュータ・システムを示す図である。
図12E】少なくとも一実施例による、共有プログラミング・モデルを示す図である。
図12F】少なくとも一実施例による、共有プログラミング・モデルを示す図である。
図13】少なくとも一実施例による、例示的な集積回路及び関連するグラフィックス・プロセッサを示す図である。
図14A】少なくとも一実施例による、例示的な集積回路及び関連するグラフィックス・プロセッサを示す図である。
図14B】少なくとも一実施例による、例示的な集積回路及び関連するグラフィックス・プロセッサを示す図である。
図15A】少なくとも一実施例による、追加の例示的グラフィックス・プロセッサ論理を示す図である。
図15B】少なくとも一実施例による、追加の例示的グラフィックス・プロセッサ論理を示す図である。
図16】少なくとも一実施例による、コンピュータ・システムを示す図である。
図17A】少なくとも一実施例による、並列プロセッサを示す図である。
図17B】少なくとも一実施例による、パーティション・ユニットを示す図である。
図17C】少なくとも一実施例による、処理クラスタを示す図である。
図17D】少なくとも一実施例による、グラフィックス・マルチプロセッサを示す図である。
図18】少なくとも一実施例による、マルチ・グラフィックス・プロセッシング・ユニット(GPU)システムを示す図である。
図19】少なくとも一実施例による、グラフィックス・プロセッサを示す図である。
図20】少なくとも一実施例による、プロセッサのマイクロ・アーキテクチャを示す図である。
図21】少なくとも一実施例による、深層学習アプリケーション・プロセッサを示す図である。
図22】少なくとも一実施例による、例示的ニューロモーフィック・プロセッサを示す図である。
図23】少なくとも一実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
図24】少なくとも一実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
図25】少なくとも一実施例による、グラフィックス・プロセッサ・コアの少なくとも一部分を示す図である。
図26A】少なくとも一実施例による、グラフィックス・プロセッサ・コアの少なくとも一部分を示す図である。
図26B】少なくとも一実施例による、グラフィックス・プロセッサ・コアの少なくとも一部分を示す図である。
図27】少なくとも一実施例による、並列処理ユニット(「PPU」)を示す図である。
図28】少なくとも一実施例による、汎用処理クラスタ(「GPC」)を示す図である。
図29】少なくとも一実施による、並列処理ユニット(「PPU」)のメモリ・パーティション・ユニットを示す図である。
図30】少なくとも一実施例による、ストリーミング・マルチプロセッサを示す図である。
図31】少なくとも一実施例による、先進コンピューティング・パイプラインの例示的なデータ・フロー図である。
図32】少なくとも一実施例による、先進コンピューティング・パイプラインにおいて機械学習モデルを訓練、適合、インスタンス化及び展開するための例示的なシステムのシステム図である。
図33A】少なくとも一実施例による、機械学習モデルを訓練するプロセスのデータ・フロー図である。
図33B】少なくとも一実施例による、事前に訓練されたアノテーション・モデルによってアノテーション・ツールを強化するためのクライアント・サーバ・アーキテクチャの例示的な図である。
【発明を実施するための形態】
【0005】
少なくとも一実施例では、図1に示すようなアップスケーリング・システム100を使用して、深層学習ベースのスーパー・サンプリング又は超解像度プロセスの一部として、シーケンス又はビデオ・ストリーム内の画像又はビデオ・フレームなどの、1つ又は複数の画像の解像度を向上させることができる。少なくとも一実施例では、これは、ライブ・ゲームプレイのシーンなどの、シーン内の1つ又は複数の物体の表現を含んでもよい。少なくとも一実施例では、レンダリング・エンジン102又はレンダラが、1つ又は複数の物体の画像を、1つ又は複数のより高い出力解像度にアップスケーリングされることになる第1の解像度において出力することができる。少なくとも一実施例では、リアルタイム時間的画像再構築を、レンダリング・エンジンによって画像が生成される解像度よりも高い解像度において実行することができる。少なくとも一実施例では、このプロセスの時間的態様は、現在のフレーム106と、シーケンス内の少なくとも1つの以前の又は履歴フレーム124との間で、対応する点の色値をブレンドすることを含むことができる。少なくとも一実施例では、このブレンディングがこれらのフレーム内の物体上の対応する点について行われることを保証するために、この以前の履歴色データを、このレンダリング・エンジンから出力されるか又は他の様態で決定される運動ベクトルのセットによって示され得るような、この履歴フレームとこの現在のフレームとの間で検出される運動に基づいてワープすることができる。少なくとも一実施例では、そのようなワーピングは、様々な画像の特徴点などの点が経時的に追跡され、対応する色値がブレンディングに使用されることを保証することができ、これは、再生中のノイズ又はちらつきなどのアーティファクトの存在を低減する助けとなり得る。少なくとも一実施例では、且つ、本明細書の他の箇所により詳細に論じるように、スーパー・サンプリング・アルゴリズムは、現在のフレームの現在のピクセル及び以前のワーピング履歴フレームからの対応する履歴ピクセルの色値を重み付けするべき量を決定するために、ブレンディング係数を予測するニューラル・ネットワークを利用することができる。少なくとも一実施例では、そのようなアルゴリズムはまた、フィルタリング・カーネルも利用して、新たなより解像度の高い出力画像を入力のセットから生成することができる。少なくとも一実施例では、そのようなネットワークの出力画像品質は、現在のルマ・フレーム、履歴ルマ、学習履歴、及び色変動マスク又は運動ベクトル差分バッファなどの情報を含み得るものとしての、この入力において利用可能な情報に、少なくとも部分的に依存し得る。少なくとも一実施例では、アプリケーションは、エイリアシングされた1サンプル毎ピクセル(spp)の画像を、1080p(FullHD)の解像度においてレンダリングし得、このアルゴリズムは、アンチ・エイリアシングされた2160p(4k)の画像を、この入力画像及びこのアプリケーションによって提供される任意のそのようなサイド情報シーケンスから再構築し得る。少なくとも一実施例では、そのようなプロセスは、入力解像度と出力解像度とが等しい純粋なアンチ・エイリアシングの事例を含め、他のアップスケーリング比による他の解像度に拡張することができる。
【0006】
少なくとも一実施例では、ビデオ・ゲーム・コンテンツ又はアニメーションなどのコンテンツを、レンダラ102、レンダリング・エンジン、又はそのようなシステムの他のそのようなコンテンツ生成手段を使用して生成することができる。少なくとも一実施例では、レンダラ102は、シーケンスの1つ又は複数のフレームの入力を受信することができ、その入力に少なくとも部分的に基づいて修正された、記憶されているコンテンツ104(たとえば、マップ及びグラフィック・アセット)を使用して画像又はビデオ・フレームを生成することができる。少なくとも一実施例では、このレンダラ102は、遅延シェーディング、グローバル・イルミネーション、照明透過処理、後処理、及び、ベクトル場を使用したグラフィックス・プロセッシング・ユニット(「GPU」)粒子シミュレーションなどの機能を提供することができる、Epic Games, Inc.製のUnreal Engine 4などのレンダリング・ソフトウェアを利用することができるものなどの、レンダリング・パイプラインの一部であってもよい。少なくとも一実施例では、フル高解像度画像のこの複雑なレンダリングに必要な処理の量は、少なくとも60フレーム毎秒(fps)などの現在のフレーム・レートを満たすようにこれらのビデオ・フレームをレンダリングすることを困難にする可能性がある。少なくとも一実施例では、レンダラ102は、代わりに、タイミング要件を満たし、処理リソース要件を低減するなどのために、1つ又は複数の最終出力解像度よりも低い解像度においてレンダリング画像106を生成するために使用されてもよい。少なくとも一実施例では、この低解像度レンダリング画像106は、目標出力解像度に等しい(又は少なくともそれに近い)解像度において低解像度レンダリング画像106の内容を表すアップスケーリング画像110を生成するために、アップスケーラ108を使用して処理することができる。
【0007】
少なくとも一実施例では、アップスケーラ・システム108(サービス、システム、モジュール、又はデバイスの形態をとることができる)を使用して、ビデオ又はアニメーション・シーケンスの個々のフレームをアップスケーリングすることができる。少なくとも一実施例では、実行されるべきアップスケーリングの量は、レンダリング画像の初期解像度、及び、1080p~4kの解像度に及ぶなどの、ディスプレイの目標解像度に依存し得る。少なくとも一実施例では、アンチ・エイリアシング及び時間的平滑化を含んでもよいものとしての、追加の処理を、アップサンプリング・プロセスの一部として実行することができる。少なくとも一実施例では、異方性ガウス・フィルタ又は動的フィルタ・ネットワーク(DFN)などのフィルタを含んでもよいものなどの、適切な再構築フィルタを利用することができる。少なくとも一実施例では、アップサンプリング・プロセスは、フレーム毎に適用することができるサブピクセル・ジッタを考慮することができる。
【0008】
少なくとも一実施例では、深層学習を使用して、シーケンスのこれらのアップサンプリングされたビデオ・フレームを推論することができる。少なくとも一実施例では、時間的再構築を使用して、アンチ・エイリアシング及び超解像度を組み合わせて提供することができる。少なくとも一実施例では、ビデオ・フレームの対応するシーケンスからの情報を使用して、より品質の高いアップサンプリング画像を推論することができる。少なくとも一実施例では、データからの学習を必要としないレンダリング・パイプラインの以前の知識に基づく1つ又は複数のヒューリスティクスを使用することができる。少なくとも一実施例では、これは、ジッタ・アウェアなアップサンプリング及びアップサンプリング解像度におけるサンプルの累積を含むことができる。少なくとも一実施例では、このジッタ・オフセット・データは、アップサンプリング・アルゴリズムのみによって生成されるより品質の高いアップサンプリング画像110を推論するための少なくとも1つのニューラル・ネットワークを含むアップスケーラ108への入力として、現在の入力ビデオ・フレーム及び以前の推論されたフレームとともに提供することができる。少なくとも一実施例では、このアップサンプリングは、必然的に、ジッタ・オフセット122及びフレーム毎のサンプルをシフトさせ、結果、それらは、より高い解像度にあり得る履歴バッファと位置整合される。
【0009】
少なくとも一実施例では、このアップスケーリング画像110は、1つ又は複数のブレンディング係数又はブレンディング重みを決定するためのニューラル・ネットワーク112への入力として提供することができる。少なくとも一実施例では、ニューラル・ネットワーク112はまた、このアップスケーリング画像110とともに、ワープされ、ニューラル・ネットワーク112に提供されているこのシーケンス内の以前の高解像度画像も、入力として受信する。少なくとも一実施例では、このニューラル・ネットワーク112は、本明細書において論じられているような空間的及び時間的変化に関連し得るものとしての、他の入力特徴も受信することができる。少なくとも一実施例では、深層学習が使用されて、実際のレンダリング解像度よりも複数(たとえば、2~9)倍高い解像度におけるリアルタイム・レンダリングのために画像が再構築される。少なくとも一実施例では、そのようなプロセスからの再構築画像品質は、少なくとも詳細、時間的安定性、及びゴースト発生又はラグなどの一般的アーティファクトの欠如に関して、元々の解像度のレンダリングに匹敵するか、又はさらにはそれを超える。少なくとも一実施例では、このニューラル・ネットワークはまた、現在の画像を以前の画像を用いて再構築又はブレンドするときに適用されるべき少なくともいくらかのフィルタリングを決定することもできる。少なくとも一実施例では、次いで、この情報をこのアップスケーリング画像110とともにブレンディング構成要素114に提供して、このシーケンスの少なくとも1つの以前の画像とブレンドされるようにすることができる。少なくとも一実施例では、ジッタ・オフセット・データ122も、入力としてこのブレンディング構成要素114に提供することができる。少なくとも一実施例では、現在の画像の、シーケンスの以前の(又は履歴)画像とのこのブレンディングは、良好で、鮮明な高解像度出力画像116に時間的に収束するのに役立つことができ、出力画像は、次いで、ディスプレイ120又は他のそのような提示機構を介した提示のために提供することができる。少なくとも一実施例では、この高解像度出力画像116のコピーはまた、このシーケンス内の後に生成される画像とのブレンディングのために、履歴バッファ118又は他のそのようなストレージ・ロケーションに記憶することもできる。少なくとも一実施例では、そのようなプロセスは、深層学習を活用して、詳細、時間的安定性、及びゴースト発生又はラグなどの一般的アーティファクトの欠如に関して、元々の解像度のレンダリングに少なくとも匹敵する再構築画像品質を有する、実際のレンダリング解像度よりも複数倍(たとえば、2倍、4倍、又は8倍)高い解像度におけるリアルタイム・レンダリングのための画像を再構築することができる。少なくとも一実施例では、テンソル・コアを用いて再構築速度を加速することができ、本明細書において提示されているものとして手法を使用することによって、このレンダリング・プロセスをはるかによりサンプル効率的にし、様々な用途について、1秒当たりのフレームを大幅に増大させることができる。
【0010】
少なくとも一実施例では、そのようなシステムにおいてバッファリングされた情報を使用することは、図2に示すものなどの構成要素200を含むことができる。少なくとも一実施例では、色バッファ202、運動ベクトル・バッファ204、及び深度バッファ206を含む3つの一次入力ソースが利用される。少なくとも一実施例では、1つ又は複数のコンピューティング・デバイス上の1つ又は複数のプロセッサ上で作動する1つ又は複数のプロセスを含んでもよいものなどの、プリプロセッサ208が、入力として、レンダリング・エンジン又はアプリケーションによって生成されるものとしての、現在のフレームの色情報、及び、1つ又は複数のデバイスの1つ又は複数のプロセッサを実行するワープ機能又はアプリケーションなどのワーパ210の出力を受信することができる。少なくとも一実施例では、このワーパ210は、入力として、運動ベクトル・バッファ204に記憶されているものとしての現在のフレームの運動ベクトル情報を受信する。少なくとも一実施例では、ワーパ210は、このデータを、アプリケーション又はレンダラから直接的に受信してもよく、専用バッファを利用しなくてもよい。少なくとも一実施例では、この時間的プロセスはまた、入力として、ワーパ210に、履歴バッファ214に記憶されているものとしての、シーケンス内の以前の画像からの高解像度色データも提供する。少なくとも一実施例では、前述したように、各最終出力画像の情報も、シーケンス内の後続の画像又はフレームの生成に使用するために、履歴バッファ214に記憶することができる。少なくとも一実施例では、ワーパ210は、この運動ベクトル及び深度データを利用して、以前の画像の特定の特徴のピクセル・データ又は色データを現在の画像フレーム内の対応するピクセル・ロケーションに、これら2つの画像内の特徴の対応するピクセル・ロケーションにマッピングするためにこれらの運動ベクトルを効率的に使用してワープすることができ、したがって、類似の特徴の色値を比較及びブレンディングすることができる。少なくとも一実施例では、プリプロセッサ208は、色バッファ202からの現在の色データ、又は、ワーパ210からのワーピングされた以前の色データに対して任意の関連処理を実行することができる。少なくとも一実施例では、任意の前処理後のこのデータは、入力として、このデータを分析して生成されることになる画像内の各ピクセル・ロケーションのピクセル特有の重みを決定することができるニューラル・ネットワーク又は他の深層学習(DL)ベースのジェネレータ212に提供される。少なくとも一実施例では、この生成されたデータは、最終高解像度カラー画像218を出力することができる1つ又は複数のコンピューティング・デバイスの1つ又は複数のプロセッサ上で実行される1つ又は複数のプロセスを含んでもよい、ポストプロセッサ216に送られる。少なくとも一実施例では、このポストプロセッサはまた、現在のシーケンス内の後続の画像の生成に使用するために高解像度色及び履歴バッファ214に記憶される情報も出力することができる。
【0011】
少なくとも一実施例では、そのような手法を使用したフレームの生成は、アプリケーションが、低解像度ジッタ入力画像及び関連するジッタ値、個々の入力画像ピクセル毎の低解像度後方運動ベクトル、並びに、露出値及び深度バッファなどの他の量を、再構築アルゴリズムに提供することを含むことができる。少なくとも一実施例では、これらの低解像度入力(後方)運動ベクトルを使用して、以前のフレーム出力画像をワープして、現在のタイム・スタンプ内の幾何学的形状と位置整合することができる。少なくとも一実施例では、この低解像度の現在のフレーム画像は、アップサンプリング・アルゴリズムを使用して出力画像218の解像度にアップサンプリングされる。少なくとも一実施例では、ニューラル・ネットワーク212が使用されて、(出力解像度における)各出力ピクセルの重み値wが推論される。少なくとも一実施例では、現在のフレームの高解像度出力画像は、以下のように作成することができる。
出力=w*(アップサンプリングされた現在のフレーム入力画像)+
(1-w)*(ワーピングされた以前の出力画像)
【0012】
少なくとも一実施例では、また、このタイプの時間的画像再構築アルゴリズムでは、結果もたらされる画像品質(IQ)の重要因子は、上記の重み付け係数wに起因し得る。少なくとも一実施例では、wは、出力画像内の領域がレンダリングされているシーン内の物体の運動に起因して閉塞されなくなる場合に、この重み付け係数が現在の入力画像を選好するか、又は、w=1.0の場合など、色値を現在の画像をより重く重み付けすることを含め、様々な基準に適合する。少なくとも一実施例では、出力画像内の領域が以前のフレームにおいて見えている(且つ、同様に陰影を付けられている)場合、最適な重み付け係数は、これらの以前の出力画像と現在の入力画像との間の適切なブレンディングをもたらすことができる。少なくとも一実施例では、このブレンディングは、より多くのフレームがこの領域を見えるようにされているため、wの値がゼロに近づく場合など、履歴データをより選好することができる。
【0013】
少なくとも一実施例では、ネットワークは、この予測重みを、現在のフレーム入力画像及びワーピングされた以前のフレーム出力画像に少なくとも部分的に基づかせることができる。少なくとも一実施例では、アップサンプリングされた現在の画像が、ワーピングされた以前のフレーム出力画像から大幅に異なる値を有し、したがって、表示されたときに非常に異なって見える場合はいつでも、ニューラル・ネットワークは、アップサンプリングされた現在のフレーム入力画像により重要性を与える、高い値の重み付け係数wを予測することができる。少なくとも一実施例では、現在の画像が、ワーピングされた以前のフレーム出力画像に類似した値を有し、したがって、表示されたときに非常に類似して見える場合、ニューラル・ネットワークは、ワーピングされた以前のフレーム出力画像により重要性を与える、低い値の重み付け係数wを予測することができる。
【0014】
少なくとも一実施例では、運動ベクトル差分情報を、本明細書において論じられているように、追加のモダリティ又は入力として使用することができる。少なくとも一実施例では、運動バッファ220などの追加のバッファを、そのようなシステム200内の入力の別のソースとして使用することができる。少なくとも一実施例では、本明細書において論じられているような、少なくとも1つの運動データ・バッファ又は深度データ・バッファを含んでもよいものとしての、他のバッファを利用することもできる。少なくとも一実施例では、本明細書において履歴運動バッファとしても参照される、この運動バッファ220は、フレーム間で持続することができる新たな又は追加の運動ベクトル・データを記憶することができる。少なくとも一実施例では、運動ベクトル・バッファ204からの現在の運動ベクトルを、後続のフレームに使用されるように、変換プロセスに対応し得るものなどの、1つ又は複数の形態で記憶することができる。少なくとも一実施例では、この運動ベクトル情報は、ワーパ210への追加の入力として提供することができる。少なくとも一実施例では、ここで、ワーパ210のワーピング機能は、バッファ214からの高解像度色履歴データをワープすることができるだけでなく、運動バッファ220からのこの以前の運動ベクトル・データもワープすることができる。少なくとも一実施例では、時間計算手段222が、上記の関連する式に関連して説明されているものとしての計算を実行することができ、当該計算において、ワーパ210からのワーピング運動ベクトル・データが、運動ベクトル・バッファ204からの現在の運動ベクトル・データとともに処理されて、差分又は差分領域が決定される。少なくとも一実施例では、この計算は、差分、次いでノルムを決定し、前述したように関連する機能を適用することを含むことができる。少なくとも一実施例では、この時間的計算は、次いで、外部入力としてプリプロセッサ208に提供することができ、次いで、本明細書において論じられているようなより正確なピクセル特有の重み付けの決定に使用するために、ジェネレータ212に渡すことができ、このDLベースのネットワークがより高い品質の結果を生成することが可能になる。
【0015】
少なくとも一実施例では、図2に示すものなどの時間的アップサンプリング・システムに使用されるニューラル・ネットワークは、ジェネレータ212などの、1つ又は複数のニューラル・ネットワークによるより低い解像度の利用からの利益を利用することができ、これによって、処理コスト、メモリ、帯域幅、及び他の計算又はデータ・ストレージ/送信リソースの大幅な低減を提供することができる。しかしながら、少なくとも一実施例では、そのような解像度の低減はまた、最終的なより高い出力解像度における出力の品質も低くする可能性がある。少なくとも一実施例では、2段階予測プロセスを利用することによって、空間時間的累積及びアップサンプリングのためのパラメータを提供するためのネットワーク・アーキテクチャを利用することができる。少なくとも一実施例では、第1の段階は、図3に示すものとしてのU-Netアーキテクチャ306などについて、より低い解像度において動作することができる。少なくとも一実施例では、レンダリング・エンジン又は他のそのようなソースからの入力302を、ダウンサンプル及びフォールディング・モジュール304又はプロセスに渡すことができ、当該モジュールは、これらの入力302の解像度を、1つ又は複数のニューラル・ネットワーク、この場合はU-Net306などの畳み込みニューラル・ネットワーク(CNN)によって処理されるように、低減することができる。少なくとも一実施例では、U-NET306の出力は、アンフォールディング及びアップサンプリング・モジュール308に渡すことができ、当該モジュールは、この出力を、入力302の解像度又は目標解像度に対応し得るものなどの、より高い解像度にアップサンプリングすることができる。少なくとも一実施例では、それらのより高い解像度の結果は、次いで、この同じより高い解像度にあり得る入力302も受信しているリファインメント・ネットワーク310に渡すことができる。少なくとも一実施例では、リファインメント・ネットワーク310は、次いで、入力302のものなどの、より高いピクセル毎の解像度においてU-Net306からの予測を改善することができる。少なくとも一実施例では、そのような手法はまた、結果として、U-Net306の少なくともいくつかのネットワーク層の計算構造を、密な表現から疎な表現、又は、低減された精度の数値フォーマットを利用する表現へと修正することも可能にすることができる。少なくとも一実施例では、図3Aのデータの解像度は、データ・フローの対応する矢印の太さに対応し、より太い矢印は、より高い解像度にあるデータを表し、U-Net306に流れ込むもの又はU-Net306から流れ出すものなどの、より細い矢印は、より低い、ダウンサンプリングされた解像度にある。
【0016】
少なくとも一実施例では、U-NetなどのCNNは、入力特徴の大きい領域を分析することができ、深いがコストのかかるネットワークである。少なくとも一実施例では、このネットワークは、この高いコストに少なくとも部分的に起因してフル出力解像度よりも低い解像度において評価され得る。少なくとも一実施例では、すべての入力は、このより低い解像度においてこのネットワークに与えることができ、同様に、その出力も、このより低い解像度にある。少なくとも一実施例では、このネットワークからのこれらのより低い解像度の出力は、出力解像度などの、より高い解像度にアップスケーリングすることができる。このネットワークのより低い動作解像度に起因して、これらの結果の品質が制限されることを防止するために、この予測プロセスの第2の段階は、これらのアップスケーリングされたフル解像度出力及び前述のネットワークの入力を入力として取り込むことができ、より精緻化された予測を生成することができる。少なくとも一実施例では、このリファインメント・ネットワーク310は、フル解像度、又は少なくともU-Net306よりも高い解像度において動作する浅層畳み込みニューラル・ネットワーク(CNN)とすることができる。少なくとも一実施例では、アップサンプリング・システムは、次いで、フル解像度において、作動しているU-Net306に比肩し得る、相当により高い品質において、ただし、はるかに低いコストで、且つ、場合によってはるかに低いレイテンシで画像を再構築することができる。
【0017】
少なくとも一実施例では、リファインメント・ネットワークの例示的なアーキテクチャ336が、図3Bの構成330において示されている。少なくとも一実施例では、同様の構成要素を含むが、U-Net出力334から精緻化出力366までのスキップ接続も含む、代替的なリファインメント・ネットワーク・アーキテクチャ362を利用することができる。少なくとも一実施例では、これらのスキップ接続は、畳み込み層の間で利用することができ、これは画像品質を改善するのに役立ち得る。少なくとも一実施例では、畳み込み層の数、並びに、対応するカーネル・サイズ及び特徴の数は、利用可能な計算バジェットに少なくとも部分的に依存し得るため、異なるリファインメント・ネットワーク内で変化し得る。少なくとも一実施例では、リファインメント・ネットワークは、4つの畳み込み層から成ることができ、連結されたネットワーク入力が2つの別個の分岐において処理される。少なくとも一実施例では、第1の分岐は、活性化関数と組み合わされた3×3畳み込み340を通じて、次いで1×1畳み込み344+活性化関数を通じてこれらの入力を処理する。少なくとも一実施例では、第2の分岐は、その出力が加算モジュール又はプロセス346によってスキップ接続を有する以前の畳み込みの出力に加算される、学習済み3×3畳み込み342を計算する。少なくとも一実施例では、この和は別の1×1畳み込み348によって処理されて、図3Cに示すような別の加算モジュール又はプロセス364を使用して加算される最終スキップ接続などを通じて、U-Net出力のセットに加算することができる出力テンソルが生成される。少なくとも一実施例では、1つ又は複数の3×3畳み込みが、実行時間コストをさらに低減するために、1×1畳み込みに置き換えられてもよい。少なくとも一実施例では、畳み込みの実行などの図3A図3B、及び図3Cに示すいずれかの構成要素の論理は、本開示において例示又は示唆されているように、類似の又は異なるタイプの1つ又は複数のプロセッサ又はシステムにおいて実施されてもよい。
【0018】
少なくとも一実施例では、リファインメント・ネットワークは、フル出力解像度においてピクセル毎に作動する、小さい浅層リファインメント・ネットワークである。少なくとも一実施例では、そのようなリファインメント・ネットワークは、U-Netからのアップサンプリング結果を、フル解像度画像データと組み合わせる。少なくとも一実施例では、そのようなリファインメント・ネットワークは、主にこのU-Netからの残差に基づいて、精緻化を行うことができる。少なくとも一実施例では、このリファインメント・ネットワークは、この深層U-Netからのアップサンプリング出力にわずかな調整を行うことができ、これによって、これらのより低い解像度のブレンディング重みをアップサンプリングするために使用されるアップサンプリング・アルゴリズムの態様を改善することができる。少なくとも一実施例では、そのような手法は、フル解像度入力画像を空間ドメインで見て、このU-Netから入来する深層特徴を利用して、この画像データによって何が行われる必要があるかに関するコンテキストを提供することによって、高周波又は高解像度出力データを生成することができる。少なくとも一実施例では、このリファインメント・ネットワーク内のスタックされた畳み込みの最上部の分岐が、この処理のほとんどを実行することができる。少なくとも一実施例では、規則的なフル解像度入力データは、このU-Netからのアップスケーリングされた特徴と連結することができる。少なくとも一実施例では、次いで、より低い分岐が、再ダウンサンプリングされた解像度にマッピングされ、下向きの矢印が、決定されている残差の対応するセットを表す。少なくとも一実施例では、このリファインメント・ネットワークは、次いで、低解像度特徴セット及び高解像度特徴セット、並びに、これらの間の残差を比較することができる。少なくとも一実施例では、次いで、この残差データを使用して、これらの差分に少なくとも部分的に基づいて、高解像度画像空間に適用するためのわずかなオフセットを決定することができる。少なくとも一実施例では、この高解像度のピクセル毎のデータは、このU-Netからのこれらのより低い解像度の特徴とともに入力され、このU-Netからのこれらの出力は、深層学習済み特徴であるが、このより高い解像度の生画像データの高周波内容部分を欠く。少なくとも一実施例では、リファインメント・ネットワークは、1つ又は複数の出力画像のピクセル重みを決定するために使用されるデータへの精緻化を生成することができる。少なくとも一実施例では、そのようなリファインメント・ネットワークは、他のデータの精緻化、及び、関連し得るような、本明細書の他の箇所においてより詳細に論じられているような精緻化を生成することができ、他のそのような選択肢の中でも、(ネットワーク処理の後にチャネル毎に平均化することができ、次のフレームのRGB履歴によってワープすることができる)学習済み履歴のチャネルの数(たとえば、5)、異方性ガウス・フィルタ・パラメータなどのフィルタ・パラメータのためのチャネルの数(たとえば、3)、少なくとも1つの履歴フレーム及び現在のフレームのデータの適応的ジッタ・アウェア・ブレンディングのための少なくとも1つのチャネルを含むことができる。
【0019】
少なくとも一実施例では、リファインメント・ネットワーク310及び/又はU-Net306の少なくともいくつかの層は、それらの重み及び/又は活性化を、疎な様式で表され得る。少なくとも一実施例では、このとき、いくつかのゼロ値要素は、明示的な値として記憶されなくてもよい。少なくとも一実施例では、そのような疎な表現は、これらの層を計算するのに必要とされる数学演算の数を節約することを可能にすることができる。少なくとも一実施例では、疎な活性化及び/又は重みはまた、それらが使用するストレージを対応する密な表現よりも少なくし、これらの活性化及び/又は重みの転送によって使用されるメモリ帯域幅を少なくするように記憶することもできる。少なくとも一実施例では、特定の疎な表現のフォーマットはまた、疎であり、数が低減された数学演算を利用してスループット及び/又は効率をより高くする、特定の深層学習ハードウェアを使用することを可能にすることもできる。少なくとも一実施例では、リファインメント・ネットワーク310及び/又はU-Net306の少なくともいくつかの層は、それらの重み及び/又は活性化を、精度が低減された数値フォーマットで表される。少なくとも一実施例では、そのような精度が低減されたフォーマットを使用することによって、重み及び活性化をより小さい空間内に記憶することが可能になり、それらの送信に必要な帯域幅が小さくなる。少なくとも一実施例では、精度が低減された活性化及び重みは、処理及び送信のスループット及び/又は効率を増大させるために、特定の深層学習ハードウェアによって使用することができる。少なくとも一実施例では、リファインメント・ネットワーク310及び/又はU-Net306の少なくともいくつかの層は、疎な表現と、数値精度が低減されたフォーマットの両方を使用して表すことができる。少なくとも一実施例では、そのようなプロセスは、4分の1解像度においてパラメータ予測を生成することができ、これはその後、目標解像度にアップスケーリングすることができる。少なくとも一実施例では、フル解像度において一次ネットワークを作動させることに比肩する画像品質を達成することができるが、実行時間コストは約20%である。少なくとも一実施例では、リファインメント・ネットワークを使用することによって、ネットワークが、より正確な予測及び著しくより鮮明な画像を生成することが可能になる。
【0020】
少なくとも一実施例では、図4Aに示すような、画像を生成するためのプロセス400を利用することができる。少なくとも一実施例では、レンダリング・エンジン又はアプリケーションから受信される画像データ、及び、バッファ又はリポジトリに記憶されている以前の画像データなどの、現在の画像及びシーケンス内の少なくとも1つの以前の画像の画像データを取得することができる402。少なくとも一実施例では、この画像データは、他のそのような選択肢の中でも、ピクセル毎の色データ、運動ベクトル・データ、及び深度データなどのデータを含んでもよい。少なくとも一実施例では、この画像データは、このデータを処理する計算、ストレージ、又は他のリソース・コストを低減するために、より低い解像度にダウンサンプリングすることができる。少なくとも一実施例では、この又は別のそのようなプロセスの任意の論理は、本開示に例示又は説明されている任意のプロセッサ若しくはシステム、又はそれらの組合せにおいて実行されてもよい。少なくとも一実施例では、このより低い解像度の画像データは、ブレンディング重みのセット、又は他のそのような画像パラメータを推論するために、U-Net又は他のCNNなどの深層ニューラル・ネットワークを使用して処理することができる406。少なくとも一実施例では、これらのブレンディング重みは、ダウンサンプリングされる前のこの画像データの元の解像度にアップサンプリングすることができる408。少なくとも一実施例では、これらのアップサンプリングされたブレンディング重みは、リファインメント・ネットワークへの入力として、元の(ダウンサンプリングされていない)解像度における現在の及び以前の画像データとともに提供することができる410。少なくとも一実施例では、この元のより高い解像度にあるこの画像データ内の良好な特徴に少なくとも部分的に基づいて調整されるブレンディング重みのセット(又は他の画像パラメータ)は、このリファインメント・ネットワークから受信することができる412。少なくとも一実施例では、少なくとも部分的に、これらの調整されたブレンディング重みに従ってこの現在の画像及び少なくとも1つの以前の画像からのピクセル特有の色値をブレンドすることによって、1つ又は複数の出力画像を生成することができる414。
【0021】
少なくとも一実施例では、図4Bに示すような、画像を生成するためのプロセス450を実行することができる。少なくとも一実施例では、1つ又は複数のピクセル・ブレンディング重みを生成することができる452。少なくとも一実施例では、これらの1つ又は複数のピクセル・ブレンディング重みは、より高い解像度の画像データを入力として取り込むリファインメント・ネットワークを使用することなどによって、調整することができる454。少なくとも一実施例では、空間時間的スーパー・サンプリング・システムによって生成され得るものなどの、これらの調整されたピクセル・ブレンディング重みを使用して、1つ又は複数の画像を生成することができる456。
【0022】
少なくとも一実施例では、ブレンディング重みを決定するために必要とされるリソースの量は、すべてよりも少ない利用可能な色チャネルを利用することによって低減することができる。少なくとも一実施例では、これは、そのクロミナンスとは別個のものである、画像内の輝度を表すルマ・チャネルのみを利用することを含むことができる。少なくとも一実施例では、フルRGB(赤緑青)又は他の色値を使用する代わりに、ルマ・チャネルなどの単一のチャネルを使用することもできる。少なくとも一実施例では、ルマ情報は、現在のフレームと以前の再構築フレーム、又は履歴フレームの両方について決定することができる。少なくとも一実施例では、これは、処理されるべき情報を、6つの情報チャネル(現在のRGB及び以前のRGB)から2つのチャネル(現在のルマ及び以前のルマ)へと大幅に低減することを可能にすることができる。少なくとも一実施例では、この現在のフレーム及び以前のフレームのルマ情報のみ(及び、利用される場合は分散マスク)が、このニューラル・ネットワークへの入力として提供される。少なくとも一実施例では、このニューラル・ネットワークは色値を推論せず、色値又はピクセル値に適用されるべきフィルタを推論するため、単一の情報チャネルを利用することができる。少なくとも一実施例では、このネットワークは、現在のフレームの再構築に以前のピクセル・データを再使用することができる範囲を実効的に決定しており、この目的を達成するためには、現在のフレームと以前のフレームの両方に対して、単一の色データ・チャネルで十分である。少なくとも一実施例では、人間の眼は色の変化よりもルマ(すなわち、輝度の変化)により感受性であるため、ルマが利用される。少なくとも一実施例では、この手法の次元を低減することはまた、一般化を増大する助けともなる。少なくとも一実施例では、言及されているように、ルマ値のみを使用して分散マスクを生成することもでき、履歴フレームからのピクセルのルマ値が、現在のフレームの対応するルマ平均値及び標準偏差値に対して比較される。
【0023】
少なくとも一実施例では、ブレンディングの前に、1つ又は複数の色フィルタを少なくとも現在のフレームに適用することができる。少なくとも一実施例では、図2に関して論じたようなアップサンプリング・プロセスを利用して、第1の解像度においてレンダリングされている画像を、目標出力解像度などのより高い解像度にある画像にアップサンプリングすることができる。少なくとも一実施例では、このアップサンプリングの結果として、いくらかブロックノイズのある又はギザギザしている画像がもたらされる可能性があり、これは、アンチ・エイリアシング・プロセスを通じて部分的に対処することができる。少なくとも一実施例では、最初に色フィルタを適用して、このアップサンプリング画像内のこれらのギザギザしたエッジを取り除くことによって、ブレンディングを改善することができる。少なくとも一実施例では、このフィルタリングをこのアップサンプリング画像に適用することは、この画像の実効的な解像度を増大させることを助けることができる。少なくとも一実施例では、ガウス・フィルタなどのフィルタを適用することができる。少なくとも一実施例では、これは、パラメータ化異方性ガウス・フィルタとすることができる。少なくとも一実施例では、一般に同じ色値を共有する3ピクセル×3ピクセルのブロックが存在することになるため、大きい比(たとえば、9倍)のアップサンプリング・プロセスが、相対的にギザギザの多い又は低解像度に見える画像をもたらす可能性がある。少なくとも一実施例では、このブロックノイズは、フィルタを適用してこれらの色を取り除くことによって、大幅に低減することができる。少なくとも一実施例では、大幅により多いピクセル・データを生成する結果として、5×5フィルタについてネットワークの出力層内の25個のチャネルなど、ネットワークの出力層内に大幅により多い出力チャネルが必要になり得る。少なくとも一実施例では、非常に高い解像度について、この追加のデータは、このネットワークの実行を非常に低速にする可能性がある。少なくとも一実施例では、このフィルタについて明示的に25の数すべてを予測する代わりに、パラメータ化モデルを、そのフィルタについて予測することができる。少なくとも一実施例では、これは、このパラメータ化モデルについて、数の小さいセット(たとえば、3)のみを推論することを含むことができ、これは、これらの25の関連するピクセルに適用することができる。少なくとも一実施例では、これら3つの数は後に、これら3つの数を異方性ガウス・カーネル、又は他のパラメータ化動的フィルタ・カーネルのパラメータとして解釈することによって、25の数にインスタンス化することができる。少なくとも一実施例では、そのような手法は、ニューラル・ネットワーク又は機械学習を利用しないアルゴリズムとともに使用することができる。
【0024】
少なくとも一実施例では、そのようなプロセスに利用される処理、メモリ、及び他のリソースをさらに低減することが望ましい場合がある。少なくとも一実施例では、ニューラル・ネットワークに提供される画像及び入力は、最初に、このニューラル・ネットワークをより低い解像度において動作させるためにダウンサンプリングすることができる。少なくとも一実施例では、このニューラル・ネットワークは、個々のピクセル色値ではなく、画像のロケーションに適用されるべきフィルタ又はブレンディング重みを決定しているため、このネットワークをより低い解像度において作動させて、高い画像再構築品質を維持しながら、リソース要件及びレイテンシを低減することが可能である。少なくとも一実施例では、これは、少なくとも現在の画像及び以前の再構築画像を半分の解像度、又は別の低減された解像度にダウンサンプリングすることを含むことができる。少なくとも一実施例では、このニューラル・ネットワークは、フル解像度又は低減された解像度において訓練することができ、ただし、推論時には低減された解像度において実行することができる。少なくとも一実施例では、これは、表示解像度を、このニューラル・ネットワークが動作する解像度から分離する役割を果たすことができる。少なくとも一実施例では、規則的なボックス・フィルタを用いた2×2ダウンサンプリングを含んでもよいものなどのダウンサンプリング・フィルタを適用することができるが、他のフィルタ及び比を利用することもできる。少なくとも一実施例では、このより低い解像度において決定されるブレンディング重みを、目標出力解像度において画像を再構築するために、より高い解像度の画像又は画像セットに適用することができる。少なくとも一実施例では、このニューラル・ネットワークの出力は、ブレンディング及びフィルタリングに適用する前にアップサンプリングすることができる。少なくとも一実施例では、ブレンディング重み出力は、平滑であり、結果、解像度の差は、それらのブレンディング重みを適用するときに、品質に大きく影響しない。
【0025】
少なくとも一実施例では、前述したように、サブピクセル・ジッタ・オフセットを決定し、利用することができる。少なくとも一実施例では、図2に関して説明されているものなどのアップサンプリング・システムを使用して、シーケンスの個々のフレームをアップスケーリングすることができる。少なくとも一実施例では、これは、ジッタ・アウェアなアップサンプリング及びアップサンプリング解像度におけるサンプルの累積を含むことができる。少なくとも一実施例では、この以前のプロセス・データは、アップサンプリングされた出力画像を推論するための少なくとも1つのニューラル・ネットワークを含むアップサンプラ・システムへの入力として、現在の入力フレーム及び以前の推論されたフレームとともに提供することができる。少なくとも一実施例では、アップサンプリング・プロセスは、より低い解像度のレンダリング画像の各個々のピクセルについて実行することができる。少なくとも一実施例では、アップサンプリング・プロセスの結果として、そのピクセルからの色情報が、サイズがより大きいアップスケーリング画像内に対応するピクセル領域に適用され得る。少なくとも一実施例では、このアップスケーリング画像内のこのピクセルを、複数の個々のピクセルにセグメント化(又はマッピング)することができる。少なくとも一実施例では、アップサンプリングは、4倍アップサンプリングとすることができ、入力画像の各ピクセルが、4つのより高い解像度のピクセルにセグメント化される。
【0026】
少なくとも一実施例では、色は、中心ピクセル位置を有するピクセルについて決定される。少なくとも一実施例では、次いで、レンダリングされるべきより低い解像度の画像は、この中心ピクセル・ロケーションを中心とする、このピクセルについて報告される単一の色値を有する。しかしながら、少なくとも一実施例では、シーケンス内のフレーム又は画像の間でジッタリングが実行され得、色決定の中心点が、このピクセル内の別の点へとわずかにシフトされる。少なくとも一実施例では、これは、ピクセル中心からサブピクセル・オフセットだけのサンプル点オフセットに対応することができる。少なくとも一実施例では、所与のピクセルの色情報を決定するために、ピクセル分析領域(たとえば、3×3ピクセル分析領域)を依然として使用することができるが、この3×3ピクセル分析のロケーションは、そのピクセル分析領域を中心合わせするために使用されるジッタ・ロケーションに基づいてわずかにシフトする。少なくとも一実施例では、これらのジッタ・ロケーションは、シーケンスのフレーム間で、ランダムに又は決定されたパターン若しくはシーケンスに従ってのいずれかで、変化し得る。少なくとも一実施例では、このピクセルについて決定される色データは、彩度、RGB(赤緑青)色値、又は、その最終色値ではなくピクセルの輝度を表す光度(たとえば、ルマ)値などのデータを含むことができ、ルマは、典型的には、彩度色値と組み合わされて、最終ピクセル値を生成する。
【0027】
少なくとも一実施例では、シーケンスの画像を生成するためのプロセスを実行することができ、画像(又はビデオ・フレーム)が第1の解像度においてレンダリングされる。少なくとも一実施例では、この画像は、ビデオ、ゲーミング、仮想現実(VR)、拡張現実(AR)、又は他のそのようなアプリケーション若しくはコンテンツのタイプに関連し得るものとしての、任意の適切なタイプのコンテンツの一部とすることができる。少なくとも一実施例では、この解像度は、レンダリング・エンジンに由来するか、又は、所望の性能を提供するものであってもよい。少なくとも一実施例では、このレンダリング画像は、ジッタ・アウェアなアップサンプリングを使用して、第2のより高い解像度にアップサンプリングすることができ、このシーケンス内の1つ又は複数の以前の画像の以前のオフセットとは異なり得る、決定されるサブピクセル・オフセットが、この画像について決定される。少なくとも一実施例では、このアップサンプリング画像は、ニューラル・ネットワークに提供されて、このアップスケーリング画像を以前の画像とブレンドするために使用されるべき1つ又は複数のブレンディング重みを決定することができる。
【0028】
少なくとも一実施例では、追加の計算された特徴をU-Netとリファインメント・ネットワークの両方への入力に含めることによって、画像品質及び安定性をさらに改善することができる。一実施例では、このU-Netとリファインメント・ネットワークの両方は、現在のフレームのルマ、ワーピング履歴ルマ、ネットワーク学習済みメモリ、及び運動ベクトル差分情報を受信する。さらに別の実施例では、時間的色分散マスクが、時間的安定性を改善するための追加の特徴として計算される。
【0029】
少なくとも一実施例では、ネットワークは、そうでなければ制限された入力情報が時間的不安定性、ゴースト発生アーティファクト、及び不満足なアンチ・エイリアシングなどの問題をもたらす可能性があるため、高い画像品質を提供するために入力特徴のより大きいセットを利用することができる。少なくとも一実施例では、これは、空間的勾配などの情報を含むことができる。少なくとも一実施例では、空間的勾配は、近傍の空間ピクセルの差に少なくとも部分的に基づいて計算され、一方、時間的勾配は、現在のフレームと、ワーピング履歴又はワーピング履歴フレームとの間の色値の差に少なくとも部分的に基づいて計算される。少なくとも一実施例では、これらの空間的勾配は、水平勾配若しくは垂直勾配、又は、現在の画像若しくはフレームの関心ピクセルに関して空間的に決定される他のそのような勾配を含むことができる。少なくとも一実施例では、これらの空間的勾配は、入力画像内の近傍の水平及び/又は垂直ピクセル間の差を表すことができる。少なくとも一実施例では、これらの空間的勾配は、フルカラー(たとえば、RGB)、単一色チャネル、グレースケール、又は他のそのような色値を使用して、この差分情報を提示することができる。少なくとも一実施例では、この空間的勾配情報を、時間的勾配情報に加えて使用して、現在のフレーム内の関心ピクセルの改善されたブレンディング及び色決定を可能にすることができる。
【0030】
少なくとも一実施例では、時間的色勾配は、フルカラー(たとえば、RGB)、単一色チャネル、又はグレースケールなどの、任意の関連する色空間内の色とすることができる、ピクセルの現在の色値に対して計算することができる。少なくとも一実施例では、これは、ワーピング履歴バッファに対して比較することができる。少なくとも一実施例では、これらの時間的色勾配は、現在のフレームとワーピング履歴フレームとの間の差を表すこともでき、対応する点又は特徴の色値がブレンディングに使用されることを保証するために、現在のフレームのそのピクセル・ロケーションの運動ベクトルが、履歴フレームからのロケーションに適用される。少なくとも一実施例では、ワーピング履歴フレームに対する現在のフレーム内の運動ベクトル成分間の差の絶対値の形態をとってもよいものなどの、運動ベクトル差を使用することもできる。少なくとも一実施例では、時間的色勾配を使用することによって、ネットワークが、様々なロケーションにおいて急速な色変化又は閉塞をより良好に検出及び管理することが可能であることによって、ちらつきなどの高周波時間現象の発生をより良好に防止することを助けることができる。少なくとも一実施例では、これらの時間的色勾配はまた、シーケンス内の以前の2つ、3つ、又はより多くの画像又はフレームに対して決定され得るものなどの、2つ以上の以前の履歴フレームに基づいて決定することもできる。
【0031】
少なくとも一実施例では、行又は列内の水平又は垂直近傍ピクセル値間のこのデルタ値は、本明細書の他の箇所において論じられているようにルマ空間のみに実行され得るものなど、フル色空間、単一チャネル色空間、又はグレースケールにおいて分析することができる。少なくとも一実施例では、そのような空間的勾配を使用することによって、エッジ、及び、ネットワークがより高い品質の画像出力を生成することを可能にする様々なタイプのテクスチャ勾配の識別を大幅に改善することを可能にすることができる。
【0032】
追加の特徴を、入力特徴の豊富な組合せの一部として、時間的スーパー・サンプリングなどの目的のためにニューラル・ネットワークに提供することができる。少なくとも一実施例では、これらの追加の特徴は、現在の色値及びワーピング色値と同様の、現在のフレームのルマ値及びワーピング履歴フレーム・ルマ値を含むことができる。少なくとも一実施例では、より高い品質の画像出力を提供することを支援することができるビデオ又は画像シーケンスに関する任意の履歴データを含んでもよいものとしての、学習済み履歴データが提供されてもよい。少なくとも一実施例では、人間の視覚が特に感受性である色データのルマ・チャネルを、異なる色空間に対応する入力としてネットワークに供給することができ、シーケンス内の後続の画像又はビデオ・フレームをアップサンプリングするためにアクセスすることができる履歴バッファに書き込むこともできる。少なくとも一実施例では、記憶されているRBGデータは、ともにワーピングされた3つすべてのチャネルを有し、次いで、ルマ履歴が、このネットワークへの入力として提供される。少なくとも一実施例では、ワーピングは、レンダリング・エンジンによって提供され、次いで、色情報のルマチャネルのワーピングされ、ぼかされた色履歴として記憶される運動ベクトルを使用して実行することができる。
【0033】
少なくとも一実施例では、深度差情報を提供することもできる。少なくとも一実施例では、これは、ワーピング履歴フレームに対する現在のフレーム内の深度値間の差の絶対値のログの形態をとることができる。少なくとも一実施例では、この深度データは、レンダリング・エンジン又はアプリケーションによって提供されてもよく、ワーピングは、色データについて実行されるものとして履歴ピクセル・ロケーションに適用されてもよい。少なくとも一実施例では、深度情報は、所与のピクセル・ロケーションにおける同じ物体の色値など、適切な色値がブレンドされていることを保証することを助けることができる。少なくとも一実施例では、これは、ここでは深度データを記憶及びワーピングすることを除いて、運動ベクトル差が計算及び管理される様態と同様に管理することができる。少なくとも一実施例では、ワーピング履歴深度データ及びワーピング履歴運動データが、所与のシーン内で何が起こっているかに関して、非常に異なり、多くの場合相補的である情報を提供することができるため、これらの両方を利用することが有益であり得る。少なくとも一実施例では、これは、運動ベクトル差が実際には存在しない場合に深度差のインスタンスを捕捉すること、及びその逆を含むことができる。少なくとも一実施例では、両方のデータを使用することが、対象又はシーンのセマンティクスに関してネットワークを助けることができ、そのネットワークがより良好な全体的決定を行うことを助けることができる。
【0034】
少なくとも一実施例では、色分散マスクを提供し、利用することもできる。少なくとも一実施例では、このマスクは、現在のフレーム内のピクセル近傍の平均値と、対応するワーピング履歴値との間の差を、スカラー値を乗算した、この現在のフレーム内のこのピクセル近傍の標準偏差によって除算した値を表すことができる。少なくとも一実施例では、このマスクは、フルカラー、単一チャネル、又はグレースケール色データを使用して生成することができる。少なくとも一実施例では、このマスクは、近傍内の中心ピクセルと、その近傍内の近傍ピクセルのセットとの間の色の変化を表すことができる。少なくとも一実施例では、フルカラーよりも少ない色データを使用することによって、このマスクを計算し、利用するのに必要な計算及びストレージの量を大幅に低減することができる。
【0035】
少なくとも一実施例では、値の変動又は組合せを使用することによって利点を得ることができる。少なくとも一実施例では、これは、運動ベクトル差、色分散、及び/又はルマ分散の1つ又は複数の数値的に精度が低減されたバージョンを使用することを含むことができる。少なくとも一実施例では、これらの低精度バージョンは、依然として出力品質の大幅な(又は少なくとも著しい)改善を提供するが、それほど多くのリソース・オーバーヘッドを必要としない。少なくとも一実施例では、ユーザは、これら又は他のそのような値について精度又は性能の間で選択する選択肢を有することができる。少なくとも一実施例では、運動ベクトル差、深度差、及び色分散の総和などの、差の総和も使用されてもよい。
【0036】
少なくとも一実施例では、ピクセル毎の空間的変動と時間的変動の両方を対象とする特徴を使用することによって、ネットワークは、いつ物体又は物体の部分が閉塞され、及び/又は、閉塞されなくなるか、並びに、照明及び陰影が経時的にどのように変化するかをより良好に理解することが可能である。少なくとも一実施例では、ネットワークは、次いで、アップスケーリングされた現在のフレームのデータのみを使用すべきである場合に対して、データをどの程度累積すべきか、及び、フレームにまたがってデータをどこに累積すべきであるかに関してより良好な決定を行うことができる。少なくとも一実施例では、この結果として、ちらつき、ゴースト発生、及び閃光などの時間的アーティファクトがより少なくなって、画像がより安定する。少なくとも一実施例では、そのような手法はまた、より高いアップスケーリング比を提供し、そのようなアップスケーリングを利用するビデオ・ゲームの性能の改善など、アプリケーション性能を増大させることもできる。
【0037】
少なくとも一実施例では、これらの値の少なくともいくつかは、低精度浮動小数点フォーマットを使用するなど、より低い精度で利用することができる。少なくとも一実施例では、これは、一部のデータをFP32に記憶し、一部をFP16に記憶し、一部をFP8に記憶することを含むことができる。少なくとも一実施例では、様々な値の精度は、ユーザ、アプリケーション、又は他のそのようなエンティティ若しくはソースによって構成可能でもあってもよいものとして、適切な場合に低減することができる。少なくとも一実施例では、FP8フォーマットは、1つの符号ビット、5つの指数ビット、及び2ビットの仮数を含んでもよい。少なくとも一実施例では、同じビット幅を利用するが、たとえば、異なる数の指数ビットのために、場合によって引き換えに仮数ビットをより少なくするなど、異なるビット・フォーマットを利用することができる、異なる内部表現も使用されてもよい。少なくとも一実施例では、これは、精度対数値表現の範囲に関するトレードオフを表し得る。少なくとも一実施例では、特定のデータ値の精度を低減することによって、より多くの処理、メモリ、及び他のそのようなファクタ又はリソースを必要とし得る、本明細書において論じられているように追加の特徴を利用するときに経験され得る、追加のオーバーヘッド、及び、性能に対する可能性のある打撃をオフセットすることを助けることができる。少なくとも一実施例では、特徴入力を組み合わせて、出力画像データの品質を改善することを助けるためにこの追加のデータを利用しながら、処理されるべきデータの量を低減し、したがって、性能に対する全体的な影響を低減するように試行することができる。少なくとも一実施例では、これは、運動ベクトル及び色分散データなどの、特徴入力を合計することを含んでもよい。少なくとも一実施例では、総和又は乗算などを通じて、特徴の他の組合せを組み合わせることができる。
【0038】
少なくとも一実施例では、クライアント・デバイス502は、クライアント・デバイス502上のコンテンツ・アプリケーション504の構成要素、及び、図5に示すようなクライアント・デバイス上にローカルに記憶されたデータを使用して、ゲーミング・セッション又はビデオ視聴セッションなどのセッションのためにこのコンテンツを生成することができる。少なくとも一実施例では、コンテンツ・サーバ520上で実行するコンテンツ・アプリケーション524(たとえば、ゲーミング又はストリーミング・メディア・アプリケーション)が、セッション・マネージャ及びユーザ・データベース534内に記憶されたユーザ・データを利用することができるものとして、少なくともクライアント・デバイス502と関連付けられるセッションを開始してもよく、このタイプのコンテンツ又はプラットフォームに必要とされる場合に、コンテンツ532がコンテンツ・マネージャ526によって決定されるようにすることができ、レンダリング・エンジン528を使用してレンダリングされるようにすることができ、ダウンロード、ストリーミング、又は別のそのような送信チャネルによって送信するために適切な送信マネージャ522を使用してクライアント・デバイス502に送信されるようにすることができる。少なくとも一実施例では、このコンテンツを受信するクライアント・デバイス502は、このコンテンツを対応するコンテンツ・アプリケーション504に提供することができ、コンテンツ・アプリケーションは、加えて又は代替的に、ディスプレイ506を通じたビデオ・コンテンツの提示、スピーカ又はヘッドフォンなどの少なくとも1つのオーディオ再生デバイス508を通じた音声及び音楽などのオーディオの提示などの、クライアント・デバイス502を介した提示のためにこのコンテンツの少なくとも一部をレンダリングするためのレンダリング・エンジン510を含んでもよい。少なくとも一実施例では、そのコンテンツが以前にダウンロードされている場合があり、又は、ハード・ドライブ若しくは光ディスクにローカルに記憶されている場合がある場合など、コンテンツの少なくともその部分についてネットワーク540を介した送信が必要ないように、このコンテンツの少なくとも一部がクライアント・デバイス502にすでに記憶されており、レンダリングされており、又はアクセス可能であってもよい。少なくとも一実施例では、データ・ストリーミングなどの送信機構を使用して、このコンテンツをサーバ520又はコンテンツ・データベース534からクライアント・デバイス502に転送することができる。少なくとも一実施例では、このコンテンツの少なくとも一部分は、同じくコンテンツを生成又は提供するためのコンテンツ・アプリケーション552を含んでもよいサード・パーティ・コンテンツ・サービス550などの別のソースから取得又はストリーミングすることができる。少なくとも一実施例では、この機能の部分は、複数のコンピューティング・デバイス、又は、CPUとGPUとの組合せを含んでもよいものなどの、1つ若しくは複数のコンピューティング・デバイス内の複数のプロセッサを使用して実行することができる。
【0039】
少なくとも一実施例では、コンテンツ・アプリケーション524は、このコンテンツがクライアント・デバイス502に送信される前にコンテンツを決定又は分析することができるコンテンツ・マネージャ526を含む。少なくとも一実施例では、コンテンツ・マネージャ526はまた、提供されるべきコンテンツを生成、修正、又は強化することが可能である他の構成要素を含むこともでき、又はそれと協働することもできる。少なくとも一実施例では、これは、エイリアシングされたコンテンツなどのコンテンツを第1の解像度においてレンダリングするためのレンダリング・エンジン528を含むことができる。少なくとも一実施例では、アップサンプリング又はスケーリング構成要素530が、この画像の少なくとも1つの追加のバージョンを、より高い又はより低い、異なる解像度において生成することができ、アンチ・エイリアシングなどの少なくともいくらかの処理を実行することができる。少なくとも一実施例では、少なくとも1つのニューラル・ネットワークを含んでもよいものとしてのブレンディング構成要素532が、本明細書において論じられているように、1つ又は複数の以前の画像に対するそれらの画像のうちの1つ又は複数のブレンディングを実行することができる。少なくとも一実施例では、次いで、コンテンツ・マネージャ526が、クライアント・デバイス502に送信するために、適切な解像度の画像又はビデオ・フレームを選択することができる。少なくとも一実施例では、クライアント・デバイス502上のコンテンツ・アプリケーション504はまた、レンダリング・エンジン510、アップサンプリング・モジュール512、及びブレンディング・モジュール514などの構成要素も含んでもよく、結果、この機能のいずれか又はすべてを、付加的に又は代替的にクライアント・デバイス502上で実行することができる。少なくとも一実施例では、サード・パーティ・コンテンツ・サービス・システム550上のコンテンツ・アプリケーション552もまた、そのような機能を含むことができる。少なくとも一実施例では、この機能の少なくとも一部が実行されるロケーションは、設定可能であってもよく、又は、他のそのようなファクタの中でも、クライアント・デバイス502のタイプ、又は、適切な帯域幅を有するネットワーク接続の可用性などのファクタに依存してもよい。少なくとも一実施例では、アップサンプリング・モジュール530又はブレンディング・モジュール532は、この機能を実行又は支援するための1つ又は複数のニューラル・ネットワークを含んでもよく、それらのニューラル・ネットワーク(又は少なくとも、それらのネットワークのネットワーク・パラメータ)は、コンテンツ・サーバ520又はサード・パーティ・システム550によって提供することができる。少なくとも一実施例では、コンテンツ生成のためのシステムは、1つ又は複数のロケーションにおけるハードウェアとソフトウェアとの任意の適切な組合せを含むことができる。少なくとも一実施例では、1つ又は複数の解像度の生成された画像又はビデオ・コンテンツはまた、その画像又はビデオ・コンテンツのコピーを記憶しているメディア・ソースからのダウンロード又はストリーミングなどのために、他のクライアント・デバイス560に提供することもでき、又はそれにとって利用可能にすることもできる。少なくとも一実施例では、これは、異なるクライアント・デバイスがそのコンテンツを、1つ又は複数の超解像度を含む、異なる解像度において表示することができる場合に、マルチプレーヤ・ゲームのゲーム・コンテンツの画像を送信することを含んでもよい。
【0040】
推論及び訓練の論理
図6Aは、1つ又は複数の実施例に関して推論及び/又は訓練の動作を実行するために使用される推論及び/又は訓練論理615を示す。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。
【0041】
少なくとも一実施例では、推論及び/又は訓練論理615は、1つ又は複数の実施例の態様において推論するように訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層を構成するための順伝播及び/若しくは出力の重み、及び/若しくは入力/出力データ、及び/若しくは他のパラメータを記憶するためのコード並びに/又はデータ・ストレージ601を、限定することなく含んでもよい。少なくとも一実施例では、訓練論理615は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ601を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ601には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU))を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、このコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ601は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを順方向伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、コード及び/又はデータ・ストレージ601の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
【0042】
少なくとも一実施例では、コード及び/又はデータ・ストレージ601の任意の部分は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ601は、キャッシュ・メモリ、ダイナミック・ランダム・アドレス可能メモリ(「DRAM」:dynamic randomly addressable memory)、スタティック・ランダム・アドレス可能メモリ(「SRAM」:static randomly addressable memory)、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ601が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
【0043】
少なくとも一実施例では、推論及び/又は訓練論理615は、1つ又は複数の実施例の態様において推論するために訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層に対応した、逆伝播及び/若しくは出力の重み、及び/若しくは入力/出力データを記憶するためのコード並びに/又はデータ・ストレージ605を、限定することなく含んでもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ605は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを逆伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、訓練論理615は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ605を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ605には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU))を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、このコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ605の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ605の任意の部分は、1つ又は複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ605は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ605が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
【0044】
少なくとも一実施例では、コード及び/又はデータ・ストレージ601と、コード及び/又はデータ・ストレージ605とは、別個のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ601と、コード及び/又はデータ・ストレージ605とは、同じストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ601と、コード及び/又はデータ・ストレージ605とは、部分的に同じストレージ構造で、部分的に別個のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ601と、コード及び/又はデータ・ストレージ605との任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
【0045】
少なくとも一実施例では、推論及び/又は訓練論理615は、訓練及び/又は推論コード(たとえばグラフ・コード)に少なくとも部分的に基づく、又はそれにより示される論理演算及び/又は算術演算を実行するための、整数及び/又は浮動小数点ユニットを含む1つ又は複数の算術論理演算ユニット(「ALU」)610を、限定することなく含んでもよく、その結果が、アクティブ化ストレージ620に記憶されるアクティブ化(たとえば、ニューラル・ネットワーク内の層若しくはニューロンからの出力値)を生成してもよく、これらは、コード及び/若しくはデータ・ストレージ601、並びに/又はコード及び/若しくはデータ・ストレージ605に記憶される入力/出力及び/又は重みパラメータのデータの関数である。少なくとも一実施例では、アクティブ化ストレージ620に記憶されるアクティブ化は、命令又は他のコードを実行したことに応答して、ALU610によって実行される線形代数計算及び又は行列ベースの計算に従って生成され、ここでコード及び/若しくはデータ・ストレージ605並びに/又はコード及び/若しくはデータストレージ601に記憶された重み値は、バイアス値、勾配情報、運動量値などの他の値、又は他のパラメータ若しくはハイパーパラメータとともにオペランドとして使用され、これらのいずれか又はすべてが、コード及び/若しくはデータ・ストレージ605、又はコード及び/若しくはデータ・ストレージ601、又はオン・チップ若しくはオフ・チップの別のストレージに記憶されてもよい。
【0046】
少なくとも一実施例では、ALU610は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路内に含まれるが、別の実施例では、ALU610は、それらを使用するプロセッサ又は他のハードウェア論理デバイス若しくは回路の外部にあってもよい(たとえばコプロセッサ)。少なくとも一実施例では、ALU610は、プロセッサの実行ユニット内に含まれてもよく、又は同じプロセッサ内にあるか異なるタイプの異なるプロセッサ(たとえば、中央処理装置、グラフィックス・プロセッシング・ユニット、固定機能ユニットなど)の間で分散されているかのいずれかであるプロセッサの実行ユニットによりアクセス可能なALUバンク内に、他のやり方で含まれてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ601、コード及び/又はデータ・ストレージ605、並びにアクティブ化ストレージ620は、同じプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、別の実施例では、それらは異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、或いは同じプロセッサ又は他のハードウェア論理デバイス若しくは回路と、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路との何らかの組合せにあってもよい。少なくとも一実施例では、アクティブ化ストレージ620の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。さらに、推論及び/又は訓練コードが、プロセッサ又は他のハードウェア論理若しくは回路にアクセス可能な他のコードとともに記憶されてもよく、プロセッサのフェッチ、デコード、スケジューリング、実行、リタイア、及び/又は他の論理回路を使用してフェッチ及び/又は処理されてもよい。
【0047】
少なくとも一実施例では、アクティブ化ストレージ620は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、アクティブ化ストレージ620は、完全に又は部分的に、1つ若しくは複数のプロセッサ又は他の論理回路の内部にあってもよく、又は外部にあってもよい。少なくとも一実施例では、アクティブ化ストレージ620が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップの利用可能なストレージ、実行される訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。少なくとも一実施例では、図6Aに示す推論及び/又は訓練論理615は、グーグルのTensorflow(登録商標)処理ユニット、Graphcore(商標)の推論処理ユニット(IPU)、又はIntel CorpのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(「ASIC」)と併せて使用されてもよい。少なくとも一実施例では、図6Aに示す推論及び/又は訓練論理615は、中央処理装置(「CPU」)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」)などの他のハードウェアと併せて使用されてもよい。
【0048】
図6Bは、少なくとも一実施例による、推論及び/又は訓練論理615を示す。少なくとも一実施例では、推論及び/又は訓練論理615は、ハードウェア論理を限定することなく含んでもよく、このハードウェア論理では、計算リソースが、ニューラル・ネットワーク内のニューロンの1つ若しくは複数の層に対応する重み値又は他の情報の専用のものであるか、又は他のやり方でそれらと併せてしか使用されない。少なくとも一実施例では、図6Bに示す推論及び/又は訓練論理615は、グーグルのTensorflow(登録商標)処理ユニット、Graphcore(商標)の推論処理ユニット(IPU)、又はIntel CorpのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(ASIC)と併せて使用されてもよい。少なくとも一実施例では、図6Bに示す推論及び/又は訓練論理615は、中央処理装置(CPU)ハードウェア、グラフィックス・プロセッシング・ユニット(GPU)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)などの他のハードウェアと併せて使用されてもよい。少なくとも一実施例では、推論及び/又は訓練論理615は、限定することなく、コード及び/又はデータ・ストレージ601、並びにコード及び/又はデータ・ストレージ605を含み、これらを使用して、コード(たとえばグラフ・コード)、重み値、並びに/又はバイアス値、勾配情報、運動量値、及び/若しくは他のパラメータ若しくはハイパーパラメータ情報を含む他の情報を記憶してもよい。図6Bに示す少なくとも一実施例では、コード及び/又はデータ・ストレージ601並びにコード及び/又はデータ・ストレージ605の各々は、それぞれ計算ハードウェア602及び計算ハードウェア606などの専用計算リソースに関連付けられる。少なくとも一実施例では、計算ハードウェア602及び計算ハードウェア606の各々は、線形代数関数などの数学的関数を、それぞれコード及び/又はデータ・ストレージ601並びにコード及び/又はデータ・ストレージ605に記憶された情報に対してのみ実行する1つ又は複数のALUを備え、その結果は、アクティブ化ストレージ620に記憶される。
【0049】
少なくとも一実施例では、コード並びに/又はデータ・ストレージ601及び605の各々、並びに対応する計算ハードウェア602及び606は、ニューラル・ネットワークの異なる層にそれぞれ対応し、それにより、コード及び/又はデータ・ストレージ601並びに計算ハードウェア602との1つの「ストレージ/計算の対601/602」から結果的に生じるアクティブ化は、ニューラル・ネットワークの概念的組織化を反映させるために、次のコード及び/又はデータ・ストレージ605並びに計算ハードウェア606との「ストレージ/計算の対605/606」への入力として提供される。少なくとも一実施例では、ストレージ/計算の対601/602、及び605/606は、2つ以上のニューラル・ネットワークの層に対応してもよい。少なくとも一実施例では、ストレージ/計算の対601/602、及び605/606の後に、又はそれと並列に、追加のストレージ/計算の対(図示せず)が、推論及び/又は訓練論理615に含まれてもよい。
【0050】
データ・センタ
図7は、少なくとも一実施例が使用されてもよい例示的なデータ・センタ700を示す。少なくとも一実施例では、データ・センタ700は、データ・センタ・インフラストラクチャ層710、フレームワーク層720、ソフトウェア層730、及びアプリケーション層740を含む。
【0051】
図7に示すように、少なくとも一実施例では、データ・センタ・インフラストラクチャ層710は、リソース・オーケストレータ712と、グループ化済みコンピューティング・リソース714と、ノード・コンピューティング・リソース(「ノードC.R.」)716(1)~716(N)とを含んでもよく、ここで「N」は任意の正の整数を表す。少なくとも一実施例では、ノードC.R.716(1)~716(N)は、任意の数の中央処理装置(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・デバイス(たとえば、ダイナミック読取り専用メモリ)、ストレージ・デバイス(半導体ドライブ又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」:virtual machine)、電源モジュール、及び冷却モジュールなどを含んでもよいが、これらに限定されない。少なくとも一実施例では、ノードC.R.716(1)~716(N)のうち1つ又は複数のノードC.R.は、上述したコンピューティング・リソースのうちの1つ又は複数を有するサーバであってもよい。
【0052】
少なくとも一実施例では、グループ化済みコンピューティング・リソース714は、1つ若しくは複数のラック(図示せず)内に収容されたノードC.R.の別々のグループ、又は様々な地理的ロケーション(同じく図示せず)においてデータ・センタに収容された多数のラックを含んでもよい。グループ化済みコンピューティング・リソース714内のノードC.R.の別々のグループは、1つ若しくは複数のワークロードをサポートするように構成又は配分されてもよいグループ化済みのコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含んでもよい。少なくとも一実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のラック内でグループ化されて、1つ又は複数のワークロードをサポートするためのコンピュート・リソースが提供されてもよい。少なくとも一実施例では、1つ又は複数のラックはまた、任意の数の電源モジュール、冷却モジュール、及びネットワーク・スイッチを任意の組合せで含んでもよい。
【0053】
少なくとも一実施例では、リソース・オーケストレータ712は、1つ又は複数のノードC.R.716(1)~716(N)及び/若しくはグループ化済みコンピューティング・リソース714を構成してもよく、又は他のやり方で制御してもよい。少なくとも一実施例では、リソース・オーケストレータ712は、データ・センタ700用のソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含んでもよい。少なくとも一実施例では、リソース・オーケストレータは、ハードウェア、ソフトウェア、又はこれらの何らかの組合せを含んでもよい。
【0054】
図7に示す少なくとも一実施例では、フレームワーク層720は、ジョブ・スケジューラ722、構成マネージャ724、リソース・マネージャ726、及び分配ファイル・システム728を含む。少なくとも一実施例では、フレームワーク層720は、ソフトウェア層730のソフトウェア732、及び/又はアプリケーション層740の1つ若しくは複数のアプリケーション742をサポートするためのフレームワークを含んでもよい。少なくとも一実施例では、ソフトウェア732又はアプリケーション742はそれぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アジュールによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含んでもよい。少なくとも一実施例では、フレームワーク層720は、大規模なデータ処理(たとえば「ビック・データ」)のために分配ファイル・システム728を使用することができるApache Spark(商標)(以下「Spark」)など、無料でオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってもよいが、これに限定されない。少なくとも一実施例では、ジョブ・スケジューラ722は、データ・センタ700の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含んでもよい。少なくとも一実施例では、構成マネージャ724は、ソフトウェア層730、並びに大規模なデータ処理をサポートするためのSpark及び分配ファイル・システム728を含むフレームワーク層720などの異なる層を構成することが可能であってもよい。少なくとも一実施例では、リソース・マネージャ726は、分配ファイル・システム728及びジョブ・スケジューラ722をサポートするようにマッピング若しくは配分されたクラスタ化済み又はグループ化済みのコンピューティング・リソースを管理することが可能であってもよい。少なくとも一実施例では、クラスタ化済み又はグループ化済みのコンピューティング・リソースは、データ・センタ・インフラストラクチャ層710にあるグループ化済みコンピューティング・リソース714を含んでもよい。少なくとも一実施例では、リソース・マネージャ726は、リソース・オーケストレータ712と連携して、これらのマッピング又は配分されたコンピューティング・リソースを管理してもよい。
【0055】
少なくとも一実施例では、ソフトウェア層730に含まれるソフトウェア732は、ノードC.R.716(1)~716(N)、グループ化済みコンピューティング・リソース714、及び/又はフレームワーク層720の分配ファイル・システム728のうちの少なくとも一部分によって使用されるソフトウェアを含んでもよい。1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含んでもよいが、これらに限定されない。
【0056】
少なくとも一実施例では、アプリケーション層740に含まれるアプリケーション742は、ノードC.R.716(1)~716(N)、グループ化済みコンピューティング・リソース714、及び/又はフレームワーク層720の分配ファイル・システム728のうちの少なくとも一部分によって使用される1つ若しくは複数のタイプのアプリケーションを含んでもよい。1つ若しくは複数のタイプのアプリケーションは、任意の数のゲノム学アプリケーション、認識コンピュート、並びに訓練若しくは推論のソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、TensorFlow、Caffeなど)を含む機械学習アプリケーション、又は1つ若しくは複数の実施例と併せて使用される他の機械学習アプリケーションを含んでもよいが、これらに限定されない。
【0057】
少なくとも一実施例では、構成マネージャ724、リソース・マネージャ726、及びリソース・オーケストレータ712のうちのいずれかは、任意の技術的に実行可能なやり方で取得された任意の量及びタイプのデータに基づき、任意の数及びタイプの自己修正措置を実施してもよい。少なくとも一実施例では、自己修正措置は、データ・センタ700のデータ・センタ演算子が、不良の恐れのある構成を決定しないようにし、十分に利用されていない且つ/又は性能の低いデータ・センタの部分をなくせるようにしてもよい。
【0058】
少なくとも一実施例では、データ・センタ700は、1つ若しくは複数の機械学習モデルを訓練し、又は本明細書に記載の1つ若しくは複数の実施例による1つ若しくは複数の機械学習モデルを使用して情報を予測若しくは推論するためのツール、サービス、ソフトウェア、又は他のリソースを含んでもよい。たとえば、少なくとも一実施例では、機械学習モデルは、データ・センタ700に関して上述したソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練されてもよい。少なくとも一実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練済み機械学習モデルは、本明細書に記載の1つ又は複数の技法によって計算された重みパラメータを使用することにより、データ・センタ700に関して上述したリソースを使用して、情報を推論又は予測するために使用されてもよい。
【0059】
少なくとも一実施例では、データ・センタは、上述したリソースを使用して訓練及び/又は推論を実行するために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、又は他のハードウェアを使用してもよい。さらに、上述した1つ又は複数のソフトウェア及び/又はハードウェアのリソースは、画像認識、音声認識、又は他の人工知能サービスなどの情報の訓練又は推論の実行を、ユーザが行えるようにするためのサービスとして構成されてもよい。
【0060】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図7のシステムにおいて使用されてもよい。
【0061】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0062】
コンピュータ・システム
図8は、例示的なコンピュータ・システムを示すブロック図であり、このコンピュータ・システムは、少なくとも一実施例による、命令を実行するための実行ユニットを含んでもよいプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SoC)、又はこれらの何らかの組合せ800を有するシステムであってもよい。少なくとも一実施例では、コンピュータ・システム800は、本明細書に記載の実施例などにおいて本開示に従ってデータを処理するためのアルゴリズムを実行する論理を含む実行ユニットを使用するための、プロセッサ802などの構成要素を、限定することなく含んでもよい。少なくとも一実施例では、コンピュータ・システム800は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、Xeon(商標)、Itanium(登録商標)、XScale(商標)及び/又はStrongARM(商標)、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含んでもよいが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含め)他のシステムが使用されてもよい。少なくとも一実施例では、コンピュータ・システム800は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なWINDOWS(登録商標)のオペレーティング・システムのあるバージョンを実行してもよいが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux)、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースが使用されてもよい。
【0063】
実施例は、携帯型デバイス及び組み込みアプリケーションなど、他のデバイスで使用されてもよい。携帯型デバイスのいくつかの例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」:personal digital assistant)、及び携帯型PCを含む。少なくとも一実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」:digital signal processor)、システム・オン・チップ、ネットワーク・コンピュータ(「NetPC」:network computer)、セット・トップ・ボックス、ネットワーク・ハブ、広域ネットワーク(「WAN」:wide area network)スイッチ、又は少なくとも一実施例による1つ又は複数の命令を実行することができる任意の他のシステムを含んでもよい。
【0064】
少なくとも一実施例では、コンピュータ・システム800は、限定することなくプロセッサ802を含んでもよく、このプロセッサ1802は限定することなく、本明細書に記載の技法による機械学習モデルの訓練及び/又は推論を実行するための1つ又は複数の実行ユニット808を含んでもよい。少なくとも一実施例では、コンピュータ・システム800は、シングル・プロセッサのデスクトップ又はサーバ・システムであるが、別の実施例では、コンピュータ・システム800はマルチプロセッサ・システムであってもよい。少なくとも一実施例では、プロセッサ802は、限定することなく、複合命令セット・コンピュータ(「CISC」:complex instruction set computer)マイクロプロセッサ、縮小命令セット・コンピューティング(「RISC」)マイクロプロセッサ、超長命令語(「VLIW」)マイクロプロセッサ、命令セットの組合せを実施するプロセッサ、又は任意の他のプロセッサ・デバイス、たとえばデジタル信号プロセッサなどを含んでもよい。少なくとも一実施例では、プロセッサ802は、プロセッサ・バス810に結合されてもよく、このプロセッサ・バスは、プロセッサ802とコンピュータ・システム800内の他の構成要素との間でデジタル信号を送信してもよい。
【0065】
少なくとも一実施例では、プロセッサ802は、限定することなく、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)804を含んでもよい。少なくとも一実施例では、プロセッサ802は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ802の外部にあってもよい。他の実施例は、特定の実施形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せも含んでよい。少なくとも一実施例では、レジスタ・ファイル806は、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタを限定することなく含む様々なレジスタに、異なるタイプのデータを記憶してもよい。
【0066】
少なくとも一実施例では、整数及び浮動小数点の演算を実行するための論理を限定することなく含む実行ユニット808も、プロセッサ802にある。少なくとも一実施例では、プロセッサ802は、ある一定のマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」:read only memory)も含んでよい。少なくとも一実施例では、実行ユニット808は、パック命令セット809に対処する論理を含んでもよい。少なくとも一実施例では、パック命令セット809を、命令を実行する関連回路とともに汎用プロセッサ802の命令セットに含めることにより、多くのマルチメディア・アプリケーションによって使用される演算を、汎用プロセッサ802のパック・データを使用して実行することができる。1つ又は複数の実施例では、プロセッサのデータ・バスの全幅を使用してパック・データの演算を実行することによって、多くのマルチメディア・アプリケーションを加速し、より効率的に実行することができ、これにより、1度に1つのデータ要素に対して1つ又は複数の演算を実行するためにプロセッサのデータ・バス間でより小さい単位のデータを転送する必要をなくすことができる。
【0067】
少なくとも一実施例では、実行ユニット808はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用されてもよい。少なくとも一実施例では、コンピュータ・システム800は、限定することなくメモリ820を含んでもよい。少なくとも一実施例では、メモリ820は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスとして実施されてもよい。少なくとも一実施例では、メモリ820は、プロセッサ802によって実行されてもよいデータ信号によって表される命令819、及び/又はデータ821を記憶してもよい。
【0068】
少なくとも一実施例では、システム論理チップが、プロセッサ・バス810及びメモリ820に結合されてもよい。少なくとも一実施例では、システム論理チップは、限定することなく、メモリ・コントローラ・ハブ(「MCH」)816を含んでもよく、プロセッサ802は、プロセッサ・バス810を介してMCH816と通信してもよい。少なくとも一実施例では、MCH816は、命令及びデータを記憶するため、及びグラフィックス・コマンド、データ、及びテクスチャを記憶するために、高帯域幅メモリ経路818をメモリ820に提供してもよい。少なくとも一実施例では、MCH816は、プロセッサ802と、メモリ820と、コンピュータ・システム800の他の構成要素との間でデータ信号を導き、プロセッサ・バス810と、メモリ820と、システムI/O822との間でデータ信号をブリッジしてもよい。少なくとも一実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供してもよい。少なくとも一実施例では、MCH816は、高帯域幅メモリ経路818を介してメモリ820に結合されてもよく、グラフィックス/ビデオカード812は、アクセラレーテッド・グラフィックス・ポート(「AGP」)相互接続814を介してMCH816に結合されてもよい。
【0069】
少なくとも一実施例では、コンピュータ・システム800は、MCH816をI/Oコントローラ・ハブ(「ICH」)830に結合するためのプロプライエタリ・ハブ・インターフェース・バスであるシステムI/O822を使用してもよい。少なくとも一実施例では、ICH830は、ローカルのI/Oバスを介していくつかのI/Oデバイスに直接接続を提供してもよい。少なくとも一実施例では、ローカルI/Oバスは、周辺装置をメモリ820、チップセット、及びプロセッサ802に接続するための高速I/Oバスを、限定することなく含んでもよい。例としては、オーディオ・コントローラ829、ファームウェア・ハブ(「フラッシュBIOS」)828、ワイヤレス・トランシーバ826、データ・ストレージ824、ユーザ入力及びキーボードのインターフェース825を含むレガシーI/Oコントローラ823、ユニバーサル・シリアル・バス(「USB」:Universal Serial Bus)などのシリアル拡張ポート827、及びネットワーク・コントローラ834が、限定することなく含まれてもよい。データ・ストレージ824は、ハード・ディスク・ドライブ、フロッピー(登録商標)・ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備えてもよい。
【0070】
少なくとも一実施例では、図8は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図8は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、図ccで示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、コンピュータ・システム800の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL:compute express link)相互接続を使用して相互接続されてもよい。
【0071】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図8のシステムにおいて使用されてもよい。
【0072】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0073】
図9は、少なくとも一実施例による、プロセッサ910を利用するための電子デバイス900を示すブロック図である。少なくとも一実施例では、電子デバイス900は、たとえば限定することなく、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであってもよい。
【0074】
少なくとも一実施例では、システム900は、任意の好適な数又は種類の構成要素、周辺装置、モジュール、若しくはデバイスに通信可能に結合されたプロセッサ910を、限定することなく含んでもよい。少なくとも一実施例では、プロセッサ910は、1℃バス、システム・マネージメント・バス(「SMBus」:System Management Bus)、ロー・ピン・カウント(LPC:Low Pin Count)バス、シリアル・ペリフェラル・インターフェース(「SPI」:Serial Peripheral Interface)、ハイ・デフィニション・オーディオ(「HDA」:High Definition Audio)バス、シリアル・アドバンス・テクノロジー・アタッチメント(「SATA」:Serial Advance Technology Attachment)バス、ユニバーサル・シリアル・バス(「USB」)(バージョン1、2、3)、又はユニバーサル非同期レシーバ/トランスミッタ(「UART」:Universal Asynchronous Receiver/Transmitter)バスなどのバス若しくはインターフェースを使用して結合される。少なくとも一実施例では、図9は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図9は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、図9に示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、図9の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続されてもよい。
【0075】
少なくとも一実施例では、図9は、ディスプレイ924、タッチ画面925、タッチ・パッド930、近距離無線通信ユニット(「NFC」:Near Field Communications unit)945、センサ・ハブ940、熱センサ946、エクスプレス・チップセット(「EC」:Express Chipset)935、トラステッド・プラットフォーム・モジュール(「TPM」:Trusted Platform Module)938、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」:BIOS/firmware/flash memory)922、DSP960、ソリッド・ステート・ディスク(「SSD」:Solid State Disk)若しくはハード・ディスク・ドライブ(「HDD」:Hard Disk Drive)などのドライブ920、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」:wireless local area network unit)950、Bluetoothユニット952、ワイヤレス広域ネットワーク・ユニット(「WWAN」:Wireless Wide Area Network unit)956、全地球測位システム(GPS:Global Positioning System)ユニット955、USB3.0カメラなどのカメラ(「USB3.0カメラ」)954、及び/又は、たとえばLPDDR3規格に実施された低電力ダブル・データ・レート(「LPDDR」:Low Power Double Data Rate)メモリ・ユニット(「LPDDR3」)915を含んでもよい。これらの構成要素は、それぞれ任意の好適なやり方で実施されてもよい。
【0076】
少なくとも一実施例では、上述した構成要素を介して、他の構成要素がプロセッサ910に通信可能に結合されてもよい。少なくとも一実施例では、加速度計941、周囲光センサ(「ALS」:Ambient Light Sensor)942、コンパス943、及びジャイロスコープ944が、センサ・ハブ940に通信可能に結合されてもよい。少なくとも一実施例では、熱センサ939、ファン937、キーボード946、及びタッチ・パッド930が、EC935に通信可能に結合されてもよい。少なくとも一実施例では、スピーカ963、ヘッドフォン964、及びマイクロフォン(「マイク」)965が、オーディオ・ユニット(「オーディオ・コーデック及びクラスDアンプ」)962に通信可能に結合されてもよく、このオーディオ・ユニットが、DSP960に通信可能に結合されてもよい。少なくとも一実施例では、オーディオ・ユニット964は、たとえば限定することなく、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスDアンプリファイアを含んでもよい。少なくとも一実施例では、SIMカード(「SIM」)957は、WWANユニット956に通信可能に結合されてもよい。少なくとも一実施例では、WLANユニット950及びBluetoothユニット952などの構成要素、並びにWWANユニット956は、次世代フォーム・ファクタ(「NGFF」:Next Generation Form Factor)に実施されてもよい。
【0077】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図9のシステムにおいて使用されてもよい。
【0078】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0079】
図10は、少なくとも一実施例によるコンピュータ・システム1000を示す。少なくとも一実施例では、コンピュータ・システム1000は、本開示全体を通して説明する様々なプロセス及び方法を実施するように構成される。
【0080】
少なくとも一実施例では、コンピュータ・システム1000は、限定することなく、少なくとも1つの中央処理装置(「CPU」)1002を含み、この処理装置は、PCI:Peripheral Component Interconnect(「ペリフェラル・コンポーネント・インターコネクト」)、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCI-Express」:peripheral component interconnect express)、AGP:Accelerated Graphics Port(「アクセラレーテッド・グラフィックス・ポート」)、ハイパートランスポート、又は任意の他のバス若しくはポイントツーポイントの通信プロトコルなど、任意の好適なプロトコルを使用して実施された通信バス1010に接続される。少なくとも一実施例では、コンピュータ・システム1000は、メイン・メモリ1004、及び(たとえば、ハードウェア、ソフトウェア、又はこれらの組合せとして実施される)制御論理を限定することなく含み、データは、ランダム・アクセス・メモリ(「RAM」:random access memory)の形をとってもよいメイン・メモリ1004に記憶される。少なくとも一実施例では、ネットワーク・インターフェース・サブシステム(「ネットワーク・インターフェース」)1022は、他のシステムからデータを受信し、コンピュータ・システム1000から他のシステムにデータを送信するための他のコンピューティング・デバイス及びネットワークとのインターフェースを提供する。
【0081】
少なくとも一実施例では、コンピュータ・システム1000は、少なくとも一実施例では、限定することなく、入力デバイス1008、パラレル処理システム1012、及びディスプレイ・デバイス1006を含み、このディスプレイ・デバイスは、従来の陰極線管(「CRT」:cathode ray tube)、液晶ディスプレイ(「LCD」:liquid crystal display)、発光ダイオード(「LED」:light emitting diode)、プラズマ・ディスプレイ、又は他の好適なディスプレイ技術を使用して実施することができる。少なくとも一実施例では、ユーザ入力は、キーボード、マウス、タッチ・パッド、マイクロフォンなどの入力デバイス1008から受け取る。少なくとも一実施例では、上記モジュールのそれぞれを単一の半導体プラットフォームに置いて、処理システムを形成することができる。
【0082】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図10のシステムにおいて使用されてもよい。
【0083】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0084】
図11は、少なくとも一実施例によるコンピュータ・システム1100を示す。少なくとも一実施例では、コンピュータ・システム1100は、限定することなく、コンピュータ1110及びUSBスティック1120を含んでもよい。少なくとも一実施例では、コンピュータ1110は、限定することなく、任意の数及びタイプのプロセッサ(図示せず)、並びにメモリ(図示せず)を含んでもよい。少なくとも一実施例では、コンピュータ1110は、限定することなく、サーバ、クラウド・インスタンス、ラップトップ、及びデスクトップ・コンピュータを含む。
【0085】
少なくとも一実施例では、USBスティック1120は、限定することなく、処理ユニット1130、USBインターフェース1140、及びUSBインターフェース論理1150を含む。少なくとも一実施例では、処理ユニット1130は、命令を実行することができる任意の命令実行システム、装置、又はデバイスであってもよい。少なくとも一実施例では、処理ユニット1130は、限定することなく、任意の数及びタイプの処理コア(図示せず)を含んでもよい。少なくとも一実施例では、処理コア1130は、機械学習に関連する任意の量及びタイプの演算を実行するように最適化された特定用途向け集積回路(「ASIC」)を備える。たとえば、少なくとも一実施例では、処理コア1130は、機械学習の推論演算を実行するように最適化されたテンソル処理ユニット(「TPC」:tensor processing unit)である。少なくとも一実施例では、処理コア1130は、機械視覚及び機械学習の推論演算を実行するように最適化された視覚処理ユニット(「VPU」)である。
【0086】
少なくとも一実施例では、USBインターフェース1140は、任意のタイプのUSBコネクタ又はUSBソケットであってもよい。たとえば、少なくとも一実施例では、USBインターフェース1140は、データ及び電源用のUSB3.0 Type-Cのソケットである。少なくとも一実施例では、USBインターフェース1140は、USB3.0 Type-Aのコネクタである。少なくとも一実施例では、USBインターフェース論理1150は、処理ユニット1130がUSBコネクタ1140を介してデバイス(たとえばコンピュータ1110)と又はインターフェースをとることを可能にする任意の量及びタイプの論理を含んでもよい。
【0087】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図11のシステムにおいて使用されてもよい。
【0088】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0089】
図12Aは、複数のGPU1210~1213が、高速リンク1240~1243(たとえば、バス、ポイントツーポイント相互接続など)を介して複数のマルチ・コア・プロセッサ1205~1206に通信可能に結合されている例示的なアーキテクチャを示す。一実施例では、高速リンク1240~1243は、4GB/秒、30GB/秒、80GB/秒、又はそれ以上の通信スループットをサポートする。PCIe4.0又は5.0、及びNVLink2.0を含むがこれらに限定されない様々な相互接続プロトコルが使用されてもよい。
【0090】
さらに、一実施例では、GPU1210~1213のうちの2つ以上は高速リンク1229~1230を介して相互接続され、これらは、高速リンク1240~1243に使用されたものと同じ又は異なるプロトコル/リンクを使用して実施されてもよい。同様に、マルチ・コア・プロセッサ1205~1206のうちの2つ以上は、高速リンク1228を介して接続されてもよく、この高速リンク1228は、20GB/秒、30GB/秒、120GB/秒、又はそれ以上で動作する対称型マルチプロセッサ(SMP)バスとすることができる。或いは、図12Aに示す様々なシステム構成要素間のすべての通信は、同じプロトコル/リンクを使用して(たとえば、共通の相互接続ファブリックを介して)実現されてもよい。
【0091】
一実施例では、各マルチ・コア・プロセッサ1205~1206は、それぞれメモリ相互接続1226~1227を介してプロセッサ・メモリ1201~1202に通信可能に結合され、各GPU1210~1213)は、それぞれGPUメモリ・相互接続1250~1253を介してGPUメモリ1220~1223に通信可能に結合される。メモリ相互接続1226~1227及び1250~1253は、同じ又は異なるメモリ・アクセス技術を利用してもよい。例として、限定ではなく、プロセッサ・メモリ1201~1202及びGPUメモリ1220~1223は、(積層DRAMを含む)ダイナミック・ランダム・アクセス・メモリ(DRAM)、グラフィックスDDR SDRAM(GDDR)(たとえば、GDDR5、GDDR6)、又は高帯域幅メモリ(HBM)などの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。一実施例では、(たとえば、2レベルのメモリ(2LM)階層を使用して)、プロセッサ・メモリ1201~1202のいくつかの部分は揮発性メモリであってもよく、別の部分は不揮発性メモリであってもよい。
【0092】
下記に記載するように、様々なプロセッサ1205~1206及びGPU1210~1213は、それぞれ特定のメモリ1201~1202、1220~1223に物理的に結合されてもよく、同じ仮想システムのアドレス空間(「実効アドレス」空間とも呼ぶ)が様々な物理メモリ間に分配されている統合されたメモリ・アーキテクチャが実施されてもよい。たとえば、プロセッサ・メモリ1201~1202はそれぞれ、64GBのシステム・メモリ・アドレス空間を備えてもよく、GPUメモリ1220~1223はそれぞれ、32GBのシステム・メモリ・アドレス空間を備えてもよい(この例では結果的に、合計256GBのアドレス指定可能メモリが得られる)。
【0093】
図12Bは、1つの例示的な実施例によるマルチ・コア・プロセッサ1207とグラフィックス加速モジュール1246との相互接続のさらなる詳細事項を示す。グラフィックス加速モジュール1246は、高速リンク1240を介してプロセッサ1207に結合されるライン・カードに集積された1つ又は複数のGPUチップを含んでもよい。或いは、グラフィックス加速モジュール1246は、プロセッサ1207と同じパッケージ又はチップに集積されてもよい。
【0094】
少なくとも一実施例では、図示しているプロセッサ1207は、複数のコア1260A~1260Dを含み、それぞれのコアが、トランスレーション・ルックアサイド・バッファ1261A~1261Dと、1つ又は複数のキャッシュ1262A~1262Dとを有する。少なくとも一実施例では、コア1260A~1260Dは、命令を実行しデータを処理するための、図示していない様々な他の構成要素を含んでもよい。キャッシュ1262A~1262Dは、レベル1(L1)及びレベル2(L2)のキャッシュを備えてもよい。さらに、1つ又は複数の共有キャッシュ1256が、キャッシュ1262A~1262Dに含まれ、コア1260A~1260Dのセットによって共有されてもよい。たとえば、プロセッサ1207の一実施例は、24個のコアを含み、各コアが、独自のL1キャッシュ、12個の共有L2キャッシュ、及び12個の共有L3キャッシュを有する。この実施例では、1つ又は複数のL2及びL3のキャッシュが、2つの隣接するコアによって共有される。プロセッサ1207及びグラフィックス加速モジュール1246は、システム・メモリ1214に接続されており、このシステム・メモリは、図12Aのプロセッサ・メモリ1201~1202を含んでもよい。
【0095】
様々なキャッシュ1262A~1262D、1256、及びシステム・メモリ1214に記憶されたデータ及び命令については、コヒーレンス・バス1264を介したコア間通信によって、コヒーレンスが維持される。たとえば、各キャッシュは、特定のキャッシュ・ラインに対する読取り又は書込みを検出したことに応答して、コヒーレンス・バス1264を介して通信するために、それに関連するキャッシュ・コヒーレンス論理/回路を有してもよい。一実施形態では、キャッシュ・アクセスを監視するために、コヒーレンス・バス1264を介してキャッシュ・スヌーピング・プロトコルが実施される。
【0096】
一実施例では、プロキシ回路1225が、グラフィックス加速モジュール1246をコヒーレンス・バス1264に通信可能に結合して、グラフィックス加速モジュール1246がコア1260A~1260Dのピアとしてキャッシュ・コヒーレンス・プロトコルに参加できるようにする。特に、インターフェース1235は、高速リンク1240(たとえば、PCIeバス、NVLinkなど)を介してプロキシ回路1225への接続を提供し、インターフェース1237は、グラフィックス加速モジュール1246をリンク1240に接続する。
【0097】
一実施形態では、アクセラレータ統合回路1236は、グラフィックス加速モジュール1246の複数のグラフィックス処理エンジン1231、1232、Nの代わりに、キャッシュ管理、メモリ・アクセス、コンテンツ管理、及び割込み管理のサービスを提供する。グラフィックス処理エンジン1231、1232、Nはそれぞれ、別個のグラフィックス・プロセッシング・ユニット(GPU)を備えてもよい。或いは、グラフィックス処理エンジン1231、1232、Nは、GPUの中に、グラフィックス実行ユニット、メディア処理エンジン(たとえば、ビデオ・エンコーダ/デコーダ)、サンプラ、及びブリット・エンジンなど、異なるタイプのグラフィックス処理エンジンを備えてもよい。少なくとも一実施例では、グラフィックス加速モジュール1246は、複数のグラフィックス処理エンジン1231、1232、Nを有するGPUであってもよく、又はグラフィックス処理エンジン1231、1232、Nは、共通のパッケージ、ライン・カード、若しくはチップに集積された個々のGPUであってもよい。
【0098】
一実施例では、アクセラレータ統合回路1236は、仮想から物理のメモリ・トランスレーション(実効から実(effective-to-real)のメモリ・トランスレーションとも呼ばれる)など、様々なメモリ管理機能を実行するためのメモリ管理ユニット(MMU)1239、及びシステム・メモリ1214にアクセスするためのメモリ・アクセス・プロトコルを含む。MMU1239は、仮想/実効から物理/実へのアドレス・トランスレーションをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB)(図示せず)も含むことができる。一実施形態では、キャッシュ1238は、グラフィックス処理エンジン1231~1232、Nから効率的にアクセスできるように、コマンド及びデータを記憶することができる。一実施例では、キャッシュ1238及びグラフィックス・メモリ1233~1234、Mに記憶されたデータは、コア・キャッシュ1262A~1262D、1256、及びシステム・メモリ1214とコヒーレントに保たれる。上述したように、これは、キャッシュ1238及びメモリ1233~1234、Mの代わりにプロキシ回路1225を介して(たとえば、プロセッサ・キャッシュ1262A~1262D、1256におけるキャッシュ・ラインの修正/アクセスに関するアップデートをキャッシュ1238に送り、キャッシュ1238からのアップデートを受け取って)実現されてもよい。
【0099】
レジスタ1245のセットが、グラフィックス処理エンジン1231~1232、Nによって実行されるスレッドのためのコンテキスト・データを記憶し、コンテキスト管理回路1248が、スレッド・コンテキストを管理する。たとえば、コンテキスト管理回路1248は、コンテキスト・スイッチ中に様々なスレッドのコンテキストを保存及び復元するために、保存及び復元の動作を実行してもよい(たとえば、ここで、第2のスレッドをグラフィックス処理エンジンによって実行できるように、第1のスレッドが保存され、第2のスレッドが記憶される)。たとえば、コンテキスト・スイッチ時に、コンテキスト管理回路1248は、現在のレジスタ値を(たとえば、コンテキスト・ポインタによって識別された)メモリの指定領域に記憶してもよい。次いで、コンテキストに戻るときに、コンテキスト管理回路1248がレジスタ値を復元してもよい。一実施例では、割込み管理回路1247は、システム・デバイスから受け取った割込みを受け取り、処理する。
【0100】
一実施形態では、グラフィックス処理エンジン1231からの仮想/実効アドレスは、MMU1239によってシステム・メモリ1214の実/物理アドレスにトランスレートされる。アクセラレータ統合回路1236の一実施例は、複数(たとえば、4個、8個、16個)のグラフィックス・アクセラレータ・モジュール1246、及び/又は他のアクセラレータ・デバイスをサポートする。グラフィックス・アクセラレータ・モジュール1246は、プロセッサ1207上で実行される単一のアプリケーション専用のものであってもよく、又は複数のアプリケーション間で共有されてもよい。一実施例では、グラフィックス処理エンジン1231~1232、Nのリソースが複数のアプリケーション又は仮想機械(VM)と共有される仮想化グラフィックス実行環境が存在する。少なくとも一実施例では、リソースは、「スライス」に細分化されてもよく、このスライスが、処理要件、並びにVM及び/又はアプリケーションに関連付けられた優先度に基づき、異なるVM及び/又はアプリケーションに割り振られる。
【0101】
少なくとも一実施例では、アクセラレータ統合回路1236は、グラフィックス加速モジュール1246のためのシステムへのブリッジとして機能し、アドレス・トランスレーション及びシステム・メモリのキャッシュ・サービスを提供する。さらに、アクセラレータ統合回路1236は、グラフィックス処理エンジン1231~1232、Nの仮想化、割込み、及びメモリ管理をホスト・プロセッサが管理するための仮想化設備を提供してもよい。
【0102】
グラフィックス処理エンジン1231~1232、Nのハードウェア・リソースは、ホスト・プロセッサ1207が見る実アドレス空間に明示的にマッピングされるので、いかなるホスト・プロセッサも、実効アドレス値を使用して、これらのリソースに直接アドレス指定することができる。アクセラレータ統合回路1236の1つの機能は、グラフィックス処理エンジン1231~1232、Nを、システムにとって独立したユニットに見えるように物理的に分離することである。
【0103】
少なくとも一実施例では、1つ又は複数のグラフィックス・メモリ1233~1234、Mはそれぞれ、グラフィックス処理エンジン1231~1232、Nのそれぞれに結合される。グラフィックス・メモリ1233~1234、Mは、それぞれのグラフィックス処理エンジン1231~1232、Nによって処理される命令及びデータを記憶する。グラフィックス・メモリ1233~1234、Mは、(積層DRAMを含む)DRAM、GDDRメモリ、(たとえば、GDDR5、GDDR6)、又はHBMなどの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。
【0104】
一実施例では、リンク1240を介したデータ・トラフィックを低減するために、グラフィックス・メモリ1233~1234、Mに記憶されるデータが、グラフィックス処理エンジン1231~1232、Nによって最も頻繁に使用されることになるデータであるようにし、好ましくはコア1260A~1260Dによっては使用されない(少なくとも頻繁には使用されない)データであるようにするためのバイアス技法が使用される。同様に、バイアス機構は、コアが必要とする(したがって、好ましくはグラフィックス処理エンジン1231~1232、Nは必要としない)データを、コアのキャッシュ1262A~1262D、1256、及びシステム・メモリ1214の中に保つよう試みる。
【0105】
図12Cは、アクセラレータ統合回路1236がプロセッサ1207内に一体化されている別の例示的な実施例を示す。少なくともこの実施例では、グラフィックス処理エンジン1231~1232、Nは、インターフェース1237及びインターフェース1235により、高速リンク1240を介して直接アクセラレータ統合回路1236と通信する(この場合も任意の形のバス又はインターフェース・プロトコルを利用することができる)。アクセラレータ統合回路1236は、図12Bに関して説明したのと同じ動作を実行してもよいが、コヒーレンス・バス1264及びキャッシュ1262A~1262D、1256に近接していることを考えると、潜在的には、より高いスループットで動作してもよい。少なくとも一実施例は、(グラフィックス加速モジュールの仮想化のない)専用プロセスのプログラミング・モデルと、(仮想化のある)共有プログラミング・モデルとを含む異なるプログラミング・モデルをサポートし、これらは、アクセラレータ統合回路1236によって制御されるプログラミング・モデルと、グラフィックス加速モジュール1246によって制御されるプログラミング・モデルとを含んでもよい。
【0106】
少なくとも一実施例では、グラフィックス処理エンジン1231~1232、Nは、単一のオペレーティング・システムの下で単一のアプリケーション又はプロセスに専用のものである。少なくとも一実施例では、単一のアプリケーションは、他のアプリケーション要求をグラフィックス処理エンジン1231~1232、Nに集中させて、VM/パーティション内で仮想化を実現することができる。
【0107】
少なくとも一実施例では、グラフィックス処理エンジン1231~1232、Nは、複数のVM/アプリケーション・パーティションによって共有されてもよい。少なくとも一実施例では、共有モデルはシステム・ハイパーバイザを使用して、グラフィックス処理エンジン1231~1232、Nを仮想化して、各オペレーティング・システムによるアクセスを可能にしてもよい。ハイパーバイザのない単一パーティションのシステムでは、グラフィックス処理エンジン1231~1232、Nは、オペレーティング・システムによって所有される。少なくとも一実施例では、オペレーティング・システムは、グラフィックス処理エンジン1231~1232、Nを仮想化して、各プロセス又はアプリケーションへのアクセスを提供することができる。
【0108】
少なくとも一実施例では、グラフィックス加速モジュール1246又は個々のグラフィックス処理エンジン1231~1232、Nは、プロセス・ハンドルを使用して、プロセス要素を選択する。少なくとも一実施例では、プロセス要素は、システム・メモリ1214に記憶されており、本明細書に記載の実効アドレスから実アドレスへのトランスレーション技法を使用してアドレス指定可能である。少なくとも一実施例では、プロセス・ハンドルは、ホスト・プロセスのコンテキストをグラフィックス処理エンジン1231~1232、Nに登録する(すなわち、プロセス要素リンク・リストにプロセス要素を追加するためのシステム・ソフトウェアをコールする)ときに、ホスト・プロセスに提供される実施固有の値であってもよい。少なくとも一実施例では、プロセス・ハンドルの下位16ビットは、プロセス要素リンク・リスト内のプロセス要素のオフセットであってもよい。
【0109】
図12Dは、例示的なアクセラレータ統合スライス1290を示す。本明細書で使用するとき、「スライス」は、アクセラレータ統合回路1236の処理リソースの指定部分を備える。システム・メモリ1214内のアプリケーション実効アドレス空間1282は、プロセス要素1283を記憶する。少なくとも一実施例では、プロセス要素1283は、プロセッサ1207上で実行されているアプリケーション1280からのGPU呼出し1281に応答して、記憶される。プロセス要素1283は、対応するアプリケーション1280のプロセス状態を収容する。プロセス要素1283に収容されたワーク記述子(WD)1284は、アプリケーションによって要求される単一のジョブとすることができ、又はジョブのキューに対するポインタを収容してもよい。少なくとも一実施例では、WD1284は、アプリケーションのアドレス空間1282におけるジョブ要求キューに対するポインタである。
【0110】
グラフィックス加速モジュール1246及び/又は個々のグラフィックス処理エンジン1231~1232、Nは、システム内のプロセスのすべて又はサブセットによって共有されることが可能である。少なくとも一実施例では、プロセス状態を設定し、WD1284をグラフィックス加速モジュール1246に送信して、仮想化環境においてジョブを開始するためのインフラストラクチャが、含められてもよい。
【0111】
少なくとも一実施例では、専用のプロセス・プログラミング・モデルは、実施固有である。このモデルでは、単一のプロセスが、グラフィックス加速モジュール1246又は個々のグラフィックス処理エンジン1231を所有する。グラフィックス加速モジュール1246が単一のプロセスによって所有されるので、グラフィックス加速モジュール1246が割り当てられたときに、ハイパーバイザは、所有パーティションについてアクセラレータ統合回路1236を初期化し、オペレーティング・システムは、所有プロセスについてアクセラレータ統合回路1236を初期化する。
【0112】
動作時、アクセラレータ統合スライス1290内のWDフェッチ・ユニット1291は、グラフィックス加速モジュール1246の1つ又は複数のグラフィックス処理エンジンによって行われることになるワークの表示を含む次のWD1284をフェッチする。図示してあるように、WD1284からのデータは、レジスタ1245に記憶され、MMU1239、割込み管理回路1247、及び/又はコンテキスト管理回路1248によって使用されてもよい。たとえば、MMU1239の一実施例は、OS仮想アドレス空間1285内のセグメント/ページ・テーブル1286にアクセスするためのセグメント/ページ・ウォーク回路を含む。割込み管理回路1247は、グラフィックス加速モジュール1246から受け取った割込みイベント1292を処理してもよい。グラフィックス動作を実行するとき、グラフィックス処理エンジン1231~1232、Nによって生成された実効アドレス1293は、MMU1239によって実アドレスにトランスレートされる。
【0113】
一実施例では、レジスタ1245の同じセットが、各グラフィックス処理エンジン1231~1232、N、及び/又はグラフィックス加速モジュール1246について複製され、ハイパーバイザ又はオペレーティング・システムによって初期化されてもよい。これらの複製されたレジスタのそれぞれは、アクセラレータ統合スライス1290に含まれてもよい。ハイパーバイザによって初期化されてもよい例示的なレジスタを、表1に示す。
【表1】
【0114】
オペレーティング・システムによって初期化されてもよい例示的なレジスタを、表2に示す。
【表2】
【0115】
一実施例では、各WD1284は、特定のグラフィックス加速モジュール1246及び/又はグラフィックス処理エンジン1231~1232、Nに固有のものである。WD1284は、グラフィックス処理エンジン1231~1232、Nがワークを行うために必要とするすべての情報を収容し、又は完了すべきワークのコマンド・キューをアプリケーションがセットアップした場所であるメモリ・ロケーションを指すポインタとすることができる。
【0116】
図12Eは、共有モデルの例示的な一実施例のさらなる詳細事項を示す。この実施例は、プロセス要素リスト1299が記憶されているハイパーバイザ実アドレス空間1298を含む。ハイパーバイザ実アドレス空間1298は、オペレーティング・システム1295のグラフィックス加速モジュール・エンジンを仮想化するハイパーバイザ1296を介してアクセス可能である。
【0117】
少なくとも一実施例では、共有プログラミング・モデルは、システム内のすべて又はサブセットのパーティションからのすべて又はサブセットのプロセスが、グラフィックス加速モジュール1246を使用できるようにする。グラフィックス加速モジュール1246が複数のプロセス及びパーティションによって共有されるプログラミング・モデルが、2つ存在する:時間スライス共有及びグラフィックス指定共有(graphics-directed shared)である。
【0118】
このモデルでは、システム・ハイパーバイザ1296がグラフィックス加速モジュール1246を所有しており、その機能をすべてのオペレーティング・システム1295にとって利用可能にする。システム・ハイパーバイザ1296による仮想化をグラフィックス加速モジュール1246がサポートするために、グラフィックス加速モジュール1246は、以下のことに準拠してもよい:1)アプリケーションのジョブ要求は自律でなくてはならず(すなわち、ジョブ間で状態を維持する必要はなく)、又はグラフィックス加速モジュール1246が、コンテキストの保存及び復元の機構を提供しなくてはならない。2)アプリケーションのジョブ要求は、あらゆるトランスレーション誤りも含めて指定された時間量で完了するようグラフィックス加速モジュール1246によって保証され、又はグラフィックス加速モジュール1246が、ジョブの処理をプリエンプションする機能を提供する。3)グラフィックス加速モジュール1246は、指定の共有プログラミング・モデルで動作しているとき、プロセス間で公平性が保証されなくてはならない。
【0119】
少なくとも一実施例では、アプリケーション1280は、グラフィックス加速モジュール1246のタイプ、ワーク記述子(WD)、権限マスク・レジスタ(AMR)値、及びコンテキスト保存/復元エリア・ポインタ(CSRP)を伴って、オペレーティング・システム1295のシステム・コールを行う必要がある。少なくとも一実施例では、グラフィックス加速モジュール1246のタイプは、システム・コールで目的とする加速機能を記述している。少なくとも一実施例では、グラフィックス加速モジュール1246のタイプは、システム固有値であってもよい。少なくとも一実施例では、WDは、グラフィックス加速モジュール1246のために特にフォーマット化されており、グラフィックス加速モジュール1246のコマンド、ユーザ定義の構造を指す実効アドレス・ポインタ、コマンドのキューを指す実効アドレス・ポインタ、又はグラフィックス加速モジュール1246によって行われるワークを記述するための任意の他のデータ構造の形とすることができる。一実施例では、AMR値は、現在のプロセスに使用するためのAMR状態である。少なくとも一実施例では、オペレーティング・システムに渡される値は、AMRをセッティングするアプリケーションと同様である。アクセラレータ統合回路1236及びグラフィックス加速モジュール1246の実施形態が、ユーザ権限マスク・オーバーライド・レジスタ(UAMOR)をサポートしていない場合、オペレーティング・システムは、AMR値に現在のUAMOR値を適用してから、ハイパーバイザ・コールにAMRを渡してもよい。ハイパーバイザ1296は、任意選択で、現在の権限マスク・オーバーライド・レジスタ(AMOR)値を適用してから、AMRをプロセス要素1283に入れてもよい。少なくとも一実施例では、CSRPは、グラフィックス加速モジュール1246がコンテキスト状態を保存及び復元するためのアプリケーションの実効アドレス空間1282内のエリアの実効アドレスを収容するレジスタ1245のうちの1つである。ジョブ間で、又はジョブがプリエンプションされるときに、いかなる状態も保存する必要のない場合は、このポインタは任意選択である。少なくとも一実施例では、コンテキスト保存/復元エリアは、ピン留めされたシステム・メモリであってもよい。
【0120】
システム・コールを受け取ると、オペレーティング・システム1295は、アプリケーション1280が登録済みであり、グラフィックス加速モジュール1246を使用する権限が与えられていることを検証してもよい。次いで、オペレーティング・システム1295は、表3に示す情報を伴ってハイパーバイザ1296にコールする。
【表3】
【0121】
ハイパーバイザ・コールを受け取ると、ハイパーバイザ1296は、オペレーティング・システム1295が登録済みであり、グラフィックス加速モジュール1246を使用する権限が与えられていることを検証する。次いでハイパーバイザ1296は、プロセス要素1283を、対応するグラフィックス加速モジュール1246のタイプのプロセス要素リンク・リストに入れる。プロセス要素は、表4に示す情報を含んでもよい。
【表4】
【0122】
少なくとも一実施例では、ハイパーバイザは、複数のアクセラレータ統合スライス1290のレジスタ1245を初期化する。
【0123】
図12Fに示すように、少なくとも一実施例では、物理プロセッサ・メモリ1201~1202及びGPUメモリ1220~1223にアクセスするために使用される共通の仮想メモリ・アドレス空間を介してアドレス指定可能である統合メモリが使用される。この実施形態では、GPU1210~1213で実行される動作は、プロセッサ・メモリ1201~1202にアクセスするのと同じ仮想/実効メモリ・アドレス空間を利用し、且つその逆も同様であり、それによりプログラマビリティが簡単になる。一実施例では、仮想/実効アドレス空間の第1の部分はプロセッサ・メモリ1201に割り振られ、第2の部分は第2のプロセッサ・メモリ1202に割り振られ、第3の部分はGPUメモリ1220に割り振られるというように続く。少なくとも一実施例では、仮想/実効メモリ空間全体(実効アドレス空間と呼ばれることもある)は、これによりプロセッサ・メモリ1201~1202及びGPUメモリ1220~1223のそれぞれにわたって分配されて、仮想アドレスが物理メモリにマッピングされた状態で、いずれかのプロセッサ又はGPUが、いずれかの物理メモリにアクセスできるようになる。
【0124】
一実施例では、MMU1239A~1239Eのうちの1つ又は複数の中のバイアス/コヒーレンス管理回路1294A~1294Eは、1つ又は複数のホスト・プロセッサ(たとえば、1205)のキャッシュとGPU1210~1213のキャッシュとの間でキャッシュ・コヒーレンスを確保し、バイアス技法を実施して、ある特定のタイプのデータが記憶されるべき物理メモリを示す。バイアス/コヒーレンス管理回路1294A~1294Eの複数のインスタンスが図12Fに示されるが、バイアス/コヒーレンス回路は、1つ又は複数のホスト・プロセッサ1205のMMU内に実施されてもよく、且つ/又はアクセラレータ統合回路1236内に実施されてもよい。
【0125】
一実施例は、GPU付きメモリ1220~1223をシステム・メモリの一部としてマッピングできるようにし、共有仮想メモリ(SVM)技法を使用してアクセス可能にすることができるが、完全なシステム・キャッシュ・コヒーレンスに関連する性能の低下が生じることはない。少なくとも一実施例では、GPU付きメモリ1220~1223が、面倒なキャッシュ・コヒーレンス・オーバーヘッドなく、システム・メモリとしてアクセス可能であることにより、GPUオフロードのための有益な動作環境が提供される。この構成によって、従来のI/O DMAデータ・コピーのオーバーヘッドがなくても、ホスト・プロセッサ1205ソフトウェアがオペランドを設定し、計算結果にアクセスすることが可能になる。こうした従来のコピーは、ドライバ・コール、割込み、及びメモリ・マップドI/O(MMIO)アクセスを必要とし、これらはすべて、単純なメモリ・アクセスより非効率的である。少なくとも一実施例では、キャッシュ・コヒーレンス・オーバーヘッドなしでGPU付きメモリ1220~1223にアクセスできることが、オフロードされた計算の実行時間に不可欠であり得る。たとえば、かなりのストリーミング書込みメモリ・トラフィックがある場合には、キャッシュ・コヒーレンス・オーバーヘッドは、GPU1210~1213が見る有効な書込み帯域幅を大幅に低減することがある。少なくとも一実施例では、オペランド設定の効率、結果へのアクセスの効率、及びGPU計算の効率は、GPUオフロードの有効性を判定する際に役立つことがある。
【0126】
少なくとも一実施例では、GPUバイアス及びホスト・プロセッサ・バイアスの選択は、バイアス・トラッカー・データ構造によって決められる。たとえばバイアス・テーブルが使用されてもよく、このテーブルは、GPU付きメモリ・ページ当たり1ビット又は2ビットを含むページ粒度構造であってもよい(すなわち、メモリ・ページの粒度で制御されてもよい)。少なくとも一実施例では、バイアス・テーブルは、(たとえば、バイアス・テーブルの頻繁に使用された/最近使用されたエントリをキャッシュするための)バイアス・キャッシュがGPU1210~1213にある状態又はない状態で、1つ又は複数のGPU付きメモリ1220~1223の奪われたメモリ範囲(stolen memory range)において実施されてもよい。或いは、バイアス・テーブル全体が、GPU内に維持されてもよい。
【0127】
少なくとも一実施例では、GPU付きメモリ1220~1223への各アクセスに関連付けられたバイアス・テーブルのエントリが、GPUメモリへの実際のアクセスより先にアクセスされて、以下の動作を生じさせる。第1に、GPUバイアス内での自らのページを見いだすGPU1210~1213からのローカル要求が、対応するGPUメモリ1220~1223に直接転送される。ホスト・バイアスにおいて自らのページを見いだすGPUからのローカル要求は、(たとえば、上述した高速リンクを介して)プロセッサ1205に転送される。一実施例では、要求されたページをホスト・プロセッサ・バイアスにおいて見いだすプロセッサ1205からの要求は、通常のメモリ読取りと同様に要求を完了させる。或いは、GPUバイアス化ページに向けられた要求は、GPU1210~1213に転送されてもよい。少なくとも一実施例では、次いでGPUは、現在ページを使用していない場合、ホスト・プロセッサ・バイアスにページを移行してもよい。少なくとも一実施例では、ページのバイアス状態は、ソフトウェア・ベースの機構、ハードウェア支援型ソフトウェア・ベースの機構のいずれかによって、又は限られた事例のセットについては、単にハードウェア・ベースの機構によって、変更することができる。
【0128】
バイアス状態を変更するための1つの機構は、APIコール(たとえば、OpenCL)を利用し、このAPIコールが、GPUのデバイス・ドライバをコールし、このデバイス・ドライバが、GPUにメッセージを送って(又はコマンド記述子をキューに加えて)、バイアス状態を変更し、一部の移行については、ホストにおいてキャッシュ・フラッシング動作を実行するよう、GPUを導く。少なくとも一実施例では、キャッシュ・フラッシング動作は、ホスト・プロセッサ1205のバイアスからGPUバイアスへの移行のために使用されるが、反対向きの移行には使用されない。
【0129】
一実施例では、キャッシュ・コヒーレンスは、ホスト・プロセッサ1205によってキャッシュできないGPUバイアス化ページを一時的にレンダリングすることによって、維持される。これらのページにアクセスするために、プロセッサ1205は、GPU1210からのアクセスを要求してもよく、GPU1210は、すぐにアクセスを許可してもよく、又は許可しなくてもよい。したがって、プロセッサ1205とGPU1210との間の通信を低減するために、GPUバイアス化ページが、GPUによって要求されるが、ホスト・プロセッサ1205によっては要求されないようにすること、又はその逆にすることが有益である。
【0130】
1つ若しくは複数の実施例を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。
【0131】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0132】
図13は、本明細書に記載の様々な実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、若しくは汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
【0133】
図13は、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができる例示的なシステム・オン・チップ集積回路1300を示すブロック図である。少なくとも一実施例では、集積回路1300は、1つ又は複数のアプリケーション・プロセッサ1305(たとえば、CPU)、少なくとも1つのグラフィックス・プロセッサ1310を含み、さらに、画像プロセッサ1315及び/又はビデオ・プロセッサ1320を含んでもよく、これらのいずれもが、モジュール式IPコアであってもよい。少なくとも一実施例では、集積回路1300は、USBコントローラ1325、UARTコントローラ1330、SPI/SDIOコントローラ1335、及びIS/ICコントローラ1340を含む周辺装置又はバス論理を含む。少なくとも一実施例では、集積回路1300は、ハイ・デフィニション・マルチメディア・インターフェース(HDMI(登録商標):high-definition multimedia interface(登録商標))コントローラ1350及びモバイル・インダストリ・プロセッサ・インターフェース(MIPI)ディスプレイ・インターフェース1355のうちの1つ又は複数に結合されるディスプレイ・デバイス1345を含むことができる。少なくとも一実施例では、フラッシュ・メモリ及びフラッシュ・メモリ・コントローラを含むフラッシュ・メモリ・サブシステム1360によって、ストレージが提供されてもよい。少なくとも一実施例では、SDRAM又はSRAMメモリ・デバイスにアクセスするために、メモリ・コントローラ1365を介してメモリ・インターフェースが提供されてもよい。少なくとも一実施例では、いくつかの集積回路はさらに、組み込みセキュリティ・エンジン1370を含む。
【0134】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路1300において使用されてもよい。
【0135】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0136】
図14A図14Bは、本明細書に記載の様々な実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、又は汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
【0137】
図14A図14Bは、本明細書に記載の実施例による、SoC内で使用するための例示的なグラフィックス・プロセッサを示すブロック図である。図14Aは、少なくとも一実施例による、1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路の例示的なグラフィックス・プロセッサ1410を示す。図14Bは、少なくとも一実施例による、1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路のさらなる例示的なグラフィックス・プロセッサ1440を示す。少なくとも一実施例では、図14Aのグラフィックス・プロセッサ1410は、低電力グラフィックス・プロセッサ・コアである。少なくとも一実施例では、図14Bのグラフィックス・プロセッサ1440は、高性能グラフィックス・プロセッサ・コアである。少なくとも一実施例では、グラフィックス・プロセッサ1410、1440のそれぞれは、図13のグラフィックス・プロセッサ1310の変形形態とすることができる。
【0138】
少なくとも一実施例では、グラフィックス・プロセッサ1410は、頂点プロセッサ1405と、1つ又は複数のフラグメント・プロセッサ1415A~1415N(たとえば、1415A、1415B、1415C、1415D~1415N-1、及び1415N)とを含む。少なくとも一実施例では、グラフィックス・プロセッサ1410は、別個の論理を介して異なるシェーダ・プログラムを実行することができ、それにより、頂点プロセッサ1405は、頂点シェーダ・プログラムのための動作を実行するように最適化され、一方、1つ又は複数のフラグメント・プロセッサ1415A~1415Nは、フラグメント又はピクセルのシェーダ・プログラムのためのフラグメント(たとえば、ピクセル)シェーディング動作を実行する。少なくとも一実施例では、頂点プロセッサ1405は、3Dグラフィックス・パイプラインの頂点処理ステージを実行し、プリミティブ及び頂点データを生成する。少なくとも一実施例では、フラグメント・プロセッサ1415A~1415Nは、頂点プロセッサ1405によって生成されたプリミティブ及び頂点データを使用して、ディスプレイ・デバイスに表示されるフレームバッファを生成する。少なくとも一実施例では、フラグメント・プロセッサ1415A~1415Nは、OpenGLのAPIにおいて提供されるフラグメント・シェーダ・プログラムを実行するように最適化され、OpenGLのAPIは、Direct 3D APIにおいて提供されるピクセル・シェーダ・プログラムと同様の動作を実行するために使用されてもよい。
【0139】
少なくとも一実施例では、グラフィックス・プロセッサ1410はさらに、1つ又は複数のメモリ管理ユニット(MMU)1420A~1420B、キャッシュ1425A~1425B、及び回路相互接続1430A~1430Bを含む。少なくとも一実施例では、1つ又は複数のMMU1420A~1420Bは、頂点プロセッサ1405及び/又はフラグメント・プロセッサ1415A~1415Nを含め、グラフィックス・プロセッサ1410のための仮想から物理のアドレス・マッピングを提供し、それらは、1つ又は複数のキャッシュ1425A~1425Bに記憶された頂点又は画像/テクスチャのデータに加えて、メモリに記憶された頂点又は画像/テキストのデータを参照してもよい。少なくとも一実施例では、1つ又は複数のMMU1420A~1420Bは、図13の1つ若しくは複数のアプリケーション・プロセッサ1305、画像プロセッサ1315、及び/又はビデオ・プロセッサ1320に関連付けられた1つ若しくは複数のMMUを含む、システム内の他のMMUと同期されてもよく、それにより各プロセッサ1305~1320は、共有の又は統合された仮想メモリ・システムに参加することができる。少なくとも一実施例では、1つ又は複数の回路相互接続1430A~1430Bは、グラフィックス・プロセッサ1410が、SoCの内部バスを介して、又は直接接続を介して、SoC内の他のIPコアとインターフェースをとることができるようにする。
【0140】
少なくとも一実施例では、グラフィックス・プロセッサ1440は、図14Aのグラフィックス・プロセッサ1410の1つ又は複数のMMU1420A~1420B、キャッシュ1425A~1425B、及び回路相互接続1430A~1430Bを含む。少なくとも一実施例では、グラフィックス・プロセッサ1440は、1つ又は複数のシェーダ・コア1455A~1455N(たとえば、1455A、1455B、1455C、1455D、1455E、1455F~1455N-1、及び1455N)を含み、これらは統合されたシェーダ・コア・アーキテクチャを提供し、このアーキテクチャでは、頂点シェーダ、フラグメント・シェーダ、及び/又はコンピュート・シェーダを実施するためのシェーダ・プログラム・コードを含むすべてのタイプのプログラム可能なシェーダ・コードを、単一のコア、又はタイプ、又はコアが実行できる。少なくとも一実施例では、シェーダ・コアの数は変えることができる。少なくとも一実施例では、グラフィックス・プロセッサ1440は、1つ又は複数のシェーダ・コア1455A~1455Nに実行スレッドをディスパッチするためのスレッド・ディスパッチャとして作用するコア間タスク・マネージャ1445と、たとえばシーン内のローカル空間コヒーレンスを利用するため、又は内部キャッシュの使用を最適化するために、シーンのレンダリング動作が画像空間において細分化される、タイル・ベースのレンダリングのためのタイリング動作を加速するためのタイリング・ユニット1458とを含む。
【0141】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路14A及び/又は14Bにおいて使用されてもよい。1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0142】
図15A図15Bは、本明細書に記載の実施例による、さらなる例示的なグラフィックス・プロセッサ論理を示す。図15Aは、グラフィックス・コア1500を示し、このグラフィックス・コア1500は、少なくとも一実施例では図13のグラフィックス・プロセッサ1310に含められてもよく、少なくとも一実施例では図14Bのように、統合されたシェーダ・コア1455A~1455Nであってもよい。図15Bは、少なくとも一実施例におけるマルチ・チップ・モジュールに導入するのに適した高並列の汎用グラフィックス・プロセッシング・ユニット1530を示す。
【0143】
少なくとも一実施例では、グラフィックス・コア1500は、共有命令キャッシュ1502、テクスチャ・ユニット1518、及びキャッシュ/共有メモリ1520を含み、これらは、グラフィックス・コア1500内の実行リソースに共通である。少なくとも一実施例では、グラフィックス・コア1500は、複数のスライス1501A~1501N、又はコアごとのパーティションを含むことができ、グラフィックス・プロセッサは、グラフィックス・コア1500の複数のインスタンスを含むことができる。スライス1501A~1501Nは、ローカル命令キャッシュ1504A~1504N、スレッド・スケジューラ1506A~1506N、スレッド・ディスパッチャ1508A~1508N、及びレジスタのセット1510A~1510Nを含むサポート論理を含むことができる。少なくとも一実施例では、スライス1501A~1501Nは、追加機能ユニット(AFU1512A~1512N)、浮動小数点ユニット(FPU1514A~1514N)、整数算術論理演算ユニット(ALU1516~1516N)、アドレス計算ユニット(ACU1513A~1513N)、倍精度浮動小数点ユニット(DPFPU1515A~1515N)、及び行列処理ユニット(MPU1517A~1517N)のセットを含むことができる。
【0144】
少なくとも一実施例では、FPU1514A~1514Nは、単精度(32ビット)及び半精度(16ビット)の浮動小数点演算を実行することができ、DPFPU1515A~1515Nは、倍精度(64ビット)の浮動小数点演算を実行する。少なくとも一実施例では、ALU1516A~1516Nは、8ビット、16ビット、及び32ビットの精度で可変精度の整数演算を実行することができ、混合精度の演算ができるように構成されることが可能である。少なくとも一実施例では、MPU1517A~1517Nも、半精度浮動小数点及び8ビット整数演算を含む混合精度の行列演算ができるように構成されることが可能である。少なくとも一実施例では、MPU1517A~1517Nは、汎用行列-行列乗算(GEMM)の加速をサポートできるようにすることを含め、機械学習アプリケーション・フレームワークを加速するための様々な行列演算を実行することができる。少なくとも一実施例では、AFU1512A~1512Nは、三角関数演算(たとえば、サイン、コサインなど)を含む、浮動小数点ユニット又は整数ユニットにサポートされていない追加の論理演算を実行することができる。
【0145】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・コア1500において使用されてもよい。
【0146】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0147】
図15Bは、汎用処理ユニット(GPGPU)1530を示し、この処理ユニットは、少なくとも一実施例において、グラフィックス・プロセッシング・ユニットのアレイによる高並列の計算動作を実行可能にするように構成されることが可能である。少なくとも一実施例では、GPGPU1530は、GPGPU1530の他のインスタンスに直接リンクされて、ディープ・ニューラル・ネットワークの訓練スピードを向上させるために複数のGPUクラスタを生成することができる。少なくとも一実施例では、GPGPU1530は、ホスト・プロセッサとの接続を可能にするためのホスト・インターフェース1532を含む。少なくとも一実施例では、ホスト・インターフェース1532は、PCIエクスプレス・インターフェースである。少なくとも一実施例では、ホスト・インターフェース1532は、ベンダー固有の通信インターフェース又は通信ファブリックとすることができる。少なくとも一実施例では、GPGPU1530は、ホスト・プロセッサからコマンドを受け取り、グローバル・スケジューラ1534を使用して、これらのコマンドに関連付けられた実行スレッドを、コンピュート・クラスタ1536A~1536Hのセットに分配する。少なくとも一実施例では、コンピュート・クラスタ1536A~1536Hは、キャッシュ・メモリ1538を共有する。少なくとも一実施例では、キャッシュ・メモリ1538は、コンピュート・クラスタ1536A~1536H内のキャッシュ・メモリ用の高レベル・キャッシュとして作用することができる。
【0148】
少なくとも一実施例では、GPGPU1530は、メモリ・コントローラ1542A~1542Bのセットを介して、コンピュート・クラスタ1536A~1536Hに結合されたメモリ1544A~1544Bを含む。少なくとも一実施例では、メモリ1544A~1544Bは、グラフィックス・ダブル・データ・レート(GDDR:graphics double data rate)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。
【0149】
少なくとも一実施例では、コンピュート・クラスタ1536A~1536Hはそれぞれ、図15Aのグラフィックス・コア1500などのグラフィックス・コアのセットを含み、このグラフィックス・コアのセットは、機械学習計算に適したものを含め、様々な精度で計算動作を実行することができる複数のタイプの整数及び浮動小数点の論理ユニットを含むことができる。たとえば、少なくとも一実施例では、コンピュート・クラスタ1536A~1536Hのそれぞれにおける浮動小数点ユニットの少なくともサブセットは、16ビット又は32ビットの浮動小数点演算を実行するように構成されることが可能であり、一方、浮動小数点ユニットの別のサブセットは、64ビットの浮動小数点演算を実行するように構成されることが可能である。
【0150】
少なくとも一実施例では、GPGPU1530の複数のインスタンスは、コンピュート・クラスタとして動作するように構成されることが可能である。少なくとも一実施例では、コンピュート・クラスタ1536A~1536Hにより同期及びデータ交換のために使用される通信は、実施例にわたって異なる。少なくとも一実施例では、GPGPU1530の複数のインスタンスは、ホスト・インターフェース1532を介して通信する。少なくとも一実施例では、GPGPU1530は、I/Oハブ1539を含み、このハブは、GPGPU1530の他のインスタンスへの直接接続を可能にするGPUリンク1540に、GPGPU1530を結合する。少なくとも一実施例では、GPUリンク1540は、GPGPU1530の複数のインスタンス間での通信及び同期を可能にするGPUからGPUへの専用のブリッジに結合される。少なくとも一実施例では、GPUリンク1540は、他のGPGPU又は並列プロセッサにデータを送受信するための高速相互接続に結合される。少なくとも一実施例では、GPGPU1530の複数のインスタンスは、別々のデータ処理システムに位置付けられ、ホスト・インターフェース1532を介してアクセス可能なネットワーク・デバイスを介して通信する。少なくとも一実施例では、GPUリンク1540は、ホスト・インターフェース1532に加えて、又はその代わりに、ホスト・プロセッサへの接続を可能にするように構成することができる。
【0151】
少なくとも一実施例では、GPGPU1530は、ニューラル・ネットワークを訓練するように構成されることが可能である。少なくとも一実施例では、GPGPU1530は、推論プラットフォーム内で使用することができる。GPGPU1530が推論のために使用される少なくとも一実施例では、GPGPUは、GPGPUがニューラル・ネットワークの訓練に使用されるときよりも少数のコンピュート・クラスタ1536A~1536Hを含んでもよい。少なくとも一実施例では、メモリ1544A~1544Bに関連するメモリ技術は、推論の構成と訓練の構成とで異なってもよく、高帯域幅のメモリ技術が、訓練構成に当てられる。少なくとも一実施例では、GPGPU1530の推論構成は、推論固有の命令をサポートすることができる。たとえば、少なくとも一実施例では、推論構成は、1つ又は複数の8ビットの整数のドット積命令をサポートすることができ、これは、導入済みニューラル・ネットワークの推論動作中に使用されてもよい。
【0152】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにGPGPU1530において使用されてもよい。
【0153】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0154】
図16は、少なくとも一実施例によるコンピューティング・システム1600を示すブロック図である。少なくとも一実施例では、コンピューティング・システム1600は、メモリ・ハブ1605を含んでもよい相互接続経路を介して通信する1つ又は複数のプロセッサ1602とシステム・メモリ1604とを有する処理サブシステム1601を含む。少なくとも一実施例では、メモリ・ハブ1605は、チップセット構成要素内の別個の構成要素であってもよく、又は1つ若しくは複数のプロセッサ1602内に一体化されていてもよい。少なくとも一実施例では、メモリ・ハブ1605は、通信リンク1606を介してI/Oサブシステム1611に結合される。少なくとも一実施例では、I/Oサブシステム1611は、コンピューティング・システム1600が1つ又は複数の入力デバイス1608からの入力を受け取れるようにすることができるI/Oハブ1607を含む。少なくとも一実施例では、I/Oハブ1607は、ディスプレイ・コントローラを有効にすることができ、このディスプレイ・コントローラは、1つ又は複数のプロセッサ1602に含まれて、1つ又は複数のディスプレイ・デバイス1610Aに出力を提供してもよい。少なくとも一実施例では、I/Oハブ1607に結合された1つ又は複数のディスプレイ・デバイス1610Aは、ローカルの、内部の、又は組み込まれたディスプレイ・デバイスを含むことができる。
【0155】
少なくとも一実施例では、処理サブシステム1601は、バス又は他の通信リンク1613を介してメモリ・ハブ1605に結合された1つ又は複数の並列プロセッサ1612を含む。少なくとも一実施例では、通信リンク1613は、PCIエクスプレスなどであるがこれに限定されない任意の数の規格に基づく通信リンク技術若しくはプロトコルのうちの1つであってもよく、又はベンダー固有の通信インターフェース若しくは通信ファブリックであってもよい。少なくとも一実施例では、1つ又は複数の並列プロセッサ1612は、メニー・インテグレーテッド・コア(MIC:many integrated core)プロセッサなど、多数の処理コア及び/又は処理クラスタを含むことのできる、計算に集中した並列又はベクトルの処理システムを形成する。少なくとも一実施例では、1つ又は複数の並列プロセッサ1612は、グラフィックス処理サブシステムを形成し、このサブシステムは、I/Oハブ1607を介して結合された1つ又は複数のディスプレイ・デバイス1610Aのうちの1つに、ピクセルを出力することができる。少なくとも一実施例では、1つ又は複数の並列プロセッサ1612はまた、1つ又は複数のディスプレイ・デバイス1610Bへの直接接続を可能にするディスプレイ・コントローラ及びディスプレイ・インターフェース(図示せず)を含むことができる。
【0156】
少なくとも一実施例では、システム・ストレージ・ユニット1614は、I/Oハブ1607に接続されて、コンピューティング・システム1600のためのストレージ機構を提供することができる。少なくとも一実施例では、I/Oスイッチ1616を使用して、I/Oハブ1607と、プラットフォームに一体化されてもよいネットワーク・アダプタ1618及び/又はワイヤレス・ネットワーク・アダプタ1619などの他の構成要素、並びに1つ又は複数のアドイン・デバイス1620を介して加えることができる様々な他のデバイスとの通信を可能にするためのインターフェース機構を提供することができる。少なくとも一実施例では、ネットワーク・アダプタ1618は、イーサネット(登録商標)・アダプタ、又は別の有線ネットワーク・アダプタとすることができる。少なくとも一実施例では、ワイヤレス・ネットワーク・アダプタ1619は、Wi-Fi、Bluetooth、近距離無線通信(NFC)、又は1つ若しくは複数のワイヤレス無線を含む他のネットワーク・デバイスのうちの1つ又は複数を含むことができる。
【0157】
少なくとも一実施例では、コンピューティング・システム1600は、USB又は他のポート接続、光学ストレージ・ドライブ、ビデオ捕捉デバイスなどを含む明示されていない他の構成要素を含むことができ、これらもI/Oハブ1607に接続されてもよい。少なくとも一実施例では、図16の様々な構成要素を相互接続する通信経路が、PCI(ペリフェラル・コンポーネント・インターコネクト)ベースのプロトコル(たとえば、PCI-エクスプレス)などの任意の好適なプロトコル、又はNV-Link高速相互接続などの他のバス若しくはポイントツーポイント通信インターフェース、又は他の相互接続プロトコルを使用して、実施されてもよい。
【0158】
少なくとも一実施例では、1つ又は複数の並列プロセッサ1612は、たとえばビデオ出力回路を含むグラフィックス及びビデオの処理に最適化された回路を組み込んでおり、グラフィックス・プロセッシング・ユニット(GPU)を構成する。少なくとも一実施例では、1つ又は複数の並列プロセッサ1612は、汎用処理に最適化された回路を組み込んでいる。少なくとも一実施例では、コンピューティング・システム1600の構成要素は、単一の集積回路上の1つ又は複数の他のシステム要素と一体化されてもよい。たとえば、少なくとも一実施例では、1つ又は複数の並列プロセッサ1612、メモリ・ハブ1605、プロセッサ1602、及びI/Oハブ1607を、システム・オン・チップ(SoC)集積回路に一体化することができる。少なくとも一実施例では、コンピューティング・システム1600の構成要素は、単一のパッケージに一体化されて、システム・イン・パッケージ(SIP:system in package)構成を形成することができる。少なくとも一実施例では、コンピューティング・システム1600の構成要素の少なくとも一部分を、マルチ・チップ・モジュール(MCM:multi-chip module)に一体化することができ、このモジュールを、他のマルチ・チップ・モジュールと相互接続して、モジュール式コンピューティング・システムにすることができる。
【0159】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図1600のシステムにおいて使用されてもよい。
【0160】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0161】
プロセッサ
図17Aは、少なくとも一実施例による並列プロセッサ1700を示す。少なくとも一実施例では、並列プロセッサ1700の様々な構成要素は、プログラム可能なプロセッサ、特定用途向け集積回路(ASIC)、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)などの1つ又は複数の集積回路デバイスを使用して実施されてもよい。少なくとも一実施例では、図示してある並列プロセッサ1700は、例示的な実施例による図16に示す1つ又は複数の並列プロセッサ1612の変形形態である。
【0162】
少なくとも一実施例では、並列プロセッサ1700は並列処理ユニット1702を含む。少なくとも一実施例では、並列処理ユニット1702は、並列処理ユニット1702の他のインスタンスを含む他のデバイスとの通信を可能にするI/Oユニット1704を含む。少なくとも一実施例では、I/Oユニット1704は、他のデバイスに直接接続されてもよい。少なくとも一実施例では、I/Oユニット1704は、メモリ・ハブ1605などのハブ又はスイッチ・インターフェースの使用を介して、他のデバイスと接続される。少なくとも一実施例では、メモリ・ハブ1605とI/Oユニット1704との間の接続は、通信リンク1613を形成する。少なくとも一実施例では、I/Oユニット1704は、ホスト・インターフェース1706及びメモリ・クロスバー1716に接続され、ここでホスト・インターフェース1706は、処理動作の実行を対象とするコマンドを受け取り、メモリ・クロスバー1716は、メモリ動作の実行を対象とするコマンドを受け取る。
【0163】
少なくとも一実施例では、ホスト・インターフェース1706が、I/Oユニット1704を介してコマンド・バッファを受け取るとき、ホスト・インターフェース1706は、これらのコマンドを実行するためのワーク動作をフロント・エンド1708に向けることができる。少なくとも一実施例では、フロント・エンド1708はスケジューラ1710に結合され、このスケジューラは、コマンド又は他のワーク・アイテムを処理クラスタ・アレイ1712に分配するように構成される。少なくとも一実施例では、スケジューラ1710は、処理クラスタ・アレイ1712にタスクが分配される前に、処理クラスタ・アレイ1712が適切に構成され、有効な状態にあることを確実にする。少なくとも一実施例では、スケジューラ1710は、マイクロコントローラで実行しているファームウェア論理を介して実施される。少なくとも一実施例では、マイクロコントローラ実施スケジューラ1710は、複雑なスケジューリング及びワーク分配動作を、粗い粒度と細かい粒度で実行するように構成可能であり、処理アレイ1712で実行しているスレッドの迅速なプリエンプション及びコンテキストのスイッチングを可能にする。少なくとも一実施例では、ホスト・ソフトウェアは、処理アレイ1712でのスケジューリングのワークロードを、複数のグラフィックス処理のドアベルのうちの1つを介して証明することができる。少なくとも一実施例では、次いで、スケジューラ1710を含むマイクロコントローラ内のスケジューラ1710論理によって、ワークロードを自動的に処理クラスタ・アレイ1712全体に分配することができる。
【0164】
少なくとも一実施例では、処理クラスタ・アレイ1712は、最大「N個」の処理クラスタ(たとえば、クラスタ1714A、クラスタ1714B~クラスタ1714N)を含む。少なくとも一実施例では、処理クラスタ・アレイ1712の各クラスタ1714A~1714Nは、大量の同時スレッドを実行することができる。少なくとも一実施例では、スケジューラ1710は、様々なスケジューリング及び/又はワーク分配のアルゴリズムを使用して、処理クラスタ・アレイ1712のクラスタ1714A~1714Nにワークを配分することができ、これらのアルゴリズムは、プログラム又は計算のタイプごとに生じるワークロードに応じて、異なってもよい。少なくとも一実施例では、スケジューリングは、スケジューラ1710によって動的に対処されてもよく、又は処理クラスタ・アレイ1712によって実行されるように構成されたプログラム論理のコンパイル中に、コンパイラ論理によって部分的に支援されてもよい。少なくとも一実施例では、処理クラスタ・アレイ1712の異なるクラスタ1714A~1714Nは、異なるタイプのプログラムを処理するように、又は異なるタイプの計算を実行するように配分されることが可能である。
【0165】
少なくとも一実施例では、処理クラスタ・アレイ1712は、様々なタイプの並列処理動作を実行するように構成されることが可能である。少なくとも一実施例では、処理クラスタ・アレイ1712は、汎用の並列コンピュート動作を実行するように構成される。たとえば、少なくとも一実施例では、処理クラスタ・アレイ1712は、ビデオ及び/又はオーディオ・データのフィルタリング、物理動作を含むモデリング動作の実行、及びデータ変換の実行を含む処理タスクを実行するための論理を含むことができる。
【0166】
少なくとも一実施例では、処理クラスタ・アレイ1712は、並列グラフィックス処理動作を実行するように構成される。少なくとも一実施例では、処理クラスタ・アレイ1712は、テクスチャ動作を実行するためのテクスチャ・サンプリング論理、並びにモザイク論理、及び他の頂点処理論理を含むがこれらに限定されないこうしたグラフィックス処理動作の実行をサポートするための追加の論理を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ1712は、頂点シェーダ、モザイク・シェーダ、ジオメトリ・シェーダ、及びピクセル・シェーダなどであるが、これらに限定されないグラフィックス処理関連のシェーダ・プログラムを実行するように構成されることが可能である。少なくとも一実施例では、並列処理ユニット1702は、処理できるようにデータをシステム・メモリからI/Oユニット1704を介して転送することができる。少なくとも一実施例では、処理中、転送されたデータを、処理中にオン・チップ・メモリ(たとえば、並列プロセッサ・メモリ1722)に記憶し、次いでシステム・メモリに書き戻すことができる。
【0167】
少なくとも一実施例では、並列処理ユニット1702を使用してグラフィックス処理が実行される場合には、処理クラスタ・アレイ1712の複数のクラスタ1714A~1714Nにグラフィックス処理動作をよりうまく分配できるようにするため、処理ワークロードをおおよそ等しい大きさのタスクに分割するようにスケジューラ1710を構成することができる。少なくとも一実施例では、処理クラスタ・アレイ1712の一部分は、異なるタイプの処理を実行するように構成されることが可能である。たとえば、少なくとも一実施例では、レンダリング画像を生成して表示するために、第1の部分は、頂点シェーディング及びトポロジ生成を実行するように構成されてもよく、第2の部分は、モザイク及びジオメトリのシェーディングを実行するように構成されてもよく、第3の部分は、ピクセル・シェーディング又は他の画面空間動作を実行するように構成されてもよい。少なくとも一実施例では、クラスタ1714A~1714Nのうちの1つ又は複数によって生成される中間データをバッファに記憶して、さらなる処理ができるようにクラスタ1714A~1714Nの間で中間データを送信できるようにしてもよい。
【0168】
少なくとも一実施例では、処理クラスタ・アレイ1712は、実行される処理タスクをスケジューラ1710を介して受け取ることができ、スケジューラ1710は、処理タスクを定義するコマンドをフロント・エンド1708から受け取る。少なくとも一実施例では、処理タスクは、処理されるデータのインデックス、たとえば、表面(パッチ)データ、プリミティブ・データ、頂点データ、及び/又はピクセル・データ、並びに状態パラメータ、及びデータをどのように処理すべきかを定義するコマンド(たとえば、どのプログラムを実行すべきか)を含むことができる。少なくとも一実施例では、スケジューラ1710は、タスクに対応するインデックスをフェッチするように構成されてもよく、又はフロント・エンド1708からインデックスを受け取ってもよい。少なくとも一実施例では、フロント・エンド1708は、入ってくるコマンド・バッファ(たとえば、バッチ・バッファ、プッシュ・バッファなど)によって指定されるワークロードが開始される前に、処理クラスタ・アレイ1712が有効な状態に構成されていることを保証するように構成されることが可能である。
【0169】
少なくとも一実施例では、並列処理ユニット1702の1つ又は複数のインスタンスの各々は、並列プロセッサ・メモリ1722と結合することができる。少なくとも一実施例では、並列プロセッサ・メモリ1722には、メモリ・クロスバー1716を介してアクセスすることができ、メモリ・クロスバー1716は、処理クラスタ・アレイ1712並びにI/Oユニット1704からメモリ要求を受け取ることができる。少なくとも一実施例では、メモリ・クロスバー1716は、メモリ・インターフェース1718を介して並列プロセッサ・メモリ1722にアクセスすることができる。少なくとも一実施例では、メモリ・インターフェース1718は、複数のパーティション・ユニット(たとえば、パーティション・ユニット1720A、パーティション・ユニット1720B~パーティション・ユニット1720N)を含むことができ、これらのユニットはそれぞれ、並列プロセッサ・メモリ1722の一部分(たとえば、メモリ・ユニット)に結合することができる。少なくとも一実施例では、パーティション・ユニット1720A~1720Nの数は、メモリ・ユニットの数と等しくなるように構成され、それにより、第1のパーティション・ユニット1720Aは、対応する第1のメモリ・ユニット1724Aを有し、第2のパーティション・ユニット1720Bは、対応するメモリ・ユニット1724Bを有し、N番目のパーティション・ユニット1720Nは、対応するN番目のメモリ・ユニット1724Nを有する。少なくとも一実施例では、パーティション・ユニット1720A~1720Nの数は、メモリ・デバイスの数に等しくなくてもよい。
【0170】
少なくとも一実施例では、メモリ・ユニット1724A~1724Nは、グラフィックス・ダブル・データ・レート(GDDR)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。少なくとも一実施例では、またメモリ・ユニット1724A~1724Nはまた、高帯域幅メモリ(HBM)を含むがこれに限定されない3D積層メモリを含んでもよい。少なくとも一実施例では、並列プロセッサ・メモリ1722の利用可能な帯域幅を効率的に使用するために、フレーム・バッファ又はテクスチャ・マップなどのレンダー・ターゲットが、メモリ・ユニット1724A~1724Nにわたって記憶されて、パーティション・ユニット1720A~1720Nが、各レンダー・ターゲットの部分を並列に書き込みできるようにしてもよい。少なくとも一実施例では、システム・メモリとローカル・キャッシュ・メモリを併用する統合メモリ設計に有利なように、並列プロセッサ・メモリ1722のローカル・インスタンスは除外されてもよい。
【0171】
少なくとも一実施例では、処理クラスタ・アレイ1712のクラスタ1714A~1714Nのうちのいずれか1つは、並列プロセッサ・メモリ1722内のメモリ・ユニット1724A~1724Nのいずれかに書き込まれることになるデータを処理することができる。少なくとも一実施例では、メモリ・クロスバー1716は、各クラスタ1714A~1714Nの出力を、出力に対してさらなる処理動作を実行することができる任意のパーティション・ユニット1720A~1720N、又は別のクラスタ1714A~1714Nに転送するように構成されることが可能である。少なくとも一実施例では、各クラスタ1714A~1714Nは、メモリ・クロスバー1716を通ってメモリ・インターフェース1718と通信して、様々な外部メモリ・デバイスからの読取り、又はそれへの書込みを行うことができる。少なくとも一実施例では、メモリ・クロスバー1716は、I/Oユニット1704と通信するためのメモリ・インターフェース1718への接続部、並びに並列プロセッサ・メモリ1722のローカル・インスタンスへの接続部を有して、異なる処理クラスタ1714A~1714N内の処理ユニットが、システム・メモリ、又は並列処理ユニット1702のローカルにない他のメモリと通信できるようにする。少なくとも一実施例では、メモリ・クロスバー1716は、仮想チャネルを使用して、クラスタ1714A~1714Nと、パーティション・ユニット1720A~1720Nとの間でトラフィック・ストリームを分離することができる。
【0172】
少なくとも一実施例では、並列処理ユニット1702の複数のインスタンスは、単一のアドイン・カードに提供されてもよく、又は複数のアドイン・カードが相互接続されてもよい。少なくとも一実施例では、異なるインスタンスが異なる数の処理コア、異なる量のローカル並列プロセッサ・メモリ、及び/又は他の異なる構成を有する場合でも、並列処理ユニット1702の異なるインスタンスは相互動作するように構成されることが可能である。たとえば、少なくとも一実施例では、並列処理ユニット1702のいくつかインスタンスは、他のインスタンスに比べて高い精度の浮動小数点ユニットを含むことができる。少なくとも一実施例では、並列処理ユニット1702又は並列プロセッサ1700のうちの1つ又は複数のインスタンスを組み込んだシステムは、デスクトップ、ラップトップ、若しくは携帯型のパーソナル・コンピュータ、サーバ、ワークステーション、ゲーム・コンソール、及び/又は組み込みシステムを含むが、これらに限定されない様々な構成及びフォーム・ファクタで実施することができる。
【0173】
図17Bは、少なくとも一実施例によるパーティション・ユニット1720のブロック図である。少なくとも一実施例では、パーティション・ユニット1720は、図17Aのパーティション・ユニット1720A~1720Nのうちの1つのパーティション・ユニットのインスタンスである。少なくとも一実施例では、パーティション・ユニット1720は、L2キャッシュ1721、フレーム・バッファ・インターフェース1725、及びラスタ演算ユニット(「ROP」)1726を含む。L2キャッシュ1721は、メモリ・クロスバー1716及びROP1726から受け取ったロード及びストアの動作を実行するように構成された読取り/書込みキャッシュである。少なくとも一実施例では、読取りミス及び至急の書戻し要求が、処理されるようにL2キャッシュ1721によってフレーム・バッファ・インターフェース1725に出力される。少なくとも一実施例では、更新も、処理されるようにフレーム・バッファ・インターフェース1725を介してフレーム・バッファに送られる。少なくとも一実施例では、フレーム・バッファ・インターフェース1725は、図17の(たとえば並列プロセッサ・メモリ1722内の)メモリ・ユニット1724A~1724Nなど、並列プロセッサ・メモリのメモリ・ユニットのうちの1つとインターフェースをとる。
【0174】
少なくとも一実施例では、ROP1726は、ステンシル、zテスト、ブレンディングなどのようなラスタ演算を実行する処理ユニットである。少なくとも一実施例では、次いでROP1726は、グラフィックス・メモリに記憶された処理済みグラフィックス・データを出力する。少なくとも一実施例では、ROP1726は、メモリに書き込まれる深度又は色データを圧縮し、メモリから読み取られた深度又は色データを解凍するための圧縮論理を含む。少なくとも一実施例では、圧縮論理は、複数の圧縮アルゴリズムのうちの1つ又は複数を利用するロスレス圧縮論理とすることができる。ROP1726によって実行される圧縮論理は、圧縮されるデータの統計的特徴に基づき変更することができる。たとえば、少なくとも一実施例では、深度及び色データに対してはタイルごとにデルタ色圧縮が実行される。
【0175】
少なくとも一実施例では、ROP1726は、パーティション・ユニット1720内ではなく、各処理クラスタ内(たとえば、図17Aのクラスタ1714A~1714N)に含まれる。少なくとも一実施例では、ピクセル・フラグメント・データではなく、ピクセル・データの読取り及び書込み要求が、メモリ・クロスバー1716を介して送信される。少なくとも一実施例では、処理済みグラフィックス・データは、図16の1つ又は複数のディスプレイ・デバイス1610のうちの1つなどのディスプレイ・デバイスに表示されてもよく、プロセッサ1602によってさらに処理できるようにルーティングされてもよく、又は図17Aの並列プロセッサ1700内の処理エンティティのうちの1つによってさらに処理できるようにルーティングされてもよい。
【0176】
図17Cは、少なくとも一実施例による並列処理ユニット内の処理クラスタ1714のブロック図である。少なくとも一実施例では、処理クラスタは、図17Aの処理クラスタ1714A~1714Nのうちの1つの処理クラスタのインスタンスである。少なくとも一実施例では、処理クラスタ1714のうちの1つ又は複数は、多数のスレッドを並列で実行するように構成されてもよく、ここで「スレッド」とは、入力データの特定のセットに対して実行している特定のプログラムのインスタンスを指す。少なくとも一実施例では、複数の独立した命令ユニットを提供することなく、多数のスレッドの並列実行をサポートするために、単一命令複数データ(SIMD)の命令発行技法が使用される。少なくとも一実施例では、それぞれの処理クラスタ内の処理エンジンのセットに命令を発行するように構成された共通の命令ユニットを使用して、全体的に同期された多数のスレッドの並列実行をサポートするために、単一命令複数スレッド(SIMT:single-instruction, multiple-thread)の技法が使用される。
【0177】
少なくとも一実施例では、処理クラスタ1714の動作は、SIMT並列プロセッサに処理タスクを分配するパイプライン・マネージャ1732を介して制御することができる。少なくとも一実施例では、パイプライン・マネージャ1732は、図17Aのスケジューラ1710から命令を受け取り、グラフィックス・マルチプロセッサ1734及び/又はテクスチャ・ユニット1736を介してこれらの命令の実行を管理する。少なくとも一実施例では、グラフィックス・マルチプロセッサ1734は、SIMT並列プロセッサの例示的なインスタンスである。しかし、少なくとも一実施例では、アーキテクチャの異なる様々なタイプのSIMT並列プロセッサが、処理クラスタ1714内に含まれてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ1734の1つ又は複数のインスタンスは、処理クラスタ1714内に含めることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ1734はデータを処理することができ、処理済みデータを、他のシェーダ・ユニットを含む複数の可能な宛先のうちの1つに分配するためにデータ・クロスバー1740が使用されてもよい。少なくとも一実施例では、パイプライン・マネージャ1732は、データ・クロスバー1740を通して分配されることになる処理済みデータの宛先を指定することによって、処理済みデータの分配を容易にすることができる。
【0178】
少なくとも一実施例では、処理クラスタ1714内の各グラフィックス・マルチプロセッサ1734は、関数実行論理(たとえば、算術論理演算ユニット、ロード・ストア・ユニットなど)の同一のセットを含むことができる。少なくとも一実施例では、関数実行論理は、前の命令が完了する前に新規の命令を発行することができるパイプライン式に構成されることが可能である。少なくとも一実施例では、関数実行論理は、整数及び浮動小数点の算術、比較演算、ブール演算、ビット・シフト、及び様々な代数関数の計算を含む様々な演算をサポートする。少なくとも一実施例では、同じ関数ユニットのハードウェアを活用して、異なる演算を実行することができ、関数ユニットの任意の組合せが存在してもよい。
【0179】
少なくとも一実施例では、処理クラスタ1714に送信される命令がスレッドを構成する。少なくとも一実施例では、並列処理エンジンのセットにわたって実行されているスレッドのセットが、スレッド・グループである。少なくとも一実施例では、スレッド・グループは、異なる入力データに対してプログラムを実行する。少なくとも一実施例では、スレッド・グループ内の各スレッドを、グラフィックス・マルチプロセッサ1734内の異なる処理エンジンに割り当てることができる。少なくとも一実施例では、スレッド・グループは、グラフィックス・マルチプロセッサ1734内の処理エンジンの数よりも少ないスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループが処理エンジンの数よりも少ないスレッドを含む場合、1つ又は複数の処理エンジンは、そのスレッド・グループが処理されているサイクル中にはアイドルであってもよい。少なくとも一実施例では、スレッド・グループはまた、グラフィックス・マルチプロセッサ1734内の処理エンジンの数よりも多いスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループがグラフィックス・マルチプロセッサ1734内の処理エンジンより多くのスレッドを含む場合には、連続したクロック・サイクルにわたって処理を実行することができる。少なくとも一実施例では、複数のスレッド・グループを、グラフィックス・マルチプロセッサ1734上で同時に実行することができる。
【0180】
少なくとも一実施例では、グラフィックス・マルチプロセッサ1734は、ロード及びストアの動作を実行するための内部キャッシュ・メモリを含む。少なくとも一実施例では、グラフィックス・マルチプロセッサ1734は、内部キャッシュをやめて、処理クラスタ1714内のキャッシュ・メモリ(たとえば、L1キャッシュ1748)を使用することができる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ1734は、パーティション・ユニット(たとえば、図17のパーティション・ユニット1720A~1720N)内のL2キャッシュにもアクセスすることができ、これらのキャッシュが、すべての処理クラスタ1714間で共有され、スレッド間でデータを転送するために使用されてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ1734は、オフ・チップのグローバル・メモリにもアクセスすることができ、このメモリは、ローカル並列プロセッサ・メモリ及び/又はシステム・メモリのうちの1つ又は複数を含むことができる。少なくとも一実施例では、並列処理ユニット1702の外部にある任意のメモリが、グローバル・メモリとして使用されてもよい。少なくとも一実施例では、処理クラスタ1714は、グラフィックス・マルチプロセッサ1734の複数のインスタンスを含み、共通の命令及びデータを共有することができ、これらはL1キャッシュ1748に記憶されてもよい。
【0181】
少なくとも一実施例では、各処理クラスタ1714は、仮想アドレスを物理アドレスにマッピングするように構成されたメモリ管理ユニット(「MMU」)1745を含んでもよい。少なくとも一実施例では、MMU1745の1つ又は複数のインスタンスは、図17Aのメモリ・インターフェース1718内にあってもよい。少なくとも一実施例では、MMU1745は、仮想アドレスを、タイル及び任意選択でキャッシュ・ライン・インデックスの物理アドレスにマッピングするために使用されるページ・テーブル・エントリ(PTE)のセットを含む。少なくとも一実施例では、MMU1745は、アドレスのトランスレーション・ルックアサイド・バッファ(TLB:translation lookaside buffer)又はキャッシュを含んでもよく、これらは、グラフィックス・マルチプロセッサ1734若しくはL1キャッシュ、又は処理クラスタ1714内にあってもよい。少なくとも一実施例では、表面データ・アクセスをローカルに分散するように物理アドレスを処理して、パーティション・ユニット間で要求の効率的なインターリーブが可能になる。少なくとも一実施例では、キャッシュ・ライン・インデックスを使用して、キャッシュ・ラインの要求がヒットかミスかが判定されてもよい。
【0182】
少なくとも一実施例では、各グラフィックス・マルチプロセッサ1734がテクスチャ・ユニット1736に結合されて、テクスチャ・マッピング動作、たとえば、テクスチャ・サンプル位置の判定、テクスチャ・データの読取り、及びテクスチャ・データのフィルタリングが実行されるように、処理クラスタ1714が構成されてもよい。少なくとも一実施例では、テクスチャ・データは、内部テクスチャL1キャッシュ(図示せず)から、又はグラフィックス・マルチプロセッサ1734内のL1キャッシュから読み取られ、必要に応じて、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリからフェッチされる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ1734は、処理済みタスクをデータ・クロスバー1740に出力して、さらなる処理ができるように別の処理クラスタ1714に処理済みタスクを提供し、又はメモリ・クロスバー1716を介して、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリに処理済みタスクを記憶する。少なくとも一実施例では、プレROP1742(プレ・ラスタ演算ユニット)は、グラフィックス・マルチプロセッサ1734からデータを受け取り、ROPユニットにデータを仕向けるように構成されており、ROPユニットは、本明細書に記載のするように、パーティション・ユニット(たとえば、図17Aのパーティション・ユニット1720A~1720N)内に位置付けられてもよい。少なくとも一実施例では、プレROP1742ユニットは、色ブレンディングの最適化を実行し、ピクセル色データを組織化し、アドレス・トランスレーションを実行することができる。
【0183】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス処理クラスタ1714において使用されてもよい。
【0184】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0185】
図17Dは、少なくとも一実施例によるグラフィックス・マルチプロセッサ1734を示す。少なくとも一実施例では、グラフィックス・マルチプロセッサ1734は、処理クラスタ1714のパイプライン・マネージャ1732と結合する。少なくとも一実施例では、グラフィックス・マルチプロセッサ1734は、命令キャッシュ1752、命令ユニット1754、アドレス・マッピング・ユニット1756、レジスタ・ファイル1758、1つ又は複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)コア1762、及び1つ又は複数のロード/ストア・ユニット1766を含むがこれらに限定されない実行パイプラインを有する。GPGPUコア1762、及びロード/ストア・ユニット1766は、メモリ及びキャッシュ相互接続1768を介して、キャッシュ・メモリ1772及び共有メモリ1770に結合される。
【0186】
少なくとも一実施例では、命令キャッシュ1752は、実行すべき命令のストリームをパイプライン・マネージャ1732から受け取る。少なくとも一実施例では、命令は、命令キャッシュ1752にキャッシュされ、命令ユニット1754により実行されるようにディスパッチされる。少なくとも一実施例では、命令ユニット1754は、命令をスレッド・グループ(たとえば、ワープ)としてディスパッチすることができ、各スレッド・グループは、GPGPUコア1762内の異なる実行ユニットに割り当てられる。少なくとも一実施例では、命令は、統一アドレス空間内のアドレスを指定することによって、ローカル、共有、又はグローバルのアドレス空間のいずれかにアクセスすることができる。少なくとも一実施例では、アドレス・マッピング・ユニット1756を使用して、統一アドレス空間のアドレスを、ロード/ストア・ユニット1766がアクセスできる個別メモリ・アドレスにトランスレーションすることができる。
【0187】
少なくとも一実施例では、レジスタ・ファイル1758は、グラフィックス・マルチプロセッサ1734の機能ユニットにレジスタのセットを提供する。少なくとも一実施例では、レジスタ・ファイル1758は、グラフィックス・マルチプロセッサ1734の機能ユニット(たとえばGPGPUコア1762、ロード/ストア・ユニット1766)のデータ経路に接続された、オペランドのための一時的なストレージを提供する。少なくとも一実施例では、レジスタ・ファイル1758は、各機能ユニットがレジスタ・ファイル1758の専用部分に配分されるように、機能ユニットのそれぞれ間で分割される。一実施例では、レジスタ・ファイル1758は、グラフィックス・マルチプロセッサ1734によって実行されている異なるワープ間で分割される。
【0188】
少なくとも一実施例では、GPGPUコア1762はそれぞれ、グラフィックス・マルチプロセッサ1734の命令を実行するために使用される浮動小数点ユニット(FPU)及び/又は整数算術論理演算ユニット(ALU)を含むことができる。GPGPUコア1762同士は、同様のアーキテクチャであってもよく、又は異なるアーキテクチャであってもよい。少なくとも一実施例では、GPGPUコア1762の第1の部分は、単精度FPU及び整数ALUを含み、GPGPUコアの第2の部分は、倍精度FPUを含む。少なくとも一実施例では、FPUは、IEEE754-2008規格浮動小数点演算を実施することができ、又は、可変精度の浮動小数点演算を有効にすることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ1734はさらに、矩形コピー又はピクセル・ブレンディングの動作などの特定の機能を実行するための、1つ若しくは複数の固定機能ユニット又は特別機能ユニットをさらに含むことができる。少なくとも一実施例では、GPGPUコアの1つ又は複数は、固定の又は特別な機能論理も含むことができる。
【0189】
少なくとも一実施例では、GPGPUコア1762は、複数のデータセットに対して単一の命令を実行することができるSIMD論理を含む。少なくとも一実施例では、GPGPUコア1762は、SIMD4、SIMD8、及びSIMD16の命令を物理的に実行することができ、SIMD1、SIMD2、及びSIMD32の命令を論理的に実行することができる。少なくとも一実施例では、GPGPUコアのためのSIMD命令は、シェーダ・コンパイラによるコンパイル時に生成されてもよく、又は単一プログラム複数データ(SPMD:single program multiple data)又はSIMTのアーキテクチャ向けに書かれコンパイルされたプログラムを実行しているときに、自動的に生成されてもよい。少なくとも一実施例では、SIMT実行モデルのために構成されたプログラムの複数のスレッドは、単一のSIMD命令を介して実行することができる。たとえば、少なくとも一実施例では、同じ又は同様の動作を実行する8個のSIMTスレッドを、単一のSIMD8の論理ユニットを介して並列に実行することができる。
【0190】
少なくとも一実施例では、メモリ及びキャッシュ相互接続1768は、グラフィックス・マルチプロセッサ1734の各機能ユニットをレジスタ・ファイル1758及び共有メモリ1770に接続する相互接続ネットワークである。少なくとも一実施例では、メモリ及びキャッシュ相互接続1768は、ロード/ストア・ユニット1766が、共有メモリ1770とレジスタ・ファイル1758の間でロード及びストアの動作を実施できるようにするクロスバー相互接続である。少なくとも一実施例では、レジスタ・ファイル1758は、GPGPUコア1762と同じ周波数で動作することができ、したがって、GPGPUコア1762とレジスタ・ファイル1758の間のデータ転送は非常に低レイテンシである。少なくとも一実施例では、共有メモリ1770を使用して、グラフィックス・マルチプロセッサ1734内の機能ユニットで実行されるスレッド間の通信を可能にすることができる。少なくとも一実施例では、キャッシュ・メモリ1772を、たとえばデータ・キャッシュとして使用して、機能ユニットとテクスチャ・ユニット1736の間で通信されるテクスチャ・データをキャッシュすることができる。少なくとも一実施例では、共有メモリ1770は、プログラム管理キャッシュとしても使用することができる。少なくとも一実施例では、GPGPUコア1762で実行されているスレッドは、キャッシュ・メモリ1772内に記憶される自動キャッシュ・データに加えて、共有メモリ内にプログラム的にデータを記憶することができる。
【0191】
少なくとも一実施例では、本明細書に記載の並列プロセッサ又はGPGPUは、ホスト/プロセッサ・コアに通信可能に結合されて、グラフィックス動作、機械学習動作、パターン分析動作、及び様々な汎用GPU(GPGPU)機能を加速する。少なくとも一実施例では、GPUは、バス又は他の相互接続(たとえば、PCIe又はNVLinkなどの高速相互接続)を介してホスト・プロセッサ/コアに通信可能に結合されてもよい。少なくとも一実施例では、GPUは、コアとして同じパッケージ又はチップに一体化されてもよく、内部(すなわち、パッケージ又はチップの内部の)プロセッサ・バス/相互接続を介してコアに通信可能に結合されてもよい。少なくとも一実施例では、GPUの接続方法に関わらず、プロセッサ・コアは、ワーク記述子に含まれたコマンド/命令のシーケンスの形でワークをこうしたGPUに配分してもよい。少なくとも一実施例では、次いでGPUは、これらのコマンド/命令を効率的に処理するために専用の回路/論理を使用する。
【0192】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・マルチプロセッサ1734において使用されてもよい。
【0193】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0194】
図18は、少なくとも一実施例による、マルチGPUコンピューティング・システム1800を示す。少なくとも一実施例では、マルチGPUコンピューティング・システム1800は、ホスト・インターフェース・スイッチ1804を介して複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)1806A~Dに結合されたプロセッサ1802を含むことができる。少なくとも一実施例では、ホスト・インターフェース・スイッチ1804は、プロセッサ1802をPCIエクスプレス・バスに結合するPCIエクスプレス・スイッチ・デバイスであり、このPCIエクスプレス・バスを介して、プロセッサ1802は、GPGPU1806A~Dと通信することができる。GPGPU1806A~Dは、高速ポイントツーポイントGPUツーGPUリンク1816のセットを介して相互接続することができる。少なくとも一実施例では、GPUツーGPUリンク1816は、専用GPUリンクを介して、GPGPU1806A~Dのそれぞれに接続される。少なくとも一実施例では、P2PのGPUリンク1816は、プロセッサ1802が接続されているホスト・インターフェース・バス1804を介した通信を必要とせずに、GPGPU1806A~Dのそれぞれの間で直接通信を可能にする。少なくとも一実施例では、P2PのGPUリンク1816に仕向けられたGPUツーGPUトラフィックがあると、ホスト・インターフェース・バス1804は、システム・メモリへのアクセスができるように、又はたとえば1つ又は複数のネットワーク・デバイスを介して、マルチGPUコンピューティング・システム1800の他のインスタンスと通信するために、利用可能な状態に保たれる。少なくとも一実施例では、GPGPU1806A~Dは、ホスト・インターフェース・スイッチ1804を介してプロセッサ1802に接続され、少なくとも一実施例では、プロセッサ1802は、P2PのGPUリンク1816のための直接サポートを含み、GPGPU1806A~Dに直接接続することができる。
【0195】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにマルチGPUコンピューティング・システム1800において使用されてもよい。
【0196】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0197】
図19は、少なくとも一実施例によるグラフィックス・プロセッサ1900のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ1900は、リング相互接続1902、パイプライン・フロント・エンド1904、メディア・エンジン1937、及びグラフィックス・コア1980A~1980Nを含む。少なくとも一実施例では、リング相互接続1902は、グラフィックス・プロセッサ1900を、他のグラフィックス・プロセッサ又は1つ又は複数の汎用プロセッサ・コアを含む他の処理ユニットに結合する。少なくとも一実施例では、グラフィックス・プロセッサ1900は、マルチ・コア処理システム内に一体化された多数のプロセッサのうちの1つである。
【0198】
少なくとも一実施例では、グラフィックス・プロセッサ1900は、リング相互接続1902を介してコマンドのバッチを受け取る。少なくとも一実施例では、入ってくるコマンドは、パイプライン・フロント・エンド1904のコマンド・ストリーマ1903によって解釈される。少なくとも一実施例では、グラフィックス・プロセッサ1900は、グラフィックス・コア1980A~1980Nを介して3Dジオメトリ処理及びメディア処理を実行するためのスケーラブルな実行論理を含む。少なくとも一実施例では、3Dジオメトリ処理コマンドについては、コマンド・ストリーマ1903はコマンドをジオメトリ・パイプライン1936に供給する。少なくとも一実施例では、少なくとも一部のメディア処理コマンドについては、コマンド・ストリーマ1903はコマンドをビデオ・フロント・エンド1934に供給し、ビデオ・フロント・エンド1934はメディア・エンジン1937に結合される。少なくとも一実施例では、メディア・エンジン1937は、ビデオ及び画像の後処理のためのVideo Quality Engine(VQE)1930と、ハードウェア加速されたメディア・データのエンコード及びデコードを提供するマルチ・フォーマット・エンコード/デコード(MFX)1933エンジンとを含む。少なくとも一実施例では、ジオメトリ・パイプライン1936及びメディア・エンジン1937はそれぞれ、少なくとも1つのグラフィックス・コア1980Aによって提供されるスレッド実行リソースのための実行スレッドを生成する。
【0199】
少なくとも一実施例では、グラフィックス・プロセッサ1900は、モジュール式コア1980A~1980N(コア・スライスと呼ばれることもある)を特徴とするスケーラブルなスレッド実行リソースを含み、それぞれのモジュール式コア1980A~1980Nは、複数のサブ・コア1950A~1950N、1960A~1960N(コア・サブ・スライスと呼ばれることもある)を有する。少なくとも一実施例では、グラフィックス・プロセッサ1900は、任意の数のグラフィックス・コア1980A~1980Nを有することができる。少なくとも一実施例では、グラフィックス・プロセッサ1900は、少なくとも第1のサブ・コア1950A及び第2のサブ・コア1960Aを有するグラフィックス・コア1980Aを含む。少なくとも一実施例では、グラフィックス・プロセッサ1900は、単一のサブ・コア(たとえば、1950A)を有する低電力プロセッサである。少なくとも一実施例では、グラフィックス・プロセッサ1900は、複数のグラフィックス・コア1980A~1980Nを含み、このそれぞれが、第1のサブ・コア1950A~1950Nのセット、及び第2のサブ・コア1960A~1960Nのセットを含む。少なくとも一実施例では、第1のサブ・コア1950A~1950Nの各サブ・コアは、少なくとも、実行ユニット1952A~1952Nとメディア/テクスチャ・サンプラ1954A~1954Nの第1のセットを含む。少なくとも一実施例では、第2のサブ・コア1960A~1960Nの各サブ・コアは、少なくとも、実行ユニット1962A~1962Nとサンプラ1964A~1964Nの第2のセットを含む。少なくとも一実施例では、各サブ・コア1950A~1950N、1960A~1960Nは、共有リソース1970A~1970Nのセットを共有する。少なくとも一実施例では、共有リソースは、共有キャッシュ・メモリ及びピクセル動作論理を含む。
【0200】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・プロセッサ1900において使用されてもよい。
【0201】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0202】
図20は、少なくとも一実施例による、命令を実行するための論理回路を含んでもよいプロセッサ2000のマイクロ・アーキテクチャを示すブロック図である。少なくとも一実施例では、プロセッサ2000は、x86命令、AMR命令、特定用途向け集積回路(ASIC)用の特別命令などを含む命令を実行してもよい。少なくとも一実施例では、プロセッサ2000は、カリフォルニア州サンタクララのインテルコーポレーションによる、MMX技術で有効化されたマイクロプロセッサ内の64ビット幅MMX(商標)レジスタなど、パック・データを記憶するためのレジスタを含んでもよい。少なくとも一実施例では、整数形式と浮動小数点形式の両方で利用可能なMMXレジスタは、単一命令複数データ(「SIMD」)及びストリーミングSIMD拡張(「SSE」:streaming SIMD extensions)命令を伴うパック・データ要素で動作してもよい。少なくとも一実施例では、SSE2、SSE3、SSE4、AVX、又はそれ以上(総称して「SSEx」と呼ばれる)の技術に関する128ビット幅のXMMレジスタは、こうしたパック・データのオペランドを保持してもよい。少なくとも一実施例では、プロセッサ2000は、機械学習若しくは深層学習のアルゴリズム、訓練、又は推論を加速するために命令を実行してもよい。
【0203】
少なくとも一実施例では、プロセッサ2000は、実行すべき命令をフェッチし、プロセッサ・パイプラインで後に使用すべき命令を準備するイン・オーダー・フロント・エンド(「フロント・エンド」)2001を含む。少なくとも一実施例では、フロント・エンド2001は、いくつかのユニットを含んでもよい。少なくとも一実施例では、命令プリフェッチャ2026が、メモリから命令をフェッチし、命令デコーダ2028に命令を供給し、命令デコーダが、命令をデコード又は解釈する。たとえば、少なくとも一実施例では、命令デコーダ2028は、受け取った命令を、機械が実行することのできる「マイクロ命令」又は「マイクロ・オペレーション」と呼ばれる(「マイクロ・オプス」又は「uops」とも呼ばれる)1つ又は複数のオペレーションにデコードする。少なくとも一実施例では、命令デコーダ2028は、命令を、オプコード及び対応するデータ、並びに制御フィールドに構文解析して、これらがマイクロ・アーキテクチャによって使用されて、少なくとも一実施例による動作が実行されてもよい。少なくとも一実施例では、トレース・キャッシュ2030は、デコードされたuopsを、実行できるようにuopキュー2034においてプログラム順のシーケンス又はトレースにアセンブルしてもよい。少なくとも一実施例では、トレース・キャッシュ2030が複雑な命令に遭遇すると、マイクロコードROM2032が、動作の完了に必要なuopsを提供する。
【0204】
少なくとも一実施例では、単一のマイクロ・オプスに変換できる命令もあれば、全動作を完了するためにいくつかのマイクロ・オプスを必要とする命令もある。少なくとも一実施例では、命令を完了するために5つ以上のマイクロ・オプスが必要な場合、命令デコーダ2028は、マイクロコードROM2032にアクセスして、命令を実行してもよい。少なくとも一実施例では、命令は、命令デコーダ2028において処理できるように、少数のマイクロ・オプスにデコードされてもよい。少なくとも一実施例では、動作を完了するのに多数のマイクロ・オプスが必要な場合には、命令は、マイクロコードROM2032に記憶されてもよい。少なくとも一実施例では、トレース・キャッシュ2030は、少なくとも一実施例によるマイクロコードROM2032からの1つ又は複数の命令を完了するために、エントリ・ポイント・プログラマブル論理アレイ(「PLA」:programmable logic array)を参照して、マイクロコード・シーケンスを読み取るための正しいマイクロ命令ポインタを判定する。少なくとも一実施例では、マイクロコードROM2032が命令のためのマイクロ・オプスのシーケンシングを終了した後、機械のフロント・エンド2001は、トレース・キャッシュ2030からマイクロ・オプスのフェッチを再開してもよい。
【0205】
少なくとも一実施例では、アウト・オブ・オーダー実行エンジン(「アウト・オブ・オーダー・エンジン」)2003は、実行できるように命令を準備してもよい。少なくとも一実施例では、アウト・オブ・オーダー実行論理は、命令のフローをなめらかにし、その順序を変更するために多数バッファを有し、命令がパイプラインを下り、実行されるようにスケジューリングされるときの性能を最適化する。少なくとも一実施例では、アウト・オブ・オーダー実行エンジン2003は、限定することなく、アロケータ/レジスタ・リネーマ2040、メモリuopキュー2042、整数/浮動小数点uopキュー2044、メモリ・スケジューラ2046、高速スケジューラ2002、低速/汎用浮動小数点スケジューラ(「低速/汎用FP:floating pointスケジューラ」)2004、及び単純浮動小数点スケジューラ(「単純FPスケジューラ」)2006を含む。少なくとも一実施例では、高速スケジューラ2002、低速/汎用浮動小数点スケジューラ2004、及び単純浮動小数点スケジューラ2006は、本明細書において集合的に「uopスケジューラ2002、2004、2006」とも呼ばれる。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2040は、実行するために各uopが必要とする機械バッファ及びリソースを配分する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2040は、レジスタ・ファイルへのエントリ時に論理レジスタの名前を変更する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2040はまた、メモリ・スケジューラ2046及びuopスケジューラ2002、2004、2006の前の、2つのuopキュー、すなわちメモリ動作のためのメモリuopキュー2042と非メモリ動作のための整数/浮動小数点uopキュー2044のうちの1つに、各uopのエントリを配分する。少なくとも一実施例では、uopスケジューラ2002、2004、2006は、uopsがいつ実行準備されるかを、それらの従属入力レジスタ・オペランドのソースが準備されていること、及びそれらの動作を完了するためにuopが必要とする実行リソースが利用可能であることに基づき、判定する。少なくとも一実施例では、少なくとも一実施例の高速スケジューラ2002は、メイン・クロック・サイクルの半分ごとにスケジューリングしてもよく、低速/汎用浮動小数点スケジューラ2004及び単純浮動小数点スケジューラ2006は、メイン・プロセッサのクロック・サイクル当たりに1回スケジューリングしてもよい。少なくとも一実施例では、uopスケジューラ2002、2004、2006は、実行できるようにuopsをスケジューリングするためにディスパッチ・ポートを調停する。
【0206】
少なくとも一実施例では、実行ブロック2011は、限定することなく、整数レジスタ・ファイル/バイパス・ネットワーク2008、浮動小数点レジスタ・ファイル/バイパス・ネットワーク(「FPレジスタ・ファイル/バイパス・ネットワーク」)2010、アドレス生成ユニット(「AGU」:address generation unit)2012及び2014、高速算術論理演算ユニット(ALU)(「高速ALU」)2016及び2018、低速算術論理演算ユニット(「低速ALU」)2020、浮動小数点ALU(「FP」)2022、並びに浮動小数点移動ユニット(「FP移動」)2024を含む。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2008及び浮動小数点レジスタ・ファイル/バイパス・ネットワーク2010は、本明細書において「レジスタ・ファイル2008、2010」とも呼ばれる。少なくとも一実施例では、AGU2012及び2014、高速ALU2016及び2018、低速ALU2020、浮動小数点ALU2022、及び浮動小数点移動ユニット2024は、本明細書において「実行ユニット2012、2014、2016、2018、2020、2022、及び2024」とも呼ばれる。少なくとも一実施例では、実行ブロックb11は、限定することなく、(ゼロを含む)任意の数及びタイプのレジスタ・ファイル、バイパス・ネットワーク、アドレス生成ユニット、及び実行ユニットを、任意の組合せで含んでもよい。
【0207】
少なくとも一実施例では、レジスタ・ファイル2008、2010は、uopスケジューラ2002、2004、2006と、実行ユニット2012、2014、2016、2018、2020、2022、及び2024との間に配置されてもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2008は、整数演算を実行する。少なくとも一実施例では、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2010は、浮動小数点演算を実行する。少なくとも一実施例では、レジスタ・ファイル2008、2010のそれぞれは、限定することなく、バイパス・ネットワークを含んでもよく、このバイパス・ネットワークは、レジスタ・ファイルにまだ書き込まれていない完了したばかりの結果を、新しい従属uopsにバイパス又は転送してもよい。少なくとも一実施例では、レジスタ・ファイル2008、2010は、互いにデータを通信してもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2008は、限定することなく、2つの別々のレジスタ・ファイル、すなわち低次32ビットのデータ用の1つのレジスタ・ファイル、及び高次32ビットのデータ用の第2のレジスタ・ファイルを含んでもよい。少なくとも一実施例では、浮動小数点命令は、通常、64~128ビット幅のオペランドを有することから、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2010は、限定することなく、128ビット幅のエントリを含んでもよい。
【0208】
少なくとも一実施例では、実行ユニット2012、2014、2016、2018、2020、2022、2024は、命令を実行してもよい。少なくとも一実施例では、レジスタ・ファイル2008、2010は、マイクロ命令が実行する必要のある整数及び浮動小数点のデータのオペランド値を記憶する。少なくとも一実施例では、プロセッサ2000は、限定することなく、任意の数及び組合せの実行ユニット2012、2014、2016、2018、2020、2022、2024を含んでよい。少なくとも一実施例では、浮動小数点ALU2022及び浮動小数点移動ユニット2024は、浮動小数点、MMX、SIMD、AVX、及びSEE、又は特別な機械学習命令を含む他の演算を実行してもよい。少なくとも一実施例では、浮動小数点ALU2022は、限定することなく、64ビットずつの浮動小数点デバイダを含み、除算、平方根、及び残りのマイクロ・オプスを実行してもよい。少なくとも一実施例では、浮動小数点値を含む命令は、浮動小数点ハードウェアによって対処されてもよい。少なくとも一実施例では、ALU演算は、高速ALU2016、2018に渡されてもよい。少なくとも一実施例では、高速ALU2016、2018は、クロック・サイクルの半分の実効レイテンシで高速演算を実行してもよい。少なくとも一実施例では、低速ALU2020は、乗数、シフト、フラグ論理、及びブランチ処理などの長レイテンシ・タイプの演算のための整数実行ハードウェアを、限定することなく含んでもよいことから、ほとんどの複雑な整数演算は低速ALU2020に進む。少なくとも一実施例では、メモリのロード/ストア動作は、AGUS2012、2014によって実行されてもよい。少なくとも一実施例では、高速ALU2016、高速ALU2018、及び低速ALU2020は、64ビットのデータ・オペランドで整数演算を実行してもよい。少なくとも一実施例では、高速ALU2016、高速ALU2018、及び低速ALU2020は、16、32、128、256などを含む様々なデータ・ビット・サイズをサポートするように実施されてもよい。少なくとも一実施例では、浮動小数点ALU2022及び浮動小数点移動ユニット2024は、様々なビット幅を有する幅広いオペランドをサポートするように実施されてもよい。少なくとも一実施例では、浮動小数点ALU2022及び浮動小数点移動ユニット2024は、SIMD及びマルチメディア命令と併せて128ビット幅のパック・データ・オペランドで動作してもよい。
【0209】
少なくとも一実施例では、uopスケジューラ2002、2004、2006は、親ロードが実行を終了する前に、従属演算をディスパッチする。少なくとも一実施例では、uopsは、プロセッサ2000において投機的にスケジューリング及び実行されてもよいので、プロセッサ2000は、メモリ・ミスに対処するための論理も含んでよい。少なくとも一実施例では、データ・キャッシュにおいてデータ・ロードがミスした場合、一時的に不正確なデータを有するスケジューラを通り過ぎたパイプラインに、進行中の従属演算が存在してもよい。少なくとも一実施例では、リプレイ機構が、不正確なデータを使用する命令を追跡及び再実行する。少なくとも一実施例では、従属演算は、リプレイされる必要があってもよく、独立した演算は、完了が許容されてもよい。少なくとも一実施例では、プロセッサの少なくとも一実施例のスケジューラ及びリプレイ機構はまた、テキスト・ストリング比較演算のための命令シーケンスを捕捉するように設計されてもよい。
【0210】
少なくとも一実施例では、用語「レジスタ」は、オペランドを識別するための命令の一部として使用することができるオンボード・プロセッサのストレージ・ロケーションを指してもよい。少なくとも一実施例では、レジスタは、(プログラマの視点から見て)プロセッサの外部から使用可能であり得るものであってもよい。少なくとも一実施例では、レジスタは、特定のタイプの回路に限定されなくてもよい。むしろ、少なくとも一実施例では、レジスタは、データを記憶し、データを提供し、本明細書に記載の機能を実行してもよい。少なくとも一実施例では、本明細書に記載のレジスタは、専用物理レジスタ、レジスタ・リネーミングを使用して動的に配分される物理レジスタ、専用物理レジスタと動的に配分される物理レジスタとの組合せなど、任意の数の異なる技法を使用して、プロセッサ内の回路によって実施されてもよい。少なくとも一実施例では、整数レジスタは、32ビットの整数データを記憶する。少なくとも一実施例のレジスタ・ファイルは、パック・データのための8つのマルチメディアSIMDレジスタも含む。
【0211】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615の一部又はすべてが、実行ブロック2011、及び図示してある若しくは図示していない他のメモリ又はレジスタに組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、実行ブロック2011に示すALUのうちの1つ又は複数を使用してもよい。さらに、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行ブロック2011のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
【0212】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0213】
図21は、少なくとも一実施例による深層学習アプリケーション・プロセッサ2100を示す。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2100は、深層学習アプリケーション・プロセッサ2100によって実行される場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、深層学習アプリケーション・プロセッサ2100に実行させる命令を使用する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2100は、特定用途向け集積回路(ASIC)である。少なくとも一実施例では、アプリケーション・プロセッサ2100は、1つ若しくは複数の命令又は両方を実行した結果としていずれもハードウェアに「ハード・ワイヤード」された行列乗算演算を実行する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2100は、限定することなく、処理クラスタ2110(1)~2110(12)、チップ間リンク(「ICL」)2120(1)~2120(12)、チップ間コントローラ(「ICC」)2130(1)~2130(2)、メモリ・コントローラ(「Mem Ctrlr」)2142(1)~2142(4)、高帯域幅メモリ物理層(「HBM PHY」)2144(1)~2144(4)、管理-コントローラ中央処理装置(「管理-コントローラCPU」)2150、周辺構成要素相互接続エクスプレス・コントローラ及びダイレクト・メモリ・アクセス・ブロック(「PCIeコントローラ及びDMA」)2170、並びに16レーン周辺構成要素相互接続エクスプレス・ポート(「PCI Expressx16」)2180を含む。
【0214】
少なくとも一実施例では、処理クラスタ2110は、本明細書に記載の技法を含む1つ又は複数の訓練技法を使用して計算された重みパラメータに基づき、推論又は予測の演算を含む深層学習演算を実行してもよい。少なくとも一実施例では、各処理クラスタ2110は、限定することなく、任意の数及びタイプのプロセッサを含んでもよい。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2100は、任意の数及びタイプの処理クラスタ2100を含んでもよい。少なくとも一実施例では、チップ間リンク2120は、双方向性である。少なくとも一実施例では、チップ間リンク2120及びチップ間コントローラ2130は、1つ又は複数のニューラル・ネットワークに具体化された1つ又は複数の機械学習アルゴリズムを実行した結果得られるアクティブ化情報を含む情報を、複数の深層学習アプリケーション・プロセッサ2100が交換できるようにする。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2100は、(ゼロを含む)任意の数及びタイプのICL2120及びICC2130を含んでもよい。
【0215】
少なくとも一実施例では、HBM2 2140は、合計32ギガバイト(GB:Gigabyte)のメモリを提供する。HBM2 2140(i)は、メモリ・コントローラ2142(i)とHBM PHY2144(i)の両方に関連付けられる。少なくとも一実施例では、任意の数のHBM2 2140が、任意のタイプ及び合計量の高帯域幅メモリを提供してもよく、(ゼロを含む)任意の数及びタイプのメモリ・コントローラ2142及びHBM PHY2144に関連付けられてもよい。少なくとも一実施例では、SPI、I2C、GPIO2160、PCIeコントローラ及びDMA2170、並びに/又はPCIe2180は、任意の技術的に実行可能なやり方で任意の数及びタイプの通信規格を有効にする任意の数及びタイプのブロックに置き換えられてもよい。
【0216】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2100は、深層学習アプリケーション・プロセッサ2100に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2100は、別のプロセッサ若しくはシステムによって、又は深層学習アプリケーション・プロセッサ2100によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、プロセッサ2100は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【0217】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0218】
図22は、少なくとも一実施例による、ニューロモーフィック・プロセッサ2200のブロック図である。少なくとも一実施例では、ニューロモーフィック・プロセッサ2200は、ニューロモーフィック・プロセッサ2200の外部のソースから1つ又は複数の入力を受信する。少なくとも一実施例では、これらの入力は、ニューロモーフィック・プロセッサ2200内の1つ又は複数のニューロン2202に送信されてもよい。少なくとも一実施例では、ニューロン2202及びその構成要素は、1つ又は複数の算術論理演算ユニット(ALU)を含む回路又は論理を使用して、実施されてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2200は、限定することなく、ニューロン2202の数千又は数百万のインスタンスを含んでもよいが、任意の好適な数のニューロン2202が使用されてもよい。少なくとも一実施例では、ニューロン2202の各インスタンスは、ニューロン入力2204及びニューロン出力2206を含んでもよい。少なくとも一実施例では、ニューロン2202は出力を生成してもよく、この出力は、ニューロン2202の他のインスタンスの入力に送信されてもよい。たとえば、少なくとも一実施例では、ニューロン入力2204及びニューロン出力2206は、シナプス2208を介して相互接続されてもよい。
【0219】
少なくとも一実施例では、ニューロン2202とシナプス2208は、ニューロモーフィック・プロセッサ2200が受信した情報をニューロモーフィック・プロセッサ2200が動作して処理又は分析するように、相互接続されてもよい。少なくとも一実施例では、ニューロン2202は、ニューロン入力2204を介して受信した入力が、閾値を超えているとき、出力パルス(又は「発火」若しくは「スパイク」)を送信してもよい。少なくとも一実施例では、ニューロン2202は、ニューロン入力2204において受信した信号を合計又は積分してもよい。たとえば、少なくとも一実施例では、ニューロン2202は、漏れ積分発火ニューロン(leaky integrate-and-fire neuron)として実施されてもよく、ここで、合計(「膜電位」と呼ばれる)が閾値を超える場合には、ニューロン2202は、シグモイド関数又は閾値関数などの伝達関数を使用して、出力(又は「発火」)を生成してもよい。少なくとも一実施例では、漏れ積分発火ニューロンは、ニューロン入力2204で受信した信号を合計して膜電位にしてもよく、また、崩壊因子(又は漏れ)を適用して膜電位を低減してもよい。少なくとも一実施例では、複数の入力信号が、閾値を超えるほど十分に素早く(すなわち、膜電位の崩壊が少なすぎて発火できなくなる前に)ニューロン入力2204において受信された場合には、漏れ積分発火ニューロンが発火してもよい。少なくとも一実施例では、ニューロン2202は、入力を受信し、入力を積分して膜電位にし、膜電位を崩壊させる回路又は論理を使用して、実施されてもよい。少なくとも一実施例では、入力は平均化されてもよく、又は任意の他の好適な伝達関数が使用されてもよい。さらに、少なくとも一実施例では、ニューロン2202は、ニューロン2204に伝達関数を適用した結果が閾値を超えるとき、ニューロン2206において出力スパイクを生成するコンパレータ回路又は論理を、限定することなく含んでもよい。少なくとも一実施例では、ニューロン2202は発火すると、前に受信した入力情報を、たとえば膜電位を0又は他の好適なデフォルト値に再設定することによって、無視してもよい。少なくとも一実施例では、膜電位が0にリセットされると、ニューロン2202は、好適な期間(又は不応期)の後に通常の動作を再開してもよい。
【0220】
少なくとも一実施例では、ニューロン2202は、シナプス2208を通して相互接続されてもよい。少なくとも一実施例では、シナプス2208は、第1のニューロン2202の出力から第2のニューロン2202の入力に信号を送信するように動作してもよい。少なくとも一実施例では、ニューロン2202は、シナプス2208の2つ以上のインスタンスを介して情報を送信してもよい。少なくとも一実施例では、ニューロン出力2206の1つ又は複数のインスタンスは、シナプス2208のインスタンスを介して、同じニューロン2202のニューロン入力2204のインスタンスに接続されてもよい。少なくとも一実施例では、シナプス2208のインスタンスを介して送信されることになる出力を生成するニューロン2202のインスタンスは、シナプス2208のそのインスタンスに対して「シナプス前ニューロン」と呼ばれてもよい。少なくとも一実施例では、シナプス2208のインスタンスを介して送信されることになる入力を受信するニューロン2202のインスタンスは、シナプス2208のそのインスタンスに対して「シナプス後ニューロン」と呼ばれてもよい。少なくとも一実施例では、ニューロン2202のインスタンスは、シナプス2208の1つ又は複数のインスタンスから入力を受信してもよく、また、シナプス2208の1つ又は複数のインスタンスを介して出力を送信してもよいので、ニューロン2202の単一のインスタンスは、したがって、シナプス2208の様々なインスタンスに対して「シナプス前ニューロン」と「シナプス後ニューロン」の両方であってもよい。
【0221】
少なくとも一実施例では、ニューロン2202は、1つ又は複数の層に組織化されてもよい。ニューロン2202の各インスタンスは、1つ又は複数のシナプス2208を通って1つ又は複数のニューロン入力2204にファン・アウトすることができる1つのニューロン出力2206を有してもよい。少なくとも一実施例では、第1の層2210のニューロン2202のニューロン出力2206は、第2の層2212のニューロン2202のニューロン入力2204に接続されてもよい。少なくとも一実施例では、層2210は、「フィード・フォワード」層と呼ばれてもよい。少なくとも一実施例では、第1の層2210のインスタンスにおけるニューロン2202の各インスタンスは、第2の層2212におけるニューロン2202の各インスタンスにファン・アウトしてもよい。少なくとも一実施例では、第1の層2210は、「完全に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層2212のインスタンスにおけるニューロン2202の各インスタンスは、第3の層2214におけるニューロン2202の全インスタンスより少ないインスタンスにファン・アウトしてもよい。少なくとも一実施例では、第2の層2212は、「疎に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層2212のニューロン2202は、(同じ)第2の層2212におけるニューロン2202を含め、複数の他の層のニューロン2202にファン・アウトしてもよい。少なくとも一実施例では、第2の層2212は、「回帰層」と呼ばれてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2200は、疎に接続されたフィード・フォワード層と完全に接続されたフィード・フォワード層の両方を限定することなく含む、回帰層とフィード・フォワード層の任意の好適な組合せを限定することなく含んでもよい。
【0222】
少なくとも一実施例では、ニューロモーフィック・プロセッサ2200は、シナプス2208をニューロン2202に接続するための再構成可能相互接続アーキテクチャ、又は専用ハード・ワイヤード相互接続を、限定することなく含んでもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2200は、ニューラル・ネットワーク・トポロジ、及びニューロンのファン・イン/ファン・アウトに基づき、必要に応じてシナプスを異なるニューロン2202に配分できるようにする回路又は論理を、限定することなく含んでもよい。たとえば、少なくとも一実施例では、シナプス2208は、ネットワーク・オン・チップなどの相互接続ファブリックを使用して、又は専用の接続を用いて、ニューロン2202に接続されてもよい。少なくとも一実施例では、シナプス相互接続及びその構成要素は、回路又は論理を使用して実施されてもよい。
【0223】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0224】
図23は、少なくとも一実施例による処理システムのブロック図である。少なくとも一実施例では、システム2300は、1つ又は複数のプロセッサ2302、及び1つ又は複数のグラフィックス・プロセッサ2308を含み、単一プロセッサのデスクトップ・システム、マルチプロセッサのワークステーション・システム、又は多数のプロセッサ2302若しくはプロセッサ・コア2307を有するサーバ・システムであってもよい。少なくとも一実施例では、システム2300は、モバイル・デバイス、携帯型デバイス、又は組み込みデバイスで使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。
【0225】
少なくとも一実施例では、システム2300は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム及びメディアのコンソールを含むゲーム・コンソール、モバイル・ゲーミング・コンソール、携帯型ゲーム・コンソール、若しくはオンライン・ゲーム・コンソールを含んでもよく、又はそれらに組み込まれてもよい。少なくとも一実施例では、システム2300は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス、又はモバイル・インターネット・デバイスである。少なくとも一実施例では、処理システム2300はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、若しくは仮想現実デバイスなどのウェアラブル・デバイスを含んでもよく、それらに結合されてもよく、又はそれらの中に一体化されてもよい。少なくとも一実施例では、処理システム2300は、1つ又は複数のプロセッサ2302と、1つ又は複数のグラフィックス・プロセッサ2308によって生成されるグラフィカル・インターフェースとを有するテレビ又はセット・トップ・ボックス・デバイスである。
【0226】
少なくとも一実施例では、1つ又は複数のプロセッサ2302はそれぞれ、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実行する命令を処理するための1つ又は複数のプロセッサ・コア2307を含む。少なくとも一実施例では、1つ又は複数のプロセッサ・コア2307のそれぞれは、特定の命令セット2309を処理するように構成される。少なくとも一実施例では、命令セット2309は、複合命令セット・コンピューティング(CISC)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にしてもよい。少なくとも一実施例では、プロセッサ・コア2307はそれぞれ、異なる命令セット2309を処理してもよく、この命令セットは、他の命令セットのエミュレーションを容易にする命令を含んでもよい。少なくとも一実施例では、プロセッサ・コア2307はまた、デジタル信号プロセッサ(DSP)などの他の処理デバイスを含んでもよい。
【0227】
少なくとも一実施例では、プロセッサ2302はキャッシュ・メモリ2304を含む。少なくとも一実施例では、プロセッサ2302は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ2302の様々な構成要素間で共有される。少なくとも一実施例では、プロセッサ2302はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC))(図示せず)を使用し、このキャッシュは、知られているキャッシュ・コヒーレンス技法を使用して、プロセッサ・コア2307間で共有されてもよい。少なくとも一実施例では、さらにレジスタ・ファイル2306がプロセッサ2302に含まれ、このレジスタ・ファイルは、異なるタイプのデータを記憶するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタ)を含んでもよい。少なくとも一実施例では、レジスタ・ファイル2306は、汎用レジスタ又は他のレジスタを含んでもよい。
【0228】
少なくとも一実施例では、1つ又は複数のプロセッサ2302は、1つ又は複数のインターフェース・バス2310に結合されて、アドレス、データ、又は制御信号などの通信信号を、プロセッサ2302とシステム2300内の他の構成要素との間で送信する。少なくとも一実施例では、インターフェース・バス2310は、一実施例では、ダイレクト・メディア・インターフェース(DMI)バスのバージョンなどのプロセッサ・バスとすることができる。少なくとも一実施例では、インターフェース2310は、DMIバスに限定されず、1つ又は複数のペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)、メモリ・バス、又は他のタイプのインターフェース・バスを含んでもよい。少なくとも一実施例では、プロセッサ2302は、統合メモリ・コントローラ2316、及びプラットフォーム・コントローラ・ハブ2330を含む。少なくとも一実施例では、メモリ・コントローラ2316は、メモリ・デバイスとシステム2300の他の構成要素との間の通信を容易にし、一方でプラットフォーム・コントローラ・ハブ(PCH)2330は、ローカルI/Oバスを介してI/Oデバイスへの接続を提供する。
【0229】
少なくとも一実施例では、メモリ・デバイス2320は、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、スタティック・ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセス・メモリとしての役割を果たすのに好適な性能を有する何らかの他のメモリ・デバイスとすることができる。少なくとも一実施例では、メモリ・デバイス2320は、システム2300のためのシステム・メモリとして動作して、1つ又は複数のプロセッサ2302がアプリケーション若しくはプロセスを実行するときに使用するためのデータ2322及び命令2321を記憶することができる。少なくとも一実施例では、メモリ・コントローラ2316はまた、任意選択の外部グラフィックス・プロセッサ2312と結合しており、このグラフィックス・プロセッサは、プロセッサ2302内の1つ又は複数のグラフィックス・プロセッサ2308と通信して、グラフィックス及びメディアの動作を実行してもよい。少なくとも一実施例では、ディスプレイ・デバイス2311は、プロセッサ2302に接続することができる。少なくとも一実施例では、ディスプレイ・デバイス2311は、モバイル電子デバイス又はラップトップ・デバイスのような内部ディスプレイ・デバイス、又はディスプレイ・インターフェース(たとえば、ディスプレイ・ポートなど)を介して取り付けられる外部ディスプレイ・デバイスのうちの1つ又は複数を含むことができる。少なくとも一実施例では、ディスプレイ・デバイス2311は、仮想現実(VR)アプリケーション又は拡張現実(AR)アプリケーションで使用するための立体ディスプレイ・デバイスなどの頭部装着型ディスプレイ(HMD)を含むことができる。
【0230】
少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2330は、周辺装置が高速I/Oバスを介してメモリ・デバイス2320及びプロセッサ2302に接続できるようにする。少なくとも一実施例では、I/O周辺装置は、オーディオ・コントローラ2346、ネットワーク・コントローラ2334、ファームウェア・インターフェース2328、ワイヤレス・トランシーバ2326、タッチ・センサ2325、データ・ストレージ・デバイス2324(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)を含むが、これらに限定されない。少なくとも一実施例では、データ・ストレージ・デバイス2324は、ストレージ・インターフェース(たとえば、SATA)を介して、又はペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)などのペリフェラル・バスを介して、接続することができる。少なくとも一実施例では、タッチ・センサ2325は、タッチ画面センサ、圧力センサ、又は指紋センサを含むことができる。少なくとも一実施例では、ワイヤレス・トランシーバ2326は、WiFiトランシーバ、Bluetoothトランシーバ、又は3G、4G、若しくはLong Term Evolution(LTE)トランシーバなどのモバイル・ネットワーク・トランシーバとすることができる。少なくとも一実施例では、ファームウェア・インターフェース2328は、システム・ファームウェアとの通信を可能にし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(UEFI)とすることができる。少なくとも一実施例では、ネットワーク・コントローラ2334は、有線ネットワークへのネットワーク接続を可能にすることができる。少なくとも一実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス2310と結合する。少なくとも一実施例では、オーディオ・コントローラ2346は、多チャネル・ハイ・デフィニション・オーディオ・コントローラである。少なくとも一実施例では、システム2300は、レガシー(たとえば、パーソナル・システム2(PS/2))デバイスをシステムに結合するための任意選択のレガシーI/Oコントローラ2340を含む。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2330は、キーボードとマウス2343の組合せ、カメラ2344、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(USB)コントローラ2342の接続入力デバイスにも接続することができる。
【0231】
少なくとも一実施例では、メモリ・コントローラ2316及びプラットフォーム・コントローラ・ハブ2330のインスタンスは、外部グラフィックス・プロセッサ2312などの個別の外部グラフィックス・プロセッサに一体化されてもよい。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2330及び/又はメモリ・コントローラ2316は、1つ又は複数のプロセッサ2302の外部にあってもよい。たとえば、少なくとも一実施例では、システム2300は、外部のメモリ・コントローラ2316及びプラットフォーム・コントローラ・ハブ2330を含むことができ、これらは、プロセッサ2302と通信するシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺装置コントローラ・ハブとして構成されてもよい。
【0232】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615の一部又はすべてが、グラフィックス・プロセッサ2300に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、グラフィックス・プロセッサ2312に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図6A又は図6Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ2300のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
【0233】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0234】
図24は、少なくとも一実施例による、1つ又は複数のプロセッサ・コア2402A~2402N、統合メモリ・コントローラ2414、及び統合グラフィックス・プロセッサ2408を有するプロセッサ2400のブロック図である。少なくとも一実施例では、プロセッサ2400は、破線の四角によって表される追加コア2402Nを含むそれ以下の数の追加コアを含むことができる。少なくとも一実施例では、プロセッサ・コア2402A~2402Nのそれぞれは、1つ又は複数の内部キャッシュ・ユニット2404A~2404Nを含む。少なくとも一実施例では、各プロセッサ・コアはまた、1つ又は複数の共有キャッシュ・ユニット2406にアクセスできる。
【0235】
少なくとも一実施例では、内部キャッシュ・ユニット2404A~2404N、及び共有キャッシュ・ユニット2406は、プロセッサ2400内のキャッシュ・メモリ階層を表す。少なくとも一実施例では、キャッシュ・メモリ・ユニット2404A~2404Nは、各プロセッサ・コア内の命令及びデータのキャッシュの少なくとも1つのレベル、並びにレベル2(L2)、レベル3(L3)、レベル4(L4)などの共有中間レベル・キャッシュの1つ又は複数のレベル、又はキャッシュの他のレベルを含んでもよく、ここで外部メモリの前の最高レベルのキャッシュは、LLCとして分類される。少なくとも一実施例では、キャッシュ・コヒーレンス論理は、様々なキャッシュ・ユニット2406及び2404A~2404N間でコヒーレンスを維持する。
【0236】
少なくとも一実施例では、プロセッサ2400はまた、1つ又は複数のバス・コントローラ・ユニット2416とシステム・エージェント・コア2410のセットを含んでもよい。少なくとも一実施例では、1つ又は複数のバス・コントローラ・ユニット2416は、1つ又は複数のPCI若しくはPCIエクスプレス・バスなどのペリフェラル・バスのセットを管理する。少なくとも一実施例では、システム・エージェント・コア2410は、様々なプロセッサ構成要素のための管理機能を提供する。少なくとも一実施例では、システム・エージェント・コア2410は、様々な外部メモリ・デバイス(図示せず)へのアクセスを管理するための1つ又は複数の統合メモリ・コントローラ2414を含む。
【0237】
少なくとも一実施例では、プロセッサ・コア2402A~2402Nの1つ又は複数は、同時マルチスレッディングのサポートを含む。少なくとも一実施例では、システム・エージェント・コア2410は、マルチスレッドの処理中にコア2402A~2402Nを調整し動作させるための構成要素を含む。少なくとも一実施例では、システム・エージェント・コア2410はさらに、電力制御ユニット(PCU)を含んでもよく、このユニットは、プロセッサ・コア2402A~2402N及びグラフィックス・プロセッサ2408の1つ又は複数の電力状態を調整するための論理及び構成要素を含む。
【0238】
少なくとも一実施例では、プロセッサ2400はさらに、グラフィックス処理動作を実行するためのグラフィックス・プロセッサ2408を含む。少なくとも一実施例では、グラフィックス・プロセッサ2408は、共有キャッシュ・ユニット2406と、1つ又は複数の統合メモリ・コントローラ2414を含むシステム・エージェント・コア2410とに結合される。少なくとも一実施例では、システム・エージェント・コア2410はまた、1つ又は複数の結合されたディスプレイに向けてグラフィックス・プロセッサの出力を出させるためのディスプレイ・コントローラ2411を含む。少なくとも一実施例では、ディスプレイ・コントローラ2411はまた、少なくとも1つの相互接続を介してグラフィックス・プロセッサ2408に結合された別個のモジュールであってもよく、又はグラフィックス・プロセッサ2408内に一体化されていてもよい。
【0239】
少なくとも一実施例では、プロセッサ2400の内部構成要素を結合するために、リング・ベースの相互接続ユニット2412が使用される。少なくとも一実施例では、ポイントツーポイント相互接続、スイッチ相互接続、又は他の技法などの代替的な相互接続ユニットが使用されてもよい。少なくとも一実施例では、グラフィックス・プロセッサ2408は、I/Oリンク2413を介してリング相互接続2412と結合される。
【0240】
少なくとも一実施例では、I/Oリンク2413は、様々なプロセッサ構成要素と、eDRAMモジュールなどの高性能組み込みメモリ・モジュール2418との間の通信を容易にするオン・パッケージI/O相互接続を含む多様なI/O相互接続のうちの少なくとも1つを表す。少なくとも一実施例では、プロセッサ・コア2402A~2402Nのそれぞれ及びグラフィックス・プロセッサ2408は、共有ラスト・レベル・キャッシュとして組み込みメモリ・モジュール2418を使用する。
【0241】
少なくとも一実施例では、プロセッサ・コア2402A~2402Nは、共通の命令セット・アーキテクチャを実行する同種のコアである。少なくとも一実施例では、プロセッサ・コア2402A~2402Nは、命令セット・アーキテクチャ(ISA)の観点から見れば異種であり、ここでプロセッサ・コア2402A~2402Nのうちの1つ又は複数は、共通の命令セットを実行するが、プロセッサ・コア2402A~2402Nのうちの1つ又は複数の他のコアは、共通の命令セットのサブセット、又は異なる命令セットを実行する。少なくとも一実施例では、プロセッサ・コア2402A~2402Nは、マイクロ・アーキテクチャの観点から見れば異種であり、ここで電力消費量が相対的に高い1つ又は複数のコアは、電力消費量がより低い1つ又は複数の電力コアと結合する。少なくとも一実施例では、プロセッサ2400は、1つ若しくは複数のチップ上に実施することができ、又はSoC集積回路として実施することができる。
【0242】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615の一部又はすべてが、プロセッサ2400に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、グラフィックス・プロセッサ2312、グラフィックス・コア2402A~2402N、又は図24の他の構成要素に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図6A又は図6Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ2400のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
【0243】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0244】
図25は、本明細書に記載の少なくとも一実施例によるグラフィックス・プロセッサ・コア2500のハードウェア論理のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ・コア2500は、グラフィックス・コア・アレイ内に含まれる。少なくとも一実施例では、コア・スライスと呼ばれることもあるグラフィックス・プロセッサ・コア2500は、モジュール式グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアとすることができる。少なくとも一実施例では、グラフィックス・プロセッサ・コア2500は、1つのグラフィックス・コア・スライスの例示であり、本明細書に記載のグラフィックス・プロセッサは、目的の電力及び性能のエンベロープに基づき、複数のグラフィックス・コア・スライスを含んでもよい。少なくとも一実施例では、各グラフィックス・コア2500は、汎用及び固定の機能論理のモジュール式ブロックを含むサブ・スライスとも呼ばれる複数のサブ・コア2501A~2501Fに結合された固定機能ブロック2530を含むことができる。
【0245】
少なくとも一実施例では、固定機能ブロック2530は、たとえば低性能及び/又は低電力のグラフィックス・プロセッサ実施形態において、グラフィックス・プロセッサ2500内のすべてのサブ・コアが共有できるジオメトリ/固定機能パイプライン2536を含む。少なくとも一実施例では、ジオメトリ/固定機能パイプライン2536は、3D固定機能パイプライン、ビデオ・フロント・エンド・ユニット、スレッド・スポーナ(spawner)及びスレッド・ディスパッチャ、並びに統合リターン・バッファを管理する統合リターン・バッファ・マネージャを含む。
【0246】
少なくとも一実施例では、固定機能ブロック2530はまた、グラフィックスSoCインターフェース2537、グラフィックス・マイクロコントローラ2538、及びメディア・パイプライン2539を含む。少なくとも一実施例では、固定のグラフィックスSoCインターフェース2537は、グラフィックス・コア2500と、システム・オン・チップ集積回路内の他のプロセッサ・コアとのインターフェースを提供する。少なくとも一実施例では、グラフィックス・マイクロコントローラ2538は、スレッド・ディスパッチ、スケジューリング、及びプリエンプションを含め、グラフィックス・プロセッサ2500の様々な機能を管理するように構成可能なプログラム可能サブ・プロセッサである。少なくとも一実施例では、メディア・パイプライン2539は、画像及びビデオのデータを含むマルチメディア・データのデコーディング、エンコーディング、前処理、及び/又は後処理を容易にする論理を含む。少なくとも一実施例では、メディア・パイプライン2539は、サブ・コア2501~2501F内のコンピュート論理又はサンプリング論理への要求を介して、メディア動作を実施する。
【0247】
少なくとも一実施例では、SoCインターフェース2537は、汎用アプリケーション・プロセッサ・コア(たとえば、CPU)、及び/又はSoC内の他の構成要素と、グラフィックス・コア2500が通信できるようにし、SoC内の他の構成要素には、共有ラスト・レベル・キャッシュ・メモリ、システムRAM、及び/又は組み込みオン・チップ若しくはオン・パッケージのDRAMなどのメモリ階層要素が含まれる。少なくとも一実施例では、SoCインターフェース2537はまた、カメラ・イメージング・パイプラインなど、SoC内の固定機能デバイスとの通信を可能にし、グラフィックス・コア2500とSoC内のCPUとの間で共有することができるグローバル・メモリ・アトミックの使用を可能にし、且つ/又はそれを実施する。少なくとも一実施例では、SoCインターフェース2537はまた、グラフィックス・コア2500の電力管理制御を実施することができ、グラフィックス・コア2500のクロック・ドメインと、SoC内の他のクロック・ドメインとの間でインターフェースをとれるようにする。少なくとも一実施例では、SoCインターフェース2537は、グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアのそれぞれにコマンド及び命令を提供するように構成されたコマンド・ストリーマ及びグローバル・スレッド・ディスパッチャから、コマンド・バッファを受信できるようにする。少なくとも一実施例では、コマンド及び命令は、メディア動作が実行されるときにはメディア・パイプライン2539にディスパッチされることが可能であり、又はグラフィックス処理動作が実行されるときには、ジオメトリ及び固定機能パイプライン(たとえば、ジオメトリ及び固定機能パイプライン2536、ジオメトリ及び固定機能パイプライン2514)にディスパッチされることが可能である。
【0248】
少なくとも一実施例では、グラフィックス・マイクロコントローラ2538は、グラフィックス・コア2500のための様々なスケジューリング及び管理タスクを実行するように構成されることが可能である。少なくとも一実施例では、グラフィックス・マイクロコントローラ2538は、サブ・コア2501A~2501F内の実行ユニット(EU:execution unit)アレイ2502A~2502F、2504A~2504F内の様々なグラフィックス並列エンジンで、グラフィックスを実行し、且つ/又はワークロードのスケジューリングをコンピュートすることができる。少なくとも一実施例では、グラフィックス・コア2500を含むSoCのCPUコア上で実行されているホスト・ソフトウェアは、複数のグラフィックス・プロセッサ・ドアベルのうちの1つにワークロードを送出することができ、この経路が、適切なグラフィックス・エンジンに対するスケジューリング動作を呼び出す。少なくとも一実施例では、スケジューリング動作は、どのワークロードを次に実行すべきかを判定すること、コマンド・ストリーマにワークロードを送出すること、エンジン上で実行されている既存のワークロードをプリエンプションすること、ワークロードの進行を管理すること、及びワークロードが完了したときにホスト・ソフトウェアに通知することを含む。少なくとも一実施例では、グラフィックス・マイクロコントローラ2538はまた、グラフィックス・コア2500の低電力又はアイドル状態を促進して、オペレーティング・システム及び/又はシステム上のグラフィックス・ドライバ・ソフトウェアとは無関係に、低電力状態の移行全体にわたってグラフィックス・コア2500内のレジスタを保存及び復元する機能をグラフィックス・コア2500に提供することができる。
【0249】
少なくとも一実施例では、グラフィックス・コア2500は、図示してあるサブ・コア2501A~2501Fより多くの、又はそれより少ない、N個までのモジュール式サブ・コアを有してもよい。N個のサブ・コアのセットごとに、少なくとも一実施例では、グラフィックス・コア2500はまた、共有機能論理2510、共有及び/又はキャッシュ・メモリ2512、ジオメトリ/固定機能パイプライン2514、並びに様々なグラフィックスを加速し、処理動作をコンピュートするための追加の固定機能論理2516を含むことができる。少なくとも一実施例では、共有機能論理2510は、グラフィックス・コア2500内の各N個のサブ・コアが共有できる論理ユニット(たとえば、サンプラ、数理、及び/又はスレッド間通信の論理)を含むことができる。少なくとも一実施例では、固定の、共有の、及び/又はキャッシュのメモリ2512は、グラフィックス・コア2500内のN個のサブ・コア2501A~2501Fのためのラスト・レベル・キャッシュとすることができ、また、複数のサブ・コアがアクセスできる共有メモリとしての役割も果たすことができる。少なくとも一実施例では、ジオメトリ/固定機能パイプライン2514は、固定機能ブロック2530内のジオメトリ/固定機能パイプライン2536の代わりに含まれてもよく、同じ又は同様の論理ユニットを含むことができる。
【0250】
少なくとも一実施例では、グラフィックス・コア2500は、グラフィックス・コア2500が使用するための様々な固定機能加速論理を含むことができる追加の固定機能論理2516を含む。少なくとも一実施例では、追加の固定機能論理2516は、位置限定シェーディング(position only shading)に使用するための追加のジオメトリ・パイプラインを含む。位置限定シェーディングでは、少なくとも2つのジオメトリ・パイプラインが存在しているが、ジオメトリ/固定機能パイプライン2516、2536内の完全ジオメトリ・パイプラインと選別パイプライン(cull pipeline)においてであり、この選別パイプラインは、追加の固定機能論理2516内に含まれてもよい追加のジオメトリ・パイプラインである。少なくとも一実施例では、選別パイプラインは、完全ジオメトリ・パイプラインの縮小版である。少なくとも一実施例では、完全パイプライン及び選別パイプラインは、アプリケーションの異なるインスタンスを実行することができ、各インスタンスは別個のコンテキストを有する。少なくとも一実施例では、位置限定シェーディングは、切り捨てられた三角形の長い選別ランを隠すことができ、いくつかのインスタンスにおいてシェーディングを早く完了させることができる。たとえば、少なくとも一実施例では、選別パイプラインは、ピクセルをフレーム・バッファにラスタ化及びレンダリングすることなく、頂点の位置属性をフェッチしシェーディングするので、追加の固定機能論理2516内の選別パイプライン論理は、メイン・アプリケーションと並列で位置シェーダを実行することができ、完全パイプラインよりも全体的に早く臨界結果(critical result)を生成する。少なくとも一実施例では、選別パイプラインは、生成された臨界結果を使用して、すべての三角形について、これらの三角形が選別されているかどうかに関わらず、可視性情報をコンピュートすることができる。少なくとも一実施例では、(このインスタンスではリプレイ・パイプラインと呼ばれてもよい)完全パイプラインは、可視性情報を消費して、選別された三角形を飛ばして可視三角形だけをシェーディングすることができ、この可視性三角形が、最終的にラスタ化フェーズに渡される。
【0251】
少なくとも一実施例では、追加の固定機能論理2516はまた、機械学習の訓練又は推論の最適化を含む実施形態のために、固定機能の行列乗算論理など、機械学習の加速論理を含むことができる。
【0252】
少なくとも一実施例では、各グラフィックス・サブ・コア2501A~2501F内において、実行リソースのセットを含み、このセットは、グラフィックス・パイプライン、メディア・パイプライン、又はシェーダ・プログラムからの要求に応答して、グラフィックス動作、メディア動作、及びコンピュート動作を実行するために使用されてもよい。少なくとも一実施例では、グラフィックス・サブ・コア2501A~2501Fは、複数のEUアレイ2502A~2502F、2504A~2504F、スレッド・ディスパッチ及びスレッド間通信(TD/IC:thread dispatch and inter-thread communication)論理2503A~2503F、3D(たとえば、テクスチャ)サンプラ2505A~2505F、メディア・サンプラ2506A~2506F、シェーダ・プロセッサ2507A~2507F、及び共有ローカル・メモリ(SLM:shared local memory)2508A~2508Fを含む。EUアレイ2502A~2502F、2504A~2504Fはそれぞれ、複数の実行ユニットを含み、これらは、グラフィックス、メディア、又はコンピュート・シェーダ・プログラムを含むグラフィックス動作、メディア動作、又はコンピュート動作のサービスにおいて浮動小数点及び整数/固定小数点の論理演算を実行することができる汎用グラフィックス・プロセッシング・ユニットである。少なくとも一実施例では、TD/IC論理2503A~2503Fは、サブ・コア内の実行ユニットのためのローカル・スレッド・ディスパッチ及びスレッド制御動作を実行し、サブ・コアの実行ユニット上で実行されているスレッド間の通信を容易にする。少なくとも一実施例では、3Dサンプラ2505A~2505Fは、テクスチャ又は他の3Dグラフィックス関連のデータをメモリに読み取ることができる。少なくとも一実施例では、3Dサンプラは、所与のテクスチャに関連付けられた構成済みサンプル状態及びテクスチャ・フォーマットに基づき、テクスチャ・データを異なるやり方で読み取ることができる。少なくとも一実施例では、メディア・サンプラ2506A~2506Fは、メディア・データに関連付けられたタイプ及びフォーマットに基づき、同様の読取り動作を実行することができる。少なくとも一実施例では、各グラフィックス・サブ・コア2501A~2501Fは、代替的に3Dとメディアの統合サンプラを含むことができる。少なくとも一実施例では、各サブ・コア2501A~2501F内の実行ユニット上で実行しているスレッドは、スレッド・グループ内で実行しているスレッドが、オン・チップ・メモリの共通プールを使用して実行できるようにするために、各サブ・コア内の共有ローカル・メモリ2508A~2508Fを利用することができる。
【0253】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615の一部又はすべてが、グラフィックス・プロセッサ2510に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、グラフィックス・プロセッサ2312、グラフィックス・マイクロコントローラ2538、ジオメトリ及び固定機能パイプライン2514及び2536、又は図24の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図6A又は図6Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ2500のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
【0254】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0255】
図26A図26Bは、少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理2600を示す。図26Aは、スレッド実行論理2600が使用される少なくとも一実施例を示す。図26Bは、少なくとも一実施例による、実行ユニットの例示的な内側細部を示す図である。
【0256】
図26Aに示すように、少なくとも一実施例では、スレッド実行論理2600は、シェーダ・プロセッサ2602、スレッド・ディスパッチャ2604、命令キャッシュ2606、複数の実行ユニット2608A~2608Nを含むスケーラブル実行ユニット・アレイ、サンプラ2610、データ・キャッシュ2612、及びデータ・ポート2614を含む。少なくとも一実施例では、スケーラブル実行ユニット・アレイは、1つ又は複数の実行ユニット(たとえば、実行ユニット2608A、2608B、2608C、2608D~2608N-1及び2608Nのうちのいずれか)を、たとえばワークロードの計算要件に基づき有効又は無効にすることによって、動的に拡大縮小することができる。少なくとも一実施例では、スケーラブル実行ユニットは、実行ユニットのそれぞれにリンクされる相互接続ファブリックを介して相互接続される。少なくとも一実施例では、スレッド実行論理2600は、命令キャッシュ2606、データ・ポート2614、サンプラ2610、及び実行ユニット2608A~2608Nのうちの1つ又は複数を介した、システム・メモリ又はキャッシュ・メモリなどのメモリへの1つ又は複数の接続を含む。少なくとも一実施例では、各実行ユニット(たとえば、2608A)は、スレッドごとに複数のデータ要素を並列で処理しながら、複数の同時のハードウェア・スレッドを実行することができるスタンドアロンのプログラム可能な汎用計算ユニットである。少なくとも一実施例では、実行ユニット2608A~2608Nのアレイは、任意の数の個々の実行ユニットを含むように拡大縮小可能である。
【0257】
少なくとも一実施例では、実行ユニット2608A~2608Nは、シェーダ・プログラムを実行するために主に使用される。少なくとも一実施例では、シェーダ・プロセッサ2602は、様々なシェーダ・プログラムを処理し、シェーダ・プログラムに関連付けられた実行スレッドを、スレッド・ディスパッチャ2604を介してディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ2604は、グラフィックス及びメディア・パイプラインからのスレッド開始要求を調停し、要求されたスレッドを、実行ユニット2608A~2608Nの1つ又は複数の実行ユニット上でインスタンス化するための論理を含む。たとえば、少なくとも一実施例では、ジオメトリ・パイプラインは、頂点シェーダ、モザイク・シェーダ、又はジオメトリ・シェーダを、処理できるようにスレッド実行論理にディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ2604はまた、実行しているシェーダ・プログラムからのラン・タイム・スレッド・スポーニング要求(spawning request)を処理することができる。
【0258】
少なくとも一実施例では、実行ユニット2608A~2608Nは、多くの標準的な3Dグラフィックス・シェーダ命令のネイティブ・サポートを含む命令セットをサポートし、それにより、グラフィックス・ライブラリ(たとえば、Direct3D及びOpenGL)からのシェーダ・プログラムが、最小のトランスレーションで実行される。少なくとも一実施例では、実行ユニットは、頂点及びジオメトリの処理(たとえば、頂点プログラム、ジオメトリ・プログラム、頂点シェーダ)、ピクセル処理(たとえば、ピクセル・シェーダ、フラグメント・シェーダ)、及び汎用処理(たとえば、コンピュート及びメディアのシェーダ)をサポートする。少なくとも一実施例では、1つ又は複数の算術論理演算ユニット(ALU)を含む各実行ユニット2608A~2608Nのそれぞれは、単一命令複数データ(SIMD)の実行を複数発行することができ、マルチスレッド化された動作によって、メモリ・アクセスのレイテンシが高いにもかかわらず、効率的な実行環境が可能になる。少なくとも一実施例では、各実行ユニット内の各ハードウェア・スレッドは、専用の高帯域幅レジスタ・ファイル及び関連する独立したスレッド状態を有する。少なくとも一実施例では、実行は、整数演算、単精度及び倍精度の浮動小数点演算、SIMDブランチ性能、論理演算、超越演算、及び他の種々の演算を行うことができるパイプラインに対して、クロック当たり複数発行される。少なくとも一実施例では、メモリ、又は共有機能のうちの1つからのデータを待機している間に、実行ユニット2608A~2608N内の従属論理は、要求したデータが戻されるまで、待機スレッドをスリープ状態にする。少なくとも一実施例では、待機スレッドがスリープ状態の間に、ハードウェア・リソースは他のスレッドの処理に専念してもよい。たとえば、少なくとも一実施例では、頂点シェーダ動作に関連する遅延中に、実行ユニットは、ピクセル・シェーダ、フラグメント・シェーダ、又は異なる頂点シェーダを含む別のタイプのシェーダ・プログラムを実行することができる。
【0259】
少なくとも一実施例では、実行ユニット2608A~2608Nの各実行ユニットは、データ要素のアレイに対して動作する。少なくとも一実施例では、データ要素の数は「実行サイズ」であり、又は命令に対するチャネルの数である。少なくとも一実施例では、実行チャネルは、データ要素のアクセス、マスキング、及び命令内のフロー制御に関する実行の論理ユニットである。少なくとも一実施例では、チャネルの数は、特定のグラフィックス・プロセッサのための物理的な算術論理演算ユニット(ALU)又は浮動小数点ユニット(FPU)の数とは無関係であってもよい。少なくとも一実施例では、実行ユニット2608A~2608Nは、整数及び浮動小数点のデータ・タイプをサポートしてもよい。
【0260】
少なくとも一実施例では、実行ユニット命令セットは、SIMD命令を含む。少なくとも一実施例では、様々なデータ要素が、パック・データ・タイプとしてレジスタに記憶されてもよく、実行ユニットは、要素のデータ・サイズに基づき様々な要素を処理する。たとえば、少なくとも一実施例では、256ビット幅ベクトルで動作しているとき、ベクトルの256ビットがレジスタに記憶され、実行ユニットは、4個の別々の64ビット・パック・データ要素(クワッド・ワード(QW:Quad-Word)サイズのデータ要素)、8個の別々の32ビット・パック・データ要素(ダブル・ワード(DW:Double Word)サイズのデータ要素)、16個の別々の16ビット・パック・データ要素(ワード(W:Word)サイズのデータ要素)、又は32個の別々の8ビット・データ要素(バイト(B:byte)サイズのデータ要素)としてベクトル上で動作する。しかし少なくとも一実施例では、異なるベクトル幅及びレジスタサイズが考えられる。
【0261】
少なくとも一実施例では、1つ又は複数の実行ユニットを組み合わせて、融合EUに共通のスレッド制御論理(2607A~2607N)を有する融合実行ユニット2609A~2609Nにすることができる。少なくとも一実施例では、複数のEUを融合して、EUグループにすることができる。少なくとも一実施例では、融合EUグループの各EUは、別々のSIMDハードウェア・スレッドを実行するように構成されることが可能である。融合EUグループのEUの数は、様々な実施例に応じて異なってもよい。少なくとも一実施例では、SIMD8、SIMD16、及びSIMD32を含むがこれに限定されない様々なSIMD幅を、EUごとに実行することができる。少なくとも一実施例では、各融合グラフィックス実行ユニット2609A~2609Nは、少なくとも2つの実行ユニットを含む。たとえば、少なくとも一実施例では、融合実行ユニット2609Aは、第1のEU2608A、第2のEU2608B、及び第1のEU2608Aと第2のEU2608Bに共通のスレッド制御論理2607Aを含む。少なくとも一実施例では、スレッド制御論理2607Aは、融合グラフィックス実行ユニット2609Aで実行されているスレッドを制御して、融合実行ユニット2609A~2609N内の各EUを、共通の命令ポインタ・レジスタを使用して実行できるようにする。
【0262】
少なくとも一実施例では、1つ又は複数の内部命令キャッシュ(たとえば、2606)は、実行ユニットに対するスレッド命令をキャッシュするためにスレッド実行論理2600に含まれる。少なくとも一実施例では、1つ又は複数のデータ・キャッシュ(たとえば、2612)は、スレッド実行中にスレッド・データをキャッシュするために含まれる。少なくとも一実施例では、サンプラ2610は、3D動作のためのテクスチャ・サンプリング、及びメディア動作のためのメディア・サンプリングを実行するために含まれる。少なくとも一実施例では、サンプラ2610は、特別なテクスチャ又はメディア・サンプリング機能を含み、サンプリングされたデータを実行ユニットに提供する前に、サンプリング処理中にテクスチャ又はメディアのデータを処理する。
【0263】
実行中、少なくとも一実施例では、グラフィックス及びメディア・パイプラインは、スレッド開始要求を、スレッド・スポーニング及びディスパッチ論理を介してスレッド実行論理2600に送る。少なくとも一実施例では、幾何学的物体のグループが処理され、ピクセル・データにラスタ化されたら、シェーダ・プロセッサ2602内のピクセル・プロセッサ論理(たとえば、ピクセル・シェーダ論理、フラグメント・シェーダ論理など)が呼び出されて、出力情報をさらにコンピュートし、結果を出力面(たとえば、色バッファ、深度バッファ、ステンシル・バッファなど)に書き込ませる。少なくとも一実施例では、ピクセル・シェーダ又はフラグメント・シェーダは、ラスタ化された物体間で補間されることになる様々な頂点属性の値を計算する。少なくとも一実施例では、次いで、シェーダ・プロセッサ2602内のピクセル・プロセッサ論理が、アプリケーション・プログラミング・インターフェース(API)付きのピクセル・シェーダ・プログラム又はフラグメント・シェーダ・プログラムを実行する。少なくとも一実施例では、シェーダ・プログラムを実行するために、シェーダ・プロセッサ2602は、スレッド・ディスパッチャ2604を介してスレッドを実行ユニット(たとえば、2608A)にディスパッチする。少なくとも一実施例では、シェーダ・プロセッサ2602は、サンプラ2610のテクスチャ・サンプリング論理を使用して、メモリに記憶されたテクスチャ・マップのテクスチャ・データにアクセスする。少なくとも一実施例では、テクスチャ・データ及び入力ジオメトリ・データに対する算術演算によって、各ジオメトリ・フラグメントのピクセル色データがコンピュートされ、又はさらに処理されないように1つ又は複数のピクセルが切り捨てられる。
【0264】
少なくとも一実施例では、データ・ポート2614は、スレッド実行論理2600のためのメモリ・アクセス機構を提供して、処理済みデータを、グラフィックス・プロセッサ出力パイプラインでさらに処理できるようにメモリに出力する。少なくとも一実施例では、データ・ポート2614は、1つ又は複数のキャッシュ・メモリ(たとえば、データ・キャッシュ2612)を含み、又はそれに結合されて、データ・ポートを介したメモリ・アクセスのためのデータをキャッシュする。
【0265】
図26Bに示してあるように、少なくとも一実施例では、グラフィック実行ユニット2608は、命令フェッチ・ユニット2637、汎用レジスタ・ファイル・アレイ(GRF:general register file array)2624、アーキテクチャ・レジスタ・ファイル・アレイ(ARF)2626、スレッド調停装置(arbiter)2622、送信ユニット2630、ブランチ・ユニット2632、SIMD浮動小数点ユニット(FPU)2634のセット、及び少なくとも一実施例では、専用整数SIMD ALU2635のセットを含むことができる。少なくとも一実施例では、GRF2624及びARF2626は、各同時ハードウェア・スレッドに関連付けられた汎用レジスタ・ファイルとアーキテクチャ・レジスタ・ファイルのセットを含み、このハードウェア・スレッドは、グラフィックス実行ユニット2608においてアクティブであってもよい。少なくとも一実施例では、スレッドごとのアーキテクチャ状態が、ARF2626において維持され、スレッド実行中に使用されるデータが、GRF2624に記憶される。少なくとも一実施例では、各スレッドに対する命令ポインタを含む各スレッドの実行状態は、ARF2626のスレッド専用レジスタに保持することが可能である。
【0266】
少なくとも一実施例では、グラフィックス実行ユニット2608は、同時マルチスレッディング(SMT:Simultaneous Multi-Threading)と微細化インターリーブ・マルチスレッディング(IMT:Interleaved Multi-Threading)の組合せであるアーキテクチャを有する。少なくとも一実施例では、アーキテクチャは、実行ユニット当たりの同時スレッドのターゲット数及びレジスタ数に基づき設計時に微調整することができるモジュール式構成を有し、ここで実行ユニットのリソースは、複数の同時スレッドを実行するために使用される論理にわたって分割される。
【0267】
少なくとも一実施例では、グラフィックス実行ユニット2608は複数の命令を共同発行することができ、この命令は、それぞれ異なる命令であってもよい。少なくとも一実施例では、グラフィックス実行ユニット・スレッド2608のスレッド調停装置2622は、送信ユニット2630、ブランチ・ユニット2642、又はSIMD FPU2634のうちの1つに命令をディスパッチして実行できるようにすることができる。少なくとも一実施例では、各実行スレッドは、GRF2624内の128個の汎用レジスタにアクセスすることができ、ここで各レジスタは、32ビットのデータ要素のSIMD8要素のベクトルとしてアクセス可能な32バイトを記憶することができる。少なくとも一実施例では、各実行ユニット・スレッドは、GRF2624内の4Kバイトにアクセスすることができるが、実施例はこのように限定されず、他の実施例ではより多くの、又はより少ないリソースが提供されてもよい。少なくとも一実施例では、最大7個のスレッドを同時に実行できるが、実行ユニット当たりのスレッド数も、実施例に応じて変えることができる。7個のスレッドが4Kバイトにアクセスできる少なくとも一実施例では、GRF2624は、合計28Kバイトを記憶することができる。少なくとも一実施例では、フレキシブルなアドレッシング・モードにより、複数のレジスタがともにアドレスされてより幅広いレジスタを構築したり、ストライド設定された矩形ブロック・データ構造を表したりできるようにすることができる。
【0268】
少なくとも一実施例では、メモリ動作、サンプラ動作、及び他のレイテンシの長いシステム通信は、メッセージ引渡し送信ユニット2630によって実行される「送信」命令を介してディスパッチされる。少なくとも一実施例では、ブランチ命令は、SIMDの発散及び最終的な収束を容易にするために、専用のブランチ・ユニット2632にディスパッチされる。
【0269】
少なくとも一実施例では、グラフィックス実行ユニット2608は、浮動小数点演算を実行するための1つ又は複数のSIMD浮動小数点ユニット(FPU)2634を含む。少なくとも一実施例では、FPU2634は、整数計算もサポートする。少なくとも一実施例ではFPU2634は、最大M個の32ビット浮動小数点(若しくは整数)演算をSIMDで実行し、又は最大で2M個の16ビット整数演算、若しくは16ビット浮動小数点演算をSIMDで実行することができる。少なくとも一実施例では、FPUのうちの少なくとも1つは、拡張数理機能を提供して、高スループットの超越数理関数、及び倍精度の64ビット浮動小数点をサポートする。少なくとも一実施例では、8ビットの整数SIMD ALU2635のセットも存在し、機械学習計算に関連する動作を実行するように特に最適化されてもよい。
【0270】
少なくとも一実施例では、グラフィックス実行ユニット2608の複数のインスタンスのアレイが、グラフィックス・サブ・コア・グループ(たとえば、サブ・スライス)においてインスタンス化されてもよい。少なくとも一実施例では、実行ユニット2608は、複数の実行チャネルにわたって命令を実行することができる。少なくとも一実施例では、グラフィックス実行ユニット2608で実行される各スレッドは、異なるチャネルで実行される。
【0271】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、推論及び/又は訓練論理615の一部又はすべてが、実行論理2600に組み込まれてもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図6A又は図6Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行論理2600のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
【0272】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0273】
図27は、少なくとも一実施例による並列処理ユニット(「PPU」)2700を示す。少なくとも一実施例では、PPU2700は、PPU2700によって実行された場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、PPU2700に実行させる機械可読コードで構成される。少なくとも一実施例では、PPU2700はマルチスレッド・プロセッサであり、このプロセッサは、1つ又は複数の集積回路デバイスに実施され、コンピュータ可読命令(機械可読命令若しくは単に命令とも呼ばれる)を、複数のスレッドで並列に処理するように設計されたレイテンシ隠蔽技法としてマルチスレッディングを利用する。少なくとも一実施例では、スレッドとは、実行スレッドを指し、PPU2700によって実行されるように構成された命令のセットをインスタンス化したものである。少なくとも一実施例では、PPU2700は、液晶ディスプレイ(「LCD」)デバイスなどのディスプレイ・デバイスに表示できるように2次元(「2D」)画像データを生成するために、3次元(「3D」)グラフィックス・データを処理するためのグラフィックス・レンダリング・パイプラインを実施するように構成されたグラフィックス・プロセッシング・ユニット(「GPU」)である。少なくとも一実施例では、PPU2700を利用して、線形代数演算及び機械学習演算などの計算が実行される。図27は、単に例示を目的とした例示的な並列プロセッサを示しており、本開示の範囲内で企図されるプロセッサ・アーキテクチャの非限定的な例として解釈されるべきであり、同プロセッサに追加するため、且つ/又はそれを置き換えるために、任意の好適なプロセッサが利用されてもよいことが解釈されるべきである。
【0274】
少なくとも一実施例では、1つ又は複数のPPU2700は、高性能コンピューティング(「HPC」:High Performance Computing)、データ・センタ、及び機械学習のアプリケーションを加速するように構成される。少なくとも一実施例では、PPU2700は、以下の非限定的な例を含む深層学習システム及びアプリケーションを加速するように構成される:自律車両プラットフォーム、深層学習、高精度音声、画像、テキスト認識システム、インテリジェント・ビデオ分析、分子シミュレーション、創薬、病気診断、天気予報、ビッグ・データ分析、天文学、分子動態シミュレーション、金融モデリング、ロボット工学、工場自動化、リアルタイム言語翻訳、オンライン検索最適化、及び個別化ユーザ推奨など。
【0275】
少なくとも一実施例では、PPU2700は、限定することなく、入力/出力(「I/O」)ユニット2706、フロント・エンド・ユニット2710、スケジューラ・ユニット2712、ワーク分配ユニット2714、ハブ2716、クロスバー(「Xbar」:crossbar)2720、1つ又は複数の汎用処理クラスタ(「GPC」:general processing cluster)2718、及び1つ又は複数のパーティション・ユニット(「メモリ・パーティション・ユニット」)2722を含む。少なくとも一実施例では、PPU2700は、1つ又は複数の高速GPU相互接続(「GPU相互接続」)2708を介してホスト・プロセッサ又は他のPPU2700に接続される。少なくとも一実施例では、PPU2700は、相互接続2702を介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、PPU2700は、1つ又は複数のメモリ・デバイス(「メモリ」)2704を備えるローカル・メモリに接続される。少なくとも一実施例では、メモリ・デバイス2704は、限定することなく、1つ又は複数のダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイスを含む。少なくとも一実施例では、1つ又は複数のDRAMデバイスは、複数のDRAMダイが各デバイス内で積層された高帯域幅メモリ(「HBM」)サブシステムとして構成されても、且つ/又は構成可能であってもよい。
【0276】
少なくとも一実施例では、高速GPU相互接続2708は、有線ベースのマルチ・レーン通信リンクを指してもよく、このリンクは、拡張縮小するためにシステムによって使用され、1つ又は複数の中央処理装置(「CPU」)と組み合わされた1つ又は複数のPPU2700を含み、PPU2700とCPUとの間のキャッシュ・コヒーレンス、及びCPUマスタリングをサポートする。少なくとも一実施例では、データ及び/又はコマンドは、高速GPU相互接続2708により、ハブ2716を介して、1つ又は複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニット、及び図27に明示されていないこともある他の構成要素などのPPU2700の別のユニットに/から送信される。
【0277】
少なくとも一実施例では、I/Oユニット2706は、システム・バス2702を介してホスト・プロセッサ(図27には示さず)から通信(たとえば、コマンド、データ)を送受信するように構成される。少なくとも一実施例では、I/Oユニット2706は、システム・バス2702を介して直接、又は1つ若しくは複数の、メモリ・ブリッジなどの中間デバイスを介して、ホスト・プロセッサと通信する。少なくとも一実施例では、I/Oユニット2706は、システム・バス2702を介してPPU2700のうちの1つ又は複数などの1つ又は複数の他のプロセッサと通信してもよい。少なくとも一実施例では、I/Oユニット2706は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCIe」)インターフェースを実施して、PCIeバスを介して通信できるようにする。少なくとも一実施例では、I/Oユニット2706は、外部デバイスと通信するためのインターフェースを実施する。
【0278】
少なくとも一実施例では、I/Oユニット2706は、システム・バス2702を介して受信したパケットをデコードする。少なくとも一実施例では、少なくともいくつかのパケットは、PPU2700に様々な動作を実行させるように構成されたコマンドを表す。少なくとも一実施例では、I/Oユニット2706は、デコードされたコマンドを、コマンドによって指定されるPPU2700の様々な他のユニットに送信する。少なくとも一実施例では、コマンドは、フロント・エンド・ユニット2710に送信され、且つ/又はハブ2716、若しくは(図27には明示していない)1つ若しくは複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニットなどのPPU2700の他のユニットに送信される。少なくとも一実施例では、I/Oユニット2706はPPU2700の様々な論理ユニット間で、通信をルーティングするように構成される。
【0279】
少なくとも一実施例では、ホスト・プロセッサによって実行されるプログラムは、ワークロードをPPU2700に提供して処理できるようにするバッファにおいて、コマンド・ストリームをエンコードする。少なくとも一実施例では、ワークロードは、命令と、これらの命令によって処理されることになるデータとを含む。少なくとも一実施例では、バッファは、ホスト・プロセッサとPPU2700の両方がアクセス(たとえば、書込み/読取り)可能なメモリ内の領域であり、ホスト・インターフェース・ユニットは、I/Oユニット2706によってシステム・バス2702を介して送信されるメモリ要求を介して、システム・バス2702に接続されたシステム・メモリ内のバッファにアクセスするように構成されてもよい。少なくとも一実施例では、ホスト・プロセッサは、バッファにコマンド・ストリームを書き込み、次いでコマンド・ストリームの開始点を指すポインタをPPU2700に送信し、それによりフロント・エンド・ユニット2710は、1つ又は複数のコマンド・ストリームを指すポインタを受信し、1つ又は複数のコマンド・ストリームを管理して、コマンド・ストリームからコマンドを読み取り、コマンドをPPU2700の様々なユニットに転送する。
【0280】
少なくとも一実施例では、フロント・エンド・ユニット2710は、1つ又は複数のコマンド・ストリームによって定義されるタスクを処理するように様々なGPC2718を構成するスケジューラ・ユニット2712に結合される。少なくとも一実施例では、スケジューラ・ユニット2712は、スケジューラ・ユニット2712によって管理される様々なタスクに関連する状態情報を追跡するように構成され、ここで状態情報は、どのGPC2718にタスクが割り当てられるか、タスクがアクティブか非アクティブか、タスクに関連付けられた優先レベルなどを示してもよい。少なくとも一実施例では、スケジューラ・ユニット2712は、GPC2718のうちの1つ又は複数において、複数のタスクの実行を管理する。
【0281】
少なくとも一実施例では、スケジューラ・ユニット2712は、GPC2718で実行するためのタスクをディスパッチするように構成されたワーク分配ユニット2714に結合される。少なくとも一実施例では、ワーク分配ユニット2714は、スケジューラ・ユニット2712から受信したスケジュール済みタスクの数を追跡し、ワーク分配ユニット2714は、GPC2718のそれぞれについて、ペンディング・タスク・プール、及びアクティブ・タスク・プールを管理する。少なくとも一実施例では、ペンディング・タスク・プールは、特定のGPC2718によって処理されるように割り当てられたタスクを含むいくつかのスロット(たとえば、32スロット)を備え、アクティブ・タスク・プールは、GPC2718によりアクティブに処理されているタスクのためのいくつかのスロット(たとえば、4スロット)を備え、それにより、GPC2718のうちの1つがタスクの実行を完了すると、GPC2718のアクティブ・タスク・プールからそのタスクが排除され、ペンディング・タスク・プールからの他のタスクのうちの1つが選択され、GPC2718で実行されるようにスケジューリングされる。少なくとも一実施例では、データ依存性が解決されるのを待機している間など、アクティブ・タスクがGPC2718上でアイドルである場合には、アクティブ・タスクがGPC2718から排除され、ペンディング・タスク・プールに戻され、その間に、ペンディング・タスク・プールの別のタスクが選択され、GPC2718で実行されるようにスケジューリングされる。
【0282】
少なくとも一実施例では、ワーク分配ユニット2714は、Xバー2720を介して1つ又は複数のGPC2718と通信する。少なくとも一実施例では、Xバー2720は、PPU2700のユニットのうちの多くを、PPU2700の別のユニットに結合する相互接続ネットワークであり、ワーク分配ユニット2714を特定のGPC2718に結合するように構成されることが可能である。少なくとも一実施例では、PPU2700の1つ又は複数の他のユニットも、ハブ2716を介してXバー2720に接続されてもよい。
【0283】
少なくとも一実施例では、タスクはスケジューラ・ユニット2712によって管理され、ワーク分配ユニット2714によってGPC2718のうちの1つにディスパッチされる。GPC2718は、タスクを処理し、結果を生成するように構成される。少なくとも一実施例では、結果は、GPC2718内の他のタスクによって消費されてもよく、Xバー2720を介して異なるGPC2718にルーティングされてもよく、又はメモリ2704に記憶されてもよい。少なくとも一実施例では、結果を、パーティション・ユニット2722を介してメモリ2704に書き込むことができ、パーティション・ユニット2722は、メモリ2704への/からのデータの読取り及び書込みを行うためのメモリ・インターフェースを実施する。少なくとも一実施例では、結果を、高速GPU相互接続2708を介して別のPPU2704又はCPUに送信することができる。少なくとも一実施例では、PPU2700は、PPU2700に結合された別々の個別メモリ・デバイス2704の数に等しいU個のパーティション・ユニット2722を、限定することなく含む。少なくとも一実施例では、パーティション・ユニット2722は、図29と併せて下記にさらに詳細に説明される。
【0284】
少なくとも一実施例では、ホスト・プロセッサはドライバ・カーネルを実行し、このカーネルは、ホスト・プロセッサで実行されている1つ又は複数のアプリケーションがPPU2700で実行するための動作をスケジューリングできるようにするアプリケーション・プログラミング・インターフェース(API)を実施している。少なくとも一実施例では、複数のコンピュート・アプリケーションが、PPU2700によって同時に実行され、PPU2700は、複数のコンピュート・アプリケーションに対して、隔離、サービス品質(「QoS」:quality of service)、及び独立したアドレス空間を提供する。少なくとも一実施例では、アプリケーションは、PPU2700によって実行するための1つ又は複数のタスクをドライバ・カーネルに生成させる(たとえば、APIコールの形の)命令を生成し、ドライバ・カーネルは、PPU2700によって処理されている1つ又は複数のストリームにタスクを出力する。少なくとも一実施例では、各タスクは、ワープと呼ばれてもよい関連スレッドの1つ又は複数のグループを備える。少なくとも一実施例では、ワープは、並列に実行することができる複数の関連スレッド(たとえば、32個のスレッド)を備える。少なくとも一実施例では、連動スレッドとは、タスクを実行するための命令を含み、共有メモリを介してデータを交換する複数のスレッドを指してもよい。少なくとも一実施例では、スレッド及び連動スレッドは、図29と併せて少なくとも一実施例によりさらに詳細に説明される。
【0285】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、PPU2700に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、PPU2700は、別のプロセッサ若しくはシステムによって、又はPPU2700によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、PPU2700は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【0286】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0287】
図28は、少なくとも一実施例による汎用処理クラスタ(「GPC」)2800を示す。少なくとも一実施例では、GPC2800は、図27のGPC2718である。少なくとも一実施例では、各GPC2800は、限定することなく、タスクを処理するためのいくつかのハードウェア・ユニットを含み、各GPC2800は、限定することなく、パイプライン・マネージャ2802、プレ・ラスタ演算ユニット(「PROP」:pre-raster operations unit)2804、ラスタ・エンジン2808、ワーク分配クロスバー(「WDX」:work distribution crossbar)2816、メモリ管理ユニット(「MMU」)2818、1つ又は複数のデータ処理クラスタ(「DPC」:Data Processing Cluster)2806、及びパーツの任意の好適な組合せを含む。
【0288】
少なくとも一実施例では、GPC2800の動作は、パイプライン・マネージャ2802によって制御される。少なくとも一実施例では、パイプライン・マネージャ2802は、GPC2800に配分されたタスクを処理するために1つ又は複数のDPC2806の構成を管理する。少なくとも一実施例では、パイプライン・マネージャ2802は、グラフィックス・レンダリング・パイプラインの少なくとも一部分を実施するように、1つ又は複数のDPC2806のうちの少なくとも1つを構成する。少なくとも一実施例では、DPC2806は、プログラム可能なストリーミング・マルチプロセッサ(「SM」:streaming multi-processor)2814で頂点シェーダ・プログラムを実行するように構成される。少なくとも一実施例では、パイプライン・マネージャ2802は、少なくとも一実施例では、ワーク分配ユニットから受信したパケットを、GPC2800内の適切な論理ユニットにルーティングするように構成され、いくつかのパケットは、PROP2804の固定機能ハードウェア・ユニット及び/又はラスタ・エンジン2808にルーティングされてもよく、他のパケットは、プリミティブ・エンジン2812又はSM2814によって処理されるようにDPC2806にルーティングされてもよい。少なくとも一実施例では、パイプライン・マネージャ2802は、ニューラル・ネットワーク・モデル及び/又はコンピューティング・パイプラインを実施するように、DPC2806のうちの少なくとも1つを構成する。
【0289】
少なくとも一実施例では、PROPユニット2804は、少なくとも一実施例では、ラスタ・エンジン2808及びDPC2806によって生成されたデータを、図27と併せて上でより詳細に説明したパーティション・ユニット2722のラスタ動作(ROP)ユニットにルーティングするように構成される。少なくとも一実施例では、PROPユニット2804は、色ブレンディングの最適化を実行し、ピクセル・データを組織化し、アドレス・トランスレーションを実行し、その他の動作を行うように構成される。少なくとも一実施例では、ラスタ・エンジン2808は、少なくとも一実施例では様々なラスタ動作を実行するように構成されたいくつかの固定機能ハードウェア・ユニットを、限定することなく含み、ラスタ・エンジン2808は、限定することなく、セットアップ・エンジン、粗いラスタ・エンジン、選別エンジン、クリッピング・エンジン、細かいラスタ・エンジン、タイル合体エンジン、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、セットアップ・エンジンは、変換された頂点を受信し、頂点によって定義された幾何プリミティブに関連付けられた平面方程式を生成し、平面方程式が、粗いラスタ・エンジンに送信されて、プリミティブに対するカバレッジ情報(たとえば、タイルのx、yカバレッジ・マスク)が生成され、粗いラスタ・エンジンの出力が、選別エンジンに送信され、ここでzテストに落ちたプリミティブに関連付けられたフラグメントが選別され、クリッピング・エンジンに送信され、ここで視錐台の外側にあるフラグメントがクリップされる。少なくとも一実施例では、クリッピング及び選別を通過したフラグメントは、細かいラスタ・エンジンに渡されて、セットアップ・エンジンによって生成された平面方程式に基づき、ピクセル・フラグメントに対する属性が生成される。少なくとも一実施例では、ラスタ・エンジン2808の出力は、DPC2806内に実施されたフラグメント・シェーダによってなど任意の好適なエンティティによって処理されることになるフラグメントを含む。
【0290】
少なくとも一実施例では、GPC2800に含まれる各DPC2806は、限定することなく、Mパイプ・コントローラ(「MPC」:M-Pipe Controller)2810、プリミティブ・エンジン2812、1つ又は複数のSM2814、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、MPC2810は、DPC2806の動作を制御して、パイプライン・マネージャ2802から受信したパケットを、DPC2806内の適切なユニットにルーティングする。少なくとも一実施例では、頂点に関連付けられたパケットは、頂点に関連付けられた頂点属性をメモリからフェッチするように構成されたプリミティブ・エンジン2812にルーティングされ、対照的に、シェーダ・プログラムに関連付けられたパケットは、SM2814に送信されてもよい。
【0291】
少なくとも一実施例では、SM2814は、いくつかのスレッドにより表されたタスクを処理するように構成されたプログラム可能なストリーミング・プロセッサを、限定することなく含む。少なくとも一実施例では、SM2814はマルチスレッド化されており、スレッドの特定のグループからの複数のスレッド(たとえば、32個のスレッド)を同時に実行するように構成され、単一命令複数データ(SIMD)アーキテクチャを実施し、ここでスレッドのグループ(ワープ)内の各スレッドは、同じ命令セットに基づき、異なるデータ・セットを処理するように構成される。少なくとも一実施例では、スレッド・グループ内のすべてのスレッドが同じ命令を実行する。少なくとも一実施例では、SM2814は、単一命令複数スレッド(SIMT)アーキテクチャを実施し、ここで、スレッド・グループの各スレッドは、命令の同じセットに基づき、異なるデータ・セットを処理するように構成されるが、スレッド・グループ内の個々のスレッドは、実行中に発散することが許容される。少なくとも一実施例では、プログラム・カウンタ、コール・スタック、及び実行状態がワープごとに維持されて、ワープ内のスレッドが発散するときに、ワープ間の同時処理、及びワープ内での直列実行が可能になる。別の実施例では、プログラム・カウンタ、コール・スタック、及び実行状態が個々のスレッドごとに維持されて、すべてのスレッド間、ワープ内、及びワープ間で等しい同時処理が可能になる。少なくとも一実施例では、実行状態が個々のスレッドごとに維持され、同じ命令を実行しているスレッドが、より効率的になるように収束され並列に実行されてもよい。SM2814の少なくとも一実施例は、下記にさらに詳細に説明される。
【0292】
少なくとも一実施例では、MMU2818は、GPC2800とメモリ・パーティション・ユニット(たとえば、図27のパーティション・ユニット2722)との間でインターフェースを提供し、MMU2818は、仮想アドレスから物理アドレスへのトランスレーション、メモリ保護、及びメモリ要求の調停を提供する。少なくとも一実施例では、MMU2818は、仮想アドレスからメモリの物理アドレスへのトランスレーションを実行するための1つ又は複数のトランスレーション・ルックアサイド・バッファ(「TLB」)を提供する。
【0293】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、GPC2800に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、GPC2800は、別のプロセッサ若しくはシステムによって、又はGPC2800によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、GPC2800は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【0294】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0295】
図29は、少なくとも一実施例による並列処理ユニット(「PPU」)のメモリ・パーティション・ユニット2900を示す。少なくとも一実施例では、メモリ・パーティション・ユニット2900は、限定することなく、ラスタ演算(「ROP」)ユニット2902、レベル2(「L2」)キャッシュ2904、メモリ・インターフェース2906、及びそれらの任意の好適な組合せを含む。少なくとも一実施例では、メモリ・インターフェース2906は、メモリに結合される。少なくとも一実施例では、メモリ・インターフェース2906は、高速データ転送のために、32、64、128、1024ビットのデータ・バス、又は同様の実施形態を実施してもよい。少なくとも一実施例では、PPUは、U個のメモリ・インターフェース2906をパーティション・ユニット2900の対当たりに1つのメモリ・インターフェース2906に組み込んでおり、ここでパーティション・ユニット2900の各対は、対応するメモリ・デバイスに接続される。たとえば、少なくとも一実施例では、PPUは、高帯域幅メモリ・スタック、又はグラフィックス・ダブル・データ・レート、バージョン5、同期ダイナミック・ランダム・アクセス・メモリ(「GDDR5 SDRAM」)など、最大Y個のメモリ・デバイスに接続されてもよい。
【0296】
少なくとも一実施例では、メモリ・インターフェース2906は、高帯域幅メモリの第2世代(「HBM2」:high bandwidth memory second generation)メモリ・インターフェースを実施し、YはUの半分に等しい。少なくとも一実施例では、HBM2メモリ・スタックは、PPUと同じ物理パッケージに位置付けられて、従来のGDDR5 SDRAMシステムに比べて実質的な電力と面積の節約を実現する。少なくとも一実施例では、各HBM2スタックは、限定することなく4個のメモリ・ダイを含み、Yは4に等しく、各HBM2スタックは、1つのダイ当たりに2つの128ビット・チャネルの合計8チャネル、及び1024ビットのデータ・バス幅を含む。少なくとも一実施例では、メモリは、1ビット・エラー訂正2ビット・エラー検出(「SECDED」:Single-Error Correcting Double-Error Detecting)エラー訂正コード(「ECC」)をサポートしてデータを保護する。少なくとも一実施例では、ECCは、データ破損を受けやすいコンピュート・アプリケーションに、より高い信頼性を提供する。
【0297】
少なくとも一実施例では、PPUは、マルチ・レベルのメモリ階層を実施する。少なくとも一実施例では、メモリ・パーティション・ユニット2900は、統合されたメモリをサポートして、中央処理装置(「CPU」)及びPPUメモリに単一の統合された仮想アドレス空間を提供し、仮想メモリ・システム間でのデータの共有を可能にする。少なくとも一実施例では、他のプロセッサに位置付けられたメモリにPPUがアクセスする、頻度を追跡して、より頻繁にページにアクセスしているPPUの物理メモリに、メモリ・ページが確実に移動されるようにする。少なくとも一実施例では、高速GPU相互接続2708は、アドレス・トランスレーション・サービスをサポートして、PPUが直接CPUのページ・テーブルにアクセスできるようにし、PPUによるCPUメモリへのフル・アクセスを実現する。
【0298】
少なくとも一実施例では、コピー・エンジンは、複数のPPU間、又はPPUとCPUの間で、データを転送する。少なくとも一実施例では、コピー・エンジンは、ページ・テーブルにマッピングされていないアドレスについてページ誤りを生成することができ、次いでメモリ・パーティション・ユニット2900がページ誤りに対応して、アドレスをページ・テーブルにマッピングし、その後で、コピー・エンジンが転送を実行する。少なくとも一実施例では、メモリは、複数のプロセッサ間でコピー・エンジンの複数の動作についてピン留めされて(たとえば、ページ移動不可能にされて)、実質的に利用可能なメモリを低減させる。少なくとも一実施例では、ハードウェアのページ誤りがある場合、メモリ・ページが常駐であるかどうかに関わらず、アドレスをコピー・エンジンに渡すことができ、コピー・プロセスは透過的である。
【0299】
少なくとも一実施例によれば、図27のメモリ2704又は他のシステム・メモリからのデータは、メモリ・パーティション・ユニット2900によってフェッチされ、L2キャッシュ2904に記憶され、このL2キャッシュは、オン・チップに位置付けられ、様々なGPC間で共有される。少なくとも一実施例では、各メモリ・パーティション・ユニット2900は、対応するメモリ・デバイスに関連付けられたL2キャッシュの少なくとも一部分を、限定することなく含む。少なくとも一実施例では、より低いレベルのキャッシュが、GPC内の様々なユニットに実施される。少なくとも一実施例では、SM2814の各々は、レベル1(「L1」)キャッシュを実施してもよく、ここでL1キャッシュは、特定のSM2814専用のプライベート・メモリであり、L2キャッシュ2904からのデータは、SM2814の機能ユニットで処理するために、L1キャッシュの各々にフェッチされ記憶される。少なくとも一実施例では、L2キャッシュ2904は、メモリ・インターフェース2906及びXバー2720に結合される。
【0300】
少なくとも一実施例では、ROPユニット2902は、色圧縮、ピクセル・ブレンディングなど、ピクセル色に関係するグラフィックス・ラスタ演算を実行する。ROPユニット2902は、少なくとも一実施例では、ラスタ・エンジン2808と併せて深度テストを実施して、ピクセル・フラグメントに関連付けられたサンプル・ロケーションの深度を、ラスタ・エンジン2808の選別エンジンから受信する。少なくとも一実施例では、深度は、フラグメントに関連付けられたサンプル・ロケーションの深度バッファにおける対応する深度と比べてテストされる。少なくとも一実施例では、フラグメントが、サンプル・ロケーションの深度テストを通過すると、ROPユニット2902は、深度バッファを更新し、深度テストの結果をラスタ・エンジン2808に送信する。パーティション・ユニット2900の数はGPCの数とは異なってもよく、したがって、各ROPユニット2902は、少なくとも一実施例では、GPCのそれぞれに結合されてもよいことが理解されよう。少なくとも一実施例では、ROPユニット2902は、異なるGPCから受信したパケットを追跡し、ROPユニット2902によって生成された結果を、Xバー2720を通してどれにルーティングするかを判定する。
【0301】
図30は、少なくとも一実施例による、ストリーミング・マルチプロセッサ(「SM」)3000を示す。少なくとも一実施例では、SM3000は、図28のSM2814である。少なくとも一実施例では、SM3000は、限定することなく、命令キャッシュ3002、1つ又は複数のスケジューラ・ユニット3004、レジスタ・ファイル3008、1つ又は複数の処理コア(「コア」)3010、1つ又は複数の特殊機能ユニット(「SFU」:special function unit)3012、1つ又は複数のロード/ストア・ユニット(「LSU」load/store unit)3014、相互接続ネットワーク3016、共有メモリ/レベル1(「L1」)キャッシュ3018、及び/又はこれらの任意の好適な組合せを含む。少なくとも一実施例では、ワーク分配ユニットは、並列処理ユニット(「PPU」)の汎用処理クラスタ(「GPC」)で実行するためにタスクをディスパッチし、各タスクは、GPC内の特定のデータ処理クラスタ(「DPC」)に配分され、タスクがシェーダ・プログラムに関連する場合には、タスクはSM3000のうちの1つに配分される。少なくとも一実施例では、スケジューラ・ユニット3004は、ワーク分配ユニットからタスクを受信し、SM3000に割り当てられた1つ又は複数のスレッド・ブロックについて命令スケジューリングを管理する。少なくとも一実施例では、スケジューラ・ユニット3004は、並列スレッドのワープとして実行できるようにスレッド・ブロックをスケジューリングし、ここで各スレッド・ブロックは、少なくとも1つのワープに配分される。少なくとも一実施例では、各ワープは、スレッドを実行する。少なくとも一実施例では、スケジューラ・ユニット3004は、複数の異なるスレッド・ブロックを管理して、異なるスレッド・ブロックにワープを配分し、次いで複数の異なる連動グループからの命令を、各クロック・サイクル中に様々な機能ユニット(たとえば、処理コア3010、SFU3012、及びLSU3014)にディスパッチする。
【0302】
少なくとも一実施例では、連動グループとは、通信するスレッドのグループを組織化するためのプログラミング・モデルを指し、このモデルは、スレッドが通信する粒度をデベロッパが表せるようにして、より豊富でより効率的な並列分解の表現を可能にする。少なくとも一実施例では、連動した起動APIは、並列アルゴリズムを実行できるようにスレッド・ブロック間の同期をサポートする。少なくとも一実施例では、従来のプログラミング・モデルのアプリケーションは、連動スレッドを同期するための単一の簡単な構造、すなわちスレッド・ブロックのすべてのスレッドにわたるバリア(たとえば、syncthreads()関数)を提供する。しかし、少なくとも一実施例では、プログラマは、スレッド・ブロックの粒度よりも小さいスレッド・グループを定義し、定義されたグループ内で同期して、集合的なグループ全般にわたる機能インターフェースの形で、より高い性能、設計の融通性、及びソフトウェア再利用を可能にしてもよい。少なくとも一実施例では、連動グループによって、プログラマは、サブ・ブロック(すなわち、単一スレッドと同じ大きさ)の粒度及びマルチ・ブロックの粒度において、スレッドのグループを明示的に定義し、連動グループ内のスレッドに対する同期などの集合的な動作を実行できるようになる。少なくとも一実施例では、プログラミング・モデルは、ソフトウェア境界を横切るクリーンな合成をサポートし、それにより、ライブラリ及びユーティリティ関数を、収束について仮定する必要なくそれらのローカルなコンテキスト内で安全に同期することができる。少なくとも一実施例では、連動グループのプリミティブは、プロデューサ-コンシューマ並列性、日和見並列性(opportunistic parallelism)、及びスレッド・ブロックのグリッド全体にわたるグローバルな同期を限定することなく含む新しいパターンの連動並列性を可能にする。
【0303】
少なくとも一実施例では、ディスパッチ・ユニット3006は、機能ユニットのうちの1つ又は複数に命令を送信するように構成され、スケジューラ・ユニット3004は、同じワープからの2つの異なる命令を、各クロック・サイクル中にディスパッチできるようにする2つのディスパッチ・ユニット3006を限定することなく含む。少なくとも一実施例では、各スケジューラ・ユニット3004は、単一のディスパッチ・ユニット3006又は追加のディスパッチ・ユニット3006を含む。
【0304】
少なくとも一実施例では、各SM3000は、少なくとも一実施例では、SM3000の機能ユニットにレジスタのセットを提供するレジスタ・ファイル3008を限定することなく含む。少なくとも一実施例では、レジスタ・ファイル3008は、各機能ユニットがレジスタ・ファイル3008の専用部分に配分されるように、機能ユニットのそれぞれ間で分割される。少なくとも一実施例では、レジスタ・ファイル3008は、SM3000によって実行されている異なるワープ間で分割され、レジスタ・ファイル3008は、機能ユニットのデータ経路に接続されたオペランド用の一時的なストレージを提供する。少なくとも一実施例では、各SM3000は、限定することなく複数のL処理コア3010を含む。少なくとも一実施例では、各SM3000は、限定することなく、多数の(たとえば、128個以上の)個別の処理コア3010を含む。少なくとも一実施例では、各処理コア3010は、少なくとも一実施例では、浮動小数点算術論理演算ユニット及び整数算術論理演算ユニットを限定することなく含む完全にパイプライン化された、単精度の、倍精度の、及び/又は混合精度の処理ユニットを限定することなく含む。少なくとも一実施例では、浮動小数点算術論理演算ユニットは、浮動小数点演算のためのIEEE754-2008規格を実施する。少なくとも一実施例では、処理コア3010は、限定することなく、64個の単精度(32ビット)浮動小数点コア、64個の整数コア、32個の倍精度(64ビット)浮動小数点コア、及び8個のテンソル・コアを含む。
【0305】
テンソル・コアは、少なくとも一実施例による行列演算を実行するように構成される。少なくとも一実施例では、1つ又は複数のテンソル・コアは、処理コア3010に含まれる。少なくとも一実施例では、テンソル・コアは、ニューラル・ネットワークの訓練及び推論のための畳み込み演算など、深層学習の行列演算を実行するように構成される。少なくとも一実施例では、各テンソル・コアは、4×4の行列で動作し、行列の積和演算(matrix multiply and accumulate operation)D=A×B+Cを実行し、ここでA、B、C、及びDは4×4の行列である。
【0306】
少なくとも一実施例では、行列乗算の入力A及びBは、16ビットの浮動小数点行列であり、和の行列C及びDは、16ビットの浮動小数点又は32ビットの浮動小数点行列である。少なくとも一実施例では、テンソル・コアは、32ビットの浮動小数点の和を有する16ビットの浮動小数点入力データで動作する。少なくとも一実施例では、16ビットの浮動小数点乗算は、64個の演算を使用し、結果的に完全精度の積をもたらし、次いでその積が、4×4×4の行列乗算の他の中間積との32ビット浮動小数点加算を使用して加算される。テンソル・コアを使用して、少なくとも一実施例では、これらの小さい要素から構築される、はるかに大きい2次元又はさらに高次元の行列演算が実行される。少なくとも一実施例では、CUDA9C++APIなどのAPIは、CUDA-C++プログラムからテンソル・コアを効率的に使用するために、特殊な行列ロード演算、行列積和演算、及び行列ストア演算を公開している。少なくとも一実施例では、CUDAレベルにおいて、ワープ・レベル・インターフェースは、ワープの32スレッドすべてにわたる16×16のサイズの行列を仮定している。
【0307】
少なくとも一実施例では、各SM3000は、特殊関数(たとえば、属性評価、逆数平方根など)を実行するM個のSFU3012を、限定することなく含む。少なくとも一実施例では、SFU3012は、限定することなく、階層ツリー・データ構造をトラバースするように構成されたツリー・トラバーサル・ユニットを含む。少なくとも一実施例では、SFU3012は、テクスチャ・マップのフィルタリング動作を実行するように構成されたテクスチャ・ユニットを、限定することなく含む。少なくとも一実施例では、テクスチャ・ユニットは、メモリ及びサンプル・テクスチャ・マップからテクスチャ・マップ(たとえば、テクセルの2Dアレイ)をロードして、SM3000により実行されるシェーダ・プログラムで使用するためのサンプリングされたテクスチャ値を生成するように構成される。少なくとも一実施例では、テクスチャ・マップは、共有メモリ/レベル1キャッシュ3018に記憶される。少なくとも一実施例では、テクスチャ・ユニットは、少なくとも一実施例によれば、ミップ・マップ(たとえば、詳細さのレベルが異なるテクスチャ・マップ)を使用したフィルタリング動作などのテクスチャ動作を実施する。少なくとも一実施例では、各SM3000は、限定することなく、2つのテクスチャ・ユニットを含む。
【0308】
各SM3000は、少なくとも一実施例では、共有メモリ/L1キャッシュ3018とレジスタ・ファイル3008の間でロード及びストア動作を実施するN個のLSU3014を、限定することなく含む。各SM3000は、少なくとも一実施例では、機能ユニットの各々をレジスタ・ファイル3008に接続し、LSU3014をレジスタ・ファイル3008に接続する相互接続ネットワーク3016と、共有メモリ/L1キャッシュ3018を、限定することなく含む。少なくとも一実施例では、相互接続ネットワーク3016はクロスバーであり、このクロスバーは、機能ユニットのいずれかをレジスタ・ファイル3008のレジスタのいずれかに接続し、LSU3014をレジスタ・ファイル3008と共有メモリ/L1キャッシュ3018のメモリ・ロケーションとに接続するように構成されてもよい。
【0309】
少なくとも一実施例では、共有メモリ/L1キャッシュ3018は、少なくとも一実施例では、SM3000とプリミティブ・エンジンの間、及びSM3000のスレッド間でデータ・ストレージ及び通信を可能にするオン・チップ・メモリのアレイである。少なくとも一実施例では、共有メモリ/L1キャッシュ3018は、限定することなく、128KBのストレージ容量を備え、SM3000からパーティション・ユニットに向かう経路にある。少なくとも一実施例では、共有メモリ/L1キャッシュ3018は、少なくとも一実施例では、読取り及び書込みをキャッシュするために使用される。少なくとも一実施例では、共有メモリ/L1キャッシュ3018、L2キャッシュ、及びメモリのうちの1つ又は複数は、補助ストレージである。
【0310】
少なくとも一実施例では、データ・キャッシュと共有メモリ機能とを単一のメモリ・ブロックに組み合わせることによって、両方のタイプのメモリ・アクセスについて性能が向上する。少なくとも一実施例では、容量は、共有メモリを使用しないプログラムによってキャッシュとして使用され、又は使用可能であり、それにより、共有メモリが容量の半分を使用するように構成されている場合、テクスチャ及びロード/ストア動作が、残りの容量を使用することができる。少なくとも一実施例によれば、共有メモリ/L1キャッシュ3018内に統合することによって、共有メモリ/L1キャッシュ3018が、データをストリームするための高スループットの管として機能しながら、同時に高帯域幅及び低レイテンシのアクセスを、頻繁に再使用されるデータに提供できるようになる。少なくとも一実施例では、汎用並列計算向けに構成されるときには、グラフィックス処理と比べてより簡単な構成を使用することができる。少なくとも一実施例では、固定機能のグラフィックス・プロセッシング・ユニットがバイパスされて、はるかに簡単なプログラミング・モデルが作製される。汎用並列計算の構成では、ワーク分配ユニットは、少なくとも一実施例においてスレッド・ブロックを直接DPCに割当て及び分配する。少なくとも一実施例では、ブロック内のスレッドは、各スレッドが確実に一意の結果を生成するように、計算において一意のスレッドIDを使用して同じプログラムを実行し、SM3000を使用して、プログラムを実行し計算を行い、共有メモリ/L1キャッシュ3018を使用してスレッド間で通信し、LSU3014を使用して、共有メモリ/L1キャッシュ3018及びメモリ・パーティション・ユニットを介してグローバル・メモリを読み取り、書き込む。少なくとも一実施例では、汎用並列計算向けに構成されるときには、SM3000は、DPC上で新規のワークを起動するためにスケジューラ・ユニット3004が使用できるコマンドを書き込む。
【0311】
少なくとも一実施例では、PPUは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイスなどに含まれ、又はこれらに結合される。少なくとも一実施例では、PPUは、単一の半導体基板に具体化される。少なくとも一実施例では、PPUは、追加のPPU、メモリ、縮小命令セット・コンピュータ(「RISC」)CPU、メモリ管理ユニット(「MMU」)、デジタル-アナログ変換器(「DAC」:digital-to-analog converter)などの1つ又は複数の他のデバイスとともにシステム・オン・チップ(「SoC」)に含まれる。
【0312】
少なくとも一実施例では、PPUは、1つ又は複数のメモリ・デバイスを含むグラフィックス・カードに含まれてもよい。グラフィックス・カードは、デスクトップ・コンピュータのマザーボード上のPCIeスロットとインターフェースをとるように構成されてもよい。少なくとも一実施例では、PPUは、マザーボードのチップセットに含まれる統合グラフィックス・プロセッシング・ユニット(「iGPU」:integrated graphics processing unit)であってもよい。
【0313】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。推論及び/又は訓練論理615に関する詳細事項は、図6A及び/又は図6Bと併せて下記に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、SM3000に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、SM3000は、別のプロセッサ若しくはシステムによって、又はSM3000によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、SM3000は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【0314】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0315】
少なくとも一実施例は、以下の項に照らして説明することができる。
【0316】
1. プロセッサであって、
1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整するための1つ又は複数の回路
を備える、プロセッサ。
【0317】
2. 1つ又は複数の回路が、さらに、第1の解像度において画像データを処理する深層ニューラル・ネットワークから1つ又は複数の初期ブレンディング重みを受信し、初期ブレンディング重みを第2の解像度にアップサンプリングするためのものである、請求項1に記載のプロセッサ。
【0318】
3. 1つ又は複数の回路が、さらに、アップサンプリングされているブレンディング重みを、第2の解像度にある1つ又は複数の画像とともに、1つ又は複数のニューラル・ネットワークのうちのリファインメント・ニューラル・ネットワークに提供して、1つ又は複数の画像内の画像特徴に少なくとも部分的に基づいて、アップサンプリングされているピクセル・ブレンディング重みを調整するためのものである、請求項2に記載のプロセッサ。
【0319】
4. 1つ又は複数の回路が、さらに、1つ又は複数の画像の画像データを第1の解像度において深層ニューラル・ネットワークに提供する前に、画像データを、第2の解像度からダウンサンプリングするためのものである、請求項3に記載のプロセッサ。
【0320】
5. 深層ニューラル・ネットワークが、U-Netであり、リファインメント・ネットワークが、疎なCNNアーキテクチャ内の畳み込み層の間の1つ又は複数のスキップ接続を含む浅層畳み込みニューラル・ネットワークである、請求項3に記載のプロセッサ。
【0321】
6. 1つ又は複数のニューラル・ネットワークが、さらに、履歴ピクセル・データ、フィルタ・パラメータ・データ、ピクセル・ジッタ・データ、フィルタリング済みピクセル・データ、又はワーピング・ピクセル・データのうちの少なくとも1つに関係する1つ又は複数の追加のパラメータを調整するためのものである、請求項1に記載のプロセッサ。
【0322】
7. システムであって、
1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整するための1つ又は複数のプロセッサ
を備える、システム。
【0323】
8. 1つ又は複数の回路が、さらに、第1の解像度において画像データを処理する深層ニューラル・ネットワークから1つ又は複数の初期ブレンディング重みを受信し、初期ブレンディング重みを第2の解像度にアップサンプリングするためのものである、請求項7に記載のシステム。
【0324】
9. 1つ又は複数の回路が、さらに、アップサンプリングされているブレンディング重みを、第2の解像度にある1つ又は複数の画像とともに、1つ又は複数のニューラル・ネットワークのうちのリファインメント・ニューラル・ネットワークに提供して、1つ又は複数の画像内の画像特徴に少なくとも部分的に基づいて、アップサンプリングされているブレンディング重みを調整するためのものである、請求項8に記載のシステム。
【0325】
10. 1つ又は複数の回路が、さらに、1つ又は複数の画像の画像データを第1の解像度において深層ニューラル・ネットワークに提供する前に、画像データを、第2の解像度からダウンサンプリングするためのものである、請求項9に記載のシステム。
【0326】
11. 深層ニューラル・ネットワークが、U-Netであり、リファインメント・ネットワークが、浅層畳み込みニューラル・ネットワークである、請求項9に記載のシステム。
【0327】
12. リファインメント・ネットワークが、疎なCNNアーキテクチャ内の畳み込み層の間の1つ又は複数のスキップ接続を含む、請求項9に記載のシステム。
【0328】
13. 方法であって、
1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することを含む、方法。
【0329】
14. 第1の解像度において画像データを処理する深層ニューラル・ネットワークから1つ又は複数の初期ブレンディング重みを受信することと、初期ブレンディング重みを第2の解像度にアップサンプリングすることとをさらに含む、請求項13に記載の方法。
【0330】
15. アップサンプリングされているブレンディング重みを、第2の解像度にある1つ又は複数の画像とともに、1つ又は複数のニューラル・ネットワークのうちのリファインメント・ニューラル・ネットワークに提供して、1つ又は複数の画像内の画像特徴に少なくとも部分的に基づいて、アップサンプリングされているブレンディング重みを調整することをさらに含む、請求項14に記載の方法。
【0331】
16. 1つ又は複数の画像の画像データを第1の解像度において深層ニューラル・ネットワークに提供する前に、画像データを、第2の解像度からダウンサンプリングすることをさらに含む、請求項15に記載の方法。
【0332】
17. 深層ニューラル・ネットワークが、U-Netであり、リファインメント・ネットワークが、浅層畳み込みニューラル・ネットワークである、請求項15に記載の方法。
【0333】
18. リファインメント・ネットワークが、疎なCNNアーキテクチャ内の畳み込み層の間の1つ又は複数のスキップ接続を含む、請求項15に記載の方法。
【0334】
19. 命令セットを記憶されている機械可読媒体であって、命令セットが、1つ又は複数のプロセッサによって実行されると、1つ又は複数のプロセッサに、少なくとも、
【0335】
第1の解像度において画像データを処理する深層ニューラル・ネットワークから1つ又は複数の初期ブレンディング重みを受信することと、初期ブレンディング重みを第2の解像度にアップサンプリングすることとを行わせる、機械可読媒体。
【0336】
20. 命令が、実行されると、さらに、1つ又は複数のプロセッサに、
1つ又は複数のピクセルの1つ又は複数の深度変動に少なくとも部分的に基づいて1つ又は複数の第2の色を決定することを行わせる、請求項19に記載の機械可読媒体。
【0337】
21. 命令が、実行されると、さらに、1つ又は複数のプロセッサに、
アップサンプリングされているブレンディング重みを、第2の解像度にある1つ又は複数の画像とともに、1つ又は複数のニューラル・ネットワークのうちのリファインメント・ニューラル・ネットワークに提供して、1つ又は複数の画像内の画像特徴に少なくとも部分的に基づいて、アップサンプリングされているブレンディング重みを調整することを行わせる、請求項20に記載の機械可読媒体。
【0338】
22. 命令が、実行されると、さらに、1つ又は複数のプロセッサに、
1つ又は複数の画像の画像データを第1の解像度において深層ニューラル・ネットワークに提供する前に、画像データを、第2の解像度からダウンサンプリングすることを行わせる、請求項21に記載の機械可読媒体。
【0339】
23. 深層ニューラル・ネットワークが、U-Netであり、リファインメント・ネットワークが、浅層畳み込みニューラル・ネットワークである、請求項21に記載の機械可読媒体。
【0340】
24. リファインメント・ネットワークが、疎なCNNアーキテクチャ内の畳み込み層の間の1つ又は複数のスキップ接続を含む、請求項21に記載の機械可読媒体。
【0341】
25. 画像再構築システムであって、
1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整するための1つ又は複数のプロセッサと、
1つ又は複数のニューラル・ネットワークのネットワーク・パラメータを記憶するためのメモリと
を備える、画像再構築システム。
【0342】
26. 1つ又は複数のプロセッサが、さらに、第1の解像度において画像データを処理する深層ニューラル・ネットワークから1つ又は複数の初期ブレンディング重みを受信し、初期ブレンディング重みを第2の解像度にアップサンプリングするためのものである、請求項25に記載の画像再構築システム。
【0343】
27. 1つ又は複数のプロセッサが、さらに、アップサンプリングされているブレンディング重みを、第2の解像度にある1つ又は複数の画像とともに、1つ又は複数のニューラル・ネットワークのうちのリファインメント・ニューラル・ネットワークに提供して、1つ又は複数の画像内の画像特徴に少なくとも部分的に基づいて、アップサンプリングされているブレンディング重みを調整するためのものである、請求項26に記載の画像再構築システム。
【0344】
28. 1つ又は複数のプロセッサが、さらに、1つ又は複数の画像の画像データを第1の解像度において深層ニューラル・ネットワークに提供する前に、画像データを、第2の解像度からダウンサンプリングするためのものである、請求項27に記載の画像再構築システム。
【0345】
29. 深層ニューラル・ネットワークが、U-Netであり、リファインメント・ネットワークが、浅層畳み込みニューラル・ネットワークである、請求項27に記載の画像再構築システム。
【0346】
30. リファインメント・ネットワークが、疎なCNNアーキテクチャ内の畳み込み層の間の1つ又は複数のスキップ接続を含む、請求項27に記載の画像再構築システム。
【0347】
少なくとも一実施例では、単一の半導体プラットフォームとは、単独で単体の半導体ベースの集積回路又はチップを指してもよい。少なくとも一実施例では、マルチ・チップ・モジュールは、オン・チップ動作をシミュレートする接続性が向上した状態で使用されてもよく、従来の中央処理装置(「CPU」)及びバスの実施形態の利用を大幅に改善する。少なくとも一実施例では、ユーザの希望に応じて、半導体プラットフォームとは別々に、又は半導体プラットフォームとの様々な組合せで、様々なモジュールがさらに設置されてもよい。
【0348】
少なくとも一実施例では、機械読取り可能で実行可能なコード若しくはコンピュータ制御論理アルゴリズムの形のコンピュータ・プログラムが、メイン・メモリ1004及び/又は二次ストレージに記憶される。コンピュータ・プログラムは、1つ又は複数のプロセッサによって実行された場合に、少なくとも一実施例による様々な機能をシステム1000が実行できるようにする。少なくとも一実施例では、メモリ1004、ストレージ、及び/又は任意の他のストレージが、コンピュータ読取り可能媒体の考えられる例である。少なくとも一実施例では、二次ストレージとは、フロッピー(登録商標)・ディスク・ドライブ、磁気テープ・ドライブ、コンパクト・ディスク・ドライブ、デジタル多用途ディスク(「DVD」:digital versatile disk)ドライブ、記録デバイス、ユニバーサル・シリアル・バス(「USB」)フラッシュ・メモリなどを表すハード・ディスク・ドライブ及び/若しくはリムーバブル・ストレージ・ドライブなどの任意の好適なストレージ・デバイス又はシステムを指してもよい。少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、CPU1002、並列処理システム1012、CPU1002と並列処理システム1012の両方の機能の少なくとも一部分を実現可能な集積回路、チップセット(たとえば、関連機能を実行するためのユニットとして機能し、販売されるように設計された集積回路のグループなど)、及び集積回路の任意の好適な組合せの文脈において実施される。
【0349】
少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、汎用コンピュータ・システム、回路板システム、エンタテイメント目的専用のゲーム・コンソール・システム、及び特定用途システムなどの文脈において実施される。少なくとも一実施例では、コンピュータ・システム1000は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイス、モバイル・フォン・デバイス、テレビ、ワークステーション、ゲーム・コンソール、組み込みシステム、及び/又は任意の他のタイプの論理の形をとってもよい。
【0350】
少なくとも一実施例では、並列処理システム1012は、限定することなく、複数の並列処理ユニット(「PPU」)1014、及び関連メモリ1016を含む。少なくとも一実施例では、PPU1014は、相互接続1018及びスイッチ1020又はマルチプレクサを介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、並列処理システム1012は、計算タスクをPPU1014にわたって分配し、これは、たとえば複数のグラフィックス・プロセッシング・ユニット(「GPU」)のスレッド・ブロックにわたる計算タスクの分配の一部として、並列化可能とすることができる。少なくとも一実施例では、メモリは、PPU1014の一部又は全部にわたって共有され、(たとえば、読取り及び/又は書込みアクセスのために)アクセス可能であるが、こうした共有メモリは、PPU1014に常駐しているローカル・メモリ及びレジスタの使用に対して、性能に不利益をもたらすことがある。少なくとも一実施例では、PPU1014の動作は、_syncthreads()などのコマンドを使用することによって同期され、ここで(たとえば、複数のPPU1014にわたって動作している)ブロック内のすべてのスレッドが、進行前にコードのある一定の実行ポイントに到達する。
【0351】
仮想化コンピューティング・プラットフォーム
画像推論及び画像処理などの、先進コンピューティングのための仮想化コンピューティング・プラットフォームに関連する実施例が開示される。図31を参照すると、これは、少なくとも一実施例による、画像処理及び推論パイプラインを生成及び展開するプロセス3100の例示的なデータ・フロー図である。少なくとも一実施例では、プロセス3100は、医療施設、病院、健康管理機関、診療所、研究又は診断研究所などのような、1つ又は複数の施設3102にあるイメージング・デバイス、処理デバイス、ゲノミクス・デバイス、遺伝子配列解析デバイス、放射線デバイス、及び/又は、他のデバイス・タイプとともに使用するために展開されてもよい。少なくとも一実施例では、プロセス3100は、遺伝子解析及びシーケンシング・データに対する推論を実行するために展開されてもよい。本明細書に記載のシステム及びプロセスを使用して実行されてもよい遺伝子解析の例は、限定ではなく、バリアント・コール、変異検出、及び遺伝子発現定量化を含む。プロセス3100は、訓練システム3104及び/又は展開システム3106内で実行されてもよい。少なくとも一実施例では、訓練システム3104を使用して、展開システム3106において使用するための機械学習モデル(たとえば、ニューラル・ネットワーク、物体検出アルゴリズム、コンピュータ・ビジョン・アルゴリズムなど)の訓練、展開、及び実施を実行することができる。少なくとも一実施例では、展開システム3106は、処理をオフロードし、分散コンピューティング環境の間でリソースを計算して、施設3102におけるインフラストラクチャ要件を低減するように構成されてもよい。少なくとも一実施例では、展開システム3106は、施設3102にあるイメージング・デバイス(たとえば、MRI、CTスキャン、X線、超音波など)又はシーケンシング・デバイスとともに使用するための仮想機器を選択、カスタマイズ、及び実施するための合理化されたプラットフォームを提供することができる。少なくとも一実施例では、仮想機器は、イメージング・デバイス、シーケンシング・デバイス、放射線デバイス、及び/又は他のデバイス・タイプによって生成されるイメージング・データに関する1つ又は複数の処理動作を実行するためのソフトウェア定義のアプリケーションを含んでもよい。少なくとも一実施例では、パイプライン内の1つ又は複数のアプリケーションは、アプリケーションの実行中に展開システム3106のサービス(たとえば、推論、仮想化、計算、AIなど)を使用するか又は呼び出してもよい。
【0352】
少なくとも一実施例では、先進処理及び推論パイプラインにおいて使用されるアプリケーションのうちのいくつかは、機械学習モデル又は他のAIを使用して、1つ又は複数の処理ステップを実行してもよい。少なくとも一実施例では、機械学習モデルは、施設3102において生成され(また、画像保管通信システム(PACS)に記憶され)るデータ3108(イメージング・データなど)を使用して施設3102において訓練されてもよく、別の施設(たとえば、異なる病院、研究所、診療所など)からのイメージング又はシーケンシング・データ3108を使用して訓練されてもよく、又はそれらの組合せであってもよい。少なくとも一実施例では、訓練システム3104を使用して、展開システム3106のための実用的で展開可能な機械学習モデルを生成するためのアプリケーション、サービス、及び/又は他のリソースを提供することができる。
【0353】
少なくとも一実施例では、モデル・レジストリ3124は、バージョニング及びオブジェクト・メタデータをサポートすることができるオブジェクト・ストレージによって支援することができる。少なくとも一実施例では、オブジェクト・ストレージは、クラウド・プラットフォーム内から、たとえば、クラウド・ストレージ(たとえば、図32のクラウド3226)対応アプリケーション・プログラミング・インターフェース(API)を通じてアクセス可能であってもよい。少なくとも一実施例では、モデル・レジストリ3124内の機械学習モデルは、APIと対話するシステムの開発者又はパートナによってアップロード、列挙、修正、又は削除することができる。少なくとも一実施例では、APIは、モデルをアプリケーションのコンテナ化されたインスタンス化の実行の一部として実行することができるように、適切な資格を有するユーザが、モデルをアプリケーションと関連付けることを可能にする方法にアクセスすることを可能にすることができる。
【0354】
少なくとも一実施例では、訓練パイプライン3204(図32)は、施設3102がそれら自体の機械学習モデルを訓練しているか、又は、最適化若しくは更新される必要がある既存の機械学習モデルを有するシナリオを含んでもよい。少なくとも一実施例では、イメージング・デバイス、シーケンシング・デバイス、及び/又は他のデバイス・タイプによって生成されるイメージング・データ3108が受信されてもよい。少なくとも一実施例では、イメージング・データ3108が受信されると、AI支援アノテーション3110を使用して、機械学習モデルのグランド・トゥルース・データとして使用されるべきイメージング・データ3108に対応するアノテーションの生成を補助することができる。少なくとも一実施例では、AI支援アノテーション3110は、特定のタイプのイメージング・データ3108(たとえば、特定のデバイスからの)及び/又はイメージング・データ3108内の特定のタイプの異常に対応するアノテーションを生成するように訓練することができる1つ又は複数の機械学習モデル(たとえば、畳み込みニューラル・ネットワーク(CNN))を含んでもよい。少なくとも一実施例では、その後、AI支援アノテーション3110を、直接的に使用し、又は、(たとえば、研究者、臨床医、医師、科学者などによって)アノテーション・ツールを使用して調整若しくは微調整して、グランド・トゥルース・データを生成することができる。少なくとも一実施例では、いくつかの実例において、ラベル付き臨床データ3112(たとえば、臨床医、医師、科学者、技術者などによって提供されるアノテーション)が、機械学習モデルを訓練するためのグランド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、AI支援アノテーション3110、ラベル付き臨床データ3112、又はそれらの組合せが、機械学習モデルを訓練するためのグランド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、訓練済み機械学習モデルは、出力モデル3116として参照されてもよく、本明細書において説明されているように、展開システム3106によって使用されてもよい。
【0355】
少なくとも一実施例では、訓練パイプライン3204(図32)は、施設3102が、展開システム3106内の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行するのに使用するための機械学習モデルを必要とするが、施設3102が現在そのような機械学習モデルを有し得ない(又はそのような目的のために最適化された、効率的な、若しくは効果的なモデルを有し得ない)シナリオを含んでもよい。少なくとも一実施例では、既存の機械学習モデルが、モデル・レジストリ3124から選択されてもよい。少なくとも一実施例では、モデル・レジストリ3124は、イメージング・データに対する様々な異なる推論タスクを実行するように訓練された機械学習モデルを含んでもよい。少なくとも一実施例では、モデル・レジストリ3124内の機械学習モデルは、施設3102とは異なる施設(たとえば、遠隔に位置する施設)からのイメージング・データに対して訓練されていてもよい。少なくとも一実施例では、機械学習モデルは、1つのロケーション、2つのロケーション、又は任意の数のロケーションからのイメージング・データに対して訓練されていてもよい。少なくとも一実施例では、特定のロケーションからのイメージング・データに対して訓練されているとき、訓練は、そのロケーションにおいて、又は、(たとえば、HIPAA規制、プライバシー規制などに従うように)イメージング・データの機密性を保護するか若しくはイメージング・データが施設外に転送されるのを制限するように行うことができる。少なくとも一実施例では、モデルが1つのロケーションにおいて訓練されるか、又は部分的に訓練されると、機械学習モデルをモデル・レジストリ3124に加えることができる。少なくとも一実施例では、その後、機械学習モデルは、任意の数の他の施設において再訓練又は更新することができ、再訓練又は更新されたモデルを、モデル・レジストリ3124において利用可能にすることができる。少なくとも一実施例では、その後、機械学習モデルをモデル・レジストリ3124から選択し、出力モデル3116として参照することができ、展開システム3106において、展開システムの1つ又は複数のアプリケーションの1つ又は複数の処理タスクを実行するために使用することができる。
【0356】
少なくとも一実施例の訓練パイプライン3204(図32)において、シナリオは、施設3102が、展開システム3106内の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行するのに使用するための機械学習モデルを必要とするが、施設3102が現在そのような機械学習モデルを有し得ない(又はそのような目的のために最適化された、効率的な、若しくは効果的なモデルを有し得ない)ことを含んでもよい。少なくとも一実施例では、モデル・レジストリ3124から選択される機械学習モデルは、母集団の差、遺伝的変異、機械学習モデルを訓練するために使用される訓練データのロバスト性、訓練データの異常の多様性、及び/又は、訓練データに伴う他の課題のために、施設3102において生成されるイメージング・データ3108に対して微調整又は最適化され得ない。少なくとも一実施例では、AI支援アノテーション3110を使用して、機械学習モデルを再訓練又は更新するためのグランド・トゥルース・データとして使用されるべきイメージング・データ3108に対応するアノテーションの生成を補助することができる。少なくとも一実施例では、ラベル付き臨床データ3112(たとえば、臨床医、医師、科学者などによって提供されるアノテーション)が、機械学習モデルを訓練するためのグランド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、機械学習モデルの再訓練又は更新が、モデル訓練3114として参照されてもよい。少なくとも一実施例では、モデル訓練3114、たとえば、AI支援アノテーション3110、ラベル付き臨床データ3112、又はそれらの組合せが、機械学習モデルを再訓練又は更新するためのグランド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、訓練済み機械学習モデルは、出力モデル3116として参照されてもよく、本明細書において説明されているように、展開システム3106によって使用されてもよい。
【0357】
少なくとも一実施例では、展開システム3106は、ソフトウェア3118、サービス3120、ハードウェア3122、並びに/又は他の構成要素、特徴、及び機能を含んでもよい。少なくとも一実施例では、展開システム3106は、ソフトウェア3118が、サービス3120の上に構築され得、サービス3120を使用して処理タスクの一部又はすべてを実行することができ、サービス3120及びソフトウェア3118が、ハードウェア3122の上に構築され得、ハードウェア3122を使用して、展開システム3106の処理、記憶、及び/又は他の計算タスクを実行することができるように、ソフトウェア「スタック」を含んでもよい。少なくとも一実施例では、ソフトウェア3118は、任意の数の異なるコンテナを含んでもよく、各コンテナが、アプリケーションのインスタンス化を実行することができる。少なくとも一実施例では、各アプリケーションが、先進処理及び推論パイプラインにおける1つ又は複数の処理タスク(たとえば、推論、物体検出、特徴検出、セグメント化、画像処理、較正など)を実行してもよい。少なくとも一実施例では、各タイプのイメージング・デバイス(たとえば、CT、MRI、X線、超音波、ソノグラフィ、心エコー検査など)、シーケンシング・デバイス、放射線デバイス、ゲノミクス・デバイスなどについて、デバイスによって生成されるイメージング・データ3108(又は、本明細書において説明されているものなどの、他のデータ・タイプ)に関するデータ処理タスクを実行することができる任意の数のコンテナが存在してもよい。少なくとも一実施例では、先進処理及び推論パイプラインは、イメージング・データを受信し、(たとえば、出力を、施設3102における記憶及び表示のために、医用におけるデジタル画像と通信(DICOM)データ、放射線医学情報システム(RIS)データ、臨床情報システム(CIS)データ、リモート・プロシージャ・コール(RPC)データ、表象状態転送(REST)インターフェースに実質的に従うデータ、ファイル・ベースのインターフェースに実質的に従うデータ、及び/又は生データなどの使用可能なデータ/タイプに変換し戻すために)パイプラインを通じて処理された後に、各コンテナによって使用するために及び/又は施設3102によって使用するために構成するコンテナに加えて、イメージング・データ3108を処理するために所望又は必要とされる異なるコンテナの選択に基づいて規定されてもよい。少なくとも一実施例では、(たとえば、パイプラインを構成する)ソフトウェア3118内のコンテナの組合せは、仮想機器(本明細書においてより詳細に説明されているような)として参照されてもよく、仮想機器は、サービス3120及びハードウェア3122を活用して、コンテナ内にインスタンス化されたアプリケーションのいくつか又はすべての処理タスクを実行することができる。
【0358】
少なくとも一実施例では、データ処理パイプラインは、推論要求(たとえば、臨床医、医師、放射線科医などのような、展開システム3106のユーザからの要求)に応答して、DICOM、RIS、CIS、REST準拠、RPC、生、及び/又は他のフォーマットの入力データ(たとえば、イメージング・データ3108)を受信することができる。少なくとも一実施例では、入力データは、1つ又は複数のイメージング・デバイス、シーケンシング・デバイス、放射線デバイス、ゲノミクス・デバイス、及び/又は他のデバイス・タイプによって生成される1つ若しくは複数の画像、ビデオ、及び/又は他のデータ表現を代表してもよい。少なくとも一実施例では、データは、1つ又は複数のアプリケーションによる処理に向けてデータを準備するために、データ処理パイプラインの一部としての前処理を受けてもよい。少なくとも一実施例では、出力データを次のアプリケーションに向けて準備し、並びに/又は、出力データを送信及び/若しくはユーザによる使用(たとえば、推論要求に対する応答としての)に向けて準備するために、1つ又は複数の推論タスク又はパイプラインの他の処理タスクの出力に対して後処理が実行されてもよい。少なくとも一実施例では、推論タスクは、訓練システム3104の出力モデル3116を含んでもよい、訓練済み又は展開済みニューラル・ネットワークなどの、1つ又は複数の機械学習モデルによって実行されてもよい。
【0359】
少なくとも一実施例では、データ処理パイプラインのタスクは、各々が、アプリケーションの別個の完全に機能的なインスタンス化、及び、機械学習モデルを参照することが可能な仮想化コンピューティング環境を表すコンテナ内にカプセル化されてもよい。少なくとも一実施例では、コンテナ又はアプリケーションは、コンテナ・レジストリのプライベート(たとえば、アクセスが制限された)領域に公開されてもよく、訓練済み又は展開済みモデルは、モデル・レジストリ3124に記憶され、1つ又は複数のアプリケーションと関連付けられてもよい。少なくとも一実施例では、アプリケーションの画像(たとえば、コンテナ画像)が、コンテナ・レジストリ内で利用可能であってもよく、ユーザによってパイプラインにおける展開のためにコンテナ・レジストリから選択されると、画像を使用して、ユーザのシステムによって使用するためのアプリケーションのインスタンス化のためのコンテナを生成することができる。
【0360】
少なくとも一実施例では、開発者(たとえば、ソフトウェア開発者、臨床医、医師など)は、供給されるデータに対する画像処理及び/又は推論を実行するために、(たとえば、コンテナとして)アプリケーションを開発、公開、及び記憶することができる。少なくとも一実施例では、開発、公開、及び/又は記憶は、(たとえば、開発されるアプリケーション及び/又はコンテナがシステムに準拠又は適合することを保証するために)システムと関連付けられるソフトウェア開発キット(SDK)を使用して実行されてもよい。少なくとも一実施例では、開発されるアプリケーションは、サービス3120のうちの少なくともいくつかをシステム(たとえば、図32のシステム3200)としてサポートすることができるSDKによってローカルに(たとえば、第1の施設において、第1の施設からのデータに関して)テストされてもよい。少なくとも一実施例では、DICOMオブジェクトは、1から数百までの範囲の画像又は他のデータ・タイプを含み得るため、また、データの変動に起因して、開発者は、入来するDICOMデータの抽出及び準備を管理(たとえば、アプリケーションの構成の設定、アプリケーションへの前処理の構築など)する役割を担い得る。少なくとも一実施例では、システム3200によって(たとえば、正確度、安全性、患者プライバシーなどについて)検証されると、アプリケーションは、ユーザの施設(たとえば、第2の施設)におけるデータに関する1つ又は複数の処理タスクを実行するために、ユーザ(たとえば、病院、診療所、研究所、医療介護提供者など)による選択及び/又は実施のために、コンテナ・レジストリ内で利用可能になり得る。
【0361】
少なくとも一実施例では、開発者はその後、システム(たとえば、図32のシステム3200)によるアクセス及び使用のために、ネットワークを通じてアプリケーション又はコンテナを共有してもよい。少なくとも一実施例では、完成し、検証されたアプリケーション又はコンテナは、コンテナ・レジストリに記憶されてもよく、関連する機械学習モデルが、モデル・レジストリ3124に記憶されてもよい。少なくとも一実施例では、推論又は画像処理要求を提供する要求元エンティティ(たとえば、医療施設にいるユーザ)は、アプリケーション、コンテナ、データセット、機械学習モデルなどについてコンテナ・レジストリ及び/又はモデル・レジストリ3124を閲覧し、データ処理パイプラインに含めるために要素の所望される組合せを選択肢、イメージング処理要求を提出することができる。少なくとも一実施例では、要求は、要求を実行するために必要な入力データ(及び、いくつかの実例では関連する患者データ)を含んでもよく、並びに/又は、要求の処理において実行されるべきアプリケーション及び/若しくは機械学習モデルの選択を含んでもよい。少なくとも一実施例では、要求は、その後、データ処理パイプラインの処理を実行するために、展開システム3106の1つ又は複数の構成要素(たとえば、クラウド)に渡すことができる。少なくとも一実施例では、展開システム3106による処理は、コンテナ・レジストリ及び/又はモデル・レジストリ3124から、選択されている要素(たとえば、アプリケーション、コンテナ、モデルなど)を参照することを含んでもよい。少なくとも一実施例では、結果がパイプラインによって生成されると、結果は、参照のために(たとえば、ローカルな施設のワークステーション又は端末上で実行する閲覧アプリケーションにおいて閲覧するために)ユーザに返すことができる。少なくとも一実施例では、放射線科医が、任意の数のアプリケーション及び/又はコンテナを含むデータ処理パイプラインからの結果を受信してもよく、結果は、X線、CTスキャン、MRIなどにおける異常検出を含んでもよい。
【0362】
パイプラインにおけるアプリケーション又はコンテナの処理又は実行を補助するために、サービス3120が活用されてもよい。少なくとも一実施例では、サービス3120は、計算サービス、人工知能(AI)サービス、視覚化サービス、及び/又は他のサービス・タイプを含んでもよい。少なくとも一実施例では、サービス3120は、ソフトウェア3118内の1つ又は複数のアプリケーションに共通である機能を提供することができ、したがって、機能は、アプリケーションによって呼び出し又は活用することができるサービスに抽象化することができる。少なくとも一実施例では、サービス3120によって提供される機能は、アプリケーションがデータを並列に(たとえば、並列コンピューティング・プラットフォーム3230(図32)を使用して)処理することを可能にすることによって良好にスケーリングもしながら、動的且つより効率的に作動することができる。少なくとも一実施例では、サービス3120によって適用される同じ機能を共有する各アプリケーションがサービス3120のそれぞれのインスタンスを有することを要求されるのではなく、サービス3120は、様々なアプリケーションの間及び中で共有することができる。少なくとも一実施例では、サービスは、非限定例として、検出又はセグメント化タスクを実行するために使用することができる推論サーバ又はエンジンを含むことができる。少なくとも一実施例では、機械学習モデル訓練及び/又は再訓練機能を提供することができるモデル訓練サービスが含まれてもよい。少なくとも一実施例では、GPU加速化データ(たとえば、DICOM、RIS、CIS、REST準拠、RPC、生など)抽出、リサイズ、スケーリング、及び/又は他の増強を提供することができるデータ増強サービスがさらに含まれてもよい。少なくとも一実施例では、二次元(2D)及び/又は三次元(3D)モデルに現実感を加えるために、レイ・トレーシング、ラスタ化、ノイズ除去、鮮明化などのような、画像レンダリング効果を加えることができる視覚化サービスが使用されてもよい。少なくとも一実施例では、ビーム形成、セグメント化、推論、イメージング、及び/又は仮想機器のパイプライン内の他のアプリケーションのサポートを可能にする仮想機器サービスが含まれてもよい。
【0363】
少なくとも一実施例では、サービス3120がAIサービス(たとえば、推論サービス)を含む場合、異常検出(たとえば、腫瘍、発育異常、瘢痕化など)のためのアプリケーションと関連付けられる1つ又は複数の機械学習モデルを、推論サービス(たとえば、推論サーバ)を(たとえば、APIコールとして)呼び出して、機械学習モデル又はその処理をアプリケーション実行の一部として実行することによって、実行することができる。少なくとも一実施例では、別のアプリケーションがセグメント化タスクのための1つ又は複数の機械学習モデルを含む場合、アプリケーションは、推論サービスを呼び出して、セグメント化タスクと関連付けられる処理動作のうちの1つ又は複数を実行するために機械学習モデルを実行することができる。少なくとも一実施例では、セグメント化アプリケーション及び異常検出アプリケーションを含む先進処理及び推論パイプラインを実施するソフトウェア3118は、各アプリケーションが1つ又は複数の推論タスクを実行するための同じ推論サービスを呼び出し得るため、合理化することができる。
【0364】
少なくとも一実施例では、ハードウェア3122は、GPU、CPU、グラフィックス・カード、AI/深層学習システム(たとえば、NVIDIAのDGXなどのAIスーパーコンピュータ)、クラウド・プラットフォーム、又はそれらの組合せを含んでもよい。少なくとも一実施例では、種々のタイプのハードウェア3122を使用して、展開システム3106内のソフトウェア3118及びサービス3120の効率的な専用のサポートを提供することができる。少なくとも一実施例では、GPU処理の使用は、画像処理、画像再構築、セグメント化、MRI試験、(たとえば、リアルタイムでの)脳卒中又は心発作検出、レンダリングにおける画像品質などの効率、正確度、及び有効性を改善するために、ローカルな(たとえば、施設3102における)、AI/深層学習システム内での、クラウド・システム内での、及び/又は展開システム3106の他の処理構成要素内での処理のために実施されてもよい。少なくとも一実施例では、施設は、GPUを活用して被検者の解剖学的構造を表すイメージング・データを生成することができるイメージング・デバイス、ゲノミクス・デバイス、シーケンシング・デバイス、及び/又は施設の他のデバイス・タイプを含んでもよい。少なくとも一実施例では、ソフトウェア3118及び/又はサービス3120は、非限定例として、深層学習、機械学習、及び/又は高性能コンピューティングに関するGPU処理のために最適化されてもよい。少なくとも一実施例では、展開システム3106及び/又は訓練システム3104のコンピューティング環境の少なくとも一部は、GPU最適化ソフトウェアを有する、データセンタの1つ若しくは複数のスーパーコンピュータ又は高性能コンピューティング・システム(たとえば、NVIDIAのDGXシステムのハードウェアとソフトウェアとの組合せ)において実行されてもよい。少なくとも一実施例では、データセンタは、イメージング・データ及び/又は他の患者データの送信が患者データのプライバシーに関して安全に処理されるように、HIPAAの規定に従うことができる。少なくとも一実施例では、ハードウェア3122は、本明細書において説明されているように、データの処理を並列に実行するために呼び出すことができる任意の数のGPUを含んでもよい。少なくとも一実施例では、クラウド・プラットフォームは、深層学習タスク、機械学習タスク、又はほかのコンピューティング・タスクのGPU最適化実行のためのGPU処理をさらに含んでもよい。少なくとも一実施例では、クラウド・プラットフォーム(たとえば、NVIDIAのNGC)は、AI/深層学習スーパーコンピュータ及び/又はGPU最適化ソフトウェア(たとえば、NVIDIAのDGXシステム上で提供されるような)をハードウェア抽象化及びスケーリング・プラットフォームとして使用して実施されてもよい。少なくとも一実施例では、クラウド・プラットフォームは、アプリケーション・コンテナ・クラスタ化システム又はオーケストレーション・システム(たとえば、KUBERNETES)を複数のGPUに統合して、シームレスなスケーリング及び負荷平衡を可能にすることができる。
【0365】
図32は、少なくとも一実施例による、イメージング展開パイプラインを生成及び展開するための例示的なシステム3200のシステム図である。少なくとも一実施例では、システム3200を使用して、図31のプロセス3100並びに/又は先進処理及び推論パイプラインを含む他のプロセスを実施することができる。少なくとも一実施例では、システム3200は、訓練システム3104及び展開システム3106を含んでもよい。少なくとも一実施例では、訓練システム3104及び展開システム3106は、本明細書において説明されているように、ソフトウェア3118、サービス3120、及び/又はハードウェア3122を使用して実施されてもよい。
【0366】
少なくとも一実施例では、システム3200(たとえば、訓練システム3104及び/又は展開システム3106)は、クラウド・コンピューティング環境において(たとえば、クラウド3226を使用して)実施されてもよい。少なくとも一実施例では、システム3200は、医療介護サービス施設に関してローカルに、又は、クラウドとローカル・コンピューティング・リソースの両方の組合せとして実施されてもよい。少なくとも一実施例では、クラウド・コンピューティングが実施される実施例において、患者データは、HIPAA並びに/又は他のデータ取り扱い及びプライバシー規制若しくは法令に準拠しない処理をレンダリングするシステム3200の1つ又は複数の構成要素から分離することができ、又は、当該構成要素によって処理されないようにすることができる。少なくとも一実施例では、クラウド3226におけるAPIへのアクセスは、制定されたセキュリティ方策又はプロトコルを通じて、認可されたユーザに制限することができる。少なくとも一実施例では、セキュリティ・プロトコルは、認証(たとえば、AuthN、AuthZ、Glueconなど)サービスによって署名することができるウェブ・トークンを含んでもよく、適切な権限付与を行うことができる。少なくとも一実施例では、仮想機器(本明細書において説明される)のAPI又はシステム3200の他のインスタンス化は、対話のために検査又は認可されている公衆IPのセットに制限され得る。
【0367】
少なくとも一実施例では、システム3200の様々な構成要素は、限定ではないが、有線及び/又は無線通信プロトコルを介したローカル・エリア・ネットワーク(LAN)及び/又は広域ネットワーク(WAN)を含む様々な異なるネットワーク・タイプのいずれかを使用して互いの間及び中で通信することができる。少なくとも一実施例では、施設とシステム3200の構成要素との間の通信(たとえば、推論要求を送信するための、推論要求の結果を受信するための、などの)は、データ・バス、無線データ・プロトコル(Wi-Fi)、有線データ・プロトコル(たとえば、Ethernet(登録商標))などを介して通信されてもよい。
【0368】
少なくとも一実施例では、訓練システム3104は、図31に関して本明細書において説明されているものと同様の、訓練パイプライン3204を実行してもよい。少なくとも一実施例では、1つ又は複数の機械学習モデルが、展開システム3106によって展開パイプライン3210内で使用されるべきである場合、訓練パイプライン3204を使用して、1つ又は複数の(たとえば、事前に訓練された)モデルを訓練若しくは再訓練し、及び/又は、事前に訓練されたモデル3206のうちの1つ又は複数を(たとえば、再訓練又は更新する必要なしに)実施することができる。少なくとも一実施例では、訓練パイプライン3204の結果として、出力モデル3116を生成することができる。少なくとも一実施例では、訓練パイプライン3204は、限定ではないが、イメージング・データ(又は他の入力データ)の変換又は適合(たとえば、DICOMアダプタ3202Aを使用してDICOM画像を、ニューロイメージング情報技術イニシアチブ(NIfTI)フォーマットなどのそれぞれの機械学習モデルによる処理に適した別のフォーマットに変換すること)、AI支援アノテーション3110、ラベル付き臨床データ3112を生成するためにイメージング・データ3108にラベル若しくはアノテーションを付すこと、モデル・レジストリからのモデル選択、モデル訓練3114、モデルの訓練、再訓練、若しくは更新、及び/又は他の処理ステップなどの、任意の数の処理ステップを含んでもよい。少なくとも一実施例では、展開システム3106によって使用される異なる機械学習モデルに対して、異なる訓練パイプライン3204が使用されてもよい。少なくとも一実施例では、図31に関して説明されている第1の実例と同様の訓練パイプライン3204が、第1の機械学習モデルに使用されてもよく、図31に関して説明されている第2の実例と同様の訓練パイプライン3204が、第2の機械学習モデルに使用されてもよく、図31に関して説明されている第3の実例と同様の訓練パイプライン3204が、第3の機械学習モデルに使用されてもよい。少なくとも一実施例では、各それぞれの機械学習モデルに必要とされるものに応じて、訓練システム3104内のタスクの任意の組合せが使用されてもよい。少なくとも一実施例では、機械学習モデルのうちの1つ又は複数は、すでに訓練されており、展開の準備が整っていてもよく、したがって、機械学習モデルは、訓練システム3104によっていかなる処理も受けなくてもよく、展開システム3106によって実施されてもよい。
【0369】
少なくとも一実施例では、出力モデル3116及び/又は事前に訓練されたモデル3206は、実施形態又は実施例に応じて任意のタイプの機械学習モデルを含んでもよい。少なくとも一実施例では、限定ではなく、システム3200によって使用される機械学習モデルは、線形回帰、ロジスティック回帰、決定木、サポート・ベクタ・マシン(SVM)、ナイーブ・ベイズ、k最近傍(Knn)、K平均クラスタリング、ランダム・フォレスト、次元削減アルゴリズム、勾配ブースティング・アルゴリズム、ニューラル・ネットワーク(たとえば、オート・エンコーダ、畳み込み、再帰、パーセプトロン、長・短期記憶(LSTM)、ホップフィールド、ボルツマン、ディープ・ビリーフ、逆畳み込み、敵対的生成、リキッド・ステート・マシンなど)、及び/又は他のタイプの機械学習モデルを使用する機械学習モデルを含んでもよい。
【0370】
少なくとも一実施例では、訓練パイプライン3204は、少なくとも図35Bに関して本明細書においてより詳細に説明されるような、AI支援アノテーションを含んでもよい。少なくとも一実施例では、ラベル付き臨床データ3112(たとえば、従来のアノテーション)が、任意の数の技法によって生成されてもよい。少なくとも一実施例では、ラベル又は他のアノテーションは、いくつかの実例において、描画プログラム(たとえば、アノテーション・プログラム)、コンピュータ支援設計(CAD)プログラム、ラベリング・プログラム、グランド・トゥルースのためのアノテーション若しくはラベルを生成するのに適した別のタイプのプログラム内で生成されてもよく、及び/又は、手書きされてもよい。少なくとも一実施例では、グランド・トゥルース・データは、合成的に生成(たとえば、コンピュータ・モデル又はレンダリングから生成)されてもよく、現実的に生成(たとえば、実世界のデータから設計及び生成)されてもよく、機械によって自動化されてもよく(たとえば、特徴分析及び学習を使用してデータから特徴を抽出し、その後、ラベルを生成する)、人間がアノテーションを付してもよく(たとえば、ラベラ、又はアノテーション専門家がラベルのロケーションを規定する)、及び/又はそれらの組合せであってもよい。少なくとも一実施例では、イメージング・データ3108(又は機械学習モデルによって使用される他のデータ・タイプ)の各インスタンスについて、訓練システム3104によって対応するグランド・トゥルース・データが生成されてもよい。少なくとも一実施例では、AI支援アノテーションは、訓練パイプライン3204に含まれるAI支援アノテーションに加えて、又は、その代わりに、展開パイプライン3210の一部として実行されてもよい。少なくとも一実施例では、システム3200は、1つ又は複数の医用イメージング及び診断機能を実行することができる診断アプリケーション(又は他のアプリケーション・タイプ)のソフトウェア層(たとえば、ソフトウェア3118)を含むことができる多層プラットフォームを含んでもよい。少なくとも一実施例では、システム3200は、(たとえば、暗号化リンクを介して)1つ又は複数の施設のPACSサーバ・ネットワークに通信可能に結合されてもよい。少なくとも一実施例では、システム3200は(たとえば、DICOMアダプタ3202、又は、RIS、CIS、REST準拠、RPC、生などのような別のデータ・タイプ・アダプタを介して)、PACSサーバからのデータ(たとえば、DICOMデータ、RISデータ、生データ、CISデータ、REST準拠データ、RPCデータ、生データなど)にアクセスし、参照して、機械学習モデルの訓練、機械学習モデルの展開、画像処理、推論、及び/又は他の動作などの動作を実行するように構成されてもよい。
【0371】
少なくとも一実施例では、ソフトウェア層は、セキュアな、暗号化された、及び/又は認証されたAPIとして実施されてもよく、当該APIを通じて、アプリケーション又はコンテナを外部環境(たとえば、施設3102)から呼び出す(たとえば、コールする)ことができる。少なくとも一実施例では、アプリケーションは、その後、それぞれのアプリケーションと関連付けられる計算、AI、又は視覚化タスクを実行するために1つ又は複数のサービス3120をコール又は実行することができ、ソフトウェア3118及び/又はサービス3120はハードウェア3122を活用して、処理タスクを効果的且つ効率的に実行することができる。
【0372】
少なくとも一実施例では、展開システム3106は、展開パイプライン3210を実行することができる。少なくとも一実施例では、展開パイプライン3210は、上述したように、AI支援アノテーションを含む、イメージング・デバイス、シーケンシング・デバイス、ゲノミクス・デバイスなどによって生成されるイメージング・データ(及び/又は他のデータ・タイプ)に連続的に、不連続に、又は他の様態で適用されてもよい任意の数のアプリケーションを含んでもよい。少なくとも一実施例では、本明細書において説明されているように、個々のデバイスの展開パイプライン3210が、デバイスの仮想機器(たとえば、仮想超音波機器、仮想CTスキャン機器、仮想シーケンシング機器など)として参照されてもよい。少なくとも一実施例では、デバイスによって生成されるデータから所望される情報に応じて、単一のデバイスについて、2つ以上の展開パイプライン3210が存在してもよい。少なくとも一実施例では、異常の検出がMRIマシンから所望される場合、第1の展開パイプライン3210が存在してもよく、画像増強がMRIマシンの出力から所望される場合、第2の展開パイプライン3210が存在してもよい。
【0373】
少なくとも一実施例では、展開パイプライン3210にとって利用可能なアプリケーションは、イメージング・データ又はデバイスからの他のデータに対する処理タスクの実行に使用することができる任意のアプリケーションを含んでもよい。少なくとも一実施例では、複数の異なるアプリケーションが、画像増強、セグメント化、再構築、異常検出、物体検出、特徴検出、治療計画、線量測定、ビーム計画(若しくは他の放射線治療手順)、及び/又は他の分析、画像処理、若しくは推論タスクを担ってもよい。少なくとも一実施例では、展開システム3106は、アプリケーションの各々の構成を規定することができ、結果、展開システム3106のユーザ(たとえば、医療施設、研究所、診療所など)は、構成を理解し、それらのそれぞれの施設内での実施にアプリケーションを適合させることができる。少なくとも一実施例では、画像再構築のためのアプリケーションが、展開パイプライン3210に含めるために選択されてもよいが、イメージング・データによって生成されるデータ・タイプは、アプリケーション内で使用されるデータ・タイプとは異なってもよい。少なくとも一実施例では、データを展開システム3106内のアプリケーションによって使用可能な形態に変換するために、DICOMアダプタ3202B(及び/若しくはDICOMリーダ)又は別のデータ・タイプ・アダプタ若しくはリーダ(たとえば、RIS、CIS、REST準拠、RPC、生など)が、展開パイプライン3210内で使用されてもよい。少なくとも一実施例では、復号、抽出、並びに/又は、任意の畳み込み、色補正、鮮明度、ガンマ、及び/若しくはデータに対する他の増強を含む、DICOM、RIS、CIS、REST準拠、RPC、生、及び/又は他のデータ・タイプ・ライブラリへのアクセスを累積し、前処理することができる。少なくとも一実施例では、DICOM、RIS、CIS、REST準拠、RPC、及び/又は生データは順序付けられていない場合があり、前処理パスを実行して、収集されたデータを編成又はソートすることができる。少なくとも一実施例では、様々なアプリケーションが共通の画像動作を共有することができるため、いくつかの実施例では、データ増強ライブラリ(たとえば、サービス3120のうちの1つとしての)を使用して、これらの動作を加速させることができる。少なくとも一実施例では、CPU処理に依拠する従来の処理手法のボトルネックを回避するために、並列コンピューティング・プラットフォーム3230を、これらの処理タスクのGPU加速に使用することができる。
【0374】
少なくとも一実施例では、画像再構築アプリケーションは、機械学習モデルの使用を含む処理タスクを含んでもよい。少なくとも一実施例では、ユーザは、ユーザ自身の機械学習モデルを使用すること、又は、モデル・レジストリ3124から機械学習モデルを選択することを所望し得る。少なくとも一実施例では、ユーザは、ユーザ自身の機械学習モデルを実施してもよく、又は、処理タスクを実行するためのアプリケーションに含めるための機械学習モデルを選択してもよい。少なくとも一実施例では、アプリケーションは選択可能且つカスタマイズ可能であってもよく、アプリケーションの構成を規定することによって、特定のユーザのためのアプリケーションの展開及び実施形態が、よりシームレスなユーザ体験として提示される。少なくとも一実施例では、サービス3120及びハードウェア3122などのシステム3200の他の特徴を活用することによって、展開パイプライン3210は、さらによりユーザ・フレンドリになり得、より容易な統合を可能にすることができ、より正確、効率的、且つ時機を得た結果を生成することができる。
【0375】
少なくとも一実施例では、展開システム3106は、展開パイプライン3210に含めるためのアプリケーションを選択し、アプリケーションを構成し、アプリケーション又はそのパラメータ若しくは構成を修正若しくは変更し、セットアップ及び/若しくは展開中に展開パイプライン3210を使用してこれと対話し、並びに/又は、他の様態で展開システム3106と対話するために使用することができるユーザ・インターフェース3214(たとえば、グラフィカル・ユーザ・インターフェース、ウェブ・インターフェースなど)を含むことができる。少なくとも一実施例では、訓練システム3104に関して示されていないが、ユーザ・インターフェース3214(又は異なるユーザ・インターフェース)は、展開システム3106において使用するためのモデルを選択するため、訓練システム3104における訓練若しくは再訓練のためのモデルを選択するため、及び/又は、他の様態で訓練システム3104と対話するために使用されてもよい。
【0376】
少なくとも一実施例では、展開パイプライン3210のアプリケーション及びコンテナと、サービス3120及び/又はハードウェア3122との間の対話を管理するために、アプリケーション・オーケストレーション・システム3228に加えて、パイプライン・マネージャ3212が使用されてもよい。少なくとも一実施例では、パイプライン・マネージャ3212は、アプリケーション間の、アプリケーションからサービス3120への、及び/又はアプリケーション若しくはサービスからハードウェア3122への対話を容易にするように構成することができる。少なくとも一実施例では、ソフトウェア3118に含まれるものとして示されているが、これは、限定であるようには意図されておらず、いくつかの実例において、パイプライン・マネージャ3212は、サービス3120に含まれてもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム3228(たとえば、クバネティス、DOCKERなど)は、調整、管理、スケーリング、及び展開のための論理ユニットとしてのコンテナにアプリケーションをグループ化することができるコンテナ・オーケストレーション・システムを含んでもよい。少なくとも一実施例では、展開パイプライン3210からのアプリケーション(たとえば、再構築アプリケーション、セグメント化アプリケーションなど)を個々のコンテナと関連付けることによって、各アプリケーションは、自己完結環境内で(たとえば、カーネル・レベルにおいて)実行して、速度及び効率を増大させることができる。
【0377】
少なくとも一実施例では、各アプリケーション及び/又はコンテナ(又はその画像)は、個々に開発、修正、及び展開されてもよく(たとえば、第1のユーザ又は開発者が第1のアプリケーションを開発、修正、及び展開してもよく、第2のユーザ又は開発者が、第1のユーザ又は開発者とは別個に第2のアプリケーションを開発、修正、及び展開してもよい)、これによって、別のアプリケーション又はコンテナのタスクによって妨害されることなく、単一のアプリケーション及び/又はコンテナのタスクに焦点を当て、注意することが可能になり得る。少なくとも一実施例では、異なるコンテナ又はアプリケーション間の通信及び調整は、パイプライン・マネージャ3212及びアプリケーション・オーケストレーション・システム3228によって支援することができる。少なくとも一実施例では、各コンテナ又はアプリケーションの予測入力及び/又は出力がシステムに分かっている限り(たとえば、アプリケーション又はコンテナの構成に基づいて)、アプリケーション・オーケストレーション・システム3228及び/又はパイプライン・マネージャ3212は、アプリケーション又はコンテナの各々の中及び間での通信、並びにそれらの中及び間でのリソースの共有を容易にすることができる。展開パイプライン3210内のアプリケーション又はコンテナのうちの1つ又は複数は、同じサービス及びリソースを共有することができるため、アプリケーション・オーケストレーション・システム3228は、様々なアプリケーション又はコンテナの間及び中でのサービス又はリソースの共有を取りまとめ、負荷平衡させ、決定することができる。少なくとも一実施例では、スケジューラを使用して、アプリケーション又はコンテナのリソース要件、これらのリソースの現在の使用又は計画されている使用、及びリソース可用性を追跡することができる。したがって、少なくとも一実施例では、スケジューラは、システムの要件及び可用性に照らして、リソースを複数の異なるアプリケーションに配分し、複数のアプリケーションの間及び中でリソースを分配することができる。いくつかの実例において、スケジューラ(及び/又はアプリケーション・オーケストレーション・システム3228の他の構成要素)は、サービス品質(QoS)、データ出力に対する需要の緊急性(たとえば、リアルタイム処理を実行すべきか、又は、遅延した処理を実行すべきかを判定するための)などの、システムに課される制約(たとえば、ユーザ制約)に基づいて、リソース可用性及び分配を決定することができる。
【0378】
少なくとも一実施例では、展開システム3106内のアプリケーション又はコンテナによって活用及び共有されるサービス3120は、計算サービス3216、AIサービス3218、仮想化サービス3220、及び/又は他のサービス・タイプを含んでもよい。少なくとも一実施例では、アプリケーションは、アプリケーションの処理動作を実行するために、サービス3120のうちの1つ又は複数をコール(たとえば、実行)することができる。少なくとも一実施例では、スーパー・コンピューティング又は他の高性能コンピューティング(HPC)タスクを実行するために、計算サービス3216が、アプリケーションによって活用されてもよい。少なくとも一実施例では、計算サービス3216を活用して、実質的に同時に、アプリケーションのうちの1つ若しくは複数及び/又は単一のアプリケーションの1つ若しくは複数のタスクを通じてデータを処理するための並列処理を(たとえば、並列コンピューティング・プラットフォーム3230を使用して)実行することができる。少なくとも一実施例では、並列コンピューティング・プラットフォーム3230(たとえば、NVIDIAのCUDA)は、GPU上での汎用計算(GPGPU)を可能にしてもよい(たとえば、GPU3222)。少なくとも一実施例では、並列コンピューティング・プラットフォーム3230のソフトウェア層は、計算カーネルの実行のために、GPUの仮想機器セット及び並列計算要素へのアクセスを可能にすることができる。少なくとも一実施例では、並列コンピューティング・プラットフォーム3230は、メモリを含んでもよく、いくつかの実施例では、メモリは、複数のコンテナの間及び中で、並びに/又は、単一のコンテナ内の複数の異なる処理タスクの間及び中で共有されてもよい。少なくとも一実施例では、(たとえば、1つのアプリケーションの複数の異なる段又は複数のアプリケーションが同じ情報を処理している場合)並列コンピューティング・プラットフォーム3230のメモリの共有セグメントからの同じデータを使用するために、複数のコンテナ及び/又は1つのコンテナ内の複数のプロセスについて、プロセス間通信(IPC)コールを生成することができる。少なくとも一実施例では、データのコピーを作成し、データをメモリ内の異なるロケーションに移動する(たとえば、読出し/書込み動作)のではなく、メモリの同じロケーション内の同じデータを、任意の数の処理タスクに使用することができる(たとえば、同時に、異なる時点において、など)。少なくとも一実施例では、データが使用されて処理の結果として新たなデータが生成されるため、データの新たなロケーションのこの情報を記憶し、様々なアプリケーションの間で共有することができる。少なくとも一実施例では、データのロケーション及び更新又は修正されたデータのロケーションは、コンテナ内でペイロードがどのように理解されるかの定義の一部であり得る。
【0379】
少なくとも一実施例では、AIサービス3218を活用して、(たとえば、アプリケーションの1つ又は複数の処理タスクを実行するタスクを負う)アプリケーションと関連付けられる機械学習モデルを実行するために推論サービスを実行することができる。少なくとも一実施例では、AIサービス3218は、AIシステム3224を活用して、セグメント化、再構築、物体検出、特徴検出、分類、及び/又は他の推論タスクのために機械学習モデル(たとえば、CNNなどのニューラル・ネットワーク)を実行することができる。少なくとも一実施例では、展開パイプライン3210のアプリケーションは、訓練システム3104からの出力モデル3116及び/又はアプリケーションの他のモデルを使用して、イメージング・データ(たとえば、DICOMデータ、RISデータ、CISデータ、REST準拠データ、RPCデータ、生データなど)に対する推論を実行することができる。少なくとも一実施例では、アプリケーション・オーケストレーション・システム3228(たとえば、スケジューラ)を使用した推論の2つ以上の実例が利用可能であってもよい。少なくとも一実施例では、第1のカテゴリは、緊急事態中に緊急要求に対する推論を実行するためのもの、又は、診断中の放射線科医のためのものなどの、より高いサービス・レベルの合意を達成することができる高優先度/低レイテンシ経路を含んでもよい。少なくとも一実施例では、第2のカテゴリは、緊急でなくてもよい要求に対して、又は、後の時点において分析が実行され得る場合に使用され得る標準優先度経路を含んでもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム3228は、AIサービス3218の異なる推論タスクの優先度経路に基づいてリソース(たとえば、サービス3120及び/又はハードウェア3122)を分配することができる。
【0380】
少なくとも一実施例では、共有ストレージが、システム3200内のAIサービス3218に実施されてもよい。少なくとも一実施例では、共有ストレージはキャッシュ(又は他のストレージ・デバイス・タイプ)として動作してもよく、アプリケーションからの推論要求を処理するために使用されてもよい。少なくとも一実施例では、推論要求が提出されると、展開システム3106のAPIインスタンスのセットによって要求を受信することができ、1つ又は複数のインスタンスが、要求を処理するために(たとえば、最良適合、負荷平衡などのために)選択され得る。少なくとも一実施例では、要求を処理するために、要求をデータベースに入力することができ、機械学習モデルを、まだキャッシュ内にない場合にモデル・レジストリ3124から配置することができ、検証ステップが、適切な機械学習モデルがキャッシュ(たとえば、共有ストレージ)にロードされることを保証することができ、及び/又は、モデルのコピーをキャッシュに保存することができる。少なくとも一実施例では、(たとえば、パイプライン・マネージャ3212の)スケジューラを使用して、アプリケーションがまだ作動していない場合、又は、アプリケーションの十分なインスタンスが存在しない場合、要求において参照されているアプリケーションを立ち上げることができる。少なくとも一実施例では、推論サーバがまだモデルを実行するために立ち上げられていない場合、推論サーバを立ち上げることができる。モデル当たり任意の数の推論サーバが立ち上げられてもよい。少なくとも一実施例では、推論サーバがクラスタ化されるプル・モデルにおいて、負荷平衡が有利であるときはいつでも、モデルをキャッシュすることができる。少なくとも一実施例では、推論サーバは、対応する分散サーバ内に静的にロードすることができる。
【0381】
少なくとも一実施例では、推論は、コンテナ内で作動する推論サーバを使用して実行されてもよい。少なくとも一実施例では、推論サーバのインスタンスは、モデル(及び、任意選択的に、モデルの複数のバージョン)と関連付けられてもよい。少なくとも一実施例では、モデルに対して推論を実行することを求める要求が受信されたときに、推論サーバのインスタンスが存在しない場合、新たなインスタンスがロードされてもよい。少なくとも一実施例では、推論サーバを始動するとき、推論サーバが異なるインスタンスとして作動している限り、同じコンテナを使用して複数の異なるモデルにサービスすることができるように、モデルを推論サーバに渡すことができる。
【0382】
少なくとも一実施例では、アプリケーション実行中、所与のアプリケーションに対する推論要求が受信されてもよく、コンテナ(たとえば、推論サーバのインスタンスをホストする)がロードされてもよく(まだ存在しない場合)、開始手順がロードされてもよい。少なくとも一実施例では、コンテナ内の前処理論理が、入来するデータに対する任意の追加の前処理を(たとえば、CPU及び/又はGPUを使用して)ロード、復号、及び/又は実行してもよい。少なくとも一実施例では、データが推論のために準備されると、コンテナがデータに対して必要に応じて推論を実行することができる。少なくとも一実施例では、これは、1つの画像に対する単一の推論コールを含み得(たとえば、手のX線)、又は、数百の画像に対する推論を要求し得る(たとえば、胸部CT)。少なくとも一実施例では、アプリケーションは、完了前に結果を要約することができ、これは、限定ではなく、単一の信頼スコア、ピクセル・レベル・セグメント化、ボクセル・レベル・セグメント化、視覚化の生成、又は、所見を要約するためのテキストの生成を含んでもよい。少なくとも一実施例では、異なるモデル又はアプリケーションは、異なる優先度を割り当てられてもよい。たとえば、いくつかのモデルは、リアルタイムの(TAT<1分)優先度を有してもよく、一方、他のモデルは、より低い優先度(たとえば、TAT<10分)を有してもよい。少なくとも一実施例では、モデル実行時間が、要求元機関又はエンティティから測定され得、パートナ・ネットワーク横断時間及び推論サービス上での実行を含み得る。
【0383】
少なくとも一実施例では、サービス3120と推論アプリケーションとの間の要求の転送は、ソフトウェア開発キット(SDK)の背後に隠すことができ、キューを通じてロバストな輸送を提供することができる。少なくとも一実施例では、要求は、個々のアプリケーション/テナントID組合せについてAPIを介してキューに配置され、SDKは、キューから要求をプルし、要求をアプリケーションに与える。少なくとも一実施例では、キューの名前は、SDKがキューをピック・アップする環境内で与えられてもよい。少なくとも一実施例では、キューを通じた非同期通信が、アプリケーションの任意のインスタンスがワークを利用可能になったときにピック・アップすることを可能にすることができるため、有用であり得る。データが喪失されないことを保証するために、結果は、キューを通じて転送し戻すことができる。少なくとも一実施例では、キューはまた、最も優先度の高いワークが、アプリケーションのインスタンスが最も多く接続されているキューに行くことができ、一方で、優先度の最も低いワークが、タスクを受信された順に処理する、単一のインスタンスが接続されているキューに行くことができるため、ワークをセグメント化することを可能にすることもできる。少なくとも一実施例では、アプリケーションは、クラウド3226内で生成されるGPU加速化インスタンス上で作動することができ、推論サービスは、GPU上で推論を実行することができる。
【0384】
少なくとも一実施例では、視覚化サービス3220を活用して、アプリケーション及び/又は展開パイプライン3210の出力を閲覧するための視覚化を生成することができる。少なくとも一実施例では、GPU3222を、視覚化サービス3220によって活用して、視覚化を生成することができる。少なくとも一実施例では、レイ・トレーシングなどのレンダリング効果を、視覚化サービス3220によって実施して、より高い品質の視覚化を生成することができる。少なくとも一実施例では、視覚化は、限定ではなく、2D画像レンダリング、3Dボリューム・レンダリング、3Dボリューム再構築、2D断層撮影スライス、仮想現実ディスプレイ、拡張現実ディスプレイなどを含んでもよい。少なくとも一実施例では、仮想化環境を使用して、システムのユーザ(たとえば、医師、看護師、放射線科医など)による対話のための仮想対話型ディスプレイ又は環境(たとえば、仮想環境)を生成することができる。少なくとも一実施例では、視覚化サービス3220は、内部ビジュアライザ、シネマティクス、及び/又は他のレンダリング若しくは画像処理能力又は機能(たとえば、レイ・トレーシング、ラスタ化、内部光学系など)を含んでもよい。
【0385】
少なくとも一実施例では、ハードウェア3122は、GPU3222、AIシステム3224、クラウド3226、並びに/又は、訓練システム3104及び/若しくは展開システム3106の実行に使用される任意の他のハードウェアを含んでもよい。少なくとも一実施例では、GPU3222(たとえば、NVIDIAのTESLA及び/又はQUADRO GPU)は、計算サービス3216、AIサービス3218、視覚化サービス3220、他のサービス、及び/又は、ソフトウェア3118の特徴若しくは機能のいずれかの処理タスクの実行に使用することができる任意の数のGPUを含んでもよい。たとえば、AIサービス3218に関して、GPU3222を使用して、イメージング・データ(若しくは機械学習モデルによって使用される他のデータ・タイプ)に対する前処理、機械学習モデルの出力に対する後処理を実行し、及び/又は、推論(たとえば、機械学習モデルを実行するための)を実行することができる。少なくとも一実施例では、クラウド3226、AIシステム3224、及び/又はシステム3200の他の構成要素は、GPU3222を使用することができる。少なくとも一実施例では、クラウド3226は、深層学習タスクのためのGPU最適化プラットフォームを含んでもよい。少なくとも一実施例では、AIシステム3224は、GPUを使用することができ、クラウド3226又は深層学習若しくは推論のタスクを負う少なくとも一部分は、1つ又は複数のAIシステム3224を使用して実行することができる。したがって、ハードウェア3122は個別の構成要素として示されているが、これは、限定であるようには意図されておらず、ハードウェア3122の任意の構成要素が、ハードウェア3122の任意の他の構成要素と組み合わされてもよく、又は、任意の他の構成要素によって活用されてもよい。
【0386】
少なくとも一実施例では、AIシステム3224は、推論、深層学習、機械学習、及び/又は他の人工知能タスクのために構成されている専用コンピューティング・システム(たとえば、スーパー・コンピュータ又はHPC)を含んでもよい。少なくとも一実施例では、AIシステム3224(たとえば、NVIDIAのDGX)は、CPU、RAM、ストレージ、及び/又は他の構成要素、特徴、若しくは機能に加えて、複数のGPU3222を使用して実行することができるGPU最適化ソフトウェア(たとえば、ソフトウェア・スタック)を含んでもよい。少なくとも一実施例では、1つ又は複数のAIシステム3224は、システム3200のAIベースの処理タスクの一部又はすべてを実行するために、クラウド3226内に(たとえば、データ・センタ内に)実施されてもよい。
【0387】
少なくとも一実施例では、クラウド3226は、システム3200の処理タスクを実行するためにGPU最適化プラットフォームを提供することができるGPU加速化インフラストラクチャ(たとえば、NVIDIAのNGC)を含んでもよい。少なくとも一実施例では、クラウド3226は、(たとえば、ハードウェア抽象化及びスケーリング・プラットフォームとしての)システム3200のAIベースのタスクのうちの1つ又は複数を実行するためのAIシステム3224を含んでもよい。少なくとも一実施例では、クラウド3226は、複数のGPUを活用して、アプリケーション及びサービス3120の間及び中でのシームレスなスケーリング及び負荷平衡を可能にするアプリケーション・オーケストレーション・システム3228と統合することができる。少なくとも一実施例では、クラウド3226は、本明細書において説明されているような、計算サービス3216、AIサービス3218、及び/又は視覚化サービス3220を含む、システム3200のサービス3120の少なくとも一部を実行するタスクを負うことができる。少なくとも一実施例では、クラウド3226は、小さい及び大きいバッチの推論(たとえば、NVIDIAのTENSOR RTを実行して)を実行し、加速化並列コンピューティングAPI及びプラットフォーム3230(たとえば、NVIDIAのCUDA)を提供し、アプリケーション・オーケストレーション・システム3228(たとえば、KUBERNETES)を実行し、グラフィックス・レンダリングAPI及びプラットフォームを提供してもよく(たとえば、レイ・トレーシング、2Dグラフィックス、3Dグラフィックス、及び/又は、より高い品質のシネマティクスを生成する他のレンダリング技法のために)、及び/又は、システム3200の他の機能を提供してもよい。
【0388】
少なくとも一実施例では、患者の機密性を保持するための努力の一環として(たとえば、患者データ又は記録が施設外で使用されることになる場合)、クラウド3226は、深層学習コンテナ・レジストリなどのレジストリを含んでもよい。少なくとも一実施例では、レジストリは、患者データに対する前処理、後処理、又は他の処理タスクを実行することができるアプリケーションのインスタンス化のためのコンテナを記憶することができる。少なくとも一実施例では、クラウド3226は、コンテナ内の患者データ及びセンサ・データを含むデータを受信し、それらのコンテナ内のセンサ・データのみに対する要求された処理を実行し、その後、結果としての出力及び/又は視覚化を適切なパーティ及び/又はデバイス(たとえば、視覚化又は診断に使用される施設内の医療デバイス)に転送することができ、これらすべては、患者データを抽出、記憶、又は他の様態でアクセスすることを必要としない。少なくとも一実施例では、患者データの機密性は、HIPAA及び/又は他のデータ規制に従って保持される。
【0389】
図33Aは、少なくとも一実施例による、機械学習モデルを訓練、再訓練、又は更新するプロセス3300のデータ・フロー図を示す。少なくとも一実施例では、プロセス3300は、非限定例として、図32のシステム3200を使用して実行されてもよい。少なくとも一実施例では、プロセス3300は、本明細書において説明されているように、システム3200のサービス3120及び/又はハードウェア3122を活用することができる。少なくとも一実施例では、プロセス3300によって生成される精緻化モデル3312が、展開システム3106によって、展開パイプライン3210内の1つ又は複数のコンテナ化アプリケーションのために実行されてもよい。
【0390】
少なくとも一実施例では、モデル訓練3114は、新たな訓練データ(たとえば、顧客データセット3306などの新たな入力データ、及び/又は、入力データと関連付けられる新たなグランド・トゥルース・データ)を使用して初期モデル3304を再訓練又は更新することを含んでもよい。少なくとも一実施例では、初期モデル3304を再訓練又は更新するために、初期モデル3304の出力又は損失層が、リセット若しくは削除されてもよく、及び/又は、更新された又は新たな出力又は損失層に置換されてもよい。少なくとも一実施例では、初期モデル3304は、以前の訓練から維持される、以前に微調整されたパラメータ(たとえば、重み及び/又はバイアス)を有してもよく、したがって、訓練又は再訓練3114は、スクラッチからモデルを訓練することほど長くかからなくてもよく、又は、それほど多くの処理を必要としなくてもよい。少なくとも一実施例では、モデル訓練3114の間、初期モデル3304の出力又は損失層をリセット又は置換させることによって、新たな顧客データセット3306(たとえば、図31の画像データ3108)に対する予測の生成において、出力又は損失層の正確度と関連付けられる損失計算に基づいて、新たなデータセットに対してパラメータを更新及び再調整することができる。
【0391】
少なくとも一実施例では、事前に訓練されたモデル3206がデータ・ストア又はレジストリ(たとえば、図31のモデル・レジストリ3124)に記憶されてもよい。少なくとも一実施例では、事前に訓練されたモデル3206は、少なくとも部分的に、プロセス3300を実行する施設以外の1つ又は複数の施設において訓練されていてもよい。少なくとも一実施例では、異なる施設の患者、被検者、又は顧客のプライバシー及び権利を保護するために、事前に訓練されたモデル3206は、施設内で生成された顧客又は患者データを使用して、施設内で訓練されていてもよい。少なくとも一実施例では、事前に訓練されたモデル3206は、クラウド3226及び/又は他のハードウェア3122を使用して訓練することができるが、機密性のプライバシー保護された患者データは、クラウド3226(又は他の施設外ハードウェア)のいかなる構成要素にも転送されず、それらによって使用されず、又はそれらにとってアクセス可能でないものとすることができる。少なくとも一実施例では、事前に訓練されたモデル3206が2つ以上の施設からの患者データを使用して訓練される場合、事前に訓練されたモデル3206は、別の施設からの患者又は顧客データに関して訓練される前に、各施設について個別に訓練されていてもよい。少なくとも一実施例では、顧客若しくは患者データがプライバシー問題から解放されている場合(たとえば、権利放棄によって、実験的使用のためなど)、又は、顧客若しくは患者データが公開データセットに含まれている場合などに、任意の数の施設からの顧客又は患者データを使用して、データ・センタ又は他のクラウド・コンピューティング・インフラストラクチャにおいてなど、施設内及び/又は施設外で、事前に訓練されたモデル3206を訓練することができる。
【0392】
少なくとも一実施例では、展開パイプライン3210内で使用するためのアプリケーションを選択するとき、ユーザはまた、特定のアプリケーションに使用される機械学習モデルを選択することもできる。少なくとも一実施例では、ユーザは、使用するためのモデルを有しない場合があり、したがって、ユーザは、アプリケーションとともに使用するために、事前に訓練されたモデル3206を選択してもよい。少なくとも一実施例では、事前に訓練されたモデル3206は、(たとえば、患者多様性、人口統計、使用される医用イメージング・デバイスのタイプなどに基づいて)ユーザの施設の顧客データセット3306に対して正確な結果を生成するように最適化されなくてもよい。少なくとも一実施例では、事前に訓練されたモデル3206をアプリケーションとともに使用するために展開パイプライン3210に展開する前に、事前に訓練されたモデル3206は、それぞれの施設において使用するために更新、再訓練、及び/又は微調整されてもよい。
【0393】
少なくとも一実施例では、ユーザは、更新、再訓練、及び/又は微調整されることになる事前に訓練されたモデル3206を選択することができ、事前に訓練されたモデル3206は、プロセス3300内で訓練システム3104の初期モデル3304として参照される場合がある。少なくとも一実施例では、顧客データセット3306(たとえば、イメージング・データ、ゲノミクス・データ、シーケンシング・データ、又は、施設にあるデバイスによって生成される他のデータ・タイプ)を使用して、初期モデル3304に対するモデル訓練3114(限定ではなく、転移学習を含んでもよい)を実行して精緻化モデル3312を生成することができる。少なくとも一実施例では、顧客データセット3306に対応するグランド・トゥルース・データが、訓練システム3104によって生成されてもよい。少なくとも一実施例では、グランド・トゥルース・データは、少なくとも部分的に、施設において臨床医、科学者、医師、施術者によって生成されてもよい(たとえば、図31のラベル付き臨床データ3112として)。
【0394】
少なくとも一実施例では、AI支援アノテーション3110を、いくつかの実例において使用して、グランド・トゥルース・データを生成することができる。少なくとも一実施例では、AI支援アノテーション3110(たとえば、AI支援アノテーションSDKを使用して実施される)は、機械学習モデル(たとえば、ニューラル・ネットワーク)を活用して、顧客データセットの示唆又は予測されたグランド・トゥルース・データを生成することができる。少なくとも一実施例では、ユーザ3310は、コンピューティング・デバイス3308上のユーザ・インターフェース(グラフィカル・ユーザ・インターフェース(GUI))内のアノテーション・ツールを使用してもよい。
【0395】
少なくとも一実施例では、ユーザ3310は、コンピューティング・デバイス3308を介してGUIと対話して、(自動)アノテーションを編集又は微調整することができる。少なくとも一実施例では、ポリゴン編集機能を使用して、ポリゴンの頂点をより正確な又は微調整されたロケーションへと動かすことができる。
【0396】
少なくとも一実施例では、顧客データセット3306がグランド・トゥルース・データを関連付けると、グランド・トゥルース・データ(たとえば、AI支援アノテーション、手動ラベル付けなどからの)をモデル訓練3114中に使用して、精緻化モデル3312を生成することができる。少なくとも一実施例では、顧客データセット3306は、初期モデル3304に任意の回数だけ適用することができ、グランド・トゥルース・データを使用して、精緻化モデル3312のために許容可能なレベルの正確度が達成されるまで、初期モデル3304のパラメータを更新することができる。少なくとも一実施例では、精緻化モデル3312が生成されると、精緻化モデル3312は、医用イメージング・データに関する1つ又は複数の処理タスクを実行するために、施設において1つ又は複数の展開パイプライン3210内に展開することができる。
【0397】
少なくとも一実施例では、精緻化モデル3312は、別の施設によって選択されるように、モデル・レジストリ3124内の事前に訓練されたモデル3206にアップロードされてもよい。少なくとも一実施例では、このプロセスは、任意の数の施設において遂行されてもよく、結果、精緻化モデル3312を新たなデータセットに対して任意の回数だけさらに精緻化して、より普遍的なモデルを生成することができる。
【0398】
図33Bは、少なくとも一実施例による、事前に訓練されたアノテーション・モデルによってアノテーション・ツールを強化するためのクライアント・サーバ・アーキテクチャ3332の例示的な図である。少なくとも一実施例では、AI支援アノテーション・ツール3336は、クライアント・サーバ・アーキテクチャ3332に基づいてインスタンス化されてもよい。少なくとも一実施例では、イメージング・アプリケーション内のアノテーション・ツール3336は、放射線科医が、たとえば、臓器及び異常を識別するのを支援することができる。少なくとも一実施例では、イメージング・アプリケーションは、ユーザ3310が、非限定例として、生画像3334内の(たとえば、3D MRI又はCTスキャン内の)特定の関心臓器上のいくつかの端点を識別するのを助け、特定の臓器のすべての2Dスライスの自動アノテーション結果を受信するソフトウェア・ツールを含んでもよい。少なくとも一実施例では、結果は、訓練データ3338としてデータ・ストアに記憶することができ、(たとえば、限定ではなく)グランド・トゥルース・データとして訓練に使用することができる。少なくとも一実施例では、コンピューティング・デバイス3308がAI支援アノテーション3110のための端点を送信すると、たとえば、深層学習モデルは、このデータを入力として受診して、セグメント化された臓器又は異常の推論結果を返すことができる。少なくとも一実施例では、図33BのAI支援アノテーション・ツール3336Bなどの、事前にインスタンス化されたアノテーション・ツールは、たとえば、アノテーション・モデル・レジストリに記憶されている、事前に訓練されたモデル3342のセットを含んでもよいアノテーション支援サーバ3340などのサーバに対するAPIコール(たとえば、APIコール3344)を行うことによって増強することができる。少なくとも一実施例では、アノテーション・モデル・レジストリは、特定の臓器又は異常に対してAI支援アノテーションを実行するように事前に訓練されている、事前に訓練されたモデル3342(たとえば、深層学習モデルなどの機械学習モデル)を記憶することができる。これらのモデルは、訓練パイプライン3204を使用することによって、さらに更新することができる。少なくとも一実施例では、事前にインストールされたアノテーション・ツールは、新たなラベル付き臨床データ3112が追加されるときに、経時的に改善することができる。
【0399】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理615が使用される。少なくとも一実施例では、この論理を、これらの図面の構成要素とともに使用して、1つ又は複数のニューラル・ネットワークを使用して1つ又は複数のピクセル・ブレンディング重みを調整することができる。
【0400】
他の変形形態は、本開示の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の1つ又は複数の開示された形に本開示を限定する意図はなく、その反対に、特許請求の範囲に定義される開示の趣旨及び範囲に入るすべての修正形態、代替的な構成、及び等価物を網羅することを意図している。
【0401】
開示される実施例を説明する文脈において(特に、以下の特許請求の範囲の文脈において)「a」及び「an」及び「the」という用語、並びに同様の指示語を使用することは、本明細書に別段の記載のない限り、又は文脈によって明らかに否定されない限り、単数と複数の両方を網羅すると解釈されるべきであり、用語の定義であると解釈されるべきではない。「備える(comprising)」、「有する(having)」、「含む(including)」、「収容する(containing)」という用語は、別段の記載のない限り、オープンエンドの用語(「含むが、これに限定されない」を意味する)と解釈される。用語「接続される」は、修飾されずに物理的接続を指している場合には、何か介在するものがあったとしても、部分的に又は完全に中に収容される、取り付けられる、又は互いに接合されるものとして解釈される。本明細書において値の範囲を詳述することは、本明細書において別段の記載がない限り、またそれぞれ別々の値が、本明細書に個々に詳述されているかのように明細書に組み込まれていない限り、範囲内に含まれるそれぞれ別々の値を個々に参照する簡潔な方法として機能することを単に意図しているにすぎない。「セット」(たとえば、「アイテムのセット」)又は「サブセット」という用語の使用は、文脈によって別段の記載がない、又は否定されていない限り、1つ又は複数の部材を備える空ではない集合として解釈されるべきである。さらに、文脈によって別段の記載がない、又は否定されていない限り、対応するセットの「サブセット」という用語は、対応するセットの厳密なサブセットを必ずしも指すのではなく、サブセットと対応するセットは等しくてもよい。
【0402】
「A、B、及びCのうちの少なくとも1つ」又は「A、B、及びCのうちの少なくとも1つ」という形の言い回しなどの結合語は、別段の具体的な記載のない限り、又は文脈によって明確に否定されていない限り、項目、用語などが、AかBかCである、又はAとBとCのセットのいずれかの空でないサブセットであることを提示するために一般に使用される文脈で理解される。たとえば、3つの部材を有するセットの説明的な例では、「A、B、及びCのうちの少なくとも1つ」並びに「A、B、及びCのうちの少なくとも1つ」という結合句は、次のセットのうちのいずれかを指す:{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}。したがって、こうした結合語は、ある一定の実施例が、少なくとも1つのA、少なくとも1つのB、及び少なくとも1つのCのそれぞれの存在を必要とすることを全体的に暗示するものではない。さらに、別段の記載のない、又は文脈によって否定されていない限り、「複数」という用語は、複数である状態を示す(たとえば、「複数の項目(a plurality of items)」は複数の項目(multiple items)を示す)。複数とは、少なくとも2つであるが、明示的に、又は文脈によって示されている場合にはそれより多くてもよい。さらに、別段の記載のない、又は文脈からそうでないことが明らかでない限り、「~に基づく」という言い回しは、「少なくとも部分的に~に基づく」を意味し、「~だけに基づく」を意味しない。
【0403】
本明細書に記載のプロセスの動作は、本明細書に別段の記載のない、又は文脈によって明確に否定されない限り、任意の好適な順序で実行することができる。少なくとも一実施例では、本明細書に記載のプロセス(又はその変形及び/又は組合せ)などのプロセスは、実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実行され、1つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行されるコード(たとえば、実行可能な命令、1つ若しくは複数のコンピュータ・プログラム、又は1つ若しくは複数のアプリケーション)として実施される。少なくとも一実施例では、コードは、たとえば1つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形で、コンピュータ読取り可能ストレージ媒体に記憶される。少なくとも一実施例では、コンピュータ読取り可能ストレージ媒体は、一時的な信号(たとえば、伝播する一時的な電気若しくは電磁送信)を除外するが、一時的な信号のトランシーバ内の非一時的なデータ・ストレージ回路(たとえば、バッファ、キャッシュ、及びキュー)を含む非一時的なコンピュータ読取り可能ストレージ媒体である。少なくとも一実施例では、コード(たとえば、実行可能コード又はソース・コード)は、1つ又は複数の非一時的なコンピュータ読取り可能ストレージ媒体のセットに記憶され、このストレージ媒体には、コンピュータ・システムの1つ又は複数のプロセッサによって実行されたときに(すなわち、実行された結果として)、コンピュータ・システムに本明細書に記載の動作を実行させる実行可能命令が記憶されている(又は、実行可能命令を記憶するための他のメモリを有する)。非一時的なコンピュータ読取り可能ストレージ媒体のセットは、少なくとも一実施例では、複数の非一時的なコンピュータ読取り可能ストレージ媒体を備え、複数の非一時的なコンピュータ読取り可能ストレージ媒体の個々の非一時的なストレージ媒体のうちの1つ又は複数には、すべてのコードがないが、複数の非一時的なコンピュータ読取り可能ストレージ媒体は、集合的にすべてのコードを記憶している。少なくとも一実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行される。たとえば、非一時的なコンピュータ読取り可能ストレージ媒体は命令を記憶し、メインの中央処理装置(「CPU」)は一部の命令を実行し、グラフィックス・プロセッシング・ユニット(「GPU」)は他の命令を実行する。少なくとも一実施例では、コンピュータ・システムの異なる構成要素は、別々のプロセッサを有し、異なるプロセッサは、命令の異なるサブセットを実行する。
【0404】
したがって、少なくとも一実施例では、コンピュータ・システムは、本明細書に記載のプロセスの動作を単独で又は集合的に実行する1つ又は複数のサービスを実施するように構成され、こうしたコンピュータ・システムは、動作の実行を可能にする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも一実施例を実施するコンピュータ・システムは、単一のデバイスであり、別の実施例では、異なるやり方で動作する複数のデバイスを備える分散型のコンピュータ・システムであり、それにより単一のデバイスがすべての動作を実行しないように分散型のコンピュータ・システムが本明細書に記載の動作を実行する。
【0405】
本明細書に提供されるあらゆる例、又は例示的な言葉(たとえば、「など」)の使用は、本開示の実施例をより明らかにすることだけを意図しており、別段の主張のない限り、本開示の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本開示の実践に不可欠なものとして示すと解釈されるべきではない。
【0406】
本明細書に引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることがあたかも個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
【0407】
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用されてもよい。これらの用語は、互いに同義語として意図されていない場合があることを理解すべきである。むしろ、特定の例では、「接続される」又は「結合される」は、2つ以上の要素が物理的又は電気的に互いに直接又は間接的に接触していることを示すために使用されてもよい。また「結合される」は、2つ以上の要素が直接互いに接触していないが、なお互いに連動又は相互作用することを意味してもよい。
【0408】
別段の具体的な記載のない限り、明細書全体を通して「処理する」、「コンピューティング」、「計算する」、又は「判定する」などの用語は、コンピューティング・システムのレジスタ及び/又はメモリ内の、電子的などの物理的な量として表されるデータをコンピューティング・システムのメモリ、レジスタ、又は他のそのような情報ストレージ・デバイス、送信デバイス、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータになるよう操作及び/又は変換するコンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスの行為及び/又はプロセスを指す。
【0409】
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データを、レジスタ及び/又はメモリに記憶することができる他の電子データに変換する任意のデバイス、又はデバイスの一部分を指してもよい。非限定的な例として、「プロセッサ」は、CPU又はGPUであってもよい。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備えてもよい。本明細書で使用する「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及び知的エージェントなど、経時的にワークを実行するソフトウェア及び/又はハードウェアのエンティティを含んでもよい。また、各プロセスは、命令を直列で又は並列で連続的に又は断続的に実行するための複数のプロセスを指してもよい。用語「システム」及び「方法」は、1つ又は複数の方法をシステムが具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
【0410】
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、又はコンピュータ実施機械に入力することに言及することができる。アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力することは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々なやり方で実現することができる。いくつかの実施形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。別の実施形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。また、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することができる。様々な例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース若しくはプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
【0411】
上の議論は、記載した技法の例示的な実施形態について述べているが、記載した機能を実施するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、議論を目的として、役割の具体的な分配が定義されているが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
【0412】
さらに、主題は、構造的特徴及び/又は方法論的動作に特有の言語で説明されてきたが、添付の特許請求の範囲で特許請求される主題は、説明した特有の特徴又は動作に必ずしも限定されないことが理解されるべきである。むしろ、特有の特徴及び動作は、特許請求の範囲を実施する例示的な形として開示されている。
図1
図2
図3A
図3B
図3C
図4A
図4B
図5
図6A
図6B
図7
図8
図9
図10
図11
図12A
図12B
図12C
図12D
図12E
図12F
図13
図14A
図14B
図15A
図15B
図16
図17A
図17B
図17C
図17D
図18
図19
図20
図21
図22
図23
図24
図25
図26A
図26B
図27
図28
図29
図30
図31
図32
図33A
図33B