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

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

▶ エヌビディア コーポレーションの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024050439
(43)【公開日】2024-04-10
(54)【発明の名称】把持姿勢予測
(51)【国際特許分類】
   G06T 7/00 20170101AFI20240403BHJP
【FI】
G06T7/00 350C
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023142723
(22)【出願日】2023-09-04
(31)【優先権主張番号】63/411,486
(32)【優先日】2022-09-29
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】18/219,031
(32)【優先日】2023-07-06
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
2.ZIGBEE
(71)【出願人】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ジョナサン トレンブレイ
(72)【発明者】
【氏名】スタンリー トーマス バーチフィールド
(72)【発明者】
【氏名】ヴァルツ ブルキス
(72)【発明者】
【氏名】ボーエン ウェン
(72)【発明者】
【氏名】ディーター フォックス
(72)【発明者】
【氏名】テヨプ イ
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA02
5L096AA06
5L096AA09
5L096BA05
5L096EA16
5L096EA39
5L096FA64
5L096FA66
5L096FA67
5L096FA69
5L096GA30
5L096GA34
5L096GA40
5L096GA51
5L096HA11
(57)【要約】
【課題】把持プロポーザルを生成して選択するための、装置、システム、及び技法を提供すること。
【解決手段】少なくとも一実施例では、把持プロポーザルは、たとえば物体に対応する潜在コードに基づいて、1つ又は複数のニューラル・ネットワークを使用して生成され、選択される。
【選択図】図1
【特許請求の範囲】
【請求項1】
システムであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサによる実行に応答して、前記システムに、少なくとも
物体を描写する入力画像を得ることと、
前記物体に対応する潜在コードを処理するために、第1のニューラル・ネットワークを少なくとも使用することによって画像の第1のセットを生成することと、
画像の前記第1のセット及び前記入力画像に少なくとも部分的に基づき、前記潜在コードを更新することと、
前記潜在コードに少なくとも部分的に基づき、把持プロポーザルのセットを生成するために、第2のニューラル・ネットワークを使用することと、
前記第1のニューラル・ネットワーク及び前記潜在コードに少なくとも部分的に基づき、把持プロポーザルの前記セットから1つ又は複数の把持プロポーザルを選択することと
を行わせる命令を含む、少なくとも1つのメモリと
を備える、システム。
【請求項2】
前記少なくとも1つのメモリが、前記少なくとも1つのプロセッサによる実行に応答して、前記システムに、少なくとも
前記1つ又は複数の把持プロポーザルに少なくとも部分的に基づき、ロボットに前記物体を把持させる
さらなる命令を含む、請求項1に記載のシステム。
【請求項3】
前記少なくとも1つのメモリが、前記少なくとも1つのプロセッサによる実行に応答して、前記システムに、少なくとも
前記潜在コードに少なくとも部分的に基づき、色及び密度のうちの1つ又は複数の予測を生成するために、前記第1のニューラル・ネットワークを使用することと、
色及び密度のうちの少なくとも前記1つ又は複数の予測を使用して、画像の前記第1のセットを生成することと
を行わせるさらなる命令を含む、請求項1に記載のシステム。
【請求項4】
前記少なくとも1つのメモリが、前記少なくとも1つのプロセッサによる実行に応答して、前記システムに、少なくとも
前記第1のニューラル・ネットワーク及び前記潜在コードを使用して、把持プロポーザルの前記セットに関連する密度の1つ又は複数の予測を生成することと、
密度の前記1つ又は複数の予測に少なくとも部分的に基づき、前記1つ又は複数の把持プロポーザルを選択することと
を行わせるさらなる命令を含む、請求項1に記載のシステム。
【請求項5】
前記第1のニューラル・ネットワーク及び前記第2のニューラル・ネットワークが、パラメータの同一のセットを利用する、請求項1に記載のシステム。
【請求項6】
前記第1のニューラル・ネットワークがデコーダを備える、請求項1に記載のシステム。
【請求項7】
方法であって、
物体を描写する入力画像を得ることと、
第1のニューラル・ネットワークに関連して生成された画像の第1のセット及び前記入力画像に少なくとも部分的に基づき、潜在コードを計算することと、
複数の把持プロポーザルを生成するために、少なくとも前記潜在コードを処理するために第2のニューラル・ネットワークを使用することと、
前記潜在コード及び前記複数の把持プロポーザルに関連付けられる座標のセットを処理するために、前記第1のニューラル・ネットワークを少なくとも使用することによって、前記複数の把持プロポーザルのうち、1つ又は複数の把持プロポーザルを決定することと
を含む、方法。
【請求項8】
前記1つ又は複数の把持プロポーザルを、前記物体を含む環境に関連付けられるロボットに提供することと、
前記1つ又は複数の把持プロポーザルによって示される配向に少なくとも部分的に基づき、前記環境において前記ロボットに前記物体を把持させることと
をさらに含む、請求項7に記載の方法。
【請求項9】
点群及び前記複数の把持プロポーザルに少なくとも部分的に基づき、座標の前記セットを計算することと、
密度値のセットを計算するために、前記第1のニューラル・ネットワークを使用して、少なくとも座標の前記セットを処理することと、
密度値の前記セットに少なくとも部分的に基づき、前記1つ又は複数の把持プロポーザルを決定することと
をさらに含む、請求項7に記載の方法。
【請求項10】
前記入力画像の前記物体が、第1のカテゴリの物体であり、
前記第1のニューラル・ネットワーク及び前記第2のニューラル・ネットワークが、1つ又は複数のカテゴリの物体を描写する1つ又は複数の画像に関連して訓練される、請求項7に記載の方法。
【請求項11】
前記複数の把持プロポーザルに関連付けられる1つ又は複数の密度値、及び閾値に少なくとも部分的に基づき、前記1つ又は複数の把持プロポーザルを決定すること
をさらに含む、請求項7に記載の方法。
【請求項12】
1つ又は複数の勾配降下プロセスを通じて、前記潜在コードを計算すること
をさらに含む、請求項7に記載の方法。
【請求項13】
非一時的なコンピュータ読取り可能媒体であって、コンピューティング・デバイスの少なくとも1つのプロセッサによって実行されると、前記コンピューティング・デバイスに、少なくとも
第1のニューラル・ネットワーク及び物体を描写する画像に少なくとも部分的に基づき、潜在コードを決定することと、
把持プロポーザルのセットを生成するために、少なくとも前記潜在コードを処理するために第2のニューラル・ネットワークを使用することと、
前記第1のニューラル・ネットワーク及び把持プロポーザルの前記セットに関連付けられる座標のセットに少なくとも部分的に基づき、把持プロポーザルの前記セットから把持プロポーザルのサブセットを選択することと
を行わせる命令を含む、非一時的なコンピュータ読取り可能媒体。
【請求項14】
前記コンピューティング・デバイスの少なくとも1つのプロセッサによって実行されると、前記コンピューティング・デバイスに、少なくとも
把持プロポーザルの前記セットの把持プロポーザルに少なくとも部分的に基づき、ロボットに関連付けられる点群を少なくとも変換することによって、座標の前記セットの1つ又は複数の座標を計算すること
を行わせるさらなる命令を含む、請求書13に記載の非一時的なコンピュータ読取り可能媒体。
【請求項15】
前記コンピューティング・デバイスの少なくとも1つのプロセッサによって実行されると、前記コンピューティング・デバイスに、少なくとも
把持プロポーザルの前記サブセットの把持プロポーザルに少なくとも部分的に基づき、ロボット部品に前記物体を把持させること
を行わせるさらなる命令を含む、請求項13に記載の非一時的なコンピュータ読取り可能媒体。
【請求項16】
前記コンピューティング・デバイスの少なくとも1つのプロセッサによって実行されると、前記コンピューティング・デバイスに、少なくとも
安定な把持の確率を示す1つ又は複数のスコアに少なくとも部分的に基づき、把持プロポーザルの前記セットから把持プロポーザルの前記サブセットを選択すること
を行わせるさらなる命令を含む、請求項13に記載の非一時的なコンピュータ読取り可能媒体。
【請求項17】
前記第1のニューラル・ネットワークの1つ又は複数の層が、前記第2のニューラル・ネットワークの1つ又は複数の層と同一パラメータを含む、請求項13に記載の非一時的なコンピュータ読取り可能媒体。
【請求項18】
把持プロポーザルの前記セットの第1の把持プロポーザルが、少なくともスコア及び回転行列を含む、請求項13に記載の非一時的なコンピュータ読取り可能媒体。
【請求項19】
前記コンピューティング・デバイスの少なくとも1つのプロセッサによって実行されると、前記コンピューティング・デバイスに、少なくとも
前記第1のニューラル・ネットワーク及び前記潜在コードを使用して1つ又は複数の画像を生成することと、
前記物体を描写する前記画像及び前記1つ又は複数の画像に少なくとも部分的に基づき、少なくとも損失を計算することによって、前記潜在コードを更新することと
を行わせるさらなる命令を含む、請求項13に記載の非一時的なコンピュータ読取り可能媒体。
【請求項20】
前記コンピューティング・デバイスの少なくとも1つのプロセッサによって実行されると、前記コンピューティング・デバイスに、少なくとも
1つ又は複数のグラフィックス・プロセッシング・ユニット(GPU)を使用して把持プロポーザルの前記セットを生成すること
を行わせるさらなる命令を含む、請求項13に記載の非一時的なコンピュータ読取り可能媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2022年9月29日に提出された「GRASP POSE PREDICTION」と題される米国仮特許出願第63/411,486号の利益を主張するものであり、その内容全体は参照により本明細書に組み込まれる。
【背景技術】
【0002】
ボットが物体を把持するための把持プロポーザルに関する。
【発明の概要】
【課題を解決するための手段】
【0003】
少なくとも一実施例は、ロボットが物体を把持するための把持プロポーザルを生成することに関する。たとえば、少なくとも一実施例は、本明細書に記載の様々な新規な技法により、ロボットが物体を把持するための把持プロポーザルを生成することに関する。
【0004】
ロボットが物体を把持するための把持プロポーザルを生成することは、多様なコンテキストにおいて重要なタスクである。把持プロポーザルを生成することには、複雑な物体などでは、かなりのコンピューティング・リソースの使用が伴う可能性がある。把持プロポーザルを生成するために使用されるメモリ、時間、又はコンピューティング・リソースの量は、改善することができる。
【図面の簡単な説明】
【0005】
図1】少なくとも一実施例による、把持プロポーザルを生成するシステムの実例の図である。
図2】少なくとも一実施例による、ロボット及び物体の実例の図である。
図3】少なくとも一実施例による、ロボティクス物体操作システムの概観の実例の図である。
図4】少なくとも一実施例による、把持姿勢を生成する実例の図である。
図5】少なくとも一実施例による、把持プロポーザルを生成するプロセスの実例の図である。
図6】少なくとも一実施例による、プロセッサの実例の図である。
図7A】少なくとも一実施例による、論理を示す図である。
図7B】少なくとも一実施例による、論理を示す図である。
図8】少なくとも一実施例による、ニューラル・ネットワークの訓練及び導入を示す図である。
図9】少なくとも一実施例による、実例データ・センタ・システムを示す図である。
図10A】少なくとも一実施例による、自律車両の実例を示す図である。
図10B】少なくとも一実施例による、図10Aの自律車両のカメラのロケーション及び視野の実例を示す図である。
図10C】少なくとも一実施例による、図10Aの自律車両の実例システム・アーキテクチャを示すブロック図である。
図10D】少なくとも一実施例による、クラウド・ベースのサーバと図10Aの自律車両との間の通信のためのシステムを示す図である。
図11】少なくとも一実施例による、コンピュータ・システムを示すブロック図である。
図12】少なくとも一実施例による、コンピュータ・システムを示すブロック図である。
図13】少なくとも一実施例による、コンピュータ・システムを示す図である。
図14】少なくとも一実施例による、コンピュータ・システムを示す図である。
図15A】少なくとも一実施例による、コンピュータ・システムを示す図である。
図15B】少なくとも一実施例による、コンピュータ・システムを示す図である。
図15C】少なくとも一実施例による、コンピュータ・システムを示す図である。
図15D】少なくとも一実施例による、コンピュータ・システムを示す図である。
図15E】少なくとも一実施例による、共有プログラミング・モデルを示す図である。
図15F】少なくとも一実施例による、共有プログラミング・モデルを示す図である。
図16】少なくとも一実施例による、例示的な集積回路及び関連するグラフィックス・プロセッサを示す図である。
図17A】少なくとも一実施例による、例示的な集積回路及び関連グラフィックス・プロセッサを示す図である。
図17B】少なくとも一実施例による、例示的な集積回路及び関連グラフィックス・プロセッサを示す図である。
図18A】少なくとも一実施例による、追加の例示的グラフィックス・プロセッサ論理を示す図である。
図18B】少なくとも一実施例による、追加の例示的グラフィックス・プロセッサ論理を示す図である。
図19】少なくとも一実施例による、コンピュータ・システムを示す図である。
図20A】少なくとも一実施例による、並列プロセッサを示す図である。
図20B】少なくとも一実施例による、パーティション・ユニットを示す図である。
図20C】少なくとも一実施例による、処理クラスタを示す図である。
図20D】少なくとも一実施例による、グラフィックス・マルチプロセッサを示す図である。
図21】少なくとも一実施例による、マルチ・グラフィックス・プロセッシング・ユニット(GPU:graphics processing unit)システムを示す図である。
図22】少なくとも一実施例による、グラフィックス・プロセッサを示す図である。
図23】少なくとも一実施例による、プロセッサ用のプロセッサ・マイクロ・アーキテクチャを示すブロック図である。
図24】少なくとも一実施例による、深層学習アプリケーション・プロセッサを示す図である。
図25】少なくとも一実施例による、実例ニューロモーフィック・プロセッサを示すブロック図である。
図26】1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
図27】1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
図28】1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
図29】少なくとも一実施例によるグラフィックス・プロセッサのグラフィックス処理エンジンのブロック図である。
図30】少なくとも一実施例による、グラフィックス・プロセッサ・コアの少なくとも一部分のブロック図である。
図31A】少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理を示す図である。
図31B】少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理を示す図である。
図32】少なくとも一実施例による、並列処理ユニット(「PPU」:parallel processing unit)を示す図である。
図33】少なくとも一実施例による、汎用処理クラスタ(「GPC」:general processing cluster)を示す図である。
図34】少なくとも一実施例による、並列処理ユニット(「PPU」)のメモリ・パーティション・ユニットを示す図である。
図35】少なくとも一実施例による、ストリーミング・マルチプロセッサを示す図である。
図36】少なくとも一実施例による、先進コンピューティング・パイプラインのための実例データ・フロー図である。
図37】少なくとも一実施例による、先進コンピューティング・パイプラインにおいて機械学習モデルを訓練、適応、インスタンス化、及び導入するための実例システムのシステム図である。
図38】少なくとも一実施例による、撮像データを処理するための先進コンピューティング・パイプライン3710Aの実例を含む図である。
図39A】少なくとも一実施例による、超音波デバイスをサポートする仮想器具の実例データ・フロー図を含む図である。
図39B】少なくとも一実施例による、CTスキャナをサポートする仮想器具の実例データ・フロー図を含む図である。
図40A】少なくとも一実施例による、機械学習モデルを訓練するためのプロセスのデータ・フロー図である。
図40B】少なくとも一実施例による、事前訓練済みアノテーション・モデルを用いてアノテーション・ツールを拡張するためのクライアント・サーバ・アーキテクチャの実例を示す図である。
【発明を実施するための形態】
【0006】
一実施例では、システムは、物体レンダリング、3D再構築、及び単一画像から推論され得る把持姿勢予測のための表現を利用する。システムは、多様なニューラル輝度場(NeRF:neural radiance field)を利用することができ、新規な物体に対して最小データ及び時間でカテゴリレベルの事前設定(prior)及び微調整を利用することができる。システムは、コンパクトな形状表現を利用して、そこから把持姿勢などの追加的な情報を抽出することができる。システムは、単一視点(たとえば、RGBのみ)を使用して、NeRFベースの表現から把持姿勢を直接検索することができる。システムは、物体再構築及び単一RGB観察から把持姿勢を回帰することなど、多様なタスクに適用することが可能な表現を利用することができる。
【0007】
一実施例では、ロボティクス物体操作のためのニューラル・フィールド・システム(NiFR)とも称されるシステムは、ロボットのシステムなど1つ又は複数の他のシステムに関連して利用される際、入力として基本的な物体アノテーション(たとえば、物体姿勢及びボリューム)を有する単一画像を得て、シーンを再編集して(たとえば、物体の見えないビューをレンダリングする)その物体用の把持姿勢を検索するために利用することが可能な、物体の潜在コードを計算する。一実施例では、NeRFは、ユークリッド空間での座標と方向ベクトルを、2つのスカラ量である、色と密度にマッピングする、ニューラル・ネットワークによってパラメータ化された機能である。NeRFは、レイに沿った座標で照会し、あらゆる視点からシーンの画像をレンダリングすることができる。システムは、各物体に、本明細書に記載のような多様な最適化プロセスを通じて計算され得る潜在コードを割り当てることによって、シーンを表現することができる。システムは、物体潜在コードから把持を直接生成することができる。
【0008】
システムは、シーンを再レンダリングして把持姿勢を生成するために使用することが可能な表現を利用することができる。一実施例では、物体姿勢、ボリューム、及び学習された潜在コードが与えられると、システムはシーンを新規な構成でレンダリングして、各物体に把持姿勢をアノテーション付けする。把持を生成するために、システムは、各物体ボリュームをカバーするグリッド・サンプリング手法を利用することができる。システムは、デコーダを使用して把持配向及びスコアを予測することができる。システムは、最高信頼スコアをもたらす把持点を利用することができる。
【0009】
図1は、少なくとも一実施例による、把持プロポーザルを生成するシステムの実例100を図示する。システムは、本明細書に記載のシステムに従うことができる。システムは、輝度場デコーダを利用することができる逆レンダラ104及び把持デコーダ110、並びに図1で図示され得ない多様な他のコンポーネントを含むことができる。システムは、把持プロポーザル112を生成するために入力画像102を処理することができる。システムは、把持プロポーザル112の把持プロポーザルを選択して、多様なプロセスに関連してその把持プロポーザルを利用することができる。
【0010】
少なくとも一実施例では、システムは、命令を伴ったハードウェア及び/又はソフトウェア・コンピューティング・リソースの集合であり、命令は実行されると、図1図6に関連して説明されるような1つ又は複数のプロセスを実行させる。少なくとも一実施例では、システムは、ロボット・システム、コンピュータ・ビジョン・システム、及び/又はその変形に関連するシステムなど、任意の好適なシステム及び/又はシステムの集合の一部である。少なくとも一実施例では、システムは、コンピュータ・ハードウェアで実行することができるソフトウェア・プログラム、アプリケーション、又はモジュールである。一実施例では、システムは、本明細書に記載のプロセスなど、1つ又は複数のプロセスを、1つ又は複数のシステム及び/又は処理ユニットによって命令を少なくとも実行させることによって、実行する。
【0011】
少なくとも一実施例では、システムの1つ又は複数のプロセスは、Compute Unified Device Architecture(CUDA)モデル、Heterogeneous compute Interface for Portability(HIP)モデル、oneAPIモデル、多様なハードウェア・アクセラレータ・プログラミング・モデル、及び/又はそれらの変形などの1つ又は複数のプログラミング・モデルのシステムなど、任意の好適なシステム及び/又はシステムの集合によって実行される。少なくとも一実施例では、システムの1つ又は複数のプロセスは、TensorFlow、Boost、Caffe、マイクロソフトCognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j、及び/又はそれらの変形など、任意の好適な機械学習及び/又はニューラル・ネットワーク・フレームワークと関連して実行される。少なくとも一実施例では、システムの1つ又は複数のプロセスは、任意の好適な処理ユニット及び/又は処理ユニットの組合せ、たとえば1つ又は複数の中央処理装置(CPU:central processing unit)、並列処理ユニット(PPU)、グラフィックス・プロセッシング・ユニット(GPU)、汎用GPU(GPGPU:general purpose GPU)、及び/又は任意の好適な処理ユニットなどを使用して実行される。少なくとも一実施例では、システムは、図6に関連して説明されるようなプロセッサ及び/又は複数のプロセッサと関連して実行される。いくつかの実例では、システムは、システムの1つ又は複数のプロセスを実行するために1つ又は複数の回路と関連して実装される。
【0012】
システムは、入力画像102を得ることができる。入力画像102は、任意の好適なシステム及び/又はシステムの集合から、たとえばコンピュータ・ビジョン・システム、ロボット・システム、画像及び/若しくはビデオ・キャプチャ・システム、並びに/又はその変形などから、得ることができる。入力画像102は、ビデオのフレームであってもよい。入力画像102は、合成して生成された画像であってもよい。入力画像102は、任意の好適なファイル・フォーマット又は表現と関連して実装されてもよい。入力画像102は、シーンとも称される、ある環境内にある1つ又は複数の物体を描写することができる。いくつかの実例では、システムはロボットに関連付けられ、そのロボットにおいて、システムは、ロボット及び/又は1つ若しくは複数の物体を含み得るシーンに関連する画像及び/又はビデオ・キャプチャ・システムから、入力画像102を得る。ロボットは、1つ又は複数の物体を把持するために利用され得る、グリッパなどのロボット部品を含むことができる。システムは、物体潜在コード106を計算するために、逆レンダラ104と関連して、入力画像102を処理する。
【0013】
逆レンダラ104は、1つ又は複数の潜在コードを計算又は生成するために利用され得るシステムのコンポーネントであってもよい。一実施例では、逆レンダラ104は、システムの一部であるか、又は他のやり方でシステムに関連付けられる、ソフトウェア・プログラム、アプリケーション、システム、又はモジュールである。本明細書に記載のプロセスなど、逆レンダラ104の1つ又は複数のプロセスは、システムによって任意の好適なやり方で、また任意の好適な処理ユニットと関連して実行されてもよい。いくつかの実例では、逆レンダラ104は、1セットの命令として実装され得、システムによって実行又は他のやり方で利用され得る、1セットのプロセスである。逆レンダラ104は、物体潜在コード106を生成するために、入力画像102を処理することができる。逆レンダラ104は、輝度場デコーダを利用することができ、これは画像を生成するために利用され得る任意の好適な機械学習モデル・コンポーネントであってもよい。輝度場デコーダは、輝度場デコーダの構造、構成、及び/又は他の情報をエンコードする1つ又は複数のデータ構造を通じてなど、任意の好適なやり方で実装することができる。一実施例では、輝度場デコーダは、システムの一部であるか、又は他のやり方でシステムに関連付けられる、ソフトウェア・プログラム、アプリケーション、システム、又はモジュールである。輝度場デコーダは、物体潜在コードを利用してもよい。本明細書に記載のような物体潜在コードは、1つ若しくは複数のベクトルなどの1セットの値であってもよいし、又は画像中に描写される物体に対応し得る、若しくは他のやり方で物体を示し得る、1つ若しくは複数の値の任意の好適な表現であってもよい。輝度場デコーダは、それ自体が、1つ又は複数の物体潜在コードを生成するために利用され得る。一実施例では、輝度場デコーダは、1つ又は複数の物体潜在コードを生成するために(たとえば逆レンダラ104による)逆レンダリング・プロセスにおいて使用される。
【0014】
ニューラル輝度場デコーダとも称される輝度場デコーダは、物体潜在コードを生成することができる1つ又は複数のシステムから、物体潜在コードを得ることができる。逆レンダラ104は、物体潜在コードを生成することができる。物体潜在コードは、他の物体潜在コードに基づいて、以前に処理された物体潜在コードに基づいて、及び/又はその変形で、ランダムに生成される場合がある。輝度場デコーダは、少なくとも物体潜在コード、(たとえば、物体及び/又はシーンにおける場所に相当する)1つ又は複数の座標、及びビュー方向を処理することができ、ビュー方向を基準とした1つ又は複数の座標における密度及び/又は色の、1つ又は複数の予測を出力することができる。本明細書に記載のような座標又は座標値は、三次元(3D)座標値、二次元(2D)座標値、及び/又はその変形など、任意の好適な1つ又は複数の座標値を指すことがあり、これらは任意の好適な3D若しくは2D座標、又は画像及び/若しくはシーンの基準平面を基準とすることができる。
【0015】
逆レンダラ104は、画像を生成するために、密度及び/又は色の1つ又は複数の予測を利用することができる。説明的な実例として、逆レンダラ104は、密度及び/又は色の1つ又は複数の予測、並びにボリューメトリック・レンダリング方程式など任意の好適なレンダリング方程式及び/又は数式に少なくとも部分的に基づき、画像のピクセルを生成する。逆レンダラ104は、物体潜在コードを更新するために、画像と入力画像102とを、1つ又は複数の関数を通じて比較することができる。逆レンダラ104は、画像と入力画像102との差異を計算するために画像と入力画像102とを比較することができ、本明細書に記載のような1つ又は複数のプロセスを通じて、その差異に少なくとも部分的に基づき、物体潜在コードを更新することができる。差異は、本明細書に記載のような1つ又は複数の関数を通じて計算することができる。逆レンダラ104は、画像を生成するために輝度場デコーダに物体潜在コードを処理させるか、又は他のやり方でそのために輝度場デコーダを使用することができ、少なくとも部分的に、所定数であり得る任意の好適な反復数で生成された画像及び入力画像102に基づき、又は任意の好適な1つ若しくは複数の関数若しくはメトリクスに基づき、物体潜在コードを更新することができる。
【0016】
逆レンダラ104は、輝度場デコーダと関連して物体潜在コード106を計算又は他のやり方で決定することができる。物体潜在コード106は、輝度場デコーダ及び/又は逆レンダラ104と関連して1つ又は複数のプロセスを通じて更新された、本明細書に記載の物体潜在コードであってもよい。物体潜在コード106は、入力画像102中に描写される特定の物体に相当してもよいし、そのような物体を表現、又は他のやり方で示すことができる。一実施例では、システムは、シーンSにおけるM個の物体のそれぞれをタプルo=(P,V,f)を用いて表現する。ただし、Pは、6D物体姿勢であり、Vは3D物体バウンディング・ボリュームであり、fは、学習された物体潜在コードである(たとえば、物体潜在コード106)。一実施例では、fは物体の形状、外観、及び把持姿勢をエンコードし、Vは高速レイ-ボリューム交差チェックをサポートする、球体又は配向したボックスなどの単純なボリュームである。物体は、単一のワールド・ノードを用いて平坦なシーン・グラフを形成することができ、このノードは個々の物体姿勢に対して直接的な制御を可能にして物体再配置の際シーンについての可視化又は理由付けをサポートすることができ、またこのノードは、様々な物体検出及び追跡タスクに関連し、多様なコンピュータ・ビジョン・システムと関連して利用することができる。
【0017】
システムは、ボリューメトリック・レンダリング及びロボット操作のための6DOF把持の予測などの様々なタスクを実行するために、物体潜在コード106をニューラル・ネットワーク・ベースのデコーダに入力することができる。ボリューメトリック・レンダリングでは、システムは、Ψと表され得るニューラル輝度場デコーダを利用することができる。把持を予測するには、システムは、Φと表され得る把持デコーダ110を利用することができる。2つのデコーダは、その最初の2層のパラメータを共有することができる。システムは、操作対象となり得る物体o=(P,V,f)に対して安定な把持を予測するために、把持デコーダ110を利用することができる。把持予測プロセスは、把持プロポーザル工程とフィルタリング工程を含むことができる。一実施例では、把持プロポーザル工程は、シーン表現を直接処理するニューラル・ネットワークΦ(たとえば、把持デコーダ110)と関連して実行され、フィルタリング工程は、輝度場デコーダΨの出力と関連して実行される。
【0018】
把持デコーダ110は、把持プロポーザルを生成することができる、任意の好適な機械学習モデル・コンポーネントであることができる。把持デコーダ110は、把持デコーダ110の構造、構成、及び/又は他の情報をエンコードする1つ又は複数のデータ構造を通じてなど、任意の好適なやり方で実装されてもよい。一実施例では、把持デコーダ110は、システムの一部であるか、又は他のやり方でシステムに関連付けられるソフトウェア・プログラム、アプリケーション、システム、又はモジュールである。把持デコーダ110は、把持プロポーザルを生成することができる。本明細書に記載のような把持プロポーザルは、特定の把持構成又はグリッパなどロボット部品の配向を示すデータを指すことができ、この場合ロボット部品は、特定の把持構成又は配向に従って(たとえば、ロボット部品に関連する1つ又は複数のシステムによって)構成又は配向されて、物体を把持することができる。把持プロポーザルは、把持スコアとも称される値を示すことができるか、又は他のやり方でこの値に関連付けることができ、この把持スコアは、把持プロポーザルによって示された特定の把持構成又は配向が、物体を把持するロボット部品と関連して利用された場合、物体の把持の成功又は安定した把持をもたらす確率を示す。把持プロポーザルは、1つ又は複数の(たとえば、物体の場所に対応する)座標値を示すことができるか、又は他のやり方でこのような座標値に関連付けられてもよい。把持プロポーザルは、任意の好適なデータ、データ構造、及び/又はその変形と関連して実装されてもよい。
【0019】
システムは、入力画像102中で描写される特定の物体の1つ又は複数の場所に相当する、1つ又は複数の座標値を示すデータであることができる、座標108を生成することができる。1つ又は複数の場所は、(たとえば、ロボット部品によって)特定の物体を把持するために利用することができる、特定の物体上の又はその近くの任意の好適な場所であってもよい。一実施例では、システムは、把持デコーダ110Φに入力として、3D座標
【数1】

(たとえば、座標108)、及びシーン中で物体oを表現する潜在コードf(たとえば、物体潜在コード106)を提供する。把持デコーダ110は、把持スコアS及び回転行列Rを予測することができる。一実施例では、入力座標
【数2】

(たとえば、座標108)は、物体関連の基準フレームPである。スコアSは、座標
【数3】

において安定な把持が存在する確率を示すことができる。Rは、把持グリッパ配向を示すことができる、又は他のやり方でそれを表現することができる、3×3回転行列であることができる一実施例では、
【数4】

が直交行列である(たとえば、純粋な回転をモデル化する)ことを保証するために、ニューラル・ネットワークは、2つの三次元ベクトルa及び
【数5】

を出力する。いくつかの実例では、システムは、回転行列R=[b a×b a]を生成することができる。ただし、
【数6】

であり、aはグリッパ・アプローチ・ベクトルであり、bはグリッパ左をポイントするベクトルである。
【0020】
システムは、把持プロポーザル112を生成するために、少なくとも物体潜在コード106及び座標108を把持デコーダ110に処理させることができるか、又は処理するために他のやり方で把持デコーダ110を使用することができる。システムは、6D物体姿勢及び/若しくは入力画像102中の物体に対応する3D物体バウンディング・ボリュームを、把持デコーダ110に処理させることができるか、又は処理するために他のやり方で把持デコーダ110を使用することができる。システムは、1つ若しくは複数のコンピュータ・ビジョン・システム、関数、アルゴリズム、並びに/又は任意の好適なシステム、関数、及び/若しくはアルゴリズムと関連して、6D物体姿勢及び/又は3D物体バウンディング・ボリュームを得ることができるか、又は他のやり方で生成することができる。把持プロポーザル112は、1つ又は複数の把持プロポーザルの集合であってもよい。把持プロポーザル112は、それぞれが座標108の各座標値に相当する、1つ又は複数の把持プロポーザルを含むことができる。
【0021】
把持プロポーザルは、特定の把持構成若しくは配向及び/又は確率値を示すか、又は他のやり方で表現する、任意の好適なデータであることができる。把持プロポーザルは、少なくとも把持スコアS及び/又は回転行列Rを通じて、表現又は他のやり方で実装され得る。説明的な実例として、(たとえば、物体の)特定の座標値に対応する把持プロポーザルは、(たとえば、任意の好適なデータ及び/又はデータ構造を通じて実装又は他のやり方で表現することが可能な、回転行列Rを通じて)特定の把持構成又は配向、及び特定の座標値によって示される物体の場所においてロボット部品と関連して利用された場合に(たとえば、任意の好適なデータ及び/又はデータ構造を通じて実装又は他のやり方で表現することが可能な、把持スコアSを通じて)特定の把持構成又は配向が物体の安定な把持をもたらす確率を示す値を示すデータである。
【0022】
物体oに対する把持を予測するために、システムは、1セットの座標
【数7】

を、ボリュームV内で軸当たり固定分解能resの密な3Dグリッド上に生成することができる。システムは、それぞれがスコア
【数8】

、回転
【数9】

、及び入力位置
【数10】

を持つresの把持プロポーザルを得るようΦを照会することができ、その中からシステムは最高スコアを持つ上位K個のプロポーザルを利用することができる。一実施例では、システムは、誤った把持プロポーザルを却下するために、1つ又は複数のフィルタリング・プロセスを実行する。システムは、開グリッパ・メッシュが物体と衝突しないが閉グリッパ・メッシュが物体と衝突する把持のみを、利用することができる。システムは、輝度場デコーダΨを照会することによって、物体-グリッパ衝突を計算することができる。システムは、各グリッパ・メッシュを、メッシュの表面において、1000のランダムにサンプリングされた点、又は任意の好適な数の点の点群として表現することができる。システムは、点群を把持姿勢
【数11】

に従って変形させ、変形した点ごとに、密度σで輝度場デコーダを照会することができる。システムは、1000の点、又は任意の好適な数の点全体の合計密度が、開グリッパの任意の好適な値であり得る閾値Topenを下回り、且つ閉グリッパの任意の好適な値であり得る閾値Tclosedを上回る把持のみを利用することができる。
【0023】
システムは、把持プロポーザル112と関連して本明細書に記載のような、1つ又は複数のフィルタリング・プロセスを実行することができる。システムは、把持プロポーザル112のうち、任意の好適な値であり得る(たとえば、把持スコアによって示される)特定の数の最高又は最大スコアリングの把持プロポーザルを含む1つ又は複数の把持プロポーザルを決定することができ、把持プロポーザル112のうち残りの把持プロポーザルを削除又は他のやり方で除去することができる。システムは、把持プロポーザル112のうち、任意の好適な値であり得る特定の閾値を上回る把持スコアを持つ把持プロポーザルを計算することができ、把持プロポーザル112のうち他の把持プロポーザルを削除又は他のやり方で除去することができる。システムは、ロボット部品と関連して利用された場合に、把持プロポーザル112のうち、開把持構成は物体と衝突しないが、閉把持構成は物体と衝突する把持をもたらす把持プロポーザルを計算することができ、把持プロポーザル112のうち他の把持プロポーザルを削除又は他のやり方で除去することができる。
【0024】
システムは、点群などのロボット部品の表現、又は他の好適な表現を生成することができる。把持プロポーザル112の把持プロポーザルごとに、システムは、把持プロポーザルによって示される特定の把持構成又は配向に従うように表現を(たとえば、構成、又は配向することによって)変形することができる。次いで、システムは、把持プロポーザルが開把持構成にあるロボット部品に関連して利用された場合に、物体との衝突をもたらさないかどうか、及び/又は把持プロポーザルが閉把持構成にあるロボット部品に関連して利用された場合に、物体との衝突をもたらすかどうかを計算するために、少なくとも1つ又は複数の3D座標を、開把持構成及び/又は閉把持構成に変形された表現に対応する輝度場デコーダに入力することができる。いずれかの、又は両方の条件が満足されない場合(たとえば、把持プロポーザルが開把持構成にあるロボット部品に関連して利用された場合に、物体との衝突をもたらす、及び/又は把持プロポーザルが閉把持構成にあるロボット部品に関連して利用された場合に、物体との衝突をもたらさない)、システムは、その把持プロポーザルを利用しなくてもよく、把持プロポーザル112から把持プロポーザルを除去又は他のやり方で削除することができる。1つ又は複数の3D座標は、任意の好適な座標平面を基準とすることができる、変形された表現の場所又は点に対応することができる。開把持構成とは、ロボット部品が物体を把持することができる状態の、ロボット部品の構成を指すことができる(たとえば、ロボット部品がグリッパである場合、開把持構成は、開いたグリッパであることができる)。閉把持構成とは、ロボット部品が物体を把持することができる状態の、ロボット部品の構成を指すことができる(たとえば、ロボット部品がグリッパである場合、閉把持構成は、物体を把持するよう閉じたグリッパであることができる)。
【0025】
説明的な実例として、システムは、特定の把持プロポーザルに従ってロボット部品の表現を構成するか、又は他のやり方で配向する。実例をさらに続けると、特定の把持プロポーザルは、開把持構成にあるロボット部品と関連して利用された場合、構成された又は他のやり方で配向された表現の1つ又は複数の3D座標が開把持構成にあれば物体との衝突は生じず、輝度場デコーダと関連して処理されると、その1つ又は複数の3D座標において物体との衝突がない可能性があることを示し得る、任意の好適な値であり得る特定の閾値を下回る1つ又は複数の予測密度値をもたらす。実例をさらに続けると、特定の把持プロポーザルは、閉把持構成にあるロボット部品と関連して利用された場合、構成された又は他のやり方で配向された表現の1つ又は複数の3D座標が閉把持構成にあれば物体との衝突をもたらし、輝度場デコーダと関連して処理されると、その1つ又は複数の3D座標において物体との衝突があり得ることを示し得る、任意の好適な値であり得る特定の閾値を上回る1つ又は複数の予測密度値をもたらす。
【0026】
システムは、把持プロポーザル112を、ロボットに関連付けられる1つ又は複数のシステムに提供することができる。システムは、ロボット及びロボット部品(たとえば、グリッパ)に関連して、把持プロポーザル112を利用することができる。システムは、物体を把持するためにロボット部品と関連して1つ又は複数の把持プロポーザルをロボットが利用することができるように、把持プロポーザル112の1つ又は複数の把持プロポーザルを、ロボットに関連付けられた1つ又は複数のシステムに提供することができる。いくつかの実例では、システムは、把持プロポーザル112の把持プロポーザル(たとえば、最高把持スコアを持つ把持プロポーザル)を選択して、把持プロポーザルを使用してロボット部品に物体を把持させる。ロボット及び把持プロポーザルに関するさらなる情報は、図2の説明から分かる。
【0027】
システムの1つ又は複数のコンポーネント(たとえば、輝度場デコーダ及び/又は把持デコーダ110)は、任意の好適なシステム又はフレームワーク、たとえばTensorFlow、Boost、Caffe、Microsoft Cognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j、及び/又はその変形などに関連するシステム又はフレームワークと関連して訓練されてもよい。一実施例では、システムの1つ又は複数のコンポーネント(たとえば、輝度場デコーダ及び/又は把持デコーダ110)は、NscenesシーンのデータセットDと関連して訓練されてもよく、このNscenesシーンでは、各シーンはグラウンド・トゥルース・シーン・グラフ(たとえば、物体ボリュームV及び姿勢Pを有する)、ランダムなカメラ姿勢からレンダリングされたNviewsグラウンド・トゥルース画像、並びに把持位置p、配向
【数12】

、及びスコア
【数13】

から構成される1セットの把持アノテーションを含み、各シーンは、高スコア及び低スコアのNgrasps把持アノテーションを有する。1つ又は複数のシステムは、物体ごとに別個の潜在fをランダムに初期化することができる。デコーダΦ及びΨは、シーン及び物体全体で共有されてもよく、このことにより、訓練ディストリビューション及び/又はカテゴリ内のあらゆる物体をデコードすることができるユニバーサルなデコーダを与えることができる。
【0028】
1つ又は複数のシステムは、NeRF再構築及び把持損失を、共同で最適化することができる。一実施例では、再構築損失Lrgbは、再構築画像とグラウンド・トゥルース画像との間のピクセルワイズの平均二乗誤差である。一実施例では、把持損失は、2つの項、すなわち把持スコア損失Lgscoreと回転損失Lgrotから構成される。この場合、予測された把持スコア及び回転S、R=Φ(p,f)が与えられると、把持スコア損失は
【数14】

であり、λはハイパーパラメータ<<1である。いくつかの実例では、位置pには複数の把持アノテーションが存在することができ、その一部は高スコアであり、一部は低スコアである。システムは、pにおける把持のいずれかが安定な場合、高把持スコアを予測することができ、これは重みλを使用して達成することができる。一実施例では、把持回転損失は、把持スコア
【数15】

によって重み付けされた、予測された回転とグラウンド・トゥルース回転との間の平均二乗誤差であり、この場合、損失は位置pにおける予測された回転を高スコアリングのアノテーションに類似するよう促し、低スコアリングのアノテーションを無視する。事前訓練の間、1つ又は複数のシステムは、RMSpropオプティマイザなどのオプティマイザ又は任意の好適なオプティマイザを使用して、データセットDに対してL=Lrgb+Lgscore+Lgrotを最適化することができる。システムは、大規模数の物体のために、マルチビュー画像のデータセットと関連して訓練されてもよい。
【0029】
一実施例では、システムは、本明細書に記載のような1つ又は複数のプロセスを通じて訓練されたユニバーサルなデコーダ(たとえば、輝度場デコーダ及び/又は把持デコーダ110)が与えられると、以前に見たことがない物体に遭遇すると、システムは、その物体を表現する新しい潜在コードを計算することができる。一実施例では、システムは、ランダムな潜在コードfを初期化し、勾配降下を使用して、デコーダΦとΨをフリーズさせたまま、それを最適化することができる。システムは、試験時には任意の把持アノテーションを想定しなくてもよい。システムは、単一画像(たとえば、入力画像102)に対して画像再構築損失Lrgbを少なくとも最適化することによって、潜在コードfを計算することができる。
【0030】
図2は、少なくとも一実施例による、ロボット及び物体の実例200を図示する。ロボット202、物体204、入力画像206、ロボティクス物体操作システム208、及び把持プロポーザル210は、図1に関連して説明したそれぞれに従ったものであってもよい。ロボット202及び物体204は、あるシーン中に存在し得る。シーンは、現実世界環境、シミュレート環境、及び/又はその変形など、任意の好適な環境であってもよい。ロボット202は、1つ又は複数の物体を把持するために利用され得るグリッパなど、任意の好適なロボット部品を含むことができる。説明的な実例として、図2を参照すると、ロボット202は、物体204を把持するために利用され得るグリッパである、ロボット部品を含む。物体204は、多様な物理的性質を有する任意の好適な構造の任意の好適な物体であることができる。説明的な実例として、図2を参照すると、物体204は、ボトル状の物体である。
【0031】
ロボティクス物体操作のためのニューラル・フィールド・システムとも称される、ロボティクス物体操作システム208は、図1に関連して説明されるシステムであってもよい。ロボティクス物体操作システム208は、ロボット202の一部であってもよいし、又は他のやり方でロボット202に関連付けられてもよい。少なくとも一実施例では、ロボティクス物体操作システム208は、コンピュータ・ハードウェアで実行することができるソフトウェア・プログラム、アプリケーション、又はモジュールである。ロボティクス物体操作システム208は、本明細書に記載のような多様なプロセスを通じて入力画像206を処理して把持プロポーザル210を生成するために利用され得るハードウェア及び/又はソフトウェアの、任意の好適な集合であってもよい。
【0032】
ロボティクス物体操作システム208は、入力画像206を得ることができる。入力画像206は、任意の好適なシステム及び/又はシステムの集合から、たとえばコンピュータ・ビジョン・システム、ロボット・システム、画像及び/若しくはビデオ・キャプチャ・システム、並びに/又はその変形などから得ることができ、これらのシステムはロボット202、シーン、及び/又はロボティクス物体操作システム208に関連付けることができる。入力画像206は、ビデオのフレームであってもよい。コンピュータ・ビジョン・システム、ロボット・システム、画像及び/若しくはビデオ・キャプチャ・システム、並びに/又はその変形は、シーンを処理して、入力画像206を生成又は他のやり方でキャプチャすることができる。入力画像206は、特定の時刻におけるロボット202及び/又は物体204を描写することができる。
【0033】
ロボティクス物体操作システム208は、把持プロポーザル210を生成するために、入力画像206を処理することができる。ロボティクス物体操作システム208は、物体204に対応する潜在コードを計算するために利用され得る、図1に関連して説明されるような輝度場デコーダを含むことができるか、又は他のやり方で実装することができる。ロボティクス物体操作システム208は、潜在コードを処理して把持プロポーザル210を生成するために利用され得る、図1に関連して説明されるような把持デコーダを含むことができるか、又は他のやり方で実装することができる。把持プロポーザルの生成に関するさらなる情報は、図1の説明から分かる。
【0034】
ロボティクス物体操作システム208は、把持プロポーザル210と関連して本明細書に記載のような、1つ又は複数のフィルタリング・プロセスを実行することができる。ロボティクス物体操作システム208は、ロボット202のロボット部品と関連して利用された場合に、開把持構成は物体204と衝突しないが、閉把持構成は物体204と衝突する把持をもたらす、把持プロポーザル210の把持プロポーザルを計算することができ、把持プロポーザル210の他の把持プロポーザルを削除又は他のやり方で除去することができる。ロボティクス物体操作システム208は、把持プロポーザル210のうち、開把持構成にあるロボット202のロボット部品と関連して利用された場合に、物体204との衝突をもたらす把持プロポーザル、及び/又は把持プロポーザル210のうち、閉把持構成にあるロボット202のロボット部品と関連して利用された場合に、物体204との衝突を生じない把持プロポーザルを、削除又は他のやり方で除去することができる。把持プロポーザルのフィルタリングに関するさらなる情報は、図1の説明から分かる。
【0035】
ロボティクス物体操作システム208は、把持プロポーザル210を、ロボット202及び/又はロボット202に関連付けられる1つ若しくは複数のシステムに提供することができる。ロボット202及び/又はロボット202に関連付けられる1つ若しくは複数のシステムは、把持プロポーザル210の把持プロポーザルを使用して、ロボット部品に物体204を把持させることができる。いくつかの実例では、ロボティクス物体操作システム208は、把持プロポーザルを使用してロボット部品に物体204を把持させる。把持プロポーザルは、把持プロポーザル210の把持スコアのうち、最高把持スコアに関連する把持プロポーザルであってもよい。把持プロポーザルは、把持プロポーザル210からランダムに選択されてもよい。把持プロポーザルは、把持プロポーザル210のうち残りの把持プロポーザルの任意の好適な把持プロポーザルであってもよい。ロボット部品は、物体204を把持するために把持プロポーザルによって示される特定の把持構成又は配向を少なくとも利用することによって、把持プロポーザルを使用して物体204を把持することができる。説明的な実例として、ロボット部品は、物体204を把持するために把持プロポーザルによって示される特定の把持構成又は配向に従って、構成又は他のやり方で配向することができる。いくつかの実例では、ロボット202のロボット部品は、把持プロポーザル210の任意の好適な把持プロポーザルであり得る把持プロポーザル210の1つ又は複数の把持プロポーザルを使用して、物体204の1つ又は複数の把持を試行又は他のやり方で実行することができる。
【0036】
図3は、少なくとも一実施例による、ロボティクス物体操作システムの概観の実例300を図示する。ロボティクス物体操作システムは、図1及び図2と関連して本明細書に記載のシステムなど、本明細書に記載のシステムに従っていることができ、図3に描写されるような1つ又は複数のコンポーネント及び/又はプロセスを含むことができるか、又は他のやり方で実装することができる。ロボティクス物体操作システムは、本明細書に記載のようなロボットと関連して利用することができる。ロボティクス物体操作システムは、入力として基本的な物体アノテーション(たとえば、物体姿勢及びボリューム)を有する単一画像を得ることができ、シーンを再編集して(たとえば、物体の見えないビューをレンダリングする)その物体用の把持姿勢を検索するために利用することが可能な、物体の潜在コードを計算することができる。
【0037】
ロボティクス物体操作システムは、シーンを再レンダリングして把持姿勢を生成するために利用することが可能な表現を利用することができる。説明的な実例として、図3を参照すると、(たとえば、左上部に描写される)物体姿勢、(たとえば、左上部に描写される)ボリューム、及び(たとえば、左下部に描写される)学習された潜在コードが与えられると、ロボティクス物体操作システムは、シーンを新規な構成でレンダリングして、各物体に把持姿勢をアノテーション付けする(たとえば、右側に描写される)。実例をさらに続けると、把持を生成するために、ロボティクス物体操作システムは、各物体ボリュームをカバーするグリッド・サンプリング手法を利用することができる。把持配向及びスコアは、ボリューメトリックなレンダリング・プロセスと部分的に共有され得るデコーダを使用して、予測することができる。ロボティクス物体操作システムは、最高信頼スコア(たとえば、把持スコア)をもたらす把持点を利用することができる。一実施例では、図3を参照すると、「FC」は、全結合層、又は任意の好適なニューラル・ネットワーク層を指す。
【0038】
ロボティクス物体操作システムは、適当なCUDAアクセラレーションを用いてPyTorch上で構築され得るWISPフレームワークなど、任意の好適なフレームワークと関連して訓練されてもよい。ロボティクス物体操作システムは、多様なCUDAレイ・トレーシング・アクセラレーション・プロセスを利用することができる。ロボティクス物体操作システムの1つ又は複数のコンポーネントを訓練することは、任意の好適な処理ユニットと関連して、任意の好適な時間、たとえば約12時間で8つのNVIDIA v100GPUなどを実行することができる。ロボティクス物体操作システムは、任意の好適な処理ユニット及び/又はイメージング・ハードウェア、たとえばRealSenseカメラを伴ったNVIDIA Titan Xpなどと関連して利用することができる。一実施例では、学習された物体潜在コードは、32次元であり、MLPデコーダは、共有バックボーンに次元128の2つの隠れ層、及びデコーディング・ヘッドのそれぞれにさらなる2層を有するが、これらの値は任意の好適な値であることができる。
【0039】
ロボティクス物体操作システムは、1つ又は複数のシステムと関連して生成された訓練データセットと関連して、訓練することができる。データセットは、あるクラス又はカテゴリ(たとえば、靴、又は任意の好適なクラス/カテゴリの物体)内の複数の物体の多様なシーンの画像を含むことができ、これらは自己交差することなく配置することができ、たくさんの角度から見ることができる。訓練データセットは、任意の好適なデータセットからの3Dモデルを利用することができる。一実施例では、1つ又は複数のシステムは、ピクセル当たり2000サンプル、又は任意の好適なサンプル数を有する、800×800又は任意の好適な分解能のピクセル画像をレンダリングするために、NViSIIなどのレイ・トレースされたレンダラ、又は任意の好適なレンダラを利用することができる。説明的な実例として、データセット中の靴それぞれについて、1つ又は複数のシステムは、原点から固定距離において360ビュー球体からサンプリングされた400のランダムなビューをレンダリングするが、これらの値は任意の好適な値であることができる。実例をさらに続けると、これらのレンダリングに付随して、1つ又は複数のシステムは、3~5の靴がテーブル上に落ちている32のシーンを生成するが、これらの値は任意の好適な値であることができる。これらのシーンのそれぞれについて、1つ又は複数のシステムは、400又は任意の好適な数のビューを、シーンの原点から固定距離にある半球から、ランダムに選択することができる。
【0040】
一実施例では、データセット内の各靴について、1つ又は複数のシステムは、6~8cm幅のグリッパ、又は任意の好適なグリッパのための把持姿勢を、品質スコアとともに含む。1つ又は複数のシステムは、衝突がなく、アウトサイド・インから達成可能な手法を用いて、訓練物体点群に対して一様に把持位置をサンプリングすることができる。一実施例では、把持品質スコアS∈[0,1]を識別するために、把持gごとに、1つ又は複数のシステムは、N試行を実施して(たとえば、N=50、又は任意の好適な数)、Pybullet又は任意の好適な物理学エンジン若しくはシミュレータで成功する数を計算する。一実施例では、成功は、PyBulletライブラリ、又は任意の好適なライブラリ、物理学エンジン、及び/又はシミュレータを用いた物理シミュレーションの間、その把持姿勢
【数16】

に対するランダムな力(たとえば、5mm未満、5°の大きさ、又は任意の好適な値)による揺乱後に物体がグリッパ・ハンドに留まることとして定義される。一実施例では、把持スコアは、次のように計算することができる:
【数17】

ただし、Γ(・)は、把持成功についての物理シミュレーション・バイナリ結果を表現し、Δξは、各試行におけるランダムな把持姿勢揺乱である。一実施例では、ロバストな把持姿勢は、SE(3)においてその近傍周りで一貫して安定でなければならず、このことは連続的な把持品質スコアを取得するために有効であり得る。
【0041】
図4は、少なくとも一実施例による、把持姿勢を生成する実例400を図示する。一実施例では、図4を参照すると、「NiFR」は、図1図3に関連して説明されるようなシステムなど、本明細書に記載のロボティクス物体操作システムを表し得る。システムは、ロボットに関して校正された画像を処理することができる。システムは、画像からの物体姿勢及び寸法を利用することができ、これらは、CenterPose及び/又はその変形など、任意の好適なシステム又はアルゴリズムを使用して計算することができる。物体(たとえば、靴)を再構築できるようにするために、システムは、ViLDなどのマスキング・アルゴリズム、及び/又は任意の好適なアルゴリズムを利用することができる。システムは、マスクされたRGB画像、物体姿勢、及びボリュームを利用することができる。システムは、物体のための好適な潜在コードを最適化するために、本明細書に記載のような1つ又は複数のプロセスを通じて、逆レンダリングを実施することができる。一実施例では、システムは、物体を異なる姿勢で再構築して、有効な3D再構築を生成し、把持姿勢を見つけることができる(たとえば、図4ではBaxterのグリッパが参照されて描写されるが、任意の好適なグリッパ又はロボット部品を利用することができる)。
【0042】
システムは、図4と関連して描写されるような、多様な現実世界のロボティクス・システムと関連して、利用することができる。システムは、物体姿勢P及びボリュームVを単一RGB画像から計算するために、CenterPose及び/又はその変形など、任意の好適なシステム又はアルゴリズムを利用することができる。システムは、どの物体とも交差しないレイをマスク除去するために、ViLDなどの任意テキストの(open-vocabulary)物体検出器、及び/又は任意の好適なシステム若しくはアルゴリズムを使用して、物体のインスタンス・セグメンテーション・マスクを計算することができるシステムは、物体oごとに潜在コードfを最適化又は他のやり方で計算するために、本明細書に記載のような1つ又は複数のプロセスを通じて微調整を実施して、完全なシーン表現Sを得ることができる。システムは、多様なCUDAアクセラレーション・プロセスを利用することができる。一実施例では、説明的な実例として、任意の好適なロボット及び/又はロボティック・システムが利用され得るが、システムと関連して、Baxterロボットは、2回以内の把持試行で、スニーカ(たとえば、図4に関連して描写される)、ヒール付きブーツ、及び/又はその変形など、単一のRGB画像から複数の多様な物体をうまく把持できる場合がある。
【0043】
図5は、少なくとも一実施例による、把持プロポーザルを生成するプロセス500の実例を図示する。少なくとも一実施例では、プロセス500の一部又はすべて(又は本明細書に記載の任意の他のプロセス、又はその変形及び/若しくは組合せ)は、コンピュータ実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実行され、1つ又は複数のプロセッサ上で、ハードウェア、ソフトウェア、又はそれらの組合せによって集合的に実行されるコード(たとえば、コンピュータ実行可能な命令、1つ若しくは複数のコンピュータ・プログラム、又は1つ若しくは複数のアプリケーション)として実装される。少なくとも一実施例では、コードは、1つ又は複数のプロセッサによって実行可能な複数のコンピュータ読取り可能命令を含むコンピュータ・プログラムの形で、コンピュータ読取り可能ストレージ媒体に記憶される。少なくとも一実施例では、コンピュータ読取り可能ストレージ媒体は、非一時的なコンピュータ読取り可能媒体である。少なくとも一実施例では、プロセス500を実行するために使用可能な少なくともいくつかのコンピュータ読取り可能命令は、一時的な信号(たとえば、伝播する一時的な電気又は電磁伝送)のみを使用して記憶されない。少なくとも一実施例では、非一時的なコンピュータ読取り可能媒体は、必ずしも一時的な信号の送受信機内に非一時的なデータ・ストレージ回路(たとえば、バッファ、キャッシュ、及びキュー)を含むとは限らない。
【0044】
少なくとも一実施例では、プロセス500は、本開示において説明されるような1つ又は複数のシステムによって実行される。少なくとも一実施例では、プロセス500は、図1図4に関連して説明されるようなシステムによって実行される。少なくとも一実施例では、プロセス500は、1つ又は複数のプログラミング・モデル(たとえば、CUDA、HIP、oneAPI、及び/又はその変形)のシステムによって実行される。少なくとも一実施例では、プロセス500の1つ又は複数のプロセスは、順次、並列、及び/又はその変形を含め任意の好適な順序で、本明細書に記載のような任意の好適なシステムによって、またCPU、GPU、PPU、GPGPU、及び/又はその変形などの任意の好適な処理ユニットを使用して、実行される。少なくとも一実施例では、プロセス500は、図7図40に関連して説明されるような1つ又は複数のシステムによって実行される。
【0045】
少なくとも一実施例では、プロセス500の少なくとも一部を実行するシステムは、物体を描写する画像を少なくとも得る502ための実行可能なコードを含む。画像は、入力画像と呼ばれてもよい。画像は、任意の好適なシステム及び/又はシステムの集合から、たとえばコンピュータ・ビジョン・システム、ロボット・システム、画像及び/若しくはビデオ・キャプチャ・システム、並びに/又はその変形などから得ることができる。画像は、シーン中で、又は他のやり方でシーンに関連して1つ又は複数のシステムから得ることができ、このシーンは、現実世界環境又はシミュレート環境など、任意の好適な環境を称することができる。画像は、ビデオのフレームであってもよい。画像は、シーン中の物体を描写することができる。物体は、シーン中に存在し得る、ロボットによって把持され得る任意の好適な物体であることができる。ロボットは、シーン中の物体を把持するためにロボットによって利用され得る、グリッパなどのロボット部品を含むことができる。いくつかの実施例では、画像の物体は、第1のカテゴリの物体であり、このカテゴリでは、第1のニューラル・ネットワーク及び第2のニューラル・ネットワークが、第1のカテゴリの物体を少なくとも描写する画像に関連して訓練される。
【0046】
少なくとも一実施例では、プロセス500の少なくとも一部を実行するシステムは、物体に対応する潜在コードを処理するために、第1のニューラル・ネットワークを少なくとも使用することによって画像の第1のセットを少なくとも生成する504ための実行可能コードを含む。物体潜在コードとも称される潜在コードは、1つ又は複数のベクトルなど、任意の好適な値の集合であってもよいし、画像中に描写される物体に対応し得る、そのような物体を表現し得る、又は他のやり方でそのような物体を示し得る、1つ又は複数の値の任意の好適な表現であってもよい。第1のニューラル・ネットワークは、図1図2及び本開示の他箇所に関連して説明されるような輝度場デコーダであってもよい。システムは、潜在コードを生成することができるか、又は1つ若しくは複数のシステムから潜在コードを得ることができる。潜在コードは、他の既知の潜在コードに基づいて、以前に生成された潜在コードに基づいて、及び/又は任意の好適なやり方で、ランダムに生成される場合がある。
【0047】
システムは、密度及び/又は色の予測の第1のセットを生成するために、第1のニューラル・ネットワークを使用して少なくとも潜在コードを処理することができ、密度及び/又は色の予測の第1のセットに基づいて画像の第1のセットの第1の画像を生成することができる。システムは、少なくとも、第1のニューラル・ネットワークを使用して潜在コードを処理すること、及び第1のニューラル・ネットワークの出力を計算することによって、第1のニューラル・ネットワークを使用することができ、この出力は密度及び/又は色の予測の第1のセットであってもよい。輝度場デコーダに関連して画像を生成することに関するさらなる情報は、図1の説明から分かる。システムは、密度及び/又は色の予測の第1のセットの密度及び/又は色の予測を処理して第1の画像を生成するために、ボリューメトリック・レンダリング方程式を利用することができる。
【0048】
少なくとも一実施例では、プロセス500の少なくとも一部を実行するシステムは、画像の第1のセット及び画像に少なくとも部分的に基づき、潜在コードを少なくとも更新する506ための、実行可能コードを含む。システムは、潜在コードを更新するために、第1の画像と画像とを、1つ又は複数の関数を通じて比較することができる。システムは、第1の画像と画像との差異を計算するために第1の画像と画像とを比較することができ、本明細書に記載のような1つ又は複数のプロセスを通じて、その差異に少なくとも部分的に基づき、潜在コードを更新することができる。差異は、本明細書に記載のような1つ又は複数の関数を通じて計算することができる。一実施例では、システムは、本明細書に記載のような少なくとも画像再構築損失を通じて差異を計算する。システムは、第1の画像及び画像を、1つ又は複数の画像再構築損失関数、又は任意の好適な損失関数を通じて処理し、第1の画像と画像との間の差異を計算することができる。差異は、第1の画像と画像との間の差異又は差異のレベルを示す、1つ又は複数の値として計算又は他のやり方で表現することができる。システムは、本明細書に記載のような任意の好適なプロセスを通じて、計算された差異を最小化するために潜在コードを更新することができる。システムは、1つ又は複数の勾配降下プロセスを通じて潜在コードを更新、決定、又は他のやり方で計算してもよい。
【0049】
いくつかの実例では、システムは、次いで更新した潜在コードを利用して、プロセス504に関連して説明した1つ又は複数のプロセスに従って画像の第1のセットの第2の画像を生成することができ、次いでプロセス506に関連して説明した1つ又は複数のプロセスに従って第2の画像に基づいて、更新された潜在コードを更新することができる。システムは、プロセス504に関連して説明した1つ若しくは複数のプロセスに従って潜在コードに基づいて画像の第1のセットの画像を生成するプロセス、及び/又はプロセス506に関連して説明した1つ若しくは複数のプロセスに従って画像に基づいて、潜在コードを更新するプロセスを、生成された画像と画像との間の計算された差異が定義された閾値を下回るまで、定義された反復数まで、及び/又は任意の好適な関数若しくはメトリックに基づいて、連続して実行することができる。
【0050】
少なくとも一実施例では、プロセス500の少なくとも一部を実行するシステムは、少なくとも潜在コードを処理して把持プロポーザルのセットを生成するために、第2のニューラル・ネットワークを少なくとも使用する508ための実行可能コードを含む。第2のニューラル・ネットワークは、図1図2及び本明細書の他箇所に関連して説明されるような把持デコーダであってもよい。第1のニューラル・ネットワーク及び第2のニューラル・ネットワークは、同一セットのパラメータを利用してもよい(たとえば、第1のニューラル・ネットワークの1つ又は複数の層は、第2のニューラル・ネットワークの1つ又は複数の層と同一の重み及び/又は他の好適なパラメータを含む)。システムは、第2のニューラル・ネットワークを使用して、潜在コード及び1つ又は複数の座標を処理し、把持プロポーザルのセットを生成することができる。システムは、第2のニューラル・ネットワークを使用して潜在コードを少なくとも処理すること、及び第2のニューラル・ネットワークの出力を計算することによって、第2のニューラル・ネットワークを使用することができ、この出力は把持プロポーザルのセットであってもよい。1つ又は複数の座標は、物体の1つ又は複数の特定の場所に対応することができ、画像及び/又はシーンの任意の好適な座標平面又は基準フレームを基準とすることができる。本明細書に記載のような把持プロポーザルは、ロボット部品の特定の把持構成又は配向を示すデータを指すことがあり、ロボット部品は、物体を把持しようと試行する又は他のやり方で把持するための特定の把持構成又は配向に従って、(たとえば、ロボット部品に関連する1つ又は複数のシステムによって)構成又は配向されてもよい。把持プロポーザルは、把持スコアとも称される値を示すことができるか、又は他のやり方でこの値に関連付けることができ、この把持スコアは、把持プロポーザルによって示された特定の把持構成又は配向が、また把持プロポーザルによって示され得る又は他のやり方で関連付けられ得る特定の場所で物体を把持するためにロボット部品と関連して利用された場合、物体の把持の成功又は安定した把持をもたらす確率を示す。把持プロポーザルは、少なくともスコア(たとえば、
【数18】

)、回転行列(たとえば、
【数19】

)、又はロボット部品の配向(たとえば、把持グリッパ配向)の任意の好適なインジケーション、入力位置(たとえば、
【数20】

)、及び/又は本明細書に記載のような任意の好適なデータを示すことができるか、又はそのようなデータを含むことができる。いくつかの実例では、回転行列(たとえば、
【数21】

)、又はロボット部品の配向(たとえば、把持グリッパ配向)の任意の好適なインジケーション、及び/又は把持プロポーザルの入力位置(たとえば、
【数22】

)は、把持姿勢又は予測された把持姿勢と称される場合がある。
【0051】
少なくとも一実施例では、プロセス500の少なくとも一部を実行するシステムは、第1のニューラル・ネットワーク及び潜在コードに少なくとも部分的に基づき、把持プロポーザルのセットから1つ又は複数の把持プロポーザルを少なくとも選択する510ための実行可能コードを含む。システムは、図1に関連して説明されるような1つ又は複数のフィルタリング・プロセスを実行するために、第1のニューラル・ネットワーク及び潜在コードを使用して、把持プロポーザルのサブセットとも呼ばれてもよい1つ又は複数の把持プロポーザルを選択又は他のやり方で決定することができる。システムは、把持プロポーザルのセットのうち、任意の好適な値であり得る(たとえば、把持スコアによって示される)特定の数の最高又は最大スコアリングの把持プロポーザルを含む把持プロポーザルを決定することができ、把持プロポーザルのセットのうち残りの把持プロポーザルを削除又は他のやり方で除去することができる。システムは、把持プロポーザルのセットのうち、任意の好適な値であり得る特定閾値を上回る把持スコアを持つ把持プロポーザルを計算することができ、把持プロポーザルのセットのうち他の把持プロポーザルを削除又は他のやり方で除去することができる。システムは、潜在コードを処理するために第1のニューラル・ネットワークを使用し、1つ又は複数の把持プロポーザルを選択するために把持プロポーザルのセットに関連付けられる多様な座標を使用することができる。システムは、第1のニューラル・ネットワーク及び潜在コードを使用して、ロボット部品と関連して利用された場合に、把持プロポーザルのセットのうち、開把持構成は物体と衝突しないが、閉把持構成は物体と衝突する把持をもたらす把持プロポーザルを計算することができ、把持プロポーザルのセットのうち他の把持プロポーザルを削除又は他のやり方で除去することができる。
【0052】
システムは、第1のニューラル・ネットワーク及び潜在コードを使用して本明細書に記載のような多様なプロセスを少なくとも実行することによって、第1のニューラル・ネットワーク及び潜在コードに少なくとも部分的に基づき、把持プロポーザルのセットから1つ又は複数の把持プロポーザルを選択することができる。システムは、点群などのロボット部品の表現、又は他の好適な表現を生成することができる。把持プロポーザルのセットの把持プロポーザルごとに、システムは、把持プロポーザルによって示される特定の把持構成又は配向に従うように表現を構成又は他のやり方で配向することができる。次いで、システムは、把持プロポーザルが開把持構成にあるロボット部品に関連して利用された場合に、物体との衝突をもたらさないかどうか、及び/又は把持プロポーザルが閉把持構成にあるロボット部品に関連して利用された場合に、物体との衝突をもたらすかどうかを計算するために、少なくとも1つ又は複数の3D座標及び潜在コードを第1のニューラル・ネットワークに入力することができ、この第1のニューラル・ネットワークでは1つ又は複数の3D座標は、開把持構成及び/又は閉把持構成に構成又は他のやり方で配向された表現に対応し得る。いずれかの、又は両方の条件が満足されない場合(たとえば、把持プロポーザルが、開把持構成にあるロボット部品に関連して利用された場合に、物体との衝突をもたらす、及び/又は把持プロポーザルが閉把持構成にあるロボット部品に関連して利用された場合に、物体との衝突をもたらさない)、システムは、その把持プロポーザルを利用しなくてもよく、把持プロポーザルのセットから把持プロポーザルを除去又は他のやり方で削除することができる。1つ又は複数の3D座標は、任意の好適な座標平面を基準とし得る、表現の任意の好適な場所又は点に対応することができる。
【0053】
説明的な実例として、把持プロポーザルは、開把持構成にあるロボット部品と関連して利用された場合、構成された又は他のやり方で配向された表現の1つ又は複数の3D座標が開把持構成にあれば物体との衝突は生じず、第1のニューラル・ネットワーク及び潜在コードと関連して処理されると、その1つ又は複数の3D座標において物体との衝突がないことを示し得る、任意の好適な値であり得る特定の閾値を下回る(たとえば、第1のニューラル・ネットワークによって予測された、又は他のやり方で生成された)1つ又は複数の密度値をもたらす。実例をさらに続けると、把持プロポーザルは、閉把持構成にあるロボット部品と関連して利用された場合、構成された又は他のやり方で配向された表現の1つ又は複数の3D座標が閉把持構成にあれば物体との衝突をもたらし、第1のニューラル・ネットワーク及び潜在コードと関連して処理されると、その1つ又は複数の3D座標において物体との衝突があることを示し得る、任意の好適な値であり得る特定の閾値を上回る(たとえば、第1のニューラル・ネットワークによって予測された、又は他のやり方で生成された)1つ又は複数の密度値をもたらす。
【0054】
システムは、把持プロポーザルのセットのうち残りの把持プロポーザルとする、1つ又は複数の把持プロポーザルを選択することができる。いくつかの実例では、システムは、把持プロポーザルのセットから除去する特定の把持プロポーザルを計算するために、本明細書に記載のような1つ又は複数のプロセスを実行し、除去対象となるこのような特定の把持プロポーザルを、誤った把持プロポーザルとして示すか又は他のやり方で分類し、誤っているとして示されなかった又は他のやり方で分類されなかった把持プロポーザルのセットのうち1つ又は複数の把持プロポーザルを含むように、1つ又は複数の把持プロポーザルを選択する。システムは、把持プロポーザルのセットから1つ又は複数の把持プロポーザルを選択して任意の好適な把持プロポーザルとしてよく、これは本明細書に記載のような任意の好適なフィルタリング・プロセスに基づくことができる。
【0055】
システムは、1つ又は複数の把持プロポーザルを、ロボット及び/又はロボット部品に関連付けられる1つ又は複数のシステムに提供することができる。システムは、ロボット及びロボット部品(たとえば、グリッパ)に関連して、1つ又は複数の把持プロポーザルを利用することができる。システムは、ロボットが物体を把持するためにロボット部品と関連して1つ又は複数の把持プロポーザルを利用することができるように、1つ又は複数の把持プロポーザルを、ロボットに関連付けられた1つ又は複数のシステムに提供することができる。システムは、1つ又は複数の把持プロポーザルを使用して、ロボット及び/又はロボット部品に、物体を把持させることができる。説明的な実例として、システム又は他の好適なシステムは、ロボット及び/又はロボット部品を、1つ又は複数の把持プロポーザルのうち1つの把持プロポーザルに従って構成又は他のやり方で配向されるようにし、次いでこの状態でシステム又は他の好適なシステムは、ロボット及び/又はロボット部品に物体を把持させることができる。ロボット及び把持プロポーザルに関するさらなる情報は、図2の説明から分かる。
【0056】
第1のニューラル・ネットワーク及び/又は第2のニューラル・ネットワークは、任意の好適なシステム又はフレームワーク、たとえば、TensorFlow、Boost、Caffe、Microsoft Cognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j、及び/又はその変形などに関連するシステム又はフレームワークと関連して訓練されてもよい。一実施例では、第1のニューラル・ネットワーク及び/又は第2のニューラル・ネットワークは、NscenesシーンのデータセットDと関連して訓練されてもよく、Nscenesシーンにおいて、各シーンはグラウンド・トゥルース・シーン・グラフ(たとえば、物体ボリュームV及び姿勢Pを有する)、ランダムなカメラ姿勢からレンダリングされたNviewsグラウンド・トゥルース画像、並びに把持位置p、配向
【数23】

、及びスコア
【数24】

から構成される1セットの把持アノテーションを含み、各シーンは、高スコア及び低スコアのNgrasps把持アノテーションを有する。データセットは、物体の特定のクラス又はカテゴリに特有であってもよく、このクラス又はカテゴリにおいて、特定のクラス又はカテゴリの物体及び/又は物体を描写する画像に関連して第1のニューラル・ネットワーク及び/又は第2のニューラル・ネットワークを利用することができる。第1のニューラル・ネットワーク及び/又は第2のニューラル・ネットワークは、本明細書に記載のような任意の好適なプロセスを通じて訓練することができる。説明的な実例として、1つ又は複数のシステムは、第1のニューラル・ネットワークを使用して本明細書に記載のような多様なプロセスを通じて1つ又は複数の画像を生成し、生成された画像及びグラウンド・トゥルース画像に少なくとも部分的に基づき、第1のニューラル・ネットワークを更新することができる。別の説明的な実例として、1つ又は複数のシステムは、第2のニューラル・ネットワークを使用して本明細書に記載のような多様なプロセスを通じて1つ又は複数の把持プロポーザルを生成し、生成された把持プロポーザル及び把持アノテーションに少なくとも部分的に基づき、第2のニューラル・ネットワークを更新することができる。訓練に関するさらなる情報は、図1と関連して見いだすことができる。
【0057】
一実施例では、システムは、物体レンダリング、3D再構築、及び単一画像から推論され得る把持姿勢予測のための表現を利用するが、このとき表現は本明細書に記載のような潜在コードであってもよい。システムは、コンパクトな形状表現(たとえば、潜在コード)を利用して、そこから把持姿勢などの追加的な情報を把持プロポーザルの形態で抽出することができる。システムは、単一視点(たとえば、RGBのみの画像)を使用して、NeRFベースの表現(たとえば、潜在コード)から把持姿勢を直接検索することができる。システムは、物体再構築及び単一RGB観察から把持姿勢を回帰することなど、多様なタスクに関連して潜在コードを利用することができる。
【0058】
一実施例では、システムの機能性、第1のニューラル・ネットワーク、及び/又は第2のニューラル・ネットワークは、本明細書に記載のような1つ又は複数のアプリケーション・プログラミング・インターフェース(API)を通じてアクセスすることができる。システム、第1のニューラル・ネットワーク、及び/又は第2のニューラル・ネットワークに関連付けられるAPIへの入力には、図1図5に関連して説明したような物体の画像が含まれ得る。入力はまた、APIをコールする、又は他のやり方でAPIを使用するエンティティに関連付けられる認証情報も含むことができる。API応答には、本明細書に記載のような把持プロポーザルのセットが含まれ得る。APIの使用時、1つ又は複数のシステムは、把持プロポーザルのセットを生成するために、第1のニューラル・ネットワーク及び/又は第2のニューラル・ネットワークに関連して、本明細書に記載のような1つ又は複数のプロセスを通じて、システムに画像を処理させることができる。システムはまた、把持プロポーザルのセットに関連して本明細書に記載のような多様なフィルタリング・プロセスを実行することもでき、このときAPI応答には、フィルタリング・プロセスに少なくとも部分的に基づいて決定された1つ又は複数の把持プロポーザルが含まれ得る。
【0059】
図6は、少なくとも一実施例による、プロセッサの実例600を図示する。少なくとも一実施例では、プロセッサ602は、1つ又は複数の把持プロポーザルを生成するために、本明細書に記載のような1つ又は複数のプロセスを実行する。少なくとも一実施例では、プロセッサ602は、図1及び図2に関連して説明されるシステム、輝度場デコーダ、及び/又は把持デコーダの1つ又は複数のプロセスを実施する。少なくとも一実施例では、プロセッサ602は、図1図5に関連して説明されるような1つ又は複数のプロセスを実行する。
【0060】
少なくとも一実施例では、プロセッサ602は、図20図35に関連して説明されるような1つ又は複数のプロセッサを含む。少なくとも一実施例では、プロセッサ602は、1つ又は複数のCPU、GPU、GPGPU、PPU、及び/又はその変形など、任意の好適な処理ユニット及び/又は処理ユニットの組合せである。少なくとも一実施例では、プロセッサ602は、システム・モジュール604、輝度場デコーダ・モジュール606、及び把持デコーダ・モジュール608を含む。少なくとも一実施例では、システム・モジュール604、輝度場デコーダ・モジュール606、及び/又は把持デコーダ・モジュール608は、プロセッサ602及び/又は1つ若しくは複数の他のプロセッサの一部である。少なくとも一実施例では、システム・モジュール604、輝度場デコーダ・モジュール606、及び/又は把持デコーダ・モジュール608は、共有メモリへの書き込み、及び/又は本明細書に記載のような任意の好適な通信プロセスによって、バス、ネットワーク上で通信する複数のプロセッサ間で分散される。
【0061】
少なくとも一実施例では、本明細書に記載の任意の実装形態において使用される場合、そうではないことがコンテキストから明らかであるか又は反対に明示的に述べられない限り、モジュールとは、本明細書に記載の機能を実現するように構成されたソフトウェア論理、ファームウェア論理、ハードウェア論理、及び/又は回路の任意の組合せを指す。少なくとも一実施例では、ソフトウェアは、ソフトウェア・パッケージ、コード、及び/又は命令セット若しくは命令として具体化することができ、「ハードウェア」は、本明細書に記載の任意の実装形態で使用される場合、たとえば、単一又は任意の組合せのハードワイヤード回路、プログラム可能回路、状態機械回路、固定機能回路、実行ユニット回路、及び/又はプログラム可能回路によって実行される命令を記憶するファームウェアを含むことができる。少なくとも一実施例では、モジュールは、集合的に又は個別に、たとえば集積回路(IC)、システム・オン・チップ(SoC:system on chip)など、より大きなシステムの一部を形成する回路として具体化されてもよい。少なくとも一実施例では、モジュールは、1つ又は複数のCPU、GPU、GPGPU、PPU、及び/又はその変形など、任意の好適な処理ユニット及び/又は処理ユニットの組合せに関連して、1つ又は複数のプロセスを実行する。
【0062】
少なくとも一実施例では、システム・モジュール604は、輝度場デコーダ・モジュール606及び/又は把持デコーダ・モジュール608に関連して多様なプロセスを実行するモジュールである。少なくとも一実施例では、システム・モジュール604は、(たとえば、プロセッサ602によって)前記1つ又は複数のプロセスの実行を生じさせるか、又は他のやり方でそのようなプロセスを実行するために利用することが可能な命令を少なくとも含むことによって、又は他のやり方でエンコードすることによって、本明細書に記載のような1つ又は複数のプロセスを実行する。システム・モジュール604は、物体を描写する画像を得て、輝度場デコーダ・モジュール606及び/又は把持デコーダ・モジュール608に関連して、1つ又は複数の把持プロポーザルを生成することができる。システム・モジュール604は、輝度場デコーダ・モジュール606及び/又は把持デコーダ・モジュール608に関連して本明細書に記載のような、1つ又は複数の訓練プロセスを実行することができる。システム・モジュール604は、図1図2に関連して説明される、システムの1つ又は複数のプロセスを実行することができる。システム・モジュール604は、図6に関連して説明されるような1つ又は複数のプロセスを実行することができる。
【0063】
少なくとも一実施例では、輝度場デコーダ・モジュール606は、潜在コードに少なくとも部分的に基づいて多様なプロセスを実行するモジュールである。少なくとも一実施例では、輝度場デコーダ・モジュール606は、(たとえば、プロセッサ602によって)前記1つ又は複数のプロセスの実行を生じさせるか、又は他のやり方でそのようなプロセスを実行するために利用することが可能な命令を少なくとも含むことによって、又は他のやり方でエンコードすることによって、本明細書に記載のような1つ又は複数のプロセスを実行する。輝度場デコーダ・モジュール606は、少なくとも潜在コード(たとえば、画像中に描写される物体に相当する)、1つ又は複数の座標(たとえば、物体における場所に相当する)、及びビュー方向を得ることができ、ビュー方向を基準とした1つ又は複数の座標における密度及び/又は色の、1つ又は複数の予測を生成することができる。輝度場デコーダ・モジュール606は、図1及び本明細書の他箇所に関連して説明される輝度場デコーダのプロセスを実装すること又は他のやり方で実行することができる。輝度場デコーダ・モジュール606は、図6に関連して説明されるような1つ又は複数のプロセスを実行する。
【0064】
少なくとも一実施例では、把持デコーダ・モジュール608は、潜在コードに少なくとも部分的に基づいて把持プロポーザルを生成するモジュールである。少なくとも一実施例では、把持デコーダ・モジュール608は、(たとえば、プロセッサ602によって)前記1つ又は複数のプロセスの実行を生じさせるか、又は他のやり方でそのようなプロセスを実行するために利用することが可能な命令を少なくとも含むことによって、又は他のやり方でエンコードすることによって、本明細書に記載のような1つ又は複数のプロセスを実行する。把持デコーダ・モジュール608は、少なくとも潜在コード(たとえば、画像中に描写される物体に相当する)、及び1つ又は複数の座標(たとえば、物体における場所に相当する)を得ることができ、1つ又は複数の把持プロポーザルを生成することができる。把持デコーダ・モジュール608は、図1及び本明細書の他箇所に関連して説明される把持デコーダのプロセスを実装すること又は他のやり方で実行することができる。把持デコーダ・モジュール608は、図6に関連して説明されるような1つ又は複数のプロセスを実行することができる。
【0065】
論理
図7Aは、少なくとも一実施例に従って本明細書において考察されるような動作を実施するために、1つ又は複数のデバイスにおいて使用することができる、本明細書の他箇所に関連して説明される論理715を図示する。少なくとも一実施例では、1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。少なくとも一実施例では、論理715は、推論及び/又は訓練論理である。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて以下に提供される。少なくとも一実施例では、論理とは、本明細書に記載の機能又は動作を提供するための、ソフトウェア論理、ハードウェア論理、及び/又はファームウェア論理の任意の組合せを指し、論理は、集合的に又は個別に、たとえば集積回路(IC)、システム・オン・チップ(SoC)、又は1つ若しくは複数のプロセッサ(たとえば、CPU、GPU)の、より大きなシステムの一部を形成する回路として具体化されてもよい。
【0066】
少なくとも一実施例では、論理715は、1つ又は複数の実施例の態様において推論するように訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層を構成するための順方向及び/若しくは出力の重み、及び/若しくは入力/出力データ、及び/若しくは他のパラメータを記憶するためのコード並びに/又はデータ・ストレージ701を、限定することなく含んでもよい。少なくとも一実施例では、論理715は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ701を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ701には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU))を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、こうしたコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ701は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを順伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、コード及び/又はデータ・ストレージ701の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
【0067】
少なくとも一実施例では、コード及び/又はデータ・ストレージ701の任意の部分は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ701は、キャッシュ・メモリ、ダイナミック・ランダム・アドレス可能メモリ(「DRAM」:dynamic randomly addressable memory)、スタティック・ランダム・アドレス可能メモリ(「SRAM」:static randomly addressable memory)、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ701が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージを含むかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
【0068】
少なくとも一実施例では、論理715は、1つ又は複数の実施例の態様において推論するために訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層に対応した、逆方向及び/若しくは出力の重み、及び/若しくは入力/出力データを記憶するためのコード並びに/又はデータ・ストレージ705を、限定することなく含んでもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ705は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを逆伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、論理715は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ705を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ705には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU))を含む論理が構成される。
【0069】
少なくとも一実施例では、グラフ・コードなどのコードは、こうしたコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードさせる。少なくとも一実施例では、コード及び/又はデータ・ストレージ705の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ705の任意の部分は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ705は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ705が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ・メモリ、若しくは何らか他のタイプのストレージを含むかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
【0070】
少なくとも一実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705は、別々のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705は、組み合わされたストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705は、部分的に組み合わされ、部分的に別々であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705との任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
【0071】
少なくとも一実施例では、論理715は、訓練及び/又は推論コード(たとえばグラフ・コード)に少なくとも部分的に基づく、又はそれにより示される論理演算及び/又は算術演算を実行するための、整数及び/又は浮動小数点ユニットを含む1つ又は複数の算術論理演算ユニット(「ALU」)710を、限定することなく含んでもよく、その結果が、アクティブ化ストレージ720に記憶されるアクティブ化(たとえば、ニューラル・ネットワーク内の層若しくはニューロンからの出力値)を生成してもよく、これらは、コード及び/若しくはデータ・ストレージ701、並びに/又はコード及び/若しくはデータ・ストレージ705に記憶される入力/出力及び/又は重みパラメータのデータの関数である。少なくとも一実施例では、アクティブ化ストレージ720に記憶されるアクティブ化は、命令又は他のコードを実行したことに応答して、ALU710によって実行される線形代数計算及び又は行列ベースの計算に従って生成され、ここでコード及び/又はデータ・ストレージ705並びに/若しくはデータ・ストレージ701に記憶された重み値は、バイアス値、勾配情報、運動量値などの他の値、又は他のパラメータ若しくはハイパーパラメータとともにオペランドとして使用され、これらのいずれか又はすべてが、コード及び/若しくはデータ・ストレージ705、又はコード及び/若しくはデータ・ストレージ701、又はオン・チップ若しくはオフ・チップの別のストレージに記憶されてもよい。
【0072】
少なくとも一実施例では、ALU710は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路内に含まれるが、別の実施例では、ALU710は、それらを使用するプロセッサ又は他のハードウェア論理デバイス若しくは回路の外部にあってもよい(たとえばコプロセッサ)。少なくとも一実施例では、ALU710は、プロセッサの実行ユニット内に含まれてもよく、又は他のやり方で同じプロセッサ内にあるか異なるタイプの異なるプロセッサ(たとえば、中央処理装置、グラフィックス・プロセッシング・ユニット、固定機能ユニットなど)の間で分散されているかのいずれかであるプロセッサの実行ユニットによりアクセス可能なALUバンク内に、含まれてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ701、コード及び/又はデータ・ストレージ705、並びにアクティブ化ストレージ720は、プロセッサ又は他のハードウェア論理デバイス若しくは回路を共有してもよく、別の実施例では、それらは異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、或いは同じプロセッサ又は他のハードウェア論理デバイス若しくは回路と、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路との何らかの組合せにあってもよい。少なくとも一実施例では、アクティブ化ストレージ720の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。さらに、推論及び/又は訓練コードが、プロセッサ又は他のハードウェア論理若しくは回路にアクセス可能な他のコードとともに記憶されてもよく、プロセッサのフェッチ、デコード、スケジューリング、実行、リタイア、及び/又は他の論理回路を使用してフェッチ及び/又は処理されてもよい。
【0073】
少なくとも一実施例では、アクティブ化ストレージ720は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、アクティブ化ストレージ720は、完全に又は部分的に、1つ若しくは複数のプロセッサ又は他の論理回路の内部にあってもよく、又は外部にあってもよい。少なくとも一実施例では、アクティブ化ストレージ720が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ・メモリ、若しくは何らか他のタイプのストレージを含むかの選択は、オン・チップ対オフ・チップの利用可能なストレージ、実行される訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
【0074】
少なくとも一実施例では、図7Aに図示される論理715は、GoogleによるTensorFlow(登録商標) Processing Unit、Graphcore(商標)による推論処理ユニット(IPU:inference processing unit)、又はIntel CorpによるNervana(登録商標)(たとえば、「Lake Crest」)プロセッサなどの特定用途向け集積回路(「ASIC」:application-specific integrated circuit)と併せて使用することができる。少なくとも一実施例では、図7Aに図示される論理715は、中央処理装置(「CPU」)ハードウェア、グラフィック処理ユニット(「GPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」:field programmable gate array)などの他のハードウェアと併せて使用することができる。
【0075】
図7Bは、少なくとも一実施例による、論理715を図示する。少なくとも一実施例では、論理715は、推論及び/又は訓練論理である。少なくとも一実施例では、論理715は、ハードウェア論理を限定することなく含んでもよく、このハードウェア論理では、計算リソースが、ニューラル・ネットワーク内のニューロンの1つ若しくは複数の層に対応する重み値又は他の情報の専用のものであるか、又は他のやり方でそれらと併せてしか使用されない。少なくとも一実施例では、図7Bに図示される論理715は、GoogleによるTensorFlow(登録商標) Processing Unit、Graphcore(商標)による推論処理ユニット(IPU)、又はIntel CorpによるNervana(登録商標)(たとえば、「Lake Crest」)プロセッサなどの特定用途向け集積回路(「ASIC」)と併せて使用することができる。少なくとも一実施例では、図7Bに図示される論理715は、中央処理装置(CPU)ハードウェア、グラフィックス・プロセッシング・ユニット(GPU)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)などの他のハードウェアと併せて使用することができる。少なくとも一実施例では、論理715は、限定することなく、コード及び/又はデータ・ストレージ701、並びにコード及び/又はデータ・ストレージ705を含み、これらを使用して、コード(たとえばグラフ・コード)、重み値、並びに/又はバイアス値、勾配情報、運動量値、及び/若しくは他のパラメータ若しくはハイパーパラメータ情報を含む他の情報を記憶してもよい。図7Bに図示される少なくとも一実施例では、コード及び/又はデータ・ストレージ701並びにコード及び/又はデータ・ストレージ705のそれぞれは、それぞれ計算ハードウェア702及び計算ハードウェア706などの専用計算リソースに関連付けられる。少なくとも一実施例では、計算ハードウェア702及び計算ハードウェア706のそれぞれは、線形代数関数などの数学的関数を、それぞれコード及び/又はデータ・ストレージ701並びにコード及び/又はデータ・ストレージ705に記憶された情報に対してのみ実行する1つ又は複数のALUを備え、その結果は、アクティブ化ストレージ720に記憶される。
【0076】
少なくとも一実施例では、コード並びに/又はデータ・ストレージ701及び705のそれぞれ、並びに対応する計算ハードウェア702及び706は、ニューラル・ネットワークの異なる層にそれぞれ対応し、それにより、コード及び/又はデータ・ストレージ701並びに計算ハードウェア702との1つのストレージ/計算の対701/702から結果的に生じるアクティブ化は、ニューラル・ネットワークの概念的組織化を反映させるために、次のコード及び/又はデータ・ストレージ705並びに計算ハードウェア706とのストレージ/計算の対705/706への入力として提供される。少なくとも一実施例では、ストレージ/計算の対701/702、及び705/706のそれぞれは、2つ以上のニューラル・ネットワークの層に対応してもよい。少なくとも一実施例では、ストレージ/計算の対701/702、及び705/706の後に、又はそれと並列に、追加のストレージ/計算の対(図示せず)が、論理715に含まれてもよい。
【0077】
少なくとも一実施例では、図7A図7Bに描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図7A図7Bに描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図7A図7Bに描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0078】
ニューラル・ネットワークの訓練及び導入
図8は、少なくとも一実施例による、ディープ・ニューラル・ネットワークの訓練及び導入を図示する。少なくとも一実施例では、未訓練ニューラル・ネットワーク806が、訓練データセット802を使用して訓練される。少なくとも一実施例では、訓練フレームワーク804は、PyTorchフレームワークであり、一方他の実施例では、訓練フレームワーク804は、TensorFlow、Boost、Caffe、マイクロソフトCognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j、又は他の訓練フレームワークである。少なくとも一実施例では、訓練フレームワーク804は、未訓練ニューラル・ネットワーク806を訓練し、本明細書に記載の処理リソースを使用してそれが訓練されるのを可能にして、訓練済みニューラル・ネットワーク808を生成する。少なくとも一実施例では、重みは、ランダムに選択されてもよく、又はディープ・ビリーフ・ネットワークを使用した事前訓練によって選択されてもよい。少なくとも一実施例では、訓練は、教師あり、一部教師あり、又は教師なしのいずれかのやり方で実行されてもよい。
【0079】
少なくとも一実施例では、未訓練ニューラル・ネットワーク806は教師あり学習を使用して訓練され、ここで訓練データセット802は、入力に対する所望の出力と対になった入力を含み、又は訓練データセット802は、既知の出力を有する入力を含み、ニューラル・ネットワーク806の出力が手動で採点される。少なくとも一実施例では、未訓練ニューラル・ネットワーク806は教師ありのやり方で訓練され、訓練データセット802からの入力を処理し、結果として得られた出力を、予想の又は所望の出力のセットと比較する。少なくとも一実施例では、次いで、誤差が、未訓練ニューラル・ネットワーク806を通って逆伝播される。少なくとも一実施例では、訓練フレームワーク804は、未訓練ニューラル・ネットワーク806を制御する重みを調節する。少なくとも一実施例では、訓練フレームワーク804は、未訓練ニューラル・ネットワーク806が、新規データセット812などの入力データに基づき、結果814などにおいて正しい答えを生成するのに好適な訓練済みニューラル・ネットワーク808などのモデルに向かって、どれだけ良好に収束しているかを監視するツールを含む。少なくとも一実施例では、訓練フレームワーク804は、未訓練ニューラル・ネットワーク806を繰り返し訓練する一方、損失関数、及び確率的勾配降下法などの調整アルゴリズムを使用して、未訓練ニューラル・ネットワーク806の出力を精緻化するように重みを調整する。少なくとも一実施例では、訓練フレームワーク804は、未訓練ニューラル・ネットワーク806が所望の精度に到達するまで未訓練ニューラル・ネットワーク806を訓練する。少なくとも一実施例では、次いで訓練済みニューラル・ネットワーク808を、任意の数の機械学習動作を実装するように導入することができる。
【0080】
少なくとも一実施例では、未訓練ニューラル・ネットワーク806は、教師なし学習を使用して訓練され、ここで未訓練ニューラル・ネットワーク806は、ラベルなしデータを使用して自らを訓練しようとする。少なくとも一実施例では、教師なし学習の訓練データセット802は、任意の関連出力データ又は「グラウンド・トゥルース」データもない入力データを含む。少なくとも一実施例では、未訓練ニューラル・ネットワーク806は、訓練データセット802内でグループ化を学習することができ、個々の入力が、未訓練データセット802にどのように関係しているかを判定することができる。少なくとも一実施例では、新規データセット812の次元を低減するのに有用な動作を実行することができる訓練済みニューラル・ネットワーク808内で教師なし訓練を使用して、自己組織化マップを生成することができる。少なくとも一実施例では、教師なし訓練を使用して異常検出を実行することもでき、異常検出は、新規データセット812の通常のパターンから逸脱した、新規データセット812内のデータ点を識別できるようにする。
【0081】
少なくとも一実施例では、半教師あり学習が使用されてもよく、それは、訓練データセット802がラベル付きデータとラベルなしデータの混合を含む技法である。少なくとも一実施例では、訓練フレームワーク804を使用して、伝達学習技法などによる漸次的学習が実行されてもよい。少なくとも一実施例では、漸次的学習により、訓練済みニューラル・ネットワーク808は、初期訓練中に訓練済みニューラル・ネットワーク808内に教え込まれた知識を忘れることなく、新規データセット812に適合できるようになる。
【0082】
少なくとも一実施例では、訓練フレームワーク804は、OpenVINO(Open Visual Inference and Neural network Optimization)ツールキットなど、ソフトウェア開発ツールキットと関連して処理されるフレームワークである。少なくとも一実施例では、OpenVINOツールキットは、カリフォルニア州サンタクララのインテルコーポレーションによって開発されたツールキットなどの、ツールキットである。少なくとも一実施例では、OpenVINOは、本明細書に記載の動作を実行するために、論理715を含むか、又は論理715を使用する。少なくとも一実施例では、SoC、集積回路、又はプロセッサは、本明細書に記載の動作を実行するために、OpenVINOを使用する。
【0083】
少なくとも一実施例では、OpenVINOは、ヒューマン・ビジョン・エミュレーション、発話認識、自然言語処理、提案システム、及び/又はその変形など、多様なタスク及び動作について、アプリケーション、具体的にはニューラル・ネットワーク・アプリケーションの開発を促進するための、ツールキットである。少なくとも一実施例では、OpenVINOは、畳み込みニューラル・ネットワーク(CNN:convolutional neural network)、再帰及び/若しくはアテンションベースのニューラル・ネットワーク、並びに/又は多様な他のニューラル・ネットワーク・モデルなど、ニューラル・ネットワークをサポートする。少なくとも一実施例では、OpenVINOは、OpenCV、OpenCL、及び/又はその変形など、多様なソフトウェア・ライブラリをサポートする。
【0084】
少なくとも一実施例では、OpenVINOは、分類、セグメンテーション、物体検出、顔認識、発話認識、姿勢推定(たとえば、人間及び/又は物体)、単眼深度推定、画像修復、スタイル変換、アクション認識、カラー化及び/又はその変形など、多様なタスク及び動作について、ニューラル・ネットワーク・モデルをサポートする。
【0085】
少なくとも一実施例では、OpenVINOは、モデル・オプティマイザとも称される、モデル最適化のための1つ又は複数のソフトウェア・ツール及び/又はモジュールを含む。少なくとも一実施例では、モデル・オプティマイザは、ニューラル・ネットワーク・モデルの訓練と導入との間の遷移を容易にするコマンド・ライン・ツールである。少なくとも一実施例では、モデル・オプティマイザは、GPU、CPU、PPU、GPGPU、及び/又はその変形など、多様なデバイス及び/又は処理ユニットでの実行のためにニューラル・ネットワーク・モデルを最適化する。少なくとも一実施例では、モデル・オプティマイザは、モデルの内部表現を生成し、中間表現を生成するために前記モデルを最適化する。少なくとも一実施例では、モデル・オプティマイザは、モデルの層の数を低減する。少なくとも一実施例では、モデル・オプティマイザは、訓練に利用されるモデルの層を除去する。少なくとも一実施例では、モデル・オプティマイザは、モデルへの入力を改変する(たとえば、モデルへの入力をサイズ変更する)こと、モデルの入力のサイズを改変する(たとえば、モデルのバッチ・サイズを改変する)こと、モデル構造を改変する(たとえば、モデルの層を改変する)こと、正規化、標準化、量子化(たとえば、モデルの重みを、小数点など第1の表現から、整数などの第2の表現に変換すること)、及び/又はその変形など、多様なニューラル・ネットワーク動作を実行する。
【0086】
少なくとも一実施例では、OpenVINOは、推論エンジンとも称される、推論のための1つ又は複数のソフトウェア・ライブラリを含む。少なくとも一実施例では、推論エンジンは、C++ライブラリ、又は任意の好適なプログラミング言語のライブラリである。少なくとも一実施例では、推論エンジンは、入力データを推論するために利用される。少なくとも一実施例では、推論エンジンは、入力データを推論して1つ又は複数の結果を生成するために、多様なクラスを実装する。少なくとも一実施例では、推論エンジンは、中間表現を処理し、入力及び/若しくは出力フォーマットをセットし、並びに/又は1つ若しくは複数のデバイスでモデルを実行するために、1つ又は複数のAPI関数を実装する。
【0087】
少なくとも一実施例では、OpenVINOは、1つ又は複数のニューラル・ネットワーク・モデルの異種な実行のための様々な能力を提供する。少なくとも一実施例では、異種な実行、又は異種なコンピューティングとは、1つ又は複数のタイプのプロセッサ及び/又はコアを利用する、1つ又は複数のコンピューティング・プロセス及び/又はシステムを指す。少なくとも一実施例では、OpenVINOは、1つ又は複数のデバイスでプログラムを実行するために、様々なソフトウェア機能を提供する。少なくとも一実施例では、OpenVINOは、異なるデバイスでプログラム及び/又はプログラムの一部を実行するために、様々なソフトウェア機能を提供する。少なくとも一実施例では、OpenVINOは、たとえばコードの第1の部分をCPUで実行し、コードの第2の部分をGPU及び/又はFPGAで実行するために、様々なソフトウェア機能を提供する。少なくとも一実施例では、OpenVINOは、ニューラル・ネットワークの1つ又は複数の層を、1つ又は複数のデバイスで(たとえば、GPUなど第1のデバイスで第1のセットの層を、CPUなど第2のデバイスで第2のセットの層を)実行するために、様々なソフトウェア機能を提供する。
【0088】
少なくとも一実施例では、OpenVINOは、TensorFlow、PyTorch、及び/又はその変形などのフレームワークに関連する多様なニューラル・ネットワーク・モデル動作など、CUDAプログラミング・モデルに関連する機能に類似した多様な機能を含む。少なくとも一実施例では、1つ又は複数のCUDAプログラミング・モデル動作は、OpenVINOを使用して実行される。少なくとも一実施例では、本明細書に記載の多様なシステム、方法、及び/又は技法は、OpenVINOを使用して実装される。
【0089】
少なくとも一実施例では、図8に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図8に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図8に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0090】
データ・センタ
図9は、少なくとも一実施例が使用されてもよい実例データ・センタ900を図示する。少なくとも一実施例では、データ・センタ900は、データ・センタ・インフラストラクチャ層910、フレームワーク層920、ソフトウェア層930、及びアプリケーション層940を含む。
【0091】
図9に示すように、少なくとも一実施例では、データ・センタ・インフラストラクチャ層910は、リソース・オーケストレータ912と、グループ化済みコンピューティング・リソース914と、ノード・コンピューティング・リソース(「ノードC.R.」)916(1)~916(N)とを含んでもよく、ここで「N」は正の整数を表す(他の図で使用されるものとは異なる整数「N」であってもよい)。少なくとも一実施例では、ノードC.R.916(1)~916(N)は、任意の数の中央処理装置(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・ストレージ・デバイス918(1)~918(N)(たとえば、ダイナミック読取り専用メモリ、ソリッド・ステート・ストレージ・ドライブ又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」:virtual machine)、電源モジュール、及び冷却モジュールなどを含んでもよいが、これらに限定されない。少なくとも一実施例では、ノードC.R.916(1)~916(N)の中からの1つ又は複数のノードC.R.は、上で言及したコンピューティング・リソースのうち1つ又は複数を有するサーバであってもよい。
【0092】
少なくとも一実施例では、グループ化済みコンピューティング・リソース914は、1つ若しくは複数のラック(図示せず)内に収容されたノードC.R.の別々のグループ、又は様々な地理的ロケーション(同じく図示せず)においてデータ・センタに収容された多数のラックを含んでもよい。少なくとも一実施例では、グループ化済みコンピューティング・リソース914内のノードC.R.の別々のグループは、1つ若しくは複数のワークロードをサポートするように構成又は配分されてもよいグループ化済みのコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含んでもよい。少なくとも一実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のラック内でグループ化されて、1つ又は複数のワークロードをサポートするためのコンピュート・リソースが提供されてもよい。少なくとも一実施例では、1つ又は複数のラックはまた、任意の数の電源モジュール、冷却モジュール、及びネットワーク・スイッチを任意の組合せで含んでもよい。
【0093】
少なくとも一実施例では、リソース・オーケストレータ912は、1つ又は複数のノードC.R.916(1)~916(N)及び/若しくはグループ化済みコンピューティング・リソース914を構成してもよく、又は他のやり方で制御してもよい。少なくとも一実施例では、リソース・オーケストレータ912は、データ・センタ900用のソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含んでもよい。少なくとも一実施例では、リソース・オーケストレータ712は、ハードウェア、ソフトウェア、又はこれらの何らかの組合せを含んでもよい。
【0094】
図9に示すように、少なくとも一実施例では、フレームワーク層920は、ジョブ・スケジューラ922、構成マネージャ924、リソース・マネージャ926、及び分配ファイル・システム928を含む。少なくとも一実施例では、フレームワーク層920は、ソフトウェア層930のソフトウェア932、及び/又はアプリケーション層940の1つ若しくは複数のアプリケーション942をサポートするためのフレームワークを含んでもよい。少なくとも一実施例では、ソフトウェア932又はアプリケーション942はそれぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アジュールによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含んでもよい。少なくとも一実施例では、フレームワーク層920は、大規模なデータ処理(たとえば「ビック・データ」)のために分配ファイル・システム928を使用することができるApache Spark(登録商標)(以下「Spark」)など、無料でオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってもよいが、これに限定されない。少なくとも一実施例では、ジョブ・スケジューラ922は、データ・センタ900の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含んでもよい。少なくとも一実施例では、構成マネージャ924は、ソフトウェア層930、並びに大規模なデータ処理をサポートするためのSpark及び分配ファイル・システム928を含むフレームワーク層920などの異なる層を構成することが可能であってもよい。少なくとも一実施例では、リソース・マネージャ926は、分配ファイル・システム928及びジョブ・スケジューラ922をサポートするようにマッピング若しくは配分されたクラスタ化済み又はグループ化済みのコンピューティング・リソースを管理することが可能であってもよい。少なくとも一実施例では、クラスタ化済み又はグループ化済みのコンピューティング・リソースは、データ・センタ・インフラストラクチャ層910にあるグループ化済みコンピューティング・リソース914を含んでもよい。少なくとも一実施例では、リソース・マネージャ926は、リソース・オーケストレータ912と連携して、これらのマッピング又は配分されたコンピューティング・リソースを管理してもよい。
【0095】
少なくとも一実施例では、ソフトウェア層930に含まれるソフトウェア932は、ノードC.R.916(1)~916(N)、グループ化済みコンピューティング・リソース914、及び/又はフレームワーク層920の分配ファイル・システム928のうちの少なくとも一部分によって使用されるソフトウェアを含んでもよい。少なくとも一実施例では、1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含んでもよいが、これらに限定されない。
【0096】
少なくとも一実施例では、アプリケーション層940に含まれるアプリケーション942は、ノードC.R.916(1)~916(N)、グループ化済みコンピューティング・リソース914、及び/又はフレームワーク層920の分配ファイル・システム928のうちの少なくとも一部分によって使用される1つ若しくは複数のタイプのアプリケーションを含んでもよい。少なくとも一実施例では、1つ若しくは複数のタイプのアプリケーションは、任意の数のゲノム学アプリケーション、認識コンピュート、並びに訓練若しくは推論のソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、TensorFlow、Caffeなど)を含むアプリケーション及び機械学習アプリケーション、又は1つ若しくは複数の実施例と併せて使用される他の機械学習アプリケーションを含んでもよいが、これらに限定されない。
【0097】
少なくとも一実施例では、構成マネージャ924、リソース・マネージャ926、及びリソース・オーケストレータ912のうちのいずれかは、任意の技術的に実行可能なやり方で取得された任意の量及びタイプのデータに基づき、任意の数及びタイプの自己修正措置を実装してもよい。少なくとも一実施例では、自己修正措置は、データ・センタ900のデータ・センタ・オペレータが、場合によっては悪い構成決定を行わないようにし、十分に利用されていない且つ/又は性能の低いデータ・センタの部分を場合によっては回避しないようにしてもよい。
【0098】
少なくとも一実施例では、データ・センタ900は、1つ若しくは複数の機械学習モデルを訓練し、又は本明細書に記載の1つ若しくは複数の実施例による1つ若しくは複数の機械学習モデルを使用して情報を予測若しくは推論するためのツール、サービス、ソフトウェア、又は他のリソースを含んでもよい。たとえば、少なくとも一実施例では、機械学習モデルは、データ・センタ900に関して上述したソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練されてもよい。少なくとも一実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練済み機械学習モデルは、本明細書に記載の1つ又は複数の技法によって計算された重みパラメータを使用することにより、データ・センタ900に関して上述したリソースを使用して、情報を推論又は予測するために使用されてもよい。
【0099】
少なくとも一実施例では、データ・センタは、上述したリソースを使用して訓練及び/又は推論を実行するために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、又は他のハードウェアを使用してもよい。さらに、上述した1つ又は複数のソフトウェア及び/又はハードウェアのリソースは、画像認識、音声認識、又は他の人工知能サービスなどの情報の訓練又は推論の実行を、ユーザが行えるようにするためのサービスとして構成されてもよい。
【0100】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにデータ・センタ900において使用されてもよい。
【0101】
少なくとも一実施例では、図9に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図9に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図9に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0102】
自律車両
図10Aは、少なくとも一実施例による自律車両1000の実例を図示する。少なくとも一実施例では、自律車両1000(或いは、本明細書において「車両1000」と呼ばれる)は、限定することなく、車、トラック、バス、及び/又は1人若しくは複数の乗員を収容する別のタイプの車両などの乗用車とすることができる。少なくとも一実施例では、車両1000は、貨物運搬用に使用されるセミ・トラクタのトレーラ・トラックであってもよい。少なくとも一実施例では、車両1000は、航空機、ロボット車両、又は他の種類の車両であってもよい。
【0103】
自律車両は、米国運輸省の一部門である全米高速道路交通安全局(「NHTSA」:National Highway Traffic Safety Administration)、及び自動車技術者協会(「SAE」:Society of Automotive Engineers)の「自動車用運転自動化システムのレベル分類及び定義(Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles)」(たとえば、2018年6月15日発行の規格No.J3016-201806、2016年9月30日発行の規格No.J3016-201609、及びこの規格の旧版及び新版)により定義される自動化レベルという観点から説明されてもよい。少なくとも一実施例では、車両1000は、自律運転レベルのレベル1~レベル5のうちの1つ又は複数による機能性に対応可能であってもよい。たとえば、少なくとも一実施例では、車両1000は、実施例に応じて、条件付き自動化(レベル3)、高度自動化(レベル4)、及び/又は完全自動化(レベル5)に対応可能であってもよい。
【0104】
少なくとも一実施例では、車両1000は、限定することなく、シャシ、車両本体、ホイール(2本、4本、6本、8本、18本など)、タイヤ、車軸、及び車両の他の構成要素などの構成要素を含んでもよい。少なくとも一実施例では、車両1000は、限定することなく、内燃機関、ハイブリッド電力プラント、完全電気エンジン、及び/又は別のタイプの推進システムなどの推進システム1050を含んでもよい。少なくとも一実施例では、推進システム1050は、車両1000のドライブ・トレインに連結されてもよく、ドライブ・トレインは、限定することなく、車両1000の推進を可能にするためのトランスミッションを含んでもよい。少なくとも一実施例では、推進システム1050は、スロットル/アクセル1052からの信号を受信したことに応答して、制御されてもよい。
【0105】
少なくとも一実施例では、限定することなくハンドルを含んでもよい操縦システム1054は、推進システム1050が動作しているときに(たとえば、車両1000が動いているときに)車両1000を(たとえば所望の経路又はルートに沿って)操縦するために使用される。少なくとも一実施例では、操縦システム1054は、操縦アクチュエータ1056から信号を受信してもよい。少なくとも一実施例では、ハンドルは、完全自動化(レベル5)の機能性に関しては任意選択であってもよい。少なくとも一実施例では、ブレーキ・アクチュエータ1048及び/又はブレーキ・センサからの信号を受信したことに応答して車両ブレーキを動作させるために、ブレーキ・センサ・システム1046が使用されてもよい。
【0106】
少なくとも一実施例では、1つ又は複数のシステム・オン・チップ(「SoC」)(図10Aには示さず)及び/若しくはグラフィックス・プロセッシング・ユニット(「GPU」)を限定することなく含んでもよいコントローラ1036は、車両1000の1つ又は複数の構成要素及び/若しくはシステムに(たとえば、コマンドを表す)信号を提供する。たとえば、少なくとも一実施例では、コントローラ1036は、ブレーキ・アクチュエータ1048を介して車両ブレーキを動作させるための信号、操縦アクチュエータ1056を介して操縦システム1054を動作させるための信号、スロットル/アクセル1052を介して推進システム1050を動作させるための信号を送信してもよい。少なくとも一実施例では、コントローラ1036は、自律運転を可能にし、且つ/又は運転車両1000において人間のドライバを支援するために、センサ信号を処理し、動作コマンド(たとえばコマンドを表す信号)を出力する1つ又は複数の搭載(たとえば一体型の)コンピューティング・デバイスを含んでもよい。少なくとも一実施例では、コントローラ1036は、自律運転機能のための第1のコントローラ、機能的安全機能のための第2のコントローラ、人工知能機能(たとえば、コンピュータ・ビジョン)のための第3のコントローラ、インフォテイメント機能のための第4のコントローラ、緊急事態における冗長性のための第5のコントローラ、及び/又は他のコントローラを含んでもよい。少なくとも一実施例では、単一のコントローラが、上記機能性のうちの2つ以上に対処してもよく、2つ以上のコントローラが、単一の機能性に対処してもよく、且つ/又はこれらの何らかの組合せであってもよい。
【0107】
少なくとも一実施例では、コントローラ1036は、1つ又は複数のセンサから受信したセンサ・データ(たとえば、センサ入力)に応答して、車両1000の1つ又は複数の構成要素及び/若しくはシステムを制御するための信号を提供する。少なくとも一実施例では、センサ・データは、たとえば限定することなく、全地球的航法衛星システム(「GNSS」:global navigation satellite system)センサ1058(たとえば、全地球測位システム・センサ)、RADARセンサ1060、超音波センサ1062、LIDARセンサ1064、慣性計測装置(「IMU」:inertial measurement unit)センサ1066(たとえば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイクロフォン1096、ステレオ・カメラ1068、広角カメラ1070(たとえば、魚眼カメラ)、赤外線カメラ1072、周囲カメラ1074(たとえば、360度カメラ)、長距離カメラ(図10Aには示さず)、中距離カメラ(図10Aには示さず)、(たとえば、車両1000のスピードを計測するための)スピード・センサ1044、振動センサ1042、操縦センサ1040、(たとえば、ブレーキ・センサ・システム1046の一部分としての)ブレーキ・センサ、及び/又は他のタイプのセンサから、受信されてもよい。
【0108】
少なくとも一実施例では、コントローラ1036のうちの1つ又は複数は、車両1000の計器クラスタ1032からの(たとえば入力データによって表される)入力を受信し、ヒューマン・マシン・インターフェース(「HMI」:human-machine interface)ディスプレイ1034、可聴アナンシエータ、拡声器を介して、且つ/又は車両1000の他の構成要素を介して、(たとえば、出力データ、ディスプレイ・データなどによって表される)出力を提供してもよい。少なくとも一実施例では、出力は、車両速度、スピード、時間、地図データ(たとえば、ハイ・デフィニション・マップ(図10Aには示さず))、ロケーション・データ(たとえば、地図上などの車両1000のロケーション)、方向、他車両のロケーション(たとえば、占有グリッド)、コントローラ1036が感知した物体及び物体の状態についての情報などの情報を含んでもよい。たとえば、少なくとも一実施例では、HMIディスプレイ1034は、1つ若しくは複数の物体(たとえば、道路標識、警告標識、信号機の変化など)の存在についての情報、及び/又は車両が行った、行っている、又はこれから行う運転操作についての情報(たとえば、現在車線変更中、3.22km(2マイル)先の出口34Bを出る、など)を表示してもよい。
【0109】
少なくとも一実施例では、車両1000はさらにネットワーク・インターフェース1024を含み、このネットワーク・インターフェースは、1つ又は複数のネットワークを介して通信するためのワイヤレス・アンテナ1026及び/又はモデムを使用してもよい。たとえば、少なくとも一実施例では、ネットワーク・インターフェース1024は、ロング・ターム・エボリューション(「LTE」:Long-Term Evolution)、広帯域符号分割多元接続(「WCDMA(登録商標)」:Wideband Code Division Multiple Access)、ユニバーサル・モバイル・テレコミュニケーション・システム(「UMTS」:Universal Mobile Telecommunications System)、グローバル・システム・フォー・モバイル・コミュニケーション(「GSM」:Global System for Mobile communication)、IMT-CDMAマルチ・キャリア(「CDMA2000」)ネットワークなどを介して通信可能であってもよい。また、少なくとも一実施例では、ワイヤレス・アンテナ1026は、Bluetooth、Bluetooth Low Energy(「LE」:Low Energy)、Z-Wave、ZigBeeなどのようなローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどのような低電力広域ネットワーク(「LPWAN」:low power wide-area network)のプロトコルを使用して、環境内の物体同士間(たとえば車両、モバイル・デバイスなど)での通信を可能にしてもよい。
【0110】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために車両1000において使用されてもよい。
【0111】
図10Bは、少なくとも一実施例による図10Aの自律車両1000についてカメラのロケーション及び視野の実例を図示する。少なくとも一実施例では、カメラ及びそれぞれの視野は、一例の実施例であり、限定するものではない。たとえば、少なくとも一実施例では、追加及び/又は代替のカメラが含まれてもよく、且つ/又はカメラが車両1000の異なるロケーションに位置付けられてもよい。
【0112】
少なくとも一実施例では、カメラのカメラ・タイプは、車両1000の構成要素及び/又はシステムとともに使用できるように適合されていてもよいデジタル・カメラを含んでもよいが、これに限定されない。少なくとも一実施例では、カメラは、自動車安全性要求レベル(「ASIL」:automotive safety integrity level)B及び/又は別のASILにおいて動作してもよい。少なくとも一実施例では、カメラ・タイプは、実施例に応じて、毎秒60フレーム(fps:frames per second)、1220fps、240fpsなど、任意の画像捕捉率が可能であってもよい。少なくとも一実施例では、カメラは、ロール・シャッタ、グローバル・シャッタ、別のタイプのシャッタ、又はこれらの組合せを使用することが可能であってもよい。少なくとも一実施例では、カラー・フィルタ・アレイは、赤色、クリア、クリア、クリア(「RCCC」:red clear clear clear)のカラー・フィルタ・アレイ、赤色、クリア、クリア、青色(「RCCB:red clear clear blue」)のカラー・フィルタ・アレイ、赤色、青色、緑色、クリア(「RBGC」:red blue green clear)のカラー・フィルタ・アレイ、Foveon X3のカラー・フィルタ・アレイ、ベイヤー・センサ(「RGGB」)のカラー・フィルタ・アレイ、モノクロ・センサのカラー・フィルタ・アレイ、及び/又は別のタイプのカラー・フィルタ・アレイを含んでもよい。少なくとも一実施例では、光感度を上げるために、RCCC、RCCB、及び/又はRBGCのカラー・フィルタ・アレイを有するカメラなど、クリア・ピクセル・カメラが使用されてもよい。
【0113】
少なくとも一実施例では、カメラのうちの1つ又は複数を使用して、先進ドライバ支援システム(「ADAS」:advanced driver assistance systems)機能が(たとえば、冗長設計又はフェイル・セーフ設計の一部として)実行されてもよい。たとえば、少なくとも一実施例では、多機能モノ・カメラが設置されて、車線逸脱警告、交通標識支援、及びインテリジェント・ヘッドライト制御を含む機能が提供されてもよい。少なくとも一実施例では、カメラのうちの1つ又は複数(たとえばすべてのカメラ)は、画像データ(たとえばビデオ)の記録と提供を同時に行ってもよい。
【0114】
少なくとも一実施例では、1つ又は複数のカメラは、カメラの画像データ捕捉性能を妨げる恐れのある迷光及び車両1000内部からの反射(たとえば、ダッシュボードからフロントガラス・ミラーに反射される反射)をなくすために、カスタム設計の(3次元(「3D」:three-dimensional)印刷された)アセンブリなどの取付けアセンブリに取り付けられてもよい。ドアミラー取付けアセンブリを参照すると、少なくとも一実施例では、ドアミラー・アセンブリは、カメラ取付けプレートがドアミラーの形に合うように、カスタムで3D印刷されてもよい。少なくとも一実施例では、カメラは、ドアミラーと一体であってもよい。少なくとも一実施例では、サイド・ビュー・カメラについて、カメラはまたキャビンの各角にある4本のピラーに一体化されてもよい。
【0115】
少なくとも一実施例では、車両1000前方の環境の一部分を含む視野を有するカメラ(たとえば正面カメラ)は周囲のビューに対して使用されて、正面の経路及び障害物を識別しやすくするとともに、コントローラ1036及び/又は制御SoCのうちの1つ又は複数とともに使用されて、占有グリッドの生成及び/又は好ましい車両経路の判定に不可欠な情報の提供を補助してもよい。少なくとも一実施例では、正面カメラを使用して、緊急ブレーキ、歩行者検出、及び衝突回避を限定することなく含む、LIDARと同様の多くのADAS機能が実行されてもよい。少なくとも一実施例では、正面カメラはまた、車線逸脱警告(「LDW」:Lane Departure Warnings)、自律クルーズ・コントロール(「ACC」:Autonomous Cruise Control)、及び/又は交通標識認識などの他の機能を限定することなく含むADASの機能及びシステムのために使用されてもよい。
【0116】
少なくとも一実施例では、たとえばCMOS:complementary metal oxide semiconductor(「相補型金属酸化膜半導体」)カラー撮像装置を含む単眼カメラのプラットフォームを含む様々なカメラが、正面構成で使用されてもよい。少なくとも一実施例では、周囲からビューに入ってくる物体(たとえば歩行者、クロス・トラフィック、又は自転車)を感知するために、広角カメラ1070が使用されてもよい。図10Bには1つの広角カメラ1070しか図示していないが、他の実施例では、車両1000には(ゼロを含む)任意の数の広角カメラが存在してもよい。少なくとも一実施例では、特にニューラル・ネットワークがそれに対してまだ訓練されていない物体について、深度ベースの物体検出のために、任意の数の長距離カメラ1098(たとえば、長距離ビューのステレオ・カメラの対)が使用されてもよい。少なくとも一実施例では、長距離カメラ1098はまた、物体検出及び分類、並びに基本的な物体追跡に使用されてもよい。
【0117】
少なくとも一実施例では、任意の数のステレオ・カメラ1068は、正面構成にも含まれてよい。少なくとも一実施例では、1つ又は複数のステレオ・カメラ1068は、拡張可能な処理ユニットを備えた一体型制御ユニットを含んでもよく、この制御ユニットは、一体型のコントローラ・エリア・ネットワーク(「CAN」:Controller Area Network)又はイーサネット(登録商標)・インターフェースを単一チップ上に有するプログラム可能論理(「FPGA」)及びマルチ・コア・マイクロプロセッサを提供してもよい。少なくとも一実施例では、こうしたユニットは、画像内のすべての点に対する距離推定を含め、車両1000の環境の3Dマップを生成するのに使用されてもよい。少なくとも一実施例では、ステレオ・カメラ1068のうちの1つ又は複数は、限定することなくコンパクト・ステレオ・ビジョン・センサを含んでもよく、このセンサは、車両1000からターゲット物体までの距離を測定し、生成された情報(たとえば、メタデータ)を使用して自律緊急ブレーキ及び車線逸脱警告の機能をアクティブ化することができる2つのカメラ・レンズ(左右に1つずつ)及び画像処理チップを、限定することなく含んでもよい。少なくとも一実施例では、本明細書に記載のものに加えて、又はその代わりに、他のタイプのステレオ・カメラ1068が使用されてもよい。
【0118】
少なくとも一実施例では、車両1000の側方の環境の一部分を含む視野を有するカメラ(たとえば、サイド・ビュー・カメラ)が、周囲のビューのために使用されて、占有グリッドの作製及び更新、並びに側面衝突警告の生成のために使用される情報を提供してもよい。たとえば、少なくとも一実施例では、周囲カメラ1074(たとえば図10Bに図示するように4つの周囲カメラ)を、車両1000に配置することができる。少なくとも一実施例では、周囲カメラ1074は、限定することなく、任意の数及び組合せの広角カメラ、魚眼カメラ、360度カメラ及び/又は同様のカメラを含んでもよい。たとえば、少なくとも一実施例では、4つの魚眼カメラが、車両1000の前方、後方、及び側方に配置されてもよい。少なくとも一実施例では、車両1000は、3つの周囲カメラ1074(たとえば、左、右、及び後方)を使用してもよく、第4の周囲カメラとして、1つ又は複数の他のカメラ(たとえば正面カメラ)を活用してもよい。
【0119】
少なくとも一実施例では、車両1000後方の環境の一部分を含む視野を有するカメラ(たとえば、リア・ビュー・カメラ)が、駐車支援、周囲のビュー、後方衝突警告のために使用されて、占有グリッドの作製及び更新がなされてもよい。少なくとも一実施例では、本明細書に記載の正面カメラとしても好適なカメラ(たとえば、長距離カメラ1098、及び/又は中距離カメラ1076、ステレオ・カメラ1068、赤外線カメラ1072など)を含むが、これらに限定されない多種多様なカメラが使用されてもよい。
【0120】
図10Cは、少なくとも一実施例による図10Aの自律車両1000の実例システム・アーキテクチャを図示するブロック図である。少なくとも一実施例では、図10Cの車両1000の構成要素、特徴、及びシステムのそれぞれは、バス1002を介して接続されるものとして図示される。少なくとも一実施例では、バス1002は、限定することなく、CANデータ・インターフェース(或いは、本明細書において「CANバス」と呼ばれる)を含んでもよい。少なくとも一実施例では、CANは、ブレーキの作動、加速、ブレーキ制御、操縦、フロントガラス・ワイパなどのような、車両1000の様々な特徴及び機能の制御を補助するために使用される車両1000内部のネットワークであってもよい。少なくとも一実施例では、バス1002は、それぞれが独自の一意の識別子(たとえばCAN ID)を有する数十又はさらには数百のノードを有するように構成されてもよい。少なくとも一実施例では、バス1002は、ハンドル角度、対地スピード、エンジンの毎分回転数(「RPM」:revolutions per minute)、ボタン位置、及び/又は他の車両状態インジケータを見いだすように読み取られてもよい。少なくとも一実施例では、バス1002は、ASILのBに準拠したCANバスであってもよい。
【0121】
少なくとも一実施例では、CANに加えて、又はその代わりに、FlexRay及び/又はEthernet(登録商標)プロトコルが使用されてもよい。少なくとも一実施例では、バス1002を形成する任意の数のバスが存在してもよく、これには、限定することなく、ゼロ以上のCANバス、ゼロ以上のFlexRayバス、ゼロ以上のEthernet(登録商標)バス、及び/又は異なるプロトコルを使用するゼロ以上の他のタイプのバスが含まれてもよい。少なくとも一実施例では、2つ以上のバスを使用して異なる機能が実行されてもよく、且つ/又はそれらを使用して冗長性が与えられてもよい。たとえば、第1のバスが衝突回避機能のために使用され、第2のバスが作動制御のために使用されてもよい。少なくとも一実施例では、バス1002の各バスは、車両1000の構成要素のいずれかと通信してもよく、バス1002のうちの2つ以上のバスが対応する構成要素と通信してもよい。少なくとも一実施例では、任意の数のシステム・オン・チップ(「SoC」)1004(SoC1004(A)及びSoC1004(B)など)のそれぞれ、コントローラ1036のそれぞれ、及び/又は車両内の各コンピュータは、同じ入力データ(たとえば、車両1000のセンサからの入力)にアクセス可能であってもよく、CANバスのような共通のバスに接続されてもよい。
【0122】
少なくとも一実施例では、車両1000は、図10Aに関して本明細書に記載するものなど、1つ又は複数のコントローラ1036を含んでもよい。少なくとも一実施例では、コントローラ1036は、様々な機能に使用されてもよい。少なくとも一実施例では、コントローラ1036は、車両1000の様々な他の構成要素及びシステムのうちの任意のものに結合されてもよく、車両1000、車両1000の人工知能、車両1000のインフォテイメント及び/又は他の機能の制御に使用されてもよい。
【0123】
少なくとも一実施例では、車両1000は、任意の数のSoC1004を含んでもよい。少なくとも一実施例では、SoC1004のそれぞれは、限定することなく、中央処理装置(「CPU」)1006、グラフィックス・プロセッシング・ユニット(「GPU」)1008、プロセッサ1010、キャッシュ1012、アクセラレータ1014、データ・ストア1016、及び/又は図示していない他の構成要素及び特徴を含んでもよい。少なくとも一実施例では、車両1000を様々なプラットフォーム及びシステムにおいて制御するために、SoC1004が使用されてもよい。たとえば、少なくとも一実施例では、SoC1004は、1つ又は複数のサーバ(図10Cには示さず)からネットワーク・インターフェース1024を介して地図のリフレッシュ及び/又は更新を得ることができるハイ・デフィニション(「HD」:High Definition)マップ1022を有するシステム(たとえば車両1000のシステム)に組み込まれてもよい。
【0124】
少なくとも一実施例では、CPU1006は、CPUクラスタ、又はCPUコンプレックス(或いは本明細書において「CCPLEX」と呼ばれる)を含んでもよい。少なくとも一実施例では、CPU1006は、複数のコア及び/又はレベル2(「L2」)キャッシュを含んでもよい。たとえば、少なくとも一実施例では、CPU1006は、コヒーレントなマルチプロセッサ構成において8つのコアを含んでもよい。少なくとも一実施例では、CPU1006は、4つのデュアル・コア・クラスタを含んでもよく、ここで各クラスタは、専用のL2キャッシュ(たとえば、2メガバイト(MB)のL2キャッシュ)を有する。少なくとも一実施例では、CPU1006(たとえば、CCPLEX)は、CPU1006のクラスタの任意の組合せを、任意の所与の時間にアクティブ化できるようにする同時のクラスタ動作をサポートするように構成されてもよい。
【0125】
少なくとも一実施例では、CPU1006のうちの1つ又は複数は、電力管理機能を実装してもよく、この機能は限定することなく、以下の特徴のうちの1つ又は複数を含む:個々のハードウェア・ブロックが、アイドル時に自動的にクロック・ゲート制御されて動的電力を節約することができる;割込み待ち(「WFI」:Wait for Interrupt)/イベント待ち(「WFE」:Wait for Event)命令の実行に起因してこうしたコアが能動的に命令を実行していないとき、各コア・クロックをゲート制御することができる;各コアを独立して電力ゲート制御することができる;すべてのコアがクロック・ゲート制御又は電力ゲート制御されるとき、各コア・クラスタを独立してクロック・ゲート制御することができる;且つ/又はすべてのコアが電力ゲート制御されるとき、各コア・クラスタを独立して電力ゲート制御することができる。少なくとも一実施例では、CPU1006はさらに、電力状態を管理するための拡張アルゴリズムを実装してもよく、ここで、許容された電力状態及び予想されるウェイクアップ時間が指定され、コア、クラスタ、及びCCPLEXが入るべき最良の電力状態はどれかを、ハードウェア/マイクロコードが判定する。少なくとも一実施例では、処理コアは、作業がマイクロコードにオフロードされた状態で、電力状態に入る簡単なシーケンスをソフトウェアにおいてサポートしてもよい。
【0126】
少なくとも一実施例では、GPU1008は、統合されたGPU(或いは、本明細書において「iGPU」と呼ばれる)を含んでもよい。少なくとも一実施例では、GPU1008は、プログラム可能であってもよく、並列なワークロードに対して効率的であってもよい。少なくとも一実施例では、GPU1008は、拡張テンソル命令セットを使用してもよい。少なくとも一実施例では、GPU1008は、1つ又は複数のストリーミング・マイクロプロセッサを含んでもよく、ここで各ストリーミング・マイクロプロセッサは、レベル1(「L1」)キャッシュ(たとえば少なくとも96KBのストレージ容量を有するL1キャッシュ)を含んでもよく、2つ以上のストリーミング・マイクロプロセッサは、L2キャッシュ(たとえば、512KBのストレージ容量を有するL2キャッシュ)を共有してもよい。少なくとも一実施例では、GPU1008は、少なくとも8つのストリーミング・マイクロプロセッサを含んでもよい。少なくとも一実施例では、GPU1008は、コンピュート・アプリケーション・プログラミング・インターフェース(API:application programming interface)を使用してもよい。少なくとも一実施例では、GPU1008は、1つ又は複数の並列なコンピューティング・プラットフォーム、及び/又はプログラミング・モデル(たとえば、NVIDIAのCUDAモデル)を使用してもよい。
【0127】
少なくとも一実施例では、GPU1008のうちの1つ又は複数は、自動車用及び組み込まれたユース・ケースにおいて最良の性能になるように電力最適化されてもよい。たとえば、少なくとも一実施例では、GPU1008は、フィン電界効果トランジスタ(「FinFET」:Fin field-effect transistor)回路上で作製することができる。少なくとも一実施例では、各ストリーミング・マイクロプロセッサは、複数のブロックに区分けされた多数の混合精度の処理コアを組み込んでもよい。たとえば、限定することなく64個のPF32コアと、32個のFP64コアを、4つの処理ブロックに区分けすることができる。少なくとも一実施例では、各処理ブロックに、16個のFP32コア、8個のFP64コア、16個のINT32コア、深層学習の行列演算用の2つの混合精度のNVIDIA Tensorコア、レベルゼロ(「L0」)命令キャッシュ、スケジューラ(たとえば、ワープ・スケジューラ)若しくはシーケンサ、ディスパッチ・ユニット、及び/又は64KBのレジスタ・ファイルを配分することができる。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、整数と浮動小数点の独立した並列のデータ経路を含み、コンピュータ処理とアドレッシング計算を混用することによってワークロードの効率的な実行を実現してもよい。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、独立したスレッド・スケジューリング機能を含み、並列スレッド間でよりきめ細かい同期及び連携を可能にしてもよい。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、性能を向上させると同時にプログラミングを簡単にするために、L1データ・キャッシュと共有メモリの複合ユニットを含んでもよい。
【0128】
少なくとも一実施例では、GPU1008のうちの1つ又は複数は、高帯域幅メモリ(「HBM」:high bandwidth memory)及び/又は16GBのHBM2メモリ・サブシステムを含み、いくつかの実例では、約900GB/秒のピーク・メモリ帯域幅を提供してもよい。少なくとも一実施例では、HBMメモリに加えて、又はその代わりに、グラフィックス・ダブル・データ・レート・タイプ5の同期ランダム・アクセス・メモリ(「GDDR5」:graphics double data rate type five)などの同期グラフィックス・ランダム・アクセス・メモリ(「SGRAM」:synchronous graphics random-access memory)が使用されてもよい。
【0129】
少なくとも一実施例では、GPU1008は、統合メモリ技術を含んでもよい。少なくとも一実施例では、アドレス・トランスレーション・サービス(「ATS」:address translation services)サポートを使用して、GPU1008が、CPU1006のページ・テーブルに直接アクセスできるようにしてもよい。少なくとも一実施例では、GPU1008メモリ管理ユニット(「MMU」:memory management unit)のGPUがミスに遭遇したときには、アドレス・トランスレーション要求が、CPU1006に送信されてもよい。少なくとも一実施例では、それに応答して、CPU1006のうちの2つのCPUは、自らのページ・テーブルで、仮想から物理へのアドレスのマッピングを探し、トランスレーションをGPU1008に送り返してもよい。少なくとも一実施例では、統合メモリ技術は、CPU1006とGPU1008の両方のメモリに対して単一の統合された仮想アドレス空間を与えることを可能にし得、それにより、GPU1008のプログラミング、及びGPU1008へのアプリケーションの移植を簡単にする。
【0130】
少なくとも一実施例では、GPU1008は、他のプロセッサのメモリへのGPU1008のアクセス頻度を記録することができる任意の数のアクセス・カウンタを含んでもよい。少なくとも一実施例では、アクセス・カウンタは、最も頻繁にページにアクセスしているプロセッサの物理メモリに、メモリ・ページが確実に移動されるのを補助し、それにより、プロセッサ間で共有されるメモリ範囲の効率を向上させてもよい。
【0131】
少なくとも一実施例では、SoC1004のうちの1つ又は複数は、本明細書に記載のものを含む任意の数のキャッシュ1012を含んでもよい。たとえば、少なくとも一実施例では、キャッシュ1012は、CPU1006とGPU1008の両方が利用可能な(たとえば、CPU1006とGPU1008に接続された)レベル3(「L3」)キャッシュを含むことができる。少なくとも一実施例では、キャッシュ1012は、キャッシュ・コヒーレンス・プロトコルなど(たとえば、MEI、MESI、MSIなど)を使用することにより、線の状態を記録することができるライト・バック・キャッシュを含んでもよい。少なくとも一実施例では、L3キャッシュは、実施例に応じて4MBのメモリ以上を含んでもよいが、より小さいキャッシュ・サイズが使用されてもよい。
【0132】
少なくとも一実施例では、SoC1004のうちの1つ又は複数は、1つ又は複数のアクセラレータ1014(たとえば、ハードウェア・アクセラレータ、ソフトウェアアクセラレータ、又はこれらの組合せ)を含んでもよい。少なくとも一実施例では、SoC1004は、最適化されたハードウェア・アクセラレータ及び/又は大型のオン・チップ・メモリを含むことができるハードウェア加速クラスタを含んでもよい。少なくとも一実施例では、大型のオン・チップ・メモリ(たとえば、4MBのSRAM)は、ハードウェア加速クラスタが、ニューラル・ネットワーク及び他の計算を加速できるようにしてもよい。少なくとも一実施例では、ハードウェア加速クラスタを使用して、GPU1008を補完し、GPU1008のタスクのうちのいくつかをオフロードしてもよい(たとえば、他のタスクを実行するようにGPU1008のサイクルをより多く解放してもよい)。少なくとも一実施例では、加速を受け入れるのに十分なほど安定している目的とするワークロード(たとえば、知覚、畳み込みニューラル・ネットワーク(「CNN」)、再帰ニューラル・ネットワーク(「RNN」:recurrent neural network)など)のために、アクセラレータ1014を使用することができる。少なくとも一実施例では、CNNは、領域ベースの、すなわち領域畳み込みニューラル・ネットワーク(「RCNN」:regional convolutional neural network)、及び(たとえば、物体検出に使用される)高速RCNN、又は他のタイプのCNNを含んでもよい。
【0133】
少なくとも一実施例では、アクセラレータ1014(たとえば、ハードウェア加速クラスタ)は、1つ又は複数の深層学習アクセラレータ(「DLA」:deep learning accelerator)を含んでもよい。少なくとも一実施例では、DLAは、限定することなく、1つ又は複数のTensor処理ユニット(「TPU」:Tensor processing units)を含んでもよく、このユニットは、深層学習アプリケーション及び推論のために、さらに毎秒10兆の演算を提供するように構成されてもよい。少なくとも一実施例では、TPUは、画像処理機能(たとえば、CNN、RCNNなど)を実行するように構成され、そのために最適化されたアクセラレータであってもよい。少なくとも一実施例では、DLAはさらに、ニューラル・ネットワーク・タイプと浮動小数点演算の特定のセット、並びに推論のために最適化されてもよい。少なくとも一実施例では、DLAの設計により、典型的な汎用GPUよりもミリメートル当たりの性能を向上させることができ、典型的には、CPUの性能を大いに上回る。少なくとも一実施例では、TPUは、たとえば特徴と重みの両方のためのINT8、INT16、及びFP16のデータ型をサポートする単一インスタンスの畳み込み機能、並びにプロセッサ後機能を含む、いくつかの機能を実行してもよい。少なくとも一実施例では、DLAは、たとえば、限定することなく、カメラ・センサからのデータを使用した物体識別及び検出のためのCNN、カメラ・センサからのデータを使用した距離推定のためのCNN、マイクロフォンからのデータを使用した緊急車両検出、及び識別、及び検出のためのCNN、カメラ・センサからのデータを使用した顔認識及び車両所有者識別ためのCNN、並びに/又はセキュリティ及び/若しくは安全に関するイベントのためのCNNを含め、様々な機能のうちのいずれかのための処理済み若しくは未処理のデータに対して、迅速且つ効率的にニューラル・ネットワーク、特にCNNを実行してもよい。
【0134】
少なくとも一実施例では、DLAは、GPU1008の任意の機能を実行してもよく、たとえば推論アクセラレータを使用することにより、設計者は、任意の機能のためにDLA又はGPU1008のいずれかをターゲットにしてもよい。たとえば、少なくとも一実施例では、設計者は、CNN及び浮動小数点演算の処理をDLAに集中させ、他の機能をGPU1008及び/又はアクセラレータ1014に任せてもよい。
【0135】
少なくとも一実施例では、アクセラレータ1014は、プログラマブル・ビジョン・アクセラレータ(「PVA」:programmable vision accelerator)を含んでもよく、このプログラマブル・ビジョン・アクセラレータは、本明細書において代替的にコンピュータ・ビジョン・アクセラレータと呼ばれてもよい。少なくとも一実施例では、PVAは、先進ドライバ支援システム(「ADAS」)1038、自律運転、拡張現実(「AR」:augmented reality)アプリケーション、及び/又は仮想現実(「VR」:virtual reality)アプリケーションのために、コンピュータ・ビジョン・アルゴリズムを加速するように設計及び構成されてもよい。少なくとも一実施例では、PVAにより、性能と融通性との間の均衡が与えられてもよい。たとえば、少なくとも一実施例では、各PVAは、たとえば限定することなく、任意の数の縮小命令セット・コンピュータ(「RISC」:reduced instruction set computer)コア、ダイレクト・メモリ・アクセス(「DMA」:direct memory access)、及び/又は任意の数のベクトル・プロセッサを含んでもよい。
【0136】
少なくとも一実施例では、RISCコアは、画像センサ(たとえば、本明細書に記載の任意のカメラの画像センサ)、画像信号プロセッサなどと相互作用してもよい。少なくとも一実施例では、各RISCコアは、任意の量のメモリを含んでもよい。少なくとも一実施例では、RISCコアは、実施例に応じて複数のプロトコルのうちの任意のものを使用してもよい。少なくとも一実施例では、RISCコアは、リアルタイム・オペレーティング・システム(「RTOS」:real-time operating system)を実行してもよい。少なくとも一実施例では、RISCコアは、1つ又は複数の集積回路デバイス、特定用途向け集積回路(「ASIC」)、及び/又はメモリ・デバイスを使用して実装されてもよい。たとえば、少なくとも一実施例では、RISCコアは、命令キャッシュ及び/又は密結合RAMを含むことができる。
【0137】
少なくとも一実施例では、DMAは、PVAの構成要素がCPU1006とは無関係にシステム・メモリにアクセスできるようにしてもよい。少なくとも一実施例では、DMAは、多次元アドレッシング及び/又はサーキュラ・アドレッシングをサポートすることを含むがこれらに限定されない、PVAに最適化を提供するために使用される任意の数の特徴をサポートしてもよい。少なくとも一実施例では、DMAは、6つ以上のアドレッシング次元までをサポートしてもよく、これには、限定することなく、ブロック幅、ブロック高さ、ブロック深度、水平ブロック・ステッピング、垂直ブロック・ステッピング、及び/又は深度ステッピングが含まれてもよい。
【0138】
少なくとも一実施例では、ベクトル・プロセッサは、コンピュータ・ビジョン・アルゴリズムのためのプログラミングを効率的でフレキシブルに実行するように設計されてもよいプログラム可能なプロセッサとすることができ、信号処理機能を提供する。少なくとも一実施例では、PVAは、PVAコアと、2つのベクトル処理サブシステム・パーティションを含んでもよい。少なくとも一実施例では、PVAコアは、プロセッサ・サブシステム、DMAエンジン(たとえば2つのDMAエンジン)、及び/又は他の周辺装置を含んでもよい。少なくとも一実施例では、ベクトル処理サブシステムは、PVAの一次処理エンジンとして動作してもよく、ベクトル処理ユニット(「VPU」:vector processing unit)、命令キャッシュ、及び/又はベクトル・メモリ(たとえば、「VMEM」)を含んでもよい。少なくとも一実施例では、VPUコアは、たとえば単一命令複数データ(「SIMD」:single instruction, multiple data)、超長命令語(「VLIW」:very long instruction word)のデジタル信号プロセッサなどのデジタル信号プロセッサを含んでもよい。少なくとも一実施例では、SIMDとVLIWの組合せによって、スループット及びスピードが改善されてもよい。
【0139】
少なくとも一実施例では、ベクトル・プロセッサのそれぞれは、命令キャッシュを含んでもよく、専用のメモリに結合されてもよい。その結果、少なくとも一実施例では、ベクトル・プロセッサのそれぞれは、他のベクトル・プロセッサとは無関係に実行されるように構成されてもよい。少なくとも一実施例では、特定のPVAに含まれるベクトル・プロセッサは、データ並列処理を用いるように構成されてもよい。たとえば、少なくとも一実施例では、単一のPVAに含まれる複数のベクトル・プロセッサは、共通のコンピュータ・ビジョン・アルゴリズムを画像の異なる領域上で実行してもよい。少なくとも一実施例では、特定のPVAに含まれるベクトル・プロセッサは、異なるコンピュータ・ビジョン・アルゴリズムを1つの画像上で同時に実行してもよく、又はさらには、異なるアルゴリズムを連続した画像上で、若しくは画像の部分上で実行してもよい。少なくとも一実施例では、とりわけ、任意の数のPVAがハードウェア加速クラスタに含まれてもよく、任意の数のベクトル・プロセッサが各PVAに含まれてもよい。少なくとも一実施例では、PVAは、システムの全体的な安全性を強化するために、追加のエラー訂正コード(「ECC」:Error Correction Code)メモリを含んでもよい。
【0140】
少なくとも一実施例では、アクセラレータ1014は、オン・チップのコンピュータ・ビジョン・ネットワーク、及びスタティック・ランダム・アクセス・メモリ(「SRAM」)を含み、アクセラレータ1014のための高帯域幅、低レイテンシのSRAMを提供してもよい。少なくとも一実施例では、オン・チップ・メモリは、たとえば限定することなく、8つのフィールド設定可能なメモリ・ブロックを含む少なくとも4MBのSRAMを含んでもよく、これは、PVAとDLAの両方によってアクセス可能であってもよい。少なくとも一実施例では、メモリ・ブロックの各対は、アドバンスト・ペリフェラル・バス(「APB」:advanced peripheral bus)インターフェース、構成回路、コントローラ、及びマルチプレクサを含んでもよい。少なくとも一実施例では、任意のタイプのメモリが使用されてもよい。少なくとも一実施例では、PVA及びDLAは、メモリへの高速アクセスをPVA及びDLAに提供するバックボーンを介して、メモリにアクセスしてもよい。少なくとも一実施例では、バックボーンは、PVA及びDLAを(たとえばAPBを使用して)メモリに相互接続するオン・チップのコンピュータ・ビジョン・ネットワークを含んでもよい。
【0141】
少なくとも一実施例では、オン・チップのコンピュータ・ビジョン・ネットワークは、任意の制御信号/アドレス/データを送信する前に、PVAとDLAの両方が準備信号及び有効信号を提供することを判定するインターフェースを含んでもよい。少なくとも一実施例では、インターフェースは、制御信号/アドレス/データを送信するための別々の位相及び別々のチャネル、並びに継続的なデータ転送のためのバースト型通信を提供してもよい。少なくとも一実施例では、インターフェースは、国際標準化機構(「ISO」:Organization for Standardization)26262又は国際電気標準会議(「IEC」:International Electrotechnical Commission)61508の規格に準拠してもよいが、他の規格及びプロトコルが使用されてもよい。
【0142】
少なくとも一実施例では、SoC1004のうちの1つ又は複数は、リアルタイム・レイトレーシングのハードウェア・アクセラレータを含んでもよい。少なくとも一実施例では、リアルタイム・レイトレーシングのハードウェア・アクセラレータを使用して、物体の(たとえば世界モデル内での)位置及び範囲が迅速且つ効率的に判定されて、RADAR信号解釈のため、音伝播合成及び/若しくは分析のため、SONARシステムのシミュレーションのため、一般波形の伝播シミュレーションのため、ローカリゼーション及び/若しくは他の機能を目的としたLIDARデータとの比較のため、並びに/又は他の使用法のためのリアルタイムの可視化シミュレーションが生成されてもよい。
【0143】
少なくとも一実施例では、アクセラレータ1014は、自律運転のための多様な使用法を有することができる。少なくとも一実施例では、PVAは、ADAS及び自律車両の主要な処理ステージに使用することができる。少なくとも一実施例では、PVAの性能は、低電力及び低レイテンシの予測可能な処理を必要とするアルゴリズム・ドメインに良好に適合する。言い換えれば、PVAは、低レイテンシ及び低電力の予測可能なランタイムを必要とするかもしれない半稠密(semi-dense)又は稠密な規則的計算に対して、データ・セットが小さくても良好に実行する。少なくとも一実施例では、車両1000内など、古典的なコンピュータ・ビジョン・アルゴリズムを実行するようにPVAが設計され得るが、これは、それらが、物体検出及び整数数値の演算に有効となり得るからである。
【0144】
たとえば、技術の少なくとも一実施例によれば、PVAを使用して、コンピュータ・ステレオ・ビジョンが実行されてもよい。少なくとも一実施例では、いくつかの実例においてセミ・グローバル・マッチングに基づくアルゴリズムが使用されてもよいが、これは限定するものではない。少なくとも一実施例では、レベル3~5の自律運転のためのアプリケーションは、動き推定/ステレオ・マッチング(たとえば、動きからの構造化、歩行者認識、車線検出など)をオン・ザ・フライで使用する。少なくとも一実施例では、PVAは、2つの単眼カメラからの入力に対して、コンピュータ・ステレオ・ビジョン機能を実行してもよい。
【0145】
少なくとも一実施例では、PVAを使用して、高密度オプティカル・フローが実行されてもよい。たとえば、少なくとも一実施例では、PVAは、未加工のRADARデータを(たとえば4Dの高速フーリエ変換を使用して)処理して、処理済みRADARデータを提供することができる。少なくとも一実施例では、PVAは、飛行時間の深度処理に使用され、たとえば未加工の飛行時間データを処理することにより、処理済みの飛行時間データが提供される。
【0146】
少なくとも一実施例では、たとえば限定することなく、物体検出ごとに信頼性の尺度を出力するニューラル・ネットワークを含む、制御及び運転の安全性を強化するための任意のタイプのネットワークを実行するために、DLAが使用されてもよい。少なくとも一実施例では、信頼性は、他の検出と比較した各検出の確率として、若しくはその相対的な「重み」を提供するものとして表されても、又は解釈されてもよい。少なくとも一実施例では、信頼性尺度によって、どの検出を偽陽性検出ではなく真陽性検出とみなすべきかに関して、システムがさらなる判定を下せるようになる。少なくとも一実施例では、システムは、信頼性に対して閾値を設定し、閾値を超える検出だけを真陽性検出とみなしてもよい。自動緊急ブレーキ(「AEB」:automatic emergency braking)システムが使用される実施例では、偽陽性検出によって車両は自動的に緊急ブレーキをかけることになり、これは明らかに望ましくない。少なくとも一実施例では、非常に信頼性の高い検出が、AEBのトリガとみなされてもよい。少なくとも一実施例では、DLAは、信頼値を回帰するようにニューラル・ネットワークを実行してもよい。少なくとも一実施例では、ニューラル・ネットワークは、とりわけ境界ボックスの次元、(たとえば別のサブシステムから)取得した地面推定、車両1000の配向と相関しているIMUセンサ1066からの出力、距離、ニューラル・ネットワーク及び/又は他のセンサ(たとえば、LIDARセンサ1064若しくはRADARセンサ1060)から取得した物体の3Dロケーション推定などのパラメータの少なくともいくつかのサブセットを、その入力として取ってもよい。
【0147】
少なくとも一実施例では、SoC1004のうちの1つ又は複数は、データ・ストア1016(たとえばメモリ)を含んでもよい。少なくとも一実施例では、データ・ストア1016は、SoC1004のオン・チップ・メモリであってもよく、このメモリは、GPU1008及び/又はDLA上で実行されるニューラル・ネットワークを記憶してもよい。少なくとも一実施例では、データ・ストア1016の容量は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分なほど大きくてもよい。少なくとも一実施例では、データ・ストア1016は、L2又はL3のキャッシュを備えてもよい。
【0148】
少なくとも一実施例では、SoC1004のうちの1つ又は複数は、任意の数のプロセッサ1010(たとえば、組み込みプロセッサ)を含んでもよい。少なくとも一実施例では、プロセッサ1010は、ブート電力並びに管理機能及び関連するセキュリティ執行に対処するための専用プロセッサ及びサブシステムであってもよいブート及び電力管理プロセッサを含んでもよい。少なくとも一実施例では、ブート及び電力管理プロセッサは、SoC1004のブート・シーケンスの一部であってもよく、ランタイム電力管理サービスを提供してもよい。少なくとも一実施例では、ブート電力及び管理プロセッサは、クロックと電圧のプログラミング、システムの低電力状態への移行の支援、SoC1004の熱及び温度センサの管理、並びに/又はSoC1004の電力状態の管理を提供してもよい。少なくとも一実施例では、各温度センサは、その出力周波数が温度に比例するリング発振器として実装されてもよく、SoC1004は、リング発振器を使用して、CPU1006、GPU1008、及び/又はアクセラレータ1014の温度を検出してもよい。少なくとも一実施例では、温度が閾値を超えると判定された場合には、ブート及び電力管理プロセッサは、温度不良ルーチンに入り、SoC1004を低電力状態にし、且つ/又は車両1000を運転手-安全停止モードにしても(たとえば、車両1000を安全停止させる)よい。
【0149】
少なくとも一実施例では、プロセッサ1010はさらに、オーディオ処理エンジンとしての役割を果たすことができる組み込みプロセッサのセットを含んでもよく、これは、多重インターフェースを介した多チャネルのオーディオ、及び幅広くフレキシブルな様々なオーディオI/Oインターフェースのための、完全なハードウェア・サポートを可能にするオーディオ・サブシステムであってもよい。少なくとも一実施例では、オーディオ処理エンジンは、専用RAMのあるデジタル信号プロセッサを有する専用プロセッサ・コアである。
【0150】
少なくとも一実施例では、プロセッサ1010はさらに、低電力センサ管理及び立ち上げのユース・ケースをサポートするのに必要なハードウェア特徴を提供することができる常時オン・プロセッサ・エンジンを含んでもよい。少なくとも一実施例では、常時オン・プロセッサ・エンジンは、限定することなく、プロセッサ・コア、密結合RAM、サポート周辺装置(たとえば、タイマ、及び割込みコントローラ)、様々なI/Oコントローラ周辺装置、及びルーティング論理を含んでもよい。
【0151】
少なくとも一実施例では、プロセッサ1010はさらに安全クラスタ・エンジンを含んでもよく、このエンジンは限定することなく、自動車用途の安全管理に対処するための専用のプロセッサ・サブシステムを含む。少なくとも一実施例では、安全クラスタ・エンジンは、限定することなく、2つ以上のプロセッサ・コア、密結合RAM、サポート周辺装置(たとえば、タイマ、及び割込みコントローラなど)、及び/又はルーティング論理を含んでもよい。安全モードでは、少なくとも一実施例においてロックステップ・モードで2つ以上のコアが動作し、これらの動作間で何らかの差を検出するための比較論理を有する単一コアとして機能してもよい。少なくとも一実施例では、プロセッサ1010はさらにリアルタイム・カメラ・エンジンを含んでもよく、このエンジンは限定することなく、リアルタイムのカメラ管理に対処するための専用のプロセッサ・サブシステムを含んでもよい。少なくとも一実施例では、プロセッサ1010はさらに、高ダイナミック・レンジの信号プロセッサを含んでもよく、この信号プロセッサは、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサを限定することなく含んでもよい。
【0152】
少なくとも一実施例では、プロセッサ1010は、ビデオ画像合成器を含んでもよく、この合成器は、再生装置のウインドウに最終画像を生成するのにビデオ再生アプリケーションが必要とするビデオ後処理機能を実装する(たとえばマイクロプロセッサに実装された)処理ブロックであってもよい。少なくとも一実施例では、ビデオ画像合成器は、広角カメラ1070、周囲カメラ1074、及び/又はキャビン内監視カメラ・センサに対して、レンズゆがみ補正を実行してもよい。少なくとも一実施例では、キャビン内監視カメラ・センサは、好ましくは、キャビン内のイベントを識別し、それに適宜応答するように構成された、SoC1004の別のインスタンスで実行されているニューラル・ネットワークによって監視される。少なくとも一実施例では、キャビン内システムは、セルラー・サービスをアクティブ化し、電話をかけたり、電子メールを書いたり、車両の行き先を変更したり、車両のインフォテイメント・システム及び設定をアクティブ化又は変更したり、音声作動式のウェブ・サーフィンを提供したりするために、限定することなく読唇を実行してもよい。少なくとも一実施例では、ある一定の機能は、車両が自律モードで動作しているときにドライバにとって利用可能になり、それ以外のときには使用不可になる。
【0153】
少なくとも一実施例では、ビデオ画像合成器は、空間と時間の両方のノイズ低減のための拡張された時間的ノイズ低減を含んでもよい。たとえば、少なくとも一実施例では、ビデオで動きが生じる場合には、ノイズ低減が空間情報に適切に重み付けして、隣接するフレームによって提供される情報の重みを軽くする。少なくとも一実施例では、画像又は画像の一部分が動きを含まない場合には、ビデオ画像合成器により実行される時間的ノイズ低減は、前の画像からの情報を使用して、現在の画像のノイズを低減してもよい。
【0154】
少なくとも一実施例では、ビデオ画像合成器はまた、入力されたステレオ・レンズ・フレームに対してステレオ修正を実行するように構成されてもよい。少なくとも一実施例では、ビデオ画像合成器はさらに、オペレーティング・システムのデスクトップが使用中のときに、ユーザ・インターフェースの合成のために使用されてもよく、GPU1008は、新規の表面を継続的にレンダリングする必要がなくなる。少なくとも一実施例では、GPU1008の電源が入れられ、アクティブで3Dレンダリングを行っているとき、性能及び応答性を向上させるために、ビデオ画像合成器を使用してGPU1008をオフロードしてもよい。
【0155】
少なくとも一実施例では、SoC1004のうちの1つ又は複数のSoCはさらに、ビデオ及びカメラからの入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(「MIPI」:mobile industry processor interface)のカメラ直列インターフェース、高速インターフェース、並びに/又はカメラ及び関連ピクセルの入力機能に使用されてもよいビデオ入力ブロックを含んでもよい。少なくとも一実施例では、SoC1004のうちの1つ又は複数はさらに、入力/出力コントローラを含んでもよく、このコントローラはソフトウェアによって制御されてもよく、特定の役割に縛られていないI/O信号を受信するために使用されてもよい。
【0156】
少なくとも一実施例では、SoC1004のうちの1つ又は複数のSoCはさらに、周辺装置、オーディオ・エンコーダ/デコーダ(「コーデック」)、電力管理、及び/又は他の装置との通信を可能にするための幅広い周辺装置インターフェースを含んでもよい。少なくとも一実施例では、SoC1004は、(たとえば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット(登録商標)チャネルを介して接続された)カメラからのデータ、センサ(たとえば、イーサネット(登録商標)チャネルを介して接続されてもよいLIDARセンサ1064、RADARセンサ1060など)、バス1002からのデータ(たとえば、車両1000のスピード、ハンドル位置など)、(たとえば、イーサネット(登録商標)バス又はCANバスを介して接続された)GNSSセンサ1058からのデータなどを処理するために使用されてもよい。少なくとも一実施例では、SoC1004のうちの1つ又は複数のSoCはさらに、専用の高性能大容量ストレージ・コントローラを含んでもよく、このコントローラは独自のDMAエンジンを含んでもよく、ルーチンのデータ管理タスクからCPU1006を解放するために使用されてもよい。
【0157】
少なくとも一実施例では、SoC1004は、自動化レベル3~5に及ぶフレキシブルなアーキテクチャを有するエンドツーエンドのプラットフォームであってもよく、それにより、多様性及び冗長性を得るためにコンピュータ・ビジョン及びADAS技法を活用し効率的に利用する包括的な機能的安全性アーキテクチャが提供され、フレキシブルで、信頼性の高い運転ソフトウェア・スタックのプラットフォームが、深層学習ツールとともに提供される。少なくとも一実施例では、SoC1004は、従来のシステムより高速で、信頼性が高く、さらにはエネルギー効率及び空間効率がより高いものであり得る。たとえば、少なくとも一実施例では、アクセラレータ1014は、CPU1006、GPU1008、及びデータ・ストア1016と組み合わされると、レベル3~5の自律車両のための高速で効率的なプラットフォームを実現することができる。
【0158】
少なくとも一実施例では、コンピュータ・ビジョン・アルゴリズムはCPU上で実行されてもよく、このアルゴリズムは、Cなどの高レベル・プログラミング言語を使用して構成されて、多様な視覚データにわたって多様な処理アルゴリズムを実行してもよい。しかし、少なくとも一実施例では、CPUは、多くのコンピュータ・ビジョン・アプリケーションの性能要件、たとえば実行時間及び電力消費に関する要件などを満足できないことが多い。少なくとも一実施例では、多くのCPUは、車両内のADASアプリケーション及び現実的なレベル3~5の自律車両において使用される複雑な物体検出アルゴリズムを、リアルタイムで実行することができない。
【0159】
本明細書に記載の実施例は、複数のニューラル・ネットワークを同時に且つ/又は順番に実行できるようにし、結果を一緒に組み合わせて、レベル3~5の自律運転機能を可能にすることができる。たとえば、少なくとも一実施例では、DLA又は個別GPU(たとえば、GPU1020)上で実行しているCNNは、テキスト及び単語認識を含んでもよく、ニューラル・ネットワークがそれについて特に訓練されてこなかった標識を含む交通標識を読み、理解できるようにする。少なくとも一実施例では、DLAはさらに、標識を識別し、解釈し、標識の意味的理解を提供することができ、その意味的理解を、CPUコンプレックス上で実行されている経路計画モジュールに渡すことができるニューラル・ネットワークを含んでもよい。
【0160】
少なくとも一実施例では、レベル3、4、又は5の運転に関して、複数のニューラル・ネットワークが同時に実行されてもよい。たとえば、少なくとも一実施例では、電光と併せて「注意:点滅時は凍結状態」と示される警告標識は、いくつかのニューラル・ネットワークによって別々に解釈されても、集合的に解釈されてもよい。少なくとも一実施例では、こうした警告標識自体は、第1の導入済みニューラル・ネットワーク(たとえば、訓練されてきたニューラル・ネットワーク)によって交通標識として識別されてもよく、「点滅時は凍結状態」という文字は、第2の導入済みニューラル・ネットワークによって解釈されてもよく、点滅光が検出された場合には、このニューラル・ネットワークが、凍結状態が存在することを車両の(好ましくはCPUコンプレックス上で実行している)経路計画ソフトウェアに通知する。少なくとも一実施例では、点滅光は、第3の導入済みニューラル・ネットワークを複数のフレームにわたって動作させることによって識別されてもよく、点滅光の存在(又は存在しないこと)が、車両の経路計画ソフトウェアに通知される。少なくとも一実施例では、3つすべてのニューラル・ネットワークが、DLA内及び/又はGPU1008上などで同時に実行されてもよい。
【0161】
少なくとも一実施例では、顔認識及び車両所有者識別のためのCNNは、カメラ・センサからのデータを使用して、車両1000の承認済みのドライバ及び/又は所有者の存在を識別してもよい。少なくとも一実施例では、常時オンのセンサ処理エンジンを使用して、所有者がドライバ用ドアに近づいてきたときに車両を解錠し、ライトを点灯させ、所有者がこうした車両から離れるときには、セキュリティ・モードでこうした車両を使用不可にしてもよい。こうして、SoC1004は、窃盗及び/又は自動車乗っ取りに対するセキュリティを実現する。
【0162】
少なくとも一実施例では、緊急車両の検出及び識別のためのCNNは、マイクロフォン1096からのデータを使用して、緊急車両のサイレンを検出及び識別してもよい。少なくとも一実施例では、SoC1004は、環境及び市街地の音を分類するとともに、視覚データを分類するためにCNNを使用する。少なくとも一実施例では、DLA上で実行されるCNNは、緊急車両が近づいてくる相対的なスピードを(たとえばドップラ効果を使用することによって)識別するように訓練される。少なくとも一実施例では、CNNはまた、GNSSセンサ1058によって識別される、車両が稼働している地域に特有の緊急車両を識別するように訓練されてもよい。少なくとも一実施例では、欧州で稼働している場合には、CNNは欧州のサイレンを検出しようとし、北米の場合には、CNNは北米のサイレンだけを識別しようとする。少なくとも一実施例では、緊急車両が検出されると、緊急車両安全ルーチンを実行するための制御プログラムを使用して、車両の速度を落とし、道路脇に寄せ、車両を停止させ、且つ/又は緊急車両が通過するまで、超音波センサ1062に支援された車両をアイドリングにしてもよい。
【0163】
少なくとも一実施例では、車両1000はCPU1018(たとえば、個別CPU又はdCPU)を含んでもよく、このCPUは高速相互接続(たとえば、PCIe)を介してSoC1004に結合されてもよい。少なくとも一実施例では、CPU1018は、たとえばX86プロセッサを含んでもよい。CPU1018は、たとえば、ADASセンサとSoC1004との間で潜在的に不整合な結果を調停すること、並びに/又はコントローラ1036及び/若しくはチップ上のインフォテイメント・システム(「インフォテイメントSoC」)1030の状態及び健全性を監視することを含め、様々な機能のうちの任意の機能を実行するために使用されてもよい。少なくとも一実施例では、SoC1004は、1つ又は複数の相互接続を含み、相互接続は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)を含むことができる。
【0164】
少なくとも一実施例では、車両1000はGPU1020(たとえば、個別GPU又はdGPU)を含んでもよく、このGPUは高速相互接続(たとえば、NVIDIAのNVLINKチャネル)を介してSoC1004に結合されてもよい。少なくとも一実施例では、GPU1020は、冗長な及び/又は異なるニューラル・ネットワークを実行することなどによって、追加の人工知能機能を提供してもよく、車両1000のセンサからの入力(たとえば、センサ・データ)に少なくとも部分的に基づき、ニューラル・ネットワークを訓練及び/又は更新するために使用されてもよい。
【0165】
少なくとも一実施例では、車両1000はさらに、ネットワーク・インターフェース1024を含んでもよく、このインターフェースは限定することなく、ワイヤレス・アンテナ1026(たとえば、セルラー・アンテナ、Bluetoothアンテナなど、異なる通信プロトコル向けの1つ又は複数のワイヤレス・アンテナ)を含んでもよい。少なくとも一実施例では、他の車両、及び/又はコンピューティング・デバイス(たとえば、乗員のクライアント・デバイス)とのインターネット・クラウド・サービス(たとえば、サーバ及び/又は他のネットワーク・デバイス)へのワイヤレス接続を可能にするために、ネットワーク・インターフェース1024が使用されてもよい。少なくとも一実施例では、他の車両と通信するために、車両1000と他の車両との間に直接リンクが確立されてもよく、且つ/又は(たとえば、ネットワークにわたって、且つインターネットを介して)間接リンクが確立されてもよい。少なくとも一実施例では、直接リンクは、車車間通信リンクを使用して提供されてもよい。少なくとも一実施例では、車車間通信リンクは、車両1000の近傍の車両(たとえば、車両1000の前方、側方、及び/又は後方の車両)についての情報を車両1000に提供してもよい。少なくとも一実施例では、こうした前述した機能は、車両1000の協調型アダプティブ・クルーズ・コントロール機能の一部であってもよい。
【0166】
少なくとも一実施例では、ネットワーク・インターフェース1024は、変調及び復調の機能を提供し、コントローラ1036がワイヤレス・ネットワークを介して通信できるようにするSoCを含んでもよい。少なくとも一実施例では、ネットワーク・インターフェース1024は、ベースバンドから無線周波数へのアップ・コンバージョン、及び無線周波数からベースバンドへのダウン・コンバージョンのための無線周波数フロント・エンドを含んでもよい。少なくとも一実施例では、周波数変換は、任意の技術的に実行可能なやり方で実行されてもよい。たとえば、周波数変換は、よく知られたプロセスにより、且つ/又はスーパー・ヘテロダイン・プロセスを使用して実行することができる。少なくとも一実施例では、無線周波数フロント・エンド機能は、別個のチップによって提供されてもよい。少なくとも一実施例では、ネットワーク・インターフェースは、LTE、WCDMA(登録商標)、UMTS、GSM、CDMA2000、Bluetooth、Bluetooth LE、Wi-Fi、Z-Wave、ZigBee、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介して通信するためのワイヤレス機能を含んでもよい。
【0167】
少なくとも一実施例では、車両1000はさらにデータ・ストア1028を含んでもよく、このデータ・ストアは限定することなく、オフ・チップ(たとえばSoC1004上にない)ストレージを含んでもよい。少なくとも一実施例では、データ・ストア1028は、RAM、SRAM、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)、ビデオ・ランダム・アクセス・メモリ(「VRAM」:video random-access memory)、フラッシュ・メモリ、ハード・ディスク、並びに/又は少なくとも1ビットのデータを記憶することができる他の構成要素及び/若しくはデバイスを含む1つ若しくは複数のストレージ要素を、限定することなく含んでもよい。
【0168】
少なくとも一実施例では、車両1000はさらに、マッピング、知覚、占有グリッド生成、及び/又は経路計画の機能を支援するためのGNSSセンサ1058(たとえば、GPS及び/又は補助GPSセンサ)を含んでもよい。少なくとも一実施例では、イーサネット(登録商標)からシリアル(たとえばRS-232)へのブリッジを有するUSBコネクタを使用するGPSをたとえば限定することなく含む任意の数のGNSSセンサ1058が使用されてもよい。
【0169】
少なくとも一実施例では、車両1000はさらに、RADARセンサ1060を含んでもよい。少なくとも一実施例では、RADARセンサ1060は、暗闇及び/又は厳しい気象条件の中でも、長距離の車両検出を行うために車両1000によって使用されてもよい。少なくとも一実施例では、RADARの機能的安全性レベルは、ASIL Bであってもよい。少なくとも一実施例では、RADARセンサ1060は、制御のために(たとえば、RADARセンサ1060によって生成されたデータを送信するために)、また物体追跡データにアクセスするために、CANバス及び/又はバス1002を使用してもよく、いくつかの例では、未加工データにアクセスするためにイーサネット(登録商標)チャネルにアクセスできる。少なくとも一実施例では、多様なタイプのRADARセンサが使用されてもよい。たとえば限定することなく、RADARセンサ1060は、前方、後方、及び側方のRADAR使用に好適であってもよい。少なくとも一実施例では、RADARセンサ1060のうちの1つ又は複数のセンサは、パルス・ドップラRADARセンサである。
【0170】
少なくとも一実施例では、RADARセンサ1060は、狭視野の長距離、広視野の短距離、側面を網羅する短距離などのような、異なる構成を含んでもよい。少なくとも一実施例では、長距離RADARは、アダプティブ・クルーズ・コントロール機能のために使用されてもよい。少なくとも一実施例では、長距離RADARシステムは、2つ以上の独立した走査によって実現される250m(メートル)の範囲内などの広視野を提供してもよい。少なくとも一実施例では、RADARセンサ1060は、静的物体と移動している物体との間を区別しやすくしてもよく、緊急ブレーキ支援及び前方衝突警告を行うためにADASシステム1038によって使用されてもよい。少なくとも一実施例では、長距離RADARシステムに含まれるセンサ1060は、複数の(たとえば6つ以上の)固定RADARアンテナ、並びに高速CAN及びFlexRayインターフェースを有するモノスタティックのマルチモードRADARを、限定することなく含んでもよい。少なくとも一実施例では、6つのアンテナがある場合、中央の4つのアンテナは、隣接した車線内の交通からの干渉が最小の状態で、より高速で車両1000の周囲を記録するように設計された集中したビーム・パターンを生成してもよい。少なくとも一実施例では、他の2つのアンテナは、視野を拡張してもよく、車両1000の車線に入る又はそこから出る車両を迅速に検出するのを可能にする。
【0171】
少なくとも一実施例では、中距離RADARシステムは、一例として最大160m(前方)、又は80m(後方)の範囲、及び最大42度(前方)、又は150度(後方)の視野を含んでもよい。少なくとも一実施例では、短距離RADARシステムは、限定することなく、後方バンパの両端部に設置されるように設計された任意の数のRADARセンサ1060を含んでもよい。後方バンパの両端部に設置されたとき、少なくとも一実施例では、RADARセンサ・システムは、後方向及び車両隣の死角を常に監視する2本のビームを生成してもよい。少なくとも一実施例では、短距離RADARシステムは、死角検出及び/又は車線変更支援を行うために、ADASシステム1038において使用されてもよい。
【0172】
少なくとも一実施例では、車両1000はさらに、超音波センサ1062を含んでもよい。少なくとも一実施例では、超音波センサ1062は、車両1000の前方、後方、及び/又は側方位置に配置されてもよく、駐車支援のため、且つ/又は占有グリッドを生成し更新するために使用されてもよい。少なくとも一実施例では、多様な超音波センサ1062が使用されてもよく、異なる検出範囲(たとえば、2.5m、4m)には異なる超音波センサ1062が使用されてもよい。少なくとも一実施例では、超音波センサ1062は、機能的安全性レベルASIL Bで動作してもよい。
【0173】
少なくとも一実施例では、車両1000は、LIDARセンサ1064を含んでもよい。少なくとも一実施例では、LIDARセンサ1064は、物体及び歩行者の検出、緊急ブレーキ、衝突回避、及び/又は他の機能のために使用されてもよい。少なくとも一実施例では、LIDARセンサ1064は、機能的安全性レベルASIL Bで動作してもよい。少なくとも一実施例では、車両1000は、複数のLIDARセンサ1064(たとえば、2つ、4つ、6つなど)を含んでもよく、これらのセンサは、(たとえばデータをギガビット・イーサネット(登録商標)・スイッチに提供するために)イーサネット(登録商標)チャネルを使用してもよい。
【0174】
少なくとも一実施例では、LIDARセンサ1064は、360度の視野について、物体及びそれらの距離のリストを提供可能であってもよい。少なくとも一実施例では、市販のLIDARセンサ1064は、たとえば宣伝された範囲がおおよそ100mであり、精度が2cm~3cmであり、100Mbpsのイーサネット(登録商標)接続をサポートしてもよい。少なくとも一実施例では、1つ又は複数の非突出型LIDARセンサが使用されてもよい。こうした実施例では、LIDARセンサ1064は、車両1000の前方、後方、側方、及び/又は角位置に組み込むことができる小さいデバイスを含んでもよい。少なくとも一実施例では、こうした実施例のLIDARセンサ1064は、最大120度の水平視野、及び35度の垂直視野を、低反射性の物体に対しても200mの範囲で提供してもよい。少なくとも一実施例では、前方に取り付けられたLIDARセンサ1064は、45度~135度の水平視野のために構成されてもよい。
【0175】
少なくとも一実施例では、3DフラッシュLIDARなどのLIDAR技術も使用されてよい。少なくとも一実施例では、3DフラッシュLIDARは、レーザのフラッシュを送信源として使用して、車両1000の周囲を最大でおおよそ200mまで照射する。少なくとも一実施例では、フラッシュLIDARユニットは、限定することなくレセプタを含み、このレセプタは、レーザ・パルスの通過時間及び各ピクセルにおける反射光を記録し、それらは、車両1000から物体までの範囲に対応する。少なくとも一実施例では、フラッシュLIDARによって、非常に正確でゆがみのない周囲画像が、レーザのフラッシュごとに生成できるようになり得る。少なくとも一実施例では、4つのフラッシュLIDARセンサが、車両1000の各側面に1つ導入されてもよい。少なくとも一実施例では、3DフラッシュLIDARシステムは、ファン以外に可動部品のないソリッド・ステート3D凝視アレイ(staring array)のLIDARカメラ(たとえば、非走査型LIDARデバイス)を、限定することなく含む。少なくとも一実施例では、フラッシュLIDARデバイスは、フレーム当たり5ナノ秒のクラスI(目に安全な)レーザ・パルスを使用してもよく、3D範囲の点群及び位置同期された(co-registered)強度データとして反射レーザ光を捕捉してもよい。
【0176】
少なくとも一実施例では、車両1000はさらに、IMUセンサ1066を含んでもよい。少なくとも一実施例では、IMUセンサ1066は、車両1000の後方車軸の中央に位置付けられてもよい。少なくとも一実施例では、IMUセンサ1066は、たとえば限定することなく、加速度計、磁力計、ジャイロスコープ、磁気コンパス、複数の磁気コンパス及び/又は他のタイプのセンサを含んでもよい。6軸の用途など少なくとも一実施例では、IMUセンサ1066は限定することなく、加速度計及びジャイロスコープを含んでもよい。9軸の用途など少なくとも一実施例では、IMUセンサ1066は限定することなく、加速度計、ジャイロスコープ、及び磁力計を含んでもよい。
【0177】
少なくとも一実施例では、IMUセンサ1066は、微小電気機械システム(「MEMS」:micro-electro-mechanical systems)慣性センサ、高感度GPS受信機、及び先進のKalmanフィルタリング・アルゴリズムを組み合わせて、位置、速度、及び姿勢の推定値を提供する小型の高性能GPS補強型慣性航法システム(「GPS/INS」:GPS-Aided Inertial Navigation System)として実装されてもよい。少なくとも一実施例では、IMUセンサ1066により、車両1000は、速度変化を直接観察しそれをGPSからIMUセンサ1066に相関させることによって、磁気センサからの入力を必要とせずに車両1000の方位を推定できるようになる。少なくとも一実施例では、IMUセンサ1066及びGNSSセンサ1058は、単一の統合ユニットに組み合わされてもよい。
【0178】
少なくとも一実施例では、車両1000は、車両1000の中及び/又はその周りに設置されたマイクロフォン1096を含んでもよい。少なくとも一実施例では、マイクロフォン1096は、とりわけ緊急車両の検出及び識別のために使用されてもよい。
【0179】
少なくとも一実施例では、車両1000はさらに、ステレオ・カメラ1068、広角カメラ1070、赤外線カメラ1072、周囲カメラ1074、長距離カメラ1098、中距離カメラ1076、及び/又は他のカメラ・タイプを含む任意の数のカメラ・タイプを含んでもよい。少なくとも一実施例では、カメラは、車両1000の全周囲の周りで画像データを捕捉するために使用されてもよい。少なくとも一実施例では、どのタイプのカメラが使用されるかは、車両1000に応じて異なる。少なくとも一実施例では、車両1000の周りで必要な被写域を提供するために、カメラ・タイプの任意の組合せが使用されてもよい。少なくとも一実施例では、導入されるカメラの数は、実施例に応じて異なってもよい。たとえば、少なくとも一実施例では、車両1000は6台のカメラ、7台のカメラ、10台のカメラ、12台のカメラ、又は別の数のカメラを含むことができる。少なくとも一実施例では、カメラは、一例として限定することなく、ギガビット・マルチメディア・シリアル・リンク(「GMSL」:Gigabit Multimedia Serial Link)及び/又はギガビット・イーサネット(登録商標)通信をサポートしてもよい。少なくとも一実施例では、各カメラは、図10A及び図10Bに関して本明細書でさらに詳細に上で説明されているようであり得る。
【0180】
少なくとも一実施例では、車両1000はさらに、振動センサ1042を含んでもよい。少なくとも一実施例では、振動センサ1042は、車軸など、車両1000の構成要素の振動を測定してもよい。たとえば、少なくとも一実施例では、振動の変化は、路面の変化を示すことがある。少なくとも一実施例では、2つ以上の振動センサ1042が使用される場合には、路面の摩擦又はすべり量を判定するために振動の差が使用されてもよい(たとえば、動力により駆動される車軸と自由回転する車軸との間に振動差がある場合)。
【0181】
少なくとも一実施例では、車両1000は、ADASシステム1038を含んでもよい。少なくとも一実施例では、ADASシステム1038は、限定することなく、いくつかの例においてSoCを含んでもよい。少なくとも一実施例では、ADASシステム1038は、限定することなく、任意の数及び任意の組合せの、自律/アダプティブ/自動のクルーズ・コントロール(「ACC」:autonomous/adaptive/automatic cruise control)システム、協調型アダプティブ・クルーズ・コントロール(「CACC」:cooperative adaptive cruise control)システム、正面衝突警告(「FCW」:forward crash warning)システム、自動緊急ブレーキ(「AEB」:automatic emergency braking)システム、車線逸脱警告(「LDW」:lane departure warning)システム、車線維持支援(「LKA」:lane keep assist)システム、死角警告(「BSW」:blind spot warning)システム、後方クロス・トラフィック警告(「RCTW」:rear cross-traffic warning)システム、衝突警告(「CW」:collision warning)システム、車線センタリング(「LC」:lane centering)システム、並びに/又は他のシステム、特徴、及び/若しくは機能を含んでもよい。
【0182】
少なくとも一実施例では、ACCシステムは、RADARセンサ1060、LIDARセンサ1064、及び/又は任意の数のカメラを使用してもよい。少なくとも一実施例では、ACCシステムは、縦方向ACCシステム及び/又は横方向ACCシステムを含んでもよい。少なくとも一実施例では、縦方向ACCシステムは、車両1000の直前の別の車両までの距離を監視及び制御し、車両1000のスピードを自動的に調節して、前の車両からの安全な距離を維持する。少なくとも一実施例では、横方向ACCシステムは、距離の維持を実行し、必要なときに車線変更するよう車両1000に通知する。少なくとも一実施例では、横方向ACCは、LC及びCWなどの他のADAS用途に関係する。
【0183】
少なくとも一実施例では、CACCシステムは、他の車両からの情報を使用し、この情報は、ワイヤレス・リンクにより、又は間接的にネットワーク接続を介して(たとえばインターネットを介して)、他の車両からネットワーク・インターフェース1024及び/又はワイヤレス・アンテナ1026により受信されてもよい。少なくとも一実施例では、車車間(「V2V」:vehicle-to-vehicle)通信リンクによって直接リンクが提供されてもよく、一方インフラストラクチャ車間(「I2V」:infrastructure-to-vehicle)通信リンクによって間接リンクが提供されてもよい。一般に、V2V通信は、すぐ前の先行車両(たとえば、車両1000のすぐ前で同じ車線にいる車両)についての情報を提供し、I2V通信は、さらにその前の交通についての情報を提供する。少なくとも一実施例では、CACCシステムは、I2VとV2Vの情報源のいずれか又は両方を含んでもよい。少なくとも一実施例では、車両1000の前の車両についての情報があれば、CACCシステムは信頼性をさらに高めることができ、交通の流れをより円滑にし、路上での渋滞を低減できる可能性を有する。
【0184】
少なくとも一実施例では、FCWシステムは、危険物に対してドライバに忠告するように設計され、それによりこうしたドライバは修正措置を取ることができる。少なくとも一実施例では、FCWシステムは正面カメラ及び/又はRADARセンサ1060を使用し、これらは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックを提供するように電気的に結合されている専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。少なくとも一実施例では、FCWシステムは、音、視覚的警告、振動、及び/又はクイック・ブレーキ・パルスの形などで警告を提供してもよい。
【0185】
少なくとも一実施例では、AEBシステムは、別の車両又は他の物体との差し迫った正面衝突を検出し、指定された時間内又は距離パラメータ内にドライバが修正措置を取らない場合には、自動でブレーキをかけてもよい。少なくとも一実施例では、AEBシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに結合された正面カメラ及び/又はRADARセンサ1060を使用してもよい。少なくとも一実施例では、AEBシステムが危険物を検出したとき、AEBシステムは通常、修正措置を取って衝突を避けるよう最初にドライバに忠告し、ドライバが修正措置を取らない場合には、AEBシステムは、予測される衝突を防ぐ又は少なくともその衝撃を軽減するために自動的にブレーキをかけてもよい。少なくとも一実施例では、AEBシステムは、ダイナミック・ブレーキ・サポート及び/又は衝突直前ブレーキなどの技法を含んでもよい。
【0186】
少なくとも一実施例では、LDWシステムは、車両1000が車線の目印に交差したときにドライバに忠告するために、ハンドル又は座席の振動など、視覚的、聴覚的、及び/又は触覚的な警告を提供する。少なくとも一実施例では、ドライバが方向指示器を作動させることなどによって意図的な車線逸脱を示す場合には、LDWシステムは作動しない。少なくとも一実施例では、LDWシステムは、正面カメラを使用してもよく、これは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックを提供するように電気的に結合された専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。少なくとも一実施例では、LKAシステムは、LDWシステムの変形形態である。少なくとも一実施例では、LKAシステムは、車両1000が車両1000の車線からはみ出し始めた場合に、車両1000を修正するように操縦入力又はブレーキ制御を提供する。
【0187】
少なくとも一実施例では、BSWシステムは、自動車の死角にある車両を検出し、ドライバに警告する。少なくとも一実施例では、BSWシステムは、視覚的、聴覚的、及び/又は触覚的なアラートを提供して、合流又は車線変更が安全ではないことを示してもよい。少なくとも一実施例では、BSWシステムは、ドライバが方向指示器を使用したときに追加の警告を提供してもよい。少なくとも一実施例では、BSWシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに結合された背面カメラ及び/又はRADARセンサ1060を使用してもよく、これらの専用のプロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合されている。
【0188】
少なくとも一実施例では、RCTWシステムは、車両1000の後退時に、後方カメラの範囲外に物体が検出されたときに、視覚的、聴覚的、及び/又は触覚的な通知を提供してもよい。少なくとも一実施例では、RCTWシステムは、衝突を回避するために確実に車両ブレーキがかけられるように、AEBシステムを含む。少なくとも一実施例では、RCTWシステムは、1つ又は複数の背面RADARセンサ1060を使用してもよく、これはディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックを提供するように電気的に結合された専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。
【0189】
少なくとも一実施例では、従来のADASシステムは、偽陽性結果を出しがちなことがあり、これはドライバにとっては迷惑で気が散るものであり得るが、通常は大したことにはならない。なぜなら、従来のADASシステムは、ドライバに忠告し、安全を要する状態が本当に存在し、それに適宜対応するかどうかを、ドライバが判断できるようにするからである。少なくとも一実施例では、結果が矛盾する場合、一次コンピュータ又は二次コンピュータ(たとえば、コントローラ1036の第1のコントローラ又は第2のコントローラ)からの結果に従うかどうかを、車両1000自体が判断する。たとえば、少なくとも一実施例では、ADASシステム1038は、バックアップ・コンピュータの合理性モジュールに知覚情報を提供するための、バックアップ及び/又は二次コンピュータであってもよい。少なくとも一実施例では、バックアップ・コンピュータの合理性モニタが、ハードウェア構成要素上の冗長性の多様なソフトウェアを実行して、知覚の誤り及び動的な運転タスクを検出してもよい。少なくとも一実施例では、ADASシステム1038からの出力は、監視MCUに提供されてもよい。少なくとも一実施例では、一次コンピュータからの出力と二次コンピュータからの出力とが矛盾する場合には、監視MCUが、安全な動作を確保するために矛盾をどのように調和させるかを判定する。
【0190】
少なくとも一実施例では、一次コンピュータは、一次コンピュータの選択した結果の信頼性を示す信頼性スコアを、監視MCUに提供するように構成されてもよい。少なくとも一実施例では、信頼性スコアが閾値を超える場合には、二次コンピュータが矛盾する又は一貫性のない結果を提供しているかどうかに関わらず、監視MCUは一次コンピュータの指示に従ってもよい。少なくとも一実施例では、信頼性スコアが閾値を満足せず、一次コンピュータと二次コンピュータが異なる結果(たとえば、矛盾)を示す場合には、監視MCUは、コンピュータ同士を調停して、適切な結果を判定してもよい。
【0191】
少なくとも一実施例では、二次コンピュータが誤アラームを提供する条件を、一次コンピュータからの出力と二次コンピュータからの出力とに少なくとも部分的に基づき判定するように訓練及び構成されたニューラル・ネットワークを、監視MCUが実行するように構成されてもよい。少なくとも一実施例では、監視MCUのニューラル・ネットワークは、二次コンピュータの出力が信用されてもよいときと、信用できないときとを学習してもよい。たとえば、少なくとも一実施例では、二次コンピュータがRADARベースのFCWシステムである場合、監視MCUのニューラル・ネットワークは、アラームをトリガする排水溝の格子又はマンホール・カバーなど、実際には危険物ではない金属物体をFCWシステムが識別するときを学習してもよい。少なくとも一実施例では、二次コンピュータがカメラ・ベースのLDWシステムである場合、自転車や歩行者が存在し、車線逸脱が実際には最も安全な操作であるときに、監視MCUのニューラル・ネットワークはLDWを無効にするように学習してもよい。少なくとも一実施例では、監視MCUは、ニューラル・ネットワークを関連するメモリとともに実行するのに好適なDLA又はGPUのうちの少なくとも1つを含んでもよい。少なくとも一実施例では、監視MCUは、SoC1004の構成要素を備えても、且つ/又はその構成要素として含まれてもよい。
【0192】
少なくとも一実施例では、ADASシステム1038は、コンピュータ・ビジョンの従来のルールを使用してADAS機能を実行する二次コンピュータを含んでもよい。少なくとも一実施例では、二次コンピュータは、古典的なコンピュータ・ビジョン・ルール(if-thenルール)を使用してもよく、ニューラル・ネットワークが監視MCUに存在することによって、信頼性、安全性、及び性能が向上してもよい。たとえば、少なくとも一実施例では、多様な実装及び意図的な非同一性により、特にソフトウェア(又はソフトウェアとハードウェアのインターフェース)の機能によって生じる誤りに対し、システム全体の誤り耐性がより高まる。たとえば、少なくとも一実施例では、一次コンピュータ上で実行中のソフトウェアにソフトウェアバグ又はエラーがあり、二次コンピュータ上で実行中の非同一のソフトウェア・コードが、全体的に一貫性のある結果を提供する場合には、監視MCUは、全体的な結果が正しく、一次コンピュータ上のソフトウェア又はハードウェアのバグが重大なエラーを引き起こしていないという、より高い信頼性を有してもよい。
【0193】
少なくとも一実施例では、ADASシステム1038の出力は、一次コンピュータの知覚ブロック、及び/又は一次コンピュータの動的運転タスクブロックに供給されてもよい。たとえば、少なくとも一実施例では、ADASシステム1038が、直前の物体に起因して正面衝突警告を示している場合には、知覚ブロックは、物体を識別するときにこの情報を使用してもよい。少なくとも一実施例では、二次コンピュータは、本明細書に記載するように、訓練済みの、したがって偽陽性のリスクを低減する独自のニューラル・ネットワークを有してもよい。
【0194】
少なくとも一実施例では、車両1000はさらに、インフォテイメントSoC1030(たとえば、車両内インフォテイメント・システム(IVI):in-vehicle infotainment system)を含んでもよい。インフォテイメント・システム1030はSoCとして図示及び説明されるが、少なくとも一実施例では、SoCではなくてもよく、限定することなく2つ以上の個別の構成要素を含んでもよい。少なくとも一実施例では、インフォテイメントSoC1030は、限定することなく、ハードウェアとソフトウェアの組合せを含んでもよく、この組合せを使用して、オーディオ(たとえば、音楽、パーソナル・デジタル・アシスタント、ナビゲーション命令、ニュース、ラジオなど)、ビデオ(たとえば、TV、映画、ストリーミングなど)、電話(たとえば、ハンズフリー通話)、ネットワーク接続(たとえば、LTE、Wi-Fiなど)、及び/又は情報サービス(たとえば、ナビゲーション・システム、後方駐車支援、無線データ・システム、車両関連情報、たとえば燃料レベル、合計走行距離、ブレーキ燃料レベル、オイル・レベル、ドアの開閉、空気フィルタ情報など)を車両1000に提供してもよい。たとえば、インフォテイメントSoC1030は、ラジオ、ディスク再生装置、ナビゲーション・システム、ビデオ再生装置、USB及びBluetooth接続、カーピュータ、車内エンタテイメント、Wi-Fi、ハンドル・オーディオ制御、ハンズフリー音声制御、ヘッド・アップ・ディスプレイ(「HUD」:heads-up display)、HMIディスプレイ1034、テレマテックス・デバイス、(たとえば、様々な構成要素、特徴、及び/若しくはシステムを制御及び/若しくは相互作用するための)制御パネル、並びに/又は他の構成要素を含むことができる。少なくとも一実施例では、さらにインフォテイメントSoC1030を使用して、ADASシステム1038からの情報、車両操作計画、軌道などの自律運転情報、周囲環境情報(たとえば、交差点情報、車両情報、道路情報など)、及び/又は他の情報などの(たとえば、視覚的及び/又は聴覚的な)情報が、車両1000のユーザに提供されてもよい。
【0195】
少なくとも一実施例では、インフォテイメントSoC1030は、任意の量及びタイプのGPU機能を含んでもよい。少なくとも一実施例では、インフォテイメントSoC1030は、バス1002を介して、車両1000の他のデバイス、システム、及び/又は構成要素と通信してもよい。少なくとも一実施例では、インフォテイメントSoC1030は監視MCUに結合されてもよく、それにより、一次コントローラ1036(たとえば、車両1000の一次及び/又はバックアップのコンピュータ)が故障したときに、インフォテイメント・システムのGPUが、一部の自己運転機能を実行してもよい。少なくとも一実施例では、インフォテイメントSoC1030は、本明細書に記載するように、車両1000を運転手-安全停止モードにしてもよい。
【0196】
少なくとも一実施例では、車両1000はさらに、計器クラスタ1032(たとえば、デジタル・ダッシュボード、電子計器クラスタ、デジタル計器パネルなど)を含んでもよい。少なくとも一実施例では、計器クラスタ1032は、限定することなく、コントローラ、及び/又はスーパーコンピュータ(たとえば、個別のコントローラ又はスーパーコンピュータ)を含んでもよい。少なくとも一実施例では、計器クラスタ1032は、限定することなく、スピード・メータ、燃料レベル、油圧、タコメータ、オドメータ、方向指示器、シフトレバー位置インジケータ、シート・ベルト警告灯、パーキング・ブレーキ警告灯、エンジン故障灯、補助拘束システム(たとえば、エアバッグ)情報、ライト制御、安全システム制御、ナビゲーション情報などのような、任意の数及び組合せの計器セットを含んでもよい。いくつかの例では、インフォテイメントSoC1030と計器クラスタ1032との間で、情報が表示及び/又は共有されてもよい。少なくとも一実施例では、計器クラスタ1032は、インフォテイメントSoC1030の一部として含まれてもよく、又はその逆であってもよい。
【0197】
図10Dは、少なくとも一実施例による、クラウド・ベースのサーバと図10Aの自律車両1000との間で通信するためのシステムの図である。少なくとも一実施例では、システムは、限定することなく、サーバ1078、ネットワーク1090、並びに車両1000を含む任意の数及びタイプの車両を含んでもよい。少なくとも一実施例では、サーバ1078は、限定することなく、複数のGPU1084(A)~1084(H)(本明細書ではまとめてGPU1084と呼ぶ)、PCIeスイッチ1082(A)~1082(D)(本明細書ではまとめてPCIeスイッチ1082と呼ぶ)、及び/又はCPU1080(A)~1080(B)(本明細書ではまとめてCPU1080と呼ぶ)を含んでもよい。少なくとも一実施例では、GPU1084、CPU1080、及びPCIeスイッチ1082は、たとえば限定することなく、NVIDIAにより開発されたNVLinkインターフェース1088、及び/又はPCIe接続1086などの高速相互接続によって、相互接続されてもよい。少なくとも一実施例では、GPU1084同士は、NVLink及び/又はNVSスイッチSoCを介して接続され、GPU1084とPCIeスイッチ1082は、PCIe相互接続を介して接続される。8個のGPU1084、2個のCPU1080、及び4個のPCIeスイッチ1082が図示してあるが、これは限定するものではない。少なくとも一実施例では、サーバ1078のそれぞれは、限定することなく、任意の数のGPU1084、CPU1080、及び/又はPCIeスイッチ1082を任意の組合せで含んでもよい。たとえば、少なくとも一実施例では、サーバ1078は、それぞれが8個、16個、32個、及び/又はそれ以上のGPU1084を含むことができる。
【0198】
少なくとも一実施例では、サーバ1078は、最近始まった道路工事などの予想外の又は変更された道路状態を示す画像を表す画像データを、ネットワーク1090を介して車両から受信してもよい。少なくとも一実施例では、サーバ1078は、更新済み若しくはそうではないニューラル・ネットワーク1092及び/又は、限定することなく交通状態及び道路状態に関する情報を含む地図情報1094を、ネットワーク1090を介して車両に送信してもよい。少なくとも一実施例では、地図情報1094の更新は、建築現場、穴、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ1022に対する更新を、限定することなく含んでもよい。少なくとも一実施例では、ニューラル・ネットワーク1092及び/又は地図情報1094は、環境内の任意の数の車両から受信したデータに表された新しい訓練及び/又は経験から得られたものであってもよく、且つ/又は、データ・センタにおいて(たとえば、サーバ1078及び/又は他のサーバを使用して)実行された訓練に少なくとも部分的に基づき、得られたものであってもよい。
【0199】
少なくとも一実施例では、サーバ1078を使用して、訓練データに少なくとも部分的に基づき、機械学習モデル(たとえば、ニューラル・ネットワーク)が訓練されてもよい。少なくとも一実施例では、訓練データは車両によって生成されてもよく、且つ/又はシミュレーションで(たとえば、ゲーム・エンジンを使用して)生成されてもよい。少なくとも一実施例では、(たとえば、関連するニューラル・ネットワークが教師あり学習により恩恵を受ける場合には)任意の量の訓練データがタグ付けされ、且つ/又は他の前処理を受ける。少なくとも一実施例では、(たとえば、関連するニューラル・ネットワークが教師あり学習を必要としない場合には)任意の量の訓練データはタグ付け及び/又は前処理されない。少なくとも一実施例では、機械学習モデルが訓練されると、機械学習モデルは車両によって使用されてもよく(たとえば、ネットワーク1090を介して車両に送信される)、且つ/又は機械学習モデルは、車両を遠隔監視するためにサーバ1078によって使用されてもよい。
【0200】
少なくとも一実施例では、サーバ1078は車両からデータを受信し、リアルタイムの知的推論のために、最新のリアルタイムのニューラル・ネットワークにデータを適用してもよい。少なくとも一実施例では、サーバ1078は、NVIDIAによって開発されたDGX及びDGXステーション・マシンなど、GPU1084によって動く深層学習スーパーコンピュータ及び/又は専用AIコンピュータを含んでもよい。しかし、少なくとも一実施例では、サーバ1078は、CPUにより動くデータ・センタを使用する深層学習インフラストラクチャを含んでもよい。
【0201】
少なくとも一実施例では、サーバ1078の深層学習インフラストラクチャは、高速のリアルタイムの推論が可能であってもよく、その機能を使用して、車両1000のプロセッサ、ソフトウェア、及び/又は関連ハードウェアの健全性を評価及び確認してもよい。たとえば、少なくとも一実施例では、深層学習インフラストラクチャは、一連の画像、及び/又はその一連の画像において(たとえば、コンピュータ・ビジョン及び/又は他の機械学習の物体分類技法により)車両1000が位置特定した物体など、周期的な更新を車両1000から受信してもよい。少なくとも一実施例では、深層学習インフラストラクチャは、独自のニューラル・ネットワークを実行して物体を識別し、それを車両1000によって識別された物体と比較してもよく、結果が一致せず、車両1000のAIが故障していると深層学習インフラストラクチャが結論づけた場合には、サーバ1078は、車両1000のフェイル・セーフ・コンピュータに制御を掌握し、乗員に通知し、安全な停車操作を完了するよう命じる信号を車両1000に送信してもよい。
【0202】
少なくとも一実施例では、サーバ1078は、GPU1084、及び1つ又は複数のプログラム可能な推論アクセラレータ(たとえば、NVIDIAのTensorRT3デバイス)を含んでもよい。少なくとも一実施例では、GPUにより動くサーバと、推論の加速とを組み合わせることによって、リアルタイムの応答を可能にすることができる。性能がそれほど重要ではない場合など、少なくとも一実施例では、CPU、FPGA、及び他のプロセッサにより動くサーバが、推論に使用されてもよい。少なくとも一実施例では、1つ又は複数の実施例を実行するために、ハードウェア構造体715が使用される。ハードウェア構造体715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書に提供される。
【0203】
少なくとも一実施例では、図10A図10Dに描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図10A図10Dに描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図10A図10Dに描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスなどを実装するために利用される。
【0204】
コンピュータ・システム
図11は、例示的なコンピュータ・システムを示すブロック図であり、このコンピュータ・システムは、少なくとも一実施例による、命令を実行するための実行ユニットを含んでもよいプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SoC)、又はこれらの何らかの組合せを有するシステムであってもよい。少なくとも一実施例では、コンピュータ・システム1100は、本明細書に記載の実施例などにおいて本開示に従ってデータを処理するためのアルゴリズムを実行する論理を含む実行ユニットを使用するための、プロセッサ1102などの構成要素を、限定することなく含んでもよい。少なくとも一実施例では、コンピュータ・システム1100は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、Xeon(商標)、Itanium(登録商標)、XScale(商標)及び/又はStrongARM(商標)、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含んでもよいが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含め)他のシステムが使用されてもよい。少なくとも一実施例では、コンピュータ・システム1100は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なWINDOWS(登録商標)のオペレーティング・システムのあるバージョンを実行してもよいが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux(登録商標))、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースが使用されてもよい。
【0205】
実施例は、携帯型デバイス及び組み込みアプリケーションなど、他のデバイスで使用されてもよい。携帯型デバイスのいくつかの例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」:personal digital assistants)、及び携帯型PCを含む。少なくとも一実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」:digital signal processor)、システム・オン・チップ、ネットワーク・コンピュータ(「NetPC」:network computers)、セット・トップ・ボックス、ネットワーク・ハブ、広域ネットワーク(「WAN」:wide area network)スイッチ、又は少なくとも一実施例による1つ又は複数の命令を実行することができる任意の他のシステムを含んでもよい。
【0206】
少なくとも一実施例では、コンピュータ・システム1100は、限定することなくプロセッサ1102を含んでもよく、このプロセッサ1102は限定することなく、本明細書に記載の技法による機械学習モデルの訓練及び/又は推論を実行するための1つ又は複数の実行ユニット1108を含んでもよい。少なくとも一実施例では、コンピュータ・システム1100は、シングル・プロセッサのデスクトップ又はサーバ・システムであるが、別の実施例では、コンピュータ・システム1100はマルチプロセッサ・システムであってもよい。少なくとも一実施例では、プロセッサ1102は、限定することなく、複合命令セット・コンピュータ(「CISC」:complex instruction set computer)マイクロプロセッサ、縮小命令セット・コンピューティング(「RISC」)マイクロプロセッサ、超長命令語(「VLIW」)マイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は任意の他のプロセッサ・デバイス、たとえばデジタル信号プロセッサなどを含んでもよい。少なくとも一実施例では、プロセッサ1102は、プロセッサ・バス1110に結合されてもよく、このプロセッサ・バスは、プロセッサ1102とコンピュータ・システム1100内の他の構成要素との間でデジタル信号を送信してもよい。
【0207】
少なくとも一実施例では、プロセッサ1102は、限定することなく、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)1104を含んでもよい。少なくとも一実施例では、プロセッサ1102は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ1102の外部にあってもよい。他の実施例は、特定の実装形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せも含んでよい。少なくとも一実施例では、レジスタ・ファイル1106は、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタを限定することなく含む様々レジスタに、異なるタイプのデータを記憶してもよい。
【0208】
少なくとも一実施例では、整数及び浮動小数点の演算を実行するための論理を限定することなく含む実行ユニット1108も、プロセッサ1102にある。少なくとも一実施例では、プロセッサ1102は、ある一定のマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」:read only memory)も含んでよい。少なくとも一実施例では、実行ユニット1108は、パック命令セット1109に対処する論理を含んでもよい。少なくとも一実施例では、パック命令セット1109を、命令を実行する関連回路とともに汎用プロセッサの命令セットに含めることにより、多くのマルチメディア・アプリケーションによって使用される演算を、プロセッサ1102のパック・データを使用して実行することができる。少なくとも一実施例では、プロセッサのデータ・バスの全幅を使用してパック・データの演算を実行することによって、多くのマルチメディア・アプリケーションを加速し、より効率的に実行することができ、これにより、1度に1つのデータ要素に対して1つ又は複数の演算を実行するためにプロセッサのデータ・バス間でより小さい単位のデータを転送する必要をなくすことができる。
【0209】
少なくとも一実施例では、実行ユニット1108はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用されてもよい。少なくとも一実施例では、コンピュータ・システム1100は、限定することなくメモリ1120を含んでもよい。少なくとも一実施例では、メモリ1120は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスであってもよい。少なくとも一実施例では、メモリ1120は、プロセッサ1102によって実行されてもよいデータ信号によって表される命令1119、及び/又はデータ1121を記憶してもよい。
【0210】
少なくとも一実施例では、システム論理チップが、プロセッサ・バス1110及びメモリ1120に結合されてもよい。少なくとも一実施例では、システム論理チップは、限定することなく、メモリ・コントローラ・ハブ(「MCH」:memory controller hub)1116を含んでもよく、プロセッサ1102は、プロセッサ・バス1110を介してMCH1116と通信してもよい。少なくとも一実施例では、MCH1116は、命令及びデータ・ストレージのため、及びグラフィックス・コマンド、データ、及びテクスチャを記憶するために、高帯域幅メモリ経路1118をメモリ1120に提供してもよい。少なくとも一実施例では、MCH1116は、プロセッサ1102と、メモリ1120と、コンピュータ・システム1100の他の構成要素との間でデータ信号を導き、プロセッサ・バス1110と、メモリ1120と、システムI/Oインターフェース1122との間でデータ信号をブリッジしてもよい。少なくとも一実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供してもよい。少なくとも一実施例では、MCH1116は、高帯域幅メモリ経路1118を介してメモリ1120に結合されてもよく、グラフィックス/ビデオカード1112は、アクセラレーテッド・グラフィックス・ポート(「AGP」:Accelerated Graphics Port)相互接続1114を介してMCH1116に結合されてもよい。
【0211】
少なくとも一実施例では、コンピュータ・システム1100は、MCH1116をI/Oコントローラ・ハブ(「ICH」:I/O controller hub)1130に結合するためのプロプライエタリ・ハブ・インターフェース・バスとしてシステムI/Oインターフェース1122を使用してもよい。少なくとも一実施例では、ICH1130は、ローカルのI/Oバスを介していくつかのI/Oデバイスに直接接続を提供してもよい。少なくとも一実施例では、ローカルI/Oバスは、周辺装置をメモリ1120、チップセット、及びプロセッサ1102に接続するための高速I/Oバスを、限定することなく含んでもよい。例としては、オーディオ・コントローラ1129、ファームウェア・ハブ(「フラッシュBIOS」)1128、ワイヤレス・トランシーバ1126、データ・ストレージ1124、ユーザ入力及びキーボードのインターフェース1125を含むレガシーI/Oコントローラ1123、ユニバーサル・シリアル・バス(「USB」:Universal Serial Bus)ポートなどのシリアル拡張ポート1127、及びネットワーク・コントローラ1134が、限定することなく含まれてもよい。少なくとも一実施例では、データ・ストレージ1124は、ハード・ディスク・ドライブ、フロッピー(登録商標)・ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備えてもよい。
【0212】
少なくとも一実施例では、図11は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを図示するが、一方他の実施例では、図11は例示的なSoCを図示してもよい。少なくとも一実施例では、図11で図示するデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、コンピュータ・システム1100の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL:compute express link)相互接続を使用して相互接続されてもよい。
【0213】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにコンピュータ・システム1100において使用されてもよい。
【0214】
少なくとも一実施例では、図11に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図11に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図11に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0215】
図12は、少なくとも一実施例による、プロセッサ1210を利用するための電子デバイス1200を図示するブロック図である。少なくとも一実施例では、電子デバイス1200は、たとえば限定することなく、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであってもよい。
【0216】
少なくとも一実施例では、電子デバイス1200は、任意の好適な数又は種類の構成要素、周辺装置、モジュール、若しくはデバイスに通信可能に結合されたプロセッサ1210を、限定することなく含んでもよい。少なくとも一実施例では、プロセッサ1210は、ICバス、システム・マネージメント・バス(「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)バスなどのバス若しくはインターフェースを使用して結合される。少なくとも一実施例では、図12は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを図示するが、一方他の実施例では、図12は例示的なSoCを図示してもよい。少なくとも一実施例では、図12で図示するデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、図12の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続されてもよい。
【0217】
少なくとも一実施例では、図12は、ディスプレイ1224、タッチ画面1225、タッチ・パッド1230、近距離無線通信ユニット(「NFC」:Near Field Communications unit)1245、センサ・ハブ1240、熱センサ1246、エクスプレス・チップセット(「EC」:Express Chipset)1235、トラステッド・プラットフォーム・モジュール(「TPM」:Trusted Platform Module)1238、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」:BIOS/firmware/flash memory)1222、DSP1260、ソリッド・ステート・ディスク(「SSD」:Solid State Disk)若しくはハード・ディスク・ドライブ(「HDD」:Hard Disk Drive)などのドライブ1220、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」:wireless local area network unit)1250、Bluetoothユニット1252、ワイヤレス広域ネットワーク・ユニット(「WWAN」:Wireless Wide Area Network unit)1256、全地球測位システム(GPS:Global Positioning System)ユニット1255、USB3.0カメラなどのカメラ(「USB3.0カメラ」)1254、及び/又は、たとえばLPDDR3規格に実装された低電力ダブル・データ・レート(「LPDDR」:Low Power Double Data Rate)メモリ・ユニット(「LPDDR3」)1215を含んでもよい。これらの構成要素は、それぞれ任意の好適なやり方で実装されてもよい。
【0218】
少なくとも一実施例では、本明細書に記載の構成要素を介して、他の構成要素がプロセッサ1210に通信可能に結合されてもよい。少なくとも一実施例では、加速度計1241、周囲光センサ(「ALS」:Ambient Light Sensor)1242、コンパス1243、及びジャイロスコープ1244が、センサ・ハブ1240に通信可能に結合されてもよい。少なくとも一実施例では、熱センサ1239、ファン1237、キーボード1236、及びタッチ・パッド1230が、EC1235に通信可能に結合されてもよい。少なくとも一実施例では、スピーカ1263、ヘッドフォン1264、及びマイクロフォン(「mic」)1265が、オーディオ・ユニット(「オーディオ・コーデック及びクラスDアンプ」)1262に通信可能に結合されてもよく、このオーディオ・ユニットが、DSP1260に通信可能に結合されてもよい。少なくとも一実施例では、オーディオ・ユニット1262は、たとえば限定することなく、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスDアンプリファイアを含んでもよい。少なくとも一実施例では、SIMカード(「SIM」)1257は、WWANユニット1256に通信可能に結合されてもよい。少なくとも一実施例では、WLANユニット1250及びBluetoothユニット1252などの構成要素、並びにWWANユニット1256は、次世代フォーム・ファクタ(「NGFF」:Next Generation Form Factor)に実装されてもよい。
【0219】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために電子デバイス1200において使用されてもよい。
【0220】
少なくとも一実施例では、図12に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図12に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図12に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0221】
図13は、少なくとも一実施例による、コンピュータ・システム1300を図示する。少なくとも一実施例では、コンピュータ・システム1300は、本開示全体を通して説明する様々なプロセス及び方法を実装するように構成される。
【0222】
少なくとも一実施例では、コンピュータ・システム1300は、限定することなく、少なくとも1つの中央処理装置(「CPU」)1302を含み、この処理装置は、PCI:Peripheral Component Interconnect(「ペリフェラル・コンポーネント・インターコネクト」)、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCI-Express」:peripheral component interconnect express)、AGP:Accelerated Graphics Port(「アクセラレーテッド・グラフィックス・ポート」)、ハイパートランスポート、又は任意の他のバス若しくはポイントツーポイントの通信プロトコルなど、任意の好適なプロトコルを使用して実装された通信バス1310に接続される。少なくとも一実施例では、コンピュータ・システム1300は、メイン・メモリ1304、及び(たとえば、ハードウェア、ソフトウェア、又はこれらの組合せとして実装される)制御論理を限定することなく含み、データは、ランダム・アクセス・メモリ(「RAM」:random access memory)の形をとってもよいメイン・メモリ1304に記憶される。少なくとも一実施例では、ネットワーク・インターフェース・サブシステム(「ネットワーク・インターフェース」)1322は、コンピュータ・システム1300を有する他のシステムからデータを受信し、コンピュータ・システム1300を有する他のシステムにデータを送信するための他のコンピューティング・デバイス及びネットワークとのインターフェースを提供する。
【0223】
少なくとも一実施例では、コンピュータ・システム1300は、少なくとも一実施例では、限定することなく、入力デバイス1308、並列処理システム1312、及びディスプレイ・デバイス1306を含み、このディスプレイ・デバイスは、従来の陰極線管(「CRT」:cathode ray tube)、液晶ディスプレイ(「LCD」:liquid crystal display)、発光ダイオード(「LED」:light emitting diode)ディスプレイ、プラズマ・ディスプレイ、又は他の好適なディスプレイ技術を使用して実装することができる。少なくとも一実施例では、ユーザ入力は、キーボード、マウス、タッチ・パッド、マイクロフォンなどのような入力デバイス1308から受け取る。少なくとも一実施例では、本明細書に記載の各モジュールを単一の半導体プラットフォームに置いて、処理システムを形成することができる。
【0224】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。推論及び/又は訓練論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにコンピュータ・システム1300において使用されてもよい。
【0225】
少なくとも一実施例では、図13に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図13に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図13に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスなどを実装するために利用される。
【0226】
図14は、少なくとも一実施例による、コンピュータ・システム1400を図示する。少なくとも一実施例では、コンピュータ・システム1400は、限定することなく、コンピュータ1410及びUSBスティック1420を含んでもよい。少なくとも一実施例では、コンピュータ1410は、限定することなく、任意の数及びタイプのプロセッサ(図示せず)、並びにメモリ(図示せず)を含んでもよい。少なくとも一実施例では、コンピュータ1410は、限定することなく、サーバ、クラウド・インスタンス、ラップトップ、及びデスクトップ・コンピュータを含む。
【0227】
少なくとも一実施例では、USBスティック1420は、限定することなく、処理ユニット1430、USBインターフェース1440、及びUSBインターフェース論理1450を含む。少なくとも一実施例では、処理ユニット1430は、命令を実行することができる任意の命令実行システム、装置、又はデバイスであってもよい。少なくとも一実施例では、処理ユニット1430は、限定することなく、任意の数及びタイプの処理コア(図示せず)を含んでもよい。少なくとも一実施例では、処理ユニット1430は、機械学習に関連付けられる任意の量及びタイプの演算を実行するように最適化された特定用途向け集積回路(「ASIC」)を備える。たとえば、少なくとも一実施例では、処理ユニット1430は、機械学習の推論演算を実行するように最適化されたテンソル処理ユニット(「TPC」:tensor processing unit)である。少なくとも一実施例では、処理ユニット1430は、機械視覚及び機械学習の推論演算を実行するように最適化された視覚処理ユニット(「VPU」)である。
【0228】
少なくとも一実施例では、USBインターフェース1440は、任意のタイプのUSBコネクタ又はUSBソケットであってもよい。たとえば、少なくとも一実施例では、USBインターフェース1440は、データ及び電源用のUSB3.0 Type-Cのソケットである。少なくとも一実施例では、USBインターフェース1440は、USB3.0 Type-Aのコネクタである。少なくとも一実施例では、USBインターフェース論理1450は、処理ユニット1430がUSBコネクタ1440を介してデバイス(たとえばコンピュータ1410)とインターフェースをとることを可能にする任意の量及びタイプの論理を含んでもよい。
【0229】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにコンピュータ・システム1400において使用されてもよい。
【0230】
少なくとも一実施例では、図14に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図14に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図14に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0231】
図15Aは、複数のGPU1510(1)~1510(N)が、高速リンク1540(1)~1540(N)(たとえば、バス、ポイントツーポイント相互接続など)を介して複数のマルチ・コア・プロセッサ1505(1)~1505(M)に通信可能に結合されている例示的なアーキテクチャを図示する。少なくとも一実施例では、高速リンク1540(1)~1540(N)は、4GB/秒、30GB/秒、80GB/秒、又はそれ以上の通信スループットをサポートする。少なくとも一実施例では、PCIe4.0又は5.0、及びNVLink2.0を含むがこれらに限定されない様々な相互接続プロトコルが使用されてもよい。様々な図において、「N」及び「M」は、正の整数を表し、その値は図ごとに異なってもよい。少なくとも一実施例では、図18A及び図18Bに開示されるように、複数のGPU1510(1)~1510(N)のうちの、1つ又は複数のGPUは、1つ又は複数のグラフィックス・コア(単に「コア」とも称される)1800を含む。少なくとも一実施例では、1つ又は複数のグラフィックス・コア1800は、ストリーミング・マルチプロセッサ(「SM」:streaming multiprocessor)、ストリーム・プロセッサ(「SP」:stream processor)、ストリーム処理ユニット(「SPU」:stream processing unit)、計算ユニット(「CU」:compute unit)、実行ユニット(「EU」:execution unit)、及び/又はスライスとも称される場合があり、このコンテキストにおいて、スライスとは処理ユニット中の処理リソースの一部を指すことができる(たとえば、16コア、レイ・トレーシング・ユニット、スレッド・ディレクタ又はスケジューラ)。
【0232】
さらに、少なくとも一実施例では、GPU1510のうちの2つ以上は高速リンク1529(1)~1529(2)を介して相互接続され、これらは、高速リンク1540(1)~1540(N)に使用されたものと同様の又は異なるプロトコル/リンクを使用して実装されてもよい。同様に、マルチ・コア・プロセッサ1505のうちの2つ以上は、高速リンク1528を介して接続されてもよく、この高速リンク1528は、20GB/秒、30GB/秒、120GB/秒、又はそれ以上で動作する対称型マルチプロセッサ(SMP)バスとすることができる。或いは、図15Aに示す様々なシステム構成要素間のすべての通信は、同様のプロトコル/リンクを使用して(たとえば、共通の相互接続ファブリックを介して)実現されてもよい。
【0233】
少なくとも一実施例では、各マルチ・コア・プロセッサ1505は、それぞれメモリ相互接続1526(1)~1526(M)を介してプロセッサ・メモリ1501(1)~1501(M)に通信可能に結合され、各GPU1510(1)~1510(N)は、それぞれGPUメモリ・相互接続1550(1)~1550(N)を介してGPUメモリ1520(1)~1520(N)に通信可能に結合される。少なくとも一実施例では、メモリ相互接続1526及び1550は、同様の又は異なるメモリ・アクセス技術を利用してもよい。例として、限定ではなく、プロセッサ・メモリ1501(1)~1501(M)及びGPUメモリ1520は、(積層DRAMを含む)ダイナミック・ランダム・アクセス・メモリ(DRAM)、グラフィックスDDR SDRAM(GDDR)(たとえば、GDDR5、GDDR6)、又は高帯域幅メモリ(HBM)などの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。少なくとも一実施例では、(たとえば、2レベルのメモリ(2LM)階層を使用して)、プロセッサ・メモリ1501のいくつかの部分は揮発性メモリであってもよく、別の部分は不揮発性メモリであってもよい。
【0234】
本明細書に記載するように、様々なマルチ・コア・プロセッサ1505及びGPU1510は、それぞれ特定のメモリ1501、1520に物理的に結合されてもよい、及び/又は仮想システムのアドレス空間(「実効アドレス」空間とも呼ぶ)が様々な物理メモリ間に分配されている統合されたメモリ・アーキテクチャが実装されてもよいが。たとえば、プロセッサ・メモリ1501(1)~1501(M)はそれぞれ、64GBのシステム・メモリ・アドレス空間を備えてもよく、GPUメモリ1520(1)~1520(N)はそれぞれ、32GBのシステム・メモリ・アドレス空間を備えてもよく、M=2でN=4の場合、合計256GBのアドレス指定可能メモリが得られる。N及びMについて他の値が考えられる。
【0235】
図15Bは、1つの例示的な実施例によるマルチ・コア・プロセッサ1507とグラフィックス加速モジュール1546との間の相互接続のさらなる詳細事項を図示する。少なくとも一実施例では、グラフィックス加速モジュール1546は、高速リンク1540(たとえば、PCIeバス、NVLinkなど)を介してプロセッサ1507に結合されるライン・カードに集積された1つ又は複数のGPUチップを含んでもよい。少なくとも一実施例では、或いは、グラフィックス加速モジュール1546は、プロセッサ1507を有するパッケージ又はチップに集積されてもよい。
【0236】
少なくとも一実施例では、プロセッサ1507は、複数のコア1560A~1560D(「実行ユニット」とも呼ばれてもよい)を含み、それぞれのコアが、トランスレーション・ルックアサイド・バッファ(TLB:translation lookaside buffer)1561A~1561Dと、1つ又は複数のキャッシュ1562A~1562Dとを有する。少なくとも一実施例では、コア1560A~1560Dは、命令を実行しデータを処理するための、図示していない様々な他の構成要素を含んでもよい。少なくとも一実施例では、キャッシュ1562A~1562Dは、レベル1(L1)及びレベル2(L2)のキャッシュを備えてもよい。さらに、1つ又は複数の共有キャッシュ1556が、キャッシュ1562A~1562Dに含まれ、コア1560A~1560Dのセットによって共有されてもよい。たとえば、プロセッサ1507の一実施例は、24個のコアを含み、各コアが、独自のL1キャッシュ、12個の共有L2キャッシュ、及び12個の共有L3キャッシュを有する。この実施例では、1つ又は複数のL2及びL3のキャッシュが、2つの隣接するコアによって共有される。少なくとも一実施例では、プロセッサ1507及びグラフィックス加速モジュール1546は、システム・メモリ1514に接続されており、このシステム・メモリは、図15Aのプロセッサ・メモリ1501(1)~1501(M)を含んでもよい。
【0237】
少なくとも一実施例では、様々なキャッシュ1562A~1562D、1556、及びシステム・メモリ1514に記憶されたデータ及び命令については、コヒーレンス・バス1564を介したコア間通信によって、コヒーレンスが維持される。少なくとも一実施例では、たとえば、各キャッシュは、特定のキャッシュ・ラインに対する読取り又は書込みを検出したことに応答して、コヒーレンス・バス1564を介して通信するために、それに関連付けられるキャッシュ・コヒーレンス論理/回路を有してもよい。少なくとも一実施例では、キャッシュ・アクセスを監視するために、コヒーレンス・バス1564を介してキャッシュ・スヌーピング・プロトコルが実装される。
【0238】
少なくとも一実施例では、プロキシ回路1525が、グラフィックス加速モジュール1546をコヒーレンス・バス1564に通信可能に結合して、グラフィックス加速モジュール1546がコア1560A~1560Dのピアとしてキャッシュ・コヒーレンス・プロトコルに参加できるようにする。特に、少なくとも一実施例では、インターフェース1535は、高速リンク1540を介してプロキシ回路1525への接続を提供し、インターフェース1537は、グラフィックス加速モジュール1546を高速リンク1540に接続する。
【0239】
少なくとも一実施例では、アクセラレータ統合回路1536は、グラフィックス加速モジュール1546の複数のグラフィックス処理エンジン1531(1)~1531(N)の代わりに、キャッシュ管理、メモリ・アクセス、コンテンツ管理、及び割込み管理のサービスを提供する。少なくとも一実施例では、グラフィックス処理エンジン1531(1)~1531(N)はそれぞれ、別個のグラフィックス・プロセッシング・ユニット(GPU)を備えてもよい。少なくとも一実施例では、グラフィックス加速モジュール1546の複数のグラフィックス処理エンジン1531(1)~1531(N)は、図18A及び図18Bに関連して考察したように、1つ又は複数のグラフィックス・コア1800を含む。少なくとも一実施例では、或いは、グラフィックス処理エンジン1531(1)~1531(N)は、GPUの中に、グラフィックス実行ユニット、メディア処理エンジン(たとえば、ビデオ・エンコーダ/デコーダ)、サンプラ、及びブリット・エンジンなど、異なるタイプのグラフィックス処理エンジンを備えてもよい。少なくとも一実施例では、グラフィックス加速モジュール1546は、複数のグラフィックス処理エンジン1531(1)~1531(N)を有するGPUであってもよく、又はグラフィックス処理エンジン1531(1)~1531(N)は、共通のパッケージ、ライン・カード、若しくはチップに集積された個々のGPUであってもよい。
【0240】
少なくとも一実施例では、アクセラレータ統合回路1536は、仮想から物理のメモリ・トランスレーション(実効から実(effective-to-real)のメモリ・トランスレーションとも呼ばれる)など、様々なメモリ管理機能を実行するためのメモリ管理ユニット(MMU)1539、及びシステム・メモリ1514にアクセスするためのメモリ・アクセス・プロトコルを含む。少なくとも一実施例では、MMU1539は、仮想/実効から物理/実へのアドレス・トランスレーションをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB)(図示せず)も含むことができる。少なくとも一実施例では、キャッシュ1538は、グラフィックス処理エンジン1531(1)~1531(N)から効率的にアクセスできるように、コマンド及びデータを記憶することができる。少なくとも一実施例では、キャッシュ1538及びグラフィックス・メモリ1533(1)~1533(M)に記憶されたデータは、場合によりフェッチ・ユニット1544を使用して、コア・キャッシュ1562A~1562D、1556、及びシステム・メモリ1514とコヒーレントに保たれる。述べたように、これは、キャッシュ1538及びメモリ1533(1)~1533(M)の代わりにプロキシ回路1525を介して(たとえば、プロセッサ・キャッシュ1562A~1562D、1556におけるキャッシュ・ラインの修正/アクセスに関するアップデートをキャッシュ1538に送り、キャッシュ1538からのアップデートを受け取って)実現されてもよい。
【0241】
少なくとも一実施例では、レジスタ1545のセットが、グラフィックス処理エンジン1531(1)~1531(N)によって実行されるスレッドのためのコンテキスト・データを記憶し、コンテキスト管理回路1548が、スレッド・コンテキストを管理する。たとえば、コンテキスト管理回路1548は、コンテキスト・スイッチ中に様々なスレッドのコンテキストを保存及び復元するために、保存及び復元の動作を実行してもよい(たとえば、ここで、第2のスレッドをグラフィックス処理エンジンによって実行できるように、第1のスレッドが保存され、第2のスレッドが記憶される)。たとえば、コンテキスト・スイッチ時に、コンテキスト管理回路1548は、現在のレジスタ値を(たとえば、コンテキスト・ポインタによって識別された)メモリの指定領域に記憶してもよい。次いで、コンテキストに戻るときに、コンテキスト管理回路1548がレジスタ値を復元してもよい。少なくとも一実施例では、割込み管理回路1547は、システム・デバイスから受け取った割込みを受け取り、処理する。
【0242】
少なくとも一実施例では、グラフィックス処理エンジン1531からの仮想/実効アドレスは、MMU1539によってシステム・メモリ1514の実/物理アドレスにトランスレートされる。少なくとも一実施例では、アクセラレータ統合回路1536は、複数(たとえば、4個、8個、16個)のグラフィックス・アクセラレータ・モジュール1546、及び/又は他のアクセラレータ・デバイスをサポートする。少なくとも一実施例では、グラフィックス・アクセラレータ・モジュール1546は、プロセッサ1507上で実行される単一のアプリケーション専用のものであってもよく、又は複数のアプリケーション間で共有されてもよい。少なくとも一実施例では、グラフィックス処理エンジン1531(1)~1531(N)のリソースが複数のアプリケーション又は仮想機械(VM)と共有される仮想化グラフィックス実行環境が存在する。少なくとも一実施例では、リソースは、「スライス」に細分化されてもよく、このスライスが、処理要件、並びにVM及び/又はアプリケーションに関連付けられた優先度に基づき、異なるVM及び/又はアプリケーションに割り振られる。
【0243】
少なくとも一実施例では、アクセラレータ統合回路1536は、グラフィックス加速モジュール1546のためのシステムへのブリッジとして実行し、アドレス・トランスレーション及びシステム・メモリのキャッシュ・サービスを提供する。さらに、少なくとも一実施例では、アクセラレータ統合回路1536は、グラフィックス処理エンジン1531(1)~1531(N)の仮想化、割込み、及びメモリ管理をホスト・プロセッサが管理するための仮想化設備を提供してもよい。
【0244】
少なくとも一実施例では、グラフィックス処理エンジン1531(1)~1531(N)のハードウェア・リソースは、ホスト・プロセッサ1507が見る実アドレス空間に明示的にマッピングされるので、任意のホスト・プロセッサも、実効アドレス値を使用して、これらのリソースに直接アドレス指定することができる。少なくとも一実施例では、アクセラレータ統合回路1536の1つの機能は、グラフィックス処理エンジン1531(1)~1531(N)を、システムにとって独立したユニットに見えるように物理的に分離することである。
【0245】
少なくとも一実施例では、1つ又は複数のグラフィックス・メモリ1533(1)~1533(M)はそれぞれ、グラフィックス処理エンジン1531(1)~1531(N)のそれぞれに結合され、N=Mである 少なくとも一実施例では、グラフィックス処理メモ1533(1)~1533(M)は、グラフィックス処理エンジン1531(1)~1531(N)のそれぞれによって処理される、命令及びデータを記憶することができる。少なくとも一実施例では、グラフィックス・メモリ1533(1)~1533(M)は、(積層DRAMを含む)DRAM、GDDRメモリ、(たとえば、GDDR5、GDDR6)、又はHBMなどの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。
【0246】
少なくとも一実施例では、高速リンク1540を介したデータ・トラフィックを低減するために、グラフィックス・メモリ1533(1)~1533(M)に記憶されるデータが、グラフィックス処理エンジン1531(1)~1531(N)によって最も頻繁に使用されることになるデータであることを確実にし、好ましくはコア1560A~1560Dによっては使用されない(少なくとも頻繁には使用されない)データであることを確実にするためのバイアス技法を使用することができる。同様に、少なくとも一実施例では、バイアス機構は、コアが必要とする(したがって、好ましくはグラフィックス処理エンジン1531(1)~1531(N)ではない)データを、キャッシュ1562A~1562D、1556、及びシステム・メモリ1514の中に保つよう試みる。
【0247】
図15Cは、アクセラレータ統合回路1536がプロセッサ1507内に一体化されている別の例示的な実施例を図示する。この実施例では、グラフィックス処理エンジン1531(1)~1531(N)は、インターフェース1537及びインターフェース1535により、高速リンク1540を介して直接アクセラレータ統合回路1536と通信する(この場合も任意の形のバス又はインターフェース・プロトコルであり得る)。少なくとも一実施例では、アクセラレータ統合回路1536は、図15Bに関して説明したのと同様の動作を実行してもよいが、コヒーレンス・バス1564及びキャッシュ1562A~1562D、1556に近接していることを考えると、潜在的には、より高いスループットで実行してもよい。少なくとも一実施例では、アクセラレータ統合回路は、(グラフィックス加速モジュールの仮想化のない)専用プロセスのプログラミング・モデルと、(仮想化のある)共有プログラミング・モデルとを含む異なるプログラミング・モデルをサポートし、これらは、アクセラレータ統合回路1536によって制御されるプログラミング・モデルと、グラフィックス加速モジュール1546によって制御されるプログラミング・モデルとを含んでもよい。
【0248】
少なくとも一実施例では、グラフィックス処理エンジン1531(1)~1531(N)は、単一のオペレーティング・システムの下で単一のアプリケーション又はプロセスに専用のものである。少なくとも一実施例では、単一のアプリケーションは、他のアプリケーション要求をグラフィックス処理エンジン1531(1)~1531(N)に送り込み、VM/パーティション内で仮想化を実現することができる。
【0249】
少なくとも一実施例では、グラフィックス処理エンジン1531(1)~1531(N)は、複数のVM/アプリケーション・パーティションによって共有されてもよい。少なくとも一実施例では、共有モデルはシステム・ハイパーバイザを使用して、グラフィックス処理エンジン1531(1)~1531(N)を仮想化して、各オペレーティング・システムによるアクセスを可能にしてもよい。少なくとも一実施例では、ハイパーバイザのない単一パーティションのシステムでは、グラフィックス処理エンジン1531(1)~1531(N)は、オペレーティング・システムによって所有される。少なくとも一実施例では、オペレーティング・システムは、グラフィックス処理エンジン1531(1)~1531(N)を仮想化して、各プロセス又はアプリケーションへのアクセスを提供することができる。
【0250】
少なくとも一実施例では、グラフィックス加速モジュール1546又は個々のグラフィックス処理エンジン1531(1)~1531(N)は、プロセス・ハンドルを使用して、プロセス要素を選択する。少なくとも一実施例では、プロセス要素は、システム・メモリ1514に記憶されており、本明細書に記載の実効アドレスから実アドレスへのトランスレーション技法を使用してアドレス指定可能である。少なくとも一実施例では、プロセス・ハンドルは、ホスト・プロセスのコンテキストをグラフィックス処理エンジン1531(1)~1531(N)に登録する(すなわち、プロセス要素リンク・リストにプロセス要素を追加するためのシステム・ソフトウェアをコールする)ときに、ホスト・プロセスに提供される実装固有の値であってもよい。少なくとも一実施例では、プロセス・ハンドルの下位16ビットは、プロセス要素リンク・リスト内のプロセス要素のオフセットであってもよい。
【0251】
図15Dは、例示的なアクセラレータ統合スライス1590を図示する。少なくとも一実施例では、「スライス」は、アクセラレータ統合回路1536の処理リソースの指定部分を備える。少なくとも一実施例では、システム・メモリ1514内のアプリケーション実効アドレス空間1582は、プロセス要素1583を記憶する。少なくとも一実施例では、プロセス要素1583は、プロセッサ1507上で実行されているアプリケーション1580からのGPU呼出し1581に応答して、記憶される。少なくとも一実施例では、プロセス要素1583は、対応するアプリケーション1580のプロセス状態を収容する。少なくとも一実施例では、プロセス要素1583に収容されたワーク記述子(WD)1584は、アプリケーションによって要求される単一のジョブとすることができ、又はジョブのキューに対するポインタを収容してもよい。少なくとも一実施例では、WD1584は、アプリケーションの実効アドレス空間1582におけるジョブ要求キューに対するポインタである。
【0252】
少なくとも一実施例では、グラフィックス加速モジュール1546及び/又は個々のグラフィックス処理エンジン1531(1)~1531(N)は、システム内のプロセスのすべて又はサブセットによって共有されることが可能である。少なくとも一実施例では、プロセス状態を設定し、WD1584をグラフィックス加速モジュール1546に送信して、仮想化環境においてジョブを開始するためのインフラストラクチャが、含められてもよい。
【0253】
少なくとも一実施例では、専用のプロセス・プログラミング・モデルは、実装固有である。少なくとも一実施例では、このモデルでは、単一のプロセスが、グラフィックス加速モジュール1546又は個々のグラフィックス処理エンジン1531を所有する。少なくとも一実施例では、グラフィックス加速モジュール1546が単一のプロセスによって所有されるとき、グラフィックス加速モジュール1546が割り当てられたときに、ハイパーバイザは、所有パーティションについてアクセラレータ統合回路1536を初期化し、オペレーティング・システムは、所有プロセスについてアクセラレータ統合回路1536を初期化する。
【0254】
少なくとも一実施例では、動作時、アクセラレータ統合スライス1590内のWDフェッチ・ユニット1591は、グラフィックス加速モジュール1546の1つ又は複数のグラフィックス処理エンジンによって行われることになるワークの表示を含む次のWD1584をフェッチする。少なくとも一実施例では、図示してあるように、WD1584からのデータは、レジスタ1545に記憶され、MMU1539、割込み管理回路1547、及び/又はコンテキスト管理回路1548によって使用されてもよい。たとえば、MMU1539の一実施例は、OS仮想アドレス空間1585内のセグメント/ページ・テーブル1586にアクセスするためのセグメント/ページ・ウォーク回路を含む。少なくとも一実施例では、割込み管理回路1547は、グラフィックス加速モジュール1546から受け取った割込みイベント1592を処理してもよい。少なくとも一実施例では、グラフィックス動作を実行するとき、グラフィックス処理エンジン1531(1)~1531(N)によって生成された実効アドレス1593は、MMU1539によって実アドレスにトランスレートされる。
【0255】
少なくとも一実施例では、レジスタ1545が、各グラフィックス処理エンジン1531(1)~1531(N)、及び/又はグラフィックス加速モジュール1546について複製され、ハイパーバイザ又はオペレーティング・システムによって初期化されてもよい。少なくとも一実施例では、これらの複製されたレジスタのそれぞれは、アクセラレータ統合スライス1590に含まれてもよい。ハイパーバイザによって初期化されてもよい例示的なレジスタを、表1に示す。
【表1】
【0256】
オペレーティング・システムによって初期化されてもよい例示的なレジスタを、表2に示す。
【表2】
【0257】
少なくとも一実施例では、各WD1584は、特定のグラフィックス加速モジュール1546及び/又はグラフィックス処理エンジン1531(1)~1531(N)に固有のものである。少なくとも一実施例では、WD1584は、グラフィックス処理エンジン1531(1)~1531(N)がワークを行うために必要とするすべての情報を収容し、又は完了すべきワークのコマンド・キューをアプリケーションがセットアップした場所であるメモリ・ロケーションに対するポインタとすることができる。
【0258】
図15Eは、共有モデルの例示的な一実施例のさらなる詳細事項を図示する。この実施例は、プロセス要素リスト1599が記憶されているハイパーバイザ実アドレス空間1598を含む。少なくとも一実施例では、ハイパーバイザ実アドレス空間1598は、オペレーティング・システム1595のグラフィックス加速モジュール・エンジンを仮想化するハイパーバイザ1596を介してアクセス可能である。
【0259】
少なくとも一実施例では、共有プログラミング・モデルは、システム内のすべて又はサブセットのパーティションからのすべて又はサブセットのプロセスが、グラフィックス加速モジュール1546を使用できるようにする。少なくとも一実施例では、グラフィックス加速モジュール1546が複数のプロセス及びパーティションによって共有される2つのプログラミング・モデルが、つまり時間スライス共有及びグラフィックス指定共有(graphics-directed shared)が存在する。
【0260】
少なくとも一実施例では、このモデルでは、システム・ハイパーバイザ1596がグラフィックス加速モジュール1546を所有しており、その機能をすべてのオペレーティング・システム1595にとって利用可能にする。少なくとも一実施例では、システム・ハイパーバイザ1596による仮想化をグラフィックス加速モジュール1546がサポートするために、グラフィックス加速モジュール1546は、(1)アプリケーションのジョブ要求は自律でなくてはならず(すなわち、ジョブ間で状態を維持する必要はなく)、又はグラフィックス加速モジュール1546が、コンテキストの保存及び復元の機構を提供しなくてはならない、(2)アプリケーションのジョブ要求は、あらゆるトランスレーション誤りも含めて指定された時間量で完了するようグラフィックス加速モジュール1546によって保証され、又はグラフィックス加速モジュール1546が、ジョブの処理をプリエンプションする機能を提供する、及び(3)グラフィックス加速モジュール1546は、指定の共有プログラミング・モデルで動作しているとき、プロセス間で公平性が保証されなくてはならないなどのいくつかの要件に準拠してもよい。
【0261】
少なくとも一実施例では、アプリケーション1580は、グラフィックス加速モジュールのタイプ、ワーク記述子(WD)、権限マスク・レジスタ(AMR)値、及びコンテキスト保存/復元エリア・ポインタ(CSRP)を伴って、オペレーティング・システム1595のシステム・コールを行う必要がある。少なくとも一実施例では、グラフィックス加速モジュールのタイプは、システム・コールで目的とする加速機能を記述している。少なくとも一実施例では、グラフィックス加速モジュールのタイプは、システム固有値であってもよい。少なくとも一実施例では、WDは、グラフィックス加速モジュール1546のために特にフォーマット化されており、グラフィックス加速モジュール1546のコマンド、ユーザ定義の構造に対する実効アドレス・ポインタ、コマンドのキューに対する実効アドレス・ポインタ、又はグラフィックス加速モジュール1546によって行われるワークを記述するための任意の他のデータ構造の形とすることができる。
【0262】
少なくとも一実施例では、AMR値は、現在のプロセスに使用するためのAMR状態である。少なくとも一実施例では、オペレーティング・システムに渡される値は、AMRをセッティングするアプリケーションと同様である。少なくとも一実施例では、アクセラレータ統合回路1536(図示せず)及びグラフィックス加速モジュール1546の実装形態が、ユーザ権限マスク・オーバーライド・レジスタ(UAMOR)をサポートしていない場合、オペレーティング・システムは、AMR値に現在のUAMOR値を適用してから、ハイパーバイザ・コールにAMRを渡してもよい。少なくとも一実施例では、ハイパーバイザ1596は、任意選択で、現在の権限マスク・オーバーライド・レジスタ(AMOR)値を適用してから、AMRをプロセス要素1583に入れてもよい。少なくとも一実施例では、CSRPは、グラフィックス加速モジュール1546がコンテキスト状態を保存及び復元するためのアプリケーションの実効アドレス空間1582内のエリアの実効アドレスを収容するレジスタ1545のうちの1つである。少なくとも一実施例では、ジョブ間で、又はジョブがプリエンプションされるときに、いかなる状態も保存する必要のない場合は、このポインタは任意選択である。少なくとも一実施例では、コンテキスト保存/復元エリアは、ピン留めされたシステム・メモリであってもよい。
【0263】
システム・コールを受け取ると、オペレーティング・システム1595は、アプリケーション1580が登録済みであり、グラフィックス加速モジュール1546を使用する権限が与えられていることを検証してもよい。少なくとも一実施例では、次いで、オペレーティング・システム1595は、表3に示す情報を伴ってハイパーバイザ1596にコールする。
【表3】
【0264】
少なくとも一実施例では、ハイパーバイザ・コールを受け取ると、ハイパーバイザ1596は、オペレーティング・システム1595が登録済みであり、グラフィックス加速モジュール1546を使用する権限が与えられていることを検証する。少なくとも一実施例では、次いでハイパーバイザ1596は、プロセス要素1583を、対応するグラフィックス加速モジュール1546のタイプのプロセス要素リンク・リストに入れる。少なくとも一実施例では、プロセス要素は、表4に示す情報を含んでもよい。
【表4】
【0265】
少なくとも一実施例では、ハイパーバイザは、複数のアクセラレータ統合スライス1590のレジスタ1545を初期化する。
【0266】
図15Fに示すように、少なくとも一実施例では、物理プロセッサ・メモリ1501(1)~1501(N)及びGPUメモリ1520(1)~1520(N)にアクセスするために使用される共通の仮想メモリ・アドレス空間を介してアドレス指定可能である統合メモリが使用される。この実装形態では、GPU1510(1)~1510(N)で実行される動作は、プロセッサ・メモリ1501(1)~1501(M)にアクセスするのと同じ仮想/実効メモリ・アドレス空間を利用し、且つその逆も同様であり、それによりプログラマビリティが簡単になる。少なくとも一実施例では、仮想/実効アドレス空間の第1の部分はプロセッサ・メモリ1501(1)に割り振られ、第2の部分は第2のプロセッサ・メモリ1501(N)に割り振られ、第3の部分はGPUメモリ1520(1)に割り振られるというように続く。少なくとも一実施例では、仮想/実効メモリ空間全体(実効アドレス空間と呼ばれることもある)は、これによりプロセッサ・メモリ1501及びGPUメモリ1520のそれぞれにわたって分配されて、仮想アドレスが物理メモリにマッピングされた状態で、任意のプロセッサ又はGPUが、任意の物理メモリにアクセスできるようになる。
【0267】
少なくとも一実施例では、MMU1539A~1539Eのうちの1つ又は複数の中のバイアス/コヒーレンス管理回路1594A~1594Eは、1つ又は複数のホスト・プロセッサ(たとえば、1505)のキャッシュとGPU1510のキャッシュとの間でキャッシュ・コヒーレンスを確保し、バイアス技法を実装して、ある特定のタイプのデータが記憶されるべき物理メモリを示す。少なくとも一実施例では、バイアス/コヒーレンス管理回路1594A~1594Eの複数のインスタンスが図15Fに図示されるが、バイアス/コヒーレンス回路は、1つ又は複数のホスト・プロセッサ1505のMMU内に実装されてもよく、且つ/又はアクセラレータ統合回路1536内に実装されてもよい。
【0268】
一実施例は、GPUメモリ1520をシステム・メモリの一部としてマッピングできるようにし、共有仮想メモリ(SVM)技法を使用してアクセス可能にすることができるが、完全なシステム・キャッシュ・コヒーレンスに関連付けられる性能の低下が生じることはない。少なくとも一実施例では、GPUメモリ1520が、面倒なキャッシュ・コヒーレンス・オーバーヘッドなく、システム・メモリとしてアクセス可能であることにより、GPUオフロードのための有益な動作環境が提供される。少なくとも一実施例では、この構成によって、従来のI/O DMAデータ・コピーのオーバーヘッドがなくても、ホスト・プロセッサ1505のソフトウェアがオペランドを設定し、計算結果にアクセスすることが可能になる。少なくとも一実施例では、こうした従来のコピーは、ドライバ・コール、割込み、及びメモリ・マップドI/O(MMIO)アクセスを必要とし、これらはすべて、単純なメモリ・アクセスより非効率的である。少なくとも一実施例では、キャッシュ・コヒーレンス・オーバーヘッドなしでGPUメモリ1520にアクセスできることが、オフロードされた計算の実行時間に不可欠であり得る。少なくとも一実施例では、たとえば、かなりのストリーミング書込みメモリ・トラフィックがある場合には、キャッシュ・コヒーレンス・オーバーヘッドは、GPU1510が見る有効な書込み帯域幅を大幅に低減することがある。少なくとも一実施例では、オペランド設定の効率、結果へのアクセスの効率、及びGPU計算の効率は、GPUオフロードの有効性を判定する際に役立つことがある。
【0269】
少なくとも一実施例では、GPUバイアス及びホスト・プロセッサ・バイアスの選択は、バイアス・トラッカー・データ構造によって決められる。少なくとも一実施例では、たとえばバイアス・テーブルが使用されてもよく、このテーブルは、GPU付きメモリ・ページ当たり1ビット又は2ビットを含むページ粒度構造であってもよい(たとえば、メモリ・ページの粒度で制御されてもよい)。少なくとも一実施例では、バイアス・テーブルは、(たとえば、バイアス・テーブルの頻繁に使用された/最近使用されたエントリをキャッシュするための)バイアス・キャッシュがGPU1510にある状態又はない状態で、1つ又は複数のGPUメモリ1520の奪われたメモリ範囲(stolen memory range)において実装されてもよい。或いは、少なくとも一実施例では、バイアス・テーブル全体が、GPU内に維持されてもよい。
【0270】
少なくとも一実施例では、GPU付きメモリ1520への各アクセスに関連付けられたバイアス・テーブルのエントリが、GPUメモリへの実際のアクセスより先にアクセスされて、以下の動作を生じさせる。少なくとも一実施例では、GPUバイアス内での自らのページを見いだすGPU1510からのローカル要求が、対応するGPUメモリ1520に直接転送される。少なくとも一実施例では、ホスト・バイアスにおいて自らのページを見いだすGPUからのローカル要求は、(たとえば、上述した高速リンクを介して)プロセッサ1505に転送される。少なくとも一実施例では、要求されたページをホスト・プロセッサ・バイアスにおいて見いだすプロセッサ1505からの要求は、通常のメモリ読取りと同様に要求を完了させる。或いは、GPUバイアス化ページに向けられた要求は、GPU1510に転送されてもよい。少なくとも一実施例では、次いでGPUは、現在ページを使用していない場合、ホスト・プロセッサ・バイアスにページを移行してもよい。少なくとも一実施例では、ページのバイアス状態は、ソフトウェア・ベースの機構、ハードウェア支援型ソフトウェア・ベースの機構のいずれかによって、又は限られた事例のセットについては、単にハードウェア・ベースの機構によって、変更することができる。
【0271】
少なくとも一実施例では、バイアス状態を変更するための1つの機構は、APIコール(たとえば、OpenCL)を利用し、このAPIコールが、GPUのデバイス・ドライバをコールし、このデバイス・ドライバが、GPUにメッセージを送って(又はコマンド記述子をキューに加えて)、バイアス状態を変更し、一部の移行については、ホストにおいてキャッシュ・フラッシング動作を実行するよう、GPUを導く。少なくとも一実施例では、キャッシュ・フラッシング動作は、ホスト・プロセッサ1505のバイアスからGPUバイアスへの移行のために使用されるが、反対向きの移行には使用されない。
【0272】
少なくとも一実施例では、キャッシュ・コヒーレンスは、ホスト・プロセッサ1505によってキャッシュできないGPUバイアス化ページを一時的にレンダリングすることによって、維持される。少なくとも一実施例では、これらのページにアクセスするために、プロセッサ1505は、GPU1510からのアクセスを要求してもよく、GPU1510は、すぐにアクセスを許可してもよく、又は許可しなくてもよい。少なくとも一実施例では、したがって、プロセッサ1505とGPU1510との間の通信を低減するために、GPUバイアス化ページが、GPUによって要求されるが、ホスト・プロセッサ1505によっては要求されないように確実にすること、又はその逆にすることが有益である。
【0273】
1つ又は複数の実施例を実行するために、ハードウェア構造体715が使用される。ハードウェア構造体715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書に提供され得る。
【0274】
少なくとも一実施例では、図15A図15Fに描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図15A図15Fに描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図15A図15Fに描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0275】
図16は、本明細書に記載の様々な実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを図示する。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、若しくは汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
【0276】
図16は、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができる例示的なシステム・オン・チップ集積回路1600を示すブロック図である。少なくとも一実施例では、集積回路1600は、1つ又は複数のアプリケーション・プロセッサ1605(たとえば、CPU)、少なくとも1つのグラフィックス・プロセッサ1610を含み、さらに、画像プロセッサ1615及び/又はビデオ・プロセッサ1620を含んでもよく、これらのいずれもが、モジュール式IPコアであってもよい。少なくとも一実施例では、集積回路1600は、USBコントローラ1625、UARTコントローラ1630、SPI/SDIOコントローラ1635、及びI2S/I2Cコントローラ1640を含む周辺装置又はバス論理を含む。少なくとも一実施例では、集積回路1600は、ハイ・デフィニション・マルチメディア・インターフェース(HDMI(登録商標):high-definition multimedia interface(登録商標))コントローラ1650及びモバイル・インダストリ・プロセッサ・インターフェース(MIPI)ディスプレイ・インターフェース1655のうちの1つ又は複数に結合されるディスプレイ・デバイス1645を含むことができる。少なくとも一実施例では、フラッシュ・メモリ及びフラッシュ・メモリ・コントローラを含むフラッシュ・メモリ・サブシステム1660によって、ストレージが提供されてもよい。少なくとも一実施例では、SDRAM又はSRAMメモリ・デバイスにアクセスするために、メモリ・コントローラ1665を介してメモリ・インターフェースが提供されてもよい。少なくとも一実施例では、いくつかの集積回路はさらに、組み込みセキュリティ・エンジン1670を含む。
【0277】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路1600において使用されてもよい。
【0278】
少なくとも一実施例では、図16に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図16に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図16に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0279】
図17A図17Bは、本明細書に記載の様々実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを図示する。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、若しくは汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
【0280】
図17A図17Bは、本明細書に記載の実施例による、SoC内で使用するための例示的なグラフィックス・プロセッサを示すブロック図である。図17Aは、少なくとも一実施例による、1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路の例示的なグラフィックス・プロセッサ1710を図示する。図17Bは、少なくとも一実施例による、1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路のさらなる例示的なグラフィックス・プロセッサ1740を図示する。少なくとも一実施例では、図17Aのグラフィックス・プロセッサ1710は、低電力グラフィックス・プロセッサ・コアである。少なくとも一実施例では、図17Bのグラフィックス・プロセッサ1740は、高性能グラフィックス・プロセッサ・コアである。少なくとも一実施例では、グラフィックス・プロセッサ1710、1740のそれぞれは、図16のグラフィックス・プロセッサ1610の変形形態とすることができる。
【0281】
少なくとも一実施例では、グラフィックス・プロセッサ1710は、頂点プロセッサ1705と、1つ又は複数のフラグメント・プロセッサ1715A~1715N(たとえば、1715A、1715B、1715C、1715D~1715N-1、及び1715N)とを含む。少なくとも一実施例では、グラフィックス・プロセッサ1710は、別個の論理を介して異なるシェーダ・プログラムを実行することができ、それにより、頂点プロセッサ1705は、頂点シェーダ・プログラムのための動作を実行するように最適化され、一方、1つ又は複数のフラグメント・プロセッサ1715A~1715Nは、フラグメント又はピクセルのシェーダ・プログラムのためのフラグメント(たとえば、ピクセル)シェーディング動作を実行する。少なくとも一実施例では、頂点プロセッサ1705は、3Dグラフィックス・パイプラインの頂点処理ステージを実行し、プリミティブ及び頂点データを生成する。少なくとも一実施例では、フラグメント・プロセッサ1715A~1715Nは、頂点プロセッサ1705によって生成されたプリミティブ及び頂点データを使用して、ディスプレイ・デバイスに表示されるフレーム・バッファを生成する。少なくとも一実施例では、フラグメント・プロセッサ1715A~1715Nは、OpenGLのAPIにおいて提供されるフラグメント・シェーダ・プログラムを実行するように最適化され、OpenGLのAPIは、Direct 3D APIにおいて提供されるピクセル・シェーダ・プログラムと同様の動作を実行するために使用されてもよい。
【0282】
少なくとも一実施例では、グラフィックス・プロセッサ1710はさらに、1つ又は複数のメモリ管理ユニット(MMU)1720A~1720B、キャッシュ1725A~1725B、及び回路相互接続1730A~1730Bを含む。少なくとも一実施例では、1つ又は複数のMMU1720A~1720Bは、頂点プロセッサ1705及び/又はフラグメント・プロセッサ1715A~1715Nを含め、グラフィックス・プロセッサ1710のための仮想から物理のアドレス・マッピングを提供し、それらは、1つ又は複数のキャッシュ1725A~1725Bに記憶された頂点又は画像/テクスチャのデータに加えて、メモリに記憶された頂点又は画像/テクスチャのデータを参照してもよい。少なくとも一実施例では、1つ又は複数のMMU1720A~1720Bは、図16の1つ若しくは複数のアプリケーション・プロセッサ1605、画像プロセッサ1615、及び/又はビデオ・プロセッサ1620に関連付けられた1つ若しくは複数のMMUを含む、システム内の他のMMUと同期されてもよく、それにより各プロセッサ1605~1620は、共有の又は統合された仮想メモリ・システムに参加することができる。少なくとも一実施例では、1つ又は複数の回路相互接続1730A~1730Bは、グラフィックス・プロセッサ1710が、SoCの内部バスを介して、又は直接接続を介して、SoC内の他のIPコアとインターフェースをとることができる。
【0283】
少なくとも一実施例では、図17Bに示すように、グラフィックス・プロセッサ1740は、1つ又は複数のシェーダ・コア1755A~1755N(たとえば、1755A、1755B、1755C、1755D、1755E、1755F~1755N-1、及び1755N)を含み、このシェーダ・コアは、単一のコア、又はタイプ、又はコアが、頂点シェーダ、フラグメント・シェーダ、及び/又はコンピュート・シェーダを実装するためのシェーダ・プログラム・コードを含むすべてのタイプのプログラム可能なシェーダ・コードを実行することができる統合されたシェーダ・コア・アーキテクチャを提供する。少なくとも一実施例では、シェーダ・コアの数は変えることができる。少なくとも一実施例では、グラフィックス・プロセッサ1740は、1つ又は複数のシェーダ・コア1755A~1755Nに実行スレッドをディスパッチするためのスレッド・ディスパッチャとして作用するコア間タスク・マネージャ1745と、たとえばシーン内のローカル空間コヒーレンスを利用するため、又は内部キャッシュの使用を最適化するために、シーンのレンダリング動作が画像空間において細分化される、タイル・ベースのレンダリングのためのタイリング動作を加速するためのタイリング・ユニット1758とを含む。
【0284】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィック・プロセッサ1710及び1740において使用されてもよい。
【0285】
少なくとも一実施例では、図17A図17Bに描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図17A図17Bに描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図17A図17Bに描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0286】
図18A図18Bは、本明細書に記載の実施例による、さらなる例示的なグラフィックス・プロセッサ論理を図示する。少なくとも一実施例では、図18A図18Bに関連して図示される、及び説明されるコンポーネントは、グラフィックス・プロセッシング・ユニット(GPU)、SoC、又は他のタイプのプロセッサなど、単一のシステムに統合される。図18Aは、グラフィックス・コア1800を図示し、このグラフィックス・コア1800は、少なくとも一実施例では図16のグラフィックス・プロセッサ1610に含められてもよく、少なくとも一実施例では図17Bのように、統合されたシェーダ・コア1755A~1755Nであってもよい。図18Bは、少なくとも一実施例におけるマルチ・チップ・モジュールに導入するのに適した高並列の汎用グラフィックス・プロセッシング・ユニット(「グラフィックス・プロセッシング・ユニット」とも呼ばれてもよい「GPGPU」)1830を図示する。少なくとも一実施例では、グラフィックス・プロセッシング・ユニット1830は、グラフィックス・プロセッサを含むGPGPUである。少なくとも一実施例では、集積回路1600は、グラフィックス・コア1800を含み、たとえば集積回路を形成する、並びに/又はそのような集積回路及び/若しくはSoCが本明細書に記載の動作を実行するSoCを形成する。
【0287】
少なくとも一実施例では、グラフィックス・コア1800は、共有命令キャッシュ1802、テクスチャ・ユニット1818、及びキャッシュ/共有メモリ1820(たとえば、L1、L2、L3、ラスト・レベル・キャッシュ、又は他のキャッシュを含む)を含み、これらは、グラフィックス・コア1800内の実行リソースに共通である。少なくとも一実施例では、グラフィックス・コア1800は、複数のスライス1801A~1801N、又はコアごとのパーティションを含むことができ、グラフィックス・プロセッサは、グラフィックス・コア1800の複数のインスタンスを含むことができる。少なくとも一実施例では、各スライス1801A~1801Nは、グラフィックス・コア1800を指す。少なくとも一実施例では、スライス1801A~1801Nは、スライス1801A~1801Nの一部であるサブスライスを有する。少なくとも一実施例では、スライス1801A~1801Nは、他のスライスとは独立であるか、又は他のスライスに従属的である。少なくとも一実施例では、スライス1801A~1801Nは、ローカル命令キャッシュ1804A~1804N、スレッド・スケジューラ(シーケンサ)1806A~1806N、スレッド・ディスパッチャ1808A~1808N、及びレジスタのセット1810A~1810Nを含むサポート論理を含むことができる。少なくとも一実施例では、スライス1801A~1801Nは、追加機能ユニット(AFU1812A~1812N)、浮動小数点ユニット(FPU1814A~1814N)、整数算術論理演算ユニット(ALU1816A~1816N)、アドレス計算ユニット(ACU1813A~1813N)、倍精度浮動小数点ユニット(DPFPU1815A~1815N)、及び行列処理ユニット(MPU1817A~1817N)のセットを含むことができる。少なくとも一実施例では、MPU1817A~1817Nは、行列エンジンと称される。
【0288】
少なくとも一実施例では、各スライス1801A~1801Nは、浮動小数点及び整数ベクトル演算用の1つ又は複数のエンジン、並びにAI、機械学習、又は大きなデータセット・ワークロードにおいて畳み込み及び行列演算を加速させるための1つ又は複数のエンジンを含む。少なくとも一実施例では、1つ又は複数のスライス1801A~1801Nは、ベクトルを計算するために(たとえば、ベクトルに対する数理演算を計算する)1つ又は複数のベクトル・エンジンを含む。少なくとも一実施例では、ベクトル・エンジンは、16ビット浮動小数点(「FP16」とも称される)、32ビット浮動小数点(「FP32」とも称される)、又は64ビット浮動小数点(「FP64」とも称される)で、ベクトル演算を計算することができる。少なくとも一実施例では、1つ又は複数のスライス1801A~1801Nは、行列/テンソル演算を計算するために16の行列数理ユニットと対になった16のベクトル・エンジンを含み、ベクトル・エンジンと数理ユニットは、行列拡張を介して明らかにされる。少なくとも一実施例では、スライス、処理ユニットの処理リソースのうち、指定された部分、たとえば、16コア及びレイ・トレーシング・ユニット、又は8コア、スレッド・スケジューラ、スレッド・ディスパッチャ、及びプロセッサのための追加的な機能ユニット。少なくとも一実施例では、グラフィックス・コア1800は、たとえばテンソル演算を計算する際、行列演算を計算するために、1つ又は複数の行列エンジンを含む。
【0289】
少なくとも一実施例では、1つ又は複数のスライス1801A~1801Nは、レイ・トレーシング演算を計算するために、1つ又は複数のレイ・トレーシング・ユニットを含む(たとえば、スライス1801A~1801Nのスライス1つ当たり16のレイ・トレーシング・ユニット)。少なくとも一実施例では、レイ・トレーシング・ユニットは、レイ・トラバーサル、三角交差、バウンディング・ボックス交差、又は他のレイ・トレーシング演算を計算する。
【0290】
少なくとも一実施例では、1つ又は複数のスライス1801A~1801Nは、メディア・スライスを含み、このメディア・スライスは、データをエンコード、デコード、及び/若しくはトランスコードする;データをスケーリング及び/若しくはフォーマット変換する;並びに/又はビデオ・データに対してビデオ品質演算を実行する。
【0291】
少なくとも一実施例では、1つ又は複数のスライス1801A~1801Nは、L2キャッシュ及びメモリ・ファブリック、リンク・コネクタ、広帯域幅メモリ(HBM)(たとえば、HBM2e、HDM3)スタック、並びにメディア・エンジンにリンクされる。少なくとも一実施例では、1つ又は複数のスライス1801A~1801Nは、複数のコア(たとえば、16コア)及び各コアと対にされた複数のレイ・トレーシング・ユニット(たとえば、16)を含む。少なくとも一実施例では、1つ又は複数のスライス1801A~1801Nは、1つ又は複数のL1キャッシュを有する。少なくとも一実施例では、1つ又は複数のスライス1801A~1801Nは、以下を含む:1つ又は複数のベクトル・エンジン;命令を記憶する1つ又は複数の命令キャッシュ;データをキャッシュする1つ又は複数のL1キャッシュ;データ、たとえば命令に対応するデータを記憶する1つ又は複数の共有ローカル・メモリ(SLM:shared local memory);データをサンプリングする1つ又は複数のサンプラ;レイ・トレーシング演算を実行する1つ又は複数のレイ・トレーシング・ユニット;ジオメトリ・パイプラインにおいて演算を実行する、及び/又は幾何学変換を頂点若しくはポリゴンに適用する1つ又は複数のジオメトリ;画像をベクタ・グラフィックス・フォーマット(たとえば、形状)で記述し、それをラスタ画像に転換する(たとえば、共に表示されると形状によって表現される画像を作り出す一連のピクセル、ドット、又は線)、1つ又は複数のラスタライザ;データをバッファするための1つ又は複数の階層深度バッファ(Hiz:Hierarchical Depth Buffer);並びに/或いは1つ又は複数のピクセル・バックエンド。少なくとも一実施例では、スライス1801A~1801Nは、メモリ・ファブリック、たとえばL2キャッシュを含む。
【0292】
少なくとも一実施例では、FPU1814A~1814Nは、単精度(32ビット)及び半精度(16ビット)の浮動小数点演算を実行することができ、DPFPU1815A~1815Nは、倍精度(64ビット)の浮動小数点演算を実行する。少なくとも一実施例では、ALU1816A~1816Nは、8ビット、16ビット、及び32ビットの精度で可変精度の整数演算を実行することができ、混合精度の演算のために構成されることが可能である。少なくとも一実施例では、MPU1817A~1817Nも、半精度浮動小数点及び8ビット整数演算を含む混合精度の行列演算のために構成されることが可能である。少なくとも一実施例では、MPU1817~1817Nは、汎用行列-行列乗算(GEMM:general matrix to matrix multiplication)の加速をサポートできるようにすることを含め、機械学習アプリケーション・フレームワークを加速するための様々な行列演算を実行することができる。少なくとも一実施例では、AFU1812A~1812Nは、三角関数演算(たとえば、サイン、コサインなど)を含む、浮動小数点ユニット又は整数ユニットにサポートされていない追加の論理演算を実行することができる。
【0293】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・コア1800において使用されてもよい。
【0294】
少なくとも一実施例では、グラフィックス・コア1800は、スイッチに取り付けられる相互接続及びリンク・ファブリック・サブレイヤ、並びに複数のグラフィックス・プロセッサ1800にわたって互いに接着することなくロード/ストア・ユニット(LSU:load/store unit)、データ転送ユニット、及び同期セマンティクスを用いて複数のグラフィックス・プロセッサ1800(たとえば、8)を内部リンクできるようにするGPU-GPUブリッジを含む。少なくとも一実施例では、相互接続は、標準相互接続(たとえば、PCIe)又はその何らかの組合せを含む。
【0295】
少なくとも一実施例では、グラフィックス・コア1800は、複数のタイルを含む。少なくとも一実施例では、タイルは、個々のダイ、又は個々のダイが相互接続によって接続され得る(たとえば、埋め込み型マルチダイ相互接続ブリッジ(EMIB:embedded multi-die interconnect bridge))1つ若しくは複数のダイである。少なくとも一実施例では、グラフィックス・コア1800は、コンピュート・タイル、メモリ・タイル(たとえば、この場合メモリ・タイルは、Ramboタイルなど異なるタイル又は異なるチップセットによって排他的にアクセスされ得る)、基板タイル、ベース・タイル、HMBタイル、リンク・タイル、及びEMIBタイルを含み、すべてのタイルは、GPUの一部としてグラフィックス・コア1800内に共にパッケージ化される。少なくとも一実施例では、グラフィックス・コア1800は、単一のパッケージに複数のタイルを含むことができる(「マルチ・タイル・パッケージ」とも称される)。少なくとも一実施例では、コンピュート・タイルは8グラフィックス・コア1800、L1キャッシュを含むことができる。ベース・タイルは、PCIe5.0、HBM2e、MDFI及びEMIBとのホスト・インターフェースを有することができ、リンク・タイルは埋め込み型スイッチとの8リンク、8ポートを有することができる。少なくとも一実施例では、タイルは、フェイスツーフェイス(F2F)のチップオンチップ接合で、ファインピッチ化された、36ミクロンのマイクロバンプ(たとえば、銅ピラー)を通じて接続される。少なくとも一実施例では、グラフィックス・コア1800は、メモリを含み、複数のタイルからアクセス可能なタイルである、メモリ・ファブリックを含む。少なくとも一実施例では、グラフィックス・コア1800は、それ自身のハードウェア・コンテキストを、メモリに記憶、アクセス、又はロードし、このときハードウェア・コンテキストは、プロセス再開前にレジスタからロードされる1組のデータであり、ハードウェア・コンテキストは、ハードウェアの状態(たとえば、GPUの状態)を示すことができる。
【0296】
少なくとも一実施例では、グラフィックス・コア1800は、シリアルなデータ・ストリームを並列なデータ・ストリームに転換する、又は並列なデータ・ストリームをシリアルなデータ・ストリームに転換する、シリアライザ/デシリアライザ(SERDES:serializer/deserializer)回路を含む。
【0297】
少なくとも一実施例では、グラフィックス・コア1800は、高速でコヒーレントな統合ファブリック(GPUツーGPU)、ロード/ストア・ユニット、バルク・データ転送及び同期セマンティクス、並びに埋め込み型スイッチを通じて接続されたGPUを含み、このときGPU-GPUブリッジは、コントローラによって制御される。
【0298】
少なくとも一実施例では、グラフィックス・コア1800は、APIを実行し、このとき前記APIは、グラフィックス・コア1800のハードウェアを抽象化し、命令を用いてライブラリにアクセスして、数理演算(たとえば、マス・カーネル・ライブラリ)、ディープ・ニューラル・ネットワーク演算(たとえば、ディープ・ニューラル・ネットワーク・ライブラリ)、ベクトル演算、コレクティブ・コミュニケーション、スレッド・ビルディング・ブロック、ビデオ処理、データ・アナリティクス・ライブラリ、及び/又はレイ・トレーシング演算を実行する。
【0299】
図18Bは、GPGPU1830を図示し、これは、少なくとも一実施例において、グラフィックス・プロセッシング・ユニットのアレイによる高並列の計算動作を実行可能にするように構成されることが可能である。少なくとも一実施例では、GPGPU1830は、GPGPU1830の他のインスタンスに直接リンクされて、ディープ・ニューラル・ネットワークの訓練スピードを向上させるために複数のGPUクラスタを生成することができる。少なくとも一実施例では、GPGPU1830は、ホスト・プロセッサとの接続を可能にするためのホスト・インターフェース1832を含む。少なくとも一実施例では、ホスト・インターフェース1832は、PCIエクスプレス・インターフェースである。少なくとも一実施例では、ホスト・インターフェース1832は、ベンダー固有の通信インターフェース又は通信ファブリックとすることができる。少なくとも一実施例では、GPGPU1830は、ホスト・プロセッサからコマンドを受け取り、グローバル・スケジューラ1834(スレッド・シーケンサ及び/又は非同期コンピュート・エンジンとも呼ばれてもよい)を使用して、これらのコマンドに関連付けられた実行スレッドを、コンピュート・クラスタ1836A~1836Hのセットに分配する。少なくとも一実施例では、コンピュート・クラスタ1836A~1836Hは、キャッシュ・メモリ1838を共有する。少なくとも一実施例では、キャッシュ・メモリ1838は、コンピュート・クラスタ1836A~1836H内のキャッシュ・メモリ用の高レベル・キャッシュとして作用することができる。少なくとも一実施例では、コンピュート・クラスタ1836A~1836Hは、スライスを含むか、又は「スライス」と称される。少なくとも一実施例では、GPGPU1830は、集積回路1600の一部など(図16)、SoCの一部である。
【0300】
少なくとも一実施例では、GPGPU1830は、メモリ・コントローラ1842A~1842B(たとえば、HBM2e用の1つ又は複数のコントローラ)のセットを介して、コンピュート・クラスタ1836A~1836Hに結合されたメモリ1844A~1844Bを含む。少なくとも一実施例では、メモリ1844A~1844Bは、グラフィックス・ダブル・データ・レート(GDDR:graphics double data rate)メモリを含め、同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。
【0301】
少なくとも一実施例では、コンピュート・クラスタ1836A~1836Hはそれぞれ、図18Aのグラフィックス・コア1800などのグラフィックス・コアのセットを含み、このグラフィックス・コアのセットは、機械学習計算に適したものを含め、様々な精度で計算動作を実行することができる複数のタイプの整数及び浮動小数点の論理ユニットを含むことができる。たとえば、少なくとも一実施例では、コンピュート・クラスタ1836A~1836Hのそれぞれにおける浮動小数点ユニットの少なくともサブセットは、16ビット又は32ビットの浮動小数点演算を実行するように構成されることが可能であり、一方、浮動小数点ユニットの異なるサブセットは、64ビットの浮動小数点演算を実行するように構成されることが可能である。
【0302】
少なくとも一実施例では、GPGPU1830の複数のインスタンスは、コンピュート・クラスタとして動作するように構成されることが可能である。少なくとも一実施例では、コンピュート・クラスタ1836A~1836Hにより同期及びデータ交換のために使用される通信は、実施例にわたって異なる。少なくとも一実施例では、GPGPU1830の複数のインスタンスは、ホスト・インターフェース1832を介して通信する。少なくとも一実施例では、GPGPU1830は、I/Oハブ1839を含み、このハブは、GPGPU1830の他のインスタンスへの直接接続を可能にするGPUリンク1840に、GPGPU1830を結合する。少なくとも一実施例では、GPUリンク1840は、GPGPU1830の複数のインスタンス間での通信及び同期を可能にするGPUからGPUへの専用のブリッジに結合される。少なくとも一実施例では、GPUリンク1840は、他のGPGPU又は並列プロセッサにデータを送受信するための高速相互接続に結合される。少なくとも一実施例では、GPGPU1830の複数のインスタンスは、別々のデータ処理システムに位置付けられ、ホスト・インターフェース1832を介してアクセス可能なネットワーク・デバイスを介して通信する。少なくとも一実施例では、GPUリンク1840は、ホスト・インターフェース1832に加えて、又はその代わりに、ホスト・プロセッサへの接続を可能にするように構成することができる。
【0303】
少なくとも一実施例では、GPGPU1830は、ニューラル・ネットワークを訓練するように構成されることが可能である。少なくとも一実施例では、GPGPU1830は、推論プラットフォーム内で使用することができる。GPGPU1830が推論のために使用される少なくとも一実施例では、GPGPU1830は、GPGPU1830がニューラル・ネットワークの訓練に使用されるときよりも少数のコンピュート・クラスタ1836A~1836Hを含んでもよい。少なくとも一実施例では、メモリ1844A~1844Bに関連付けられるメモリ技術は、推論の構成と訓練の構成との間で異なってもよく、高帯域幅のメモリ技術が、訓練構成に当てられる。少なくとも一実施例では、GPGPU1830の推論構成は、推論固有の命令をサポートすることができる。たとえば、少なくとも一実施例では、推論構成は、1つ又は複数の8ビットの整数のドット積命令をサポートすることができ、これは、導入済みニューラル・ネットワークの推論動作中に使用されてもよい。
【0304】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにGPGPU1830において使用されてもよい。
【0305】
少なくとも一実施例では、図18A図18Bに描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図18A図18Bに描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図18A図18Bに描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0306】
図19は、少なくとも一実施例によるコンピューティング・システム1900を示すブロック図である。少なくとも一実施例では、コンピューティング・システム1900は、メモリ・ハブ1905を含んでもよい相互接続経路を介して通信する1つ又は複数のプロセッサ1902とシステム・メモリ1904とを有する処理サブシステム1901を含む。少なくとも一実施例では、メモリ・ハブ1905は、チップセット構成要素内の別個の構成要素であってもよく、又は1つ若しくは複数のプロセッサ1902内に一体化されていてもよい。少なくとも一実施例では、メモリ・ハブ1905は、通信リンク1906を介してI/Oサブシステム1911に結合される。少なくとも一実施例では、I/Oサブシステム1911は、コンピューティング・システム1900が1つ又は複数の入力デバイス1908からの入力を受け取れるようにすることができるI/Oハブ1907を含む。少なくとも一実施例では、I/Oハブ1907は、ディスプレイ・コントローラを有効にすることができ、このディスプレイ・コントローラは、1つ又は複数のプロセッサ1902に含まれて、1つ又は複数のディスプレイ・デバイス1910Aに出力を提供してもよい。少なくとも一実施例では、I/Oハブ1907に結合された1つ又は複数のディスプレイ・デバイス1910Aは、ローカルの、内部の、又は組み込まれたディスプレイ・デバイスを含むことができる。
【0307】
少なくとも一実施例では、処理サブシステム1901は、バス又は他の通信リンク1913を介してメモリ・ハブ1905に結合された1つ又は複数の並列プロセッサ1912を含む。少なくとも一実施例では、通信リンク1913は、PCIエクスプレスなどであるがこれに限定されない任意の数の規格に基づく通信リンク技術若しくはプロトコルのうちの1つを使用することができ、又はベンダー固有の通信インターフェース若しくは通信ファブリックであってもよい。少なくとも一実施例では、1つ又は複数の並列プロセッサ1912は、メニー・インテグレーテッド・コア(MIC:many integrated core)プロセッサなど、多数の処理コア及び/又は処理クラスタを含むことのできる、計算に集中した並列又はベクトルの処理システムを形成する。少なくとも一実施例では、いくつか又はすべての並列プロセッサ1912は、グラフィックス処理サブシステムを形成し、このサブシステムは、I/Oハブ1907を介して結合された1つ又は複数のディスプレイ・デバイス1910Aのうちの1つに、ピクセルを出力することができる。少なくとも一実施例では、並列プロセッサ1912はまた、1つ又は複数のディスプレイ・デバイス1910Bへの直接接続を可能にするディスプレイ・コントローラ及びディスプレイ・インターフェース(図示せず)を含むことができる。少なくとも一実施例では、並列プロセッサ1912は、本明細書において考察されるグラフィックス・コア1800など、1つ又は複数のコアを含む。
【0308】
少なくとも一実施例では、システム・ストレージ・ユニット1914は、I/Oハブ1907に接続されて、コンピューティング・システム1900のためのストレージ機構を提供することができる。少なくとも一実施例では、I/Oスイッチ1916を使用して、I/Oハブ1907と、プラットフォームに一体化されてもよいネットワーク・アダプタ1918及び/又はワイヤレス・ネットワーク・アダプタ1919などの他の構成要素、並びに1つ又は複数のアドイン・デバイス1920を介して加えることができる様々な他のデバイスとの通信を可能にするためのインターフェース機構を提供することができる。少なくとも一実施例では、ネットワーク・アダプタ1918は、イーサネット(登録商標)・アダプタ、又は別の有線ネットワーク・アダプタとすることができる。少なくとも一実施例では、ワイヤレス・ネットワーク・アダプタ1919は、Wi-Fi、Bluetooth、近距離無線通信(NFC)、又は1つ若しくは複数のワイヤレス無線を含む他のネットワーク・デバイスのうちの1つ又は複数を含むことができる。
【0309】
少なくとも一実施例では、コンピューティング・システム1900は、USB又は他のポート接続、光学ストレージ・ドライブ、ビデオ・キャプチャ・デバイスなどを含む明示されていない他の構成要素を含むことができ、これらもI/Oハブ1907に接続されてもよい。少なくとも一実施例では、図19の様々な構成要素を相互接続する通信経路が、PCI(ペリフェラル・コンポーネント・インターコネクト)ベースのプロトコル(たとえば、PCI-エクスプレス)などの任意の好適なプロトコル、又はNV-Link高速相互接続などの他のバス若しくはポイントツーポイント通信インターフェース及び/又はプロトコル、又は相互接続プロトコル、を使用して、実装されてもよい。
【0310】
少なくとも一実施例では、並列プロセッサ1912は、たとえばビデオ出力回路を含むグラフィックス及びビデオの処理に最適化された回路を組み込んでおり、グラフィックス・プロセッシング・ユニット(GPU)を構成し、たとえば並列プロセッサ1912はグラフィックス・コア1800を含む。少なくとも一実施例では、並列プロセッサ1912は、汎用処理に最適化された回路を組み込んでいる。少なくとも実施例では、コンピューティング・システム1900の構成要素は、単一の集積回路上の1つ又は複数の他のシステム要素と一体化されてもよい。たとえば、少なくとも一実施例では、並列プロセッサ1912、メモリ・ハブ1905、プロセッサ1902、及びI/Oハブ1907を、システム・オン・チップ(SoC)集積回路に一体化することができる。少なくとも一実施例では、コンピューティング・システム1900の構成要素は、単一のパッケージに一体化されて、システム・イン・パッケージ(SIP:system in package)構成を形成することができる。少なくとも一実施例では、コンピューティング・システム1900の構成要素の少なくとも一部分を、マルチ・チップ・モジュール(MCM:multi-chip module)に一体化することができ、このモジュールを、他のマルチ・チップ・モジュールと相互接続して、モジュール式コンピューティング・システムにすることができる。
【0311】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにコンピューティング・システム1900において使用されてもよい。
【0312】
少なくとも一実施例では、図19に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図19に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図19に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0313】
プロセッサ
図20Aは、少なくとも一実施例による並列プロセッサ2000を図示する。少なくとも一実施例では、並列プロセッサ2000の様々な構成要素は、プログラム可能なプロセッサ、特定用途向け集積回路(ASIC)、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)などの1つ又は複数の集積回路デバイスを使用して実装されてもよい。少なくとも一実施例では、図示してある並列プロセッサ2000は、例示的な実施例による図19に示す1つ又は複数の並列プロセッサ1912の変形形態である。少なくとも一実施例では、並列プロセッサ2000は、1つ又は複数のグラフィックス・コア1800を含む。
【0314】
少なくとも一実施例では、並列プロセッサ2000は並列処理ユニット2002を含む。少なくとも一実施例では、並列処理ユニット2002は、並列処理ユニット2002の他のインスタンスを含む他のデバイスとの通信を可能にするI/Oユニット2004を含む。少なくとも一実施例では、I/Oユニット2004は、他のデバイスに直接接続されてもよい。少なくとも一実施例では、I/Oユニット2004は、メモリ・ハブ2005などのハブ又はスイッチ・インターフェースの使用を介して、他のデバイスと接続される。少なくとも一実施例では、メモリ・ハブ2005とI/Oユニット2004との間の接続は、通信リンク2013を形成する。少なくとも一実施例では、I/Oユニット2004は、ホスト・インターフェース2006及びメモリ・クロスバー2016に接続され、ここでホスト・インターフェース2006は、処理動作の実行を対象とするコマンドを受け取り、メモリ・クロスバー2016は、メモリ動作の実行を対象とするコマンドを受け取る。
【0315】
少なくとも一実施例では、ホスト・インターフェース2006が、I/Oユニット2004を介してコマンド・バッファを受け取るとき、ホスト・インターフェース2006は、これらのコマンドを実行するためのワーク動作をフロント・エンド2008に向けることができる。少なくとも一実施例では、フロント・エンド2008はスケジューラ2010(シーケンサとも呼ばれてもよい)に結合され、このスケジューラは、コマンド又は他のワーク・アイテムを処理クラスタ・アレイ2012に分配するように構成される。少なくとも一実施例では、スケジューラ2010は、処理クラスタ・アレイ2012のクラスタにタスクが分配される前に、処理クラスタ・アレイ2012が適切に構成され、有効な状態にあることを確実にする。少なくとも一実施例では、スケジューラ2010は、マイクロコントローラで実行しているファームウェア論理を介して実装される。少なくとも一実施例では、マイクロコントローラ実装スケジューラ2010は、複雑なスケジューリング及びワーク分配動作を、粗い粒度と細かい粒度で実行するように構成可能であり、処理アレイ2012で実行しているスレッドの迅速なプリエンプション及びコンテキストのスイッチングを可能にする。少なくとも一実施例では、ホスト・ソフトウェアは、処理クラスタ・アレイ2012でのスケジューリングのワークロードを、複数のグラフィックス処理の経路のうちの1つを介して証明することができる。少なくとも一実施例では、次いで、スケジューラ2010を含むマイクロコントローラ内のスケジューラ2010論理によって、ワークロードを自動的に処理アレイ・クラスタ2012全体に分配することができる。
【0316】
少なくとも一実施例では、処理クラスタ・アレイ2012は、最大「N個」の処理クラスタ(たとえば、クラスタ2014A、クラスタ2014B~クラスタ2014N)を含むことができ、ここで「N」は、正の整数を表す(他の図で使用されるものとは異なる整数「N」であってもよい)。少なくとも一実施例では、処理クラスタ・アレイ2012の各クラスタ2014A~2014Nは、大量の同時スレッドを実行することができる。少なくとも一実施例では、スケジューラ2010は、様々なスケジューリング及び/又はワーク分配のアルゴリズムを使用して、処理クラスタ・アレイ2012のクラスタ2014A~2014Nにワークを配分することができ、これらのアルゴリズムは、プログラム又は計算のタイプごとに生じるワークロードに応じて、異なってもよい。少なくとも一実施例では、スケジューリングは、スケジューラ2010によって動的に対処されてもよく、又は処理クラスタ・アレイ2012によって実行されるように構成されたプログラム論理のコンパイル中に、コンパイラ論理によって部分的に支援されてもよい。少なくとも一実施例では、処理クラスタ・アレイ2012の異なるクラスタ2014A~2014Nは、異なるタイプのプログラムを処理するように、又は異なるタイプの計算を実行するように配分されることが可能である。
【0317】
少なくとも一実施例では、処理クラスタ・アレイ2012は、様々なタイプの並列処理動作を実行するように構成されることが可能である。少なくとも一実施例では、処理クラスタ・アレイ2012は、汎用の並列コンピュート動作を実行するように構成される。たとえば、少なくとも一実施例では、処理クラスタ・アレイ2012は、ビデオ及び/又はオーディオ・データのフィルタリング、物理動作を含むモデリング動作の実行、及びデータ変換の実行を含む処理タスクを実行するための論理を含むことができる。
【0318】
少なくとも一実施例では、処理クラスタ・アレイ2012は、並列グラフィックス処理動作を実行するように構成される。少なくとも一実施例では、処理クラスタ・アレイ2012は、テクスチャ動作を実行するためのテクスチャ・サンプリング論理、並びにモザイク論理、及び他の頂点処理論理を含むがこれらに限定されないこうしたグラフィックス処理動作の実行をサポートするための追加の論理を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ2012は、頂点シェーダ、モザイク・シェーダ、ジオメトリ・シェーダ、及びピクセル・シェーダなどであるが、これらに限定されないグラフィックス処理関連のシェーダ・プログラムを実行するように構成されることが可能である。少なくとも一実施例では、並列処理ユニット2002は、処理するためにデータをシステム・メモリからI/Oユニット2004を介して転送することができる。少なくとも一実施例では、処理中、転送されたデータを、処理中にオン・チップ・メモリ(たとえば、並列プロセッサ・メモリ2022)に記憶し、次いでシステム・メモリに書き戻すことができる。
【0319】
少なくとも一実施例では、並列処理ユニット2002を使用してグラフィックス処理が実行される場合には、処理クラスタ・アレイ2012の複数のクラスタ2014A~2014Nにグラフィックス処理動作をよりうまく分配できるようにするため、処理ワークロードをおおよそ等しい大きさのタスクに分割するようにスケジューラ2010を構成することができる。少なくとも一実施例では、処理クラスタ・アレイ2012の一部分は、異なるタイプの処理を実行するように構成されることが可能である。たとえば、少なくとも一実施例では、レンダリング画像を生成して表示するために、第1の部分は、頂点シェーディング及びトポロジ生成を実行するように構成されてもよく、第2の部分は、モザイク及びジオメトリのシェーディングを実行するように構成されてもよく、第3の部分は、ピクセル・シェーディング又は他の画面空間動作を実行するように構成されてもよい。少なくとも一実施例では、クラスタ2014A~2014Nのうちの1つ又は複数によって生成される中間データをバッファに記憶して、さらなる処理のためにクラスタ2014A~2014Nの間で中間データを送信できるようにしてもよい。
【0320】
少なくとも一実施例では、処理クラスタ・アレイ2012は、実行される処理タスクをスケジューラ2010を介して受け取ることができ、スケジューラ2010は、処理タスクを定義するコマンドをフロント・エンド2008から受け取る。少なくとも一実施例では、処理タスクは、処理されるデータのインデックス、たとえば、表面(パッチ)データ、プリミティブ・データ、頂点データ、及び/又はピクセル・データ、並びに状態パラメータ、及びデータをどのように処理すべきかを定義するコマンド(たとえば、どのプログラムを実行すべきか)を含むことができる。少なくとも一実施例では、スケジューラ2010は、タスクに対応するインデックスをフェッチするように構成されてもよく、又はフロント・エンド2008からインデックスを受け取ってもよい。少なくとも一実施例では、フロント・エンド2008は、入ってくるコマンド・バッファ(たとえば、バッチ・バッファ、プッシュ・バッファなど)によって指定されるワークロードが開始される前に、処理クラスタ・アレイ2012が有効な状態に構成されていることを保証するように構成されることが可能である。
【0321】
少なくとも一実施例では、並列処理ユニット2002の1つ又は複数のインスタンスのそれぞれは、並列プロセッサ・メモリ2022と結合することができる。少なくとも一実施例では、並列プロセッサ・メモリ2022には、メモリ・クロスバー2016を介してアクセスすることができ、メモリ・クロスバー2016は、処理クラスタ・アレイ2012並びにI/Oユニット2004からメモリ要求を受け取ることができる。少なくとも一実施例では、メモリ・クロスバー2016は、メモリ・インターフェース2018を介して並列プロセッサ・メモリ2022にアクセスすることができる。少なくとも一実施例では、メモリ・インターフェース2018は、複数のパーティション・ユニット(たとえば、パーティション・ユニット2020A、パーティション・ユニット2020B~パーティション・ユニット2020N)を含むことができ、これらのユニットはそれぞれ、並列プロセッサ・メモリ2022の一部分(たとえば、メモリ・ユニット)に結合することができる。少なくとも一実施例では、パーティション・ユニット2020A~2020Nの数は、メモリ・ユニットの数と等しくなるように構成され、それにより、第1のパーティション・ユニット2020Aは、対応する第1のメモリ・ユニット2024Aを有し、第2のパーティション・ユニット2020Bは、対応するメモリ・ユニット2024Bを有し、N番目のパーティション・ユニット2020Nは、対応するN番目のメモリ・ユニット2024Nを有する。少なくとも一実施例では、パーティション・ユニット2020A~2020Nの数は、メモリ・ユニットの数に等しくなくてもよい。
【0322】
少なくとも一実施例では、メモリ・ユニット2024A~2024Nは、グラフィックス・ダブル・データ・レート(GDDR)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。少なくとも一実施例では、またメモリ・ユニット2024A~2024Nはまた、高帯域幅メモリ(HBM)、HBM2e、又はHDM3を含むがこれに限定されない3D積層メモリを含んでもよい。少なくとも一実施例では、並列プロセッサ・メモリ2022の利用可能な帯域幅を効率的に使用するために、フレーム・バッファ又はテクスチャ・マップなどのレンダー・ターゲットが、メモリ・ユニット2024A~2024Nにわたって記憶されて、パーティション・ユニット2020A~2020Nが、各レンダー・ターゲットの部分を並列に書き込みできるようにしてもよい。少なくとも一実施例では、システム・メモリとローカル・キャッシュ・メモリを併用する統合メモリ設計に有利なように、並列プロセッサ・メモリ2022のローカル・インスタンスは除外されてもよい。
【0323】
少なくとも一実施例では、処理クラスタ・アレイ2012のクラスタ2014A~2014Nのうちのいずれか1つは、並列プロセッサ・メモリ2022内のメモリ・ユニット2024A~2024Nのいずれかに書き込まれることになるデータを処理することができる。少なくとも一実施例では、メモリ・クロスバー2016は、各クラスタ2014A~2014Nの出力を、出力に対してさらなる処理動作を実行することができる任意のパーティション・ユニット2020A~2020N、又は別のクラスタ2014A~2014Nに転送するように構成されることが可能である。少なくとも一実施例では、各クラスタ2014A~2014Nは、メモリ・クロスバー2016を通ってメモリ・インターフェース2018と通信して、様々な外部メモリ・デバイスからの読取り、又はそれへの書込みを行うことができる。少なくとも一実施例では、メモリ・クロスバー2016は、I/Oユニット2004と通信するためのメモリ・インターフェース2018への接続部、並びに並列プロセッサ・メモリ2022のローカル・インスタンスへの接続部を有して、異なる処理クラスタ2014A~2014N内の処理ユニットが、システム・メモリ、又は並列処理ユニット2002のローカルにない他のメモリと通信できるようにする。少なくとも一実施例では、メモリ・クロスバー2016は、仮想チャネルを使用して、クラスタ2014A~2014Nと、パーティション・ユニット2020A~2020Nとの間でトラフィック・ストリームを分離することができる。
【0324】
少なくとも一実施例では、並列処理ユニット2002の複数のインスタンスは、単一のアドイン・カードに提供されてもよく、又は複数のアドイン・カードが相互接続されてもよい。少なくとも一実施例では、異なるインスタンスが異なる数の処理コア、異なる量のローカル並列プロセッサ・メモリ、及び/又は他の異なる構成を有する場合でも、並列処理ユニット2002の異なるインスタンスは相互動作するように構成されることが可能である。たとえば、少なくとも一実施例では、並列処理ユニット2002のいくつかインスタンスは、他のインスタンスに比べて高い精度の浮動小数点ユニットを含むことができる。少なくとも一実施例では、並列処理ユニット2002又は並列プロセッサ2000のうちの1つ又は複数のインスタンスを組み込んだシステムは、デスクトップ、ラップトップ、若しくは携帯型のパーソナル・コンピュータ、サーバ、ワークステーション、ゲーム・コンソール、及び/又は組み込みシステムを含むが、これらに限定されない様々な構成及びフォーム・ファクタで実装することができる。
【0325】
図20Bは、少なくとも一実施例によるパーティション・ユニット2020のブロック図である。少なくとも一実施例では、パーティション・ユニット2020は、図20Aのパーティション・ユニット2020A~2020Nのうちの1つのパーティション・ユニットのインスタンスである。少なくとも一実施例では、パーティション・ユニット2020は、L2キャッシュ2021、フレーム・バッファ・インターフェース2025、及びROP:raster operations unit2026(ラスタ演算ユニット)を含む。少なくとも一実施例では、L2キャッシュ2021は、メモリ・クロスバー2016及びROP2026から受け取ったロード及びストアの動作を実行するように構成された読取り/書込みキャッシュである。少なくとも一実施例では、読取りミス及び至急の書戻し要求が、処理のためにL2キャッシュ2021によってフレーム・バッファ・インターフェース2025に出力される。少なくとも一実施例では、更新も、処理のためにフレーム・バッファ・インターフェース2025を介してフレームに送ることができる。少なくとも一実施例では、フレーム・バッファ・インターフェース2025は、図20Aの(たとえば並列プロセッサ・メモリ2022内の)メモリ・ユニット2024A~2024Nなど、並列プロセッサ・メモリのメモリ・ユニットのうちの1つとインターフェースをとる。
【0326】
少なくとも一実施例では、ROP2026は、ステンシル、zテスト、ブレンディングなどのラスタ演算を実行する処理ユニットである。少なくとも一実施例では、次いでROP2026は、グラフィックス・メモリに記憶された処理済みグラフィックス・データを出力する。少なくとも一実施例では、ROP2026は、メモリに書き込まれる深度又は色データを圧縮し、メモリから読み取られた深度又は色データを解凍するための圧縮論理を含む。少なくとも一実施例では、圧縮論理は、複数の圧縮アルゴリズムのうちの1つ又は複数を利用するロスレス圧縮論理とすることができる。少なくとも一実施例では、ROP2026によって実行される圧縮のタイプは、圧縮されるデータの統計的特徴に基づき変更することができる。たとえば、少なくとも一実施例では、深度及び色データに対してはタイルごとにデルタ色圧縮が実行される。
【0327】
少なくとも一実施例では、ROP2026は、パーティション・ユニット2020内の代わりに、各処理クラスタ内(たとえば、図20Aのクラスタ2014A~2014N)に含まれる。少なくとも一実施例では、ピクセル・フラグメント・データの代わりに、ピクセル・データの読取り及び書込み要求が、メモリ・クロスバー2016を介して送信される。少なくとも一実施例では、処理済みグラフィックス・データは、図19の1つ又は複数のディスプレイ・デバイス1910のうちの1つなどのディスプレイ・デバイスに表示されてもよく、プロセッサ1902によってさらなる処理のためにルーティングされてもよく、又は図20Aの並列プロセッサ2000内の処理エンティティのうちの1つによってさらなる処理のためにルーティングされてもよい。
【0328】
図20Cは、少なくとも一実施例による並列処理ユニット内の処理クラスタ2014のブロック図である。少なくとも一実施例では、処理クラスタは、図20Aの処理クラスタ2014A~2014Nのうちの1つの処理クラスタのインスタンスである。少なくとも一実施例では、処理クラスタ2014は、多数のスレッドを並列で実行するように構成されてもよく、ここで「スレッド」とは、入力データの特定のセットに対して実行している特定のプログラムのインスタンスを指す。少なくとも一実施例では、複数の独立した命令ユニットを提供することなく、多数のスレッドの並列実行をサポートするために、単一命令複数データ(SIMD)の命令発行技法が使用される。少なくとも一実施例では、それぞれの処理クラスタ内の処理エンジンのセットに命令を発行するように構成された共通の命令ユニットを使用して、全体的に同期された多数のスレッドの並列実行をサポートするために、単一命令複数スレッド(SIMT:single-instruction, multiple-thread)の技法が使用される。
【0329】
少なくとも一実施例では、処理クラスタ2014の動作は、SIMT並列プロセッサに処理タスクを分配するパイプライン・マネージャ2032を介して制御することができる。少なくとも一実施例では、パイプライン・マネージャ2032は、図20Aのスケジューラ2010から命令を受け取り、グラフィックス・マルチプロセッサ2034及び/又はテクスチャ・ユニット2036を介してこれらの命令の実行を管理する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034は、SIMT並列プロセッサの例示的なインスタンスである。しかし、少なくとも一実施例では、アーキテクチャの異なる様々なタイプのSIMT並列プロセッサが、処理クラスタ2014内に含まれてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034の1つ又は複数のインスタンスは、処理クラスタ2014内に含めることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034はデータを処理することができ、処理済みデータを、他のシェーダ・ユニットを含む複数の可能な宛先のうちの1つに分配するためにデータ・クロスバー2040が使用されてもよい。少なくとも一実施例では、パイプライン・マネージャ2032は、データ・クロスバー2040を通して分配されることになる処理済みデータの宛先を指定することによって、処理済みデータの分配を容易にすることができる。
【0330】
少なくとも一実施例では、処理クラスタ2014内の各グラフィックス・マルチプロセッサ2034は、関数実行論理(たとえば、算術論理演算ユニット、ロード・ストア・ユニットなど)の同一のセットを含むことができる。少なくとも一実施例では、関数実行論理は、前の命令が完了する前に新規の命令を発行することができるパイプライン式に構成されることが可能である。少なくとも一実施例では、関数実行論理は、整数及び浮動小数点の算術、比較演算、ブール演算、ビット・シフト、及び様々な代数関数の計算を含む様々な演算をサポートする。少なくとも一実施例では、同じ関数ユニットのハードウェアを活用して、異なる演算を実行することができ、関数ユニットの任意の組合せが存在してもよい。
【0331】
少なくとも一実施例では、処理クラスタ2014に送信される命令がスレッドを構成する。少なくとも一実施例では、並列処理エンジンのセットにわたって実行されているスレッドのセットが、スレッド・グループである。少なくとも一実施例では、スレッド・グループは、異なる入力データに対して共通のプログラムを実行する。少なくとも一実施例では、スレッド・グループ内の各スレッドを、グラフィックス・マルチプロセッサ2034内の異なる処理エンジンに割り当てることができる。少なくとも一実施例では、スレッド・グループは、グラフィックス・マルチプロセッサ2034内の処理エンジンの数よりも少ないスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループが処理エンジンの数よりも少ないスレッドを含む場合、処理エンジンのうちの1つ又は複数は、そのスレッド・グループが処理されているサイクル中にはアイドルであってもよい。少なくとも一実施例では、スレッド・グループはまた、グラフィックス・マルチプロセッサ2034内の処理エンジンの数よりも多いスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループがグラフィックス・マルチプロセッサ2034内の処理エンジンの数より多くのスレッドを含む場合には、連続したクロック・サイクルにわたって処理を実行することができる。少なくとも一実施例では、複数のスレッド・グループを、グラフィックス・マルチプロセッサ2034上で同時に実行することができる。
【0332】
少なくとも一実施例では、グラフィックス・マルチプロセッサ2034は、ロード及びストアの動作を実行するための内部キャッシュ・メモリを含む。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034は、内部キャッシュをやめて、処理クラスタ2014内のキャッシュ・メモリ(たとえば、L1キャッシュ2048)を使用することができる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2034は、パーティション・ユニット(たとえば、図20Aのパーティション・ユニット2020A~2020N)内のL2キャッシュにもアクセスすることができ、これらのキャッシュが、すべての処理クラスタ2014間で共有され、スレッド間でデータを転送するために使用されてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034は、オフ・チップのグローバル・メモリにもアクセスすることができ、このメモリは、ローカル並列プロセッサ・メモリ及び/又はシステム・メモリのうちの1つ又は複数を含むことができる。少なくとも一実施例では、並列処理ユニット2002の外部にある任意のメモリが、グローバル・メモリとして使用されてもよい。少なくとも一実施例では、処理クラスタ2014は、グラフィックス・マルチプロセッサ2034の複数のインスタンスを含み、共通の命令及びデータを共有することができ、これらはL1キャッシュ2048に記憶されてもよい。
【0333】
少なくとも一実施例では、各処理クラスタ2014は、仮想アドレスを物理アドレスにマッピングするように構成されたMMU2045(メモリ管理ユニット)を含んでもよい。少なくとも一実施例では、MMU2045の1つ又は複数のインスタンスは、図20Aのメモリ・インターフェース2018内にあってもよい。少なくとも一実施例では、MMU2045は、仮想アドレスを、タイル及び任意選択でキャッシュ・ライン・インデックスの物理アドレスにマッピングするために使用されるページ・テーブル・エントリ(PTE)のセットを含む。少なくとも一実施例では、MMU2045は、アドレスのトランスレーション・ルックアサイド・バッファ(TLB)又はキャッシュを含んでもよく、これらは、グラフィックス・マルチプロセッサ2034若しくはL1 2048キャッシュ、又は処理クラスタ2014内にあってもよい。少なくとも一実施例では、表面データ・アクセスをローカルに分散するように物理アドレスを処理して、パーティション・ユニット間で要求の効率的なインターリーブが可能になる。少なくとも一実施例では、キャッシュ・ライン・インデックスを使用して、キャッシュ・ラインの要求がヒットかミスかが判定されてもよい。
【0334】
少なくとも一実施例では、各グラフィックス・マルチプロセッサ2034がテクスチャ・ユニット2036に結合されて、テクスチャ・マッピング動作、たとえば、テクスチャ・サンプル位置の判定、テクスチャ・データの読取り、及びテクスチャ・データのフィルタリングが実行されるように、処理クラスタ2014が構成されてもよい。少なくとも一実施例では、テクスチャ・データは、内部テクスチャL1キャッシュ(図示せず)から、又はグラフィックス・マルチプロセッサ2034内のL1キャッシュから読み取られ、必要に応じて、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリからフェッチされる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2034は、処理済みタスクをデータ・クロスバー2040に出力して、さらなる処理のために別の処理クラスタ2014に処理済みタスクを提供し、又はメモリ・クロスバー2016を介して、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリに処理済みタスクを記憶する。少なくとも一実施例では、プレROP2042(プレ・ラスタ演算ユニット)は、グラフィックス・マルチプロセッサ2034からデータを受け取り、ROPユニットにデータを仕向けるように構成されており、ROPユニットは、本明細書に記載のするように、パーティション・ユニット(たとえば、図20Aのパーティション・ユニット2020A~2020N)に位置付けられてもよい。少なくとも一実施例では、プレROP2042ユニットは、色ブレンディングの最適化を実行し、ピクセル色データを組織化し、アドレス・トランスレーションを実行することができる。
【0335】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス処理クラスタ2014において使用されてもよい。
【0336】
図20Dは、少なくとも一実施例によるグラフィックス・マルチプロセッサ2034を示す。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034は、処理クラスタ2014のパイプライン・マネージャ2032と結合する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034は、命令キャッシュ2052、命令ユニット2054、アドレス・マッピング・ユニット2056、レジスタ・ファイル2058、1つ又は複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)コア2062、及び1つ又は複数のロード/ストア・ユニット2066を含むがこれらに限定されない実行パイプラインを有し、このとき1つ又は複数のロード/ストア・ユニット2066は、動作の実行に対応する命令をロード/ストアするために、ロード/ストア動作を実行することができる。少なくとも一実施例では、GPGPUコア2062、及びロード/ストア・ユニット2066は、メモリ及びキャッシュ相互接続2068を介して、キャッシュ・メモリ2072及び共有メモリ2070に結合される。少なくとも一実施例では、GPGPUコア2062は、図16の集積回路1600の一部など、SoCの一部である。
【0337】
少なくとも一実施例では、命令キャッシュ2052は、実行すべき命令のストリームをパイプライン・マネージャ2032から受け取る。少なくとも一実施例では、命令は、命令キャッシュ2052にキャッシュされ、命令ユニット2054により実行するためにディスパッチされる。少なくとも一実施例では、命令ユニット2054は、命令をスレッド・グループ(たとえば、ワープ、ウェーブフロント、ウェーブ)としてディスパッチすることができ、スレッド・グループの各スレッドは、GPGPUコア2062内の異なる実行ユニットに割り当てられる。少なくとも一実施例では、命令は、統一アドレス空間内のアドレスを指定することによって、ローカル、共有、又はグローバルのアドレス空間のいずれかにアクセスすることができる。少なくとも一実施例では、アドレス・マッピング・ユニット2056を使用して、統一アドレス空間のアドレスを、ロード/ストア・ユニット2066がアクセスできる個別メモリ・アドレスにトランスレーションすることができる。
【0338】
少なくとも一実施例では、レジスタ・ファイル2058は、グラフィックス・マルチプロセッサ2034の機能ユニットにレジスタのセットを提供する。少なくとも一実施例では、レジスタ・ファイル2058は、グラフィックス・マルチプロセッサ2034の機能ユニット(たとえばGPGPUコア2062、ロード/ストア・ユニット2066)のデータ経路に接続された、オペランドのための一時的なストレージを提供する。少なくとも一実施例では、レジスタ・ファイル2058は、レジスタ・ファイル2058の専用部分に各機能ユニットが配分されるように、それぞれの機能ユニット間で分割される。少なくとも一実施例では、レジスタ・ファイル2058は、グラフィックス・マルチプロセッサ2034によって実行されている異なるワープ(ウェーブフロント及び/又はウェーブとも呼ばれてもよい)間で分割される。
【0339】
少なくとも一実施例では、GPGPUコア2062はそれぞれ、グラフィックス・マルチプロセッサ2034の命令を実行するために使用される浮動小数点ユニット(FPU)及び/又は整数算術論理演算ユニット(ALU)を含むことができる。少なくとも一実施例では、GPGPUコア2062同士は、同様のアーキテクチャであってもよく、又は異なるアーキテクチャであってもよい。少なくとも一実施例では、GPGPUコア2062の第1の部分は、単精度FPU及び整数ALUを含み、GPGPUコアの第2の部分は、倍精度FPUを含む。少なくとも一実施例では、FPUは、IEEE754-2008規格浮動小数点演算を実装することができ、又は、可変精度の浮動小数点演算を有効にすることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034はさらに、矩形コピー又はピクセル・ブレンディングの動作などの特定の機能を実行するための、1つ若しくは複数の固定機能ユニット又は特別機能ユニットをさらに含むことができる。少なくとも一実施例では、GPGPUコア2062の1つ又は複数は、固定の又は特別な機能論理も含むことができる。
【0340】
少なくとも一実施例では、GPGPUコア2062は、複数のデータ・セットに対して単一の命令を実行することができるSIMD論理を含む。少なくとも一実施例では、GPGPUコア2062は、SIMD4、SIMD8、及びSIMD16の命令を物理的に実行することができ、SIMD1、SIMD2、及びSIMD32の命令を論理的に実行することができる。少なくとも一実施例では、GPGPUコアのためのSIMD命令は、シェーダ・コンパイラによるコンパイル時に生成されてもよく、又は単一プログラム複数データ(SPMD:single program multiple data)又はSIMTのアーキテクチャ向けに書かれコンパイルされたプログラムを実行しているときに、自動的に生成されてもよい。少なくとも一実施例では、SIMT実行モデルのために構成されたプログラムの複数のスレッドは、単一のSIMD命令を介して実行することができる。たとえば、少なくとも一実施例では、同じ又は同様の動作を実行する8個のSIMTスレッドを、単一のSIMD8の論理ユニットを介して並列に実行することができる。
【0341】
少なくとも一実施例では、メモリ及びキャッシュ相互接続2068は、グラフィックス・マルチプロセッサ2034の各機能ユニットをレジスタ・ファイル2058及び共有メモリ2070に接続する相互接続ネットワークである。少なくとも一実施例では、メモリ及びキャッシュ相互接続2068は、ロード/ストア・ユニット2066が、共有メモリ2070とレジスタ・ファイル2058との間でロード及びストアの動作を実装できるようにするクロスバー相互接続である。少なくとも一実施例では、レジスタ・ファイル2058は、GPGPUコア2062と同じ周波数で動作することができ、したがって、GPGPUコア2062とレジスタ・ファイル2058との間のデータ転送は非常に低レイテンシを有し得る。少なくとも一実施例では、共有メモリ2070を使用して、グラフィックス・マルチプロセッサ2034内の機能ユニットで実行されるスレッド間の通信を可能にすることができる。少なくとも一実施例では、キャッシュ・メモリ2072を、たとえばデータ・キャッシュとして使用して、機能ユニットとテクスチャ・ユニット2036との間で通信されるテクスチャ・データをキャッシュすることができる。少なくとも一実施例では、共有メモリ2070は、プログラム管理キャッシュとしても使用することができる。少なくとも一実施例では、GPGPUコア2062で実行されているスレッドは、キャッシュ・メモリ2072内に記憶される自動キャッシュ・データに加えて、共有メモリ内にプログラム的にデータを記憶することができる。
【0342】
少なくとも一実施例では、本明細書に記載の並列プロセッサ又はGPGPUは、ホスト/プロセッサ・コアに通信可能に結合されて、グラフィックス動作、機械学習動作、パターン分析動作、及び様々な汎用GPU(GPGPU)機能を加速する。少なくとも一実施例では、GPUは、バス又は他の相互接続(たとえば、PCIe又はNVLinkなどの高速相互接続)を介してホスト・プロセッサ/コアに通信可能に結合されてもよい。少なくとも一実施例では、SoCは、本明細書に記載の並列プロセッサ又はGPGPUを含み、前記並列プロセッサ又は前記GPGPUは、前記SoC上で実行される。少なくとも一実施例では、GPUは、コアとしてパッケージ又はチップに一体化されてもよく、パッケージ又はチップの内部の内部プロセッサ・バス/相互接続を介してコアに通信可能に結合されてもよい。少なくとも一実施例では、GPUの接続方法に関わらず、プロセッサ・コアは、ワーク記述子に含まれたコマンド/命令のシーケンスの形でワークをこうしたGPUに配分してもよい。少なくとも一実施例では、次いでGPUは、これらのコマンド/命令を効率的に処理するために専用の回路/論理を使用する。
【0343】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・マルチプロセッサ2034において使用されてもよい。
【0344】
少なくとも一実施例では、図20A図20Dに描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図20A図20Dに描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図20A図20Dに描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0345】
図21は、少なくとも一実施例による、マルチGPUコンピューティング・システム2100を図示する。少なくとも一実施例では、マルチGPUコンピューティング・システム2100は、ホスト・インターフェース・スイッチ2104を介して複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)2106A~Dに結合されたプロセッサ2102を含むことができる。少なくとも一実施例では、ホスト・インターフェース・スイッチ2104は、プロセッサ2102をPCIエクスプレス・バスに結合するPCIエクスプレス・スイッチ・デバイスであり、このPCIエクスプレス・バスを介して、プロセッサ2102は、GPGPU2106A~Dと通信することができる。少なくとも一実施例では、GPGPU2106A~Dは、高速ポイントツーポイントGPUツーGPUリンク2116のセットを介して相互接続することができる。少なくとも一実施例では、GPUツーGPUリンク2116は、専用GPUリンクを介して、GPGPU2106A~Dのそれぞれに接続される。少なくとも一実施例では、P2PのGPUリンク2116は、プロセッサ2102が接続されているホスト・インターフェース・バス2104を介した通信を必要とせずに、GPGPU2106A~Dのそれぞれの間で直接通信を可能にする。少なくとも一実施例では、P2PのGPUリンク2116に仕向けられたGPUツーGPUトラフィックがあると、ホスト・インターフェース・バス2104は、システム・メモリへのアクセスができるように、又はたとえば1つ又は複数のネットワーク・デバイスを介して、マルチGPUコンピューティング・システム2100の他のインスタンスと通信するために、利用可能な状態に保たれる。少なくとも一実施例では、GPGPU2106A~Dは、ホスト・インターフェース・スイッチ2104を介してプロセッサ2102に接続され、少なくとも一実施例では、プロセッサ2102は、P2PのGPUリンク2116のための直接サポートを含み、GPGPU2106A~Dに直接接続することができる。少なくとも一実施例では、GPGPU2106A~Dは、図16の集積回路1600の一部など、SoCの一部であり、GPGPU2106A~Dは、本明細書に記載の動作を実行する。
【0346】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにマルチGPUコンピューティング・システム2100において使用されてもよい。
【0347】
少なくとも一実施例では、マルチGPUコンピューティング・システム2100は、1つ又は複数のグラフィックス・コア1800を含む。
【0348】
少なくとも一実施例では、図21に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図21に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図21に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0349】
図22は、少なくとも一実施例によるグラフィックス・プロセッサ2200のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ2200は、リング相互接続2202、パイプライン・フロント・エンド2204、メディア・エンジン2237、及びグラフィックス・コア2280A~2280Nを含む。少なくとも一実施例では、リング相互接続2202は、グラフィックス・プロセッサ2200を、他のグラフィックス・プロセッサ又は1つ又は複数の汎用プロセッサ・コアを含む他の処理ユニットに結合する。少なくとも一実施例では、グラフィックス・プロセッサ2200は、マルチ・コア処理システム内に一体化された多数のプロセッサのうちの1つである。少なくとも一実施例では、グラフィックス・プロセッサ2200は、グラフィックス・コア1800を含む。
【0350】
少なくとも一実施例では、グラフィックス・プロセッサ2200は、リング相互接続2202を介してコマンドのバッチを受け取る。少なくとも一実施例では、入ってくるコマンドは、パイプライン・フロント・エンド2204のコマンド・ストリーマ2203によって解釈される。少なくとも一実施例では、グラフィックス・プロセッサ2200は、グラフィックス・コア2280A~2280Nを介して3Dジオメトリ処理及びメディア処理を実行するためのスケーラブルな実行論理を含む。少なくとも一実施例では、3Dジオメトリ処理コマンドについては、コマンド・ストリーマ2203はコマンドをジオメトリ・パイプライン2236に供給する。少なくとも一実施例では、少なくとも一部のメディア処理コマンドについては、コマンド・ストリーマ2203はコマンドをビデオ・フロント・エンド2234に供給し、ビデオ・フロント・エンド2234はメディア・エンジン2237に結合される。少なくとも一実施例では、メディア・エンジン2237は、ビデオ及び画像の後処理のためのVideo Quality Engine(VQE)2230と、ハードウェア加速されたメディア・データのエンコード及びデコードを提供するマルチ・フォーマット・エンコード/デコード(MFX)2233エンジンとを含む。少なくとも一実施例では、ジオメトリ・パイプライン2236及びメディア・エンジン2237はそれぞれ、少なくとも1つのグラフィックス・コア2280によって提供されるスレッド実行リソースのための実行スレッドを生成する。
【0351】
少なくとも一実施例では、グラフィックス・プロセッサ2200は、グラフィックス・コア2280A~2280N(モジュール式であり得、コア・スライスと呼ばれることもある)を特徴とするスケーラブルなスレッド実行リソースを含み、それぞれのグラフィックス・コア2280A~2280Nは、複数のサブ・コア2250A~2250N、2260A~2260N(コア・サブスライスと呼ばれることもある)を有する。少なくとも一実施例では、グラフィックス・プロセッサ2200は、任意の数のグラフィックス・コア2280Aを有することができる。少なくとも一実施例では、グラフィックス・プロセッサ2200は、少なくとも第1のサブ・コア2250A及び第2のサブ・コア2260Aを有するグラフィックス・コア2280Aを含む。少なくとも一実施例では、グラフィックス・プロセッサ2200は、単一のサブ・コア(たとえば、2250A)を有する低電力プロセッサである。少なくとも一実施例では、グラフィックス・プロセッサ2200は、複数のグラフィックス・コア2280A~2280Nを含み、このそれぞれが、第1のサブ・コア2250A~2250Nのセット、及び第2のサブ・コア2260A~2260Nのセットを含む。少なくとも一実施例では、第1のサブ・コア2250A~2250Nの各サブ・コアは、少なくとも、実行ユニット2252A~2252Nとメディア/テクスチャ・サンプラ2254A~2254Nの第1のセットを含む。少なくとも一実施例では、第2のサブ・コア2260A~2260Nの各サブ・コアは、少なくとも、実行ユニット2262A~2262Nとサンプラ2264A~2264Nの第2のセットを含む。少なくとも一実施例では、各サブ・コア2250A~2250N、2260A~2260Nは、共有リソース2270A~2270Nのセットを共有する。少なくとも一実施例では、共有リソースは、共有キャッシュ・メモリ及びピクセル動作論理を含む。少なくとも一実施例では、グラフィックス・プロセッサ2200は、パイプライン・フロント・エンド2204にロード/ストア・ユニットを含む。
【0352】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・プロセッサ2200において使用されてもよい。
【0353】
少なくとも一実施例では、図22に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図22に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図22に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0354】
図23は、少なくとも一実施例による、命令を実行するための論理回路を含んでもよいプロセッサ2300のマイクロ・アーキテクチャを図示するブロック図である。少なくとも一実施例では、プロセッサ2300は、x86命令、ARM命令、特定用途向け集積回路(ASIC)用の特別命令などを含む命令を実行してもよい。少なくとも一実施例では、プロセッサ2300は、カリフォルニア州サンタクララのインテルコーポレーションによる、MMX(商標)技術で有効化されたマイクロプロセッサ内の64ビット幅MMXレジスタなど、パック・データを記憶するためのレジスタを含んでもよい。少なくとも一実施例では、整数形式と浮動小数点形式の両方で利用可能なMMXレジスタは、単一命令複数データ(「SIMD」)及びストリーミングSIMD拡張(「SSE」:streaming SIMD extensions)命令を伴うパック・データ要素で動作してもよい。少なくとも一実施例では、SSE2、SSE3、SSE4、AVX、又はそれ以上(総称して「SSEx」と呼ばれる)の技術に関する128ビット幅のXMMレジスタは、こうしたパック・データのオペランドを保持してもよい。少なくとも一実施例では、プロセッサ2300は、機械学習若しくは深層学習のアルゴリズム、訓練、又は推論を加速するために命令を実行してもよい。
【0355】
少なくとも一実施例では、プロセッサ2300は、実行すべき命令をフェッチし、プロセッサ・パイプラインで後に使用すべき命令を準備するイン・オーダ・フロント・エンド(「フロント・エンド」)2301を含む。少なくとも一実施例では、フロント・エンド2301は、いくつかのユニットを含んでもよい。少なくとも一実施例では、命令プリフェッチャ2326が、メモリから命令をフェッチし、命令デコーダ2328に命令を供給し、命令デコーダが、命令をデコード又は解釈する。たとえば、少なくとも一実施例では、命令デコーダ2328は、受け取った命令を、機械が実行することのできる「マイクロ命令」又は「マイクロ・オペレーション」と呼ばれる(「マイクロ・オプス」又は「uops」又は「μ-ops」とも呼ばれる)1つ又は複数のオペレーションにデコードする。少なくとも一実施例では、命令デコーダ2328は、命令を、オプコード及び対応するデータ、並びに制御フィールドに構文解析して、これらがマイクロ・アーキテクチャによって使用されて、少なくとも一実施例による動作が実行されてもよい。少なくとも一実施例では、トレース・キャッシュ2330は、デコードされたuopsを、実行するためにuopキュー2334においてプログラム順のシーケンス又はトレースにアセンブルしてもよい。少なくとも一実施例では、トレース・キャッシュ2330が複雑な命令に遭遇すると、マイクロコードROM2332が、動作の完了に必要なuopsを提供する。
【0356】
少なくとも一実施例では、単一のマイクロ・オプスに変換できる命令もあれば、全動作を完了するためにいくつかのマイクロ・オプスを必要とする命令もある。少なくとも一実施例では、命令を完了するために5つ以上のマイクロ・オプスが要な場合、命令デコーダ2328は、マイクロコードROM2332にアクセスして、命令を実行してもよい。少なくとも一実施例では、命令は、命令デコーダ2328において処理するために、少数のマイクロ・オプスにデコードされてもよい。少なくとも一実施例では、こうした動作を完了するのに多数のマイクロ・オプスが必要な場合には、命令は、マイクロコードROM2332に記憶されてもよい。少なくとも一実施例では、トレース・キャッシュ2330は、少なくとも一実施例によるマイクロコードROM2332からの1つ又は複数の命令を完了するために、エントリ・ポイント・プログラマブル論理アレイ(「PLA」:programmable logic array)を参照して、マイクロコード・シーケンスを読み取るための正しいマイクロ命令ポインタを判定する。少なくとも一実施例では、マイクロコードROM2332が命令のためのマイクロ・オプスのシーケンシングを終了した後、機械のフロント・エンド2301は、トレース・キャッシュ2330からマイクロ・オプスのフェッチを再開してもよい。
【0357】
少なくとも一実施例では、アウト・オブ・オーダ実行エンジン(「アウト・オブ・オーダ・エンジン」)2303は、実行するための命令を準備してもよい。少なくとも一実施例では、アウト・オブ・オーダ実行論理は、命令のフローをなめらかにし、その順序を変更するために多数バッファを有し、命令がパイプラインを下り、実行するようにスケジューリングされるときの性能を最適化する。少なくとも一実施例では、アウト・オブ・オーダ実行エンジン2303は、限定することなく、アロケータ/レジスタ・リネーマ2340、メモリuopキュー2342、整数/浮動小数点uopキュー2344、メモリ・スケジューラ2346、高速スケジューラ2302、低速/汎用浮動小数点スケジューラ(「低速/汎用FP:floating pointスケジューラ」)2304、及び単純浮動小数点スケジューラ(「単純FPスケジューラ」)2306を含む。少なくとも一実施例では、高速スケジューラ2302、低速/汎用浮動小数点スケジューラ2304、及び単純浮動小数点スケジューラ2306は、本明細書において集合的に「uopスケジューラ2302、2304、2306」とも呼ばれる。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2340は、実行するために各uopが必要とする機械バッファ及びリソースを配分する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2340は、レジスタ・ファイルへのエントリ時に論理レジスタの名前を変更する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2340はまた、メモリ・スケジューラ2346及びuopスケジューラ2302、2304、2306の前の、2つのuopキュー、すなわちメモリ動作のためのメモリuopキュー2342と非メモリ動作のための整数/浮動小数点uopキュー2344のうちの1つに、各uopのエントリを配分する。少なくとも一実施例では、uopスケジューラ2302、2304、2306は、uopsがいつ実行準備されるかを、それらの従属入力レジスタ・オペランドのソースが準備されていること、及びそれらの動作を完了するためにuopが必要とする実行リソースが利用可能であることに基づき、判定する。少なくとも一実施例では、高速スケジューラ2302は、メイン・クロック・サイクルの半分ごとにスケジューリングしてもよく、低速/汎用浮動小数点スケジューラ2304及び単純浮動小数点スケジューラ2306は、メイン・プロセッサのクロック・サイクル当たりに1回スケジューリングしてもよい。少なくとも一実施例では、uopスケジューラ2302、2304、2306は、実行するためにuopsをスケジューリングするためにディスパッチ・ポートを調停する。
【0358】
少なくとも一実施例では、実行ブロック2311は、限定することなく、整数レジスタ・ファイル/バイパス・ネットワーク2308、浮動小数点レジスタ・ファイル/バイパス・ネットワーク(「FPレジスタ・ファイル/バイパス・ネットワーク」)2310、アドレス生成ユニット(「AGU」:address generation units)2312及び2314、高速算術論理演算ユニット(ALU)(「高速ALU」)2316及び2318、低速算術論理演算ユニット(「低速ALU」)2320、浮動小数点ALU(「FP」)2322、並びに浮動小数点移動ユニット(「FP移動」)2324を含む。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2308及び浮動小数点レジスタ・ファイル/バイパス・ネットワーク2310は、本明細書において「レジスタ・ファイル2308、2310」とも呼ばれる。少なくとも一実施例では、AGUS2312及び2314、高速ALU2316及び2318、低速ALU2320、浮動小数点ALU2322、及び浮動小数点移動ユニット2324は、本明細書において「実行ユニット2312、2314、2316、2318、2320、2322、及び2324」とも呼ばれる。少なくとも一実施例では、実行ブロック2311は、限定することなく、(ゼロを含む)任意の数及びタイプのレジスタ・ファイル、バイパス・ネットワーク、アドレス生成ユニット、及び実行ユニットを、任意の組合せで含んでもよい。
【0359】
少なくとも一実施例では、レジスタ・ネットワーク2308、2310は、uopスケジューラ2302、2304、2306と、実行ユニット2312、2314、2316、2318、2320、2322、及び2324との間に配置されてもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2308は、整数演算を実行する。少なくとも一実施例では、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2310は、浮動小数点演算を実行する。少なくとも一実施例では、レジスタ・ネットワーク2308、2310のそれぞれは、限定することなく、バイパス・ネットワークを含んでもよく、このバイパス・ネットワークは、レジスタ・ファイルにまだ書き込まれていない完了したばかりの結果を、新しい従属uopsにバイパス又は転送してもよい。少なくとも一実施例では、レジスタ・ネットワーク2308、2310は、互いにデータを通信してもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2308は、限定することなく、2つの別々のレジスタ・ファイル、すなわち低次32ビットのデータ用の1つのレジスタ・ファイル、及び高次32ビットのデータ用の第2のレジスタ・ファイルを含んでもよい。少なくとも一実施例では、浮動小数点命令は、通常、64~128ビット幅のオペランドを有することから、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2310は、限定することなく、128ビット幅のエントリを含んでもよい。
【0360】
少なくとも一実施例では、実行ユニット2312、2314、2316、2318、2320、2322、2324は、命令を実行してもよい。少なくとも一実施例では、レジスタ・ネットワーク2308、2310は、マイクロ命令が実行する必要のある整数及び浮動小数点のデータのオペランド値を記憶する。少なくとも一実施例では、プロセッサ2300は、限定することなく、任意の数及び組合せの実行ユニット2312、2314、2316、2318、2320、2322、2324を含んでよい。少なくとも一実施例では、浮動小数点ALU2322及び浮動小数点移動ユニット2324は、浮動小数点、MMX、SIMD、AVX、及びSEE、又は特別な機械学習命令を含む他の演算を実行してもよい。少なくとも一実施例では、浮動小数点ALU2322は、限定することなく、64ビットずつの浮動小数点デバイダを含み、除算、平方根、及び残りのマイクロ・オプスを実行してもよい。少なくとも一実施例では、浮動小数点値を含む命令は、浮動小数点ハードウェアによって対処されてもよい。少なくとも一実施例では、ALU演算は、高速ALU2316、2318に渡されてもよい。少なくとも一実施例では、高速ALU2316、2318は、クロック・サイクルの半分の実効レイテンシで高速演算を実行してもよい。少なくとも一実施例では、低速ALU2320は、乗数、シフト、フラグ論理、及びブランチ処理などの長レイテンシ・タイプの演算のための整数実行ハードウェアを、限定することなく含んでもよいことから、ほとんどの複雑な整数演算は低速ALU2320に進む。少なくとも一実施例では、メモリのロード/ストア動作は、AGU2312、2314によって実行されてもよい。少なくとも一実施例では、高速ALU2316、高速ALU2318、及び低速ALU2320は、64ビットのデータ・オペランドで整数演算を実行してもよい。少なくとも一実施例では、高速ALU2316、高速ALU2318、及び低速ALU2320は、16、32、128、256などを含む様々なデータ・ビット・サイズをサポートするように実装されてもよい。少なくとも一実施例では、浮動小数点ALU2322及び浮動小数点移動ユニット2324は、SIMD及びマルチメディア命令と併せた128ビット幅のパック・データ・オペランドなど様々なビット幅を有する幅広いオペランドをサポートするように実装されてもよい。
【0361】
少なくとも一実施例では、uopスケジューラ2302、2304、2306は、親ロードが実行を終了する前に、従属演算をディスパッチする。少なくとも一実施例では、uopsは、プロセッサ2300において投機的にスケジューリング及び実行されてもよいので、プロセッサ2300は、メモリ・ミスに対処するための論理も含んでよい。少なくとも一実施例では、データ・キャッシュにおいてデータ・ロードがミスした場合、一時的に不正確なデータを有するスケジューラを通り過ぎたパイプラインに、進行中の従属演算が存在してもよい。少なくとも一実施例では、リプレイ機構が、不正確なデータを使用する命令を追跡及び再実行する。少なくとも一実施例では、従属演算は、リプレイされる必要があってもよく、独立した演算は、完了が許容されてもよい。少なくとも一実施例では、プロセッサの少なくとも一実施例のスケジューラ及びリプレイ機構はまた、テキスト・ストリング比較演算のための命令シーケンスを捕捉するように設計されてもよい。
【0362】
少なくとも一実施例では、「レジスタ」は、オペランドを識別するための命令の一部として使用することができるオンボード・プロセッサのストレージ・ロケーションを指してもよい。少なくとも一実施例では、レジスタは、(プログラマの視点から見て)プロセッサの外部から使用可能であり得るものであってもよい。少なくとも一実施例では、レジスタは、特定のタイプの回路に限定されなくてもよい。むしろ、少なくとも一実施例では、レジスタは、データを記憶し、データを提供し、本明細書に記載の機能を実行してもよい。少なくとも一実施例では、本明細書に記載のレジスタは、専用物理レジスタ、レジスタ・リネーミングを使用して動的に配分される物理レジスタ、専用物理レジスタと動的に配分される物理レジスタとの組合せなどのような、任意の数の異なる技法を使用して、プロセッサ内の回路によって実装されてもよい。少なくとも一実施例では、整数レジスタは、32ビットの整数データを記憶する。少なくとも一実施例のレジスタ・ファイルは、パック・データのための8つのマルチメディアSIMDレジスタも含む。
【0363】
少なくとも一実施例では、プロセッサ2300又はプロセッサ2300の各コアは、1つ若しくは複数のプリフェッチャ、1つ若しくは複数のフェッチャ、1つ若しくは複数のプリデコーダ、データ(たとえば、命令)をデコードするための1つ若しくは複数のデコーダ、(たとえば、動作又はAPIコールに対応する)命令を処理するための1つ若しくは複数の命令キュー、マイクロ・オペレーション(μOP)を記憶するための1つ若しくは複数のマイクロ・オペレーション・キャッシュ、1つ若しくは複数のマイクロ・オペレーション(μOP)キュー、イン・オーダ実行エンジン、1つ若しくは複数のロード・バッファ、1つ若しくは複数のストア・バッファ、1つ若しくは複数のリオーダ・バッファ、1つ若しくは複数のフィル・バッファ、アウト・オブ・オーダ実行エンジン、1つ若しくは複数のポート、1つ若しくは複数のシフト及び/若しくはシフタ・ユニット、1つ若しくは複数の融合積和演算(FMA:fused multiply accumulate)ユニット、動作を実行する(たとえば、API、APIコールを実行する)ためにデータ(たとえば、命令)をロード/ストアすることに対応するストア動作のロードを実行するための1つ若しくは複数のロード・ストア・ユニット(「LSU」)、1つ若しくは複数の行列積和演算(MMA:matrix multiply accumulate)ユニット、並びに/又は前記プロセッサ2300に対して本明細書にさらに記載の任意の機能を実行するための1つ若しくは複数のシャッフル・ユニットを含む。少なくとも一実施例では、プロセッサ2300は、APIをコールすることに対応する命令に、アクセスすること、使用すること、実施すること、又は実行することができる。
【0364】
少なくとも一実施例では、プロセッサ2300は、たとえばポイントツーポイント・プロセッサ・インターコネクトである、1つ若しくは複数のウルトラ・パス・インターコネクト(UPI);1つ若しくは複数のPCIe;計算若しくは演算を加速させるための1つ若しくは複数のアクセラレータ;並びに/又は1つ若しくは複数のメモリ・コントローラを含む。少なくとも一実施例では、プロセッサ2300は、1つ又は複数のメモリ・コントローラに結合される共有ラスト・レベル・キャッシュ(LLC:last level cache)を含み、これにより、プロセッサ・コアをまたいだ共有メモリ・アクセスが可能となる。
【0365】
少なくとも一実施例では、プロセッサ2300又はプロセッサ2300のコアはメッシュ・アーキテクチャを有し、このメッシュ・アーキテクチャでは、プロセッサ・コア、オン・チップ・キャッシュ、メモリ・コントローラ、及びI/Oコントローラは行と列にまとめられ、これらは各交点でワイヤ及びスイッチを用いて接続されてターンを可能にする。少なくとも一実施例では、プロセッサ2300は、たとえばDouble Data Rate 5 Synchronous Dynamic Random-Access Memory(DDR5 SDRAM) に、データを記憶するかデータをキャッシュする、1つ又は複数の高メモリ帯域幅(HMB、たとえばHMBe)を有する。少なくとも一実施例では、プロセッサ2300の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続される。少なくとも一実施例では、メモリ・コントローラは、「least recently used」(LRU)手法を使用して、何がキャッシュに記憶されたかを決定する。少なくとも一実施例では、プロセッサ2300は、1つ又は複数のPCIe(たとえば、PCIe5.0)を含む。
【0366】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715の一部又はすべてが、実行ブロック2311、及び図示してある若しくは図示していない他のメモリ又はレジスタに組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、実行ブロック2311に図示するALUのうちの1つ又は複数を使用してもよい。さらに、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行ブロック2311のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
【0367】
少なくとも一実施例では、図23に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図23に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図23に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0368】
図24は、少なくとも一実施例による深層学習アプリケーション・プロセッサ2400を図示する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2400は、深層学習アプリケーション・プロセッサ2400によって実行される場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、深層学習アプリケーション・プロセッサ2400に実行させる命令を使用する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2400は、特定用途向け集積回路(ASIC)である。少なくとも一実施例では、アプリケーション・プロセッサ2400は、1つ若しくは複数の命令又は両方を実行した結果としていずれもハードウェアに「ハードワイヤード」された行列乗算演算を実行する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2400は、限定することなく、処理クラスタ2410(1)~2410(12)、チップ間リンク(「ICL」)2420(1)~2420(12)、チップ間コントローラ(「ICC」)2430(1)~2430(2)、高帯域幅メモリ第2世代(「HBM2」)2440(1)~2440(4)、メモリ・コントローラ(「Mem Ctrlrs」)2442(1)~2442(4)、高帯域幅メモリ物理層(「HBM PHY」)2444(1)~2444(4)、管理-コントローラ中央処理装置(「管理-コントローラCPU」)2450、シリアル・ペリフェラル・インターフェース、集積回路間、及び汎用入力/出力ブロック(「SPI、IC、GPIO」)2460、周辺構成要素相互接続エクスプレス・コントローラ及びダイレクト・メモリ・アクセス・ブロック(「PCIeコントローラ及びDMA」)2470、並びに16レーン周辺構成要素相互接続エクスプレス・ポート(「PCI Expressx16」)2480を含む。
【0369】
少なくとも一実施例では、処理クラスタ2410は、本明細書に記載の技法を含む1つ又は複数の訓練技法が計算された重みパラメータに基づき、推論又は予測の演算を含む深層学習演算を実行してもよい。少なくとも一実施例では、各処理クラスタ2410は、限定することなく、任意の数及びタイプのプロセッサを含んでもよい。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2400は、任意の数及びタイプの処理クラスタ2400を含んでもよい。少なくとも一実施例では、チップ間リンク2420は、双方向性である。少なくとも一実施例では、チップ間リンク2420及びチップ間コントローラ2430は、1つ又は複数のニューラル・ネットワークに具体化された1つ又は複数の機械学習アルゴリズムを実行した結果得られるアクティブ化情報を含む情報を、複数の深層学習アプリケーション・プロセッサ2400が交換できるようにする。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2400は、(ゼロを含む)任意の数及びタイプのICL2420及びICC2430を含んでもよい。
【0370】
少なくとも一実施例では、HBM2 2440は、合計32ギガバイト(GB:Gigabyte)のメモリを提供する。少なくとも一実施例では、HBM2 2440(i)は、メモリ・コントローラ2442(i)とHBM PHY2444(i)の両方に関連付けられ、ここで「i」は任意の整数である。少なくとも一実施例では、任意の数のHBM2 2440が、任意のタイプ及び合計量の高帯域幅メモリを提供してもよく、(ゼロを含む)任意の数及びタイプのメモリ・コントローラ2442及びHBM PHY2444に関連付けられてもよい。少なくとも一実施例では、SPI、IC、GPIO2460、PCIeコントローラ及びDMA2470、並びに/又はPCIe2480は、任意の技術的に実行可能なやり方で任意の数及びタイプの通信規格を有効にする任意の数及びタイプのブロックに置き換えられてもよい。
【0371】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、深層学習アプリケーション・プロセッサ2400に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2400は、別のプロセッサ若しくはシステムによって、又は深層学習アプリケーション・プロセッサ2400によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、プロセッサ2400は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【0372】
少なくとも一実施例では、図24に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図24に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図24に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0373】
図25は、少なくとも一実施例による、ニューロモーフィック・プロセッサ2500のブロック図である。少なくとも一実施例では、ニューロモーフィック・プロセッサ2500は、ニューロモーフィック・プロセッサ2500の外部のソースから1つ又は複数の入力を受信してもよい。少なくとも一実施例では、これらの入力は、ニューロモーフィック・プロセッサ2500内の1つ又は複数のニューロン2502に送信されてもよい。少なくとも一実施例では、ニューロン2502及びその構成要素は、1つ又は複数の算術論理演算ユニット(ALU)を含む回路又は論理を使用して、実装されてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2500は、限定することなく、ニューロン2502の数千又は数百万のインスタンスを含んでもよいが、任意の好適な数のニューロン2502が使用されてもよい。少なくとも一実施例では、ニューロン2502の各インスタンスは、ニューロン入力2504及びニューロン出力2506を含んでもよい。少なくとも一実施例では、ニューロン2502は出力を生成してもよく、この出力は、ニューロン2502の他のインスタンスの入力に送信されてもよい。たとえば、少なくとも一実施例では、ニューロン入力2504及びニューロン出力2506は、シナプス2508を介して相互接続されてもよい。
【0374】
少なくとも一実施例では、ニューロン2502とシナプス2508は、ニューロモーフィック・プロセッサ2500が受信した情報をニューロモーフィック・プロセッサ2500が動作して処理又は分析するように、相互接続されてもよい。少なくとも一実施例では、ニューロン2502は、ニューロン入力2504を介して受信した入力が、閾値を超えているとき、出力パルス(又は「発火」若しくは「スパイク」)を送信してもよい。少なくとも一実施例では、ニューロン2502は、ニューロン入力2504において受信した信号を合計又は積分してもよい。たとえば、少なくとも一実施例では、ニューロン2502は、漏れ積分発火ニューロン(leaky integrate-and-fire neuron)として実装されてもよく、ここで、合計(「膜電位」と呼ばれる)が閾値を超える場合には、ニューロン2502は、シグモイド関数又は閾値関数などの伝達関数を使用して、出力(又は「発火」)を生成してもよい。少なくとも一実施例では、漏れ積分発火ニューロンは、ニューロン入力2504で受信した信号を合計して膜電位にしてもよく、また、崩壊因子(又は漏れ)を適用して膜電位を低減してもよい。少なくとも一実施例では、複数の入力信号が、閾値を超えるほど十分に素早く(すなわち、膜電位の崩壊が少なすぎて発火できなくなる前に)ニューロン入力2504において受信された場合には、漏れ積分発火ニューロンが発火してもよい。少なくとも一実施例では、ニューロン2502は、入力を受信し、入力を積分して膜電位にし、膜電位を崩壊させる回路又は論理を使用して、実装されてもよい。少なくとも一実施例では、入力は平均化されてもよく、又は任意の他の好適な伝達関数が使用されてもよい。さらに、少なくとも一実施例では、ニューロン2502は、ニューロン入力2504に伝達関数を適用した結果が閾値を超えるとき、ニューロン出力2506において出力スパイクを生成するコンパレータ回路又は論理を、限定することなく含んでもよい。少なくとも一実施例では、ニューロン2502は発火すると、前に受信した入力情報を、たとえば膜電位を0又は他の好適なデフォルト値に再設定することによって、無視してもよい。少なくとも一実施例では、膜電位が0にリセットされると、ニューロン2502は、好適な期間(又は不応期)の後に通常の動作を再開してもよい。
【0375】
少なくとも一実施例では、ニューロン2502は、シナプス2508を通して相互接続されてもよい。少なくとも一実施例では、シナプス2508は、第1のニューロン2502の出力から第2のニューロン2502の入力に信号を送信するように動作してもよい。少なくとも一実施例では、ニューロン2502は、シナプス2508の2つ以上のインスタンスを介して情報を送信してもよい。少なくとも一実施例では、ニューロン出力2506の1つ又は複数のインスタンスは、シナプス2508のインスタンスを介して、同じニューロン2502のニューロン入力2504のインスタンスに接続されてもよい。少なくとも一実施例では、シナプス2508のインスタンスを介して送信されることになる出力を生成するニューロン2502のインスタンスは、シナプス2508のそのインスタンスに対して「シナプス前ニューロン」と呼ばれてもよい。少なくとも一実施例では、シナプス2508のインスタンスを介して送信されることになる入力を受信するニューロン2502のインスタンスは、シナプス2508のそのインスタンスに対して「シナプス後ニューロン」と呼ばれてもよい。少なくとも一実施例では、ニューロン2502のインスタンスは、シナプス2508の1つ又は複数のインスタンスから入力を受信してもよく、また、シナプス2508の1つ又は複数のインスタンスを介して出力を送信してもよいので、ニューロン2502の単一のインスタンスは、したがって、シナプス2508の様々なインスタンスに対して「シナプス前ニューロン」と「シナプス後ニューロン」の両方であってもよい。
【0376】
少なくとも一実施例では、ニューロン2502は、1つ又は複数の層に組織化されてもよい。少なくとも一実施例では、ニューロン2502の各インスタンスは、1つ又は複数のシナプス2508を通って1つ又は複数のニューロン入力2504にファン・アウトすることができる1つのニューロン出力2506を有してもよい。少なくとも一実施例では、第1の層2510のニューロン2502のニューロン出力2506は、第2の層2512のニューロン2502のニューロン入力2504に接続されてもよい。少なくとも一実施例では、層2510は、「フィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第1の層2510のインスタンスにおけるニューロン2502の各インスタンスは、第2の層2512におけるニューロン2502の各インスタンスにファン・アウトしてもよい。少なくとも一実施例では、第1の層2510は、「完全に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層2512のインスタンスにおけるニューロン2502の各インスタンスは、第3の層2514におけるニューロン2502の全インスタンスより少ないインスタンスにファン・アウトしてもよい。少なくとも一実施例では、第2の層2512は、「疎に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層2512のニューロン2502は、第2の層2512におけるニューロン2502を含め、複数の他の層のニューロン2502にファン・アウトしてもよい。少なくとも一実施例では、第2の層2512は、「回帰層」と呼ばれてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2500は、疎に接続されたフィード・フォワード層と完全に接続されたフィード・フォワード層の両方を限定することなく含む、回帰層とフィード・フォワード層の任意の好適な組合せを限定することなく含んでもよい。
【0377】
少なくとも一実施例では、ニューロモーフィック・プロセッサ2500は、シナプス2508をニューロン2502に接続するための再構成可能相互接続アーキテクチャ、又は専用ハードワイヤード相互接続を、限定することなく含んでもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2500は、ニューラル・ネットワーク・トポロジ、及びニューロンのファン・イン/ファン・アウトに基づき、必要に応じてシナプスを異なるニューロン2502に配分できるようにする回路又は論理を、限定することなく含んでもよい。たとえば、少なくとも一実施例では、シナプス2508は、ネットワーク・オン・チップなどの相互接続ファブリックを使用して、又は専用の接続を用いて、ニューロン2502に接続されてもよい。少なくとも一実施例では、シナプス相互接続及びその構成要素は、回路又は論理を使用して実装されてもよい。
【0378】
少なくとも一実施例では、図25に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図25に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図25に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0379】
図26は、少なくとも一実施例による処理システムのブロック図である。少なくとも一実施例では、システム2600は、1つ又は複数のプロセッサ2602、及び1つ又は複数のグラフィックス・プロセッサ2608を含み、単一プロセッサのデスクトップ・システム、マルチプロセッサのワークステーション・システム、又は多数のプロセッサ2602若しくはプロセッサ・コア2607を有するサーバ・システムであってもよい。少なくとも一実施例では、システム2600は、モバイル・デバイス、携帯型デバイス、又は組み込みデバイスで使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。少なくとも一実施例では、1つ又は複数のグラフィックス・プロセッサ2608は、1つ又は複数のグラフィックス・コア1800を含む。
【0380】
少なくとも一実施例では、システム2600は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム及びメディアのコンソールを含むゲーム・コンソール、モバイル・ゲーミング・コンソール、携帯型ゲーム・コンソール、若しくはオンライン・ゲーム・コンソールを含んでもよく、又はそれらに組み込まれてもよい。少なくとも一実施例では、システム2600は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス、又はモバイル・インターネット・デバイスである。少なくとも一実施例では、処理システム2600はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、若しくは仮想現実デバイスなどのウェアラブル・デバイスを含んでもよく、それらに結合されてもよく、又はそれらの中に一体化されてもよい。少なくとも一実施例では、処理システム2600は、1つ又は複数のプロセッサ2602と、1つ又は複数のグラフィックス・プロセッサ2608によって生成されるグラフィカル・インターフェースとを有するテレビ又はセット・トップ・ボックス・デバイスである。
【0381】
少なくとも一実施例では、1つ又は複数のプロセッサ2602はそれぞれ、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実行する命令を処理するための1つ又は複数のプロセッサ・コア2607を含む。少なくとも一実施例では、1つ又は複数のプロセッサ・コア2607のそれぞれは、特定の命令シーケンス2609を処理するように構成される。少なくとも一実施例では、命令シーケンス2609は、複合命令セット・コンピューティング(CISC)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にしてもよい。少なくとも一実施例では、プロセッサ・コア2607はそれぞれ、異なる命令シーケンス2609を処理してもよく、この命令セットは、他の命令シーケンスのエミュレーションを容易にする命令を含んでもよい。少なくとも一実施例では、プロセッサ・コア2607はまた、デジタル信号プロセッサ(DSP)などの他の処理デバイスを含んでもよい。
【0382】
少なくとも一実施例では、プロセッサ2602はキャッシュ・メモリ2604を含む。少なくとも一実施例では、プロセッサ2602は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ2602の様々な構成要素間で共有される。少なくとも一実施例では、プロセッサ2602はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC))(図示せず)を使用し、このキャッシュは、知られているキャッシュ・コヒーレンス技法を使用して、プロセッサ・コア2607間で共有されてもよい。少なくとも一実施例では、さらにレジスタ・ファイル2606がプロセッサ2602に含まれ、このレジスタ・ファイルは、異なるタイプのデータを記憶するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタ)を含んでもよい。少なくとも一実施例では、レジスタ・ファイル2606は、汎用レジスタ又は他のレジスタを含んでもよい。
【0383】
少なくとも一実施例では、1つ又は複数のプロセッサ2602は、1つ又は複数のインターフェース・バス2610に結合されて、アドレス、データ、又は制御信号などの通信信号を、プロセッサ2602とシステム2600内の他の構成要素との間で送信する。少なくとも一実施例では、インターフェース・バス2610は、ダイレクト・メディア・インターフェース(DMI)バスのバージョンなどのプロセッサ・バスとすることができる。少なくとも一実施例では、インターフェース2610は、DMIバスに限定されず、1つ又は複数のペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)、メモリ・バス、又は他のタイプのインターフェース・バスを含んでもよい。少なくとも一実施例では、プロセッサ2602は、統合メモリ・コントローラ2616、及びプラットフォーム・コントローラ・ハブ2630を含む。少なくとも一実施例では、メモリ・コントローラ2616は、メモリ・デバイスとシステム2600の他の構成要素との間の通信を容易にし、一方でプラットフォーム・コントローラ・ハブ(PCH)2630は、ローカルI/Oバスを介してI/Oデバイスへの接続を提供する。
【0384】
少なくとも一実施例では、メモリ・デバイス2620は、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、スタティック・ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセス・メモリとしての役割を果たすのに好適な性能を有する何らかの他のメモリ・デバイスとすることができる。少なくとも一実施例では、メモリ・デバイス2620は、システム2600のためのシステム・メモリとして動作して、1つ又は複数のプロセッサ2602がアプリケーション若しくはプロセスを実行するときに使用するためのデータ2622及び命令2621を記憶することができる。少なくとも一実施例では、メモリ・コントローラ2616はまた、任意選択の外部グラフィックス・プロセッサ2612と結合しており、このグラフィックス・プロセッサは、プロセッサ2602内の1つ又は複数のグラフィックス・プロセッサ2608と通信して、グラフィックス及びメディアの動作を実行してもよい。少なくとも一実施例では、ディスプレイ・デバイス2611は、プロセッサ2602に接続することができる。少なくとも一実施例では、ディスプレイ・デバイス2611は、モバイル電子デバイス又はラップトップ・デバイスのような内部ディスプレイ・デバイス、又はディスプレイ・インターフェース(たとえば、ディスプレイ・ポートなど)を介して取り付けられる外部ディスプレイ・デバイスのうちの1つ又は複数を含むことができる。少なくとも一実施例では、ディスプレイ・デバイス2611は、仮想現実(VR)アプリケーション又は拡張現実(AR)アプリケーションで使用するための立体ディスプレイ・デバイスなどの頭部装着型ディスプレイ(HMD)を含むことができる。
【0385】
少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2630は、周辺装置が高速I/Oバスを介してメモリ・デバイス2620及びプロセッサ2602に接続できるようにする。少なくとも一実施例では、I/O周辺装置は、オーディオ・コントローラ2646、ネットワーク・コントローラ2634、ファームウェア・インターフェース2628、ワイヤレス・トランシーバ2626、タッチ・センサ2625、データ・ストレージ・デバイス2624(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)を含むが、これらに限定されない。少なくとも一実施例では、データ・ストレージ・デバイス2624は、ストレージ・インターフェース(たとえば、SATA)を介して、又はペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)などのペリフェラル・バスを介して、接続することができる。少なくとも一実施例では、タッチ・センサ2625は、タッチ画面センサ、圧力センサ、又は指紋センサを含むことができる。少なくとも一実施例では、ワイヤレス・トランシーバ2626は、WiFiトランシーバ、Bluetoothトランシーバ、又は3G、4G、若しくはLong Term Evolution(LTE)トランシーバなどのモバイル・ネットワーク・トランシーバとすることができる。少なくとも一実施例では、ファームウェア・インターフェース2628は、システム・ファームウェアとの通信を可能にし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(UEFI)とすることができる。少なくとも一実施例では、ネットワーク・コントローラ2634は、有線ネットワークへのネットワーク接続を可能にすることができる。少なくとも一実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス2610と結合する。少なくとも一実施例では、オーディオ・コントローラ2646は、多チャネル・ハイ・デフィニション・オーディオ・コントローラである。少なくとも一実施例では、システム2600は、レガシー(たとえば、パーソナル・システム2(PS/2))デバイスをシステム2600に結合するための任意選択のレガシーI/Oコントローラ2640を含む。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2630は、キーボードとマウス2643の組合せ、カメラ2644、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(USB)コントローラ2642の接続入力デバイスにも接続することができる。
【0386】
少なくとも一実施例では、メモリ・コントローラ2616及びプラットフォーム・コントローラ・ハブ2630のインスタンスは、外部グラフィックス・プロセッサ2612などの個別の外部グラフィックス・プロセッサに一体化されてもよい。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2630及び/又はメモリ・コントローラ2616は、1つ又は複数のプロセッサ2602の外部にあってもよい。たとえば、少なくとも一実施例では、システム2600は、外部のメモリ・コントローラ2616及びプラットフォーム・コントローラ・ハブ2630を含むことができ、これらは、プロセッサ2602と通信するシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺装置コントローラ・ハブとして構成されてもよい。
【0387】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715の一部又はすべてが、グラフィックス・プロセッサ2608に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプラインに具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練動作は、図7A又は図7Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ2608のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
【0388】
少なくとも一実施例では、図26に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図26に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図26に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0389】
図27は、少なくとも一実施例による、1つ又は複数のプロセッサ・コア2702A~2702N、統合メモリ・コントローラ2714、及び統合グラフィックス・プロセッサ2708を有するプロセッサ2700のブロック図である。少なくとも一実施例では、プロセッサ2700は、破線の四角によって表される追加コア2702Nを含むそれ以下の数の追加コアを含むことができる。少なくとも一実施例では、プロセッサ・コア2702A~2702Nのそれぞれは、1つ又は複数の内部キャッシュ・ユニット2704A~2704Nを含む。少なくとも一実施例では、各プロセッサ・コアはまた、1つ又は複数の共有キャッシュ・ユニット2706にアクセスできる。少なくとも一実施例では、グラフィックス・プロセッサ2708は、1つ又は複数のグラフィックス・コア1800を含む。
【0390】
少なくとも一実施例では、内部キャッシュ・ユニット2704A~2704N、及び共有キャッシュ・ユニット2706は、プロセッサ2700内のキャッシュ・メモリ階層を表す。少なくとも一実施例では、キャッシュ・メモリ・ユニット2704A~2704Nは、各プロセッサ・コア内の命令及びデータのキャッシュの少なくとも1つのレベル、並びにレベル2(L2)、レベル3(L3)、レベル4(L4)などの共有中間レベル・キャッシュの1つ又は複数のレベル、又はキャッシュの他のレベルを含んでもよく、ここで外部メモリの前の最高レベルのキャッシュは、LLCとして分類される。少なくとも一実施例では、キャッシュ・コヒーレンス論理は、様々なキャッシュ・ユニット2706及び2704A~2704N間でコヒーレンスを維持する。
【0391】
少なくとも一実施例では、プロセッサ2700はまた、1つ又は複数のバス・コントローラ・ユニット2716とシステム・エージェント・コア2710のセットを含んでもよい。少なくとも一実施例では、バス・コントローラ・ユニット2716は、1つ又は複数のPCI若しくはPCIエクスプレス・バスなどのペリフェラル・バスのセットを管理する。少なくとも一実施例では、システム・エージェント・コア2710は、様々なプロセッサ構成要素のための管理機能を提供する。少なくとも一実施例では、システム・エージェント・コア2710は、様々な外部メモリ・デバイス(図示せず)へのアクセスを管理するための1つ又は複数の統合メモリ・コントローラ2714を含む。
【0392】
少なくとも一実施例では、プロセッサ・コア2702A~2702Nの1つ又は複数は、同時マルチスレッディングのサポートを含む。少なくとも一実施例では、システム・エージェント・コア2710は、マルチスレッドの処理中にコア2702A~2702Nを調整し動作させるための構成要素を含む。少なくとも一実施例では、システム・エージェント・コア2710はさらに、電力制御ユニット(PCU)を含んでもよく、このユニットは、プロセッサ・コア2702A~2702N及びグラフィックス・プロセッサ2708の1つ又は複数の電力状態を調整するための論理及び構成要素を含む。
【0393】
少なくとも一実施例では、プロセッサ2700はさらに、グラフィックス処理動作を実行するためのグラフィックス・プロセッサ2708を含む。少なくとも一実施例では、グラフィックス・プロセッサ2708は、共有キャッシュ・ユニット2706と、1つ又は複数の統合メモリ・コントローラ2714を含むシステム・エージェント・コア2710とに結合する。少なくとも一実施例では、システム・エージェント・コア2710はまた、1つ又は複数の結合されたディスプレイに対してグラフィックス・プロセッサの出力を駆動させるためのディスプレイ・コントローラ2711を含む。少なくとも一実施例では、ディスプレイ・コントローラ2711はまた、少なくとも1つの相互接続を介してグラフィックス・プロセッサ2708に結合された別個のモジュールであってもよく、又はグラフィックス・プロセッサ2708内に一体化されていてもよい。
【0394】
少なくとも一実施例では、プロセッサ2700の内部構成要素を結合するために、リング・ベースの相互接続ユニット2712が使用される。少なくとも一実施例では、ポイントツーポイント相互接続、スイッチ相互接続、又は他の技法などの代替的な相互接続ユニットが使用されてもよい。少なくとも一実施例では、グラフィックス・プロセッサ2708は、I/Oリンク2713を介してリング相互接続2712と結合する。
【0395】
少なくとも一実施例では、I/Oリンク2713は、様々なプロセッサ構成要素と、eDRAMモジュールなどの高性能組み込みメモリ・モジュール2718との間の通信を容易にするオン・パッケージI/O相互接続を含む多様なI/O相互接続のうちの少なくとも1つを表す。少なくとも一実施例では、プロセッサ・コア2702A~2702Nのそれぞれ及びグラフィックス・プロセッサ2708は、共有ラスト・レベル・キャッシュとして組み込みメモリ・モジュール2718を使用する。
【0396】
少なくとも一実施例では、プロセッサ・コア2702A~2702Nは、共通の命令セット・アーキテクチャを実行する同種のコアである。少なくとも一実施例では、プロセッサ・コア2702A~2702Nは、命令セット・アーキテクチャ(ISA)の観点から見れば異種であり、ここでプロセッサ・コア2702A~2702Nのうちの1つ又は複数は、共通の命令セットを実行するが、プロセッサ・コア2702A~2702Nのうちの1つ又は複数の他のコアは、共通の命令セットのサブセット、又は異なる命令セットを実行する。少なくとも一実施例では、プロセッサ・コア2702A~2702Nは、マイクロ・アーキテクチャの観点から見れば異種であり、ここで電力消費量が相対的に高い1つ又は複数のコアは、電力消費量がより低い1つ又は複数のパワー・コアと結合する。少なくとも一実施例では、プロセッサ2700は、1つ又は複数のチップ上に、又はSoC集積回路として実装することができる。
【0397】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715の一部又はすべてが、グラフィックス・プロセッサ2708に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン、グラフィックス・コア2702、共有機能論理、又は図27の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練動作は、図7A又は図7Bに図示する論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのプロセッサ2700のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
【0398】
少なくとも一実施例では、図27に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図27に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図27に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0399】
図28は、グラフィックス・プロセッサ2800のブロック図であり、これは、個別グラフィックス・プロセッシング・ユニットであってもよく、又は複数の処理コアと統合されたグラフィックス・プロセッサであってもよい。少なくとも一実施例では、グラフィックス・プロセッサ2800は、メモリにマッピングされたI/Oインターフェースを介して、メモリに入れられたコマンドを用いて、グラフィックス・プロセッサ2800のレジスタと通信する。少なくとも一実施例では、グラフィックス・プロセッサ2800は、メモリにアクセスするためのメモリ・インターフェース2814を含む。少なくとも一実施例では、メモリ・インターフェース2814は、ローカル・メモリ、1つ若しくは複数の内部キャッシュ、1つ若しくは複数の共有外部キャッシュ、及び/又はシステム・メモリへのインターフェースである。少なくとも一実施例では、グラフィックス・プロセッサ2800は、グラフィックス・コア1800を含む。
【0400】
少なくとも一実施例では、グラフィックス・プロセッサ2800はまた、ディスプレイ出力データをディスプレイ・デバイス2820に向けて駆動するためのディスプレイ・コントローラ2802も含む。少なくとも一実施例では、ディスプレイ・コントローラ2802は、ディスプレイ・デバイス2820用の1つ又は複数の重なり平面、及び多層のビデオ若しくはユーザ・インターフェース要素の合成のためのハードウェアを含む。少なくとも一実施例では、ディスプレイ・デバイス2820は、内部又は外部のディスプレイ・デバイスとすることができる。少なくとも一実施例では、ディスプレイ・デバイス2820は、仮想現実(VR)ディスプレイ・デバイス又は拡張現実(AR)ディスプレイ・デバイスなどの頭部装着型ディスプレイ・デバイスである。少なくとも一実施例では、グラフィックス・プロセッサ2800は、MPEG-2などの動画エキスパート・グループ(MPEG)フォーマット、H.264/MPEG-4AVCなどのアドバンスト・ビデオ・コーディング(AVC)フォーマット、並びに映画テレビ技術者協会(SMPTE)421M/VC-1、及びJPEGなどのジョイント・フォトグラフィック・エキスパート・グループ(JPEG)フォーマット、及びモーションJPEG(MJPEG)フォーマットを含むがこれらに限定されない1つ又は複数のメディア符号化フォーマットに、それらのフォーマットから、又はそれらのフォーマット間で、メディアをエンコード、デコード、又はコード変換するためのビデオ・コーデック・エンジン2806を含む。
【0401】
少なくとも一実施例では、グラフィックス・プロセッサ2800は、たとえばビット境界ブロック転送を含む2次元(2D)ラスタライザ動作を実行するためのブロック画像転送(BLIT)エンジン2804を含む。しかし、少なくとも一実施例では、2Dグラフィックス動作は、グラフィックス処理エンジン(GPE)2810の1つ又は複数の構成要素を使用して実行される。少なくとも一実施例では、GPE2810は、3次元(3D)グラフィックス動作及びメディア動作を含むグラフィックス動作を実行するためのコンピュート・エンジンである。
【0402】
少なくとも一実施例では、GPE2810は、3Dのプリミティブ形状(たとえば、矩形、三角形など)に作用する処理関数を使用して、3次元画像及びシーンをレンダリングするなど、3D動作を実行するための3Dパイプライン2812を含む。少なくとも一実施例では、3Dパイプライン2812は、プログラム可能で固定された関数要素を含み、これは、3D/メディア・サブシステム2815に対して様々なタスクを実行し、且つ/又は実行スレッドをスポーンする。3Dパイプライン2812を使用してメディア動作を実行できるが、少なくとも一実施例では、GPE2810は、ビデオの後処理及び画像強調などのメディア動作を実行するために使用されるメディア・パイプライン2816も含む。
【0403】
少なくとも一実施例では、メディア・パイプライン2816は、ビデオ・コーデック・エンジン2806の代わりに、又はそれを代表して、ビデオ・デコード加速、ビデオ・インターレース解除、及びビデオ・エンコード加速などの1つ又は複数の特別なメディア動作を実行するための固定機能又はプログラム可能論理ユニットを含む。少なくとも一実施例では、メディア・パイプライン2816は、3D/メディア・サブシステム2815で実行するためのスレッドをスポーンするためのスレッド・スポーニング・ユニットをさらに含む。少なくとも一実施例では、スポーンされたスレッドは、3D/メディア・サブシステム2815に含まれた1つ又は複数のグラフィックス実行ユニット上で、メディア動作のための計算を実行する。
【0404】
少なくとも一実施例では、3D/メディア・サブシステム2815は、3Dパイプライン2812及びメディア・パイプライン2816によってスポーンされたスレッドを実行するための論理を含む。少なくとも一実施例では、3Dパイプライン2812及びメディア・パイプライン2816は、スレッド実行要求を3D/メディア・サブシステム2815に送信し、この3D/メディア・サブシステム2815は、様々な要求を調停し、利用可能なスレッド実行リソースにディスパッチするためのスレッド・ディスパッチ論理を含む。少なくとも一実施例では、実行リソースは、3D及びメディア・スレッドを処理するためのグラフィックス実行ユニットのアレイを含む。少なくとも一実施例では、3D/メディア・サブシステム2815は、スレッド命令及びデータのための1つ又は複数の内部キャッシュを含む。少なくとも一実施例では、サブシステム2815はまた、スレッド間でデータを共有し、出力データを記憶するための、レジスタ及びアドレス可能メモリを含む共有メモリも含む。
【0405】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715の一部又はすべてが、グラフィックス・プロセッサ2800に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン2812に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練動作は、図7A又は図7Bに図示する論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ2800のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
【0406】
少なくとも一実施例では、図28に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図28に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図28に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0407】
図29は、少なくとも一実施例によるグラフィックス・プロセッサのグラフィックス処理エンジン2910のブロック図である。少なくとも一実施例では、グラフィックス処理エンジン(GPE)2910は、図28に示すGPE2810の1つのバージョンである。少なくとも一実施例では、メディア・パイプライン2916は任意選択であり、GPE2910内に明示的に含まれなくてもよい。少なくとも一実施例では、別個のメディア及び/又は画像のプロセッサが、GPE2910に結合される。
【0408】
少なくとも一実施例では、GPE2910は、コマンド・ストリーマ2903に結合され、又はそれを含み、このコマンド・ストリーマは、3Dパイプライン2912及び/又はメディア・パイプライン2916にコマンド・ストリームを提供する。少なくとも一実施例では、コマンド・ストリーマ2903はメモリに結合され、このメモリは、システム・メモリであってもよく、又は内部キャッシュ・メモリ及び共有キャッシュ・メモリのうちの1つ若しくは複数であってもよい。少なくとも一実施例では、コマンド・ストリーマ2903は、メモリからコマンドを受信し、3Dパイプライン2912及び/又はメディア・パイプライン2916にコマンドを送信する。少なくとも一実施例では、コマンドは、リング・バッファからフェッチされる命令、プリミティブ、又はマイクロ・オペレーションであり、このリング・バッファは、3Dパイプライン2912及びメディア・パイプライン2916のためのコマンドを記憶する。少なくとも一実施例では、リング・バッファはさらに、複数のコマンドのバッチを記憶するバッチ・コマンド・バッファを含むことができる。少なくとも一実施例では、3Dパイプライン2912用のコマンドはまた、3Dパイプライン2912用の頂点及び形状のデータ、並びに/又はメディア・パイプライン2916用の画像データ及びメモリ・オブジェクトなどであるがこれらに限定されないメモリに記憶されたデータへの参照も含むことができる。少なくとも一実施例では、3Dパイプライン2912及びメディア・パイプライン2916は、演算を実行することにより、又は1つ若しくは複数の実行スレッドをグラフィックス・コア・アレイ2914にディスパッチすることにより、コマンド及びデータを処理する。少なくとも一実施例では、グラフィックス・コア・アレイ2914は、グラフィックス・コア(たとえば、グラフィックス・コア2915A、グラフィックス・コア2915B)の1つ又は複数のブロックを含み、各ブロックは、1つ又は複数のグラフィックス・コアを含む。少なくとも一実施例では、グラフィックス・コア2915A、2915Bは、実行ユニット(「EU」)と呼ばれてもよい。少なくとも一実施例では、各グラフィックス・コアは、グラフィックス及びコンピュートの動作を実行するための汎用及びグラフィックス専用の実行論理、並びに、図7A及び図7Bの推論及び/又は訓練論理715を含め、固定機能のテクスチャ処理及び/又は機械学習、及び人工知能の加速論理を含むグラフィックス実行リソースのセットを含む。
【0409】
少なくとも一実施例では、3Dパイプライン2912は、命令を処理し、実行スレッドをグラフィックス・コア・アレイ2914にディスパッチすることにより、頂点シェーダ、ジオメトリ・シェーダ、ピクセル・シェーダ、フラグメント・シェーダ、コンピュート・シェーダ、又は他のシェーダ・プログラムなどの1つ又は複数のシェーダ・プログラムを処理するための固定機能及びプログラム可能論理を含む。少なくとも一実施例では、グラフィックス・コア・アレイ2914は、シェーダ・プログラムを処理する際に使用するための実行リソースの統合ブロックを提供する。少なくとも一実施例では、グラフィック・コア・アレイ2914のグラフィックス・コア2915A~2915B内の多目的の実行論理(たとえば、実行ユニット)は、様々な3DのAPIシェーダ言語のサポートを含み、複数のシェーダに関連付けられた複数の同時実行スレッドを実行することができる。
【0410】
少なくとも一実施例では、グラフィックス・コア・アレイ2914はまた、ビデオ及び/又は画像の処理など、メディア機能を実行するための実行論理も含む。少なくとも一実施例では、実行ユニットはさらに、グラフィックス処理動作に加えて並列の汎用計算動作を実行するようにプログラム可能な汎用論理を含む。
【0411】
少なくとも一実施例では、グラフィックス・コア・アレイ2914上で実行しているスレッドにより生成される出力データは、統合リターン・バッファ(URB)2918のメモリにデータを出力することができる。少なくとも一実施例では、URB2918は、複数のスレッド用のデータを記憶することができる。少なくとも一実施例では、グラフィックス・コア・アレイ2914上で実行している異なるスレッド間でデータを送信するために、URB2918を使用してもよい。少なくとも一実施例では、グラフィックス・コア・アレイ2914上のスレッドと、共有機能論理2920内の固定機能論理との間の同期のために、URB2918がさらに使用されてもよい。
【0412】
少なくとも一実施例では、グラフィックス・コア・アレイ2914はスケーラブルであり、それにより、グラフィックス・コア・アレイ2914は、可変数のグラフィックス・コアを含み、それぞれのグラフィックス・コアが、GPE2910の目的とする電力及び性能のレベルに基づき可変数の実行ユニットを有する。少なくとも一実施例では、実行リソースは動的にスケーラブルであり、それにより実行リソースは、必要に応じて有効化又は無効化されてもよい。
【0413】
少なくとも一実施例では、グラフィックス・コア・アレイ2914は、グラフィックス・コア・アレイ2914のグラフィックス・コア間で共有される複数のリソースを含む共有機能論理2920に結合される。少なくとも一実施例では、共有機能論理2920によって実行される共有機能は、専用の補足機能をグラフィックス・コア・アレイ2914に提供するハードウェア論理ユニットに具体化される。少なくとも一実施例では、共有機能論理2920は、サンプラユニット2921、数理ユニット2922、及びスレッド間通信(ITC)論理2923を含むが、これらに限定されない。少なくとも一実施例では、1つ又は複数のキャッシュ2925が、共有機能論理2920に含まれ、又はそれに結合される。
【0414】
少なくとも一実施例では、専用機能の需要がグラフィックス・コア・アレイ2914内に含めるほどではない場合に、共有機能が使用される。少なくとも一実施例では、専用機能を1つにインスタンス化したものが、共有機能論理2920において使用され、グラフィックス・コア・アレイ2914内の他の実行リソース間で共有される。少なくとも一実施例では、共有機能論理2920内の、グラフィックス・コア・アレイ2914によってのみ使用される特定の共有機能は、グラフィックス・コア・アレイ2914内の共有機能論理2926内に含まれてもよい。少なくとも一実施例では、グラフィックス・コア・アレイ2914内の共有機能論理2926は、共有機能論理2920内の一部又はすべての論理を含むことができる。少なくとも一実施例では、共有機能論理2920内のすべての論理要素は、グラフィックス・コア・アレイ2914の共有機能論理2926内で複製されてもよい。少なくとも一実施例では、共有機能論理2920は、グラフィックス・コア・アレイ2914内の共有機能論理2926に有利なように除外される。
【0415】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715の一部又はすべてが、グラフィックス・プロセッサ2910に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン2912、グラフィックス・コア2915、共有機能論理2926、共有機能論理2920、又は図29の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練動作は、図7A又は図7Bに図示する論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ2910のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
【0416】
少なくとも一実施例では、図29に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図29に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図29に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0417】
図30は、本明細書に記載の少なくとも一実施例によるグラフィックス・プロセッサ・コア3000のハードウェア論理のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ・コア3000は、グラフィックス・コア1800を含む。少なくとも一実施例では、グラフィックス・プロセッサ・コア3000は、グラフィックス・コア・アレイ内に含まれる。少なくとも一実施例では、コア・スライスと呼ばれることもあるグラフィックス・プロセッサ・コア3000は、モジュール式グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアとすることができる。少なくとも一実施例では、グラフィックス・プロセッサ・コア3000は、1つのグラフィックス・コア・スライスの例示であり、本明細書に記載のグラフィックス・プロセッサは、目的の電力及び性能のエンベロープに基づき、複数のグラフィックス・コア・スライスを含んでもよい。少なくとも一実施例では、各グラフィックス・コア3000は、汎用及び固定の機能論理のモジュール式ブロックを含むサブスライスとも呼ばれる複数のサブ・コア3001A~3001Fに結合された固定機能ブロック3030を含むことができる。
【0418】
少なくとも一実施例では、固定機能ブロック3030は、たとえば低性能及び/又は低電力のグラフィックス・プロセッサ実装形態において、グラフィックス・プロセッサ3000内のすべてのサブ・コアが共有できるジオメトリ及び固定機能パイプライン3036を含む。少なくとも一実施例では、ジオメトリ及び固定機能パイプライン3036は、3D固定機能パイプライン、ビデオ・フロント・エンド・ユニット、スレッド・スポーナ(spawner)及びスレッド・ディスパッチャ、並びに統合リターン・バッファを管理する統合リターン・バッファ・マネージャを含む。
【0419】
少なくとも一実施例では、固定機能ブロック3030はまた、グラフィックスSoCインターフェース3037、グラフィックス・マイクロコントローラ3038、及びメディア・パイプライン3039を含む。少なくとも一実施例では、グラフィックスSoCインターフェース3037は、グラフィックス・コア3000と、システム・オン・チップ集積回路内の他のプロセッサ・コアとの間のインターフェースを提供する。少なくとも一実施例では、グラフィックス・マイクロコントローラ3038は、スレッド・ディスパッチ、スケジューリング、及びプリエンプションを含め、グラフィックス・プロセッサ3000の様々な機能を管理するように構成可能なプログラム可能サブ・プロセッサである。少なくとも一実施例では、メディア・パイプライン3039は、画像及びビデオのデータを含むマルチメディア・データのデコーディング、エンコーディング、前処理、及び/又は後処理を容易にする論理を含む。少なくとも一実施例では、メディア・パイプライン3039は、サブ・コア3001A~3001F内のコンピュート論理又はサンプリング論理への要求を介して、メディア動作を実装する。
【0420】
少なくとも一実施例では、SoCインターフェース3037は、汎用アプリケーション・プロセッサ・コア(たとえば、CPU)、及び/又はSoC内の他の構成要素と、グラフィックス・コア3000が通信できるようにし、SoC内の他の構成要素には、共有ラスト・レベル・キャッシュ・メモリ、システムRAM、及び/又は組み込みオン・チップ若しくはオン・パッケージのDRAMなどのメモリ階層要素が含まれる。少なくとも一実施例では、SoCインターフェース3037はまた、カメラ・イメージング・パイプラインなど、SoC内の固定機能デバイスとの通信を可能にし、グラフィックス・コア3000とSoC内のCPUとの間で共有することができるグローバル・メモリ・アトミックの使用を可能にし、且つ/又はそれを実装する。少なくとも一実施例では、グラフィックスSoCインターフェース3037はまた、グラフィックス・プロセッサ・コア3000の電力管理制御を実装することができ、グラフィックス・プロセッサ・コア3000のクロック・ドメインと、SoC内の他のクロック・ドメインとの間でインターフェースをとれるようにする。少なくとも一実施例では、SoCインターフェース3037は、グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアのそれぞれにコマンド及び命令を提供するように構成されたコマンド・ストリーマ及びグローバル・スレッド・ディスパッチャから、コマンド・バッファを受信できるようにする。少なくとも一実施例では、コマンド及び命令は、メディア動作が実行されるときにはメディア・パイプライン3039にディスパッチされることが可能であり、又はグラフィックス処理動作が実行されるときには、ジオメトリ及び固定機能パイプライン(たとえば、ジオメトリ及び固定機能パイプライン3036及び/又はジオメトリ及び固定機能パイプライン3014)にディスパッチされることが可能である。
【0421】
少なくとも一実施例では、グラフィックス・マイクロコントローラ3038は、グラフィックス・コア3000のための様々なスケジューリング及び管理タスクを実行するように構成されることが可能である。少なくとも一実施例では、グラフィックス・マイクロコントローラ3038は、サブ・コア3001A~3001F内の実行ユニット(EU)アレイ3002A~3002F、3004A~3004F内の様々なグラフィックス並列エンジンで、グラフィックスを実行し、且つ/又はワークロードのスケジューリングをコンピュートすることができる。少なくとも一実施例では、グラフィックス・コア3000を含むSoCのCPUコア上で実行されているホスト・ソフトウェアは、複数のグラフィックス・プロセッサ経路のうちの1つにワークロードを送出することができ、この経路が、適切なグラフィックス・エンジンに対するスケジューリング動作を呼び出す。少なくとも一実施例では、スケジューリング動作は、どのワークロードを次に実行すべきかを判定すること、コマンド・ストリーマにワークロードを送出すること、エンジン上で実行されている既存のワークロードをプリエンプションすること、ワークロードの進行を監視すること、及びワークロードが完了したときにホスト・ソフトウェアに通知することを含む。少なくとも一実施例では、グラフィックス・マイクロコントローラ3038はまた、グラフィックス・コア3000の低電力又はアイドル状態を促進して、オペレーティング・システム及び/又はシステム上のグラフィックス・ドライバ・ソフトウェアとは無関係に、低電力状態の移行全体にわたってグラフィックス・コア3000内のレジスタを保存及び復元する機能をグラフィックス・コア3000に提供することができる。
【0422】
少なくとも一実施例では、グラフィックス・コア3000は、図示してあるサブ・コア3001A~3001Fより多くの、又はそれより少ない、N個までのモジュール式サブ・コアを有してもよい。N個のサブ・コアのセットごとに、少なくとも一実施例では、グラフィックス・コア3000はまた、共有機能論理3010、共有及び/又はキャッシュ・メモリ3012、ジオメトリ/固定機能パイプライン3014、並びに様々なグラフィックスを加速し、処理動作をコンピュートするための追加の固定機能論理3016を含むことができる。少なくとも一実施例では、共有機能論理3010は、グラフィックス・コア3000内の各N個のサブ・コアが共有できる論理ユニット(たとえば、サンプラ、数理、及び/又はスレッド間通信の論理)を含むことができる。少なくとも一実施例では、共有の、及び/又はキャッシュのメモリ3012は、グラフィックス・コア3000内のN個のサブ・コア3001A~3001Fのためのラスト・レベル・キャッシュとすることができ、また、複数のサブ・コアがアクセスできる共有メモリとしての役割も果たすことができる。少なくとも一実施例では、ジオメトリ/固定機能パイプライン3014は、固定機能ブロック3030内のジオメトリ/固定機能パイプライン3036の代わりに含まれてもよく、同様の論理ユニットを含むことができる。
【0423】
少なくとも一実施例では、グラフィックス・コア3000は、グラフィックス・コア3000が使用するための様々な固定機能加速論理を含むことができる追加の固定機能論理3016を含む。少なくとも一実施例では、追加の固定機能論理3016は、位置限定シェーディング(position only shading)に使用するための追加のジオメトリ・パイプラインを含む。位置限定シェーディングでは、少なくとも2つのジオメトリ・パイプラインが存在しているが、ジオメトリ及び固定機能パイプライン3014、3036内の完全ジオメトリ・パイプラインと選別パイプライン(cull pipeline)においてであり、この選別パイプラインは、追加の固定機能論理3016内に含まれてもよい追加のジオメトリ・パイプラインである。少なくとも一実施例では、選別パイプラインは、完全ジオメトリ・パイプラインの縮小版である。少なくとも一実施例では、完全パイプライン及び選別パイプラインは、アプリケーションの異なるインスタンスを実行することができ、各インスタンスは別個のコンテキストを有する。少なくとも一実施例では、位置限定シェーディングは、切り捨てられた三角形の長い選別ランを隠すことができ、いくつかのインスタンスにおいてシェーディングを早く完了させることができる。たとえば、少なくとも一実施例では、選別パイプラインは、ピクセルをフレーム・バッファにラスタ化及びレンダリングすることなく、頂点の位置属性をフェッチしシェーディングするので、追加の固定機能論理3016内の選別パイプライン論理は、メイン・アプリケーションと並列で位置シェーダを実行することができ、完全パイプラインよりも全体的に早く臨界結果(critical result)を生成する。少なくとも一実施例では、選別パイプラインは、生成された臨界結果を使用して、すべての三角形について、これらの三角形が選別されているかどうかに関わらず、可視性情報をコンピュートすることができる。少なくとも一実施例では、(このインスタンスではリプレイ・パイプラインと呼ばれてもよい)完全パイプラインは、可視性情報を消費して、選別された三角形を飛ばして可視三角形だけをシェーディングすることができ、この可視性三角形が、最終的にラスタ化フェーズに渡される。
【0424】
少なくとも一実施例では、追加の固定機能論理3016はまた、機械学習の訓練又は推論の最適化を含む実装形態のために、固定機能の行列乗算論理など、機械学習の加速論理を含むことができる。
【0425】
少なくとも一実施例では、各グラフィックス・サブ・コア3001A~3001F内において、実行リソースのセットを含み、このセットは、グラフィックス・パイプライン、メディア・パイプライン、又はシェーダ・プログラムからの要求に応答して、グラフィックス動作、メディア動作、及びコンピュート動作を実行するために使用されてもよい。少なくとも一実施例では、グラフィックス・サブ・コア3001A~3001Fは、複数のEUアレイ3002A~3002F、3004A~3004F、スレッド・ディスパッチ及びスレッド間通信(TD/IC:thread dispatch and inter-thread communication)論理3003A~3003F、3D(たとえば、テクスチャ)サンプラ3005A~3005F、メディア・サンプラ3006A~3006F、シェーダ・プロセッサ3007A~3007F、及び共有ローカル・メモリ(SLM:shared local memory)3008A~3008Fを含む。少なくとも一実施例では、EUアレイ3002A~3002F、3004A~3004Fはそれぞれ、複数の実行ユニットを含み、これらは、グラフィックス、メディア、又はコンピュート・シェーダ・プログラムを含むグラフィックス動作、メディア動作、又はコンピュート動作のサービスにおいて浮動小数点及び整数/固定小数点の論理演算を実行することができる汎用グラフィックス・プロセッシング・ユニットである。少なくとも一実施例では、TD/IC論理3003A~3003Fは、サブ・コア内の実行ユニットのためのローカル・スレッド・ディスパッチ及びスレッド制御動作を実行し、サブ・コアの実行ユニット上で実行されているスレッド間の通信を容易にする。少なくとも一実施例では、3Dサンプラ3005A~3005Fは、テクスチャ又は他の3Dグラフィックス関連のデータをメモリに読み取ることができる。少なくとも一実施例では、3Dサンプラは、所与のテクスチャに関連付けられた構成済みサンプル状態及びテクスチャ・フォーマットに基づき、テクスチャ・データを異なるやり方で読み取ることができる。少なくとも一実施例では、メディア・サンプラ3006A~3006Fは、メディア・データに関連付けられたタイプ及びフォーマットに基づき、同様の読取り動作を実行することができる。少なくとも一実施例では、各グラフィックス・サブ・コア3001A~3001Fは、代替的に3Dとメディアの統合サンプラを含むことができる。少なくとも一実施例では、各サブ・コア3001A~3001F内の実行ユニット上で実行しているスレッドは、スレッド・グループ内で実行しているスレッドが、オン・チップ・メモリの共通プールを使用して実行できるようにするために、各サブ・コア内の共有ローカル・メモリ3008A~3008Fを利用することができる。
【0426】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715の一部又はすべてが、グラフィックス・プロセッサ3000に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン、グラフィックス・マイクロコントローラ3038、ジオメトリ及び固定機能パイプライン3014及び3036、又は図30の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練動作は、図7A又は図7Bに図示する論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3000のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
【0427】
少なくとも一実施例では、図30に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図30に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図30に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスなどを実装するために利用される。
【0428】
図31A図31Bは、少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理3100を図示する。図31Aは、スレッド実行論理3100が使用される少なくとも一実施例を図示する。図31Bは、少なくとも一実施例による、グラフィックス実行ユニット3108の例示的な内側細部を図示する。
【0429】
図31Aに示すように、少なくとも一実施例では、スレッド実行論理3100は、シェーダ・プロセッサ3102、スレッド・ディスパッチャ3104、命令キャッシュ3106、複数の実行ユニット3107A~3107N、3108A~3108Nを含むスケーラブル実行ユニット・アレイ、サンプラ3110、データ・キャッシュ3112、及びデータ・ポート3114を含む。少なくとも一実施例では、スケーラブル実行ユニット・アレイは、1つ又は複数の実行ユニット(たとえば、実行ユニット3108A~N又は3107A~Nのうちのいずれか)を、たとえばワークロードの計算要件に基づき有効又は無効にすることによって、動的に拡大縮小することができる。少なくとも一実施例では、スケーラブル実行ユニットは、実行ユニットのそれぞれにリンクされる相互接続ファブリックを介して相互接続される。少なくとも一実施例では、スレッド実行論理3100は、命令キャッシュ3106、データ・ポート3114、サンプラ3110、及び実行ユニット3107又は3108のうちの1つ又は複数を介した、システム・メモリ又はキャッシュ・メモリなどのメモリへの1つ又は複数の接続を含む。少なくとも一実施例では、各実行ユニット(たとえば、3107A)は、スレッドごとに複数のデータ要素を並列で処理しながら、複数の同時のハードウェア・スレッドを実行することができるスタンドアロンのプログラム可能な汎用計算ユニットである。少なくとも一実施例では、実行ユニット3107及び/又は3108のアレイは、任意の数の個々の実行ユニットを含むように拡大縮小可能である。
【0430】
少なくとも一実施例では、実行ユニット3107及び/又は3108は、シェーダ・プログラムを実行するために主に使用される。少なくとも一実施例では、シェーダ・プロセッサ3102は、様々なシェーダ・プログラムを処理し、シェーダ・プログラムに関連付けられた実行スレッドを、スレッド・ディスパッチャ3104を介してディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ3104は、グラフィックス及びメディア・パイプラインからのスレッド開始要求を調停し、要求されたスレッドを、実行ユニット3107及び/又は3108の1つ又は複数の実行ユニット上でインスタンス化するための論理を含む。たとえば、少なくとも一実施例では、ジオメトリ・パイプラインは、頂点シェーダ、モザイク・シェーダ、又はジオメトリ・シェーダを、処理するためにスレッド実行論理にディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ3104はまた、実行しているシェーダ・プログラムからのランタイム・スレッド・スポーニング要求(spawning request)を処理することができる。
【0431】
少なくとも一実施例では、実行ユニット3107及び/又は3108は、多くの標準的な3Dグラフィックス・シェーダ命令のネイティブ・サポートを含む命令セットをサポートし、それにより、グラフィックス・ライブラリ(たとえば、Direct3D及びOpenGL)からのシェーダ・プログラムが、最小のトランスレーションで実行される。少なくとも一実施例では、実行ユニットは、頂点及びジオメトリの処理(たとえば、頂点プログラム、ジオメトリ・プログラム、及び/又は頂点シェーダ)、ピクセル処理(たとえば、ピクセル・シェーダ、フラグメント・シェーダ)、及び汎用処理(たとえば、コンピュート及びメディアのシェーダ)をサポートする。少なくとも一実施例では、1つ又は複数の算術論理演算ユニット(ALU)を含む各実行ユニット3107及び/又は3108のそれぞれは、単一命令複数データ(SIMD)の実行を複数発行することができ、マルチスレッド化された動作によって、メモリ・アクセスのレイテンシが高いにもかかわらず、効率的な実行環境が可能になる。少なくとも一実施例では、各実行ユニット内の各ハードウェア・スレッドは、専用の高帯域幅レジスタ・ファイル及び関連付けられる独立したスレッド状態を有する。少なくとも一実施例では、実行は、整数演算、単精度及び倍精度の浮動小数点演算、SIMDブランチ性能、論理演算、超越演算、及び他の種々の演算を行うことができるパイプラインに対して、クロック当たり複数発行される。少なくとも一実施例では、メモリ、又は共有機能のうちの1つからのデータを待機している間に、実行ユニット3107及び/又は3108内の従属論理は、要求したデータが戻されるまで、待機スレッドをスリープ状態にする。少なくとも一実施例では、待機スレッドがスリープ状態の間に、ハードウェア・リソースは他のスレッドの処理に専念してもよい。たとえば、少なくとも一実施例では、頂点シェーダ動作に関連付けられる遅延中に、実行ユニットは、ピクセル・シェーダ、フラグメント・シェーダ、又は異なる頂点シェーダを含む別のタイプのシェーダ・プログラムのための動作を実行することができる。
【0432】
少なくとも一実施例では、実行ユニット3107及び/又は3108の各実行ユニットは、データ要素のアレイに対して動作する。少なくとも一実施例では、データ要素の数は「実行サイズ」であり、又は命令に対するチャネルの数である。少なくとも一実施例では、実行チャネルは、データ要素のアクセス、マスキング、及び命令内のフロー制御に関する実行の論理ユニットである。少なくとも一実施例では、チャネルの数は、特定のグラフィックス・プロセッサのための物理的な算術論理演算ユニット(ALU)又は浮動小数点ユニット(FPU)の数とは無関係であってもよい。少なくとも一実施例では、実行ユニット3107及び/又は3108は、整数及び浮動小数点のデータ・タイプをサポートしてもよい。
【0433】
少なくとも一実施例では、実行ユニット命令セットは、SIMD命令を含む。少なくとも一実施例では、様々なデータ要素が、パック・データ・タイプとしてレジスタに記憶されてもよく、実行ユニットは、要素のデータ・サイズに基づき様々な要素を処理する。たとえば、少なくとも一実施例では、256ビット幅ベクトルで動作しているとき、ベクトルの256ビットがレジスタに記憶され、実行ユニットは、4個の別々の64ビット・パック・データ要素(クワッド・ワード(QW:Quad-Word)サイズのデータ要素)、8個の別々の32ビット・パック・データ要素(ダブル・ワード(DW:Double Word)サイズのデータ要素)、16個の別々の16ビット・パック・データ要素(ワード(W:Word)サイズのデータ要素)、又は32個の別々の8ビット・データ要素(バイト(B:byte)サイズのデータ要素)としてベクトル上で動作する。しかし少なくとも一実施例では、異なるベクトル幅及びレジスタサイズが考えられる。
【0434】
少なくとも一実施例では、実行ユニット3107Aを実行ユニット3108Aと融合して融合実行ユニット3109Aにするなど、1つ又は複数の実行ユニットを組み合わせて、融合EUに共通のスレッド制御論理(3111A~3111N)を有する融合実行ユニット3109A~3109Nにすることができる。少なくとも一実施例では、複数のEUを融合して、EUグループにすることができる。少なくとも一実施例では、融合EUグループの各EUは、融合EUグループのEUの数が、様々な実施例に応じて異なっている可能性がある状態で、別々のSIMDハードウェア・スレッドを実行するように構成されることが可能である。少なくとも一実施例では、SIMD8、SIMD16、及びSIMD32を含むがこれに限定されない様々なSIMD幅を、EUごとに実行することができる。少なくとも一実施例では、各融合グラフィックス実行ユニット3109A~3109Nは、少なくとも2つの実行ユニットを含む。たとえば、少なくとも一実施例では、融合実行ユニット3109Aは、第1のEU3107A、第2のEU3108A、及び第1のEU3107Aと第2のEU3108Aに共通のスレッド制御論理3111Aを含む。少なくとも一実施例では、スレッド制御論理3111Aは、融合グラフィックス実行ユニット3109Aで実行されているスレッドを制御して、融合実行ユニット3109A~3109N内の各EUを、共通の命令ポインタ・レジスタを使用して実行できるようにする。
【0435】
少なくとも一実施例では、1つ又は複数の内部命令キャッシュ(たとえば、3106)は、実行ユニットに対するスレッド命令をキャッシュするためにスレッド実行論理3100に含まれる。少なくとも一実施例では、1つ又は複数のデータ・キャッシュ(たとえば、3112)は、スレッド実行中にスレッド・データをキャッシュするために含まれる。少なくとも一実施例では、サンプラ3110は、3D動作のためのテクスチャ・サンプリング、及びメディア動作のためのメディア・サンプリングを実行するために含まれる。少なくとも一実施例では、サンプラ3110は、特別なテクスチャ又はメディア・サンプリング機能を含み、サンプリングされたデータを実行ユニットに提供する前に、サンプリング処理中にテクスチャ又はメディアのデータを処理する。
【0436】
実行中、少なくとも一実施例では、グラフィックス及びメディア・パイプラインは、スレッド開始要求を、スレッド・スポーニング及びディスパッチ論理を介してスレッド実行論理3100に送る。少なくとも一実施例では、幾何学的物体のグループが処理され、ピクセル・データにラスタ化されたら、シェーダ・プロセッサ3102内のピクセル・プロセッサ論理(たとえば、ピクセル・シェーダ論理、フラグメント・シェーダ論理など)が呼び出されて、出力情報をさらにコンピュートし、結果を出力面(たとえば、色バッファ、深度バッファ、ステンシル・バッファなど)に書き込ませる。少なくとも一実施例では、ピクセル・シェーダ又はフラグメント・シェーダは、ラスタ化された物体間で補間されることになる様々な頂点属性の値を計算する。少なくとも一実施例では、次いで、シェーダ・プロセッサ3102内のピクセル・プロセッサ論理が、アプリケーション・プログラミング・インターフェース(API)付きのピクセル・シェーダ・プログラム又はフラグメント・シェーダ・プログラムを実行する。少なくとも一実施例では、シェーダ・プログラムを実行するために、シェーダ・プロセッサ3102は、スレッド・ディスパッチャ3104を介してスレッドを実行ユニット(たとえば、3108A)にディスパッチする。少なくとも一実施例では、シェーダ・プロセッサ3102は、サンプラ3110のテクスチャ・サンプリング論理を使用して、メモリに記憶されたテクスチャ・マップのテクスチャ・データにアクセスする。少なくとも一実施例では、テクスチャ・データ及び入力ジオメトリ・データに対する算術演算によって、各ジオメトリ・フラグメントのピクセル色データがコンピュートされ、又はさらなる処理から1つ又は複数のピクセルが切り捨てられる。
【0437】
少なくとも一実施例では、データ・ポート3114は、スレッド実行論理3100のためのメモリ・アクセス機構を提供して、処理済みデータを、グラフィックス・プロセッサ出力パイプラインでさらに処理するためにメモリに出力する。少なくとも一実施例では、データ・ポート3114は、1つ又は複数のキャッシュ・メモリ(たとえば、データ・キャッシュ3112)を含み、又はそれに結合されて、データ・ポートを介したメモリ・アクセスのためのデータをキャッシュする。
【0438】
図31Bに図示するように、少なくとも一実施例では、グラフィック実行ユニット3108は、命令フェッチ・ユニット3137、汎用レジスタ・ファイル・アレイ(GRF:general register file array)3124、アーキテクチャ・レジスタ・ファイル・アレイ(ARF)3126、スレッド調停装置(arbiter)3122、送信ユニット3130、ブランチ・ユニット3132、SIMD浮動小数点ユニット(FPU)3134のセット、及び専用整数SIMD ALU3135のセットを含むことができる。少なくとも一実施例では、GRF3124及びARF3126は、各同時ハードウェア・スレッドに関連付けられた汎用レジスタ・ファイルとアーキテクチャ・レジスタ・ファイルのセットを含み、このハードウェア・スレッドは、グラフィックス実行ユニット3108においてアクティブであってもよい。少なくとも一実施例では、スレッドごとのアーキテクチャ状態が、ARF3126において維持され、スレッド実行中に使用されるデータが、GRF3124に記憶される。少なくとも一実施例では、各スレッドに対する命令ポインタを含む各スレッドの実行状態は、ARF3126のスレッド専用レジスタに保持することが可能である。
【0439】
少なくとも一実施例では、グラフィックス実行ユニット3108は、同時マルチスレッディング(SMT:Simultaneous Multi-Threading)と微細化インターリーブ・マルチスレッディング(IMT:Interleaved Multi-Threading)の組合せであるアーキテクチャを有する。少なくとも一実施例では、アーキテクチャは、実行ユニット当たりの同時スレッドのターゲット数及びレジスタ数に基づき設計時に微調整することができるモジュール式構成を有し、ここで実行ユニットのリソースは、複数の同時スレッドを実行するために使用される論理にわたって分割される。
【0440】
少なくとも一実施例では、グラフィックス実行ユニット3108は複数の命令を共同発行することができ、この命令は、それぞれ異なる命令であってもよい。少なくとも一実施例では、グラフィックス実行ユニット・スレッド3108のスレッド調停装置3122は、送信ユニット3130、ブランチ・ユニット3132、又はSIMD FPU3134のうちの1つに命令をディスパッチして実行するようにすることができる。少なくとも一実施例では、各実行スレッドは、GRF3124内の128個の汎用レジスタにアクセスすることができ、ここで各レジスタは、32ビットのデータ要素のSIMD8要素のベクトルとしてアクセス可能な32バイトを記憶することができる。少なくとも一実施例では、各実行ユニット・スレッドは、GRF3124内の4キロバイトにアクセスすることができるが、実施例はこのように限定されず、他の実施例ではより多くの、又はより少ないリソースが提供されてもよい。少なくとも一実施例では、最大7個のスレッドを同時に実行できるが、実行ユニット当たりのスレッド数も、実施例に応じて変えることができる。7個のスレッドが4キロバイトにアクセスできる少なくとも一実施例では、GRF3124は、合計28キロバイトを記憶することができる。少なくとも一実施例では、フレキシブルなアドレッシング・モードにより、複数のレジスタがともにアドレスされてより幅広いレジスタを効率的に構築したり、ストライド設定された矩形ブロック・データ構造を表したりできるようにすることができる。
【0441】
少なくとも一実施例では、メモリ動作、サンプラ動作、及び他のレイテンシの長いシステム通信は、送信ユニット3130へのメッセージ引渡しによって実行される「送信」命令を介してディスパッチされる。少なくとも一実施例では、ブランチ命令は、SIMDの発散及び最終的な収束を容易にするために、ブランチ・ユニット3132にディスパッチされる。
【0442】
少なくとも一実施例では、グラフィックス実行ユニット3108は、浮動小数点演算を実行するための1つ又は複数のSIMD浮動小数点ユニット(FPU)3134を含む。少なくとも一実施例では、FPU3134は、整数計算もサポートする。少なくとも一実施例では、FPU3134は、最大M個の32ビット浮動小数点(若しくは整数)演算をSIMDで実行し、又は最大で2M個の16ビット整数演算、若しくは16ビット浮動小数点演算をSIMDで実行することができる。少なくとも一実施例では、少なくとも1つのFPUは、拡張数理機能を提供して、高スループットの超越数理関数、及び倍精度の64ビット浮動小数点をサポートする。少なくとも一実施例では、8ビットの整数SIMD ALU3135のセットも存在し、機械学習計算に関連付けられる動作を実行するように特に最適化されてもよい。
【0443】
少なくとも一実施例では、グラフィックス実行ユニット3108の複数のインスタンスのアレイが、グラフィックス・サブ・コア・グループ(たとえば、サブスライス)においてインスタンス化されてもよい。少なくとも一実施例では、実行ユニット3108は、複数の実行チャネルにわたって命令を実行することができる。少なくとも一実施例では、グラフィックス実行ユニット3108で実行される各スレッドは、異なるチャネルで実行される。
【0444】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、論理715の一部又はすべてが、スレッド実行論理3100に組み込まれてもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練動作は、図7A又は図7Bに図示する論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行論理3100のALUスレッドを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
【0445】
少なくとも一実施例では、図31A図31Bに描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図31A図31Bに描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図31A図31Bに描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0446】
図32は、少なくとも一実施例による並列処理ユニット(「PPU」)3200を図示する。少なくとも一実施例では、PPU3200は、PPU3200によって実行された場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、PPU3200に実行させる機械可読コードで構成される。少なくとも一実施例では、PPU3200はマルチスレッド・プロセッサであり、このプロセッサは、1つ又は複数の集積回路デバイスに実装され、コンピュータ可読命令(機械可読命令若しくは単に命令とも呼ばれる)を、複数のスレッドで並列に処理するように設計されたレイテンシ隠蔽技法としてマルチスレッディングを利用する。少なくとも一実施例では、PPU3200は、1つ又は複数のグラフィックス・コア1800を含む。少なくとも一実施例では、スレッドとは、実行スレッドを指し、PPU3200によって実行されるように構成された命令のセットをインスタンス化したものである。少なくとも一実施例では、PPU3200は、液晶ディスプレイ(「LCD」)デバイスなどのディスプレイ・デバイスに表示するための2次元(「2D」)画像データを生成するために、3次元(「3D」)グラフィックス・データを処理するためのグラフィックス・レンダリング・パイプラインを実装するように構成されたグラフィックス・プロセッシング・ユニット(「GPU」)である。少なくとも一実施例では、PPU3200を利用して、線形代数演算及び機械学習演算などの計算が実行される。図32は、単に例示を目的とした実例の並列プロセッサを図示しており、本開示の範囲内で企図されるプロセッサ・アーキテクチャの非限定的な実例として解釈されるべきであり、同プロセッサに追加するため、且つ/又はそれを置き換えるために、任意の好適なプロセッサが利用されてもよいことが解釈されるべきである。
【0447】
少なくとも一実施例では、1つ又は複数のPPU3200は、高性能コンピューティング(「HPC」:High Performance Computing)、データ・センタ、及び機械学習のアプリケーションを加速するように構成される。少なくとも一実施例では、PPU3200は、以下の非限定的な実例を含む深層学習システム及びアプリケーションを加速するように構成される:自律車両プラットフォーム、深層学習、高精度音声、画像、テキスト認識システム、インテリジェント・ビデオ分析、分子シミュレーション、創薬、病気診断、天気予報、ビッグ・データ分析、天文学、分子動態シミュレーション、金融モデリング、ロボット工学、工場自動化、リアルタイム言語翻訳、オンライン検索最適化、及び個別化ユーザ推奨など。
【0448】
少なくとも一実施例では、PPU3200は、限定することなく、入力/出力(「I/O」)ユニット3206、フロント・エンド・ユニット3210、スケジューラ(シーケンサ)・ユニット3212、ワーク分配ユニット3214、ハブ3216、クロスバー(「Xバー」:crossbar)3220、1つ又は複数の汎用処理クラスタ(「GPC」)3218、及び1つ又は複数のパーティション・ユニット(「メモリ・パーティション・ユニット」)3222を含む。少なくとも一実施例では、PPU3200は、1つ又は複数の高速GPU相互接続(「GPU相互接続」)3208を介してホスト・プロセッサ又は他のPPU3200に接続される。少なくとも一実施例では、PPU3200は、システム・バス3202を介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、PPU3200は、1つ又は複数のメモリ・デバイス(「メモリ」)3204を備えるローカル・メモリに接続される。少なくとも一実施例では、メモリ・デバイス3204は、限定することなく、1つ又は複数のダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイスを含む。少なくとも一実施例では、1つ又は複数のDRAMデバイスは、複数のDRAMダイが各デバイス内で積層された高帯域幅メモリ(「HBM」)サブシステムとして構成されても、且つ/又は構成可能であってもよい。
【0449】
少なくとも一実施例では、高速GPU相互接続3208は、有線ベースのマルチ・レーン通信リンクを指してもよく、このリンクは、1つ又は複数の中央処理装置(「CPU」)と組み合わされた1つ又は複数のPPU3200をスケーリングし含むためにシステムによって使用され、高速GPU相互接続3208は、PPU3200とCPUとの間のキャッシュ・コヒーレンス、及びCPUマスタリングをサポートする。少なくとも一実施例では、データ及び/又はコマンドは、高速GPU相互接続3208により、ハブ3216を介して、1つ又は複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニット、及び図32に明示されていないこともある他の構成要素などのPPU3200の他のユニットに/から送信される。
【0450】
少なくとも一実施例では、I/Oユニット3206は、システム・バス3202を介してホスト・プロセッサ(図32には示さず)から通信(たとえば、コマンド、データ)を送受信するように構成される。少なくとも一実施例では、I/Oユニット3206は、システム・バス3202を介して直接、又は1つ若しくは複数の、メモリ・ブリッジなどの中間デバイスを介して、ホスト・プロセッサと通信する。少なくとも一実施例では、I/Oユニット3206は、システム・バス3202を介してPPU3200のうちの1つ又は複数などの1つ又は複数の他のプロセッサと通信してもよい。少なくとも一実施例では、I/Oユニット3206は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCIe」)インターフェースを実装して、PCIeバスを介して通信する。少なくとも一実施例では、I/Oユニット3206は、外部デバイスと通信するためのインターフェースを実装する。
【0451】
少なくとも一実施例では、I/Oユニット3206は、システム・バス3202を介して受信したパケットをデコードする。少なくとも一実施例では、少なくともいくつかのパケットは、PPU3200に様々な動作を実行させるように構成されたコマンドを表す。少なくとも一実施例では、I/Oユニット3206は、デコードされたコマンドを、コマンドによって指定されるPPU3200の様々な他のユニットに送信する。少なくとも一実施例では、コマンドは、フロント・エンド・ユニット3210に送信され、且つ/又はハブ3216、若しくは(図32には明示していない)1つ若しくは複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニットなどのようなPPU3200の他のユニットに送信される。少なくとも一実施例では、I/Oユニット3206はPPU3200の様々な論理ユニット間で、通信をルーティングするように構成される。
【0452】
少なくとも一実施例では、ホスト・プロセッサによって実行されるプログラムは、ワークロードをPPU3200に提供して処理するためにバッファにおいて、コマンド・ストリームをエンコードする。少なくとも一実施例では、ワークロードは、命令と、これらの命令によって処理されることになるデータとを含む。少なくとも一実施例では、バッファは、ホスト・プロセッサとPPU3200の両方がアクセス(たとえば、書込み/読取り)可能なメモリ内の領域であり、ホスト・インターフェース・ユニットは、I/Oユニット3206によってシステム・バス3202を介して送信されるメモリ要求を介して、システム・バス3202に接続されたシステム・メモリ内のバッファにアクセスするように構成されてもよい。少なくとも一実施例では、ホスト・プロセッサは、バッファにコマンド・ストリームを書き込み、次いでコマンド・ストリームの開始点に対するポインタをPPU3200に送信し、それによりフロント・エンド・ユニット3210は、1つ又は複数のコマンド・ストリームに対するポインタを受信し、1つ又は複数のコマンド・ストリームを管理して、コマンド・ストリームからコマンドを読み取り、コマンドをPPU3200の様々なユニットに転送する。
【0453】
少なくとも一実施例では、フロント・エンド・ユニット3210は、1つ又は複数のコマンド・ストリームによって定義されるタスクを処理するように様々なGPC3218を構成するスケジューラ・ユニット3212(シーケンサ・ユニット、スレッド・シーケンサ、及び/又は非同期コンピュート・エンジンとも呼ばれてもよい)に結合される。少なくとも一実施例では、スケジューラ・ユニット3212は、スケジューラ・ユニット3212によって管理される様々タスクに関連する状態情報を追跡するように構成され、ここで状態情報は、どのGPC3218にタスクが割り当てられるか、タスクがアクティブか非アクティブか、タスクに関連付けられた優先レベルなどを示してもよい。少なくとも一実施例では、スケジューラ・ユニット3212は、GPC3218のうちの1つ又は複数において、複数のタスクの実行を管理する。
【0454】
少なくとも一実施例では、スケジューラ・ユニット3212は、GPC3218で実行するためのタスクをディスパッチするように構成されたワーク分配ユニット3214に結合される。少なくとも一実施例では、ワーク分配ユニット3214は、スケジューラ・ユニット3212から受信したスケジュール済みタスクの数を追跡し、ワーク分配ユニット3214は、GPC3218のそれぞれについて、ペンディング・タスク・プール、及びアクティブ・タスク・プールを管理する。少なくとも一実施例では、ペンディング・タスク・プールは、特定のGPC3218によって処理されるように割り当てられたタスクを含むいくつかのスロット(たとえば、32スロット)を備え、アクティブ・タスク・プールは、GPC3218によりアクティブに処理されているタスクのためのいくつかのスロット(たとえば、4スロット)を備えてもよく、それにより、GPC3218のうちの1つがタスクの実行を完了すると、GPC3218のアクティブ・タスク・プールからそのタスクが排除され、ペンディング・タスク・プールからの別のタスクが選択され、GPC3218で実行されるようにスケジューリングされる。少なくとも一実施例では、データ依存性が解決されるのを待機している間など、アクティブ・タスクがGPC3218上でアイドルである場合には、アクティブ・タスクがGPC3218から排除され、ペンディング・タスク・プールに戻され、その間に、ペンディング・タスク・プールの別のタスクが選択され、GPC3218で実行されるようにスケジューリングされる。
【0455】
少なくとも一実施例では、ワーク分配ユニット3214は、Xバー3220を介して1つ又は複数のGPC3218と通信する。少なくとも一実施例では、Xバー3220は、PPU3200のユニットのうちの多くを、PPU3200の他のユニットに結合する相互接続ネットワークであり、ワーク分配ユニット3214を特定のGPC3218に結合するように構成されることが可能である。少なくとも一実施例では、PPU3200の1つ又は複数の他のユニットも、ハブ3216を介してXバー3220に接続されてもよい。
【0456】
少なくとも一実施例では、タスクはスケジューラ・ユニット3212によって管理され、ワーク分配ユニット3214によってGPC3218のうちの1つにディスパッチされる。少なくとも一実施例では、GPC3218は、タスクを処理し、結果を生成するように構成される。少なくとも一実施例では、結果は、GPC3218内の他のタスクによって消費されてもよく、Xバー3220を介して異なるGPC3218にルーティングされてもよく、又はメモリ3204に記憶されてもよい。少なくとも一実施例では、結果を、パーティション・ユニット3222を介してメモリ3204に書き込むことができ、パーティション・ユニット3222は、メモリ3204への/からのデータの読取り及び書込みを行うためのメモリ・インターフェースを実装する。少なくとも一実施例では、結果を、高速GPU相互接続3208を介して別のPPU又はCPUに送信することができる。少なくとも一実施例では、図34と併せて本明細書でさらに詳細に説明されるように、PPU3200は、PPU3200に結合された別々で個別のメモリ・デバイス3204の数に等しいU個のパーティション・ユニット3222を、限定することなく含む。
【0457】
少なくとも一実施例では、ホスト・プロセッサはドライバ・カーネルを実行し、このカーネルは、ホスト・プロセッサで実行されている1つ又は複数のアプリケーションがPPU3200で実行するための動作をスケジューリングできるようにするアプリケーション・プログラミング・インターフェース(「API」)を実装している。少なくとも一実施例では、複数のコンピュート・アプリケーションが、PPU3200によって同時に実行され、PPU3200は、複数のコンピュート・アプリケーションに対して、隔離、サービス品質(「QoS」:quality of service)、及び独立したアドレス空間を提供する。少なくとも一実施例では、アプリケーションは、PPU3200によって実行するための1つ又は複数のタスクをドライバ・カーネルに生成させる(たとえば、APIコールの形の)命令を生成し、ドライバ・カーネルは、PPU3200によって処理されている1つ又は複数のストリームにタスクを出力する。少なくとも一実施例では、各タスクは、ワープ、ウェーブフロント、及び/又はウェーブと呼ばれてもよい関連スレッドの1つ又は複数のグループを備える。少なくとも一実施例では、ワープ、ウェーブフロント、及び/又はウェーブは、並列に実行することができる複数の関連スレッド(たとえば、32個のスレッド)を備える。少なくとも一実施例では、連動スレッドとは、タスクを実行するための命令を含み、共有メモリを介してデータを交換する複数のスレッドを指してもよい。少なくとも一実施例では、スレッド及び連動スレッドは、図34と併せてさらに詳細に説明される。
【0458】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、PPU3200に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、別のプロセッサ若しくはシステムによって、又はPPU3200によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、PPU3200は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【0459】
少なくとも一実施例では、図32に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図32に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図32に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0460】
図33は、少なくとも一実施例による汎用処理クラスタ(「GPC」)3300を図示する。少なくとも一実施例では、GPC3300は、図32のGPC3218である。少なくとも一実施例では、各GPC3300は、限定することなく、タスクを処理するためのいくつかのハードウェア・ユニットを含み、各GPC3300は、限定することなく、パイプライン・マネージャ3302、プレ・ラスタ演算ユニット(「プレROP」:pre-raster operations unit)3304、ラスタ・エンジン3308、ワーク分配クロスバー(「WDX」:work distribution crossbar)3316、メモリ管理ユニット(「MMU」)3318、1つ又は複数のデータ処理クラスタ(「DPC」:Data Processing Clusters)3306、及びパーツの任意の好適な組合せを含む。
【0461】
少なくとも一実施例では、GPC3300の動作は、パイプライン・マネージャ3302によって制御される。少なくとも一実施例では、パイプライン・マネージャ3302は、GPC3300に配分されたタスクを処理するために1つ又は複数のDPC3306の構成を管理する。少なくとも一実施例では、パイプライン・マネージャ3302は、グラフィックス・レンダリング・パイプラインの少なくとも一部分を実装するように、1つ又は複数のDPC3306のうちの少なくとも1つを構成する。少なくとも一実施例では、DPC3306は、プログラム可能なストリーミング・マルチプロセッサ(「SM」:streaming multi-processor)3314で頂点シェーダ・プログラムを実行するように構成される。少なくとも一実施例では、パイプライン・マネージャ3302は、少なくとも一実施例では、ワーク分配ユニットから受信したパケットを、GPC3300内の適切な論理ユニットにルーティングするように構成され、いくつかのパケットは、プレROP3304の固定機能ハードウェア・ユニット及び/又はラスタ・エンジン3308にルーティングされてもよく、他のパケットは、プリミティブ・エンジン3312又はSM3314によって処理されるようにDPC3306にルーティングされてもよい。少なくとも一実施例では、パイプライン・マネージャ3302は、ニューラル・ネットワーク・モデル及び/又はコンピューティング・パイプラインを実装するように、DPC3306のうちの少なくとも1つを構成する。
【0462】
少なくとも一実施例では、プレROPユニット3304は、少なくとも一実施例では、ラスタ・エンジン3308及びDPC3306によって生成されたデータを、図32と併せて上でより詳細に説明したパーティション・ユニット3222のラスタ動作(ROP)ユニットにルーティングするように構成される。少なくとも一実施例では、プレROPユニット3304は、色ブレンディングの最適化を実行し、ピクセル・データを組織化し、アドレス・トランスレーションを実行し、その他の動作を行うように構成される。少なくとも一実施例では、ラスタ・エンジン3308は、少なくとも一実施例では様々なラスタ動作を実行するように構成されたいくつかの固定機能ハードウェア・ユニットを、限定することなく含み、ラスタ・エンジン3308は、限定することなく、セットアップ・エンジン、粗いラスタ・エンジン、選別エンジン、クリッピング・エンジン、細かいラスタ・エンジン、タイル合体エンジン、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、セットアップ・エンジンは、変換された頂点を受信し、頂点によって定義された幾何プリミティブに関連付けられた平面方程式を生成し、平面方程式が、粗いラスタ・エンジンに送信されて、プリミティブに対するカバレッジ情報(たとえば、タイルのx、yカバレッジ・マスク)が生成され、粗いラスタ・エンジンの出力が、選別エンジンに送信され、ここでzテストに落ちたプリミティブに関連付けられたフラグメントが選別され、クリッピング・エンジンに送信され、ここで視錐台の外側にあるフラグメントがクリップされる。少なくとも一実施例では、クリッピング及び選別を生き延びたフラグメントは、細かいラスタ・エンジンに渡されて、セットアップ・エンジンによって生成された平面方程式に基づき、ピクセル・フラグメントに対する属性が生成される。少なくとも一実施例では、ラスタ・エンジン3308の出力は、DPC3306内に実装されたフラグメント・シェーダによってなど任意の好適なエンティティによって処理されることになるフラグメントを含む。
【0463】
少なくとも一実施例では、GPC3300に含まれる各DPC3306は、限定することなく、Mパイプ・コントローラ(「MPC」:M-Pipe Controller)3310、プリミティブ・エンジン3312、1つ又は複数のSM3314、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、MPC3310は、DPC3306の動作を制御して、パイプライン・マネージャ3302から受信したパケットを、DPC3306内の適切なユニットにルーティングする。少なくとも一実施例では、頂点に関連付けられたパケットは、頂点に関連付けられた頂点属性をメモリからフェッチするように構成されたプリミティブ・エンジン3312にルーティングされ、対照的に、シェーダ・プログラムに関連付けられたパケットは、SM3314に送信されてもよい。
【0464】
少なくとも一実施例では、SM3314は、いくつかのスレッドにより表されたタスクを処理するように構成されたプログラム可能なストリーミング・プロセッサを、限定することなく含む。少なくとも一実施例では、SM3314はマルチスレッド化されており、スレッドの特定のグループからの複数のスレッド(たとえば、32個のスレッド)を同時に実行するように構成され、単一命令複数データ(「SIMD」)アーキテクチャを実装し、ここでスレッドのグループ(ワープ、ウェーブフロント、ウェーブ)内の各スレッドは、同じ命令セットに基づき、異なるデータ・セットを処理するように構成される。少なくとも一実施例では、スレッド・グループ内のすべてのスレッドが命令の共通のセットを実行する。少なくとも一実施例では、SM3314は、単一命令複数スレッド(「SIMT」)アーキテクチャを実装し、ここで、スレッド・グループの各スレッドは、命令の共通セットに基づき、異なるデータ・セットを処理するように構成されるが、スレッド・グループ内の個々のスレッドは、実行中に発散することが許容される。少なくとも一実施例では、プログラム・カウンタ、コール・スタック、及び実行状態がワープ(ウェーブフロント及び/又はウェーブと呼ばれてもよい)ごとに維持されて、ワープ内のスレッドが発散するときに、ワープ間の同時処理、及びワープ内での直列実行が可能になる。別の実施例では、プログラム・カウンタ、コール・スタック、及び実行状態が個々のスレッドごとに維持されて、すべてのスレッド間、ワープ内、及びワープ間で等しい同時処理が可能になる。少なくとも一実施例では、実行状態が個々のスレッドごとに維持され、共通の命令を実行しているスレッドが、より効率的になるように収束され並列に実行されてもよい。SM3314の少なくとも一実施例は、本明細書でさらに詳細に説明される。
【0465】
少なくとも一実施例では、MMU3318は、GPC3300とメモリ・パーティション・ユニット(たとえば、図32のパーティション・ユニット3222)との間でインターフェースを提供し、MMU3318は、仮想アドレスから物理アドレスへのトランスレーション、メモリ保護、及びメモリ要求の調停を提供する。少なくとも一実施例では、MMU3318は、仮想アドレスからメモリの物理アドレスへのトランスレーションを実行するための1つ又は複数のトランスレーション・ルックアサイド・バッファ(「TLB」)を提供する。
【0466】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、GPC3300に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、GPC3300は、別のプロセッサ若しくはシステムによって、又はGPC3300によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、GPC3300は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【0467】
少なくとも一実施例では、図33に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図33に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図33に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0468】
図34は、少なくとも一実施例による並列処理ユニット(「PPU」)のメモリ・パーティション・ユニット3400を図示する。少なくとも一実施例では、メモリ・パーティション・ユニット3400は、限定することなく、ラスタ演算(「ROP」)ユニット3402、レベル2(「L2」)キャッシュ3404、メモリ・インターフェース3406、及びそれらの任意の好適な組合せを含む。少なくとも一実施例では、メモリ・インターフェース3406はメモリに結合される。少なくとも一実施例では、メモリ・インターフェース3406は、高速データ転送のために、32、64、128、1024ビットのデータ・バスなどを実装してもよい。少なくとも一実施例では、PPUは、Uが正の整数である、U個のメモリ・インターフェース3406をパーティション・ユニット3400の対当たりに1つのメモリ・インターフェース3406に組み込んでおり、ここでパーティション・ユニット3400の各対は、対応するメモリ・デバイスに接続される。たとえば、少なくとも一実施例では、PPUは、高帯域幅メモリ・スタック、又はグラフィックス・ダブル・データ・レート、バージョン5、同期ダイナミック・ランダム・アクセス・メモリ(「GDDR5 SDRAM」)など、最大Y個のメモリ・デバイスに接続されてもよい。
【0469】
少なくとも一実施例では、メモリ・インターフェース3406は、高帯域幅メモリの第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は、データ破損を受けやすいコンピュート・アプリケーションに、より高い信頼性を提供し得る。
【0470】
少なくとも一実施例では、PPUは、マルチ・レベルのメモリ階層を実装する。少なくとも一実施例では、メモリ・パーティション・ユニット3400は、統合されたメモリをサポートして、中央処理装置(「CPU」)及びPPUメモリに単一の統合された仮想アドレス空間を提供し、仮想メモリ・システム間でのデータの共有を可能にする。少なくとも一実施例では、他のプロセッサに位置付けられたメモリにPPUがアクセスする頻度を追跡して、より頻繁にページにアクセスしているPPUの物理メモリに、メモリ・ページが確実に移動されるようにする。少なくとも一実施例では、高速GPU相互接続3208は、アドレス・トランスレーション・サービスをサポートして、PPUが直接CPUのページ・テーブルにアクセスできるようにし、PPUによるCPUメモリへのフル・アクセスを実現する。
【0471】
少なくとも一実施例では、コピー・エンジンは、複数のPPU間、又はPPUとCPUとの間で、データを転送する。少なくとも一実施例では、コピー・エンジンは、ページ・テーブルにマッピングされていないアドレスについてページ誤りを生成することができ、次いでメモリ・パーティション・ユニット3400がページ誤りに対応して、アドレスをページ・テーブルにマッピングし、その後で、コピー・エンジンが転送を実行する。少なくとも一実施例では、メモリは、複数のプロセッサ間でコピー・エンジンの複数の動作についてピン留めされて(すなわち、ページ移動不可能にされて)、実質的に利用可能なメモリを低減させる。少なくとも一実施例では、ハードウェアのページ誤りがある場合、メモリ・ページが常駐であるかどうかに関わらず、アドレスをコピー・エンジンに渡すことができ、コピー・プロセスは透過的である。
【0472】
少なくとも一実施例によれば、図32のメモリ3204又は他のシステム・メモリからのデータは、メモリ・パーティション・ユニット3400によってフェッチされ、L2キャッシュ3404に記憶され、このL2キャッシュは、オン・チップに位置付けられ、様々なGPC間で共有される。少なくとも一実施例では、各メモリ・パーティション・ユニット3400は、対応するメモリ・デバイスに関連付けられたL2キャッシュの少なくとも一部分を、限定することなく含む。少なくとも一実施例では、より低いレベルのキャッシュが、GPC内の様々なユニットに実装される。少なくとも一実施例では、図33のSM3314のそれぞれは、レベル1(「L1」)キャッシュを実装してもよく、ここでL1キャッシュは、特定のSM3314専用のプライベート・メモリであり、L2キャッシュ3404からのデータは、SM3314の機能ユニットで処理するために、L1キャッシュのそれぞれにフェッチされ記憶される。少なくとも一実施例では、L2キャッシュ3404は、メモリ・インターフェース3406及び図32に示されるXバー3220に結合される。
【0473】
少なくとも一実施例では、ROPユニット3402は、色圧縮、ピクセル・ブレンディングなど、ピクセル色に関係するグラフィックス・ラスタ演算を実行する。ROPユニット3402は、少なくとも一実施例では、ラスタ・エンジン3308と併せて深度テストを実装して、ピクセル・フラグメントに関連付けられたサンプル・ロケーションの深度を、ラスタ・エンジン3308の選別エンジンから受信する。少なくとも一実施例では、深度は、フラグメントに関連付けられたサンプル・ロケーションの深度バッファにおける対応する深度に対してテストされる。少なくとも一実施例では、フラグメントが、サンプル・ロケーションの深度テストを通過すると、ROPユニット3402は、深度バッファを更新し、深度テストの結果をラスタ・エンジン3308に送信する。パーティション・ユニット3400の数はGPCの数とは異なってもよく、したがって、各ROPユニット3402は、少なくとも一実施例では、GPCのそれぞれに結合されてもよいことが理解されよう。少なくとも一実施例では、ROPユニット3402は、異なるGPCから受信したパケットを追跡し、ROPユニット3402によって生成された結果が、Xバー3220を通してルーティングされることになるかを判定する。
【0474】
少なくとも一実施例では、図34に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図34に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図34に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0475】
図35は、少なくとも一実施例による、ストリーミング・マルチプロセッサ(「SM」)3500を図示する。少なくとも一実施例では、SM3500は、図33のSMである。少なくとも一実施例では、SM3500は、限定することなく、命令キャッシュ3502、1つ又は複数のスケジューラ・ユニット3504(シーケンサ・ユニットと呼ばれてもよい)、レジスタ・ファイル3508、1つ又は複数の処理コア(「コア」)3510、1つ又は複数の特殊機能ユニット(「SFU」:special function unit)3512、1つ又は複数のロード/ストア・ユニット(「LSU」)3514、相互接続ネットワーク3516、共有メモリ/レベル1(「L1」)キャッシュ3518、及び/又はこれらの任意の好適な組合せを含む。少なくとも一実施例では、LSU3514は、ある動作を実行するために、データ(たとえば、命令)のロード/ストアに対応するストア動作のロードを実行する(たとえば、API、APIコールを実行する)。
【0476】
少なくとも一実施例では、ワーク分配ユニットは、並列処理ユニット(「PPU」)の汎用処理クラスタ(「GPC」)で実行するためにタスクをディスパッチし、各タスクは、GPC内の特定のデータ処理クラスタ(「DPC」)に配分され、タスクがシェーダ・プログラムに関連付けられる場合には、タスクはSM3500(CU及び/又はスライスと呼ばれてもよい)のうちの1つに配分される。少なくとも一実施例では、スケジューラ・ユニット3504(シーケンサ及び/又は非同期コンピュート・エンジンと呼ばれてもよい)は、ワーク分配ユニットからタスクを受信し、SM3500に割り当てられた1つ又は複数のスレッド・ブロックについて命令スケジューリングを管理する。少なくとも一実施例では、スケジューラ・ユニット3504は、並列スレッドのワープ(ウェーブフロント及び/又はウェーブと呼ばれてもよい)として実行するためにスレッド・ブロックをスケジューリングし、ここで各スレッド・ブロックは、少なくとも1つのワープに配分される。少なくとも一実施例では、各ワープは、スレッドを実行する。少なくとも一実施例では、スケジューラ・ユニット3504は、複数の異なるスレッド・ブロックを管理して、異なるスレッド・ブロックにワープを配分し、次いで複数の異なる連動グループからの命令を、各クロック・サイクル中に様々な機能ユニット(たとえば、処理コア3510、SFU3512、及びLSU3514)にディスパッチする。
【0477】
少なくとも一実施例では、連動グループ(ウェーブフロント及び/又はウェーブとも呼ばれてもよい)とは、通信するスレッドのグループを組織化するためのプログラミング・モデルを指してもよく、このモデルは、スレッドが通信する粒度をデベロッパが表せるようにして、より豊富でより効率的な並列分解の表現を可能にする。少なくとも一実施例では、連動した起動APIは、並列アルゴリズムを実行するためにスレッド・ブロック間の同期をサポートする。少なくとも一実施例では、従来のプログラミング・モデルのアプリケーションは、連動スレッドを同期するための単一の簡単な構造、すなわちスレッド・ブロックのすべてのスレッドにわたるバリア(たとえば、syncthreads()関数)を提供する。しかし、少なくとも一実施例では、プログラマは、スレッド・ブロックの粒度よりも小さいスレッド・グループを定義し、定義されたグループ内で同期して、集合的なグループ全般にわたる機能インターフェースの形で、より高い性能、設計の融通性、及びソフトウェア再利用を可能にしてもよい。少なくとも一実施例では、連動グループによって、プログラマは、サブ・ブロック(すなわち、単一スレッドと同じ大きさ)の粒度及びマルチ・ブロックの粒度において、スレッドのグループを明示的に定義し、連動グループ内のスレッドに対する同期などの集合的な動作を実行できるようになる。少なくとも一実施例では、プログラミング・モデルは、ソフトウェア境界を横切るクリーンな合成をサポートし、それにより、ライブラリ及びユーティリティ関数を、収束について仮定する必要なくそれらのローカルなコンテキスト内で安全に同期することができる。少なくとも一実施例では、連動グループのプリミティブは、プロデューサ-コンシューマ並列性、日和見並列性(opportunistic parallelism)、及びスレッド・ブロックのグリッド全体にわたるグローバルな同期を限定することなく含む新しいパターンの連動並列性を可能にする。
【0478】
少なくとも一実施例では、ディスパッチ・ユニット3506は、1つ又は複数の機能ユニット及びスケジューラ・ユニット3504に命令を送信するように構成され、共通のワープからの2つの異なる命令を、各クロック・サイクル中にディスパッチできるようにする2つのディスパッチ・ユニット3506を限定することなく含む。少なくとも一実施例では、各スケジューラ・ユニット3504は、単一のディスパッチ・ユニット3506又は追加のディスパッチ・ユニット3506を含む。
【0479】
少なくとも一実施例では、各SM3500(CU及び/又はスライスと呼ばれてもよい)は、少なくとも一実施例では、SM3500の機能ユニットにレジスタのセットを提供するレジスタ・ファイル3508を限定することなく含む。少なくとも一実施例では、レジスタ・ファイル3508は、各機能ユニットがレジスタ・ファイル3508の専用部分に配分されるように、各機能ユニット間で分割される。少なくとも一実施例では、レジスタ・ファイル3508は、SM3500によって実行されている異なるワープ間で分割され、レジスタ・ファイル3508は、機能ユニットのデータ経路に接続されたオペランド用の一時的なストレージを提供する。少なくとも一実施例では、各SM3500は、限定することなく複数のL処理コア3510を含み、ここでLは正の整数である。少なくとも一実施例では、SM3500は、限定することなく、多数の(たとえば、128個以上の)個別の処理コア3510を含む。少なくとも一実施例では、各処理コア3510は、浮動小数点算術論理演算ユニット及び整数算術論理演算ユニットを限定することなく含む完全にパイプライン化された、単精度の、倍精度の、及び/又は混合精度の処理ユニットを限定することなく含む。少なくとも一実施例では、浮動小数点算術論理演算ユニットは、浮動小数点演算のためのIEEE754-2008規格を実装する。少なくとも一実施例では、処理コア3510は、限定することなく、64個の単精度(32ビット)浮動小数点コア、64個の整数コア、32個の倍精度(64ビット)浮動小数点コア、及び8個のテンソル・コアを含む。
【0480】
テンソル・コアは、少なくとも一実施例による行列演算を実行するように構成される。少なくとも一実施例では、1つ又は複数のテンソル・コアは、処理コア3510に含まれる。少なくとも一実施例では、テンソル・コアは、ニューラル・ネットワークの訓練及び推論のための畳み込み演算など、深層学習の行列演算を実行するように構成される。少なくとも一実施例では、各テンソル・コアは、4×4の行列で動作し、行列の積和演算(matrix multiply and accumulate operation)D=A×B+Cを実行し、ここでA、B、C、及びDは4×4の行列である。
【0481】
少なくとも一実施例では、行列乗算の入力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のサイズの行列を仮定している。
【0482】
少なくとも一実施例では、各SM3500は、特殊関数(たとえば、属性評価、逆数平方根など)を実行するM個のSFU3512を、限定することなく含む。少なくとも一実施例では、SFU3512は、限定することなく、階層ツリー・データ構造をトラバースするように構成されたツリー・トラバーサル・ユニットを含む。少なくとも一実施例では、SFU3512は、テクスチャ・マップのフィルタリング動作を実行するように構成されたテクスチャ・ユニットを、限定することなく含む。少なくとも一実施例では、テクスチャ・ユニットは、メモリ及びサンプル・テクスチャ・マップからテクスチャ・マップ(たとえば、テクセルの2Dアレイ)をロードして、SM3500により実行されるシェーダ・プログラムで使用するためのサンプリングされたテクスチャ値を生成するように構成される。少なくとも一実施例では、テクスチャ・マップは、共有メモリ/レベル1キャッシュ3518に記憶される。少なくとも一実施例では、テクスチャ・ユニットは、少なくとも一実施例によれば、ミップ・マップ(たとえば、詳細さのレベルが異なるテクスチャ・マップ)を使用したフィルタリング動作などのテクスチャ動作を実装する。少なくとも一実施例では、各SM3500は、限定することなく、2つのテクスチャ・ユニットを含む。
【0483】
各SM3500は、少なくとも一実施例では、共有メモリ/L1キャッシュ3518とレジスタ・ファイル3508の間でロード及びストア動作を実装するN個のLSU3514を、限定することなく含む。少なくとも一実施例では、相互接続ネットワーク3516は、各機能ユニットをレジスタ・ファイル3508に接続し、LSU3514をレジスタ・ファイル3508及び共有メモリ/L1キャッシュ3518に接続する。少なくとも一実施例では、相互接続ネットワーク3516はクロスバーであり、このクロスバーは、任意の機能ユニットをレジスタ・ファイル3508の任意のレジスタに接続し、LSU3514をレジスタ・ファイル3508と共有メモリ/L1キャッシュ3518のメモリ・ロケーションとに接続するように構成されてもよい。
【0484】
少なくとも一実施例では、共有メモリ/L1キャッシュ3518は、少なくとも一実施例では、SM3500とプリミティブ・エンジンとの間、及びSM3500のスレッド間でデータ・ストレージ及び通信を可能にするオン・チップ・メモリのアレイである。少なくとも一実施例では、共有メモリ/L1キャッシュ3518は、限定することなく、128KBのストレージ容量を備え、SM3500からパーティション・ユニットにへの経路にある。少なくとも一実施例では、共有メモリ/L1キャッシュ3518は、少なくとも一実施例では、読取り及び書込みをキャッシュするために使用される。少なくとも一実施例では、共有メモリ/L1キャッシュ3518、L2キャッシュ、及びメモリのうちの1つ又は複数は、補助ストレージである。
【0485】
少なくとも一実施例では、データ・キャッシュと共有メモリ機能とを単一のメモリ・ブロックに組み合わせることによって、両方のタイプのメモリ・アクセスについて性能が向上する。少なくとも一実施例では、容量は、共有メモリを使用しないプログラムによってキャッシュとして使用され、又は使用可能であり、それにより、共有メモリが容量の半分を使用するように構成されている場合、テクスチャ及びロード/ストア動作が、残りの容量を使用することができる。少なくとも一実施例によれば、共有メモリ/L1キャッシュ3518内に統合することによって、共有メモリ/L1キャッシュ3518が、データをストリームするための高スループットの管として機能しながら、同時に高帯域幅及び低レイテンシのアクセスを、頻繁に再使用されるデータに提供できるようになる。少なくとも一実施例では、汎用並列計算向けに構成されるときには、グラフィックス処理と比べてより簡単な構成を使用することができる。少なくとも一実施例では、固定機能のグラフィックス・プロセッシング・ユニットがバイパスされて、はるかに簡単なプログラミング・モデルが作製される。汎用並列計算の構成では、ワーク分配ユニットは、少なくとも一実施例においてスレッド・ブロックを直接DPCに割当て及び分配する。少なくとも一実施例では、ブロック内のスレッドは、各スレッドが確実に一意の結果を生成するように、計算において一意のスレッドIDを使用して共通のプログラムを実行し、SM3500を使用して、プログラムを実行し計算を行い、共有メモリ/L1キャッシュ3518を使用してスレッド間で通信し、LSU3514を使用して、共有メモリ/L1キャッシュ3518及びメモリ・パーティション・ユニットを介してグローバル・メモリを読み取り、書き込む。少なくとも一実施例では、汎用並列計算向けに構成されるときには、SM3500は、DPC上で新規のワークを起動するためにスケジューラ・ユニット3504が使用できるコマンドを書き込む。
【0486】
少なくとも一実施例では、PPUは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイスなどに含まれ、又はこれらに結合される。少なくとも一実施例では、PPUは、単一の半導体基板に具体化される。少なくとも一実施例では、PPUは、追加のPPU、メモリ、縮小命令セット・コンピュータ(「RISC」)CPU、メモリ管理ユニット(「MMU」)、デジタル-アナログ変換器(「DAC」:digital-to-analog converter)などのような1つ又は複数の他のデバイスとともにシステム・オン・チップ(「SoC」)に含まれる。
【0487】
少なくとも一実施例では、PPUは、1つ又は複数のメモリ・デバイスを含むグラフィックス・カードに含まれてもよい。少なくとも一実施例では、グラフィックス・カードは、デスクトップ・コンピュータのマザーボード上のPCIeスロットとインターフェースをとるように構成されてもよい。少なくとも一実施例では、PPUは、マザーボードのチップセットに含まれる統合グラフィックス・プロセッシング・ユニット(「iGPU」:integrated graphics processing unit)であってもよい。
【0488】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、SM3500に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、SM3500は、別のプロセッサ若しくはシステムによって、又はSM3500によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、SM3500は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【0489】
少なくとも一実施例では、図35に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図35に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図35に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0490】
医療用途における画像推論及び画像処理など、先進コンピューティングのための仮想化コンピューティング・プラットフォームに関する実施例が開示される。限定することなく、実施例は、放射線写真撮影、磁気共鳴撮像(MRI)、核医学、超音波、ソノグラフィ、エラストグラフィ、光音響撮像、トモグラフィ、心エコー、機能的近赤外分光法、及び磁性粒子撮像、又はこれらの組合せを含んでもよい。少なくとも一実施例では、本明細書に記載の仮想化コンピューティング・プラットフォーム、及び関連付けられるプロセスは、限定することなく、法科学分析、表面下検出及び撮像(たとえば、石油探査、考古学、古生物学など)、地形学、海洋学、地質学、骨学、気象学、知能分野、又は物体追跡及び監視、センサ・データ処理(たとえば、RADAR、SONAR、LIDARなど)、並びに/又はゲノミクス及び遺伝子配列において、追加的又は代替的に使用されてもよい。
【0491】
図36を参照すると、図36は、少なくとも一実施例による、画像処理及び推論のパイプラインを生成及び導入するプロセス3600の実例データ・フロー図である。少なくとも一実施例では、プロセス3600は、医療施設、病院、ヘルスケア機関、クリニック、リサーチ若しくは診断の研究所などのような1つ又は複数の施設3602において、撮像デバイス、処理デバイス、ゲノミクス・デバイス、遺伝子配列デバイス、放射線デバイス、及び/又は他のタイプのデバイスとともに使用するために導入されてもよい。少なくとも一実施例では、プロセス3600は、シーケンシング・データについてゲノミクスの分析及び推論を実行するために導入されてもよい。本明細書に記載のシステム及びプロセスを使用して実行することができるゲノム分析の実例は、限定することなく、バリアント・コール、変異検出、及び遺伝子発現の定量化を含む。
【0492】
少なくとも一実施例では、プロセス3600は、訓練システム3604内及び/又は導入システム3606内で実行されてもよい。少なくとも一実施例では、訓練システム3604を使用して、導入システム3606で使用するための機械学習モデル(たとえば、ニューラル・ネットワーク、物体検出アルゴリズム、コンピュータ・ビジョン・アルゴリズムなど)の訓練、導入、及び実装が実行されてもよい。少なくとも一実施例では、導入システム3606は、処理及び計算のリソースを分散コンピューティング環境間でオフロードするように構成されて、施設3602におけるインフラストラクチャ要件を低減してもよい。少なくとも一実施例では、導入システム3606は、施設3602において撮像デバイス(たとえば、MRI、CTスキャン、X線、超音波など)又はシーケンシング・デバイスとともに使用するための仮想機器を選択し、カスタマイズし、実装するための合理化されたプラットフォームを提供してもよい。少なくとも一実施例では、仮想機器は、撮像デバイス、シーケンシング・デバイス、放射線デバイス、及び/又は他のタイプのデバイスによって生成された撮像データに対して1つ又は複数の処理動作を実行するためのソフトウェア定義アプリケーションを含んでもよい。少なくとも一実施例では、パイプライン内の1つ又は複数のアプリケーションは、アプリケーションの実行中に導入システム3606のサービス(たとえば、推論、仮想化、計算、AIなど)を使用又はコールしてもよい。
【0493】
少なくとも一実施例では、先進処理及び推論パイプラインで使用されるアプリケーションのいくつかは、1つ又は複数の処理ステップを実行するために機械学習モデル又は他のAIを使用してもよい。少なくとも一実施例では、機械学習モデルは、施設3602で生成された(且つ、施設3602において1つ若しくは複数の画像アーカイブ及び通信システム(PACS)サーバに記憶された)(撮像データなどの)データ3608を使用して、施設3602において訓練されてもよく、1つ又は複数の別の施設(たとえば、異なる病院、研究所、クリニックなど)からの撮像若しくはシーケンシングのデータ3608を使用して訓練されてもよく、又はそれらの組合せであってもよい。少なくとも一実施例では、訓練システム3604を使用して、導入システム3606向けの実用的で導入可能な機械学習モデルを生成するためのアプリケーション、サービス、及び/又は他のリソースが提供されてもよい。
【0494】
少なくとも一実施例では、モデル・レジストリ3624は、バージョン管理及び物体メタデータをサポートすることができる物体ストレージによってバックアップされてもよい。少なくとも一実施例では、物体ストレージには、たとえば、クラウド・プラットフォーム内から、クラウド・ストレージ(たとえば、図37のクラウド3726)の互換性アプリケーション・プログラミング・インターフェース(API)を介してアクセス可能であってもよい。少なくとも一実施例では、モデル・レジストリ3624内の機械学習モデルは、システムの開発者又はパートナがAPIと対話することによって、アップロード、リスト化、修正、又は削除されてもよい。少なくとも一実施例では、APIは、適切な資格を有するユーザがモデルをアプリケーションに関連付けできるようにする方法へのアクセスを提供してもよく、それによりアプリケーションのコンテナ化されたインスタンスを実行することの一部として、モデルを実行できるようになる。
【0495】
少なくとも一実施例では、訓練パイプライン3704(図37)は、施設3602が独自の機械学習モデルを訓練している、又は最適化若しくは更新される必要がある既存の機械学習モデルを有しているシナリオを含んでもよい。少なくとも一実施例では、撮像デバイス、シーケンシング・デバイス、及び/又は他のタイプのデバイスによって生成された撮像データ3608が受信されてもよい。少なくとも一実施例では、撮像データ3608が受信されると、機械学習モデルのグラウンド・トゥルース・データとして使用されることになる撮像データ3608に対応するアノテーションの生成を支援するために、AI支援アノテーション3610が使用されてもよい。少なくとも一実施例では、AI支援アノテーション3610は、1つ又は複数の機械学習モデル(たとえば、畳み込みニューラル・ネットワーク(CNN))を含んでもよく、これは(たとえば特定のデバイスからの)特定のタイプの撮像データ3608、及び/又は撮像データ3608内の特定のタイプの異常に対応するアノテーションを生成するように訓練されてもよい。少なくとも一実施例では、次いでAI支援アノテーション3610は、グラウンド・トゥルース・データを生成するために直接使用されてもよく、又は(たとえば、研究者、臨床医、医師、科学者などによって)アノテーション・ツールを使用して調節若しくは微調整されてもよい。少なくとも一実施例では、いくつかの実例において、ラベル付けされたクリニック・データ3612(たとえば、臨床医、医師、科学者、技術者などによって提供されたアノテーション)が、機械学習モデルを訓練するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、AI支援アノテーション3610、ラベル付けされたクリニック・データ3612、又はこれらの組合せが、機械学習モデルを訓練するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、訓練済み機械学習モデルは出力モデル3616と呼ばれてもよく、本明細書に記載の導入システム3606によって使用されてもよい。
【0496】
少なくとも一実施例では、訓練パイプライン3704(図37)は、施設3602が、導入システム3606内の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行する際に使用する機械学習モデルを必要としているが、施設3602は現在そのような機械学習モデルを有していないかもしれない(又はそうした目的のために最適化された、効率よい、若しくは有効なモデルを有していないかもしれない)という状況を含んでもよい。少なくとも一実施例では、既存の機械学習モデルが、モデル・レジストリ3624から選択されてもよい。少なくとも一実施例では、モデル・レジストリ3624は、撮像データに対して様々な異なる推論タスクを実行するように訓練された機械学習モデルを含んでもよい。少なくとも一実施例では、モデル・レジストリ3624の機械学習モデルは、施設3602とは異なる施設(たとえば、離れた場所にある施設)からの撮像データについて訓練されたものであってもよい。少なくとも一実施例では、機械学習モデルは、1つの場所、2つの場所、又は任意の数の場所からの撮像データについて訓練されたものであってもよい。少なくとも一実施例では、特定の場所からの撮像データについて訓練されるとき、訓練は、その場所で行われてもよく、又は少なくとも、撮像データの機密性を保護するようなやり方で、若しくは撮像データが構外へ転送されるのを制限するようなやり方で(たとえば、HIPAA規定、プライバシー規定に準拠するように)行われてもよい。少なくとも一実施例では、1つの場所においてモデルが訓練されると、又は部分的に訓練されると、機械学習モデルはモデル・レジストリ3624に加えられてもよい。少なくとも一実施例では、次いで機械学習モデルは、任意の数の他の施設において再訓練又は更新されてもよく、再訓練又は更新されたモデルが、モデル・レジストリ3624において利用可能にされてもよい。少なくとも一実施例では、次いで機械学習モデルは、モデル・レジストリ3624から選択されてもよく、出力モデル3616と呼ばれてもよく、導入システム3606において使用されて、導入システムの1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行してもよい。
【0497】
少なくとも一実施例では、訓練パイプライン3704(図37)は、施設3602が、導入システム3606内の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行する際に使用する機械学習モデルを必要としていることを含むシナリオで使用することができるが、施設3602は現在そのような機械学習モデルを有していないかもしれない(又はそうした目的のために最適化された、効率よい、若しくは有効なモデルを有していないかもしれない)。少なくとも一実施例では、モデル・レジストリ3624から選択された機械学習モデルは、母集団、遺伝的差異、機械学習モデルを訓練するために使用される訓練データの頑健性、訓練データの異常の多様性、及び/又は訓練データに伴う他の問題に違いがあることから、施設3602において生成される撮像データ3608向けに微調整又は最適化されていないことがある。少なくとも一実施例では、機械学習モデルを再訓練又は更新するためのグラウンド・トゥルース・データとして使用されることになる撮像データ3608に対応するアノテーションの生成を支援するために、AI支援アノテーション3610が使用されてもよい。少なくとも一実施例では、ラベル付けされたクリニック・データ3612(たとえば、臨床医、医師、科学者、技術者などによって提供されたアノテーション)が、機械学習モデルを訓練するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、機械学習モデルを再訓練又は更新することは、モデル訓練3614と呼ばれてもよい。少なくとも一実施例では、モデル訓練3614、たとえばAI支援アノテーション3610、ラベル付けされたクリニック・データ3612、又はこれらの組合せは、機械学習モデルを再訓練若しくは更新するためのグラウンド・トゥルース・データとして使用されてもよい。
【0498】
少なくとも一実施例では、導入システム3606は、ソフトウェア3618、サービス3620、ハードウェア3622、並びに/又は他の構成要素、特徴、及び機能を含んでもよい。少なくとも一実施例では、導入システム3606は、ソフトウェア「スタック」を含んでもよく、それによりソフトウェア3618は、サービス3620の上に構築されてもよく、サービス3620を使用して一部若しくはすべての処理タスクを実行してもよく、サービス3620及びソフトウェア3618は、ハードウェア3622の上に構築され、ハードウェア3622を使用して、導入システム3606の処理、ストレージ、及び/又は他の計算のタスクを実行してもよい。
【0499】
少なくとも一実施例では、ソフトウェア3618は、任意の数の異なるコンテナを含んでもよく、ここで各コンテナは、アプリケーションのインスタンス化を実行してもよい。少なくとも一実施例では、各アプリケーションは、先進処理及び推論パイプラインの1つ又は複数の処理タスク(たとえば、推論、物体検出、特徴検出、セグメント化、画像強調、キャリブレーションなど)を実行してもよい。少なくとも一実施例では、撮像デバイス(たとえば、CT、MRI、X線、超音波、ソノグラフィ、心エコーなど)、シーケンシング・デバイス、放射線デバイス、ゲノミクス・デバイスなどのタイプごとに、デバイスによって生成された撮像データ3608(又は、本明細書に記載のものなどの他のタイプのデータ)に対してデータ処理タスクを実行できる任意の数のコンテナが存在してもよい。少なくとも一実施例では、先進処理及び推論パイプラインは、(たとえば、医用におけるデジタル画像と通信(DICOM:digital imaging and communications in medicine)データ、放射線医学情報システム(RIS)データ、臨床情報システム(CIS)データ、リモート・プロシージャ・コール(RPC)データ、表現状態転送(REST)インターフェースに実質的に準拠したデータ、ファイルベースのインターフェースに実質的に準拠したデータ、及び/又は生のデータなどの使用可能なタイプのデータに出力を変換して戻し、施設3602において記憶及び表示するように)パイプラインを通して処理した後に、各コンテナによって使用される、且つ/又は施設3602によって使用される撮像データを受信及び構成するコンテナに加えて、撮像データ3608を処理するのに所望される又は必要とされる異なるコンテナの選択に基づき定義されてもよい。少なくとも一実施例では、(たとえばパイプラインを構成する)ソフトウェア3618内のコンテナの組合せは、(本明細書においてより詳細に記載する)仮想機器と呼ばれてもよく、仮想機器は、サービス3620及びハードウェア3622を利用して、コンテナにおいてインスタンス化されたアプリケーションの一部又はすべての処理タスクを実行してもよい。
【0500】
少なくとも一実施例では、データ処理パイプラインは、推論要求(たとえば、臨床医、医師、放射線医など、導入システム3606のユーザからの要求)に応答して、DICOM、RIS、CIS、REST準拠、RPC、生、及び/又は他のフォーマットで入力データ(たとえば、撮像データ3608)を受け取ってもよい。少なくとも一実施例では、入力データは、1つ又は複数の撮像デバイス、シーケンシング・デバイス、放射線デバイス、ゲノミクス・デバイス、及び/又は他のタイプのデバイスによって生成される1つ又は複数の画像、ビデオ、及び/又は他のデータ表現を表してもよい。少なくとも一実施例では、データは、データ処理パイプラインの一部としての事前処理を受けて、1つ又は複数のアプリケーションによって処理するためにデータが準備されてもよい。少なくとも一実施例では、パイプラインの1つ若しくは複数の推論タスク又は他の処理タスクの出力に対して後処理が実行されて、次のアプリケーション用に出力データが準備されてもよく、且つ/又は送信及び/若しくはユーザによる使用のために(たとえば、推論要求への応答として)出力データが準備されてもよい。少なくとも一実施例では、推論タスクは、訓練済み若しくは導入済みのニューラル・ネットワークなど、1つ又は複数の機械学習モデルによって実行されてもよく、このモデルは、訓練システム3604の出力モデル3616を含んでもよい。
【0501】
少なくとも一実施例では、データ処理パイプラインのタスクはコンテナにカプセル化されてもよく、コンテナはそれぞれ、アプリケーションの個別の完全に機能的なインスタンス化、及び機械学習モデルを参照できる仮想化コンピューティング環境を表す。少なくとも一実施例では、コンテナ又はアプリケーションは、(本明細書においてより詳細に記載する)コンテナ・レジストリのプライベート(たとえば、アクセスの制限された)区域に発行されてもよく、訓練済み又は導入済みのモデルは、モデル・レジストリ3624に記憶され、1つ又は複数のアプリケーションに関連付けられてもよい。少なくとも一実施例では、アプリケーションの画像(たとえば、コンテナの画像)は、コンテナ・レジストリにおいて入手可能であってもよく、パイプラインに導入するためにユーザによってコンテナ・レジストリから選択されると、画像は、ユーザのシステムで使用するためにアプリケーションをインスタンス化するためのコンテナを生成するために使用されてもよい。
【0502】
少なくとも一実施例では、開発者(たとえば、ソフトウェア開発者、臨床医、医師など)は、供給されたデータに対して画像処理及び/又は推論を実行するために、アプリケーションを(たとえばコンテナとして)開発、公開、及び記憶してもよい。少なくとも一実施例では、開発、公開、及び/又は記憶は、(たとえば、開発されたアプリケーション及び/又はコンテナが、確実にシステムに準拠するように、又はシステムと互換性があるようにするために)システムに関連付けられたソフトウェア開発キット(SDK)を使用して実行されてもよい。少なくとも一実施例では、開発されたアプリケーションは、システム(たとえば図37のシステム3700)としてサービス3620の少なくとも一部をサポートすることができるSDKを用いて、ローカルに(たとえば第1の施設において、第1の施設からのデータについて)テストされてもよい。少なくとも一実施例では、DICOM物体は、1個から数百個にわたる画像又は他のタイプのデータをどこにでも含むことができて、データのバリエーションがあることから、開発者は、入力されるDICOMデータの抽出及び準備を管理する(たとえば、アプリケーション用の構成を設定する、事前処理をアプリケーションに構築するなどの)責任を負うことがある。少なくとも一実施例では、システム3700によって(たとえば、精度、安全性、患者のプライバシーなどが)検証されると、アプリケーションは、ユーザ(たとえば、病院、クリニック、研究所、ヘルスケア提供者など)によって選択及び/又は実装のためにコンテナ・レジストリにおいて利用可能にされて、ユーザの施設(たとえば、第2の施設)におけるデータに対して1つ又は複数の処理タスクが実行されてもよい。
【0503】
少なくとも一実施例では、次いで開発者は、アプリケーション又はコンテナを、システム(たとえば、図37のシステム3700)のユーザによってアクセス及び使用のためにネットワークを通して共有してもよい。少なくとも一実施例では、完成し検証されたアプリケーション又はコンテナは、コンテナ・レジストリに記憶されてもよく、関連付けられる機械学習モデルは、モデル・レジストリ3624に記憶されてもよい。少なくとも一実施例では、推論又は画像処理の要求を出す要求元エンティティ(たとえば、医療施設のユーザ)は、コンテナ・レジストリ及び/又はモデル・レジストリ3624をブラウジングしてアプリケーション、コンテナ、データセット、機械学習モデルなどのために、データ処理パイプラインに含めるための要素の所望の組合せを選択し、撮像処理要求を送出してもよい。少なくとも一実施例では、要求は、要求を実行するために必要な入力データ(及びいくつかの実例では、関連付けられる患者データ)を含んでもよく、且つ/又は要求を処理する際に実行されることになるアプリケーション及び/又は機械学習モデルの選択を含んでもよい。少なくとも一実施例では、次いで要求は、導入システム3606(たとえばクラウド)の1つ又は複数の構成要素に渡されて、データ処理パイプラインの処理が実行されてもよい。少なくとも一実施例では、導入システム3606による処理は、コンテナ・レジストリ及び/又はモデル・レジストリ3624から選択された要素(たとえば、アプリケーション、コンテナ、モデルなど)を参照することを含んでもよい。少なくとも一実施例では、パイプラインによって結果が生成されると、結果がユーザに返されて参照されてもよい(たとえば、ローカルで、構内のワークステーション又は端末で実行している視聴アプリケーション・スイートで視聴されてもよい)。少なくとも一実施例では、放射線医は、任意の数のアプリケーション及び/又はコンテナを含むデータ処理パイプラインから結果を受信してもよく、ここで結果は、X線、CTスキャン、MRIなどにおける異常検出を含んでもよい。
【0504】
少なくとも一実施例では、パイプラインにおけるアプリケーション又はコンテナの処理又は実行を支援するために、サービス3620が利用されてもよい。少なくとも一実施例では、サービス3620は、計算サービス、人工知能(AI)サービス、視覚化サービス、及び/又は他のタイプのサービスを含んでもよい。少なくとも一実施例では、サービス3620は、ソフトウェア3618の1つ又は複数のアプリケーションに共通の機能を提供してもよく、それにより機能は、アプリケーションによってコール又は利用されることが可能なサービスに対して抽象化されてもよい。少なくとも一実施例では、サービス3620によって提供される機能は、動的でより効率的に実行されてもよく、それと同時に、(たとえば、並列コンピューティング・プラットフォーム3730(図37)を使用して)アプリケーションが並列にデータを処理できるようにすることにより、良好にスケーリングされてもよい。少なくとも一実施例では、サービス3620により提供される同じ機能を共有する各アプリケーションに、サービス3620のそれぞれのインスタンスを有するよう要求するのではなく、サービス3620が、様々なアプリケーション間で共有されてもよい。少なくとも一実施例では、サービスは、非限定的な実例として、検出又はセグメント化のタスクを実行するために使用されてもよい推論のサーバ又はエンジンを含んでもよい。少なくとも一実施例では、機械学習モデルの訓練及び/又は再訓練の機能を提供することができるモデル訓練サービスが含まれてもよい。少なくとも一実施例では、GPU加速化データ(たとえば、DICOM、RIS、CIS、REST準拠、RPC、生など)の抽出、リサイズ、スケーリング、及び/又は他の拡張を提供することができるデータ拡張サービスがさらに含まれてもよい。少なくとも一実施例では、レイ・トレーシング、ラスタ化、ノイズ除去、鮮鋭化などのような画像レンダリング効果を加えることができる視覚化サービスが使用されて、2次元(2D)及び/又は3次元(3D)のモデルにリアル感が付加されてもよい。少なくとも一実施例では、仮想機器のパイプライン内の他のアプリケーションについてビーム形成、セグメント化、推論、撮像、及び/又はサポートを実現する仮想機器サービスが含まれてもよい。
【0505】
少なくとも一実施例では、サービス3620がAIサービス(たとえば、推論サービス)を含む場合、異常検出(たとえば、腫瘍、発育異常、瘢痕化など)のためのアプリケーションに関連付けられた1つ又は複数の機械学習モデルは、機械学習モデル、又はその処理を、アプリケーション実行の一部として実行するように推論サービス(たとえば、推論サーバ)に(たとえば、APIコールとして)コールすることによって、実行されてもよい。少なくとも一実施例では、セグメント化タスクのための1つ又は複数の機械学習モデルを別のアプリケーションが含む場合、セグメント化タスクに関連付けられた処理動作のうちの1つ又は複数を実行するための機械学習モデルを実行するように、アプリケーションは推論サービスをコールしてもよい。少なくとも一実施例では、セグメント化アプリケーション及び異常検出アプリケーションを含む先進処理及び推論パイプラインを実装するソフトウェア3618は、1つ又は複数の推論タスクを実行するためにそれぞれのアプリケーションが同じ推論サービスをコールすることがあるので、合理化されてもよい。
【0506】
少なくとも一実施例では、ハードウェア3622は、GPU、CPU、グラフィックス・カード、AI/深層学習システム(たとえば、NVIDIAのDGXスーパーコンピュータ・システムなどのAIスーパーコンピュータ)、クラウド・プラットフォーム、又はそれらの組合せを含んでもよい。少なくとも一実施例では、異なるタイプのハードウェア3622を使用して、導入システム3606のソフトウェア3618及びサービス3620のための効率的で専用のサポートが提供されてもよい。少なくとも一実施例では、画像処理、画像再構築、セグメント化、MRI検査、脳卒中又は心臓発作の(たとえばリアルタイムの)検出、レンダリングの画像品質などの効率、精度、及び有効性を向上させるために、AI/深層学習システム内、クラウド・システムにおいて、及び/又は導入システム3606の他の処理構成要素において、ローカルで(たとえば、施設3602で)処理を行うためのGPU処理の使用が実装されてもよい。少なくとも一実施例では、施設は、撮像デバイス、ゲノミクス・デバイス、シーケンシング・デバイス、及び/又は他のタイプのデバイスを構内に含んでもよく、これらは、GPUを利用して、対象者の解剖学的組織を表す撮像データを生成してもよい。
【0507】
少なくとも一実施例では、ソフトウェア3618及び/又はサービス3620は、非限定的な実例として深層学習、機械学習、及び/又は高性能コンピューティングに関するGPU処理のために最適化されてもよい。少なくとも一実施例では、導入システム3606及び/又は訓練システム3604のコンピューティング環境のうちの少なくとも一部は、データセンタの1つ若しくは複数のスーパーコンピュータ、又は高性能コンピューティング・システムにおいて、GPU最適化ソフトウェア(たとえば、NVIDIAのDGXシステムのハードウェアとソフトウェアの組合せ)を用いて実行されてもよい。少なくとも一実施例では、データセンタは、HIPAAの条項に準拠してもよく、したがって、撮像データ及び/又は他の患者データの受信、処理、及び送信は、患者データのプライバシーに関して安全に取り扱われる。少なくとも一実施例では、ハードウェア3622は、任意の数のGPUを含んでもよく、これらのGPUは、本明細書に記載するように、データの並列処理を実行するためにコールされてもよい。少なくとも一実施例では、クラウド・プラットフォームはさらに、深層学習タスク、機械学習タスク、又は他のコンピューティング・タスクのGPU最適化された実行のためのGPU処理を含んでもよい。少なくとも一実施例では、クラウド・プラットフォーム(たとえば、NVIDIAのNGC)は、(たとえば、NVIDIAのDGXシステムによって提供される)AI/深層学習スーパーコンピュータ、及び/又はGPU最適化ソフトウェアをハードウェア抽象化及びスケーリングのプラットフォームとして使用して、実行されてもよい。少なくとも一実施例では、クラウド・プラットフォームは、シームレスなスケーリング及びロード・バランシングを可能にするために、複数のGPUに対するアプリケーション・コンテナ・クラスタリング・システム又はオーケストレーション・システム(たとえば、KUBERNETES)を統合してもよい。
【0508】
少なくとも一実施例では、図36に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図36に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図36に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0509】
図37は、少なくとも一実施例による撮像導入パイプラインを生成及び導入するための実例システム3700のためのシステム図である。少なくとも一実施例では、システム3700は、図36のプロセス3600、及び/又は先進処理及び推論パイプラインを含む他のプロセスを実装するために使用されてもよい。少なくとも一実施例では、システム3700は、訓練システム3604及び導入システム3606を含んでもよい。少なくとも一実施例では、訓練システム3604及び導入システム3606は、本明細書に記載するように、ソフトウェア3618、サービス3620、及び/又はハードウェア3622を使用して実装されてもよい。
【0510】
少なくとも一実施例では、システム3700(たとえば、訓練システム3604及び/又は導入システム3606)は、クラウド・コンピューティング環境(たとえば、クラウド3726の使用)において実装されてもよい。少なくとも一実施例では、システム3700は、ヘルスケア・サービス施設に関してローカルに実装されてもよく、又はクラウドとローカル・コンピューティング・リソースの両方の組合せとして実装されてもよい。少なくとも一実施例では、クラウド・コンピューティングが実装される実施例では、HIPAA並びに/又は他のデータ取扱い及びプライバシーの規定若しくは法律に準拠していない処理を提供するシステム3700の1つ又は複数の構成要素から、患者データは分離されてもよく、又はそれらによって処理されなくてもよい。少なくとも一実施例では、クラウド3726のAPIへのアクセスは、制定されたセキュリティ対策又はプロトコルを介して許可されたユーザに限定されてもよい。少なくとも一実施例では、セキュリティ・プロトコルはウェブ・トークンを含んでもよく、このウェブ・トークンは、認証(たとえば、AuthN、AuthZ、Glueconなど)のサービスによって署名されてもよく、適切な許可を持っていてもよい。少なくとも一実施例では、(本明細書に記載の)仮想機器のAPI、又はシステム3700の他のインスタンス化は、対話について検査済み又は許可済みのパブリックIPのセットに限定されてもよい。
【0511】
少なくとも一実施例では、システム3700の様々な構成要素は、有線及び/又は無線の通信プロトコルを介して、ローカル・エリア・ネットワーク(LAN)及び/又は広域ネットワーク(WAN)を含むがこれらに限定されない様々な異なるタイプのネットワークのうちの任意のものを使用して、相互に通信してもよい。少なくとも一実施例では、(たとえば推論要求を送信するため、推論要求の結果を受信するためなど)施設とシステム3700の構成要素との間の通信は、1つ又は複数のデータ・バス、無線データ・プロトコル(Wi-Fi)、有線データ・プロトコル(たとえば、イーサネット(登録商標))などを介して通信されてもよい。
【0512】
少なくとも一実施例では、訓練システム3604は、図36に関して本明細書に記載したものと同様の訓練パイプライン3704を実行してもよい。少なくとも一実施例では、1つ又は複数の機械学習モデルが導入システム3606により導入パイプライン3710において使用されることになる場合、訓練パイプライン3704を使用して、1つ又は複数の(たとえば、事前訓練された)モデルが訓練若しくは再訓練されてもよく、且つ/又は事前訓練されたモデル3706のうちの1つ又は複数が(たとえば再訓練若しくは更新を必要とせずに)実装されてもよい。少なくとも一実施例では、訓練パイプライン3704の結果として、出力モデル3616が生成されてもよい。少なくとも一実施例では、訓練パイプライン3704は、(たとえばDICOM画像を、それぞれの機械学習モデルによって処理するのに適した別のフォーマット、たとえばNeuroimaging Informatics Technology Initiative(NIfTI)フォーマットなどに変換するためのDICOMアダプタ3702Aを使用した)撮像データ(若しくは他の入力データ)の変換若しくは適合、AI支援アノテーション3610、ラベル付きクリニック・データ3612を生成するための撮像データ3608のラベル付け又はアノテーション付け、モデル・レジストリからのモデル選択、モデル訓練3614、モデルの訓練、再訓練、若しくは更新、及び/又は他の処理ステップなどであるがこれらに限定されない任意の数の処理ステップを含んでもよい。少なくとも一実施例では、導入システム3606によって使用される異なる機械学習モデルについて、異なる訓練パイプライン3704が使用されてもよい。少なくとも一実施例では、図36に関して記載した第1の実例と同様の訓練パイプライン3704は、第1の機械学習モデルに使用されてもよく、図36に関して記載した第2の実例と同様の訓練パイプライン3704は、第2の機械学習モデルに使用されてもよく、図36に関して記載した第3の実例と同様の訓練パイプライン3704は、第3の機械学習モデルに使用されてもよい。少なくとも一実施例では、それぞれの各機械学習モデルに要求されるものに応じて、訓練システム3604内のタスクの任意の組合せが使用されてもよい。少なくとも一実施例では、機械学習モデルのうちの1つ又は複数は、すでに訓練済みで導入の準備が整っていてもよく、それにより機械学習モデルは、訓練システム3604によるいかなる処理も受けなくてもよく、導入システム3606によって実装されてもよい。
【0513】
少なくとも一実施例では、出力モデル3616及び/又は事前訓練されたモデル3706は、実装形態又は実施例に応じて任意のタイプの機械学習モデルを含んでもよい。少なくとも一実施例では、限定することなく、システム3700によって使用される機械学習モデルは、線形回帰、ロジスティック回帰、決定木、サポート・ベクター・マシン(SVM)、ナイーブ・ベイズ、k近傍法(Knn:k-nearest neighbor)、k平均クラスタリング、ランダム・フォレスト、次元縮小アルゴリズム、勾配ブースティング・アルゴリズム、ニューラル・ネットワーク(たとえば、オート・エンコーダ、畳み込み、再帰、パーセプトロン、長/短期メモリ(LSTM)、ホップフィールド、ボルツマン、ディープ・ビリーフ、逆畳み込み、敵対的生成、液体状態マシンなど)を使用する機械学習モデル、及び/又は他のタイプの機械学習モデルを含んでもよい。
【0514】
少なくとも一実施例では、訓練パイプライン3704は、少なくとも図40Bに関して、より詳細に本明細書に記載するAI支援アノテーションを含んでもよい。少なくとも一実施例では、ラベル付きクリニック・データ3612(たとえば、従来のアノテーション)は、任意の数の技法によって生成されてもよい。少なくとも一実施例では、ラベル又は他のアノテーションは、描画プログラム(たとえば、アノテーション・プログラム)、コンピュータ支援設計(CAD)プログラム、ラベル付けプログラム、グラウンド・トゥルース用のアノテーション若しくはラベルの生成に適した別のタイプのプログラム内で生成されてもよく、且つ/又はいくつかの実例では、手書きされてもよい。少なくとも一実施例では、グラウンド・トゥルース・データは、合成により生成されてもよく(たとえば、コンピュータ・モデル又はレンダリングから生成されてもよく)、現実的に生成されてもよく(たとえば、実世界のデータから設計及び生成されてもよく)、機械自動化されてもよく(たとえば、特徴の分析及び学習を使用して、データから特徴を抽出し、次いでラベルを生成してもよく)、人間によりアノテーション付けされてもよく(たとえば、ラベラ、又はアノテーション専門家がラベルのロケーションを定義してもよく)、且つ/又はこれらの組合せであってもよい。少なくとも一実施例では、撮像データ3608のインスタンス(又は機械学習モデルによって使用される他のタイプのデータ)ごとに、訓練システム3604によって生成される対応するグラウンド・トゥルース・データが存在してもよい。少なくとも一実施例では、訓練パイプライン3704に含まれるAI支援アノテーションに加えて又はその代わりに、導入パイプライン3710の一部としてAI支援アノテーションが実行されてもよい。少なくとも一実施例では、システム3700は多層プラットフォームを含んでもよく、このプラットフォームは、1つ又は複数の医療用撮像及び診断の機能を実行することができる診断アプリケーション(又は他のタイプのアプリケーション)のソフトウェア層(たとえば、ソフトウェア3618)を含んでもよい。少なくとも一実施例では、システム3700は、1つ又は複数の施設のPACSサーバ・ネットワークに、(たとえば、暗号化リンクを介して)通信可能に結合されてもよい。少なくとも一実施例では、システム3700は、PACSサーバからのデータ(たとえば、DICOMデータ、RISデータ、生データ、CISデータ、REST準拠データ、RPCデータ、生データなど)に(たとえば、DICOMアダプタ3702、又はRIS、CIS、REST準拠、RPC、生などのような別のタイプのデータ・アダプタを介して)アクセスし、それを参照するように構成されて、機械学習モデルの訓練、機械学習モデルの導入、画像処理、推論、及び/又は他の動作などの動作を実行してもよい。
【0515】
少なくとも一実施例では、ソフトウェア層は、セキュアな、暗号化された、且つ/又は認証されたAPIとして実装されてもよく、これを介して、アプリケーション又はコンテナが、外部環境(たとえば、施設3602)から呼び出し(たとえばコール)されてもよい。少なくとも一実施例では、次いでアプリケーションは、それぞれのアプリケーションに関連付けられた計算、AI、又は視覚化のタスクを実行するために1つ又は複数のサービス3620をコール又は実行してもよく、ソフトウェア3618及び/又はサービス3620は、ハードウェア3622を利用して、処理タスクを有効且つ効率的なやり方で実行してもよい。
【0516】
少なくとも一実施例では、導入システム3606は、導入パイプライン3710を実行してもよい。少なくとも一実施例では、導入パイプライン3710は任意の数のアプリケーションを含んでもよく、これらは、上に記載のAI支援アノテーションを含め、撮像デバイス、シーケンシング・デバイス、ゲノミクス・デバイスなどによって生成された撮像データ(及び/又は他のタイプのデータ)に連続的に、非連続的に、又は他のやり方で適用されてもよい。少なくとも一実施例では、本明細書に記載するように、個々のデバイス用の導入パイプライン3710は、デバイス用の仮想機器(たとえば、仮想超音波機器、仮想CTスキャン機器、仮想シーケンシング機器など)と呼ばれてもよい。少なくとも一実施例では、デバイスによって生成されるデータに必要な情報に応じて、1つのデバイスにつき2つ以上の導入パイプライン3710が存在してもよい。少なくとも一実施例では、異常検出がMRIマシンに必要とされる場合、第1の導入パイプライン3710が存在してもよく、画像強調がMRIマシンの出力に必要とされる場合、第2の導入パイプライン3710が存在してもよい。
【0517】
少なくとも一実施例では、導入パイプライン3710にとって利用可能なアプリケーションは、デバイスからの撮像データ又は他のデータに対して処理タスクを実行するために使用することができる任意のアプリケーションを含んでもよい。少なくとも一実施例では、画像強調、セグメント化、再構築、異常検出、物体検出、特徴検出、処置計画、線量測定、ビーム計画(又は他の放射線処置手順)、及び/又は他の分析、画像処理、又は推論のタスクを、異なるアプリケーションが担当してもよい。少なくとも一実施例では、導入システム3606は、それぞれのアプリケーションの構造を定義してもよく、それにより導入システム3606のユーザ(たとえば、医療施設、研究所、クリニックなど)は、構造を理解し、自らのそれぞれの施設内で実装するためにアプリケーションを適応させてもよい。少なくとも一実施例では、導入パイプライン3710に含めるために、画像再構築用のアプリケーションが選択されてもよいが、撮像デバイスによって生成されるデータのタイプは、アプリケーション内で使用されるデータのタイプとは異なってもよい。少なくとも一実施例では、DICOMアダプタ3702B(及び/又はDICOMリーダ)は、又は別のタイプのデータ・アダプタ若しくはリーダ(たとえば、RIS、CIS、REST準拠、RPC、生など)が導入パイプライン3710内で使用されて、導入システム3606内のアプリケーションによって使用可能な形にデータを変換してもよい。少なくとも一実施例では、DICOM、RIS、CIS、REST準拠、RPC、生、及び/又は他のタイプのデータ・ライブラリへのアクセスは、データに対する任意の畳み込み、色補正、鮮明度、ガンマ、及び/又は他の拡張を、デコード、抽出、及び/又は実行することを含め、累積され、事前処理されてもよい。少なくとも一実施例では、DICOM、RIS、CIS、REST準拠、RPC、及び/又は生データは、順序なしであってもよく、収集されたデータを整理しソートするために、事前パスが実行されてもよい。少なくとも一実施例では、様々なアプリケーションは共通の画像動作を共有することがあるので、いくつかの実施例では、(たとえば、サービス3620の1つとして)データ拡張ライブラリを使用して、これらの動作が加速化されてもよい。少なくとも一実施例では、CPU処理に依存する従来の処理手法のボトルネックを回避するために、並列コンピューティング・プラットフォーム3730を使用して、これらの処理タスクがGPU加速化されてもよい。
【0518】
少なくとも一実施例では、画像再構築アプリケーションは、機械学習モデルの使用を含む処理タスクを含んでもよい。少なくとも一実施例では、ユーザは、独自の機械学習モデルを使用すること、又はモデル・レジストリ3624から機械学習モデルを選択することを望む場合がある。少なくとも一実施例では、ユーザは、処理タスクを実行するために、独自の機械学習モデルを実装してもよく、又は機械学習モデルを選択してアプリケーションに含めてもよい。少なくとも一実施例では、アプリケーションは選択可能及びカスタマイズ可能であってもよく、アプリケーションの構造を定義することにより、特定のユーザ向けのアプリケーションの導入及び実装が、よりシームレスなユーザ・エクスペリエンスとして提示される。少なくとも一実施例では、システム3700の他の特徴、たとえばサービス3620及びハードウェア3622などを利用することにより、導入パイプライン3710は、さらによりユーザ・フレンドリになることができ、より容易な統合を実現でき、より正確で、効率的で、タイムリーな結果を生み出すことができる。
【0519】
少なくとも一実施例では、導入システム3606はユーザ・インターフェース3714(たとえば、グラフィカル・ユーザ・インターフェース、ウェブ・インターフェースなど)を含んでもよく、これらは、アプリケーションを選択して導入パイプライン3710に含める、アプリケーションを構成する、アプリケーション又はそのパラメータ若しくは構造を修正又は変更する、セットアップ及び/又は導入中に導入パイプライン3710を使用しそれと対話する、且つ/又は他のやり方で導入システム3606と対話するために使用されてもよい。少なくとも一実施例では、訓練システム3604に関して図示されていないが、ユーザ・インターフェース3714(又は異なるユーザ・インターフェース)は、導入システム3606で使用するモデルを選択するため、訓練システム3604において訓練若しくは再訓練するモデルを選択するため、且つ/又は他のやり方で訓練システム3604と対話するために使用されてもよい。
【0520】
少なくとも一実施例では、アプリケーション・オーケストレーション・システム3728に加えてパイプライン・マネージャ3712を使用して、導入パイプライン3710のアプリケーション又はコンテナと、サービス3620及び/又はハードウェア3622との間で対話が管理されてもよい。少なくとも一実施例では、パイプライン・マネージャ3712は、アプリケーションからアプリケーションへの対話、アプリケーションからサービス3620への対話、及び/又はアプリケーション若しくはサービスからハードウェア3622への対話を容易にするように構成されてもよい。少なくとも一実施例では、ソフトウェア3618に含まれるように図示してあるが、これは限定を意図しておらず、(たとえば、図38に示すものなど)いくつかの実例では、パイプライン・マネージャ3712は、サービス3620に含まれてもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム3728(たとえば、Kubernetes、DOCKERなど)は、コンテナ・オーケストレーション・システムを含んでもよく、このシステムは、アプリケーションを、調整、管理、スケーリング、及び導入のための論理ユニットとして、コンテナにグループ化することができる。少なくとも一実施例では、導入パイプライン3710からのアプリケーション(たとえば、再構築アプリケーション、セグメント化アプリケーションなど)を個々のコンテナに関連付けることより、各アプリケーションは自己完結型環境内(たとえば、カーネル・レベルで)で実行して、スピード及び効率を向上させることができる。
【0521】
少なくとも一実施例では、各アプリケーション及び/又はコンテナ(又はその画像)は、個々に開発、修正、及び導入されてもよく(たとえば、第1のユーザ又は開発者が、第1のアプリケーションを開発、修正、及び導入してもよく、第2のユーザ又は開発者が、第1のユーザ又は開発者とは別に第2のアプリケーションを開発、修正、及び導入してもよく)、これにより、別のアプリケーション又はコンテナのタスクに邪魔されることなく、1つのアプリケーション及び/又はコンテナのタスクに集中し、注意を払うことが可能になる。少なくとも一実施例では、異なるコンテナ間又はアプリケーション間の通信、及び協調が、パイプライン・マネージャ3712及びアプリケーション・オーケストレーション・システム3728によって支援されてもよい。少なくとも一実施例では、各コンテナ又はアプリケーションの予測される入力及び/又は出力が、(たとえば、アプリケーション又はコンテナの構造に基づき)システムによって知られている限り、アプリケーション・オーケストレーション・システム3728及び/又はパイプライン・マネージャ3712は、アプリケーション又はコンテナのそれぞれ間の通信、及びそれらの間でのリソースの共有を容易にすることができる。少なくとも一実施例では、導入パイプライン3710のアプリケーション又はコンテナのうちの1つ又は複数は、同じサービス及びリソースを共有することができるので、アプリケーション・オーケストレーション・システム3728は、様々なアプリケーション間又はコンテナ間でサービス又はリソースをオーケストレートし、ロード・バランシングを行い、共有を決定してもよい。少なくとも一実施例では、スケジューラを使用して、アプリケーション又はコンテナのリソース要件、これらのリソースの現在の使用量又は計画された使用量、及びリソースの利用可能性が追跡されてもよい。少なくとも一実施例では、こうしてスケジューラは、異なるアプリケーションにリソースを配分し、システムの要件及び利用可能性を考慮してアプリケーション間でリソースを分配してもよい。いくつかの実例では、スケジューラ(並びに/又は、シーケンサ及び/若しくは非同期コンピュート・エンジンなどのアプリケーション・オーケストレーション・システム3728の他の構成要素)は、サービスの品質(QoS)、(たとえば、リアルタイム処理を実行するか、遅延処理を実行するかを決定するための)データ出力を必要とする緊急度などのような、システムに課される制約(たとえば、ユーザ制約)に基づき、リソースの利用可能性及び分配を決定してもよい。
【0522】
少なくとも一実施例では、導入システム3606のアプリケーション又はコンテナによって利用及び共有されるサービス3620は、計算サービス3716、AIサービス3718、視覚化サービス3720、及び/又は他のタイプのサービスを含んでもよい。少なくとも一実施例では、アプリケーションは、サービス3620のうちの1つ又は複数をコール(たとえば実行)して、アプリケーションのための処理動作を実行してもよい。少なくとも一実施例では、計算サービス3716は、スーパーコンピューティング又は他の高性能コンピューティング(HPC)のタスクを実行するために、アプリケーションによって利用されてもよい。少なくとも一実施例では、アプリケーションのうちの1つ又は複数を介してデータを実質的に同時に処理するため、且つ/又は1つのアプリケーションの1つ又は複数のタスクを実質的に同時に処理するために、計算サービス3716を利用して(たとえば、並列コンピューティング・プラットフォーム3730を使用して)並列処理が実行されてもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム3730(たとえば、NVIDIAのCUDA)は、GPU(たとえば、GPU3722)上での汎用コンピューティング(GPGPU)を可能にしてもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム3730のソフトウェア層は、計算カーネルを実行するために仮想命令セット及びGPUの並列計算要素へのアクセスを提供してもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム3730はメモリを含んでもよく、いくつかの実施例では、メモリは、複数のコンテナ間で、且つ/又は1つのコンテナ内の異なる処理タスク間で共有されてもよい。少なくとも一実施例では、複数のコンテナ、及び/又はコンテナ内の複数のプロセスが、並列コンピューティング・プラットフォーム3730のメモリの共有セグメントからの同じデータを使用するために(たとえば、アプリケーションの複数の異なるステージ、又は複数のアプリケーションが、同じ情報を処理する場合)、プロセス間通信(IPC)コールが生成されてもよい。少なくとも一実施例では、データのコピーを作成し、データをメモリの異なるロケーションに移動(たとえば、読取り/書込みの動作)させるのではなく、メモリの同じロケーションの同じデータが、任意の数の処理タスクに(たとえば、同じ時間、異なる時間などに)使用されてもよい。少なくとも一実施例では、データが使用されて、処理の結果として新規データが生成されるとき、データの新規ロケーションのこの情報は、様々なアプリケーションに記憶され、それらの間で共有されてもよい。少なくとも一実施例では、データのロケーション及び更新済み又は修正済みのデータのロケーションは、コンテナ内でペイロードがどのように理解されるかという定義の一部であってもよい。
【0523】
少なくとも一実施例では、AIサービス3718は、アプリケーションに関連付けられた(たとえば、アプリケーションの1つ又は複数の処理タスクを実行する役割を課された)機械学習モデルを実行するための推論サービスを実行するために利用されてもよい。少なくとも一実施例では、AIサービス3718は、セグメント化、再構築、物体検出、特徴検出、分類、及び/又は他の推論タスクのための機械学習モデル(たとえば、CNNなどのニューラル・ネットワーク)を実行するために、AIシステム3724を利用してもよい。少なくとも一実施例では、導入パイプライン3710のアプリケーションは、訓練システム3604からの出力モデル3616及び/又はアプリケーションの他のモデルのうちの1つ又は複数を使用して、撮像データ(たとえば、DICOMデータ、RISデータ、CISデータ、REST準拠データ、RPCデータ、生データなど)について推論を実行してもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム3728(たとえば、スケジューラ、シーケンサ及び/又は非同期コンピュート・エンジン)を使用する推論の2つ以上の実例が利用可能であってもよい。少なくとも一実施例では、第1のカテゴリは、緊急時の緊急要求について推論を実行するため、又は診断時の放射線医のためなど、より高いサービス・レベル合意を達成できる高優先順位/低レイテンシの経路を含むことができる。少なくとも一実施例では、第2のカテゴリは、緊急ではない要求のため、又は分析が後で実行されてもよい場合に使用することができる標準優先順位の経路を含んでもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム3728は、AIサービス3718の異なる推論タスク向けの優先順位経路に基づき、リソース(たとえば、サービス3620及び/又はハードウェア3622)を分配してもよい。
【0524】
少なくとも一実施例では、共有ストレージが、システム3700内でAIサービス3718に取り付けられてもよい。少なくとも一実施例では、共有ストレージは、キャッシュ(又は他のタイプのストレージ・デバイス)として動作してもよく、アプリケーションからの推論要求を処理するために使用されてもよい。少なくとも一実施例では、推論要求が送出されたとき、要求は、導入システム3606のAPIインスタンスのセットによって受信されてもよく、1つ又は複数のインスタンスが(たとえば、最良な適合のため、ロード・バランシングのためなどに)選択されて、要求が処理されてもよい。少なくとも一実施例では、要求を処理するために、要求がデータベースに入れられてもよく、機械学習モデルは、まだキャッシュにない場合には、モデル・レジストリ3624から特定されてもよく、検証ステップは、適切な機械学習モデルがキャッシュ(たとえば、共有ストレージ)に確実にロードされるようにしてもよく、且つ/又はモデルのコピーがキャッシュに保存されてもよい。少なくとも一実施例では、アプリケーションがまだ実行されていない場合、又はアプリケーションの充分なインスタンスが存在しない場合には、スケジューラ(たとえば、パイプライン・マネージャ3712)を使用して、要求において参照されたアプリケーションが起動されてもよい。少なくとも一実施例では、モデルを実行するための推論サーバがまだ起動されていない場合には、推論サーバが起動されてもよい。少なくとも一実施例では、任意の数の推論サーバがモデルごとに起動されてもよい。少なくとも一実施例では、推論サーバがクラスタ化済みであるプル・モデルでは、ロード・バランシングが有利な場合にはいつでもモデルがキャッシュされてもよい。少なくとも一実施例では、推論サーバは、対応する分散サーバに静的にロードされてもよい。
【0525】
少なくとも一実施例では、推論は、コンテナ内で実行される推論サーバを使用して実行されてもよい。少なくとも一実施例では、推論サーバのインスタンスは、モデルに(任意選択でモデルの複数のバージョンに)関連付けられてもよい。少なくとも一実施例では、モデルに対して推論を実行する要求が受信されたとき、推論サーバのインスタンスが存在しない場合には、新規のインスタンスがロードされてもよい。少なくとも一実施例では、推論サーバをスタートするとき、モデルが推論サーバに渡されてもよく、それにより、推論サーバが異なるインスタンスとして実行されている限り、同じコンテナを使用して異なるモデルにサービス提供されてもよい。
【0526】
少なくとも一実施例では、アプリケーションの実行中、所与のアプリケーションについて推論要求が受信されてもよく、(たとえば、推論サーバのインスタンスをホストする)コンテナが(まだロードされていなければ)ロードされてもよく、開始プロシージャがコールされてもよい。少なくとも一実施例では、コンテナの事前処理論理が、(たとえばCPU及び/又はGPUを使用して)入力データに対する任意の追加的な事前処理をロード、デコード、及び/又は実行してもよい。少なくとも一実施例では、推論のためにデータが準備されると、コンテナは、必要に応じてデータに推論を実行してもよい。少なくとも一実施例では、これは1つの画像(たとえば手のX線)に対する単一の推論コールを含んでもよく、又は何百もの画像(たとえば胸のCT)について推論を要求してもよい。少なくとも一実施例では、アプリケーションは、完了前に結果を要約してもよく、これは限定することなく、単一の信頼性スコア、ピクセル・レベルのセグメント化、ボクセル・レベルのセグメント化、視覚化の生成、又は所見を要約するためのテキストの生成を含んでもよい。少なくとも一実施例では、異なるモデル又はアプリケーションには、異なる優先順位が割り当てられてもよい。たとえば、リアルタイム(TAT1分未満)の優先順位を有するモデルもあれば、低優先順位(たとえば、TAT10分未満)を有するモデルもある。少なくとも一実施例では、モデル実行時間は、要求元の施設又はエンティティから測定されてもよく、推論サービスに対する実行に加えてパートナ・ネットワーク横断時間を含んでもよい。
【0527】
少なくとも一実施例では、サービス3620と推論アプリケーションとの間での要求の移行は、ソフトウェア開発キット(SDK)の後ろに隠されてもよく、キューを通して頑健な移送が提供されてもよい。少なくとも一実施例では、個々のアプリケーション/テナントIDの組合せを求めて、要求がAPIを介してキューに入れられ、SDKは、キューから要求を引き出し、要求をアプリケーションに与える。少なくとも一実施例では、SDKが要求をピックアップする環境において、キューの名称が提供されてもよい。少なくとも一実施例では、キューを介した非同期の通信は、その通信が利用可能になったときに、その通信によって、アプリケーションの任意のインスタンスがワークをピックアップできるようになるので、有用な場合がある。少なくとも一実施例では、結果はキューを介して返送されて、データが失われないようにしてもよい。少なくとも一実施例では、最高優先順位のワークは、アプリケーションのほとんどのインスタンスがキューに接続された状態のキューに進むことができ、一方で最低優先順位のワークは、1つのインスタンスがキューに接続された状態の、受信した順番にタスクを処理するキューに進むことができるので、キューは、ワークをセグメント化する機能も提供することができる。少なくとも一実施例では、アプリケーションは、クラウド3726に生成されたGPU加速インスタンス上で実行されてもよく、推論サービスは、GPU上で推論を実行してもよい。
【0528】
少なくとも一実施例では、視覚化サービス3720を利用して、アプリケーション及び/又は導入パイプライン3710の出力を見るための視覚化が生成されてもよい。少なくとも一実施例では、視覚化を生成するために、視覚化サービス3720によってGPU3722が利用されてもよい。少なくとも一実施例では、レイ・トレーシングなどのレンダリング効果が、視覚化サービス3720によって実装されて、より高品質の視覚化が生成されてもよい。少なくとも一実施例では、視覚化は、2D画像のレンダリング、3Dボリュームのレンダリング、3Dボリュームの再構築、2Dトモグラフィ・スライス、仮想現実表示、拡張現実表示などを、限定することなく含んでもよい。少なくとも一実施例では、仮想化された環境を使用して、システムのユーザ(たとえば、医師、看護師、放射線医)が対話するための仮想のインタラクティブ表示又はインタラクティブ環境(たとえば、仮想環境)が生成されてもよい。少なくとも一実施例では、視覚化サービス3720は、内部ビジュアライザ、シネマティクス、及び/又は他のレンダリング若しくは画像処理の能力若しくは機能(たとえば、レイ・トレーシング、ラスタ化、内部光学など)を含んでもよい。
【0529】
少なくとも一実施例では、ハードウェア3622は、GPU3722、AIシステム3724、クラウド3726、並びに/又は訓練システム3604及び/若しくは導入システム3606を実行するために使用される任意の他のハードウェアを含んでもよい。少なくとも一実施例では、GPU3722(たとえば、NVIDIAのTESLA及び/又はQUADROのGPU)は、任意の数のGPUを含んでもよく、これらは、計算サービス3716、AIサービス3718、視覚化サービス3720、他のサービス、及び/又はソフトウェア3618の任意の特徴若しくは機能の処理タスクを実行するために使用されてもよい。たとえば、AIサービス3718に関して、GPU3722を使用して、撮像データ(又は機械学習モデルによって使用される他のタイプのデータ)に対して事前処理が実行されてもよく、機械学習モデルの出力に対して事後処理が実行されてもよく、且つ/又は推論が実行されてもよい(たとえば、機械学習モデルが実行されてもよい)。少なくとも一実施例では、クラウド3726、AIシステム3724、及び/又はシステム3700の他の構成要素は、GPU3722を使用してもよい。少なくとも一実施例では、クラウド3726は、深層学習タスクのためにGPU最適化されたプラットフォームを含んでもよい。少なくとも一実施例では、AIシステム3724は、GPUを使用してもよく、クラウド3726、又は深層学習若しくは推論の役割を課された少なくとも一部分は、1つ又は複数のAIシステム3724を使用して実行されてもよい。したがって、ハードウェア3622は、個別構成要素として図示されているが、これは限定を意図したものではなく、ハードウェア3622の任意の構成要素が、ハードウェア3622の任意の他の構成要素と組み合わされてもよく、それらによって利用されてもよい。
【0530】
少なくとも一実施例では、AIシステム3724は、推論、深層学習、機械学習、及び/又は他の人工知能タスク向けに構成された専用のコンピューティング・システム(たとえば、スーパーコンピュータ又はHPC)を含んでもよい。少なくとも一実施例では、AIシステム3724(たとえば、NVIDIAのDGX)は、GPU最適化されたソフトウェア(たとえば、ソフトウェア・スタック)を含んでもよく、これは、CPU、RAM、ストレージ、及び/又は他の構成要素、特徴、若しくは機能に加えて、複数のGPU3722を使用して実行されてもよい。少なくとも一実施例では、1つ又は複数のAIシステム3724は、システム3700の一部又はすべてのAIベースの処理タスクを実行するために、(たとえば、データ・センタにおいて)クラウド3726に実装されてもよい。
【0531】
少なくとも一実施例では、クラウド3726は、GPU加速化インフラストラクチャ(たとえば、NVIDIAのNGC)を含んでもよく、これは、システム3700の処理タスクを実行するためのGPU最適化されたプラットフォームを提供してもよい。少なくとも一実施例では、クラウド3726は、システム3700のAIベースのタスクのうちの1つ又は複数を実行するためのAIシステム3724を(たとえば、ハードウェア抽象化及びスケーリングのプラットフォームとして)含んでもよい。少なくとも一実施例では、クラウド3726は、複数のGPUを利用してアプリケーション・オーケストレーション・システム3728と統合されて、アプリケーションとサービス3620間でシームレスなスケーリング及びロード・バランシングを可能にしてもよい。少なくとも一実施例では、クラウド3726は、本明細書に記載する計算サービス3716、AIサービス3718、及び/又は視覚化サービス3720を含むシステム3700のサービス3620の少なくとも一部を実行する役割を課されてもよい。少なくとも一実施例では、クラウド3726は、大小のバッチ推論(たとえば、NVIDIAのテンソルRTの実行)を実行してもよく、加速化された並列コンピューティングのAPI及びプラットフォーム3730(たとえば、NVIDIAのCUDA)を提供してもよく、アプリケーション・オーケストレーション・システム3728(たとえば、KUBERNETES)を実行してもよく、グラフィックス・レンダリングのAPI及びプラットフォーム(たとえば、高品質のシネマティクスを生成するためのレイ・トレーシング、2Dグラフィックス、3Dグラフィックス、及び/又は他のレンダリング技法)を提供してもよく、且つ/又はシステム3700のための他の機能を提供してもよい。
【0532】
少なくとも一実施例では、患者の機密性を保護するために(たとえば、患者のデータ又は記録が構外で使用されることになる場合)、クラウド3726は、深層学習コンテナ・レジストリなどのレジストリを含んでもよい。少なくとも一実施例では、レジストリは、患者データに対する事前処理、事後処理、又は他の処理タスクを実行できるアプリケーションのインスタンス化のためのコンテナを記憶してもよい。少なくとも一実施例では、クラウド3726は、患者データ並びにセンサ・データをコンテナに含むデータを受信してもよく、これらのコンテナにおいてセンサ・データについてのみ要求された処理を実行してもよく、次いで、いずれも患者データを抽出、記憶、又は他のやり方でそれにアクセスする必要なしに、結果の出力及び/又は視覚化を適切なパーティ及び/又はデバイス(たとえば、視覚化又は診断に使用される構内の医療デバイス)に転送してもよい。少なくとも一実施例では、患者データの機密性は、HIPAA及び/又は他のデータ規定に準拠して保護される。
【0533】
少なくとも一実施例では、図37に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図37に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図37に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0534】
図38は、少なくとも一実施例による、撮像データを処理するための導入パイプライン3710Aの実例の図を含む。少なくとも一実施例では、システム3700、具体的には導入システム3606は、導入パイプライン3710Aをカスタマイズ、更新、及び/又は統合して1つ若しくは複数の生成環境にするために使用されてもよい。少なくとも一実施例では、図38の導入パイプライン3710Aは、施設(たとえば、病院、クリニック、研究所、リサーチ環境など)において特定のユーザ(又はユーザのチーム)によってカスタム定義できる導入パイプライン3710Aの非限定的な実例を含む。少なくとも一実施例では、CTスキャナ3802用に導入パイプライン3710Aを定義するために、ユーザは、CTスキャナ3802によって生成される撮像データに対して特定の機能又はタスクを実行する1つ又は複数のアプリケーションを、たとえばコンテナ・レジストリから選択してもよい。少なくとも一実施例では、アプリケーションは、システム3700のサービス3620及び/又はハードウェア3622を利用できるコンテナとして、導入パイプライン3710Aに適用されてもよい。さらに、導入パイプライン3710Aは、アプリケーションによって使用されるデータを準備するように実装することができる追加の処理タスク又はアプリケーションを含んでもよい(たとえば、DICOMアダプタ3702B及びDICOMリーダ3806が、導入パイプライン3710Aにおいて使用されて、CT再構築3808、器官セグメント化3810などによって使用されるデータを準備してもよい)。少なくとも一実施例では、導入パイプライン3710Aは、一貫性のある導入、1回限りの使用、又は別の頻度若しくは間隔に合わせてカスタマイズ又は選択されてもよい。少なくとも一実施例では、ユーザは、特定の間隔で何人かの対象者について、CT再構築3808及び器官セグメント化3810を行いたいと思うことがあり、したがって、その期間にわたってパイプライン3710Aを導入してもよい。少なくとも一実施例では、ユーザはシステム3700からの要求ごとに、その要求のためにそのデータに対してユーザが実行したい処理のアプリケーションを選択してもよい。少なくとも一実施例では、導入パイプライン3710Aは、任意の間隔で調節されてもよく、システム3700内のコンテナ構造は適応性及びスケーラビリティがあるので、これはシームレスなプロセスとすることができる。
【0535】
少なくとも一実施例では、図38の導入パイプライン3710Aは、患者又は対象者の撮像データを生成するCTスキャナ3802を含んでもよい。少なくとも一実施例では、CTスキャナ3802からの撮像データは、CTスキャナ3802を収容する施設に関連付けられたPACSサーバ3804に記憶されてもよい。少なくとも一実施例では、PACSサーバ3804は、ソフトウェア及び/又はハードウェアの構成要素を含んでもよく、これらは施設において撮像モダリティ(たとえば、CTスキャナ3802)と直接インターフェースをとってもよい。少なくとも一実施例では、DICOMアダプタ3702Bは、DICOMプロトコルを使用してDICOM物体の送信及び受信を可能にしてもよい。少なくとも一実施例では、DICOMアダプタ3702Bは、導入パイプライン3710Aによって使用するために、PACSサーバ3804からのDICOMデータの準備又は構成を支援してもよい。少なくとも一実施例では、DICOMデータがDICOMアダプタ3702Bを介して処理されると、パイプライン・マネージャ3712は、導入パイプライン3710Aを通るようにデータをルーティングしてもよい。少なくとも一実施例では、DICOMリーダ3806は、画像ファイル及び関連する任意のメタデータをDICOMデータ(たとえば、視覚化3816Aに示す生のシノグラム・データ)から抽出してもよい。少なくとも一実施例では、抽出された作業ファイルは、導入パイプライン3710Aの他のアプリケーションによってより高速に処理できるようにキャッシュに記憶されてもよい。少なくとも一実施例では、DICOMリーダ3806がデータの抽出及び/又は記憶を終了したら、完了信号がパイプライン・マネージャ3712に通信されてもよい。少なくとも一実施例では、次いでパイプライン・マネージャ3712は、導入パイプライン3710A内の1つ又は複数の他のアプリケーション若しくはコンテナを開始してもよく、又はそれをコールしてもよい。
【0536】
少なくとも一実施例では、CT再構築3808のアプリケーションによる処理のためにデータ(たとえば、生のシノグラム・データ)が利用可能になると、CT再構築3808のアプリケーション及び/又はコンテナが実行されてもよい。少なくとも一実施例では、CT再構築3808は、生のシノグラム・データをキャッシュから読み取り、生のシノグラム・データから(たとえば、視覚化3816Bに示す)画像ファイルを再構築し、結果として生じる画像ファイルをキャッシュに記憶してもよい。少なくとも一実施例では、再構築の完了時、パイプライン・マネージャ3712は、再構築タスクが完了したことを通知されてもよい。少なくとも一実施例では、再構築が完了し、再構築された画像ファイルがキャッシュ(又は他のストレージ・デバイス)に記憶されると、器官セグメント化3810のアプリケーション及び/又はコンテナが、パイプライン・マネージャ3712によってトリガされてもよい。少なくとも一実施例では、器官セグメント化3810のアプリケーション及び/又はコンテナは、キャッシュから画像ファイルを読み取り、画像ファイルを推論に適したフォーマットに正規化又は変換し(たとえば、画像ファイルを機械学習モデルの入力解像度に変換し)、正規化された画像に対して推論を実行してもよい。少なくとも一実施例では、正規化された画像に対して推論を実行するために、器官セグメント化3810のアプリケーション及び/又はコンテナは、サービス3620に依存してもよく、パイプライン・マネージャ3712及び/又はアプリケーション・オーケストレーション・システム3728は、器官セグメント化3810のアプリケーション及び/又はコンテナによるサービス3620の使用を容易にしてもよい。少なくとも一実施例では、たとえば器官セグメント化3810のアプリケーション及び/又はコンテナは、AIサービス3718を利用して正規化画像に対して推論を実行してもよく、AIサービス3718はハードウェア3622(たとえば、AIシステム3724)を利用してAIサービス3718を実行してもよい。少なくとも一実施例では、推論の結果は(たとえば、視覚化3816Cに示す)マスク・ファイルであってもよく、このファイルはキャッシュ(又は他のストレージ・デバイス)に記憶されてもよい。
【0537】
少なくとも一実施例では、DICOMデータ及び/又はDICOMデータから抽出されたデータを処理するアプリケーションが処理を完了したら、パイプライン・マネージャ3712向けに信号が生成されてもよい。少なくとも一実施例では、次いでパイプライン・マネージャ3712は、DICOMライタ3812を実行してキャッシュ(又は他のストレージ・デバイス)から結果を読み取り、要求を生成した施設のユーザによる使用のため、結果をDICOMフォーマットに(たとえば、DICOM出力3814として)パッケージ化してもよい。少なくとも一実施例では、次いでDICOM出力3814は、DICOMアダプタ3702Bに送信されて、(たとえば、施設のDICOMビューワによる視聴のために)PACSサーバ3804に記憶するようにDICOM出力3814が準備されてもよい。少なくとも一実施例では、再構築及びセグメント化の要求に応答して、視覚化3816B及び3816Cが生成され、診断、リサーチ、及び/又は他の目的のためにユーザにとって利用可能にされてもよい。
【0538】
導入パイプライン3710Aでは連続したアプリケーションとして示されているが、CT再構築3808及び器官セグメント化3810のアプリケーションは、少なくとも一実施例において並列で処理されてもよい。少なくとも一実施例では、アプリケーションが互いに依存性を有しておらず、(たとえば、DICOMリーダ3806がデータを抽出した後に)アプリケーションごとにデータが利用可能である場合、アプリケーションは同時に、実質的に同時に、又は一部が重なって実行されてもよい。少なくとも一実施例では、2つ以上のアプリケーションが同様のサービス3620を要求する場合、システム3700のスケジューラを使用して、様々なアプリケーション間で計算又は処理のリソースのロード・バランシングが行われ、それらを分散させてもよい。少なくとも一実施例では、いくつかの実施例において、導入パイプライン3710Aのランタイムを短縮してリアルタイムの結果を提供するために、並列コンピューティング・プラットフォーム3730を使用してアプリケーションのための並列処理が実行されてもよい。
【0539】
少なくとも一実施例では、図39A図39Bを参照すると、導入システム3606は、画像処理、セグメント化、強調、AI、視覚化、及び推論などの異なる機能を、撮像デバイス(たとえば、CTスキャナ、X線機械、MRI機械など)、シーケンシング・デバイス、ゲノミクス・デバイス、及び/又は他のタイプのデバイスを用いて実行するための1つ又は複数の仮想機器として実装されてもよい。少なくとも一実施例では、システム3700は、ソフトウェア定義された導入パイプライン3710を含むことができる仮想機器の生成及び提供を可能にしてもよく、この導入パイプライン3710は、デバイスによって生成された生/未処理の入力データを受信し、処理済み/再構築済みのデータを出力してもよい。少なくとも一実施例では、仮想機器を表す導入パイプライン3710(たとえば、3710A及び3710B)は、機械学習モデルを利用することなどにより、知能をパイプラインに実装して、コンテナ化された推論サポートをシステムに提供してもよい。少なくとも一実施例では、仮想機器は、アプリケーションのインスタンスをそれぞれが含む任意の数のコンテナを実行してもよい。少なくとも一実施例では、リアルタイムの処理が望ましい場合などでは、仮想機器を表す導入パイプライン3710は静的であってもよく(たとえば、コンテナ及び/又はアプリケーションが設定されていてもよく)、一方他の実例では、仮想機器用のコンテナ及び/又はアプリケーションが、アプリケーション又はリソースのプール(たとえばコンテナ・レジストリ内)から(たとえば要求ごとに)選択されてもよい。
【0540】
少なくとも一実施例では、システム3700は、たとえば施設の放射線機械、撮像デバイス、及び/又は別のタイプのデバイスに隣接して導入された、又は他のやり方でそれらと通信するコンピューティング・システムにおいて、施設構内の1つ又は複数の仮想機器としてインスタンス化されてもよく、又は実行されてもよい。しかし少なくとも一実施例では、構内でのインストールは、(たとえば、撮像デバイスに統合されたコンピューティング・システム)デバイス自体のコンピューティング・システム内で、ローカルなデータセンタ(たとえば、構内のデータセンタ)で、及び/又はクラウド環境で(たとえば、クラウド3726で)インスタンス化又は実行されてもよい。少なくとも一実施例では、仮想機器として動作する導入システム3606は、いくつかの実例においてスーパーコンピュータ又は他のHPCシステムによってインスタンス化されてもよい。少なくとも一実施例では、構内でのインストールにより、リアルタイムの処理のために(たとえば、イーサネット(登録商標)を介したRFなど、高スループットのローカル通信インターフェースを介した)広帯域の使用が可能になる。少なくとも一実施例では、リアルタイム又はほぼリアルタイムの処理は、正確な診断及び分析のために即時の視覚化が期待又は必要とされる超音波デバイス又は他の撮像モダリティを仮想機器がサポートする場合に、特に有用なことがある。少なくとも一実施例では、ローカルな要求が構内の容量又は能力を超過するとき、クラウド・コンピューティング・アーキテクチャは、クラウド・コンピューティングのサービス・プロバイダ又は他の計算クラスタに対する動的バーストを実行することができる。少なくとも一実施例では、クラウド・アーキテクチャは、実装されると、訓練システム3604に関して本明細書に記載のニューラル・ネットワーク又は他の機械学習モデルを訓練するように調整されてもよい。少なくとも一実施例では、訓練パイプラインが定位置にあるとき、機械学習モデルは、それがサポートするデバイスからの追加データを処理するとき、継続的に学習及び改善してもよい。少なくとも一実施例では、仮想機器は、追加データ、新規データ、既存の機械学習モデル、及び/又は新規若しくは更新済みの機械学習モデルを使用して、継続的に改善されてもよい。
【0541】
少なくとも一実施例では、コンピューティング・システムは、本明細書に記載のハードウェア3622の一部又はすべてを含んでもよく、ハードウェア3622は、デバイス内、デバイスに結合され近位に位置するコンピューティング・デバイスの一部として、施設のローカル・データセンタ内、及び/又はクラウド3726内を含む複数のやり方のうちの任意のやり方で分散されてもよい。少なくとも一実施例では、導入システム3606及び関連付けられたアプリケーション又はコンテナは、ソフトウェアに(たとえば、アプリケーションの個別のコンテナ化インスタンスとして)生成されるので、仮想機器の挙動、動作、及び構成、並びに仮想機器によって生成される出力は、仮想機器がサポートするデバイスの生の出力を変える又は変更する必要なしに、望み通りに修正又はカスタマイズされることが可能である。
【0542】
少なくとも一実施例では、図38に描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図38に描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図38に描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスなどを実装するために利用される。
【0543】
図39Aは、少なくとも一実施例による、超音波デバイスをサポートする仮想器具の実例データ・フローを含む。少なくとも一実施例では、導入パイプライン3710Bは、システム3700のサービス3620のうちの1つ又は複数を利用してもよい。少なくとも一実施例では、導入パイプライン3710B及びサービス3620は、ローカルかクラウド3726のいずれかにおいて、システムのハードウェア3622を利用してもよい。少なくとも一実施例では、図示していないが、プロセス3900は、パイプライン・マネージャ3712、アプリケーション・オーケストレーション・システム3728、及び/又は並列コンピューティング・プラットフォーム3730によって促進されてもよい。
【0544】
少なくとも一実施例では、プロセス3900は、超音波デバイス3902から撮像データを受信することを含んでもよい。少なくとも一実施例では、撮像データは、DICOMフォーマット(又はRIS、CIS、REST準拠、RPC、生などのような他のフォーマット)でPACSサーバに記憶されてもよく、超音波デバイス3902用の仮想機器(たとえば仮想超音波)として選択又はカスタマイズされた導入パイプライン3710を通して処理するために、システム3700によって受信されてもよい。少なくとも一実施例では、撮像データは、撮像デバイス(たとえば、超音波デバイス3902)から直接受信されてもよく、仮想機器によって処理されてもよい。少なくとも一実施例では、撮像デバイスと仮想機器との間に通信可能に結合されたトランスデューサ又は他の信号変換器は、撮像デバイスによって生成された信号データを、仮想機器によって処理することができる画像データに変換してもよい。少なくとも一実施例では、生データ及び/又は画像データは、導入パイプライン3710Bのアプリケーション又はコンテナによって使用されるデータを抽出するために、DICOMリーダ3806に適用されてもよい。少なくとも一実施例では、DICOMリーダ3806は、アプリケーション又はコンテナによって使用されるデータを抽出、リサイズ、リスケーリング、及び/又は他のやり方で準備するためのサービス3620として(たとえば、計算サービス3716のうちの1つとして)、データ拡張ライブラリ3914(たとえば、NVIDIAのDALI(登録商標))を利用してもよい。
【0545】
少なくとも一実施例では、データが準備されると、再構築3906のアプリケーション及び/又はコンテナが実行されて、超音波デバイス3902からのデータが画像ファイルに再構築されてもよい。少なくとも一実施例では、再構築3906の後、又は再構築3906と同時に、検出3908のアプリケーション及び/又はコンテナが、異常検出、物体検出、特徴検出、及び/又はデータに関する他の検出タスクのために実行されてもよい。少なくとも一実施例では、再構築3906中に生成された画像ファイルは、検出3908中に使用されて、異常、物体、特徴などが識別されてもよい。少なくとも一実施例では、検出3908のアプリケーションは、推論エンジン3916を(たとえば、AIサービス3718のうちの1つとして)利用して、データについて推論を実行して検出を生成してもよい。少なくとも一実施例では、(たとえば、訓練システム3604からの)1つ又は複数の機械学習モデルは、検出3908のアプリケーションによって実行又はコールされてもよい。
【0546】
少なくとも一実施例では、再構築3906及び/又は検出3908が完了すると、これらのアプリケーション及び/又はコンテナからのデータ出力を使用して、ワークステーション又はディスプレイ端末に表示される視覚化3912(たとえば、グレースケール出力)などの視覚化3910が生成されてもよい。少なくとも一実施例では、視覚化により、超音波デバイス3902に対する導入パイプライン3710Bの結果を、技術者又は他のユーザが視覚化できるようになる。少なくとも一実施例では、視覚化3910は、システム3700のレンダリング構成要素3918(たとえば、視覚化サービス3720のうちの1つ)を利用することによって、実行されてもよい。少なくとも一実施例では、レンダリング構成要素3918は、2D、OpenGL、又はレイ・トレーシングのサービスを実行して、視覚化3912を生成してもよい。
【0547】
図39Bは、少なくとも一実施例による、CTスキャナをサポートする仮想器具の実例データ・フロー図を含む。少なくとも一実施例では、導入パイプライン3710Cは、システム3700のサービス3620のうちの1つ又は複数を利用してもよい。少なくとも一実施例では、導入パイプライン3710C及びサービス3620は、ローカルかクラウド3726のいずれかにおいて、システムのハードウェア3622を利用してもよい。少なくとも一実施例では、図示していないが、プロセス3920は、パイプライン・マネージャ3712、アプリケーション・オーケストレーション・システム3728、及び/又は並列コンピューティング・プラットフォーム3730によって促進されてもよい。
【0548】
少なくとも一実施例では、プロセス3920は、生データを生成するCTスキャナ3922を含んでもよく、この生データは、DICOMリーダ3806によって(たとえば、直接、PACSサーバ3804を介して、処理後になど)受信されてもよい。少なくとも一実施例では、(導入パイプライン3710Cによってインスタンス化された)仮想CTは、患者を監視するため(たとえば、患者動き検出AI3926)且つ/又はCTスキャナ3922の露出を(たとえば、露出制御AI3924を使用して)調節又は最適化するための、第1のリアルタイム・パイプラインを含んでもよい。少なくとも一実施例では、アプリケーションのうちの1つ又は複数(たとえば、3924及び3926)は、AIサービス3718などのサービス3620を利用してもよい。少なくとも一実施例では、露出制御AI3924のアプリケーション(又はコンテナ)及び/又は患者動き検出AI3926のアプリケーション(又はコンテナ)の出力は、CTスキャナ3922及び/又は技術者に対するフィードバックとして使用されて、露出(又はCTスキャナ3922の他の設定)が調節されてもよく、且つ/又は患者にあまり動かないように伝えられてもよい。
【0549】
少なくとも一実施例では、導入パイプライン3710Cは、CTスキャナ3922によって生成されるデータを分析するための非リアルタイム・パイプラインを含んでもよい。少なくとも一実施例では、第2のパイプラインは、CT再構築3808のアプリケーション及び/又はコンテナ、粗検出AI3928のアプリケーション及び/又はコンテナ、(たとえば、粗検出AI3928によってある特定の結果が検出された場合の)精検出AI3932のアプリケーション及び/又はコンテナ、視覚化3930のアプリケーション及び/又はコンテナ、及びDICOMライタ3812(及び/又はRIS、CIS、REST準拠、RPC、生などのような他のデータ・タイプライタ)のアプリケーション及び/又はコンテナを含んでもよい。少なくとも一実施例では、CTスキャナ3922によって生成された生データは、(仮想CT機器としてインスタンス化された)導入パイプライン3710Cのパイプラインに通されて、結果が生成されてもよい。少なくとも一実施例では、DICOMライタ3812からの結果は、表示のために送信されてもよく、且つ/又は技術者、開業医、若しくは他のユーザによって後で検索、分析、又は表示できるようにPACSサーバ3804に記憶されてもよい。
【0550】
少なくとも一実施例では、図39A図39Bに描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図39A図39Bに描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図39A図39Bに描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0551】
図40Aは、少なくとも一実施例による、機械学習モデルを訓練、再訓練、又は更新するためのプロセス4000のデータ・フロー図を図示する。少なくとも一実施例では、プロセス4000は、図37のシステム3700を非限定的な実例として使用して、実行されてもよい。少なくとも一実施例では、プロセス4000は、本明細書に記載のシステム3700のサービス3620及び/又はハードウェア3622を利用してもよい。少なくとも一実施例では、プロセス4000によって生成される精緻化モデル4012は、導入パイプライン3710内の1つ又は複数のコンテナ化アプリケーションのために、導入システム3606によって実行されてもよい。
【0552】
少なくとも一実施例では、モデル訓練3614は、新規訓練データ(たとえば、顧客データセット4006、及び/又は入力データに関連付けられた新規グラウンド・トゥルース・データなどの新規入力データ)を使用して、初期モデル4004(たとえば、事前訓練済みモデル)を再訓練又は更新することを含んでもよい。少なくとも一実施例では、初期モデル4004を再訓練又は更新するために、初期モデル4004の出力又は損失層がリセットされてもよく、削除されてもよく、且つ/又は更新済み若しくは新規の出力若しくは損失層と置換されてもよい。少なくとも一実施例では、初期モデル4004は、以前に微調整された、前の訓練から残っているパラメータ(たとえば、重み及び/又はバイアス)を有してもよく、それにより、訓練又は再訓練3614は、最初からモデルを訓練するほど長い時間がかからず、又は多くの処理を必要としなくても済む。少なくとも一実施例では、モデル訓練3614の間に、初期モデル4004のリセット又は置換された出力又は損失層を有することにより、パラメータは、新規の顧客データセット4006(たとえば、図36の画像データ3608)について予測を生成する際の出力又は損失層の精度に関連付けられた損失計算に基づき、新規データ・セットのために更新又は再調整されてもよい。
【0553】
少なくとも一実施例では、事前訓練済みモデル3706は、データ・ストア又はレジストリ(たとえば、図36のモデル・レジストリ3624)に記憶されてもよい。少なくとも一実施例では、事前訓練済みモデル3706は、少なくとも部分的に、プロセス4000を実行する施設とは異なる1つ又は複数の施設において訓練済みであってもよい。少なくとも一実施例では、異なる施設の患者、対象者、顧客のプライバシー及び権利を保護するために、事前訓練済みモデル3706は、構内で生成された顧客又は患者のデータを使用して、構内で訓練されたものであってもよい。少なくとも一実施例では、事前訓練済みモデル3706は、クラウド3726及び/又は他のハードウェア3622を使用して訓練されてもよいが、プライバシー保護された機密の患者データは、クラウド3726(又は他の構外のハードウェア)の任意の構成要素に転送できず、それらの構成要素によって使用されず、又はアクセス不可能であってもよい。少なくとも一実施例では、事前訓練済みモデル3706が2つ以上の施設からの患者データを使用して訓練される場合、事前訓練済みモデル3706は、各施設について個々に訓練されてから、別の施設からの患者若しくは顧客のデータについて訓練されてもよい。少なくとも一実施例では、顧客又は患者のデータが(たとえば、実験での使用を目的とした権利放棄などによって)プライバシー問題から解放されている場合、又は顧客若しくは患者のデータがパブリック・データ・セットに含まれる場合などには、任意の数の施設からの顧客又は患者のデータを使用して、データセンタ又は他のクラウド・コンピューティング・インフラストラクチャなど、構内及び/又は構外で事前訓練済みモデル3706が訓練されてもよい。
【0554】
少なくとも一実施例では、導入パイプライン3710で使用するアプリケーションを選択するとき、ユーザは、特定のアプリケーションで使用することになる機械学習モデルも選択することができる。少なくとも一実施例では、ユーザは、使用するモデルを有していないことがあり、したがって、ユーザはアプリケーションとともに使用する事前訓練済みモデル3706を選択してもよい。少なくとも一実施例では、事前訓練済みモデル3706は、(たとえば、患者の多様性、人口統計、使用される医療用撮像デバイスのタイプなどに基づき)ユーザの施設の顧客データセット4006について正確な結果を生成するように最適化されなくてもよい。少なくとも一実施例では、事前訓練済みモデル3706を、アプリケーションとともに使用するために導入パイプライン3710に導入する前に、事前訓練済みモデル3706は、それぞれの施設において使用するために更新、再訓練、及び/又は微調整されてもよい。
【0555】
少なくとも一実施例では、ユーザは、更新、再訓練、及び/又は微調整されることになる事前訓練済みモデル3706を選択してもよく、事前訓練済みモデル3706は、プロセス4000内でシステム3604を訓練するための初期モデル4004と呼ばれてもよい。少なくとも一実施例では、顧客データセット4006(たとえば、施設のデバイスによって生成された撮像データ、ゲノミクス・データ、シーケンシング・データ、又は他のタイプのデータ)を使用して、初期モデル4004について(限定することなく転送学習(transfer learning)を含んでもよい)モデル訓練3614が実行されて、精緻化モデル4012が生成されてもよい。少なくとも一実施例では、顧客データセット4006に対応するグラウンド・トゥルース・データが、訓練システム3604によって生成されてもよい。少なくとも一実施例では、グラウンド・トゥルース・データは、(たとえば、図36のラベル付けされたクリニック・データ3612として)施設において臨床医、科学者、医師、開業医によって、少なくとも部分的に生成されてもよい。
【0556】
少なくとも一実施例では、AI支援アノテーション3610がいくつかの実例において使用されて、グラウンド・トゥルース・データが生成されてもよい。少なくとも一実施例では、(たとえば、AI支援アノテーションSDKを使用して実装された)AI支援アノテーション3610は、機械学習モデル(たとえば、ニューラル・ネットワーク)を利用して、顧客データセットについて示唆又は予測されるグラウンド・トゥルース・データを生成してもよい。少なくとも一実施例では、ユーザ4010は、コンピューティング・デバイス4008上のユーザ・インターフェース(グラフィカル・ユーザ・インターフェース(GUI))内でアノテーション・ツールを使用してもよい。
【0557】
少なくとも一実施例では、ユーザ4010は、コンピューティング・デバイス4008を介してGUIと対話して、アノテーション又は自動アノテーションを編集又は微調整してもよい。少なくとも一実施例では、ポリゴン編集特徴を使用して、ポリゴンの頂点をより正確なロケーション又は微調整されたロケーションに移動させてもよい。
【0558】
少なくとも一実施例では、顧客データセット4006が、関連付けられたグラウンド・トゥルース・データを得ると、(たとえば、AI支援アノテーション、手動ラベリングなどからの)グラウンド・トゥルース・データが、モデル訓練3614中に使用されて、精緻化モデル4012が生成されてもよい。少なくとも一実施例では、顧客データセット4006は、初期モデル4004に任意の回数、適用されてもよく、グラウンド・トゥルース・データは、精緻化モデル4012について許容可能なレベルの精度が達成されるまで、初期モデル4004のパラメータを更新するために使用されてもよい。少なくとも一実施例では、精緻化モデル4012が生成されると、精緻化モデル4012は、医療用撮像データに対して1つ又は複数の処理タスクを実行するために、施設において1つ又は複数の導入パイプライン3710内に導入されてもよい。
【0559】
少なくとも一実施例では、精緻化モデル4012は、別の施設によって選択されることになるモデル・レジストリ3624の事前訓練済みモデル3706にアップロードされてもよい。少なくとも一実施例では、このプロセスは任意の数の施設において完了されてもよく、それにより精緻化モデル4012は、新規データセットについて任意の回数さらに精緻化されて、より普遍的なモデルが生成されてもよい。
【0560】
図40Bは、少なくとも一実施例による、事前訓練済みのアノテーション・モデルを用いてアノテーション・ツールを強化するためのクライアント・サーバのアーキテクチャ4032の実例の図である。少なくとも一実施例では、AI支援アノテーション・ツール4036は、クライアント・サーバのアーキテクチャ4032に基づきインスタンス化されてもよい。少なくとも一実施例では、撮像アプリケーションのアノテーション・ツール4036は、たとえば放射線医が器官及び異常を識別するのを支援してもよい。少なくとも一実施例では、撮像アプリケーションは、非限定的な実例として(たとえば、3DのMRI又はCTスキャンの)生画像4034において、特定の対象器官上の数少ない極値点をユーザ4010が識別するのを援助し、特定の器官の2Dスライスすべてについて自動アノテーション付けされた結果を受信するソフトウェア・ツールを含んでもよい。少なくとも一実施例では、結果は、訓練データ4038としてデータ・ストアに記憶されてもよく、(たとえば、限定することなく)訓練用のグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、コンピューティング・デバイス4008が、AI支援アノテーション3610のために極値点を送るとき、たとえば深層学習モデルがこのデータを入力として受信してもよく、セグメント化された器官又は異常の推論結果を返してもよい。少なくとも一実施例では、図40BのAI支援アノテーション・ツール4036Bなどの事前インスタンス化されたアノテーション・ツールは、たとえばアノテーション・モデル・レジストリに記憶された事前訓練済みモデル4042のセットを含むことができるアノテーション支援サーバ4040などのサーバに、APIコール(たとえば、APIコール4044)を行うことによって、拡張されてもよい。少なくとも一実施例では、アノテーション・モデル・レジストリは、特定の器官又は異常に対してAI支援アノテーションを実行するように事前訓練された事前訓練済みモデル4042(たとえば、深層学習モデルなどの機械学習モデル)を記憶してもよい。少なくとも一実施例では、これらのモデルは、訓練パイプライン3704を使用することにより、さらに更新されてもよい。少なくとも一実施例では、事前インストールされたアノテーション・ツールは、ラベル付けされた新規クリニック・データ3612が加えられるにつれて、経時的に改善されてもよい。
【0561】
1つ又は複数の実施例に関連付けられる推論及び/又は訓練動作を実行するために、論理715が使用される。論理715に関する詳細事項は、図7A及び/又は図7Bと併せて本明細書において提供される。
【0562】
少なくとも一実施例では、図40A図40Bに描かれる1つ又は複数のシステムは、把持プロポーザルのセットを生成することなど、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図40A図40Bに描かれる1つ又は複数のシステムは、輝度場デコーダ及び/又は把持デコーダの動作など、本明細書において考察される動作を実施するために利用される。少なくとも一実施例では、図40A図40Bに描かれる1つ又は複数のシステムは、図1図6に関連して説明されるような、1つ又は複数のシステム、技法、及び/又はプロセスを実装するために利用される。
【0563】
本開示の少なくとも一実施例は、以下の条項を考慮して説明されてもよい。
条項1. システムであって、
少なくとも1つのプロセッサと、
少なくとも1つのプロセッサによる実行に応答して、システムに、少なくとも
物体を描写する入力画像を得ることと、
物体に対応する潜在コードを処理するために、第1のニューラル・ネットワークを少なくとも使用することによって画像の第1のセットを生成することと、
画像の第1のセット及び入力画像に少なくとも部分的に基づき、潜在コードを更新することと、
潜在コードに少なくとも部分的に基づき、把持プロポーザルのセットを生成するために、第2のニューラル・ネットワークを使用することと、
第1のニューラル・ネットワーク及び潜在コードに少なくとも部分的に基づき、把持プロポーザルのセットから1つ又は複数の把持プロポーザルを選択することと
を行わせる命令を含む、少なくとも1つのメモリと
を備える、システム。
条項2. 少なくとも1つのメモリが、少なくとも1つのプロセッサによる実行に応答して、システムに、少なくとも
1つ又は複数の把持プロポーザルに少なくとも部分的に基づき、ロボットに物体を把持させる
さらなる命令を含む、条項1に記載のシステム。
条項3. 少なくとも1つのメモリが、少なくとも1つのプロセッサによる実行に応答して、システムに、少なくとも
潜在コードに少なくとも部分的に基づき、色及び密度のうちの1つ又は複数の予測を生成するために、第1のニューラル・ネットワークを使用することと、
色及び密度のうちの少なくとも1つ又は複数の予測を使用して、画像の第1のセットを生成することと
を行わせるさらなる命令を含む、条項1又は2に記載のシステム。
条項4. 少なくとも1つのメモリが、少なくとも1つのプロセッサによる実行に応答して、システムに、少なくとも
第1のニューラル・ネットワーク及び潜在コードを使用して、把持プロポーザルのセットに関連付けられる密度の1つ又は複数の予測を生成することと、
密度の1つ又は複数の予測に少なくとも部分的に基づき、1つ又は複数の把持プロポーザルを選択することと
を行わせるさらなる命令を含む、条項1から3までのいずれかに記載のシステム。
条項5. 第1のニューラル・ネットワーク及び第2のニューラル・ネットワークが、パラメータの同一のセットを利用する、条項1から4までのいずれかに記載のシステム。
条項6. 第1のニューラル・ネットワークがデコーダを備える、条項1から5までのいずれかに記載のシステム。
条項7. 方法であって、
物体を描写する入力画像を得ることと、
第1のニューラル・ネットワークに関連して生成された画像の第1のセット及び入力画像に少なくとも部分的に基づき、潜在コードを計算することと、
複数の把持プロポーザルを生成するために、少なくとも潜在コードを処理するために第2のニューラル・ネットワークを使用することと、
潜在コード及び複数の把持プロポーザルに関連付けられる座標のセットを処理するために、第1のニューラル・ネットワークを少なくとも使用することによって、複数の把持プロポーザルのうち、1つ又は複数の把持プロポーザルを決定することと
を含む、方法。
条項8. 1つ又は複数の把持プロポーザルを、物体を含む環境に関連付けられるロボットに提供することと、
1つ又は複数の把持プロポーザルによって示される配向に少なくとも部分的に基づき、環境においてロボットに物体を把持させることと
をさらに含む、条項7に記載の方法。
条項9. 点群及び複数の把持プロポーザルに少なくとも部分的に基づき、座標のセットを計算することと、
密度値のセットを計算するために、第1のニューラル・ネットワークを使用して、少なくとも座標のセットを処理することと、
密度値のセットに少なくとも部分的に基づき、1つ又は複数の把持プロポーザルを決定することと
をさらに含む、条項7又は8に記載の方法。
条項10. 入力画像の物体が、第1のカテゴリの物体であり、
第1のニューラル・ネットワーク及び第2のニューラル・ネットワークが、1つ又は複数のカテゴリの物体を描写する1つ又は複数の画像に関連して訓練される、条項7から9までのいずれかに記載の方法。
条項11. 複数の把持プロポーザルに関連付けられる1つ又は複数の密度値、及び閾値に少なくとも部分的に基づき、1つ又は複数の把持プロポーザルを決定すること
をさらに含む、条項7から10までのいずれかに記載の方法。
条項12. 1つ又は複数の勾配降下プロセスを通じて、潜在コードを計算すること
をさらに含む、条項7から11までのいずれかに記載の方法。
条項13. 非一時的なコンピュータ読取り可能媒体であって、コンピューティング・デバイスの少なくとも1つのプロセッサによって実行されると、コンピューティング・デバイスに、少なくとも
第1のニューラル・ネットワーク及び物体を描写する画像に少なくとも部分的に基づき、潜在コードを決定することと、
把持プロポーザルのセットを生成するために、少なくとも潜在コードを処理するために第2のニューラル・ネットワークを使用することと、
第1のニューラル・ネットワーク及び把持プロポーザルのセットに関連付けられる座標のセットに少なくとも部分的に基づき、把持プロポーザルのセットから把持プロポーザルのサブセットを選択することと
を行わせる命令を含む、非一時的なコンピュータ読取り可能媒体。
条項14. コンピューティング・デバイスの少なくとも1つのプロセッサによって実行されると、コンピューティング・デバイスに、少なくとも
把持プロポーザルのセットの把持プロポーザルに少なくとも部分的に基づき、ロボットに関連付けられる点群を少なくとも変換することによって、座標のセットの1つ又は複数の座標を計算すること
を行わせるさらなる命令を含む、条項13に記載の非一時的なコンピュータ読取り可能媒体。
条項15. コンピューティング・デバイスの少なくとも1つのプロセッサによって実行されると、コンピューティング・デバイスに、少なくとも
把持プロポーザルのサブセットの把持プロポーザルに少なくとも部分的に基づき、ロボット部品に物体を把持させること
を行わせるさらなる命令を含む、条項13又は14に記載の非一時的なコンピュータ読取り可能媒体。
条項16. コンピューティング・デバイスの少なくとも1つのプロセッサによって実行されると、コンピューティング・デバイスに、少なくとも
安定な把持の確率を示す1つ又は複数のスコアに少なくとも部分的に基づき、把持プロポーザルのセットから把持プロポーザルのサブセットを選択すること
を行わせるさらなる命令を含む、条項13から15までのいずれかに記載の非一時的なコンピュータ読取り可能媒体。
条項17. 第1のニューラル・ネットワークの1つ又は複数の層が、第2のニューラル・ネットワークの1つ又は複数の層と同一パラメータを含む、条項13から16までのいずれかに記載の非一時的なコンピュータ読取り可能媒体。
条項18. 把持プロポーザルのセットの第1の把持プロポーザルが、少なくともスコア及び回転行列を含む、条項13から17までのいずれかに記載の非一時的なコンピュータ読取り可能媒体。
条項19. コンピューティング・デバイスの少なくとも1つのプロセッサによって実行されると、コンピューティング・デバイスに、少なくとも
第1のニューラル・ネットワーク及び潜在コードを使用して1つ又は複数の画像を生成することと、
物体を描写する画像及び1つ又は複数の画像に少なくとも部分的に基づき、少なくとも損失を計算することによって、潜在コードを更新することと
を行わせるさらなる命令を含む、条項13から18までのいずれかに記載の非一時的なコンピュータ読取り可能媒体。
条項20. コンピューティング・デバイスの少なくとも1つのプロセッサによって実行されると、コンピューティング・デバイスに、少なくとも
1つ又は複数のグラフィックス・プロセッシング・ユニット(GPU)を使用して把持プロポーザルのセットを生成すること
を行わせるさらなる命令を含む、条項13から19までのいずれかに記載の非一時的なコンピュータ読取り可能媒体。
【0564】
少なくとも一実施例では、単一の半導体プラットフォームとは、単独で単体の半導体ベースの集積回路又はチップを指してもよい。少なくとも一実施例では、マルチ・チップ・モジュールは、オン・チップ動作をシミュレートする接続性が向上した状態で使用されてもよく、従来の中央処理装置(「CPU」)及びバスの実装形態の利用を大幅に改善する。少なくとも一実施例では、ユーザの希望に応じて、半導体プラットフォームとは別々に、又は半導体プラットフォームとの様々な組合せで、様々なモジュールがさらに設置されてもよい。
【0565】
少なくとも一実施例では、図13に戻って参照すると、機械読取り可能で実行可能なコード若しくはコンピュータ制御論理アルゴリズムの形のコンピュータ・プログラムが、メイン・メモリ1304及び/又は二次ストレージに記憶される。コンピュータ・プログラムは、1つ又は複数のプロセッサによって実行された場合に、少なくとも一実施例による様々な機能をシステム1300が実行できるようにする。少なくとも一実施例では、メモリ1304、ストレージ、及び/又は任意の他のストレージが、コンピュータ読取り可能媒体の考えられる実例である。少なくとも一実施例では、二次ストレージとは、フロッピー(登録商標)・ディスク・ドライブ、磁気テープ・ドライブ、コンパクト・ディスク・ドライブ、デジタル多用途ディスク(「DVD」:digital versatile disk)ドライブ、記録デバイス、ユニバーサル・シリアル・バス(「USB」)フラッシュ・メモリなどを表すハード・ディスク・ドライブ及び/若しくはリムーバブル・ストレージ・ドライブなどの任意の好適なストレージ・デバイス又はシステムを指してもよい。少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、CPU1302、並列処理システム1312、CPU1302と並列処理システム1312の両方の機能の少なくとも一部分を実現可能な集積回路、チップセット(たとえば、関連機能を実行するためのユニットとして機能し、販売されるように設計された集積回路のグループなど)、及び/又は集積回路の任意の好適な組合せの文脈において実装される。
【0566】
少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、汎用コンピュータ・システム、回路板システム、エンタテイメント目的専用のゲーム・コンソール・システム、及び特定用途システムなどの文脈において実装される。少なくとも一実施例では、コンピュータ・システム1300は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイス、モバイル・フォン・デバイス、テレビ、ワークステーション、ゲーム・コンソール、組み込みシステム、及び/又は任意の他のタイプの論理の形をとってもよい。少なくとも一実施例では、コンピュータ・システム1300は、図7A図40Bの任意のデバイスを含む、又は任意のデバイスを指す。
【0567】
少なくとも一実施例では、並列処理システム1312は、限定することなく、複数の並列処理ユニット(「PPU」)1314、及び関連メモリ1316を含む。少なくとも一実施例では、PPU1314は、相互接続1318及びスイッチ1320又はマルチプレクサを介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、並列処理システム1312は、計算タスクをPPU1314にわたって分配し、これは、たとえば複数のグラフィックス・プロセッシング・ユニット(「GPU」)のスレッド・ブロックにわたる計算タスクの分配の一部として、並列化可能とすることができる。少なくとも一実施例では、メモリは、PPU1314の一部又は全部にわたって共有され、(たとえば、読取り及び/又は書込みアクセスのために)アクセス可能であるが、こうした共有メモリは、PPU1314に常駐しているローカル・メモリ及びレジスタの使用に対して、性能に不利益をもたらすことがある。少なくとも一実施例では、PPU1314の動作は、_syncthreads()などのコマンドを使用することによって同期され、ここで(たとえば、複数のPPU1314にわたって動作している)ブロック内のすべてのスレッドが、進行前にコードのある一定の実行ポイントに到達する。
【0568】
少なくとも一実施例では、本明細書に記載の1つ又は複数の技法は、oneAPIプログラミング・モデルを利用する。少なくとも一実施例では、oneAPIプログラミング・モデルとは、様々なコンピュート・アクセラレータ・アーキテクチャと対話するためのプログラミング・モデルを指す。少なくとも一実施例では、oneAPIとは、様々なコンピュート・アクセラレータ・アーキテクチャと対話するように設計されたアプリケーション・プログラミング・インターフェース(API)を指す。少なくとも一実施例では、oneAPIプログラミング・モデルは、DPC++プログラミング言語を利用する。少なくとも一実施例では、DPC++プログラミング言語とは、データ並列プログラミング製造のための高次言語を指す。少なくとも一実施例では、DPC++プログラミング言語は、少なくとも部分的にC及び/又はC++プログラミング言語に基づいている。少なくとも一実施例では、oneAPIプログラミング・モデルは、カリフォルニア州サンタクララにあるインテルコーポレーションによって開発されたプログラミング・モデルなどの、プログラミング・モデルである。
【0569】
少なくとも一実施例では、oneAPI及び/又はoneAPIプログラミング・モデルは、様々なアクセラレータ、GPU、プロセッサ、及び/又はその変形のアーキテクチャと対話するために利用される。少なくとも一実施例では、oneAPIは、様々な機能性を実装するライブラリのセットを含む。少なくとも一実施例では、oneAPIは、少なくとも、oneAPI DPC++ライブラリ、oneAPIマス・カーネル・ライブラリ、oneAPIデータ・アナリティクス・ライブラリ、oneAPI深層ニューラル・ネットワーク・ライブラリ、oneAPIコレクティブ・コミュニケーション・ライブラリ、oneAPIスレッディング・ビルディング・ブロック、oneAPIビデオ処理ライブラリ、及び/又はその変形を含む。
【0570】
少なくとも一実施例では、oneDPLとも称されるoneAPI DPC++ライブラリは、DPC++カーネル・プログラミングを加速化するアルゴリズムと関数を実装するライブラリである。少なくとも一実施例では、oneDPLは、1つ又は複数の標準テンプレート・ライブラリ(STL)関数を実装する。少なくとも一実施例では、oneDPLは、1つ又は複数の並列STL関数を実装する。少なくとも一実施例では、oneDPLは、並列アルゴリズム、イテレータ、関数オブジェクト・クラス、レンジ・ベースのAPI、及び/又はその変形など、ライブラリ・クラスと関数のセットを用意する。少なくとも一実施例では、oneDPLは、C++標準ライブラリの1つ又は複数のクラス及び/又は関数を実装する。少なくとも一実施例では、oneDPLは、1つ又は複数の乱数ジェネレータ関数を実装する。
【0571】
少なくとも一実施例では、oneMKLとも称されるoneAPIマス・カーネル・ライブラリは、様々な数学関数及び/又は演算のために、様々な最適化及び並列化されたルーチンを実装するライブラリである。少なくとも一実施例では、oneMKLは、1つ又は複数の基本線形代数サブプログラム(BLAS:basic linear algebra subprogram)及び/又は線形代数パッケージ(LAPACK:linear algebra package)の密な線形代数ルーチンを実装する。少なくとも一実施例では、oneMKLは、1つ又は複数の疎なBLAS線形代数ルーチンを実装する。少なくとも一実施例では、oneMKLは、1つ又は複数の乱数ジェネレータ(RNG:random number generator)を実装する。少なくとも一実施例では、oneMKLは、ベクトルに対する数理演算用の1つ又は複数のベクトル数理(VM:vector mathematics)ルーチンを実装する。少なくとも一実施例では、oneMKLは、1つ又は複数の高速フーリエ変換(FFT:Fast Fourier Transform)関数を実装する。
【0572】
少なくとも一実施例では、oneDALとも称されるoneAPIデータ・アナリティクス・ライブラリは、様々なデータ分析適用及び分散計算を実装するライブラリである。少なくとも一実施例では、oneDALは、バッチ、オンライン、及び分散された計算の処理モードでの、データ・アナリティクスのための事前処理、変換、分析、モデリング、検証、及び意思決定のための様々なアルゴリズムを実装する。少なくとも一実施例では、oneDALは、様々なC++及び/又はJava(登録商標) API並びに1つ又は複数のデータ・ソースへの様々なコネクタを実装する。少なくとも一実施例では、oneDALは、従来のC++インターフェースへのDPC++API拡張を実装し、多様なアルゴリズムのGPU使用を可能にする。
【0573】
少なくとも一実施例では、oneDNNとも称されるoneAPI深層ニューラル・ネットワーク・ライブラリは、様々な深層学習関数を実装するライブラリである。少なくとも一実施例では、oneDNNは、様々なニューラル・ネットワーク、機械学習、及び深層学習関数、アルゴリズム、及び/又はその変形を実装する。
【0574】
少なくとも一実施例では、oneCCLとも称されるoneAPIコレクティブ・コミュニケーション・ライブラリは、深層学習及び機械学習ワークロードのための様々なアプリケーションを実装するライブラリである。少なくとも一実施例では、oneCCLは、メッセージ・パッシング・インターフェース(MPI:message passing interface)及びlibfabricなど、低次の通信ミドルウェアに構築される。少なくとも一実施例では、oneCCLは、優先順位付け、永続的演算、アウト・オブ・オーダ実行、及び/又はその変形など、深層学習特有の最適化のセットを可能にする。少なくとも一実施例では、oneCCLは、様々なCPU及びGPU関数を実装する。
【0575】
少なくとも一実施例では、oneTBBとも称されるoneAPIスレッディング・ビルディング・ブロック・ライブラリは、様々なアプリケーションのための様々な並列化プロセスを実装するライブラリである。少なくとも一実施例では、oneTBBは、ホストにおけるタスク・ベースの共有された並列プログラミングに利用される。少なくとも一実施例では、oneTBBは一般的な並列アルゴリズムを実装する。少なくとも一実施例では、oneTBBは同時実行(concurrent)コンテナを実装する。少なくとも一実施例では、oneTBBはスケーラブル・メモリ・アロケータを実装する。少なくとも一実施例では、oneTBBはwork-stealingタスク・スケジューラを実装する。少なくとも一実施例では、oneTBBは低次同期プリミティブを実装する。少なくとも一実施例では、oneTBBは、コンパイラ独立的であり、GPU、PPU、CPU、及び/又はその変形など、様々なプロセッサで使用することができる。
【0576】
少なくとも一実施例では、oneVPLとも称されるoneAPIビデオ処理ライブラリは、1つ又は複数のアプリケーションでビデオ処理を加速化するために利用される。少なくとも一実施例では、oneVPLは、様々なビデオのデコード、エンコード、及び処理関数を実装する。少なくとも一実施例では、oneVPLは、CPU、GPU、及び他のアクセラレータでのメディア・パイプライン用に、様々な関数を実装する。少なくとも一実施例では、oneVPLは、メディア中心的及びビデオ・アナリティクス・ワークロードにおける、デバイス・ディスカバリ及び選択を実装する。少なくとも一実施例では、oneVPLは、ゼロ・コピー・バッファ共有のためのAPIプリミティブを実装する。
【0577】
少なくとも一実施例では、oneAPIプログラミング・モデルは、DPC++プログラミング言語を利用する。少なくとも一実施例では、DPC++プログラミング言語は、限定することなく、デバイス・コードを定義して、デバイス・コードとホスト・コードとを区別するための、CUDAメカニズムの機能的に類似のバージョンを含むプログラミング言語である。少なくとも一実施例では、DPC++プログラミング言語は、CUDAプログラミング言語の機能性のサブセットを含むことができる。少なくとも一実施例では、1つ又は複数のCUDAプログラミング・モデル動作は、DPC++プログラミング言語を使用したoneAPIプログラミング・モデルを使用して実行される。
【0578】
少なくとも一実施例では、本明細書に記載の任意のアプリケーション・プログラミング・インターフェース(API)は、コンパイラ、インタプリタ、又は他のソフトウェア・ツールによって、1つ又は複数の命令、演算、又は任意の他の信号にコンパイルされる。少なくとも一実施例では、コンパイルは、ソース・コードから、1つ又は複数の機械実行可能な命令、演算、及び他の信号を生成することを含む。少なくとも一実施例では、1つ又は複数の命令、演算、及び他の信号にコンパイルされたAPIは、実行されると、グラフィックス・プロセッサ2800、グラフィックス・コア1800、並列プロセッサ2000、プロセッサ2300、プロセッサ・コア2300、又は本明細書にさらに記載の任意の他の論理回路など、1つ又は複数のプロセッサに、1つ又は複数のコンピューティング動作を実行させる。
【0579】
本明細書に記載の実例の実施例は、CUDAプログラミング・モデルに関することがあるが、本明細書に記載の技法は、HIP、oneAPI、及び/又はその変形など、任意の好適なプログラミング・モデルで利用することができることに留意されたい。
【0580】
他の変形形態は、本開示の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の1つ又は複数の開示された形に本開示を限定する意図はなく、その反対に、添付の特許請求の範囲に定義される開示の趣旨及び範囲に入るすべての修正形態、代替的な構成、及び等価物を網羅することを意図していることが理解されるべきである。
【0581】
開示される実施例を説明する文脈において(特に、以下の特許請求の範囲の文脈において)「a」及び「an」及び「the」という用語、並びに同様の指示語を使用することは、本明細書に別段の記載のない限り、又は文脈によって明らかに否定されない限り、単数と複数の両方を網羅すると解釈されるべきであり、用語の定義であると解釈されるべきではない。「備える(comprising)」、「有する(having)」、「含む(including)」、「収容する(containing)」という用語は、別段の記載のない限り、オープンエンドの用語(「含むが、これに限定されない」を意味する)と解釈される。「接続される」は、修飾されずに物理的接続を指している場合には、何か介在するものがあったとしても、部分的に又は完全に中に収容される、取り付けられる、又は互いに接合されるものとして解釈される。本明細書において値の範囲を詳述することは、本明細書において別段の記載がない限り、またそれぞれ別々の値が、本明細書に個々に詳述されているかのように明細書に組み込まれていない限り、範囲内に含まれるそれぞれ別々の値を個々に参照する簡潔な方法として機能することを単に意図しているにすぎない。少なくとも一実施例では、「セット」(たとえば、「アイテムのセット」)又は「サブセット」という用語の使用は、文脈によって別段の記載がない、又は否定されていない限り、1つ又は複数の部材を備える空ではない集合として解釈されるべきである。さらに、文脈によって別段の記載がない、又は否定されていない限り、対応するセットの「サブセット」という用語は、対応するセットの適切なサブセットを必ずしも指すのではなく、サブセットと対応するセットは等しくてもよい。
【0582】
「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つであるが、明示的に、又は文脈によって示されている場合にはそれより多くてもよい。さらに、別段の記載のない、又は文脈からそうでないことが明らかでない限り、「~に基づく」という言い回しは、「少なくとも部分的に~に基づく」を意味し、「~だけに基づく」を意味しない。
【0583】
本明細書に記載のプロセスの動作は、本明細書に別段の記載のない、又は文脈によって明確に否定されない限り、任意の好適な順序で実行することができる。少なくとも一実施例では、本明細書に記載のプロセス(又はその変形及び/又は組合せ)などのプロセスは、実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実行され、1つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行されるコード(たとえば、実行可能な命令、1つ若しくは複数のコンピュータ・プログラム、又は1つ若しくは複数のアプリケーション)として実装される。少なくとも一実施例では、コードは、たとえば1つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形で、コンピュータ読取り可能ストレージ媒体に記憶される。少なくとも一実施例では、コンピュータ読取り可能ストレージ媒体は、一時的な信号(たとえば、伝播する一時的な電気若しくは電磁送信)を除外するが、一時的な信号のトランシーバ内の非一時的なデータ・ストレージ回路(たとえば、バッファ、キャッシュ、及びキュー)を含む非一時的なコンピュータ読取り可能ストレージ媒体である。少なくとも一実施例では、コード(たとえば、実行可能コード又はソース・コード)は、1つ又は複数の非一時的なコンピュータ読取り可能ストレージ媒体のセットに記憶され、このストレージ媒体には、コンピュータ・システムの1つ又は複数のプロセッサによって実行されたときに(すなわち、実行された結果として)、コンピュータ・システムに本明細書に記載の動作を実行させる実行可能命令が記憶されている(又は、実行可能命令を記憶するための他のメモリを有する)。少なくとも一実施例では、非一時的なコンピュータ読取り可能ストレージ媒体のセットは、複数の非一時的なコンピュータ読取り可能ストレージ媒体を備え、複数の非一時的なコンピュータ読取り可能ストレージ媒体の個々の非一時的なストレージ媒体のうちの1つ又は複数には、すべてのコードがないが、複数の非一時的なコンピュータ読取り可能ストレージ媒体は、集合的にすべてのコードを記憶している。少なくとも一実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行され、たとえば、非一時的なコンピュータ読取り可能ストレージ媒体は命令を記憶し、メインの中央処理装置(「CPU」)は一部の命令を実行し、グラフィックス・プロセッシング・ユニット(「GPU」)は他の命令を実行する。少なくとも一実施例では、コンピュータ・システムの異なる構成要素は、別々のプロセッサを有し、異なるプロセッサは、命令の異なるサブセットを実行する。
【0584】
少なくとも一実施例では、算術論理演算ユニットは、1つ又は複数の入力を受け取って結果を作り出す、組合せ論理回路のセットである。少なくとも一実施例では、算術論理演算ユニットは、加算、減算、又は乗算など、数学演算を実施するためにプロセッサによって使用される。少なくとも一実施例では、算術論理演算ユニットは、論理AND/OR、又はXORなど、論理演算を実施するために使用される。少なくとも一実施例では、算術論理演算ユニットは、ステートレスであり、論理ゲートを形成するように配置された半導体トランジスタなど、物理的なスイッチング部品から作られる。少なくとも一実施例では、算術論理演算ユニットは、関連付けられるクロックを用いてステートフルな論理回路として内部的に動作することができる。少なくとも一実施例では、算術論理演算ユニットは、関連レジスタ・セットに内部状態が保持されない非同期論理回路として構築することができる。少なくとも一実施例では、算術論理演算ユニットは、プロセッサの1つ又は複数のレジスタに記憶されたオペランドを組み合わせて、プロセッサによって別のレジスタ又はメモリ場所に記憶することができる出力を作り出すために、プロセッサによって使用される。
【0585】
少なくとも一実施例では、プロセッサによって取り出された命令の処理の結果として、プロセッサは、1つ又は複数の入力又はオペランドを算術論理ユニットに提示し、算術論理ユニットの入力に与えられた命令コードに少なくとも部分的に基づき、算術論理ユニットに結果を作り出させる。少なくとも一実施例では、プロセッサによってALUに与えられる命令コードは、プロセッサによって実行される命令に少なくとも部分的に基づいている。少なくとも一実施例では、ALU中の組合せ論理は、入力を処理し、プロセッサ内でバスに配置される出力を作り出す。少なくとも一実施例では、プロセッサは、プロセッサがクロックすることによって、ALUが作り出した結果が所望の場所に送り出されるように、宛先レジスタ、メモリ場所、出力デバイス、又は出力バスにおける出力記憶場所を選択する。
【0586】
本出願の範囲では、算術論理ユニット、すなわちALUという用語は、結果を作り出すためにオペランドを処理する、あらゆる計算論理回路を称するために使用される。たとえば、本文書では、ALUという用語は、浮動小数点ユニット、DSP、テンソル・コア、シェーダ・コア、コプロセッサ、又はCPUを指すことができる。
【0587】
少なくとも一実施例では、上記で開示されるシステム及び/又はプロセッサの1つ又は複数のコンポーネントは、1つ又は複数のCPU、ASIC、GPU、FPGA、或いはたとえば画像をアップスケールするためのアップスケーラ若しくはアップサンプラ、画像を共にブレンド、ミックス若しくは加えるための画像ブレンダ若しくは画像ブレンダ・コンポーネント、画像をサンプリングするためのサンプラ(たとえば、DSPの一部として)、画像を(たとえば、低解像画像から高解像画像に)アップスケールするためにアップスケーラを実行するように構成されたニューラル・ネットワーク回路を含む、他のハードウェア、回路、又は集積回路コンポーネント、或いは画像、フレーム、又はビデオを修正又は生成してその解像度、サイズ、又はピクセルを調節する他のハードウェアと通信することができる;上記で開示されるシステム及び/又はプロセッサの1つ又は複数のコンポーネントは、本開示で説明されるコンポーネントを使用して、画像を生成又は修正する方法、動作、又は命令を実行することができる。
【0588】
したがって、少なくとも一実施例では、コンピュータ・システムは、本明細書に記載のプロセスの動作を単独で又は集合的に実行する1つ又は複数のサービスを実装するように構成され、こうしたコンピュータ・システムは、動作の実行を可能にする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも一実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例では、異なるやり方で動作する複数のデバイスを備える分散型のコンピュータ・システムであり、それにより単一のデバイスがすべての動作を実行しないように分散型のコンピュータ・システムが本明細書に記載の動作を実行する。
【0589】
本明細書に提供されるあらゆる実例、又は例示的な言葉(たとえば、「など」)の使用は、本開示の実施例をより明らかにすることだけを意図しており、別段の主張のない限り、本開示の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本開示の実践に不可欠なものとして示すと解釈されるべきではない。
【0590】
本明細書に引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることがあたかも個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
【0591】
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用されてもよい。これらの用語は、互いに同義語として意図されていない場合があることを理解すべきである。むしろ、特定の実例では、「接続される」又は「結合される」は、2つ以上の要素が物理的又は電気的に互いに直接又は間接的に接触していることを示すために使用されてもよい。また「結合される」は、2つ以上の要素が直接互いに接触していないが、なお互いに連動又は相互作用することを意味してもよい。
【0592】
別段の具体的な記載のない限り、明細書全体を通して「処理する」、「コンピューティング」、「計算する」、又は「判定する」などの用語は、コンピューティング・システムのレジスタ及び/又はメモリ内の、電子的などの物理的な量として表されるデータをコンピューティング・システムのメモリ、レジスタ、又は他のそのような情報ストレージ・デバイス、送信デバイス、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータになるよう操作及び/又は変換するコンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスの行為及び/又はプロセスを指すことが理解されよう。
【0593】
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データを、レジスタ及び/又はメモリに記憶することができる他の電子データに変換する任意のデバイス、又はデバイスの一部分を指してもよい。非限定的な実例として、「プロセッサ」は、CPU又はGPUであってもよい。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備えてもよい。本明細書で使用する「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及び知的エージェントなど、経時的にワークを実行するソフトウェア及び/又はハードウェアのエンティティを含んでもよい。また、各プロセスは、命令を直列で又は並列で連続的に又は断続的に実行するための複数のプロセスを指してもよい。少なくとも一実施例では、「システム」及び「方法」という用語は、1つ又は複数の方法をシステムが具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
【0594】
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及することができる。少なくとも一実施例では、アナログ・データ及びデジタル・データを得る、取得する、受信する、又は入力するプロセスは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々なやり方で実現することができる。少なくとも一実施例では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。少なくとも一実施例では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。少なくとも一実施例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することができる。様々な実例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース若しくはプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
【0595】
本明細書の説明は、記載した技法の実例の実装形態について述べているが、記載した機能を実装するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、説明を目的として、役割の具体的な分配が定義され得るが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
【0596】
さらに、主題は、構造的特徴及び/又は方法論的動作に特有の言語で説明されてきたが、添付の特許請求の範囲で特許請求される主題は、説明した特有の特徴又は動作に必ずしも限定されないことが理解されるべきである。むしろ、特有の特徴及び動作は、特許請求の範囲を実装する例示的な形として開示されている。
図1
図2
図3
図4
図5
図6
図7A
図7B
図8
図9
図10A
図10B
図10C
図10D
図11
図12
図13
図14
図15A
図15B
図15C
図15D
図15E
図15F
図16
図17A
図17B
図18A
図18B
図19
図20A
図20B
図20C
図20D
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31A
図31B
図32
図33
図34
図35
図36
図37
図38
図39A
図39B
図40A
図40B
【外国語明細書】