JP2023507059A - 再帰ニューラル・ネットワークのためのapi - Google Patents
再帰ニューラル・ネットワークのためのapi Download PDFInfo
- Publication number
- JP2023507059A JP2023507059A JP2022524571A JP2022524571A JP2023507059A JP 2023507059 A JP2023507059 A JP 2023507059A JP 2022524571 A JP2022524571 A JP 2022524571A JP 2022524571 A JP2022524571 A JP 2022524571A JP 2023507059 A JP2023507059 A JP 2023507059A
- Authority
- JP
- Japan
- Prior art keywords
- neural network
- recurrent neural
- processor
- memory
- tensor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Probability & Statistics with Applications (AREA)
- Devices For Executing Special Programs (AREA)
- Air Bags (AREA)
- Stored Programmes (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
再帰ニューラル・ネットワークを実装するための装置、システム、及び技法。少なくとも一実施例では、アプリケーション・プログラミング・インターフェースが、グラフ定義及び再帰属性を含む1つ又は複数のAPIコールを受け取り、グラフ定義に基づいて再帰ニューラル・ネットワークを実行する。
Description
本出願は、「API FOR RECURRENT NEURAL NETWORKS」という名称の2019年12月18日に出願された米国特許出願第16/719,718号の優先権を主張し、その全内容が、全体として及び全ての目的のために参照により本明細書に組み込まれる。
少なくとも一実施例は、再帰ニューラル・ネットワークを実装するためのアプリケーション・プログラミング・インターフェースに関する。
再帰ニューラル・ネットワークを実行するためのコードは複雑であり得、非効率なコードになり得る。再帰ニューラル・ネットワークを実装するためのアプリケーション・プログラミング・インターフェース(「API」)は改善され得る。
再帰ニューラル・ネットワークのためのAPIを提供する。
図1は、少なくとも一実施例による、再帰ニューラル・ネットワークを実行する実例を示す。
少なくとも一実施例では、再帰ニューラル・ネットワークを実行するための実例のプロセス100は、アプリケーション・プログラミング・インターフェースの利用を含む。少なくとも一実施例では、グラフ・ベースのアプリケーション・プログラミング・インターフェースが、ニューラル・ネットワーク構造を表すためのグラフを定義するための関数を含む。少なくとも一実施例では、テンソル及びこれらのテンソル上で動作する動作がグラフに追加される。少なくとも一実施例では、動作の実例は、畳み込み、汎用行列乗算(「GEMM」)、ポイントワイズ動作、及びアクティブ化などの動作を含む。少なくとも一実施例では、グラフ定義に関連する1つ又は複数のテンソルは、入力テンソルとマークされる。少なくとも一実施例では、グラフ定義に関連する1つ又は複数のテンソルは、出力テンソルとマークされる。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、入れ子のグラフを定義するための関数を含む。実施例では、グラフは、前記プログラミング・インターフェースの関数を使用して別のグラフに追加されることが可能である。
少なくとも一実施例では、グラフは、ノード及び関連するエッジを備える。少なくとも一実施例では、ノードは、動作及びテンソルに関連付けられる。少なくとも一実施例では、前記動作は、畳み込み、汎用行列乗算(「GEMM」)、ポイントワイズ動作、及びアクティブ化などの動作を含む。少なくとも一実施例では、前記テンソルは、1つ又は複数の動作によって参照されるデータを表す。少なくとも一実施例では、グラフ・ノードに関連するエッジは、ノード間のデータ・フローに対応する。
少なくとも一実施例では、グラフは、再帰属性110をグラフに関連付けることによって再帰ニューラル・ネットワークを表すために作られる。少なくとも一実施例では、前記グラフは、入れ子のグラフである。少なくとも一実施例では、グラフに再帰特性を関連付けることは、前記グラフの再帰又は前記グラフの属性のループを効果的に行う。少なくとも一実施例では、アプリケーション・プログラミング・インターフェースにおける再帰特性の使用は、whileループの使用、又は同様のプログラミング構造に対する技術的な長所をもたらし、これは、whileループのヘッダ、ボディ、及びexit部分を表すために、別々のグラフの構築を必要とし得る。
少なくとも一実施例では、再帰属性は、実施するべき反復の数を表し得るトリップ・カウントに関連付けられる。少なくとも一実施例では、トリップ・カウントは、スカラ値又はスカラ・テンソルのうちの少なくとも1つを含む。少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、スカラ・テンソルを取り、再帰グラフのためのループ・カウントとしてこれを登録する。少なくとも一実施例では、トリップ・カウントが、不変整数タイプのスカラ整数又はスカラ・テンソルなどの不変値として示される場合、コンパイル時間におけるトリップ・カウントは、関連する再帰グラフの反復の数を決定するために使用される。
少なくとも一実施例では、可変長再帰ニューラル・ネットワークをサポートするために、アプリケーション・プログラミング・インターフェースは、あらゆる反復の後に値が計算されるテンソルを取る。少なくとも一実施例では、ブール型のテンソルが使用される。少なくとも一実施例では、前記テンソルが真と評価する場合、別の反復が発生し、偽の場合、関連するループの評価は終了する。少なくとも一実施例では、前記テンソルは、制御テンソルとして表現される。
少なくとも一実施例では、トリップ・カウントは、明示的に指定されない。少なくとも一実施例では、再帰グラフのためのトリップ・カウントは、前記再帰グラフへの入力シーケンスの外形寸法(outer dimension)に等しいと仮定される。
少なくとも一実施例では、再帰ニューラル・ネットワークを実行するための実例のプロセス100は、定義フェーズ102及び実行フェーズ104を備える。
実施例では、実例のプロセス100は、1つ又は複数のグラフが定義される定義フェーズ102を含む。少なくとも一実施例では、グラフは、入力層104、隠れ層106、及び出力層108の1つ又は複数を備える。少なくとも一実施例では、入力層104、隠れ層106、及び出力層108のいずれか1つがグラフを構成する。少なくとも一実施例では、再帰属性110は、グラフに関連付けられる。少なくとも一実施例では、再帰属性110は、トリップ・カウントに関連付けられる。
実施例では、実例のプロセス100は、実行フェーズ104を備える。少なくとも一実施例では、再帰ニューラル・ネットワークは、入力のシーケンスをとり、ここで、入力シーケンスの要素tが、対応するグラフの対応する反復tにおいて使用される。グラフの実行は、最終的な反復によって生み出された出力を含む、出力の対応するシーケンスを生成し得る。
少なくとも一実施例では、反復属性は、再帰グラフの反復との関連付けを示すためにテンソルに関連付けられる。少なくとも一実施例では、反復属性との関連付けは、テンソルへのアクセスが、所与の反復において、前記反復に対応するスライスに限定されることを示す。少なくとも一実施例では、反復に関連するスライスは、固定された外形寸法によって定義されたスライスに対応し、このようなスライスは、反復tの間に、前記外形寸法の要素tによって定義される。少なくとも一実施例では、アクセスへの前記限定は、現在の反復インデックスと一致しない要素を読み取る又は書き込むために、前記実施例のアプリケーション・プログラミング・インターフェース及び/又はコンパイラによって課された制限に基づいて、前記実施例がこれを不可能にするようなものである。少なくとも一実施例では、他の要素へのアクセスは可能にされるが、制御されるか別のやり方で限定される。少なくとも一実施例では、不変のオフセットが可能にされる。たとえば、少なくとも一実施例では、不変のオフセットは、アプリケーション・プログラミング・インターフェースを介して指定され、前の反復からのデータへのアクセスを許可するものと解釈される。
少なくとも一実施例では、反復属性は、正又は逆など、反復の方向を指示し得る。少なくとも一実施例では、反復属性は、転置属性に関連付けられ得る。
少なくとも一実施例では、再帰ニューラル・ネットワークは、再帰データに関連付けられる。たとえば、再帰ニューラル・ネットワークは、隠れ状態を有し得、長短期記憶「LSTM」)は、追加のセル状態を有し得る。少なくとも一実施例では、再帰データは、典型的には、反復tにおいて読み取られ、この同じ反復において新しい値で更新され、反復t+1において再び読み取られる。少なくとも一実施例では、再帰データ・テンソルは、隠れ又はセル状態に関連することを識別するために、入力又はライブインとマークされる。
少なくとも一実施例では、コンパイラは、出力データを識別する。少なくとも一実施例では、再帰テンソルは、再帰グラフのための出力ではないが、その代わりに、反復全体のみの出力である。たとえば、いくつかのLSTM’sのセル状態は、反復全体の出力として機能するが、再帰グラフのための出力ではない、再帰テンソルに格納され得る。
少なくとも一実施例では、実行フェーズ104は、ネットワークへの入力が前のネットワークの出力に基づく対応するニューラル・ネットワーク122、124、126への、定義された再帰ニューラル・ネットワーク120のアンローリングを含む。少なくとも一実施例では、実行フェーズ104は、その後のニューラル・ネットワーク124に供給される出力を生成するための、入力の初期セットに基づく、第1のアンロールされたニューラル・ネットワーク122の評価を含む。このニューラル・ネットワーク124からの出力は、次いで、必須の数の反復が完了されるまで、その後のニューラル・ネットワーク126に入力として供給される、などである。
図2は、少なくとも一実施例による、アプリケーション・プログラミング・インターフェースを使用して再帰ニューラル・ネットワークを定義及び実行するためのアプリケーション・プログラミング・インターフェースの実例200を示す。
少なくとも一実施例では、ソース・コード202は、再帰ニューラル・ネットワークを実装するためにアプリケーション・プログラミング・インターフェースによって定義された関数の呼出しを含む。少なくとも一実施例では、ソース・コード202は、API定義204を参照する。少なくとも一実施例では、API定義204は、関連アプリケーション・プログラミング・インターフェース関数の定義を提供することができる、ヘッダ・ファイル、又は他のファイル若しくはメタデータなどの、追加のソース・コードを含み得る。
少なくとも一実施例では、API定義204は、graph_create、create_operation、create_sensor、set_graph、set_recurrent、set_recurrent_count_tensor、及びset_recurrent_control_tensor、set_input、及びset_outputなどの関数の1つ又は複数を備える。
少なくとも一実施例では、ソース・コード202によって定義された命令の中間表現208を生成するために、語彙及び意味論分析206がコンパイラによって実施される。少なくとも一実施例では、中間表現208は、実行可能命令214へのその後のトランスレーションを容易にするフォーマットで、対応するソース・コード202を表す。
少なくとも一実施例では、コンパイラは、中間表現208を最適化して、最適化された表現210を生成する。少なくとも一実施例では、最適化された表現210は、対応するソース・コード202で記述されるが、性能を改善するために並べ替えられるか再構築された、プログラムの機能的同等物を表す。少なくとも一実施例では、最適化は、ループ融合、ループ分裂、ループ・アンローリング、データフロー分析、並列化、自動ベクトル化などの1つ又は複数を含む。これらの実例は、例証的であることを意図し、したがって、提供された具体例を含むものに、任意の潜在的な実施例の範囲を限定するように解釈されるべきではない。
少なくとも一実施例では、コンパイラは、最適化された表現210から実行可能命令214を生成する。少なくとも一実施例では、前記コンパイラは、APIライブラリ212において定義されたものに基づいて又はこれらを含む、実行可能命令214も生成する。少なくとも一実施例では、APIライブラリ212は、API定義204において記述された関数を実装する中間又は実行可能命令を備える。
少なくとも一実施例では、実行可能命令214は、互換性のあるコンピューティング・システムによって実行される。少なくとも一実施例では、実行可能命令214の実行は、ソース・コード202において提供された命令に従って、再帰ニューラル・ネットワークの定義及び評価をもたらす。少なくとも一実施例では、前記評価は、図2に関してまさに記述された様々な技法に基づいて最適化される。
図3は、少なくとも一実施例による、再帰ニューラル・ネットワークの実行中のテンソルへの制限されたアクセスの実例300を示す。少なくとも一実施例では、実例310において、再帰ニューラル・ネットワークが、アプリケーション・プログラミング・インターフェースの実施例を介して定義されたグラフに基づいて実行される。少なくとも一実施例では、前記定義は、前記グラフと再帰特性との間の関連付け、及びテンソル302との関連付けを含む。少なくとも一実施例では、テンソル302は、入力テンソルである。少なくとも一実施例では、テンソル302は、入力テンソル、出力テンソル、隠れ状態を格納するためのテンソル、又はセル状態を格納するためのテンソルのうちの少なくとも1つである。
少なくとも一実施例では、テンソル・アクセス限定306は、テンソル302へのアクセスが、所与の反復において、現在の反復に対応するスライス304に限定されるように課される。たとえば、図3において、グラフの反復tは、アンロールされたニューラル・ネットワーク308によって表される。アンロールされたニューラル・ネットワーク308の評価中、テンソル302へのアクセスは、テンソル302の外形寸法に対応するスライス304に限定され、このようなスライスは、反復tの間、前記外形寸法の要素tによって定義される。少なくとも一実施例では、テンソル・アクセス限定306は、現在の反復tと一致しない要素の読取り又は書込みを防ぐため、アプリケーション・プログラミング・インターフェース及び/又はコンパイラによって課される。少なくとも一実施例では、他の要素へのアクセスは、たとえば不変のオフセットを指定することによって、限定されるが可能にされる。たとえば、少なくとも一実施例では、不変のオフセットは、アプリケーション・プログラミング・インターフェースを介して指定され、反復t-1などの、前の反復からのデータへのアクセスを許可するものと解釈される。
図4は、少なくとも一実施例による、再帰ニューラル・ネットワークを定義及び実行するためのプロセスの実例を示す。少なくとも一実施例では、再帰ニューラル・ネットワークを定義及び実行する例400は、図4に描写された要素を備える。ステップのシーケンスとして描写されているが、描写されたシーケンスは、潜在的な実施例の範囲を、描写されたシーケンスに適合する実施例だけに限定するものと解釈されるべきではない。たとえば、論理的に必要な場合を除いて、描写されたステップは、並列に再配列又は実施されてもよい。少なくともいくつかの実施例では、ある特定のステップが省略されることがある。少なくともいくつかの実施例では、追加のステップが追加されることがある。
少なくとも一実施例では、402において、グラフの構造がニューラル・ネットワークに対応するようにグラフが定義される。たとえば、グラフは、ニューラル・ネットワークの入力、隠れ、及び出力層を構成するノードで定義され得る。
少なくとも一実施例では、404において、再帰特性が、定義されたグラフに関連付けられる。少なくとも一実施例では、404において、対応するトリップ・カウントも、前記定義されたグラフに関連付けられる。少なくとも一実施例では、前記トリップ・カウントは、スカラ値のテンソルを備える。少なくとも一実施例では、前記定義されたグラフは、トリップ・カウントの代わりに制御テンソルに関連付けられる。少なくとも一実施例では、トリップ・カウントも制御テンソルも供給されず、その代わりに、トリップ・カウントは、入力テンソルの外形寸法のサイズに基づいて推測される。
少なくとも一実施例では、406において、入力及び出力テンソルが、定義されたグラフに関連付けられる。
少なくとも一実施例では、408において、スキャン属性が、入力及び出力テンソルに関連付けられる。少なくとも一実施例では、テンソルと反復属性との間の関連付けは、前記テンソルへのアクセスが、所与の反復において、前記反復に対応するスライスに限定されることを示す。少なくとも一実施例では、所与の反復tの間、スライスt-1又はt+1などの、他のスライスへのアクセスが可能にされる。少なくとも一実施例では、前記アクセスはコンパイラに宣言され、その結果、前記コンパイラは、所与の反復中に、テンソルのどのスライスがアクセスされることになるかについての仮定に基づいて最適化することができる。少なくとも一実施例では、スキャン属性は、反復属性に対応するか、反復属性として表現される。
少なくとも一実施例では、410において、定義されたニューラル・ネットワークが、提供された入力/出力テンソルに基づいて、再帰ニューラル・ネットワークとして実行される。少なくとも一実施例では、前記再帰ニューラル・ネットワークの実行のための反復の数は、要素404に関して説明されるような、トリップ・カウント、制御テンソル、又は、入力テンソルの外形寸法に基づく。
図5は、少なくとも一実施例による、双方向再帰ニューラル・ネットワークを実行する態様の実例500を示す。少なくとも一実施例では、双方向再帰ニューラル・ネットワークは、一方向の再帰ニューラル・ネットワークの1つ又は複数の層を、逆方向の前記再帰ニューラル・ネットワークの同等の1つ又は複数の層と接続する。少なくとも一実施例では、双方向再帰ニューラル・ネットワークは、前方(forward)と反転(reverse)両方の時間方向におけるシーケンスの文脈上の認識又は分析を伴うアプリケーションと併せて使用される。
少なくとも一実施例では、シーケンス502は、他の関数及び動作を潜在的に含む、アプリケーション・プログラミング・インターフェース関数の一連の呼出しを含む。少なくとも一実施例では、前記シーケンスは、グラフを実行するための動作506、グラフを反転するための動作508、及び前記反転されたグラフを実行するための動作510を備える。
少なくとも一実施例では、コンパイラは、グラフを実行すること、前記グラフを反転すること、及び前記反転されたグラフを実行することを行う動作を含むシーケンス502を検出する。少なくとも一実施例では、これらの動作は、双方向再帰ニューラル・ネットワークを実行するためのパターン504に対応する。少なくとも一実施例では、コンパイラはパターン504を検出し、パターン504の前記検出に基づいて、双方向再帰ニューラル・ネットワークの実行を最適化する。
図6は、少なくとも一実施例による、不完全再帰ニューラル・ネットワークの実行の態様の実例を示す。少なくとも一実施例では、不完全ニューラル・ネットワークを実行する実例600は、有効性テンソル604とペアの入力テンソル602の使用を含む。
少なくとも一実施例では、不完全再帰ニューラル・ネットワークは、描写された入力テンソル602などの入力テンソルが、所与のバッチのための可変シーケンス長を備える再帰ニューラル・ネットワークである。たとえば、少なくとも一実施例では、入力テンソル602の各バッチ606は、異なる長さのシーケンス608を有する。したがって、前記実例では、バッチb1はシーケンス長5を有し、バッチb2はシーケンス長6を有し、バッチb3はシーケンス長4を有し、バッチb4はシーケンス長3を有する。少なくとも一実施例では、所与のバッチのためのシーケンス長を超える入力テンソル602の要素は無効である。
少なくとも一実施例では、有効性テンソル604は、入力テンソル602に関連付けられる。少なくとも一実施例では、アプリケーション・プログラミング・インターフェース関数は、関連する有効性テンソル604を伴う入力テンソルを提供するために、又は、既存の入力テンソルを有効性テンソルに関連付けるために使用される。少なくとも一実施例では、有効性テンソル604によって提供される機能は、バッチ番号及び反復番号パラメータに基づいて有効性指標を返す機能で代用される。
少なくとも一実施例では、有効性テンソル604は、入力テンソル内の対応するエントリが有効であるか否かをその値が指示するブール値のエントリを備える。たとえば、有効性テンソル604内の(b2,t1)におけるエントリは、(b2,t1)においても対応するエントリが有効であることを示すために、真にセットされる。同様に、(b2,t6)における有効性テンソル604におけるエントリは、入力テンソル602における対応するエントリが無効であることを示すために、偽にセットされ得る。
図7は、少なくとも一実施例による、双方向再帰ニューラル・ネットワークの実行中の連鎖の実例を示す。少なくとも一実施例では、実例700は、双方向再帰ニューラル・ネットワークへの入力シーケンス「I AM HERE」のアプリケーションを備える。少なくとも一実施例では、前記双方向再帰ニューラル・ネットワークは、図5及び図6に描写された実施例に関して説明された技法に従って実装される。
少なくとも一実施例では、双方向再帰ニューラル・ネットワークの前方アプリケーションが、前方入力シーケンス702を利用し、前記双方向再帰ニューラル・ネットワークの反転アプリケーションが、対応する反転入力シーケンス704を利用する。これらは、前方出力シーケンス706及び反転出力シーケンス708をそれぞれ生み出す。前方出力シーケンス706と反転出力シーケンス708との連鎖は、図7に示されるように、双方向出力シーケンス710を生成する。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、不完全双方向再帰ニューラル・ネットワークの前方出力と反転出力を結合させるための連鎖関数を含む。
少なくとも一実施例では、不完全双方向再帰ニューラル・ネットワークを実行するためにアプリケーション・プログラミング・インターフェースの実施例を使用するためのソース・コードは、低減動作を実施するため、トリップ・カウントを提供するため、入力テンソル及び関連する反復属性を供給するため、選択動作を実施するため、並びに確保動作を実施するための、プログラミング言語及びアプリケーション・プログラミング・インターフェース関数の呼出しを含む。少なくとも一実施例では、低減動作は、バッチにおける最大シーケンス長を見つける。少なくとも一実施例では、確保動作は、双方向再帰ニューラル・ネットワークを構築するために、テンソル内の要素の順序を確保しておく。
少なくとも一実施例では、連鎖動作は、入力としてスカラ軸をとり、沿って連鎖させることになる軸を示す。少なくとも一実施例では、連鎖動作へのその後の入力は、出力テンソルを生み出すために連鎖される。少なくとも一実施例では、連鎖動作は、前記入力テンソルの要素に対する計算を実施せずに、入力テンソルから出力テンソルに要素を移動させる。
少なくとも一実施例では、コンパイラは、連鎖動作の性能を最適化する。少なくとも一実施例では、前記最適化は、基盤となるデータのコピーなく、出力テンソルに書き込まれる入力テンソルの定義又はビューを有することによってデータ移動を回避することを含む。少なくとも一実施例では、出力テンソルと入力テンソルとの間にロケーション・エイリアス関係が作り出される。少なくとも一実施例では、コンパイラは、連鎖最適化が適用され得る条件を識別する。少なくとも一実施例では、コンパイラは、連鎖動作をなくすことができる条件を識別する。少なくとも一実施例では、コンパイラは、再帰ニューラル・ネットワークの反復の出力に対する連鎖動作をなくすように最適化を実施する。
図8は、少なくとも一実施例による、アプリケーション・プログラミング・インターフェースを使用して再帰ニューラル・ネットワークを定義及び実行するためのプロセスの実例を示す。少なくとも一実施例では、再帰ニューラル・ネットワークを定義及び実行する実例800は、図8に描写された要素を備える。ステップのシーケンスとして描写されているが、描写されたシーケンスは、潜在的な実施例の範囲を、描写されたシーケンスに適合する実施例だけに限定するものと解釈されるべきではない。たとえば、論理的に必要な場合を除いて、描写されたステップは、並列に再配列又は実施されてもよい。少なくともいくつかの実施例では、ある特定のステップが省略されることがある。少なくともいくつかの実施例では、追加のステップが追加されることがある。
少なくとも一実施例では、802において、アプリケーション・プログラミング・インターフェースが、グラフ定義及び再帰属性を含む1つ又は複数のAPIコールを受け取る。少なくとも一実施例では、APIコールは、ファンクション・コールに対応する。
少なくとも一実施例では、1つ又は複数のAPIコールは、ソース・コード内の前記APIコールの宣言又は呼出しによって受け取られる。少なくとも一実施例では、APIコールは、前記APIコールを呼び出すためのコードの実行によって受け取られる。少なくとも一実施例では、APIコールは、前記1つ又は複数のAPIコールに対応するAPI関数を実装するランタイム・ライブラリによって受け取られる。
少なくとも一実施例では、1つ又は複数のAPIコールは、グラフを再帰属性に関連付けるためのAPIコールを含む。
少なくとも一実施例では、1つ又は複数のAPIコールは、トリップ・カウントをセットするためのAPIコールを含む。
少なくとも一実施例では、1つ又は複数のAPIコールは、制御テンソルをセットするためのAPIコールを含む。
少なくとも一実施例では、再帰ニューラル・ネットワークを定義及び実行するためのAPIの関数を実行した効果は、関数のそれぞれの環境にローカライズされる。少なくとも一実施例では、効果に対するこの制限は、機能プログラミング・パラダイムに適合するものと説明され得る。少なくとも一実施例では、コンパイラは、効果に対するこの限定によって課された仮定に基づいて、再帰ニューラル・ネットワークの実行の最適化を基礎とする。
少なくとも一実施例では、804において、アプリケーション・プログラミング・インターフェースが、テンソルをグラフに関連付ける1つ又は複数のAPIコールを受け取る。少なくとも一実施例では、入力テンソルが、グラフに関連付けられる。少なくとも一実施例では、入力/出力テンソルが、グラフに関連付けられる。
少なくとも一実施例では、テンソルは、1次元、2次元、3次元、又はn次元配列に対応する。少なくとも一実施例では、入力データ、隠れ出力、隠れ入力、セル状態、隠れ状態、及び出力データのうちの1つ又は複数が、テンソルに格納される。
少なくとも一実施例では、806において、アプリケーション・プログラミング・インターフェースは、コンパイル及び最適化のために、各反復中、テンソルへのアクセスが特定のスライスに限定されると仮定する。少なくとも一実施例では、再帰ニューラル・ネットワークが、テンソルに少なくとも部分的に基づいて実行され、テンソルへのアクセスは、再帰ニューラル・ネットワークの実行の反復中、反復に対応するテンソルのスライスに限定される。少なくとも一実施例では、コンパイラによってアクセス可能であると仮定されるテンソルのスライスが、各反復後、進められる。
少なくとも一実施例では、808において、アプリケーション・プログラミング・インターフェースは、グラフ定義に基づいて、再帰ニューラル・ネットワークを実行するための最適化された命令を生成する。少なくとも一実施例では、コンパイラは、命令を最適化する。少なくとも一実施例では、命令の最適化は、再帰ニューラル・ネットワークを実行する間に使用される、プロセッサ時間又はメモリなどの、計算容量又は計算リソースの消費量を最小化することを含む。少なくとも一実施例では、命令の最適化は、再帰ニューラル・ネットワークの実行に必要な時間を最小化することを含む。
少なくとも一実施例では、再帰ニューラル・ネットワークの実行は、複数の反復にわたって最適化される。少なくとも一実施例では、実行の最適化は、テンソルへのアクセスが、実行の反復中、テンソルのスライスに限定されるというコンパイラの仮定に少なくとも部分的に基づく。少なくとも一実施例では、この仮定は、ループ融合、ループ分裂、ループ・アンローリング、データフロー分析、並列化、自動ベクトル化などの最適化をコンパイラが実施することができるようにする。
少なくとも一実施例では、810において、アプリケーション・プログラミング・インターフェースは、再帰ニューラル・ネットワークを実行する。少なくとも一実施例では、再帰ニューラル・ネットワークの実行は、受け取ったAPIコールによる、再帰ニューラル・ネットワークの評価を含む。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、1つ又は複数のプロセッサによって実施されると、少なくとも、グラフを反転する機能の検出に少なくとも部分的に基づいて、再帰ニューラル・ネットワークが双方向再帰ニューラル・ネットワークであると判定することと、双方向再帰ニューラル・ネットワークの実行を最適化することとを、1つ又は複数のプロセッサに行わせる。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、1つ又は複数のプロセッサによって実施されると、不完全再帰ニューラル・ネットワークを実行することを、1つ又は複数のプロセッサに行わせる。少なくとも一実施例では、図6に描写されているように、再帰ニューラル・ネットワークを有効性テンソルに関連付けるために、APIコールが受け取られる。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、1つ又は複数のプロセッサによって実施されると、双方向不完全再帰ニューラル・ネットワークを実行することを、1つ又は複数のプロセッサに行わせる。少なくとも一実施例では、図6に描写されているように、再帰ニューラル・ネットワークを有効性テンソルに関連付けるために、APIコールが受け取られる。少なくとも一実施例では、データ移動を最小化するために、図7に描写されたものに一致した技法を使用して、連鎖動作が最適化される。
推論及び訓練の論理
図9Aは、1つ又は複数の実施例に関して推論及び/又は訓練の動作を実行するために使用される推論及び/又は訓練論理915を示す。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて以下に提供される。
図9Aは、1つ又は複数の実施例に関して推論及び/又は訓練の動作を実行するために使用される推論及び/又は訓練論理915を示す。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて以下に提供される。
少なくとも一実施例では、推論及び/又は訓練論理915は、1つ又は複数の実施例の態様において推論するように訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層を構成するための順伝播及び/若しくは出力の重み、及び/若しくは入力/出力データ、及び/若しくは他のパラメータを記憶するためのコード並びに/又はデータ・ストレージ901を、限定することなく含んでもよい。少なくとも一実施例では、訓練論理915は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ901を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ901には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU))を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、こうしたコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ901は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを順伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、コード及び/又はデータ・ストレージ901の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
少なくとも一実施例では、コード及び/又はデータ・ストレージ901の任意の部分は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ901は、キャッシュ・メモリ、ダイナミック・ランダム・アドレス可能メモリ(「DRAM」:dynamic randomly addressable memory)、スタティック・ランダム・アドレス可能メモリ(「SRAM」:static randomly addressable memory)、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ901が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージを含むかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、推論及び/又は訓練論理915は、1つ又は複数の実施例の態様において推論するために訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層に対応した、逆伝播及び/若しくは出力の重み、及び/若しくは入力/出力データを記憶するためのコード並びに/又はデータ・ストレージ905を、限定することなく含んでもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ905は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを逆伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、訓練論理915は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ905を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ905には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU))を含む論理が構成される。
少なくとも一実施例では、グラフ・コードなどのコードは、こうしたコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードさせる。少なくとも一実施例では、コード及び/又はデータ・ストレージ905の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ905の任意の部分は、1つ又は複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ905は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ905が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ・メモリ、若しくは何らか他のタイプのストレージを含むかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、コード及び/又はデータ・ストレージ901と、コード及び/又はデータ・ストレージ905は、別々のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ901と、コード及び/又はデータ・ストレージ905は、組み合わされたストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ901と、コード及び/又はデータ・ストレージ905は、部分的に組み合わされ、部分的に別々であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ901と、コード及び/又はデータ・ストレージ905との任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
少なくとも一実施例では、推論及び/又は訓練論理915は、訓練及び/又は推論コード(たとえばグラフ・コード)に少なくとも部分的に基づく、又はそれにより示される論理演算及び/又は算術演算を実行するための、整数及び/又は浮動小数点ユニットを含む1つ又は複数の算術論理演算ユニット(「ALU」)910を、限定することなく含んでもよく、その結果が、アクティブ化ストレージ920に記憶されるアクティブ化(たとえば、ニューラル・ネットワーク内の層若しくはニューロンからの出力値)を生成してもよく、これらは、コード及び/若しくはデータ・ストレージ901、並びに/又はコード及び/若しくはデータ・ストレージ905に記憶される入力/出力及び/又は重みパラメータのデータの関数である。少なくとも一実施例では、アクティブ化ストレージ920に記憶されるアクティブ化は、命令又は他のコードを実行したことに応答して、ALU910によって実行される線形代数計算及び又は行列ベースの計算に従って生成され、ここでコード及び/又はデータ・ストレージ905及び/又はデータ901に記憶された重み値は、バイアス値、勾配情報、運動量値などの他の値、又は他のパラメータ若しくはハイパーパラメータとともにオペランドとして使用され、これらのいずれか又はすべてが、コード及び/若しくはデータ・ストレージ905、又はコード及び/若しくはデータ・ストレージ901、又はオン・チップ若しくはオフ・チップの別のストレージに記憶されてもよい。
少なくとも一実施例では、ALU910は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路内に含まれるが、別の実施例では、ALU910は、それらを使用するプロセッサ又は他のハードウェア論理デバイス若しくは回路の外部にあってもよい(たとえばコプロセッサ)。少なくとも一実施例では、ALU910は、プロセッサの実行ユニット内に含まれてもよく、又は同じプロセッサ内にあるか異なるタイプの異なるプロセッサ(たとえば、中央処理装置、グラフィックス・プロセッシング・ユニット、固定機能ユニットなど)の間で分散されているかのいずれかであるプロセッサの実行ユニットによりアクセス可能なALUバンク内に、他のやり方で含まれてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ901、コード及び/又はデータ・ストレージ905、並びにアクティブ化ストレージ920は、プロセッサ又は他のハードウェア論理デバイス若しくは回路を共有してもよく、別の実施例では、それらは異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、或いは同じプロセッサ又は他のハードウェア論理デバイス若しくは回路と、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路との何らかの組合せにあってもよい。少なくとも一実施例では、アクティブ化ストレージ920の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。さらに、推論及び/又は訓練コードが、プロセッサ又は他のハードウェア論理若しくは回路にアクセス可能な他のコードとともに記憶されてもよく、プロセッサのフェッチ、デコード、スケジューリング、実行、リタイア、及び/又は他の論理回路を使用してフェッチ及び/又は処理されてもよい。
少なくとも一実施例では、アクティブ化ストレージ920は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、アクティブ化ストレージ920は、完全に又は部分的に、1つ若しくは複数のプロセッサ又は他の論理回路の内部にあってもよく、又は外部にあってもよい。少なくとも一実施例では、アクティブ化ストレージ920が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ・メモリ、若しくは何らか他のタイプのストレージを含むかの選択は、オン・チップ対オフ・チップの利用可能なストレージ、実行される訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、図9Aに示す推論及び/又は訓練論理915は、グーグルからのTensorFlow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU:inference processing unit)、又はIntel CorpからのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(「ASIC:application-specific integrated circuit」)と併せて使用されてもよい。少なくとも一実施例では、図9Aに示す推論及び/又は訓練論理915は、中央処理装置(「CPU」:central processing unit)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」:graphics processing unit)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」:field programmable gate array)など他のハードウェアと併せて使用されてもよい。
図9Bは、少なくとも1つの実施例による、推論及び/又は訓練論理915を示す。少なくとも一実施例では、推論及び/又は訓練論理915は、ハードウェア論理を限定することなく含んでもよく、このハードウェア論理では、計算リソースが、ニューラル・ネットワーク内のニューロンの1つ若しくは複数の層に対応する重み値又は他の情報の専用のものであるか、又は他のやり方でそれらと併せてしか使用されない。少なくとも一実施例では、図9Bに示す推論及び/又は訓練論理915は、グーグルからのTensorFlow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU)、又はインテルコーポレーションからのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(ASIC)と併せて使用されてもよい。少なくとも一実施例では、図9Bに示す推論及び/又は訓練論理915は、中央処理装置(CPU)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)など他のハードウェアと併せて使用されてもよい。少なくとも一実施例では、推論及び/又は訓練論理915は、限定することなく、コード及び/又はデータ・ストレージ901、並びにコード及び/又はデータ・ストレージ905を含み、これらを使用して、コード(たとえばグラフ・コード)、重み値、並びに/又はバイアス値、勾配情報、運動量値、及び/若しくは他のパラメータ若しくはハイパーパラメータ情報を含む他の情報を記憶してもよい。図9Bに示す少なくとも一実施例では、コード及び/又はデータ・ストレージ901並びにコード及び/又はデータ・ストレージ905のそれぞれは、それぞれ計算ハードウェア902及び計算ハードウェア906などの専用計算リソースに関連付けられる。少なくとも一実施例では、計算ハードウェア902及び計算ハードウェア906のそれぞれは、線形代数関数などの数学的関数を、それぞれコード及び/又はデータ・ストレージ901並びにコード及び/又はデータ・ストレージ905に記憶された情報に対してのみ実行する1つ又は複数のALUを備え、その結果は、アクティブ化ストレージ920に記憶される。
少なくとも一実施例では、コード並びに/又はデータ・ストレージ901及び905のそれぞれ、並びに対応する計算ハードウェア902及び906は、ニューラル・ネットワークの異なる層にそれぞれ対応し、それにより、コード及び/又はデータ・ストレージ901並びに計算ハードウェア902との1つのストレージ/計算の対901/902から結果的に生じるアクティブ化は、ニューラル・ネットワークの概念的組織化を反映させるために、次のコード及び/又はデータ・ストレージ905並びに計算ハードウェア906とのストレージ/計算の対905/906への入力として提供される。少なくとも一実施例では、ストレージ/計算の対901/902、及び905/906は、2つ以上のニューラル・ネットワークの層に対応してもよい。少なくとも一実施例では、ストレージ/計算の対901/902、及び905/906の後に、又はそれと並列に、追加のストレージ/計算の対(図示せず)が、推論及び/又は訓練論理915に含まれてもよい。
ニューラル・ネットワークの訓練及び導入
図10は、少なくとも一実施例による、ディープ・ニューラル・ネットワークの訓練及び導入を示す。少なくとも一実施例では、未訓練ニューラル・ネットワーク1006が、訓練データ・セット1002を使用して訓練される。少なくとも一実施例では、訓練フレームワーク1004は、PyTorchフレームワークであり、一方他の実施例では、訓練フレームワーク1004は、TensorFlow、Boost、Caffe、マイクロソフトCognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j、又は他の訓練フレームワークである。少なくとも一実施例では、訓練フレームワーク1004は、未訓練ニューラル・ネットワーク1006を訓練し、本明細書に記載の処理リソースを使用してそれが訓練されるのを可能にして、訓練済みニューラル・ネットワーク1008を生成する。少なくとも一実施例では、重みは、ランダムに選択されてもよく、又はディープ・ビリーフ・ネットワークを使用した事前訓練によって選択されてもよい。少なくとも一実施例では、訓練は、教師あり、一部教師あり、又は教師なしのいずれかのやり方で実行されてもよい。
図10は、少なくとも一実施例による、ディープ・ニューラル・ネットワークの訓練及び導入を示す。少なくとも一実施例では、未訓練ニューラル・ネットワーク1006が、訓練データ・セット1002を使用して訓練される。少なくとも一実施例では、訓練フレームワーク1004は、PyTorchフレームワークであり、一方他の実施例では、訓練フレームワーク1004は、TensorFlow、Boost、Caffe、マイクロソフトCognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j、又は他の訓練フレームワークである。少なくとも一実施例では、訓練フレームワーク1004は、未訓練ニューラル・ネットワーク1006を訓練し、本明細書に記載の処理リソースを使用してそれが訓練されるのを可能にして、訓練済みニューラル・ネットワーク1008を生成する。少なくとも一実施例では、重みは、ランダムに選択されてもよく、又はディープ・ビリーフ・ネットワークを使用した事前訓練によって選択されてもよい。少なくとも一実施例では、訓練は、教師あり、一部教師あり、又は教師なしのいずれかのやり方で実行されてもよい。
少なくとも一実施例では、未訓練ニューラル・ネットワーク1006は教師あり学習を使用して訓練され、ここで訓練データ・セット1002は、入力に対する所望の出力と対になった入力を含み、又は訓練データ・セット1002は、既知の出力を有する入力を含み、ニューラル・ネットワーク1006の出力が手動で採点される。少なくとも一実施例では、未訓練ニューラル・ネットワーク1006は教師ありのやり方で訓練され、訓練データ・セット1002からの入力を処理し、結果として得られた出力を、予想の又は所望の出力のセットと比較する。少なくとも一実施例では、次いで、誤差が、未訓練ニューラル・ネットワーク1006を通って逆伝播される。少なくとも一実施例では、訓練フレームワーク1004は、未訓練ニューラル・ネットワーク1006を制御する重みを調節する。少なくとも一実施例では、訓練フレームワーク1004は、未訓練ニューラル・ネットワーク1006が、新規データ・セット1012などの入力データに基づき、結果1014などにおいて正しい答えを生成するのに好適な訓練済みニューラル・ネットワーク1008などのモデルに向かって、どれだけ良好に収束しているかを監視するツールを含む。少なくとも一実施例では、訓練フレームワーク1004は、未訓練ニューラル・ネットワーク1006を繰り返し訓練する一方、損失関数、及び確率的勾配降下法などの調整アルゴリズムを使用して、未訓練ニューラル・ネットワーク1006の出力を精緻化するように重みを調整する。少なくとも一実施例では、訓練フレームワーク1004は、未訓練ニューラル・ネットワーク1006が所望の精度に到達するまで未訓練ニューラル・ネットワーク1006を訓練する。少なくとも一実施例では、次いで訓練済みニューラル・ネットワーク1008を、任意の数の機械学習動作を実装するように導入することができる。
少なくとも一実施例では、未訓練ニューラル・ネットワーク1006は、教師なし学習を使用して訓練され、ここで未訓練ニューラル・ネットワーク1006は、ラベルなしデータを使用して自らを訓練しようとする。少なくとも一実施例では、教師なし学習の訓練データ・セット1002は、いかなる関連出力データ又は「グラウンド・トゥルース」データもない入力データを含む。少なくとも一実施例では、未訓練ニューラル・ネットワーク1006は、訓練データ・セット1002内でグループ化を学習することができ、個々の入力が、未訓練データ・セット1002にどのように関係しているかを判定することができる。少なくとも一実施例では、新規データ・セット1012の次元を低減するのに有用な動作を実行することができる訓練済みニューラル・ネットワーク1008内で教師なし訓練を使用して、自己組織化マップを生成することができる。少なくとも一実施例では、教師なし訓練を使用して異常検出を実行することもでき、異常検出は、新規データ・セット1012の通常のパターンから逸脱した、新規データ・セット1012内のデータ点を識別できるようにする。
少なくとも一実施例では、半教師あり学習が使用されてもよく、それは、ラベル付きデータとラベルなしデータが訓練データ・セット1002に混在している技法である。少なくとも一実施例では、訓練フレームワーク1004を使用して、伝達学習技法などによる漸次的学習が実行されてもよい。少なくとも一実施例では、漸次的学習により、訓練済みニューラル・ネットワーク1008は、初期訓練中に訓練済みニューラル・ネットワーク1008内に教え込まれた知識を忘れることなく、新規データ・セット1012に適合できるようになる。
データ・センタ
図11は、少なくとも一実施例が使用されてもよい例示的なデータ・センタ1100を示す。少なくとも一実施例では、データ・センタ1100は、データ・センタ・インフラストラクチャ層1110、フレームワーク層1120、ソフトウェア層1130、及びアプリケーション層1140を含む。
図11は、少なくとも一実施例が使用されてもよい例示的なデータ・センタ1100を示す。少なくとも一実施例では、データ・センタ1100は、データ・センタ・インフラストラクチャ層1110、フレームワーク層1120、ソフトウェア層1130、及びアプリケーション層1140を含む。
図11に示すように、少なくとも一実施例では、データセンタ・インフラストラクチャ層1110は、リソース・オーケストレータ1112と、グループ化済みコンピューティング・リソース1114と、ノード・コンピューティング・リソース(「ノードC.R.」)1116(1)~1116(N)とを含んでもよく、ここで「N」は正の整数を表す(他の図で使用されるものとは異なる整数「N」であってもよい)。少なくとも一実施例では、ノードC.R.1116(1)~1116(N)は、任意の数の中央処理装置(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・ストレージ・デバイス1118(1)~1118(N)(たとえば、ダイナミック読取り専用メモリ、半導体ストレージ・ドライブ又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」:virtual machine)、電源モジュール、及び冷却モジュールを含んでもよいが、これらに限定されない。少なくとも一実施例では、ノードC.R.1116(1)~1116(N)のうち1つ又は複数のノードC.R.は、上述したコンピューティング・リソースのうちの1つ又は複数を有するサーバであってもよい。
少なくとも一実施例では、グループ化済みコンピューティング・リソース1114は、1つ若しくは複数のラック(図示せず)内に収容されたノードC.R.の別々のグループ、又は様々なグラフィカル・ロケーション(同じく図示せず)においてデータ・センタに収容された多数のラックを含んでもよい。少なくとも一実施例では、グループ化済みコンピューティング・リソース1114内のノードC.R.の別々のグループは、1つ若しくは複数のワークロードをサポートするように構成又は配分されてもよいグループ化済みのコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含んでもよい。少なくとも一実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のラック内でグループ化されて、1つ又は複数のワークロードをサポートするためのコンピュート・リソースが提供されてもよい。少なくとも一実施例では、1つ又は複数のラックはまた、任意の数の電源モジュール、冷却モジュール、及びネットワーク・スイッチを任意の組合せで含んでもよい。
少なくとも一実施例では、リソース・オーケストレータ1112は、1つ又は複数のノードC.R.1116(1)~1116(N)及び/若しくはグループ化済みコンピューティング・リソース1114を構成してもよく、又は他のやり方で制御してもよい。少なくとも一実施例では、リソース・オーケストレータ1112は、データ・センタ1100用のソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含んでもよい。少なくとも一実施例では、リソース・オーケストレータ912は、ハードウェア、ソフトウェア、又はこれらの何らかの組合せを含んでもよい。
図11に示す少なくとも一実施例では、フレームワーク層1120は、ジョブ・スケジューラ1122、構成マネージャ1124、リソース・マネージャ1126、及び分配ファイル・システム1128を含む。少なくとも一実施例では、フレームワーク層1120は、ソフトウェア層1130のソフトウェア1132、及び/又はアプリケーション層1140の1つ若しくは複数のアプリケーション1142をサポートするためのフレームワークを含んでもよい。少なくとも一実施例では、ソフトウェア1132又はアプリケーション1142はそれぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アジュールによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含んでもよい。少なくとも一実施例では、フレームワーク層1120は、大規模なデータ処理(たとえば「ビック・データ」)のために分配ファイル・システム1128を使用することができるApache Spark(登録商標)(以下「Spark」)など、無料でオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってもよいが、これに限定されない。少なくとも一実施例では、ジョブ・スケジューラ1132は、データ・センタ1100の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含んでもよい。少なくとも一実施例では、構成マネージャ1124は、ソフトウェア層1130、並びに大規模なデータ処理をサポートするためのSpark及び分配ファイル・システム1128を含むフレームワーク層1120などの異なる層を構成することが可能であってもよい。少なくとも一実施例では、リソース・マネージャ1126は、分配ファイル・システム1128及びジョブ・スケジューラ1122をサポートするようにマッピング若しくは配分されたクラスタ化済み又はグループ化済みのコンピューティング・リソースを管理することが可能であってもよい。少なくとも一実施例では、クラスタ化済み又はグループ化済みのコンピューティング・リソースは、データ・センタ・インフラストラクチャ層1110にあるグループ化済みコンピューティング・リソース1114を含んでもよい。少なくとも一実施例では、リソース・マネージャ1126は、リソース・オーケストレータ1112と連携して、これらのマッピング又は配分されたコンピューティング・リソースを管理してもよい。
少なくとも一実施例では、ソフトウェア層1130に含まれるソフトウェア1132は、ノードC.R.1116(1)~1116(N)、グループ化済みコンピューティング・リソース1114、及び/又はフレームワーク層1120の分配ファイル・システム1128のうちの少なくとも一部分によって使用されるソフトウェアを含んでもよい。少なくとも一実施例では、1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含んでもよいが、これらに限定されない。
少なくとも一実施例では、アプリケーション層1140に含まれるアプリケーション1142は、ノードC.R.1116(1)~1116(N)、グループ化済みコンピューティング・リソース1114、及び/又はフレームワーク層1120の分配ファイル・システム1128のうちの少なくとも一部分によって使用される1つ若しくは複数のタイプのアプリケーションを含んでもよい。少なくとも一実施例では、1つ若しくは複数のタイプのアプリケーションは、任意の数のゲノム学アプリケーション、認識コンピュート、並びに訓練若しくは推論のソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、TensorFlow、Caffeなど)を含むアプリケーション及び機械学習アプリケーション、又は1つ若しくは複数の実施例と併せて使用される他の機械学習アプリケーションを含んでもよいが、これらに限定されない。
少なくとも一実施例では、構成マネージャ1124、リソース・マネージャ1126、及びリソース・オーケストレータ1112のうちのいずれかは、任意の技術的に実行可能なやり方で取得された任意の量及びタイプのデータに基づき、任意の数及びタイプの自己修正措置を実装してもよい。少なくとも一実施例では、自己修正措置は、データ・センタ1100のデータ・センタ演算子が、不良の恐れのある構成を決定しないようにし、十分に利用されていない且つ/又は性能の低いデータ・センタの部分をなくせるようにしてもよい。
少なくとも一実施例では、データ・センタ1100は、1つ若しくは複数の機械学習モデルを訓練し、又は本明細書に記載の1つ若しくは複数の実施例による1つ若しくは複数の機械学習モデルを使用して情報を予測若しくは推論するためのツール、サービス、ソフトウェア、又は他のリソースを含んでもよい。たとえば、少なくとも一実施例では、機械学習モデルは、データ・センタ1100に関して上述したソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練されてもよい。少なくとも一実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練済み機械学習モデルは、本明細書に記載の1つ又は複数の技法によって計算された重みパラメータを使用することにより、データ・センタ1100に関して上述したリソースを使用して、情報を推論又は予測するために使用されてもよい。
少なくとも一実施例では、データ・センタは、上述したリソースを使用して訓練及び/又は推論を実行するために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、又は他のハードウェアを使用してもよい。さらに、上述した1つ又は複数のソフトウェア及び/又はハードウェアのリソースは、画像認識、音声認識、又は他の人工知能サービスなどの情報の訓練又は推論の実行を、ユーザが行えるようにするためのサービスとして構成されてもよい。
推論及び/又は訓練論理915を使用して、1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作が実行される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図11のシステムにおいて使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
自律車両
図12Aは、少なくとも一実施例による自律車両1200の例を示す。少なくとも一実施例では、自律車両1200(或いは、本明細書において「車両1200」と呼ばれる)は、限定することなく、車、トラック、バス、及び/又は1人若しくは複数の乗員を収容する別のタイプの車両などの乗用車とすることができる。少なくとも一実施例では、車両1200は、貨物運搬用のセミ・トラクタのトレーラ・トラックであってもよい。少なくとも一実施例では、車両1200は、航空機、ロボット車両、又は他の種類の車両であってもよい。
図12Aは、少なくとも一実施例による自律車両1200の例を示す。少なくとも一実施例では、自律車両1200(或いは、本明細書において「車両1200」と呼ばれる)は、限定することなく、車、トラック、バス、及び/又は1人若しくは複数の乗員を収容する別のタイプの車両などの乗用車とすることができる。少なくとも一実施例では、車両1200は、貨物運搬用のセミ・トラクタのトレーラ・トラックであってもよい。少なくとも一実施例では、車両1200は、航空機、ロボット車両、又は他の種類の車両であってもよい。
自律車両は、米国運輸省の一部門である全米高速道路交通安全局(「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、及びこの規格の旧版及び新版)により定義される自動化レベルという観点から説明されてもよい。1つ又は複数の実施例では、車両1200は、自律運転レベルのレベル1~レベル5のうちの1つ又は複数による機能性に対応可能であってもよい。たとえば、少なくとも一実施例では、車両1200は、実施例に応じて、条件付き自動化(レベル3)、高度自動化(レベル4)、及び/又は完全自動化(レベル5)に対応可能であってもよい。
少なくとも一実施例では、車両1200は、限定することなく、シャシ、車両本体、ホイール(2本、4本、6本、8本、18本など)、タイヤ、車軸、及び車両の他の構成要素などの構成要素を含んでもよい。少なくとも一実施例では、車両1200は、限定することなく、内燃機関、ハイブリッド電力プラント、完全電気エンジン、及び/又は別のタイプの推進システムなどの推進システム1250を含んでもよい。少なくとも一実施例では、推進システム1250は、車両1200のドライブ・トレインに連結されてもよく、ドライブ・トレインは、限定することなく、車両1200の推進を可能にするためのトランスミッションを含んでもよい。少なくとも一実施例では、推進システム1250は、スロットル/アクセル1252からの信号を受信したことに応答して、制御されてもよい。
少なくとも一実施例では、限定することなくハンドルを含んでもよい操縦システム1254は、推進システム1250が動作しているときに(たとえば、車両1200が動いているときに)車両1200を(たとえば所望の経路又はルートに沿って)操縦するために使用される。少なくとも一実施例では、操縦システム1254は、操縦アクチュエータ1256から信号を受信してもよい。少なくとも一実施例では、ハンドルは、完全自動化(レベル5)の機能性に関しては任意選択であってもよい。少なくとも一実施例では、ブレーキ・アクチュエータ1248及び/又はブレーキ・センサからの信号を受信したことに応答して車両ブレーキを動作させるために、ブレーキ・センサ・システム1246が使用されてもよい。
少なくとも一実施例では、1つ又は複数のシステム・オン・チップ(「SoC」:system on chip)(図12Aには示さず)及び/若しくはグラフィックス・プロセッシング・ユニット(「GPU」)を限定することなく含んでもよいコントローラ1236は、車両1200の1つ又は複数の構成要素及び/若しくはシステムに(たとえば、コマンドを表す)信号を提供する。たとえば、少なくとも一実施例では、コントローラ1236は、ブレーキ・アクチュエータ1248を介して車両ブレーキを動作させるための信号、操縦アクチュエータ1256を介して操縦システム1254を動作させるための信号、スロットル/アクセル1252を介して推進システム1250を動作させるための信号を送信してもよい。少なくとも一実施例では、コントローラ1236は、自律運転を可能にし、且つ/又は運転車両1200において人間のドライバを支援するために、センサ信号を処理し、動作コマンド(たとえばコマンドを表す信号)を出力する1つ又は複数の搭載(たとえば一体型の)コンピューティング・デバイス(たとえば、スーパーコンピュータ)を含んでもよい。少なくとも一実施例では、コントローラ1236は、自律運転機能のための第1のコントローラ、機能的安全機能のための第2のコントローラ、人工知能機能(たとえば、コンピュータ・ビジョン)のための第3のコントローラ、インフォテイメント機能のための第4のコントローラ、緊急事態における冗長性のための第5のコントローラ、及び/又は他のコントローラを含んでもよい。少なくとも一実施例では、単一のコントローラが、上記機能性のうちの2つ以上に対処してもよく、2つ以上のコントローラが、単一の機能性に対処してもよく、且つ/又はこれらの何らかの組合せであってもよい。
少なくとも一実施例では、コントローラ1236は、1つ又は複数のセンサから受信したセンサ・データ(たとえば、センサ入力)に応答して、車両1200の1つ又は複数の構成要素及び/若しくはシステムを制御するための信号を提供する。少なくとも一実施例では、センサ・データは、たとえば限定することなく、全地球的航法衛星システム(「GNSS」:global navigation satellite system)センサ1258(たとえば、全地球測位システム・センサ)、RADARセンサ1260、超音波センサ1262、LIDARセンサ1264、慣性計測装置(「IMU」:inertial measurement unit)センサ1266(たとえば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイクロフォン1296、ステレオ・カメラ1268、広角カメラ1270(たとえば、魚眼カメラ)、赤外線カメラ1272、周囲カメラ1274(たとえば、360度カメラ)、長距離カメラ(図12Aには示さず)、中距離カメラ(図12Aには示さず)、(たとえば、車両1200のスピードを計測するための)スピード・センサ1244、振動センサ1242、操縦センサ1240、(たとえば、ブレーキ・センサ・システム1246の一部分としての)ブレーキ・センサ、及び/又は他のタイプのセンサから、受信されてもよい。
少なくとも一実施例では、コントローラ1236のうちの1つ又は複数は、車両1200の計器クラスタ1232からの(たとえば入力データによって表される)入力を受信し、ヒューマン・マシン・インターフェース(「HMI」:human-machine interface)ディスプレイ1234、可聴アナンシエータ、拡声器を介して、且つ/又は車両1200の他の構成要素を介して、(たとえば、出力データ、ディスプレイ・データなどによって表される)出力を提供してもよい。少なくとも一実施例では、出力は、車両速度、スピード、時間、地図データ(たとえば、ハイ・デフィニション・マップ(図12Aには示さず))、ロケーション・データ(たとえば、地図上などの車両1200のロケーション)、方向、他車両のロケーション(たとえば、占有グリッド)、コントローラ1236が感知した物体及び物体の状態についての情報などの情報を含んでもよい。たとえば、少なくとも一実施例では、HMIディスプレイ1234は、1つ若しくは複数の物体(たとえば、道路標識、警告標識、信号の変化など)の存在についての情報、及び/又は車両が行った、行っている、又はこれから行う運転操作についての情報(たとえば、現在車線変更中、3.22km(2マイル)先の出口34Bを出る、など)を表示してもよい。
少なくとも一実施例では、車両1200はさらにネットワーク・インターフェース1224を含み、このネットワーク・インターフェースは、1つ又は複数のネットワークを介して通信するためのワイヤレス・アンテナ1226及び/又はモデムを使用してもよい。たとえば、少なくとも一実施例では、ネットワーク・インターフェース1224は、ロング・ターム・エボリューション(「LTE」:Long-Term Evolution)、広帯域符号分割多元接続(「WCDMA(登録商標)」:Wideband Code Division Multiple Access)、ユニバーサル・モバイル・テレコミュニケーション・システム(「UMTS」:Universal Mobile Telecommunications System)、グローバル・システム・フォー・モバイル・コミュニケーションズ(「GSM」:Global System for Mobile communication)、IMT-CDMAマルチ・キャリア(「CDMA2000」)ネットワークなどを介して通信可能であってもよい。また、少なくとも一実施例では、ワイヤレス・アンテナ1226は、Bluetooth、Bluetooth Low Energy (「LE」:Low Energy)、Z-Wave、ZigBeeなどのローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどの低電力広域ネットワーク(「LPWAN」:low power wide-area network)プロトコルを使用して、環境内の物体同士間(たとえば車両、モバイル・デバイスなど)での通信を可能にしてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図12Aのシステムにおいて使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図12Bは、少なくとも一実施例による図12Aの自律車両1200についてカメラのロケーション及び視野の例を示す。少なくとも一実施例では、カメラ及びそれぞれの視野は、一例の実施例であり、限定するものではない。たとえば、少なくとも一実施例では、追加及び/又は代替のカメラが含まれてもよく、且つ/又はカメラが車両1200の異なるロケーションに位置付けられてもよい。
少なくとも一実施例では、カメラのカメラ・タイプは、車両1200の構成要素及び/又はシステムとともに使用できるように適合されていてもよいデジタル・カメラを含んでもよいが、これに限定されない。少なくとも一実施例では、カメラは、自動車安全性要求レベル(「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のカラー・フィルタ・アレイを有するカメラなど、クリア・ピクセル・カメラが使用されてもよい。
少なくとも一実施例では、カメラのうちの1つ又は複数を使用して、先進ドライバ支援システム(「ADAS」:advanced driver assistance systems)機能が(たとえば、冗長設計又はフェイル・セーフ設計の一部として)実行されてもよい。たとえば、少なくとも一実施例では、多機能モノ・カメラが設置されて、車線逸脱警告、交通標識支援、及びインテリジェント・ヘッドライト制御を含む機能が提供されてもよい。少なくとも一実施例では、カメラのうちの1つ又は複数(たとえばすべてのカメラ)は、画像データ(たとえばビデオ)の記録と提供を同時に行ってもよい。
少なくとも一実施例では、1つ又は複数のカメラは、カメラの画像データ捕捉性能を妨げる恐れのある迷光及び車両1200内部からの反射(たとえば、ダッシュボードからフロントガラスに反射される反射)をなくすために、カスタム設計の(3次元(「3D」:three-dimensional)印刷された)アセンブリなどの取付けアセンブリに取り付けられてもよい。ドアミラー取付けアセンブリを参照すると、少なくとも一実施例では、ドアミラー・アセンブリは、カメラ取付けプレートがドアミラーの形の合うように、カスタムで3D印刷されてもよい。少なくとも一実施例では、カメラは、ドアミラーと一体であってもよい。少なくとも一実施例では、サイド・ビュー・カメラについて、カメラはこの場合もキャビンの各角にある4本のピラーに一体化されてもよい。
少なくとも一実施例では、車両1200前方の環境の一部分を含む視野を有するカメラ(たとえば正面カメラ)は周囲のビューに対して使用されて、正面の経路及び障害物を識別しやすくするとともに、コントローラ1236及び/又は制御SoCのうちの1つ又は複数とともに使用されて、占有グリッドの生成及び/又は好ましい車両経路の判定に不可欠な情報の提供を補助してもよい。少なくとも一実施例では、正面カメラを使用して、緊急ブレーキ、歩行者検出、及び衝突回避を限定することなく含む、LIDARと同様のADAS機能のうちの多くが実行されてもよい。少なくとも一実施例では、正面カメラはまた、車線逸脱警告(「LDW」:Lane Departure Warnings)、自律クルーズ・コントロール(「ACC」:Autonomous Cruise Control)、及び/又は交通標識認識などの他の機能を限定することなく含むADASの機能及びシステムのために使用されてもよい。
少なくとも一実施例では、たとえばCMOS:complementary metal oxide semiconductor(「相補型金属酸化膜半導体」)カラー撮像装置を含む単眼カメラのプラットフォームを含む様々なカメラが、正面構成で使用されてもよい。少なくとも一実施例では、周囲からビューに入ってくる物体(たとえば歩行者、クロス・トラフィック、又は自転車)を感知するために、広角カメラ1270が使用されてもよい。図12Bには1つの広角カメラ1270しか示していないが、他の実施例では、車両1200には(ゼロを含む)任意の数の広角カメラが存在してもよい。少なくとも一実施例では、特にニューラル・ネットワークがそれに対してまだ訓練されていない物体について、深度ベースの物体検出のために、任意の数の長距離カメラ1298(たとえば、長距離ビューのステレオ・カメラの対)が使用されてもよい。少なくとも一実施例では、長距離カメラ1298はまた、物体検出及び分類、並びに基本的な物体追跡に使用されてもよい。
少なくとも一実施例では、任意の数のステレオ・カメラ1268は、正面構成にも含まれてよい。少なくとも一実施例では、1つ又は複数のステレオ・カメラ1268は、拡張可能な処理ユニットを備えた一体型制御ユニットを含んでもよく、この制御ユニットは、一体型のコントローラ・エリア・ネットワーク(「CAN」:Controller Area Network)又はイーサネット(登録商標)・インターフェースを単一チップ上に有するプログラム可能論理(「FPGA」)及びマルチ・コア・マイクロプロセッサを提供してもよい。少なくとも一実施例では、こうしたユニットは、画像内のすべての点に対する距離推定を含め、車両1200の環境の3Dマップを生成するのに使用されてもよい。少なくとも一実施例では、ステレオ・カメラ1268のうちの1つ又は複数は、限定することなくコンパクト・ステレオ・ビジョン・センサを含んでもよく、このセンサは、車両1200からターゲット物体までの距離を測定し、生成された情報(たとえば、メタデータ)を使用して自律緊急ブレーキ及び車線逸脱警告の機能をアクティブ化することができる2つのカメラ・レンズ(左右に1つずつ)及び画像処理チップを、限定することなく含んでもよい。少なくとも一実施例では、本明細書に記載のものに加えて、又はその代わりに、他のタイプのステレオ・カメラ1268が使用されてもよい。
少なくとも一実施例では、車両1200の側方の環境の一部分を含む視野を有するカメラ(たとえば、サイド・ビュー・カメラ)が、周囲のビューのために使用されて、占有グリッドの作製及び更新、並びに側面衝突警告の生成のために使用される情報を提供してもよい。たとえば、少なくとも一実施例では、周囲カメラ1274(たとえば図12Bに示すように4つの周囲カメラ)を、車両1200に配置することができる。少なくとも一実施例では、周囲カメラ1274は、限定することなく、任意の数及び組合せの広角カメラ、魚眼カメラ、360度カメラ及び/又は同様のカメラを含んでもよい。たとえば、少なくとも一実施例では、4つの魚眼カメラが、車両1200の前方、後方、及び側方に配置されてもよい。少なくとも一実施例では、車両1200は、3つの周囲カメラ1274(たとえば、左、右、及び後方)を使用してもよく、第4の周囲カメラとして、1つ又は複数の他のカメラ(たとえば正面カメラ)を活用してもよい。
少なくとも一実施例では、車両1200後方の環境の一部分を含む視野を有するカメラ(たとえば、リア・ビュー・カメラ)が、駐車支援、周囲のビュー、後方衝突警告のために使用されて、占有グリッドの作製及び更新がなされてもよい。少なくとも一実施例では、本明細書に記載の正面カメラとしても好適なカメラ(たとえば、長距離カメラ1298、及び/又は中距離カメラ1276、ステレオ・カメラ1268、赤外線カメラ1272など)を含むが、これらに限定されない多種多様なカメラが使用されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図12Bのシステムにおいて使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図12Cは、少なくとも一実施例による図12Aの自律車両1200の例示的システム・アーキテクチャを示すブロック図である。少なくとも一実施例では、図12Cの車両1200の構成要素、特徴、及びシステムのそれぞれは、バス1202を介して接続されるものとして示される。少なくとも一実施例では、バス1202は、限定することなく、CANデータ・インターフェース(或いは、本明細書において(CANバス)と呼ばれる)を含んでもよい。少なくとも一実施例では、CANは、ブレーキの作動、加速、ブレーキ制御、操縦、フロントガラス・ワイパなど、車両1200の様々な特徴及び機能の制御を補助するために使用される車両1200内部のネットワークであってもよい。少なくとも一実施例では、バス1202は、それぞれが独自の一意の識別子(たとえばCAN ID)をもつ数十又はさらには数百のノードを有するように構成されてもよい。少なくとも一実施例では、バス1202は、ハンドル角度、対地スピード、エンジンの毎分回転数(「RPM」:revolutions per minute)、ボタン位置、及び/又は他の車両状態インジケータを見いだすように読み取られてもよい。少なくとも一実施例では、バス1202は、ASILのBに準拠したCANバスであってもよい。
少なくとも一実施例では、CANに加えて、又はその代わりに、FlexRay及び/又はEthernet(登録商標)プロトコルが使用されてもよい。少なくとも一実施例では、バス1202を形成する任意の数のバスが存在してもよく、これには、限定することなく、ゼロ以上のCANバス、ゼロ以上のFlexRayバス、ゼロ以上のEthernet(登録商標)バス、及び/又は他のプロトコルを使用するゼロ以上の他のタイプのバスが含まれてもよい。少なくとも一実施例では、2つ以上のバスを使用して異なる機能が実行されてもよく、且つ/又はそれらを使用して冗長性が与えられてもよい。たとえば、第1のバスが衝突回避機能のために使用され、第2のバスが作動制御のために使用されてもよい。少なくとも一実施例では、バス1202の各バスは、車両1200の構成要素のいずれかと通信してもよく、バス1202のうちの2つ以上のバスが対応する構成要素と通信してもよい。少なくとも一実施例では、任意の数のシステム・オン・チップ(「SoC」)1204(SoC1204(A)及びSoC1204(B)など)のそれぞれ、コントローラ1236のそれぞれ、及び/又は車両内の各コンピュータは、同じ入力データ(たとえば、車両1200のセンサからの入力)にアクセス可能であってもよく、CANバスなどの共通のバスに接続されてもよい。
少なくとも一実施例では、車両1200は、図12Aに関して本明細書に記載するものなど、1つ又は複数のコントローラ1236を含んでもよい。少なくとも一実施例では、コントローラ1236は、様々な機能に使用されてもよい。少なくとも一実施例では、コントローラ1236は、車両1200の様々な他の構成要素及びシステムのうちの任意のものに結合されてもよく、車両1200、車両1200の人工知能、車両1200のインフォテイメント及び/又は他の機能の制御に使用されてもよい。
少なくとも一実施例では、車両1200は、任意の数のSoC1204を含んでもよい。少なくとも一実施例では、SoC1204のそれぞれは、限定することなく、中央処理装置(「CPU」)1206、グラフィックス・プロセッシング・ユニット(「GPU」)1208、プロセッサ1210、キャッシュ1212、アクセラレータ1214、データ・ストア1216、及び/又は図示していない他の構成要素及び特徴を含んでもよい。少なくとも一実施例では、車両1200を様々なプラットフォーム及びシステムにおいて制御するために、SoC1204が使用されてもよい。たとえば、少なくとも一実施例では、SoC1204は、1つ又は複数のサーバ(図12Cには示さず)からネットワーク・インターフェース1224を介して地図のリフレッシュ及び/又は更新を得ることができるハイ・デフィニション(「HD」:High Definition)マップ1222を有するシステム(たとえば車両1200のシステム)に組み込まれてもよい。
少なくとも一実施例では、CPU1206は、CPUクラスタ、又はCPUコンプレックス(或いは本明細書において「CCPLEX」と呼ばれる)を含んでもよい。少なくとも一実施例では、CPU1206は、複数のコア及び/又はレベル2(「L2」)キャッシュを含んでもよい。たとえば、少なくとも一実施例では、CPU1206は、コヒーレントなマルチプロセッサ構成において8つのコアを含んでもよい。少なくとも一実施例では、CPU1206は、4つのデュアル・コア・クラスタを含んでもよく、ここで各クラスタは、専用のL2キャッシュ(たとえば、2メガバイト(MB)のL2キャッシュ)を有する。少なくとも一実施例では、CPU1206(たとえば、CCPLEX)は、CPU1206のクラスタの任意の組合せを、任意の所与の時間にアクティブ化できるようにする同時のクラスタ動作をサポートするように構成されてもよい。
少なくとも一実施例では、CPU1206のうちの1つ又は複数は、電力管理機能を実装してもよく、この機能は限定することなく、以下の特徴のうちの1つ又は複数を含む:個々のハードウェア・ブロックが、アイドル時に自動的にクロック・ゲート制御されて動的電力を節約することができる;割込み待ち(「WFI」:Wait for Interrupt)/イベント待ち(「WFE」:Wait for Event)命令の実行に起因してコアが能動的に命令を実行していないとき、各コア・クロックをゲート制御することができる;各コアを独立して電力ゲート制御することができる;すべてのコアがクロック・ゲート制御又は電力ゲート制御されるとき、各コア・クラスタを独立してクロック・ゲート制御することができる;且つ/又はすべてのコアが電力ゲート制御されるとき、各コア・クラスタを独立して電力ゲート制御することができる。少なくとも一実施例では、CPU1206はさらに、電力状態を管理するための拡張アルゴリズムを実装してもよく、ここで、許容された電力状態及び予想されるウェイクアップ時間が指定され、コア、クラスタ、及びCCPLEXが入るべき最良の電力状態はどれかを、ハードウェア/マイクロコードが判定する。少なくとも一実施例では、処理コアは、作業がマイクロコードにオフロードされた状態で、電力状態に入る簡単なシーケンスをソフトウェアにおいてサポートしてもよい。
少なくとも一実施例では、GPU1208は、統合されたGPU(或いは、本明細書において「iGPU」と呼ばれる)を含んでもよい。少なくとも一実施例では、GPU1208は、プログラム可能であってもよく、並列なワークロードに対して効率的であってもよい。少なくとも一実施例では、GPU1208は、拡張テンソル命令セットを使用してもよい。一実施例では、GPU1208は、1つ又は複数のストリーミング・マイクロプロセッサを含んでもよく、ここで各ストリーミング・マイクロプロセッサは、レベル1(「L1」)キャッシュ(たとえば少なくとも96KBのストレージ容量を有するL1キャッシュ)を含んでもよく、2つ以上のストリーミング・マイクロプロセッサは、L2キャッシュ(たとえば、512KBのストレージ容量を有するL2キャッシュ)を共有してもよい。少なくとも一実施例では、GPU1208は、少なくとも8つのストリーミング・マイクロプロセッサを含んでもよい。少なくとも一実施例では、GPU1208は、コンピュート・アプリケーション・プログラミング・インターフェース(API:application programming interface)を使用してもよい。少なくとも一実施例では、GPU1208は、1つ又は複数の並列なコンピューティング・プラットフォーム、及び/又はプログラミング・モジュール(たとえば、NVIDIAのCUDAモデル)を使用してもよい。
少なくとも一実施例では、GPU1208のうちの1つ又は複数は、自動車用及び組み込まれたユース・ケースにおいて最良の性能になるように電力最適化されてもよい。たとえば、一実施例では、GPU1208は、フィン電界効果トランジスタ(「FinFET」:Fin field-effect transistor)回路上で作製することができる。少なくとも一実施例では、各ストリーミング・マイクロプロセッサは、複数のブロックに区分けされた多数の混合精度の処理コアを組み込んでもよい。たとえば、限定することなく64個のPF32コアと、32個のPF64コアを、4つの処理ブロックに区分けすることができる。少なくとも一実施例では、各処理ブロックに、16個のFP32コア、8個のFP64コア、16個のINT32コア、深層学習の行列演算用の2つの混合精度のNVIDIA Tensorコア、レベルゼロ(「L0」)命令キャッシュ、ワープ・スケジューラ、ディスパッチ・ユニット、及び/又は64KBのレジスタ・ファイルを配分することができる。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、整数と浮動小数点の独立した並列のデータ経路を含み、コンピュータ処理とアドレッシング計算を混用することによってワークロードの効率的な実行を実現する。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、独立したスレッド・スケジューリング機能を含み、並列スレッド間でよりきめ細かい同期及び連携を可能にしてもよい。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、性能を向上させると同時にプログラミングを簡単にするために、L1データ・キャッシュと共有メモリ・ユニットの組合せを含んでもよい。
少なくとも一実施例では、GPU1208のうちの1つ又は複数は、高帯域幅メモリ(「HBM」:high bandwidth memory)及び/又は16GBのHBM2メモリ・サブシステムを含み、いくつかの例では、約900GB/秒のピーク・メモリ帯域幅を提供してもよい。少なくとも一実施例では、HBMメモリに加えて、又はその代わりに、グラフィックス・ダブル・データ・レート・タイプの5つの同期ランダム・アクセス・メモリ(「GDDR5」:graphics double data rate type five)などの同期グラフィックス・ランダム・アクセス・メモリ(「SGRAM」:synchronous graphics random-access memory)が使用されてもよい。
少なくとも一実施例では、GPU1208は、統合メモリ技術を含んでもよい。少なくとも一実施例では、アドレス・トランスレーション・サービス(「ATS」:address translation services)サポートを使用して、GPU1208が、CPU1206のページ・テーブルに直接アクセスできるようにしてもよい。少なくとも一実施例では、GPU1208メモリ管理ユニット(「MMU」:memory management unit)のGPUがミスに遭遇したときには、アドレス・トランスレーション要求が、CPU1206に送信されてもよい。少なくとも一実施例では、それに応答して、CPU1206のうちの2つのCPUは、自らのページ・テーブルで、仮想から物理へのアドレスのマッピングを探し、トランスレーションをGPU1208に送り返してもよい。少なくとも一実施例では、統合メモリ技術は、CPU1206とGPU1208の両方のメモリに対して単一の統合された仮想アドレス空間を与えることを可能にし、それにより、GPU1208のプログラミング、及びGPU1208へのアプリケーションの移植を簡単にする。
少なくとも一実施例では、GPU1208は、他のプロセッサのメモリへのGPU1208のアクセス頻度を記録することができる任意の数のアクセス・カウンタを含んでもよい。少なくとも一実施例では、アクセス・カウンタは、最も頻繁にページにアクセスしているプロセッサの物理メモリに、メモリ・ページが確実に移動されるのを補助し、それにより、プロセッサ間で共有されるメモリ範囲の効率を向上させてもよい。
少なくとも一実施例では、SoC1204のうちの1つ又は複数は、本明細書に記載のものを含む任意の数のキャッシュ1212を含んでもよい。たとえば、少なくとも一実施例では、キャッシュ1212は、CPU1206もGPU1208も利用可能な(たとえば、CPU1206とGPU1208の両方に接続された)レベル3(「L3」)キャッシュを含むことができる。少なくとも一実施例では、キャッシュ1212は、キャッシュ・コヒーレンス・プロトコルなど(たとえば、MEI、MESI、MSIなど)を使用することにより、線の状態を記録することができるライト・バック・キャッシュを含んでもよい。少なくとも一実施例では、L3キャッシュは、実施例に応じて4MBのメモリ以上を含んでもよいが、より小さいキャッシュ・サイズが使用されてもよい。
少なくとも一実施例では、SoC1204のうちの1つ又は複数は、1つ又は複数のアクセラレータ1214(たとえば、ハードウェア・アクセラレータ、ソフトウェアアクセラレータ、又はこれらの組合せ)を含んでもよい。少なくとも一実施例では、SoC1204は、最適化されたハードウェア・アクセラレータ及び/又は大型のオン・チップ・メモリを含むことができるハードウェア加速クラスタを含んでもよい。少なくとも一実施例では、大型のオン・チップ・メモリ(たとえば、4MBのSRAM)は、ハードウェア加速クラスタが、ニューラル・ネットワーク及び他の計算を加速できるようにしてもよい。少なくとも一実施例では、ハードウェア加速クラスタを使用して、GPU1208を補完し、GPU1208のタスクのうちのいくつかをオフロードしてもよい(たとえば、他のタスクを実行できるようにGPU1208のサイクルをより多く解放してもよい)。少なくとも一実施例では、加速を受け入れるのに十分なほど安定している目的とするワークロード(たとえば、知覚、畳み込みニューラル・ネットワーク(「CNN」:convolutional neural network)、再帰ニューラル・ネットワーク(「RNN」:recurrent neural network)など)のために、アクセラレータ1214を使用することができる。少なくとも一実施例では、CNNは、領域ベースの、すなわち領域畳み込みニューラル・ネットワーク(「RCNN」:regional convolutional neural network)、及び(たとえば、物体検出に使用される)高速RCNN、又は他のタイプのCNNを含んでもよい。
少なくとも一実施例では、アクセラレータ1214(たとえば、ハードウェア加速クラスタ)は、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を実行してもよい。
少なくとも一実施例では、DLAは、GPU1208の任意の機能を実行してもよく、たとえば推論アクセラレータを使用することにより、設計者は、任意の機能のためにDLA又はGPU1208のいずれかをターゲットにしてもよい。たとえば、少なくとも一実施例では、設計者は、CNN及び浮動小数点演算の処理をDLAに集中させ、他の機能をGPU1208及び/又は他のアクセラレータ1214に任せてもよい。
少なくとも一実施例では、アクセラレータ1214は、プログラマブル・ビジョン・アクセラレータ(「PVA」:programmable vision accelerator)を含んでもよく、このプログラマブル・ビジョン・アクセラレータは、本明細書において代替的にコンピュータ・ビジョン・アクセラレータと呼ばれてもよい。少なくとも一実施例では、PVAは、先進ドライバ支援システム(「ADAS」)1238、自律運転、拡張現実(「AR」:augmented reality)アプリケーション、及び/又は仮想現実(「VR」:virtual reality)アプリケーションのために、コンピュータ・ビジョン・アルゴリズムを加速するように設計及び構成されてもよい。少なくとも一実施例では、PVAにより、性能と融通性との均衡が保たれてもよい。たとえば、少なくとも一実施例では、各PVAは、たとえば限定することなく、任意の数の縮小命令セット・コンピュータ(「RISC」:reduced instruction set computer)コア、ダイレクト・メモリ・アクセス(「DMA」:direct memory access)、及び/又は任意の数のベクトル・プロセッサを含んでもよい。
少なくとも一実施例では、RISCコアは、画像センサ(たとえば、本明細書に記載の任意のカメラの画像センサ)、画像信号プロセッサなどと相互作用してもよい。少なくとも一実施例では、各RISCコアは、任意の量のメモリを含んでもよい。少なくとも一実施例では、RISCコアは、実施例に応じて複数のプロトコルのうちの任意のものを使用してもよい。少なくとも一実施例では、RISCコアは、リアル・タイム・オペレーティング・システム(「RTOS」:real-time operating system)を実行してもよい。少なくとも一実施例では、RISCコアは、1つ又は複数の集積回路デバイス、特定用途向け集積回路(「ASIC」)、及び/又はメモリ・デバイスを使用して実装されてもよい。たとえば、少なくとも一実施例では、RISCコアは、命令キャッシュ及び/又は密結合RAMを含むことができる。
少なくとも一実施例では、DMAは、PVAの構成要素がCPU1206とは無関係にシステム・メモリにアクセスできるようにしてもよい。少なくとも一実施例では、DMAは、多次元アドレッシング、及び/又はサーキュラ・アドレッシングを含むがこれらに限定されない、PVAに最適化を提供するために使用される任意の数の特徴をサポートしてもよい。少なくとも一実施例では、DMAは、6つ以上のアドレッシング次元までをサポートしてもよく、これには、限定することなく、ブロック幅、ブロック高さ、ブロック深度、水平ブロック・ステッピング、垂直ブロック・ステッピング、及び/又は深度ステッピングが含まれてもよい。
少なくとも一実施例では、ベクトル・プロセッサは、コンピュータ・ビジョン・アルゴリズムのためのプログラミングを効率的でフレキシブルに実行するように設計されてもよいプログラム可能なプロセッサとすることができ、信号処理機能を提供する。少なくとも一実施例では、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の組合せによって、スループット及びスピードが改善されてもよい。
少なくとも一実施例では、ベクトル・プロセッサのそれぞれは、命令キャッシュを含んでもよく、専用のメモリに結合されてもよい。その結果、少なくとも一実施例では、ベクトル・プロセッサのそれぞれは、他のベクトル・プロセッサとは無関係に実行されるように構成されてもよい。少なくとも一実施例では、特定のPVAに含まれるベクトル・プロセッサは、データ並列処理を用いるように構成されてもよい。たとえば、少なくとも一実施例では、単一のPVAに含まれる複数のベクトル・プロセッサは、共通のコンピュータ・ビジョン・アルゴリズムを画像の異なる領域上で実行してもよい。少なくとも一実施例では、特定のPVAに含まれるベクトル・プロセッサは、異なるコンピュータ・ビジョン・アルゴリズムを1つの画像上で同時に実行してもよく、又はさらには、異なるアルゴリズムを連続した画像上で、若しくは画像の部分上で実行してもよい。少なくとも一実施例では、とりわけ、任意の数のPVAがハードウェア加速クラスタに含まれてもよく、任意の数のベクトル・プロセッサが各PVAに含まれてもよい。少なくとも一実施例では、PVAは、システムの全体的な安全性を強化するために、追加のエラー訂正コード(「ECC」:Error Correction Code)メモリを含んでもよい。
少なくとも一実施例では、アクセラレータ1214は、オン・チップのコンピュータ・ビジョン・ネットワーク、及びスタティック・ランダム・アクセス・メモリ(「SRAM」)を含み、アクセラレータ1214のための高帯域幅、低レイテンシのSRAMを提供してもよい。少なくとも一実施例では、オン・チップ・メモリは、たとえば限定することなく、8つのフィールド設定可能なメモリ・ブロックを含む少なくとも4MBのSRAMを含んでもよく、これは、PVAからもDLAからもアクセス可能であってもよい。少なくとも一実施例では、メモリ・ブロックの各対は、アドバンスト・ペリフェラル・バス(「APB」:advanced peripheral bus)インターフェース、構成回路、コントローラ、及びマルチプレクサを含んでもよい。少なくとも一実施例では、任意のタイプのメモリが使用されてもよい。少なくとも一実施例では、PVA及びDLAは、メモリへの高速アクセスをPVA及びDLAに提供するバックボーンを介して、メモリにアクセスしてもよい。少なくとも一実施例では、バックボーンは、PVA及びDLAを(たとえばAPBを使用して)メモリに相互接続するオン・チップのコンピュータ・ビジョン・ネットワークを含んでもよい。
少なくとも一実施例では、オン・チップのコンピュータ・ビジョン・ネットワークは、何らかの制御信号/アドレス/データを送信する前に、PVAとDLAの両方が準備信号及び有効信号を提供することを判定するインターフェースを含んでもよい。少なくとも一実施例では、インターフェースは、制御信号/アドレス/データを送信するための別々の位相及び別々のチャネル、並びに継続的なデータ転送のためのバースト型通信を提供してもよい。少なくとも一実施例では、インターフェースは、国際標準化機構(「ISO」:Organization for Standardization)26262又は国際電気標準会議(「IEC」:International Electrotechnical Commission)61508の規格に準拠してもよいが、他の規格及びプロトコルが使用されてもよい。
少なくとも一実施例では、SoC1204のうちの1つ又は複数は、リアル・タイム・レイ・トレーシングのハードウェア・アクセラレータを含んでもよい。少なくとも一実施例では、リアル・タイム・レイ・トレーシングのハードウェア・アクセラレータを使用して、物体の(たとえば世界モデル内での)位置及び範囲が迅速且つ効率的に判定されて、RADAR信号解釈のため、音伝播合成及び/若しくは分析のため、SONARシステムのシミュレーションのため、一般波形の伝播シミュレーションのため、ローカリゼーション及び/若しくは他の機能を目的としたLIDARデータとの比較のため、並びに/又は他の使用法のためのリアル・タイムの可視化シミュレーションが生成されてもよい。
少なくとも一実施例では、アクセラレータ1214は、自律運転のための多様な使用法を有することができる。少なくとも一実施例では、PVAは、ADAS及び自律車両の主要な処理ステージに使用することができる。少なくとも一実施例では、PVAの性能は、低電力及び低レイテンシの予測可能な処理を必要とするアルゴリズム・ドメインに良好に適合する。言い換えれば、PVAは、低レイテンシ及び低電力の予測可能なラン・タイムを必要とするかもしれない半稠密(semi-dense)又は稠密な規則的計算に対して、データ・セットが小さくても良好に機能する。少なくとも一実施例では、車両1200内など、従来のコンピュータ・ビジョン・アルゴリズムを実行するようにPVAが設計され得るが、これは、それらが、物体検出及び整数数値の演算に有効となり得るからである。
たとえば、技術の少なくとも一実施例によれば、PVAを使用して、コンピュータ・ステレオ・ビジョンが実行されてもよい。少なくとも一実施例では、いくつかの例においてセミ・グローバル・マッチングに基づくアルゴリズムが使用されてもよいが、これは限定するものではない。少なくとも一実施例では、レベル3~5の自律運転のためのアプリケーションは、動き推定/ステレオ・マッチング(たとえば、動きからの構造化、歩行者認識、車線検出など)をオン・ザ・フライで使用する。少なくとも一実施例では、PVAは、2つの単眼カメラからの入力に対して、コンピュータ・ステレオ・ビジョン機能を実行してもよい。
少なくとも一実施例では、PVAを使用して、高密度オプティカル・フローが実行されてもよい。たとえば、少なくとも一実施例では、PVAは、未加工のRADARデータを(たとえば4Dの高速フーリエ変換を使用して)処理して、処理済みRADARデータを提供することができる。少なくとも一実施例では、PVAは、飛行時間の深度処理に使用され、たとえば未加工の飛行時間データを処理することにより、処理済みの飛行時間データが提供される。
少なくとも一実施例では、たとえば限定することなく、物体検出ごとに信頼性の尺度を出力するニューラル・ネットワークを含む、制御及び運転の安全性を強化するための任意のタイプのネットワークを実行するために、DLAが使用されてもよい。少なくとも一実施例では、信頼性は、他の検出と比較した各検出の確率として、若しくはその相対的な「重み」を提供するものとして表されても、又は解釈されてもよい。少なくとも一実施例では、信頼性尺度によって、どの検出を誤検出ではなく正検出とみなすべきかに関して、システムがさらなる判定を下せるようになる。少なくとも一実施例では、システムは、信頼性に対して閾値を設定し、閾値を超える検出だけを正検出とみなしてもよい。自動緊急ブレーキ(「AEB」:automatic emergency braking)が使用される実施例では、誤検出によって車両は自動的に緊急ブレーキをかけることになり、これは明らかに望ましくない。少なくとも一実施例では、非常に信頼性の高い検出が、AEBのトリガとみなされてもよい。少なくとも一実施例では、DLAは、信頼値を回帰するようにニューラル・ネットワークを実行してもよい。少なくとも一実施例では、ニューラル・ネットワークは、とりわけ境界ボックスの次元、(たとえば別のサブシステムから)取得した地面推定、車両1200の配向と相関しているIMUセンサ1266からの出力、距離、ニューラル・ネットワーク及び/又は他のセンサ(たとえば、LIDARセンサ1264若しくはRADARセンサ1260)から取得した物体の3Dロケーション推定などのパラメータの少なくともいくつかのサブセットを、その入力として取ってもよい。
少なくとも一実施例では、SoC1204のうちの1つ又は複数は、データ・ストア1216(たとえばメモリ)を含んでもよい。少なくとも一実施例では、データ・ストア1216は、SoC1204のオン・チップ・メモリであってもよく、このメモリは、GPU1208及び/又はDLA上で実行されるニューラル・ネットワークを記憶してもよい。少なくとも一実施例では、データ・ストア1216の容量は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分なほど大きくてもよい。少なくとも一実施例では、データ・ストア1216は、L2又はL3のキャッシュを備えてもよい。
少なくとも一実施例では、SoC1204のうちの1つ又は複数は、任意の数のプロセッサ1210(たとえば、組み込みプロセッサ)を含んでもよい。少なくとも一実施例では、プロセッサ1210は、ブート電力並びに管理機能及び関連するセキュリティ執行に対処するための専用プロセッサ及びサブシステムであってもよいブート及び電力管理プロセッサを含んでもよい。少なくとも一実施例では、ブート及び電力管理プロセッサは、SoC1204のブート・シーケンスの一部であってもよく、ラン・タイム電力管理サービスを提供してもよい。少なくとも一実施例では、ブート電力及び管理プロセッサは、クロックと電圧のプログラミング、システムの低電力状態への移行の支援、SoC1204の熱及び温度センサの管理、並びに/又はSoC1204の電力状態の管理を提供してもよい。少なくとも一実施例では、各温度センサは、その出力周波数が温度に比例するリング発振器として実装されてもよく、SoC1204は、リング発振器を使用して、CPU1206、GPU1208、及び/又はアクセラレータ1214の温度を検出してもよい。少なくとも一実施例では、温度が閾値を超えると判定された場合には、ブート及び電力管理プロセッサは、温度不良ルーチンに入り、SoC1204を低電力状態にし、且つ/又は車両1200を運転手-安全停止モードにしても(たとえば、車両1200を安全停止させる)よい。
少なくとも一実施例では、プロセッサ1210はさらに、オーディオ処理エンジンとしての役割を果たすことができる組み込みプロセッサのセットを含んでもよく、これは、多重インターフェースを介した多チャネルのオーディオ、及び幅広くフレキシブルな様々なオーディオI/Oインターフェースのための、完全なハードウェア・サポートを可能にするオーディオ・サブシステムであってもよい。少なくとも一実施例では、オーディオ処理エンジンは、専用RAMのあるデジタル信号プロセッサを有する専用プロセッサ・コアである。
少なくとも一実施例では、プロセッサ1210はさらに、低電力センサ管理及び立ち上げのユース・ケースをサポートするのに必要なハードウェア特徴を提供することができる常時オン・プロセッサ・エンジンを含んでもよい。少なくとも一実施例では、常時オン・プロセッサ・エンジンは、限定することなく、プロセッサ・コア、密結合RAM、サポート周辺装置(たとえば、タイマ、及び割込みコントローラ)、様々なI/Oコントローラ周辺装置、及びルーティング論理を含んでもよい。
少なくとも一実施例では、プロセッサ1210はさらに安全クラスタ・エンジンを含んでもよく、このエンジンは限定することなく、自動車用途の安全管理に対処するための専用のプロセッサ・サブシステムを含む。少なくとも一実施例では、安全クラスタ・エンジンは、限定することなく、2つ以上のプロセッサ・コア、密結合RAM、サポート周辺装置(たとえば、タイマ、及び割込みコントローラなど)、及び/又はルーティング論理を含んでもよい。安全モードでは、少なくとも一実施例においてロックステップ・モードで2つ以上のコアが動作し、これらの動作間で何らかの差を検出するための比較論理を有する単一コアとして機能してもよい。少なくとも一実施例では、プロセッサ1210はさらにリアル・タイム・カメラ・エンジンを含んでもよく、このエンジンは限定することなく、リアル・タイムのカメラ管理に対処するための専用のプロセッサ・サブシステムを含んでもよい。少なくとも一実施例では、プロセッサ1210はさらに、高ダイナミック・レンジの信号プロセッサを含んでもよく、この信号プロセッサは、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサを限定することなく含んでもよい。
少なくとも一実施例では、プロセッサ1210は、ビデオ画像合成器を含んでもよく、この合成器は、再生装置のウインドウに最終画像を生成するのにビデオ再生アプリケーションが必要とするビデオ後処理機能を実装する(たとえばマイクロプロセッサに実装された)処理ブロックであってもよい。少なくとも一実施例では、ビデオ画像合成器は、広角カメラ1270、周囲カメラ1274、及び/又はキャビン内監視カメラ・センサに対して、レンズゆがみ補正を実行してもよい。少なくとも一実施例では、キャビン内監視カメラ・センサは、好ましくは、キャビン内のイベントを識別し、それに適宜応答するように構成された、SoC1204の別のインスタンスで実行されているニューラル・ネットワークによって監視される。少なくとも一実施例では、キャビン内システムは、セルラー・サービスをアクティブ化し、電話をかけたり、電子メールを書いたり、車両の行き先を変更したり、車両のインフォテイメント・システム及び設定をアクティブ化又は変更したり、音声作動式のウェブ・サーフィンを提供したりするために、限定することなく読唇を実行してもよい。少なくとも一実施例では、ある一定の機能は、車両が自律モードで動作しているときにドライバにとって利用可能になり、それ以外のときには使用不可になる。
少なくとも一実施例では、ビデオ画像合成器は、空間と時間の両方のノイズ低減のための拡張された時間的ノイズ低減を含んでもよい。たとえば、少なくとも一実施例では、ビデオで動きが生じる場合には、ノイズ低減が空間情報に適切に重み付けして、隣接するフレームによって提供される情報の重みを軽くする。少なくとも一実施例では、画像又は画像の一部分が動きを含まない場合には、ビデオ画像合成器により実行される時間的ノイズ低減は、前の画像からの情報を使用して、現在の画像のノイズを低減してもよい。
少なくとも一実施例では、ビデオ画像合成器はまた、入力されたステレオ・レンズ・フレームに対してステレオ平行化を実行するように構成されてもよい。少なくとも一実施例では、ビデオ画像合成器はさらに、オペレーティング・システムのデスクトップが使用中のときに、ユーザ・インターフェースを合成するために使用されてもよく、GPU1208は、新規の表面を継続的にレンダリングする必要がなくなる。少なくとも一実施例では、GPU1208の電源が入れられ、アクティブで3Dレンダリングを行っているとき、性能及び応答性を向上させるために、ビデオ画像合成器を使用してGPU1208をオフロードしてもよい。
少なくとも一実施例では、SoC1204のうちの1つ又は複数のSoCはさらに、ビデオ及びカメラからの入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(「MIPI」:mobile industry processor interface)のカメラ直列インターフェース、高速インターフェース、並びに/又はカメラ及び関連ピクセルの入力機能に使用されてもよいビデオ入力ブロックを含んでもよい。少なくとも一実施例では、SoC1204のうちの1つ又は複数はさらに、入力/出力コントローラを含んでもよく、このコントローラはソフトウェアによって制御されてもよく、特定の役割に縛られていないI/O信号を受信するために使用されてもよい。
少なくとも一実施例では、SoC1204のうちの1つ又は複数のSoCはさらに、周辺装置、オーディオ・エンコーダ/デコーダ(「コーデック」)、電力管理、及び/又は他の装置との通信を可能にするための幅広い周辺装置インターフェースを含んでもよい。少なくとも一実施例では、SoC1204は、(たとえば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット(登録商標)チャネルを介して接続された)カメラからのデータ、センサ(たとえば、イーサネット(登録商標)チャネルを介して接続されてもよいLIDARセンサ1264、RADARセンサ1260など)からのデータ、バス1202からのデータ(たとえば、車両1200のスピード、ハンドル位置など)、(たとえば、イーサネット(登録商標)バス又はCANバスを介して接続された)GNSSセンサ1258からのデータなどを処理するために使用されてもよい。少なくとも一実施例では、SoC1204のうちの1つ又は複数のSoCはさらに、専用の高性能大容量ストレージ・コントローラを含んでもよく、このコントローラは独自のDMAエンジンを含んでもよく、ルーチンのデータ管理タスクからCPU1206を解放するために使用されてもよい。
少なくとも一実施例では、SoC1204は、自動化レベル3~5に及ぶフレキシブルなアーキテクチャを有するエンドツーエンドのプラットフォームであってもよく、それにより、多様性及び冗長性を得るためにコンピュータ・ビジョン及びADAS技法を活用し効率的に利用する包括的な機能的安全性アーキテクチャが提供され、フレキシブルで、信頼性の高い運転ソフトウェア・スタックが、深層学習ツールとともに提供される。少なくとも一実施例では、SoC1204は、従来のシステムより高速で、信頼性が高く、さらにはエネルギー効率及び空間効率が高い。たとえば、少なくとも一実施例では、アクセラレータ1214は、CPU1206、GPU1208、及びデータ・ストア1216と組み合わされると、レベル3~5の自律車両のための高速で効率的なプラットフォームを実現することができる。
少なくとも一実施例では、コンピュータ・ビジョン・アルゴリズムはCPU上で実行されてもよく、このアルゴリズムは、Cなどの高レベル・プログラミング言語を使用して構成されて、多様な視覚データにわたって多様な処理アルゴリズムを実行してもよい。しかし、少なくとも一実施例では、CPUは、多くのコンピュータ・ビジョン・アプリケーションの性能要件、たとえば実行時間及び電力消費に関する要件などを満足できないことが多い。少なくとも一実施例では、多くのCPUは、車両内のADASアプリケーション及び現実的なレベル3~5の自律車両において使用される複雑な物体検出アルゴリズムを、リアル・タイムで実行することができない。
本明細書に記載の実施例は、複数のニューラル・ネットワークを同時に且つ/又は順番に実行できるようにし、結果を組み合わせて、レベル3~5の自律運転機能を可能にすることができる。たとえば、少なくとも一実施例では、DLA又は個別GPU(たとえば、GPU1220)上で実行しているCNNは、テキスト及び単語認識を含んでもよく、ニューラル・ネットワークがそれについて特に訓練されてこなかった標識を含む交通標識を読み、理解できるようにする。少なくとも一実施例では、DLAはさらに、標識を識別し、解釈し、標識の意味的理解を提供することができ、その意味的理解を、CPUコンプレックス上で実行されている経路計画モジュールに渡すことができるニューラル・ネットワークを含んでもよい。
少なくとも一実施例では、レベル3、4、又は5の運転に関して、複数のニューラル・ネットワークが同時に実行されてもよい。たとえば、少なくとも一実施例では、電光と併せて「注意:点滅時は凍結状態」と示される警告標識は、いくつかのニューラル・ネットワークによって別々に解釈されても、集合的に解釈されてもよい。少なくとも一実施例では、こうした警告標識自体は、第1の導入済みニューラル・ネットワーク(たとえば、訓練されてきたニューラル・ネットワーク)によって交通標識として識別されてもよく、「点滅時は凍結状態」という文字は、第2の導入済みニューラル・ネットワークによって解釈されてもよく、点滅光が検出された場合には、このニューラル・ネットワークが、凍結状態が存在することを車両の(好ましくはCPUコンプレックス上で実行している)経路計画ソフトウェアに通知する。少なくとも一実施例では、点滅光は、第3の導入済みニューラル・ネットワークを複数のフレームにわたって動作させることによって識別されてもよく、点滅光の存在(又は存在しないこと)が、車両の経路計画ソフトウェアに通知される。少なくとも一実施例では、3つすべてのニューラル・ネットワークが、DLA内及び/又はGPU1208上などで同時に実行されてもよい。
少なくとも一実施例では、顔認識及び車両所有者識別のためのCNNは、カメラ・センサからのデータを使用して、車両1200の承認済みのドライバ及び/又は所有者の存在を識別してもよい。少なくとも一実施例では、常時オンのセンサ処理エンジンを使用して、所有者がドライバ用ドアに近づいてきたときに車両を解錠し、ライトを点灯させ、所有者がこうした車両から離れるときには、セキュリティ・モードでこうした車両を使用不可にしてもよい。こうして、SoC1204は、窃盗及び/又は自動車乗っ取りに対するセキュリティを実現する。
少なくとも一実施例では、緊急車両の検出及び識別のためのCNNは、マイクロフォン1296からのデータを使用して、緊急車両のサイレンを検出及び識別してもよい。少なくとも一実施例では、SoC1204は、環境及び市街地の音を分類するとともに、視覚データを分類するためにCNNを使用する。少なくとも一実施例では、DLA上で実行されるCNNは、緊急車両が近づいてくる相対的なスピードを(たとえばドップラ効果を使用することによって)識別するように訓練される。少なくとも一実施例では、CNNはまた、GNSSセンサ1258によって識別される、車両が稼働している地域に特有の緊急車両を識別するように訓練されてもよい。少なくとも一実施例では、欧州で稼働している場合には、CNNは欧州のサイレンを検出しようとし、北米の場合には、北米のサイレンだけを識別しようとする。少なくとも一実施例では、緊急車両が検出されると、緊急車両安全ルーチンを実行するための制御プログラムを使用して、車両の速度を落とし、道路脇に寄せ、車両を停止させ、且つ/又は緊急車両が通過するまで、超音波センサ1262を併用して車両をアイドリングにしてもよい。
少なくとも一実施例では、車両1200はCPU1218(たとえば、個別CPU又はdCPU)を含んでもよく、このCPUは高速相互接続(たとえば、PCIe)を介してSoC1204に結合されてもよい。少なくとも一実施例では、CPU1218は、たとえばX86プロセッサを含んでもよい。CPU1218は、たとえば、ADASセンサとSoC1204の間で潜在的に不整合な結果を調停すること、並びに/又はコントローラ1236及び/若しくはチップ上のインフォテイメント・システム(「インフォテイメントSoC」)1230の状態及び健全性を監視することを含め、様々な機能のうちの任意の機能を実行するために使用されてもよい。
少なくとも一実施例では、車両1200はGPU1220(たとえば、個別GPU又はdGPU)を含んでもよく、このGPUは高速相互接続(たとえば、NVIDIAのNVLINKチャネル)を介してSoC1204に結合されてもよい。少なくとも一実施例では、GPU1220は、冗長な及び/又は異なるニューラル・ネットワークを実行することなどによって、追加の人工知能機能を提供してもよく、車両1200のセンサからの入力(たとえば、センサ・データ)に少なくとも部分的に基づき、ニューラル・ネットワークを訓練及び/又は更新するために使用されてもよい。
少なくとも一実施例では、車両1200はさらに、ネットワーク・インターフェース1224を含んでもよく、このインターフェースは限定することなく、ワイヤレス・アンテナ1226(たとえば、セルラー・アンテナ、Bluetoothアンテナなど、異なる通信プロトコル向けの1つ又は複数のワイヤレス・アンテナ)を含んでもよい。少なくとも一実施例では、他の車両、及び/又はコンピューティング・デバイス(たとえば、乗員のクライアント・デバイス)とのインターネット・クラウド・サービス(たとえば、サーバ及び/又は他のネットワーク・デバイス)へのワイヤレス接続を可能にするために、ネットワーク・インターフェース1224が使用されてもよい。少なくとも一実施例では、他の車両と通信するために、車両120と他の車両との間に直接リンクが確立されてもよく、且つ/又は(たとえば、ネットワークにわたって、且つインターネットを介して)間接リンクが確立されてもよい。少なくとも一実施例では、直接リンクは、車車間通信リンクを使用して提供されてもよい。少なくとも一実施例では、車車間通信リンクは、車両1200の近傍の車両(たとえば、車両1200の前方、側方、及び/又は後方の車両)についての情報を車両1200に提供してもよい。少なくとも一実施例では、こうした前述した機能は、車両1200の協調型アダプティブ・クルーズ・コントロール機能の一部であってもよい。
少なくとも一実施例では、ネットワーク・インターフェース1224は、変調及び復調の機能を提供し、コントローラ1236がワイヤレス・ネットワークを介して通信できるようにするSoCを含んでもよい。少なくとも一実施例では、ネットワーク・インターフェース1224は、ベースバンドから無線周波数へのアップ・コンバージョン、及び無線周波数からベースバンドへのダウン・コンバージョンのための無線周波数フロント・エンドを含んでもよい。少なくとも一実施例では、周波数変換は、任意の技術的に実行可能なやり方で実行されてもよい。たとえば、周波数変換は、よく知られたプロセスにより、且つ/又はスーパー・ヘテロダイン・プロセスを使用して実行することができる。少なくとも一実施例では、無線周波数フロント・エンド機能は、別個のチップによって提供されてもよい。少なくとも一実施例では、ネットワーク・インターフェースは、LTE、WCDMA(登録商標)、UMTS、GSM、CDMA2000、Bluetooth、Bluetooth LE、Wi-Fi、Z-Wave、ZigBee、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介して通信するためのワイヤレス機能を含んでもよい。
少なくとも一実施例では、車両1200はさらにデータ・ストア1228を含んでもよく、このデータ・ストアは限定することなく、オフ・チップ(たとえばSoC1204上にない)ストレージを含んでもよい。少なくとも一実施例では、データ・ストア1228は、RAM、SRAM、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)、ビデオ・ランダム・アクセス・メモリ(「VRAM」:video random-access memory)、フラッシュ・メモリ、ハード・ディスク、並びに/又は少なくとも1ビットのデータを記憶することができる他の構成要素及び/若しくはデバイスを含む1つ若しくは複数のストレージ要素を、限定することなく含んでもよい。
少なくとも一実施例では、車両1200はさらに、マッピング、知覚、占有グリッド生成、及び/又は経路計画の機能を支援するためのGNSSセンサ1258(たとえば、GPS及び/又は補助GPSセンサ)を含んでもよい。少なくとも一実施例では、イーサネット(登録商標)からシリアル(たとえばRS-232)へのブリッジを有するUSBコネクタを使用するGPSをたとえば限定することなく含む任意の数のGNSSセンサ1258が使用されてもよい。
少なくとも一実施例では、車両1200はさらに、RADARセンサ1260を含んでもよい。少なくとも一実施例では、RADARセンサ1260は、暗闇及び/又は厳しい気象条件の中でも、長距離の車両検出を行うために車両1200によって使用されてもよい。少なくとも一実施例では、RADARの機能的安全性レベルは、ASIL Bであってもよい。少なくとも一実施例では、RADARセンサ1260は、制御のために(たとえば、RADARセンサ1260によって生成されたデータを送信するために)、また物体追跡データにアクセスするために、CANバス及び/又はバス1202を使用してもよく、いくつかの例では、未加工データにアクセスするためにイーサネット(登録商標)チャネルにアクセスできる。少なくとも一実施例では、多様なタイプのRADARセンサが使用されてもよい。たとえば限定することなく、RADARセンサ1260は、前方、後方、及び側方のRADAR使用に好適であってもよい。少なくとも一実施例では、RADARセンサ1260のうちの1つ又は複数のセンサは、パルス・ドップラRADARセンサである。
少なくとも一実施例では、RADARセンサ1260は、狭視野の長距離、広視野の短距離、側面を網羅する短距離など、異なる構成を含んでもよい。少なくとも一実施例では、長距離RADARは、アダプティブ・クルーズ・コントロール機能のために使用されてもよい。少なくとも一実施例では、長距離RADARシステムは、2つ以上の独立した走査によって実現される250m(メートル)の範囲内などの広視野を提供してもよい。少なくとも一実施例では、RADARセンサ1260は、静的物体と移動している物体とを区別しやすくしてもよく、緊急ブレーキ支援及び前方衝突警告を行うためにADASシステム1238によって使用されてもよい。少なくとも一実施例では、長距離RADARシステムに含まれるセンサ1260は、複数の(たとえば6つ以上の)固定RADARアンテナ、並びに高速CAN及びFlexRayインターフェースを有するモノスタティックのマルチモードRADARを、限定することなく含んでもよい。少なくとも一実施例では、6つのアンテナがある場合、中央の4つのアンテナは、隣接した車線からの干渉が最小の状態で、より高速で車両1200の周囲を記録するように設計された集中したビーム・パターンを生成してもよい。少なくとも一実施例では、他の2つのアンテナは、視野を拡張してもよく、車両1200の車線に入る又はそこから出る車両を迅速に検出するのを可能にする。
少なくとも一実施例では、中距離RADARシステムは、一例として最大160m(前方)、又は80m(後方)の範囲、及び最大42度(前方)、又は150度(後方)の視野を含んでもよい。少なくとも一実施例では、短距離RADARシステムは、限定することなく、後方バンパの両端部に設置されるように設計された任意の数のRADARセンサ1260を含んでもよい。後方バンパの両端部に設置されたとき、少なくとも一実施例では、RADARセンサ・システムは、後方向及び車両隣の死角を常に監視する2本のビームを生成してもよい。少なくとも一実施例では、短距離RADARシステムは、死角検出及び/又は車線変更支援を行うために、ADASシステム1238において使用されてもよい。
少なくとも一実施例では、車両1200はさらに、超音波センサ1262を含んでもよい。少なくとも一実施例では、超音波センサ1262は、車両1200の前方、後方、及び/又は側方位置に配置されてもよく、駐車支援のため、且つ/又は占有グリッドを生成し更新するために使用されてもよい。少なくとも一実施例では、多様な超音波センサ1262が使用されてもよく、異なる検出範囲(たとえば、2.5m、4m)には異なる超音波センサ1262が使用されてもよい。少なくとも一実施例では、超音波センサ1262は、機能的安全性レベルASIL Bで動作してもよい。
少なくとも一実施例では、車両1200は、LIDARセンサ1264を含んでもよい。少なくとも一実施例では、LIDARセンサ1264は、物体及び歩行者の検出、緊急ブレーキ、衝突回避、及び/又は他の機能のために使用されてもよい。少なくとも一実施例では、LIDARセンサ1264は、機能的安全性レベルASIL Bで動作してもよい。少なくとも一実施例では、車両1200は、複数のLIDARセンサ1264(たとえば、2つ、4つ、6つなど)を含んでもよく、これらのセンサは、(たとえばデータをギガビット・イーサネット(登録商標)・スイッチに提供するために)イーサネット(登録商標)チャネルを使用してもよい。
少なくとも一実施例では、LIDARセンサ1264は、360度の視野について、物体及びそれらの距離のリストを提供可能であってもよい。少なくとも一実施例では、市販のLIDARセンサ1264は、たとえば宣伝された範囲がおおよそ100mであり、精度が2cm~3cmであり、100Mbpsのイーサネット(登録商標)接続をサポートしてもよい。少なくとも一実施例では、1つ又は複数の非突出型LIDARセンサが使用されてもよい。こうした実施例では、LIDARセンサ1264は、車両1200の前方、後方、側方、及び/又は角位置に組み込むことができる小さいデバイスを含んでもよい。少なくとも一実施例では、こうした実施例のLIDARセンサ1264は、最大120度の水平視野、及び35度の垂直視野を、低反射性の物体に対しても200mの範囲で提供してもよい。少なくとも一実施例では、前方に取り付けられたLIDARセンサ1264は、45度~135度の水平視野をもたらすように構成されてもよい。
少なくとも一実施例では、3DフラッシュLIDARなどのLIDAR技術も使用されてよい。少なくとも一実施例では、3DフラッシュLIDARは、レーザのフラッシュを送信源として使用して、車両1200の周囲を最大でおおよそ200mまで照射する。少なくとも一実施例では、フラッシュLIDARユニットは、限定することなくレセプタを含み、このレセプタは、レーザ・パルスの通過時間及び各ピクセルにおける反射光を記録し、それらは、車両1200から物体までの範囲に対応する。少なくとも一実施例では、フラッシュLIDARによって、非常に正確でゆがみのない周囲画像が、レーザのフラッシュごとに生成できるようになる。少なくとも一実施例では、4つのフラッシュLIDARが、車両1200の各側面に1つ導入されてもよい。少なくとも一実施例では、3DフラッシュLIDARシステムは、ファン以外に可動部品のない半導体3D凝視アレイ(staring array)のLIDARカメラ(たとえば、非走査型LIDARデバイス)を、限定することなく含む。少なくとも一実施例では、フラッシュLIDARデバイスは、フレーム当たり5ナノ秒のクラスI(目に安全な)レーザ・パルスを使用してもよく、3D範囲の点群及び位置同期された(co-registered)強度データとして反射レーザ光を捕捉してもよい。
少なくとも一実施例では、車両1200はさらにIMUセンサ1266を含んでもよい。少なくとも一実施例では、IMUセンサ1266は、車両1200の後方車軸の中央に位置付けられてもよい。少なくとも一実施例では、IMUセンサ1266は、たとえば限定することなく、加速度計、磁力計、ジャイロスコープ、磁気コンパス、複数の磁気コンパス及び/又は他のタイプのセンサを含んでもよい。6軸の用途など少なくとも一実施例では、IMUセンサ1266は限定することなく、加速度計及びジャイロスコープを含んでもよい。9軸の用途など少なくとも一実施例では、IMUセンサ1266は限定することなく、加速度計、ジャイロスコープ、及び磁力計を含んでもよい。
少なくとも一実施例では、IMUセンサ1266は、微小電気機械システム(「MEMS」:micro-electro-mechanical systems)慣性センサ、高感度GPS受信機、及び先進のKalmanフィルタリング・アルゴリズムを組み合わせて、位置、速度、及び姿勢の推定値を提供する小型の高性能GPS補強型慣性航法システム(「GPS/INS」:GPS-Aided Inertial Navigation System)として実装されてもよい。少なくとも一実施例では、IMUセンサ1266により、車両1200は、速度変化を直接観察しそれをGPSからIMUセンサ1266に相関させることによって、磁気センサからの入力を必要とせずに車両1200の方位を推定できるようになる。少なくとも一実施例では、IMUセンサ1266及びGNSSセンサ1258は、単一の統合ユニットに組み合わされてもよい。
少なくとも一実施例では、車両1200は、車両1200の中及び/又はその周りに設置されたマイクロフォン1296を含んでもよい。少なくとも一実施例では、マイクロフォン1296は、とりわけ緊急車両の検出及び識別のために使用されてもよい。
少なくとも一実施例では、車両1200はさらに、ステレオ・カメラ1268、広角カメラ1270、赤外線カメラ1272、周囲カメラ1274、長距離カメラ1298、中距離カメラ1276、及び/又は他のカメラ・タイプを含む任意の数のカメラ・タイプを含んでもよい。少なくとも一実施例では、カメラは、車両1200の全周囲の周りで画像データを捕捉するために使用されてもよい。少なくとも一実施例では、どのタイプのカメラが使用されるかは、車両1200に応じて異なる。少なくとも一実施例では、車両1200の周りで必要な被写域を提供するために、カメラ・タイプの任意の組合せが使用されてもよい。少なくとも一実施例では、導入されるカメラの数は、実施例に応じて異なってもよい。たとえば、少なくとも一実施例では、車両1200は6台のカメラ、7台のカメラ、10台のカメラ、12台のカメラ、又は別の数のカメラを含むことができる。少なくとも一実施例では、カメラは、一例として限定することなく、ギガビット・マルチメディア・シリアル・リンク(「GMSL」:Gigabit Multimedia Serial Link)及び/又はギガビット・イーサネット(登録商標)通信をサポートしてもよい。少なくとも一実施例では、各カメラは、図12A及び図12Bに関して本明細書でさらに詳細に上で説明されているようであり得る。
少なくとも一実施例では、車両1200はさらに、振動センサ1242を含んでもよい。少なくとも一実施例では、振動センサ1242は、車軸など、車両1200の構成要素の振動を測定してもよい。たとえば、少なくとも一実施例では、振動の変化は、路面の変化を示すことがある。少なくとも一実施例では、2つ以上の振動センサ1242が使用される場合には、路面の摩擦又はすべり量を判定するために振動の差が使用されてもよい(たとえば、動力により駆動される車軸と自由回転する車軸との間に振動差がある場合)。
少なくとも一実施例では、車両1200は、ADASシステム1238を含んでもよい。少なくとも一実施例では、ADASシステム1238は、限定することなく、いくつかの例においてSoCを含んでもよい。少なくとも一実施例では、ADASシステム1238は、限定することなく、任意の数及び任意の組合せの、自律/アダプティブ/自動のクルーズ・コントロール(「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」:ear cross-traffic warning)システム、衝突警告(「CW」:collision warning)システム、車線センタリング(「LC」:ane centering)システム、並びに/又は他のシステム、特徴、及び/若しくは機能を含んでもよい。
少なくとも一実施例では、ACCシステムは、RADARセンサ1260、LIDARセンサ1264、及び/又は任意の数のカメラを使用してもよい。少なくとも一実施例では、ACCシステムは、縦方向ACCシステム及び/又は横方向ACCシステムを含んでもよい。少なくとも一実施例では、縦方向ACCシステムは、車両1200の直前の別の車両までの距離を監視及び制御し、車両1200のスピードを自動的に調節して、前の車両からの安全な距離を維持する。少なくとも一実施例では、横方向ACCシステムは、距離の維持を実行し、必要なときに車線変更するよう車両1200に通知する。少なくとも一実施例では、横方向ACCは、LC及びCWなどの他のADAS用途に関係する。
少なくとも一実施例では、CACCシステムは、他の車両からの情報を使用し、この情報は、ワイヤレス・リンクにより、又は間接的にネットワーク接続を介して(たとえばインターネットを介して)、他の車両からネットワーク・インターフェース1224及び/又はワイヤレス・アンテナ1226により受信されてもよい。少なくとも一実施例では、車車間(「V2V」:vehicle-to-vehicle)通信リンクによって直接リンクが提供されてもよく、一方インフラストラクチャ車間(「I2V」:infrastructure-to-vehicle)通信リンクによって間接リンクが提供されてもよい。一般に、V2V通信は、すぐ前の先行車両(たとえば、車両1200のすぐ前で同じ車線にいる車両)についての情報を提供し、I2V通信は、さらにその前の交通についての情報を提供する。少なくとも一実施例では、CACCシステムは、I2VとV2Vの情報源のいずれか又は両方を含んでもよい。少なくとも一実施例では、車両1200の前の車両についての情報があれば、CACCシステムは信頼性をさらに高めることができ、交通の流れをより円滑にし、路上での渋滞を低減できる可能性を有する。
少なくとも一実施例では、FCWシステムは、危険物に対してドライバに忠告するように設計され、それによりこうしたドライバは修正措置を取ることができる。少なくとも一実施例では、FCWシステムは正面カメラ及び/又はRADARセンサ1260を使用し、これらは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックを提供するように電気的に結合されている専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。少なくとも一実施例では、FCWシステムは、音、視覚的警告、振動、及び/又はクイック・ブレーキ・パルスなどの形で警告を提供してもよい。
少なくとも一実施例では、AEBシステムは、別の車両又は他の物体との差し迫った正面衝突を検出し、指定された時間内又は距離パラメータ内にドライバが修正措置を取らない場合には、自動でブレーキをかけてもよい。少なくとも一実施例では、AEBシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに結合された正面カメラ及び/又はRADARセンサ1260を使用してもよい。少なくとも一実施例では、AEBシステムが危険物を検出したとき、AEBシステムは通常、修正措置を取って衝突を避けるよう最初にドライバに忠告し、ドライバが修正措置を取らない場合には、AEBシステムは、予測される衝突を防ぐ又は少なくともその衝撃を軽減するために自動的にブレーキをかけてもよい。少なくとも一実施例では、AEBシステムは、ダイナミック・ブレーキ・サポート及び/又は衝突直前ブレーキなどの技法を含んでもよい。
少なくとも一実施例では、LDWシステムは、車両1200が車線の目印に交差したときにドライバに忠告するために、ハンドル又は座席の振動など、視覚的、聴覚的、及び/又は触覚的な警告を提供する。少なくとも一実施例では、ドライバが方向指示器を作動させることなどによって意図的な車線逸脱を示す場合には、LDWシステムは作動しない。少なくとも一実施例では、LDWシステムは、正面カメラを使用してもよく、これは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックを提供するように電気的に結合することができる専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。少なくとも一実施例では、LKAシステムは、LDWシステムの変形形態である。少なくとも一実施例では、LKAシステムは、車両1200が車両1200の車線からはみ出し始めた場合に、車両1200を修正するように操縦入力又はブレーキ制御を提供する。
少なくとも一実施例では、BSWシステムは、自動車の死角にある車両を検出し、ドライバに警告する。少なくとも一実施例では、BSWシステムは、視覚的、聴覚的、及び/又は触覚的なアラートを提供して、合流又は車線変更が安全ではないことを示してもよい。少なくとも一実施例では、BSWシステムは、ドライバが方向指示器を使用したときに追加の警告を提供してもよい。少なくとも一実施例では、BSWシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに結合された背面カメラ及び/又はRADARセンサ1260を使用してもよく、これらの専用のプロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合されている。
少なくとも一実施例では、RCTWシステムは、車両1200の後退時に、後方カメラの範囲外に物体が検出されたときに、視覚的、聴覚的、及び/又は触覚的な通知を提供してもよい。少なくとも一実施例では、RCTWシステムは、衝突を回避するために確実に車両ブレーキがかけられるように、AEBシステムを含む。少なくとも一実施例では、RCTWシステムは、1つ又は複数の背面RADARセンサ1260を使用してもよく、これはディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックを提供するように電気的に結合された専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。
少なくとも一実施例では、従来のADASシステムは、誤検出結果を出しがちなことがあり、これはドライバにとっては迷惑で気が散るものであり得るが、通常は大したことにはならない。なぜなら、従来のADASシステムは、ドライバに忠告し、安全を要する状態が本当に存在し、それに適宜対応するかどうかを、ドライバが判断できるようにするからである。少なくとも一実施例では、結果が矛盾する場合、一次コンピュータ(たとえば、コントローラ1236の第1のコントローラ)からの結果に従うか、又は二次コンピュータ(たとえば、コントローラ1236の第2のコントローラ)からの結果に従うかどうかを、車両1200自体が判断する。たとえば、少なくとも一実施例では、ADASシステム1238は、バックアップ・コンピュータの合理性モジュールに知覚情報を抵抗するための、バックアップ及び/又は二次コンピュータであってもよい。少なくとも一実施例では、バックアップ・コンピュータの合理性モニタが、ハードウェア構成要素上の冗長性の多様なソフトウェアを実行して、知覚の誤り及び動的な運転タスクを検出してもよい。少なくとも一実施例では、ADASシステム1238からの出力は、監視MCUに提供されてもよい。少なくとも一実施例では、一次コンピュータからの出力と二次コンピュータからの出力とが矛盾する場合には、監視MCUが、安全な動作を確保するために矛盾をどのように調和させるかを判定する。
少なくとも一実施例では、一次コンピュータは、一次コンピュータの選択した結果の信頼性を示す信頼性スコアを、監視MCUに提供するように構成されてもよい。少なくとも一実施例では、信頼性スコアが閾値を超える場合には、二次コンピュータが矛盾する又は一貫性のない結果を提供しているかどうかに関わらず、監視MCUは一次コンピュータの指示に従ってもよい。少なくとも一実施例では、信頼性スコアが閾値を満足せず、一次コンピュータと二次コンピュータが異なる結果(たとえば、矛盾)を示す場合には、監視MCUは、コンピュータ同士を調停して、適切な結果を判定してもよい。
少なくとも一実施例では、二次コンピュータが誤アラームを提供する条件を、一次コンピュータからの出力と二次コンピュータからの出力とに少なくとも部分的に基づき判定するように訓練及び構成されたニューラル・ネットワークを、監視MCUが実行するように構成されてもよい。少なくとも一実施例では、監視MCUのニューラル・ネットワークは、二次コンピュータの出力が信用されてもよいときと、信用できないときとを学習してもよい。たとえば、少なくとも一実施例では、二次コンピュータがRADARベースのFCWシステムである場合、監視MCUのニューラル・ネットワークは、アラームをトリガする排水溝の格子又はマンホール・カバーなど、実際には危険物ではない金属物体をFCWシステムが識別するときを学習してもよい。少なくとも一実施例では、二次コンピュータがカメラ・ベースのLDWシステムである場合、自転車や歩行者が存在し、車線逸脱が実際には最も安全な操作であるときに、監視MCUのニューラル・ネットワークはLDWを無効にするように学習してもよい。少なくとも一実施例では、監視MCUは、ニューラル・ネットワークを関連するメモリとともに実行するのに好適なDLA又はGPUのうちの少なくとも1つを含んでもよい。少なくとも一実施例では、監視MCUは、SoC1204の構成要素を備えても、且つ/又はその構成要素として含まれてもよい。
少なくとも一実施例では、ADASシステム1238は、コンピュータ・ビジョンの従来のルールを使用してADAS機能を実行する二次コンピュータを含んでもよい。少なくとも一実施例では、二次コンピュータは、従来のコンピュータ・ビジョン・ルール(if-thenルール)を使用してもよく、ニューラル・ネットワークが監視MCUに存在することによって、信頼性、安全性、及び性能が向上してもよい。たとえば、少なくとも一実施例では、多様な実装及び意図的な非同一性により、特にソフトウェア(又はソフトウェアとハードウェアのインターフェース)の機能によって生じる誤りに対し、システム全体の誤り耐性が高まる。たとえば、少なくとも一実施例では、一次コンピュータ上で実行中のソフトウェアにバグ又はエラーがあり、二次コンピュータ上で実行中の非同一のソフトウェア・コードが、全体的に一貫性のある結果を提供する場合には、監視MCUは、全体的な結果が正しく、一次コンピュータ上のソフトウェア又はハードウェアのバグが重大なエラーを引き起こしていないという、より高い信頼性を有してもよい。
少なくとも一実施例では、ADASシステム1238の出力は、一次コンピュータの知覚ブロック、及び/又は一次コンピュータの動的運転タスクブロックに供給されてもよい。たとえば、少なくとも一実施例では、ADASシステム1238が、直前の物体に起因して正面衝突警告を示している場合には、知覚ブロックは、物体を識別するときにこの情報を使用してもよい。少なくとも一実施例では、二次コンピュータは、本明細書に記載するように、訓練済みの、したがって誤検出のリスクを低減する独自のニューラル・ネットワークを有してもよい。
少なくとも一実施例では、車両1200はさらに、インフォテイメントSoC1230(たとえば、車両内インフォテイメント・システム(IVI):in-vehicle infotainment system)を含んでもよい。インフォテイメント・システム1230はSoCとして図示及び説明されるが、少なくとも一実施例では、SoCではなくてもよく、限定することなく2つ以上の個別の構成要素を含んでもよい。少なくとも一実施例では、インフォテイメントSoC1230は、限定することなく、ハードウェアとソフトウェアの組合せを含んでもよく、この組合せを使用して、オーディオ(たとえば、音楽、パーソナル・デジタル・アシスタント、ナビゲーション命令、ニュース、ラジオなど)、ビデオ(たとえば、TV、映画、ストリーミングなど)、電話(たとえば、ハンズフリー通話)、ネットワーク接続(たとえば、LTE、Wi-Fiなど)、及び/又は情報サービス(たとえば、ナビゲーション・システム、後方駐車支援、無線データ・システム、車両関連情報、たとえば燃料レベル、合計走行距離、ブレーキ燃料レベル、オイル・レベル、ドアの開閉、空気フィルタ情報など)を車両1200に提供してもよい。たとえば、インフォテイメントSoC1230は、ラジオ、ディスク再生装置、ナビゲーション・システム、ビデオ再生装置、USB及びBluetooth接続、カーピュータ、車内エンタテイメント、Wi-Fi、ハンドル・オーディオ制御、ハンズフリー音声制御、ヘッド・アップ・ディスプレイ(「HUD」:heads-up display)、HMIディスプレイ1234、テレマテックス・デバイス、(たとえば、様々な構成要素、特徴、及び/若しくはシステムを制御及び/若しくは相互作用するための)制御パネル、並びに/又は他の構成要素を含むことができる。少なくとも一実施例では、さらにインフォテイメントSoC1230を使用して、ADASシステム1238からの情報、車両操作計画、軌道などの自律運転情報、周囲環境情報(たとえば、交差点情報、車両情報、道路情報など)、及び/又は他の情報などの(たとえば、視覚的及び/又は聴覚的な)情報が、車両1200のユーザに提供されてもよい。
少なくとも一実施例では、インフォテイメントSoC1230は、任意の量及びタイプのGPU機能を含んでもよい。少なくとも一実施例では、インフォテイメントSoC1230は、バス1202を介して、車両1200の他のデバイス、システム、及び/又は構成要素と通信してもよい。少なくとも一実施例では、インフォテイメントSoC1230は監視MCUに結合されてもよく、それにより、一次コントローラ1236(たとえば、車両1200の一次及び/又はバックアップのコンピュータ)が故障したときに、インフォテイメント・システムのGPUが、一部の自己運転機能を実行してもよい。少なくとも一実施例では、インフォテイメントSoC1230は、本明細書に記載するように、車両1200を運転手-安全停止モードにしてもよい。
少なくとも一実施例では、車両1200はさらに、計器クラスタ1232(たとえば、デジタル・ダッシュボード、電子計器クラスタ、デジタル計器パネルなど)を含んでもよい。少なくとも一実施例では、計器クラスタ1232は、限定することなく、コントローラ、及び/又はスーパーコンピュータ(たとえば、個別のコントローラ又はスーパーコンピュータ)を含んでもよい。少なくとも一実施例では、計器クラスタ1232は、限定することなく、スピード・メータ、燃料レベル、油圧、タコメータ、オドメータ、方向指示器、シフトレバー位置インジケータ、シート・ベルト警告灯、バーキング・ブレーキ警告灯、エンジン故障灯、補助拘束システム(たとえば、エアバッグ)情報、ライト制御、安全システム制御、ナビゲーション情報など、任意の数及び組合せの計器セットを含んでもよい。いくつかの例では、インフォテイメントSoC1230と計器クラスタ1232との間で、情報が表示及び/又は共有されてもよい。少なくとも一実施例では、計器クラスタ1232は、インフォテイメントSoC1230の一部として含まれてもよく、又はその逆であってもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図12Cのシステムにおいて使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図12Dは、少なくとも一実施例による、クラウド・ベースのサーバと図12Aの自律車両1200との間で通信するためのシステム1276の図である。少なくとも一実施例では、システムは、限定することなく、サーバ1278、ネットワーク1290、並びに車両1200を含む任意の数及びタイプの車両を含んでもよい。少なくとも一実施例では、サーバ1278は、限定することなく、複数のGPU1284(A)~1284(H)(本明細書ではまとめてGPU1284と呼ぶ)、PCIeスイッチ1282(A)~1282(D)(本明細書ではまとめてPCIeスイッチ1282と呼ぶ)、及び/又はCPU1280(A)~1280(B)(本明細書ではまとめてCPU1280と呼ぶ)を含んでもよい。少なくとも一実施例では、GPU1284、CPU1280、及びPCIeスイッチ1282は、たとえば限定することなく、NVIDIAにより開発されたNVLinkインターフェース1288、及び/又はPCIe接続1286などの高速相互接続によって、相互接続されてもよい。少なくとも一実施例では、GPU1284同士は、NVLink及び/又はNVSスイッチSoCを介して接続され、GPU1284とPCIeスイッチ1282は、PCIe相互接続を介して接続される。8個のGPU1284、2個のCPU1280、及び4個のPCIeスイッチ1282が図示してあるが、これは限定するものではない。少なくとも一実施例では、サーバ1278のそれぞれは、限定することなく、任意の数のGPU1284、CPU1280、及び/又はPCIeスイッチ1282を任意の組合せで含んでもよい。たとえば、少なくとも一実施例では、サーバ1278は、それぞれが8個、16個、32個、及び/又はそれ以上のGPU1284を含むことができる。
少なくとも一実施例では、サーバ1278は、最近始まった道路工事などの予想外の又は変更された道路状態を示す画像を表す画像データを、ネットワーク1290を介して車両から受信してもよい。少なくとも一実施例では、サーバ1278は、更新済み若しくはそうではないニューラル・ネットワーク1292及び/又は、限定することなく交通状態及び道路状態に関する情報を含む地図情報1294を、ネットワーク1290を介して車両に送信してもよい。少なくとも一実施例では、地図情報1294の更新は、建築現場、穴、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ1222に対する更新を、限定することなく含んでもよい。少なくとも一実施例では、ニューラル・ネットワーク1292及び/又は地図情報1294は、環境内の任意の数の車両から受信したデータに表された新しい訓練及び/又は経験から得られたものであってもよく、且つ/又は、データ・センタにおいて(たとえば、サーバ1278及び/又は他のサーバを使用して)実行された訓練に少なくとも部分的に基づき、得られたものであってもよい。
少なくとも一実施例では、サーバ1278を使用して、訓練データに少なくとも部分的に基づき、機械学習モデル(たとえば、ニューラル・ネットワーク)が訓練されてもよい。少なくとも一実施例では、訓練データは車両によって生成されてもよく、且つ/又はシミュレーションで(たとえば、ゲーム・エンジンを使用して)生成されてもよい。少なくとも一実施例では、(たとえば、関連するニューラル・ネットワークが教師あり学習により恩恵を受ける場合には)任意の量の訓練データがタグ付けされ、且つ/又は他の前処理を受ける。少なくとも一実施例では、(たとえば、関連するニューラル・ネットワークが教師あり学習を必要としない場合には)任意の量の訓練データはタグ付け及び/又は前処理されない。少なくとも一実施例では、機械学習モデルが訓練されると、機械学習モデルは車両によって使用されてもよく(たとえば、ネットワーク1290を介して車両に送信されてもよく、且つ/又は機械学習モデルは、車両を遠隔監視するためにサーバ1278によって使用されてもよい。
少なくとも一実施例では、サーバ1278は車両からデータを受信し、リアル・タイムの知的推論ができるように、最新のリアル・タイムのニューラル・ネットワークにデータを適用してもよい。少なくとも一実施例では、サーバ1278は、NVIDIAによって開発されたDGX及びDGXステーション・マシンなど、GPU1284によって動く深層学習スーパーコンピュータ及び/又は専用AIコンピュータを含んでもよい。しかし、少なくとも一実施例では、サーバ1278は、CPUにより動くデータ・センタを使用する深層学習インフラストラクチャを含んでもよい。
少なくとも一実施例では、サーバ1278の深層学習インフラストラクチャは、高速のリアル・タイムの推論が可能であってもよく、その機能を使用して、車両1200のプロセッサ、ソフトウェア、及び/又は関連ハードウェアの健全性を評価及び確認してもよい。たとえば、少なくとも一実施例では、深層学習インフラストラクチャは、一連の画像、及び/又はその一連の画像において(たとえば、コンピュータ・ビジョン及び/又は他の機械学習の物体分類技法により)車両1200が位置特定した物体など、周期的な更新を車両1200から受信してもよい。少なくとも一実施例では、深層学習インフラストラクチャは、独自のニューラル・ネットワークを実行して物体を識別し、それを車両1200によって識別された物体と比較してもよく、結果が一致せず、車両1200のAIが故障していると深層学習インフラストラクチャが結論づけた場合には、サーバ1278は、車両1200のフェイル・セーフ・コンピュータに制御を掌握し、乗員に通知し、安全な停車操作を完了するよう命じる信号を車両1200に送信してもよい。
少なくとも一実施例では、サーバ1278は、GPU1284、及び1つ又は複数のプログラム可能な推論アクセラレータ(たとえば、NVIDIAのTensorRT3デバイス)を含んでもよい。少なくとも一実施例では、GPUにより動くサーバと、推論の加速とを組み合わせることによって、リアル・タイムの応答を可能にすることができる。性能がそれほど重要ではない場合など、少なくとも一実施例では、CPU、FPGA、及び他のプロセッサにより動くサーバが、推論に使用されてもよい。少なくとも一実施例では、1つ又は複数の実施例を実行するために、ハードウェア構造体915が使用される。ハードウェア構造体915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。
コンピュータ・システム
図13は、例示的なコンピュータ・システムを示すブロック図であり、このコンピュータ・システムは、少なくとも一実施例による、命令を実行するための実行ユニットを含んでもよいプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SoC)、又はこれらの何らかの組合せを有するシステムであってもよい。少なくとも一実施例では、コンピュータ・システム1300は、本明細書に記載の実施例などにおいて本開示に従ってデータを処理するためのアルゴリズムを実行する論理を含む実行ユニットを使用するための、プロセッサ1302などの構成要素を、限定することなく含んでもよい。少なくとも一実施例では、コンピュータ・システム1300は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、XeonTM、Itanium(登録商標)、XScaleTM及び/又はStrongARMTM、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含んでもよいが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含め)他のシステムが使用されてもよい。少なくとも一実施例では、コンピュータ・システム1300は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なWINDOWS(登録商標)のオペレーティング・システムのあるバージョンを実行してもよいが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux(登録商標))、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースが使用されてもよい。
図13は、例示的なコンピュータ・システムを示すブロック図であり、このコンピュータ・システムは、少なくとも一実施例による、命令を実行するための実行ユニットを含んでもよいプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SoC)、又はこれらの何らかの組合せを有するシステムであってもよい。少なくとも一実施例では、コンピュータ・システム1300は、本明細書に記載の実施例などにおいて本開示に従ってデータを処理するためのアルゴリズムを実行する論理を含む実行ユニットを使用するための、プロセッサ1302などの構成要素を、限定することなく含んでもよい。少なくとも一実施例では、コンピュータ・システム1300は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、XeonTM、Itanium(登録商標)、XScaleTM及び/又はStrongARMTM、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含んでもよいが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含め)他のシステムが使用されてもよい。少なくとも一実施例では、コンピュータ・システム1300は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なWINDOWS(登録商標)のオペレーティング・システムのあるバージョンを実行してもよいが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux(登録商標))、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースが使用されてもよい。
実施例は、携帯型デバイス及び組み込みアプリケーションなど、他のデバイスで使用されてもよい。携帯型デバイスのいくつかの例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」:personal digital assistants)、及び携帯型PCを含む。少なくとも一実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」:digital signal processor)、システム・オン・チップ、ネットワーク・コンピュータ(「NetPC」:network computers)、セット・トップ・ボックス、ネットワーク・ハブ、広域ネットワーク(「WAN」:wide area network)スイッチ、又は少なくとも一実施例による1つ又は複数の命令を実行することができる任意の他のシステムを含んでもよい。
少なくとも一実施例では、コンピュータ・システム1300は、限定することなくプロセッサ1302を含んでもよく、このプロセッサ1302は限定することなく、本明細書に記載の技法による機械学習モデルの訓練及び/又は推論を実行するための1つ又は複数の実行ユニット1308を含んでもよい。少なくとも一実施例では、コンピュータ・システム1300は、シングル・プロセッサのデスクトップ又はサーバ・システムであるが、別の実施例では、コンピュータ・システム1300はマルチプロセッサ・システムであってもよい。少なくとも一実施例では、プロセッサ1302は、限定することなく、複合命令セット・コンピュータ(「CISC」:complex instruction set computer)マイクロプロセッサ、縮小命令セット・コンピューティング(「RISC」)マイクロプロセッサ、超長命令語(「VLIW」)マイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は任意の他のプロセッサ・デバイス、たとえばデジタル信号プロセッサなどを含んでもよい。少なくとも一実施例では、プロセッサ1302は、プロセッサ・バス1310に結合されてもよく、このプロセッサ・バスは、プロセッサ1302とコンピュータ・システム1300内の他の構成要素との間でデジタル信号を送信してもよい。
少なくとも一実施例では、プロセッサ1302は、限定することなく、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)1304を含んでもよい。少なくとも一実施例では、プロセッサ1302は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ1302の外部にあってもよい。他の実施例は、特定の実装形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せも含んでよい。少なくとも一実施例では、レジスタ・ファイル1306は、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタを限定することなく含む様々レジスタに、異なるタイプのデータを記憶してもよい。
少なくとも一実施例では、整数及び浮動小数点の演算を実行するための論理を限定することなく含む実行ユニット1308も、プロセッサ1302にある。少なくとも一実施例では、プロセッサ1302は、ある一定のマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」:read only memory)も含んでよい。少なくとも一実施例では、実行ユニット1308は、パック命令セット1309に対処する論理を含んでもよい。少なくとも一実施例では、パック命令セット1309を、命令を実行する関連回路とともに汎用プロセッサの命令セットに含めることにより、多くのマルチメディア・アプリケーションによって使用される演算を、プロセッサ1302のパック・データを使用して実行することができる。1つ又は複数の実施例では、プロセッサのデータ・バスの全幅を使用してパック・データの演算を実行することによって、多くのマルチメディア・アプリケーションを加速し、より効率的に実行することができ、これにより、1度に1つのデータ要素に対して1つ又は複数の演算を実行するためにプロセッサのデータ・バス間でより小さい単位のデータを転送する必要をなくすことができる。
少なくとも一実施例では、実行ユニット1308はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用されてもよい。少なくとも一実施例では、コンピュータ・システム1300は、限定することなくメモリ1320を含んでもよい。少なくとも一実施例では、メモリ1320は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスであってもよい。少なくとも一実施例では、メモリ1320は、プロセッサ1302によって実行されてもよいデータ信号によって表される命令1319、及び/又はデータ1321を記憶してもよい。
少なくとも一実施例では、システム論理チップが、プロセッサ・バス1310及びメモリ1320に結合されてもよい。少なくとも一実施例では、システム論理チップは、限定することなく、メモリ・コントローラ・ハブ(「MCH」:memory controller hub)1316を含んでもよく、プロセッサ1302は、プロセッサ・バス1310を介してMCH1316と通信してもよい。少なくとも一実施例では、MCH1316は、命令及びデータを記憶するため、及びグラフィックス・コマンド、データ、及びテクスチャを記憶するために、高帯域幅メモリ経路1318をメモリ1320に提供してもよい。少なくとも一実施例では、MCH1316は、プロセッサ1302と、メモリ1320と、コンピュータ・システム1300の他の構成要素との間でデータ信号を導き、プロセッサ・バス1310と、メモリ1320と、システムI/Oインターフェース1322との間でデータ信号をブリッジしてもよい。少なくとも一実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供してもよい。少なくとも一実施例では、MCH1316は、高帯域幅メモリ経路1318を介してメモリ1320に結合されてもよく、グラフィックス/ビデオカード1312は、アクセラレーテッド・グラフィックス・ポート(「AGP」:Accelerated Graphics Port)相互接続1314を介してMCH1316に結合されてもよい。
少なくとも一実施例では、コンピュータ・システム1300は、MCH1316をI/Oコントローラ・ハブ(「ICH」:I/O controller hub)1330に結合するためのプロプライエタリ・ハブ・インターフェース・バスとしてシステムI/Oインターフェース1322を使用してもよい。少なくとも一実施例では、ICH1330は、ローカルのI/Oバスを介していくつかのI/Oデバイスに直接接続を提供してもよい。少なくとも一実施例では、ローカルI/Oバスは、周辺装置をメモリ1320、チップセット、及びプロセッサ1302に接続するための高速I/Oバスを、限定することなく含んでもよい。例としては、オーディオ・コントローラ1329、ファームウェア・ハブ(「フラッシュBIOS」)1328、ワイヤレス・トランシーバ1326、データ・ストレージ1324、ユーザ入力及びキーボードのインターフェースを含むレガシーI/Oコントローラ1323、ユニバーサル・シリアル・バス(「USB」:Universal Serial Bus)ポートなどのシリアル拡張ポート1327、及びネットワーク・コントローラ1334が、限定することなく含まれてもよい。少なくとも一実施例では、データ・ストレージ1324は、ハード・ディスク・ドライブ、フロッピー(登録商標)・ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備えてもよい。
少なくとも一実施例では、図13は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図13は例示的なSoCを示してもよい。少なくとも一実施例では、図13に示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、コンピュータ・システム1300の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図13のシステムにおいて使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図14は、少なくとも一実施例による、プロセッサ1410を利用するための電子デバイス1400を示すブロック図である。少なくとも一実施例では、電子デバイス1400は、たとえば限定することなく、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであってもよい。
少なくとも一実施例では、電子デバイス1400は、任意の好適な数又は種類の構成要素、周辺装置、モジュール、若しくはデバイスに通信可能に結合されたプロセッサ1410を、限定することなく含んでもよい。少なくとも一実施例では、プロセッサ1410は、I2Cバス、システム・マネージメント・バス(「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)バスなどのバス若しくはインターフェースを使用して結合される。少なくとも一実施例では、図14は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図14は例示的なSoCを示してもよい。少なくとも一実施例では、図14に示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、図14の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続されてもよい。
少なくとも一実施例では、図14は、ディスプレイ1424、タッチ画面1425、タッチ・パッド1430、近距離無線通信ユニット(「NFC:Near Field Communications unit」)1445、センサ・ハブ1440、熱センサ1446、エクスプレス・チップセット(「EC」:Express Chipset)1435、トラステッド・プラットフォーム・モジュール(「TPM」:Trusted Platform Module)1438、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」:BIOS/firmware/flash memory)1422、DSP1460、ソリッド・ステート・ディスク(「SSD」:Solid State Disk)若しくはハード・ディスク・ドライブ(「HDD」:Hard Disk Drive)などのドライブ1420、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」:wireless local area network unit)1450、Bluetoothユニット1452、ワイヤレス広域ネットワーク・ユニット(「WWAN」:Wireless Wide Area Network unit)1456、全地球測位システム(GPS:Global Positioning System)ユニット1455、USB3.0カメラなどのカメラ(「USB3.0カメラ」)1454、及び/又は、たとえばLPDDR3規格に実装された低電力ダブル・データ・レート(「LPDDR」:Low Power Double Data Rate)メモリ・ユニット(「LPDDR3」)1415を含んでもよい。これらの構成要素は、それぞれ任意の好適なやり方で実装されてもよい。
少なくとも一実施例では、上述した構成要素を介して、他の構成要素がプロセッサ1410に通信可能に結合されてもよい。少なくとも一実施例では、加速度計1441、周囲光センサ(「ALS」:Ambient Light Sensor)1442、コンパス1443、及びジャイロスコープ1444が、センサ・ハブ1440に通信可能に結合されてもよい。少なくとも一実施例では、熱センサ1439、ファン1437、キーボード1436、及びタッチ・パッド1430が、EC1435に通信可能に結合されてもよい。少なくとも一実施例では、スピーカ1463、ヘッドフォン1464、及びマイクロフォン(「mic」)1465が、オーディオ・ユニット(「オーディオ・コーデック及びクラスDアンプ」)1462に通信可能に結合されてもよく、このオーディオ・ユニットが、DSP1460に通信可能に結合されてもよい。少なくとも一実施例では、オーディオ・ユニット1462は、たとえば限定することなく、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスD増幅器を含んでもよい。少なくとも一実施例では、SIMカード(「SIM」)1457は、WWANユニット1456に通信可能に結合されてもよい。少なくとも一実施例では、WLANユニット1450及びBluetoothユニット1452などの構成要素、並びにWWANユニット1456は、次世代フォーム・ファクタ(「NGFF」:Next Generation Form Factor)に実装されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実施するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図14のシステムにおいて使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図15は、少なくとも一実施例による、コンピュータ・システム1500を示す。少なくとも一実施例では、コンピュータ・システム1500は、本開示全体を通して説明する様々なプロセス及び方法を実装するように構成される。
少なくとも一実施例では、コンピュータ・システム1500は、限定することなく、少なくとも1つの中央処理装置(「CPU」)1502を含み、この処理装置は、PCI:Peripheral Component Interconnect(「ペリフェラル・コンポーネント・インターコネクト」)、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCI-Express」:peripheral component interconnect express)、AGP:Accelerated Graphics Port(「アクセラレーテッド・グラフィックス・ポート」)、ハイパートランスポート、又は任意の他のバス若しくはポイントツーポイントの通信プロトコルなど、任意の好適なプロトコルを使用して実装された通信バス1510に接続される。少なくとも一実施例では、コンピュータ・システム1500は、メイン・メモリ1504、(たとえば、ハードウェア、ソフトウェア、又はこれらの組合せとして実装される)制御論理を限定することなく含み、データは、ランダム・アクセス・メモリ(「RAM」)の形式をとってもよいメイン・メモリ1504に記憶される。少なくとも一実施例では、ネットワーク・インターフェース・サブシステム(「ネットワーク・インターフェース」)1522は、コンピュータ・システム1500を有する他のシステムからデータを受信し、コンピュータ・システム1500を有する他のシステムにデータを送信するための他のコンピューティング・デバイス及びネットワークとのインターフェースを提供する。
少なくとも一実施例では、コンピュータ・システム1500は、少なくとも一実施例では、限定することなく、入力デバイス1508、並列処理システム1512、及びディスプレイ・デバイス1506を含み、このディスプレイ・デバイスは、従来の陰極線管(「CRT」:cathode ray tube)、液晶ディスプレイ(「LCD」:liquid crystal display)、発光ダイオード(「LED」:light emitting diode)ディスプレイ、プラズマ・ディスプレイ、又は他の好適なディスプレイ技術を使用して実装することができる。少なくとも一実施例では、ユーザ入力は、キーボード、マウス、タッチ・パッド、マイクロフォンなどの入力デバイス1508から受け取る。少なくとも一実施例では、本明細書に記載の各モジュールを単一の半導体プラットフォーム上に置いて、処理システムを形成することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実施するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図15のシステムにおいて使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図16は、少なくとも一実施例による、コンピュータ・システム1600を示す。少なくとも一実施例では、コンピュータ・システム1600は、限定することなく、コンピュータ1610及びUSBスティック1620を含む。少なくとも一実施例では、コンピュータ1610は、限定することなく、任意の数及びタイプのプロセッサ(図示せず)、並びにメモリ(図示せず)を含んでもよい。少なくとも一実施例では、コンピュータ1610は、限定することなく、サーバ、クラウド・インスタンス、ラップトップ、及びデスクトップ・コンピュータを含む。
少なくとも一実施例では、USBスティック1620は、限定することなく、処理ユニット1630、USBインターフェース1640、及びUSBインターフェース論理1650を含む。少なくとも一実施例では、処理ユニット1630は、命令を実行することができる任意の命令実行システム、装置、又はデバイスであってもよい。少なくとも一実施例では、限定することなく、処理ユニット1630は、任意の数及びタイプの処理コア(図示せず)を含んでもよい。少なくとも一実施例では、処理ユニット1630は、機械学習に関連する任意の量及びタイプの演算を実施するように最適化された特定用途向け集積回路(「ASIC」)を備える。たとえば、少なくとも一実施例では、処理ユニット1630は、機械学習の推論演算を実施するように最適化されたテンソル処理ユニット(「TPC」:tensor processing unit)である。少なくとも一実施例では、処理ユニット1630は、機械視覚及び機械学習の推論演算を実施するように最適化された視覚処理ユニット(「VPU」)である。
少なくとも一実施例では、USBインターフェース1640は、任意のタイプのUSBコネクタ又はUSBソケットであってもよい。たとえば、少なくとも一実施例では、USBインターフェース1640は、データ及び電力用のUSB3.0 Type-Cのソケットである。少なくとも一実施例では、USBインターフェース1640は、USB3.0 Type-Aのコネクタである。少なくとも一実施例では、USBインターフェース論理1650は、処理ユニット1630がUSBコネクタ1640を介してデバイス(たとえばコンピュータ1610)とインターフェースをとることを可能にする任意の量及びタイプの論理を含んでもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実施するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図16のシステムにおいて使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図17Aは、複数のGPU1710(1)~1710(N)が、高速リンク1740(1)~1740(N)(たとえば、バス、ポイントツーポイント相互接続など)を介して複数のマルチ・コア・プロセッサ1705(1)~1705(M)に通信可能に結合されている例示的なアーキテクチャを示す。少なくとも一実施例では、高速リンク1740(1)~1740(N)は、4GB/秒、30GB/秒、80GB/秒、又はそれ以上の通信スループットをサポートする。1740(1)~1740(N)PCIe4.0又は5.0、及びNVLink2.0を含むがこれらに限定されない様々な相互接続プロトコルが使用されてもよい。様々な図において、「N」及び「M」は、正の整数を表し、その値は図ごとに異なってもよい。
さらに、一実施例では、GPU1710のうちの2つ以上は高速リンク1729(1)~1729(2)を介して相互接続され、これらは、高速リンク1740(1)~1740(N)に使用されたものと同様の又は異なるプロトコル/リンクを使用して実装されてもよい。同様に、マルチ・コア・プロセッサ1705のうちの2つ以上は、高速リンク1728を介して接続されてもよく、この高速リンク1728は、20GB/秒、30GB/秒、120GB/秒、又はそれ以上で動作する対称型マルチプロセッサ(SMP)バスとすることができる。或いは、図17Aに示す様々なシステム構成要素間のすべての通信は、同様のプロトコル/リンクを使用して(たとえば、共通の相互接続ファブリックを介して)実現されてもよい。
一実施例では、各マルチ・コア・プロセッサ1705は、それぞれメモリ相互接続1726(1)~1726(M)を介してプロセッサ・メモリ1701(1)~1701(M)に通信可能に結合され、各GPU1710(1)~1710(N)は、それぞれGPUメモリ・相互接続1750(1)~1750(N)を介してGPUメモリ1720(1)~1720(N)に通信可能に結合される。少なくとも一実施例では、メモリ相互接続1726及び1750は、同様の又は異なるメモリ・アクセス技術を利用してもよい。例として、限定ではなく、プロセッサ・メモリ1701(1)~1701(M)及びGPUメモリ1720は、(積層DRAMを含む)ダイナミック・ランダム・アクセス・メモリ(DRAM)、グラフィックスDDR SDRAM(GDDR)(たとえば、GDDR5、GDDR6)、又は高帯域幅メモリ(HBM)などの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。少なくとも一実施例では、(たとえば、2レベルのメモリ(2LM)階層を使用して)、プロセッサ・メモリ1701のいくつかの部分は揮発性メモリであってもよく、別の部分は不揮発性メモリであってもよい。
本明細書に記載するように、様々なマルチ・コア・プロセッサ1705及びGPU1710は、それぞれ特定のメモリ1701、1720に物理的に結合されてもよい、及び/又は仮想システムのアドレス空間(「実効アドレス」空間とも呼ぶ)が様々な物理メモリ間に分配されている統合されたメモリ・アーキテクチャが実装されてもよい。たとえば、プロセッサ・メモリ1701(1)~1701(M)はそれぞれ、64GBのシステム・メモリ・アドレス空間を備えてもよく、GPUメモリ1720(1)~1720(N)はそれぞれ、32GBのシステム・メモリ・アドレス空間を備えてもよく、M=2でN=4の場合、合計256GBのアドレス指定可能メモリが得られる。N及びMについて他の値が考えられる。
図17Bは、1つの例示的な実施例によるマルチ・コア・プロセッサ1707とグラフィックス加速モジュール1746との相互接続のさらなる詳細事項を示す。少なくとも一実施例では、グラフィックス加速モジュール1746は、高速リンク1740(たとえば、PCIeバス、NVLinkなど)を介してプロセッサ1707に結合されるライン・カードに集積された1つ又は複数のGPUチップを含んでもよい。少なくとも一実施例では、或いは、グラフィックス加速モジュール1746は、プロセッサ1707を有するパッケージ又はチップに集積されてもよい。
少なくとも一実施例では、プロセッサ1707は、複数のコア1760A~1760Dを含み、それぞれのコアが、トランスレーション・ルックアサイド・バッファ(「TLB」)1761A~1761Dと、1つ又は複数のキャッシュ1762A~1762Dとを有する。少なくとも一実施例では、コア1760A~1760Dは、命令を実行しデータを処理するための、図示していない様々な他の構成要素を含んでもよい。少なくとも一実施例では、キャッシュ1762A~1762Dは、レベル1(L1)及びレベル2(L2)のキャッシュを備えてもよい。さらに、1つ又は複数の共有キャッシュ1756が、キャッシュ1762A~1762Dに含まれ、コア1760A~1760Dのセットによって共有されてもよい。たとえば、プロセッサ1707の一実施例は、24個のコアを含み、各コアが、独自のL1キャッシュ、12個の共有L2キャッシュ、及び12個の共有L3キャッシュを有する。この実施例では、1つ又は複数のL2及びL3のキャッシュが、2つの隣接するコアによって共有される。少なくとも一実施例では、プロセッサ1707及びグラフィックス加速モジュール1746は、システム・メモリ1714に接続されており、このシステム・メモリは、図17Aのプロセッサ・メモリ1701(1)~1701(M)を含んでもよい。
少なくとも一実施例では、様々なキャッシュ1762A~1762D、1756、及びシステム・メモリ1714に記憶されたデータ及び命令については、コヒーレンス・バス1764を介したコア間通信によって、コヒーレンスが維持される。少なくとも一実施例では、たとえば、各キャッシュは、特定のキャッシュ・ラインに対する読取り又は書込みを検出したことに応答して、コヒーレンス・バス1764を介して通信するために、それに関連するキャッシュ・コヒーレンス論理/回路を有してもよい。少なくとも一実施例では、キャッシュ・アクセスを監視するために、コヒーレンス・バス1764を介してキャッシュ・スヌーピング・プロトコルが実装される。
少なくとも一実施例では、プロキシ回路1725が、グラフィックス加速モジュール1746をコヒーレンス・バス1764に通信可能に結合して、グラフィックス加速モジュール1746がコア1760A~1760Dのピアとしてキャッシュ・コヒーレンス・プロトコルに参加できるようにする。特に、少なくとも一実施例では、インターフェース1735は、高速リンク1740を介してプロキシ回路1725への接続を提供し、インターフェース1737は、グラフィックス加速モジュール1746を高速リンク1740に接続する。
少なくとも一実施例では、アクセラレータ統合回路1736は、グラフィックス加速モジュール1746の複数のグラフィックス処理エンジン1731(1)~1731(N)の代わりに、キャッシュ管理、メモリ・アクセス、コンテンツ管理、及び割込み管理のサービスを提供する。少なくとも一実施例では、グラフィックス処理エンジン1731(1)~1731(N)はそれぞれ、別個のグラフィックス・プロセッシング・ユニット(GPU)を備えてもよい。少なくとも一実施例では、或いは、グラフィックス処理エンジン1731(1)~1731(N)は、GPUの中に、グラフィックス実行ユニット、メディア処理エンジン(たとえば、ビデオ・エンコーダ/デコーダ)、サンプラ、及びブリット・エンジンなど、異なるタイプのグラフィックス処理エンジンを備えてもよい。少なくとも一実施例では、グラフィックス加速モジュール1746は、複数のグラフィックス処理エンジン1731(1)~1731(N)を有するGPUであってもよく、又はグラフィックス処理エンジン1731(1)~1731(N)は、共通のパッケージ、ライン・カード、若しくはチップに集積された個々のGPUであってもよい。
少なくとも一実施例では、アクセラレータ統合回路1736は、仮想から物理のメモリ・トランスレーション(実効から実(effective-to-real)のメモリ・トランスレーションとも呼ばれる)など、様々なメモリ管理機能を実行するためのメモリ管理ユニット(MMU)1739、及びシステム・メモリ1714にアクセスするためのメモリ・アクセス・プロトコルを含む。少なくとも一実施例では、MMU1739は、仮想/実効から物理/実へのアドレス・トランスレーションをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB)(図示せず)も含むことができる。少なくとも一実施例では、キャッシュ1738は、グラフィックス処理エンジン1731(1)~1731(N)から効率的にアクセスできるように、コマンド及びデータを記憶することができる。少なくとも一実施例では、キャッシュ1738及びグラフィックス・メモリ1733(1)~1733(M)に記憶されたデータは、場合によりフェッチ・ユニット1744を使用して、コア・キャッシュ1762A~1762D、1756、及びシステム・メモリ1714とコヒーレントに保たれる。述べたように、これは、キャッシュ1738及びメモリ1733(1)~1733(M)の代わりにプロキシ回路1725を介して(たとえば、プロセッサ・キャッシュ1762A~1762D、1756におけるキャッシュ・ラインの修正/アクセスに関するアップデートをキャッシュ1738に送り、キャッシュ1738からのアップデートを受け取って)実現されてもよい。
少なくとも一実施例では、レジスタ1745のセットが、グラフィックス処理エンジン1731(1)~1731(N)によって実行されるスレッドのためのコンテキスト・データを記憶し、コンテキスト管理回路1748が、スレッド・コンテキストを管理する。たとえば、コンテキスト管理回路1748は、コンテキスト・スイッチ中に様々なスレッドのコンテキストを保存及び復元するために、保存及び復元の動作を実行してもよい(たとえば、ここで、第2のスレッドをグラフィックス処理エンジンによって実行できるように、第1のスレッドが保存され、第2のスレッドが記憶される)。たとえば、コンテキスト・スイッチ時に、コンテキスト管理回路1748は、現在のレジスタ値を(たとえば、コンテキスト・ポインタによって識別された)メモリの指定領域に記憶してもよい。次いで、コンテキストに戻るときに、コンテキスト管理回路1748がレジスタ値を復元してもよい。少なくとも一実施例では、割込み管理回路1747は、システム・デバイスから受け取った割込みを受け取り、処理する。
一実施例では、グラフィックス処理エンジン1731からの仮想/実効アドレスは、MMU1739によってシステム・メモリ1714の実/物理アドレスにトランスレートされる。少なくとも一実施例では、アクセラレータ統合回路1736の一実施例は、複数(たとえば、4個、8個、16個)のグラフィックス・アクセラレータ・モジュール1746、及び/又は他のアクセラレータ・デバイスをサポートする。少なくとも一実施例では、グラフィックス・アクセラレータ・モジュール1746は、プロセッサ1707上で実行される単一のアプリケーション専用のものであってもよく、又は複数のアプリケーション間で共有されてもよい。少なくとも一実施例では、グラフィックス処理エンジン1731(1)~1731(N)のリソースが複数のアプリケーション又は仮想機械(VM)と共有される仮想化グラフィックス実行環境が存在する。少なくとも一実施例では、リソースは、「スライス」に細分化されてもよく、このスライスが、処理要件、並びにVM及び/又はアプリケーションに関連付けられた優先度に基づき、異なるVM及び/又はアプリケーションに割り振られる。
少なくとも一実施例では、アクセラレータ統合回路1736は、グラフィックス加速モジュール1746のためのシステムへのブリッジとして機能し、アドレス・トランスレーション及びシステム・メモリのキャッシュ・サービスを提供する。さらに、少なくとも一実施例では、アクセラレータ統合回路1736は、グラフィックス処理エンジン1731(1)~1731(N)の仮想化、割込み、及びメモリ管理をホスト・プロセッサが管理するための仮想化設備を提供してもよい。
少なくとも一実施例では、グラフィックス処理エンジン1731(1)~1731(N)のハードウェア・リソースは、ホスト・プロセッサ1707が見る実アドレス空間に明示的にマッピングされるので、いかなるホスト・プロセッサも、実効アドレス値を使用して、これらのリソースに直接アドレス指定することができる。少なくとも一実施例では、アクセラレータ統合回路1736の1つの機能は、グラフィックス処理エンジン1731(1)~1731(N)を、システムにとって独立したユニットに見えるように物理的に分離することである。
少なくとも一実施例では、1つ又は複数のグラフィックス・メモリ1733(1)~1733(M)はそれぞれ、グラフィックス処理エンジン1731(1)~1731(N)のそれぞれに結合され、N=Mである。少なくとも一実施例では、グラフィックス・メモリ1733(1)~1733(M)は、それぞれのグラフィックス処理エンジン1731(1)~1731(N)によって処理される命令及びデータを記憶する。少なくとも一実施例では、グラフィックス・メモリ1733(1)~1733(M)は、(積層DRAMを含む)DRAM、GDDRメモリ、(たとえば、GDDR5、GDDR6)、又はHBMなどの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。
一実施例では、高速リンク1740を介したデータ・トラフィックを低減するために、グラフィックス・メモリ1733(1)~1733(M)に記憶されるデータが、グラフィックス処理エンジン1731(1)~1731(N)によって最も頻繁に使用されることになるデータであるようにし、好ましくはコア1760A~1760Dによっては使用されない(少なくとも頻繁には使用されない)データであるようにするためのバイアス技法が使用される。同様に、少なくとも一実施例では、バイアス機構は、コアが必要とする(したがって、好ましくはグラフィックス処理エンジン1731(1)~1731(N)は必要としない)データを、コアのキャッシュ1762A~1762D、1756、及びシステム・メモリ1714の中に保つよう試みる。
図17Cは、アクセラレータ統合回路1736がプロセッサ1707内に一体化されている別の例示的な実施例を示す。少なくともこの実施例では、グラフィックス処理エンジン1731(1)~1731(N)は、インターフェース1737及びインターフェース1735により、高速リンク1740を介して直接アクセラレータ統合回路1736と通信する(この場合も任意の形のバス又はインターフェース・プロトコルであり得る)。少なくとも一実施例では、アクセラレータ統合回路1736は、図17Bに関して説明したのと同様の動作を実行してもよいが、コヒーレンス・バス1764及びキャッシュ1762A~1762D、1756に近接していることを考えると、潜在的には、より高いスループットで動作してもよい。一実施例は、(グラフィックス加速モジュールの仮想化のない)専用プロセスのプログラミング・モデルと、(仮想化のある)共有プログラミング・モデルとを含む異なるプログラミング・モデルをサポートし、これらは、アクセラレータ統合回路1736によって制御されるプログラミング・モデルと、グラフィックス加速モジュール1746によって制御されるプログラミング・モデルとを含んでもよい。
少なくとも一実施例では、グラフィックス処理エンジン1731(1)~1731(N)は、単一のオペレーティング・システムの下で単一のアプリケーション又はプロセスに専用のものである。少なくとも一実施例では、単一のアプリケーションは、他のアプリケーション要求をグラフィックス処理エンジン1731(1)~1731(N)に集中させて、VM/パーティション内で仮想化を実現することができる。
少なくとも一実施例では、グラフィックス処理エンジン1731(1)~1731(N)は、複数のVM/アプリケーション・パーティションによって共有されてもよい。少なくとも一実施例では、共有モデルはシステム・ハイパーバイザを使用して、グラフィックス処理エンジン1731(1)~1731(N)を仮想化して、各オペレーティング・システムによるアクセスを可能にしてもよい。少なくとも一実施例では、ハイパーバイザのない単一パーティションのシステムでは、グラフィックス処理エンジン1731(1)~1731(N)は、オペレーティング・システムによって所有される。少なくとも一実施例では、オペレーティング・システムは、グラフィックス処理エンジン1731(1)~1731(N)を仮想化して、各プロセス又はアプリケーションへのアクセスを提供することができる。
少なくとも一実施例では、グラフィックス加速モジュール1746又は個々のグラフィックス処理エンジン1731(1)~1731(N)は、プロセス・ハンドルを使用して、プロセス要素を選択する。少なくとも一実施例では、プロセス要素は、システム・メモリ1714に記憶されており、本明細書に記載の実効アドレスから実アドレスへのトランスレーション技法を使用してアドレス指定可能である。少なくとも一実施例では、プロセス・ハンドルは、ホスト・プロセスのコンテキストをグラフィックス処理エンジン1731(1)~1731(N)に登録する(すなわち、プロセス要素リンク・リストにプロセス要素を追加するためのシステム・ソフトウェアをコールする)ときに、ホスト・プロセスに提供される実装固有の値であってもよい。少なくとも一実施例では、プロセス・ハンドルの下位16ビットは、プロセス要素リンク・リスト内のプロセス要素のオフセットであってもよい。
図17Dは、例示的なアクセラレータ統合スライス1790を示す。少なくとも一実施例では、「スライス」は、アクセラレータ統合回路1736の処理リソースの指定部分を備える。少なくとも一実施例では、システム・メモリ1714内のアプリケーション実効アドレス空間1782は、プロセス要素1783を記憶する。少なくとも一実施例では、プロセス要素1783は、プロセッサ1707上で実行されているアプリケーション1780からのGPU呼出し1781に応答して、記憶される。少なくとも一実施例では、プロセス要素1783は、対応するアプリケーション1780のプロセス状態を収容する。少なくとも一実施例では、プロセス要素1783に収容されたワーク記述子(WD)1784は、アプリケーションによって要求される単一のジョブとすることができ、又はジョブのキューに対するポインタを収容してもよい。少なくとも一実施例では、WD1784は、アプリケーションの実効アドレス空間1782におけるジョブ要求キューに対するポインタである。
少なくとも一実施例では、グラフィックス加速モジュール1746及び/又は個々のグラフィックス処理エンジン1731(1)~1731(N)は、システム内のプロセスのすべて又はサブセットによって共有されることが可能である。少なくとも一実施例では、プロセス状態を設定し、WD1784をグラフィックス加速モジュール1746に送信して、仮想化環境においてジョブを開始するためのインフラストラクチャが、含められてもよい。
少なくとも一実施例では、専用のプロセス・プログラミング・モデルは、実装固有である。少なくとも一実施例では、このモデルでは、単一のプロセスが、グラフィックス加速モジュール1746又は個々のグラフィックス処理エンジン1731を所有する。少なくとも一実施例では、グラフィックス加速モジュール1746が単一のプロセスによって所有されるとき、グラフィックス加速モジュール1746が割り当てられたときに、ハイパーバイザは、所有パーティションについてアクセラレータ統合回路1736を初期化し、オペレーティング・システムは、所有プロセスについてアクセラレータ統合回路1736を初期化する。
少なくとも一実施例では、動作時、アクセラレータ統合スライス1790内のWDフェッチ・ユニット1791は、グラフィックス加速モジュールの1つ又は複数のグラフィックス処理エンジンによって行われることになるワークの表示を含む次のWD1784をフェッチする。少なくとも一実施例では、図示してあるように、WD1784からのデータは、レジスタ1745に記憶され、MMU1739、割込み管理回路1747、及び/又はコンテキスト管理回路1748によって使用されてもよい。たとえば、MMU1739の一実施例は、OS仮想アドレス空間1785内のセグメント/ページ・テーブル1786にアクセスするためのセグメント/ページ・ウォーク回路を含む。少なくとも一実施例では、割込み管理回路1747は、グラフィックス加速モジュール1746から受け取った割込みイベント1792を処理してもよい。少なくとも一実施例では、グラフィックス動作を実行するとき、グラフィックス処理エンジン1731(1)~1731(N)によって生成された実効アドレス1793は、MMU1739によって実アドレスにトランスレートされる。
少なくとも一実施例では、レジスタ1745が、各グラフィックス処理エンジン1731(1)~1731(N)、及び/又はグラフィックス加速モジュール1746について複製され、ハイパーバイザ又はオペレーティング・システムによって初期化されてもよい。少なくとも一実施例では、これらの複製されたレジスタのそれぞれは、アクセラレータ統合スライス1790に含まれてもよい。ハイパーバイザによって初期化されてもよい例示的なレジスタを、表1に示す。
少なくとも一実施例では、各WD1784は、特定のグラフィックス加速モジュール1746及び/又はグラフィックス処理エンジン1731(1)~1731(N)に固有のものである。少なくとも一実施例では、WD1784は、グラフィックス処理エンジン1731(1)~1731(N)がワークを行うために必要とするすべての情報を収容し、又は完了すべきワークのコマンド・キューをアプリケーションがセットアップした場所であるメモリ・ロケーションを指すポインタとすることができる。
図17Eは、共有モデルの例示的な一実施例のさらなる詳細事項を示す。この実施例は、プロセス要素リスト1799が記憶されているハイパーバイザ実アドレス空間1798を含む。少なくとも一実施例では、ハイパーバイザ実アドレス空間1798は、オペレーティング・システム1795のグラフィックス加速モジュール・エンジンを仮想化するハイパーバイザ1796を介してアクセス可能である。
少なくとも一実施例では、共有プログラミング・モデルは、システム内のすべて又はサブセットのパーティションからのすべて又はサブセットのプロセスが、グラフィックス加速モジュール1746を使用できるようにする。少なくとも一実施例では、グラフィックス加速モジュール1746が複数のプロセス及びパーティションによって共有されるプログラミング・モデルが、2つ、つまり時間スライス共有及びグラフィックス指定共有(graphics-directed shared)が存在する。
少なくとも一実施例では、このモデルでは、システム・ハイパーバイザ1796がグラフィックス加速モジュール1746を所有しており、その機能をすべてのオペレーティング・システム1795にとって利用可能にする。少なくとも一実施例では、システム・ハイパーバイザ1796による仮想化をグラフィックス加速モジュール1746がサポートするために、グラフィックス加速モジュール1746は、1)アプリケーションのジョブ要求は自律でなくてはならず(すなわち、ジョブ間で状態を維持する必要はなく)、又はグラフィックス加速モジュール1746が、コンテキストの保存及び復元の機構を提供しなくてはならない、2)アプリケーションのジョブ要求は、あらゆるトランスレーション誤りも含めて指定された時間量で完了するようグラフィックス加速モジュール1746によって保証され、又はグラフィックス加速モジュール1746が、ジョブの処理をプリエンプションする機能を提供する、及び3)グラフィックス加速モジュール1746は、指定の共有プログラミング・モデルで動作しているとき、プロセス間で公平性が保証されなくてはならないなどのいくつかの要件に準拠してもよい。
少なくとも一実施例では、アプリケーション1780は、グラフィックス加速モジュールのタイプ、ワーク記述子(WD)、権限マスク・レジスタ(AMR)値、及びコンテキスト保存/復元エリア・ポインタ(CSRP)を伴って、オペレーティング・システム1795のシステム・コールを行う必要がある。少なくとも一実施例では、グラフィックス加速モジュールのタイプは、システム・コールで目的とする加速機能を記述している。少なくとも一実施例では、グラフィックス加速モジュールのタイプは、システム固有値であってもよい。少なくとも一実施例では、WDは、グラフィックス加速モジュール1746のために特にフォーマット化されており、グラフィックス加速モジュール1746のコマンド、ユーザ定義の構造を指す実効アドレス・ポインタ、コマンドのキューを指す実効アドレス・ポインタ、又はグラフィックス加速モジュール1746によって行われるワークを記述するための任意の他のデータ構造の形とすることができる。
少なくとも一実施例では、AMR値は、現在のプロセスに使用するためのAMR状態である。少なくとも一実施例では、オペレーティング・システムに渡される値は、AMRをセッティングするアプリケーションと同様である。少なくとも一実施例では、アクセラレータ統合回路1736(図示せず)及びグラフィックス加速モジュール1746の実装形態が、ユーザ権限マスク・オーバーライド・レジスタ(UAMOR)をサポートしていない場合、オペレーティング・システムは、AMR値に現在のUAMOR値を適用してから、ハイパーバイザ・コールにAMRを渡してもよい。少なくとも一実施例では、ハイパーバイザ1796は、任意選択で、現在の権限マスク・オーバーライド・レジスタ(AMOR)値を適用してから、AMRをプロセス要素1783に入れてもよい。少なくとも一実施例では、CSRPは、グラフィックス加速モジュール1746がコンテキスト状態を保存及び復元するためのアプリケーションの実効アドレス空間1782内のエリアの実効アドレスを収容するレジスタ1745のうちの1つである。少なくとも一実施例では、ジョブ間で、又はジョブがプリエンプションされるときに、いかなる状態も保存する必要のない場合は、このポインタは任意選択である。少なくとも一実施例では、コンテキスト保存/復元エリアは、ピン留めされたシステム・メモリであってもよい。
システム・コールを受け取ると、オペレーティング・システム1795は、アプリケーション1780が登録済みであり、グラフィックス加速モジュール1746を使用する権限が与えられていることを検証してもよい。少なくとも一実施例では、次いで、オペレーティング・システム1795は、表3に示す情報を伴ってハイパーバイザ1796にコールする。
少なくとも一実施例では、ハイパーバイザ・コールを受け取ると、ハイパーバイザ1796は、オペレーティング・システム1795が登録済みであり、グラフィックス加速モジュール1746を使用する権限が与えられていることを検証する。少なくとも一実施例では、次いでハイパーバイザ1796は、プロセス要素1783を、対応するグラフィックス加速モジュール1746のタイプのプロセス要素リンク・リストに入れる。少なくとも一実施例では、プロセス要素は、表4に示す情報を含んでもよい。
少なくとも一実施例では、ハイパーバイザは、複数のアクセラレータ統合スライス1790のレジスタ1745を初期化する。
図17Fに示すように、少なくとも一実施例では、物理プロセッサ・メモリ1701(1)~1701(N)及びGPUメモリ1720(1)~1720(N)にアクセスするために使用される共通の仮想メモリ・アドレス空間を介してアドレス指定可能である統合メモリが使用される。この実装形態では、GPU1710(1)~1710(N)で実行される動作は、プロセッサ・メモリ1701(1)~1701(N)にアクセスするのと同じ仮想/実効メモリ・アドレス空間を利用し、且つその逆も同様であり、それによりプログラマビリティが簡単になる。少なくとも一実施例では、仮想/実効アドレス空間の第1の部分はプロセッサ・メモリ1701(1)に割り振られ、第2の部分は第2のプロセッサ・メモリ1701(N)に割り振られ、第3の部分はGPUメモリ1720(1)に割り振られるというように続く。少なくとも一実施例では、仮想/実効メモリ空間全体(実効アドレス空間と呼ばれることもある)は、これによりプロセッサ・メモリ1701及びGPUメモリ1720のそれぞれにわたって分配されて、仮想アドレスが物理メモリにマッピングされた状態で、いずれかのプロセッサ又はGPUが、いずれかの物理メモリにアクセスできるようになる。
一実施例では、MMU1739A~1739Eのうちの1つ又は複数の中のバイアス/コヒーレンス管理回路1794A~1794Eは、1つ又は複数のホスト・プロセッサ(たとえば、1705)のキャッシュとGPU1710のキャッシュとの間でキャッシュ・コヒーレンスを確保し、バイアス技法を実装して、ある特定のタイプのデータが記憶されるべき物理メモリを示す。少なくとも一実施例では、バイアス/コヒーレンス管理回路1794A~1794Eの複数のインスタンスが図17Fに示されるが、バイアス/コヒーレンス回路は、1つ又は複数のホスト・プロセッサ1705のMMU内に実装されてもよく、且つ/又はアクセラレータ統合回路1736内に実装されてもよい。
一実施例は、GPUメモリ1720をシステム・メモリの一部としてマッピングできるようにし、共有仮想メモリ(SVM)技法を使用してアクセス可能にすることができるが、完全なシステム・キャッシュ・コヒーレンスに関連する性能の低下が生じることはない。少なくとも一実施例では、GPUメモリ1720が、面倒なキャッシュ・コヒーレンス・オーバーヘッドなく、システム・メモリとしてアクセス可能であることにより、GPUオフロードのための有益な動作環境が提供される。少なくとも一実施例では、この構成によって、従来のI/O DMAデータ・コピーのオーバーヘッドがなくても、ホスト・プロセッサ1705ソフトウェアがオペランドを設定し、計算結果にアクセスすることが可能になる。少なくとも一実施例では、こうした従来のコピーは、ドライバ・コール、割込み、及びメモリ・マップドI/O(MMIO)アクセスを必要とし、これらはすべて、単純なメモリ・アクセスより非効率的である。少なくとも一実施例では、キャッシュ・コヒーレンス・オーバーヘッドなしでGPUメモリ1720にアクセスできることが、オフロードされた計算の実行時間に不可欠であり得る。少なくとも一実施例では、たとえば、かなりのストリーミング書込みメモリ・トラフィックがある場合には、キャッシュ・コヒーレンス・オーバーヘッドは、GPU1710が見る有効な書込み帯域幅を大幅に低減することある。少なくとも一実施例では、オペランド設定の効率、結果へのアクセスの効率、及びGPU計算の効率は、GPUオフロードの有効性を判定する際に役立つことがある。
少なくとも一実施例では、GPUバイアス及びホスト・プロセッサ・バイアスの選択は、バイアス・トラッカー・データ構造によって決められる。少なくとも一実施例では、たとえばバイアス・テーブルが使用されてもよく、このテーブルは、GPU付きメモリ・ページ当たり1ビット又は2ビットを含むページ粒度構造であってもよい(たとえば、メモリ・ページの粒度で制御されてもよい)。少なくとも一実施例では、バイアス・テーブルは、(たとえば、バイアス・テーブルの頻繁に使用された/最近使用されたエントリをキャッシュするための)バイアス・キャッシュがGPU1710にある状態又はない状態で、1つ又は複数のGPUメモリ1720の奪われたメモリ範囲(stolen memory range)において実装されてもよい。或いは、少なくとも一実施例では、バイアス・テーブル全体が、GPU内に維持されてもよい。
少なくとも一実施例では、GPU付きメモリ1720への各アクセスに関連付けられたバイアス・テーブルのエントリが、GPUメモリへの実際のアクセスより先にアクセスされて、以下の動作を生じさせる。少なくとも一実施例では、GPUバイアス内での自らのページを見いだすGPU1710からのローカル要求が、対応するGPUメモリ1720に直接転送される。少なくとも一実施例では、ホスト・バイアスにおいて自らのページを見いだすGPUからのローカル要求は、(たとえば、上述した高速リンクを介して)プロセッサ1705に転送される。少なくとも一実施例では、要求されたページをホスト・プロセッサ・バイアスにおいて見いだすプロセッサ1705からの要求は、通常のメモリ読取りと同様に要求を完了させる。或いは、GPUバイアス化ページに向けられた要求は、GPU1710に転送されてもよい。少なくとも一実施例では、次いでGPUは、現在ページを使用していない場合、ホスト・プロセッサ・バイアスにページを移行してもよい。少なくとも一実施例では、ページのバイアス状態は、ソフトウェア・ベースの機構、ハードウェア支援型ソフトウェア・ベースの機構のいずれかによって、又は限られた事例のセットについては、単にハードウェア・ベースの機構によって、変更することができる。
少なくとも一実施例では、バイアス状態を変更するための1つの機構は、APIコール(たとえば、OpenCL)を利用し、このAPIコールが、GPUのデバイス・ドライバをコールし、このデバイス・ドライバが、GPUにメッセージを送って(又はコマンド記述子をキューに加えて)、バイアス状態を変更し、一部の移行については、ホストにおいてキャッシュ・フラッシング動作を実行するよう、GPUを導く。少なくとも一実施例では、キャッシュ・フラッシング動作は、ホスト・プロセッサ1705のバイアスからGPUバイアスへの移行のために使用されるが、反対向きの移行には使用されない。
一実施例では、キャッシュ・コヒーレンスは、ホスト・プロセッサ1705によってキャッシュできないGPUバイアス化ページを一時的にレンダリングすることによって、維持される。少なくとも一実施例では、これらのページにアクセスするために、プロセッサ1705は、GPU1710からのアクセスを要求してもよく、GPU1710は、すぐにアクセスを許可してもよく、又は許可しなくてもよい。少なくとも一実施例では、したがって、プロセッサ1705とGPU1710との間の通信を低減するために、GPUバイアス化ページが、GPUによって要求されるが、ホスト・プロセッサ1705によっては要求されないようにすること、又はその逆にすることが有益である。
1つ又は複数の実施例を実行するために、ハードウェア構造体915が使用される。ハードウェア構造体915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供され得る。
図18は、本明細書に記載の様々な実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、若しくは汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
図18は、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができる例示的なシステム・オン・チップ集積回路1800を示すブロック図である。少なくとも一実施例では、集積回路1800は、1つ又は複数のアプリケーション・プロセッサ1805(たとえば、CPU)、少なくとも1つのグラフィックス・プロセッサ1810を含み、さらに、画像プロセッサ1815及び/又はビデオ・プロセッサ1820を含んでもよく、これらのいずれもが、モジュール式IPコアであってもよい。少なくとも一実施例では、集積回路1800は、USBコントローラ1825、UARTコントローラ1830、SPI/SDIOコントローラ1835、及びI22S/I22Cコントローラ1840を含む周辺装置又はバス論理を含む。少なくとも一実施例では、集積回路1800は、ハイ・デフィニション・マルチメディア・インターフェース(HDMI(登録商標):high-definition multimedia interface(登録商標))コントローラ1850及びモバイル・インダストリ・プロセッサ・インターフェース(MIPI)ディスプレイ・インターフェース1855のうちの1つ又は複数に結合されるディスプレイ・デバイス1845を含むことができる。少なくとも一実施例では、フラッシュ・メモリ及びフラッシュ・メモリ・コントローラを含むフラッシュ・メモリ・サブシステム1860によって、ストレージが提供されてもよい。少なくとも一実施例では、SDRAM又はSRAMメモリ・デバイスにアクセスするために、メモリ・コントローラ1865を介してメモリ・インターフェースが提供されてもよい。少なくとも一実施例では、いくつかの集積回路はさらに、組み込みセキュリティ・エンジン1870を含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路1800において使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図19A~図19Bは、本明細書に記載の様々実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、又は汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
図19A~図19Bは、本明細書に記載の実施例による、SoC内で使用するための例示的なグラフィックス・プロセッサを示すブロック図である。図19Aは、少なくとも一実施例による、1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路の例示的なグラフィックス・プロセッサ1910を示す。図19Bは、少なくとも一実施例による、1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路のさらなる例示的なグラフィックス・プロセッサ1940を示す。少なくとも一実施例では、図19Aのグラフィックス・プロセッサ1910は、低電力グラフィックス・プロセッサ・コアである。少なくとも一実施例では、図19Bのグラフィックス・プロセッサ1940は、高性能グラフィックス・プロセッサ・コアである。少なくとも一実施例では、グラフィックス・プロセッサ1910、1940のそれぞれは、図18のグラフィックス・プロセッサ1810の変形形態とすることができる。
少なくとも一実施例では、グラフィックス・プロセッサ1910は、頂点プロセッサ1905と、1つ又は複数のフラグメント・プロセッサ1915A~1915N(たとえば、1915A、1915B、1915C、1915D~1915N-1、及び1915N)とを含む。少なくとも一実施例では、グラフィックス・プロセッサ1910は、別個の論理を介して異なるシェーダ・プログラムを実行することができ、それにより、頂点プロセッサ1905は、頂点シェーダ・プログラムのための動作を実行するように最適化され、一方、1つ又は複数のフラグメント・プロセッサ1915A~1915Nは、フラグメント又はピクセルのシェーダ・プログラムのためのフラグメント(たとえば、ピクセル)シェーディング動作を実行する。少なくとも一実施例では、頂点プロセッサ1905は、3Dグラフィックス・パイプラインの頂点処理ステージを実行し、プリミティブ及び頂点データを生成する。少なくとも一実施例では、フラグメント・プロセッサ1915A~1915Nは、頂点プロセッサ1905によって生成されたプリミティブ及び頂点データを使用して、ディスプレイ・デバイスに表示されるフレーム・バッファを生成する。少なくとも一実施例では、フラグメント・プロセッサ1915A~1915Nは、OpenGLのAPIにおいて提供されるフラグメント・シェーダ・プログラムを実行するように最適化され、OpenGLのAPIは、Direct 3D APIにおいて提供されるピクセル・シェーダ・プログラムと同様の動作を実行するために使用されてもよい。
少なくとも一実施例では、グラフィックス・プロセッサ1910はさらに、1つ又は複数のメモリ管理ユニット(MMU)1920A~1920B、キャッシュ1925A~1925B、及び回路相互接続1930A~1930Bを含む。少なくとも一実施例では、1つ又は複数のMMU1920A~1920Bは、頂点プロセッサ1905及び/又はフラグメント・プロセッサ1915A~1915Nを含め、グラフィックス・プロセッサ1910のための仮想から物理のアドレス・マッピングを提供し、それらは、1つ又は複数のキャッシュ1925A~1925Bに記憶された頂点又は画像/テクスチャのデータに加えて、メモリに記憶された頂点又は画像/テキストのデータを参照してもよい。少なくとも一実施例では、1つ又は複数のMMU1920A~1920Bは、図18の1つ若しくは複数のアプリケーション・プロセッサ1805、画像プロセッサ1815、及び/又はビデオ・プロセッサ1820に関連付けられた1つ若しくは複数のMMUを含む、システム内の他のMMUと同期されてもよく、それにより各プロセッサ1805~1820は、共有の又は統合された仮想メモリ・システムに参加することができる。少なくとも一実施例では、1つ又は複数の回路相互接続1930A~1930Bは、グラフィックス・プロセッサ1910が、SoCの内部バスを介して、又は直接接続を介して、SoC内の他のIPコアとインターフェースをとることができるようにする。
少なくとも一実施例では、図19Bに示すように、グラフィックス・プロセッサ1940は、1つ又は複数のシェーダ・コア1955A~1955N(たとえば、1955A、1955B、1955C、1955D、1955E、1955F~1955N-1、及び1955N)を含み、このシェーダ・コアは、単一のコア、又はタイプ、又はコアが、頂点シェーダ、フラグメント・シェーダ、及び/又はコンピュート・シェーダを実装するためのシェーダ・プログラム・コードを含むすべてのタイプのプログラム可能なシェーダ・コードを実行することができる統合されたシェーダ・コア・アーキテクチャを提供する。少なくとも一実施例では、シェーダ・コアの数は変えることができる。少なくとも一実施例では、グラフィックス・プロセッサ1940は、1つ又は複数のシェーダ・コア1955A~1955Nに実行スレッドをディスパッチするためのスレッド・ディスパッチャとして作用するコア間タスク・マネージャ1945と、たとえばシーン内のローカル空間コヒーレンスを利用するため、又は内部キャッシュの使用を最適化するために、シーンのレンダリング動作が画像空間において細分化される、タイル・ベースのレンダリングのためのタイリング動作を加速するためのタイリング・ユニット1958とを含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実施するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図19A及び/又は図19Bの集積回路において使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図20A及び図20Bは、本明細書に記載の実施例による、さらなる例示的なグラフィックス・プロセッサ論理を示す。図20Aは、グラフィックス・コア2000を示し、このグラフィックス・コア2000は、少なくとも一実施例では図18のグラフィックス・プロセッサ1810に含められてもよく、少なくとも一実施例では図19Bのように、統合されたシェーダ・コア1955A~1955Nであってもよい。図20Bは、少なくとも一実施例におけるマルチ・チップ・モジュールに導入するのに適した高並列の汎用グラフィックス・プロセッシング・ユニット(「GPGPU」)2030を示す。
少なくとも一実施例では、グラフィックス・コア2000は、共有命令キャッシュ2002、テクスチャ・ユニット2018、及びキャッシュ/共有メモリ2020を含み、これらは、グラフィックス・コア2000内の実行リソースに共通である。少なくとも一実施例では、グラフィックス・コア2000は、複数のスライス2001A~2001N、又はコアごとのパーティションを含むことができ、グラフィックス・プロセッサは、グラフィックス・コア2000の複数のインスタンスを含むことができる。少なくとも一実施例では、スライス2001A~2001Nは、ローカル命令キャッシュ2004A~2004N、スレッド・スケジューラ2006A~2006N、スレッド・ディスパッチャ2008A~2008N、及びレジスタのセット2010A~2010Nを含むサポート論理を含むことができる。少なくとも一実施例では、スライス2001A~2001Nは、追加機能ユニット(AFU2012A~2012N)、浮動小数点ユニット(FPU2014A~2014N)、整数算術論理演算ユニット(ALU2016A~2016N)、アドレス計算ユニット(ACU2013A~2013N)、倍精度浮動小数点ユニット(DPFPU2015A~2015N)、及び行列処理ユニット(MPU2017A~2017N)のセットを含むことができる。
少なくとも一実施例では、FPU2014A~2014Nは、単精度(32ビット)及び半精度(16ビット)の浮動小数点演算を実施することができ、その一方で、DPFPU2015A~2015Nは、倍精度(64ビット)の浮動小数点演算を実行する。少なくとも一実施例では、ALU2016A~2016Nは、8ビット、16ビット、及び32ビット精度で可変精度の整数演算を実行することができ、混合精度の演算ができるように構成されることが可能である。少なくとも一実施例では、MPU2017A~2017Nも、半精度浮動小数点及び8ビット整数演算を含む混合精度の行列演算ができるように構成されることが可能である。少なくとも一実施例では、MPU2017~2017Nは、汎用行列-行列乗算(GEMM)の加速をサポートできるようにすることを含め、機械学習アプリケーション・フレームワークを加速するための様々な行列演算を実行することができる。少なくとも一実施例では、AFU2012A~2012Nは、三角関数演算(たとえば、サイン、コサインなど)を含む、浮動小数点又は整数ユニットにサポートされていない追加の論理演算を実行することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実施するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・コア2000において使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図20Bは、汎用処理ユニット(GPGPU)2030を示し、この処理ユニットは、少なくとも一実施例において、グラフィックス・プロセッシング・ユニットのアレイによる高並列の計算動作を実行可能にするように構成されることが可能である。少なくとも一実施例では、GPGPU2030は、GPGPU2030の他のインスタンスに直接リンクされて、ディープ・ニューラル・ネットワークのための訓練スピードを向上させるために複数のGPUクラスタを生成することができる。少なくとも一実施例では、GPGPU2030は、ホスト・プロセッサとの接続を可能にするためのホスト・インターフェース2032を含む。少なくとも一実施例では、ホスト・インターフェース2032は、PCIエクスプレス・インターフェースである。少なくとも一実施例では、ホスト・インターフェース2032は、ベンダー固有の通信インターフェース又は通信ファブリックとすることができる。少なくとも一実施例では、GPGPU2030は、ホスト・プロセッサからコマンドを受け取り、グローバル・スケジューラ2034を使用して、これらのコマンドに関連付けられた実行スレッドを、コンピュート・クラスタ2036A~2036Hのセットに分配する。少なくとも一実施例では、コンピュート・クラスタ2036A~2036Hは、キャッシュ・メモリ2038を共有する。少なくとも一実施例では、キャッシュ・メモリ2038は、コンピュート・クラスタ2036A~2036H内のキャッシュ・メモリ用の高レベル・キャッシュとして作用することができる。
少なくとも一実施例では、GPGPU2030は、メモリ・コントローラ2042A~2042Bのセットを介して、コンピュート・クラスタ2036A~2036Hに結合されたメモリ2044A~2044Bを含む。少なくとも一実施例では、メモリ2044A~2044Bは、グラフィックス・ダブル・データ・レート(GDDR:graphics double data rate)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。
少なくとも一実施例では、コンピュート・クラスタ2036A~2036Hはそれぞれ、図20Aのグラフィックス・コア2000などのグラフィックス・コアのセットを含み、このグラフィックス・コアのセットは、機械学習計算に適したものを含め、様々な精度で計算動作を実行することができる複数のタイプの整数及び浮動小数点の論理ユニットを含むことができる。たとえば、少なくとも一実施例では、コンピュート・クラスタ2036A~2036Hのそれぞれにおける浮動小数点ユニットの少なくともサブセットは、16ビット又は32ビットの浮動小数点演算を実行するように構成されることが可能であり、一方、浮動小数点ユニットの別のサブセットは、64ビットの浮動小数点演算を実行するように構成されることが可能である。
少なくとも一実施例では、GPGPU2030の複数のインスタンスは、コンピュート・クラスタとして動作するように構成されることが可能である。少なくとも一実施例では、コンピュート・クラスタ2036A~2036Hにより同期及びデータ交換のために使用される通信は、実施例にわたって異なる。少なくとも一実施例では、GPGPU2030の複数のインスタンスは、ホスト・インターフェース2032を介して通信する。少なくとも一実施例では、GPGPU2030は、I/Oハブ2039を含み、このハブは、GPGPU2030の他のインスタンスへの直接接続を可能にするGPUリンク2040に、GPGPU2030を結合する。少なくとも一実施例では、GPUリンク2040は、GPGPU2030の複数のインスタンス間での通信及び同期を可能にするGPUからGPUへの専用のブリッジに結合される。少なくとも一実施例では、GPUリンク2040は、他のGPGPU又は並列プロセッサにデータを送受信するための高速相互接続に結合される。少なくとも一実施例では、GPGPU2030の複数のインスタンスは、別々のデータ処理システムに位置付けられ、ホスト・インターフェース2032を介してアクセス可能なネットワーク・デバイスを介して通信する。少なくとも一実施例では、GPUリンク2040は、ホスト・インターフェース2032に加えて、又はその代わりに、ホスト・プロセッサへの接続を可能にするように構成することができる。
少なくとも一実施例では、GPGPU2030は、ニューラル・ネットワークを訓練するように構成されることが可能である。少なくとも一実施例では、GPGPU2030は、推論プラットフォーム内で使用することができる。GPGPU2030が推論のために使用される少なくとも一実施例では、GPGPU2030は、GPGPU2030がニューラル・ネットワークの訓練に使用されるときよりも少数のコンピュート・クラスタ2036A~2036Hを含んでもよい。少なくとも一実施例では、メモリ2044A~2044Bに関連するメモリ技術は、推論の構成と訓練の構成とで異なってもよく、高帯域幅のメモリ技術が、訓練構成に当てられる。少なくとも一実施例では、GPGPU2030の推論構成は、推論固有の命令をサポートすることができる。たとえば、少なくとも一実施例では、推論構成は、1つ又は複数の8ビットの整数のドット積命令をサポートすることができ、これは、導入済みニューラル・ネットワークの推論動作中に使用されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにGPGPU2030において使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図21は、少なくとも一実施例によるコンピューティング・システム2100を示すブロック図である。少なくとも一実施例では、コンピューティング・システム2100は、メモリ・ハブ2105を含んでもよい相互接続経路を介して通信する1つ又は複数のプロセッサ2102とシステム・メモリ2104とを有する処理サブシステム2101を含む。少なくとも一実施例では、メモリ・ハブ2105は、チップセット構成要素内の別個の構成要素であってもよく、又は1つ若しくは複数のプロセッサ2102内に一体化されていてもよい。少なくとも一実施例では、メモリ・ハブ2105は、通信リンク2106を介してI/Oサブシステム2111に結合される。少なくとも一実施例では、I/Oサブシステム2111は、コンピューティング・システム2100が1つ又は複数の入力デバイス2108からの入力を受け取れるようにすることができるI/Oハブ2107を含む。少なくとも一実施例では、I/Oハブ2107は、ディスプレイ・コントローラを有効にすることができ、このディスプレイ・コントローラは、1つ又は複数のプロセッサ2102に含まれて、1つ又は複数のディスプレイ・デバイス2110Aに出力を提供してもよい。少なくとも一実施例では、I/Oハブ2107に結合された1つ又は複数のディスプレイ・デバイス2110Aは、ローカルの、内部の、又は組み込まれたディスプレイ・デバイスを含むことができる。
少なくとも一実施例では、処理サブシステム2101は、バス又は他の通信リンク2113を介してメモリ・ハブ2105に結合された1つ又は複数の並列プロセッサ2112を含む。少なくとも一実施例では、通信リンク2113は、PCIエクスプレスなどであるがこれに限定されない任意の数の規格に基づく通信リンク技術若しくはプロトコルのうちの1つを使用することができ、又はベンダー固有の通信インターフェース若しくは通信ファブリックであってもよい。少なくとも一実施例では、1つ又は複数の並列プロセッサ2112は、メニー・インテグレーテッド・コア(MIC:many integrated core)プロセッサなど、多数の処理コア及び/又は処理クラスタを含むことのできる、計算に集中した並列又はベクトルの処理システムを形成する。少なくとも一実施例では、いくつか又はすべての並列プロセッサ2112は、グラフィックス処理サブシステムを形成し、このサブシステムは、I/Oハブ2107を介して結合された1つ又は複数のディスプレイ・デバイス2110Aのうちの1つに、ピクセルを出力することができる。少なくとも一実施例では、並列プロセッサ2112はまた、1つ又は複数のディスプレイ・デバイス2110Bへの直接接続を可能にするディスプレイ・コントローラ及びディスプレイ・インターフェース(図示せず)を含むことができる。
少なくとも一実施例では、システム・ストレージ・ユニット2114は、I/Oハブ2107に接続されて、コンピューティング・システム2100のためのストレージ機構を提供することができる。少なくとも一実施例では、I/Oスイッチ2116を使用して、I/Oハブ2107と、プラットフォームに一体化されてもよいネットワーク・アダプタ2118及び/又はワイヤレス・ネットワーク・アダプタ2119などの他の構成要素、並びに1つ又は複数のアドイン・デバイス2120を介して加えることができる様々な他のデバイスとの通信を可能にするためのインターフェース機構を提供することができる。少なくとも一実施例では、ネットワーク・アダプタ2118は、イーサネット(登録商標)・アダプタ、又は別の有線ネットワーク・アダプタとすることができる。少なくとも一実施例では、ワイヤレス・ネットワーク・アダプタ2119は、Wi-Fi、Bluetooth、近距離無線通信(NFC)、又は1つ若しくは複数のワイヤレス無線を含む他のネットワーク・デバイスのうちの1つ又は複数を含むことができる。
少なくとも一実施例では、コンピューティング・システム2100は、USB又は他のポート接続、光学ストレージ・ドライブ、ビデオ捕捉デバイスなどを含む明示されていない他の構成要素を含むことができ、これらもI/Oハブ2107に接続されてもよい。少なくとも一実施例では、図21の様々な構成要素を相互接続する通信経路が、PCI(ペリフェラル・コンポーネント・インターコネクト)ベースのプロトコル(たとえば、PCI-エクスプレス)などの任意の好適なプロトコル、又はNV-Link高速相互接続などの他のバス若しくはポイントツーポイント通信インターフェース及び/若しくはプロトコル、又は相互接続プロトコルを使用して、実装されてもよい。
少なくとも一実施例では、並列プロセッサ2112は、たとえばビデオ出力回路を含むグラフィックス及びビデオの処理に最適化された回路を組み込んでおり、グラフィックス・プロセッシング・ユニット(GPU)を構成する。少なくとも一実施例では、並列プロセッサ2112は、汎用処理に最適化された回路を組み込んでいる。少なくとも実施例では、コンピューティング・システム2100の構成要素は、単一の集積回路上の1つ又は複数の他のシステム要素と一体化されてもよい。たとえば、少なくとも一実施例では、並列プロセッサ2112、メモリ・ハブ2105、プロセッサ2102、及びI/Oハブ2107を、システム・オン・チップ(SoC)集積回路に一体化することができる。少なくとも一実施例では、コンピューティング・システム2100の構成要素は、単一のパッケージに一体化されて、システム・イン・パッケージ(SIP:system in package)構成を形成することができる。少なくとも一実施例では、コンピューティング・システム2100の構成要素の少なくとも一部分を、マルチ・チップ・モジュール(MCM:multi-chip module)に一体化することができ、このモジュールを、他のマルチ・チップ・モジュールと相互接続して、モジュール式コンピューティング・システムにすることができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図2100のシステムにおいて使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
プロセッサ
図22Aは、少なくとも一実施例による並列プロセッサ2200を示す。少なくとも一実施例では、並列プロセッサ2200の様々な構成要素は、プログラム可能なプロセッサ、特定用途向け集積回路(ASIC)、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)などの1つ又は複数の集積回路デバイスを使用して実装されてもよい。少なくとも一実施例では、図示してある並列プロセッサ2200は、例示的な実施例による図21に示す1つ又は複数の並列プロセッサ2112の変形形態である。
図22Aは、少なくとも一実施例による並列プロセッサ2200を示す。少なくとも一実施例では、並列プロセッサ2200の様々な構成要素は、プログラム可能なプロセッサ、特定用途向け集積回路(ASIC)、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)などの1つ又は複数の集積回路デバイスを使用して実装されてもよい。少なくとも一実施例では、図示してある並列プロセッサ2200は、例示的な実施例による図21に示す1つ又は複数の並列プロセッサ2112の変形形態である。
少なくとも一実施例では、並列プロセッサ2200は並列処理ユニット2202を含む。少なくとも一実施例では、並列処理ユニット2202は、並列処理ユニット2202の他のインスタンスを含む他のデバイスとの通信を可能にするI/Oユニット2204を含む。少なくとも一実施例では、I/Oユニット2204は、他のデバイスに直接接続されてもよい。少なくとも一実施例では、I/Oユニット2204は、メモリ・ハブ2205などのハブ又はスイッチ・インターフェースの使用を介して、他のデバイスと接続される。少なくとも一実施例では、メモリ・ハブ2205とI/Oユニット2204との間の接続は、通信リンク2213を形成する。少なくとも一実施例では、I/Oユニット2204は、ホスト・インターフェース2206及びメモリ・クロスバー2216に接続され、ここでホスト・インターフェース2206は、処理動作の実行を対象とするコマンドを受け取り、メモリ・クロスバー2216は、メモリ動作の実行を対象とするコマンドを受け取る。
少なくとも一実施例では、ホスト・インターフェース2206が、I/Oユニット2204を介してコマンド・バッファを受け取るとき、ホスト・インターフェース2206は、これらのコマンドを実行するためのワーク動作をフロント・エンド2208に向けることができる。少なくとも一実施例では、フロント・エンド2208はスケジューラ2210に結合され、このスケジューラは、コマンド又は他のワーク・アイテムを処理クラスタ・アレイ2212に分配するように構成される。少なくとも一実施例では、スケジューラ2210は、処理クラスタ・アレイ2212のクラスタにタスクが分配される前に、処理クラスタ・アレイ2212が適切に構成され、有効な状態にあることを確実にする。少なくとも一実施例では、スケジューラ2210は、マイクロコントローラで実行しているファームウェア論理を介して実装される。少なくとも一実施例では、マイクロコントローラ実装スケジューラ2210は、複雑なスケジューリング及びワーク分配動作を、粗い粒度と細かい粒度で実行するように構成可能であり、処理アレイ2212で実行しているスレッドの迅速なプリエンプション及びコンテキストのスイッチングを可能にする。少なくとも一実施例では、ホスト・ソフトウェアは、処理クラスタ・アレイ2212でのスケジューリングのワークロードを、複数のグラフィックス処理の経路のうちの1つを介して証明することができる。少なくとも一実施例では、次いで、スケジューラ2210を含むマイクロコントローラ内のスケジューラ2210論理によって、ワークロードを自動的に処理クラスタ・アレイ2212全体に分配することができる。
少なくとも一実施例では、処理クラスタ・アレイ2212は、最大「N個」の処理クラスタ(たとえば、クラスタ2214A、クラスタ2214B~クラスタ2214N)を含むことができ、ここで「N」は、正の整数を表す(他の図で使用されるものとは異なる整数「N」であってもよい)。少なくとも一実施例では、処理クラスタ・アレイ2212の各クラスタ2214A~2214Nは、大量の同時スレッドを実行することができる。少なくとも一実施例では、スケジューラ2210は、様々なスケジューリング及び/又はワーク分配のアルゴリズムを使用して、処理クラスタ・アレイ2212のクラスタ2214A~2214Nにワークを配分することができ、これらのアルゴリズムは、プログラム又は計算のタイプごとに生じるワークロードに応じて、異なってもよい。少なくとも一実施例では、スケジューリングは、スケジューラ2210によって動的に対処されてもよく、又は処理クラスタ・アレイ2212によって実行されるように構成されたプログラム論理のコンパイル中に、コンパイラ論理によって部分的に支援されてもよい。少なくとも一実施例では、処理クラスタ・アレイ2212の異なるクラスタ2214A~2214Nは、異なるタイプのプログラムを処理するように、又は異なるタイプの計算を実行するように配分されることが可能である。
少なくとも一実施例では、処理クラスタ・アレイ2212は、様々なタイプの並列処理動作を実行するように構成されることが可能である。少なくとも一実施例では、処理クラスタ・アレイ2212は、汎用の並列コンピュート動作を実行するように構成される。たとえば、少なくとも一実施例では、処理クラスタ・アレイ2212は、ビデオ及び/又はオーディオ・データのフィルタリング、物理動作を含むモデリング動作の実行、及びデータ変換の実行を含む処理タスクを実行するための論理を含むことができる。
少なくとも一実施例では、処理クラスタ・アレイ2212は、並列グラフィックス処理動作を実行するように構成される。少なくとも一実施例では、処理クラスタ・アレイ2212は、テクスチャ動作を実行するためのテクスチャ・サンプリング論理、並びにモザイク論理、及び他の頂点処理論理を含むがこれらに限定されないこうしたグラフィックス処理動作の実行をサポートするための追加の論理を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ2212は、頂点シェーダ、モザイク・シェーダ、ジオメトリ・シェーダ、及びピクセル・シェーダなどであるが、これらに限定されないグラフィックス処理関連のシェーダ・プログラムを実行するように構成されることが可能である。少なくとも一実施例では、並列処理ユニット2202は、処理できるようにデータをシステム・メモリからI/Oユニット2204を介して転送することができる。少なくとも一実施例では、処理中、転送されたデータを、処理中にオン・チップ・メモリ(たとえば、並列プロセッサ・メモリ2222)に記憶し、次いでシステム・メモリに書き戻すことができる。
少なくとも一実施例では、並列処理ユニット2202を使用してグラフィックス処理が実行される場合には、処理クラスタ・アレイ2212の複数のクラスタ2214A~2214Nにグラフィックス処理動作をよりうまく分配できるようにするため、処理ワークロードをおおよそ等しい大きさのタスクに分割するようにスケジューラ2210を構成することができる。少なくとも一実施例では、処理クラスタ・アレイ2212の一部分は、異なるタイプの処理を実行するように構成されることが可能である。たとえば、少なくとも一実施例では、レンダリング画像を生成して表示するために、第1の部分は、頂点シェーディング及びトポロジ生成を実行するように構成されてもよく、第2の部分は、モザイク及びジオメトリのシェーディングを実行するように構成されてもよく、第3の部分は、ピクセル・シェーディング又は他の画面空間動作を実行するように構成されてもよい。少なくとも一実施例では、クラスタ2214A~2214Nのうちの1つ又は複数によって生成される中間データをバッファに記憶して、さらなる処理ができるようにクラスタ2214A~2214Nの間で中間データを送信できるようにしてもよい。
少なくとも一実施例では、処理クラスタ・アレイ2212は、実行される処理タスクをスケジューラ2210を介して受け取ることができ、スケジューラ2210は、処理タスクを定義するコマンドをフロント・エンド2208から受け取る。少なくとも一実施例では、処理タスクは、処理されるデータのインデックス、たとえば、表面(パッチ)データ、プリミティブ・データ、頂点データ、及び/又はピクセル・データ、並びに状態パラメータ、及びデータをどのように処理すべきかを定義するコマンド(たとえば、どのプログラムを実行すべきか)を含むことができる。少なくとも一実施例では、スケジューラ2210は、タスクに対応するインデックスをフェッチするように構成されてもよく、又はフロント・エンド2208からインデックスを受け取ってもよい。少なくとも一実施例では、フロント・エンド2208は、入ってくるコマンド・バッファ(たとえば、バッチ・バッファ、プッシュ・バッファなど)によって指定されるワークロードが開始される前に、処理クラスタ・アレイ2212が有効な状態に構成されていることを保証するように構成されることが可能である。
少なくとも一実施例では、並列処理ユニット2202の1つ又は複数のインスタンスのそれぞれは、並列プロセッサ・メモリ2222と結合することができる。少なくとも一実施例では、並列プロセッサ・メモリ2222には、メモリ・クロスバー2216を介してアクセスすることができ、メモリ・クロスバー2216は、処理クラスタ・アレイ2212並びにI/Oユニット2204からメモリ要求を受け取ることができる。少なくとも一実施例では、メモリ・クロスバー2216は、メモリ・インターフェース2218を介して並列プロセッサ・メモリ2222にアクセスすることができる。少なくとも一実施例では、メモリ・インターフェース2218は、複数のパーティション・ユニット(たとえば、パーティション・ユニット2220A、パーティション・ユニット2220B~パーティション・ユニット2220N)を含むことができ、これらのユニットはそれぞれ、並列プロセッサ・メモリ2222の一部分(たとえば、メモリ・ユニット)に結合することができる。少なくとも一実施例では、パーティション・ユニット2220A~2220Nの数は、メモリ・ユニットの数と等しくなるように構成され、それにより、第1のパーティション・ユニット2220Aは、対応する第1のメモリ・ユニット2224Aを有し、第2のパーティション・ユニット2220Bは、対応するメモリ・ユニット2224Bを有し、N番目のパーティション・ユニット2220Nは、対応するN番目のメモリ・ユニット2224Nを有する。少なくとも一実施例では、パーティション・ユニット2220A~2220Nの数は、メモリ・デバイスの数に等しくなくてもよい。
少なくとも一実施例では、メモリ・ユニット2224A~2224Nは、グラフィックス・ダブル・データ・レート(GDDR)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。少なくとも一実施例では、またメモリ・ユニット2224A~2224Nはまた、高帯域幅メモリ(HBM)を含むがこれに限定されない3D積層メモリを含んでもよい。少なくとも一実施例では、並列プロセッサ・メモリ2222の利用可能な帯域幅を効率的に使用するために、フレーム・バッファ又はテクスチャ・マップなどのレンダー・ターゲットが、メモリ・ユニット2224A~2224Nにわたって記憶されて、パーティション・ユニット2220A~2220Nが、各レンダー・ターゲットの部分を並列に書き込みできるようにしてもよい。少なくとも一実施例では、システム・メモリとローカル・キャッシュ・メモリを併用する統合メモリ設計に有利なように、並列プロセッサ・メモリ2222のローカル・インスタンスは除外されてもよい。
少なくとも一実施例では、処理クラスタ・アレイ2212のクラスタ2214A~2214Nのうちのいずれか1つは、並列プロセッサ・メモリ2222内のメモリ・ユニット2224A~2224Nのいずれかに書き込まれることになるデータを処理することができる。少なくとも一実施例では、メモリ・クロスバー2216は、各クラスタ2214A~2214Nの出力を、出力に対してさらなる処理動作を実行することができる任意のパーティション・ユニット2220A~2220N、又は別のクラスタ2214A~2214Nに転送するように構成されることが可能である。少なくとも一実施例では、各クラスタ2214A~2214Nは、メモリ・クロスバー2216を通ってメモリ・インターフェース2218と通信して、様々な外部メモリ・デバイスからの読取り、又はそれへの書込みを行うことができる。少なくとも一実施例では、メモリ・クロスバー2216は、I/Oユニット2204と通信するためのメモリ・インターフェース2218への接続部、並びに並列プロセッサ・メモリ2222のローカル・インスタンスへの接続部を有して、異なる処理クラスタ2214A~2214N内の処理ユニットが、システム・メモリ、又は並列処理ユニット2202のローカルにない他のメモリと通信できるようにする。少なくとも一実施例では、メモリ・クロスバー2216は、仮想チャネルを使用して、クラスタ2214A~2214Nと、パーティション・ユニット2220A~2220Nとの間でトラフィック・ストリームを分離することができる。
少なくとも一実施例では、並列処理ユニット2202の複数のインスタンスは、単一のアドイン・カードに提供されてもよく、又は複数のアドイン・カードが相互接続されてもよい。少なくとも一実施例では、異なるインスタンスが異なる数の処理コア、異なる量のローカル並列プロセッサ・メモリ、及び/又は他の異なる構成を有する場合でも、並列処理ユニット2202の異なるインスタンスは相互動作するように構成されることが可能である。たとえば、少なくとも一実施例では、並列処理ユニット2202のいくつかインスタンスは、他のインスタンスに比べて高い精度の浮動小数点ユニットを含むことができる。少なくとも一実施例では、並列処理ユニット2202又は並列プロセッサ2200のうちの1つ又は複数のインスタンスを組み込んだシステムは、デスクトップ、ラップトップ、若しくは携帯型のパーソナル・コンピュータ、サーバ、ワークステーション、ゲーム・コンソール、及び/又は組み込みシステムを含むが、これらに限定されない様々な構成及びフォーム・ファクタで実装することができる。
図22Bは、少なくとも一実施例によるパーティション・ユニット2220のブロック図である。少なくとも一実施例では、パーティション・ユニット2220は、図22Aのパーティション・ユニット2220A~2220Nのうちの1つのパーティション・ユニットのインスタンスである。少なくとも一実施例では、パーティション・ユニット2220は、L2キャッシュ2221、フレーム・バッファ・インターフェース2225、及びROP:raster operations unit2226(ラスタ演算ユニット)を含む。少なくとも一実施例では、L2キャッシュ2221は、メモリ・クロスバー2216及びROP2226から受け取ったロード及びストアの動作を実行するように構成された読取り/書込みキャッシュである。少なくとも一実施例では、読取りミス及び至急の書戻し要求が、処理されるようにL2キャッシュ2221によってフレーム・バッファ・インターフェース2225に出力される。少なくとも一実施例では、更新も、処理されるようにフレーム・バッファ・インターフェース2225を介してフレームに送られる。少なくとも一実施例では、フレーム・バッファ・インターフェース2225は、図22の(たとえば並列プロセッサ・メモリ2222内の)メモリ・ユニット2224A~2224Nなど、並列プロセッサ・メモリのメモリ・ユニットのうちの1つとインターフェースをとる。
少なくとも一実施例では、ROP2226は、ステンシル、zテスト、ブレンディングなどのラスタ演算を実行する処理ユニットである。少なくとも一実施例では、次いでROP2226は、グラフィックス・メモリに記憶された処理済みグラフィックス・データを出力する。少なくとも一実施例では、ROP2226は、メモリに書き込まれる深度又は色データを圧縮し、メモリから読み取られた深度又は色データを解凍するための圧縮論理を含む。少なくとも一実施例では、圧縮論理は、複数の圧縮アルゴリズムのうちの1つ又は複数を利用するロスレス圧縮論理とすることができる。少なくとも一実施例では、ROP2226によって実行される圧縮のタイプは、圧縮されるデータの統計的特徴に基づき変更することができる。たとえば、少なくとも一実施例では、深度及び色データに対してはタイルごとにデルタ色圧縮が実行される。
少なくとも一実施例では、ROP2226は、パーティション・ユニット2220内ではなく、各処理クラスタ内(たとえば、図22Aのクラスタ2214A~2214N)に含まれる。少なくとも一実施例では、ピクセル・フラグメント・データではなく、ピクセル・データの読取り及び書込み要求が、メモリ・クロスバー2216を介して送信される。少なくとも一実施例では、処理済みグラフィックス・データは、図21の1つ又は複数のディスプレイ・デバイス2110のうちの1つなどのディスプレイ・デバイスに表示されてもよく、プロセッサ2102によってさらに処理できるようにルーティングされてもよく、又は図22Aの並列プロセッサ2200内の処理エンティティのうちの1つによってさらに処理できるようにルーティングされてもよい。
図22Cは、少なくとも一実施例による並列処理ユニット内の処理クラスタ2214のブロック図である。少なくとも一実施例では、処理クラスタは、図22Aの処理クラスタ2214A~2214Nのうちの1つの処理クラスタのインスタンスである。少なくとも一実施例では、処理クラスタ2214は、多数のスレッドを並列で実行するように構成されてもよく、ここで「スレッド」とは、入力データの特定のセットに対して実行している特定のプログラムのインスタンスを指す。少なくとも一実施例では、複数の独立した命令ユニットを提供することなく、多数のスレッドの並列実行をサポートするために、単一命令複数データ(SIMD)の命令発行技法が使用される。少なくとも一実施例では、それぞれの処理クラスタ内の処理エンジンのセットに命令を発行するように構成された共通の命令ユニットを使用して、全体的に同期された多数のスレッドの並列実行をサポートするために、単一命令複数スレッド(SIMT:single-instruction, multiple-thread)の技法が使用される。
少なくとも一実施例では、処理クラスタ2214の動作は、SIMT並列プロセッサに処理タスクを分配するパイプライン・マネージャ2232を介して制御することができる。少なくとも一実施例では、パイプライン・マネージャ2232は、図22Aのスケジューラ2210から命令を受け取り、グラフィックス・マルチプロセッサ2234及び/又はテクスチャ・ユニット2236を介してこれらの命令の実行を管理する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2234は、SIMT並列プロセッサの例示的なインスタンスである。しかし、少なくとも一実施例では、アーキテクチャの異なる様々なタイプのSIMT並列プロセッサが、処理クラスタ2214内に含まれてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2234の1つ又は複数のインスタンスは、処理クラスタ2214内に含めることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2234はデータを処理することができ、処理済みデータを、他のシェーダ・ユニットを含む複数の可能な宛先のうちの1つに分配するためにデータ・クロスバー2240が使用されてもよい。少なくとも一実施例では、パイプライン・マネージャ2232は、データ・クロスバー2240を通して分配されることになる処理済みデータの宛先を指定することによって、処理済みデータの分配を容易にすることができる。
少なくとも一実施例では、処理クラスタ2214内の各グラフィックス・マルチプロセッサ2234は、関数実行論理(たとえば、算術論理演算ユニット、ロード・ストア・ユニットなど)の同一のセットを含むことができる。少なくとも一実施例では、関数実行論理は、前の命令が完了する前に新規の命令を発行することができるパイプライン式に構成されることが可能である。少なくとも一実施例では、関数実行論理は、整数及び浮動小数点の算術、比較演算、ブール演算、ビット・シフト、及び様々な代数関数の計算を含む様々な演算をサポートする。少なくとも一実施例では、同じ関数ユニットのハードウェアを活用して、異なる演算を実行することができ、関数ユニットの任意の組合せが存在してもよい。
少なくとも一実施例では、処理クラスタ2214に送信される命令がスレッドを構成する。少なくとも一実施例では、並列処理エンジンのセットにわたって実行されているスレッドのセットが、スレッド・グループである。少なくとも一実施例では、スレッド・グループは、異なる入力データに対して共通のプログラムを実行する。少なくとも一実施例では、スレッド・グループ内の各スレッドを、グラフィックス・マルチプロセッサ2234内の異なる処理エンジンに割り当てることができる。少なくとも一実施例では、スレッド・グループは、グラフィックス・マルチプロセッサ2234内の処理エンジンの数よりも少ないスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループが処理エンジンの数よりも少ないスレッドを含む場合、処理エンジンのうちの1つ又は複数は、そのスレッド・グループが処理されているサイクル中にはアイドルであってもよい。少なくとも一実施例では、スレッド・グループはまた、グラフィックス・マルチプロセッサ2234内の処理エンジンの数よりも多いスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループがグラフィックス・マルチプロセッサ2234内の処理エンジンの数より多くのスレッドを含む場合には、連続したクロック・サイクルにわたって処理を実行することができる。少なくとも一実施例では、複数のスレッド・グループを、グラフィックス・マルチプロセッサ2234上で同時に実行することができる。
少なくとも一実施例では、グラフィックス・マルチプロセッサ2234は、ロード及びストアの動作を実行するための内部キャッシュ・メモリを含む。少なくとも一実施例では、グラフィックス・マルチプロセッサ2234は、内部キャッシュをやめて、処理クラスタ2214内のキャッシュ・メモリ(たとえば、L1キャッシュ2248)を使用することができる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2234は、パーティション・ユニット(たとえば、図22Aのパーティション・ユニット2220A~2220N)内のL2キャッシュにもアクセスすることができ、これらのキャッシュが、すべての処理クラスタ2214間で共有され、スレッド間でデータを転送するために使用されてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2234は、オフ・チップのグローバル・メモリにもアクセスすることができ、このメモリは、ローカル並列プロセッサ・メモリ及び/又はシステム・メモリのうちの1つ又は複数を含むことができる。少なくとも一実施例では、並列処理ユニット2202の外部にある任意のメモリが、グローバル・メモリとして使用されてもよい。少なくとも一実施例では、処理クラスタ2214は、グラフィックス・マルチプロセッサ2234の複数のインスタンスを含み、共通の命令及びデータを共有することができ、これらはL1キャッシュ2248に記憶されてもよい。
少なくとも一実施例では、各処理クラスタ2214は、仮想アドレスを物理アドレスにマッピングするように構成されたMMU2245(メモリ管理ユニット)を含んでもよい。少なくとも一実施例では、MMU2245の1つ又は複数のインスタンスは、図22Aのメモリ・インターフェース2218内にあってもよい。少なくとも一実施例では、MMU2245は、仮想アドレスを、タイル及び任意選択でキャッシュ・ライン・インデックスの物理アドレスにマッピングするために使用されるページ・テーブル・エントリ(PTE)のセットを含む。少なくとも一実施例では、MMU2245は、アドレスのトランスレーション・ルックアサイド・バッファ(TLB:translation lookaside buffer)又はキャッシュを含んでもよく、これらは、グラフィックス・マルチプロセッサ2234若しくはL1 2248キャッシュ、又は処理クラスタ2214内にあってもよい。少なくとも一実施例では、表面データ・アクセスをローカルに分散するように物理アドレスを処理して、パーティション・ユニット間で要求の効率的なインターリーブが可能になる。少なくとも一実施例では、キャッシュ・ライン・インデックスを使用して、キャッシュ・ラインの要求がヒットかミスかが判定されてもよい。
少なくとも一実施例では、各グラフィックス・マルチプロセッサ2234がテクスチャ・ユニット2236に結合されて、テクスチャ・マッピング動作、たとえば、テクスチャ・サンプル位置の判定、テクスチャ・データの読取り、及びテクスチャ・データのフィルタリングが実行されるように、処理クラスタ2214が構成されてもよい。少なくとも一実施例では、テクスチャ・データは、内部テクスチャL1キャッシュ(図示せず)から、又はグラフィックス・マルチプロセッサ2234内のL1キャッシュから読み取られ、必要に応じて、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリからフェッチされる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2234は、処理済みタスクをデータ・クロスバー2240に出力して、さらなる処理ができるように別の処理クラスタ2214に処理済みタスクを提供し、又はメモリ・クロスバー2216を介して、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリに処理済みタスクを記憶する。少なくとも一実施例では、プレROP2242(プレ・ラスタ演算ユニット)は、グラフィックス・マルチプロセッサ2234からデータを受け取り、ROPユニットにデータを仕向けるように構成されており、ROPユニットは、本明細書に記載のするように、パーティション・ユニット(たとえば、図22Aのパーティション・ユニット2220A~2220N)内に位置付けられてもよい。少なくとも一実施例では、プレROP2242ユニットは、色ブレンディングの最適化を実行し、ピクセル色データを組織化し、アドレス・トランスレーションを実行することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス処理クラスタ2214において使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図22Dは、少なくとも一実施例によるグラフィックス・マルチプロセッサ2234を示す。少なくとも一実施例では、グラフィックス・マルチプロセッサ2234は、処理クラスタ2214のパイプライン・マネージャ2232と結合する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2234は、命令キャッシュ2252、命令ユニット2254、アドレス・マッピング・ユニット2256、レジスタ・ファイル2258、1つ又は複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)コア2262、及び1つ又は複数のロード/ストア・ユニット2266を含むがこれらに限定されない実行パイプラインを有する。少なくとも一実施例では、GPGPUコア2262、及びロード/ストア・ユニット2266は、メモリ及びキャッシュ相互接続2268を介して、キャッシュ・メモリ2272及び共有メモリ2270に結合される。
少なくとも一実施例では、命令キャッシュ2252は、実行すべき命令のストリームをパイプライン・マネージャ2232から受け取る。少なくとも一実施例では、命令は、命令キャッシュ2252にキャッシュされ、命令ユニット2254により実行されるようにディスパッチされる。少なくとも一実施例では、命令ユニット2254は、命令をスレッド・グループ(たとえば、ワープ)としてディスパッチすることができ、アスレッド・グループの各スレッドは、GPGPUコア2262内の異なる実行ユニットに割り当てられる。少なくとも一実施例では、命令は、統一アドレス空間内のアドレスを指定することによって、ローカル、共有、又はグローバルのアドレス空間のいずれかにアクセスすることができる。少なくとも一実施例では、アドレス・マッピング・ユニット2256を使用して、統一アドレス空間のアドレスを、ロード/ストア・ユニット2266がアクセスできる個別メモリ・アドレスにトランスレーションすることができる。
少なくとも一実施例では、レジスタ・ファイル2258は、グラフィックス・マルチプロセッサ2234の機能ユニットにレジスタのセットを提供する。少なくとも一実施例では、レジスタ・ファイル2258は、グラフィックス・マルチプロセッサ2234の機能ユニット(たとえばGPGPUコア2262、ロード/ストア・ユニット2266)のデータ経路に接続された、オペランドのための一時的なストレージを提供する。少なくとも一実施例では、レジスタ・ファイル2258は、レジスタ・ファイル2258の専用部分に各機能ユニットが配分されるように、それぞれの機能ユニット間で分割される。一実施例では、レジスタ・ファイル2258は、グラフィックス・マルチプロセッサ2234によって実行されている異なるワープ間で分割される。
少なくとも一実施例では、GPGPUコア2262はそれぞれ、グラフィックス・マルチプロセッサ2234の命令を実行するために使用される浮動小数点ユニット(FPU)及び/又は整数算術論理演算ユニット(ALU)を含むことができる。少なくとも一実施例では、GPGPUコア2262同士は、同様のアーキテクチャであってもよく、又は異なるアーキテクチャであってもよい。少なくとも一実施例では、GPGPUコア2262の第1の部分は、単精度FPU及び整数ALUを含み、GPGPUコアの第2の部分は、倍精度FPUを含む。少なくとも一実施例では、FPUは、IEEE754-2008規格浮動小数点演算を実装することができ、又は、可変精度の浮動小数点演算を有効にすることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2234はさらに、矩形コピー又はピクセル・ブレンディングの動作などの特定の機能を実行するための、1つ若しくは複数の固定機能ユニット又は特別機能ユニットをさらに含むことができる。少なくとも一実施例では、GPGPUコア2262の1つ又は複数は、固定の又は特別な機能論理も含むことができる。
少なくとも一実施例では、GPGPUコア2262は、複数のデータ・セットに対して単一の命令を実行することができるSIMD論理を含む。少なくとも一実施例では、GPGPUコア2262は、SIMD4、SIMD8、及びSIMD16の命令を物理的に実行することができ、SIMD1、SIMD2、及びSIMD32の命令を論理的に実行することができる。少なくとも一実施例では、GPGPUコアのためのSIMD命令は、シェーダ・コンパイラによるコンパイル時に生成されてもよく、又は単一プログラム複数データ(SPMD:single program multiple data)又はSIMTのアーキテクチャ向けに書かれコンパイルされたプログラムを実行しているときに、自動的に生成されてもよい。少なくとも一実施例では、SIMT実行モデルのために構成されたプログラムの複数のスレッドは、単一のSIMD命令を介して実行することができる。たとえば、少なくとも一実施例では、同じ又は同様の動作を実行する8個のSIMTスレッドを、単一のSIMD8の論理ユニットを介して並列に実行することができる。
少なくとも一実施例では、メモリ及びキャッシュ相互接続2268は、グラフィックス・マルチプロセッサ2234の各機能ユニットをレジスタ・ファイル2258及び共有メモリ2270に接続する相互接続ネットワークである。少なくとも一実施例では、メモリ及びキャッシュ相互接続2268は、ロード/ストア・ユニット2266が、共有メモリ2270とレジスタ・ファイル2258の間でロード及びストアの動作を実装できるようにするクロスバー相互接続である。少なくとも一実施例では、レジスタ・ファイル2258は、GPGPUコア2262と同じ周波数で動作することができ、したがって、GPGPUコア2262とレジスタ・ファイル2258の間のデータ転送は非常に低レイテンシを有し得る。少なくとも一実施例では、共有メモリ2270を使用して、グラフィックス・マルチプロセッサ2234内の機能ユニットで実行されるスレッド間の通信を可能にすることができる。少なくとも一実施例では、キャッシュ・メモリ2272を、たとえばデータ・キャッシュとして使用して、機能ユニットとテクスチャ・ユニット2236の間で通信されるテクスチャ・データをキャッシュすることができる。少なくとも一実施例では、共有メモリ2270は、プログラム管理キャッシュとしても使用することができる。少なくとも一実施例では、GPGPUコア2262で実行されているスレッドは、キャッシュ・メモリ2272内に記憶される自動キャッシュ・データに加えて、共有メモリ内にプログラム的にデータを記憶することができる。
少なくとも一実施例では、本明細書に記載の並列プロセッサ又はGPGPUは、ホスト/プロセッサ・コアに通信可能に結合されて、グラフィックス動作、機械学習動作、パターン分析動作、及び様々な汎用GPU(GPGPU)機能を加速する。少なくとも一実施例では、GPUは、バス又は他の相互接続(たとえば、PCIe又はNVLinkなどの高速相互接続)を介してホスト・プロセッサ/コアに通信可能に結合されてもよい。少なくとも一実施例では、GPUは、コアとしてパッケージ又はチップに一体化されてもよく、パッケージ又はチップの内部の内部プロセッサ・バス/相互接続を介してコアに通信可能に結合されてもよい。少なくとも一実施例では、GPUの接続方法に関わらず、プロセッサ・コアは、ワーク記述子に含まれたコマンド/命令のシーケンスの形でワークをこうしたGPUに配分してもよい。少なくとも一実施例では、次いでGPUは、これらのコマンド/命令を効率的に処理するために専用の回路/論理を使用する。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実施するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・マルチプロセッサ2234において使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図23は、少なくとも一実施例による、マルチGPUコンピューティング・システム2300を示す。少なくとも一実施例では、マルチGPUコンピューティング・システム2300は、ホスト・インターフェース・スイッチ2304を介して複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)2306A~2306Dに結合されたプロセッサ2302を含むことができる。少なくとも一実施例では、ホスト・インターフェース・スイッチ2304は、プロセッサ2302をPCIエクスプレス・バスに結合するPCIエクスプレス・スイッチ・デバイスであり、このPCIエクスプレス・バスを介して、プロセッサ2302は、GPGPU2306A~2306Dと通信することができる。少なくとも一実施例では、GPGPU2306A~2306Dは、高速ポイントツーポイントGPUツーGPUリンク2316のセットを介して相互接続することができる。少なくとも一実施例では、GPUツーGPUリンク2316は、専用GPUリンクを介して、GPGPU2306A~2306Dのそれぞれに接続される。少なくとも一実施例では、P2PのGPUリンク2316は、プロセッサ2302が接続されているホスト・インターフェース・バス2304を介した通信を必要とせずに、GPGPU2306A~2306Dのそれぞれの間で直接通信を可能にする。少なくとも一実施例では、P2PのGPUリンク2316に仕向けられたGPUツーGPUトラフィックがあると、ホスト・インターフェース・バス2304は、システム・メモリへのアクセスができるように、又はたとえば1つ若しくは複数のネットワーク・デバイスを介して、マルチGPUコンピューティング・システム2300の他のインスタンスと通信するために、利用可能な状態に保たれる。少なくとも一実施例では、GPGPU2306A~2306Dは、ホスト・インターフェース・スイッチ2304を介してプロセッサ2302に接続され、少なくとも一実施例では、プロセッサ2302は、P2PのGPUリンク2316のための直接サポートを含み、GPGPU2306A~2306Dに直接接続することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実施するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにマルチGPUコンピューティング・システム2300において使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図24は、少なくとも一実施例による、グラフィックス・プロセッサ2400のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ2400は、リング相互接続2402、パイプライン・フロント・エンド2404、メディア・エンジン2437、及びグラフィックス・コア2480A~2480Nを含む。少なくとも一実施例では、リング相互接続2402は、グラフィックス・プロセッサ2400を、他のグラフィックス・プロセッサ又は1つ若しくは複数の汎用プロセッサ・コアを含む他の処理ユニットに結合する。少なくとも一実施例では、グラフィックス・プロセッサ2400は、マルチ・コア処理システム内に一体化された多数のプロセッサのうちの1つである。
少なくとも一実施例では、グラフィックス・プロセッサ2400は、リング相互接続2402を介してコマンドのバッチを受け取る。少なくとも一実施例では、入ってくるコマンドは、パイプライン・フロント・エンド2404におけるコマンド・ストリーマ2403によって解釈される。少なくとも一実施例では、グラフィックス・プロセッサ2400は、グラフィックス・コア2480A~2480Nを介して3Dジオメトリ処理及びメディア処理を実行するためのスケーラブルな実行論理を含む。少なくとも一実施例では、3Dジオメトリ処理コマンドについては、コマンド・ストリーマ2403はコマンドをジオメトリ・パイプライン2436に供給する。少なくとも一実施例では、少なくとも一部のメディア処理コマンドについては、コマンド・ストリーマ2403はコマンドをビデオ・フロント・エンド2434に供給し、ビデオ・フロント・エンド2434は、メディア・エンジン2437に結合される。少なくとも一実施例では、メディア・エンジン2437は、ビデオ及び画像の後処理のためのVideo Quality Engine(VQE)2430と、ハードウェア加速されたメディア・データのエンコード及びデコードを提供するマルチ・フォーマット・エンコード/デコード(MFX)2433エンジンとを含む。少なくとも一実施例では、ジオメトリ・パイプライン2436及びメディア・エンジン2437はそれぞれ、少なくとも1つのグラフィックス・コア2480によって提供されるスレッド実行リソースのための実行スレッドを生成する。
少なくとも一実施例では、グラフィックス・プロセッサ2400は、グラフィックス・コア2480A~2480N(モジュールであり得、コア・スライスと呼ばれることもある)を特徴とするスケーラブルなスレッド実行リソースを含み、それぞれのグラフィックス・コア2480A~2480Nは、複数のサブ・コア2450A-50N、2460A~2460N(コア・サブ・スライスと呼ばれることもある)を有する。少なくとも一実施例では、グラフィックス・プロセッサ2400は、任意の数のグラフィックス・コア2480Aを有することができる。少なくとも一実施例では、グラフィックス・プロセッサ2400は、少なくとも第1のサブ・コア2450A及び第2のサブ・コア2460Aを有するグラフィックス・コア2480Aを含む。少なくとも一実施例では、グラフィックス・プロセッサ2400は、単一のサブ・コア(たとえば、2450A)を有する低電力プロセッサである。少なくとも一実施例では、グラフィックス・プロセッサ2400は、複数のグラフィックス・コア2480A~2480Nを含み、このそれぞれが、第1のサブ・コア2450A~2450Nのセット、及び第2のサブ・コア2460A~2460Nのセットを含む。少なくとも一実施例では、第1のサブ・コア2450A~2450Nの各サブ・コアは、少なくとも、実行ユニット2452A~2452Nとメディア/テクスチャ・サンプラ2454A~2454Nの第1のセットを含む。少なくとも一実施例では、第2のサブ・コア2460A~2460Nの各サブ・コアは、少なくとも、実行ユニット2462A~2462Nとサンプラ2464A~2464Nの第2のセットを含む。少なくとも一実施例では、各サブ・コア2450A~2450N、2460A~2460Nは、共有リソース2470A~2470Nのセットを共有する。少なくとも一実施例では、共有リソースは、共有キャッシュ・メモリ及びピクセル動作論理を含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実施するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・プロセッサ2400において使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図25は、少なくとも一実施例による、命令を実行するための論理回路を含んでもよいプロセッサ2500のマイクロ・アーキテクチャを示すブロック図である。少なくとも一実施例では、プロセッサ2500は、x86命令、AMR命令、特定用途向け集積回路(ASIC)用の特別命令などを含む命令を実行してもよい。少なくとも一実施例では、プロセッサ2500は、カリフォルニア州サンタクララのインテルコーポレーションによる、MMX技術で有効化されたマイクロプロセッサ内の64ビット幅MMXTMレジスタなど、パック・データを記憶するためのレジスタを含んでもよい。少なくとも一実施例では、整数形式と浮動小数点形式の両方で利用可能なMMXレジスタは、単一命令複数データ(「SIMD」)及びストリーミングSIMD拡張(「SSE」:streaming SIMD extensions)命令を伴うパック・データ要素で動作してもよい。少なくとも一実施例では、SSE2、SSE3、SSE4、AVX、又はそれ以上(総称して「SSEx」と呼ばれる)の技術に関する128ビット幅のXMMレジスタは、こうしたパック・データのオペランドを保持してもよい。少なくとも一実施例では、プロセッサ2500は、機械学習若しくは深層学習のアルゴリズム、訓練、又は推論を加速するために命令を実行してもよい。
少なくとも一実施例では、プロセッサ2500は、実行すべき命令をフェッチし、プロセッサ・パイプラインで後に使用すべき命令を準備するイン・オーダ・フロント・エンド(「フロント・エンド」)2501を含む。少なくとも一実施例では、フロント・エンド2501は、いくつかのユニットを含んでもよい。少なくとも一実施例では、命令プリフェッチャ2526が、メモリから命令をフェッチし、命令デコーダ2528に命令を供給し、命令デコーダが、命令をデコード又は解釈する。たとえば、少なくとも一実施例では、命令デコーダ2528は、受け取った命令を、機械が実行することのできる「マイクロ命令」又は「マイクロ・オペレーション」と呼ばれる(「マイクロ・オプス」又は「uops」とも呼ばれる)1つ又は複数のオペレーションにデコードする。少なくとも一実施例では、命令デコーダ2528は、命令を、オプコード及び対応するデータ、並びに制御フィールドに構文解析して、これらがマイクロ・アーキテクチャによって使用されて、少なくとも一実施例による動作が実行されてもよい。少なくとも一実施例では、トレース・キャッシュ2530は、デコードされたuopsを、実行できるようにuopキュー2534においてプログラム順のシーケンス又はトレースにアセンブルしてもよい。少なくとも一実施例では、トレース・キャッシュ2530が複雑な命令に遭遇すると、マイクロコードROM2532が、動作の完了に必要なuopsを提供する。
少なくとも一実施例では、単一のマイクロ・オプスに変換できる命令もあれば、全動作を完了するためにいくつかのマイクロ・オプスを必要とする命令もある。少なくとも一実施例では、命令を完了するために5つ以上のマイクロ・オプスが要な場合、命令デコーダ2528は、マイクロコードROM2532にアクセスして、命令を実行してもよい。少なくとも一実施例では、命令は、命令デコーダ2528において処理できるように、少数のマイクロ・オプスにデコードされてもよい。少なくとも一実施例では、こうした動作を完了するのに多数のマイクロ・オプスが必要な場合には、命令は、マイクロコードROM2532に記憶されてもよい。少なくとも一実施例では、トレース・キャッシュ2530は、少なくとも一実施例によるマイクロコードROM2532からの1つ又は複数の命令を完了するために、エントリ・ポイント・プログラマブル論理アレイ(「PLA」:programmable logic array)を参照して、マイクロコード・シーケンスを読み取るための正しいマイクロ命令ポインタを判定する。少なくとも一実施例では、マイクロコードROM2532が命令のためのマイクロ・オプスのシーケンシングを終了した後、機械のフロント・エンド2501は、トレース・キャッシュ2530からマイクロ・オプスのフェッチを再開してもよい。
少なくとも一実施例では、アウト・オブ・オーダ実行エンジン(「アウト・オブ・オーダ・エンジン」)2503は、実行できるように命令を準備してもよい。少なくとも一実施例では、アウト・オブ・オーダ実行論理は、命令のフローをなめらかにし、その順序を変更するために多数バッファを有し、命令がパイプラインを下り、実行されるようにスケジューリングされるときの性能を最適化する。少なくとも一実施例では、アウト・オブ・オーダ実行エンジン2503は、限定することなく、アロケータ/レジスタ・リネーマ2540、メモリuopキュー2542、整数/浮動小数点uopキュー2544、メモリ・スケジューラ2546、高速スケジューラ2502、低速/汎用浮動小数点スケジューラ(「低速/汎用FP:floating pointスケジューラ」)2504、及び単純浮動小数点スケジューラ(「単純FPスケジューラ」)2506を含む。少なくとも一実施例では、高速スケジューラ2502、低速/汎用浮動小数点スケジューラ2504、及び単純浮動小数点スケジューラ2506は、本明細書において集合的に「uopスケジューラ2502、2504、2506」とも呼ばれる。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2540は、実行するために各uopが必要とする機械バッファ及びリソースを配分する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2540は、レジスタ・ファイルへのエントリ時に論理レジスタの名前を変更する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2540はまた、メモリ・スケジューラ2546及びuopスケジューラ2502、2504、2506の前の、2つのuopキュー、すなわちメモリ動作のためのメモリuopキュー2542と非メモリ動作のための整数/浮動小数点uopキュー2544のうちの1つに、各uopのエントリを配分する。少なくとも一実施例では、uopスケジューラ2502、2504、2506は、uopsがいつ実行準備されるかを、それらの従属入力レジスタ・オペランドのソースが準備されていること、及びそれらの動作を完了するためにuopが必要とする実行リソースが利用可能であることに基づき、判定する。少なくとも一実施例では、高速スケジューラ2502は、メイン・クロック・サイクルの半分ごとにスケジューリングしてもよく、低速/汎用浮動小数点スケジューラ2504及び単純浮動小数点スケジューラ2506は、メイン・プロセッサのクロック・サイクル当たりに1回スケジューリングしてもよい。少なくとも一実施例では、uopスケジューラ2502、2504、2506は、実行できるようにuopsをスケジューリングするためにディスパッチ・ポートを調停する。
少なくとも一実施例では、実行ブロック2511は、限定することなく、整数レジスタ・ファイル/バイパス・ネットワーク2508、浮動小数点レジスタ・ファイル/バイパス・ネットワーク(「FPレジスタ・ファイル/バイパス・ネットワーク」)2510、アドレス生成ユニット(「AGU」:address generation units)2512及び2514、高速算術論理演算ユニット(ALU)(「高速ALU」)2516及び2518、低速算術論理演算ユニット(「低速ALU」)2520、浮動小数点ALU(「FP」)2522、並びに浮動小数点移動ユニット(「FP移動」)2524を含む。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2508及び浮動小数点レジスタ・ファイル/バイパス・ネットワーク2510は、本明細書において「レジスタ・ファイル2508、2510」とも呼ばれる。少なくとも一実施例では、AGU2512及び2514、高速ALU2516及び2518、低速ALU2520、浮動小数点ALU2522、及び浮動小数点移動ユニット2524は、本明細書において「実行ユニット2512、2514、2516、2518、2520、2522、及び2524」とも呼ばれる。少なくとも一実施例では、実行ブロック2511は、限定することなく、(ゼロを含む)任意の数及びタイプのレジスタ・ファイル、バイパス・ネットワーク、アドレス生成ユニット、及び実行ユニットを、任意の組合せで含んでもよい。
少なくとも一実施例では、レジスタ・ネットワーク2508、2510は、uopスケジューラ2502、2504、2506と、実行ユニット2512、2514、2516、2518、2520、2522、及び2524との間に配置されてもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2508は、整数演算を実行する。少なくとも一実施例では、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2510は、浮動小数点演算を実行する。少なくとも一実施例では、レジスタ・ネットワーク2508、2510のそれぞれは、限定することなく、バイパス・ネットワークを含んでもよく、このバイパス・ネットワークは、レジスタ・ファイルにまだ書き込まれていない完了したばかりの結果を、新しい従属uopsにバイパス又は転送してもよい。少なくとも一実施例では、レジスタ・ネットワーク2508、2510は、互いにデータを通信してもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2508は、限定することなく、2つの別々のレジスタ・ファイル、すなわち低次32ビットのデータ用の1つのレジスタ・ファイル、及び高次32ビットのデータ用の第2のレジスタ・ファイルを含んでもよい。少なくとも一実施例では、浮動小数点命令は、通常、64~128ビット幅のオペランドを有することから、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2510は、限定することなく、128ビット幅のエントリを含んでもよい。
少なくとも一実施例では、実行ユニット2512、2514、2516、2518、2520、2522、2524は、命令を実行してもよい。少なくとも一実施例では、レジスタ・ネットワーク2508、2510は、マイクロ命令が実行する必要のある整数及び浮動小数点のデータのオペランド値を記憶する。少なくとも一実施例では、プロセッサ2500は、限定することなく、任意の数及び組合せの実行ユニット2512、2514、2516、2518、2520、2522、2524を含んでよい。少なくとも一実施例では、浮動小数点ALU2522及び浮動小数点移動ユニット2524は、浮動小数点、MMX、SIMD、AVX、及びSEE、又は特別な機械学習命令を含む他の演算を実行してもよい。少なくとも一実施例では、浮動小数点ALU2522は、限定することなく、64ビットずつの浮動小数点デバイダを含み、除算、平方根、及び残りのマイクロ・オプスを実行してもよい。少なくとも一実施例では、浮動小数点値を含む命令は、浮動小数点ハードウェアによって対処されてもよい。少なくとも一実施例では、ALU演算は、高速ALU2516、2518に渡されてもよい。少なくとも一実施例では、高速ALU2516、2518は、クロック・サイクルの半分の実効レイテンシで高速演算を実行してもよい。少なくとも一実施例では、低速ALU2520は、乗数、シフト、フラグ論理、及びブランチ処理などの長レイテンシ・タイプの演算のための整数実行ハードウェアを、限定することなく含んでもよいことから、ほとんどの複雑な整数演算は低速ALU2520に進む。少なくとも一実施例では、メモリのロード/ストア動作は、AGUS2512、2514によって実行されてもよい。少なくとも一実施例では、高速ALU2516、高速ALU2518、及び低速ALU2520は、64ビットのデータ・オペランドで整数演算を実行してもよい。少なくとも一実施例では、高速ALU2516、高速ALU2518、及び低速ALU2520は、16、32、128、256などを含む様々なデータ・ビット・サイズをサポートするように実装されてもよい。少なくとも一実施例では、浮動小数点ALU2522及び浮動小数点移動ユニット2524は、SIMD及びマルチメディア命令と併せた128ビット幅のパック・データ・オペランドなど様々なビット幅を有する幅広いオペランドをサポートするように実装されてもよい。
少なくとも一実施例では、uopスケジューラ2502、2504、2506は、親ロードが実行を終了する前に、従属演算をディスパッチする。少なくとも一実施例では、uopsは、プロセッサ2500において投機的にスケジューリング及び実行されてもよいので、プロセッサ2500は、メモリ・ミスに対処するための論理も含んでよい。少なくとも一実施例では、データ・キャッシュにおいてデータ・ロードがミスした場合、一時的に不正確なデータを有するスケジューラを通り過ぎたパイプラインに、進行中の従属演算が存在してもよい。少なくとも一実施例では、リプレイ機構が、不正確なデータを使用する命令を追跡及び再実行する。少なくとも一実施例では、従属演算は、リプレイされる必要があってもよく、独立した演算は、完了が許容されてもよい。少なくとも一実施例では、プロセッサの少なくとも一実施例のスケジューラ及びリプレイ機構はまた、テキスト・ストリング比較演算のための命令シーケンスを捕捉するように設計されてもよい。
少なくとも一実施例では、「レジスタ」は、オペランドを識別するための命令の一部として使用することができるオンボード・プロセッサのストレージ・ロケーションを指してもよい。少なくとも一実施例では、レジスタは、(プログラマの視点から見て)プロセッサの外部から使用可能であり得るものであってもよい。少なくとも一実施例では、レジスタは、特定のタイプの回路に限定されなくてもよい。むしろ、少なくとも一実施例では、レジスタは、データを記憶し、データを提供し、本明細書に記載の機能を実行してもよい。少なくとも一実施例では、本明細書に記載のレジスタは、専用物理レジスタ、レジスタ・リネーミングを使用して動的に配分される物理レジスタ、専用物理レジスタと動的に配分される物理レジスタとの組合せなど、任意の数の異なる技法を使用して、プロセッサ内の回路によって実装されてもよい。少なくとも一実施例では、整数レジスタは、32ビットの整数データを記憶する。少なくとも一実施例のレジスタ・ファイルは、パック・データのための8つのマルチメディアSIMDレジスタも含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915の一部又はすべてが、実行ブロック2511、及び図示してある若しくは図示していない他のメモリ又はレジスタに組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、実行ブロック2511に示すALUのうちの1つ又は複数を使用してもよい。さらに、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行ブロック2511のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図26は、少なくとも一実施例による深層学習アプリケーション・プロセッサ2600を示す。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2600は、深層学習アプリケーション・プロセッサ2600によって実行される場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、深層学習アプリケーション・プロセッサ2600に実行させる命令を使用する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2600は、特定用途向け集積回路(ASIC)である。少なくとも一実施例では、アプリケーション・プロセッサ2600は、1つ若しくは複数の命令又は両方を実行した結果としていずれもハードウェアに「ハード・ワイヤード」された行列乗算演算を実行する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2600は、限定することなく、処理クラスタ2610(1)~2610(12)、チップ間リンク(「ICL」)2620(1)~2620(12)、チップ間コントローラ(「ICC」)2630(1)~2630(2)、高帯域幅メモリ第2世代(「HBM2」)2640(1)~2640(4)、メモリ・コントローラ(「Mem Ctrlrs」)2642(1)~2642(4)、高帯域幅メモリ物理層(「HBM PHY」)2644(1)~2644(4)、管理-コントローラ中央処理装置(「管理-コントローラCPU」)2650、シリアル・ペリフェラル・インターフェース、集積回路間、及び汎用入力/出力ブロック(「SPI、I2C、GPIO」)2660、周辺構成要素相互接続エクスプレス・コントローラ及びダイレクト・メモリ・アクセス・ブロック(「PCIeコントローラ及びDMA」)2670、並びに16レーン周辺構成要素相互接続エクスプレス・ポート(「PCI Expressx16」)2680を含む。
少なくとも一実施例では、処理クラスタ2610は、本明細書に記載の技法を含む1つ又は複数の訓練技法を使用して計算された重みパラメータに基づき、推論又は予測の演算を含む深層学習演算を実行してもよい。少なくとも一実施例では、各処理クラスタ2610は、限定することなく、任意の数及びタイプのプロセッサを含んでもよい。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2600は、任意の数及びタイプの処理クラスタ2600を含んでもよい。少なくとも一実施例では、チップ間リンク2620は、双方向性である。少なくとも一実施例では、チップ間リンク2620及びチップ間コントローラ2630は、1つ又は複数のニューラル・ネットワークに具体化された1つ又は複数の機械学習アルゴリズムを実行した結果得られるアクティブ化情報を含む情報を、複数の深層学習アプリケーション・プロセッサ2600が交換できるようにする。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2600は、(ゼロを含む)任意の数及びタイプのICL2620及びICC2630を含んでもよい。
少なくとも一実施例では、HBM2 2640は、合計32ギガバイト(GB:Gigabyte)のメモリを提供する。少なくとも一実施例では、HBM2 2640(i)は、メモリ・コントローラ2642(i)とHBM PHY2644(i)の両方に関連付けられ、ここで「i」は任意の整数である。少なくとも一実施例では、任意の数のHBM2 2640が、任意のタイプ及び合計量の高帯域幅メモリを提供してもよく、(ゼロを含む)任意の数及びタイプのメモリ・コントローラ2642及びHBM PHY2644に関連付けられてもよい。少なくとも一実施例では、SPI、I2C、GPIO2660、PCIeコントローラ及びDMA2670、並びに/又はPCIe2680は、任意の技術的に実行可能なやり方で任意の数及びタイプの通信規格を有効にする任意の数及びタイプのブロックに置き換えられてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、深層学習アプリケーション・プロセッサ2600に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2600は、別のプロセッサ若しくはシステムによって、又は深層学習アプリケーション・プロセッサ2600によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、プロセッサ2600は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図27は、少なくとも一実施例による、ニューロモーフィック・プロセッサ2700のブロック図である。少なくとも一実施例では、ニューロモーフィック・プロセッサ2700は、ニューロモーフィック・プロセッサ2700の外部のソースから1つ又は複数の入力を受信する。少なくとも一実施例では、これらの入力は、ニューロモーフィック・プロセッサ2700内の1つ又は複数のニューロン2702に送信されてもよい。少なくとも一実施例では、ニューロン2702及びその構成要素は、1つ又は複数の算術論理演算ユニット(ALU)を含む回路又は論理を使用して、実装されてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2700は、限定することなく、ニューロン2702の数千又は数百万のインスタンスを含んでもよいが、任意の好適な数のニューロン2702が使用されてもよい。少なくとも一実施例では、ニューロン2702の各インスタンスは、ニューロン入力2704及びニューロン出力2706を含んでもよい。少なくとも一実施例では、ニューロン2702は出力を生成してもよく、この出力は、ニューロン2702の他のインスタンスの入力に送信されてもよい。たとえば、少なくとも一実施例では、ニューロン入力2704及びニューロン出力2706は、シナプス2708を介して相互接続されてもよい。
少なくとも一実施例では、ニューロン2702とシナプス2708は、ニューロモーフィック・プロセッサ2700が受信した情報をニューロモーフィック・プロセッサ2700が動作して処理又は分析するように、相互接続されてもよい。少なくとも一実施例では、ニューロン2702は、ニューロン入力2704を介して受信した入力が、閾値を超えているとき、出力パルス(又は「発火」若しくは「スパイク」)を送信してもよい。少なくとも一実施例では、ニューロン2702は、ニューロン入力2704において受信した信号を合計又は積分してもよい。たとえば、少なくとも一実施例では、ニューロン2702は、漏れ積分発火ニューロン(leaky integrate-and-fire neuron)として実装されてもよく、ここで、合計(「膜電位」と呼ばれる)が閾値を超える場合には、ニューロン2702は、シグモイド関数又は閾値関数などの伝達関数を使用して、出力(又は「発火」)を生成してもよい。少なくとも一実施例では、漏れ積分発火ニューロンは、ニューロン入力2704で受信した信号を合計して膜電位にしてもよく、また、崩壊因子(又は漏れ)を適用して膜電位を低減してもよい。少なくとも一実施例では、複数の入力信号が、閾値を超えるほど十分に素早く(すなわち、膜電位の崩壊が少なすぎて発火できなくなる前に)ニューロン入力2704において受信された場合には、漏れ積分発火ニューロンが発火してもよい。少なくとも一実施例では、ニューロン2702は、入力を受信し、入力を積分して膜電位にし、膜電位を崩壊させる回路又は論理を使用して、実装されてもよい。少なくとも一実施例では、入力は平均化されてもよく、又は任意の他の好適な伝達関数が使用されてもよい。さらに、少なくとも一実施例では、ニューロン2702は、ニューロン2704に伝達関数を適用した結果が閾値を超えるとき、ニューロン2706において出力スパイクを生成するコンパレータ回路又は論理を、限定することなく含んでもよい。少なくとも一実施例では、ニューロン2702は発火すると、前に受信した入力情報を、たとえば膜電位を0又は他の好適なデフォルト値に再設定することによって、無視してもよい。少なくとも一実施例では、膜電位が0にリセットされると、ニューロン2702は、好適な期間(又は不応期)の後に通常の動作を再開してもよい。
少なくとも一実施例では、ニューロン2702は、シナプス2708を通して相互接続されてもよい。少なくとも一実施例では、シナプス2708は、第1のニューロン2702の出力から第2のニューロン2702の入力に信号を送信するように動作してもよい。少なくとも一実施例では、ニューロン2702は、シナプス2708の2つ以上のインスタンスを介して情報を送信してもよい。少なくとも一実施例では、ニューロン出力2706の1つ又は複数のインスタンスは、シナプス2708のインスタンスを介して、同じニューロン2702のニューロン入力2704のインスタンスに接続されてもよい。少なくとも一実施例では、シナプス2708のインスタンスを介して送信されることになる出力を生成するニューロン2702のインスタンスは、シナプス2708のそのインスタンスに対して「シナプス前ニューロン」と呼ばれてもよい。少なくとも一実施例では、シナプス2708のインスタンスを介して送信されることになる入力を受信するニューロン2702のインスタンスは、シナプス2708のそのインスタンスに対して「シナプス後ニューロン」と呼ばれてもよい。少なくとも一実施例では、ニューロン2702のインスタンスは、シナプス2708の1つ又は複数のインスタンスから入力を受信してもよく、また、シナプス2708の1つ又は複数のインスタンスを介して出力を送信してもよいので、ニューロン2702の単一のインスタンスは、したがって、シナプス2708の様々なインスタンスに対して「シナプス前ニューロン」と「シナプス後ニューロン」の両方であってもよい。
少なくとも一実施例では、ニューロン2702は、1つ又は複数の層に組織化されてもよい。少なくとも一実施例では、ニューロン2702の各インスタンスは、1つ又は複数のシナプス2708を通って1つ又は複数のニューロン入力2704にファン・アウトすることができる1つのニューロン出力2706を有してもよい。少なくとも一実施例では、第1の層2710のニューロン2702のニューロン出力2706は、第2の層2712のニューロン2702のニューロン入力2704に接続されてもよい。少なくとも一実施例では、層2710は、「フィード・フォワード」層と呼ばれてもよい。少なくとも一実施例では、第1の層2710のインスタンスにおけるニューロン2702の各インスタンスは、第2の層2712におけるニューロン2702の各インスタンスにファン・アウトしてもよい。少なくとも一実施例では、第1の層2710は、「完全に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層2712のインスタンスにおけるニューロン2702の各インスタンスは、第3の層2714におけるニューロン2702の全インスタンスより少ないインスタンスにファン・アウトしてもよい。少なくとも一実施例では、第2の層2712は、「疎に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層2712のニューロン2702は、第2の層2712におけるニューロン2702を含め、複数の他の層のニューロン2702にファン・アウトしてもよい。少なくとも一実施例では、第2の層2712は、「回帰層」と呼ばれてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2700は、疎に接続されたフィード・フォワード層と完全に接続されたフィード・フォワード層の両方を限定することなく含む、回帰層とフィード・フォワード層の任意の好適な組合せを限定することなく含んでもよい。
少なくとも一実施例では、ニューロモーフィック・プロセッサ2700は、シナプス2708をニューロン2702に接続するための再構成可能相互接続アーキテクチャ、又は専用ハード・ワイヤード相互接続を、限定することなく含んでもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2700は、ニューラル・ネットワーク・トポロジ、及びニューロンのファン・イン/ファン・アウトに基づき、必要に応じてシナプスを異なるニューロン2702に配分できるようにする回路又は論理を、限定することなく含んでもよい。たとえば、少なくとも一実施例では、シナプス2708は、ネットワーク・オン・チップなどの相互接続ファブリックを使用して、又は専用の接続を用いて、ニューロン2702に接続されてもよい。少なくとも一実施例では、シナプス相互接続及びその構成要素は、回路又は論理を使用して実装されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図28は、少なくとも一実施例による処理システムのブロック図である。少なくとも一実施例では、システム2800は、1つ又は複数のプロセッサ2802、及び1つ又は複数のグラフィックス・プロセッサ2808を含み、単一プロセッサのデスクトップ・システム、マルチプロセッサのワークステーション・システム、又は多数のプロセッサ2802若しくはプロセッサ・コア2807を有するサーバ・システムであってもよい。少なくとも一実施例では、システム2800は、モバイル・デバイス、携帯型デバイス、又は組み込みデバイスで使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。
少なくとも一実施例では、システム2800は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム及びメディアのコンソールを含むゲーム・コンソール、モバイル・ゲーミング・コンソール、携帯型ゲーム・コンソール、若しくはオンライン・ゲーム・コンソールを含んでもよく、又はそれらに組み込まれてもよい。少なくとも一実施例では、システム2800は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス、又はモバイル・インターネット・デバイスである。少なくとも一実施例では、処理システム2800はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、若しくは仮想現実デバイスなどのウェアラブル・デバイスを含んでもよく、それらに結合されてもよく、又はそれらの中に一体化されてもよい。少なくとも一実施例では、処理システム2800は、1つ又は複数のプロセッサ2802と、1つ又は複数のグラフィックス・プロセッサ2808によって生成されるグラフィカル・インターフェースとを有するテレビ又はセット・トップ・ボックス・デバイスである。
少なくとも一実施例では、1つ又は複数のプロセッサ2802はそれぞれ、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実行する命令を処理するための1つ又は複数のプロセッサ・コア2807を含む。少なくとも一実施例では、1つ又は複数のプロセッサ・コア2807のそれぞれは、特定の命令シーケンス2809を処理するように構成される。少なくとも一実施例では、命令シーケンス2809は、複合命令セット・コンピューティング(CISC)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にしてもよい。少なくとも一実施例では、プロセッサ・コア2807はそれぞれ、異なる命令シーケンス2809を処理してもよく、この命令セットは、他の命令シーケンスのエミュレーションを容易にする命令を含んでもよい。少なくとも一実施例では、プロセッサ・コア2807はまた、デジタル信号プロセッサ(DSP)などの他の処理デバイスを含んでもよい。
少なくとも一実施例では、プロセッサ2802はキャッシュ・メモリ2804を含む。少なくとも一実施例では、プロセッサ2802は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ2802の様々な構成要素間で共有される。少なくとも一実施例では、プロセッサ2802はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC))(図示せず)を使用し、このキャッシュは、知られているキャッシュ・コヒーレンス技法を使用して、プロセッサ・コア2807間で共有されてもよい。少なくとも一実施例では、さらにレジスタ・ファイル2806がプロセッサ2802に含まれ、このレジスタ・ファイルは、異なるタイプのデータを記憶するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタ)を含んでもよい。少なくとも一実施例では、レジスタ・ファイル2806は、汎用レジスタ又は他のレジスタを含んでもよい。
少なくとも一実施例では、1つ又は複数のプロセッサ2802は、1つ又は複数のインターフェース・バス2810に結合されて、アドレス、データ、又は制御信号などの通信信号を、プロセッサ2802とシステム2800内の他の構成要素との間で送信する。少なくとも一実施例では、インターフェース・バス2810は、一実施例では、ダイレクト・メディア・インターフェース(DMI)バスのバージョンなどのプロセッサ・バスとすることができる。少なくとも一実施例では、インターフェース2810は、DMIバスに限定されず、1つ又は複数のペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)、メモリ・バス、又は他のタイプのインターフェース・バスを含んでもよい。少なくとも一実施例では、プロセッサ2802は、統合メモリ・コントローラ2816、及びプラットフォーム・コントローラ・ハブ2830を含む。少なくとも一実施例では、メモリ・コントローラ2816は、メモリ・デバイスとシステム2800の他の構成要素との間の通信を容易にし、一方でプラットフォーム・コントローラ・ハブ(PCH)2830は、ローカルI/Oバスを介してI/Oデバイスへの接続を提供する。
少なくとも一実施例では、メモリ・デバイス2820は、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、スタティック・ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセス・メモリとしての役割を果たすのに好適な性能を有する何らかの他のメモリ・デバイスとすることができる。少なくとも一実施例では、メモリ・デバイス2820は、システム2800のためのシステム・メモリとして動作して、1つ又は複数のプロセッサ2802がアプリケーション若しくはプロセスを実行するときに使用するためのデータ2822及び命令2821を記憶することができる。少なくとも一実施例では、メモリ・コントローラ2816はまた、任意選択の外部グラフィックス・プロセッサ2812と結合しており、このグラフィックス・プロセッサは、プロセッサ2802内の1つ又は複数のグラフィックス・プロセッサ2808と通信して、グラフィックス及びメディアの動作を実行してもよい。少なくとも一実施例では、ディスプレイ・デバイス2811は、プロセッサ2802に接続することができる。少なくとも一実施例では、ディスプレイ・デバイス2811は、モバイル電子デバイス又はラップトップ・デバイスのような内部ディスプレイ・デバイス、又はディスプレイ・インターフェース(たとえば、ディスプレイ・ポートなど)を介して取り付けられる外部ディスプレイ・デバイスのうちの1つ又は複数を含むことができる。少なくとも一実施例では、ディスプレイ・デバイス2811は、仮想現実(VR)アプリケーション又は拡張現実(AR)アプリケーションで使用するための立体ディスプレイ・デバイスなどの頭部装着型ディスプレイ(HMD)を含むことができる。
少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2830は、周辺装置が高速I/Oバスを介してメモリ・デバイス2820及びプロセッサ2802に接続できるようにする。少なくとも一実施例では、I/O周辺装置は、オーディオ・コントローラ2846、ネットワーク・コントローラ2834、ファームウェア・インターフェース2828、ワイヤレス・トランシーバ2826、タッチ・センサ2825、データ・ストレージ・デバイス2824(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)を含むが、これらに限定されない。少なくとも一実施例では、データ・ストレージ・デバイス2824は、ストレージ・インターフェース(たとえば、SATA)を介して、又はペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)などのペリフェラル・バスを介して、接続することができる。少なくとも一実施例では、タッチ・センサ2825は、タッチ画面センサ、圧力センサ、又は指紋センサを含むことができる。少なくとも一実施例では、ワイヤレス・トランシーバ2826は、WiFiトランシーバ、Bluetoothトランシーバ、又は3G、4G、若しくはLong Term Evolution(LTE)トランシーバなどのモバイル・ネットワーク・トランシーバとすることができる。少なくとも一実施例では、ファームウェア・インターフェース2828は、システム・ファームウェアとの通信を可能にし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(UEFI)とすることができる。少なくとも一実施例では、ネットワーク・コントローラ2834は、有線ネットワークへのネットワーク接続を可能にすることができる。少なくとも一実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス2810と結合する。少なくとも一実施例では、オーディオ・コントローラ2846は、多チャネル・ハイ・デフィニション・オーディオ・コントローラである。少なくとも一実施例では、システム2800は、レガシー(たとえば、パーソナル・システム2(PS/2))デバイスをシステム2800に結合するための任意選択のレガシーI/Oコントローラ2840を含む。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2830は、キーボードとマウス2843の組合せ、カメラ2844、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(USB)コントローラ2842の接続入力デバイスにも接続することができる。
少なくとも一実施例では、メモリ・コントローラ2816及びプラットフォーム・コントローラ・ハブ2830のインスタンスは、外部グラフィックス・プロセッサ2812などの個別の外部グラフィックス・プロセッサに一体化されてもよい。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2830及び/又はメモリ・コントローラ2816は、1つ又は複数のプロセッサ2802の外部にあってもよい。たとえば、少なくとも一実施例では、システム2800は、外部のメモリ・コントローラ2816及びプラットフォーム・コントローラ・ハブ2830を含むことができ、これらは、プロセッサ2802と通信するシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺装置コントローラ・ハブとして構成されてもよい。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915の一部又はすべてが、グラフィックス・プロセッサ2800に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプラインに具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図8A又は図8Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ2800のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図29は、少なくとも一実施例による、1つ又は複数のプロセッサ・コア2902A~2902N、統合メモリ・コントローラ2914、及び統合グラフィックス・プロセッサ2908を有するプロセッサ2900のブロック図である。少なくとも一実施例では、プロセッサ2900は、破線の四角によって表される追加コア2902Nを含むそれ以下の数の追加コアを含むことができる。少なくとも一実施例では、プロセッサ・コア2902A~2902Nのそれぞれは、1つ又は複数の内部キャッシュ・ユニット2904A~2904Nを含む。少なくとも一実施例では、各プロセッサ・コアはまた、1つ又は複数の共有キャッシュ・ユニット2906にアクセスできる。
少なくとも一実施例では、内部キャッシュ・ユニット2904A~2904N、及び共有キャッシュ・ユニット2906は、プロセッサ2900内のキャッシュ・メモリ階層を表す。少なくとも一実施例では、キャッシュ・メモリ・ユニット2904A~2904Nは、各プロセッサ・コア内の命令及びデータのキャッシュの少なくとも1つのレベル、並びにレベル2(L2)、レベル3(L3)、レベル4(L4)などの共有中間レベル・キャッシュの1つ又は複数のレベル、又はキャッシュの他のレベルを含んでもよく、ここで外部メモリの前の最高レベルのキャッシュは、LLCとして分類される。少なくとも一実施例では、キャッシュ・コヒーレンス論理は、様々なキャッシュ・ユニット2906及び2904A~2904N間でコヒーレンスを維持する。
少なくとも一実施例では、プロセッサ2900はまた、1つ又は複数のバス・コントローラ・ユニット2916とシステム・エージェント・コア2910のセットを含んでもよい。少なくとも一実施例では、バス・コントローラ・ユニット2916は、1つ又は複数のPCI若しくはPCIエクスプレス・バスなどのペリフェラル・バスのセットを管理する。少なくとも一実施例では、システム・エージェント・コア2910は、様々なプロセッサ構成要素のための管理機能を提供する。少なくとも一実施例では、システム・エージェント・コア2910は、様々な外部メモリ・デバイス(図示せず)へのアクセスを管理するための1つ又は複数の統合メモリ・コントローラ2914を含む。
少なくとも一実施例では、プロセッサ・コア2902A~2902Nの1つ又は複数は、同時マルチスレッディングのサポートを含む。少なくとも一実施例では、システム・エージェント・コア2910は、マルチスレッドの処理中にコア2902A~2902Nを調整し動作させるための構成要素を含む。少なくとも一実施例では、システム・エージェント・コア2910はさらに、電力制御ユニット(PCU)を含んでもよく、このユニットは、プロセッサ・コア2902A~2902N及びグラフィックス・プロセッサ2908の1つ又は複数の電力状態を調整するための論理及び構成要素を含む。
少なくとも一実施例では、プロセッサ2900はさらに、グラフィックス処理動作を実行するためのグラフィックス・プロセッサ2908を含む。少なくとも一実施例では、グラフィックス・プロセッサ2908は、共有キャッシュ・ユニット2906と、1つ又は複数の統合メモリ・コントローラ2914を含むシステム・エージェント・コア2910とに結合する。少なくとも一実施例では、システム・エージェント・コア2910はまた、1つ又は複数の結合されたディスプレイに対してグラフィックス・プロセッサの出力を行わせるためのディスプレイ・コントローラ2911を含む。少なくとも一実施例では、ディスプレイ・コントローラ2911はまた、少なくとも1つの相互接続を介してグラフィックス・プロセッサ2908に結合された別個のモジュールであってもよく、又はグラフィックス・プロセッサ2908内に一体化されていてもよい。
少なくとも一実施例では、プロセッサ2900の内部構成要素を結合するために、リング・ベースの相互接続ユニット2912が使用される。少なくとも一実施例では、ポイントツーポイント相互接続、スイッチ相互接続、又は他の技法などの代替的な相互接続ユニットが使用されてもよい。少なくとも一実施例では、グラフィックス・プロセッサ2908は、I/Oリンク2913を介してリング相互接続2912と結合する。
少なくとも一実施例では、I/Oリンク2913は、様々なプロセッサ構成要素と、eDRAMモジュールなどの高性能組み込みメモリ・モジュール2918との間の通信を容易にするオン・パッケージI/O相互接続を含む多様なI/O相互接続のうちの少なくとも1つを表す。少なくとも一実施例では、プロセッサ・コア2902A~2902Nのそれぞれ及びグラフィックス・プロセッサ2908は、共有ラスト・レベル・キャッシュとして組み込みメモリ・モジュール2918を使用する。
少なくとも一実施例では、プロセッサ・コア2902A~2902Nは、共通の命令セット・アーキテクチャを実行する同種のコアである。少なくとも一実施例では、プロセッサ・コア2902A~2902Nは、命令セット・アーキテクチャ(ISA)の観点から見れば異種であり、ここでプロセッサ・コア2902A~2902Nのうちの1つ又は複数は、共通の命令セットを実行するが、プロセッサ・コア2902A~2902Nのうちの1つ又は複数の他のコアは、共通の命令セットのサブセット、又は異なる命令セットを実行する。少なくとも一実施例では、プロセッサ・コア2902A~2902Nは、マイクロ・アーキテクチャの観点から見れば異種であり、ここで電力消費量が相対的に高い1つ又は複数のコアは、電力消費量がより低い1つ又は複数のコアと結合する。少なくとも一実施例では、プロセッサ2900は、1つ又は複数のチップ上に、又はSoC集積回路として実装することができる。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915の一部又はすべてが、グラフィックス・プロセッサ2910に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン、グラフィックス・コア2902、共有機能論理、又は図29の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図8A又は図8Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのプロセッサ2900のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図30は、グラフィックス・プロセッサ3000のブロック図であり、これは、個別グラフィックス・プロセッシング・ユニットであってもよく、又は複数の処理コアと統合されたグラフィックス・プロセッサであってもよい。少なくとも一実施例では、グラフィックス・プロセッサ3000は、メモリにマッピングされたI/Oインターフェースを介して、メモリに入れられたコマンドを用いて、グラフィックス・プロセッサ3000のレジスタと通信する。少なくとも一実施例では、グラフィックス・プロセッサ3000は、メモリにアクセスするためのメモリ・インターフェース3014を含む。少なくとも一実施例では、メモリ・インターフェース3014は、ローカル・メモリ、1つ若しくは複数の内部キャッシュ、1つ若しくは複数の共有外部キャッシュ、及び/又はシステム・メモリへのインターフェースである。
少なくとも一実施例では、グラフィックス・プロセッサ3000はまた、ディスプレイ出力データをディスプレイ・デバイス3020に向けて駆動するためのディスプレイ・コントローラ3002も含む。少なくとも一実施例では、ディスプレイ・コントローラ3002は、ディスプレイ・デバイス3020用の1つ又は複数の重なり平面、及び多層のビデオ若しくはユーザ・インターフェース要素の合成のためのハードウェアを含む。少なくとも一実施例では、ディスプレイ・デバイス3020は、内部又は外部のディスプレイ・デバイスとすることができる。少なくとも一実施例では、ディスプレイ・デバイス3020は、仮想現実(VR)ディスプレイ・デバイス又は拡張現実(AR)ディスプレイ・デバイスなどの頭部装着型ディスプレイ・デバイスである。少なくとも一実施例では、グラフィックス・プロセッサ3000は、MPEG-2などの動画エキスパート・グループ(MPEG)フォーマット、H.264/MPEG-4AVCなどのアドバンスト・ビデオ・コーディング(AVC)フォーマット、並びに映画テレビ技術者協会(SMPTE)421M/VC-1、及びJPEGなどのジョイント・フォトグラフィック・エキスパート・グループ(JPEG)フォーマット、及びモーションJPEG(MJPEG)フォーマットを含むがこれらに限定されない1つ又は複数のメディア符号化フォーマットに、それらのフォーマットから、又はそれらのフォーマット間で、メディアをエンコード、デコード、又はコード変換するためのビデオ・コーデック・エンジン3006を含む。
少なくとも一実施例では、グラフィックス・プロセッサ3000は、たとえばビット境界ブロック転送を含む2次元(2D)ラスタライザ動作を実行するためのブロック画像転送(BLIT)エンジン3004を含む。しかし、少なくとも一実施例では、2Dグラフィックス動作は、グラフィックス処理エンジン(GPE)3010の1つ又は複数の構成要素を使用して実行される。少なくとも一実施例では、GPE3010は、3次元(3D)グラフィックス動作及びメディア動作を含むグラフィックス動作を実行するためのコンピュート・エンジンである。
少なくとも一実施例では、GPE3010は、3Dのプリミティブ形状(たとえば、矩形、三角形など)に作用する処理関数を使用して、3次元画像及びシーンをレンダリングするなど、3D動作を実行するための3Dパイプライン3012を含む。少なくとも一実施例では、3Dパイプライン3012は、プログラム可能で固定された関数要素を含み、これは、3D/メディア・サブシステム3015に対して様々なタスクを実行し、且つ/又は実行スレッドをスポーンする。3Dパイプライン3012を使用してメディア動作を実行できるが、少なくとも一実施例では、GPE3010は、ビデオの後処理及び画像強調などのメディア動作を実行するために使用されるメディア・パイプライン3016も含む。
少なくとも一実施例では、メディア・パイプライン3016は、ビデオ・コーデック・エンジン3006の代わりに、又はそれを代表して、ビデオ・デコード加速、ビデオ・インターレース解除、及びエンコード加速などの1つ又は複数の特別なメディア動作を実行するための固定機能又はプログラム可能論理ユニットを含む。少なくとも一実施例では、メディア・パイプライン3016は、3D/メディア・サブシステム3015で実行するためのスレッドをスポーンするためのスレッド・スポーニング・ユニットをさらに含む。少なくとも一実施例では、スポーンされたスレッドは、3D/メディア・サブシステム3015に含まれた1つ又は複数のグラフィックス実行ユニット上で、メディア動作のための計算を実行する。
少なくとも一実施例では、3D/メディア・サブシステム3015は、3Dパイプライン3012及びメディア・パイプライン3016によってスポーンされたスレッドを実行するための論理を含む。少なくとも一実施例では、3Dパイプライン3012及びメディア・パイプライン3016は、スレッド実行要求を3D/メディア・サブシステム3015に送信し、この3D/メディア・サブシステム3015は、様々な要求を調停し、利用可能なスレッド実行リソースにディスパッチするためのスレッド・ディスパッチ論理を含む。少なくとも一実施例では、実行リソースは、3D及びメディア・スレッドを処理するためのグラフィックス実行ユニットのアレイを含む。少なくとも一実施例では、3D/メディア・サブシステム3015は、スレッド命令及びデータのための1つ又は複数の内部キャッシュを含む。少なくとも一実施例では、サブシステム3015はまた、スレッド間でデータを共有し、出力データを記憶するための、レジスタ及びアドレス可能メモリを含む共有メモリも含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915の一部又はすべてが、グラフィックス・プロセッサ3000に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン3012に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図9A又は図9Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3000のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図31は、少なくとも一実施例によるグラフィックス・プロセッサのグラフィックス処理エンジン3110のブロック図である。少なくとも一実施例では、グラフィックス処理エンジン(GPE)3110は、図30に示すGPE3010の1つのバージョンである。少なくとも一実施例では、メディア・パイプライン3116は任意選択であり、GPE3110内に明示的に含まれなくてもよい。少なくとも一実施例では、別個のメディア及び/又は画像のプロセッサが、GPE3110に結合される。
少なくとも一実施例では、GPE3110は、コマンド・ストリーマ3103に結合され、又はそれを含み、このコマンド・ストリーマは、3Dパイプライン3112及び/又はメディア・パイプライン3116にコマンド・ストリームを提供する。少なくとも一実施例では、コマンド・ストリーマ3103はメモリに結合され、このメモリは、システム・メモリであってもよく、又は内部キャッシュ・メモリ及び共有キャッシュ・メモリのうちの1つ若しくは複数であってもよい。少なくとも一実施例では、コマンド・ストリーマ3103は、メモリからコマンドを受信し、3Dパイプライン3112及び/又はメディア・パイプライン3116にコマンドを送信する。少なくとも一実施例では、コマンドは、リング・バッファからフェッチされる命令、プリミティブ、又はマイクロ・オペレーションであり、このリング・バッファは、3Dパイプライン3112及びメディア・パイプライン3116のためのコマンドを記憶する。少なくとも一実施例では、リング・バッファはさらに、複数のコマンドのバッチを記憶するバッチ・コマンド・バッファを含むことができる。少なくとも一実施例では、3Dパイプライン3112用のコマンドはまた、3Dパイプライン3112用の頂点及び形状のデータ、並びに/又はメディア・パイプライン3116用の画像データ及びメモリ・オブジェクトなどであるがこれらに限定されないメモリに記憶されたデータへの参照も含むことができる。少なくとも一実施例では、3Dパイプライン3112及びメディア・パイプライン3116は、演算を実行することにより、又は1つ若しくは複数の実行スレッドをグラフィックス・コア・アレイ3114にディスパッチすることにより、コマンド及びデータを処理する。少なくとも一実施例では、グラフィックス・コア・アレイ3114は、グラフィックス・コア(たとえば、グラフィックス・コア3115A、グラフィックス・コア3115B)の1つ又は複数のブロックを含み、各ブロックは、1つ又は複数のグラフィックス・コアを含む。少なくとも一実施例では、各グラフィックス・コアは、グラフィックス及びコンピュートの動作を実行するための汎用及びグラフィックス専用の実行論理、並びに、図9A及び図9Bの推論及び/又は訓練論理915を含め、固定機能のテクスチャ処理及び/又は機械学習、及び人工知能の加速論理を含むグラフィックス実行リソースのセットを含む。
少なくとも一実施例では、3Dパイプライン3112は、命令を処理し、実行スレッドをグラフィックス・コア・アレイ3114にディスパッチすることにより、頂点シェーダ、ジオメトリ・シェーダ、ピクセル・シェーダ、フラグメント・シェーダ、コンピュート・シェーダ、又は他のシェーダ・プログラムなどの1つ又は複数のシェーダ・プログラムを処理するための固定機能及びプログラム可能論理を含む。少なくとも一実施例では、グラフィックス・コア・アレイ3114は、シェーダ・プログラムを処理する際に使用するための実行リソースの統合ブロックを提供する。少なくとも一実施例では、グラフィック・コア・アレイ3114のグラフィックス・コア3115A~3115B内の多目的の実行論理(たとえば、実行ユニット)は、様々な3DのAPIシェーダ言語のサポートを含み、複数のシェーダに関連付けられた複数の同時実行スレッドを実行することができる。
少なくとも一実施例では、グラフィックス・コア・アレイ3114はまた、ビデオ及び/又は画像の処理など、メディア機能を実行するための実行論理も含む。少なくとも一実施例では、実行ユニットはさらに、グラフィックス処理動作に加えて並列の汎用計算動作を実行するようにプログラム可能な汎用論理を含む。
少なくとも一実施例では、グラフィックス・コア・アレイ3114上で実行しているスレッドにより生成される出力データは、統合リターン・バッファ(URB)3118のメモリにデータを出力することができる。少なくとも一実施例では、URB3118は、複数のスレッド用のデータを記憶することができる。少なくとも一実施例では、グラフィックス・コア・アレイ3114上で実行している異なるスレッド間でデータを送信するために、URB3118を使用してもよい。少なくとも一実施例では、グラフィックス・コア・アレイ3114上のスレッドと、共有機能論理3120内の固定機能論理との間の同期のために、URB3118がさらに使用されてもよい。
少なくとも一実施例では、グラフィックス・コア・アレイ3114はスケーラブルであり、それにより、グラフィックス・コア・アレイ3114は、可変数のグラフィックス・コアを含み、それぞれのグラフィックス・コアが、GPE3110の目的とする電力及び性能のレベルに基づき可変数の実行ユニットを有する。少なくとも一実施例では、実行リソースは動的にスケーラブルであり、それにより実行リソースは、必要に応じて有効化又は無効化されてもよい。
少なくとも一実施例では、グラフィックス・コア・アレイ3114は、グラフィックス・コア・アレイ3114のグラフィックス・コア間で共有される複数のリソースを含む共有機能論理3120に結合される。少なくとも一実施例では、共有機能論理3120によって実行される共有機能は、専用の補足機能をグラフィックス・コア・アレイ3114に提供するハードウェア論理ユニットに具体化される。少なくとも一実施例では、共有機能論理3120は、サンプラユニット3121、数理ユニット3122、及びスレッド間通信(ITC)論理3123を含むが、これらに限定されない。少なくとも一実施例では、1つ又は複数のキャッシュ3125が、共有機能論理3120に含まれ、又はそれに結合される。
少なくとも一実施例では、専用機能の需要が不十分でグラフィックス・コア・アレイ3114内に含められない場合に、共有機能が使用される。少なくとも一実施例では、専用機能を1つにインスタンス化したものが、共有機能論理3120において使用され、グラフィックス・コア・アレイ3114内の他の実行リソース間で共有される。少なくとも一実施例では、共有機能論理3120内の、グラフィックス・コア・アレイ3114によってのみ使用される特定の共有機能は、グラフィックス・コア・アレイ3114内の共有機能論理3416内に含まれてもよい。少なくとも一実施例では、グラフィックス・コア・アレイ3114内の共有機能論理3416は、共有機能論理3120内の一部又はすべての論理を含むことができる。少なくとも一実施例では、共有機能論理3120内のすべての論理要素は、グラフィックス・コア・アレイ3114の共有機能論理3126内で複製されてもよい。少なくとも一実施例では、共有機能論理3120は、グラフィックス・コア・アレイ3114内の共有機能論理3126に有利なように除外される。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915の一部又はすべてが、グラフィックス・プロセッサ3110に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン3112、グラフィックス・コア3115、共有機能論理3126、共有機能論理3120、又は図31の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図9A又は図9Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3110のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図32は、本明細書に記載の少なくとも一実施例によるグラフィックス・プロセッサ・コア3200のハードウェア論理のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ・コア3200は、グラフィックス・コア・アレイ内に含まれる。少なくとも一実施例では、コア・スライスと呼ばれることもあるグラフィックス・プロセッサ・コア3200は、モジュール式グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアとすることができる。少なくとも一実施例では、グラフィックス・プロセッサ・コア3200は、1つのグラフィックス・コア・スライスの例示であり、本明細書に記載のグラフィックス・プロセッサは、目的の電力及び性能のエンベロープに基づき、複数のグラフィックス・コア・スライスを含んでもよい。少なくとも一実施例では、各グラフィックス・コア3200は、汎用及び固定の機能論理のモジュール式ブロックを含むサブ・スライスとも呼ばれる複数のサブ・コア3201A~3201Fに結合された固定機能ブロック3230を含むことができる。
少なくとも一実施例では、固定機能ブロック3230は、たとえば低性能及び/又は低電力のグラフィックス・プロセッサ実装形態において、グラフィックス・プロセッサ3200内のすべてのサブ・コアが共有できるジオメトリ及び固定機能パイプライン3236を含む。少なくとも一実施例では、ジオメトリ及び固定機能パイプライン3236は、3D固定機能パイプライン、ビデオ・フロント・エンド・ユニット、スレッド・スポーナ(spawner)及びスレッド・ディスパッチャ、並びに統合リターン・バッファを管理する統合リターン・バッファ・マネージャを含む。
少なくとも一実施例では、固定機能ブロック3230はまた、グラフィックスSoCインターフェース3237、グラフィックス・マイクロコントローラ3238、及びメディア・パイプライン3239を含む。少なくとも一実施例では、グラフィックスSoCインターフェース3237は、グラフィックス・コア3200と、システム・オン・チップ集積回路内の他のプロセッサ・コアとのインターフェースを提供する。少なくとも一実施例では、グラフィックス・マイクロコントローラ3238は、スレッド・ディスパッチ、スケジューリング、及びプリエンプションを含め、グラフィックス・プロセッサ3200の様々な機能を管理するように構成可能なプログラム可能サブ・プロセッサである。少なくとも一実施例では、メディア・パイプライン3239は、画像及びビデオのデータを含むマルチメディア・データのデコーディング、エンコーディング、前処理、及び/又は後処理を容易にする論理を含む。少なくとも一実施例では、メディア・パイプライン3239は、サブ・コア3201~3201F内のコンピュート論理又はサンプリング論理への要求を介して、メディア動作を実装する。
少なくとも一実施例では、SoCインターフェース3237は、汎用アプリケーション・プロセッサ・コア(たとえば、CPU)、及び/又はSoC内の他の構成要素と、グラフィックス・コア3200が通信できるようにし、SoC内の他の構成要素には、共有ラスト・レベル・キャッシュ・メモリ、システムRAM、及び/又は組み込みオン・チップ若しくはオン・パッケージのDRAMなどのメモリ階層要素が含まれる。少なくとも一実施例では、SoCインターフェース3237はまた、カメラ・イメージング・パイプラインなど、SoC内の固定機能デバイスとの通信を可能にし、グラフィックス・コア3200とSoC内のCPUとの間で共有することができるグローバル・メモリ・アトミックの使用を可能にし、且つ/又はそれを実装する。少なくとも一実施例では、グラフィックスSoCインターフェース3237はまた、グラフィックス・プロセッサ・コア3200の電力管理制御を実装することができ、グラフィックス・プロセッサ・コア3200のクロック・ドメインと、SoC内の他のクロック・ドメインとの間でインターフェースをとれるようにする。少なくとも一実施例では、SoCインターフェース3237は、グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアのそれぞれにコマンド及び命令を提供するように構成されたコマンド・ストリーマ及びグローバル・スレッド・ディスパッチャから、コマンド・バッファを受信できるようにする。少なくとも一実施例では、コマンド及び命令は、メディア動作が実行されるときにはメディア・パイプライン3239にディスパッチされることが可能であり、又はグラフィックス処理動作が実行されるときには、ジオメトリ及び固定機能パイプライン(たとえば、ジオメトリ及び固定機能パイプライン3236及び/又はジオメトリ及び固定機能パイプライン3214)にディスパッチされることが可能である。
少なくとも一実施例では、グラフィックス・マイクロコントローラ3238は、グラフィックス・コア3200のための様々なスケジューリング及び管理タスクを実行するように構成されることが可能である。少なくとも一実施例では、グラフィックス・マイクロコントローラ3238は、サブ・コア3201A~3201F内の実行ユニット(EU:execution unit)アレイ3202A~3202F、3204A~3204F内の様々なグラフィックス並列エンジンで、グラフィックスを実行し、且つ/又はワークロードのスケジューリングをコンピュートすることができる。少なくとも一実施例では、グラフィックス・コア3200を含むSoCのCPUコア上で実行されているホスト・ソフトウェアは、複数のグラフィックス・プロセッサ経路のうちの1つにワークロードを送出することができ、この経路が、適切なグラフィックス・エンジンに対するスケジューリング動作を呼び出す。少なくとも一実施例では、スケジューリング動作は、どのワークロードを次に実行すべきかを判定すること、コマンド・ストリーマにワークロードを送出すること、エンジン上で実行されている既存のワークロードをプリエンプションすること、ワークロードの進行を管理すること、及びワークロードが完了したときにホスト・ソフトウェアに通知することを含む。少なくとも一実施例では、グラフィックス・マイクロコントローラ3238はまた、グラフィックス・コア3200の低電力又はアイドル状態を促進して、オペレーティング・システム及び/又はシステム上のグラフィックス・ドライバ・ソフトウェアとは無関係に、低電力状態の移行全体にわたってグラフィックス・コア3200内のレジスタを保存及び復元する機能をグラフィックス・コア3200に提供することができる。
少なくとも一実施例では、グラフィックス・コア3200は、図示してあるサブ・コア3201A~3201Fより多くの、又はそれより少ない、N個までのモジュール式サブ・コアを有してもよい。N個のサブ・コアのセットごとに、少なくとも一実施例では、グラフィックス・コア3200はまた、共有機能論理3210、共有及び/又はキャッシュ・メモリ3212、ジオメトリ/固定機能パイプライン3214、並びに様々なグラフィックスを加速し、処理動作をコンピュートするための追加の固定機能論理3216を含むことができる。少なくとも一実施例では、共有機能論理3210は、グラフィックス・コア3200内の各N個のサブ・コアが共有できる論理ユニット(たとえば、サンプラ、数理、及び/又はスレッド間通信の論理)を含むことができる。少なくとも一実施例では、共有の、及び/又はキャッシュのメモリ3212は、グラフィックス・コア3200内のN個のサブ・コア3201A~3201Fのためのラスト・レベル・キャッシュとすることができ、また、複数のサブ・コアがアクセスできる共有メモリとしての役割も果たすことができる。少なくとも一実施例では、ジオメトリ/固定機能パイプライン3214は、固定機能ブロック3230内のジオメトリ/固定機能パイプライン3236の代わりに含まれてもよく、同様の論理ユニットを含むことができる。
少なくとも一実施例では、グラフィックス・コア3200は、グラフィックス・コア3200が使用するための様々な固定機能加速論理を含むことができる追加の固定機能論理3216を含む。少なくとも一実施例では、追加の固定機能論理3216は、位置限定シェーディング(position only shading)に使用するための追加のジオメトリ・パイプラインを含む。位置限定シェーディングでは、少なくとも2つのジオメトリ・パイプラインが存在しているが、ジオメトリ及び固定機能パイプライン3214、3236内の完全ジオメトリ・パイプラインと選別パイプライン(cull pipeline)においてであり、この選別パイプラインは、追加の固定機能論理3216内に含まれてもよい追加のジオメトリ・パイプラインである。少なくとも一実施例では、選別パイプラインは、完全ジオメトリ・パイプラインの縮小版である。少なくとも一実施例では、完全パイプライン及び選別パイプラインは、アプリケーションの異なるインスタンスを実行することができ、各インスタンスは別個のコンテキストを有する。少なくとも一実施例では、位置限定シェーディングは、切り捨てられた三角形の長い選別ランを隠すことができ、いくつかのインスタンスにおいてシェーディングを早く完了させることができる。たとえば、少なくとも一実施例では、選別パイプラインは、ピクセルをフレーム・バッファにラスタ化及びレンダリングすることなく、頂点の位置属性をフェッチしシェーディングするので、追加の固定機能論理3216内の選別パイプライン論理は、メイン・アプリケーションと並列で位置シェーダを実行することができ、完全パイプラインよりも全体的に早く臨界結果(critical result)を生成する。少なくとも一実施例では、選別パイプラインは、生成された臨界結果を使用して、すべての三角形について、これらの三角形が選別されているかどうかに関わらず、可視性情報をコンピュートすることができる。少なくとも一実施例では、(このインスタンスではリプレイ・パイプラインと呼ばれてもよい)完全パイプラインは、可視性情報を消費して、選別された三角形を飛ばして可視三角形だけをシェーディングすることができ、この可視性三角形が、最終的にラスタ化フェーズに渡される。
少なくとも一実施例では、追加の固定機能論理3216はまた、機械学習の訓練又は推論の最適化を含む実装形態のために、固定機能の行列乗算論理など、機械学習の加速論理を含むことができる。
少なくとも一実施例では、各グラフィックス・サブ・コア3201A~3201F内において、実行リソースのセットを含み、このセットは、グラフィックス・パイプライン、メディア・パイプライン、又はシェーダ・プログラムからの要求に応答して、グラフィックス動作、メディア動作、及びコンピュート動作を実行するために使用されてもよい。少なくとも一実施例では、グラフィックス・サブ・コア3201A~3201Fは、複数のEUアレイ3202A~3202F、3204A~3204F、スレッド・ディスパッチ及びスレッド間通信(TD/IC:thread dispatch and inter-thread communication)論理3203A~3203F、3D(たとえば、テクスチャ)サンプラ3205A~3205F、メディア・サンプラ3206A~3206F、シェーダ・プロセッサ3207A~3207F、及び共有ローカル・メモリ(SLM:shared local memory)3208A~3208Fを含む。少なくとも一実施例では、EUアレイ3202A~3202F、3204A~3204Fはそれぞれ、複数の実行ユニットを含み、これらは、グラフィックス、メディア、又はコンピュート・シェーダ・プログラムを含むグラフィックス動作、メディア動作、又はコンピュート動作のサービスにおいて浮動小数点及び整数/固定小数点の論理演算を実行することができる汎用グラフィックス・プロセッシング・ユニットである。少なくとも一実施例では、TD/IC論理3203A~3203Fは、サブ・コア内の実行ユニットのためのローカル・スレッド・ディスパッチ及びスレッド制御動作を実行し、サブ・コアの実行ユニット上で実行されているスレッド間の通信を容易にする。少なくとも一実施例では、3Dサンプラ3205A~3205Fは、テクスチャ又は他の3Dグラフィックス関連のデータをメモリに読み取ることができる。少なくとも一実施例では、3Dサンプラは、所与のテクスチャに関連付けられた構成済みサンプル状態及びテクスチャ・フォーマットに基づき、テクスチャ・データを異なるやり方で読み取ることができる。少なくとも一実施例では、メディア・サンプラ3206A~3206Fは、メディア・データに関連付けられたタイプ及びフォーマットに基づき、同様の読取り動作を実行することができる。少なくとも一実施例では、各グラフィックス・サブ・コア3201A~3201Fは、代替的に3Dとメディアの統合サンプラを含むことができる。少なくとも一実施例では、各サブ・コア3201A~3201F内の実行ユニット上で実行しているスレッドは、スレッド・グループ内で実行しているスレッドが、オン・チップ・メモリの共通プールを使用して実行できるようにするために、各サブ・コア内の共有ローカル・メモリ3208A~3208Fを利用することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915の一部又はすべてが、グラフィックス・プロセッサ3210に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン、グラフィックス・マイクロコントローラ3238、ジオメトリ及び固定機能パイプライン3214及び3236、又は図32の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図9A又は図9Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3200のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図33A及び図33Bは、少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理3300を示す。図33Aは、スレッド実行論理3300が使用される少なくとも一実施例を示す。図33Bは、少なくとも一実施例による、グラフィックス実行ユニット3308の例示的な内側細部を示す。
図33Aに示すように、少なくとも一実施例では、スレッド実行論理3300は、シェーダ・プロセッサ3302、スレッド・ディスパッチャ3304、命令キャッシュ3306、複数の実行ユニット3307A~3307N及び3308A~3308Nを含むスケーラブル実行ユニット・アレイ、サンプラ3310、データ・キャッシュ3312、並びにデータ・ポート3314を含む。少なくとも一実施例では、スケーラブル実行ユニット・アレイは、1つ又は複数の実行ユニット(たとえば、実行ユニット3308A~N又は3307A~Nのうちのいずれか)を、たとえばワークロードの計算要件に基づき有効又は無効にすることによって、動的に拡大縮小することができる。少なくとも一実施例では、スケーラブル実行ユニットは、各実行ユニットにリンクする相互接続ファブリックを介して相互接続される。少なくとも一実施例では、スレッド実行論理3300は、命令キャッシュ3306、データ・ポート3314、サンプラ3310、及び実行ユニット3307又は3308のうちの1つ又は複数を介した、システム・メモリ又はキャッシュ・メモリなどのメモリへの1つ又は複数の接続を含む。少なくとも一実施例では、各実行ユニット(たとえば、3307A)は、スレッドごとに複数のデータ要素を並列で処理しながら、複数の同時のハードウェア・スレッドを実行することができるスタンド・アロンのプログラム可能な汎用計算ユニットである。少なくとも一実施例では、実行ユニット3307及び/又は3308のアレイは、任意の数の個々の実行ユニットを含むように拡大縮小可能である。
少なくとも一実施例では、実行ユニット3307及び/又は3308は、シェーダ・プログラムを実行するために主に使用される。少なくとも一実施例では、シェーダ・プロセッサ3302は、様々なシェーダ・プログラムを処理し、シェーダ・プログラムに関連付けられた実行スレッドを、スレッド・ディスパッチャ3304を介してディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ3304は、グラフィックス及びメディア・パイプラインからのスレッド開始要求を調停し、要求されたスレッドを、実行ユニット3307及び/又は3308の1つ又は複数の実行ユニット上でインスタンス化するための論理を含む。たとえば、少なくとも一実施例では、ジオメトリ・パイプラインは、頂点シェーダ、モザイク・シェーダ、又はジオメトリ・シェーダを、処理できるようにスレッド実行論理にディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ3304はまた、実行しているシェーダ・プログラムからのラン・タイム・スレッド・スポーニング要求(spawning request)を処理することができる。
少なくとも一実施例では、実行ユニット3307及び/又は3308は、多くの標準的な3Dグラフィックス・シェーダ命令のネイティブ・サポートを含む命令セットをサポートし、それにより、グラフィックス・ライブラリ(たとえば、Direct3D及びOpenGL)からのシェーダ・プログラムが、最小のトランスレーションで実行される。少なくとも一実施例では、実行ユニットは、頂点及びジオメトリの処理(たとえば、頂点プログラム、ジオメトリ・プログラム、及び/又は頂点シェーダ)、ピクセル処理(たとえば、ピクセル・シェーダ、フラグメント・シェーダ)、及び汎用処理(たとえば、コンピュート及びメディアのシェーダ)をサポートする。少なくとも一実施例では、1つ又は複数の算術論理演算ユニット(ALU)を含む各実行ユニット3307及び/又は3308のそれぞれは、単一命令複数データ(SIMD)の実行を複数発行することができ、マルチスレッド化された動作によって、メモリ・アクセスのレイテンシが高いにもかかわらず、効率的な実行環境が可能になる。少なくとも一実施例では、各実行ユニット内の各ハードウェア・スレッドは、専用の高帯域幅レジスタ・ファイル及び関連する独立したスレッド状態を有する。少なくとも一実施例では、実行は、整数演算、単精度及び倍精度の浮動小数点演算、SIMDブランチ性能、論理演算、超越演算、及び他の種々の演算を行うことができるパイプラインに対して、クロック当たり複数発行される。少なくとも一実施例では、メモリ、又は共有機能のうちの1つからのデータを待機している間に、実行ユニット3307及び/又は3308内の従属論理は、要求したデータが戻されるまで、待機スレッドをスリープ状態にする。少なくとも一実施例では、待機スレッドがスリープ状態の間に、ハードウェア・リソースは他のスレッドの処理に専念してもよい。たとえば、少なくとも一実施例では、頂点シェーダ動作に関連する遅延中に、実行ユニットは、ピクセル・シェーダ、フラグメント・シェーダ、又は異なる頂点シェーダを含む別のタイプのシェーダ・プログラムを実行することができる。
少なくとも一実施例では、実行ユニット3307及び/又は3308の各実行ユニットは、データ要素のアレイに対して動作する。少なくとも一実施例では、データ要素の数は「実行サイズ」であり、又は命令に対するチャネルの数である。少なくとも一実施例では、実行チャネルは、データ要素のアクセス、マスキング、及び命令内のフロー制御に関する実行の論理ユニットである。少なくとも一実施例では、チャネルの数は、特定のグラフィックス・プロセッサのための物理的な算術論理演算ユニット(ALU)又は浮動小数点ユニット(FPU)の数とは無関係であってもよい。少なくとも一実施例では、実行ユニット3307及び/又は3308は、整数及び浮動小数点のデータ・タイプをサポートしてもよい。
少なくとも一実施例では、実行ユニット命令セットは、SIMD命令を含む。少なくとも一実施例では、様々なデータ要素が、パック・データ・タイプとしてレジスタに記憶されてもよく、実行ユニットは、要素のデータ・サイズに基づき様々な要素を処理する。たとえば、少なくとも一実施例では、256ビット幅ベクトルで動作しているとき、ベクトルの256ビットがレジスタに記憶され、実行ユニットは、4個の別々の64ビット・パック・データ要素(クワッド・ワード(QW:Quad-Word)サイズのデータ要素)、8個の別々の32ビット・パック・データ要素(ダブル・ワード(DW:Double Word)サイズのデータ要素)、16個の別々の16ビット・パック・データ要素(ワード(W:Word)サイズのデータ要素)、又は32個の別々の8ビット・データ要素(バイト(B:byte)サイズのデータ要素)としてベクトル上で動作する。しかし少なくとも一実施例では、異なるベクトル幅及びレジスタサイズが考えられる。
少なくとも一実施例では、実行ユニット3307Aを実行ユニット3308Aと融合して融合実行ユニット3309Aにするなど、1つ又は複数の実行ユニットを組み合わせて、融合EUに共通のスレッド制御論理(3311A~3311N)を有する融合実行ユニット3309A~3309Nにすることができる。少なくとも一実施例では、複数のEUを融合して、EUグループにすることができる。少なくとも一実施例では、融合EUグループの各EUは、融合EUグループのEUの数が、様々な実施例に応じて異なっている可能性がある状態で、別々のSIMDハードウェア・スレッドを実行するように構成されることが可能である。少なくとも一実施例では、SIMD8、SIMD16、及びSIMD32を含むがこれに限定されない様々なSIMD幅を、EUごとに実行することができる。少なくとも一実施例では、各融合グラフィックス実行ユニット3309A~3309Nは、少なくとも2つの実行ユニットを含む。たとえば、少なくとも一実施例では、融合実行ユニット3309Aは、第1のEU3307A、第2のEU3308B、及び第1のEU3307Aと第2のEU3308Aに共通のスレッド制御論理3311Aを含む。少なくとも一実施例では、スレッド制御論理3311Aは、融合グラフィックス実行ユニット3309Aで実行されているスレッドを制御して、融合実行ユニット3309A~3309N内の各EUを、共通の命令ポインタ・レジスタを使用して実行できるようにする。
少なくとも一実施例では、1つ又は複数の内部命令キャッシュ(たとえば、3306)は、実行ユニットに対するスレッド命令をキャッシュするためにスレッド実行論理3300に含まれる。少なくとも一実施例では、1つ又は複数のデータ・キャッシュ(たとえば、3312)は、スレッド実行中にスレッド・データをキャッシュするために含まれる。少なくとも一実施例では、サンプラ3310は、3D動作のためのテクスチャ・サンプリング、及びメディア動作のためのメディア・サンプリングを実行するために含まれる。少なくとも一実施例では、サンプラ3310は、特別なテクスチャ又はメディア・サンプリング機能を含み、サンプリングされたデータを実行ユニットに提供する前に、サンプリング処理中にテクスチャ又はメディアのデータを処理する。
実行中、少なくとも一実施例では、グラフィックス及びメディア・パイプラインは、スレッド開始要求を、スレッド・スポーニング及びディスパッチ論理を介してスレッド実行論理3300に送る。少なくとも一実施例では、幾何学的物体のグループが処理され、ピクセル・データにラスタ化されたら、シェーダ・プロセッサ3302内のピクセル・プロセッサ論理(たとえば、ピクセル・シェーダ論理、フラグメント・シェーダ論理など)が呼び出されて、出力情報をさらにコンピュートし、結果を出力面(たとえば、色バッファ、深度バッファ、ステンシル・バッファなど)に書き込ませる。少なくとも一実施例では、ピクセル・シェーダ又はフラグメント・シェーダは、ラスタ化された物体間で補間されることになる様々な頂点属性の値を計算する。少なくとも一実施例では、次いで、シェーダ・プロセッサ3302内のピクセル・プロセッサ論理が、アプリケーション・プログラミング・インターフェース(API)付きのピクセル・シェーダ・プログラム又はフラグメント・シェーダ・プログラムを実行する。少なくとも一実施例では、シェーダ・プログラムを実行するために、シェーダ・プロセッサ3302は、スレッド・ディスパッチャ3304を介してスレッドを実行ユニット(たとえば、3308A)にディスパッチする。少なくとも一実施例では、シェーダ・プロセッサ3302は、サンプラ3310のテクスチャ・サンプリング論理を使用して、メモリに記憶されたテクスチャ・マップのテクスチャ・データにアクセスする。少なくとも一実施例では、テクスチャ・データ及び入力ジオメトリ・データに対する算術演算によって、各ジオメトリ・フラグメントのピクセル色データがコンピュートされ、又はさらに処理されないように1つ又は複数のピクセルが切り捨てられる。
少なくとも一実施例では、データ・ポート3314は、スレッド実行論理3300のためのメモリ・アクセス機構を提供して、処理済みデータを、グラフィックス・プロセッサ出力パイプラインでさらに処理できるようにメモリに出力する。少なくとも一実施例では、データ・ポート3314は、1つ又は複数のキャッシュ・メモリ(たとえば、データ・キャッシュ3312)を含み、又はそれに結合されて、データ・ポートを介したメモリ・アクセスのためのデータをキャッシュする。
図33Bに示してあるように、少なくとも一実施例では、グラフィック実行ユニット3308は、命令フェッチ・ユニット3337、汎用レジスタ・ファイル・アレイ(GRF:general register file array)3324、アーキテクチャ・レジスタ・ファイル・アレイ(ARF)3326、スレッド調停装置(arbiter)3322、送信ユニット3330、ブランチ・ユニット3332、SIMD浮動小数点ユニット(FPU)3334のセット、及び専用整数SIMD ALU3335のセットを含むことができる。少なくとも一実施例では、GRF3324及びARF3326は、各同時ハードウェア・スレッドに関連付けられた汎用レジスタ・ファイルとアーキテクチャ・レジスタ・ファイルのセットを含み、このハードウェア・スレッドは、グラフィックス実行ユニット3308においてアクティブであってもよい。少なくとも一実施例では、スレッドごとのアーキテクチャ状態が、ARF3326において維持され、スレッド実行中に使用されるデータが、GRF3324に記憶される。少なくとも一実施例では、各スレッドに対する命令ポインタを含む各スレッドの実行状態は、ARF3326のスレッド専用レジスタに保持することが可能である。
少なくとも一実施例では、グラフィックス実行ユニット3308は、同時マルチスレッディング(SMT:Simultaneous Multi-Threading)と微細化インターリーブ・マルチスレッディング(IMT:Interleaved Multi-Threading)の組合せであるアーキテクチャを有する。少なくとも一実施例では、アーキテクチャは、実行ユニット当たりの同時スレッドのターゲット数及びレジスタ数に基づき設計時に微調整することができるモジュール式構成を有し、ここで実行ユニットのリソースは、複数の同時スレッドを実行するために使用される論理にわたって分割される。
少なくとも一実施例では、グラフィックス実行ユニット3308は複数の命令を共同発行することができ、この命令は、それぞれ異なる命令であってもよい。少なくとも一実施例では、グラフィックス実行ユニット・スレッド3308のスレッド調停装置3322は、送信ユニット3330、ブランチ・ユニット3332、又はSIMD FPU3334のうちの1つに命令をディスパッチして実行できるようにすることができる。少なくとも一実施例では、各実行スレッドは、GRF3324内の128個の汎用レジスタにアクセスすることができ、ここで各レジスタは、32ビットのデータ要素のSIMD8要素のベクトルとしてアクセス可能な32バイトを記憶することができる。少なくとも一実施例では、各実行ユニット・スレッドは、GRF3324内の4キロバイトにアクセスすることができるが、実施例はこのように限定されず、他の実施例ではより多くの、又はより少ないリソースが提供されてもよい。少なくとも一実施例では、最大7個のスレッドを同時に実行できるが、実行ユニット当たりのスレッド数も、実施例に応じて変えることができる。7個のスレッドが4キロバイトにアクセスできる少なくとも一実施例では、GRF3324は、合計28キロバイトを記憶することができる。少なくとも一実施例では、フレキシブルなアドレッシング・モードにより、複数のレジスタがともにアドレスされてより幅広いレジスタを構築したり、ストライド設定された矩形ブロック・データ構造を表したりできるようにすることができる。
少なくとも一実施例では、メモリ動作、サンプラ動作、及び他のレイテンシの長いシステム通信は、メッセージ引渡し送信ユニット3330によって実行される「送信」命令を介してディスパッチされる。少なくとも一実施例では、ブランチ命令は、SIMDの発散及び最終的な収束を容易にするために、ブランチ・ユニット3332にディスパッチされる。
少なくとも一実施例では、グラフィックス実行ユニット3308は、浮動小数点演算を実行するための1つ又は複数のSIMD浮動小数点ユニット(FPU)3334を含む。少なくとも一実施例では、FPU3334は、整数計算もサポートする。少なくとも一実施例ではFPU3334は、最大M個の32ビット浮動小数点(若しくは整数)演算をSIMDで実行し、又は最大で2M個の16ビット整数演算、若しくは16ビット浮動小数点演算をSIMDで実行することができる。少なくとも一実施例では、少なくとも1つのFPUは、拡張数理機能を提供して、高スループットの超越数理関数、及び倍精度の64ビット浮動小数点をサポートする。少なくとも一実施例では、8ビットの整数SIMD ALU3335のセットも存在し、機械学習計算に関連する動作を実行するように特に最適化されてもよい。
少なくとも一実施例では、グラフィックス実行ユニット3308の複数のインスタンスのアレイが、グラフィックス・サブ・コア・グループ(たとえば、サブ・スライス)においてインスタンス化されてもよい。少なくとも一実施例では、実行ユニット3308は、複数の実行チャネルにわたって命令を実行することができる。少なくとも一実施例では、グラフィックス実行ユニット3308で実行される各スレッドは、異なるチャネルで実行される。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理915の一部又はすべてが、スレッド実行論理3300に組み込まれてもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図9A又は図9Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行論理3300のALUスレッドを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図34は、少なくとも一実施例による並列処理ユニット(「PPU」)3400を示す。少なくとも一実施例では、PPU3400は、PPU3400によって実行された場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、PPU3400に実行させる機械可読コードで構成される。少なくとも一実施例では、PPU3400はマルチスレッド・プロセッサであり、このプロセッサは、1つ又は複数の集積回路デバイスに実装され、コンピュータ可読命令(機械可読命令若しくは単に命令とも呼ばれる)を、複数のスレッドで並列に処理するように設計されたレイテンシ隠蔽技法としてマルチスレッディングを利用する。少なくとも一実施例では、スレッドとは、実行スレッドを指し、PPU3400によって実行されるように構成された命令のセットをインスタンス化したものである。少なくとも一実施例では、PPU3400は、液晶ディスプレイ(「LCD」)デバイスなどのディスプレイ・デバイスに表示できるように2次元(「2D」)画像データを生成するために、3次元(「3D」)グラフィックス・データを処理するためのグラフィックス・レンダリング・パイプラインを実装するように構成されたグラフィックス・プロセッシング・ユニット(「GPU」)である。少なくとも一実施例では、PPU3400を利用して、線形代数演算及び機械学習演算などの計算が実行される。図34は、単に例示を目的とした例示的な並列プロセッサを示しており、本開示の範囲内で企図されるプロセッサ・アーキテクチャの非限定的な例として解釈されるべきであり、同プロセッサに追加するため、且つ/又はそれを置き換えるために、任意の好適なプロセッサが利用されてもよいことが解釈されるべきである。
少なくとも一実施例では、1つ又は複数のPPU3400は、高性能コンピューティング(「HPC」:High Performance Computing)、データ・センタ、及び機械学習のアプリケーションを加速するように構成される。少なくとも一実施例では、PPU3400は、以下の非限定的な例を含む深層学習システム及びアプリケーションを加速するように構成される:自律車両プラットフォーム、深層学習、高精度音声、画像、テキスト認識システム、インテリジェント・ビデオ分析、分子シミュレーション、創薬、病気診断、天気予報、ビッグ・データ分析、天文学、分子動態シミュレーション、金融モデリング、ロボット工学、工場自動化、リアル・タイム言語翻訳、オンライン検索最適化、及び個別化ユーザ推奨など。
少なくとも一実施例では、PPU3400は、限定することなく、入力/出力(「I/O」)ユニット3406、フロント・エンド・ユニット3410、スケジューラ・ユニット3412、ワーク分配ユニット3414、ハブ3416、クロスバー(「Xbar」:crossbar)3420、1つ又は複数の汎用処理クラスタ(「GPC」:general processing cluster)3418、及び1つ又は複数のパーティション・ユニット(「メモリ・パーティション・ユニット」)3422を含む。少なくとも一実施例では、PPU3400は、1つ又は複数の高速GPU相互接続(「GPU相互接続」)3408を介してホスト・プロセッサ又は他のPPU3400に接続される。少なくとも一実施例では、PPU3400は、システム・バス3402を介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、PPU3400は、1つ又は複数のメモリ・デバイス(「メモリ」)3404を備えるローカル・メモリに接続される。少なくとも一実施例では、メモリ・デバイス3404は、限定することなく、1つ又は複数のダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイスを含む。少なくとも一実施例では、1つ又は複数のDRAMデバイスは、複数のDRAMダイが各デバイス内で積層された高帯域幅メモリ(「HBM」)サブシステムとして構成されても、且つ/又は構成可能であってもよい。
少なくとも一実施例では、高速GPU相互接続3408は、有線ベースのマルチ・レーン通信リンクを指してもよく、このリンクは、拡張縮小するためにシステムによって使用され、1つ又は複数の中央処理装置(「CPU」)と組み合わされた1つ又は複数のPPU3400を含み、PPU3400とCPUとの間のキャッシュ・コヒーレンス、及びCPUマスタリングをサポートする。少なくとも一実施例では、データ及び/又はコマンドは、高速GPU相互接続3408により、ハブ3416を介して、1つ又は複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニット、及び図34に明示されていないこともある他の構成要素などのPPU3400の別のユニットに/から送信される。
少なくとも一実施例では、I/Oユニット3406は、システム・バス3402を介してホスト・プロセッサ(図34には示さず)から通信(たとえば、コマンド、データ)を送受信するように構成される。少なくとも一実施例では、I/Oユニット3406は、システム・バス3402を介して直接、又は1つ若しくは複数の、メモリ・ブリッジなどの中間デバイスを介して、ホスト・プロセッサと通信する。少なくとも一実施例では、I/Oユニット3406は、システム・バス3402を介してPPU3400のうちの1つ又は複数などの1つ又は複数の他のプロセッサと通信してもよい。少なくとも一実施例では、I/Oユニット3406は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCIe」)インターフェースを実装して、PCIeバスを介して通信できるようにする。少なくとも一実施例では、I/Oユニット3406は、外部デバイスと通信するためのインターフェースを実装する。
少なくとも一実施例では、I/Oユニット3406は、システム・バス3402を介して受信したパケットをデコードする。少なくとも一実施例では、少なくともいくつかのパケットは、PPU3400に様々な動作を実行させるように構成されたコマンドを表す。少なくとも一実施例では、I/Oユニット3406は、デコードされたコマンドを、コマンドによって指定されるPPU3400の様々な他のユニットに送信する。少なくとも一実施例では、コマンドは、フロント・エンド・ユニット3410に送信され、且つ/又はハブ3416、若しくは(図34には明示していない)1つ若しくは複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニットなどのPPU3400の他のユニットに送信される。少なくとも一実施例では、I/Oユニット3406はPPU3400の様々な論理ユニット間で、通信をルーティングするように構成される。
少なくとも一実施例では、ホスト・プロセッサによって実行されるプログラムは、ワークロードをPPU3400に提供して処理できるようにするバッファにおいて、コマンド・ストリームをエンコードする。少なくとも一実施例では、ワークロードは、命令と、これらの命令によって処理されることになるデータとを含む。少なくとも一実施例では、バッファは、ホスト・プロセッサとPPU3400の両方がアクセス(たとえば、書込み/読取り)可能なメモリ内の領域であり、ホスト・インターフェース・ユニットは、I/Oユニット3406によってシステム・バス3402を介して送信されるメモリ要求を介して、システム・バス3402に接続されたシステム・メモリ内のバッファにアクセスするように構成されてもよい。少なくとも一実施例では、ホスト・プロセッサは、バッファにコマンド・ストリームを書き込み、次いでコマンド・ストリームの開始点を指すポインタをPPU3400に送信し、それによりフロント・エンド・ユニット3410は、1つ又は複数のコマンド・ストリームを指すポインタを受信し、1つ又は複数のコマンド・ストリームを管理して、コマンド・ストリームからコマンドを読み取り、コマンドをPPU3400の様々なユニットに転送する。
少なくとも一実施例では、フロント・エンド・ユニット3410は、1つ又は複数のコマンド・ストリームによって定義されるタスクを処理するように様々なGPC3418を構成するスケジューラ・ユニット3412に結合される。少なくとも一実施例では、スケジューラ・ユニット3412は、スケジューラ・ユニット3412によって管理される様々タスクに関連する状態情報を追跡するように構成され、ここで状態情報は、どのGPC3418にタスクが割り当てられるか、タスクがアクティブか非アクティブか、タスクに関連付けられた優先レベルなどを示してもよい。少なくとも一実施例では、スケジューラ・ユニット3412は、GPC3418のうちの1つ又は複数において、複数のタスクの実行を管理する。
少なくとも一実施例では、スケジューラ・ユニット3412は、GPC3418で実行するためのタスクをディスパッチするように構成されたワーク分配ユニット3414に結合される。少なくとも一実施例では、ワーク分配ユニット3414は、スケジューラ・ユニット3412から受信したスケジュール済みタスクの数を追跡し、ワーク分配ユニット3414は、GPC3418のそれぞれについて、ペンディング・タスク・プール、及びアクティブ・タスク・プールを管理する。少なくとも一実施例では、ペンディング・タスク・プールは、特定のGPC3418によって処理されるように割り当てられたタスクを含むいくつかのスロット(たとえば、32スロット)を備え、アクティブ・タスク・プールは、GPC3418によりアクティブに処理されているタスクのためのいくつかのスロット(たとえば、4スロット)を備え、それにより、GPC3418のうちの1つがタスクの実行を完了すると、GPC3418のアクティブ・タスク・プールからそのタスクが排除され、ペンディング・タスク・プールからの他のタスクが選択され、GPC3418で実行されるようにスケジューリングされる。少なくとも一実施例では、データ依存性が解決されるのを待機している間など、アクティブ・タスクがGPC3418上でアイドルである場合には、アクティブ・タスクがGPC3418から排除され、ペンディング・タスク・プールに戻され、その間に、ペンディング・タスク・プールの別のタスクが選択され、GPC3418で実行されるようにスケジューリングされる。
少なくとも一実施例では、ワーク分配ユニット3414は、Xバー3420を介して1つ又は複数のGPC3418と通信する。少なくとも一実施例では、Xバー3420は、PPU3400のユニットのうちの多くを、PPU3400の別のユニットに結合する相互接続ネットワークであり、ワーク分配ユニット3414を特定のGPC3418に結合するように構成されることが可能である。少なくとも一実施例では、PPU3400の1つ又は複数の他のユニットも、ハブ3416を介してXバー3420に接続されてもよい。
少なくとも一実施例では、タスクはスケジューラ・ユニット3412によって管理され、ワーク分配ユニット3414によってGPC3418のうちの1つにディスパッチされる。少なくとも一実施例では、GPC3418は、タスクを処理し、結果を生成するように構成される。少なくとも一実施例では、結果は、GPC3418内の他のタスクによって消費されてもよく、Xバー3420を介して異なるGPC3418にルーティングされてもよく、又はメモリ3404に記憶されてもよい。少なくとも一実施例では、結果を、パーティション・ユニット3422を介してメモリ3404に書き込むことができ、パーティション・ユニット3422は、メモリ3404への/からのデータの読取り及び書込みを行うためのメモリ・インターフェースを実装する。少なくとも一実施例では、結果を、高速GPU相互接続3408を介して別のPPU3404又はCPUに送信することができる。少なくとも一実施例では、図36と併せて本明細書でさらに詳細に説明されるように、PPU3400は、PPU3400に結合された別々の個別メモリ・デバイス3404の数に等しいU個のパーティション・ユニット3422を、限定することなく含む。
少なくとも一実施例では、ホスト・プロセッサはドライバ・カーネルを実行し、このカーネルは、ホスト・プロセッサで実行されている1つ又は複数のアプリケーションがPPU3400で実行するための動作をスケジューリングできるようにするアプリケーション・プログラミング・インターフェース(API)を実装している。少なくとも一実施例では、複数のコンピュート・アプリケーションが、PPU3400によって同時に実行され、PPU3400は、複数のコンピュート・アプリケーションに対して、隔離、サービス品質(「QoS」:quality of service)、及び独立したアドレス空間を提供する。少なくとも一実施例では、アプリケーションは、PPU3400によって実行するための1つ又は複数のタスクをドライバ・カーネルに生成させる(たとえば、APIコールの形の)命令を生成し、ドライバ・カーネルは、PPU3400によって処理されている1つ又は複数のストリームにタスクを出力する。少なくとも一実施例では、各タスクは、ワープと呼ばれてもよい関連スレッドの1つ又は複数のグループを備える。少なくとも一実施例では、ワープは、並列に実行することができる複数の関連スレッド(たとえば、32個のスレッド)を備える。少なくとも一実施例では、連動スレッドとは、タスクを実行するための命令を含み、共有メモリを介してデータを交換する複数のスレッドを指してもよい。少なくとも一実施例では、スレッド及び連動スレッドは、図36と併せてさらに詳細に説明される。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、PPU3400に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3400は、別のプロセッサ若しくはシステムによって、又はPPU3400によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、PPU3400は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図35は、少なくとも一実施例による汎用処理クラスタ(「GPC」)3500を示す。少なくとも一実施例では、GPC3500は、図34のGPC3418である。少なくとも一実施例では、各GPC3500は、限定することなく、タスクを処理するためのいくつかのハードウェア・ユニットを含み、各GPC3500は、限定することなく、パイプライン・マネージャ3502、プレ・ラスタ演算ユニット(「preROP」:pre-raster operations unit)3504、ラスタ・エンジン3508、ワーク分配クロスバー(「WDX」:work distribution crossbar)3516、メモリ管理ユニット(「MMU」)3518、1つ又は複数のデータ処理クラスタ(「DPC」:Data Processing Clusters)3506、及びパーツの任意の好適な組合せを含む。
少なくとも一実施例では、GPC3500の動作は、パイプライン・マネージャ3502によって制御される。少なくとも一実施例では、パイプライン・マネージャ3502は、GPC3500に配分されたタスクを処理するために1つ又は複数のDPC3506の構成を管理する。少なくとも一実施例では、パイプライン・マネージャ3502は、グラフィックス・レンダリング・パイプラインの少なくとも一部分を実装するように、1つ又は複数のDPC3506のうちの少なくとも1つを構成する。少なくとも一実施例では、DPC3506は、プログラム可能なストリーミング・マルチプロセッサ(「SM」:streaming multi-processor)3514で頂点シェーダ・プログラムを実行するように構成される。少なくとも一実施例では、パイプライン・マネージャ3502は、少なくとも一実施例では、ワーク分配ユニットから受信したパケットを、GPC3500内の適切な論理ユニットにルーティングするように構成され、いくつかのパケットは、preROP3504の固定機能ハードウェア・ユニット及び/又はラスタ・エンジン3508にルーティングされてもよく、他のパケットは、プリミティブ・エンジン3512又はSM3514によって処理されるようにDPC3506にルーティングされてもよい。少なくとも一実施例では、パイプライン・マネージャ3502は、ニューラル・ネットワーク・モデル及び/又はコンピューティング・パイプラインを実装するように、DPC3506のうちの少なくとも1つを構成する。
少なくとも一実施例では、preROPユニット3504は、少なくとも一実施例では、ラスタ・エンジン3508及びDPC3506によって生成されたデータを、図34と併せて上でより詳細に説明したパーティション・ユニット3422のラスタ動作(ROP)ユニットにルーティングするように構成される。少なくとも一実施例では、preROPユニット3504は、色ブレンディングの最適化を実行し、ピクセル・データを組織化し、アドレス・トランスレーションを実行し、その他の動作を行うように構成される。少なくとも一実施例では、ラスタ・エンジン3508は、少なくとも一実施例では様々なラスタ動作を実行するように構成されたいくつかの固定機能ハードウェア・ユニットを、限定することなく含み、ラスタ・エンジン3508は、限定することなく、セットアップ・エンジン、粗いラスタ・エンジン、選別エンジン、クリッピング・エンジン、細かいラスタ・エンジン、タイル合体エンジン、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、セットアップ・エンジンは、変換された頂点を受信し、頂点によって定義された幾何プリミティブに関連付けられた平面方程式を生成し、平面方程式が、粗いラスタ・エンジンに送信されて、プリミティブに対するカバレッジ情報(たとえば、タイルのx、yカバレッジ・マスク)が生成され、粗いラスタ・エンジンの出力が、選別エンジンに送信され、ここでzテストに落ちたプリミティブに関連付けられたフラグメントが選別され、クリッピング・エンジンに送信され、ここで視錐台の外側にあるフラグメントがクリップされる。少なくとも一実施例では、クリッピング及び選別を通過したフラグメントは、細かいラスタ・エンジンに渡されて、セットアップ・エンジンによって生成された平面方程式に基づき、ピクセル・フラグメントに対する属性が生成される。少なくとも一実施例では、ラスタ・エンジン3508の出力は、DPC3506内に実装されたフラグメント・シェーダによってなど任意の好適なエンティティによって処理されることになるフラグメントを含む。
少なくとも一実施例では、GPC3500に含まれる各DPC3506は、限定することなく、Mパイプ・コントローラ(「MPC」:M-Pipe Controller)3510、プリミティブ・エンジン3512、1つ又は複数のSM3514、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、MPC3510は、DPC3506の動作を制御して、パイプライン・マネージャ3502から受信したパケットを、DPC3506内の適切なユニットにルーティングする。少なくとも一実施例では、頂点に関連付けられたパケットは、頂点に関連付けられた頂点属性をメモリからフェッチするように構成されたプリミティブ・エンジン3512にルーティングされ、対照的に、シェーダ・プログラムに関連付けられたパケットは、SM3514に送信されてもよい。
少なくとも一実施例では、SM3514は、いくつかのスレッドにより表されたタスクを処理するように構成されたプログラム可能なストリーミング・プロセッサを、限定することなく含む。少なくとも一実施例では、SM3514はマルチスレッド化されており、スレッドの特定のグループからの複数のスレッド(たとえば、32個のスレッド)を同時に実行するように構成され、単一命令複数データ(SIMD)アーキテクチャを実装し、ここでスレッドのグループ(ワープ)内の各スレッドは、同じ命令セットに基づき、異なるデータ・セットを処理するように構成される。少なくとも一実施例では、スレッド・グループ内のすべてのスレッドが命令の共通のセットを実行する。少なくとも一実施例では、SM3514は、単一命令複数スレッド(SIMT)アーキテクチャを実装し、ここで、スレッド・グループの各スレッドは、命令の共通セットに基づき、異なるデータ・セットを処理するように構成されるが、スレッド・グループ内の個々のスレッドは、実行中に発散することが許容される。少なくとも一実施例では、プログラム・カウンタ、コール・スタック、及び実行状態がワープごとに維持されて、ワープ内のスレッドが発散するときに、ワープ間の同時処理、及びワープ内での直列実行が可能になる。別の実施例では、プログラム・カウンタ、コール・スタック、及び実行状態が個々のスレッドごとに維持されて、すべてのスレッド間、ワープ内、及びワープ間で等しい同時処理が可能になる。少なくとも一実施例では、実行状態が個々のスレッドごとに維持され、共通の命令を実行しているスレッドが、より効率的になるように収束され並列に実行されてもよい。SM3514の少なくとも一実施例は、本明細書でさらに詳細に説明される。
少なくとも一実施例では、MMU3518は、GPC3500とメモリ・パーティション・ユニット(たとえば、図34のパーティション・ユニット3422)との間でインターフェースを提供し、MMU3518は、仮想アドレスから物理アドレスへのトランスレーション、メモリ保護、及びメモリ要求の調停を提供する。少なくとも一実施例では、MMU3518は、仮想アドレスからメモリの物理アドレスへのトランスレーションを実行するための1つ又は複数のトランスレーション・ルックアサイド・バッファ(「TLB」)を提供する。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、GPC3500に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、GPC3500は、別のプロセッサ若しくはシステムによって、又はGPC3500によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、GPC3500は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図36は、少なくとも一実施例による、並列処理ユニット(「PPU」)のメモリ・パーティション・ユニット3600を示す。少なくとも一実施例では、メモリ・パーティション・ユニット3600は、限定することなく、ラスタ演算(「ROP」)ユニット3602、レベル2(「L2」)キャッシュ3604、メモリ・インターフェース3606、及びそれらの任意の好適な組合せを含む。少なくとも一実施例では、メモリ・インターフェース3606は、メモリに結合される。少なくとも一実施例では、メモリ・インターフェース3606は、高速データ転送のために、32、64、128、1024ビット・データ・バスなどを実装してもよい。少なくとも一実施例では、PPUは、Uが正の整数である、U個のメモリ・インターフェース3606をパーティション・ユニット3600の対当たりに1つのメモリ・インターフェース3606に組み込んでおり、ここでパーティション・ユニット3600の各対は、対応するメモリ・デバイスに接続される。たとえば、少なくとも一実施例では、PPUは、高帯域幅メモリ・スタック、又はグラフィックス・ダブル・データ・レート、バージョン5、同期ダイナミック・ランダム・アクセス・メモリ(「GDDR5 SDRAM」)など、最大Y個のメモリ・デバイスに接続されてもよい。
少なくとも一実施例では、メモリ・インターフェース3606は、高帯域幅メモリの第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は、データ破損を受けやすいコンピュート・アプリケーションに、より高い信頼性を提供し得る。
少なくとも一実施例では、PPUは、マルチ・レベルのメモリ階層を実装する。少なくとも一実施例では、メモリ・パーティション・ユニット3600は、統合されたメモリをサポートして、中央処理装置(「CPU」)及びPPUメモリに単一の統合された仮想アドレス空間を提供し、仮想メモリ・システム間でのデータの共有を可能にする。少なくとも一実施例では、他のプロセッサに位置付けられたメモリにPPUがアクセスする頻度を追跡して、より頻繁にページにアクセスしているPPUの物理メモリに、メモリ・ページが確実に移動されるようにする。少なくとも一実施例では、高速GPU相互接続3408は、アドレス・トランスレーション・サービスをサポートして、PPUが直接CPUのページ・テーブルにアクセスできるようにし、PPUによるCPUメモリへのフル・アクセスを実現する。
少なくとも一実施例では、コピー・エンジンは、複数のPPU間、又はPPUとCPUの間で、データを転送する。少なくとも一実施例では、コピー・エンジンは、ページ・テーブルにマッピングされていないアドレスについてページ誤りを生成することができ、次いでメモリ・パーティション・ユニット3600がページ誤りに対応して、アドレスをページ・テーブルにマッピングし、その後で、コピー・エンジンが転送を実行する。少なくとも一実施例では、メモリは、複数のプロセッサ間でコピー・エンジンの複数の動作についてピン留めされて(たとえば、ページ移動不可能にされて)、実質的に利用可能なメモリを低減させる。少なくとも一実施例では、ハードウェアのページ誤りがある場合、メモリ・ページが常駐であるかどうかに関わらず、アドレスをコピー・エンジンに渡すことができ、コピー・プロセスは透過的である。
少なくとも一実施例によれば、図34のメモリ3404又は他のシステム・メモリからのデータは、メモリ・パーティション・ユニット3600によってフェッチされ、L2キャッシュ3604に記憶され、このL2キャッシュは、オン・チップに位置付けられ、様々GPC間で共有される。少なくとも一実施例では、各メモリ・パーティション・ユニット3600は、対応するメモリ・デバイスに関連付けられたL2キャッシュの少なくとも一部分を、限定することなく含む。少なくとも一実施例では、より低いレベルのキャッシュが、GPC内の様々なユニットに実装される。少なくとも一実施例では、図35のSM3514のそれぞれは、レベル1(「L1」)キャッシュを実装してもよく、ここでL1キャッシュは、特定のSM3514専用のプライベート・メモリであり、L2キャッシュ3604からのデータは、SM3514の機能ユニットで処理するために、L1キャッシュのそれぞれにフェッチされ記憶される。少なくとも一実施例では、L2キャッシュ3604は、メモリ・インターフェース3606及び図34に示されるXバー3420に結合される。
少なくとも一実施例では、ROPユニット3602は、色圧縮、ピクセル・ブレンディングなど、ピクセル色に関係するグラフィックス・ラスタ演算を実行する。ROPユニット3602は、少なくとも一実施例では、ラスタ・エンジン3508と併せて深度テストを実装して、ピクセル・フラグメントに関連付けられたサンプル・ロケーションの深度を、ラスタ・エンジン3508の選別エンジンから受信する。少なくとも一実施例では、深度は、フラグメントに関連付けられたサンプル・ロケーションの深度バッファにおける対応する深度と比べてテストされる。少なくとも一実施例では、フラグメントが、サンプル・ロケーションの深度テストを通過すると、ROPユニット3602は、深度バッファを更新し、深度テストの結果をラスタ・エンジン3508に送信する。パーティション・ユニット3600の数はGPCの数とは異なってもよく、したがって、各ROPユニット3602は、少なくとも一実施例では、GPCのそれぞれに結合されてもよいことが理解されよう。少なくとも一実施例では、ROPユニット3602は、異なるGPCから受信したパケットを追跡し、ROPユニット3602によって生成された結果が、Xバー3420を通してルーティングされることになるかを判定する。
図37は、少なくとも一実施例による、ストリーミング・マルチプロセッサ(「SM」)3700を示す。少なくとも一実施例では、SM3700は、図35のSMである。少なくとも一実施例では、SM3700は、限定することなく、命令キャッシュ3702、1つ又は複数のスケジューラ・ユニット3704、レジスタ・ファイル3708、1つ又は複数の処理コア(「コア」)3710、1つ又は複数の特殊機能ユニット(「SFU」:special function unit)3712、1つ又は複数のロード/ストア・ユニット(「LSU」load/store unit)3714、相互接続ネットワーク3716、共有メモリ/レベル1(「L1」)キャッシュ3718、及び/又はこれらの任意の好適な組合せを含む。
少なくとも一実施例では、ワーク分配ユニットは、並列処理ユニット(「PPU」)の汎用処理クラスタ(「GPC」)で実行するためにタスクをディスパッチし、各タスクは、GPC内の特定のデータ処理クラスタ(「DPC」)に配分され、タスクがシェーダ・プログラムに関連する場合には、タスクはSM3700のうちの1つに配分される。少なくとも一実施例では、スケジューラ・ユニット3704は、ワーク分配ユニットからタスクを受信し、SM3700に割り当てられた1つ又は複数のスレッド・ブロックについて命令スケジューリングを管理する。少なくとも一実施例では、スケジューラ・ユニット3704は、並列スレッドのワープとして実行できるようにスレッド・ブロックをスケジューリングし、ここで各スレッド・ブロックは、少なくとも1つのワープに配分される。少なくとも一実施例では、各ワープは、スレッドを実行する。少なくとも一実施例では、スケジューラ・ユニット3704は、複数の異なるスレッド・ブロックを管理して、異なるスレッド・ブロックにワープを配分し、次いで複数の異なる連動グループからの命令を、各クロック・サイクル中に様々な機能ユニット(たとえば、処理コア3710、SFU3712、及びLSU3714)にディスパッチする。
少なくとも一実施例では、連動グループとは、通信するスレッドのグループを組織化するためのプログラミング・モデルを指し、このモデルは、スレッドが通信する粒度をデベロッパが表せるようにして、より豊富でより効率的な並列分解の表現を可能にする。少なくとも一実施例では、連動した起動APIは、並列アルゴリズムを実行できるようにスレッド・ブロック間の同期をサポートする。少なくとも一実施例では、従来のプログラミング・モデルのアプリケーションは、連動スレッドを同期するための単一の簡単な構造、すなわちスレッド・ブロックのすべてのスレッドにわたるバリア(たとえば、syncthreads()関数)を提供する。しかし、少なくとも一実施例では、プログラマは、スレッド・ブロックの粒度よりも小さいスレッド・グループを定義し、定義されたグループ内で同期して、集合的なグループ全般にわたる機能インターフェースの形で、より高い性能、設計の融通性、及びソフトウェア再利用を可能にしてもよい。少なくとも一実施例では、連動グループによって、プログラマは、サブ・ブロック(すなわち、単一スレッドと同じ大きさ)の粒度及びマルチ・ブロックの粒度において、スレッドのグループを明示的に定義し、連動グループ内のスレッドに対する同期などの集合的な動作を実行できるようになる。少なくとも一実施例では、プログラミング・モデルは、ソフトウェア境界を横切るクリーンな合成をサポートし、それにより、ライブラリ及びユーティリティ関数を、収束について仮定する必要なくそれらのローカルなコンテキスト内で安全に同期することができる。少なくとも一実施例では、連動グループのプリミティブは、プロデューサ-コンシューマ並列性、日和見並列性(opportunistic parallelism)、及びスレッド・ブロックのグリッド全体にわたるグローバルな同期を限定することなく含む新しいパターンの連動並列性を可能にする。
少なくとも一実施例では、ディスパッチ・ユニット3706は、1つ又は複数の機能ユニットに命令を送信するように構成され、スケジューラ・ユニット3704は、共通のワープからの2つの異なる命令を、各クロック・サイクル中にディスパッチできるようにする2つのディスパッチ・ユニット3706を限定することなく含む。少なくとも一実施例では、各スケジューラ・ユニット3704は、単一のディスパッチ・ユニット3706又は追加のディスパッチ・ユニット3706を含む。
少なくとも一実施例では、各SM3700は、少なくとも一実施例では、SM3700の機能ユニットにレジスタのセットを提供するレジスタ・ファイル3708を限定することなく含む。少なくとも一実施例では、レジスタ・ファイル3708は、各機能ユニットがレジスタ・ファイル3708の専用部分に配分されるように、各機能ユニット間で分割される。少なくとも一実施例では、レジスタ・ファイル3708は、SM3700によって実行されている異なるワープ間で分割され、レジスタ・ファイル3708は、機能ユニットのデータ経路に接続されたオペランド用の一時的なストレージを提供する。少なくとも一実施例では、各SM3700は、限定することなく複数のL処理コア3710を含み、ここでLは正の整数である。少なくとも一実施例では、各SM3700は、限定することなく、多数の(たとえば、128個以上の)個別の処理コア3710を含む。少なくとも一実施例では、各処理コア3710は、浮動小数点算術論理演算ユニット及び整数算術論理演算ユニットを限定することなく含む完全にパイプライン化された、単精度の、倍精度の、及び/又は混合精度の処理ユニットを限定することなく含む。少なくとも一実施例では、浮動小数点算術論理演算ユニットは、浮動小数点演算のためのIEEE754-2008規格を実装する。少なくとも一実施例では、処理コア3710は、限定することなく、64個の単精度(32ビット)浮動小数点コア、64個の整数コア、32個の倍精度(64ビット)浮動小数点コア、及び8個のテンソル・コアを含む。
テンソル・コアは、少なくとも一実施例による行列演算を実行するように構成される。少なくとも一実施例では、1つ又は複数のテンソル・コアは、処理コア3710に含まれる。少なくとも一実施例では、テンソル・コアは、ニューラル・ネットワークの訓練及び推論のための畳み込み演算など、深層学習の行列演算を実行するように構成される。少なくとも一実施例では、各テンソル・コアは、4×4の行列で動作し、行列の積和演算(matrix multiply and accumulate operation)D=A×B+Cを実行し、ここでA、B、C、及びDは4×4の行列である。
少なくとも一実施例では、行列乗算の入力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のサイズの行列を仮定している。
少なくとも一実施例では、各SM3700は、特殊関数(たとえば、属性評価、逆数平方根など)を実行するM個のSFU3712を、限定することなく含む。少なくとも一実施例では、SFU3712は、限定することなく、階層ツリー・データ構造をトラバースするように構成されたツリー・トラバーサル・ユニットを含む。少なくとも一実施例では、SFU3712は、テクスチャ・マップのフィルタリング動作を実行するように構成されたテクスチャ・ユニットを、限定することなく含む。少なくとも一実施例では、テクスチャ・ユニットは、メモリ及びサンプル・テクスチャ・マップからテクスチャ・マップ(たとえば、テクセルの2Dアレイ)をロードして、SM3700により実行されるシェーダ・プログラムで使用するためのサンプリングされたテクスチャ値を生成するように構成される。少なくとも一実施例では、テクスチャ・マップは、共有メモリ/レベル1キャッシュ3718に記憶される。少なくとも一実施例では、テクスチャ・ユニットは、少なくとも一実施例によれば、ミップ・マップ(たとえば、詳細さのレベルが異なるテクスチャ・マップ)を使用したフィルタリング動作などのテクスチャ動作を実装する。少なくとも一実施例では、各SM3700は、限定することなく、2つのテクスチャ・ユニットを含む。
各SM3700は、少なくとも一実施例では、共有メモリ/L1キャッシュ3718とレジスタ・ファイル3708の間でロード及びストア動作を実装するN個のLSU3714を、限定することなく含む。少なくとも一実施例では、相互接続ネットワーク3716は、各機能ユニットをレジスタ・ファイル3708に接続し、LSU3714をレジスタ・ファイル3708及び共有メモリ/L1キャッシュ3718に接続する。少なくとも一実施例では、相互接続ネットワーク3716はクロスバーであり、このクロスバーは、任意の機能ユニットをレジスタ・ファイル3708の任意のレジスタに接続し、LSU3714をレジスタ・ファイル3708と共有メモリ/L1キャッシュ3718のメモリ・ロケーションとに接続するように構成されてもよい。
少なくとも一実施例では、共有メモリ/L1キャッシュ3718は、少なくとも一実施例では、SM3700とプリミティブ・エンジンの間、及びSM3700のスレッド間でデータ・ストレージ及び通信を可能にするオン・チップ・メモリのアレイである。少なくとも一実施例では、共有メモリ/L1キャッシュ3718は、限定することなく、128KBのストレージ容量を備え、SM3700からパーティション・ユニットに向かう経路にある。少なくとも一実施例では、共有メモリ/L1キャッシュ3718は、少なくとも一実施例では、読取り及び書込みをキャッシュするために使用される。少なくとも一実施例では、共有メモリ/L1キャッシュ3718、L2キャッシュ、及びメモリのうちの1つ又は複数は、補助ストレージである。
少なくとも一実施例では、データ・キャッシュと共有メモリ機能とを単一のメモリ・ブロックに組み合わせることによって、両方のタイプのメモリ・アクセスについて性能が向上する。少なくとも一実施例では、容量は、共有メモリを使用しないプログラムによってキャッシュとして使用され、又は使用可能であり、それにより、共有メモリが容量の半分を使用するように構成されている場合、テクスチャ及びロード/ストア動作が、残りの容量を使用することができる。少なくとも一実施例によれば、共有メモリ/L1キャッシュ3718内に統合することによって、共有メモリ/L1キャッシュ3718が、データをストリームするための高スループットの管として機能しながら、同時に高帯域幅及び低レイテンシのアクセスを、頻繁に再使用されるデータに提供できるようになる。少なくとも一実施例では、汎用並列計算向けに構成されるときには、グラフィックス処理と比べてより簡単な構成を使用することができる。少なくとも一実施例では、固定機能のグラフィックス・プロセッシング・ユニットがバイパスされて、はるかに簡単なプログラミング・モデルが作製される。汎用並列計算の構成では、ワーク分配ユニットは、少なくとも一実施例においてスレッド・ブロックを直接DPCに割当て及び分配する。少なくとも一実施例では、ブロック内のスレッドは、各スレッドが確実に一意の結果を生成するように、計算において一意のスレッドIDを使用して共通のプログラムを実行し、SM3700を使用して、プログラムを実行し計算を行い、共有メモリ/L1キャッシュ3718を使用してスレッド間で通信し、LSU3714を使用して、共有メモリ/L1キャッシュ3718及びメモリ・パーティション・ユニットを介してグローバル・メモリを読み取り、書き込む。少なくとも一実施例では、汎用並列計算向けに構成されるときには、SM3700は、DCP上で新規のワークを起動するためにスケジューラ・ユニット3704が使用できるコマンドを書き込む。
少なくとも一実施例では、PPUは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイスなどに含まれ、又はこれらに結合される。少なくとも一実施例では、PPUは、単一の半導体基板に具体化される。少なくとも一実施例では、PPUは、追加のPPU、メモリ、縮小命令セット・コンピュータ(「RISC」)CPU、メモリ管理ユニット(「MMU」)、デジタル-アナログ変換器(「DAC」:digital-to-analog converter)などの1つ又は複数の他のデバイスとともにシステム・オン・チップ(「SoC」)に含まれる。
少なくとも一実施例では、PPUは、1つ又は複数のメモリ・デバイスを含むグラフィックス・カードに含まれてもよい。少なくとも一実施例では、グラフィックス・カードは、デスクトップ・コンピュータのマザーボード上のPCIeスロットとインターフェースをとるように構成されてもよい。少なくとも一実施例では、PPUは、マザーボードのチップセットに含まれる統合グラフィックス・プロセッシング・ユニット(「iGPU」:integrated graphics processing unit)であってもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、図9A及び/又は図9Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、SM3700に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、SM3700は、別のプロセッサ若しくはシステムによって、又はSM3700によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、SM3700は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
医療用途における画像推論及び画像処理など、先進コンピューティングのための仮想化コンピューティング・プラットフォームに関する実施例が開示される。限定することなく、実施例は、放射線写真撮影、磁気共鳴撮像(MRI)、核医学、超音波、ソノグラフィ、エラストグラフィ、光音響撮像、トモグラフィ、心エコー、機能的近赤外分光法、及び磁性粒子撮像、又はこれらの組合せを含んでもよい。少なくとも一実施例では、本明細書に記載の仮想化コンピューティング・プラットフォーム、及び関連するプロセスは、限定することなく、法科学分析、表面下検出及び撮像(たとえば、石油探査、考古学、古生物学など)、地形学、海洋学、地質学、骨学、気象学、知能分野、又は物体追跡及び監視、センサ・データ処理(たとえば、RADAR、SONAR、LIDARなど)、並びに/又はゲノミクス及び遺伝子配列において、追加的又は代替的に使用されてもよい。
図38を参照すると、図38は、少なくとも一実施例による、画像処理及び推論のパイプラインを生成及び導入するプロセス3800の実例データ・フロー図である。少なくとも一実施例では、プロセス3800は、医療施設、病院、ヘルスケア機関、クリニック、リサーチ若しくは診断の研究所などの1つ又は複数の施設3802において、撮像デバイス、処理デバイス、ゲノミクス・デバイス、遺伝子配列デバイス、放射線デバイス、及び/又は他のタイプのデバイスとともに使用するために導入されてもよい。少なくとも一実施例では、プロセッサ3800は、シーケンシング・データについてゲノミクスの分析及び推論を実行するために導入されてもよい。本明細書に記載のシステム及びプロセスを使用して実行することができるゲノム分析の実例は、限定することなく、バリアント・コール、変異検出、及び遺伝子発現の定量化を含む。
少なくとも一実施例では、プロセス3800は、訓練システム3804内及び/又は導入システム3806内で実行されてもよい。少なくとも一実施例では、訓練システム3804を使用して、導入システム3806で使用するための機械学習モデル(たとえば、ニューラル・ネットワーク、物体検出アルゴリズム、コンピュータ・ビジョン・アルゴリズムなど)の訓練、導入、及び実装が実行されてもよい。少なくとも一実施例では、導入システム3806は、処理及び計算のリソースを分散コンピューティング環境間でオフロードするように構成されて、施設3802におけるインフラストラクチャ要件を低減してもよい。少なくとも一実施例では、導入システム3806は、施設3802において撮像デバイス(たとえば、MRI、CTスキャン、X線、超音波など)又はシーケンシング・デバイスとともに使用するための仮想機器を選択し、カスタマイズし、実装するための合理化されたプラットフォームを提供してもよい。少なくとも一実施例では、仮想機器は、撮像デバイス、シーケンシング・デバイス、放射線デバイス、及び/又は他のタイプのデバイスによって生成された撮像データに対して1つ又は複数の処理動作を実行するためのソフトウェア定義アプリケーションを含んでもよい。少なくとも一実施例では、パイプライン内の1つ又は複数のアプリケーションは、アプリケーションの実行中に導入システム3806のサービス(たとえば、推論、仮想化、計算、AIなど)を使用又はコールしてもよい。
少なくとも一実施例では、先進処理及び推論パイプラインで使用されるアプリケーションのいくつかは、1つ又は複数の処理ステップを実行するために機械学習モデル又は他のAIを使用してもよい。少なくとも一実施例では、機械学習モデルは、施設3802で生成された(且つ、施設3802において1つ若しくは複数の画像アーカイブ及び通信システム(PACS)サーバに記憶された)(撮像データなどの)データ3808を使用して、施設3802において訓練されてもよく、1つ又は複数の別の施設(たとえば、異なる病院、研究所、クリニックなど)からの撮像若しくはシーケンシングのデータ3808を使用して訓練されてもよく、又はそれらの組合せであってもよい。少なくとも一実施例では、訓練システム3804を使用して、導入システム3806向けの実用的で導入可能な機械学習モデルを生成するためのアプリケーション、サービス、及び/又は他のリソースが提供されてもよい。
少なくとも一実施例では、モデル・レジストリ3824は、バージョン管理及び物体メタデータをサポートすることができる物体ストレージによってバックアップされてもよい。少なくとも一実施例では、物体ストレージには、たとえば、クラウド・プラットフォーム内から、クラウド・ストレージ(たとえば、図39のクラウド3926)の互換性アプリケーション・プログラミング・インターフェース(API)を介してアクセス可能であってもよい。少なくとも一実施例では、モデル・レジストリ3824内の機械学習モデルは、システムの開発者又はパートナがAPIと対話することによって、アップロード、リスト化、修正、又は削除されてもよい。少なくとも一実施例では、APIは、適切な資格を有するユーザがモデルをアプリケーションに関連付けできるようにする方法へのアクセスを提供してもよく、それによりアプリケーションのコンテナ化されたインスタンスを実行することの一部として、モデルを実行できるようになる。
少なくとも一実施例では、訓練パイプライン3904(図39)は、施設3802が独自の機械学習モデルを訓練している状況、又は最適化若しくは更新される必要がある既存の機械学習モデルを有している状況を含んでもよい。少なくとも一実施例では、撮像デバイス、シーケンシング・デバイス、及び/又は他のタイプのデバイスによって生成された撮像データ3808が受信されてもよい。少なくとも一実施例では、撮像データ3808が受信されると、機械学習モデルのグラウンド・トゥルース・データとして使用されることになる撮像データ3808に対応するアノテーションの生成を支援するために、AI支援アノテーション3810が使用されてもよい。少なくとも一実施例では、AI支援アノテーション3810は、1つ又は複数の機械学習モデル(たとえば、畳み込みニューラル・ネットワーク(CNN))を含んでもよく、これは(たとえば特定のデバイスからの)特定のタイプの撮像データ3808、及び/又は撮像データ3808内の特定のタイプの異常に対応するアノテーションを生成するように訓練されてもよい。少なくとも一実施例では、次いでAI支援アノテーション3810は、グラウンド・トゥルース・データを生成するために直接使用されてもよく、又は(たとえば、研究者、臨床医、医師、科学者などによって)アノテーション・ツールを使用して調節若しくは微調整されてもよい。少なくとも一実施例では、いくつかの実例において、ラベル付けされたクリニック・データ3812(たとえば、臨床医、医師、科学者、技術者などによって提供されたアノテーション)が、機械学習モデルを訓練するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、AI支援アノテーション3810、ラベル付けされたクリニック・データ3812、又はこれらの組合せが、機械学習モデルを訓練するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、訓練済み機械学習モデルは出力モデル3816と呼ばれてもよく、本明細書に記載の導入システム3806によって使用されてもよい。
少なくとも一実施例では、訓練パイプライン3904(図39)は、施設3802が、導入システム3806内の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行する際に使用する機械学習モデルを必要としているが、施設3802は現在そのような機械学習モデルを有していないかもしれない(又はそうした目的のために最適化された、効率よい、若しくは有効なモデルを有していないかもしれない)という状況を含んでもよい。少なくとも一実施例では、既存の機械学習モデルが、モデル・レジストリ3824から選択されてもよい。少なくとも一実施例では、モデル・レジストリ3824は、撮像データに対して様々な異なる推論タスクを実行するように訓練された機械学習モデルを含んでもよい。少なくとも一実施例では、モデル・レジストリ3824の機械学習モデルは、施設3802とは異なる施設(たとえば、離れた場所にある施設)からの撮像データについて訓練されたものであってもよい。少なくとも一実施例では、機械学習モデルは、1つの場所、2つの場所、又は任意の数の場所からの撮像データについて訓練されたものであってもよい。少なくとも一実施例では、特定の場所からの撮像データについて訓練されるとき、訓練は、その場所で行われてもよく、又は少なくとも、撮像データの機密性を保護するようなやり方で、若しくは撮像データが構外へ転送されるのを制限するようなやり方で(たとえば、HIPPA規定、プライバシー規定に準拠するように)行われてもよい。少なくとも一実施例では、1つの場所においてモデルが訓練されると、又は部分的に訓練されると、機械学習モデルはモデル・レジストリ3824に加えられてもよい。少なくとも一実施例では、次いで機械学習モデルは、任意の数の他の施設において再訓練又は更新されてもよく、再訓練又は更新されたモデルが、モデル・レジストリ3824において利用可能にされてもよい。少なくとも一実施例では、次いで機械学習モデルは、モデル・レジストリ3824から選択されてもよく、出力モデル3816と呼ばれてもよく、導入システム3806において使用されて、導入システムの1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行してもよい。
少なくとも一実施例では、訓練パイプライン3904(図39)は、施設3802が、導入システム3806内の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行する際に使用する機械学習モデルを必要としているが、施設3802は現在そのような機械学習モデルを有していないかもしれない(又はそうした目的のために最適化された、効率よい、若しくは有効なモデルを有していないかもしれない)という状況を含むシナリオで使用することができる。少なくとも一実施例では、モデル・レジストリ3824から選択された機械学習モデルは、母集団、遺伝的差異、機械学習モデルを訓練するために使用される訓練データの頑健性、訓練データの異常の多様性、及び/又は訓練データに伴う他の問題に違いがあることから、施設3802において生成される撮像データ3808向けに微調整又は最適化されていないことがある。少なくとも一実施例では、機械学習モデルを再訓練又は更新するためのグラウンド・トゥルース・データとして使用されることになる撮像データ3808に対応するアノテーションの生成を支援するために、AI支援アノテーション3810が使用されてもよい。少なくとも一実施例では、ラベル付けされたクリニック・データ3812(たとえば、臨床医、医師、科学者、技術者などによって提供されたアノテーション)が、機械学習モデルを訓練するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、機械学習モデルを再訓練又は更新することは、モデル訓練3814と呼ばれてもよい。少なくとも一実施例では、モデル訓練3814、たとえばAI支援アノテーション3810、ラベル付けされたクリニック・データ3812、又はこれらの組合せは、機械学習モデルを再訓練若しくは更新するためのグラウンド・トゥルース・データとして使用されてもよい。
少なくとも一実施例では、導入システム3806は、ソフトウェア3818、サービス3820、ハードウェア3822、並びに/又は他の構成要素、特徴、及び機能を含んでもよい。少なくとも一実施例では、導入システム3806は、ソフトウェア「スタック」を含んでもよく、それによりソフトウェア3818は、サービス3820の上に構築されてもよく、サービス3820を使用して一部若しくはすべての処理タスクを実行してもよく、サービス3820及びソフトウェア3818は、ハードウェア3822の上に構築され、ハードウェア3822を使用して、導入システム3806の処理、ストレージ、及び/又は他の計算のタスクを実行してもよい。
少なくとも一実施例では、ソフトウェア3818は、任意の数の異なるコンテナを含んでもよく、ここで各コンテナは、アプリケーションのインスタンス化を実行してもよい。少なくとも一実施例では、各アプリケーションは、先進処理及び推論パイプラインの1つ又は複数の処理タスク(たとえば、推論、物体検出、特徴検出、セグメント化、画像強調、キャリブレーションなど)を実行してもよい。少なくとも一実施例では、撮像デバイス(たとえば、CT、MRI、X線、超音波、ソノグラフィ、心エコーなど)、シーケンシング・デバイス、放射線デバイス、ゲノミクス・デバイスなどのタイプごとに、デバイスによって生成された撮像データ3808(又は、本明細書に記載のものなどの他のタイプのデータ)に対してデータ処理タスクを実行できる任意の数のコンテナが存在してもよい。少なくとも一実施例では、先進処理及び推論パイプラインは、(たとえば、医用におけるデジタル画像と通信(digital imaging and communications in medicine:DICOM)データ、放射線医学情報システム(RIS)データ、臨床情報システム(CIS)データ、リモート・プロシージャ・コール(RPC)データ、表現状態転送(REST)インターフェースに実質的に準拠したデータ、ファイルベースのインターフェースに実質的に準拠したデータ、及び/又は生のデータなどの使用可能なタイプのデータに出力を再変換して、施設3802において記憶及び表示するように)パイプラインを通して処理した後に、各コンテナによって使用される、且つ/又は施設3802によって使用される撮像データを受信及び構成するコンテナに加えて、撮像データ3808を処理するのに所望される又は必要とされる異なるコンテナの選択に基づき定義されてもよい。少なくとも一実施例では、(たとえばパイプラインを構成する)ソフトウェア3818内のコンテナの組合せは、(本明細書においてより詳細に記載する)仮想機器と呼ばれてもよく、仮想機器は、サービス3820及びハードウェア3822を利用して、コンテナにおいてインスタンス化されたアプリケーションの一部又はすべての処理タスクを実行してもよい。
少なくとも一実施例では、データ処理パイプラインは、推論要求(たとえば、臨床医、医師、放射線医など、導入システム3806のユーザからの要求)に応答して、DICOM、RIS、CIS、REST準拠、RPC、生、及び/又は他のフォーマットで入力データ(たとえば、撮像データ3808)を受け取ってもよい。少なくとも一実施例では、入力データは、1つ又は複数の撮像デバイス、シーケンシング・デバイス、放射線デバイス、ゲノミクス・デバイス、及び/又は他のタイプのデバイスによって生成される1つ又は複数の画像、ビデオ、及び/又は他のデータ表現を表してもよい。少なくとも一実施例では、データは、データ処理パイプラインの一部としての事前処理を受けて、1つ又は複数のアプリケーションによって処理できるようにデータが準備されてもよい。少なくとも一実施例では、パイプラインの1つ若しくは複数の推論タスク又は他の処理タスクの出力に対して後処理が実行されて、次のアプリケーション用に出力データが準備されてもよく、且つ/又は送信及び/若しくはユーザによる使用のために(たとえば、推論要求への応答として)出力データが準備されてもよい。少なくとも一実施例では、推論タスクは、訓練済み若しくは導入済みのニューラル・ネットワークなど、1つ又は複数の機械学習モデルによって実行されてもよく、このモデルは、訓練システム3804の出力モデル3816を含んでもよい。
少なくとも一実施例では、データ処理パイプラインのタスクはコンテナにカプセル化されてもよく、コンテナはそれぞれ、アプリケーションの個別の完全に機能的なインスタンス化、及び機械学習モデルを参照できる仮想化コンピューティング環境を表す少なくとも一実施例では、コンテナ又はアプリケーションは、(本明細書においてより詳細に記載する)コンテナ・レジストリのプライベート(たとえば、アクセスの制限された)区域に発行されてもよく、訓練済み又は導入済みのモデルは、モデル・レジストリ3824に記憶され、1つ又は複数のアプリケーションに関連付けられてもよい。少なくとも一実施例では、アプリケーションの画像(たとえば、コンテナの画像)は、コンテナ・レジストリにおいて入手可能であってもよく、パイプラインに導入するためにユーザによってコンテナ・レジストリから選択されると、画像は、ユーザのシステムで使用できるようにアプリケーションをインスタンス化するためのコンテナを生成するために使用されてもよい。
少なくとも一実施例では、開発者(たとえば、ソフトウェア開発者、臨床医、医師など)は、供給されたデータに対して画像処理及び/又は推論を実行するために、アプリケーションを(たとえばコンテナとして)開発、公開、及び記憶してもよい。少なくとも一実施例では、開発、公開、及び/又は記憶は、(たとえば、開発されたアプリケーション及び/又はコンテナが、確実にシステムに準拠するように、又はシステムと互換性があるようにするために)システムに関連付けられたソフトウェア開発キット(SDK)を使用して実行されてもよい。少なくとも一実施例では、開発されたアプリケーションは、システム(たとえば図39のシステム3900)としてサービス3820の少なくとも一部をサポートすることができるSDKを用いて、ローカルに(たとえば第1の施設において、第1の施設からのデータについて)テストされてもよい。少なくとも一実施例では、DICOM物体は、1個から数百個にわたる画像又は他のタイプのデータをどこにでも含むことができるうえに、データのバリエーションがあることから、開発者は、入力されるDICOMデータの抽出及び準備を管理する(たとえば、アプリケーション用の構成を設定する、事前処理をアプリケーションに構築するなどの)責任を負うことがある。少なくとも一実施例では、システム3900によって(たとえば、精度、安全性、患者のプライバシーなどが)検証されると、アプリケーションは、ユーザ(たとえば、病院、クリニック、研究所、ヘルスケア提供者など)によって選択及び/又は実装できるようにコンテナ・レジストリにおいて利用可能にされて、ユーザの施設(たとえば、第2の施設)におけるデータに対して1つ又は複数の処理タスクが実行されてもよい。
少なくとも一実施例では、次いで開発者は、アプリケーション又はコンテナを、システム(たとえば、図39のシステム3900)のユーザによってアクセス及び使用できるようにネットワークを通して共有してもよい。少なくとも一実施例では、完成し検証されたアプリケーション又はコンテナは、コンテナ・レジストリに記憶されてもよく、関連する機械学習モデルは、モデル・レジストリ3824に記憶されてもよい。少なくとも一実施例では、推論又は画像処理の要求を出す要求元エンティティ(たとえば、医療施設のユーザ)は、コンテナ・レジストリ及び/又はモデル・レジストリ3824をブラウジングしてアプリケーション、コンテナ、データセット、機械学習モデルなどを探し、データ処理パイプラインに含めるための要素の所望の組合せを選択し、撮像処理要求を送出してもよい。少なくとも一実施例では、要求は、要求を実行するために必要な入力データ(及びいくつかの実例では、関連する患者データ)を含んでもよく、且つ/又は要求を処理する際に実行されることになるアプリケーション及び/又は機械学習モデルの選択を含んでもよい。少なくとも一実施例では、次いで要求は、導入システム3806(たとえばクラウド)の1つ又は複数の構成要素に渡されて、データ処理パイプラインの処理が実行されてもよい。少なくとも一実施例では、導入システム3806による処理は、コンテナ・レジストリ及び/又はモデル・レジストリ3824から選択された要素(たとえば、アプリケーション、コンテナ、モデルなど)を参照することを含んでもよい。少なくとも一実施例では、パイプラインによって結果が生成されると、結果がユーザに返されて参照されてもよい(たとえば、ローカルで、構内のワークステーション又は端末で実行している視聴アプリケーション・スイートで視聴されてもよい)。少なくとも一実施例では、放射線医は、任意の数のアプリケーション及び/又はコンテナを含むデータ処理パイプラインから結果を受信してもよく、ここで結果は、X線、CTスキャン、MRIなどにおける異常検出を含んでもよい。
少なくとも一実施例では、パイプラインにおけるアプリケーション又はコンテナの処理又は実行を支援するために、サービス3820が利用されてもよい。少なくとも一実施例では、サービス3820は、計算サービス、人工知能(AI)サービス、視覚化サービス、及び/又は他のタイプのサービスを含んでもよい。少なくとも一実施例では、サービス3820は、ソフトウェア3818の1つ又は複数のアプリケーションに共通の機能を提供してもよく、それにより機能は、アプリケーションによってコール又は利用されることが可能なサービスに対して抽象化されてもよい。少なくとも一実施例では、サービス3820によって提供される機能は、動的でより効率的に実行されてもよく、それと同時に、(たとえば、並列コンピューティング・プラットフォーム3930(図39)を使用して)アプリケーションが並列にデータを処理できるようにすることにより、良好にスケーリングされてもよい。少なくとも一実施例では、サービス3820により提供される同じ機能を共有する各アプリケーションに、サービス3820のそれぞれのインスタンスを有するよう要求するのではなく、サービス3820が、様々なアプリケーション間で共有されてもよい。少なくとも一実施例では、サービスは、非限定的な実例として、検出又はセグメント化のタスクを実行するために使用されてもよい推論のサーバ又はエンジンを含んでもよい。少なくとも一実施例では、機械学習モデルの訓練及び/又は再訓練の機能を提供することができるモデル訓練サービスが含まれてもよい。少なくとも一実施例では、GPU加速化データ(たとえば、DICOM、RIS、CIS、REST準拠、RPC、生など)の抽出、リサイズ、スケーリング、及び/又は他の拡張を提供することができるデータ拡張サービスがさらに含まれてもよい。少なくとも一実施例では、レイ・トレーシング、ラスタ化、ノイズ除去、鮮鋭化などの画像レンダリング効果を加えることができる視覚化サービスが使用されて、2次元(2D)及び/又は3次元(3D)のモデルにリアル感が付加されてもよい。少なくとも一実施例では、仮想機器のパイプライン内の他のアプリケーションについてビーム形成、セグメント化、推論、撮像、及び/又はサポートを実現する仮想機器サービスが含まれてもよい。
少なくとも一実施例では、サービス3820がAIサービス(たとえば、推論サービス)を含む場合、異常検出(たとえば、腫瘍、発育異常、瘢痕化など)のためのアプリケーションに関連付けられた1つ又は複数の機械学習モデルは、機械学習モデル、又はその処理を、アプリケーション実行の一部として実行するように推論サービス(たとえば、推論サーバ)に(APIコールとして)コールすることによって、実行されてもよい。少なくとも一実施例では、セグメント化タスクのための1つ又は複数の機械学習モデルを別のアプリケーションが含む場合、セグメント化タスクに関連付けられた処理動作のうちの1つ又は複数を実行するための機械学習モデルを実行するように、アプリケーションは推論サービスをコールしてもよい。少なくとも一実施例では、セグメント化アプリケーション及び異常検出アプリケーションを含む先進処理及び推論パイプラインを実装するソフトウェア3818は、1つ又は複数の推論タスクを実行するためにそれぞれのアプリケーションが同じ推論サービスをコールすることがあるので、合理化されてもよい。
少なくとも一実施例では、ハードウェア3822は、GPU、CPU、グラフィックス・カード、AI/深層学習システム(たとえば、NVIDIAのDGXスーパーコンピュータ・システムなどのAIスーパーコンピュータ)、クラウド・プラットフォーム、又はそれらの組合せを含んでもよい。少なくとも一実施例では、異なるタイプのハードウェア3822を使用して、導入システム3806のソフトウェア3818及びサービス3820のための効率的で専用のサポートが提供されてもよい。少なくとも一実施例では、画像処理、画像再構築、セグメント化、MRI検査、脳卒中又は心臓発作の(たとえばリアルタイムの)検出、レンダリングの画像品質などの効率、精度、及び有効性を向上させるために、AI/深層学習システム内、クラウド・システム、及び/又は導入システム3806の他の処理構成要素において、ローカルで(たとえば、施設3802で)処理を行うためのGPU処理の使用が実装されてもよい。少なくとも一実施例では、施設は、撮像デバイス、ゲノミクス・デバイス、シーケンシング・デバイス、及び/又は他のタイプのデバイスを構内に含んでもよく、これらは、GPUを利用して、対象者の解剖学的組織を表す撮像データを生成してもよい。
少なくとも一実施例では、ソフトウェア3818及び/又はサービス3820は、非限定的な実例として深層学習、機械学習、及び/又は高性能コンピューティングに関するGPU処理のために最適化されてもよい。少なくとも一実施例では、導入システム3806及び/又は訓練システム3804のコンピューティング環境のうちの少なくとも一部は、データセンタの1つ若しくは複数のスーパーコンピュータ、又は高性能コンピューティング・システムにおいて、GPU最適化ソフトウェア(たとえば、NVIDIAのDGXシステムのハードウェアとソフトウェアの組合せ)を用いて実行されてもよい。少なくとも一実施例では、データセンサは、HIPAAの条項に準拠してもよく、したがって、撮像データ及び/又は他の患者データの受信、処理、及び送信は、患者データのプライバシーに関して安全に取り扱われる。少なくとも一実施例では、ハードウェア3822は、任意の数のGPUを含んでもよく、これらのGPUは、本明細書に記載するように、データの並列処理を実行するためにコールされてもよい。少なくとも一実施例では、クラウド・プラットフォームはさらに、深層学習タスク、機械学習タスク、又は他のコンピューティング・タスクのGPU最適化された実行のためのGPU処理を含んでもよい。少なくとも一実施例では、クラウド・プラットフォーム(たとえば、NVIDIAのNGC)は、(たとえば、NVIDIAのDGXシステムによって提供される)AI/深層学習スーパーコンピュータ、及び/又はGPU最適化ソフトウェアをハードウェア抽象化及びスケーリングのプラットフォームとして使用して、実行されてもよい。少なくとも一実施例では、クラウド・プラットフォームは、シームレスなスケーリング及びロード・バランシングを可能にするために、複数のGPUに対するアプリケーション・コンテナ・クラスタリング・システム又はオーケストレーション・システム(たとえば、KUBERNETES)を統合してもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図39は、少なくとも一実施例による撮像導入パイプラインを生成及び導入するための実例システム3900を示すシステム図である。少なくとも一実施例では、システム3900は、図38のプロセス3800、及び/又は先進処理及び推論パイプラインを含む他のプロセスを実装するために使用されてもよい。少なくとも一実施例では、システム3900は、訓練システム3804及び導入システム3806を含んでもよい。少なくとも一実施例では、訓練システム3804及び導入システム3806は、本明細書に記載するように、ソフトウェア3818、サービス3820、及び/又はハードウェア3822を使用して実装されてもよい。
少なくとも一実施例では、システム3900(たとえば、訓練システム3804及び/又は導入システム3806)は、クラウド・コンピューティング環境(たとえば、クラウド3926)において実装されてもよい。少なくとも一実施例では、システム3900は、ヘルスケア・サービス施設に関してローカルに実装されてもよく、又はクラウドとローカル・コンピューティング・リソースとの組合せとして実装されてもよい。少なくとも一実施例では、クラウド・コンピューティングが実装される実施例では、HIPAA並びに/又は他のデータ取扱い及びプライバシーの規定若しくは法律に準拠していない処理を提供するシステム3900の1つ又は複数の構成要素から、患者データは分離されてもよく、又はそれらによって処理されなくてもよい。少なくとも一実施例では、クラウド3926のAPIへのアクセスは、制定されたセキュリティ対策又はプロトコルを介して許可されたユーザに限定されてもよい。少なくとも一実施例では、セキュリティ・プロトコルはウェブ・トークンを含んでもよく、このウェブ・トークンは、認証(たとえば、AuthN、AuthZ、Glueconなど)のサービスによって署名されてもよく、適切な許可を持っていてもよい。少なくとも一実施例では、(本明細書に記載の)仮想機器のAPI、又はシステム3900の他のインスタンス化は、対話について検査済み又は許可済みのパブリックIPのセットに限定されてもよい。
少なくとも一実施例では、システム3900の様々な構成要素は、有線及び/又は無線の通信プロトコルを介して、ローカル・エリア・ネットワーク(LAN)及び/又は広域ネットワーク(WAN)を含むがこれらに限定されない様々な異なるタイプのネットワークのうちの任意のものを使用して、相互に通信してもよい。少なくとも一実施例では、(たとえば推論要求を送信するため、推論要求の結果を受信するためなど)施設とシステム3900の構成要素との間の通信は、1つ又は複数のデータ・バス、無線データ・プロトコル(Wi-Fi)、有線データ・プロトコル(たとえば、イーサネット(登録商標))などを介して通信されてもよい。
少なくとも一実施例では、訓練システム3804は、図38に関して本明細書に記載したものと同様の訓練パイプライン3904を実行してもよい。少なくとも一実施例では、1つ又は複数の機械学習モデルが導入システム3806により導入パイプライン3910において使用されることになる場合、訓練パイプライン3904を使用して、1つ又は複数の(たとえば、事前訓練された)モデルが訓練若しくは再訓練されてもよく、且つ/又は事前訓練されたモデル3906のうちの1つ又は複数が(たとえば再訓練若しくは更新を必要とせずに)実装されてもよい。少なくとも一実施例では、訓練パイプライン3904の結果として、出力モデル3816が生成されてもよい。少なくとも一実施例では、訓練パイプライン3904は、(たとえばDICOM画像を、それぞれの機械学習モデルによって処理するのに適した別のフォーマット、たとえばNeuroimaging Informatics Technology Initiative(NIfTI)フォーマットなどに変換するためのDICOMアダプタ3902Aを使用した)撮像データ(若しくは他の入力データ)の変換若しくは適合、AI支援アノテーション3810、ラベル付きクリニック・データ3812を生成するための撮像データ3808のラベル付け又はアノテーション付け、モデル・レジストリからのモデル選択、モデル訓練3814、モデルの訓練、再訓練、若しくは更新、及び/又は他の処理ステップなどであるがこれらに限定されない任意の数の処理ステップを含んでもよい。少なくとも一実施例では、導入システム3806によって使用される異なる機械学習モデルについて、異なる訓練パイプライン3904が使用されてもよい。少なくとも一実施例では、図38に関して記載した第1の実例と同様の訓練パイプライン3904は、第1の機械学習モデルに使用されてもよく、図38に関して記載した第2の実例と同様の訓練パイプライン3904は、第2の機械学習モデルに使用されてもよく、図38に関して記載した第3の実例と同様の訓練パイプライン3904は、第3の機械学習モデルに使用されてもよい。少なくとも一実施例では、それぞれの各機械学習モデルに要求されるものに応じて、訓練システム3804内のタスクの任意の組合せが使用されてもよい。少なくとも一実施例では、機械学習モデルのうちの1つ又は複数は、すでに訓練済みで導入の準備が整っていてもよく、それにより機械学習モデルは、訓練システム3804によるいかなる処理も受けなくてもよく、導入システム3806によって実装されてもよい。
少なくとも一実施例では、出力モデル3816及び/又は事前訓練されたモデル3906は、実装形態又は実施例に応じて任意のタイプの機械学習モデルを含んでもよい。少なくとも一実施例では、限定することなく、システム3900によって使用される機械学習モデルは、線形回帰、ロジスティック回帰、決定木、サポート・ベクター・マシン(SVM)、ナイーブ・ベイズ、k近傍法(k-nearest neighbor:Knn)、k平均クラスタリング、ランダム・フォレスト、次元縮小アルゴリズム、勾配ブースティング・アルゴリズム、ニューラル・ネットワーク(たとえば、オート・エンコーダ、畳み込み、再帰、パーセプトロン、長/短期メモリ(LSTM)、ホップフィールド、ボルツマン、ディープ・ビリーフ、逆畳み込み、敵対的生成、液体状態マシンなど)を使用する機械学習モデル、及び/又は他のタイプの機械学習モデルを含んでもよい。
少なくとも一実施例では、訓練パイプライン3904は、少なくとも図42Bに関して、より詳細に本明細書に記載するAI支援アノテーションを含んでもよい。少なくとも一実施例では、ラベル付きクリニック・データ3812(たとえば、従来のアノテーション)は、任意の数の技法によって生成されてもよい。少なくとも一実施例では、ラベル又は他のアノテーションは、描画プログラム(たとえば、アノテーション・プログラム)、コンピュータ支援設計(CAD)プログラム、ラベル付けプログラム、グラウンド・トゥルース用のアノテーション若しくはラベルの生成に適した別のタイプのプログラム内で生成されてもよく、且つ/又はいくつかの実例では、手書きされてもよい。少なくとも一実施例では、グラウンド・トゥルース・データは、合成により生成されてもよく(たとえば、コンピュータ・モデル又はレンダリングから生成されてもよく)、現実的に生成されてもよく(たとえば、実世界のデータから設計及び生成されてもよく)、機械自動化されてもよく(たとえば、特徴の分析及び学習を使用して、データから特徴を抽出し、次いでラベルを生成してもよく)、人間によりアノテーション付けされてもよく(たとえば、ラベラ、又はアノテーション専門家がラベルのロケーションを定義してもよく)、且つ/又はこれらの組合せであってもよい。少なくとも一実施例では、撮像データ3808のインスタンス(又は機械学習モデルによって使用される他のタイプのデータ)ごとに、訓練システム3804によって生成される対応するグラウンド・トゥルース・データが存在してもよい。少なくとも一実施例では、訓練パイプライン3904に含まれるAI支援アノテーションに加えて又はその代わりに、導入パイプライン3910の一部としてAI支援アノテーションが実行されてもよい。少なくとも一実施例では、システム3900は多層プラットフォームを含んでもよく、このプラットフォームは、1つ又は複数の医療用撮像及び診断の機能を実行することができる診断アプリケーション(又は他のタイプのアプリケーション)のソフトウェア層(たとえば、ソフトウェア3818)を含んでもよい。少なくとも一実施例では、システム3900は、1つ又は複数の施設のPACSサーバ・ネットワークに、(たとえば、暗号化リンクを介して)通信可能に結合されてもよい。少なくとも一実施例では、システム3900は、PACSサーバからのデータ(たとえば、DICOMデータ、RISデータ、生データ、CISデータ、REST準拠データ、RPCデータ、生データなど)に(たとえば、DICOMアダプタ3902、又はRIS、CIS、REST準拠、RPC、生など別のタイプのデータ・アダプタを介して)アクセスし、それを参照するように構成されて、機械学習モデルの訓練、機械学習モデルの導入、画像処理、推論、及び/又は他の動作などの動作を実行してもよい。
少なくとも一実施例では、ソフトウェア層は、セキュアな、暗号化された、且つ/又は認証されたAPIとして実装されてもよく、これを介して、アプリケーション又はコンテナが、外部環境(たとえば、施設3802)から呼び出し(たとえばコール)されてもよい。少なくとも一実施例では、次いでアプリケーションは、それぞれのアプリケーションに関連付けられた計算、AI、又は視覚化のタスクを実行するために1つ又は複数のサービス3820をコール又は実行してもよく、ソフトウェア3818及び/又はサービス3820は、ハードウェア3822を利用して、処理タスクを有効且つ効率的なやり方で実行してもよい。
少なくとも一実施例では、導入システム3806は、導入パイプライン3910を実行してもよい。少なくとも一実施例では、導入パイプライン3910は任意の数のアプリケーションを含んでもよく、これらは、上に記載のAI支援アノテーションを含め、撮像デバイス、シーケンシング・デバイス、ゲノミクス・デバイスなどによって生成された撮像データ(及び/又は他のタイプのデータ)に連続的に、非連続的に、又は他のやり方で適用されてもよい。少なくとも一実施例では、本明細書に記載するように、個々のデバイス用の導入パイプライン3910は、デバイス用の仮想機器(たとえば、仮想超音波機器、仮想CTスキャン機器、仮想シーケンシング機器など)と呼ばれてもよい。少なくとも一実施例では、デバイスによって生成されるデータに必要な情報に応じて、1つのデバイスにつき2つ以上の導入パイプライン3910が存在してもよい。少なくとも一実施例では、異常検出がMRIマシンに必要とされる場合、第1の導入パイプライン3910が存在してもよく、画像強調がMRIマシンの出力に必要とされる場合、第2の導入パイプライン3910が存在してもよい。
少なくとも一実施例では、導入パイプライン3910にとって利用可能なアプリケーションは、デバイスからの撮像データ又は他のデータに対して処理タスクを実行するために使用することができる任意のアプリケーションを含んでもよい。少なくとも一実施例では、画像強調、セグメント化、再構築、異常検出、物体検出、特徴検出、処置計画、線量測定、ビーム計画(又は他の放射線処置手順)、及び/又は他の分析、画像処理、又は推論のタスクを、異なるアプリケーションが担当してもよい。少なくとも一実施例では、導入システム3806は、それぞれのアプリケーションの構造を定義してもよく、それにより導入システム3806のユーザ(たとえば、医療施設、研修所、クリニックなど)は、構造を理解し、自らのそれぞれの施設内で実装できるようにアプリケーションを適応させてもよい。少なくとも一実施例では、導入パイプライン3910に含めるために、画像再構築用のアプリケーションが選択されてもよいが、撮像デバイスによって生成されるデータのタイプは、アプリケーション内で使用されるデータのタイプとは異なってもよい。少なくとも一実施例では、DICOMアダプタ3902B(及び/又はDICOMリーダ)は、又は別のタイプのデータ・アダプタ若しくはリーダ(たとえば、RIS、CIS、REST準拠、RPC、生など)が導入パイプライン3910内で使用されて、導入システム3806内のアプリケーションによって使用可能な形にデータを変換してもよい。少なくとも一実施例では、DICOM、RIS、CIS、REST準拠、RPC、生、及び/又は他のタイプのデータ・ライブラリへのアクセスは、データに対する任意の畳み込み、色補正、鮮明度、ガンマ、及び/又は他の拡張を、デコード、抽出、及び/又は実行することを含め、累積され、事前処理されてもよい。少なくとも一実施例では、DICOM、RIS、CIS、REST準拠、RPC、及び/又は生データは、順序なしであってもよく、収集されたデータを整理しソートするために、事前パスが実行されてもよい。少なくとも一実施例では、様々なアプリケーションは共通の画像動作を共有することがあるので、いくつかの実施例では、(たとえば、サービス3820の1つとして)データ拡張ライブラリを使用して、これらの動作が加速化されてもよい。少なくとも一実施例では、CPU処理に依存する従来の処理手法のボトルネックを回避するために、並列コンピューティング・プラットフォーム3930を使用して、これらの処理タスクがGPU加速化されてもよい。
少なくとも一実施例では、画像再構築アプリケーションは、機械学習モデルの使用を含む処理タスクを含んでもよい。少なくとも一実施例では、ユーザは、独自の機械学習モデルを使用すること、又はモデル・レジストリ3824から機械学習モデルを選択することを望む場合がある。少なくとも一実施例では、ユーザは、処理タスクを実行するために、独自の機械学習モデルを実装してもよく、又は機械学習モデルを選択してアプリケーションに含めてもよい。少なくとも一実施例では、アプリケーションは選択可能及びカスタマイズ可能であってもよく、アプリケーションの構造を定義することにより、特定のユーザ向けのアプリケーションの導入及び実装が、よりシームレスなユーザ・エクスペリエンスとして提示される。少なくとも一実施例では、システム3900の他の特徴、たとえばサービス3820及びハードウェア3822などを利用することにより、導入パイプライン3910は、さらによりユーザ・フレンドリになることができ、より容易な統合を実現でき、より正確で、効率的で、タイムリーな結果を生み出すことができる。
少なくとも一実施例では、導入システム3806はユーザ・インターフェース3914(たとえば、グラフィカル・ユーザ・インターフェース、ウェブ・インターフェースなど)を含んでもよく、これらは、アプリケーションを選択して導入パイプライン3910に含める、アプリケーションを構成する、アプリケーション又はそのパラメータ若しくは構造を修正又は変更する、セットアップ及び/又は導入中に導入パイプライン3910を使用しそれと対話する、且つ/又は他のやり方で導入システム3806と対話するために使用されてもよい。少なくとも一実施例では、訓練システム3804に関して図示されていないが、ユーザ・インターフェース3914(又は異なるユーザ・インターフェース)は、導入システム3806で使用するモデルを選択するため、訓練システム3804において訓練若しくは再訓練するモデルを選択するため、且つ/又は他のやり方で訓練システム3804と対話するために使用されてもよい。
少なくとも一実施例では、アプリケーション・オーケストレーション・システム3928に加えてパイプライン・マネージャ3912を使用して、導入パイプライン3910のアプリケーション又はコンテナと、サービス3820及び/又はハードウェア3822との間で対話が管理されてもよい。少なくとも一実施例では、パイプライン・マネージャ3912は、アプリケーションからアプリケーションへの対話、アプリケーションからサービス3820への対話、及び/又はアプリケーション若しくはサービスからハードウェア3822への対話を容易にするように構成されてもよい。少なくとも一実施例では、ソフトウェア3818に含まれるように図示してあるが、これは限定を意図しておらず、(たとえば、図40に示すものなど)いくつかの事例では、パイプライン・マネージャ3912は、サービス3820に含まれてもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム3928(たとえば、Kubernetes、DOCKERなど)は、コンテナ・オーケストレーション・システムを含んでもよく、このシステムは、アプリケーションを、調整、管理、スケーリング、及び導入のための論理ユニットとして、コンテナにグループ化することができる。少なくとも一実施例では、導入パイプライン3910からのアプリケーション(たとえば、再構築アプリケーション、セグメント化アプリケーションなど)を個々のコンテナに関連付けることより、各アプリケーションは自己完結型環境内(たとえば、カーネル・レベル)で実行して、スピード及び効率を向上させることができる。
少なくとも一実施例では、各アプリケーション及び/又はコンテナ(又はその画像)は、個々に開発、修正、及び導入されてもよく(たとえば、第1のユーザ又は開発者が、第1のアプリケーションを開発、修正、及び導入し、第2のユーザ又は開発者が、第1のユーザ又は開発者とは別に第2のアプリケーションを開発、修正、及び導入してもよく)、これにより、別のアプリケーション又はコンテナのタスクに邪魔されることなく、1つのアプリケーション及び/又はコンテナのタスクに集中し、注意を払うことが可能になる。少なくとも一実施例では、異なるコンテナ間又はアプリケーション間の通信、及び協調が、パイプライン・マネージャ3912及びアプリケーション・オーケストレーション・システム3928によって支援されてもよい。少なくとも一実施例では、各コンテナ又はアプリケーションの予測される入力及び/又は出力が、(たとえば、アプリケーション又はコンテナの構造に基づき)システムによって知られている限り、アプリケーション・オーケストレーション・システム3928及び/又はパイプライン・マネージャ3912は、アプリケーション又はコンテナのそれぞれ間の通信、及びそれらの間でのリソースの共有を容易にすることができる。少なくとも一実施例では、導入パイプライン3910のアプリケーション又はコンテナのうちの1つ又は複数は、同じサービス及びリソースを共有することができるので、アプリケーション・オーケストレーション・システム3928は、様々なアプリケーション間又はコンテナ間でサービス又はリソースをオーケストレートし、ロード・バランシングを行い、共有を決定してもよい。少なくとも一実施例では、スケジューラを使用して、アプリケーション又はコンテナのリソース要件、これらのリソースの現在の使用量又は計画された使用量、及びリソースの利用可能性が追跡されてもよい。少なくとも一実施例では、こうしてスケジューラは、異なるアプリケーションにリソースを配分し、システムの要件及び利用可能性を考慮してアプリケーション間でリソースを分配してもよい。いくつかの実例では、スケジューラ(及び/又はアプリケーション・オーケストレーション・システム3928の他の構成要素)は、サービスの品質(QoS)、(たとえば、リアルタイム処理を実行するか、遅延処理を実行するかを決定するための)データ出力を必要とする緊急度など、システムに課される制約(たとえば、ユーザ制約)に基づき、リソースの利用可能性及び分配を決定してもよい。
少なくとも一実施例では、導入システム3806のアプリケーション又はコンテナによって利用及び共有されるサービス3820は、計算サービス3916、AIサービス3918、視覚化サービス3920、及び/又は他のタイプのサービスを含んでもよい。少なくとも一実施例では、アプリケーションは、サービス3820のうちの1つ又は複数をコール(たとえば実行)して、アプリケーションのための処理動作を実行してもよい。少なくとも一実施例では、計算サービス3916は、スーパーコンピューティング又は他の高性能コンピューティング(HPC)のタスクを実行するために、アプリケーションによって利用されてもよい。少なくとも一実施例では、アプリケーションのうちの1つ又は複数を介してデータを実質的に同時に処理するため、且つ/又は1つのアプリケーションの1つ又は複数のタスクを実質的に同時に処理するために、計算サービス3916を利用して(たとえば、並列コンピューティング・プラットフォーム3930を使用して)並列処理が実行されてもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム3930(たとえば、NVIDIAのCUDA)は、GPU(たとえば、GPU3922)上での汎用コンピューティング(GPGPU)を可能にしてもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム3930のソフトウェア層は、計算カーネルを実行するために仮想命令セット及びGPUの並列計算要素へのアクセスを提供してもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム3930はメモリを含んでもよく、いくつかの実施例では、メモリは、複数のコンテナ間で、且つ/又は1つのコンテナ内の異なる処理タスク間で共有されてもよい。 少なくとも一実施例では、複数のコンテナ、及び/又はコンテナ内の複数のプロセスが、並列コンピューティング・プラットフォーム3930のメモリの共有セグメントからの同じデータを使用するために(たとえば、アプリケーションの複数の異なるステージ、又は複数のアプリケーションが、同じ情報を処理する場合)、プロセス間通信(IPC)コールが生成されてもよい。少なくとも一実施例では、データのコピーを作成し、データをメモリの異なるロケーションに移動(たとえば、読取り/書込みの動作)させるのではなく、メモリの同じロケーションの同じデータが、任意の数の処理タスクに(たとえば、同じ時間、異なる時間などに)使用されてもよい。少なくとも一実施例では、データが使用されて、処理の結果として新規データが生成されるとき、データの新規ロケーションのこの情報は、様々なアプリケーションに記憶され、それらの間で共有されてもよい。少なくとも一実施例では、データのロケーション及び更新済み又は修正済みのデータのロケーションは、コンテナ内でペイロードがどのように理解されるかという定義の一部であってもよい。
少なくとも一実施例では、AIサービス3918は、アプリケーションに関連付けられた(たとえば、アプリケーションの1つ又は複数の処理タスクを実行する役割を課された)機械学習モデルを実行するための推論サービスを実行するために利用されてもよい少なくとも一実施例では、AIサービス3918は、セグメント化、再構築、物体検出、特徴検出、分類、及び/又は他の推論タスクのための機械学習モデル(たとえば、CNNなどのニューラル・ネットワーク)を実行するために、AIシステム3924を利用してもよい。少なくとも一実施例では、導入パイプライン3910のアプリケーションは、訓練システム3804からの出力モデル3816及び/又はアプリケーションの他のモデルのうちの1つ又は複数を使用して、撮像データ(たとえば、DICOMデータ、RISデータ、CISデータ、REST準拠データ、RPCデータ、生データなど)について推論を実行してもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム3928(たとえば、スケジューラ)を使用する推論の2つ以上の実例が利用可能であってもよい。少なくとも一実施例では、第1のカテゴリは、緊急時の緊急要求について推論を実行するため、又は診断時の放射線医のためなど、より高いサービス・レベル合意を達成できる高優先順位/低レイテンシの経路を含むことができる。少なくとも一実施例では、第2のカテゴリは、緊急ではない要求のため、又は分析が後で実行されてもよい場合に使用することができる標準優先順位の経路を含んでもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム3928は、AIサービス3918の異なる推論タスク向けの優先順位経路に基づき、リソース(たとえば、サービス3820及び/又はハードウェア3822)を分配してもよい。
少なくとも一実施例では、共有ストレージが、システム3900内でAIサービス3918に取り付けられてもよい。少なくとも一実施例では、共有ストレージは、キャッシュ(又は他のタイプのストレージ・デバイス)として動作してもよく、アプリケーションからの推論要求を処理するために使用されてもよい。少なくとも一実施例では、推論要求が送出されたとき、要求は、導入システム3806のAPIインスタンスのセットによって受信されてもよく、1つ又は複数のインスタンスが(たとえば、最良な適合のため、ロード・バランシングのためなどに)選択されて、要求が処理されてもよい。少なくとも一実施例では、要求を処理するために、要求がデータベースに入れられてもよく、機械学習モデルは、まだキャッシュにない場合には、モデル・レジストリ3824から特定されてもよく、検証ステップは、適切な機械学習モデルがキャッシュ(たとえば、共有ストレージ)に確実にロードされるようにしてもよく、且つ/又はモデルのコピーがキャッシュに保存されてもよい。少なくとも一実施例では、アプリケーションがまだ実行されていない場合、又はアプリケーションの充分なインスタンスが存在しない場合には、スケジューラ(たとえば、パイプライン・マネージャ3912)を使用して、要求において参照されたアプリケーションが起動されてもよい。少なくとも一実施例では、モデルを実行するための推論サーバがまだ起動されていない場合には、推論サーバが起動されてもよい。少なくとも一実施例では、任意の数の推論サーバがモデルごとに起動されてもよい。少なくとも一実施例では、推論サーバがクラスタ化済みであるプル・モデルでは、ロード・バランシングが有利な場合にはいつでもモデルがキャッシュされてもよい。少なくとも一実施例では、推論サーバは、対応する分散サーバに静的にロードされてもよい。
少なくとも一実施例では、推論は、コンテナ内で実行される推論サーバを使用して実行されてもよい。少なくとも一実施例では、推論サーバのインスタンスは、モデルに(任意選択でモデルの複数のバージョンに)関連付けられてもよい。少なくとも一実施例では、モデルに対して推論を実行する要求が受信されたとき、推論サーバのインスタンスが存在しない場合には、新規のインスタンスがロードされてもよい。少なくとも一実施例では、推論サーバをスタートするとき、モデルが推論サーバに渡されてもよく、それにより、推論サーバが異なるインスタンスとして実行されている限り、同じコンテナを使用して異なるモデルにサービス提供されてもよい。
少なくとも一実施例では、アプリケーションの実行中、所与のアプリケーションについて推論要求が受信されてもよく、(たとえば、推論サーバのインスタンスをホストする)コンテナが(まだロードされていなければ)ロードされてもよく、開始プロシージャがコールされてもよい。少なくとも一実施例では、コンテナの事前処理論理が、(たとえばCPU及び/又はGPUを使用して)入力データに対する任意の追加的な事前処理をロード、デコード、及び/又は実行してもよい。少なくとも一実施例では、推論のためにデータが準備されると、コンテナは、必要に応じてデータに推論を実行してもよい。少なくとも一実施例では、これは1つの画像(たとえば手のX線)に対する単一の推論コールを含んでもよく、又は何百もの画像(たとえば胸のCT)について推論を要求してもよい。少なくとも一実施例では、アプリケーションは、完了前に結果を要約してもよく、これは限定することなく、単一の信頼性スコア、ピクセル・レベルのセグメント化、ボクセル・レベルのセグメント化、視覚化の生成、又は所見を要約するためのテキストの生成を含んでもよい。少なくとも一実施例では、異なるモデル又はアプリケーションには、異なる優先順位が割り当てられてもよい。たとえば、リアルタイム(TAT1分未満)の優先順位を有するモデルもあれば、低優先順位(たとえば、TAT10分未満)を有するモデルもある。少なくとも一実施例では、モデル実行時間は、要求元の施設又はエンティティから測定されてもよく、推論サービスに対する実行に加えてパートナ・ネットワーク横断時間を含んでもよい。
少なくとも一実施例では、サービス3820と推論アプリケーションの間での要求の移行は、ソフトウェア開発キット(SDK)の後ろに隠されてもよく、キューを通して頑健な移送が提供されてもよい。少なくとも一実施例では、個々のアプリケーション/テナントIDの組合せを求めて、要求がAPIを介してキューに入れられ、SDKは、キューから要求を引き出し、要求をアプリケーションに与える。少なくとも一実施例では、SDKが要求をピックアップする環境において、キューの名称が提供されてもよい。少なくとも一実施例では、キューを介した非同期の通信は、その通信が利用可能になったときに、その通信によって、アプリケーションの任意のインスタンスがワークをピックアップできるようになるので、有用な場合がある。少なくとも一実施例では、結果はキューを介して返送されて、データが失われないようにしてもよい。少なくとも一実施例では、最高優先順位のワークは、アプリケーションのほとんどのインスタンスがキューに接続された状態のキューに進むことができ、一方で最低優先順位のワークは、1つのインスタンスがキューに接続された状態の、受信した順番にタスクを処理するキューに進むことができるので、キューは、ワークをセグメント化する機能も提供することができる。少なくとも一実施例では、アプリケーションは、クラウド3926に生成されたGPU加速インスタンス上で実行されてもよく、推論サービスは、GPU上で推論を実行してもよい。
少なくとも一実施例では、視覚化サービス3920を利用して、アプリケーション及び/又は導入パイプライン3910の出力を見るための視覚化が生成されてもよい。少なくとも一実施例では、視覚化を生成するために、視覚化サービス3920によってGPU3922が利用されてもよい。少なくとも一実施例では、レイ・トレーシングなどのレンダリング効果が、視覚化サービス3920によって実装されて、より高品質の視覚化が生成されてもよい。少なくとも一実施例では、視覚化は、2D画像のレンダリング、3Dボリュームのレンダリング、3Dボリュームの再構築、2Dトモグラフィ・スライス、仮想現実表示、拡張現実表示などを、限定することなく含んでもよい。少なくとも一実施例では、仮想化された環境を使用して、システムのユーザが対話するための仮想のインタラクティブ表示又はインタラクティブ環境(たとえば、仮想環境)が生成されてもよい。少なくとも一実施例では、視覚化サービス3920は、内部ビジュアライザ、シネマティクス、及び/又は他のレンダリング若しくは画像処理の能力若しくは機能(たとえば、レイ・トレーシング、ラスタ化、内部光学など)を含んでもよい。
少なくとも一実施例では、ハードウェア3822は、GPU3922、AIシステム3924、クラウド3926、並びに/又は訓練システム3804及び/若しくは導入システム3806を実行するために使用される任意の他のハードウェアを含んでもよい。少なくとも一実施例では、GPU3922(たとえば、NVIDIAのTESLA及び/又はQUADROのGPU)は、任意の数のGPUを含んでもよく、これらは、計算サービス3916、AIサービス3918、視覚化サービス3920、他のサービス、及び/又はソフトウェア3818の任意の特徴若しくは機能の処理タスクを実行するために使用されてもよい。たとえば、AIサービス3918に関して、GPU3922を使用して、撮像データ(又は機械学習モデルによって使用される他のタイプのデータ)に対して事前処理が実行されてもよく、機械学習モデルの出力に対して事後処理が実行されてもよく、且つ/又は推論が実行されてもよい(たとえば、機械学習モデルが実行されてもよい)。少なくとも一実施例では、クラウド3926、AIシステム3924、及び/又はシステム3900の他の構成要素は、GPU3922を使用してもよい。少なくとも一実施例では、クラウド3926は、深層学習タスクのためにGPU最適化されたプラットフォームを含んでもよい。少なくとも一実施例では、AIシステム3924は、GPUを使用してもよく、クラウド3926、又は深層学習若しくは推論の役割を課された少なくとも一部分は、1つ又は複数のAIシステム3924を使用して実行されてもよい。したがって、ハードウェア3822は、個別構成要素として示されているが、これは限定を意図したものではなく、ハードウェア3822の任意の構成要素が、ハードウェア3822の任意の他の構成要素と組み合わされてもよく、それらによって利用されてもよい。
少なくとも一実施例では、AIシステム3924は、推論、深層学習、機械学習、及び/又は他の人工知能タスク向けに構成された専用のコンピューティング・システム(たとえば、スーパーコンピュータ又はHPC)を含んでもよい。少なくとも一実施例では、AIシステム3924(たとえば、NVIDIAのDGX)は、GPU最適化されたソフトウェア(たとえば、ソフトウェア・スタック)を含んでもよく、これは、CPU、RAM、ストレージ、及び/又は他の構成要素、特徴、若しくは機能に加えて、複数のGPU3922を使用して実行されてもよい。少なくとも一実施例では、1つ又は複数のAIシステム3924は、システム3900の一部又はすべてのAIベースの処理タスクを実行するために、(たとえば、データセンタにおいて)クラウド3926に実装されてもよい。
少なくとも一実施例では、クラウド3926は、GPU加速化インフラストラクチャ(たとえば、NVIDIAのNGC)を含んでもよく、これは、システム3900の処理タスクを実行するためのGPU最適化されたプラットフォームを提供してもよい。少なくとも一実施例では、クラウド3926は、システム3900のAIベースのタスクのうちの1つ又は複数を実行するためのAIシステム3924を(たとえば、ハードウェア抽象化及びスケーリングのプラットフォームとして)含んでもよい。少なくとも一実施例では、クラウド3926は、複数のGPUを利用してアプリケーション・オーケストレーション・システム3928と統合されて、アプリケーションとサービス3820の間でシームレスなスケーリング及びロード・バランシングを可能にしてもよい。少なくとも一実施例では、クラウド3926は、本明細書に記載する計算サービス3916、AIサービス3918、及び/又は視覚化サービス3920を含むシステム3900のサービス3820の少なくとも一部を実行する役割を課されてもよい。少なくとも一実施例では、クラウド3926は、大小のバッチ推論(たとえば、NVIDIAのテンソルRTの実行)を実行してもよく、加速化された並列コンピューティングのAPI及びプラットフォーム3930(たとえば、NVIDIAのCUDA)を提供してもよく、アプリケーション・オーケストレーション・システム3928(たとえば、KUBERNETES)を実行してもよく、グラフィックス・レンダリングのAPI及びプラットフォーム(たとえば、高品質のシネマティクスを生成するためのレイ・トレーシング、2Dグラフィックス、3Dグラフィックス、及び/又は他のレンダリング技法)を提供してもよく、且つ/又はシステム3900のための他の機能を提供してもよい。
少なくとも一実施例では、患者の機密性を保護するために(たとえば、患者のデータ又は記録が構外で使用されることになる場合)、クラウド3926は、深層学習コンテナ・レジストリなどのレジストリを含んでもよい。少なくとも一実施例では、レジストリは、患者データに対する事前処理、事後処理、又は他の処理タスクを実行できるアプリケーションのインスタンス化のためのコンテナを記憶してもよい。少なくとも一実施例では、クラウド3926は、患者データ並びにセンサ・データをコンテナに含むデータを受信してもよく、これらのコンテナにおいてセンサ・データについてのみ要求された処理を実行してもよく、次いで、いずれも患者データを抽出、記憶、又は他のやり方でそれにアクセスする必要なしに、結果の出力及び/又は視覚化を適切なパーティ及び/又はデバイス(たとえば、視覚化又は診断に使用される構内の医療デバイス)に転送してもよい。少なくとも一実施例では、患者データの機密性は、HIPAA及び/又は他のデータ規定に準拠して保護される。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図40は、少なくとも一実施例による、撮像データを処理するための導入パイプライン3910Aの実例の図を含む。少なくとも一実施例では、システム3900、具体的には導入システム3806は、導入パイプライン3910Aをカスタマイズ、更新、及び/又は統合して1つ若しくは複数の生成環境にするために使用されてもよい。少なくとも一実施例では、図40の導入パイプライン3910Aは、施設(たとえば、病院、クリニック、研究所、リサーチ環境など)において特定のユーザ(又はユーザのチーム)によってカスタム定義できる導入パイプライン3910Aの非限定的な実例を含む。少なくとも一実施例では、CTスキャナ4002用に導入パイプライン3910Aを定義するために、ユーザは、CTスキャナ4002によって生成される撮像データに対して特定の機能又はタスクを実行する1つ又は複数のアプリケーションを、たとえばコンテナ・レジストリから選択してもよい。少なくとも一実施例では、アプリケーションは、システム3900のサービス3820及び/又はハードウェア3822を利用できるコンテナとして、導入パイプライン3910Aに適用されてもよい。さらに、導入パイプライン3910Aは、アプリケーションによって使用されるデータを準備するように実装することができる追加の処理タスク又はアプリケーションを含んでもよい(たとえば、DICOMアダプタ3902B及びDICOMリーダ4006が、導入パイプライン3910Aにおいて使用されて、CT再構築4008、器官セグメント化4010などによって使用されるデータを準備してもよい)。少なくとも一実施例では、導入パイプライン3910Aは、一貫性のある導入、1回限りの使用、又は別の頻度若しくは間隔に合わせてカスタマイズ又は選択されてもよい。少なくとも一実施例では、ユーザは、特定の間隔で何人かの対象者について、CT再構築4008及び器官セグメント化4010を行いたいと思うことがあり、したがって、その期間にわたってパイプライン3910Aを導入してもよい。少なくとも一実施例では、ユーザはシステム3900からの要求ごとに、その要求のためにそのデータに対してユーザが実行したい処理のアプリケーションを選択してもよい。少なくとも一実施例では、導入パイプライン3910Aは、任意の間隔で調節されてもよく、システム3900内のコンテナ構造は適応性及びスケーラビリティがあるので、これはシームレスなプロセスとすることができる。
少なくとも一実施例では、図40の導入パイプライン3910Aは、患者又は対象者の撮像データを生成するCTスキャナ4002を含んでもよい。少なくとも一実施例では、CTスキャナ4002からの撮像データは、CTスキャナ4002を収容する施設に関連付けられたPACSサーバ4004に記憶されてもよい。少なくとも一実施例では、PACSサーバ4004は、ソフトウェア及び/又はハードウェアの構成要素を含んでもよく、これらは施設において撮像モダリティ(たとえば、CTスキャナ4002)と直接インターフェースをとってもよい。少なくとも一実施例では、DICOMアダプタ3902Bは、DICOMプロトコルを使用してDICOM物体の送信及び受信を可能にしてもよい。少なくとも一実施例では、DICOMアダプタ3902Bは、導入パイプライン3910Aによって使用するために、PACSサーバからのDICOMデータの準備又は構成を支援してもよい。少なくとも一実施例では、DICOMデータがDICOMアダプタ3902Bを介して処理されると、パイプライン・マネージャ3912は、導入パイプライン3910Aを通るようにデータをルーティングしてもよい。少なくとも一実施例では、DICOMリーダ4006は、画像ファイル及び関連する任意のメタデータをDICOMデータ(たとえば、視覚化4016Aに示す生のシノグラム・データ)から抽出してもよい。少なくとも一実施例では、抽出された作業ファイルは、導入パイプライン3910Aの他のアプリケーションによってより高速に処理できるようにキャッシュに記憶されてもよい。少なくとも一実施例では、DICOMリーダ4006がデータの抽出及び/又は記憶を終了したら、完了信号がパイプライン・マネージャ3912に通信されてもよい。少なくとも一実施例では、次いでパイプライン・マネージャ3912は、導入パイプライン3910A内の1つ又は複数の他のアプリケーション若しくはコンテナを開始してもよく、又はそれをコールしてもよい。
少なくとも一実施例では、CT再構築4008のアプリケーションによる処理のためにデータ(たとえば、生のシノグラム・データ)が利用可能になると、CT再構築4008のアプリケーション及び/又はコンテナが実行されてもよい。少なくとも一実施例では、CT再構築4008は、生のシノグラム・データをキャッシュから読み取り、生のシノグラム・データから(たとえば、視覚化4016Bに示す)画像ファイルを再構築し、結果として生じる画像ファイルをキャッシュに記憶してもよい。少なくとも一実施例では、再構築の完了時、パイプライン・マネージャ3912は、再構築タスクが完了したことを通知されてもよい。少なくとも一実施例では、再構築が完了し、再構築された画像ファイルがキャッシュ(又は他のストレージ・デバイス)に記憶されると、器官セグメント化4010のアプリケーション及び/又はコンテナが、パイプライン・マネージャ3912によってトリガされてもよい。少なくとも一実施例では、器官セグメント化4010のアプリケーション及び/又はコンテナは、キャッシュから画像ファイルを読み取り、画像ファイルを推論に適したフォーマットに正規化又は変換し(たとえば、画像ファイルを機械学習モデルの入力解像度に変換し)、正規化された画像に対して推論を実行してもよい。少なくとも一実施例では、正規化された画像に対して推論を実行するために、器官セグメント化4010のアプリケーション及び/又はコンテナは、サービス3820に依存してもよく、パイプライン・マネージャ3912及び/又はアプリケーション・オーケストレーション・システム3928は、器官セグメント化4010のアプリケーション及び/又はコンテナによるサービス3820の使用を容易にしてもよい。少なくとも一実施例では、たとえば器官セグメント化4010のアプリケーション及び/又はコンテナは、AIサービス3918を利用して正規化画像に対して推論を実行してもよく、AIサービス3918はハードウェア3822(たとえば、AIシステム3924)を利用してAIサービス3918を実行してもよい。少なくとも一実施例では、推論の結果は(たとえば、視覚化4016Cに示す)マスク・ファイルであってもよく、このファイルはキャッシュ(又は他のストレージ・デバイス)に記憶されてもよい。
少なくとも一実施例では、DICOMデータ及び/又はDICOMデータから抽出されたデータを処理するアプリケーションが処理を完了したら、パイプライン・マネージャ3912向けに信号が生成されてもよい。少なくとも一実施例では、次いでパイプライン・マネージャ3912は、DICOMライタ4012を実行してキャッシュ(又は他のストレージ・デバイス)から結果を読み取り、要求を生成した施設のユーザによる使用のため、結果をDICOMフォーマットに(たとえば、DICOM出力4014として)パッケージ化してもよい。少なくとも一実施例では、次いでDICOM出力4014は、DICOMアダプタ3902Bに送信されて、(たとえば、施設のDICOMビューワによる視聴のために)PACSサーバ4004に記憶するようにDICOM出力4014が準備されてもよい。少なくとも一実施例では、再構築及びセグメント化の要求に応答して、視覚化4016B及び4016Cが生成され、診断、リサーチ、及び/又は他の目的のためにユーザにとって利用可能にされてもよい。
導入パイプライン3910Aでは連続したアプリケーションとして示されているが、CT再構築4008及び器官セグメント化4010のアプリケーションは、少なくとも一実施例において並列で処理されてもよい。少なくとも一実施例では、アプリケーションが互いに依存性を有しておらず、(たとえば、DICOMリーダ4006がデータを抽出した後に)アプリケーションごとにデータが利用可能である場合、アプリケーションは同時に、実質的に同時に、又は一部が重なって実行されてもよい。少なくとも一実施例では、2つ以上のアプリケーションが同様のサービス3820を要求する場合、システム3900のスケジューラを使用して、様々なアプリケーション間で計算又は処理のリソースのロード・バランシングが行われ、それらを分散させてもよい。少なくとも一実施例では、いくつかの実施例において、導入パイプライン3910Aのランタイムを短縮してリアルタイムの結果を提供するために、並列コンピューティング・プラットフォーム3930を使用してアプリケーションのための並列処理が実行されてもよい。
少なくとも一実施例では、図41A~図41Bを参照すると、導入システム3806は、画像処理、セグメント化、強調、AI、視覚化、及び推論などの異なる機能を、撮像デバイス(たとえば、CTスキャナ、X線機械、MRI機械など)、シーケンシング・デバイス、ゲノミクス・デバイス、及び/又は他のタイプのデバイスを用いて実行するための1つ又は複数の仮想機器として実装されてもよい。少なくとも一実施例では、システム3900は、ソフトウェア定義された導入パイプライン3910を含むことができる仮想機器の生成及び提供を可能にしてもよく、この導入パイプライン3910は、デバイスによって生成された生/未処理の入力データを受信し、処理済み/再構築済みのデータを出力してもよい。少なくとも一実施例では、仮想機器を表す導入パイプライン3910(たとえば、3910A及び3910B)は、機械学習モデルを利用することなどにより、知能をパイプラインに実装して、コンテナ化された推論サポートをシステムに提供してもよい。少なくとも一実施例では、仮想機器は、アプリケーションのインスタンスをそれぞれが含む任意の数のコンテナを実行してもよい。少なくとも一実施例では、リアルタイムの処理が望ましい場合などでは、仮想機器を表す導入パイプライン3910は静的であってもよく(たとえば、コンテナ及び/又はアプリケーションが設定されていてもよく)、一方他の実例では、仮想機器用のコンテナ及び/又はアプリケーションが、アプリケーション又はリソースのプール(たとえばコンテナ・レジストリ内)から(たとえば要求ごとに)選択されてもよい。
少なくとも一実施例では、システム3900は、たとえば施設の放射線機械、撮像デバイス、及び/又は別のタイプのデバイスに隣接して導入された、又は他のやり方でそれらと通信するコンピューティング・システムにおいて、施設構内の1つ又は複数の仮想機器としてインスタンス化されてもよく、又は実行されてもよい。しかし少なくとも一実施例では、構内でのインストールは、デバイス自体(たとえば、撮像デバイスに統合されたコンピューティング・システム)内で、ローカルなデータセンタ(たとえば、構内のデータセンタ)で、及び/又はクラウド環境(たとえば、クラウド3926)でインスタンス化又は実行されてもよい。少なくとも一実施例では、仮想機器として動作する導入システム3806は、いくつかの実例においてスーパーコンピュータ又は他のHPCシステムによってインスタンス化されてもよい。少なくとも一実施例では、構内でのインストールにより、リアルタイムの処理のために(たとえば、イーサネット(登録商標)を介したRFなど、高スループットのローカル通信インターフェースを介した)広帯域の使用が可能になる。少なくとも一実施例では、リアルタイム又はほぼリアルタイムの処理は、正確な診断及び分析のために即時の視覚化が期待され必要とされる超音波デバイス又は他の撮像モダリティを仮想機器がサポートする場合に、特に有用なことがある。少なくとも一実施例では、ローカルな要求が構内の容量又は能力を超過するとき、クラウド・コンピューティング・アーキテクチャは、クラウド・コンピューティングのサービス・プロバイダ又は他の計算クラスタに対する動的バーストを実行することができる。少なくとも一実施例では、クラウド・アーキテクチャは、実装されると、訓練システム3804に関して本明細書に記載のニューラル・ネットワーク又は他の機械学習モデルを訓練するように調整されてもよい。少なくとも一実施例では、訓練パイプラインが定位置にあるとき、機械学習モデルは、それがサポートするデバイスからの追加データを処理するとき、継続的に学習及び改善されてもよい。少なくとも一実施例では、仮想機器は、追加データ、新規データ、既存の機械学習モデル、及び/又は新規若しくは更新済みの機械学習モデルを使用して、継続的に改善されてもよい。
少なくとも一実施例では、コンピューティング・システムは、本明細書に記載のハードウェア3822の一部又はすべてを含んでもよく、ハードウェア3822は、デバイス内、デバイスに結合され近位に位置するコンピューティング・デバイスの一部として、施設のローカル・データセンタ内、及び/又はクラウド3926内を含む複数のやり方のうちの任意のやり方で分散されてもよい。少なくとも一実施例では、導入システム3806及び関連付けられたアプリケーション又はコンテナは、ソフトウェアに(たとえば、アプリケーションの個別のコンテナ化インスタンスとして)生成されるので、仮想機器の挙動、動作、及び構成、並びに仮想機器によって生成される出力は、仮想機器がサポートするデバイスの生の出力を変える又は変更する必要なしに、望み通りに修正又はカスタマイズされることが可能である。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図41Aは、少なくとも一実施例による、超音波デバイスをサポートする仮想器具の実例データ・フロー図を含む。少なくとも一実施例では、導入パイプライン3910Bは、システム3900のサービス3820のうちの1つ又は複数を利用してもよい。少なくとも一実施例では、導入パイプライン3910B及びサービス3820は、ローカルかクラウド3926のいずれかにおいて、システムのハードウェア3822を利用してもよい。少なくとも一実施例では、図示していないが、プロセス4100は、パイプライン・マネージャ3912、アプリケーション・オーケストレーション・システム3928、及び/又は並列コンピューティング・プラットフォーム3930によって促進されてもよい。
少なくとも一実施例では、プロセス4100は、超音波デバイス4102から撮像データを受信することを含んでもよい。少なくとも一実施例では、撮像データは、DICOMフォーマット(又はRIS、CIS、REST準拠、RPC、生などの他のフォーマット)でPACSサーバに記憶されてもよく、超音波デバイス4102用の仮想機器(たとえば仮想超音波)として選択又はカスタマイズされた導入パイプライン3910を通して処理するために、システム3900によって受信されてもよい。少なくとも一実施例では、撮像データは、撮像デバイス(たとえば、超音波デバイス4102)から直接受信されてもよく、仮想機器によって処理されてもよい。少なくとも一実施例では、撮像デバイスと仮想機器の間に通信可能に結合されたトランスデューサ又は他の信号変換器は、撮像デバイスによって生成された信号データを、仮想機器によって処理することができる画像データに変換してもよい。少なくとも一実施例では、生データ及び/又は画像データは、導入パイプライン3910Bのアプリケーション又はコンテナによって使用されるデータを抽出するために、DICOMリーダ4006に適用されてもよい。少なくとも一実施例では、DICOMリーダ4006は、アプリケーション又はコンテナによって使用されるデータを抽出、リサイズ、リスケーリング、及び/又は他のやり方で準備するためのサービス3820として(たとえば、計算サービス3916のうちの1つとして)、データ拡張ライブラリ4114(たとえば、NVIDIAのDALI(登録商標))を利用してもよい。
少なくとも一実施例では、データが準備されると、再構築4106のアプリケーション及び/又はコンテナが実行されて、超音波デバイス4102からのデータが画像ファイルに再構築されてもよい。少なくとも一実施例では、再構築4106の後、又は再構築4106と同時に、検出4108のアプリケーション及び/又はコンテナが、異常検出、物体検出、特徴検出、及び/又はデータに関する他の検出タスクのために実行されてもよい。少なくとも一実施例では、再構築4106中に生成された画像ファイルは、検出4108中に使用されて、異常、物体、特徴などが識別されてもよい。少なくとも一実施例では、検出4108のアプリケーションは、推論エンジン4116を(たとえば、AIサービス3918のうちの1つとして)利用して、データについて推論を実行して検出を生成してもよい。少なくとも一実施例では、(たとえば、訓練システム3804からの)1つ又は複数の機械学習モデルは、検出4108のアプリケーションによって実行又はコールされてもよい。
少なくとも一実施例では、再構築4106及び/又は検出4108が完了すると、これらのアプリケーション及び/又はコンテナからのデータ出力を使用して、ワークステーション又はディスプレイ端末に表示される視覚化4112(たとえば、グレースケール出力)などの視覚化4110が生成されてもよい。少なくとも一実施例では、視覚化により、超音波デバイス4102に対する導入パイプライン3910Bの結果を、技術者又は他のユーザが視覚化できるようになる。少なくとも一実施例では、視覚化4110は、システム3900のレンダリング構成要素4118(たとえば、視覚化サービス3920のうちの1つ)を利用することによって、実行されてもよい。少なくとも一実施例では、レンダリング構成要素4118は、2D、OpenGL、又はレイ・トレーシングのサービスを実行して、視覚化4112を生成してもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図41Bは、少なくとも一実施例による、CTスキャナをサポートする仮想器具の実例データ・フロー図を含む。少なくとも一実施例では、導入パイプライン3910Cは、システム3900のサービス3820のうちの1つ又は複数を利用してもよい。少なくとも一実施例では、導入パイプライン3910C及びサービス3820は、ローカルかクラウド3926のいずれかにおいて、システムのハードウェア3822を利用してもよい。少なくとも一実施例では、図示していないが、プロセス4120は、パイプライン・マネージャ3912、アプリケーション・オーケストレーション・システム3928、及び/又は並列コンピューティング・プラットフォーム3930によって促進されてもよい。
少なくとも一実施例では、プロセス4120は、生データを生成するCTスキャナ4122を含んでもよく、この生データは、DICOMリーダ4006によって(たとえば、直接、PACSサーバ4004を介して、処理後になど)受信されてもよい。少なくとも一実施例では、(導入パイプライン3910Cによってインスタンス化された)仮想CTは、患者を監視するため(たとえば、患者動き検出AI4126)且つ/又はCTスキャナ4122の露出を(たとえば、露出制御AI4124を使用して)調節又は最適化するための、第1のリアルタイム・パイプラインを含んでもよい。少なくとも一実施例では、アプリケーションのうちの1つ又は複数(たとえば、4124及び4126)は、AIサービス3918などのサービス3820を利用してもよい。少なくとも一実施例では、露出制御AI4124のアプリケーション(又はコンテナ)及び/又は患者動き検出AI4126のアプリケーション(コンテナ)の出力は、CTスキャナ4122及び/又は技術者に対するフィードバックとして使用されて、露出(又はCTスキャナ4122の他の設定)が調節されてもよく、且つ/又は患者にあまり動かないように伝えられてもよい。
少なくとも一実施例では、導入パイプライン3910Cは、CTスキャナ4122によって生成されるデータを分析するための非リアルタイム・パイプラインを含んでもよい。少なくとも一実施例では、第2のパイプラインは、CT再構築4008のアプリケーション及び/又はコンテナ、粗検出AI4128のアプリケーション及び/又はコンテナ、(たとえば、粗検出AI4128によってある特定の結果が検出された場合の)精検出AI4132のアプリケーション及び/又はコンテナ、視覚化4130のアプリケーション及び/又はコンテナ、及びDICOMライタ4012(及び/又はRIS、CIS、REST準拠、RPC、生など他のデータ・タイプライタ)のアプリケーション及び/又はコンテナを含んでもよい。少なくとも一実施例では、CTスキャナ4122によって生成された生データは、(仮想CT機器としてインスタンス化された)導入パイプライン3910Cのパイプラインに通されて、結果が生成されてもよい。少なくとも一実施例では、DICOMライタ4012からの結果は、表示のために送信されてもよく、且つ/又は技術者、開業医、若しくは他のユーザによって後で検索、分析、又は表示できるようにPACSサーバ4004に記憶されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図42Aは、少なくとも一実施例による、機械学習モデルを訓練、再訓練、又は更新するためのプロセス4200のデータ・フロー図を示す。少なくとも一実施例では、プロセス4200は、図39のシステム3900を非限定的な実例として使用して、実行されてもよい。少なくとも一実施例では、プロセス4200は、本明細書に記載のシステム3900のサービス3820及び/又はハードウェア3822を利用してもよい。少なくとも一実施例では、プロセス4200によって生成される精緻化モデル4212は、導入パイプライン3910内の1つ又は複数のコンテナ化アプリケーションのために、導入システム3806によって実行されてもよい。
少なくとも一実施例では、モデル訓練3814は、新規訓練データ(たとえば、顧客データセット4206、及び/又は入力データに関連付けられた新規グラウンド・トゥルース・データなどの新規入力データ)を使用して、初期モデル4204(たとえば、事前訓練済みモデル)を再訓練又は更新することを含んでもよい。少なくとも一実施例では、初期モデル4204を再訓練又は更新するために、初期モデル4204の出力又は損失層がリセットされてもよく、削除されてもよく、且つ/又は更新済み若しくは新規の出力若しくは損失層と置換されてもよい。少なくとも一実施例では、初期モデル4204は、以前に微調整された、前の訓練から残っているパラメータ(たとえば、重み及び/又はバイアス)を有してもよく、それにより、訓練又は再訓練3814は、最初からモデルを訓練するほど長い時間がかからず、又は多くの処理を必要としなくても済む。少なくとも一実施例では、モデル訓練3814の間に、初期モデル4204のリセット又は置換された出力又は損失層を有することにより、パラメータは、新規の顧客データセット4206(たとえば、図38の画像データ3808)について予測を生成する際の出力又は損失層の精度に関連付けられた損失計算に基づき、新規データセットのために更新又は再調整されてもよい。
少なくとも一実施例では、事前訓練済みモデル3906は、データストア又はレジストリ(たとえば、図38のモデル・レジストリ3824)に記憶されてもよい。少なくとも一実施例では、事前訓練済みモデル3906は、少なくとも部分的に、プロセス4200を実行する施設とは異なる1つ又は複数の施設において訓練済みであってもよい。少なくとも一実施例では、異なる施設の患者、対象者、顧客のプライバシー及び権利を保護するために、事前訓練済みモデル3906は、構内で生成された顧客又は患者のデータを使用して、構内で訓練されたものであってもよい。少なくとも一実施例では、事前訓練済みモデル3906は、クラウド3926及び/又は他のハードウェア3822を使用して訓練されてもよいが、プライバシー保護された機密の患者データは、クラウド3926(又は他の構外のハードウェア)の任意の構成要素に転送できず、それらの構成要素によって使用されず、又はアクセス不可能であってもよい。少なくとも一実施例では、事前訓練済みモデル3906が2つ以上の施設からの患者データを使用して訓練される場合、事前訓練済みモデル3906は、各施設について個々に訓練されてから、別の施設からの患者若しくは顧客のデータについて訓練されてもよい。少なくとも一実施例では、顧客又は患者のデータが(たとえば、実験での使用を目的とした権利放棄などによって)プライバシー問題から解放されている場合、又は顧客若しくは患者のデータがパブリック・データセットに含まれる場合などには、任意の数の施設からの顧客又は患者のデータを使用して、データセンタ又は他のクラウド・コンピューティング・インフラストラクチャなど、構内及び/又は構外で事前訓練済みモデル3906が訓練されてもよい。
少なくとも一実施例では、導入パイプライン3910で使用するアプリケーションを選択するとき、ユーザは、特定のアプリケーションで使用することになる機械学習モデルも選択することができる。少なくとも一実施例では、ユーザは、使用するモデルを有していないことがあり、したがって、ユーザはアプリケーションとともに使用する事前訓練済みモデル3906を選択してもよい。少なくとも一実施例では、訓練済みモデル3906は、(たとえば、患者の多様性、人口統計、使用される医療用撮像デバイスのタイプなどに基づき)ユーザの施設の顧客データセット4206について正確な結果を生成するように最適化されてもよい。少なくとも一実施例では、事前訓練済みモデル3906を、アプリケーションとともに使用するために導入パイプライン3910に導入する前に、事前訓練済みモデル3906は、それぞれの施設において使用するために更新、再訓練、及び/又は微調整されてもよい。
少なくとも一実施例では、ユーザは、更新、再訓練、及び/又は微調整されることになる事前訓練済みモデル3906を選択してもよく、事前訓練済みモデル3906は、プロセス4200内でシステム3804を訓練するための初期モデル4204と呼ばれてもよい。少なくとも一実施例では、顧客データセット4206(たとえば、施設のデバイスによって生成された撮像データ、ゲノミクス・データ、シーケンシング・データ、又は他のタイプのデータ)を使用して、初期モデル4204について(限定することなく転送学習(transfer learning)を含んでもよい)モデル訓練3814が実行されて、精緻化モデル4212が生成されてもよい。少なくとも一実施例では、顧客データセット4206に対応するグラウンド・トゥルース・データが、訓練システム3804によって生成されてもよい。少なくとも一実施例では、グラウンド・トゥルース・データは、(たとえば、図38のラベル付けされたクリニック・データ3812として)施設において臨床医、科学者、医師、開業医によって、少なくとも部分的に生成されてもよい。
少なくとも一実施例では、AI支援アノテーション3810がいくつかの実例において使用されて、グラウンド・トゥルース・データが生成されてもよい。少なくとも一実施例では、(たとえば、AI支援アノテーションSDKを使用して実装された)AI支援アノテーション3810は、機械学習モデル(たとえば、ニューラル・ネットワーク)を利用して、顧客データセットについて示唆又は予測されるグラウンド・トゥルース・データを生成してもよい。少なくとも一実施例では、ユーザ4210は、コンピューティング・デバイス4208上のユーザ・インターフェース(グラフィカル・ユーザ・インターフェース(GUI))内でアノテーション・ツールを使用してもよい。
少なくとも一実施例では、ユーザ4210は、コンピューティング・デバイス4208を介してGUIと対話して、アノテーション又は自動アノテーションを編集又は微調整してもよい。少なくとも一実施例では、ポリゴン編集特徴を使用して、ポリゴンの頂点をより正確なロケーション又は微調整されたロケーションに移動させてもよい。
少なくとも一実施例では、顧客データセット4206が、関連付けられたグラウンド・トゥルース・データを得ると、(たとえば、AI支援アノテーション、手動ラベリングなどからの)グラウンド・トゥルース・データが、モデル訓練3814中に使用されて、精緻化モデル4212が生成されてもよい。少なくとも一実施例では、顧客データセット4206は、初期モデル4204に任意の回数、適用されてもよく、グラウンド・トゥルース・データは、精緻化モデル4212について許容可能なレベルの精度が達成されるまで、初期モデル4204のパラメータを更新するために使用されてもよい。少なくとも一実施例では、精緻化モデル4212が生成されると、精緻化モデル4212は、医療用撮像データに対して1つ又は複数の処理タスクを実行するために、施設において1つ又は複数の導入パイプライン3910内に導入されてもよい。
少なくとも一実施例では、精緻化モデル4212は、別の施設によって選択されることになるモデル・レジストリ3824の事前訓練済みモデル3906にアップロードされてもよい。少なくとも一実施例では、このプロセスは任意の数の施設において完了されてもよく、それにより精緻化モデル4212は、新規データセットについて任意の回数さらに精緻化されて、より普遍的なモデルが生成されてもよい。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
図42Bは、少なくとも一実施例による、事前訓練済みのアノテーション・モデルを用いてアノテーション・ツールを強化するためのクライアント・サーバのアーキテクチャの実例の図である。少なくとも一実施例では、AI支援アノテーション・ツール4236は、クライアント・サーバのアーキテクチャ4232に基づきインスタンス化されてもよい。少なくとも一実施例では、撮像アプリケーションのアノテーション・ツール4236は、たとえば放射線医が器官及び異常を識別するのを支援してもよい。 少なくとも一実施例では、撮像アプリケーションは、非限定的な実例として(たとえば、3DのMRI又はCRスキャンの)生画像4234において、特定の対象器官上の数少ない極値点をユーザ4210が識別するのを援助し、特定の器官の2Dスライスすべてについて自動アノテーション付けされた結果を受信するソフトウェア・ツールを含んでもよい。少なくとも一実施例では、結果は、訓練データ4238としてデータストアに記憶されてもよく、(たとえば、限定することなく)訓練用のグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、コンピューティング・デバイス4208が、AI支援アノテーション3810のために極値点を送るとき、たとえば深層学習モデルがこのデータを入力として受信してもよく、セグメント化された器官又は異常の推論結果を返してもよい。少なくとも一実施例では、図42BのAI支援アノテーション・ツール4236Bなどの事前インスタンス化されたアノテーション・ツールは、たとえばアノテーション・モデル・レジストリに記憶された事前訓練済みモデル4242のセットを含むことができるアノテーション支援サーバ4240などのサーバに、APIコール(たとえば、APIコール4244)を行うことによって、拡張されてもよい。少なくとも一実施例では、アノテーション・モデル・レジストリは、特定の器官又は異常に対してAI支援アノテーションを実行するように事前訓練された事前訓練済みモデル4242(たとえば、深層学習モデルなどの機械学習モデル)を記憶してもよい。少なくとも一実施例では、これらのモデルは、訓練パイプライン3904を使用することにより、さらに更新されてもよい。少なくとも一実施例では、事前インストールされたアノテーション・ツールは、ラベル付けされた新規クリニック・データ3812が加えられるにつれて、経時的に改善されてもよい。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細は、図9A及び/又は図9Bと併せて本明細書において提供される。
少なくとも一実施例では、アプリケーション・プログラミング・インターフェースは、前記図に関連して、グラフ定義及び再帰属性を含むアプリケーション・プログラミング・インターフェース・コールを受け取ることと、前記グラフ定義に基づいて再帰ニューラル・ネットワークを実行することとを行うように適合される。
本開示の少なくとも一実施例は、以下の条項を考慮して説明されてもよい。
1.1つ又は複数のプロセッサによって実施されると、少なくとも、グラフ定義及び再帰属性を含む1つ又は複数のAPIコールを受け取ることと、グラフ定義に少なくとも部分的に基づいて、再帰ニューラル・ネットワークを実行することとを、1つ又は複数のプロセッサに行わせるアプリケーション・プログラミング・インターフェース(API)を格納した機械可読媒体。
2.再帰ニューラル・ネットワークへの入力がテンソルを含み、テンソルへのアクセスが、再帰ニューラル・ネットワークの実行の反復中、反復に対応するテンソルのスライスに限定される、条項1の機械可読媒体。
3.テンソルのスライスが、反復後に進められる、条項1~2のいずれかの機械可読媒体。
4.1つ又は複数のプロセッサによって実施されると、少なくとも、複数の反復にわたって再帰ニューラル・ネットワークの実行を最適化することを、1つ又は複数のプロセッサに行わせる命令のさらなるセットを格納した、条項1~3のいずれかの機械可読媒体。
5.再帰ニューラル・ネットワークへの入力又は出力のうちの少なくとも1つがテンソルを含み、実行の最適化が、テンソルへのアクセスが、実行の反復中、テンソルのスライスに限定されるというコンパイラの仮定に少なくとも部分的に基づく、条項4の機械可読媒体。
6.1つ又は複数のAPIコールが、グラフを再帰属性に関連付けるためのAPIコールを含む、条項1~5のいずれかの機械可読媒体。
7.APIが、1つ又は複数のプロセッサによって実施されると、少なくとも、グラフを反転する機能の検出に少なくとも部分的に基づいて、再帰ニューラル・ネットワークが双方向再帰ニューラル・ネットワークであると判定することと、双方向再帰ニューラル・ネットワークの実行を最適化することとを、1つ又は複数のプロセッサに行わせる、条項1~6のいずれかの機械可読媒体。
8.APIが、1つ又は複数のプロセッサによって実施されると、連鎖動作をなくすことを、1つ又は複数のプロセッサに行わせる、条項1~7のいずれかの機械可読媒体。
9.少なくとも、グラフ定義及び再帰属性を含む1つ又は複数のAPIコールを受け取ることと、グラフ定義に少なくとも部分的に基づいて、再帰ニューラル・ネットワークを実行することとを行うように構成されることになる1つ又は複数の算術論理演算ユニット(ALU)を備えるプロセッサ。
10.再帰ニューラル・ネットワークが、テンソルに少なくとも部分的に基づいて実行され、テンソルへのアクセスが、再帰ニューラル・ネットワークの実行の反復中、反復に対応するテンソルのスライスに限定される、条項9のプロセッサ。
11.テンソルのスライスが、反復後に進められる。条項10のプロセッサ。
12.1つ又は複数の算術論理演算ユニット(ALU)が、少なくとも、複数の反復にわたって再帰ニューラル・ネットワークの実行を最適化するように構成されることになる、条項9~11のいずれかのプロセッサ。
13.再帰ニューラル・ネットワークへの入力又は出力のうちの少なくとも1つがテンソルを含み、実行の最適化が、テンソルへのアクセスが、実行の反復中、テンソルのスライスに限定されるというコンパイラの仮定に少なくとも部分的に基づく、条項12のプロセッサ。
14.再帰ニューラル・ネットワークを定義及び実行するためのAPIの関数を実行する効果が、関数のそれぞれの環境にローカライズされる、条項9~13のいずれかのプロセッサ。
15.グラフが、アプリケーション・プログラミング・インターフェースの1つ又は複数の関数の呼出しによって定義され、1つ又は複数の関数が、グラフを再帰属性に関連付けるための関数を含む、条項9~14のいずれかのプロセッサ。
16.1つ又は複数の算術論理演算ユニット(ALU)が、少なくとも、グラフを反転する機能の検出に少なくとも部分的に基づいて、再帰ニューラル・ネットワークが双方向再帰ニューラル・ネットワークであると判定することと、双方向再帰ニューラル・ネットワークの実行を最適化することとを行うように構成されることになる、条項9~15のいずれかのプロセッサ。
17.少なくとも、グラフ定義及び再帰属性を含む1つ又は複数のAPIコールを受け取ることと、グラフ定義に少なくとも部分的に基づいて、再帰ニューラル・ネットワークを実行することとを行うように構成されることになる1つ又は複数のプロセッサを備えるシステム。
18.再帰ニューラル・ネットワークへの入力がテンソルを含む、条項17のシステム。
19.再帰ニューラル・ネットワークへの入力を含むテンソルへのアクセスが、実行中、現在の反復に対応するテンソルのスライスに限定される、条項17~18のいずれかのシステム。
20.1つ又は複数のプロセッサが、少なくとも、複数の反復にわたって再帰ニューラル・ネットワークの実行を最適化するように構成されることになる、条項17~19のいずれかのシステム。
21.再帰ニューラル・ネットワークへの入力又は出力のうちの少なくとも1つがテンソルを含み、実行の最適化が、テンソルへのアクセスが、実行の反復中、テンソルのスライスに限定されるというコンパイラの仮定に少なくとも部分的に基づく、条項17~20のいずれかのシステム。
22.再帰ニューラル・ネットワークの反復の出力に対する連鎖動作がなくされる、条項17~21のいずれかのシステム。
23.1つ又は複数のプロセッサが、少なくとも、グラフを反転する機能の検出に少なくとも部分的に基づいて、再帰ニューラル・ネットワークが双方向再帰ニューラル・ネットワークであると判定することと、双方向再帰ニューラル・ネットワークの実行を最適化することとを行うように構成される、条項17~22のいずれかのシステム。
24.グラフ定義及び再帰属性を含む1つ又は複数のAPIコールに少なくとも部分的に基づいて、時系列情報におけるパターンを検出するように構成されることになる1つ又は複数のプロセッサであって、パターンが、グラフ定義に少なくとも部分的に基づいて、再帰ニューラル・ネットワークの実行によって検出される、プロセッサを備えるシステム。
25.再帰ニューラル・ネットワークが、双方向ニューラル・ネットワークである、条項24のシステム。
26.双方向ニューラル・ネットワークへの入力が不完全である、条項25のシステム。
27.再帰ニューラル・ネットワークへの入力データがテンソルを含む、条項24~26のいずれかのシステム。
28.テンソルへのアクセスが、テンソルの固定された1つ又は複数のスライスに限定されるという、コンパイラによって施行される仮定に基づいて、コンパイラが、再帰ニューラル・ネットワークの実行を最適化することに少なくとも部分的に基づいて、再帰ニューラル・ネットワークを使用してパターン検出を最適化する、条項27のシステム。
29.再帰ニューラル・ネットワークへの入力が、APIコールによって再帰ニューラル・ネットワークに関連付けられたトリップ・カウントを含む、条項24~28のいずれかのシステム。
30.再帰ニューラル・ネットワークへの入力が、APIコールによって再帰ニューラル・ネットワークに関連付けられた制御テンソルを含む、条項24~29のいずれかのシステム。
31.再帰ニューラル・ネットワークが複数の層にされ、再帰ニューラル・ネットワークの実行が、ループ融合に少なくとも部分的に基づいて最適化される、条項24~30のいずれかのシステム。
少なくとも一実施例では、単一の半導体プラットフォームとは、単独で単体の半導体ベースの集積回路又はチップを指してもよい。少なくとも一実施例では、マルチ・チップ・モジュールは、オン・チップ動作をシミュレートする接続性が向上した状態で使用されてもよく、従来の中央処理装置(「CPU」)及びバスの実装形態の利用を大幅に改善する。少なくとも一実施例では、ユーザの希望に応じて、半導体プラットフォームとは別々に、又は半導体プラットフォームとの様々な組合せで、様々なモジュールがさらに設置されてもよい。
少なくとも一実施例では、図15に戻って参照すると、機械読取り可能で実行可能なコード若しくはコンピュータ制御論理アルゴリズムの形のコンピュータ・プログラムが、メイン・メモリ1504及び/又は二次ストレージに記憶される。コンピュータ・プログラムは、1つ又は複数のプロセッサによって実行された場合に、少なくとも一実施例による様々な機能をシステム1500が実行できるようにする。少なくとも一実施例では、メモリ1504、ストレージ、及び/又は任意の他のストレージが、コンピュータ読取り可能媒体の考えられる例である。少なくとも一実施例では、二次ストレージとは、フロッピー(登録商標)・ディスク・ドライブ、磁気テープ・ドライブ、コンパクト・ディスク・ドライブ、デジタル多用途ディスク(「DVD」:digital versatile disk)ドライブ、記録デバイス、ユニバーサル・シリアル・バス(「USB」)フラッシュ・メモリなどを表すハード・ディスク・ドライブ及び/若しくはリムーバブル・ストレージ・ドライブなどの任意の好適なストレージ・デバイス又はシステムを指してもよい。少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、CPU1502、並列処理システム1512、CPU1502と並列処理システム1512の両方の機能の少なくとも一部分を実現可能な集積回路、チップセット(たとえば、関連機能を実行するためのユニットとして機能し、販売されるように設計された集積回路のグループなど)、及び/又は集積回路の任意の好適な組合せの文脈において実装される。
少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、汎用コンピュータ・システム、回路板システム、エンタテイメント目的専用のゲーム・コンソール・システム、及び特定用途システムなどの文脈において実装される。少なくとも一実施例では、コンピュータ・システム1500は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイス、モバイル・フォン・デバイス、テレビ、ワークステーション、ゲーム・コンソール、組み込みシステム、及び/又は任意の他のタイプの論理の形をとってもよい。
少なくとも一実施例では、並列処理システム1512は、限定することなく、複数の並列処理ユニット(「PPU」)1514、及び関連メモリ1516を含む。少なくとも一実施例では、PPU1514は、相互接続1518及びスイッチ1520又はマルチプレクサを介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、並列処理システム1512は、計算タスクをPPU1514にわたって分配し、これは、たとえば複数のグラフィックス・プロセッシング・ユニット(「GPU」)のスレッド・ブロックにわたる計算タスクの分配の一部として、並列化可能とすることができる。少なくとも一実施例では、メモリは、PPU1514の一部又は全部にわたって共有され、(たとえば、読取り及び/又は書込みアクセスのために)アクセス可能であるが、こうした共有メモリは、PPU1514に常駐しているローカル・メモリ及びレジスタの使用に対して、性能に不利益をもたらすことがある。少なくとも一実施例では、PPU1514の動作は、_syncthreads()などのコマンドを使用することによって同期され、ここで(たとえば、複数のPPU1514にわたって動作している)ブロック内のすべてのスレッドが、進行前にコードのある一定の実行ポイントに到達する。
他の変形形態は、本開示の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の1つ又は複数の開示された形に本開示を限定する意図はなく、その反対に、特許請求の範囲に定義される開示の趣旨及び範囲に入るすべての修正形態、代替的な構成、及び等価物を網羅することを意図している。
開示される実施例を説明する文脈において(特に、以下の特許請求の範囲の文脈において)「a」及び「an」及び「the」という用語、並びに同様の指示語を使用することは、本明細書に別段の記載のない限り、又は文脈によって明らかに否定されない限り、単数と複数の両方を網羅すると解釈されるべきであり、用語の定義であると解釈されるべきではない。「備える(comprising)」、「有する(having)」、「含む(including)」、「収容する(containing)」という用語は、別段の記載のない限り、オープンエンドの用語(「含むが、これに限定されない」を意味する)と解釈される。「接続される」は、修飾されずに物理的接続を指している場合には、何か介在するものがあったとしても、部分的に又は完全に中に収容される、取り付けられる、又は互いに接合されるものとして解釈される。本明細書において値の範囲を詳述することは、本明細書において別段の記載がない限り、またそれぞれ別々の値が、本明細書に個々に詳述されているかのように明細書に組み込まれていない限り、範囲内に含まれるそれぞれ別々の値を個々に参照する簡潔な方法として機能することを単に意図しているにすぎない。少なくとも一実施例では、「セット」(たとえば、「アイテムのセット」)又は「サブセット」という用語の使用は、文脈によって別段の記載がない、又は否定されていない限り、1つ又は複数の部材を備える空ではない集合として解釈されるべきである。さらに、文脈によって別段の記載がない、又は否定されていない限り、対応するセットの「サブセット」という用語は、対応するセットの厳密なサブセットを必ずしも指すのではなく、サブセットと対応するセットは等しくてもよい。
「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つであるが、明示的に、又は文脈によって示されている場合にはそれより多くてもよい。さらに、別段の記載のない、又は文脈からそうでないことが明らかでない限り、「~に基づく」という言い回しは、「少なくとも部分的に~に基づく」を意味し、「~だけに基づく」を意味しない。
本明細書に記載のプロセスの動作は、本明細書に別段の記載のない、又は文脈によって明確に否定されない限り、任意の好適な順序で実行することができる。少なくとも一実施例では、本明細書に記載のプロセス(又はその変形及び/又は組合せ)などのプロセスは、実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実行され、1つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行されるコード(たとえば、実行可能な命令、1つ若しくは複数のコンピュータ・プログラム、又は1つ若しくは複数のアプリケーション)として実装される。少なくとも一実施例では、コードは、たとえば1つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形で、コンピュータ読取り可能ストレージ媒体に記憶される。少なくとも一実施例では、コンピュータ読取り可能ストレージ媒体は、一時的な信号(たとえば、伝播する一時的な電気若しくは電磁送信)を除外するが、一時的な信号のトランシーバ内の非一時的なデータ・ストレージ回路(たとえば、バッファ、キャッシュ、及びキュー)を含む非一時的なコンピュータ読取り可能ストレージ媒体である。少なくとも一実施例では、コード(たとえば、実行可能コード又はソース・コード)は、1つ又は複数の非一時的なコンピュータ読取り可能ストレージ媒体のセットに記憶され、このストレージ媒体には、コンピュータ・システムの1つ又は複数のプロセッサによって実行されたときに(すなわち、実行された結果として)、コンピュータ・システムに本明細書に記載の動作を実行させる実行可能命令が記憶されている(又は、実行可能命令を記憶するための他のメモリを有する)。少なくとも一実施例では、非一時的なコンピュータ読取り可能ストレージ媒体のセットは、複数の非一時的なコンピュータ読取り可能ストレージ媒体を備え、複数の非一時的なコンピュータ読取り可能ストレージ媒体の個々の非一時的なストレージ媒体のうちの1つ又は複数には、すべてのコードがないが、複数の非一時的なコンピュータ読取り可能ストレージ媒体は、集合的にすべてのコードを記憶している。少なくとも一実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行され、たとえば、非一時的なコンピュータ読取り可能ストレージ媒体は命令を記憶し、メインの中央処理装置(「CPU」)は一部の命令を実行し、グラフィックス・プロセッシング・ユニット(「GPU」)は他の命令を実行する。少なくとも一実施例では、コンピュータ・システムの異なる構成要素は、別々のプロセッサを有し、異なるプロセッサは、命令の異なるサブセットを実行する。
したがって、少なくとも一実施例では、コンピュータ・システムは、本明細書に記載のプロセスの動作を単独で又は集合的に実行する1つ又は複数のサービスを実装するように構成され、こうしたコンピュータ・システムは、動作の実行を可能にする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも一実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例では、異なるやり方で動作する複数のデバイスを備える分散型のコンピュータ・システムであり、それにより単一のデバイスがすべての動作を実行しないように分散型のコンピュータ・システムが本明細書に記載の動作を実行する。
本明細書に提供されるあらゆる例、又は例示的な言葉(たとえば、「など」)の使用は、本開示の実施例をより明らかにすることだけを意図しており、別段の主張のない限り、本開示の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本開示の実践に不可欠なものとして示すと解釈されるべきではない。
本明細書に引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることがあたかも個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用されてもよい。これらの用語は、互いに同義語として意図されていない場合があることを理解すべきである。むしろ、特定の例では、「接続される」又は「結合される」は、2つ以上の要素が物理的又は電気的に互いに直接又は間接的に接触していることを示すために使用されてもよい。また「結合される」は、2つ以上の要素が直接互いに接触していないが、なお互いに連動又は相互作用することを意味してもよい。
別段の具体的な記載のない限り、明細書全体を通して「処理する」、「コンピューティング」、「計算する」、又は「判定する」などの用語は、コンピューティング・システムのレジスタ及び/又はメモリ内の、電子的などの物理的な量として表されるデータをコンピューティング・システムのメモリ、レジスタ、又は他のそのような情報ストレージ・デバイス、送信デバイス、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータになるよう操作及び/又は変換するコンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスの行為及び/又はプロセスを指す。
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データを、レジスタ及び/又はメモリに記憶することができる他の電子データに変換する任意のデバイス、又はデバイスの一部分を指してもよい。非限定的な例として、「プロセッサ」は、CPU又はGPUであってもよい。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備えてもよい。本明細書で使用する「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及び知的エージェントなど、経時的にワークを実行するソフトウェア及び/又はハードウェアのエンティティを含んでもよい。また、各プロセスは、命令を直列で又は並列で連続的に又は断続的に実行するための複数のプロセスを指してもよい。少なくとも一実施例では、「システム」及び「方法」は、1つ又は複数の方法をシステムが具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及することができる。少なくとも一実施例では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々なやり方で実現することができる。いくつかの実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。別の実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することができる。様々な例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース若しくはプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
上記の考察は、記載した技法の例示的な実装形態について述べているが、記載した機能を実装するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、考察を目的として、役割の具体的な分配が定義されるが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
さらに、主題は、構造的特徴及び/又は方法論的動作に特有の言語で説明されてきたが、添付の特許請求の範囲で特許請求される主題は、説明した特有の特徴又は動作に必ずしも限定されないことが理解されるべきである。むしろ、特有の特徴及び動作は、特許請求の範囲を実装する例示的な形として開示されている。
Claims (31)
- 1つ又は複数のプロセッサに行わせるアプリケーション・プログラミング・インターフェース(API)を格納した機械可読媒体であって、
少なくとも、
グラフ定義及び再帰属性を含む1つ又は複数のAPIコールを受け取ることと、
前記グラフ定義に少なくとも部分的に基づいて、再帰ニューラル・ネットワークを実行することと、
を前記1つ又は複数のプロセッサによって実施されるように促す、機械可読媒体。 - 前記再帰ニューラル・ネットワークへの入力がテンソルを含み、前記テンソルへのアクセスが、前記再帰ニューラル・ネットワークの実行の反復中、前記反復に対応する前記テンソルのスライスに限定される、請求項1に記載の機械可読媒体。
- 前記テンソルの前記スライスが、前記反復後に進められる、請求項2に記載の機械可読媒体。
- 前記1つ又は複数のプロセッサによって実施されると、少なくとも、複数の反復にわたって前記再帰ニューラル・ネットワークの実行を最適化することを前記1つ又は複数のプロセッサに行わせる命令のさらなるセットを格納した、請求項1に記載の機械可読媒体。
- 前記再帰ニューラル・ネットワークへの入力又は出力のうちの少なくとも1つがテンソルを含み、実行の前記最適化が、前記テンソルへのアクセスが、前記実行の反復中、前記テンソルのスライスに限定されるというコンパイラの仮定に少なくとも部分的に基づく、請求項4に記載の機械可読媒体。
- 前記1つ又は複数のAPIコールが、前記グラフを再帰属性に関連付けるためのAPIコールを含む、請求項1に記載の機械可読媒体。
- 前記APIが、1つ又は複数のプロセッサによって実施されると、少なくとも、
前記グラフへの入力を反転させる機能の検出に少なくとも部分的に基づいて、前記再帰ニューラル・ネットワークが双方向再帰ニューラル・ネットワークであると判定することと、
前記双方向再帰ニューラル・ネットワークの実行を最適化することと
を、前記1つ又は複数のプロセッサに行わせる、請求項1に記載の機械可読媒体。 - 前記APIが、1つ又は複数のプロセッサによって実施されると、連鎖動作をなくすことを、前記1つ又は複数のプロセッサに行わせる、請求項1に記載の機械可読媒体。
- 少なくとも、グラフ定義及び再帰属性を含む1つ又は複数のAPIコールを受け取ることと、前記グラフ定義に少なくとも部分的に基づいて、再帰ニューラル・ネットワークを実行することとを行うように構成されることになる1つ又は複数の算術論理演算ユニット(ALU)
を備えるプロセッサ。 - 前記再帰ニューラル・ネットワークが、テンソルに少なくとも部分的に基づいて実行され、前記テンソルへのアクセスが、前記再帰ニューラル・ネットワークの実行の反復中、前記反復に対応する前記テンソルのスライスに限定される、請求項9に記載のプロセッサ。
- 前記テンソルの前記スライスが、前記反復後に進められる、請求項10に記載のプロセッサ。
- 前記1つ又は複数の算術論理演算ユニット(ALU)が、少なくとも、複数の反復にわたって前記再帰ニューラル・ネットワークの実行を最適化するように構成されることになる、請求項9に記載のプロセッサ。
- 前記再帰ニューラル・ネットワークへの入力又は出力のうちの少なくとも1つがテンソルを含み、実行の前記最適化が、前記テンソルへのアクセスが、前記実行の反復中、前記テンソルのスライスに限定されるというコンパイラの仮定に少なくとも部分的に基づく、請求項12に記載のプロセッサ。
- 前記再帰ニューラル・ネットワークを定義及び実行するための前記APIの関数を実行する効果が、前記関数のそれぞれの環境にローカライズされる、請求項9に記載のプロセッサ。
- 前記グラフが、アプリケーション・プログラミング・インターフェースの1つ又は複数の関数の呼出しによって定義され、前記1つ又は複数の関数が、前記グラフを再帰属性に関連付けるための関数を含む、請求項9に記載のプロセッサ。
- 前記1つ又は複数の算術論理演算ユニット(ALU)が、少なくとも、
前記グラフを反転する機能の検出に少なくとも部分的に基づいて、前記再帰ニューラル・ネットワークが双方向再帰ニューラル・ネットワークであると判定することと、
前記双方向再帰ニューラル・ネットワークの前記実行を最適化することと
を行うように構成されることになる、請求項9に記載のプロセッサ。 - 少なくとも、グラフ定義及び再帰属性を含む1つ又は複数のAPIコールを受け取ることと、前記グラフ定義に少なくとも部分的に基づいて、再帰ニューラル・ネットワークを実行することとを行うように構成されることになる1つ又は複数のプロセッサ
を備えるシステム。 - 前記再帰ニューラル・ネットワークへの入力がテンソルを含む、請求項17に記載のシステム。
- 前記再帰ニューラル・ネットワークへの入力を含むテンソルへのアクセスが、実行中、現在の反復に対応する前記テンソルのスライスに限定される、請求項17に記載のシステム。
- 前記1つ又は複数のプロセッサが、少なくとも、複数の反復にわたって前記再帰ニューラル・ネットワークの実行を最適化するように構成されることになる、請求項17に記載のシステム。
- 前記再帰ニューラル・ネットワークへの入力又は出力のうちの少なくとも1つがテンソルを含み、実行の前記最適化が、前記テンソルへのアクセスが、実行の反復中、前記テンソルのスライスに限定されるというコンパイラの仮定に少なくとも部分的に基づく、請求項17に記載のシステム。
- 前記再帰ニューラル・ネットワークの反復の出力に対する連鎖動作がなくされる、請求項17に記載のシステム。
- 前記1つ又は複数のプロセッサが、少なくとも、
前記グラフを反転する機能の検出に少なくとも部分的に基づいて、前記再帰ニューラル・ネットワークが双方向再帰ニューラル・ネットワークであると判定することと、
前記双方向再帰ニューラル・ネットワークの実行を最適化することと
を行うように構成されることになる、請求項17に記載のシステム。 - グラフ定義及び再帰属性を含む1つ又は複数のAPIコールに少なくとも部分的に基づいて、時系列情報におけるパターンを検出するように構成されることになる1つ又は複数のプロセッサであって、前記パターンが、前記グラフ定義に少なくとも部分的に基づいて、再帰ニューラル・ネットワークの実行によって検出される、プロセッサ
を備えるシステム。 - 前記再帰ニューラル・ネットワークが、双方向ニューラル・ネットワークである、請求項24に記載のシステム。
- 前記双方向ニューラル・ネットワークへの入力が不完全である、請求項25に記載のシステム。
- 前記再帰ニューラル・ネットワークへの入力データがテンソルを含む、請求項24に記載のシステム。
- 前記テンソルへのアクセスが、前記テンソルの固定された1つ又は複数のスライスに限定されるという、コンパイラによって施行される仮定に基づいて、前記コンパイラが、前記再帰ニューラル・ネットワークの実行を最適化することに少なくとも部分的に基づいて、前記再帰ニューラル・ネットワークを使用してパターン検出を最適化する、請求項27に記載のシステム。
- 前記再帰ニューラル・ネットワークへの入力が、APIコールによって前記再帰ニューラル・ネットワークに関連付けられたトリップ・カウントを含む、請求項24に記載のシステム。
- 前記再帰ニューラル・ネットワークへの入力が、APIコールによって前記再帰ニューラル・ネットワークに関連付けられた制御テンソルを含む、請求項24に記載のシステム。
- 前記再帰ニューラル・ネットワークが複数の層にされ、前記再帰ニューラル・ネットワークの実行が、ループ融合に少なくとも部分的に基づいて最適化される、請求項24に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/719,718 US20210192314A1 (en) | 2019-12-18 | 2019-12-18 | Api for recurrent neural networks |
US16/719,718 | 2019-12-18 | ||
PCT/US2020/065164 WO2021126883A1 (en) | 2019-12-18 | 2020-12-15 | Api for recurrent neural networks |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023507059A true JP2023507059A (ja) | 2023-02-21 |
Family
ID=74191837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022524571A Pending JP2023507059A (ja) | 2019-12-18 | 2020-12-15 | 再帰ニューラル・ネットワークのためのapi |
Country Status (8)
Country | Link |
---|---|
US (1) | US20210192314A1 (ja) |
JP (1) | JP2023507059A (ja) |
KR (1) | KR20220079975A (ja) |
CN (1) | CN114730373A (ja) |
AU (1) | AU2020404936A1 (ja) |
DE (1) | DE112020005364T5 (ja) |
GB (1) | GB2603716A (ja) |
WO (1) | WO2021126883A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10700964B1 (en) * | 2019-01-04 | 2020-06-30 | Dropbox, Inc. | Centralized application-layer routing at the edge of an online application service provider network |
WO2021015308A1 (ko) * | 2019-07-19 | 2021-01-28 | 엘지전자 주식회사 | 로봇 및 그의 기동어 인식 방법 |
US11645057B2 (en) * | 2020-09-24 | 2023-05-09 | SambaNova Systems, Inc. | Systems and methods for memory layout determination and conflict resolution |
US20220101108A1 (en) * | 2020-09-30 | 2022-03-31 | International Business Machines Corporation | Memory-mapped neural network accelerator for deployable inference systems |
US11765188B2 (en) * | 2020-12-28 | 2023-09-19 | Mellanox Technologies, Ltd. | Real-time detection of network attacks |
US11354473B1 (en) * | 2021-01-28 | 2022-06-07 | Argo AI, LLC | Method and system for designing a robotic system architecture with optimized system latency |
DE102021104423A1 (de) * | 2021-02-24 | 2022-08-25 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren zum Betreiben eines Kommunikationsnetzwerkes, Kommunikations-netzwerk und Teilnehmer hierfür |
US11568345B1 (en) * | 2021-08-20 | 2023-01-31 | Dish Wireless L.L.C. | Cognitive-defined network management |
US11514370B1 (en) | 2021-12-03 | 2022-11-29 | FriendliAI Inc. | Selective batching for inference system for transformer-based generation tasks |
US11442775B1 (en) * | 2021-12-03 | 2022-09-13 | FriendliAI Inc. | Dynamic batching for inference system for transformer-based generation tasks |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8805737B1 (en) * | 2009-11-02 | 2014-08-12 | Sas Institute Inc. | Computer-implemented multiple entity dynamic summarization systems and methods |
US9424079B2 (en) * | 2013-06-27 | 2016-08-23 | Microsoft Technology Licensing, Llc | Iteration support in a heterogeneous dataflow engine |
US20150363196A1 (en) * | 2014-06-13 | 2015-12-17 | The Charles Stark Draper Laboratory Inc. | Systems And Methods For Software Corpora |
US10885452B1 (en) * | 2016-06-27 | 2021-01-05 | Amazon Technologies, Inc. | Relation graph optimization using inconsistent cycle detection |
US10769721B2 (en) * | 2016-10-31 | 2020-09-08 | Accenture Global Solutions Limited | Intelligent product requirement configurator |
WO2018226888A1 (en) * | 2017-06-06 | 2018-12-13 | Diffeo, Inc. | Knowledge operating system |
US10313387B1 (en) * | 2017-12-01 | 2019-06-04 | KnowBe4, Inc. | Time based triggering of dynamic templates |
US10353678B1 (en) * | 2018-02-05 | 2019-07-16 | Amazon Technologies, Inc. | Detecting code characteristic alterations due to cross-service calls |
US10628527B2 (en) * | 2018-04-26 | 2020-04-21 | Microsoft Technology Licensing, Llc | Automatically cross-linking application programming interfaces |
-
2019
- 2019-12-18 US US16/719,718 patent/US20210192314A1/en active Pending
-
2020
- 2020-12-15 CN CN202080081342.4A patent/CN114730373A/zh active Pending
- 2020-12-15 WO PCT/US2020/065164 patent/WO2021126883A1/en active Application Filing
- 2020-12-15 JP JP2022524571A patent/JP2023507059A/ja active Pending
- 2020-12-15 DE DE112020005364.4T patent/DE112020005364T5/de active Pending
- 2020-12-15 KR KR1020227016146A patent/KR20220079975A/ko unknown
- 2020-12-15 AU AU2020404936A patent/AU2020404936A1/en active Pending
- 2020-12-15 GB GB2205964.6A patent/GB2603716A/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021126883A1 (en) | 2021-06-24 |
GB202205964D0 (en) | 2022-06-08 |
DE112020005364T5 (de) | 2022-09-15 |
CN114730373A (zh) | 2022-07-08 |
KR20220079975A (ko) | 2022-06-14 |
GB2603716A (en) | 2022-08-10 |
AU2020404936A1 (en) | 2022-08-11 |
US20210192314A1 (en) | 2021-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210252698A1 (en) | Robotic control using deep learning | |
US20220153262A1 (en) | Object detection and collision avoidance using a neural network | |
US20220101494A1 (en) | Fourier transform-based image synthesis using neural networks | |
US11798183B2 (en) | Machine learning techniques for predicting depth information in image data | |
JP2023537649A (ja) | リアルタイム深層学習分析のための動作の動的ロード・バランシング | |
JP2023507059A (ja) | 再帰ニューラル・ネットワークのためのapi | |
US20220126445A1 (en) | Machine learning model for task and motion planning | |
JP2023007419A (ja) | ニューラル・ネットワークのための事前訓練フレームワーク | |
US11847538B2 (en) | Differential privacy dataset generation using generative models | |
US20220342673A1 (en) | Techniques for parallel execution | |
JP2022173094A (ja) | 一定較正設定によるハイ・ダイナミック・レンジ画像処理 | |
JP2022171603A (ja) | ニューラル・ネットワークのための動的な重み更新 | |
CN115136147A (zh) | 用于神经网络模型的加速训练 | |
JP2023047272A (ja) | 信頼実行環境を使用した、複数のプロセッサ・デバイスのためのセキュアな実行 | |
JP2022191169A (ja) | ニューラル・ネットワーク経路計画 | |
GB2606604A (en) | Application programming interface for neural network computation | |
JP2022168852A (ja) | 演算を組み合わせるための技法 | |
JP2024515393A (ja) | インテリジェント・ビデオ分析及びエッジ・コンピューティング・システムにおけるエンドツーエンド・アクション認識 | |
JP2024514368A (ja) | ニューラル・ネットワークにおける分布外入力データの識別のための技法 | |
JP2023047265A (ja) | 複数のプロセッサ・デバイスにわたる信頼実行環境の実装 | |
KR20230002060A (ko) | 연산들을 조합하기 위한 기술들 | |
JP2022185572A (ja) | ニューラル・ネットワークを用いた分類のための技法 | |
US20210374384A1 (en) | Techniques to process layers of a three-dimensional image using one or more neural networks | |
US20230281042A1 (en) | Memory allocation for processing sequential data | |
US20230051050A1 (en) | Neural network loop detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230926 |