複数の物体(たとえば物体のクラッタ)の中にある1つの物体向けの把持のセットを生成する技法を説明する。少なくとも一実施例では、把持のセットは、物体向けの把持を含み、ここで把持のセット内の把持は、ロボットが把持を実行するときに、物体の近位にある少なくとも1つの物体との干渉又は接触を回避するように決定される。
少なくとも一実施例では、技法は、様々な3次元点群観察などの部分的な点群観察から、クラッタ・シーン内の任意の標的物体向けに6自由度(6DOF)の把持を提供する。様々な実施例では、この技法は、少なくとも80.3%の把持成功率を達成し、ベースラインの手法よりも17.6%優れており、ロボット・プラットフォームにおいて9個のクラッタ・シーン(合計23個の未知の物体、及び51回のピックを含み得る)をクリアする。少なくとも一実施例では、この技法は、直にアクセスできない物体を回収するための有効な把持シーケンスをさらに推理することができる。
少なくとも一実施例では、深度画像からの画像データなど、複数の物体の画像データが取得される。画像データは、ロボットが把持することになる標的物体を含んでもよい。少なくとも一実施例では、深度画像はバイナリ・マスクを含んでもよい。バイナリ・マスクは点のセットを含んでもよく、点の各セットは、複数の物体の中の少なくとも1つの物体に対応する。少なくとも一実施例では、バイナリ・マスクの点のセットは、複数の物体のうちの1つの物体の内側輪郭及び外側輪郭を表す。少なくとも一実施例では、バイナリ・マスクの点のセットは、複数の物体に関連付けられた標的物体の少なくとも外側輪郭を表す。したがって、少なくとも一実施例では、複数の物体の中の各物体を切り離すために、バイナリ・マスクが使用されてもよい。少なくとも一実施例では、標的物体を識別するためにバイナリ・マスクが使用される。たとえば、バイナリ・マスクは、生成される把持姿勢のセットの対象である標的物体を識別するために、ロボット又は人間によって使用されてもよい。
少なくとも一実施例では、複数の物体の画像データから3次元点群が生成される。少なくとも一実施例では、バイナリ・マスクを含む深度画像から3次元点群が生成される。少なくとも一実施例では、3次元点群のサイズが低減される。たとえば、3次元点群は、サイズの低減を達成するためにクロッピングされてもよい。少なくとも一実施例では、3次元点群のサイズを低減するためのベースとして境界ボリュームが使用される。たとえば、境界ボリュームは3次元点群に適用されてもよい。いくつかの実装形態では、境界ボリュームの外側の画像データが3次元点群からクロッピングされて、修正済み3次元点群が生成される。いくつかの実装形態では、境界ボリュームは、所定のボリュームを有する境界ボックスである。少なくとも一実施例では、3次元点群及び修正済み3次元点群は、標的物体を表す画像データを含む。いくつかの実装形態では、3次元点群及び修正済み3次元点群は、標的物体及び標的物体の近位にある付加的物体を表す画像データを含む。
少なくとも一実施例では、標的物体の画像データは、標的物体の近位にある他の物体に関連付けられた画像データから切り離される。少なくとも一実施例では、標的物体の切り離された画像データは、3次元点群又は修正済み3次元点群にある。少なくとも一実施例では、標的物体の近位にある他の物体に関連付けられた画像データから標的物体の画像データを切り離すことにより、標的物体の画像データに限定された3次元点群が、3次元点群又は修正済み3次元点群から生成されることになる。
少なくとも一実施例では、標的物体向けに把持姿勢のセットが生成される。少なくとも一実施例では、把持姿勢のセットは、標的物体に関連付けられた画像データを使用して生成される。少なくとも一実施例では、標的物体に関連付けられた画像データは3次元点群である。3次元点群は、標的物体に関連付けられた画像データを含むものに限定されてもよい。少なくとも一実施例では、標的物体の画像データを含む3次元点群は、別の1つ又は複数の物体の画像データを含む3次元点群に基づく修正済み3次元点群である。少なくとも一実施例では、他の物体は、標的物体を含む物体の集まり内にある。
少なくとも一実施例では、把持姿勢のセットは、1つ又は複数の予測把持を含む。少なくとも一実施例では、1つ又は複数の予測把持は、画像データ処理及びコンピュータ支援シミュレーションに基づき生成される。少なくとも一実施例では、1つ又は複数の予測把持はロボットによって生成される。少なくとも一実施例では、標的物体向けの把持姿勢のセットは、3次元点群に含まれている。たとえば、3次元点群は、標的物体の成功把持姿勢を含む把持姿勢のセットを含んでもよい。
少なくとも一実施例では、標的物体の近位にある他の物体の画像データは、3次元点群に含まれる。いくつかの実装形態では、他の物体の画像データを含む3次元点群は、標的物体向けの成功把持姿勢を含む把持姿勢のセットを含む3次元点群と組み合わされる。いくつかの実装形態では、3次元点群を組み合わせるプロセスにより、他の物体の画像データと標的物体向けの成功把持姿勢を含む把持姿勢のセットとを含む組み合わされた3次元点群が生成される。少なくとも一実施例では、組み合わされた3次元点群がコンピュータ支援処理にかけられて、ロボットによって実行されたときに他の物体のうちの1つ又は複数に干渉又は接触することになる1つ又は複数の把持姿勢が識別される。少なくとも一実施例では、識別された1つ又は複数の干渉把持姿勢は、標的物体向けの成功把持姿勢を含む把持姿勢のセットから除外される。少なくとも一実施例では、標的物体向けの成功把持姿勢を含む把持姿勢のセットを含む3次元点群は、識別された1つ又は複数の干渉把持姿勢に関連付けられた画像データを除去するように修正される。少なくとも一実施例では、把持姿勢の修正済みセットは、標的物体の近位にある他の物体の画像データに基づく標的物体向けの成功把持姿勢を含む。少なくとも一実施例では、把持姿勢の修正済みセットは、ロボットが標的物体の近位にある他の物体を回避しながら標的物体を把持できるようにする成功把持姿勢を含む。
少なくとも一実施例では、他の物体の画像データと、標的物体向けの成功把持姿勢を含む把持姿勢のセットとを含む組み合わされた3次元点群が、標的物体の画像データを含む3次元点群と組み合わされる。その結果得られる3次元点群は、標的物体の画像データと、他の物体の画像データと、標的物体向けの成功把持姿勢を含む把持姿勢のセットとを含む。少なくとも一実施例では、組み合わされた3次元点群がコンピュータ支援処理にかけられて、ロボットによって実行されたときに他の物体のうちの1つ又は複数に干渉又は接触することになる1つ又は複数の把持姿勢が識別される。少なくとも一実施例では、識別された1つ又は複数の干渉把持姿勢は、標的物体向けの成功把持姿勢を含む把持姿勢のセットから除外される。少なくとも一実施例では、標的物体向けの成功把持姿勢を含む把持姿勢のセットを含む3次元点群は、識別された1つ又は複数の干渉把持姿勢に関連付けられた画像データを除去するように修正される。少なくとも一実施例では、把持姿勢の修正済みセットは、標的物体の近位にある他の物体の画像データに基づく標的物体向けの成功把持姿勢を含む。少なくとも一実施例では、把持姿勢の修正済みセットは、ロボットが標的物体の近位にある他の物体を回避しながら標的物体を把持できるようにする成功把持姿勢を含む。
図1は、一実施例による、様々な物体を把持するロボット・システムを示す。把持の選択は、ロボット操作において重要な問題である。少なくとも一実施例では、ロボットが物体を観察し、関連する制御コンピュータ・システムが、この物体を持ち上げるためにロボットのグリッパをどこに動かすべきか(3D位置及び3D配向)を決定する。たとえば、図1は、一実施例による、様々な物体を把持するロボット・システムを示す。少なくとも一実施例では、グリッパ104を有するロボット102は、本明細書に記載の技法を実装するコンピュータ・システムによって制御される。少なくとも一実施例では、ロボット102は、円筒106、箱108、又はボウル110などの様々な物体に対して改善された把持を実行することができ、様々な物体は、物体のクラッタ内にあってもよい。
把持の安定性は、物体及びグリッパの形状、物体の質量分布、並びに表面摩擦に依存することから、把持の選択は複雑になることがある。物体の周りの形状は、あるシーンにおいてロボットのマニピュレータを他の物体に衝突させずに到達可能なのはどの把持点であるかについて、さらなる制約を課すことがある。
図2は、一実施例による、把持することができる物体の実例を示す。少なくとも一実施例では、図2に示す物体は、深度カメラからの深度画像などの画像に表される。少なくとも一実施例では、画像は、画像内に描かれる物体の画像データを含むRGB−D画像である。持ち手付きマグ202、マスタード瓶204、洗剤ボトル206、塩入れ208、小箱210、大箱212、及びボウル214を含む様々な物体について、様々な実施例を記載し、試験する。
クラッタ、すなわち様々な物体及びオクル−ジョンを含むクラッタ環境において、把持合成は非常に複雑で困難になることがある。マスタード瓶204などの標的物体を、周りの物体とのいかなる不要な衝突もなく、又は環境内の他の物体に他の形で干渉することなく、把持することが望まれてもよい。実世界の用途では、ロボットは、他のアイテムによるクラッタのある狭い食器棚から特定の飲み物を把持するようにコマンドされることがある。クラッタ不明の状態でサンプリングされた把持は、環境と衝突してしまうことがある。いくつかの実例では、グリッパの事前形状が衝突する状態にない場合でも、マニピュレータのための衝突しない運動学的に実行可能な経路を計画してグリッパの構成を実現することは、困難であり得る。様々な実施例では、すべての把持が環境内で動作するように運動学的に実行可能な訳ではないので、把持の様々なセットが生成されてもよい。
物体のクラッタにおいて、標的物体の形状の大きい重要な部分が、他の物体によりオクルージョンされることがある。少なくとも一実施例では、技法は、構造化クラッタおいて、学習ベースの手法を使用して6DOFの把持生成を実現する。この技法は、単一の視点からのインスタンスのセグメント化及び点群の観察を利用してもよい。この技法は、クラッタにおける把持生成に対しカスケード式手法を利用してもよく、この手法は、最初に物体レベルにおける把持を推理し、次いで衝突の有無についてクラッタ環境を検査することを含んでもよい。この技法は、学習済みの衝突チェッカを利用してもよく、このチェッカは、生の部分的な点群の観察のみから、衝突の有無について把持を評価することができ、様々な程度のオクルージョン下で機能することができる。
少なくともいくつかの実施例では、この技法により、ロボット・システムは、複数の物体の集まりから物体を把持できるようになる。標的物体の周りのアクセス可能な作業空間は、著しく制限されることがあり、知覚を妨げることがあるオクルージョンを含む場合がある。少なくともいくつかの実施例では、ロボット・システムは、構造化クラッタに対して動作してもよい。構造化クラッタとは、主に大きく重い物体の詰め込まれた構成と定義されてもよい。実例は、食器棚又はスーパーマーケットの棚を含んでもよい。構造化クラッタ内では、物体の安定平衡が低いことから、衝突及び意図しない接触により大きな被害の生じることがある。少なくともいくつかの実施例では、ロボット・システムは、衝突する把持構成を予測することができ、且つオクル−ジョンがあるにもかかわらずそれをすることができる。構造化クラッタにおいて、空間的把持は不可避であり得る。ロボット・システムは、フル6D把持姿勢を予測することができる学習済み把持サンプラを使用してもよく、オクルージョンによって見えない部分を補足する。少なくともいくつかの実施例では、ロボット・システムはいかなる物体モデルも必要としなくてもよく、把持は深度画像及び/又は点群に基づき計画されてもよい。少なくともいくつかの実施例では、ロボット・システムは、インスタンスのセグメント化を利用して把持を物体と一致させることによる標的駆動型とすることができる。
物体の周りの有望な把持点を選択するために、形状から着想を得る発見的手法が使用されてもよく、任意選択でそれに続いて、サンプリングされた把持の安全性及び到達可能性のより詳細な形状分析が行われる。有望な把持点を選択するための様々な手法は、物体の完全な3Dモデルの入手可能性に依存しており、このことは、たとえばロボットがノイズの多い深度カメラでしかシーンを観察しない一部の現実的なシナリオでは、制限となり得る。この制限を克服するために、いくつかの実施例は、完全な物体モデルを生成するようにカメラを移動させ、又は形状補完を実行し、それに続いて、形状に基づく把持分析を行う。
生の点群データから把持の品質を評価するために、深層学習技法が使用されてもよい。少なくとも一実施例では、未知の物体について安定した把持の多様なセットを効率的に生成するために、学習ベースのフレームワークが使用されてもよい。様々な実施例は、把持をサンプリングし、評価し、改善する複数のネットワーク・アーキテクチャを提供する。たとえば、変分オートエンコーダ(VAE)が、観察された物体の部分的な点群を、物体向けの把持の多様なセットにマッピングするように訓練されてもよい。少なくとも一実施例では、VAEは、高度なカバレッジで機能する把持を提供する一方で、失敗する把持は相対的に少数しか生成しない。いくつかの実例では、把持分別器ネットワークが、観察された物体及びロボット・グリッパの点群を、6Dグリッパ姿勢の品質アセスメントにマッピングしてもよい。このネットワークの勾配を使用して、たとえば把持サンプルを動かして衝突しないようにする、又はグリッパが物体と良好に位置合わせされるようにするなど、把持サンプルを改善することができる。
図3は、一実施例による、把持することができる物体の画像データを含むバイナリ・マスクを示す。少なくとも一実施例では、図3に示すバイナリ・マスクは、深度カメラからの深度画像などの画像に関連付けられる。少なくとも一実施例では、バイナリ・マスクは、バイナリ・マスクに描かれた物体の画像データを含むRGB−D画像の一部であり、又はそれから導かれる。少なくとも一実施例では、バイナリ・マスクは、手持ち付きマグ302のバイナリ・マスク、マスタード瓶304のバイナリ・マスク、洗剤ボトル306のバイナリ・マスク、塩入れ308のバイナリ・マスク、小箱310のバイナリ・マスク、大箱312のバイナリ・マスク、及びボウル314のバイナリ・マスクを含む。少なくとも一実施例では、マスタード瓶304が、ロボットによって把持されるものとして選択される。少なくとも一実施例では、物体の画像データを含むバイナリ・マスクは、ロボットによって把持される標的物体を切り離すために使用される。標的物体は、1つ又は複数のセグメント化アルゴリズムに基づき選択されてもよい。この選択を利用して、クラッタを無視した標的物体向けの実現可能な成功把持が推論され、それが衝突判定のシステム又はプロセスにより提供される衝突結果と組み合わされる。
図4は、一実施例による、把持することができる物体の画像データから生成された点群を示す。少なくとも一実施例では、点群は、3次元点群である。3次元点群は、クラッタ内の物体の画像データを含むRGB−D画像から生成されてもよい。少なくとも一実施例では、図2及び/又は図3に描かれた画像データから3次元点群が生成される。少なくとも一実施例では、点群は、持ち手付きマグ402、マスタード瓶404、洗剤ボトル406、塩入れ408、小箱410、大箱412、及びボウル414の点群画像データを含む。図4に描いてあるように、物体の画像データから生成された点群は、境界ボリューム416を使用してクロッピングされてもよい。いくつかの実施例では、境界ボリューム416は境界ボックスである。
図5は、一実施例による、把持することができる物体の画像データから生成されたクロッピング済み点群を示す。少なくとも一実施例では、クロッピング済み点群は、クロッピング済み3次元点群である。クロッピング済み3次元点群は、クラッタ内の物体の画像データを含むRGB−D画像から生成されてもよい。少なくとも一実施例では、クロッピング済み点群は、図2、図3、及び/又は図4に描かれた画像データから生成される。少なくとも一実施例では、クロッピング済み点群は、持ち手付きマグ502、マスタード瓶504、洗剤ボトル506、塩入れ508、及びボウル514の点群画像データを含む。
少なくとも一実施例では、技法は、クラッタ内の物体向けに6DOFの把持を生成してもよい。説明したように、システムへの入力は、それぞれ図2及び図3に示すシーン及びバイナリ・マスクの、標的物体を示す深度画像とすることができる。少なくとも一実施例では、1つ又は複数の把持は、開いた平行ヨー・グリッパの姿勢∈SE(3)と定義されてもよく、このグリッパがその指を閉じるとき、頑健な把持が生成されてもよい。P(G*|X)と定義することができる事後確率の把持分布が推定されてもよく、ここでXは点群観察とすることができ、G*は物体の成功把持とすることができる。少なくとも一実施例では、図4及び/又は図5に示す点群が利用されてもよい。
成功把持の分布は、複雑で、多モードで、非連続的なことがある。新規物体についてモードの数は知られていないことがあり、物体の形状、サイズ、及び物理的性質によって決定されることがある。さらに、頑健な把持がわずかに摂動すると、不十分な接触により生じる衝突又は滑りに起因した失敗につながることがある。さらに、クラッタ・シーンは、ロボットの作業空間を著しく制限することがある。物体の一部を見ることが可能であっても、グリッパ自体が周りの物体との衝突につながり得る大きな物体(たとえば、ロボット)の場合には、把持が不可能なことがある。
少なくとも一実施例では、単一の切り離された物体P(G*|X)について把持分布を別に学習し、姿勢gにおけるグリッパと、Xとして観察されるクラッタとの衝突Cを捕捉することができるCollisionNetと呼ばれてもよい弁別モデルP(C|X,g)を利用することにより、技法はP(G*|X)の推定を因数分解してもよい。この因数分解の利点は2つとすることができる。第1に、単一の未知の物体について6DOFの把持姿勢を推論できる。第2に、把持の成功の理由(たとえば、標的物体の形状及び衝突のない/到達可能なグリッパ姿勢)を明示的に探り出すことにより、簡単なピック動作を越えた動作を推理できる。標的物体の把持成功を最大化するにはシーンからどの物体を移動させるべきかを推論するために、システムが利用されてもよい。
図6は、一実施例による、把持することができる物体の画像データから生成された、切り離された物体の点群を示す。少なくとも一実施例では、点群は、図5に示す点群から導かれた3次元点群である。3次元点群は、クラッタ内の物体の画像データを含むRGB−D画像から生成されてもよい。少なくとも一実施例では、点群は、図2、図3、図4、及び/又は図5に描かれた画像データから生成される。少なくとも一実施例では、点群は、マスタード瓶604の点群画像データを含む。図6にはさらに、把持のセット606が描いてある。少なくとも一実施例では、把持のセット内の把持602が、マスタード瓶604向けに予測された成功把持又はポジティブ把持であり、この把持がロボット・システムによって実行されてもよい。
少なくとも一実施例では、クラッタ・シーンの点群観察を前提として、把持について生成モデルが学習されてもよい。この生成モデルは、ポジティブ把持の参照セットから学習されてもよいが、様々な要因により全く完璧という訳ではないことがある。生成された把持を評価しさらに改善するために、第2のモジュールが利用されてもよい。点群及び把持を条件として、評価器が、把持について品質スコアを予測してもよい。この情報は、把持を段階的に精緻化するためにも使用されることが可能である。様々な実施例では、把持生成から評価に至る6DOF把持パイプラインのすべてのステージにおいて、物体インスタンス情報が利用されてもよい。
少なくとも一実施例では、把持サンプラは、条件付きVAEであってもよく、点群X及び潜在変数zを前提として把持gを予測する確定関数であってもよい。P(z)=N(0,I)は、潜在空間の知られている確率密度関数であってもよい。把持の尤度は、以下のように書くことができる。
P(G|X)=∫P(G|X,z)P(z)dz
上記の式を最適化することは、潜在空間のすべての値を積分する必要があり得るので、処理しきれないことがある。処理できるようにするために、エンコーダQ(z|X,g)を使用して、点群Xと把持gの各対を潜在空間zにマッピングしてもよく、その一方でデコーダが、サンプリングされたzを前提として、把持を再構築してもよい。グラウンド・トゥルースの把持g∈G+と、予測された把持g’との間の再構築損失L(g’,g)を最小に抑えるように、分布Qと正規分布N(0,1)との間のKL発散ペナルティ
を用いてエンコーダ及びデコーダがともに訓練されてもよい。VAEへの入力は、図3に示すバイナリ・マスク、及び/又は図4若しくは図5に示す点群など、インスタンス・マスクを用いてシーンからセグメント化された標的物体の点群であってもよい。
配向及び並進の損失を組み合わせるために、再構築損失が以下のように定義されてもよい。
ここで、Tは、ロボット・グリッパ上の事前定義された点pのセットの変換である。推論中、エンコーダQは破棄されてもよく、潜在値はN(0,1)からサンプリングされてもよい。エンコーダもデコーダも、PointNet++アーキテクチャ及び/又はその変形形態などのアーキテクチャに基づいてもよく、ここで各点は、3D座標とともに特徴ベクトルを有してもよい。点群の各入力点の特徴は、それぞれエンコーダ及びデコーダにおいて把持g及び潜在変数zに連結されてもよい。
インスタンス情報は、物体について強力な事前知識を与えることができるが、これは現実的には全く正確という訳ではない。物体がオクルージョンされ、又は互いに非常に近くにあり、結果的にノイズの多い不足セグメント化や過剰セグメント化が生じ得るクラッタ状況が、これに該当する。セグメント化をシミュレーションにレンダリングするとき、ランダムなごま塩ノイズが物体の境界に加えられてもよく、部分的にオクルージョンされた物体を画像空間内の隣接する物体にランダムに統合して、実際の画像に対するインスタンスのセグメント化方法の不完全性が模倣される。
少なくとも一実施例では、把持サンプラは、ポジティブ把持だけで訓練されてもよいが、識別し除外する必要があり得る失敗把持を含むことがある。ポジティブ
な把持とネガティブ
な把持を含むことができる訓練データを用いて、把持スコアP(S|X
i,g)を予測する評価器が訓練されてもよい。評価器の入力は、標的物体の点群観察X
i=M
i(X)とすることができ、ここでXは、全シーンのクロッピング済み点群であってもよく、M
iは、物体のインスタンス・マスクであってもよい。実例のクロッピング済み点群を図5に示す。実現可能なすべての6DOF把持姿勢の空間は大きくなることがあるので、把持評価器P(S|X
i,g)を訓練するためにすべてのネガティブの把持をサンプリングすることは不可能であり得る。したがって、ポジティブ把持をわずかな並進及び配向により摂動させ、物体に衝突する把持、又は物体から遠すぎて物体を把持できない把持を選択することにより、訓練中にハード・ネガティブの把持とともに真のネガティブがサンプリングされてもよい。把持は、この計量基準によりランク付けされてもよく、閾値より上のものだけが選択されてもよい。
評価器により棄却された把持のかなりの割合が、頑健な把持に近接していることがある。この知見は、gの領域において局所的検索を実行するために活用されて、評価器スコアが反復的に改善されてもよい。いくつかの実例では、成功の確率を上げるため、たとえばP(S|Δg+g,X)>P(S|g,X)にするために、Δgがサンプリングされてもよい。勾配降下を使用して精緻化が見いだされてもよい。様々な実施例では、勾配の計算は複雑であり得る。メトロポリス・ヘイスティングス法のサンプリングが利用されてもよく、ここでランダムなΔgがサンプリングされ、確率
で把持g+Δgが許容されてもよい。このサンプリング方式は、勾配ベースのサンプリング方式に類似した性能をもたらすが、倍の速さで計算する。
図7は、一実施例による、他の物体の点群が、切り離された物体の点群と組み合わされた状態の、切り離された物体の点群及び把持のセットを示す。少なくとも一実施例では、点群は、図5〜図6に示す点群から導かれた3次元点群である。3次元点群は、クラッタ内の物体の画像データを含むRGB−D画像から生成されてもよい。少なくとも一実施例では、図2、図3、図4、図5、及び/又は図6に描かれた画像データから点群が生成される。少なくとも一実施例では、点群は、持ち手付きマグ702、マスタード瓶704、洗剤ボトル706、塩入れ708、及びボウル714の点群画像データを含む。図7にはさらに、把持のセット716が描いてある。少なくとも一実施例では、把持のセット716内の把持は、マスタード瓶604向けに予測された成功把持又はポジティブ把持であり、この把持がロボット・システムによって実行されてもよい。少なくとも一実施例では、物体の集まり内の他の物体に干渉する又はぶつかる1つ又は複数の把持718、たとえば洗剤ボトル706、持ち手付きマグ702、塩入れ708、及び/又はボウル714にぶつかる把持を除外するように、把持のセット716内の把持が削減される。
CollisionNetは、図7に示す点群又は他に示す点群など、全シーンの情報Xを前提として、クラッタを中心とする衝突スコアP(C|X,g)を予測してもよい。CollisionNet向けの訓練データは、
及び
であってもよい。全状態情報xを仮定して、衝突チェッカψを用いたシミュレーションにおいて、グラウンド・トゥルースのラベルが生成されてもよい。各バッチでは、バランスのとれた把持サンプリングが、参照セットG
refのサブセット内で利用されてもよく、この参照セットは、ポジティブとネガティブのセット(G
+,G
−)、ポジティブ把持を摂動させることにより生成されるハード・ネガティブ
、及び自由空間における把持G
freeから構成されてもよい。バランスのとれたサンプリングにより、G
+∪G
−を一様にサンプリングする間のテスト時間に、訓練及び汎化の安定性を改善することができる。点が物体に属するのかグリッパに属するのかを示すことができる追加のインジケータ機能を使用することにより、把持評価器と同様に、シーン/物体の点群X/X
iとグリッパの点群X
gが組み合わせされて単一の点群にされてもよい。次いで、PointNet++アーキテクチャなどのアーキテクチャが、把持姿勢gと物体点群Xとの間の相対情報を使用して把持を分類してもよい。CollisionNetは、交差エントロピー損失を使用して精緻化されてもよい。
複数の物体を安定した姿勢でランダムに並べることにより、訓練データが生成されてもよい。物体は、棄却サンプリング姿勢とともにシーンに付加されて、既存のクラッタに衝突しないことが保証されてもよい。シーンについて把持を生成するために、各物体のポジティブ把持とネガティブ把持が組み合わされてもよい。各シーンから、物体を中心とする複数の3Dクロップ(若干のノイズを含む)が、そのクロップの内側にあり得る把持とともに利用されてもよい。図5に示すものなどの3Dボックスのクロッピング済み点群が、ダウンサンプリングされて、点の数が減らされてもよい(たとえば4096個)。すべてのサンプラ及びVAEは、PointNetアーキテクチャなどのアーキテクチャに基づいてもよく、潜在空間の次元は2に設定されてもよい。決定された成功把持とぶつかる物体を判定するための推論中に、物体のインスタンスがセグメント化されてもよい。VAEサンプラは、多数の(たとえば、200個の)潜在値をサンプリングすることにより、標的物体の点群を前提とした把持を生成してもよい。把持は、メトロポリス・ヘイスティングス法を多数(たとえば25回)反復することにより、さらに精緻化されてもよい。様々な実施例では、推論全体にはおおよそ2.5秒かかってもよい。
少なくとも一実施例では、生成された把持を評価するために、2つの計量基準、すなわち成功率及びカバレッジが利用されてもよい。成功率は、衝突することなく物体を把持することに成功した把持の割合とすることができ、カバレッジは、任意の生成された把持の閾値(たとえば、2センチメートル)の範囲内にある、サンプリングされたグラウンド・トゥルース把持の割合とすることができる。未知の物体のホールドアウトされたテスト・セットを用いて、シミュレーションにおいてアブレーションがおこなわれてもよい。ランダムな安定した姿勢のこれらのテスト物体で生成されたクラッタ・シーンから、合成点群がレンダリングされてもよい。1つ又は複数のシミュレーション・アプリケーションを使用して、物理的相互作用がシミュレーションされてもよい。成功率−カバレッジのプロットの曲線下面積を使用して、アブレーション研究における様々なバリエーションの方法が比較されてもよい。成功率−カバレッジの曲線は、把持評価器によって予測される把持スコアをランク付けすることにより、計算されてもよい。
未知の3D環境における障害回避について、CollisionNetの有効性が、様々な従来のボクセル・ベースの発見的手法(たとえば、MoveIt!)と比較されてもよい。いくつかの実施例では、点の数(たとえば、100個)が、最も遠い点のサンプリングを使用してサンプリングされてもよい。サンプリングされた各点は、あるサイズ(たとえば2センチメートル)のボクセル立方体によって表されてもよい。グリッパのメッシュといずれかのボクセルとの交点を検査することにより、衝突検査がおこなわれてもよい。CollisionNetは、精度及びカバレッジの点で他のボクセル・ベースの発見的手法より優れていることがある。ボクセル・ベースの表示は、グリッパのメッシュが物体のオクルージョンされた部分と交差するとき、又は深度情報が欠落している場合には、衝突を捕捉できないことがある。ボクセル・ベースの衝突検査が失敗した事例において、CollisionNetは、衝突の正確な分類において高い(89.7%の)確度を有することができる。
従来のボクセル・ベースの手法は、衝突検査のためにボクセルが空間領域を拡張させることから、標的物体上の点に対応するボクセルをわずかに通ることがある良好な把持を棄却して、いくつかのフォールス・ネガティブをもたらすこともある。標的物体上のボクセルを衝突の有無に関して考慮しなければ、カバレッジはわずかに増大するが、その代償として把持の成功が損なわれることがある。なぜなら、実際には標的物体に衝突することがある把持を除外できないからである。CollisionNetは、こうしたバイアスに影響を受けないことが可能であり、部分的な点群において相対的な空間情報を推理することができる。
少なくとも一実施例では、物体のインスタンス情報を有する単一ステージのサンプラ及び評価器が、カスケード式の把持生成手法の代わりに利用されてもよい。把持がサンプリングされると、
を直接推定する単一の評価器が使用されてもよい。ポジティブの訓練セットは
であってもよく、ネガティブのセットは
であってもよい。その結果、いくつかのポジティブ把持g∈G
+は衝突することがあり、その結果スコアが低くなる。
少なくとも一実施例では、VAEは、シーン・レベルの情報よりも物体を中心とする観察から把持を学習することを得意としている。さらに、カスケード式アーキテクチャは、把持の頑健性を推理することを単独で得意とし得る把持評価器を有することと、衝突を予測することを得意とし得るCollisionNetとの間に、抽象化を課してもよい。
カスケード式把持サンプリング手法は、インスタンス不明のベースラインと比較されてもよい。インスタンス情報がなければ、ベースラインは、シーンの点群を使用することがある単一ステージの把持プランナになり得る。(インスタンス情報及びCollisionNetを使用する)カスケード式把持サンプラは、0.07のAUCを有することができ、0.001のAUCを有することができる物体インスタンス不明ベースラインよりも、成功率とカバレッジの両方の点で優れている。インスタンス不明モデルの一般的な失敗モードは、シーンにおいてどの物体を把持すべきかを変分サンプラが決定できない場合があることであり、潜在空間は複数の物体向けの把持に潜在的にマッピングされ、すべての物体について全体的な把持品質が低下する。
少なくとも一実施例では、カスケード式の把持合成手法は、実際のクラッタ・シーンにおける標的駆動型の把持について競争力のある性能を有することができ、GraspNetと呼ばれてもよいクラッタ不明の6DOFシステムを使用するベースライン方法よりも優れていることがある。従来のクラッタ不明6DOFは、インスタンスのセグメント化及びボクセル・ベースの衝突検査を使用する。
少なくとも一実施例では、物理的構成は、ロボットとグリッパとを含んでもよい。いくつかの実施例では、物理的構成は、平行顎グリッパを有するFranka Pandaロボットを含んでもよい。グリッパは、クライアント、外科用メス、ニードル、はさみ、又はレーザと交換されてもよい。グリッパの手首に装着されたカメラが、知覚のために利用されてもよい。いくつかの実施例では、グリッパの手首に装着されたIntel社のRealsense D415 RGB−Dカメラが、知覚のために使用されてもよい。YCB(イェール−CMU−バークレイ)データセットから得たものを含め、様々な形状、物理特性、及び視覚特性の一般的な家庭用物体及び台所用物体のセットが選択されてもよい。
少なくとも一実施例では、技法の性能は、把持すべき物体の(ランダムに事前計算された)固定順序を有する様々なシーンについて比較されてもよい。ロボットが同じシーンについて2回以内の試行で物体を把持できれば、把持は成功とみなされてもよい。すべての標的物体が完全に見える順番を決定してもよい。いくつかの実例では、選択された標的物体の半分がオクルージョンされてもよい。把持を生成するために、潜在値の数(たとえば200個)のバッチ・サイズがサンプリングされてもよく、それぞれの評価器ごとに閾値より下のスコアを有する把持が取り除かれてもよい。残りの把持から、最大スコアを有する把持が、実行されるものとして選択される。
少なくとも一実施例による結果が、表1を含む図8にまとめてある。説明したカスケード式の手法及び技法は、80.3%の成功率を達成でき、ベースラインの6DOF GraspNetの手法より約17.6%優れていることがある。さらに、CollisionNetがなければ、モデルの性能が大幅に低下することがある。2つの失敗事例は、把持が物体と衝突したが、物体中心の評価器はそれらの把持に対して高いスコアを予測するというものであり得る。これらの把持は、CollisionNetにより取り除かれることが可能である。第2の失敗モードは、ボクセル・ベースの表示がすべての衝突を捕捉できる訳ではないということに関する。
少なくとも一実施例では、標的物体は他の物体によって遮蔽されることがあり、サンプリングされた把持がすべて運動学的に実行不可能な場合がある。少なくとも一実施例では、(たとえばCollisionNetから得られた低スコアに少なくとも基づき決定された)標的物体が物理的に到達不可能な場合でも、技法は標的物体向けの潜在的な把持を生成することが必要な場合がある。潜在的な把持を前提として、標的物体向けに生成された把持と干渉する物体が識別されてもよい。遮蔽物体jは、シーンの点群から対応する物体の点を除去したとき、たとえば
のときに衝突スコアが最も大きく増加する物体として選択されてもよい。物体のインスタンス・マスクとテーブルのマスクを統合し、対応する点をテーブル平面に投影することにより、物体jが無いシーンのような幻覚を起こさせることが可能な修正された点群
が実現されてもよい。次いで遮蔽物体向けの把持が生成され、シーンから除外される。次いで、オクルージョンされていない物体向けに衝突しない把持が生成されてロボットがそれを回収してもよい。
少なくとも一実施例では、構造化クラッタ環境において新規物体向けの6DOFの把持を合成するための、学習ベースのフレームワークのための技法が開発される。様々な実施例では、オクルージョンがあることから衝突回避は不可欠であり得る。いくつかの実施例では、技法は、シミュレーションで訓練されただけであるにもかかわらず、実際のロボット・プラットフォーム上でクラッタ内の新規物体を把持する際に高い把持確度(たとえば、80.3%)を達成することができる。少なくとも一実施例では、技法は、設計によるグリッパの事前形状の衝突のみを考慮してもよく、動作計画には、生成された把持についてのさらなる処理がなお必要であってもよい。把持生成における軌道生成が、タスク計画アプリケーションにおいて考慮され利用されてもよい。
図9は、一実施例による、把持姿勢のセットを生成するためのプロセス900の実例を示す。少なくとも一実施例では、図10〜図43に記載し図示するコンピュータ・システムのうちの1つ又は複数など、1つ又は複数のコンピュータ・システムは、コンピュータ可読メモリに記憶された、図9に示し記載する動作をコンピュータ・システムに実行させる命令を実行する。少なくとも一実施例では、コンピュータ・システムは、図1に示すロボット・システムなどのロボット・システムである。ロボット・システムは、本明細書に記載及び図示するコンピュータ・システムのうちの1つ又は複数を組み込むことができる。
少なくとも一実施例では、プロセスはブロック902で開始され、コンピュータ・システムが複数の物体の画像データを取得する。少なくとも一実施例では、以下に記載するプロセス・ブロックのそれぞれは、1つのコンピュータ・システムによって実行されてもよく、又は複数の分散されたコンピュータ・システムによって実行されてもよい。少なくとも一実施例では、画像データは深度画像から得られる。画像データを含む実例の深度画像を図2に示す。画像データは、ロボットが把持することになる標的物体を含んでもよい。少なくとも一実施例では、深度画像はバイナリ・マスクを含んでもよい。バイナリ・マスクの実例を図3に示す。バイナリ・マスクは点のセットを含んでもよく、点の各セットは、複数の物体のうちの少なくとも1つの物体に対応する。少なくとも一実施例では、バイナリ・マスクの点のセットは、複数の物体のうちの1つの物体の内側輪郭及び外側輪郭を表す。少なくとも一実施例では、バイナリ・マスクの点のセットは、複数の物体に関連付けられた標的物体の少なくとも外側輪郭を表す。したがって、少なくとも一実施例では、バイナリ・マスクを使用して、複数の物体の中の各物体が切り離されてもよい。少なくとも一実施例では、バイナリ・マスクを使用して、標的物体が識別される。たとえば、バイナリ・マスクは、把持姿勢のセットを生成する対象である標的物体を識別するために、ロボット又は人間によって使用されてもよい。
少なくとも一実施例では、画像データは、1つ又は複数の深度カメラから取得される。少なくとも一実施例では、画像データは、RADAR、LIDAR、CTスキャナ、MRI撮像装置、超音波、又はx線マシンなど様々な3D撮像装置を用いて収集されてもよい。少なくとも一実施例では、画像データを収集するために使用される装置は、1つ又は複数の点群を生成する。他の実例では、3D撮像装置により生成される画像データが、1つ又は複数の点群に変換される。少なくとも一実施例では、3D撮像された他のタイプのデータが、生成及び評価のネットワークによって直接使用されて、把持姿勢が生成及び評価されてもよい。
少なくとも一実施例では、ブロック904において、複数の物体の画像データから3次元点群が生成される。少なくとも一実施例では、3次元点群は、バイナリ・マスクを含む深度画像から生成される。実例の3次元点群を図4に示す。
少なくとも一実施例では、ブロック906において、3次元点群のサイズが低減される。たとえば、3次元点群は、サイズの低減を達成するためにクロッピングされてもよい。少なくとも一実施例では、3次元点群のサイズを低減するためのベースとして境界ボリュームが使用される。実例の境界ボリュームを図4に示す。少なくとも一実施例では、境界ボリュームは3次元点群に適用されてもよい。いくつかの実装形態では、境界ボリュームの外側の画像データが3次元点群からクロッピングされて、修正済み3次元点群が生成される。少なくとも一実施例では、修正済み3次元点群を図5に示す。いくつかの実装形態では、境界ボリュームは、所定の体積を有する境界ボックスである。少なくとも一実施例では、3次元点群及び修正済み3次元点群は、標的物体を表す画像データを含む。いくつかの実装形態では、3次元点群及び修正済み3次元点群は、標的物体及び標的物体の近位にある付加的物体を表す画像データを含む。
少なくとも一実施例では、ブロック908において、標的物体の画像データが、標的物体の近位にある他の物体に関連付けられた画像データから切り離される。少なくとも一実施例では、標的物体の切り離された画像データは、3次元点群又は修正済み3次元点群にある。少なくとも一実施例では、標的物体の近位にある他の物体に関連付けられた画像データから標的物体の画像データを切り離すことにより、標的物体の画像データに限定された3次元点群が、3次元点群又は修正済み3次元点群から生成されることになる。標的物体の切り離された画像データを含む実例の3次元点群を図6に示す。
少なくとも一実施例では、ブロック910において、標的物体向けに把持姿勢のセットが生成される。標的物体向けの把持姿勢の実例のセットを図6に示す。少なくとも一実施例では、把持姿勢のセットは、標的物体に関連付けられた画像データを使用して生成される。少なくとも一実施例では、標的物体に関連付けられた画像データは、3次元点群にある。3次元点群は、標的物体に関連付けられた画像データを含むものに限定されてもよい。少なくとも一実施例では、標的物体の画像データを含む3次元点群は、図5に示す3次元点群など、別の1つ又は複数の物体の画像データを含む3次元点群に基づく修正済み3次元点群である。少なくとも一実施例では、他の物体は、標的物体を含む物体の集まりにある。
少なくとも一実施例では、ブロック910において生成される把持姿勢のセットは、1つ又は複数の予測把持を含む。少なくとも一実施例では、1つ又は複数の予測把持は、画像データの処理及びコンピュータ支援シミュレーションに基づき生成される。少なくとも一実施例では、1つ又は複数の予測把持はロボットによって生成される。少なくとも一実施例では、標的物体向けの把持姿勢のセットは、3次元点群に含まれている。たとえば、3次元点群は、標的物体の成功把持姿勢を含む把持姿勢のセットを含んでもよい。把持姿勢のセットの実例の3次元点群を図6に示す。
少なくとも一実施例では、標的物体の近位にある他の物体の画像データは、3次元点群に含まれる。いくつかの実装形態では、ブロック912において、他の物体の画像データを含む3次元点群が、標的物体向けの成功把持姿勢を含む把持姿勢のセットを含む3次元点群と組み合わされる。いくつかの実装形態では、3次元点群を組み合わせるプロセスにより、他の物体の画像データと、標的物体向けの成功把持姿勢を含む把持姿勢のセットとを含む組み合わされた3次元点群が生成される。他の物体の画像データと、標的物体向けの成功把持姿勢を含む把持姿勢のセットとを含む実例の3次元点群を、図7に示す。図7に示す3次元点群は、標的物体の点群画像データを含む。しかし示してあるように、少なくとも一実施例では、3次元点群は標的物体を除外してもよい。
少なくとも一実施例では、組み合わされた3次元点群がコンピュータ支援処理にかけられて、ロボットによって実行されたときに他の物体のうちの1つ又は複数に干渉又は接触することになる1つ又は複数の把持姿勢が識別される。少なくとも一実施例では、ブロック914において、識別された1つ又は複数の干渉把持姿勢が、標的物体向けの成功把持姿勢を含む把持姿勢のセットから除外される。少なくとも一実施例では、標的物体向けの成功把持姿勢を含む把持姿勢のセットを含む3次元点群は、識別された1つ又は複数の干渉把持姿勢に関連付けられた画像データを除去するように修正される。少なくとも一実施例では、把持姿勢の修正済みセットは、標的物体の近位にある他の物体の画像データに基づく標的物体向けの成功把持姿勢を含む。少なくとも一実施例では、把持姿勢の修正済みセットは、ロボットが標的物体の近位にある他の物体を回避しながら標的物体を把持できるようにする成功把持姿勢を含む。
少なくとも一実施例では、他の物体の画像データと、標的物体向けの成功把持姿勢を含む把持姿勢のセットとを含む組み合わされた3次元点群は、標的物体の画像データを含む3次元点群と組み合わされる。その結果得られる3次元点群は、標的物体の画像データと、他の物体の画像データと、標的物体向けの成功把持姿勢を含む把持姿勢のセットとを含む。少なくとも一実施例では、組み合わされた3次元点群がコンピュータ支援処理にかけられて、ロボットによって実行されたときに他の物体のうちの1つ又は複数に干渉又は接触することになる1つ又は複数の把持姿勢が識別される。少なくとも一実施例では、識別された1つ又は複数の干渉把持姿勢は、標的物体向けの成功把持姿勢を含む把持姿勢のセットから除外される。少なくとも一実施例では、標的物体向けの成功把持姿勢を含む把持姿勢のセットを含む3次元点群は、識別された1つ又は複数の干渉把持姿勢に関連付けられた画像データを除去するように修正される。少なくとも一実施例では、把持姿勢の修正済みセットは、標的物体の近位にある他の物体の画像データに基づく標的物体向けの成功把持姿勢を含む。少なくとも一実施例では、把持姿勢の修正済みセットは、ロボットが標的物体の近位にある他の物体を回避しながら標的物体を把持できるようにする成功把持姿勢を含む。
推論及び訓練の論理
図10Aは、1つ又は複数の実施例に関して推論及び/又は訓練の動作を実行するために使用される推論及び/又は訓練論理1015を示す。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて以下に提供される。
少なくとも一実施例では、推論及び/又は訓練論理1015は、1つ又は複数の実施例の態様において推論するように訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層を構成するための順伝播及び/若しくは出力の重み、及び/若しくは入力/出力データ、及び/若しくは他のパラメータを記憶するためのコード並びに/又はデータ・ストレージ1001を、限定することなく含んでもよい。少なくとも一実施例では、訓練論理1015は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ1001を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ1001には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU))を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、こうしたコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ1001は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを順伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、コード及び/又はデータ・ストレージ1001の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
少なくとも一実施例では、コード及び/又はデータ・ストレージ1001の任意の部分は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ1001は、キャッシュ・メモリ、ダイナミック・ランダム・アドレス可能メモリ(「DRAM」:dynamic randomly addressable memory)、スタティック・ランダム・アドレス可能メモリ(「SRAM」:static randomly addressable memory)、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ1001が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージを含むかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、推論及び/又は訓練論理1015は、1つ又は複数の実施例の態様において推論するために訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層に対応した、逆伝播及び/若しくは出力の重み、及び/若しくは入力/出力データを記憶するためのコード並びに/又はデータ・ストレージ1005を、限定することなく含んでもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1005は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを逆伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、訓練論理1015は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ1005を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ1005には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU)を含む論理が構成される。
少なくとも一実施例では、グラフ・コードなどのコードは、こうしたコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードさせる。少なくとも一実施例では、コード及び/又はデータ・ストレージ1005の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1005の任意の部分は、1つ又は複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1005は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1005が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ・メモリ、若しくは何らか他のタイプのストレージを備えるかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、コード及び/又はデータ・ストレージ1001と、コード及び/又はデータ・ストレージ1005は、別々のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1001と、コード及び/又はデータ・ストレージ1005は、組み合わされたストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1001と、コード及び/又はデータ・ストレージ1005は、部分的に組み合わされたストレージ構造で、部分的に別々のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1001とコード及び/又はデータ・ストレージ1005の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含まれてもよい。
少なくとも一実施例では、推論及び/又は訓練論理1015は、訓練及び/又は推論コード(たとえばグラフ・コード)に少なくとも部分的に基づく、又はそれにより示される論理演算及び/又は数学的演算を実行するための、整数及び/又は浮動小数点ユニットを含む1つ又は複数の算術論理演算ユニット(「ALU」)1010を、限定することなく含んでもよく、その結果が、アクティブ化ストレージ1020に記憶されるアクティブ化(たとえば、ニューラル・ネットワーク内の層若しくはニューロンからの出力値)を生成してもよく、これらは、コード及び/若しくはデータ・ストレージ1001、並びに/又はコード及び/若しくはデータ・ストレージ1005に記憶される入力/出力及び/又は重みパラメータのデータの関数である。少なくとも一実施例では、アクティブ化ストレージ1020に記憶されるアクティブ化は、命令又は他のコードを実行したことに応答して、ALU1010によって実行される線形代数計算又は行列ベースの計算に従って生成され、ここでコード及び/若しくはデータ・ストレージ1005並びに/又はデータ・ストレージ1001に記憶された重み値は、バイアス値、勾配情報、運動量値などの他の値、又は他のパラメータ若しくはハイパーパラメータとともにオペランドとして使用され、これらのいずれか又はすべてが、コード及び/若しくはデータ・ストレージ1005、又はコード及び/若しくはデータ・ストレージ1001、又はオン・チップ若しくはオフ・チップの別のストレージに記憶されてもよい。
少なくとも一実施例では、ALU1010は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路内に含まれるが、別の実施例では、ALU1010は、それらを使用するプロセッサ又は他のハードウェア論理デバイス若しくは回路(たとえばコプロセッサ)の外部にあってもよい。少なくとも一実施例では、ALU1010は、プロセッサの実行ユニット内に含まれてもよく、又は同じプロセッサ内にあるか異なるタイプの異なるプロセッサ(たとえば、中央処理装置、グラフィックス・プロセッシング・ユニット、固定機能ユニットなど)の間で分散されているかのいずれかであるプロセッサの実行ユニットによりアクセス可能なALUバンク内に、他のやり方で含まれてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1001、コード及び/又はデータ・ストレージ1005、並びにアクティブ化ストレージ1020は、同じプロセッサ又は他のハードウェア論理デバイス若しくは回路を共有してもよく、別の実施例では、それらは異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、或いは同じプロセッサ又は他のハードウェア論理デバイス若しくは回路と、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路との何らかの組合せにあってもよい。少なくとも一実施例では、アクティブ化ストレージ1020の任意の部分は、プロセッサのL1、L2、若しくはL3のキャッシュ、又はシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含まれてもよい。さらに、推論及び/又は訓練コードが、プロセッサ又は他のハードウェア論理若しくは回路にアクセス可能な他のコードとともに記憶されてもよく、プロセッサのフェッチ、デコード、スケジューリング、実行、リタイア、及び/又は他の論理回路を使用してフェッチ及び/又は処理されてもよい。
少なくとも一実施例では、アクティブ化ストレージ1020は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、アクティブ化ストレージ1020は、完全に又は部分的に、1つ若しくは複数のプロセッサ又は他の論理回路の内部にあってもよく、又は外部にあってもよい。少なくとも一実施例では、アクティブ化ストレージ1020が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ・メモリ、若しくは何らか他のタイプのストレージを備えるかの選択は、オン・チップ対オフ・チップの利用可能なストレージ、実行される訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、図10Aに示す推論及び/又は訓練論理1015は、グーグルのTensorFlow(登録商標)処理ユニット、Graphcore(商標)の推論処理ユニット(IPU)、又はIntel CorpのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(「ASIC」)と併せて使用されてもよい。少なくとも一実施例では、図10Aに示す推論及び/又は訓練論理1015は、中央処理装置(「CPU」)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」)などの他のハードウェアと併せて使用されてもよい。
図10Bは、少なくとも1つの実施例による、推論及び/又は訓練論理1015を示す。少なくとも一実施例では、推論及び/又は訓練論理1015は、ハードウェア論理を限定することなく含んでもよく、このハードウェア論理では、計算リソースが、ニューラル・ネットワーク内のニューロンの1つ若しくは複数の層に対応する重み値又は他の情報の専用のものであるか、又は他のやり方でそれらと併せてしか使用されない。少なくとも一実施例では、図10Bに示す推論及び/又は訓練論理1015は、グーグルからのTensorFlow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU)、又はインテルコーポレーションからのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(ASIC)と併せて使用されてもよい。少なくとも一実施例では、図10Bに示す推論及び/又は訓練論理1015は、中央処理装置(CPU)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)など他のハードウェアと併せて使用されてもよい。少なくとも一実施例では、推論及び/又は訓練論理1015は、限定することなく、コード及び/又はデータ・ストレージ1001、並びにコード及び/又はデータ・ストレージ1005を含み、これらを使用して、コード(たとえばグラフ・コード)、重み値、並びに/又はバイアス値、勾配情報、運動量値、及び/若しくは他のパラメータ若しくはハイパーパラメータ情報を含む他の情報を記憶してもよい。図10Bに示す少なくとも一実施例では、コード及び/又はデータ・ストレージ1001並びにコード及び/又はデータ・ストレージ1005のそれぞれは、それぞれ計算ハードウェア1002及び計算ハードウェア1006などの専用計算リソースに関連付けられる。少なくとも一実施例では、計算ハードウェア1002及び計算ハードウェア1006のそれぞれは、線形代数関数などの数学的関数を、それぞれコード及び/又はデータ・ストレージ1001並びにコード及び/又はデータ・ストレージ1005に記憶された情報に対してのみ実行する1つ又は複数のALUを備え、その結果は、アクティブ化ストレージ1020に記憶される。
少なくとも一実施例では、コード並びに/又はデータ・ストレージ1001及び1005のそれぞれ、並びに対応する計算ハードウェア1002及び1006は、ニューラル・ネットワークの異なる層にそれぞれ対応し、それにより、コード及び/又はデータ・ストレージ1001並びに計算ハードウェア1002との1つのストレージ/計算の対1001/1002から結果的に生じるアクティブ化は、ニューラル・ネットワークの概念的組織化を反映させるために、次のコード及び/又はデータ・ストレージ1005並びに計算ハードウェア1006とのストレージ/計算の対1005/1006への入力として提供される。少なくとも一実施例では、ストレージ/計算の対1001/1002、及び1005/1006は、2つ以上のニューラル・ネットワークの層に対応してもよい。少なくとも一実施例では、ストレージ/計算の対1001/1002、及び1005/1006の後に、又はそれと並列に、追加のストレージ/計算の対(図示せず)が、推論及び/又は訓練論理1015に含まれてもよい。
ニューラル・ネットワークの訓練及び導入
図11は、少なくとも一実施例による、ディープ・ニューラル・ネットワークの訓練及び導入を示す。少なくとも一実施例では、未訓練ニューラル・ネットワーク1106が、訓練データ・セット1102を使用して訓練される。少なくとも一実施例では、訓練フレームワーク1104は、PyTorchフレームワークであり、一方他の実施例では、訓練フレームワーク1104は、TensorFlow、Boost、Caffe、マイクロソフトCognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j、又は他の訓練フレームワークである。少なくとも一実施例では、訓練フレームワーク1104は、未訓練ニューラル・ネットワーク1106を訓練し、本明細書に記載の処理リソースを使用してそれが訓練されるのを可能にして、訓練済みニューラル・ネットワーク1108を生成する。少なくとも一実施例では、重みは、ランダムに選択されてもよく、又はディープ・ビリーフ・ネットワークを使用した事前訓練によって選択されてもよい。少なくとも一実施例では、訓練は、教師あり、一部教師あり、又は教師なしのいずれかのやり方で実行されてもよい。
少なくとも一実施例では、未訓練ニューラル・ネットワーク1106は教師あり学習を使用して訓練され、ここで訓練データ・セット1102は、入力に対する所望の出力と対になった入力を含み、又は訓練データ・セット1102は、既知の出力を有する入力を含み、ニューラル・ネットワーク1106の出力が手動で採点される。少なくとも一実施例では、未訓練ニューラル・ネットワーク1106は教師ありのやり方で訓練され、訓練データ・セット1102からの入力を処理し、結果として得られた出力を、予想の又は所望の出力のセットと比較する。少なくとも一実施例では、次いで、誤差が、未訓練ニューラル・ネットワーク1106を通って逆伝播される。少なくとも一実施例では、訓練フレームワーク1104は、未訓練ニューラル・ネットワーク1106を制御する重みを調節する。少なくとも一実施例では、訓練フレームワーク1104は、未訓練ニューラル・ネットワーク1106が、新規データ・セット1112などの入力データに基づき、結果1114などにおいて正しい答えを生成するのに好適な訓練済みニューラル・ネットワーク1108などのモデルに向かって、どれだけ良好に収束しているかを監視するツールを含む。少なくとも一実施例では、訓練フレームワーク1104は、未訓練ニューラル・ネットワーク1106を繰り返し訓練する一方、損失関数、及び確率的勾配降下法などの調整アルゴリズムを使用して、未訓練ニューラル・ネットワーク1106の出力を精緻化するように重みを調整する。少なくとも一実施例では、訓練フレームワーク1104は、未訓練ニューラル・ネットワーク1106が所望の精度に到達するまで未訓練ニューラル・ネットワーク1106を訓練する。少なくとも一実施例では、次いで訓練済みニューラル・ネットワーク1108を、任意の数の機械学習動作を実装するように導入することができる。
少なくとも一実施例では、未訓練ニューラル・ネットワーク1106は、教師なし学習を使用して訓練され、ここで未訓練ニューラル・ネットワーク1106は、ラベルなしデータを使用して自らを訓練しようとする。少なくとも一実施例では、教師なし学習の訓練データ・セット1102は、いかなる関連出力データ又は「グラウンド・トゥルース」データもない入力データを含む。少なくとも一実施例では、未訓練ニューラル・ネットワーク1106は、訓練データ・セット1102内でグループ化を学習することができ、個々の入力が、未訓練データ・セット1102にどのように関係しているかを判定することができる。少なくとも一実施例では、新規データ・セット1112の次元を低減するのに有用な動作を実行することができる訓練済みニューラル・ネットワーク1108内で教師なし訓練を使用して、自己組織化マップを生成することができる。少なくとも一実施例では、教師なし訓練を使用して異常検出を実行することもでき、異常検出は、新規データ・セット1112の通常のパターンから逸脱した、新規データ・セット1112内のデータ点を識別できるようにする。
少なくとも一実施例では、半教師あり学習が使用されてもよく、それは、ラベル付きデータとラベルなしデータが訓練データ・セット1102に混在している技法である。少なくとも一実施例では、訓練フレームワーク1104を使用して、伝達学習技法などによる漸次的学習が実行されてもよい。少なくとも一実施例では、漸次的学習により、訓練済みニューラル・ネットワーク1108は、初期訓練中に訓練済みニューラル・ネットワーク1108内に教え込まれた知識を忘れることなく、新規データ・セット1112に適合できるようになる。
データ・センタ
図12は、少なくとも一実施例が使用されてもよい例示的なデータ・センタ1200を示す。少なくとも一実施例では、データ・センタ1200は、データ・センタ・インフラストラクチャ層1210、フレームワーク層1220、ソフトウェア層1230、及びアプリケーション層1240を含む。
図12に示すように、少なくとも一実施例では、データ・センタ・インフラストラクチャ層1210は、リソース・オーケストレータ1212と、グループ化済みコンピューティング・リソース1214と、ノード・コンピューティング・リソース(「ノードC.R.」)1216(1)〜1216(N)とを含んでもよく、ここで「N」は正の整数を表す(他の図で使用されるものとは異なる整数「N」であってもよい)。少なくとも一実施例では、ノードC.R.1216(1)〜1216(N)は、任意の数の中央処理装置(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・ストレージ・デバイス1218(1)〜1218(N)(たとえば、ダイナミック読取り専用メモリ、半導体ストレージ・ドライブ又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」:virtual machine)、電源モジュール、及び冷却モジュールを含んでもよいが、これらに限定されない。少なくとも一実施例では、ノードC.R.1216(1)〜1216(N)のうち1つ又は複数のノードC.R.は、上述したコンピューティング・リソースのうちの1つ又は複数を有するサーバであってもよい。
少なくとも一実施例では、グループ化済みコンピューティング・リソース1214は、1つ若しくは複数のラック(図示せず)内に収容されたノードC.R.の別々のグループ、又は様々なグラフィカル・ロケーション(同じく図示せず)においてデータ・センタに収容された多数のラックを含んでもよい。少なくとも一実施例では、グループ化済みコンピューティング・リソース1214内のノードC.R.の別々のグループは、1つ若しくは複数のワークロードをサポートするように構成又は配分されてもよいグループ化済みのコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含んでもよい。少なくとも一実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のラック内でグループ化されて、1つ又は複数のワークロードをサポートするためのコンピュート・リソースが提供されてもよい。少なくとも一実施例では、1つ又は複数のラックはまた、任意の数の電源モジュール、冷却モジュール、及びネットワーク・スイッチを任意の組合せで含んでもよい。
少なくとも一実施例では、リソース・オーケストレータ1212は、1つ又は複数のノードC.R.1216(1)〜1216(N)及び/若しくはグループ化済みコンピューティング・リソース1214を構成してもよく、又は他のやり方で制御してもよい。少なくとも一実施例では、リソース・オーケストレータ1212は、データ・センタ1200用のソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含んでもよい。少なくとも一実施例では、リソース・オーケストレータ1012は、ハードウェア、ソフトウェア、又はこれらの何らかの組合せを含んでもよい。
図12に示す少なくとも一実施例では、フレームワーク層1220は、ジョブ・スケジューラ1222、構成マネージャ1224、リソース・マネージャ1226、及び分配ファイル・システム1228を含む。少なくとも一実施例では、フレームワーク層1220は、ソフトウェア層1230のソフトウェア1232、及び/又はアプリケーション層1240の1つ若しくは複数のアプリケーション1242をサポートするためのフレームワークを含んでもよい。少なくとも一実施例では、ソフトウェア1232又はアプリケーション1242はそれぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アジュールによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含んでもよい。少なくとも一実施例では、フレームワーク層1220は、大規模なデータ処理(たとえば「ビック・データ」)のために分配ファイル・システム1228を使用することができるApache Spark(登録商標)(以下「Spark」)など、無料でオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってもよいが、これに限定されない。少なくとも一実施例では、ジョブ・スケジューラ1232は、データ・センタ1200の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含んでもよい。少なくとも一実施例では、構成マネージャ1224は、ソフトウェア層1230、並びに大規模なデータ処理をサポートするためのSpark及び分配ファイル・システム1228を含むフレームワーク層1220などの異なる層を構成することが可能であってもよい。少なくとも一実施例では、リソース・マネージャ1226は、分配ファイル・システム1228及びジョブ・スケジューラ1222をサポートするようにマッピング若しくは配分されたクラスタ化済み又はグループ化済みのコンピューティング・リソースを管理することが可能であってもよい。少なくとも一実施例では、クラスタ化済み又はグループ化済みのコンピューティング・リソースは、データ・センタ・インフラストラクチャ層1210にあるグループ化済みコンピューティング・リソース1214を含んでもよい。少なくとも一実施例では、リソース・マネージャ1226は、リソース・オーケストレータ1212と連携して、これらのマッピング又は配分されたコンピューティング・リソースを管理してもよい。
少なくとも一実施例では、ソフトウェア層1230に含まれるソフトウェア1232は、ノードC.R.1216(1)〜1216(N)、グループ化済みコンピューティング・リソース1214、及び/又はフレームワーク層1220の分配ファイル・システム1228のうちの少なくとも一部分によって使用されるソフトウェアを含んでもよい。少なくとも一実施例では、1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含んでもよいが、これらに限定されない。
少なくとも一実施例では、アプリケーション層1240に含まれるアプリケーション1242は、ノードC.R.1216(1)〜1216(N)、グループ化済みコンピューティング・リソース1214、及び/又はフレームワーク層1220の分配ファイル・システム1228のうちの少なくとも一部分によって使用される1つ若しくは複数のタイプのアプリケーションを含んでもよい。少なくとも一実施例では、1つ若しくは複数のタイプのアプリケーションは、任意の数のゲノム学アプリケーション、認識コンピュート、並びに訓練若しくは推論のソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、TensorFlow、Caffeなど)を含むアプリケーション及び機械学習アプリケーション、又は1つ若しくは複数の実施例と併せて使用される他の機械学習アプリケーションを含んでもよいが、これらに限定されない。
少なくとも一実施例では、構成マネージャ1224、リソース・マネージャ1226、及びリソース・オーケストレータ1212のうちのいずれかは、任意の技術的に実行可能なやり方で取得された任意の量及びタイプのデータに基づき、任意の数及びタイプの自己修正措置を実装してもよい。少なくとも一実施例では、自己修正措置は、データ・センタ1200のデータ・センタ演算子が、不良の恐れのある構成を決定しないようにし、十分に利用されていない且つ/又は性能の低いデータ・センタの部分をなくせるようにしてもよい。
少なくとも一実施例では、データ・センタ1200は、1つ若しくは複数の機械学習モデルを訓練し、又は本明細書に記載の1つ若しくは複数の実施例による1つ若しくは複数の機械学習モデルを使用して情報を予測若しくは推論するためのツール、サービス、ソフトウェア、又は他のリソースを含んでもよい。たとえば、少なくとも一実施例では、機械学習モデルは、データ・センタ1200に関して上述したソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練されてもよい。少なくとも一実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練済み機械学習モデルは、本明細書に記載の1つ又は複数の技法によって計算された重みパラメータを使用することにより、データ・センタ1200に関して上述したリソースを使用して、情報を推論又は予測するために使用されてもよい。
少なくとも一実施例では、データ・センタは、上述したリソースを使用して訓練及び/又は推論を実行するために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、又は他のハードウェアを使用してもよい。さらに、上述した1つ又は複数のソフトウェア及び/又はハードウェアのリソースは、画像認識、音声認識、又は他の人工知能サービスなどの情報の訓練又は推論の実行を、ユーザが行えるようにするためのサービスとして構成されてもよい。
推論及び/又は訓練論理1015を使用して、1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作が実行される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図12のシステムにおいて使用されてもよい。少なくとも一実施例では、1つ又は複数の点群に基づいて把持姿勢のセットを決定するシステムは、上に示し記載したようにコンピュータ・システムを使用して構築されることが可能である。
自律車両
図13Aは、少なくとも一実施例による自律車両1300の例を示す。少なくとも一実施例では、自律車両1300(或いは、本明細書において「車両1300」と呼ばれる)は、限定することなく、車、トラック、バス、及び/又は1人若しくは複数の乗員を収容する別のタイプの車両などの乗用車とすることができる。少なくとも一実施例では、車両1300は、貨物運搬用のセミ・トラクタのトレーラ・トラックであってもよい。少なくとも一実施例では、車両1300は、航空機、ロボット車両、又は他の種類の車両であってもよい。
自律車両は、米国運輸省の一部門である全米高速道路交通安全局(「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、及びこの規格の旧版及び新版)により定義される自動化レベルという観点から説明されてもよい。少なくとも一実施例では、車両1300は、自律運転レベルのレベル1〜レベル5のうちの1つ又は複数による機能性に対応可能であってもよい。たとえば、少なくとも一実施例では、車両1300は、実施例に応じて、条件付き自動化(レベル3)、高度自動化(レベル4)、及び/又は完全自動化(レベル5)に対応可能であってもよい。
少なくとも一実施例では、車両1300は、限定することなく、シャシ、車両本体、ホイール(2本、4本、6本、8本、18本など)、タイヤ、車軸、及び車両の他の構成要素などの構成要素を含んでもよい。少なくとも一実施例では、車両1300は、限定することなく、内燃機関、ハイブリッド電力プラント、完全電気エンジン、及び/又は別のタイプの推進システムなどの推進システム1350を含んでもよい。少なくとも一実施例では、推進システム1350は、車両1300のドライブ・トレインに連結されてもよく、ドライブ・トレインは、限定することなく、車両1300の推進を可能にするためのトランスミッションを含んでもよい。少なくとも一実施例では、推進システム1350は、スロットル/アクセル1352からの信号を受信したことに応答して、制御されてもよい。
少なくとも一実施例では、限定することなくハンドルを含んでもよい操縦システム1354は、推進システム1350が動作しているときに(たとえば、車両1300が動いているときに)車両1300を(たとえば所望の経路又はルートに沿って)操縦するために使用される。少なくとも一実施例では、操縦システム1354は、操縦アクチュエータ1356から信号を受信してもよい。少なくとも一実施例では、ハンドルは、完全自動化(レベル5)の機能性に関しては任意選択であってもよい。少なくとも一実施例では、ブレーキ・アクチュエータ1348及び/又はブレーキ・センサからの信号を受信したことに応答して車両ブレーキを動作させるために、ブレーキ・センサ・システム1346が使用されてもよい。
少なくとも一実施例では、1つ又は複数のシステム・オン・チップ(「SoC」:system on chip)(図13Aには示さず)及び/若しくはグラフィックス・プロセッシング・ユニット(「GPU」)を限定することなく含んでもよいコントローラ1336は、車両1300の1つ又は複数の構成要素及び/若しくはシステムに(たとえば、コマンドを表す)信号を提供する。たとえば、少なくとも一実施例では、コントローラ1336は、ブレーキ・アクチュエータ1348を介して車両ブレーキを動作させるための信号、操縦アクチュエータ1356を介して操縦システム1354を動作させるための信号、スロットル/アクセル1352を介して推進システム1350を動作させるための信号を送信してもよい。少なくとも一実施例では、コントローラ1336は、自律運転を可能にし、且つ/又は運転車両1300において人間のドライバを支援するために、センサ信号を処理し、動作コマンド(たとえばコマンドを表す信号)を出力する1つ又は複数の搭載(たとえば一体型の)コンピューティング・デバイス(たとえば、スーパーコンピュータ)を含んでもよい。少なくとも一実施例では、コントローラ1336は、自律運転機能のための第1のコントローラ、機能的安全機能のための第2のコントローラ、人工知能機能(たとえば、コンピュータ・ビジョン)のための第3のコントローラ、インフォテイメント機能のための第4のコントローラ、緊急事態における冗長性のための第5のコントローラ、及び/又は他のコントローラを含んでもよい。少なくとも一実施例では、単一のコントローラが、上記機能性のうちの2つ以上に対処してもよく、2つ以上のコントローラが、単一の機能性に対処してもよく、且つ/又はこれらの何らかの組合せであってもよい。
少なくとも一実施例では、コントローラ1336は、1つ又は複数のセンサから受信したセンサ・データ(たとえば、センサ入力)に応答して、車両1300の1つ又は複数の構成要素及び/若しくはシステムを制御するための信号を提供する。少なくとも一実施例では、センサ・データは、たとえば限定することなく、全地球的航法衛星システム(「GNSS」:global navigation satellite system)センサ1358(たとえば、全地球測位システム・センサ)、RADARセンサ1360、超音波センサ1362、LIDARセンサ1364、慣性計測装置(「IMU」:inertial measurement unit)センサ1366(たとえば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイクロフォン1396、ステレオ・カメラ1368、広角カメラ1370(たとえば、魚眼カメラ)、赤外線カメラ1372、周囲カメラ1374(たとえば、360度カメラ)、長距離カメラ(図13Aには示さず)、中距離カメラ(図13Aには示さず)、(たとえば、車両1300のスピードを計測するための)スピード・センサ1344、振動センサ1342、操縦センサ1340、(たとえば、ブレーキ・センサ・システム1346の一部分としての)ブレーキ・センサ、及び/又は他のタイプのセンサから、受信されてもよい。
少なくとも一実施例では、コントローラ1336のうちの1つ又は複数は、車両1300の計器クラスタ1332からの(たとえば入力データによって表される)入力を受信し、ヒューマン・マシン・インターフェース(「HMI」:human−machine interface)ディスプレイ1334、可聴アナンシエータ、拡声器を介して、且つ/又は車両1300の他の構成要素を介して、(たとえば、出力データ、ディスプレイ・データなどによって表される)出力を提供してもよい。少なくとも一実施例では、出力は、車両速度、スピード、時間、地図データ(たとえば、ハイ・デフィニション・マップ(図13Aには示さず)、ロケーション・データ(たとえば、地図上などの車両1300のロケーション)、方向、他車両のロケーション(たとえば、占有グリッド)、コントローラ1336が感知した物体及び物体の状態についての情報などの情報を含んでもよい。たとえば、少なくとも一実施例では、HMIディスプレイ1334は、1つ若しくは複数の物体(たとえば、道路標識、警告標識、信号の変化など)の存在についての情報、及び/又は車両が行った、行っている、又はこれから行う運転操作についての情報(たとえば、現在車線変更中、3.22km(2マイル)先の出口34Bを出る、など)を表示してもよい。
少なくとも一実施例では、車両1300はさらにネットワーク・インターフェース1324を含み、このネットワーク・インターフェースは、1つ又は複数のネットワークを介して通信するためのワイヤレス・アンテナ1326及び/又はモデムを使用してもよい。たとえば、少なくとも一実施例では、ネットワーク・インターフェース1324は、ロング・ターム・エボリューション(「LTE」:Long−Term Evolution)、広帯域符号分割多元接続(「WCDMA(登録商標)」:Wideband Code Division Multiple Access)、ユニバーサル・モバイル・テレコミュニケーション・システム(「UMTS」:Universal Mobile Telecommunications System)、グローバル・システム・フォー・モバイル・コミュニケーションズ(「GSM」:Global System for Mobile communication)、IMT−CDMAマルチ・キャリア(「CDMA2000」)ネットワークなどを介して通信可能であってもよい。また、少なくとも一実施例では、ワイヤレス・アンテナ1326は、Bluetooth、Bluetooth Low Energy (「LE」:Low Energy)、Z−Wave、ZigBeeなどのローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどの低電力広域ネットワーク(「LPWAN」:low power wide−area network)を使用して、環境内の物体同士間(たとえば車両、モバイル・デバイスなど)での通信を可能にしてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図13Aのシステムにおいて使用されてもよい。たとえば電気自動車については、本明細書に記載の技法を使用して自動車を接続し充電するために、ロボット・アームが使用されてもよい。把持の成功は、充電接続の成功として判定されてもよい。
図13Bは、少なくとも一実施例による図13Aの自律車両1300についてカメラのロケーション及び視野の例を示す。少なくとも一実施例では、カメラ及びそれぞれの視野は、一例の実施例であり、限定するものではない。たとえば、少なくとも一実施例では、追加及び/又は代替のカメラが含まれてもよく、且つ/又はカメラが車両1300の異なるロケーションに位置付けられてもよい。
少なくとも一実施例では、カメラのカメラ・タイプは、車両1300の構成要素及び/又はシステムとともに使用できるように適合されていてもよいデジタル・カメラを含んでもよいが、これに限定されない。少なくとも一実施例では、カメラは、自動車安全性要求レベル(「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つ又は複数のカメラは、カメラの画像データ捕捉性能を妨げる恐れのある迷光及び車両1300内部からの反射(たとえば、ダッシュボードからフロントガラスに反射される反射)をなくすために、カスタム設計の(3次元(「3D」:three−dimensional)印刷された)アセンブリなどの取付けアセンブリに取り付けられてもよい。ドアミラー取付けアセンブリを参照すると、少なくとも一実施例では、ドアミラー・アセンブリは、カメラ取付けプレートがドアミラーの形の合うように、カスタムで3D印刷されてもよい。少なくとも一実施例では、カメラは、ドアミラーと一体であってもよい。少なくとも一実施例では、サイド・ビュー・カメラについて、カメラはこの場合もキャビンの各角にある4本のピラーに一体化されてもよい。
少なくとも一実施例では、車両1300前方の環境の一部分を含む視野を有するカメラ(たとえば正面カメラ)は周囲のビューに対して使用されて、正面の経路及び障害物を識別しやすくするとともに、コントローラ1336及び/又は制御SoCのうちの1つ又は複数とともに使用されて、占有グリッドの生成及び/又は好ましい車両経路の判定に不可欠な情報の提供を補助してもよい。少なくとも一実施例では、正面カメラを使用して、緊急ブレーキ、歩行者検出、及び衝突回避を限定することなく含む、LIDARと同様のADAS機能のうちの多くが実行されてもよい。少なくとも一実施例では、正面カメラはまた、車線逸脱警告(「LDW」:Lane Departure Warnings)、自律クルーズ・コントロール(「ACC」:Autonomous Cruise Control)、及び/又は交通標識認識などの他の機能を限定することなく含むADASの機能及びシステムのために使用されてもよい。
少なくとも一実施例では、たとえばCMOS:complementary metal oxide semiconductor(「相補型金属酸化膜半導体」)カラー撮像装置を含む単眼カメラのプラットフォームを含む様々なカメラが、正面構成で使用されてもよい。少なくとも一実施例では、周囲からビューに入ってくる物体(たとえば歩行者、クロス・トラフィック、又は自転車)を感知するために、広角カメラ1370が使用されてもよい。図13Bには1つの広角カメラ1370しか示していないが、他の実施例では、車両1300には(ゼロを含む)任意の数の広角カメラが存在してもよい。少なくとも一実施例では、特にニューラル・ネットワークがそれに対してまだ訓練されていない物体について、深度ベースの物体検出のために、任意の数の長距離カメラ1398(たとえば、長距離ビューのステレオ・カメラの対)が使用されてもよい。少なくとも一実施例では、長距離カメラ1398はまた、物体検出及び分類、並びに基本的な物体追跡に使用されてもよい。
少なくとも一実施例では、任意の数のステレオ・カメラ1368は、正面構成にも含まれてよい。少なくとも一実施例では、1つ又は複数のステレオ・カメラ1368は、拡張可能な処理ユニットを備えた一体型制御ユニットを含んでもよく、この制御ユニットは、一体型のコントローラ・エリア・ネットワーク(「CAN」:Controller Area Network)又はイーサネット(登録商標)・インターフェースを単一チップ上に有するプログラム可能論理(「FPGA」)及びマルチ・コア・マイクロプロセッサを提供してもよい。少なくとも一実施例では、こうしたユニットは、画像内のすべての点に対する距離推定を含め、車両1300の環境の3Dマップを生成するのに使用されてもよい。少なくとも一実施例では、ステレオ・カメラ1368のうちの1つ又は複数は、限定することなくコンパクト・ステレオ・ビジョン・センサを含んでもよく、このセンサは、車両1300からターゲット物体までの距離を測定し、生成された情報(たとえば、メタデータ)を使用して自律緊急ブレーキ及び車線逸脱警告の機能をアクティブ化することができる2つのカメラ・レンズ(左右に1つずつ)及び画像処理チップを、限定することなく含んでもよい。少なくとも一実施例では、本明細書に記載のものに加えて、又はその代わりに、他のタイプのステレオ・カメラ1368が使用されてもよい。
少なくとも一実施例では、車両1300の側方の環境の一部分を含む視野を有するカメラ(たとえば、サイド・ビュー・カメラ)が、周囲のビューのために使用されて、占有グリッドの作製及び更新、並びに側面衝突警告の生成のために使用される情報を提供してもよい。たとえば、少なくとも一実施例では、周囲カメラ1374(たとえば図13Bに示すように4つの周囲カメラ)を、車両1300に配置することができる。少なくとも一実施例では、周囲カメラ1374は、限定することなく、任意の数及び組合せの広角カメラ、魚眼カメラ、360度カメラ及び/又は同様のカメラを含んでもよい。たとえば、少なくとも一実施例では、4つの魚眼カメラが、車両1300の前方、後方、及び側方に配置されてもよい。少なくとも一実施例では、車両1300は、3つの周囲カメラ1374(たとえば、左、右、及び後方)を使用してもよく、第4の周囲カメラとして、1つ又は複数の他のカメラ(たとえば正面カメラ)を活用してもよい。
少なくとも一実施例では、車両1300後方の環境の一部分を含む視野を有するカメラ(たとえば、リア・ビュー・カメラ)が、駐車支援、周囲のビュー、後方衝突警告のために使用されて、占有グリッドの作製及び更新がなされてもよい。少なくとも一実施例では、本明細書に記載の正面カメラとしても好適なカメラ(たとえば、長距離カメラ1398、及び/又は中距離カメラ1376、ステレオ・カメラ1368)、赤外線カメラ1372など)を含むが、これらに限定されない多種多様なカメラが使用されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図13Bのシステムにおいて使用されてもよい。
図13Cは、少なくとも一実施例による図13Aの自律車両1300の例示的システム・アーキテクチャを示すブロック図である。少なくとも一実施例では、図13Cの車両1300の構成要素、特徴、及びシステムのそれぞれは、バス1302を介して接続されるものとして示される。少なくとも一実施例では、バス1302は、限定することなく、CANデータ・インターフェース(或いは、本明細書において(CANバス)と呼ばれる)を含んでもよい。少なくとも一実施例では、CANは、ブレーキの作動、加速、ブレーキ制御、操縦、フロントガラス・ワイパなど、車両1300の様々な特徴及び機能の制御を補助するために使用される車両1300内部のネットワークであってもよい。少なくとも一実施例では、バス1302は、それぞれが独自の一意の識別子(たとえばCAN ID)をもつ数十又はさらには数百のノードを有するように構成されてもよい。少なくとも一実施例では、バス1302は、ハンドル角度、対地スピード、エンジンの毎分回転数(「RPM」:revolutions per minute)、ボタン位置、及び/又は他の車両状態インジケータを見いだすように読み取られてもよい。少なくとも一実施例では、バス1302は、ASILのBに準拠したCANバスであってもよい。
少なくとも一実施例では、CANに加えて、又はその代わりに、FlexRay及び/又はEthernet(登録商標)プロトコルが使用されてもよい。少なくとも一実施例では、バス1302を形成する任意の数のバスが存在してもよく、これには、限定することなく、ゼロ以上のCANバス、ゼロ以上のFlexRayバス、ゼロ以上のEthernet(登録商標)バス、及び/又は他のプロトコルを使用するゼロ以上の他のタイプのバスが含まれてもよい。少なくとも一実施例では、2つ以上のバスを使用して異なる機能が実行されてもよく、且つ/又はそれらを使用して冗長性が与えられてもよい。たとえば、第1のバスが衝突回避機能のために使用され、第2のバスが作動制御のために使用されてもよい。少なくとも一実施例では、バス1302の各バスは、車両1300の構成要素のいずれかと通信してもよく、バス1302のうちの2つ以上のバスが対応する構成要素と通信してもよい。少なくとも一実施例では、任意の数のシステム・オン・チップ(「SoC」)1304(SoC1304(A)及びSoC1304(B)など)のそれぞれ、コントローラ1336のそれぞれ、及び/又は車両内の各コンピュータは、同じ入力データ(たとえば、車両1300のセンサからの入力)にアクセス可能であってもよく、CANバスなどの共通のバスに接続されてもよい。
少なくとも一実施例では、車両1300は、図13Aに関して本明細書に記載するものなど、1つ又は複数のコントローラ1336を含んでもよい。少なくとも一実施例では、コントローラ1336は、様々な機能に使用されてもよい。少なくとも一実施例では、コントローラ1336は、車両1300の様々な他の構成要素及びシステムのうちの任意のものに結合されてもよく、車両1300、車両1300の人工知能、車両1300のインフォテイメント及び/又は他の機能の制御に使用されてもよい。
少なくとも一実施例では、車両1300は、任意の数のSoC1304を含んでもよい。少なくとも一実施例では、SoC1304のそれぞれは、限定することなく、中央処理装置(「CPU」)1306、グラフィックス・プロセッシング・ユニット(「GPU」)1308、プロセッサ1310、キャッシュ1312、アクセラレータ1314、データ・ストア1316、及び/又は図示していない他の構成要素及び特徴を含んでもよい。少なくとも一実施例では、車両1300を様々なプラットフォーム及びシステムにおいて制御するために、SoC1304が使用されてもよい。たとえば、少なくとも一実施例では、SoC1304は、1つ又は複数のサーバ(図13Cには示さず)からネットワーク・インターフェース1324を介して地図のリフレッシュ及び/又は更新を得ることができるハイ・デフィニション(「HD」:High Definition)マップ1322を有するシステム(たとえば車両1300のシステム)に組み込まれてもよい。
少なくとも一実施例では、CPU1306は、CPUクラスタ、又はCPUコンプレックス(或いは本明細書において「CCPLEX」と呼ばれる)を含んでもよい。少なくとも一実施例では、CPU1306は、複数のコア及び/又はレベル2(「L2」)キャッシュを含んでもよい。たとえば、少なくとも一実施例では、CPU1306は、コヒーレントなマルチプロセッサ構成において8つのコアを含んでもよい。少なくとも一実施例では、CPU1306は、4つのデュアル・コア・クラスタを含んでもよく、ここで各クラスタは、専用のL2キャッシュ(たとえば、2メガバイト(MB)のL2キャッシュ)を有する。少なくとも一実施例では、CPU1306(たとえば、CCPLEX)は、CPU1306のクラスタの任意の組合せを、任意の所与の時間にアクティブ化できるようにする同時のクラスタ動作をサポートするように構成されてもよい。
少なくとも一実施例では、CPU1306のうちの1つ又は複数は、電力管理機能を実装してもよく、この機能は限定することなく、以下の特徴のうちの1つ又は複数を含む:個々のハードウェア・ブロックが、アイドル時に自動的にクロック・ゲート制御されて動的電力を節約することができる;割込み待ち(「WFI」:Wait for Interrupt)/イベント待ち(「WFE」:Wait for Event)命令の実行に起因してコアが能動的に命令を実行していないとき、各コア・クロックをゲート制御することができる;各コアを独立して電力ゲート制御することができる;すべてのコアがクロック・ゲート制御又は電力ゲート制御されるとき、各コア・クラスタを独立してクロック・ゲート制御することができる;且つ/又はすべてのコアが電力ゲート制御されるとき、各コア・クラスタを独立して電力ゲート制御することができる。少なくとも一実施例では、CPU1306はさらに、電力状態を管理するための拡張アルゴリズムを実装してもよく、ここで、許容された電力状態及び予想されるウェイクアップ時間が指定され、コア、クラスタ、及びCCPLEXが入るべき最良の電力状態はどれかを、ハードウェア/マイクロコードが判定する。少なくとも一実施例では、処理コアは、作業がマイクロコードにオフロードされた状態で、電力状態に入る簡単なシーケンスをソフトウェアにおいてサポートしてもよい。
少なくとも一実施例では、GPU1308は、統合されたGPU(或いは、本明細書において「iGPU」と呼ばれる)を含んでもよい。少なくとも一実施例では、GPU1308は、プログラム可能であってもよく、並列なワークロードに対して効率的であってもよい。少なくとも一実施例では、GPU1308は、拡張テンソル命令セットを使用してもよい。少なくとも一実施例では、GPU1308は、1つ又は複数のストリーミング・マイクロプロセッサを含んでもよく、ここで各ストリーミング・マイクロプロセッサは、レベル1(「L1」)キャッシュ(たとえば少なくとも96KBのストレージ容量を有するL1キャッシュ)を含んでもよく、2つ以上のストリーミング・マイクロプロセッサは、L2キャッシュ(たとえば、512KBのストレージ容量を有するL2キャッシュ)を共有してもよい。少なくとも一実施例では、GPU1308は、少なくとも8つのストリーミング・マイクロプロセッサを含んでもよい。少なくとも一実施例では、GPU1308は、コンピュート・アプリケーション・プログラミング・インターフェース(API:application programming interface)を使用してもよい。少なくとも一実施例では、GPU1308は、1つ又は複数の並列なコンピューティング・プラットフォーム、及び/又はプログラミング・モジュール(たとえば、NVIDIAのCUDAモデル)を使用してもよい。
少なくとも一実施例では、GPU1308のうちの1つ又は複数は、自動車用及び組み込まれたユース・ケースにおいて最良の性能になるように電力最適化されてもよい。たとえば、少なくとも一実施例では、GPU1308は、フィン電界効果トランジスタ(「FinFET」:Fin field−effect transistor)回路上で作製することができる。少なくとも一実施例では、各ストリーミング・マイクロプロセッサは、複数のブロックに区分けされた多数の混合精度の処理コアを組み込んでもよい。たとえば、限定することなく64個のPF32コアと、32個のPF64コアを、4つの処理ブロックに区分けすることができる。少なくとも一実施例では、各処理ブロックに、16個のFP32コア、8個のFP64コア、16個のINT32コア、深層学習の行列演算用の2つの混合精度のNVIDIA Tensorコア、レベルゼロ(「L0」)命令キャッシュ、ワープ・スケジューラ、ディスパッチ・ユニット、及び/又は64KBのレジスタ・ファイルを配分することができる。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、整数と浮動小数点の独立した並列のデータ経路を含み、コンピュータ処理とアドレッシング計算を混用することによってワークロードの効率的な実行を実現する。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、独立したスレッド・スケジューリング機能を含み、並列スレッド間でよりきめ細かい同期及び連携を可能にしてもよい。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、性能を向上させると同時にプログラミングを簡単にするために、L1データ・キャッシュと共有メモリ・ユニットの組合せを含んでもよい。
少なくとも一実施例では、GPU1308のうちの1つ又は複数は、高帯域幅メモリ(「HBM」:high bandwidth memory)及び/又は16GBのHBM2メモリ・サブシステムを含み、いくつかの例では、約900GB/秒のピーク・メモリ帯域幅を提供してもよい。少なくとも一実施例では、HBMメモリに加えて、又はその代わりに、グラフィックス・ダブル・データ・レート・タイプの5つの同期ランダム・アクセス・メモリ(「GDDR5」:graphics double data rate type five)などの同期グラフィックス・ランダム・アクセス・メモリ(「SGRAM」:synchronous graphics random−access memory)が使用されてもよい。
少なくとも一実施例では、GPU1308は、統合メモリ技術を含んでもよい。少なくとも一実施例では、アドレス・トランスレーション・サービス(「ATS」:address translation services)サポートを使用して、GPU1308が、CPU1306のページ・テーブルに直接アクセスできるようにしてもよい。少なくとも一実施例では、GPU1308メモリ管理ユニット(「MMU」:memory management unit)のGPUがミスに遭遇したときには、アドレス・トランスレーション要求が、CPU1306に送信されてもよい。少なくとも一実施例では、それに応答して、CPU1306のうちの2つのCPUは、自らのページ・テーブルで、仮想から物理へのアドレスのマッピングを探し、トランスレーションをGPU1308に送り返してもよい。少なくとも一実施例では、統合メモリ技術は、CPU1306とGPU1308の両方のメモリに対して単一の統合された仮想アドレス空間を与えることを可能にし、それにより、GPU1308のプログラミング、及びGPU1308へのアプリケーションの移植を簡単にする。
少なくとも一実施例では、GPU1308は、他のプロセッサのメモリへのGPU1308のアクセス頻度を記録することができる任意の数のアクセス・カウンタを含んでもよい。少なくとも一実施例では、アクセス・カウンタは、最も頻繁にページにアクセスしているプロセッサの物理メモリに、メモリ・ページが確実に移動されるのを補助し、それにより、プロセッサ間で共有されるメモリ範囲の効率を向上させてもよい。
少なくとも一実施例では、SoC1304のうちの1つ又は複数は、本明細書に記載のものを含む任意の数のキャッシュ1312を含んでもよい。たとえば、少なくとも一実施例では、キャッシュ1312は、CPU1306もGPU1308も利用可能な(たとえば、CPU1306とGPU1308の両方に接続された)レベル3(「L3」)キャッシュを含むことができる。少なくとも一実施例では、キャッシュ1312は、キャッシュ・コヒーレンス・プロトコルなど(たとえば、MEI、MESI、MSIなど)を使用することにより、線の状態を記録することができるライト・バック・キャッシュを含んでもよい。少なくとも一実施例では、L3キャッシュは、実施例に応じて4MBのメモリ以上を含んでもよいが、より小さいキャッシュ・サイズが使用されてもよい。
少なくとも一実施例では、SoC1304のうちの1つ又は複数は、1つ又は複数のアクセラレータ1314(たとえば、ハードウェア・アクセラレータ、ソフトウェアアクセラレータ、又はこれらの組合せ)を含んでもよい。少なくとも一実施例では、SoC1304は、最適化されたハードウェア・アクセラレータ及び/又は大型のオン・チップ・メモリを含むことができるハードウェア加速クラスタを含んでもよい。少なくとも一実施例では、大型のオン・チップ・メモリ(たとえば、4MBのSRAM)は、ハードウェア加速クラスタが、ニューラル・ネットワーク及び他の計算を加速できるようにしてもよい。少なくとも一実施例では、ハードウェア加速クラスタを使用して、GPU1308を補完し、GPU1308のタスクのうちのいくつかをオフロードしてもよい(たとえば、他のタスクを実行できるようにGPU1308のサイクルをより多く解放してもよい)。少なくとも一実施例では、加速を受け入れるのに十分なほど安定している目的とするワークロード(たとえば、知覚、畳み込みニューラル・ネットワーク(「CNN」:convolutional neural network)、再帰ニューラル・ネットワーク(「RNN」:recurrent neural network)など)のために、アクセラレータ1314を使用することができる。少なくとも一実施例では、CNNは、領域ベースの、すなわち領域畳み込みニューラル・ネットワーク(「RCNN」:regional convolutional neural network)、及び(たとえば、物体検出に使用される)高速RCNN、又は他のタイプのCNNを含んでもよい。
少なくとも一実施例では、アクセラレータ1314(たとえば、ハードウェア加速クラスタ)は、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は、GPU1308の任意の機能を実行してもよく、たとえば推論アクセラレータを使用することにより、設計者は、任意の機能のためにDLA又はGPU1308のいずれかをターゲットにしてもよい。たとえば、少なくとも一実施例では、設計者は、CNN及び浮動小数点演算の処理をDLAに集中させ、他の機能をGPU1308及び/又は他のアクセラレータ1314に任せてもよい。
少なくとも一実施例では、アクセラレータ1314は、プログラマブル・ビジョン・アクセラレータ(「PVA」:programmable vision accelerator)を含んでもよく、このプログラマブル・ビジョン・アクセラレータは、本明細書において代替的にコンピュータ・ビジョン・アクセラレータと呼ばれてもよい。少なくとも一実施例では、PVAは、先進ドライバ支援システム(「ADAS」)1338、自律運転、拡張現実(「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の構成要素がCPU1306とは無関係にシステム・メモリにアクセスできるようにしてもよい。少なくとも一実施例では、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)メモリを含んでもよい。
少なくとも一実施例では、アクセラレータ1314は、オン・チップのコンピュータ・ビジョン・ネットワーク、及びスタティック・ランダム・アクセス・メモリ(「SRAM」)を含み、アクセラレータ1314のための高帯域幅、低レイテンシの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の規格に準拠してもよいが、他の規格及びプロトコルが使用されてもよい。
少なくとも一実施例では、SoC1304のうちの1つ又は複数は、リアル・タイム・レイ・トレーシングのハードウェア・アクセラレータを含んでもよい。少なくとも一実施例では、リアル・タイム・レイ・トレーシングのハードウェア・アクセラレータを使用して、物体の(たとえば世界モデル内での)位置及び範囲が迅速且つ効率的に判定されて、RADAR信号解釈のため、音伝播合成及び/若しくは分析のため、SONARシステムのシミュレーションのため、一般波形の伝播シミュレーションのため、ローカリゼーション及び/若しくは他の機能を目的としたLIDARデータとの比較のため、並びに/又は他の使用法のためのリアル・タイムの可視化シミュレーションが生成されてもよい。
少なくとも一実施例では、アクセラレータ1314は、自律運転のための多様な使用法を有することができる。少なくとも一実施例では、PVAは、ADAS及び自律車両の主要な処理ステージに使用することができる。少なくとも一実施例では、PVAの性能は、低電力及び低レイテンシの予測可能な処理を必要とするアルゴリズム・ドメインに良好に適合する。言い換えれば、PVAは、低レイテンシ及び低電力の予測可能なラン・タイムを必要とするかもしれない半稠密(semi−dense)又は稠密な規則的計算に対して、データ・セットが小さくても良好に機能する。少なくとも一実施例では、車両1300内など、従来のコンピュータ・ビジョン・アルゴリズムを実行するようにPVAが設計され得るが、これは、それらが、物体検出及び整数数値の演算に有効となり得るからである。
たとえば、技術の少なくとも一実施例によれば、PVAを使用して、コンピュータ・ステレオ・ビジョンが実行されてもよい。少なくとも一実施例では、いくつかの例においてセミ・グローバル・マッチングに基づくアルゴリズムが使用されてもよいが、これは限定するものではない。少なくとも一実施例では、レベル3〜5の自律運転のためのアプリケーションは、動き推定/ステレオ・マッチング(たとえば、動きからの構造化、歩行者認識、車線検出など)をオン・ザ・フライで使用する。少なくとも一実施例では、PVAは、2つの単眼カメラからの入力に対して、コンピュータ・ステレオ・ビジョン機能を実行してもよい。
少なくとも一実施例では、PVAを使用して、高密度オプティカル・フローが実行されてもよい。たとえば、少なくとも一実施例では、PVAは、未加工のRADARデータを(たとえば4Dの高速フーリエ変換を使用して)処理して、処理済みRADARデータを提供することができる。少なくとも一実施例では、PVAは、飛行時間の深度処理に使用され、たとえば未加工の飛行時間データを処理することにより、処理済みの飛行時間データが提供される。
少なくとも一実施例では、たとえば限定することなく、物体検出ごとに信頼性の尺度を出力するニューラル・ネットワークを含む、制御及び運転の安全性を強化するための任意のタイプのネットワークを実行するために、DLAが使用されてもよい。少なくとも一実施例では、信頼性は、他の検出と比較した各検出の確率として、若しくはその相対的な「重み」を提供するものとして表されても、又は解釈されてもよい。少なくとも一実施例では、信頼性尺度によって、どの検出を誤検出ではなく正検出とみなすべきかに関して、システムがさらなる判定を下せるようになる。少なくとも一実施例では、システムは、信頼性に対して閾値を設定し、閾値を超える検出だけを正検出とみなしてもよい。自動緊急ブレーキ(「AEB」:automatic emergency braking)が使用される実施例では、誤検出によって車両は自動的に緊急ブレーキをかけることになり、これは明らかに望ましくない。少なくとも一実施例では、非常に信頼性の高い検出が、AEBのトリガとみなされてもよい。少なくとも一実施例では、DLAは、信頼値を回帰するようにニューラル・ネットワークを実行してもよい。少なくとも一実施例では、ニューラル・ネットワークは、とりわけ境界ボックスの次元、(たとえば別のサブシステムから)取得した地面推定、車両1300の配向と相関しているIMUセンサ1366からの出力、距離、ニューラル・ネットワーク及び/又は他のセンサ(たとえば、LIDARセンサ1364若しくはRADARセンサ1360)から取得した物体の3Dロケーション推定などのパラメータの少なくともいくつかのサブセットを、その入力として取ってもよい。
少なくとも一実施例では、SoC1304のうちの1つ又は複数は、データ・ストア1316(たとえばメモリ)を含んでもよい。少なくとも一実施例では、データ・ストア1316は、SoC1304のオン・チップ・メモリであってもよく、このメモリは、GPU1308及び/又はDLA上で実行されるニューラル・ネットワークを記憶してもよい。少なくとも一実施例では、データ・ストア1316の容量は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分なほど大きくてもよい。少なくとも一実施例では、データ・ストア1316は、L2又はL3のキャッシュを備えてもよい。
少なくとも一実施例では、SoC1304のうちの1つ又は複数は、任意の数のプロセッサ1310(たとえば、組み込みプロセッサ)を含んでもよい。少なくとも一実施例では、プロセッサ1310は、ブート電力並びに管理機能及び関連するセキュリティ執行に対処するための専用プロセッサ及びサブシステムであってもよいブート及び電力管理プロセッサを含んでもよい。少なくとも一実施例では、ブート及び電力管理プロセッサは、SoC1304のブート・シーケンスの一部であってもよく、ラン・タイム電力管理サービスを提供してもよい。少なくとも一実施例では、ブート電力及び管理プロセッサは、クロックと電圧のプログラミング、システムの低電力状態への移行の支援、SoC1304の熱及び温度センサの管理、並びに/又はSoC1304の電力状態の管理を提供してもよい。少なくとも一実施例では、各温度センサは、その出力周波数が温度に比例するリング発振器として実装されてもよく、SoC1304は、リング発振器を使用して、CPU1306、GPU1308、及び/又はアクセラレータ1314の温度を検出してもよい。少なくとも一実施例では、温度が閾値を超えると判定された場合には、ブート及び電力管理プロセッサは、温度不良ルーチンに入り、SoC1304を低電力状態にし、且つ/又は車両1300を運転手−安全停止モードにしても(たとえば、車両1300を安全停止させる)よい。
少なくとも一実施例では、プロセッサ1310はさらに、オーディオ処理エンジンとしての役割を果たすことができる組み込みプロセッサのセットを含んでもよく、これは、多重インターフェースを介した多チャネルのオーディオ、及び幅広くフレキシブルな様々なオーディオI/Oインターフェースのための、完全なハードウェア・サポートを可能にするオーディオ・サブシステムであってもよい。少なくとも一実施例では、オーディオ処理エンジンは、専用RAMのあるデジタル信号プロセッサを有する専用プロセッサ・コアである。
少なくとも一実施例では、プロセッサ1310はさらに、低電力センサ管理及び立ち上げのユース・ケースをサポートするのに必要なハードウェア特徴を提供することができる常時オン・プロセッサ・エンジンを含んでもよい。少なくとも一実施例では、常時オン・プロセッサ・エンジンは、限定することなく、プロセッサ・コア、密結合RAM、サポート周辺装置(たとえば、タイマ、及び割込みコントローラ)、様々なI/Oコントローラ周辺装置、及びルーティング論理を含んでもよい。
少なくとも一実施例では、プロセッサ1310はさらに安全クラスタ・エンジンを含んでもよく、このエンジンは限定することなく、自動車用途の安全管理に対処するための専用のプロセッサ・サブシステムを含む。少なくとも一実施例では、安全クラスタ・エンジンは、限定することなく、2つ以上のプロセッサ・コア、密結合RAM、サポート周辺装置(たとえば、タイマ、及び割込みコントローラなど)、及び/又はルーティング論理を含んでもよい。安全モードでは、少なくとも一実施例においてロックステップ・モードで2つ以上のコアが動作し、これらの動作間で何らかの差を検出するための比較論理を有する単一コアとして機能してもよい。少なくとも一実施例では、プロセッサ1310はさらにリアル・タイム・カメラ・エンジンを含んでもよく、このエンジンは限定することなく、リアル・タイムのカメラ管理に対処するための専用のプロセッサ・サブシステムを含んでもよい。少なくとも一実施例では、プロセッサ1310はさらに、高ダイナミック・レンジの信号プロセッサを含んでもよく、この信号プロセッサは、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサを限定することなく含んでもよい。
少なくとも一実施例では、プロセッサ1310は、ビデオ画像合成器を含んでもよく、この合成器は、再生装置のウインドウに最終画像を生成するのにビデオ再生アプリケーションが必要とするビデオ後処理機能を実装する(たとえばマイクロプロセッサに実装された)処理ブロックであってもよい。少なくとも一実施例では、ビデオ画像合成器は、広角カメラ1370、周囲カメラ1374、及び/又はキャビン内監視カメラ・センサに対して、レンズゆがみ補正を実行してもよい。少なくとも一実施例では、キャビン内監視カメラ・センサは、好ましくは、キャビン内のイベントを識別し、それに適宜応答するように構成された、SoC1304の別のインスタンスで実行されているニューラル・ネットワークによって監視される。少なくとも一実施例では、キャビン内システムは、セルラー・サービスをアクティブ化し、電話をかけたり、電子メールを書いたり、車両の行き先を変更したり、車両のインフォテイメント・システム及び設定をアクティブ化又は変更したり、音声作動式のウェブ・サーフィンを提供したりするために、限定することなく読唇を実行してもよい。少なくとも一実施例では、ある一定の機能は、車両が自律モードで動作しているときにドライバにとって利用可能になり、それ以外のときには使用不可になる。
少なくとも一実施例では、ビデオ画像合成器は、空間と時間の両方のノイズ低減のための拡張された時間的ノイズ低減を含んでもよい。たとえば、少なくとも一実施例では、ビデオで動きが生じる場合には、ノイズ低減が空間情報に適切に重み付けして、隣接するフレームによって提供される情報の重みを軽くする。少なくとも一実施例では、画像又は画像の一部分が動きを含まない場合には、ビデオ画像合成器により実行される時間的ノイズ低減は、前の画像からの情報を使用して、現在の画像のノイズを低減してもよい。
少なくとも一実施例では、ビデオ画像合成器はまた、入力されたステレオ・レンズ・フレームに対してステレオ平行化を実行するように構成されてもよい。少なくとも一実施例では、ビデオ画像合成器はさらに、オペレーティング・システムのデスクトップが使用中のときに、ユーザ・インターフェースを合成するために使用されてもよく、GPU1308は、新規の表面を継続的にレンダリングする必要がなくなる。少なくとも一実施例では、GPU1308の電源が入れられ、アクティブで3Dレンダリングを行っているとき、性能及び応答性を向上させるために、ビデオ画像合成器を使用してGPU1308をオフロードしてもよい。
少なくとも一実施例では、SoC1304のうちの1つ又は複数のSoCはさらに、ビデオ及びカメラからの入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(「MIPI」:mobile industry processor interface)のカメラ直列インターフェース、高速インターフェース、並びに/又はカメラ及び関連ピクセルの入力機能に使用されてもよいビデオ入力ブロックを含んでもよい。少なくとも一実施例では、SoC1304のうちの1つ又は複数はさらに、入力/出力コントローラを含んでもよく、このコントローラはソフトウェアによって制御されてもよく、特定の役割に縛られていないI/O信号を受信するために使用されてもよい。
少なくとも一実施例では、SoC1304のうちの1つ又は複数のSoCはさらに、周辺装置、オーディオ・エンコーダ/デコーダ(「コーデック」)、電力管理、及び/又は他の装置との通信を可能にするための幅広い周辺装置インターフェースを含んでもよい。少なくとも一実施例では、SoC1304は、(たとえば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット(登録商標)チャネルを介して接続された)カメラからのデータ、センサ(たとえば、イーサネット(登録商標)チャネルを介して接続されてもよいLIDARセンサ1364、RADARセンサ1360など)からのデータ、バス1302からのデータ(たとえば、車両1300のスピード、ハンドル位置など)、(たとえば、イーサネット(登録商標)バス又はCANバスを介して接続された)GNSSセンサ1358からのデータなどを処理するために使用されてもよい。少なくとも一実施例では、SoC1304のうちの1つ又は複数のSoCはさらに、専用の高性能大容量ストレージ・コントローラを含んでもよく、このコントローラは独自のDMAエンジンを含んでもよく、ルーチンのデータ管理タスクからCPU1306を解放するために使用されてもよい。
少なくとも一実施例では、SoC1304は、自動化レベル3〜5に及ぶフレキシブルなアーキテクチャを有するエンドツーエンドのプラットフォームであってもよく、それにより、多様性及び冗長性を得るためにコンピュータ・ビジョン及びADAS技法を活用し効率的に利用する包括的な機能的安全性アーキテクチャが提供され、フレキシブルで、信頼性の高い運転ソフトウェア・スタックが、深層学習ツールとともに提供される。少なくとも一実施例では、SoC1304は、従来のシステムより高速で、信頼性が高く、さらにはエネルギー効率及び空間効率が高い。たとえば、少なくとも一実施例では、アクセラレータ1314は、CPU1306、GPU1308、及びデータ・ストア1316と組み合わされると、レベル3〜5の自律車両のための高速で効率的なプラットフォームを実現することができる。
少なくとも一実施例では、コンピュータ・ビジョン・アルゴリズムはCPU上で実行されてもよく、このアルゴリズムは、Cなどの高レベル・プログラミング言語を使用して構成されて、多様な視覚データにわたって多様な処理アルゴリズムを実行してもよい。しかし、少なくとも一実施例では、CPUは、多くのコンピュータ・ビジョン・アプリケーションの性能要件、たとえば実行時間及び電力消費に関する要件などを満足できないことが多い。少なくとも一実施例では、多くのCPUは、車両内のADASアプリケーション及び現実的なレベル3〜5の自律車両において使用される複雑な物体検出アルゴリズムを、リアル・タイムで実行することができない。
本明細書に記載の実施例は、複数のニューラル・ネットワークを同時に且つ/又は順番に実行できるようにし、結果を組み合わせて、レベル3〜5の自律運転機能を可能にすることができる。たとえば、少なくとも一実施例では、DLA又は個別GPU(たとえば、GPU1320)上で実行しているCNNは、テキスト及び単語認識を含んでもよく、ニューラル・ネットワークがそれについて特に訓練されてこなかった標識を含む交通標識を読み、理解できるようにする。少なくとも一実施例では、DLAはさらに、標識を識別し、解釈し、標識の意味的理解を提供することができ、その意味的理解を、CPUコンプレックス上で実行されている経路計画モジュールに渡すことができるニューラル・ネットワークを含んでもよい。
少なくとも一実施例では、レベル3、4、又は5の運転に関して、複数のニューラル・ネットワークが同時に実行されてもよい。たとえば、少なくとも一実施例では、電光と併せて「注意:点滅時は凍結状態」と示される警告標識は、いくつかのニューラル・ネットワークによって別々に解釈されても、集合的に解釈されてもよい。少なくとも一実施例では、こうした警告標識自体は、第1の導入済みニューラル・ネットワーク(たとえば、訓練されてきたニューラル・ネットワーク)によって交通標識として識別されてもよく、「点滅時は凍結状態」という文字は、第2の導入済みニューラル・ネットワークによって解釈されてもよく、点滅光が検出された場合には、このニューラル・ネットワークが、凍結状態が存在することを車両の(好ましくはCPUコンプレックス上で実行している)経路計画ソフトウェアに通知する。少なくとも一実施例では、点滅光は、第3の導入済みニューラル・ネットワークを複数のフレームにわたって動作させることによって識別されてもよく、点滅光の存在(又は存在しないこと)が、車両の経路計画ソフトウェアに通知される。少なくとも一実施例では、3つすべてのニューラル・ネットワークが、DLA内及び/又はGPU1308上などで同時に実行されてもよい。
少なくとも一実施例では、顔認識及び車両所有者識別のためのCNNは、カメラ・センサからのデータを使用して、車両1300の承認済みのドライバ及び/又は所有者の存在を識別してもよい。少なくとも一実施例では、常時オンのセンサ処理エンジンを使用して、所有者がドライバ用ドアに近づいてきたときに車両を解錠し、ライトを点灯させ、所有者がこうした車両から離れるときには、セキュリティ・モードでこうした車両を使用不可にしてもよい。こうして、SoC1304は、窃盗及び/又は自動車乗っ取りに対するセキュリティを実現する。
少なくとも一実施例では、緊急車両の検出及び識別のためのCNNは、マイクロフォン1396からのデータを使用して、緊急車両のサイレンを検出及び識別してもよい。少なくとも一実施例では、SoC1304は、環境及び市街地の音を分類するとともに、視覚データを分類するためにCNNを使用する。少なくとも一実施例では、DLA上で実行されるCNNは、緊急車両が近づいてくる相対的なスピードを(たとえばドップラー効果を使用することによって)識別するように訓練される。少なくとも一実施例では、CNNはまた、GNSSセンサ1358によって識別される、車両が稼働している地域に特有の緊急車両を識別するように訓練されてもよい。少なくとも一実施例では、欧州で稼働している場合には、CNNは欧州のサイレンを検出しようとし、北米の場合には、北米のサイレンだけを識別しようとする。少なくとも一実施例では、緊急車両が検出されると、緊急車両安全ルーチンを実行するための制御プログラムを使用して、車両の速度を落とし、道路脇に寄せ、車両を停止させ、且つ/又は緊急車両が通過するまで、超音波センサ1362を併用して車両をアイドリングにしてもよい。
少なくとも一実施例では、車両1300はCPU1318(たとえば、個別CPU又はdCPU)を含んでもよく、このCPUは高速相互接続(たとえば、PCIe)を介してSoC1304に結合されてもよい。少なくとも一実施例では、CPU1318は、たとえばX86プロセッサを含んでもよい。CPU1318は、たとえば、ADASセンサとSoC1304の間で潜在的に不整合な結果を調停すること、並びに/又はコントローラ1336及び/若しくはチップ上のインフォテイメント・システム(「インフォテイメントSoC」)1330の状態及び健全性を監視することを含め、様々な機能のうちの任意の機能を実行するために使用されてもよい。
少なくとも一実施例では、車両1300はGPU1320(たとえば、個別GPU又はdGPU)を含んでもよく、このGPUは高速相互接続(たとえば、NVIDIAのNVLINKチャネル)を介してSoC1304に結合されてもよい。少なくとも一実施例では、GPU1320は、冗長な及び/又は異なるニューラル・ネットワークを実行することなどによって、追加の人工知能機能を提供してもよく、車両1300のセンサからの入力(たとえば、センサ・データ)に少なくとも部分的に基づき、ニューラル・ネットワークを訓練及び/又は更新するために使用されてもよい。
少なくとも一実施例では、車両1300はさらに、ネットワーク・インターフェース1324を含んでもよく、このインターフェースは限定することなく、ワイヤレス・アンテナ1326(たとえば、セルラー・アンテナ、Bluetoothアンテナなど、異なる通信プロトコル向けの1つ又は複数のワイヤレス・アンテナ)を含んでもよい。少なくとも一実施例では、他の車両、及び/又はコンピューティング・デバイス(たとえば、乗員のクライアント・デバイス)とのインターネット・クラウド・サービス(たとえば、サーバ及び/又は他のネットワーク・デバイス)へのワイヤレス接続を可能にするために、ネットワーク・インターフェース1324が使用されてもよい。少なくとも一実施例では、他の車両と通信するために、車両130と他の車両との間に直接リンクが確立されてもよく、且つ/又は(たとえば、ネットワークにわたって、且つインターネットを介して)間接リンクが確立されてもよい。少なくとも一実施例では、直接リンクは、車車間通信リンクを使用して提供されてもよい。少なくとも一実施例では、車車間通信リンクは、車両1300の近傍の車両(たとえば、車両1300の前方、側方、及び/又は後方の車両)についての情報を車両1300に提供してもよい。少なくとも一実施例では、こうした前述した機能は、車両1300の協調型アダプティブ・クルーズ・コントロール機能の一部であってもよい。
少なくとも一実施例では、ネットワーク・インターフェース1324は、変調及び復調の機能を提供し、コントローラ1336がワイヤレス・ネットワークを介して通信できるようにするSoCを含んでもよい。少なくとも一実施例では、ネットワーク・インターフェース1324は、ベースバンドから無線周波数へのアップ・コンバージョン、及び無線周波数からベースバンドへのダウン・コンバージョンのための無線周波数フロント・エンドを含んでもよい。少なくとも一実施例では、周波数変換は、任意の技術的に実行可能なやり方で実行されてもよい。たとえば、周波数変換は、よく知られたプロセスにより、且つ/又はスーパー・ヘテロダイン・プロセスを使用して実行することができる。少なくとも一実施例では、無線周波数フロント・エンド機能は、別個のチップによって提供されてもよい。少なくとも一実施例では、ネットワーク・インターフェースは、LTE、WCDMA、UMTS、GSM、CDMA2000、Bluetooth、Bluetooth LE、Wi−Fi、Z−Wave、ZigBee、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介して通信するためのワイヤレス機能を含んでもよい。
少なくとも一実施例では、車両1300はさらにデータ・ストア1328を含んでもよく、このデータ・ストアは限定することなく、オフ・チップ(たとえばSoC1304上にない)ストレージを含んでもよい。少なくとも一実施例では、データ・ストア1328は、RAM、SRAM、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)、ビデオ・ランダム・アクセス・メモリ(「VRAM」:video random−access memory)、フラッシュ・メモリ、ハード・ディスク、並びに/又は少なくとも1ビットのデータを記憶することができる他の構成要素及び/若しくはデバイスを含む1つ若しくは複数のストレージ要素を、限定することなく含んでもよい。
少なくとも一実施例では、車両1300はさらに、マッピング、知覚、占有グリッド生成、及び/又は経路計画の機能を支援するためのGNSSセンサ1358(たとえば、GPS及び/又は補助GPSセンサ)を含んでもよい。少なくとも一実施例では、イーサネット(登録商標)からシリアル(たとえばRS−232)へのブリッジを有するUSBコネクタを使用するGPSをたとえば限定することなく含む任意の数のGNSSセンサ1358が使用されてもよい。
少なくとも一実施例では、車両1300はさらに、RADARセンサ1360を含んでもよい。少なくとも一実施例では、RADARセンサ1360は、暗闇及び/又は厳しい気象条件の中でも、長距離の車両検出を行うために車両1300によって使用されてもよい。少なくとも一実施例では、RADARの機能的安全性レベルは、ASIL Bであってもよい。少なくとも一実施例では、RADARセンサ1360は、制御のために(たとえば、RADARセンサ1360によって生成されたデータを送信するために)、また物体追跡データにアクセスするために、CANバス及び/又はバス1302を使用してもよく、いくつかの例では、未加工データにアクセスするためにイーサネット(登録商標)チャネルにアクセスできる。少なくとも一実施例では、多様なタイプのRADARセンサが使用されてもよい。たとえば限定することなく、RADARセンサ1360は、前方、後方、及び側方のRADAR使用に好適であってもよい。少なくとも一実施例では、RADARセンサ1360のうちの1つ又は複数のセンサは、パルス・ドップラRADARセンサである。
少なくとも一実施例では、RADARセンサ1360は、狭視野の長距離、広視野の短距離、側面を網羅する短距離など、異なる構成を含んでもよい。少なくとも一実施例では、長距離RADARは、アダプティブ・クルーズ・コントロール機能のために使用されてもよい。少なくとも一実施例では、長距離RADARシステムは、2つ以上の独立した走査によって実現される250m(メートル)の範囲内などの広視野を提供してもよい。少なくとも一実施例では、RADARセンサ1360は、静的物体と移動している物体とを区別しやすくしてもよく、緊急ブレーキ支援及び前方衝突警告を行うためにADASシステム1338によって使用されてもよい。少なくとも一実施例では、長距離RADARシステムに含まれるセンサ1360は、複数の(たとえば6つ以上の)固定RADARアンテナ、並びに高速CAN及びFlexRayインターフェースを有するモノスタティックのマルチモードRADARを、限定することなく含んでもよい。少なくとも一実施例では、6つのアンテナがある場合、中央の4つのアンテナは、隣接した車線からの干渉が最小の状態で、より高速で車両1300の周囲を記録するように設計された集中したビーム・パターンを生成してもよい。少なくとも一実施例では、他の2つのアンテナは、視野を拡張してもよく、車両1300の車線に入る又はそこから出る車両を迅速に検出するのを可能にする。
少なくとも一実施例では、中距離RADARシステムは、一例として最大160m(前方)、又は80m(後方)の範囲、及び最大42度(前方)、又は150度(後方)の視野を含んでもよい。少なくとも一実施例では、短距離RADARシステムは、限定することなく、後方バンパの両端部に設置されるように設計された任意の数のRADARセンサ1360を含んでもよい。後方バンパの両端部に設置されたとき、少なくとも一実施例では、RADARセンサ・システムは、後方向及び車両隣の死角を常に監視する2本のビームを生成してもよい。少なくとも一実施例では、短距離RADARシステムは、死角検出及び/又は車線変更支援を行うために、ADASシステム1338において使用されてもよい。
少なくとも一実施例では、車両1300はさらに、超音波センサ1362を含んでもよい。少なくとも一実施例では、超音波センサ1362は、車両1300の前方、後方、及び/又は側方位置に配置されてもよく、駐車支援のため、且つ/又は占有グリッドを生成し更新するために使用されてもよい。少なくとも一実施例では、多様な超音波センサ1362が使用されてもよく、異なる検出範囲(たとえば、2.5m、4m)には異なる超音波センサ1362が使用されてもよい。少なくとも一実施例では、超音波センサ1362は、機能的安全性レベルASIL Bで動作してもよい。
少なくとも一実施例では、車両1300は、LIDARセンサ1364を含んでもよい。少なくとも一実施例では、LIDARセンサ1364は、物体及び歩行者の検出、緊急ブレーキ、衝突回避、及び/又は他の機能のために使用されてもよい。少なくとも一実施例では、LIDARセンサ1364は、機能的安全性レベルASIL Bで動作してもよい。少なくとも一実施例では、車両1300は、複数のLIDARセンサ1364(たとえば、2つ、4つ、6つなど)を含んでもよく、これらのセンサは、(たとえばデータをギガビット・イーサネット(登録商標)・スイッチに提供するために)イーサネット(登録商標)チャネルを使用してもよい。
少なくとも一実施例では、LIDARセンサ1364は、360度の視野について、物体及びそれらの距離のリストを提供可能であってもよい。少なくとも一実施例では、市販のLIDARセンサ1364は、たとえば宣伝された範囲がおおよそ100mであり、精度が2cm〜3cmであり、100Mbpsのイーサネット(登録商標)接続をサポートしてもよい。少なくとも一実施例では、1つ又は複数の非突出型LIDARセンサが使用されてもよい。こうした実施例では、LIDARセンサ1364は、車両1300の前方、後方、側方、及び/又は角位置に組み込むことができる小さいデバイスを含んでもよい。少なくとも一実施例では、こうした実施例のLIDARセンサ1364は、最大120度の水平視野、及び35度の垂直視野を、低反射性の物体に対しても200mの範囲で提供してもよい。少なくとも一実施例では、前方に取り付けられたLIDARセンサ1364は、45度〜135度の水平視野をもたらすように構成されてもよい。
少なくとも一実施例では、3DフラッシュLIDARなどのLIDAR技術も使用されてよい。少なくとも一実施例では、3DフラッシュLIDARは、レーザのフラッシュを送信源として使用して、車両1300の周囲を最大でおおよそ200mまで照射する。少なくとも一実施例では、フラッシュLIDARユニットは、限定することなくレセプタを含み、このレセプタは、レーザ・パルスの通過時間及び各ピクセルにおける反射光を記録し、それらは、車両1300から物体までの範囲に対応する。少なくとも一実施例では、フラッシュLIDARによって、非常に正確でゆがみのない周囲画像が、レーザのフラッシュごとに生成できるようになる。少なくとも一実施例では、4つのフラッシュLIDARが、車両1300の各側面に1つ導入されてもよい。少なくとも一実施例では、3DフラッシュLIDARシステムは、ファン以外に可動部品のない半導体3D凝視アレイ(staring array)のLIDARカメラ(たとえば、非走査型LIDARデバイス)を、限定することなく含む。少なくとも一実施例では、フラッシュLIDARデバイスは、フレーム当たり5ナノ秒のクラスI(目に安全な)レーザ・パルスを使用してもよく、3D範囲の点群及び位置同期された(co−registered)強度データとして反射レーザ光を捕捉してもよい。
少なくとも一実施例では、車両1300はさらにIMUセンサ1366を含んでもよい。少なくとも一実施例では、IMUセンサ1366は、車両1300の後方車軸の中央に位置付けられてもよい。少なくとも一実施例では、IMUセンサ1366は、たとえば限定することなく、加速度計、磁力計、ジャイロスコープ、磁気コンパス、複数の磁気コンパス及び/又は他のタイプのセンサを含んでもよい。6軸の用途など少なくとも一実施例では、IMUセンサ1366は限定することなく、加速度計及びジャイロスコープを含んでもよい。9軸の用途など少なくとも一実施例では、IMUセンサ1366は限定することなく、加速度計、ジャイロスコープ、及び磁力計を含んでもよい。
少なくとも一実施例では、IMUセンサ1366は、微小電気機械システム(「MEMS」:micro−electro−mechanical systems)慣性センサ、高感度GPS受信機、及び先進のKalmanフィルタリング・アルゴリズムを組み合わせて、位置、速度、及び姿勢の推定値を提供する小型の高性能GPS補強型慣性航法システム(「GPS/INS」:GPS−Aided Inertial Navigation System)として実装されてもよい。少なくとも一実施例では、IMUセンサ1366により、車両1300は、速度変化を直接観察しそれをGPSからIMUセンサ1366に相関させることによって、磁気センサからの入力を必要とせずに車両1300の方位を推定できるようになる。少なくとも一実施例では、IMUセンサ1366及びGNSSセンサ1358は、単一の統合ユニットに組み合わされてもよい。
少なくとも一実施例では、車両1300は、車両1300の中及び/又はその周りに設置されたマイクロフォン1396を含んでもよい。少なくとも一実施例では、マイクロフォン1396は、とりわけ緊急車両の検出及び識別のために使用されてもよい。
少なくとも一実施例では、車両1300はさらに、ステレオ・カメラ1368、広角カメラ1370、赤外線カメラ1372、周囲カメラ1374、長距離カメラ1398、中距離カメラ1376、及び/又は他のカメラ・タイプを含む任意の数のカメラ・タイプを含んでもよい。少なくとも一実施例では、カメラは、車両1300の全周囲の周りで画像データを捕捉するために使用されてもよい。少なくとも一実施例では、どのタイプのカメラが使用されるかは、車両1300に応じて異なる。少なくとも一実施例では、車両1300の周りで必要な被写域を提供するために、カメラ・タイプの任意の組合せが使用されてもよい。少なくとも一実施例では、導入されるカメラの数は、実施例に応じて異なってもよい。たとえば、少なくとも一実施例では、車両1300は6台のカメラ、7台のカメラ、10台のカメラ、12台のカメラ、又は別の数のカメラを含むことができる。少なくとも一実施例では、カメラは、一例として限定することなく、ギガビット・マルチメディア・シリアル・リンク(「GMSL」:Gigabit Multimedia Serial Link)及び/又はギガビット・イーサネット(登録商標)通信をサポートしてもよい。少なくとも一実施例では、各カメラは、図13A及び図13Bに関して本明細書でさらに詳細に上で説明されているようであり得る。
少なくとも一実施例では、車両1300はさらに、振動センサ1342を含んでもよい。少なくとも一実施例では、振動センサ1342は、車軸など、車両1300の構成要素の振動を測定してもよい。たとえば、少なくとも一実施例では、振動の変化は、路面の変化を示すことがある。少なくとも一実施例では、2つ以上の振動センサ1342が使用される場合には、路面の摩擦又はすべり量を判定するために振動の差が使用されてもよい(たとえば、動力により駆動される車軸と自由回転する車軸との間に振動差がある場合)。
少なくとも一実施例では、車両1300は、ADASシステム1338を含んでもよい。少なくとも一実施例では、ADASシステム1338は、限定することなく、いくつかの例においてSoCを含んでもよい。少なくとも一実施例では、ADASシステム1338は、限定することなく、任意の数及び任意の組合せの、自律/アダプティブ/自動のクルーズ・コントロール(「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センサ1360、LIDARセンサ1364、及び/又は任意の数のカメラを使用してもよい。少なくとも一実施例では、ACCシステムは、縦方向ACCシステム及び/又は横方向ACCシステムを含んでもよい。少なくとも一実施例では、縦方向ACCシステムは、車両1300の直前の別の車両までの距離を監視及び制御し、車両1300のスピードを自動的に調節して、前の車両からの安全な距離を維持する。少なくとも一実施例では、横方向ACCシステムは、距離の維持を実行し、必要なときに車線変更するよう車両1300に通知する。少なくとも一実施例では、横方向ACCは、LC及びCWなどの他のADAS用途に関係する。
少なくとも一実施例では、CACCシステムは、他の車両からの情報を使用し、この情報は、ワイヤレス・リンクにより、又は間接的にネットワーク接続を介して(たとえばインターネットを介して)、他の車両からネットワーク・インターフェース1324及び/又はワイヤレス・アンテナ1326により受信されてもよい。少なくとも一実施例では、車車間(「V2V」:vehicle−to−vehicle)通信リンクによって直接リンクが提供されてもよく、一方インフラストラクチャ車間(「I2V」:infrastructure−to−vehicle)通信リンクによって間接リンクが提供されてもよい。一般に、V2V通信は、すぐ前の先行車両(たとえば、車両1300のすぐ前で同じ車線にいる車両)についての情報を提供し、I2V通信は、さらにその前の交通についての情報を提供する。少なくとも一実施例では、CACCシステムは、I2VとV2Vの情報源のいずれか又は両方を含んでもよい。少なくとも一実施例では、車両1300の前の車両についての情報があれば、CACCシステムは信頼性をさらに高めることができ、交通の流れをより円滑にし、路上での渋滞を低減できる可能性を有する。
少なくとも一実施例では、FCWシステムは、危険物に対してドライバに忠告するように設計され、それによりこうしたドライバは修正措置を取ることができる。少なくとも一実施例では、FCWシステムは正面カメラ及び/又はRADARセンサ1360を使用し、これらは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックを提供するように電気的に結合されている専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。少なくとも一実施例では、FCWシステムは、音、視覚的警告、振動、及び/又はクイック・ブレーキ・パルスなどの形で警告を提供してもよい。
少なくとも一実施例では、AEBシステムは、別の車両又は他の物体との差し迫った正面衝突を検出し、指定された時間内又は距離パラメータ内にドライバが修正措置を取らない場合には、自動でブレーキをかけてもよい。少なくとも一実施例では、AEBシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに結合された正面カメラ及び/又はRADARセンサ1360を使用してもよい。少なくとも一実施例では、AEBシステムが危険物を検出したとき、AEBシステムは通常、修正措置を取って衝突を避けるよう最初にドライバに忠告し、ドライバが修正措置を取らない場合には、AEBシステムは、予測される衝突を防ぐ又は少なくともその衝撃を軽減するために自動的にブレーキをかけてもよい。少なくとも一実施例では、AEBシステムは、ダイナミック・ブレーキ・サポート及び/又は衝突直前ブレーキなどの技法を含んでもよい。
少なくとも一実施例では、LDWシステムは、車両1300が車線の目印に交差したときにドライバに忠告するために、ハンドル又は座席の振動など、視覚的、聴覚的、及び/又は触覚的な警告を提供する。少なくとも一実施例では、ドライバが方向指示器を作動させることなどによって意図的な車線逸脱を示す場合には、LDWシステムは作動しない。少なくとも一実施例では、LDWシステムは、正面カメラを使用してもよく、これは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックを提供するように電気的に結合することができる専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。少なくとも一実施例では、LKAシステムは、LDWシステムの変形形態である。少なくとも一実施例では、LKAシステムは、車両1300が車両1300の車線からはみ出し始めた場合に、車両1300を修正するように操縦入力又はブレーキ制御を提供する。
少なくとも一実施例では、BSWシステムは、自動車の死角にある車両を検出し、ドライバに警告する。少なくとも一実施例では、BSWシステムは、視覚的、聴覚的、及び/又は触覚的なアラートを提供して、合流又は車線変更が安全ではないことを示してもよい。少なくとも一実施例では、BSWシステムは、ドライバが方向指示器を使用したときに追加の警告を提供してもよい。少なくとも一実施例では、BSWシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに結合された背面カメラ及び/又はRADARセンサ1360を使用してもよく、これらの専用のプロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合されている。
少なくとも一実施例では、RCTWシステムは、車両1300の後退時に、後方カメラの範囲外に物体が検出されたときに、視覚的、聴覚的、及び/又は触覚的な通知を提供してもよい。少なくとも一実施例では、RCTWシステムは、衝突を回避するために確実に車両ブレーキがかけられるように、AEBシステムを含む。少なくとも一実施例では、RCTWシステムは、1つ又は複数の背面RADARセンサ1360を使用してもよく、これはディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックを提供するように電気的に結合された専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。
少なくとも一実施例では、従来のADASシステムは、誤検出結果を出しがちなことがあり、これはドライバにとっては迷惑で気が散るものであり得るが、通常は大したことにはならない。なぜなら、従来のADASシステムは、ドライバに忠告し、安全を要する状態が本当に存在し、それに適宜対応するかどうかを、ドライバが判断できるようにするからである。少なくとも一実施例では、結果が矛盾する場合、一次コンピュータ(たとえば、コントローラ1336の第1のコントローラ)からの結果に従うか、又は二次コンピュータ(たとえば、コントローラ1336の第2のコントローラ)からの結果に従うかどうかを、車両1300自体が判断する。たとえば、少なくとも一実施例では、ADASシステム1338は、バックアップ・コンピュータの合理性モジュールに知覚情報を抵抗するための、バックアップ及び/又は二次コンピュータであってもよい。少なくとも一実施例では、バックアップ・コンピュータの合理性モニタが、ハードウェア構成要素上の冗長性の多様なソフトウェアを実行して、知覚の誤り及び動的な運転タスクを検出してもよい。少なくとも一実施例では、ADASシステム1338からの出力は、監視MCUに提供されてもよい。少なくとも一実施例では、一次コンピュータからの出力と二次コンピュータからの出力とが矛盾する場合には、監視MCUが、安全な動作を確保するために矛盾をどのように調和させるかを判定する。
少なくとも一実施例では、一次コンピュータは、一次コンピュータの選択した結果の信頼性を示す信頼性スコアを、監視MCUに提供するように構成されてもよい。少なくとも一実施例では、信頼性スコアが閾値を超える場合には、二次コンピュータが矛盾する又は一貫性のない結果を提供しているかどうかに関わらず、監視MCUは一次コンピュータの指示に従ってもよい。少なくとも一実施例では、信頼性スコアが閾値を満足せず、一次コンピュータと二次コンピュータが異なる結果(たとえば、矛盾)を示す場合には、監視MCUは、コンピュータ同士を調停して、適切な結果を判定してもよい。
少なくとも一実施例では、二次コンピュータが誤アラームを提供する条件を、一次コンピュータからの出力と二次コンピュータからの出力とに少なくとも部分的に基づき判定するように訓練及び構成されたニューラル・ネットワークを、監視MCUが実行するように構成されてもよい。少なくとも一実施例では、監視MCUのニューラル・ネットワークは、二次コンピュータの出力が信用されてもよいときと、信用できないときとを学習してもよい。たとえば、少なくとも一実施例では、二次コンピュータがRADARベースのFCWシステムである場合、監視MCUのニューラル・ネットワークは、アラームをトリガする排水溝の格子又はマンホール・カバーなど、実際には危険物ではない金属物体をFCWシステムが識別するときを学習してもよい。少なくとも一実施例では、二次コンピュータがカメラ・ベースのLDWシステムである場合、自転車や歩行者が存在し、車線逸脱が実際には最も安全な操作であるときに、監視MCUのニューラル・ネットワークはLDWを無効にするように学習してもよい。少なくとも一実施例では、監視MCUは、ニューラル・ネットワークを関連するメモリとともに実行するのに好適なDLA又はGPUのうちの少なくとも1つを含んでもよい。少なくとも一実施例では、監視MCUは、SoC1304の構成要素を備えても、且つ/又はその構成要素として含まれてもよい。
少なくとも一実施例では、ADASシステム1338は、コンピュータ・ビジョンの従来のルールを使用してADAS機能を実行する二次コンピュータを含んでもよい。少なくとも一実施例では、二次コンピュータは、従来のコンピュータ・ビジョン・ルール(if−thenルール)を使用してもよく、ニューラル・ネットワークが監視MCUに存在することによって、信頼性、安全性、及び性能が向上してもよい。たとえば、少なくとも一実施例では、多様な実装及び意図的な非同一性により、特にソフトウェア(又はソフトウェアとハードウェアのインターフェース)の機能によって生じる誤りに対し、システム全体の誤り耐性が高まる。たとえば、少なくとも一実施例では、一次コンピュータ上で実行中のソフトウェアにバグ又はエラーがあり、二次コンピュータ上で実行中の非同一のソフトウェア・コードが、全体的に一貫性のある結果を提供する場合には、監視MCUは、全体的な結果が正しく、一次コンピュータ上のソフトウェア又はハードウェアのバグが重大なエラーを引き起こしていないという、より高い信頼性を有してもよい。
少なくとも一実施例では、ADASシステム1338の出力は、一次コンピュータの知覚ブロック、及び/又は一次コンピュータの動的運転タスクブロックに供給されてもよい。たとえば、少なくとも一実施例では、ADASシステム1338が、直前の物体に起因して正面衝突警告を示している場合には、知覚ブロックは、物体を識別するときにこの情報を使用してもよい。少なくとも一実施例では、二次コンピュータは、本明細書に記載するように、訓練済みの、したがって誤検出のリスクを低減する独自のニューラル・ネットワークを有してもよい。
少なくとも一実施例では、車両1300はさらに、インフォテイメントSoC1330(たとえば、車両内インフォテイメント・システム(IVI):in−vehicle infotainment system)を含んでもよい。インフォテイメント・システム1330はSoCとして図示及び説明されるが、少なくとも一実施例では、SoCではなくてもよく、限定することなく2つ以上の個別の構成要素を含んでもよい。少なくとも一実施例では、インフォテイメントSoC1330は、限定することなく、ハードウェアとソフトウェアの組合せを含んでもよく、この組合せを使用して、オーディオ(たとえば、音楽、パーソナル・デジタル・アシスタント、ナビゲーション命令、ニュース、ラジオなど)、ビデオ(たとえば、TV、映画、ストリーミングなど)、電話(たとえば、ハンズフリー通話)、ネットワーク接続(たとえば、LTE、Wi−Fiなど)、及び/又は情報サービス(たとえば、ナビゲーション・システム、後方駐車支援、無線データ・システム、車両関連情報、たとえば燃料レベル、合計走行距離、ブレーキ燃料レベル、オイル・レベル、ドアの開閉、空気フィルタ情報など)を車両1300に提供してもよい。たとえば、インフォテイメントSoC1330は、ラジオ、ディスク再生装置、ナビゲーション・システム、ビデオ再生装置、USB及びBluetooth接続、カーピュータ、車内エンタテイメント、Wi−Fi、ハンドル・オーディオ制御、ハンズフリー音声制御、ヘッド・アップ・ディスプレイ(「HUD」:heads−up display)、HMIディスプレイ1334、テレマテックス・デバイス、(たとえば、様々な構成要素、特徴、及び/若しくはシステムを制御及び/若しくは相互作用するための)制御パネル、並びに/又は他の構成要素を含むことができる。少なくとも一実施例では、さらにインフォテイメントSoC1330を使用して、ADASシステム1338からの情報、車両操作計画、軌道などの自律運転情報、周囲環境情報(たとえば、交差点情報、車両情報、道路情報など)、及び/又は他の情報などの(たとえば、視覚的及び/又は聴覚的な)情報が、車両1300のユーザに提供されてもよい。
少なくとも一実施例では、インフォテイメントSoC1330は、任意の量及びタイプのGPU機能を含んでもよい。少なくとも一実施例では、インフォテイメントSoC1330は、バス1302を介して、車両1300の他のデバイス、システム、及び/又は構成要素と通信してもよい。少なくとも一実施例では、インフォテイメントSoC1330は監視MCUに結合されてもよく、それにより、一次コントローラ1336(たとえば、車両1300の一次及び/又はバックアップのコンピュータ)が故障したときに、インフォテイメント・システムのGPUが、一部の自己運転機能を実行してもよい。少なくとも一実施例では、インフォテイメントSoC1330は、本明細書に記載するように、車両1300を運転手−安全停止モードにしてもよい。
少なくとも一実施例では、車両1300はさらに、計器クラスタ1332(たとえば、デジタル・ダッシュボード、電子計器クラスタ、デジタル計器パネルなど)を含んでもよい。少なくとも一実施例では、計器クラスタ1332は、限定することなく、コントローラ、及び/又はスーパーコンピュータ(たとえば、個別のコントローラ又はスーパーコンピュータ)を含んでもよい。少なくとも一実施例では、計器クラスタ1332は、限定することなく、スピード・メータ、燃料レベル、油圧、タコメータ、オドメータ、方向指示器、シフトレバー位置インジケータ、シート・ベルト警告灯、バーキング・ブレーキ警告灯、エンジン故障灯、補助拘束システム(たとえば、エアバッグ)情報、ライト制御、安全システム制御、ナビゲーション情報など、任意の数及び組合せの計器セットを含んでもよい。いくつかの例では、インフォテイメントSoC1330と計器クラスタ1332との間で、情報が表示及び/又は共有されてもよい。少なくとも一実施例では、計器クラスタ1332は、インフォテイメントSoC1330の一部として含まれてもよく、又はその逆であってもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図13Cのシステムにおいて使用されてもよい。
図13Dは、少なくとも一実施例による、クラウド・ベースのサーバと図13Aの自律車両1300との間で通信するためのシステム1376の図である。少なくとも一実施例では、システム1376は、限定することなく、サーバ1378、ネットワーク1390、並びに車両1300を含む任意の数及びタイプの車両を含んでもよい。少なくとも一実施例では、サーバ1378は、限定することなく、複数のGPU1384(A)〜1384(H)(本明細書ではまとめてGPU1384と呼ぶ)、PCIeスイッチ1382(A)〜1382(D)(本明細書ではまとめてPCIeスイッチ1382と呼ぶ)、及び/又はCPU1380(A)〜1380(B)(本明細書ではまとめてCPU1380と呼ぶ)を含んでもよい。少なくとも一実施例では、GPU1384、CPU1380、及びPCIeスイッチ1382は、たとえば限定することなく、NVIDIAにより開発されたNVLinkインターフェース1388、及び/又はPCIe接続1386などの高速相互接続によって、相互接続されてもよい。少なくとも一実施例では、GPU1384同士は、NVLink及び/又はNVSスイッチSoCを介して接続され、GPU1384とPCIeスイッチ1382は、PCIe相互接続を介して接続される。8個のGPU1384、2個のCPU1380、及び4個のPCIeスイッチ1382が図示してあるが、これは限定するものではない。少なくとも一実施例では、サーバ1378のそれぞれは、限定することなく、任意の数のGPU1384、CPU1380、及び/又はPCIeスイッチ1382を任意の組合せで含んでもよい。たとえば、少なくとも一実施例では、サーバ1378は、それぞれが8個、16個、32個、及び/又はそれ以上のGPU1384を含むことができる。
少なくとも一実施例では、サーバ1378は、最近始まった道路工事などの予想外の又は変更された道路状態を示す画像を表す画像データを、ネットワーク1390を介して車両から受信してもよい。少なくとも一実施例では、サーバ1378は、更新済み若しくはそうではないニューラル・ネットワーク1392及び/又は、限定することなく交通状態及び道路状態に関する情報を含む地図情報1394を、ネットワーク1390を介して車両に送信してもよい。少なくとも一実施例では、地図情報1394の更新は、建築現場、穴、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ1322に対する更新を、限定することなく含んでもよい。少なくとも一実施例では、ニューラル・ネットワーク1392及び/又は地図情報1394は、環境内の任意の数の車両から受信したデータに表された新しい訓練及び/又は経験から得られたものであってもよく、且つ/又は、データ・センタにおいて(たとえば、サーバ1378及び/又は他のサーバを使用して)実行された訓練に少なくとも部分的に基づき、得られたものであってもよい。
少なくとも一実施例では、サーバ1378を使用して、訓練データに少なくとも部分的に基づき、機械学習モデル(たとえば、ニューラル・ネットワーク)が訓練されてもよい。少なくとも一実施例では、訓練データは車両によって生成されてもよく、且つ/又はシミュレーションで(たとえば、ゲーム・エンジンを使用して)生成されてもよい。少なくとも一実施例では、(たとえば、関連するニューラル・ネットワークが教師あり学習により恩恵を受ける場合には)任意の量の訓練データがタグ付けされ、且つ/又は他の前処理を受ける。少なくとも一実施例では、(たとえば、関連するニューラル・ネットワークが教師あり学習を必要としない場合には)任意の量の訓練データはタグ付け及び/又は前処理されない。少なくとも一実施例では、機械学習モデルが訓練されると、機械学習モデルは車両によって使用されてもよく(たとえば、ネットワーク1390を介して車両に送信されてもよく、且つ/又は機械学習モデルは、車両を遠隔監視するためにサーバ1378によって使用されてもよい。
少なくとも一実施例では、サーバ1378は車両からデータを受信し、リアル・タイムの知的推論ができるように、最新のリアル・タイムのニューラル・ネットワークにデータを適用してもよい。少なくとも一実施例では、サーバ1378は、NVIDIAによって開発されたDGX及びDGXステーション・マシンなど、GPU1384によって動く深層学習スーパーコンピュータ及び/又は専用AIコンピュータを含んでもよい。しかし、少なくとも一実施例では、サーバ1378は、CPUにより動くデータ・センタを使用する深層学習インフラストラクチャを含んでもよい。
少なくとも一実施例では、サーバ1378の深層学習インフラストラクチャは、高速のリアル・タイムの推論が可能であってもよく、その機能を使用して、車両1300のプロセッサ、ソフトウェア、及び/又は関連ハードウェアの健全性を評価及び確認してもよい。たとえば、少なくとも一実施例では、深層学習インフラストラクチャは、一連の画像、及び/又はその一連の画像において(たとえば、コンピュータ・ビジョン及び/又は他の機械学習の物体分類技法により)車両1300が位置特定した物体など、周期的な更新を車両1300から受信してもよい。少なくとも一実施例では、深層学習インフラストラクチャは、独自のニューラル・ネットワークを実行して物体を識別し、それを車両1300によって識別された物体と比較してもよく、結果が一致せず、車両1300のAIが故障していると深層学習インフラストラクチャが結論づけた場合には、サーバ1378は、車両1300のフェイル・セーフ・コンピュータに制御を掌握し、乗員に通知し、安全な停車操作を完了するよう命じる信号を車両1300に送信してもよい。
少なくとも一実施例では、サーバ1378は、GPU1384、及び1つ又は複数のプログラム可能な推論アクセラレータ(たとえば、NVIDIAのTensorRT3デバイス)を含んでもよい。少なくとも一実施例では、GPUにより動くサーバと、推論の加速とを組み合わせることによって、リアル・タイムの応答を可能にすることができる。性能がそれほど重要ではない場合など、少なくとも一実施例では、CPU、FPGA、及び他のプロセッサにより動くサーバが、推論に使用されてもよい。少なくとも一実施例では、1つ又は複数の実施例を実行するために、ハードウェア構造体1015が使用される。ハードウェア構造体1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。
コンピュータ・システム
図14は、例示的なコンピュータ・システムを示すブロック図であり、このコンピュータ・システムは、少なくとも一実施例による、命令を実行するための実行ユニットを含んでもよいプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SoC)、又はこれらの何らかの組合せを有するシステムであってもよい。少なくとも一実施例では、コンピュータ・システム1400は、本明細書に記載の実施例などにおいて本開示に従ってデータを処理するためのアルゴリズムを実行する論理を含む実行ユニットを使用するための、プロセッサ1402などの構成要素を、限定することなく含んでもよい。少なくとも一実施例では、コンピュータ・システム1400は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、XeonTM、Itanium(登録商標)、XScaleTM及び/又はStrongARMTM、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含んでもよいが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含め)他のシステムが使用されてもよい。少なくとも一実施例では、コンピュータ・システム1400は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なWINDOWS(登録商標)のオペレーティング・システムのあるバージョンを実行してもよいが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux(登録商標))、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースが使用されてもよい。
実施例は、携帯型デバイス及び組み込みアプリケーションなど、他のデバイスで使用されてもよい。携帯型デバイスのいくつかの例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」:personal digital assistants)、及び携帯型PCを含む。少なくとも一実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」:digital signal processor)、システム・オン・チップ、ネットワーク・コンピュータ(「NetPC」:network computers)、セット・トップ・ボックス、ネットワーク・ハブ、広域ネットワーク(「WAN」:wide area network)スイッチ、又は少なくとも一実施例による1つ又は複数の命令を実行することができる任意の他のシステムを含んでもよい。
少なくとも一実施例では、コンピュータ・システム1400は、限定することなくプロセッサ1402を含んでもよく、このプロセッサ1402は限定することなく、本明細書に記載の技法による機械学習モデルの訓練及び/又は推論を実行するための1つ又は複数の実行ユニット1408を含んでもよい。少なくとも一実施例では、コンピュータ・システム1400は、シングル・プロセッサのデスクトップ又はサーバ・システムであるが、別の実施例では、コンピュータ・システム1400はマルチプロセッサ・システムであってもよい。少なくとも一実施例では、プロセッサ1402は、限定することなく、複合命令セット・コンピュータ(「CISC」:complex instruction set computer)マイクロプロセッサ、縮小命令セット・コンピューティング(「RISC」)マイクロプロセッサ、超長命令語(「VLIW」)マイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は任意の他のプロセッサ・デバイス、たとえばデジタル信号プロセッサなどを含んでもよい。少なくとも一実施例では、プロセッサ1402は、プロセッサ・バス1410に結合されてもよく、このプロセッサ・バスは、プロセッサ1402とコンピュータ・システム1400内の他の構成要素との間でデジタル信号を送信してもよい。
少なくとも一実施例では、プロセッサ1402は、限定することなく、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)1404を含んでもよい。少なくとも一実施例では、プロセッサ1402は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ1402の外部にあってもよい。他の実施例は、特定の実装形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せも含んでよい。少なくとも一実施例では、レジスタ・ファイル1406は、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタを限定することなく含む様々レジスタに、異なるタイプのデータを記憶してもよい。
少なくとも一実施例では、整数及び浮動小数点の演算を実行するための論理を限定することなく含む実行ユニット1408も、プロセッサ1402にある。少なくとも一実施例では、プロセッサ1402は、ある一定のマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」:read only memory)も含んでよい。少なくとも一実施例では、実行ユニット1408は、パック命令セット1409に対処する論理を含んでもよい。少なくとも一実施例では、パック命令セット1409を、命令を実行する関連回路とともに汎用プロセッサの命令セットに含めることにより、多くのマルチメディア・アプリケーションによって使用される演算を、プロセッサ1402のパック・データを使用して実行することができる。少なくとも一実施例では、プロセッサのデータ・バスの全幅を使用してパック・データの演算を実行することによって、多くのマルチメディア・アプリケーションを加速し、より効率的に実行することができ、これにより、1度に1つのデータ要素に対して1つ又は複数の演算を実行するためにプロセッサのデータ・バス間でより小さい単位のデータを転送する必要をなくすことができる。
少なくとも一実施例では、実行ユニット1408はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用されてもよい。少なくとも一実施例では、コンピュータ・システム1400は、限定することなくメモリ1420を含んでもよい。少なくとも一実施例では、メモリ1420は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスであってもよい。少なくとも一実施例では、メモリ1420は、プロセッサ1402によって実行されてもよいデータ信号によって表される命令1419、及び/又はデータ1421を記憶してもよい。
少なくとも一実施例では、システム論理チップが、プロセッサ・バス1410及びメモリ1420に結合されてもよい。少なくとも一実施例では、システム論理チップは、限定することなく、メモリ・コントローラ・ハブ(「MCH」:memory controller hub)1416を含んでもよく、プロセッサ1402は、プロセッサ・バス1410を介してMCH1416と通信してもよい。少なくとも一実施例では、MCH1416は、命令及びデータを記憶するため、及びグラフィックス・コマンド、データ、及びテクスチャを記憶するために、高帯域幅メモリ経路1418をメモリ1420に提供してもよい。少なくとも一実施例では、MCH1416は、プロセッサ1402と、メモリ1420と、コンピュータ・システム1400の他の構成要素との間でデータ信号を導き、プロセッサ・バス1410と、メモリ1420と、システムI/Oインターフェース1422との間でデータ信号をブリッジしてもよい。少なくとも一実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供してもよい。少なくとも一実施例では、MCH1416は、高帯域幅メモリ経路1418を介してメモリ1420に結合されてもよく、グラフィックス/ビデオカード1412は、アクセラレーテッド・グラフィックス・ポート(「AGP」:Accelerated Graphics Port)相互接続1414を介してMCH1416に結合されてもよい。
少なくとも一実施例では、コンピュータ・システム1400は、MCH1416をI/Oコントローラ・ハブ(「ICH」:I/O controller hub)1430に結合するためのプロプライエタリ・ハブ・インターフェース・バスとしてシステムI/Oインターフェース1422を使用してもよい。少なくとも一実施例では、ICH1430は、ローカルのI/Oバスを介していくつかのI/Oデバイスに直接接続を提供してもよい。少なくとも一実施例では、ローカルI/Oバスは、周辺装置をメモリ1420、チップセット、及びプロセッサ1402に接続するための高速I/Oバスを、限定することなく含んでもよい。例としては、オーディオ・コントローラ1429、ファームウェア・ハブ(「フラッシュBIOS」)1428、ワイヤレス・トランシーバ1426、データ・ストレージ1424、ユーザ入力及びキーボードのインターフェース1425を含むレガシーI/Oコントローラ1423、ユニバーサル・シリアル・バス(「USB」:Universal Serial Bus)ポートなどのシリアル拡張ポート1427、及びネットワーク・コントローラ1434が、限定することなく含まれてもよい。少なくとも一実施例では、データ・ストレージ1424は、ハード・ディスク・ドライブ、フロッピー(登録商標)・ディスク・ドライブ、CD−ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備えてもよい。
少なくとも一実施例では、図14は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図14は例示的なSoCを示してもよい。少なくとも一実施例では、図14で示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、コンピュータ・システム1400の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL:compute express link)相互接続を使用して相互接続されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図14のシステムにおいて使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図15は、少なくとも一実施例による、プロセッサ1510を利用するための電子デバイス1500を示すブロック図である。少なくとも一実施例では、電子デバイス1500は、たとえば限定することなく、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであってもよい。
少なくとも一実施例では、電子デバイス1500は、任意の好適な数又は種類の構成要素、周辺装置、モジュール、若しくはデバイスに通信可能に結合されたプロセッサ1510を、限定することなく含んでもよい。少なくとも一実施例では、プロセッサ1510は、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)バスなどのバス若しくはインターフェースを使用して結合される。少なくとも一実施例では、図15は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図15は例示的なSoCを示してもよい。少なくとも一実施例では、図15に示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、図15の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続されてもよい。
少なくとも一実施例では、図15は、ディスプレイ1524、タッチ画面1525、タッチ・パッド1530、近距離無線通信ユニット(「NFC」:Near Field Communications unit)1545、センサ・ハブ1540、熱センサ1546、エクスプレス・チップセット(「EC」:Express Chipset)1535、トラステッド・プラットフォーム・モジュール(「TPM」:Trusted Platform Module)1538、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」:BIOS/firmware/flash memory)1522、DSP1560、ソリッド・ステート・ディスク(「SSD」:Solid State Disk)若しくはハード・ディスク・ドライブ(「HDD」:Hard Disk Drive)などのドライブ1520、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」:wireless local area network unit)1550、Bluetoothユニット1552、ワイヤレス広域ネットワーク・ユニット(「WWAN」:Wireless Wide Area Network unit)1556、全地球測位システム(GPS:Global Positioning System)ユニット1555、USB3.0カメラなどのカメラ(「USB3.0カメラ」)1554、及び/又は、たとえばLPDDR3規格に実装された低電力ダブル・データ・レート(「LPDDR」:Low Power Double Data Rate)メモリ・ユニット(「LPDDR3」)1515を含んでもよい。これらの構成要素は、それぞれ任意の好適なやり方で実装されてもよい。
少なくとも一実施例では、上述した構成要素を介して、他の構成要素がプロセッサ1510に通信可能に結合されてもよい。少なくとも一実施例では、加速度計1541、周囲光センサ(「ALS」:Ambient Light Sensor)1542、コンパス1543、及びジャイロスコープ1544が、センサ・ハブ1540に通信可能に結合されてもよい。少なくとも一実施例では、熱センサ1539、ファン1537、キーボード1536、及びタッチ・パッド1530が、EC1535に通信可能に結合されてもよい。少なくとも一実施例では、スピーカ1563、ヘッドフォン1564、及びマイクロフォン(「mic」)1565が、オーディオ・ユニット(オーディオ・コーデック及びクラスDアンプ)1562に通信可能に結合されてもよく、このオーディオ・ユニットが、DSP1560に通信可能に結合されてもよい。少なくとも一実施例では、オーディオ・ユニット1562は、たとえば限定することなく、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスDアンプリファイアを含んでもよい。少なくとも一実施例では、SIMカード(「SIM」)1557は、WWANユニット1556に通信可能に結合されてもよい。少なくとも一実施例では、WLANユニット1550及びBluetoothユニット1552などの構成要素、並びにWWAN1556は、次世代フォーム・ファクタ(「NGFF」:Next Generation Form Factor)に実装されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図15のシステムにおいて使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにコンピュータ・システムを使用して構築されることが可能である。少なくとも一実施例では、コンピュータ・システムのプロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをコンピュータ・システムに行わせる実行可能命令を実行する。
図16は、少なくとも一実施例による、コンピュータ・システム1600を示す。少なくとも一実施例では、コンピュータ・システム1600は、本開示全体を通して説明する様々なプロセス及び方法を実装するように構成される。
少なくとも一実施例では、コンピュータ・システム1600は、限定することなく、少なくとも1つの中央処理装置(「CPU」)1602を含み、この処理装置は、PCI:Peripheral Component Interconnect(「ペリフェラル・コンポーネント・インターコネクト」)、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCI−Express」:peripheral component interconnect express)、AGP:Accelerated Graphics Port(「アクセラレーテッド・グラフィックス・ポート」)、ハイパートランスポート、又は任意の他のバス若しくはポイントツーポイントの通信プロトコルなど、任意の好適なプロトコルを使用して実装された通信バス1610に接続される。少なくとも一実施例では、コンピュータ・システム1600は、メイン・メモリ1604、及び(たとえば、ハードウェア、ソフトウェア、又はこれらの組合せとして実装される)制御論理を限定することなく含み、データは、ランダム・アクセス・メモリ(「RAM」:random access memory)の形をとってもよいメイン・メモリ1604に記憶される。少なくとも一実施例では、ネットワーク・インターフェース・サブシステム(「ネットワーク・インターフェース」)1622は、コンピュータ・システム1600を有する他のシステムからデータを受信し、コンピュータ・システム1600を有する他のシステムにデータを送信するための他のコンピューティング・デバイス及びネットワークとのインターフェースを提供する。
少なくとも一実施例では、コンピュータ・システム1600は、少なくとも一実施例では、限定することなく、入力デバイス1608、パラレル処理システム1612、及びディスプレイ・デバイス1606を含み、このディスプレイ・デバイスは、従来の陰極線管(「CRT」:cathode ray tube)、液晶ディスプレイ(「LCD」:liquid crystal display)、発光ダイオード(「LED」:light emitting diode)ディスプレイ、プラズマ・ディスプレイ、又は他の好適なディスプレイ技術を使用して実装することができる。少なくとも一実施例では、ユーザ入力は、キーボード、マウス、タッチ・パッド、マイクロフォンなどの入力デバイス1608から受け取る。少なくとも一実施例では、本明細書に記載の各モジュールを単一の半導体プラットフォームに置いて、処理システムを形成することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図16のシステムにおいて使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにコンピュータ・システムを使用して構築されることが可能である。少なくとも一実施例では、コンピュータ・システムのプロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。少なくとも一実施例では、実行可能命令は、上に記載したように、USBスティックに記憶されてもよい。
図17は、少なくとも一実施例によるコンピュータ・システム1700を示す。少なくとも一実施例では、コンピュータ・システム1700は、限定することなく、コンピュータ1710及びUSBスティック1720を含んでもよい。少なくとも一実施例では、コンピュータ・システム1710は、限定することなく、任意の数及びタイプのプロセッサ(図示せず)、並びにメモリを含んでもよい。少なくとも一実施例では、コンピュータ1710は、限定することなく、サーバ、クラウド・インスタンス、ラップトップ、及びデスクトップ・コンピュータを含む。
少なくとも一実施例では、USBスティック1720は、限定することなく、処理ユニット1730、USBインターフェース1740、及びUSBインターフェース論理1750を含む。少なくとも一実施例では、処理ユニット1730は、命令を実行することができる任意の命令実行システム、装置、又はデバイスであってもよい。少なくとも一実施例では、処理ユニット1730は、限定することなく、任意の数及びタイプの処理コア(図示せず)を含んでもよい。少なくとも一実施例では、処理ユニット1730は、機械学習に関連する任意の量及びタイプの演算を実行するように最適化された特定用途向け集積回路(「ASIC」)を備える。たとえば、少なくとも一実施例では、処理ユニット1730は、機械学習の推論演算を実行するように最適化されたテンソル処理ユニット(「TPC」:tensor processing unit)である。少なくとも一実施例では、処理ユニット1730は、機械視覚及び機械学習の推論演算を実行するように最適化された視覚処理ユニット(「VPU」)である。
少なくとも一実施例では、USBインターフェース1740は、任意のタイプのUSBコネクタ又はUSBソケットであってもよい。たとえば、少なくとも一実施例では、USBインターフェース1740は、データ及び電源用のUSB3.0 Type−Cのソケットである。少なくとも一実施例では、USBインターフェース1740は、USB3.0 Type−Aのコネクタである。少なくとも一実施例では、USBインターフェース論理1750は、処理ユニット1730がUSBコネクタ1740を介してデバイス(たとえばコンピュータ1710)と又はインターフェースをとることを可能にする任意の量及びタイプの論理を含んでもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図17のシステムにおいて使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにコンピュータ・システムを使用して構築されることが可能である。少なくとも一実施例では、コンピュータ・システムのプロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。少なくとも一実施例では、実行可能命令は、上に記載したように、USBスティックに記憶されてもよい。
図18Aは、複数のGPU1810(1)〜1810(N)が、高速リンク1840(1)〜1840(N)(たとえば、バス、ポイントツーポイント相互接続など)を介して複数のマルチ・コア・プロセッサ1805(1)〜1805(M)に通信可能に結合されている例示的なアーキテクチャを示す。少なくとも一実施例では、高速リンク1840(1)〜1840(N)は、4GB/秒、30GB/秒、80GB/秒、又はそれ以上の通信スループットをサポートする。1840(1)〜1840(N)PCIe4.0又は5.0、及びNVLink2.0を含むがこれらに限定されない様々な相互接続プロトコルが使用されてもよい。様々な図において、「N」及び「M」は、正の整数を表し、その値は図ごとに異なってもよい。
さらに、少なくとも一実施例では、GPU1810のうちの2つ以上は高速リンク1829(1)〜1829(2)を介して相互接続され、これらは、高速リンク1840(1)〜1840(N)に使用されたものと同様の又は異なるプロトコル/リンクを使用して実装されてもよい。同様に、マルチ・コア・プロセッサ1805のうちの2つ以上は、高速リンク1828を介して接続されてもよく、この高速リンク1828は、20GB/秒、30GB/秒、120GB/秒、又はそれ以上で動作する対称型マルチプロセッサ(SMP)バスとすることができる。或いは、図18Aに示す様々なシステム構成要素間のすべての通信は、同様のプロトコル/リンクを使用して(たとえば、共通の相互接続ファブリックを介して)実現されてもよい。
少なくとも一実施例では、各マルチ・コア・プロセッサ1805は、それぞれメモリ相互接続1826(1)〜1826(M)を介してプロセッサ・メモリ1801(1)〜1801(M)に通信可能に結合され、各GPU1810(1)〜1810(N)は、それぞれGPUメモリ・相互接続1850(1)〜1850(N)を介してGPUメモリ1820(1)〜1820(N)に通信可能に結合される。少なくとも一実施例では、メモリ相互接続1826及び1850は、同様の又は異なるメモリ・アクセス技術を利用してもよい。例として、限定ではなく、プロセッサ・メモリ1801(1)〜1801(M)及びGPUメモリ1820は、(積層DRAMを含む)ダイナミック・ランダム・アクセス・メモリ(DRAM)、グラフィックスDDR SDRAM(GDDR)(たとえば、GDDR5、GDDR6)、又は高帯域幅メモリ(HBM)などの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano−Ramなどの不揮発性メモリであってもよい。少なくとも一実施例では、(たとえば、2レベルのメモリ(2LM)階層を使用して)、プロセッサ・メモリ1801のいくつかの部分は揮発性メモリであってもよく、別の部分は不揮発性メモリであってもよい。
本明細書に記載するように、様々なマルチ・コア・プロセッサ1805及びGPU1810は、それぞれ特定のメモリ1801、1820に物理的に結合されてもよい、及び/又は仮想システムのアドレス空間(「実効アドレス」空間とも呼ぶ)が様々な物理メモリ間に分配されている統合されたメモリ・アーキテクチャが実装されてもよい。たとえば、プロセッサ・メモリ1801(1)〜1801(M)はそれぞれ、64GBのシステム・メモリ・アドレス空間を備えてもよく、GPUメモリ1820(1)〜1820(N)はそれぞれ、32GBのシステム・メモリ・アドレス空間を備えてもよく、M=2でN=4の場合、合計256GBのアドレス指定可能メモリが得られる。N及びMについて他の値が考えられる。
図18Bは、1つの例示的な実施例によるマルチ・コア・プロセッサ1807とグラフィックス加速モジュール1846との相互接続のさらなる詳細事項を示す。少なくとも一実施例では、グラフィックス加速モジュール1846は、高速リンク1840(たとえば、PCIeバス、NVLinkなど)を介してプロセッサ1807に結合されるライン・カードに集積された1つ又は複数のGPUチップを含んでもよい。少なくとも一実施例では、或いは、グラフィックス加速モジュール1846は、プロセッサ1807を有するパッケージ又はチップに集積されてもよい。
少なくとも一実施例では、プロセッサ1807は、複数のコア1860A〜1860Dを含み、それぞれのコアが、トランスレーション・ルックアサイド・バッファ(「TLB」)1861A〜1861Dと、1つ又は複数のキャッシュ1862A〜1862Dとを有する。少なくとも一実施例では、コア1860A〜1860Dは、命令を実行しデータを処理するための、図示していない様々な他の構成要素を含んでもよい。少なくとも一実施例では、キャッシュ1862A〜1862Dは、レベル1(L1)及びレベル2(L2)のキャッシュを備えてもよい。さらに、1つ又は複数の共有キャッシュ1856が、キャッシュ1862A〜1862Dに含まれ、コア1860A〜1860Dのセットによって共有されてもよい。たとえば、プロセッサ1807の一実施例は、24個のコアを含み、各コアが、独自のL1キャッシュ、12個の共有L2キャッシュ、及び12個の共有L3キャッシュを有する。この実施例では、1つ又は複数のL2及びL3のキャッシュが、2つの隣接するコアによって共有される。少なくとも一実施例では、プロセッサ1807及びグラフィックス加速モジュール1846は、システム・メモリ1814に接続されており、このシステム・メモリは、図18Aのプロセッサ・メモリ1801(1)〜1801(M)を含んでもよい。
少なくとも一実施例では、様々なキャッシュ1862A〜1862D、1856、及びシステム・メモリ1814に記憶されたデータ及び命令については、コヒーレンス・バス1864を介したコア間通信によって、コヒーレンスが維持される。少なくとも一実施例では、たとえば、各キャッシュは、特定のキャッシュ・ラインに対する読取り又は書込みを検出したことに応答して、コヒーレンス・バス1864を介して通信するために、それに関連するキャッシュ・コヒーレンス論理/回路を有してもよい。少なくとも一実施例では、キャッシュ・アクセスを監視するために、コヒーレンス・バス1864を介してキャッシュ・スヌーピング・プロトコルが実装される。
少なくとも一実施例では、プロキシ回路1825が、グラフィックス加速モジュール1846をコヒーレンス・バス1864に通信可能に結合して、グラフィックス加速モジュール1846がコア1860A〜1860Dのピアとしてキャッシュ・コヒーレンス・プロトコルに参加できるようにする。特に、少なくとも一実施例では、インターフェース1835は、高速リンク1840を介してプロキシ回路1825への接続を提供し、インターフェース1837は、グラフィックス加速モジュール1846を高速リンク1840に接続する。
少なくとも一実施例では、アクセラレータ統合回路1836は、グラフィックス加速モジュール1846の複数のグラフィックス処理エンジン1831(1)〜1831(N)の代わりに、キャッシュ管理、メモリ・アクセス、コンテンツ管理、及び割込み管理のサービスを提供する。少なくとも一実施例では、グラフィックス処理エンジン1831(1)〜1831(N)はそれぞれ、別個のグラフィックス・プロセッシング・ユニット(GPU)を備えてもよい。少なくとも一実施例では、或いは、グラフィックス処理エンジン1831(1)〜1831(N)は、GPUの中に、グラフィックス実行ユニット、メディア処理エンジン(たとえば、ビデオ・エンコーダ/デコーダ)、サンプラ、及びブリット・エンジンなど、異なるタイプのグラフィックス処理エンジンを備えてもよい。少なくとも一実施例では、グラフィックス加速モジュール1846は、複数のグラフィックス処理エンジン1831(1)〜1831(N)を有するGPUであってもよく、又はグラフィックス処理エンジン1831(1)〜1831(N)は、共通のパッケージ、ライン・カード、若しくはチップに集積された個々のGPUであってもよい。
少なくとも一実施例では、アクセラレータ統合回路1836は、仮想から物理のメモリ・トランスレーション(実効から実(effective−to−real)のメモリ・トランスレーションとも呼ばれる)など、様々なメモリ管理機能を実行するためのメモリ管理ユニット(MMU)1839、及びシステム・メモリ1814にアクセスするためのメモリ・アクセス・プロトコルを含む。少なくとも一実施例では、MMU1839は、仮想/実効から物理/実へのアドレス・トランスレーションをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB)(図示せず)も含むことができる。少なくとも一実施例では、キャッシュ1838は、グラフィックス処理エンジン1831(1)〜1831(N)から効率的にアクセスできるように、コマンド及びデータを記憶することができる。少なくとも一実施例では、キャッシュ1838及びグラフィックス・メモリ1833(1)〜1833(M)に記憶されたデータは、場合によりフェッチ・ユニット1844を使用して、コア・キャッシュ1862A〜1862D、1856、及びシステム・メモリ1814とコヒーレントに保たれる。述べたように、これは、キャッシュ1838及びメモリ1833(1)〜1833(M)の代わりにプロキシ回路1825を介して(たとえば、プロセッサ・キャッシュ1862A〜1862D、1856におけるキャッシュ・ラインの修正/アクセスに関するアップデートをキャッシュ1838に送り、キャッシュ1838からのアップデートを受け取って)実現されてもよい。
少なくとも一実施例では、レジスタ1845のセットが、グラフィックス処理エンジン1831(1)〜1831(N)によって実行されるスレッドのためのコンテキスト・データを記憶し、コンテキスト管理回路1848が、スレッド・コンテキストを管理する。たとえば、コンテキスト管理回路1848は、コンテキスト・スイッチ中に様々なスレッドのコンテキストを保存及び復元するために、保存及び復元の動作を実行してもよい(たとえば、ここで、第2のスレッドをグラフィックス処理エンジンによって実行できるように、第1のスレッドが保存され、第2のスレッドが記憶される)。たとえば、コンテキスト・スイッチ時に、コンテキスト管理回路1848は、現在のレジスタ値を(たとえば、コンテキスト・ポインタによって識別された)メモリの指定領域に記憶してもよい。次いで、コンテキストに戻るときに、コンテキスト管理回路1848がレジスタ値を復元してもよい。少なくとも一実施例では、割込み管理回路1847は、システム・デバイスから受け取った割込みを受け取り、処理する。
少なくとも一実施例では、グラフィックス処理エンジン1831からの仮想/実効アドレスは、MMU1839によってシステム・メモリ1814の実/物理アドレスにトランスレートされる。少なくとも一実施例では、アクセラレータ統合回路1836の一実施例は、複数(たとえば、4個、8個、16個)のグラフィックス・アクセラレータ・モジュール1846、及び/又は他のアクセラレータ・デバイスをサポートする。少なくとも一実施例では、グラフィックス・アクセラレータ・モジュール1846は、プロセッサ1807上で実行される単一のアプリケーション専用のものであってもよく、又は複数のアプリケーション間で共有されてもよい。少なくとも一実施例では、グラフィックス処理エンジン1831(1)〜1831(N)のリソースが複数のアプリケーション又は仮想機械(VM)と共有される仮想化グラフィックス実行環境が存在する。少なくとも一実施例では、リソースは、「スライス」に細分化されてもよく、このスライスが、処理要件、並びにVM及び/又はアプリケーションに関連付けられた優先度に基づき、異なるVM及び/又はアプリケーションに割り振られる。
少なくとも一実施例では、アクセラレータ統合回路1836は、グラフィックス加速モジュール1846のためのシステムへのブリッジとして機能し、アドレス・トランスレーション及びシステム・メモリのキャッシュ・サービスを提供する。さらに、少なくとも一実施例では、アクセラレータ統合回路1836は、グラフィックス処理エンジン1831(1)〜1831(N)の仮想化、割込み、及びメモリ管理をホスト・プロセッサが管理するための仮想化設備を提供してもよい。
少なくとも一実施例では、グラフィックス処理エンジン1831(1)〜1831(N)のハードウェア・リソースは、ホスト・プロセッサ1807が見る実アドレス空間に明示的にマッピングされるので、いかなるホスト・プロセッサも、実効アドレス値を使用して、これらのリソースに直接アドレス指定することができる。少なくとも一実施例では、アクセラレータ統合回路1836の1つの機能は、グラフィックス処理エンジン1831(1)〜1831(N)を、システムにとって独立したユニットに見えるように物理的に分離することである。
少なくとも一実施例では、1つ又は複数のグラフィックス・メモリ1833(1)〜1833(M)はそれぞれ、グラフィックス処理エンジン1831(1)〜1831(N)のそれぞれに結合され、N=Mである。少なくとも一実施例では、グラフィックス・メモリ1833(1)〜1833(M)は、それぞれのグラフィックス処理エンジン1831(1)〜1831(N)によって処理される命令及びデータを記憶する。少なくとも一実施例では、グラフィックス・メモリ1833(1)〜1833(M)は、(積層DRAMを含む)DRAM、GDDRメモリ、(たとえば、GDDR5、GDDR6)、又はHBMなどの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano−Ramなどの不揮発性メモリであってもよい。
少なくとも一実施例では、高速リンク1840を介したデータ・トラフィックを低減するために、グラフィックス・メモリ1833(1)〜1833(M)に記憶されるデータが、グラフィックス処理エンジン1831(1)〜1831(N)によって最も頻繁に使用されることになるデータであるようにし、好ましくはコア1860A〜1860Dによっては使用されない(少なくとも頻繁には使用されない)データであるようにするためのバイアス技法が使用され得る。同様に、少なくとも一実施例では、バイアス機構は、コアが必要とする(したがって、好ましくはグラフィックス処理エンジン1831(1)〜1831(N)は必要としない)データを、コアのキャッシュ1862A〜1862D、1856、及びシステム・メモリ1814の中に保つよう試みる。
図18Cは、アクセラレータ統合回路1836がプロセッサ1807内に一体化されている別の例示的な実施例を示す。少なくともこの実施例では、グラフィックス処理エンジン1831(1)〜1831(N)は、インターフェース1837及びインターフェース1835により、高速リンク1840を介して直接アクセラレータ統合回路1836と通信する(この場合も任意の形のバス又はインターフェース・プロトコルであり得る)。少なくとも一実施例では、アクセラレータ統合回路1836は、図18Bに関して説明したのと同様の動作を実行してもよいが、コヒーレンス・バス1864及びキャッシュ1862A〜1862D、1856に近接していることを考えると、潜在的には、より高いスループットで動作してもよい。少なくとも一実施例は、アクセラレータ統合回路は、(グラフィックス加速モジュールの仮想化のない)専用プロセスのプログラミング・モデルと、(仮想化のある)共有プログラミング・モデルとを含む異なるプログラミング・モデルをサポートし、これらは、アクセラレータ統合回路1836によって制御されるプログラミング・モデルと、グラフィックス加速モジュール1846によって制御されるプログラミング・モデルとを含んでもよい。
少なくとも一実施例では、グラフィックス処理エンジン1831(1)〜1831(N)は、単一のオペレーティング・システムの下で単一のアプリケーション又はプロセスに専用のものである。少なくとも一実施例では、単一のアプリケーションは、他のアプリケーション要求をグラフィックス処理エンジン1831(1)〜1831(N)に集中させて、VM/パーティション内で仮想化を実現することができる。
少なくとも一実施例では、グラフィックス処理エンジン1831(1)〜1831(N)は、複数のVM/アプリケーション・パーティションによって共有されてもよい。少なくとも一実施例では、共有モデルはシステム・ハイパーバイザを使用して、グラフィックス処理エンジン1831(1)〜1831(N)を仮想化して、各オペレーティング・システムによるアクセスを可能にしてもよい。少なくとも一実施例では、ハイパーバイザのない単一パーティションのシステムでは、グラフィックス処理エンジン1831(1)〜1831(N)は、オペレーティング・システムによって所有される。少なくとも一実施例では、オペレーティング・システムは、グラフィックス処理エンジン1831(1)〜1831(N)を仮想化して、各プロセス又はアプリケーションへのアクセスを提供することができる。
少なくとも一実施例では、グラフィックス加速モジュール1846又は個々のグラフィックス処理エンジン1831(1)〜1831(N)は、プロセス・ハンドルを使用して、プロセス要素を選択する。少なくとも一実施例では、プロセス要素は、システム・メモリ1814に記憶されており、本明細書に記載の実効アドレスから実アドレスへのトランスレーション技法を使用してアドレス指定可能である。少なくとも一実施例では、プロセス・ハンドルは、ホスト・プロセスのコンテキストをグラフィックス処理エンジン1831(1)〜1831(N)に登録する(すなわち、プロセス要素リンク・リストにプロセス要素を追加するためのシステム・ソフトウェアをコールする)ときに、ホスト・プロセスに提供される実装固有の値であってもよい。少なくとも一実施例では、プロセス・ハンドルの下位16ビットは、プロセス要素リンク・リスト内のプロセス要素のオフセットであってもよい。
図18Dは、例示的なアクセラレータ統合スライス1890を示す。少なくとも一実施例では、「スライス」は、アクセラレータ統合回路1836の処理リソースの指定部分を備える。少なくとも一実施例では、システム・メモリ1814内のアプリケーション実効アドレス空間1882は、プロセス要素1883を記憶する。少なくとも一実施例では、プロセス要素1883は、プロセッサ1807上で実行されているアプリケーション1880からのGPU呼出し1881に応答して、記憶される。少なくとも一実施例では、プロセス要素1883は、対応するアプリケーション1880のプロセス状態を収容する。少なくとも一実施例では、プロセス要素1883に収容されたワーク記述子(WD)1884は、アプリケーションによって要求される単一のジョブとすることができ、又はジョブのキューに対するポインタを収容してもよい。少なくとも一実施例では、WD1884は、アプリケーションの実効アドレス空間1882におけるジョブ要求キューに対するポインタである。
少なくとも一実施例では、グラフィックス加速モジュール1846及び/又は個々のグラフィックス処理エンジン1831(1)〜1831(N)は、システム内のプロセスのすべて又はサブセットによって共有されることが可能である。少なくとも一実施例では、プロセス状態を設定し、WD1884をグラフィックス加速モジュール1846に送信して、仮想化環境においてジョブを開始するためのインフラストラクチャが、含められてもよい。
少なくとも一実施例では、専用のプロセス・プログラミング・モデルは、実装固有である。少なくとも一実施例では、このモデルでは、単一のプロセスが、グラフィックス加速モジュール1846又は個々のグラフィックス処理エンジン1831を所有する。少なくとも一実施例では、グラフィックス加速モジュール1846が単一のプロセスによって所有されるとき、グラフィックス加速モジュール1846が割り当てられたときに、ハイパーバイザは、所有パーティションについてアクセラレータ統合回路1836を初期化し、オペレーティング・システムは、所有プロセスについてアクセラレータ統合回路1836を初期化する。
少なくとも一実施例では、動作時、アクセラレータ統合スライス1890内のWDフェッチ・ユニット1891は、グラフィックス加速モジュールの1つ又は複数のグラフィックス処理エンジンによって行われることになるワークの表示を含む次のWD1884をフェッチする。少なくとも一実施例では、図示してあるように、WD1884からのデータは、レジスタ1845に記憶され、MMU1839、割込み管理回路1847、及び/又はコンテキスト管理回路1848によって使用されてもよい。たとえば、MMU1839の一実施例は、OS仮想アドレス空間1885内のセグメント/ページ・テーブル1886にアクセスするためのセグメント/ページ・ウォーク回路を含む。少なくとも一実施例では、割込み管理回路1847は、グラフィックス加速モジュール1846から受け取った割込みイベント1892を処理してもよい。少なくとも一実施例では、グラフィックス動作を実行するとき、グラフィックス処理エンジン1831(1)〜1831(N)によって生成された実効アドレス1893は、MMU1839によって実アドレスにトランスレートされる。
少なくとも一実施例では、レジスタ1845が、各グラフィックス処理エンジン1831(1)〜1831(N)、及び/又はグラフィックス加速モジュール1846について複製され、ハイパーバイザ又はオペレーティング・システムによって初期化されてもよい。少なくとも一実施例では、これらの複製されたレジスタのそれぞれは、アクセラレータ統合スライス1890に含まれてもよい。ハイパーバイザによって初期化されてもよい例示的なレジスタを、表1に示す。
オペレーティング・システムによって初期化されてもよい例示的なレジスタを、表2に示す。
少なくとも一実施例では、各WD1884は、特定のグラフィックス加速モジュール1846及び/又はグラフィックス処理エンジン1831(1)〜1831(N)に固有のものである。少なくとも一実施例では、WD1884は、グラフィックス処理エンジン1831(1)〜1831(N)がワークを行うために必要とするすべての情報を収容し、又は完了すべきワークのコマンド・キューをアプリケーションがセットアップした場所であるメモリ・ロケーションを指すポインタとすることができる。
図18Eは、共有モデルの例示的な一実施例のさらなる詳細事項を示す。この実施例は、プロセス要素リスト1899が記憶されているハイパーバイザ実アドレス空間1898を含む。少なくとも一実施例では、ハイパーバイザ実アドレス空間1898は、オペレーティング・システム1895のグラフィックス加速モジュール・エンジンを仮想化するハイパーバイザ1896を介してアクセス可能である。
少なくとも一実施例では、共有プログラミング・モデルは、システム内のすべて又はサブセットのパーティションからのすべて又はサブセットのプロセスが、グラフィックス加速モジュール1846を使用できるようにする。少なくとも一実施例では、グラフィックス加速モジュール1846が複数のプロセス及びパーティションによって共有されるプログラミング・モデルが、2つ、つまり時間スライス共有及びグラフィックス指定共有(graphics−directed shared)が存在する。
少なくとも一実施例では、このモデルでは、システム・ハイパーバイザ1896がグラフィックス加速モジュール1846を所有しており、その機能をすべてのオペレーティング・システム1895にとって利用可能にする。少なくとも一実施例では、システム・ハイパーバイザ1896による仮想化をグラフィックス加速モジュール1846がサポートするために、グラフィックス加速モジュール1846は、1)アプリケーションのジョブ要求は自律でなくてはならず(すなわち、ジョブ間で状態を維持する必要はなく)、又はグラフィックス加速モジュール1846が、コンテキストの保存及び復元の機構を提供しなくてはならない、2)アプリケーションのジョブ要求は、あらゆるトランスレーション誤りも含めて指定された時間量で完了するようグラフィックス加速モジュール1846によって保証され、又はグラフィックス加速モジュール1846が、ジョブの処理をプリエンプションする機能を提供する、及び3)グラフィックス加速モジュール1846は、指定の共有プログラミング・モデルで動作しているとき、プロセス間で公平性が保証されなくてはならないなどのいくつかの要件に準拠してもよい。
少なくとも一実施例では、アプリケーション1880は、グラフィックス加速モジュールのタイプ、ワーク記述子(WD)、権限マスク・レジスタ(AMR)値、及びコンテキスト保存/復元エリア・ポインタ(CSRP)を伴って、オペレーティング・システム1895のシステム・コールを行う必要がある。少なくとも一実施例では、グラフィックス加速モジュールのタイプは、システム・コールで目的とする加速機能を記述している。少なくとも一実施例では、グラフィックス加速モジュールのタイプは、システム固有値であってもよい。少なくとも一実施例では、WDは、グラフィックス加速モジュール1846のために特にフォーマット化されており、グラフィックス加速モジュール1846のコマンド、ユーザ定義の構造を指す実効アドレス・ポインタ、コマンドのキューを指す実効アドレス・ポインタ、又はグラフィックス加速モジュール1846によって行われるワークを記述するための任意の他のデータ構造の形とすることができる。
少なくとも一実施例では、AMR値は、現在のプロセスに使用するためのAMR状態である。少なくとも一実施例では、オペレーティング・システムに渡される値は、AMRをセッティングするアプリケーションと同様である。少なくとも一実施例では、アクセラレータ統合回路1836(図示せず)及びグラフィックス加速モジュール1846の実装形態が、ユーザ権限マスク・オーバーライド・レジスタ(UAMOR)をサポートしていない場合、オペレーティング・システムは、AMR値に現在のUAMOR値を適用してから、ハイパーバイザ・コールにAMRを渡してもよい。少なくとも一実施例では、ハイパーバイザ1896は、任意選択で、現在の権限マスク・オーバーライド・レジスタ(AMOR)値を適用してから、AMRをプロセス要素1883に入れてもよい。少なくとも一実施例では、CSRPは、グラフィックス加速モジュール1846がコンテキスト状態を保存及び復元するためのアプリケーションの実効アドレス空間1882内のエリアの実効アドレスを収容するレジスタ1845のうちの1つである。少なくとも一実施例では、ジョブ間で、又はジョブがプリエンプションされるときに、いかなる状態も保存する必要のない場合は、このポインタは任意選択である。少なくとも一実施例では、コンテキスト保存/復元エリアは、ピン留めされたシステム・メモリであってもよい。
システム・コールを受け取ると、オペレーティング・システム1895は、アプリケーション1880が登録済みであり、グラフィックス加速モジュール1846を使用する権限が与えられていることを検証してもよい。少なくとも一実施例では、次いで、オペレーティング・システム1895は、表3に示す情報を伴ってハイパーバイザ1896にコールする。
少なくとも一実施例では、ハイパーバイザ・コールを受け取ると、ハイパーバイザ1896は、オペレーティング・システム1895が登録済みであり、グラフィックス加速モジュール1846を使用する権限が与えられていることを検証する。少なくとも一実施例では、次いでハイパーバイザ1896は、プロセス要素1883を、対応するグラフィックス加速モジュール1846のタイプのプロセス要素リンク・リストに入れる。少なくとも一実施例では、プロセス要素は、表4に示す情報を含んでもよい。
少なくとも一実施例では、ハイパーバイザは、複数のアクセラレータ統合スライス1890のレジスタ1845を初期化する。
図18Fに示すように、少なくとも一実施例では、物理プロセッサ・メモリ1801(1)〜1801(N)及びGPUメモリ1820(1)〜1820(N)にアクセスするために使用される共通の仮想メモリ・アドレス空間を介してアドレス指定可能である統合メモリが使用される。この実装形態では、GPU1810(1)〜1810(N)で実行される動作は、プロセッサ・メモリ1801(1)〜1801(N)にアクセスするのと同じ仮想/実効メモリ・アドレス空間を利用し、且つその逆も同様であり、それによりプログラマビリティが簡単になる。少なくとも一実施例では、仮想/実効アドレス空間の第1の部分はプロセッサ・メモリ1801(1)に割り振られ、第2の部分は第2のプロセッサ・メモリ1801(N)に割り振られ、第3の部分はGPUメモリ1820(1)に割り振られるというように続く。少なくとも一実施例では、仮想/実効メモリ空間全体(実効アドレス空間と呼ばれることもある)は、これによりプロセッサ・メモリ1801及びGPUメモリ1820のそれぞれにわたって分配されて、仮想アドレスが物理メモリにマッピングされた状態で、いずれかのプロセッサ又はGPUが、いずれかの物理メモリにアクセスできるようになる。
少なくとも一実施例では、MMU1839A〜1839Eのうちの1つ又は複数の中のバイアス/コヒーレンス管理回路1894A〜1894Eは、1つ又は複数のホスト・プロセッサ(たとえば、1805)のキャッシュとGPU1810のキャッシュとの間でキャッシュ・コヒーレンスを確保し、バイアス技法を実装して、ある特定のタイプのデータが記憶されるべき物理メモリを示す。少なくとも一実施例では、バイアス/コヒーレンス管理回路1894A〜1894Eの複数のインスタンスが図18Fに示されるが、バイアス/コヒーレンス回路は、1つ又は複数のホスト・プロセッサ1805のMMU内に実装されてもよく、且つ/又はアクセラレータ統合回路1836内に実装されてもよい。
一実施例は、GPUメモリ1820をシステム・メモリの一部としてマッピングできるようにし、共有仮想メモリ(SVM)技法を使用してアクセス可能にすることができるが、完全なシステム・キャッシュ・コヒーレンスに関連する性能の低下が生じることはない。少なくとも一実施例では、GPUメモリ1820が、面倒なキャッシュ・コヒーレンス・オーバーヘッドなく、システム・メモリとしてアクセス可能であることにより、GPUオフロードのための有益な動作環境が提供される。少なくとも一実施例では、この構成によって、従来のI/O DMAデータ・コピーのオーバーヘッドがなくても、ホスト・プロセッサ1805ソフトウェアがオペランドを設定し、計算結果にアクセスすることが可能になる。少なくとも一実施例では、こうした従来のコピーは、ドライバ・コール、割込み、及びメモリ・マップドI/O(MMIO)アクセスを必要とし、これらはすべて、単純なメモリ・アクセスより非効率的である。少なくとも一実施例では、キャッシュ・コヒーレンス・オーバーヘッドなしでGPUメモリ1820にアクセスできることが、オフロードされた計算の実行時間に不可欠であり得る。少なくとも一実施例では、たとえば、かなりのストリーミング書込みメモリ・トラフィックがある場合には、キャッシュ・コヒーレンス・オーバーヘッドは、GPU1810が見る有効な書込み帯域幅を大幅に低減することある。少なくとも一実施例では、オペランド設定の効率、結果へのアクセスの効率、及びGPU計算の効率は、GPUオフロードの有効性を判定する際に役立つことがある。
少なくとも一実施例では、GPUバイアス及びホスト・プロセッサ・バイアスの選択は、バイアス・トラッカー・データ構造によって決められる。少なくとも一実施例では、たとえばバイアス・テーブルが使用されてもよく、このテーブルは、GPU付きメモリ・ページ当たり1ビット又は2ビットを含むページ粒度構造であってもよい(たとえば、メモリ・ページの粒度で制御されてもよい)。少なくとも一実施例では、バイアス・テーブルは、(たとえば、バイアス・テーブルの頻繁に使用された/最近使用されたエントリをキャッシュするための)バイアス・キャッシュがGPU1810にある状態又はない状態で、1つ又は複数のGPUメモリ1820の奪われたメモリ範囲(stolen memory range)において実装されてもよい。或いは、少なくとも一実施例では、バイアス・テーブル全体が、GPU内に維持されてもよい。
少なくとも一実施例では、GPU付きメモリ1820への各アクセスに関連付けられたバイアス・テーブルのエントリが、GPUメモリへの実際のアクセスより先にアクセスされて、以下の動作を生じさせる。少なくとも一実施例では、GPUバイアス内での自らのページを見いだすGPU1810からのローカル要求が、対応するGPUメモリ1820に直接転送される。少なくとも一実施例では、ホスト・バイアスにおいて自らのページを見いだすGPUからのローカル要求は、(たとえば、上述した高速リンクを介して)プロセッサ1805に転送される。少なくとも一実施例では、要求されたページをホスト・プロセッサ・バイアスにおいて見いだすプロセッサ1805からの要求は、通常のメモリ読取りと同様に要求を完了させる。或いは、GPUバイアス化ページに向けられた要求は、GPU1810に転送されてもよい。少なくとも一実施例では、次いでGPUは、現在ページを使用していない場合、ホスト・プロセッサ・バイアスにページを移行してもよい。少なくとも一実施例では、ページのバイアス状態は、ソフトウェア・ベースの機構、ハードウェア支援型ソフトウェア・ベースの機構のいずれかによって、又は限られた事例のセットについては、単にハードウェア・ベースの機構によって、変更することができる。
少なくとも一実施例では、バイアス状態を変更するための1つの機構は、APIコール(たとえば、OpenCL)を利用し、このAPIコールが、GPUのデバイス・ドライバをコールし、このデバイス・ドライバが、GPUにメッセージを送って(又はコマンド記述子をキューに加えて)、バイアス状態を変更し、一部の移行については、ホストにおいてキャッシュ・フラッシング動作を実行するよう、GPUを導く。少なくとも一実施例では、キャッシュ・フラッシング動作は、ホスト・プロセッサ1805のバイアスからGPUバイアスへの移行のために使用されるが、反対向きの移行には使用されない。
少なくとも一実施例では、キャッシュ・コヒーレンスは、ホスト・プロセッサ1805によってキャッシュできないGPUバイアス化ページを一時的にレンダリングすることによって、維持される。少なくとも一実施例では、これらのページにアクセスするために、プロセッサ1805は、GPU1810からのアクセスを要求してもよく、GPU1810は、すぐにアクセスを許可してもよく、又は許可しなくてもよい。少なくとも一実施例では、したがって、プロセッサ1805とGPU1810との間の通信を低減するために、GPUバイアス化ページが、GPUによって要求されるが、ホスト・プロセッサ1805によっては要求されないようにすること、又はその逆にすることが有益である。
1つ又は複数の実施例を実行するために、ハードウェア構造体1015が使用される。ハードウェア構造体1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供され得る。
図19は、本明細書に記載の様々な実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、若しくは汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
図19は、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができる例示的なシステム・オン・チップ集積回路1900を示すブロック図である。少なくとも一実施例では、集積回路1900は、1つ又は複数のアプリケーション・プロセッサ1905(たとえば、CPU)、少なくとも1つのグラフィックス・プロセッサ1910を含み、さらに、画像プロセッサ1915及び/又はビデオ・プロセッサ1920を含んでもよく、これらのいずれもが、モジュール式IPコアであってもよい。少なくとも一実施例では、集積回路1900は、USBコントローラ1925、UARTコントローラ1930、SPI/SDIOコントローラ1935、及びI22S/I22Cコントローラ1940を含む周辺装置又はバス論理を含む。少なくとも一実施例では、集積回路1900は、ハイ・デフィニション・マルチメディア・インターフェース(HDMI(登録商標):high−definition multimedia interface(登録商標))コントローラ1950及びモバイル・インダストリ・プロセッサ・インターフェース(MIPI)ディスプレイ・インターフェース1955のうちの1つ又は複数に結合されるディスプレイ・デバイス1945を含むことができる。少なくとも一実施例では、フラッシュ・メモリ及びフラッシュ・メモリ・コントローラを含むフラッシュ・メモリ・サブシステム1960によって、ストレージが提供されてもよい。少なくとも一実施例では、SDRAM又はSRAMメモリ・デバイスにアクセスするために、メモリ・コントローラ1965を介してメモリ・インターフェースが提供されてもよい。少なくとも一実施例では、いくつかの集積回路はさらに、組み込みセキュリティ・エンジン1970を含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路1900において使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。少なくとも一実施例では、本明細書に記載したように、プロセッサはグラフィックス・プロセッサ、GPU、ビデオ・プロセッサ、又はアプリケーション・プロセッサである。
図20A〜図20Bは、本明細書に記載の様々実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、又は汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
図20A及び図20Bは、本明細書に記載の実施例による、SoC内で使用するための例示的なグラフィックス・プロセッサを示すブロック図である。図20Aは、少なくとも一実施例による、1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路の例示的なグラフィックス・プロセッサ2010を示す。図20Bは、少なくとも一実施例による、1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路のさらなる例示的なグラフィックス・プロセッサ2040を示す。少なくとも一実施例では、図20Aのグラフィックス・プロセッサ2010は、低電力グラフィックス・プロセッサ・コアである。少なくとも一実施例では、図20Bのグラフィックス・プロセッサ2040は、高性能グラフィックス・プロセッサ・コアである。少なくとも一実施例では、グラフィックス・プロセッサ2010、2040のそれぞれは、図19のグラフィックス・プロセッサ1910の変形形態とすることができる。
少なくとも一実施例では、グラフィックス・プロセッサ2010は、頂点プロセッサ2005と、1つ又は複数のフラグメント・プロセッサ2015A〜2015N(たとえば、2015A、2015B、2015C、2015D〜2015N−1、及び2015N)とを含む。少なくとも一実施例では、グラフィックス・プロセッサ2010は、別個の論理を介して異なるシェーダ・プログラムを実行することができ、それにより、頂点プロセッサ2005は、頂点シェーダ・プログラムのための動作を実行するように最適化され、一方、1つ又は複数のフラグメント・プロセッサ2015A〜2015Nは、フラグメント又はピクセルのシェーダ・プログラムのためのフラグメント(たとえば、ピクセル)シェーディング動作を実行する。少なくとも一実施例では、頂点プロセッサ2005は、3Dグラフィックス・パイプラインの頂点処理ステージを実行し、プリミティブ及び頂点データを生成する。少なくとも一実施例では、フラグメント・プロセッサ2015A〜2015Nは、頂点プロセッサ2005によって生成されたプリミティブ及び頂点データを使用して、ディスプレイ・デバイスに表示されるフレーム・バッファを生成する。少なくとも一実施例では、フラグメント・プロセッサ2015A〜2015Nは、OpenGLのAPIにおいて提供されるフラグメント・シェーダ・プログラムを実行するように最適化され、OpenGLのAPIは、Direct 3D APIにおいて提供されるピクセル・シェーダ・プログラムと同様の動作を実行するために使用されてもよい。
少なくとも一実施例では、グラフィックス・プロセッサ2010はさらに、1つ又は複数のメモリ管理ユニット(MMU)2020A〜2020B、キャッシュ2025A〜2025B、及び回路相互接続2030A〜2030Bを含む。少なくとも一実施例では、1つ又は複数のMMU2020A〜2020Bは、頂点プロセッサ2005及び/又はフラグメント・プロセッサ2015A〜2015Nを含め、グラフィックス・プロセッサ2010のための仮想から物理のアドレス・マッピングを提供し、それらは、1つ又は複数のキャッシュ2025A〜2025Bに記憶された頂点又は画像/テクスチャのデータに加えて、メモリに記憶された頂点又は画像/テキストのデータを参照してもよい。少なくとも一実施例では、1つ又は複数のMMU2020A〜2020Bは、図19の1つ若しくは複数のアプリケーション・プロセッサ1905、画像プロセッサ1915、及び/又はビデオ・プロセッサ1920に関連付けられた1つ若しくは複数のMMUを含む、システム内の他のMMUと同期されてもよく、それにより各プロセッサ1905〜1920は、共有の又は統合された仮想メモリ・システムに参加することができる。少なくとも一実施例では、1つ又は複数の回路相互接続2030A〜2030Bは、グラフィックス・プロセッサ2010が、SoCの内部バスを介して、又は直接接続を介して、SoC内の他のIPコアとインターフェースをとることができるようにする。
少なくとも一実施例では、図20Bに示すように、グラフィックス・プロセッサ2040は、1つ又は複数のシェーダ・コア2055A〜2055N(たとえば、2055A、2055B、2055C、2055D、2055E、2055F〜2055N−1、及び2055N)を含み、このシェーダ・コアは、単一のコア、又はタイプ、又はコアが、頂点シェーダ、フラグメント・シェーダ、及び/又はコンピュート・シェーダを実装するためのシェーダ・プログラム・コードを含むすべてのタイプのプログラム可能なシェーダ・コードを実行することができる統合されたシェーダ・コア・アーキテクチャを提供する。少なくとも一実施例では、シェーダ・コアの数は変えることができる。少なくとも一実施例では、グラフィックス・プロセッサ2040は、1つ又は複数のシェーダ・コア2055A〜2055Nに実行スレッドをディスパッチするためのスレッド・ディスパッチャとして作用するコア間タスク・マネージャ2045と、たとえばシーン内のローカル空間コヒーレンスを利用するため、又は内部キャッシュの使用を最適化するために、シーンのレンダリング動作が画像空間において細分化される、タイル・ベースのレンダリングのためのタイリング動作を加速するためのタイリング・ユニット2058とを含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路20A及び/又は20Bにおいて使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。少なくとも一実施例では、本明細書に記載したように、プロセッサは頂点プロセッサである。
図21A〜図21Bは、本明細書に記載の実施例による、さらなる例示的なグラフィックス・プロセッサ論理を示す。図21Aは、グラフィックス・コア2100を示し、このグラフィックス・コア2100は、少なくとも一実施例では図19のグラフィックス・プロセッサ1910に含められてもよく、少なくとも一実施例では図20Bのように、統合されたシェーダ・コア2055A〜2055Nであってもよい。図21Bは、少なくとも一実施例におけるマルチ・チップ・モジュールに導入するのに適した高並列の汎用グラフィックス・プロセッシング・ユニット(「GPGPU」)2130を示す。
少なくとも一実施例では、グラフィックス・コア2100は、共有命令キャッシュ2102、テクスチャ・ユニット2118、及びキャッシュ/共有メモリ2120を含み、これらは、グラフィックス・コア2100内の実行リソースに共通である。少なくとも一実施例では、グラフィックス・コア2100は、複数のスライス2101A〜2101N、又はコアごとのパーティションを含むことができ、グラフィックス・プロセッサは、グラフィックス・コア2100の複数のインスタンスを含むことができる。少なくとも一実施例では、スライス2101A〜2101Nは、ローカル命令キャッシュ2104A〜2104N、スレッド・スケジューラ2106A〜2106N、スレッド・ディスパッチャ2108A〜2108N、及びレジスタのセット2110A〜2110Nを含むサポート論理を含むことができる。少なくとも一実施例では、スライス2101A〜2101Nは、追加機能ユニット(AFU2112A〜2112N)、浮動小数点ユニット(FPU2114A〜2114N)、整数算術論理演算ユニット(ALU2116〜2116N)、アドレス計算ユニット(ACU2113A〜2113N)、倍精度浮動小数点ユニット(DPFPU2115A〜2115N)、及び行列処理ユニット(MPU2117A〜2117N)のセットを含むことができる。
少なくとも一実施例では、FPU2114A〜2114Nは、単精度(32ビット)及び半精度(16ビット)の浮動小数点演算を実行することができ、DPFPU2115A〜2115Nは、倍精度(64ビット)の浮動小数点演算を実行する。少なくとも一実施例では、ALU2116A〜2116Nは、8ビット、16ビット、及び32ビットの精度で可変精度の整数演算を実行することができ、混合精度の演算ができるように構成されることが可能である。少なくとも一実施例では、MPU2117A〜2117Nも、半精度浮動小数点及び8ビット整数演算を含む混合精度の行列演算ができるように構成されることが可能である。少なくとも一実施例では、MPU2117A〜2117Nは、汎用行列−行列乗算(GEMM)の加速をサポートできるようにすることを含め、機械学習アプリケーション・フレームワークを加速するための様々な行列演算を実行することができる。少なくとも一実施例では、AFU2112A〜2112Nは、三角関数演算(たとえば、サイン、コサインなど)を含む、浮動小数点ユニット又は整数ユニットにサポートされていない追加の論理演算を実行することができる。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・コア2100において使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。少なくとも一実施例では、本明細書に記載したように、プロセッサはグラフィックス・コアである。
図21Bは、汎用処理ユニット(GPGPU)2130を示し、この処理ユニットは、少なくとも一実施例において、グラフィックス・プロセッシング・ユニットのアレイによる高並列の計算動作を実行可能にするように構成されることが可能である。少なくとも一実施例では、GPGPU2130は、GPGPU2130の他のインスタンスに直接リンクされて、ディープ・ニューラル・ネットワークの訓練スピードを向上させるために複数のGPUクラスタを生成することができる。少なくとも一実施例では、GPGPU2130は、ホスト・プロセッサとの接続を可能にするためのホスト・インターフェース2132を含む。少なくとも一実施例では、ホスト・インターフェース2132は、PCIエクスプレス・インターフェースである。少なくとも一実施例では、ホスト・インターフェース2132は、ベンダー固有の通信インターフェース又は通信ファブリックとすることができる。少なくとも一実施例では、GPGPU2130は、ホスト・プロセッサからコマンドを受け取り、グローバル・スケジューラ2134を使用して、これらのコマンドに関連付けられた実行スレッドを、コンピュート・クラスタ2136A〜2136Hのセットに分配する。少なくとも一実施例では、コンピュート・クラスタ2136A〜2136Hは、キャッシュ・メモリ2138を共有する。少なくとも一実施例では、キャッシュ・メモリ2138は、コンピュート・クラスタ2136A〜2136H内のキャッシュ・メモリ用の高レベル・キャッシュとして作用することができる。
少なくとも一実施例では、GPGPU2130は、メモリ・コントローラ2142A〜2142Bのセットを介して、コンピュート・クラスタ2136A〜2136Hに結合されたメモリ2144A〜2144Bを含む。少なくとも一実施例では、メモリ2144A〜2144Bは、グラフィックス・ダブル・データ・レート(GDDR:graphics double data rate)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。
少なくとも一実施例では、コンピュート・クラスタ2136A〜2136Hはそれぞれ、図21Aのグラフィックス・コア2100などのグラフィックス・コアのセットを含み、このグラフィックス・コアのセットは、機械学習計算に適したものを含め、様々な精度で計算動作を実行することができる複数のタイプの整数及び浮動小数点の論理ユニットを含むことができる。たとえば、少なくとも一実施例では、コンピュート・クラスタ2136A〜2136Hのそれぞれにおける浮動小数点ユニットの少なくともサブセットは、16ビット又は32ビットの浮動小数点演算を実行するように構成されることが可能であり、一方、浮動小数点ユニットの別のサブセットは、64ビットの浮動小数点演算を実行するように構成されることが可能である。
少なくとも一実施例では、GPGPU2130の複数のインスタンスは、コンピュート・クラスタとして動作するように構成されることが可能である。少なくとも一実施例では、コンピュート・クラスタ2136A〜2136Hにより同期及びデータ交換のために使用される通信は、実施例にわたって異なる。少なくとも一実施例では、GPGPU2130の複数のインスタンスは、ホスト・インターフェース2132を介して通信する。少なくとも一実施例では、GPGPU2130は、I/Oハブ2139を含み、このハブは、GPGPU2130の他のインスタンスへの直接接続を可能にするGPUリンク2140に、GPGPU2130を結合する。少なくとも一実施例では、GPUリンク2140は、GPGPU2130の複数のインスタンス間での通信及び同期を可能にするGPUからGPUへの専用のブリッジに結合される。少なくとも一実施例では、GPUリンク2140は、他のGPGPU又は並列プロセッサにデータを送受信するための高速相互接続に結合される。少なくとも一実施例では、GPGPU2130の複数のインスタンスは、別々のデータ処理システムに位置付けられ、ホスト・インターフェース2132を介してアクセス可能なネットワーク・デバイスを介して通信する。少なくとも一実施例では、GPUリンク2140は、ホスト・インターフェース2132に加えて、又はその代わりに、ホスト・プロセッサへの接続を可能にするように構成することができる。
少なくとも一実施例では、GPGPU2130は、ニューラル・ネットワークを訓練するように構成されることが可能である。少なくとも一実施例では、GPGPU2130は、推論プラットフォーム内で使用することができる。GPGPU2130が推論のために使用される少なくとも一実施例では、GPGPU2130は、GPGPU2130がニューラル・ネットワークの訓練に使用されるときよりも少数のコンピュート・クラスタ2136A〜2136Hを含んでもよい。少なくとも一実施例では、メモリ2144A〜2144Bに関連するメモリ技術は、推論の構成と訓練の構成とで異なってもよく、高帯域幅のメモリ技術が、訓練構成に当てられる。少なくとも一実施例では、GPGPU2130の推論構成は、推論固有の命令をサポートすることができる。たとえば、少なくとも一実施例では、推論構成は、1つ又は複数の8ビットの整数のドット積命令をサポートすることができ、これは、導入済みニューラル・ネットワークの推論動作中に使用されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにGPGPU2130において使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。少なくとも一実施例では、本明細書に記載したように、プロセッサはGPGPUである。
図22は、少なくとも一実施例によるコンピューティング・システム2200を示すブロック図である。少なくとも一実施例では、コンピューティング・システム2200は、メモリ・ハブ2205を含んでもよい相互接続経路を介して通信する1つ又は複数のプロセッサ2202とシステム・メモリ2204とを有する処理サブシステム2201を含む。少なくとも一実施例では、メモリ・ハブ2205は、チップセット構成要素内の別個の構成要素であってもよく、又は1つ若しくは複数のプロセッサ2202内に一体化されていてもよい。少なくとも一実施例では、メモリ・ハブ2205は、通信リンク2206を介してI/Oサブシステム2211に結合される。少なくとも一実施例では、I/Oサブシステム2211は、コンピューティング・システム2200が1つ又は複数の入力デバイス2208からの入力を受け取れるようにすることができるI/Oハブ2207を含む。少なくとも一実施例では、I/Oハブ2207は、ディスプレイ・コントローラを有効にすることができ、このディスプレイ・コントローラは、1つ又は複数のプロセッサ2202に含まれて、1つ又は複数のディスプレイ・デバイス2210Aに出力を提供してもよい。少なくとも一実施例では、I/Oハブ2207に結合された1つ又は複数のディスプレイ・デバイス2210Aは、ローカルの、内部の、又は組み込まれたディスプレイ・デバイスを含むことができる。
少なくとも一実施例では、処理サブシステム2201は、バス又は他の通信リンク2213を介してメモリ・ハブ2205に結合された1つ又は複数の並列プロセッサ2212を含む。少なくとも一実施例では、通信リンク2213は、PCIエクスプレスなどであるがこれに限定されない任意の数の規格に基づく通信リンク技術若しくはプロトコルのうちの1つを使用することができ、又はベンダー固有の通信インターフェース若しくは通信ファブリックであってもよい。少なくとも一実施例では、1つ又は複数の並列プロセッサ2212は、メニー・インテグレーテッド・コア(MIC:many integrated core)プロセッサなど、多数の処理コア及び/又は処理クラスタを含むことのできる、計算に集中した並列又はベクトルの処理システムを形成する。少なくとも一実施例では、いくつか又はすべての並列プロセッサ2212は、グラフィックス処理サブシステムを形成し、このサブシステムは、I/Oハブ2207を介して結合された1つ又は複数のディスプレイ・デバイス2210Aのうちの1つに、ピクセルを出力することができる。少なくとも一実施例では、並列プロセッサ2212はまた、1つ又は複数のディスプレイ・デバイス2210Bへの直接接続を可能にするディスプレイ・コントローラ及びディスプレイ・インターフェース(図示せず)を含むことができる。
少なくとも一実施例では、システム・ストレージ・ユニット2214は、I/Oハブ2207に接続されて、コンピューティング・システム2200のためのストレージ機構を提供することができる。少なくとも一実施例では、I/Oスイッチ2216を使用して、I/Oハブ2207と、プラットフォームに一体化されてもよいネットワーク・アダプタ2218及び/又はワイヤレス・ネットワーク・アダプタ2219などの他の構成要素、並びに1つ又は複数のアドイン・デバイス2220を介して加えることができる様々な他のデバイスとの通信を可能にするためのインターフェース機構を提供することができる。少なくとも一実施例では、ネットワーク・アダプタ2218は、イーサネット(登録商標)・アダプタ、又は別の有線ネットワーク・アダプタとすることができる。少なくとも一実施例では、ワイヤレス・ネットワーク・アダプタ2219は、Wi−Fi、Bluetooth、近距離無線通信(NFC)、又は1つ若しくは複数のワイヤレス無線を含む他のネットワーク・デバイスのうちの1つ又は複数を含むことができる。
少なくとも一実施例では、コンピューティング・システム2200は、USB又は他のポート接続、光学ストレージ・ドライブ、ビデオ捕捉デバイスなどを含む明示されていない他の構成要素を含むことができ、これらもI/Oハブ2207に接続されてもよい。少なくとも一実施例では、図22の様々な構成要素を相互接続する通信経路が、PCI(ペリフェラル・コンポーネント・インターコネクト)ベースのプロトコル(たとえば、PCI−エクスプレス)などの任意の好適なプロトコル、又はNV−Link高速相互接続などの他のバス若しくはポイントツーポイント通信インターフェース、又は他の相互接続プロトコルを使用して、実装されてもよい。
少なくとも一実施例では、並列プロセッサ2212は、たとえばビデオ出力回路を含むグラフィックス及びビデオの処理に最適化された回路を組み込んでおり、グラフィックス・プロセッシング・ユニット(GPU)を構成する。少なくとも一実施例では、並列プロセッサ2212は、汎用処理に最適化された回路を組み込んでいる。少なくとも実施例では、コンピューティング・システム2200の構成要素は、単一の集積回路上の1つ又は複数の他のシステム要素と一体化されてもよい。たとえば、少なくとも一実施例では、並列プロセッサ2212、メモリ・ハブ2205、プロセッサ2202、及びI/Oハブ2207を、システム・オン・チップ(SoC)集積回路に一体化することができる。少なくとも一実施例では、コンピューティング・システム2200の構成要素は、単一のパッケージに一体化されて、システム・イン・パッケージ(SIP:system in package)構成を形成することができる。少なくとも一実施例では、コンピューティング・システム2200の構成要素の少なくとも一部分を、マルチ・チップ・モジュール(MCM:multi−chip module)に一体化することができ、このモジュールを、他のマルチ・チップ・モジュールと相互接続して、モジュール式コンピューティング・システムにすることができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図2200のシステムにおいて使用されてもよい。
プロセッサ
図23Aは、少なくとも一実施例による並列プロセッサ2300を示す。少なくとも一実施例では、並列プロセッサ2300の様々な構成要素は、プログラム可能なプロセッサ、特定用途向け集積回路(ASIC)、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)などの1つ又は複数の集積回路デバイスを使用して実装されてもよい。少なくとも一実施例では、図示してある並列プロセッサ2300は、例示的な実施例による図22に示す1つ又は複数の並列プロセッサ2212の変形形態である。
少なくとも一実施例では、並列プロセッサ2300は並列処理ユニット2302を含む。少なくとも一実施例では、並列処理ユニット2302は、並列処理ユニット2302の他のインスタンスを含む他のデバイスとの通信を可能にするI/Oユニット2304を含む。少なくとも一実施例では、I/Oユニット2304は、他のデバイスに直接接続されてもよい。少なくとも一実施例では、I/Oユニット2304は、メモリ・ハブ2305などのハブ又はスイッチ・インターフェースの使用を介して、他のデバイスと接続される。少なくとも一実施例では、メモリ・ハブ2305とI/Oユニット2304との間の接続は、通信リンク2313を形成する。少なくとも一実施例では、I/Oユニット2304は、ホスト・インターフェース2306及びメモリ・クロスバー2316に接続され、ここでホスト・インターフェース2306は、処理動作の実行を対象とするコマンドを受け取り、メモリ・クロスバー2316は、メモリ動作の実行を対象とするコマンドを受け取る。
少なくとも一実施例では、ホスト・インターフェース2306が、I/Oユニット2304を介してコマンド・バッファを受け取るとき、ホスト・インターフェース2306は、これらのコマンドを実行するためのワーク動作をフロント・エンド2308に向けることができる。少なくとも一実施例では、フロント・エンド2308はスケジューラ2310に結合され、このスケジューラは、コマンド又は他のワーク・アイテムを処理クラスタ・アレイ2312に分配するように構成される。少なくとも一実施例では、スケジューラ2310は、処理クラスタ・アレイ2312のクラスタにタスクが分配される前に、処理クラスタ・アレイ2312が適切に構成され、有効な状態にあることを確実にする。少なくとも一実施例では、スケジューラ2310は、マイクロコントローラで実行しているファームウェア論理を介して実装される。少なくとも一実施例では、マイクロコントローラ実装スケジューラ2310は、複雑なスケジューリング及びワーク分配動作を、粗い粒度と細かい粒度で実行するように構成可能であり、処理アレイ2312で実行しているスレッドの迅速なプリエンプション及びコンテキストのスイッチングを可能にする。少なくとも一実施例では、ホスト・ソフトウェアは、処理クラスタ・アレイ2312でのスケジューリングのワークロードを、複数のグラフィックス処理の経路のうちの1つを介して証明することができる。少なくとも一実施例では、次いで、スケジューラ2310を含むマイクロコントローラ内のスケジューラ2310論理によって、ワークロードを自動的に処理クラスタ・アレイ2312全体に分配することができる。
少なくとも一実施例では、処理クラスタ・アレイ2312は、最大「N個」の処理クラスタ(たとえば、クラスタ2314A、クラスタ2314B〜クラスタ2314N)を含むことができ、ここで「N」は、正の整数を表す(他の図で使用されるものとは異なる整数「N」であってもよい)。少なくとも一実施例では、処理クラスタ・アレイ2312の各クラスタ2314A〜2314Nは、大量の同時スレッドを実行することができる。少なくとも一実施例では、スケジューラ2310は、様々なスケジューリング及び/又はワーク分配のアルゴリズムを使用して、処理クラスタ・アレイ2312のクラスタ2314A〜2314Nにワークを配分することができ、これらのアルゴリズムは、プログラム又は計算のタイプごとに生じるワークロードに応じて、異なってもよい。少なくとも一実施例では、スケジューリングは、スケジューラ2310によって動的に対処されてもよく、又は処理クラスタ・アレイ2312によって実行されるように構成されたプログラム論理のコンパイル中に、コンパイラ論理によって部分的に支援されてもよい。少なくとも一実施例では、処理クラスタ・アレイ2312の異なるクラスタ2314A〜2314Nは、異なるタイプのプログラムを処理するように、又は異なるタイプの計算を実行するように配分されることが可能である。
少なくとも一実施例では、処理クラスタ・アレイ2312は、様々なタイプの並列処理動作を実行するように構成されることが可能である。少なくとも一実施例では、処理クラスタ・アレイ2312は、汎用の並列コンピュート動作を実行するように構成される。たとえば、少なくとも一実施例では、処理クラスタ・アレイ2312は、ビデオ及び/又はオーディオ・データのフィルタリング、物理動作を含むモデリング動作の実行、及びデータ変換の実行を含む処理タスクを実行するための論理を含むことができる。
少なくとも一実施例では、処理クラスタ・アレイ2312は、並列グラフィックス処理動作を実行するように構成される。少なくとも一実施例では、処理クラスタ・アレイ2312は、テクスチャ動作を実行するためのテクスチャ・サンプリング論理、並びにモザイク論理、及び他の頂点処理論理を含むがこれらに限定されないこうしたグラフィックス処理動作の実行をサポートするための追加の論理を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ2312は、頂点シェーダ、モザイク・シェーダ、ジオメトリ・シェーダ、及びピクセル・シェーダなどであるが、これらに限定されないグラフィックス処理関連のシェーダ・プログラムを実行するように構成されることが可能である。少なくとも一実施例では、並列処理ユニット2302は、処理できるようにデータをシステム・メモリからI/Oユニット2304を介して転送することができる。少なくとも一実施例では、処理中、転送されたデータを、処理中にオン・チップ・メモリ(たとえば、並列プロセッサ・メモリ2322)に記憶し、次いでシステム・メモリに書き戻すことができる。
少なくとも一実施例では、並列処理ユニット2302を使用してグラフィックス処理が実行される場合には、処理クラスタ・アレイ2312の複数のクラスタ2314A〜2314Nにグラフィックス処理動作をよりうまく分配できるようにするため、処理ワークロードをおおよそ等しい大きさのタスクに分割するようにスケジューラ2310を構成することができる。少なくとも一実施例では、処理クラスタ・アレイ2312の一部分は、異なるタイプの処理を実行するように構成されることが可能である。たとえば、少なくとも一実施例では、レンダリング画像を生成して表示するために、第1の部分は、頂点シェーディング及びトポロジ生成を実行するように構成されてもよく、第2の部分は、モザイク及びジオメトリのシェーディングを実行するように構成されてもよく、第3の部分は、ピクセル・シェーディング又は他の画面空間動作を実行するように構成されてもよい。少なくとも一実施例では、クラスタ2314A〜2314Nのうちの1つ又は複数によって生成される中間データをバッファに記憶して、さらなる処理ができるようにクラスタ2314A〜2314Nの間で中間データを送信できるようにしてもよい。
少なくとも一実施例では、処理クラスタ・アレイ2312は、実行される処理タスクをスケジューラ2310を介して受け取ることができ、スケジューラ2310は、処理タスクを定義するコマンドをフロント・エンド2308から受け取る。少なくとも一実施例では、処理タスクは、処理されるデータのインデックス、たとえば、表面(パッチ)データ、プリミティブ・データ、頂点データ、及び/又はピクセル・データ、並びに状態パラメータ、及びデータをどのように処理すべきかを定義するコマンド(たとえば、どのプログラムを実行すべきか)を含むことができる。少なくとも一実施例では、スケジューラ2310は、タスクに対応するインデックスをフェッチするように構成されてもよく、又はフロント・エンド2308からインデックスを受け取ってもよい。少なくとも一実施例では、フロント・エンド2308は、入ってくるコマンド・バッファ(たとえば、バッチ・バッファ、プッシュ・バッファなど)によって指定されるワークロードが開始される前に、処理クラスタ・アレイ2312が有効な状態に構成されていることを保証するように構成されることが可能である。
少なくとも一実施例では、並列処理ユニット2302の1つ又は複数のインスタンスのそれぞれは、並列プロセッサ・メモリ2322と結合することができる。少なくとも一実施例では、並列プロセッサ・メモリ2322には、メモリ・クロスバー2316を介してアクセスすることができ、メモリ・クロスバー2316は、処理クラスタ・アレイ2312並びにI/Oユニット2304からメモリ要求を受け取ることができる。少なくとも一実施例では、メモリ・クロスバー2316は、メモリ・インターフェース2318を介して並列プロセッサ・メモリ2322にアクセスすることができる。少なくとも一実施例では、メモリ・インターフェース2318は、複数のパーティション・ユニット(たとえば、パーティション・ユニット2320A、パーティション・ユニット2320B〜パーティション・ユニット2320N)を含むことができ、これらのユニットはそれぞれ、並列プロセッサ・メモリ2322の一部分(たとえば、メモリ・ユニット)に結合することができる。少なくとも一実施例では、パーティション・ユニット2320A〜2320Nの数は、メモリ・ユニットの数と等しくなるように構成され、それにより、第1のパーティション・ユニット2320Aは、対応する第1のメモリ・ユニット2324Aを有し、第2のパーティション・ユニット2320Bは、対応するメモリ・ユニット2324Bを有し、N番目のパーティション・ユニット2320Nは、対応するN番目のメモリ・ユニット2324Nを有する。少なくとも一実施例では、パーティション・ユニット2320A〜2320Nの数は、メモリ・デバイスの数に等しくなくてもよい。
少なくとも一実施例では、メモリ・ユニット2324A〜2324Nは、グラフィックス・ダブル・データ・レート(GDDR)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。少なくとも一実施例では、またメモリ・ユニット2324A〜2324Nはまた、高帯域幅メモリ(HBM)を含むがこれに限定されない3D積層メモリを含んでもよい。少なくとも一実施例では、並列プロセッサ・メモリ2322の利用可能な帯域幅を効率的に使用するために、フレーム・バッファ又はテクスチャ・マップなどのレンダー・ターゲットが、メモリ・ユニット2324A〜2324Nにわたって記憶されて、パーティション・ユニット2320A〜2320Nが、各レンダー・ターゲットの部分を並列に書き込みできるようにしてもよい。少なくとも一実施例では、システム・メモリとローカル・キャッシュ・メモリを併用する統合メモリ設計に有利なように、並列プロセッサ・メモリ2322のローカル・インスタンスは除外されてもよい。
少なくとも一実施例では、処理クラスタ・アレイ2312のクラスタ2314A〜2314Nのうちのいずれか1つは、並列プロセッサ・メモリ2322内のメモリ・ユニット2324A〜2324Nのいずれかに書き込まれることになるデータを処理することができる。少なくとも一実施例では、メモリ・クロスバー2316は、各クラスタ2314A〜2314Nの出力を、出力に対してさらなる処理動作を実行することができる任意のパーティション・ユニット2320A〜2320N、又は別のクラスタ2314A〜2314Nに転送するように構成されることが可能である。少なくとも一実施例では、各クラスタ2314A〜2314Nは、メモリ・クロスバー2316を通ってメモリ・インターフェース2318と通信して、様々な外部メモリ・デバイスからの読取り、又はそれへの書込みを行うことができる。少なくとも一実施例では、メモリ・クロスバー2316は、I/Oユニット2304と通信するためのメモリ・インターフェース2318への接続部、並びに並列プロセッサ・メモリ2322のローカル・インスタンスへの接続部を有して、異なる処理クラスタ2314A〜2314N内の処理ユニットが、システム・メモリ、又は並列処理ユニット2302のローカルにない他のメモリと通信できるようにする。少なくとも一実施例では、メモリ・クロスバー2316は、仮想チャネルを使用して、クラスタ2314A〜2314Nと、パーティション・ユニット2320A〜2320Nとの間でトラフィック・ストリームを分離することができる。
少なくとも一実施例では、並列処理ユニット2302の複数のインスタンスは、単一のアドイン・カードに提供されてもよく、又は複数のアドイン・カードが相互接続されてもよい。少なくとも一実施例では、異なるインスタンスが異なる数の処理コア、異なる量のローカル並列プロセッサ・メモリ、及び/又は他の異なる構成を有する場合でも、並列処理ユニット2302の異なるインスタンスは相互動作するように構成されることが可能である。たとえば、少なくとも一実施例では、並列処理ユニット2302のいくつかインスタンスは、他のインスタンスに比べて高い精度の浮動小数点ユニットを含むことができる。少なくとも一実施例では、並列処理ユニット2302又は並列プロセッサ2300のうちの1つ又は複数のインスタンスを組み込んだシステムは、デスクトップ、ラップトップ、若しくは携帯型のパーソナル・コンピュータ、サーバ、ワークステーション、ゲーム・コンソール、及び/又は組み込みシステムを含むが、これらに限定されない様々な構成及びフォーム・ファクタで実装することができる。
図23Bは、少なくとも一実施例によるパーティション・ユニット2320のブロック図である。少なくとも一実施例では、パーティション・ユニット2320は、図23Aのパーティション・ユニット2320A〜2320Nのうちの1つのパーティション・ユニットのインスタンスである。少なくとも一実施例では、パーティション・ユニット2320は、L2キャッシュ2121、フレーム・バッファ・インターフェース2325、及びROP:raster operations unit2326(ラスタ演算ユニット)を含む。少なくとも一実施例では、L2キャッシュ2321は、メモリ・クロスバー2316及びROP2326から受け取ったロード及びストアの動作を実行するように構成された読取り/書込みキャッシュである。少なくとも一実施例では、読取りミス及び至急の書戻し要求が、処理されるようにL2キャッシュ2321によってフレーム・バッファ・インターフェース2325に出力される。少なくとも一実施例では、更新も、処理されるようにフレーム・バッファ・インターフェース2325を介してフレームに送られる。少なくとも一実施例では、フレーム・バッファ・インターフェース2325は、図23の(たとえば並列プロセッサ・メモリ2322内の)メモリ・ユニット2324A〜2324Nなど、並列プロセッサ・メモリのメモリ・ユニットのうちの1つとインターフェースをとる。
少なくとも一実施例では、ROP2326は、ステンシル、zテスト、ブレンディングなどのラスタ演算を実行する処理ユニットである。少なくとも一実施例では、次いでROP2326は、グラフィックス・メモリに記憶された処理済みグラフィックス・データを出力する。少なくとも一実施例では、ROP2326は、メモリに書き込まれる深度又は色データを圧縮し、メモリから読み取られた深度又は色データを解凍するための圧縮論理を含む。少なくとも一実施例では、圧縮論理は、複数の圧縮アルゴリズムのうちの1つ又は複数を利用するロスレス圧縮論理とすることができる。少なくとも一実施例では、ROP2326によって実行される圧縮のタイプは、圧縮されるデータの統計的特徴に基づき変更することができる。たとえば、少なくとも一実施例では、深度及び色データに対してはタイルごとにデルタ色圧縮が実行される。
少なくとも一実施例では、ROP2326は、パーティション・ユニット2320内ではなく、各処理クラスタ内(たとえば、図23Aのクラスタ2314A〜2314N)に含まれる。少なくとも一実施例では、ピクセル・フラグメント・データではなく、ピクセル・データの読取り及び書込み要求が、メモリ・クロスバー2316を介して送信される。少なくとも一実施例では、処理済みグラフィックス・データは、図22の1つ又は複数のディスプレイ・デバイス2210のうちの1つなどのディスプレイ・デバイスに表示されてもよく、プロセッサ2202によってさらに処理できるようにルーティングされてもよく、又は図23Aの並列プロセッサ2300内の処理エンティティのうちの1つによってさらに処理できるようにルーティングされてもよい。
図23Cは、少なくとも一実施例による並列処理ユニット内の処理クラスタ2314のブロック図である。少なくとも一実施例では、処理クラスタは、図23Aの処理クラスタ2314A〜2314Nのうちの1つの処理クラスタのインスタンスである。少なくとも一実施例では、処理クラスタ2314は、多数のスレッドを並列で実行するように構成されてもよく、ここで「スレッド」とは、入力データの特定のセットに対して実行している特定のプログラムのインスタンスを指す。少なくとも一実施例では、複数の独立した命令ユニットを提供することなく、多数のスレッドの並列実行をサポートするために、単一命令複数データ(SIMD)の命令発行技法が使用される。少なくとも一実施例では、それぞれの処理クラスタ内の処理エンジンのセットに命令を発行するように構成された共通の命令ユニットを使用して、全体的に同期された多数のスレッドの並列実行をサポートするために、単一命令複数スレッド(SIMT:single−instruction, multiple−thread)の技法が使用される。
少なくとも一実施例では、処理クラスタ2314の動作は、SIMT並列プロセッサに処理タスクを分配するパイプライン・マネージャ2332を介して制御することができる。少なくとも一実施例では、パイプライン・マネージャ2332は、図23Aのスケジューラ2310から命令を受け取り、グラフィックス・マルチプロセッサ2334及び/又はテクスチャ・ユニット2336を介してこれらの命令の実行を管理する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2334は、SIMT並列プロセッサの例示的なインスタンスである。しかし、少なくとも一実施例では、アーキテクチャの異なる様々なタイプのSIMT並列プロセッサが、処理クラスタ2314内に含まれてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2334の1つ又は複数のインスタンスは、処理クラスタ2314内に含めることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2334はデータを処理することができ、処理済みデータを、他のシェーダ・ユニットを含む複数の可能な宛先のうちの1つに分配するためにデータ・クロスバー2340が使用されてもよい。少なくとも一実施例では、パイプライン・マネージャ2332は、データ・クロスバー2340を通して分配されることになる処理済みデータの宛先を指定することによって、処理済みデータの分配を容易にすることができる。
少なくとも一実施例では、処理クラスタ2314内の各グラフィックス・マルチプロセッサ2334は、関数実行論理(たとえば、算術論理演算ユニット、ロード・ストア・ユニットなど)の同一のセットを含むことができる。少なくとも一実施例では、関数実行論理は、前の命令が完了する前に新規の命令を発行することができるパイプライン式に構成されることが可能である。少なくとも一実施例では、関数実行論理は、整数及び浮動小数点の算術、比較演算、ブール演算、ビット・シフト、及び様々な代数関数の計算を含む様々な演算をサポートする。少なくとも一実施例では、同じ関数ユニットのハードウェアを活用して、異なる演算を実行することができ、関数ユニットの任意の組合せが存在してもよい。
少なくとも一実施例では、処理クラスタ2314に送信される命令がスレッドを構成する。少なくとも一実施例では、並列処理エンジンのセットにわたって実行されているスレッドのセットが、スレッド・グループである。少なくとも一実施例では、スレッド・グループは、異なる入力データに対して共通のプログラムを実行する。少なくとも一実施例では、スレッド・グループ内の各スレッドを、グラフィックス・マルチプロセッサ2334内の異なる処理エンジンに割り当てることができる。少なくとも一実施例では、スレッド・グループは、グラフィックス・マルチプロセッサ2334内の処理エンジンの数よりも少ないスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループが処理エンジンの数よりも少ないスレッドを含む場合、処理エンジンのうちの1つ又は複数は、そのスレッド・グループが処理されているサイクル中にはアイドルであってもよい。少なくとも一実施例では、スレッド・グループはまた、グラフィックス・マルチプロセッサ2334内の処理エンジンの数よりも多いスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループがグラフィックス・マルチプロセッサ2334内の処理エンジンの数より多くのスレッドを含む場合には、連続したクロック・サイクルにわたって処理を実行することができる。少なくとも一実施例では、複数のスレッド・グループを、グラフィックス・マルチプロセッサ2334上で同時に実行することができる。
少なくとも一実施例では、グラフィックス・マルチプロセッサ2334は、ロード及びストアの動作を実行するための内部キャッシュ・メモリを含む。少なくとも一実施例では、グラフィックス・マルチプロセッサ2334は、内部キャッシュをやめて、処理クラスタ2314内のキャッシュ・メモリ(たとえば、L1キャッシュ2348)を使用することができる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2334は、パーティション・ユニット(たとえば、図23Aのパーティション・ユニット2320A〜2320N)内のL2キャッシュにもアクセスすることができ、これらのキャッシュが、すべての処理クラスタ2314間で共有され、スレッド間でデータを転送するために使用されてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2334は、オフ・チップのグローバル・メモリにもアクセスすることができ、このメモリは、ローカル並列プロセッサ・メモリ及び/又はシステム・メモリのうちの1つ又は複数を含むことができる。少なくとも一実施例では、並列処理ユニット2302の外部にある任意のメモリが、グローバル・メモリとして使用されてもよい。少なくとも一実施例では、処理クラスタ2314は、グラフィックス・マルチプロセッサ2334の複数のインスタンスを含み、共通の命令及びデータを共有することができ、これらはL1キャッシュ2348に記憶されてもよい。
少なくとも一実施例では、各処理クラスタ2314は、仮想アドレスを物理アドレスにマッピングするように構成されたMMU2345(メモリ管理ユニット)を含んでもよい。少なくとも一実施例では、MMU2345の1つ又は複数のインスタンスは、図23Aのメモリ・インターフェース2318内にあってもよい。少なくとも一実施例では、MMU2345は、仮想アドレスを、タイル及び任意選択でキャッシュ・ライン・インデックスの物理アドレスにマッピングするために使用されるページ・テーブル・エントリ(PTE)のセットを含む。少なくとも一実施例では、MMU2345は、アドレスのトランスレーション・ルックアサイド・バッファ(TLB:translation lookaside buffer)又はキャッシュを含んでもよく、これらは、グラフィックス・マルチプロセッサ2334若しくはL1 2348キャッシュ、又は処理クラスタ2314内にあってもよい。少なくとも一実施例では、表面データ・アクセスをローカルに分散するように物理アドレスを処理して、パーティション・ユニット間で要求の効率的なインターリーブが可能になる。少なくとも一実施例では、キャッシュ・ライン・インデックスを使用して、キャッシュ・ラインの要求がヒットかミスかが判定されてもよい。
少なくとも一実施例では、各グラフィックス・マルチプロセッサ2334がテクスチャ・ユニット2336に結合されて、テクスチャ・マッピング動作、たとえば、テクスチャ・サンプル位置の判定、テクスチャ・データの読取り、及びテクスチャ・データのフィルタリングが実行されるように、処理クラスタ2314が構成されてもよい。少なくとも一実施例では、テクスチャ・データは、内部テクスチャL1キャッシュ(図示せず)から、又はグラフィックス・マルチプロセッサ2334内のL1キャッシュから読み取られ、必要に応じて、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリからフェッチされる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2334は、処理済みタスクをデータ・クロスバー2340に出力して、さらなる処理ができるように別の処理クラスタ2314に処理済みタスクを提供し、又はメモリ・クロスバー2316を介して、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリに処理済みタスクを記憶する。少なくとも一実施例では、プレROP2342(プレ・ラスタ演算ユニット)は、グラフィックス・マルチプロセッサ2334からデータを受け取り、ROPユニットにデータを仕向けるように構成されており、ROPユニットは、本明細書に記載のするように、パーティション・ユニット(たとえば、図23Aのパーティション・ユニット2320A〜2320N)内に位置付けられてもよい。少なくとも一実施例では、プレROP2342ユニットは、色ブレンディングの最適化を実行し、ピクセル色データを組織化し、アドレス・トランスレーションを実行することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス処理クラスタ2314において使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図23Dは、少なくとも一実施例によるグラフィックス・マルチプロセッサ2334を示す。少なくとも一実施例では、グラフィックス・マルチプロセッサ2334は、処理クラスタ2314のパイプライン・マネージャ2332と結合する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2334は、命令キャッシュ2352、命令ユニット2354、アドレス・マッピング・ユニット2356、レジスタ・ファイル2358、1つ又は複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)コア2362、及び1つ又は複数のロード/ストア・ユニット2366を含むがこれらに限定されない実行パイプラインを有する。少なくとも一実施例では、GPGPUコア2362、及びロード/ストア・ユニット2366は、メモリ及びキャッシュ相互接続2368を介して、キャッシュ・メモリ2372及び共有メモリ2370に結合される。
少なくとも一実施例では、命令キャッシュ2352は、実行すべき命令のストリームをパイプライン・マネージャ2332から受け取る。少なくとも一実施例では、命令は、命令キャッシュ2352にキャッシュされ、命令ユニット2354により実行されるようにディスパッチされる。少なくとも一実施例では、命令ユニット2354は、命令をスレッド・グループ(たとえば、ワープ)としてディスパッチすることができ、アスレッド・グループの各スレッドは、GPGPUコア2362内の異なる実行ユニットに割り当てられる。少なくとも一実施例では、命令は、統一アドレス空間内のアドレスを指定することによって、ローカル、共有、又はグローバルのアドレス空間のいずれかにアクセスすることができる。少なくとも一実施例では、アドレス・マッピング・ユニット2356を使用して、統一アドレス空間のアドレスを、ロード/ストア・ユニット2366がアクセスできる個別メモリ・アドレスにトランスレーションすることができる。
少なくとも一実施例では、レジスタ・ファイル2358は、グラフィックス・マルチプロセッサ2334の機能ユニットにレジスタのセットを提供する。少なくとも一実施例では、レジスタ・ファイル2358は、グラフィックス・マルチプロセッサ2334の機能ユニット(たとえばGPGPUコア2362、ロード/ストア・ユニット2366)のデータ経路に接続された、オペランドのための一時的なストレージを提供する。少なくとも一実施例では、レジスタ・ファイル2358は、レジスタ・ファイル2358の専用部分に各機能ユニットが配分されるように、それぞれの機能ユニット間で分割される。一実施例では、レジスタ・ファイル2358は、グラフィックス・マルチプロセッサ2334によって実行されている異なるワープ間で分割される。
少なくとも一実施例では、GPGPUコア2362はそれぞれ、グラフィックス・マルチプロセッサ2334の命令を実行するために使用される浮動小数点ユニット(FPU)及び/又は整数算術論理演算ユニット(ALU)を含むことができる。少なくとも一実施例では、GPGPUコア2362同士は、同様のアーキテクチャであってもよく、又は異なるアーキテクチャであってもよい。少なくとも一実施例では、GPGPUコア2362の第1の部分は、単精度FPU及び整数ALUを含み、GPGPUコアの第2の部分は、倍精度FPUを含む。少なくとも一実施例では、FPUは、IEEE754−2008規格浮動小数点演算を実装することができ、又は、可変精度の浮動小数点演算を有効にすることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2334はさらに、矩形コピー又はピクセル・ブレンディングの動作などの特定の機能を実行するための、1つ若しくは複数の固定機能ユニット又は特別機能ユニットをさらに含むことができる。少なくとも一実施例では、GPGPUコア2362の1つ又は複数は、固定の又は特別な機能論理も含むことができる。
少なくとも一実施例では、GPGPUコア2362は、複数のデータ・セットに対して単一の命令を実行することができるSIMD論理を含む。少なくとも一実施例では、GPGPUコア2362は、SIMD4、SIMD8、及びSIMD16の命令を物理的に実行することができ、SIMD1、SIMD2、及びSIMD32の命令を論理的に実行することができる。少なくとも一実施例では、GPGPUコアのためのSIMD命令は、シェーダ・コンパイラによるコンパイル時に生成されてもよく、又は単一プログラム複数データ(SPMD:single program multiple data)又はSIMTのアーキテクチャ向けに書かれコンパイルされたプログラムを実行しているときに、自動的に生成されてもよい。少なくとも一実施例では、SIMT実行モデルのために構成されたプログラムの複数のスレッドは、単一のSIMD命令を介して実行することができる。たとえば、少なくとも一実施例では、同じ又は同様の動作を実行する8個のSIMTスレッドを、単一のSIMD8の論理ユニットを介して並列に実行することができる。
少なくとも一実施例では、メモリ及びキャッシュ相互接続2368は、グラフィックス・マルチプロセッサ2334の各機能ユニットをレジスタ・ファイル2358及び共有メモリ2370に接続する相互接続ネットワークである。少なくとも一実施例では、メモリ及びキャッシュ相互接続2368は、ロード/ストア・ユニット2366が、共有メモリ2370とレジスタ・ファイル2358の間でロード及びストアの動作を実装できるようにするクロスバー相互接続である。少なくとも一実施例では、レジスタ・ファイル2358は、GPGPUコア2362と同じ周波数で動作することができ、したがって、GPGPUコア2362とレジスタ・ファイル2358の間のデータ転送は非常に低レイテンシを有し得る。少なくとも一実施例では、共有メモリ2370を使用して、グラフィックス・マルチプロセッサ2334内の機能ユニットで実行されるスレッド間の通信を可能にすることができる。少なくとも一実施例では、キャッシュ・メモリ2372を、たとえばデータ・キャッシュとして使用して、機能ユニットとテクスチャ・ユニット2336の間で通信されるテクスチャ・データをキャッシュすることができる。少なくとも一実施例では、共有メモリ2370は、プログラム管理キャッシュとしても使用することができる。少なくとも一実施例では、GPGPUコア2362で実行されているスレッドは、キャッシュ・メモリ2372内に記憶される自動キャッシュ・データに加えて、共有メモリ内にプログラム的にデータを記憶することができる。
少なくとも一実施例では、本明細書に記載の並列プロセッサ又はGPGPUは、ホスト/プロセッサ・コアに通信可能に結合されて、グラフィックス動作、機械学習動作、パターン分析動作、及び様々な汎用GPU(GPGPU)機能を加速する。少なくとも一実施例では、GPUは、バス又は他の相互接続(たとえば、PCIe又はNVLinkなどの高速相互接続)を介してホスト・プロセッサ/コアに通信可能に結合されてもよい。少なくとも一実施例では、GPUは、コアとしてパッケージ又はチップに一体化されてもよく、パッケージ又はチップの内部の内部プロセッサ・バス/相互接続を介してコアに通信可能に結合されてもよい。少なくとも一実施例では、GPUの接続方法に関わらず、プロセッサ・コアは、ワーク記述子に含まれたコマンド/命令のシーケンスの形でワークをこうしたGPUに配分してもよい。少なくとも一実施例では、次いでGPUは、これらのコマンド/命令を効率的に処理するために専用の回路/論理を使用する。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・マルチプロセッサ2334において使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図24は、少なくとも一実施例による、マルチGPUコンピューティング・システム2400を示す。少なくとも一実施例では、マルチGPUコンピューティング・システム2400は、ホスト・インターフェース・スイッチ2404を介して複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)2406A〜Dに結合されたプロセッサ2402を含むことができる。少なくとも一実施例では、ホスト・インターフェース・スイッチ2404は、プロセッサ2402をPCIエクスプレス・バスに結合するPCIエクスプレス・スイッチ・デバイスであり、このPCIエクスプレス・バスを介して、プロセッサ2402は、GPGPU2406A〜Dと通信することができる。少なくとも一実施例では、GPGPU2406A〜Dは、高速ポイントツーポイントGPUツーGPUリンク2416のセットを介して相互接続することができる。少なくとも一実施例では、GPUツーGPUリンク2416は、専用GPUリンクを介して、GPGPU2406A〜Dのそれぞれに接続される。少なくとも一実施例では、P2PのGPUリンク2416は、プロセッサ2402が接続されているホスト・インターフェース・バス2404を介した通信を必要とせずに、GPGPU2406A〜Dのそれぞれの間で直接通信を可能にする。少なくとも一実施例では、P2PのGPUリンク2416に仕向けられたGPUツーGPUトラフィックがあると、ホスト・インターフェース・バス2404は、システム・メモリへのアクセスができるように、又はたとえば1つ又は複数のネットワーク・デバイスを介して、マルチGPUコンピューティング・システム2400の他のインスタンスと通信するために、利用可能な状態に保たれる。少なくとも一実施例では、GPGPU2406A〜Dは、ホスト・インターフェース・スイッチ2404を介してプロセッサ2402に接続され、少なくとも一実施例では、プロセッサ2402は、P2PのGPUリンク2416のための直接サポートを含み、GPGPU2406A〜Dに直接接続することができる。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにマルチGPUコンピューティング・システム2400において使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図25は、少なくとも一実施例によるグラフィックス・プロセッサ2500のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ2500は、リング相互接続2502、パイプライン・フロント・エンド2504、メディア・エンジン2537、及びグラフィックス・コア2580A〜2580Nを含む。少なくとも一実施例では、リング相互接続2502は、グラフィックス・プロセッサ2500を、他のグラフィックス・プロセッサ又は1つ又は複数の汎用プロセッサ・コアを含む他の処理ユニットに結合する。少なくとも一実施例では、グラフィックス・プロセッサ2500は、マルチ・コア処理システム内に一体化された多数のプロセッサのうちの1つである。
少なくとも一実施例では、グラフィックス・プロセッサ2500は、リング相互接続2502を介してコマンドのバッチを受け取る。少なくとも一実施例では、入ってくるコマンドは、パイプライン・フロント・エンド2504のコマンド・ストリーマ2503によって解釈される。少なくとも一実施例では、グラフィックス・プロセッサ2500は、グラフィックス・コア2580A〜2580Nを介して3Dジオメトリ処理及びメディア処理を実行するためのスケーラブルな実行論理を含む。少なくとも一実施例では、3Dジオメトリ処理コマンドについては、コマンド・ストリーマ2503はコマンドをジオメトリ・パイプライン2536に供給する。少なくとも一実施例では、少なくとも一部のメディア処理コマンドについては、コマンド・ストリーマ2503はコマンドをビデオ・フロント・エンド2534に供給し、ビデオ・フロント・エンド2534はメディア・エンジン2537に結合される。少なくとも一実施例では、メディア・エンジン2537は、ビデオ及び画像の後処理のためのVideo Quality Engine(VQE)2530と、ハードウェア加速されたメディア・データのエンコード及びデコードを提供するマルチ・フォーマット・エンコード/デコード(MFX)2533エンジンとを含む。少なくとも一実施例では、ジオメトリ・パイプライン2536及びメディア・エンジン2537はそれぞれ、少なくとも1つのグラフィックス・コア2580によって提供されるスレッド実行リソースのための実行スレッドを生成する。
少なくとも一実施例では、グラフィックス・プロセッサ2500は、グラフィックス・コア2580A〜2580N(モジュール式であり得、コア・スライスと呼ばれることもある)を特徴とするスケーラブルなスレッド実行リソースを含み、それぞれのグラフィックス・コア2580A〜2580Nは、複数のサブ・コア2550A〜50N、2560A〜2560N(コア・サブ・スライスと呼ばれることもある)を有する。少なくとも一実施例では、グラフィックス・プロセッサ2500は、任意の数のグラフィックス・コア2580Aを有することができる。少なくとも一実施例では、グラフィックス・プロセッサ2500は、少なくとも第1のサブ・コア2550A及び第2のサブ・コア2560Aを有するグラフィックス・コア2580Aを含む。少なくとも一実施例では、グラフィックス・プロセッサ2500は、単一のサブ・コア(たとえば、2550A)を有する低電力プロセッサである。少なくとも一実施例では、グラフィックス・プロセッサ2500は、複数のグラフィックス・コア2580A〜2580Nを含み、このそれぞれが、第1のサブ・コア2550A〜2550Nのセット、及び第2のサブ・コア2560A〜2560Nのセットを含む。少なくとも一実施例では、第1のサブ・コア2550A〜2550Nの各サブ・コアは、少なくとも、実行ユニット2552A〜2552Nとメディア/テクスチャ・サンプラ2554A〜2554Nの第1のセットを含む。少なくとも一実施例では、第2のサブ・コア2560A〜2560Nの各サブ・コアは、少なくとも、実行ユニット2562A〜2562Nとサンプラ2564A〜2564Nの第2のセットを含む。少なくとも一実施例では、各サブ・コア2550A〜2550N、2560A〜2560Nは、共有リソース2570A〜2570Nのセットを共有する。少なくとも一実施例では、共有リソースは、共有キャッシュ・メモリ及びピクセル動作論理を含む。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・プロセッサ2500において使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図26は、少なくとも一実施例による、命令を実行するための論理回路を含んでもよいプロセッサ2600のマイクロ・アーキテクチャを示すブロック図である。少なくとも一実施例では、プロセッサ2600は、x86命令、AMR命令、特定用途向け集積回路(ASIC)用の特別命令などを含む命令を実行してもよい。少なくとも一実施例では、プロセッサ2600は、カリフォルニア州サンタクララのインテルコーポレーションによる、MMX技術で有効化されたマイクロプロセッサ内の64ビット幅MMXTMレジスタなど、パック・データを記憶するためのレジスタを含んでもよい。少なくとも一実施例では、整数形式と浮動小数点形式の両方で利用可能なMMXレジスタは、単一命令複数データ(「SIMD」)及びストリーミングSIMD拡張(「SSE」:streaming SIMD extensions)命令を伴うパック・データ要素で動作してもよい。少なくとも一実施例では、SSE2、SSE3、SSE4、AVX、又はそれ以上(総称して「SSEx」と呼ばれる)の技術に関する128ビット幅のXMMレジスタは、こうしたパック・データのオペランドを保持してもよい。少なくとも一実施例では、プロセッサ2600は、機械学習若しくは深層学習のアルゴリズム、訓練、又は推論を加速するために命令を実行してもよい。
少なくとも一実施例では、プロセッサ2600は、実行すべき命令をフェッチし、プロセッサ・パイプラインで後に使用すべき命令を準備するイン・オーダー・フロント・エンド(「フロント・エンド」)2601を含む。少なくとも一実施例では、フロント・エンド2601は、いくつかのユニットを含んでもよい。少なくとも一実施例では、命令プリフェッチャ2626が、メモリから命令をフェッチし、命令デコーダ2628に命令を供給し、命令デコーダが、命令をデコード又は解釈する。たとえば、少なくとも一実施例では、命令デコーダ2628は、受け取った命令を、機械が実行することのできる「マイクロ命令」又は「マイクロ・オペレーション」と呼ばれる(「マイクロ・オプス」又は「uops」とも呼ばれる)1つ又は複数のオペレーションにデコードする。少なくとも一実施例では、命令デコーダ2628は、命令を、オプコード及び対応するデータ、並びに制御フィールドに構文解析して、これらがマイクロ・アーキテクチャによって使用されて、少なくとも一実施例による動作が実行されてもよい。少なくとも一実施例では、トレース・キャッシュ2630は、デコードされたuopsを、実行できるようにuopキュー2634においてプログラム順のシーケンス又はトレースにアセンブルしてもよい。少なくとも一実施例では、トレース・キャッシュ2630が複雑な命令に遭遇すると、マイクロコードROM2632が、動作の完了に必要なuopsを提供する。
少なくとも一実施例では、単一のマイクロ・オプスに変換できる命令もあれば、全動作を完了するためにいくつかのマイクロ・オプスを必要とする命令もある。少なくとも一実施例では、命令を完了するために5つ以上のマイクロ・オプスが要な場合、命令デコーダ2628は、マイクロコードROM2632にアクセスして、命令を実行してもよい。少なくとも一実施例では、命令は、命令デコーダ2628において処理できるように、少数のマイクロ・オプスにデコードされてもよい。少なくとも一実施例では、こうした動作を完了するのに多数のマイクロ・オプスが必要な場合には、命令は、マイクロコードROM2632に記憶されてもよい。少なくとも一実施例では、トレース・キャッシュ2630は、少なくとも一実施例によるマイクロコードROM2632からの1つ又は複数の命令を完了するために、エントリ・ポイント・プログラマブル論理アレイ(「PLA」:programmable logic array)を参照して、マイクロコード・シーケンスを読み取るための正しいマイクロ命令ポインタを判定する。少なくとも一実施例では、マイクロコードROM2632が命令のためのマイクロ・オプスのシーケンシングを終了した後、機械のフロント・エンド2601は、トレース・キャッシュ2630からマイクロ・オプスのフェッチを再開してもよい。
少なくとも一実施例では、アウト・オブ・オーダー実行エンジン(「アウト・オブ・オーダー・エンジン」)2603は、実行できるように命令を準備してもよい。少なくとも一実施例では、アウト・オブ・オーダー実行論理は、命令のフローをなめらかにし、その順序を変更するために多数バッファを有し、命令がパイプラインを下り、実行されるようにスケジューリングされるときの性能を最適化する。少なくとも一実施例では、アウト・オブ・オーダー実行エンジン2603は、限定することなく、アロケータ/レジスタ・リネーマ2640、メモリuopキュー2642、整数/浮動小数点uopキュー2644、メモリ・スケジューラ2646、高速スケジューラ2602、低速/汎用浮動小数点スケジューラ(「低速/汎用FP:floating pointスケジューラ」)2604、及び単純浮動小数点スケジューラ(「単純FPスケジューラ」)2606を含む。少なくとも一実施例では、高速スケジューラ2602、低速/汎用浮動小数点スケジューラ2604、及び単純浮動小数点スケジューラ2606は、本明細書において集合的に「uopスケジューラ2602、2604、2606」とも呼ばれる。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2640は、実行するために各uopが必要とする機械バッファ及びリソースを配分する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2640は、レジスタ・ファイルへのエントリ時に論理レジスタの名前を変更する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2640はまた、メモリ・スケジューラ2646及びuopスケジューラ2602、2604、2606の前の、2つのuopキュー、すなわちメモリ動作のためのメモリuopキュー2642と非メモリ動作のための整数/浮動小数点uopキュー2644のうちの1つに、各uopのエントリを配分する。少なくとも一実施例では、uopスケジューラ2602、2604、2606は、uopsがいつ実行準備されるかを、それらの従属入力レジスタ・オペランドのソースが準備されていること、及びそれらの動作を完了するためにuopが必要とする実行リソースが利用可能であることに基づき、判定する。少なくとも一実施例では、高速スケジューラ2602は、メイン・クロック・サイクルの半分ごとにスケジューリングしてもよく、低速/汎用浮動小数点スケジューラ2604及び単純浮動小数点スケジューラ2606は、メイン・プロセッサのクロック・サイクル当たりに1回スケジューリングしてもよい。少なくとも一実施例では、uopスケジューラ2602、2604、2606は、実行できるようにuopsをスケジューリングするためにディスパッチ・ポートを調停する。
少なくとも一実施例では、実行ブロック2611は、限定することなく、整数レジスタ・ファイル/バイパス・ネットワーク2608、浮動小数点レジスタ・ファイル/バイパス・ネットワーク(「FPレジスタ・ファイル/バイパス・ネットワーク」)2610、アドレス生成ユニット(「AGU」:address generation units)2612及び2614、高速算術論理演算ユニット(ALU)(「高速ALU」)2616及び2618、低速算術論理演算ユニット(「低速ALU」)2620、浮動小数点ALU(「FP」)2622、並びに浮動小数点移動ユニット(「FP移動」)2624を含む。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2608及び浮動小数点レジスタ・ファイル/バイパス・ネットワーク2610は、本明細書において「レジスタ・ファイル2608、2610」とも呼ばれる。少なくとも一実施例では、AGU2612及び2614、高速ALU2616及び2618、低速ALU2620、浮動小数点ALU2622、及び浮動小数点移動ユニット2624は、本明細書において「実行ユニット2612、2614、2616、2618、2620、2622、及び2624」とも呼ばれる。少なくとも一実施例では、実行ブロック2611は、限定することなく、(ゼロを含む)任意の数及びタイプのレジスタ・ファイル、バイパス・ネットワーク、アドレス生成ユニット、及び実行ユニットを、任意の組合せで含んでもよい。
少なくとも一実施例では、レジスタ・ネットワーク2608、2610は、uopスケジューラ2602、2604、2606と、実行ユニット2612、2614、2616、2618、2620、2622、及び2624との間に配置されてもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2608は、整数演算を実行する。少なくとも一実施例では、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2610は、浮動小数点演算を実行する。少なくとも一実施例では、レジスタ・ネットワーク2608、2610のそれぞれは、限定することなく、バイパス・ネットワークを含んでもよく、このバイパス・ネットワークは、レジスタ・ファイルにまだ書き込まれていない完了したばかりの結果を、新しい従属uopsにバイパス又は転送してもよい。少なくとも一実施例では、レジスタ・ネットワーク2608、2610は、互いにデータを通信してもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2608は、限定することなく、2つの別々のレジスタ・ファイル、すなわち低次32ビットのデータ用の1つのレジスタ・ファイル、及び高次32ビットのデータ用の第2のレジスタ・ファイルを含んでもよい。少なくとも一実施例では、浮動小数点命令は、通常、64〜128ビット幅のオペランドを有することから、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2610は、限定することなく、128ビット幅のエントリを含んでもよい。
少なくとも一実施例では、実行ユニット2612、2614、2616、2618、2620、2622、2624は、命令を実行してもよい。少なくとも一実施例では、レジスタ・ネットワーク2608、2610は、マイクロ命令が実行する必要のある整数及び浮動小数点のデータのオペランド値を記憶する。少なくとも一実施例では、プロセッサ2600は、限定することなく、任意の数及び組合せの実行ユニット2612、2614、2616、2618、2620、2622、2624を含んでよい。少なくとも一実施例では、浮動小数点ALU2622及び浮動小数点移動ユニット2624は、浮動小数点、MMX、SIMD、AVX、及びSEE、又は特別な機械学習命令を含む他の演算を実行してもよい。少なくとも一実施例では、浮動小数点ALU2622は、限定することなく、64ビットずつの浮動小数点デバイダを含み、除算、平方根、及び残りのマイクロ・オプスを実行してもよい。少なくとも一実施例では、浮動小数点値を含む命令は、浮動小数点ハードウェアによって対処されてもよい。少なくとも一実施例では、ALU演算は、高速ALU2616、2618に渡されてもよい。少なくとも一実施例では、高速ALU2616、2618は、クロック・サイクルの半分の実効レイテンシで高速演算を実行してもよい。少なくとも一実施例では、低速ALU2620は、乗数、シフト、フラグ論理、及びブランチ処理などの長レイテンシ・タイプの演算のための整数実行ハードウェアを、限定することなく含んでもよいことから、ほとんどの複雑な整数演算は低速ALU2620に進む。少なくとも一実施例では、メモリのロード/ストア動作は、AGUS2612、2614によって実行されてもよい。少なくとも一実施例では、高速ALU2616、高速ALU2618、及び低速ALU2620は、64ビットのデータ・オペランドで整数演算を実行してもよい。少なくとも一実施例では、高速ALU2616、高速ALU2618、及び低速ALU2620は、16、32、128、256などを含む様々なデータ・ビット・サイズをサポートするように実装されてもよい。少なくとも一実施例では、浮動小数点ALU2622及び浮動小数点移動ユニット2624は、SIMD及びマルチメディア命令と併せた128ビット幅のパック・データ・オペランドなど様々なビット幅を有する幅広いオペランドをサポートするように実装されてもよい。
少なくとも一実施例では、uopスケジューラ2602、2604、2606は、親ロードが実行を終了する前に、従属演算をディスパッチする。少なくとも一実施例では、uopsは、プロセッサ2600において投機的にスケジューリング及び実行されてもよいので、プロセッサ2600は、メモリ・ミスに対処するための論理も含んでよい。少なくとも一実施例では、データ・キャッシュにおいてデータ・ロードがミスした場合、一時的に不正確なデータを有するスケジューラを通り過ぎたパイプラインに、進行中の従属演算が存在してもよい。少なくとも一実施例では、リプレイ機構が、不正確なデータを使用する命令を追跡及び再実行する。少なくとも一実施例では、従属演算は、リプレイされる必要があってもよく、独立した演算は、完了が許容されてもよい。少なくとも一実施例では、プロセッサの少なくとも一実施例のスケジューラ及びリプレイ機構はまた、テキスト・ストリング比較演算のための命令シーケンスを捕捉するように設計されてもよい。
少なくとも一実施例では、「レジスタ」は、オペランドを識別するための命令の一部として使用することができるオンボード・プロセッサのストレージ・ロケーションを指してもよい。少なくとも一実施例では、レジスタは、(プログラマの視点から見て)プロセッサの外部から使用可能であり得るものであってもよい。少なくとも一実施例では、レジスタは、特定のタイプの回路に限定されなくてもよい。むしろ、少なくとも一実施例では、レジスタは、データを記憶し、データを提供し、本明細書に記載の機能を実行してもよい。少なくとも一実施例では、本明細書に記載のレジスタは、専用物理レジスタ、レジスタ・リネーミングを使用して動的に配分される物理レジスタ、専用物理レジスタと動的に配分される物理レジスタとの組合せなど、任意の数の異なる技法を使用して、プロセッサ内の回路によって実装されてもよい。少なくとも一実施例では、整数レジスタは、32ビットの整数データを記憶する。少なくとも一実施例のレジスタ・ファイルは、パック・データのための8つのマルチメディアSIMDレジスタも含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015の一部又はすべてが、実行ブロック2611、及び図示してある若しくは図示していない他のメモリ又はレジスタに組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、実行ブロック2611に示すALUのうちの1つ又は複数を使用してもよい。さらに、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行ブロック2611のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図27は、少なくとも一実施例による深層学習アプリケーション・プロセッサ2700を示す。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2700は、深層学習アプリケーション・プロセッサ2700によって実行される場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、深層学習アプリケーション・プロセッサ2700に実行させる命令を使用する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2700は、特定用途向け集積回路(ASIC)である。少なくとも一実施例では、アプリケーション・プロセッサ2700は、1つ若しくは複数の命令又は両方を実行した結果としていずれもハードウェアに「ハード・ワイヤード」された行列乗算演算を実行する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2700は、限定することなく、処理クラスタ2710(1)〜2710(12)、チップ間リンク(「ICL」)2720(1)〜2720(12)、チップ間コントローラ(「ICC」)2730(1)〜2730(2)、高帯域幅メモリ第2世代(「HBM2」)2740(1)〜2740(4)、メモリ・コントローラ(「Mem Ctrlrs」)2742(1)〜2742(4)、高帯域幅メモリ物理層(「HBM PHY」)2744(1)〜2744(4)、管理−コントローラ中央処理装置(「管理−コントローラCPU」)2750、シリアル・ペリフェラル・インターフェース、集積回路間、及び汎用入力/出力ブロック(「SPI、I2C、GPIO」)2760、周辺構成要素相互接続エクスプレス・コントローラ及びダイレクト・メモリ・アクセス・ブロック(「PCIeコントローラ及びDMA」)2770、並びに16レーン周辺構成要素相互接続エクスプレス・ポート(「PCI Expressx16」)2780を含む。
少なくとも一実施例では、処理クラスタ2710は、本明細書に記載の技法を含む1つ又は複数の訓練技法を使用して計算された重みパラメータに基づき、推論又は予測の演算を含む深層学習演算を実行してもよい。少なくとも一実施例では、各処理クラスタ2710は、限定することなく、任意の数及びタイプのプロセッサを含んでもよい。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2700は、任意の数及びタイプの処理クラスタ2700を含んでもよい。少なくとも一実施例では、チップ間リンク2720は、双方向性である。少なくとも一実施例では、チップ間リンク2720及びチップ間コントローラ2730は、1つ又は複数のニューラル・ネットワークに具体化された1つ又は複数の機械学習アルゴリズムを実行した結果得られるアクティブ化情報を含む情報を、複数の深層学習アプリケーション・プロセッサ2700が交換できるようにする。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2700は、(ゼロを含む)任意の数及びタイプのICL2720及びICC2730を含んでもよい。
少なくとも一実施例では、HBM2 2740は、合計32ギガバイト(GB:Gigabyte)のメモリを提供する。少なくとも一実施例では、HBM2 2740(i)は、メモリ・コントローラ2742(i)とHBM PHY2744(i)の両方に関連付けられ、ここで「i」は任意の整数である。少なくとも一実施例では、任意の数のHBM2 2740が、任意のタイプ及び合計量の高帯域幅メモリを提供してもよく、(ゼロを含む)任意の数及びタイプのメモリ・コントローラ2742及びHBM PHY2744に関連付けられてもよい。少なくとも一実施例では、SPI、I2C、GPIO2760、PCIeコントローラ及びDMA2770、並びに/又はPCIe2780は、任意の技術的に実行可能なやり方で任意の数及びタイプの通信規格を有効にする任意の数及びタイプのブロックに置き換えられてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、深層学習アプリケーション・プロセッサ2700に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2700は、別のプロセッサ若しくはシステムによって、又は深層学習アプリケーション・プロセッサ2700によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、プロセッサ2700は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図28は、少なくとも一実施例による、ニューロモーフィック・プロセッサ2800のブロック図である。少なくとも一実施例では、ニューロモーフィック・プロセッサ2800は、ニューロモーフィック・プロセッサ2800の外部のソースから1つ又は複数の入力を受信する。少なくとも一実施例では、これらの入力は、ニューロモーフィック・プロセッサ2800内の1つ又は複数のニューロン2802に送信されてもよい。少なくとも一実施例では、ニューロン2802及びその構成要素は、1つ又は複数の算術論理演算ユニット(ALU)を含む回路又は論理を使用して、実装されてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2800は、限定することなく、ニューロン2802の数千又は数百万のインスタンスを含んでもよいが、任意の好適な数のニューロン2802が使用されてもよい。少なくとも一実施例では、ニューロン2802の各インスタンスは、ニューロン入力2804及びニューロン出力2806を含んでもよい。少なくとも一実施例では、ニューロン2802は出力を生成してもよく、この出力は、ニューロン2802の他のインスタンスの入力に送信されてもよい。たとえば、少なくとも一実施例では、ニューロン入力2804及びニューロン出力2806は、シナプス2808を介して相互接続されてもよい。
少なくとも一実施例では、ニューロン2802とシナプス2808は、ニューロモーフィック・プロセッサ2800が受信した情報をニューロモーフィック・プロセッサ2800が動作して処理又は分析するように、相互接続されてもよい。少なくとも一実施例では、ニューロン2802は、ニューロン入力2804を介して受信した入力が、閾値を超えているとき、出力パルス(又は「発火」若しくは「スパイク」)を送信してもよい。少なくとも一実施例では、ニューロン2802は、ニューロン入力2804において受信した信号を合計又は積分してもよい。たとえば、少なくとも一実施例では、ニューロン2802は、漏れ積分発火ニューロン(leaky integrate−and−fire neuron)として実装されてもよく、ここで、合計(「膜電位」と呼ばれる)が閾値を超える場合には、ニューロン2802は、シグモイド関数又は閾値関数などの伝達関数を使用して、出力(又は「発火」)を生成してもよい。少なくとも一実施例では、漏れ積分発火ニューロンは、ニューロン入力2804で受信した信号を合計して膜電位にしてもよく、また、崩壊因子(又は漏れ)を適用して膜電位を低減してもよい。少なくとも一実施例では、複数の入力信号が、閾値を超えるほど十分に素早く(すなわち、膜電位の崩壊が少なすぎて発火できなくなる前に)ニューロン入力2804において受信された場合には、漏れ積分発火ニューロンが発火してもよい。少なくとも一実施例では、ニューロン2802は、入力を受信し、入力を積分して膜電位にし、膜電位を崩壊させる回路又は論理を使用して、実装されてもよい。少なくとも一実施例では、入力は平均化されてもよく、又は任意の他の好適な伝達関数が使用されてもよい。さらに、少なくとも一実施例では、ニューロン2802は、ニューロン2804に伝達関数を適用した結果が閾値を超えるとき、ニューロン2806において出力スパイクを生成するコンパレータ回路又は論理を、限定することなく含んでもよい。少なくとも一実施例では、ニューロン2802は発火すると、前に受信した入力情報を、たとえば膜電位を0又は他の好適なデフォルト値に再設定することによって、無視してもよい。少なくとも一実施例では、膜電位が0にリセットされると、ニューロン2802は、好適な期間(又は不応期)の後に通常の動作を再開してもよい。
少なくとも一実施例では、ニューロン2802は、シナプス2808を通して相互接続されてもよい。少なくとも一実施例では、シナプス2808は、第1のニューロン2802の出力から第2のニューロン2802の入力に信号を送信するように動作してもよい。少なくとも一実施例では、ニューロン2802は、シナプス2808の2つ以上のインスタンスを介して情報を送信してもよい。少なくとも一実施例では、ニューロン出力2806の1つ又は複数のインスタンスは、シナプス2808のインスタンスを介して、同じニューロン2802のニューロン入力2804のインスタンスに接続されてもよい。少なくとも一実施例では、シナプス2808のインスタンスを介して送信されることになる出力を生成するニューロン2802のインスタンスは、シナプス2808のそのインスタンスに対して「シナプス前ニューロン」と呼ばれてもよい。少なくとも一実施例では、シナプス2808のインスタンスを介して送信されることになる入力を受信するニューロン2802のインスタンスは、シナプス2808のそのインスタンスに対して「シナプス後ニューロン」と呼ばれてもよい。少なくとも一実施例では、ニューロン2802のインスタンスは、シナプス2808の1つ又は複数のインスタンスから入力を受信してもよく、また、シナプス2808の1つ又は複数のインスタンスを介して出力を送信してもよいので、ニューロン2802の単一のインスタンスは、したがって、シナプス2808の様々なインスタンスに対して「シナプス前ニューロン」と「シナプス後ニューロン」の両方であってもよい。
少なくとも一実施例では、ニューロン2802は、1つ又は複数の層に組織化されてもよい。少なくとも一実施例では、ニューロン2802の各インスタンスは、1つ又は複数のシナプス2808を通って1つ又は複数のニューロン入力2804にファン・アウトすることができる1つのニューロン出力2806を有してもよい。少なくとも一実施例では、第1の層2810のニューロン2802のニューロン出力2806は、第2の層2812のニューロン2802のニューロン入力2804に接続されてもよい。少なくとも一実施例では、層2810は、「フィード・フォワード」層と呼ばれてもよい。少なくとも一実施例では、第1の層2810のインスタンスにおけるニューロン2802の各インスタンスは、第2の層2812におけるニューロン2802の各インスタンスにファン・アウトしてもよい。少なくとも一実施例では、第1の層2810は、「完全に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層2812のインスタンスにおけるニューロン2802の各インスタンスは、第3の層2814におけるニューロン2802の全インスタンスより少ないインスタンスにファン・アウトしてもよい。少なくとも一実施例では、第2の層2812は、「疎に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層2812のニューロン2802は、第2の層2812におけるニューロン2802を含め、複数の他の層のニューロン2802にファン・アウトしてもよい。少なくとも一実施例では、第2の層2812は、「回帰層」と呼ばれてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2800は、疎に接続されたフィード・フォワード層と完全に接続されたフィード・フォワード層の両方を限定することなく含む、回帰層とフィード・フォワード層の任意の好適な組合せを限定することなく含んでもよい。
少なくとも一実施例では、ニューロモーフィック・プロセッサ2800は、シナプス2808をニューロン2802に接続するための再構成可能相互接続アーキテクチャ、又は専用ハード・ワイヤード相互接続を、限定することなく含んでもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2800は、ニューラル・ネットワーク・トポロジ、及びニューロンのファン・イン/ファン・アウトに基づき、必要に応じてシナプスを異なるニューロン2802に配分できるようにする回路又は論理を、限定することなく含んでもよい。たとえば、少なくとも一実施例では、シナプス2808は、ネットワーク・オン・チップなどの相互接続ファブリックを使用して、又は専用の接続を用いて、ニューロン2802に接続されてもよい。少なくとも一実施例では、シナプス相互接続及びその構成要素は、回路又は論理を使用して実装されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図29は、少なくとも一実施例による処理システムのブロック図である。少なくとも一実施例では、システム2900は、1つ又は複数のプロセッサ2902、及び1つ又は複数のグラフィックス・プロセッサ2908を含み、単一プロセッサのデスクトップ・システム、マルチプロセッサのワークステーション・システム、又は多数のプロセッサ2902若しくはプロセッサ・コア2907を有するサーバ・システムであってもよい。少なくとも一実施例では、システム2900は、モバイル・デバイス、携帯型デバイス、又は組み込みデバイスで使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。
少なくとも一実施例では、システム2900は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム及びメディアのコンソールを含むゲーム・コンソール、モバイル・ゲーミング・コンソール、携帯型ゲーム・コンソール、若しくはオンライン・ゲーム・コンソールを含んでもよく、又はそれらに組み込まれてもよい。少なくとも一実施例では、システム2900は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス、又はモバイル・インターネット・デバイスである。少なくとも一実施例では、処理システム2900はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、若しくは仮想現実デバイスなどのウェアラブル・デバイスを含んでもよく、それらに結合されてもよく、又はそれらの中に一体化されてもよい。少なくとも一実施例では、処理システム2900は、1つ又は複数のプロセッサ2902と、1つ又は複数のグラフィックス・プロセッサ2908によって生成されるグラフィカル・インターフェースとを有するテレビ又はセット・トップ・ボックス・デバイスである。
少なくとも一実施例では、1つ又は複数のプロセッサ2902はそれぞれ、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実行する命令を処理するための1つ又は複数のプロセッサ・コア2907を含む。少なくとも一実施例では、1つ又は複数のプロセッサ・コア2907のそれぞれは、特定の命令シーケンス2909を処理するように構成される。少なくとも一実施例では、命令シーケンス2909は、複合命令セット・コンピューティング(CISC)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にしてもよい。少なくとも一実施例では、プロセッサ・コア2907はそれぞれ、異なる命令シーケンス2909を処理してもよく、この命令セットは、他の命令シーケンスのエミュレーションを容易にする命令を含んでもよい。少なくとも一実施例では、プロセッサ・コア2907はまた、デジタル信号プロセッサ(DSP)などの他の処理デバイスを含んでもよい。
少なくとも一実施例では、プロセッサ2902はキャッシュ・メモリ2904を含む。少なくとも一実施例では、プロセッサ2902は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ2902の様々な構成要素間で共有される。少なくとも一実施例では、プロセッサ2902はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC))(図示せず)を使用し、このキャッシュは、知られているキャッシュ・コヒーレンス技法を使用して、プロセッサ・コア2907間で共有されてもよい。少なくとも一実施例では、さらにレジスタ・ファイル2906がプロセッサ2902に含まれ、このレジスタ・ファイルは、異なるタイプのデータを記憶するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタ)を含んでもよい。少なくとも一実施例では、レジスタ・ファイル2906は、汎用レジスタ又は他のレジスタを含んでもよい。
少なくとも一実施例では、1つ又は複数のプロセッサ2902は、1つ又は複数のインターフェース・バス2910に結合されて、アドレス、データ、又は制御信号などの通信信号を、プロセッサ2902とシステム2900内の他の構成要素との間で送信する。少なくとも一実施例では、インターフェース・バス2910は、一実施例では、ダイレクト・メディア・インターフェース(DMI)バスのバージョンなどのプロセッサ・バスとすることができる。少なくとも一実施例では、インターフェース2910は、DMIバスに限定されず、1つ又は複数のペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)、メモリ・バス、又は他のタイプのインターフェース・バスを含んでもよい。少なくとも一実施例では、プロセッサ2902は、統合メモリ・コントローラ2916、及びプラットフォーム・コントローラ・ハブ2930を含む。少なくとも一実施例では、メモリ・コントローラ2916は、メモリ・デバイスとシステム2900の他の構成要素との間の通信を容易にし、一方でプラットフォーム・コントローラ・ハブ(PCH)2930は、ローカルI/Oバスを介してI/Oデバイスへの接続を提供する。
少なくとも一実施例では、メモリ・デバイス2920は、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、スタティック・ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセス・メモリとしての役割を果たすのに好適な性能を有する何らかの他のメモリ・デバイスとすることができる。少なくとも一実施例では、メモリ・デバイス2920は、システム2900のためのシステム・メモリとして動作して、1つ又は複数のプロセッサ2902がアプリケーション若しくはプロセスを実行するときに使用するためのデータ2922及び命令2921を記憶することができる。少なくとも一実施例では、メモリ・コントローラ2916はまた、任意選択の外部グラフィックス・プロセッサ2912と結合しており、このグラフィックス・プロセッサは、プロセッサ2902内の1つ又は複数のグラフィックス・プロセッサ2908と通信して、グラフィックス及びメディアの動作を実行してもよい。少なくとも一実施例では、ディスプレイ・デバイス2911は、プロセッサ2902に接続することができる。少なくとも一実施例では、ディスプレイ・デバイス2911は、モバイル電子デバイス又はラップトップ・デバイスのような内部ディスプレイ・デバイス、又はディスプレイ・インターフェース(たとえば、ディスプレイ・ポートなど)を介して取り付けられる外部ディスプレイ・デバイスのうちの1つ又は複数を含むことができる。少なくとも一実施例では、ディスプレイ・デバイス2911は、仮想現実(VR)アプリケーション又は拡張現実(AR)アプリケーションで使用するための立体ディスプレイ・デバイスなどの頭部装着型ディスプレイ(HMD)を含むことができる。
少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2930は、周辺装置が高速I/Oバスを介してメモリ・デバイス2920及びプロセッサ2902に接続できるようにする。少なくとも一実施例では、I/O周辺装置は、オーディオ・コントローラ2946、ネットワーク・コントローラ2934、ファームウェア・インターフェース2928、ワイヤレス・トランシーバ2926、タッチ・センサ2925、データ・ストレージ・デバイス2924(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)を含むが、これらに限定されない。少なくとも一実施例では、データ・ストレージ・デバイス2924は、ストレージ・インターフェース(たとえば、SATA)を介して、又はペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)などのペリフェラル・バスを介して、接続することができる。少なくとも一実施例では、タッチ・センサ2925は、タッチ画面センサ、圧力センサ、又は指紋センサを含むことができる。少なくとも一実施例では、ワイヤレス・トランシーバ2926は、WiFiトランシーバ、Bluetoothトランシーバ、又は3G、4G、若しくはLong Term Evolution(LTE)トランシーバなどのモバイル・ネットワーク・トランシーバとすることができる。少なくとも一実施例では、ファームウェア・インターフェース2928は、システム・ファームウェアとの通信を可能にし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(UEFI)とすることができる。少なくとも一実施例では、ネットワーク・コントローラ2934は、有線ネットワークへのネットワーク接続を可能にすることができる。少なくとも一実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス2910と結合する。少なくとも一実施例では、オーディオ・コントローラ2946は、多チャネル・ハイ・デフィニション・オーディオ・コントローラである。少なくとも一実施例では、システム2900は、レガシー(たとえば、パーソナル・システム2(PS/2))デバイスをシステム2900に結合するための任意選択のレガシーI/Oコントローラ2940を含む。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2930は、キーボードとマウス2943の組合せ、カメラ2944、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(USB)コントローラ2942の接続入力デバイスにも接続することができる。
少なくとも一実施例では、メモリ・コントローラ2916及びプラットフォーム・コントローラ・ハブ2930のインスタンスは、外部グラフィックス・プロセッサ2912などの個別の外部グラフィックス・プロセッサに一体化されてもよい。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2930及び/又はメモリ・コントローラ2916は、1つ又は複数のプロセッサ2902の外部にあってもよい。たとえば、少なくとも一実施例では、システム2900は、外部のメモリ・コントローラ2916及びプラットフォーム・コントローラ・ハブ2930を含むことができ、これらは、プロセッサ2902と通信するシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺装置コントローラ・ハブとして構成されてもよい。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015の一部又はすべてが、グラフィックス・プロセッサ2900に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプラインに具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図10A又は図10Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ2900のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図30は、少なくとも一実施例による、1つ又は複数のプロセッサ・コア3002A〜3002N、統合メモリ・コントローラ3014、及び統合グラフィックス・プロセッサ3008を有するプロセッサ3000のブロック図である。少なくとも一実施例では、プロセッサ3000は、破線の四角によって表される追加コア3002Nを含むそれ以下の数の追加コアを含むことができる。少なくとも一実施例では、プロセッサ・コア3002A〜3002Nのそれぞれは、1つ又は複数の内部キャッシュ・ユニット3004A〜3004Nを含む。少なくとも一実施例では、各プロセッサ・コアはまた、1つ又は複数の共有キャッシュ・ユニット3006にアクセスできる。
少なくとも一実施例では、内部キャッシュ・ユニット3004A〜3004N、及び共有キャッシュ・ユニット3006は、プロセッサ3000内のキャッシュ・メモリ階層を表す。少なくとも一実施例では、キャッシュ・メモリ・ユニット3004A〜3004Nは、各プロセッサ・コア内の命令及びデータのキャッシュの少なくとも1つのレベル、並びにレベル2(L2)、レベル3(L3)、レベル4(L4)などの共有中間レベル・キャッシュの1つ又は複数のレベル、又はキャッシュの他のレベルを含んでもよく、ここで外部メモリの前の最高レベルのキャッシュは、LLCとして分類される。少なくとも一実施例では、キャッシュ・コヒーレンス論理は、様々なキャッシュ・ユニット3006及び3004A〜3004N間でコヒーレンスを維持する。
少なくとも一実施例では、プロセッサ3000はまた、1つ又は複数のバス・コントローラ・ユニット3016とシステム・エージェント・コア3010のセットを含んでもよい。少なくとも一実施例では、バス・コントローラ・ユニット3016は、1つ又は複数のPCI若しくはPCIエクスプレス・バスなどのペリフェラル・バスのセットを管理する。少なくとも一実施例では、システム・エージェント・コア3010は、様々なプロセッサ構成要素のための管理機能を提供する。少なくとも一実施例では、システム・エージェント・コア3010は、様々な外部メモリ・デバイス(図示せず)へのアクセスを管理するための1つ又は複数の統合メモリ・コントローラ3014を含む。
少なくとも一実施例では、プロセッサ・コア3002A〜3002Nの1つ又は複数は、同時マルチスレッディングのサポートを含む。少なくとも一実施例では、システム・エージェント・コア3010は、マルチスレッドの処理中にコア3002A〜3002Nを調整し動作させるための構成要素を含む。少なくとも一実施例では、システム・エージェント・コア3010はさらに、電力制御ユニット(PCU)を含んでもよく、このユニットは、プロセッサ・コア3002A〜3002N及びグラフィックス・プロセッサ3008の1つ又は複数の電力状態を調整するための論理及び構成要素を含む。
少なくとも一実施例では、プロセッサ3000はさらに、グラフィックス処理動作を実行するためのグラフィックス・プロセッサ3008を含む。少なくとも一実施例では、グラフィックス・プロセッサ3008は、共有キャッシュ・ユニット3006と、1つ又は複数の統合メモリ・コントローラ3014を含むシステム・エージェント・コア3010とに結合する。少なくとも一実施例では、システム・エージェント・コア3010はまた、1つ又は複数の結合されたディスプレイに対してグラフィックス・プロセッサの出力を行わせるためのディスプレイ・コントローラ3011を含む。少なくとも一実施例では、ディスプレイ・コントローラ3011はまた、少なくとも1つの相互接続を介してグラフィックス・プロセッサ3008に結合された別個のモジュールであってもよく、又はグラフィックス・プロセッサ3008内に一体化されていてもよい。
少なくとも一実施例では、プロセッサ3000の内部構成要素を結合するために、リング・ベースの相互接続ユニット3012が使用される。少なくとも一実施例では、ポイントツーポイント相互接続、スイッチ相互接続、又は他の技法などの代替的な相互接続ユニットが使用されてもよい。少なくとも一実施例では、グラフィックス・プロセッサ3008は、I/Oリンク3013を介してリング相互接続3012と結合する。
少なくとも一実施例では、I/Oリンク3013は、様々なプロセッサ構成要素と、eDRAMモジュールなどの高性能組み込みメモリ・モジュール3018との間の通信を容易にするオン・パッケージI/O相互接続を含む多様なI/O相互接続のうちの少なくとも1つを表す。少なくとも一実施例では、プロセッサ・コア3002A〜3002Nのそれぞれ及びグラフィックス・プロセッサ3008は、共有ラスト・レベル・キャッシュとして組み込みメモリ・モジュール3018を使用する。
少なくとも一実施例では、プロセッサ・コア3002A〜3002Nは、共通の命令セット・アーキテクチャを実行する同種のコアである。少なくとも一実施例では、プロセッサ・コア3002A〜3002Nは、命令セット・アーキテクチャ(ISA)の観点から見れば異種であり、ここでプロセッサ・コア3002A〜3002Nのうちの1つ又は複数は、共通の命令セットを実行するが、プロセッサ・コア3002A〜3002Nのうちの1つ又は複数の他のコアは、共通の命令セットのサブセット、又は異なる命令セットを実行する。少なくとも一実施例では、プロセッサ・コア3002A〜3002Nは、マイクロ・アーキテクチャの観点から見れば異種であり、ここで電力消費量が相対的に高い1つ又は複数のコアは、電力消費量がより低い1つ又は複数のコアと結合する。少なくとも一実施例では、プロセッサ3000は、1つ又は複数のチップ上に、又はSoC集積回路として実装することができる。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015の一部又はすべてが、グラフィックス・プロセッサ3010に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン、グラフィックス・コア3002、共有機能論理、又は図30の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図10A又は図10Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのプロセッサ3000のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図31は、グラフィックス・プロセッサ3100のブロック図であり、これは、個別グラフィックス・プロセッシング・ユニットであってもよく、又は複数の処理コアと統合されたグラフィックス・プロセッサであってもよい。少なくとも一実施例では、グラフィックス・プロセッサ3100は、メモリにマッピングされたI/Oインターフェースを介して、メモリに入れられたコマンドを用いて、グラフィックス・プロセッサ3100のレジスタと通信する。少なくとも一実施例では、グラフィックス・プロセッサ3100は、メモリにアクセスするためのメモリ・インターフェース3114を含む。少なくとも一実施例では、メモリ・インターフェース3114は、ローカル・メモリ、1つ若しくは複数の内部キャッシュ、1つ若しくは複数の共有外部キャッシュ、及び/又はシステム・メモリへのインターフェースである。
少なくとも一実施例では、グラフィックス・プロセッサ3100はまた、ディスプレイ出力データをディスプレイ・デバイス3120に向けて駆動するためのディスプレイ・コントローラ3102も含む。少なくとも一実施例では、ディスプレイ・コントローラ3102は、ディスプレイ・デバイス3120用の1つ又は複数の重なり平面、及び多層のビデオ若しくはユーザ・インターフェース要素の合成のためのハードウェアを含む。少なくとも一実施例では、ディスプレイ・デバイス3120は、内部又は外部のディスプレイ・デバイスとすることができる。少なくとも一実施例では、ディスプレイ・デバイス3120は、仮想現実(VR)ディスプレイ・デバイス又は拡張現実(AR)ディスプレイ・デバイスなどの頭部装着型ディスプレイ・デバイスである。少なくとも一実施例では、グラフィックス・プロセッサ3100は、MPEG−2などの動画エキスパート・グループ(MPEG)フォーマット、H.264/MPEG−4AVCなどのアドバンスト・ビデオ・コーディング(AVC)フォーマット、並びに映画テレビ技術者協会(SMPTE)421M/VC−1、及びJPEGなどのジョイント・フォトグラフィック・エキスパート・グループ(JPEG)フォーマット、及びモーションJPEG(MJPEG)フォーマットを含むがこれらに限定されない1つ又は複数のメディア符号化フォーマットに、それらのフォーマットから、又はそれらのフォーマット間で、メディアをエンコード、デコード、又はコード変換するためのビデオ・コーデック・エンジン3106を含む。
少なくとも一実施例では、グラフィックス・プロセッサ3100は、たとえばビット境界ブロック転送を含む2次元(2D)ラスターライザ動作を実行するためのブロック画像転送(BLIT)エンジン3104を含む。しかし、少なくとも一実施例では、2Dグラフィックス動作は、グラフィックス処理エンジン(GPE)3110の1つ又は複数の構成要素を使用して実行される。少なくとも一実施例では、GPE3110は、3次元(3D)グラフィックス動作及びメディア動作を含むグラフィックス動作を実行するためのコンピュート・エンジンである。
少なくとも一実施例では、GPE3110は、3Dのプリミティブ形状(たとえば、矩形、三角形など)に作用する処理関数を使用して、3次元画像及びシーンをレンダリングするなど、3D動作を実行するための3Dパイプライン3112を含む。少なくとも一実施例では、3Dパイプライン3112は、プログラム可能で固定された関数要素を含み、これは、3D/メディア・サブシステム3115に対して様々なタスクを実行し、且つ/又は実行スレッドをスポーンする。3Dパイプライン3112を使用してメディア動作を実行できるが、少なくとも一実施例では、GPE3110は、ビデオの後処理及び画像強調などのメディア動作を実行するために使用されるメディア・パイプライン3116も含む。
少なくとも一実施例では、メディア・パイプライン3116は、ビデオ・コーデック・エンジン3106の代わりに、又はそれを代表して、ビデオ・デコード加速、ビデオ・インターレース解除、及びエンコード加速などの1つ又は複数の特別なメディア動作を実行するための固定機能又はプログラム可能論理ユニットを含む。少なくとも一実施例では、メディア・パイプライン3116は、3D/メディア・サブシステム3115で実行するためのスレッドをスポーンするためのスレッド・スポーニング・ユニットをさらに含む。少なくとも一実施例では、スポーンされたスレッドは、3D/メディア・サブシステム3115に含まれた1つ又は複数のグラフィックス実行ユニット上で、メディア動作のための計算を実行する。
少なくとも一実施例では、3D/メディア・サブシステム3115は、3Dパイプライン3112及びメディア・パイプライン3116によってスポーンされたスレッドを実行するための論理を含む。少なくとも一実施例では、3Dパイプライン3112及びメディア・パイプライン3116は、スレッド実行要求を3D/メディア・サブシステム3115に送信し、この3D/メディア・サブシステム3115は、様々な要求を調停し、利用可能なスレッド実行リソースにディスパッチするためのスレッド・ディスパッチ論理を含む。少なくとも一実施例では、実行リソースは、3D及びメディア・スレッドを処理するためのグラフィックス実行ユニットのアレイを含む。少なくとも一実施例では、3D/メディア・サブシステム3115は、スレッド命令及びデータのための1つ又は複数の内部キャッシュを含む。少なくとも一実施例では、サブシステム3115はまた、スレッド間でデータを共有し、出力データを記憶するための、レジスタ及びアドレス可能メモリを含む共有メモリも含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015の一部又はすべてが、グラフィックス・プロセッサ3100に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン3112に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図10A又は図10Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3100のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図32は、少なくとも一実施例によるグラフィックス・プロセッサのグラフィックス処理エンジン3210のブロック図である。少なくとも一実施例では、グラフィックス処理エンジン(GPE)3210は、図31に示すGPE3110の1つのバージョンである。少なくとも一実施例では、メディア・パイプライン3216は任意選択であり、GPE3210内に明示的に含まれなくてもよい。少なくとも一実施例では、別個のメディア及び/又は画像のプロセッサが、GPE3210に結合される。
少なくとも一実施例では、GPE3210は、コマンド・ストリーマ3203に結合され、又はそれを含み、このコマンド・ストリーマは、3Dパイプライン3212及び/又はメディア・パイプライン3216にコマンド・ストリームを提供する。少なくとも一実施例では、コマンド・ストリーマ3203はメモリに結合され、このメモリは、システム・メモリであってもよく、又は内部キャッシュ・メモリ及び共有キャッシュ・メモリのうちの1つ若しくは複数であってもよい。少なくとも一実施例では、コマンド・ストリーマ3203は、メモリからコマンドを受信し、3Dパイプライン3212及び/又はメディア・パイプライン3216にコマンドを送信する。少なくとも一実施例では、コマンドは、リング・バッファからフェッチされる命令、プリミティブ、又はマイクロ・オペレーションであり、このリング・バッファは、3Dパイプライン3212及びメディア・パイプライン3216のためのコマンドを記憶する。少なくとも一実施例では、リング・バッファはさらに、複数のコマンドのバッチを記憶するバッチ・コマンド・バッファを含むことができる。少なくとも一実施例では、3Dパイプライン3212用のコマンドはまた、3Dパイプライン3212用の頂点及び形状のデータ、並びに/又はメディア・パイプライン3216用の画像データ及びメモリ・オブジェクトなどであるがこれらに限定されないメモリに記憶されたデータへの参照も含むことができる。少なくとも一実施例では、3Dパイプライン3212及びメディア・パイプライン3216は、演算を実行することにより、又は1つ若しくは複数の実行スレッドをグラフィックス・コア・アレイ3214にディスパッチすることにより、コマンド及びデータを処理する。少なくとも一実施例では、グラフィックス・コア・アレイ3214は、グラフィックス・コア(たとえば、グラフィックス・コア3215A、グラフィックス・コア3215B)の1つ又は複数のブロックを含み、各ブロックは、1つ又は複数のグラフィックス・コアを含む。少なくとも一実施例では、各グラフィックス・コアは、グラフィックス及びコンピュートの動作を実行するための汎用及びグラフィックス専用の実行論理、並びに、図10A及び図10Bの推論及び/又は訓練論理1015を含め、固定機能のテクスチャ処理及び/又は機械学習、及び人工知能の加速論理を含むグラフィックス実行リソースのセットを含む。
少なくとも一実施例では、3Dパイプライン3212は、命令を処理し、実行スレッドをグラフィックス・コア・アレイ3214にディスパッチすることにより、頂点シェーダ、ジオメトリ・シェーダ、ピクセル・シェーダ、フラグメント・シェーダ、コンピュート・シェーダ、又は他のシェーダ・プログラムなどの1つ又は複数のシェーダ・プログラムを処理するための固定機能及びプログラム可能論理を含む。少なくとも一実施例では、グラフィックス・コア・アレイ3214は、シェーダ・プログラムを処理する際に使用するための実行リソースの統合ブロックを提供する。少なくとも一実施例では、グラフィック・コア・アレイ3214のグラフィックス・コア3215A〜3215B内の多目的の実行論理(たとえば、実行ユニット)は、様々な3DのAPIシェーダ言語のサポートを含み、複数のシェーダに関連付けられた複数の同時実行スレッドを実行することができる。
少なくとも一実施例では、グラフィックス・コア・アレイ3214はまた、ビデオ及び/又は画像の処理など、メディア機能を実行するための実行論理も含む。少なくとも一実施例では、実行ユニットはさらに、グラフィックス処理動作に加えて並列の汎用計算動作を実行するようにプログラム可能な汎用論理を含む。
少なくとも一実施例では、グラフィックス・コア・アレイ3214上で実行しているスレッドにより生成される出力データは、統合リターン・バッファ(URB)3218のメモリにデータを出力することができる。少なくとも一実施例では、URB3218は、複数のスレッド用のデータを記憶することができる。少なくとも一実施例では、グラフィックス・コア・アレイ3214上で実行している異なるスレッド間でデータを送信するために、URB3218を使用してもよい。少なくとも一実施例では、グラフィックス・コア・アレイ3214上のスレッドと、共有機能論理3220内の固定機能論理との間の同期のために、URB3218がさらに使用されてもよい。
少なくとも一実施例では、グラフィックス・コア・アレイ3214はスケーラブルであり、それにより、グラフィックス・コア・アレイ3214は、可変数のグラフィックス・コアを含み、それぞれのグラフィックス・コアが、GPE3210の目的とする電力及び性能のレベルに基づき可変数の実行ユニットを有する。少なくとも一実施例では、実行リソースは動的にスケーラブルであり、それにより実行リソースは、必要に応じて有効化又は無効化されてもよい。
少なくとも一実施例では、グラフィックス・コア・アレイ3214は、グラフィックス・コア・アレイ3214のグラフィックス・コア間で共有される複数のリソースを含む共有機能論理3220に結合される。少なくとも一実施例では、共有機能論理3220によって実行される共有機能は、専用の補足機能をグラフィックス・コア・アレイ3214に提供するハードウェア論理ユニットに具体化される。少なくとも一実施例では、共有機能論理3220は、サンプラユニット3221、数理ユニット3222、及びスレッド間通信(ITC)論理3223を含むが、これらに限定されない。少なくとも一実施例では、1つ又は複数のキャッシュ3225が、共有機能論理3220に含まれ、又はそれに結合される。
少なくとも一実施例では、専用機能の需要が不十分でグラフィックス・コア・アレイ3214内に含められない場合に、共有機能が使用される。少なくとも一実施例では、専用機能を1つにインスタンス化したものが、共有機能論理3220において使用され、グラフィックス・コア・アレイ3214内の他の実行リソース間で共有される。少なくとも一実施例では、共有機能論理3220内の、グラフィックス・コア・アレイ3214によってのみ使用される特定の共有機能は、グラフィックス・コア・アレイ3214内の共有機能論理3516内に含まれてもよい。少なくとも一実施例では、グラフィックス・コア・アレイ3214内の共有機能論理3516は、共有機能論理3220内の一部又はすべての論理を含むことができる。少なくとも一実施例では、共有機能論理3220内のすべての論理要素は、グラフィックス・コア・アレイ3214の共有機能論理3226内で複製されてもよい。少なくとも一実施例では、共有機能論理3220は、グラフィックス・コア・アレイ3214内の共有機能論理3226に有利なように除外される。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015の一部又はすべてが、グラフィックス・プロセッサ3210に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン3212、グラフィックス・コア3215A、共有機能論理3226、共有機能論理3220、又は図32の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図10A又は図10Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3210のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図33は、本明細書に記載の少なくとも一実施例によるグラフィックス・プロセッサ・コア3300のハードウェア論理のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ・コア3300は、グラフィックス・コア・アレイ内に含まれる。少なくとも一実施例では、コア・スライスと呼ばれることもあるグラフィックス・プロセッサ・コア3300は、モジュール式グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアとすることができる。少なくとも一実施例では、グラフィックス・プロセッサ・コア3300は、1つのグラフィックス・コア・スライスの例示であり、本明細書に記載のグラフィックス・プロセッサは、目的の電力及び性能のエンベロープに基づき、複数のグラフィックス・コア・スライスを含んでもよい。少なくとも一実施例では、各グラフィックス・コア3300は、汎用及び固定の機能論理のモジュール式ブロックを含むサブ・スライスとも呼ばれる複数のサブ・コア3301A〜3301Fに結合された固定機能ブロック3330を含むことができる。
少なくとも一実施例では、固定機能ブロック3330は、たとえば低性能及び/又は低電力のグラフィックス・プロセッサ実装形態において、グラフィックス・プロセッサ3300内のすべてのサブ・コアが共有できるジオメトリ及び固定機能パイプライン3336を含む。少なくとも一実施例では、ジオメトリ及び固定機能パイプライン3336は、3D固定機能パイプライン、ビデオ・フロント・エンド・ユニット、スレッド・スポーナ(spawner)及びスレッド・ディスパッチャ、並びに統合リターン・バッファを管理する統合リターン・バッファ・マネージャを含む。
少なくとも一実施例では、固定機能ブロック3330はまた、グラフィックスSoCインターフェース3337、グラフィックス・マイクロコントローラ3338、及びメディア・パイプライン3339を含む。少なくとも一実施例では、グラフィックスSoCインターフェース3337は、グラフィックス・コア3300と、システム・オン・チップ集積回路内の他のプロセッサ・コアとのインターフェースを提供する。少なくとも一実施例では、グラフィックス・マイクロコントローラ3338は、スレッド・ディスパッチ、スケジューリング、及びプリエンプションを含め、グラフィックス・プロセッサ3300の様々な機能を管理するように構成可能なプログラム可能サブ・プロセッサである。少なくとも一実施例では、メディア・パイプライン3339は、画像及びビデオのデータを含むマルチメディア・データのデコーディング、エンコーディング、前処理、及び/又は後処理を容易にする論理を含む。少なくとも一実施例では、メディア・パイプライン3339は、サブ・コア3301〜3301F内のコンピュート論理又はサンプリング論理への要求を介して、メディア動作を実装する。
少なくとも一実施例では、SoCインターフェース3337は、汎用アプリケーション・プロセッサ・コア(たとえば、CPU)、及び/又はSoC内の他の構成要素と、グラフィックス・コア3300が通信できるようにし、SoC内の他の構成要素には、共有ラスト・レベル・キャッシュ・メモリ、システムRAM、及び/又は組み込みオン・チップ若しくはオン・パッケージのDRAMなどのメモリ階層要素が含まれる。少なくとも一実施例では、SoCインターフェース3337はまた、カメラ・イメージング・パイプラインなど、SoC内の固定機能デバイスとの通信を可能にし、グラフィックス・コア3300とSoC内のCPUとの間で共有することができるグローバル・メモリ・アトミックの使用を可能にし、且つ/又はそれを実装する。少なくとも一実施例では、グラフィックスSoCインターフェース3337はまた、グラフィックス・プロセッサ・コア3300の電力管理制御を実装することができ、グラフィックス・プロセッサ・コア3300のクロック・ドメインと、SoC内の他のクロック・ドメインとの間でインターフェースをとれるようにする。少なくとも一実施例では、SoCインターフェース3337は、グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアのそれぞれにコマンド及び命令を提供するように構成されたコマンド・ストリーマ及びグローバル・スレッド・ディスパッチャから、コマンド・バッファを受信できるようにする。少なくとも一実施例では、コマンド及び命令は、メディア動作が実行されるときにはメディア・パイプライン3339にディスパッチされることが可能であり、又はグラフィックス処理動作が実行されるときには、ジオメトリ及び固定機能パイプライン(たとえば、ジオメトリ及び固定機能パイプライン3336及び/又はジオメトリ及び固定機能パイプライン3314)にディスパッチされることが可能である。
少なくとも一実施例では、グラフィックス・マイクロコントローラ3338は、グラフィックス・コア3300のための様々なスケジューリング及び管理タスクを実行するように構成されることが可能である。少なくとも一実施例では、グラフィックス・マイクロコントローラ3338は、サブ・コア3301A〜3301F内の実行ユニット(EU:execution unit)アレイ3302A〜3302F、3304A〜3304F内の様々なグラフィックス並列エンジンで、グラフィックスを実行し、且つ/又はワークロードのスケジューリングをコンピュートすることができる。少なくとも一実施例では、グラフィックス・コア3300を含むSoCのCPUコア上で実行されているホスト・ソフトウェアは、複数のグラフィックス・プロセッサ経路のうちの1つにワークロードを送出することができ、この経路が、適切なグラフィックス・エンジンに対するスケジューリング動作を呼び出す。少なくとも一実施例では、スケジューリング動作は、どのワークロードを次に実行すべきかを判定すること、コマンド・ストリーマにワークロードを送出すること、エンジン上で実行されている既存のワークロードをプリエンプションすること、ワークロードの進行を管理すること、及びワークロードが完了したときにホスト・ソフトウェアに通知することを含む。少なくとも一実施例では、グラフィックス・マイクロコントローラ3338はまた、グラフィックス・コア3300の低電力又はアイドル状態を促進して、オペレーティング・システム及び/又はシステム上のグラフィックス・ドライバ・ソフトウェアとは無関係に、低電力状態の移行全体にわたってグラフィックス・コア3300内のレジスタを保存及び復元する機能をグラフィックス・コア3300に提供することができる。
少なくとも一実施例では、グラフィックス・コア3300は、図示してあるサブ・コア3301A〜3301Fより多くの、又はそれより少ない、N個までのモジュール式サブ・コアを有してもよい。N個のサブ・コアのセットごとに、少なくとも一実施例では、グラフィックス・コア3300はまた、共有機能論理3310、共有及び/又はキャッシュ・メモリ3312、ジオメトリ/固定機能パイプライン3314、並びに様々なグラフィックスを加速し、処理動作をコンピュートするための追加の固定機能論理3316を含むことができる。少なくとも一実施例では、共有機能論理3310は、グラフィックス・コア3300内の各N個のサブ・コアが共有できる論理ユニット(たとえば、サンプラ、数理、及び/又はスレッド間通信の論理)を含むことができる。少なくとも一実施例では、共有の、及び/又はキャッシュのメモリ3312は、グラフィックス・コア3300内のN個のサブ・コア3301A〜3301Fのためのラスト・レベル・キャッシュとすることができ、また、複数のサブ・コアがアクセスできる共有メモリとしての役割も果たすことができる。少なくとも一実施例では、ジオメトリ/固定機能パイプライン3314は、固定機能ブロック3330内のジオメトリ/固定機能パイプライン3336の代わりに含まれてもよく、同様の論理ユニットを含むことができる。
少なくとも一実施例では、グラフィックス・コア3300は、グラフィックス・コア3300が使用するための様々な固定機能加速論理を含むことができる追加の固定機能論理3316を含む。少なくとも一実施例では、追加の固定機能論理3316は、位置限定シェーディング(position only shading)に使用するための追加のジオメトリ・パイプラインを含む。位置限定シェーディングでは、少なくとも2つのジオメトリ・パイプラインが存在しているが、ジオメトリ及び固定機能パイプライン3314、3336内の完全ジオメトリ・パイプラインと選別パイプライン(cull pipeline)においてであり、この選別パイプラインは、追加の固定機能論理3316内に含まれてもよい追加のジオメトリ・パイプラインである。少なくとも一実施例では、選別パイプラインは、完全ジオメトリ・パイプラインの縮小版である。少なくとも一実施例では、完全パイプライン及び選別パイプラインは、アプリケーションの異なるインスタンスを実行することができ、各インスタンスは別個のコンテキストを有する。少なくとも一実施例では、位置限定シェーディングは、切り捨てられた三角形の長い選別ランを隠すことができ、いくつかのインスタンスにおいてシェーディングを早く完了させることができる。たとえば、少なくとも一実施例では、選別パイプラインは、ピクセルをフレーム・バッファにラスタ化及びレンダリングすることなく、頂点の位置属性をフェッチしシェーディングするので、追加の固定機能論理3316内の選別パイプライン論理は、メイン・アプリケーションと並列で位置シェーダを実行することができ、完全パイプラインよりも全体的に早く臨界結果(critical result)を生成する。少なくとも一実施例では、選別パイプラインは、生成された臨界結果を使用して、すべての三角形について、これらの三角形が選別されているかどうかに関わらず、可視性情報をコンピュートすることができる。少なくとも一実施例では、(このインスタンスではリプレイ・パイプラインと呼ばれてもよい)完全パイプラインは、可視性情報を消費して、選別された三角形を飛ばして可視三角形だけをシェーディングすることができ、この可視性三角形が、最終的にラスタ化フェーズに渡される。
少なくとも一実施例では、追加の固定機能論理3316はまた、機械学習の訓練又は推論の最適化を含む実装形態のために、固定機能の行列乗算論理など、機械学習の加速論理を含むことができる。
少なくとも一実施例では、各グラフィックス・サブ・コア3301A〜3301F内において、実行リソースのセットを含み、このセットは、グラフィックス・パイプライン、メディア・パイプライン、又はシェーダ・プログラムからの要求に応答して、グラフィックス動作、メディア動作、及びコンピュート動作を実行するために使用されてもよい。少なくとも一実施例では、グラフィックス・サブ・コア3301A〜3301Fは、複数のEUアレイ3302A〜3302F、3304A〜3304F、スレッド・ディスパッチ及びスレッド間通信(TD/IC:thread dispatch and inter−thread communication)論理3303A〜3303F、3D(たとえば、テクスチャ)サンプラ3305A〜3305F、メディア・サンプラ3306A〜3306F、シェーダ・プロセッサ3307A〜3307F、及び共有ローカル・メモリ(SLM:shared local memory)3308A〜3308Fを含む。少なくとも一実施例では、EUアレイ3302A〜3302F、3304A〜3304Fはそれぞれ、複数の実行ユニットを含み、これらは、グラフィックス、メディア、又はコンピュート・シェーダ・プログラムを含むグラフィックス動作、メディア動作、又はコンピュート動作のサービスにおいて浮動小数点及び整数/固定小数点の論理演算を実行することができる汎用グラフィックス・プロセッシング・ユニットである。少なくとも一実施例では、TD/IC論理3303A〜3303Fは、サブ・コア内の実行ユニットのためのローカル・スレッド・ディスパッチ及びスレッド制御動作を実行し、サブ・コアの実行ユニット上で実行されているスレッド間の通信を容易にする。少なくとも一実施例では、3Dサンプラ3305A〜3305Fは、テクスチャ又は他の3Dグラフィックス関連のデータをメモリに読み取ることができる。少なくとも一実施例では、3Dサンプラは、所与のテクスチャに関連付けられた構成済みサンプル状態及びテクスチャ・フォーマットに基づき、テクスチャ・データを異なるやり方で読み取ることができる。少なくとも一実施例では、メディア・サンプラ3306A〜3306Fは、メディア・データに関連付けられたタイプ及びフォーマットに基づき、同様の読取り動作を実行することができる。少なくとも一実施例では、各グラフィックス・サブ・コア3301A〜3301Fは、代替的に3Dとメディアの統合サンプラを含むことができる。少なくとも一実施例では、各サブ・コア3301A〜3301F内の実行ユニット上で実行しているスレッドは、スレッド・グループ内で実行しているスレッドが、オン・チップ・メモリの共通プールを使用して実行できるようにするために、各サブ・コア内の共有ローカル・メモリ3308A〜3308Fを利用することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015の一部又はすべてが、グラフィックス・プロセッサ3310に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン、グラフィックス・マイクロコントローラ3338、ジオメトリ及び固定機能パイプライン3314及び3336、又は図33の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図10A又は図10Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3300のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図34A及び図34Bは、少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理3400を示す。図34Aは、スレッド実行論理3400が使用される少なくとも一実施例を示す。図34Bは、少なくとも一実施例による、グラフィックス実行ユニット3408の例示的な内側細部を示す図である。
図34Aに示すように、少なくとも一実施例では、スレッド実行論理3400は、シェーダ・プロセッサ3402、スレッド・ディスパッチャ3404、命令キャッシュ3406、複数の実行ユニット3407A〜3407N、3408A〜3408Nを含むスケーラブル実行ユニット・アレイ、サンプラ3410、データ・キャッシュ3412、及びデータ・ポート3414を含む。少なくとも一実施例では、スケーラブル実行ユニット・アレイは、1つ又は複数の実行ユニット(たとえば、実行ユニット3408A〜N又は3407A〜Nのうちのいずれか)を、たとえばワークロードの計算要件に基づき有効又は無効にすることによって、動的に拡大縮小することができる。少なくとも一実施例では、スケーラブル実行ユニットは、実行ユニットのそれぞれにリンクされる相互接続ファブリックを介して相互接続される。少なくとも一実施例では、スレッド実行論理3400は、命令キャッシュ3406、データ・ポート3414、サンプラ3410、及び実行ユニット3407又は3408のうちの1つ又は複数を介した、システム・メモリ又はキャッシュ・メモリなどのメモリへの1つ又は複数の接続を含む。少なくとも一実施例では、各実行ユニット(たとえば、3407A)は、スレッドごとに複数のデータ要素を並列で処理しながら、複数の同時のハードウェア・スレッドを実行することができるスタンドアロンのプログラム可能な汎用計算ユニットである。少なくとも一実施例では、実行ユニット3407及び/又は3408のアレイは、任意の数の個々の実行ユニットを含むように拡大縮小可能である。
少なくとも一実施例では、実行ユニット3407及び/又は3408は、シェーダ・プログラムを実行するために主に使用される。少なくとも一実施例では、シェーダ・プロセッサ3402は、様々なシェーダ・プログラムを処理し、シェーダ・プログラムに関連付けられた実行スレッドを、スレッド・ディスパッチャ3404を介してディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ3404は、グラフィックス及びメディア・パイプラインからのスレッド開始要求を調停し、要求されたスレッドを、実行ユニット3407及び/又は3408の1つ又は複数の実行ユニット上でインスタンス化するための論理を含む。たとえば、少なくとも一実施例では、ジオメトリ・パイプラインは、頂点シェーダ、モザイク・シェーダ、又はジオメトリ・シェーダを、処理できるようにスレッド実行論理にディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ3404はまた、実行しているシェーダ・プログラムからのラン・タイム・スレッド・スポーニング要求(spawning request)を処理することができる。
少なくとも一実施例では、実行ユニット3407及び/又は3408は、多くの標準的な3Dグラフィックス・シェーダ命令のネイティブ・サポートを含む命令セットをサポートし、それにより、グラフィックス・ライブラリ(たとえば、Direct3D及びOpenGL)からのシェーダ・プログラムが、最小のトランスレーションで実行される。少なくとも一実施例では、実行ユニットは、頂点及びジオメトリの処理(たとえば、頂点プログラム、ジオメトリ・プログラム、及び/又は頂点シェーダ)、ピクセル処理(たとえば、ピクセル・シェーダ、フラグメント・シェーダ)、及び汎用処理(たとえば、コンピュート及びメディアのシェーダ)をサポートする。少なくとも一実施例では、1つ又は複数の算術論理演算ユニット(ALU)を含む各実行ユニット3407及び/又は3408のそれぞれは、単一命令複数データ(SIMD)の実行を複数発行することができ、マルチスレッド化された動作によって、メモリ・アクセスのレイテンシが高いにもかかわらず、効率的な実行環境が可能になる。少なくとも一実施例では、各実行ユニット内の各ハードウェア・スレッドは、専用の高帯域幅レジスタ・ファイル及び関連する独立したスレッド状態を有する。少なくとも一実施例では、実行は、整数演算、単精度及び倍精度の浮動小数点演算、SIMDブランチ性能、論理演算、超越演算、及び他の種々の演算を行うことができるパイプラインに対して、クロック当たり複数発行される。少なくとも一実施例では、メモリ、又は共有機能のうちの1つからのデータを待機している間に、実行ユニット3407及び/又は3408内の従属論理は、要求したデータが戻されるまで、待機スレッドをスリープ状態にする。少なくとも一実施例では、待機スレッドがスリープ状態の間に、ハードウェア・リソースは他のスレッドの処理に専念してもよい。たとえば、少なくとも一実施例では、頂点シェーダ動作に関連する遅延中に、実行ユニットは、ピクセル・シェーダ、フラグメント・シェーダ、又は異なる頂点シェーダを含む別のタイプのシェーダ・プログラムを実行することができる。
少なくとも一実施例では、実行ユニット3407及び/又は3408の各実行ユニットは、データ要素のアレイに対して動作する。少なくとも一実施例では、データ要素の数は「実行サイズ」であり、又は命令に対するチャネルの数である。少なくとも一実施例では、実行チャネルは、データ要素のアクセス、マスキング、及び命令内のフロー制御に関する実行の論理ユニットである。少なくとも一実施例では、チャネルの数は、特定のグラフィックス・プロセッサのための物理的な算術論理演算ユニット(ALU)又は浮動小数点ユニット(FPU)の数とは無関係であってもよい。少なくとも一実施例では、実行ユニット3407及び/又は3408は、整数及び浮動小数点のデータ・タイプをサポートしてもよい。
少なくとも一実施例では、実行ユニット命令セットは、SIMD命令を含む。少なくとも一実施例では、様々なデータ要素が、パック・データ・タイプとしてレジスタに記憶されてもよく、実行ユニットは、要素のデータ・サイズに基づき様々な要素を処理する。たとえば、少なくとも一実施例では、256ビット幅ベクトルで動作しているとき、ベクトルの256ビットがレジスタに記憶され、実行ユニットは、4個の別々の64ビット・パック・データ要素(クワッド・ワード(QW:Quad−Word)サイズのデータ要素)、8個の別々の32ビット・パック・データ要素(ダブル・ワード(DW:Double Word)サイズのデータ要素)、16個の別々の16ビット・パック・データ要素(ワード(W:Word)サイズのデータ要素)、又は32個の別々の8ビット・データ要素(バイト(B:byte)サイズのデータ要素)としてベクトル上で動作する。しかし少なくとも一実施例では、異なるベクトル幅及びレジスタサイズが考えられる。
少なくとも一実施例では、実行ユニット3407Aを実行ユニット3408Aと融合して融合実行ユニット3409Aにするなど、1つ又は複数の実行ユニットを組み合わせて、融合EUに共通のスレッド制御論理(3411A〜3411N)を有する融合実行ユニット3409A〜3409Nにすることができる。少なくとも一実施例では、複数のEUを融合して、EUグループにすることができる。少なくとも一実施例では、融合EUグループの各EUは、融合EUグループのEUの数が、様々な実施例に応じて異なっている可能性がある状態で、別々のSIMDハードウェア・スレッドを実行するように構成されることが可能である。少なくとも一実施例では、SIMD8、SIMD16、及びSIMD32を含むがこれに限定されない様々なSIMD幅を、EUごとに実行することができる。少なくとも一実施例では、各融合グラフィックス実行ユニット3409A〜3409Nは、少なくとも2つの実行ユニットを含む。たとえば、少なくとも一実施例では、融合実行ユニット3409Aは、第1のEU3407A、第2のEU3408B、及び第1のEU3407Aと第2のEU3408Aに共通のスレッド制御論理3411Aを含む。少なくとも一実施例では、スレッド制御論理3411Aは、融合グラフィックス実行ユニット3409Aで実行されているスレッドを制御して、融合実行ユニット3409A〜3409N内の各EUを、共通の命令ポインタ・レジスタを使用して実行できるようにする。
少なくとも一実施例では、1つ又は複数の内部命令キャッシュ(たとえば、3406)は、実行ユニットに対するスレッド命令をキャッシュするためにスレッド実行論理3400に含まれる。少なくとも一実施例では、1つ又は複数のデータ・キャッシュ(たとえば、3412)は、スレッド実行中にスレッド・データをキャッシュするために含まれる。少なくとも一実施例では、サンプラ3410は、3D動作のためのテクスチャ・サンプリング、及びメディア動作のためのメディア・サンプリングを実行するために含まれる。少なくとも一実施例では、サンプラ3410は、特別なテクスチャ又はメディア・サンプリング機能を含み、サンプリングされたデータを実行ユニットに提供する前に、サンプリング処理中にテクスチャ又はメディアのデータを処理する。
実行中、少なくとも一実施例では、グラフィックス及びメディア・パイプラインは、スレッド開始要求を、スレッド・スポーニング及びディスパッチ論理を介してスレッド実行論理3400に送る。少なくとも一実施例では、幾何学的物体のグループが処理され、ピクセル・データにラスタ化されたら、シェーダ・プロセッサ3402内のピクセル・プロセッサ論理(たとえば、ピクセル・シェーダ論理、フラグメント・シェーダ論理など)が呼び出されて、出力情報をさらにコンピュートし、結果を出力面(たとえば、色バッファ、深度バッファ、ステンシル・バッファなど)に書き込ませる。少なくとも一実施例では、ピクセル・シェーダ又はフラグメント・シェーダは、ラスタ化された物体間で補間されることになる様々な頂点属性の値を計算する。少なくとも一実施例では、次いで、シェーダ・プロセッサ3402内のピクセル・プロセッサ論理が、アプリケーション・プログラミング・インターフェース(API)付きのピクセル・シェーダ・プログラム又はフラグメント・シェーダ・プログラムを実行する。少なくとも一実施例では、シェーダ・プログラムを実行するために、シェーダ・プロセッサ3402は、スレッド・ディスパッチャ3404を介してスレッドを実行ユニット(たとえば、3408A)にディスパッチする。少なくとも一実施例では、シェーダ・プロセッサ3402は、サンプラ3410のテクスチャ・サンプリング論理を使用して、メモリに記憶されたテクスチャ・マップのテクスチャ・データにアクセスする。少なくとも一実施例では、テクスチャ・データ及び入力ジオメトリ・データに対する算術演算によって、各ジオメトリ・フラグメントのピクセル色データがコンピュートされ、又はさらに処理されないように1つ又は複数のピクセルが切り捨てられる。
少なくとも一実施例では、データ・ポート3414は、スレッド実行論理3400のためのメモリ・アクセス機構を提供して、処理済みデータを、グラフィックス・プロセッサ出力パイプラインでさらに処理できるようにメモリに出力する。少なくとも一実施例では、データ・ポート3414は、1つ又は複数のキャッシュ・メモリ(たとえば、データ・キャッシュ3412)を含み、又はそれに結合されて、データ・ポートを介したメモリ・アクセスのためのデータをキャッシュする。
図34Bに示してあるように、少なくとも一実施例では、グラフィック実行ユニット3408は、命令フェッチ・ユニット3437、汎用レジスタ・ファイル・アレイ(GRF:general register file array)3424、アーキテクチャ・レジスタ・ファイル・アレイ(ARF)3426、スレッド調停装置(arbiter)3422、送信ユニット3430、ブランチ・ユニット3432、SIMD浮動小数点ユニット(FPU)3434のセット、及び専用整数SIMD ALU3435のセットを含むことができる。少なくとも一実施例では、GRF3424及びARF3426は、各同時ハードウェア・スレッドに関連付けられた汎用レジスタ・ファイルとアーキテクチャ・レジスタ・ファイルのセットを含み、このハードウェア・スレッドは、グラフィックス実行ユニット3408においてアクティブであってもよい。少なくとも一実施例では、スレッドごとのアーキテクチャ状態が、ARF3426において維持され、スレッド実行中に使用されるデータが、GRF3424に記憶される。少なくとも一実施例では、各スレッドに対する命令ポインタを含む各スレッドの実行状態は、ARF3426のスレッド専用レジスタに保持することが可能である。
少なくとも一実施例では、グラフィックス実行ユニット3408は、同時マルチスレッディング(SMT:Simultaneous Multi−Threading)と微細化インターリーブ・マルチスレッディング(IMT:Interleaved Multi−Threading)の組合せであるアーキテクチャを有する。少なくとも一実施例では、アーキテクチャは、実行ユニット当たりの同時スレッドのターゲット数及びレジスタ数に基づき設計時に微調整することができるモジュール式構成を有し、ここで実行ユニットのリソースは、複数の同時スレッドを実行するために使用される論理にわたって分割される。
少なくとも一実施例では、グラフィックス実行ユニット3408は複数の命令を共同発行することができ、この命令は、それぞれ異なる命令であってもよい。少なくとも一実施例では、グラフィックス実行ユニット・スレッド3408のスレッド調停装置3422は、送信ユニット3430、ブランチ・ユニット3432、又はSIMD FPU3434のうちの1つに命令をディスパッチして実行できるようにすることができる。少なくとも一実施例では、各実行スレッドは、GRF3424内の128個の汎用レジスタにアクセスすることができ、ここで各レジスタは、32ビットのデータ要素のSIMD8要素のベクトルとしてアクセス可能な32バイトを記憶することができる。少なくとも一実施例では、各実行ユニット・スレッドは、GRF3424内の4キロバイトにアクセスすることができるが、実施例はこのように限定されず、他の実施例ではより多くの、又はより少ないリソースが提供されてもよい。少なくとも一実施例では、最大7個のスレッドを同時に実行できるが、実行ユニット当たりのスレッド数も、実施例に応じて変えることができる。7個のスレッドが4キロバイトにアクセスできる少なくとも一実施例では、GRF3424は、合計28キロバイトを記憶することができる。少なくとも一実施例では、フレキシブルなアドレッシング・モードにより、複数のレジスタがともにアドレスされてより幅広いレジスタを構築したり、ストライド設定された矩形ブロック・データ構造を表したりできるようにすることができる。
少なくとも一実施例では、メモリ動作、サンプラ動作、及び他のレイテンシの長いシステム通信は、メッセージ引渡し送信ユニット3430によって実行される「送信」命令を介してディスパッチされる。少なくとも一実施例では、ブランチ命令は、SIMDの発散及び最終的な収束を容易にするために、ブランチ・ユニット3432にディスパッチされる。
少なくとも一実施例では、グラフィックス実行ユニット3408は、浮動小数点演算を実行するための1つ又は複数のSIMD浮動小数点ユニット(FPU)3434を含む。少なくとも一実施例では、FPU3434は、整数計算もサポートする。少なくとも一実施例ではFPU3434は、最大M個の32ビット浮動小数点(若しくは整数)演算をSIMDで実行し、又は最大で2M個の16ビット整数演算、若しくは16ビット浮動小数点演算をSIMDで実行することができる。少なくとも一実施例では、少なくとも1つのFPUは、拡張数理機能を提供して、高スループットの超越数理関数、及び倍精度の64ビット浮動小数点をサポートする。少なくとも一実施例では、8ビットの整数SIMD ALU3435のセットも存在し、機械学習計算に関連する動作を実行するように特に最適化されてもよい。
少なくとも一実施例では、グラフィックス実行ユニット3408の複数のインスタンスのアレイが、グラフィックス・サブ・コア・グループ(たとえば、サブ・スライス)においてインスタンス化されてもよい。少なくとも一実施例では、実行ユニット3408は、複数の実行チャネルにわたって命令を実行することができる。少なくとも一実施例では、グラフィックス実行ユニット3408で実行される各スレッドは、異なるチャネルで実行される。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1015の一部又はすべてが、スレッド実行論理3400に組み込まれてもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図10A又は図10Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行論理3400のALUスレッドを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図35は、少なくとも一実施例による並列処理ユニット(「PPU」)3500を示す。少なくとも一実施例では、PPU3500は、PPU3500によって実行された場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、PPU3500に実行させる機械可読コードで構成される。少なくとも一実施例では、PPU3500はマルチスレッド・プロセッサであり、このプロセッサは、1つ又は複数の集積回路デバイスに実装され、コンピュータ可読命令(機械可読命令若しくは単に命令とも呼ばれる)を、複数のスレッドで並列に処理するように設計されたレイテンシ隠蔽技法としてマルチスレッディングを利用する。少なくとも一実施例では、スレッドとは、実行スレッドを指し、PPU3500によって実行されるように構成された命令のセットをインスタンス化したものである。少なくとも一実施例では、PPU3500は、液晶ディスプレイ(「LCD」)デバイスなどのディスプレイ・デバイスに表示できるように2次元(「2D」)画像データを生成するために、3次元(「3D」)グラフィックス・データを処理するためのグラフィックス・レンダリング・パイプラインを実装するように構成されたグラフィックス・プロセッシング・ユニット(「GPU」)である。少なくとも一実施例では、PPU3500を利用して、線形代数演算及び機械学習演算などの計算が実行される。図35は、単に例示を目的とした例示的な並列プロセッサを示しており、本開示の範囲内で企図されるプロセッサ・アーキテクチャの非限定的な例として解釈されるべきであり、同プロセッサに追加するため、且つ/又はそれを置き換えるために、任意の好適なプロセッサが利用されてもよいことが解釈されるべきである。
少なくとも一実施例では、1つ又は複数のPPU3500は、高性能コンピューティング(「HPC」:High Performance Computing)、データ・センタ、及び機械学習のアプリケーションを加速するように構成される。少なくとも一実施例では、PPU3500は、以下の非限定的な例を含む深層学習システム及びアプリケーションを加速するように構成される:自律車両プラットフォーム、深層学習、高精度音声、画像、テキスト認識システム、インテリジェント・ビデオ分析、分子シミュレーション、創薬、病気診断、天気予報、ビッグ・データ分析、天文学、分子動態シミュレーション、金融モデリング、ロボット工学、工場自動化、リアル・タイム言語翻訳、オンライン検索最適化、及び個別化ユーザ推奨など。
少なくとも一実施例では、PPU3500は、限定することなく、入力/出力(「I/O」)ユニット3506、フロント・エンド・ユニット3510、スケジューラ・ユニット3512、ワーク分配ユニット3514、ハブ3516、クロスバー(「Xbar」:crossbar)3520、1つ又は複数の汎用処理クラスタ(「GPC」:general processing cluster)3518、及び1つ又は複数のパーティション・ユニット(「メモリ・パーティション・ユニット」)3522を含む。少なくとも一実施例では、PPU3500は、1つ又は複数の高速GPU相互接続(「GPU相互接続」)3508を介してホスト・プロセッサ又は他のPPU3500に接続される。少なくとも一実施例では、PPU3500は、システム・バス3502を介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、PPU3500は、1つ又は複数のメモリ・デバイス(「メモリ」)3504を備えるローカル・メモリに接続される。少なくとも一実施例では、メモリ・デバイス3504は、限定することなく、1つ又は複数のダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイスを含む。少なくとも一実施例では、1つ又は複数のDRAMデバイスは、複数のDRAMダイが各デバイス内で積層された高帯域幅メモリ(「HBM」)サブシステムとして構成されても、且つ/又は構成可能であってもよい。
少なくとも一実施例では、高速GPU相互接続3508は、有線ベースのマルチ・レーン通信リンクを指してもよく、このリンクは、拡張縮小するためにシステムによって使用され、1つ又は複数の中央処理装置(「CPU」)と組み合わされた1つ又は複数のPPU3500を含み、PPU3500とCPUとの間のキャッシュ・コヒーレンス、及びCPUマスタリングをサポートする。少なくとも一実施例では、データ及び/又はコマンドは、高速GPU相互接続3508により、ハブ3516を介して、1つ又は複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニット、及び図35に明示されていないこともある他の構成要素などのPPU3500の別のユニットに/から送信される。
少なくとも一実施例では、I/Oユニット3506は、システム・バス3502を介してホスト・プロセッサ(図35には示さず)から通信(たとえば、コマンド、データ)を送受信するように構成される。少なくとも一実施例では、I/Oユニット3506は、システム・バス3502を介して直接、又は1つ若しくは複数の、メモリ・ブリッジなどの中間デバイスを介して、ホスト・プロセッサと通信する。少なくとも一実施例では、I/Oユニット3506は、システム・バス3502を介してPPU3500のうちの1つ又は複数などの1つ又は複数の他のプロセッサと通信してもよい。少なくとも一実施例では、I/Oユニット3506は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCIe」)インターフェースを実装して、PCIeバスを介して通信できるようにする。少なくとも一実施例では、I/Oユニット3506は、外部デバイスと通信するためのインターフェースを実装する。
少なくとも一実施例では、I/Oユニット3506は、システム・バス3502を介して受信したパケットをデコードする。少なくとも一実施例では、少なくともいくつかのパケットは、PPU3500に様々な動作を実行させるように構成されたコマンドを表す。少なくとも一実施例では、I/Oユニット3506は、デコードされたコマンドを、コマンドによって指定されるPPU3500の様々な他のユニットに送信する。少なくとも一実施例では、コマンドは、フロント・エンド・ユニット3510に送信され、且つ/又はハブ3516、若しくは(図35には明示していない)1つ若しくは複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニットなどのPPU3500の他のユニットに送信される。少なくとも一実施例では、I/Oユニット3506はPPU3500の様々な論理ユニット間で、通信をルーティングするように構成される。
少なくとも一実施例では、ホスト・プロセッサによって実行されるプログラムは、ワークロードをPPU3500に提供して処理できるようにするバッファにおいて、コマンド・ストリームをエンコードする。少なくとも一実施例では、ワークロードは、命令と、これらの命令によって処理されることになるデータとを含む。少なくとも一実施例では、バッファは、ホスト・プロセッサとPPU3500の両方がアクセス(たとえば、書込み/読取り)可能なメモリ内の領域であり、ホスト・インターフェース・ユニットは、I/Oユニット3506によってシステム・バス3502を介して送信されるメモリ要求を介して、システム・バス3502に接続されたシステム・メモリ内のバッファにアクセスするように構成されてもよい。少なくとも一実施例では、ホスト・プロセッサは、バッファにコマンド・ストリームを書き込み、次いでコマンド・ストリームの開始点を指すポインタをPPU3500に送信し、それによりフロント・エンド・ユニット3510は、1つ又は複数のコマンド・ストリームを指すポインタを受信し、1つ又は複数のコマンド・ストリームを管理して、コマンド・ストリームからコマンドを読み取り、コマンドをPPU3500の様々なユニットに転送する。
少なくとも一実施例では、フロント・エンド・ユニット3510は、1つ又は複数のコマンド・ストリームによって定義されるタスクを処理するように様々なGPC3518を構成するスケジューラ・ユニット3512に結合される。少なくとも一実施例では、スケジューラ・ユニット3512は、スケジューラ・ユニット3512によって管理される様々タスクに関連する状態情報を追跡するように構成され、ここで状態情報は、どのGPC3518にタスクが割り当てられるか、タスクがアクティブか非アクティブか、タスクに関連付けられた優先レベルなどを示してもよい。少なくとも一実施例では、スケジューラ・ユニット3512は、GPC3518のうちの1つ又は複数において、複数のタスクの実行を管理する。
少なくとも一実施例では、スケジューラ・ユニット3512は、GPC3518で実行するためのタスクをディスパッチするように構成されたワーク分配ユニット3514に結合される。少なくとも一実施例では、ワーク分配ユニット3514は、スケジューラ・ユニット3512から受信したスケジュール済みタスクの数を追跡し、ワーク分配ユニット3514は、GPC3518のそれぞれについて、ペンディング・タスク・プール、及びアクティブ・タスク・プールを管理する。少なくとも一実施例では、ペンディング・タスク・プールは、特定のGPC3518によって処理されるように割り当てられたタスクを含むいくつかのスロット(たとえば、32スロット)を備え、アクティブ・タスク・プールは、GPC3518によりアクティブに処理されているタスクのためのいくつかのスロット(たとえば、4スロット)を備え、それにより、GPC3518のうちの1つがタスクの実行を完了すると、GPC3518のアクティブ・タスク・プールからそのタスクが排除され、ペンディング・タスク・プールからの他のタスクが選択され、GPC3518で実行されるようにスケジューリングされる。少なくとも一実施例では、データ依存性が解決されるのを待機している間など、アクティブ・タスクがGPC3518上でアイドルである場合には、アクティブ・タスクがGPC3518から排除され、ペンディング・タスク・プールに戻され、その間に、ペンディング・タスク・プールの別のタスクが選択され、GPC3518で実行されるようにスケジューリングされる。
少なくとも一実施例では、ワーク分配ユニット3514は、Xバー3520を介して1つ又は複数のGPC3518と通信する。少なくとも一実施例では、Xバー3520は、PPU3500のユニットのうちの多くを、PPU3500の別のユニットに結合する相互接続ネットワークであり、ワーク分配ユニット3514を特定のGPC3518に結合するように構成されることが可能である。少なくとも一実施例では、PPU3500の1つ又は複数の他のユニットも、ハブ3516を介してXバー3520に接続されてもよい。
少なくとも一実施例では、タスクはスケジューラ・ユニット3512によって管理され、ワーク分配ユニット3514によってGPC3518のうちの1つにディスパッチされる。少なくとも一実施例では、GPC3518は、タスクを処理し、結果を生成するように構成される。少なくとも一実施例では、結果は、GPC3518内の他のタスクによって消費されてもよく、Xバー3520を介して異なるGPC3518にルーティングされてもよく、又はメモリ3504に記憶されてもよい。少なくとも一実施例では、結果を、パーティション・ユニット3522を介してメモリ3504に書き込むことができ、パーティション・ユニット3522は、メモリ3504への/からのデータの読取り及び書込みを行うためのメモリ・インターフェースを実装する。少なくとも一実施例では、結果を、高速GPU相互接続3508を介して別のPPU3504又はCPUに送信することができる。少なくとも一実施例では、図37と併せて本明細書でさらに詳細に説明されるように、PPU3500は、PPU3500に結合された別々の個別メモリ・デバイス3504の数に等しいU個のパーティション・ユニット3522を、限定することなく含む。
少なくとも一実施例では、ホスト・プロセッサはドライバ・カーネルを実行し、このカーネルは、ホスト・プロセッサで実行されている1つ又は複数のアプリケーションがPPU3500で実行するための動作をスケジューリングできるようにするアプリケーション・プログラミング・インターフェース(API)を実装している。少なくとも一実施例では、複数のコンピュート・アプリケーションが、PPU3500によって同時に実行され、PPU3500は、複数のコンピュート・アプリケーションに対して、隔離、サービス品質(「QoS」:quality of service)、及び独立したアドレス空間を提供する。少なくとも一実施例では、アプリケーションは、PPU3500によって実行するための1つ又は複数のタスクをドライバ・カーネルに生成させる(たとえば、APIコールの形の)命令を生成し、ドライバ・カーネルは、PPU3500によって処理されている1つ又は複数のストリームにタスクを出力する。少なくとも一実施例では、各タスクは、ワープと呼ばれてもよい関連スレッドの1つ又は複数のグループを備える。少なくとも一実施例では、ワープは、並列に実行することができる複数の関連スレッド(たとえば、32個のスレッド)を備える。少なくとも一実施例では、連動スレッドとは、タスクを実行するための命令を含み、共有メモリを介してデータを交換する複数のスレッドを指してもよい。少なくとも一実施例では、スレッド及び連動スレッドは、図37と併せてさらに詳細に説明される。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、PPU3500に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3500は、別のプロセッサ若しくはシステムによって、又はPPU3500によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、PPU3500は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図36は、少なくとも一実施例による汎用処理クラスタ(「GPC」)3600を示す。少なくとも一実施例では、GPC3600は、図35のGPC3518である。少なくとも一実施例では、各GPC3600は、限定することなく、タスクを処理するためのいくつかのハードウェア・ユニットを含み、各GPC3600は、限定することなく、パイプライン・マネージャ3602、プレ・ラスタ演算ユニット(「preROP」:pre−raster operations unit)3604、ラスタ・エンジン3608、ワーク分配クロスバー(「WDX」:work distribution crossbar)3616、メモリ管理ユニット(「MMU」)3618、1つ又は複数のデータ処理クラスタ(「DPC」:Data Processing Clusters)3606、及びパーツの任意の好適な組合せを含む。
少なくとも一実施例では、GPC3600の動作は、パイプライン・マネージャ3602によって制御される。少なくとも一実施例では、パイプライン・マネージャ3602は、GPC3600に配分されたタスクを処理するために1つ又は複数のDPC3606の構成を管理する。少なくとも一実施例では、パイプライン・マネージャ3602は、グラフィックス・レンダリング・パイプラインの少なくとも一部分を実装するように、1つ又は複数のDPC3606のうちの少なくとも1つを構成する。少なくとも一実施例では、DPC3606は、プログラム可能なストリーミング・マルチプロセッサ(「SM」:streaming multi−processor)3614で頂点シェーダ・プログラムを実行するように構成される。少なくとも一実施例では、パイプライン・マネージャ3602は、少なくとも一実施例では、ワーク分配ユニットから受信したパケットを、GPC3600内の適切な論理ユニットにルーティングするように構成され、いくつかのパケットは、preROP3604の固定機能ハードウェア・ユニット及び/又はラスタ・エンジン3608にルーティングされてもよく、他のパケットは、プリミティブ・エンジン3612又はSM3614によって処理されるようにDPC3606にルーティングされてもよい。少なくとも一実施例では、パイプライン・マネージャ3602は、ニューラル・ネットワーク・モデル及び/又はコンピューティング・パイプラインを実装するように、DPC3606のうちの少なくとも1つを構成する。
少なくとも一実施例では、preROPユニット3604は、少なくとも一実施例では、ラスタ・エンジン3608及びDPC3606によって生成されたデータを、図35と併せて上でより詳細に説明したパーティション・ユニット3522のラスタ動作(ROP)ユニットにルーティングするように構成される。少なくとも一実施例では、preROPユニット3604は、色ブレンディングの最適化を実行し、ピクセル・データを組織化し、アドレス・トランスレーションを実行し、その他の動作を行うように構成される。少なくとも一実施例では、ラスタ・エンジン3608は、少なくとも一実施例では様々なラスタ動作を実行するように構成されたいくつかの固定機能ハードウェア・ユニットを、限定することなく含み、ラスタ・エンジン3608は、限定することなく、セットアップ・エンジン、粗いラスタ・エンジン、選別エンジン、クリッピング・エンジン、細かいラスタ・エンジン、タイル合体エンジン、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、セットアップ・エンジンは、変換された頂点を受信し、頂点によって定義された幾何プリミティブに関連付けられた平面方程式を生成し、平面方程式が、粗いラスタ・エンジンに送信されて、プリミティブに対するカバレッジ情報(たとえば、タイルのx、yカバレッジ・マスク)が生成され、粗いラスタ・エンジンの出力が、選別エンジンに送信され、ここでzテストに落ちたプリミティブに関連付けられたフラグメントが選別され、クリッピング・エンジンに送信され、ここで視錐台の外側にあるフラグメントがクリップされる。少なくとも一実施例では、クリッピング及び選別を通過したフラグメントは、細かいラスタ・エンジンに渡されて、セットアップ・エンジンによって生成された平面方程式に基づき、ピクセル・フラグメントに対する属性が生成される。少なくとも一実施例では、ラスタ・エンジン3608の出力は、DPC3606内に実装されたフラグメント・シェーダによってなど任意の好適なエンティティによって処理されることになるフラグメントを含む。
少なくとも一実施例では、GPC3600に含まれる各DPC3606は、限定することなく、Mパイプ・コントローラ(「MPC」:M−Pipe Controller)3610、プリミティブ・エンジン3612、1つ又は複数のSM3614、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、MPC3610は、DPC3606の動作を制御して、パイプライン・マネージャ3602から受信したパケットを、DPC3606内の適切なユニットにルーティングする。少なくとも一実施例では、頂点に関連付けられたパケットは、頂点に関連付けられた頂点属性をメモリからフェッチするように構成されたプリミティブ・エンジン3612にルーティングされ、対照的に、シェーダ・プログラムに関連付けられたパケットは、SM3614に送信されてもよい。
少なくとも一実施例では、SM3614は、いくつかのスレッドにより表されたタスクを処理するように構成されたプログラム可能なストリーミング・プロセッサを、限定することなく含む。少なくとも一実施例では、SM3614はマルチスレッド化されており、スレッドの特定のグループからの複数のスレッド(たとえば、32個のスレッド)を同時に実行するように構成され、単一命令複数データ(SIMD)アーキテクチャを実装し、ここでスレッドのグループ(ワープ)内の各スレッドは、同じ命令セットに基づき、異なるデータ・セットを処理するように構成される。少なくとも一実施例では、スレッド・グループ内のすべてのスレッドが命令の共通のセットを実行する。少なくとも一実施例では、SM3614は、単一命令複数スレッド(SIMT)アーキテクチャを実装し、ここで、スレッド・グループの各スレッドは、命令の共通セットに基づき、異なるデータ・セットを処理するように構成されるが、スレッド・グループ内の個々のスレッドは、実行中に発散することが許容される。少なくとも一実施例では、プログラム・カウンタ、コール・スタック、及び実行状態がワープごとに維持されて、ワープ内のスレッドが発散するときに、ワープ間の同時処理、及びワープ内での直列実行が可能になる。別の実施例では、プログラム・カウンタ、コール・スタック、及び実行状態が個々のスレッドごとに維持されて、すべてのスレッド間、ワープ内、及びワープ間で等しい同時処理が可能になる。少なくとも一実施例では、実行状態が個々のスレッドごとに維持され、共通の命令を実行しているスレッドが、より効率的になるように収束され並列に実行されてもよい。SM3614の少なくとも一実施例は、本明細書でさらに詳細に説明される。
少なくとも一実施例では、MMU3618は、GPC3600とメモリ・パーティション・ユニット(たとえば、図35のパーティション・ユニット3522)との間でインターフェースを提供し、MMU3618は、仮想アドレスから物理アドレスへのトランスレーション、メモリ保護、及びメモリ要求の調停を提供する。少なくとも一実施例では、MMU3618は、仮想アドレスからメモリの物理アドレスへのトランスレーションを実行するための1つ又は複数のトランスレーション・ルックアサイド・バッファ(「TLB」)を提供する。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、GPC3600に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、GPC3600は、別のプロセッサ若しくはシステムによって、又はGPC3600によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、GPC3600は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図37は、少なくとも一実施例による並列処理ユニット(「PPU」)のメモリ・パーティション・ユニット3700を示す。少なくとも一実施例では、パーティション・ユニット3700は、限定することなく、ラスタ演算(「ROP」)ユニット3702、レベル2(「L2」)キャッシュ3704、メモリ・インターフェース3706、及びそれらの任意の好適な組合せを含む。少なくとも一実施例では、メモリ・インターフェース3706はメモリに結合される。少なくとも一実施例では、メモリ・インターフェース3706は、高速データ転送のために、32、64、128、1024ビットのデータ・バスなどを実装してもよい。少なくとも一実施例では、PPUは、Uが正の整数である、U個のメモリ・インターフェース3706をパーティション・ユニット3700の対当たりに1つのメモリ・インターフェース3706に組み込んでおり、ここでパーティション・ユニット3700の各対は、対応するメモリ・デバイスに接続される。たとえば、少なくとも一実施例では、PPUは、高帯域幅メモリ・スタック、又はグラフィックス・ダブル・データ・レート、バージョン5、同期ダイナミック・ランダム・アクセス・メモリ(「GDDR5 SDRAM」)など、最大Y個のメモリ・デバイスに接続されてもよい。
少なくとも一実施例では、メモリ・インターフェース3706は、高帯域幅メモリの第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は、マルチ・レベルのメモリ階層を実装する。少なくとも一実施例では、メモリ・パーティション・ユニット3700は、統合されたメモリをサポートして、中央処理装置(「CPU」)及びPPUメモリに単一の統合された仮想アドレス空間を提供し、仮想メモリ・システム間でのデータの共有を可能にする。少なくとも一実施例では、他のプロセッサに位置付けられたメモリにPPUがアクセスする頻度を追跡して、より頻繁にページにアクセスしているPPUの物理メモリに、メモリ・ページが確実に移動されるようにする。少なくとも一実施例では、高速GPU相互接続3508は、アドレス・トランスレーション・サービスをサポートして、PPUが直接CPUのページ・テーブルにアクセスできるようにし、PPUによるCPUメモリへのフル・アクセスを実現する。
少なくとも一実施例では、コピー・エンジンは、複数のPPU間、又はPPUとCPUの間で、データを転送する。少なくとも一実施例では、コピー・エンジンは、ページ・テーブルにマッピングされていないアドレスについてページ誤りを生成することができ、次いでメモリ・パーティション・ユニット3700がページ誤りに対応して、アドレスをページ・テーブルにマッピングし、その後で、コピー・エンジンが転送を実行する。少なくとも一実施例では、メモリは、複数のプロセッサ間でコピー・エンジンの複数の動作についてピン留めされて(たとえば、ページ移動不可能にされて)、実質的に利用可能なメモリを低減させる。少なくとも一実施例では、ハードウェアのページ誤りがある場合、メモリ・ページが常駐であるかどうかに関わらず、アドレスをコピー・エンジンに渡すことができ、コピー・プロセスは透過的である。
少なくとも一実施例によれば、図35のメモリ3504又は他のシステム・メモリからのデータは、メモリ・パーティション・ユニット3700によってフェッチされ、L2キャッシュ3704に記憶され、このL2キャッシュは、オン・チップに位置付けられ、様々GPC間で共有される。少なくとも一実施例では、各メモリ・パーティション・ユニット3700は、対応するメモリ・デバイスに関連付けられたL2キャッシュの少なくとも一部分を、限定することなく含む。少なくとも一実施例では、より低いレベルのキャッシュが、GPC内の様々なユニットに実装される。少なくとも一実施例では、図36のSM3614のそれぞれは、レベル1(「L1」)キャッシュを実装してもよく、ここでL1キャッシュは、特定のSM3614専用のプライベート・メモリであり、L2キャッシュ3704からのデータは、SM3614の機能ユニットで処理するために、L1キャッシュのそれぞれにフェッチされ記憶される。少なくとも一実施例では、L2キャッシュ3704は、メモリ・インターフェース3706及び図35に示されるXバー3520に結合される。
少なくとも一実施例では、ROPユニット3702は、色圧縮、ピクセル・ブレンディングなど、ピクセル色に関係するグラフィックス・ラスタ演算を実行する。ROPユニット3702は、少なくとも一実施例では、ラスタ・エンジン3608と併せて深度テストを実装して、ピクセル・フラグメントに関連付けられたサンプル・ロケーションの深度を、ラスタ・エンジン3608の選別エンジンから受信する。少なくとも一実施例では、深度は、フラグメントに関連付けられたサンプル・ロケーションの深度バッファにおける対応する深度と比べてテストされる。少なくとも一実施例では、フラグメントが、サンプル・ロケーションの深度テストを通過すると、ROPユニット3702は、深度バッファを更新し、深度テストの結果をラスタ・エンジン3608に送信する。パーティション・ユニット3700の数はGPCの数とは異なってもよく、したがって、各ROPユニット3702は、少なくとも一実施例では、GPCのそれぞれに結合されてもよいことが理解されよう。少なくとも一実施例では、ROPユニット3702は、異なるGPCから受信したパケットを追跡し、ROPユニット3702によって生成された結果が、Xバー3520を通してルーティングされることになるかを判定する。
図38は、少なくとも一実施例による、ストリーミング・マルチプロセッサ(「SM」)3800を示す。少なくとも一実施例では、SM3800は、図36のSMである。少なくとも一実施例では、SM3800は、限定することなく、命令キャッシュ3802、1つ又は複数のスケジューラ・ユニット3804、レジスタ・ファイル3808、1つ又は複数の処理コア(「コア」)3810、1つ又は複数の特殊機能ユニット(「SFU」:special function unit)3812、1つ又は複数のロード/ストア・ユニット(「LSU」load/store unit)3814、相互接続ネットワーク3816、共有メモリ/レベル1(「L1」)キャッシュ3818、及び/又はこれらの任意の好適な組合せを含む。
少なくとも一実施例では、ワーク分配ユニットは、並列処理ユニット(「PPU」)の汎用処理クラスタ(「GPC」)で実行するためにタスクをディスパッチし、各タスクは、GPC内の特定のデータ処理クラスタ(「DPC」)に配分され、タスクがシェーダ・プログラムに関連する場合には、タスクはSM3800のうちの1つに配分される。少なくとも一実施例では、スケジューラ・ユニット3804は、ワーク分配ユニットからタスクを受信し、SM3800に割り当てられた1つ又は複数のスレッド・ブロックについて命令スケジューリングを管理する。少なくとも一実施例では、スケジューラ・ユニット3804は、並列スレッドのワープとして実行できるようにスレッド・ブロックをスケジューリングし、ここで各スレッド・ブロックは、少なくとも1つのワープに配分される。少なくとも一実施例では、各ワープは、スレッドを実行する。少なくとも一実施例では、スケジューラ・ユニット3804は、複数の異なるスレッド・ブロックを管理して、異なるスレッド・ブロックにワープを配分し、次いで複数の異なる連動グループからの命令を、各クロック・サイクル中に様々な機能ユニット(たとえば、処理コア3810、SFU3812、及びLSU3814)にディスパッチする。
少なくとも一実施例では、連動グループとは、通信するスレッドのグループを組織化するためのプログラミング・モデルを指し、このモデルは、スレッドが通信する粒度をデベロッパが表せるようにして、より豊富でより効率的な並列分解の表現を可能にする。少なくとも一実施例では、連動した起動APIは、並列アルゴリズムを実行できるようにスレッド・ブロック間の同期をサポートする。少なくとも一実施例では、従来のプログラミング・モデルのアプリケーションは、連動スレッドを同期するための単一の簡単な構造、すなわちスレッド・ブロックのすべてのスレッドにわたるバリア(たとえば、syncthreads()関数)を提供する。しかし、少なくとも一実施例では、プログラマは、スレッド・ブロックの粒度よりも小さいスレッド・グループを定義し、定義されたグループ内で同期して、集合的なグループ全般にわたる機能インターフェースの形で、より高い性能、設計の融通性、及びソフトウェア再利用を可能にしてもよい。少なくとも一実施例では、連動グループによって、プログラマは、サブ・ブロック(すなわち、単一スレッドと同じ大きさ)の粒度及びマルチ・ブロックの粒度において、スレッドのグループを明示的に定義し、連動グループ内のスレッドに対する同期などの集合的な動作を実行できるようになる。少なくとも一実施例では、プログラミング・モデルは、ソフトウェア境界を横切るクリーンな合成をサポートし、それにより、ライブラリ及びユーティリティ関数を、収束について仮定する必要なくそれらのローカルなコンテキスト内で安全に同期することができる。少なくとも一実施例では、連動グループのプリミティブは、プロデューサ−コンシューマ並列性、日和見並列性(opportunistic parallelism)、及びスレッド・ブロックのグリッド全体にわたるグローバルな同期を限定することなく含む新しいパターンの連動並列性を可能にする。
少なくとも一実施例では、ディスパッチ・ユニット3806は、1つ又は複数の機能ユニットに命令を送信するように構成され、スケジューラ・ユニット3804は、共通のワープからの2つの異なる命令を、各クロック・サイクル中にディスパッチできるようにする2つのディスパッチ・ユニット3806を限定することなく含む。少なくとも一実施例では、各スケジューラ・ユニット3804は、単一のディスパッチ・ユニット3806又は追加のディスパッチ・ユニット3806を含む。
少なくとも一実施例では、各SM3800は、少なくとも一実施例では、SM3800の機能ユニットにレジスタのセットを提供するレジスタ・ファイル3808を限定することなく含む。少なくとも一実施例では、レジスタ・ファイル3808は、各機能ユニットがレジスタ・ファイル3808の専用部分に配分されるように、各機能ユニット間で分割される。少なくとも一実施例では、レジスタ・ファイル3808は、SM3800によって実行されている異なるワープ間で分割され、レジスタ・ファイル3808は、機能ユニットのデータ経路に接続されたオペランド用の一時的なストレージを提供する。少なくとも一実施例では、各SM3800は、限定することなく複数のL処理コア3810を含み、ここでLは正の整数である。少なくとも一実施例では、各SM3800は、限定することなく、多数の(たとえば、128個以上の)個別の処理コア3810を含む。少なくとも一実施例では、各処理コア3810は、浮動小数点算術論理演算ユニット及び整数算術論理演算ユニットを限定することなく含む完全にパイプライン化された、単精度の、倍精度の、及び/又は混合精度の処理ユニットを限定することなく含む。少なくとも一実施例では、浮動小数点算術論理演算ユニットは、浮動小数点演算のためのIEEE754−2008規格を実装する。少なくとも一実施例では、処理コア3810は、限定することなく、64個の単精度(32ビット)浮動小数点コア、64個の整数コア、32個の倍精度(64ビット)浮動小数点コア、及び8個のテンソル・コアを含む。
テンソル・コアは、少なくとも一実施例による行列演算を実行するように構成される。少なくとも一実施例では、1つ又は複数のテンソル・コアは、処理コア3810に含まれる。少なくとも一実施例では、テンソル・コアは、ニューラル・ネットワークの訓練及び推論のための畳み込み演算など、深層学習の行列演算を実行するように構成される。少なくとも一実施例では、各テンソル・コアは、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のサイズの行列を仮定している。
少なくとも一実施例では、各SM3800は、特殊関数(たとえば、属性評価、逆数平方根など)を実行するM個のSFU3812を、限定することなく含む。少なくとも一実施例では、SFU3812は、限定することなく、階層ツリー・データ構造をトラバースするように構成されたツリー・トラバーサル・ユニットを含む。少なくとも一実施例では、SFU3812は、テクスチャ・マップのフィルタリング動作を実行するように構成されたテクスチャ・ユニットを、限定することなく含む。少なくとも一実施例では、テクスチャ・ユニットは、メモリ及びサンプル・テクスチャ・マップからテクスチャ・マップ(たとえば、テクセルの2Dアレイ)をロードして、SM3800により実行されるシェーダ・プログラムで使用するためのサンプリングされたテクスチャ値を生成するように構成される。少なくとも一実施例では、テクスチャ・マップは、共有メモリ/レベル1キャッシュ3818に記憶される。少なくとも一実施例では、テクスチャ・ユニットは、少なくとも一実施例によれば、ミップ・マップ(たとえば、詳細さのレベルが異なるテクスチャ・マップ)を使用したフィルタリング動作などのテクスチャ動作を実装する。少なくとも一実施例では、各SM3800は、限定することなく、2つのテクスチャ・ユニットを含む。
各SM3800は、少なくとも一実施例では、共有メモリ/L1キャッシュ3818とレジスタ・ファイル3808の間でロード及びストア動作を実装するN個のLSU3814を、限定することなく含む。少なくとも一実施例では、相互接続ネットワーク3816は、各機能ユニットをレジスタ・ファイル3808に接続し、LSU3814をレジスタ・ファイル3808及び共有メモリ/L1キャッシュ3818に接続する。少なくとも一実施例では、相互接続ネットワーク3816はクロスバーであり、このクロスバーは、任意の機能ユニットをレジスタ・ファイル3808の任意のレジスタに接続し、LSU3814をレジスタ・ファイル3808と共有メモリ/L1キャッシュ3818のメモリ・ロケーションとに接続するように構成されてもよい。
少なくとも一実施例では、共有メモリ/L1キャッシュ3818は、少なくとも一実施例では、SM3800とプリミティブ・エンジンの間、及びSM3800のスレッド間でデータ・ストレージ及び通信を可能にするオン・チップ・メモリのアレイである。少なくとも一実施例では、共有メモリ/L1キャッシュ3818は、限定することなく、128KBのストレージ容量を備え、SM3800からパーティション・ユニットに向かう経路にある。少なくとも一実施例では、共有メモリ/L1キャッシュ3818は、少なくとも一実施例では、読取り及び書込みをキャッシュするために使用される。少なくとも一実施例では、共有メモリ/L1キャッシュ3818、L2キャッシュ、及びメモリのうちの1つ又は複数は、補助ストレージである。
少なくとも一実施例では、データ・キャッシュと共有メモリ機能とを単一のメモリ・ブロックに組み合わせることによって、両方のタイプのメモリ・アクセスについて性能が向上する。少なくとも一実施例では、容量は、共有メモリを使用しないプログラムによってキャッシュとして使用され、又は使用可能であり、それにより、共有メモリが容量の半分を使用するように構成されている場合、テクスチャ及びロード/ストア動作が、残りの容量を使用することができる。少なくとも一実施例によれば、共有メモリ/L1キャッシュ3818内に統合することによって、共有メモリ/L1キャッシュ3818が、データをストリームするための高スループットの管として機能しながら、同時に高帯域幅及び低レイテンシのアクセスを、頻繁に再使用されるデータに提供できるようになる。少なくとも一実施例では、汎用並列計算向けに構成されるときには、グラフィックス処理と比べてより簡単な構成を使用することができる。少なくとも一実施例では、固定機能のグラフィックス・プロセッシング・ユニットがバイパスされて、はるかに簡単なプログラミング・モデルが作製される。汎用並列計算の構成では、ワーク分配ユニットは、少なくとも一実施例においてスレッド・ブロックを直接DPCに割当て及び分配する。少なくとも一実施例では、ブロック内のスレッドは、各スレッドが確実に一意の結果を生成するように、計算において一意のスレッドIDを使用して共通のプログラムを実行し、SM3800を使用して、プログラムを実行し計算を行い、共有メモリ/L1キャッシュ3818を使用してスレッド間で通信し、LSU3814を使用して、共有メモリ/L1キャッシュ3818及びメモリ・パーティション・ユニットを介してグローバル・メモリを読み取り、書き込む。少なくとも一実施例では、汎用並列計算向けに構成されるときには、SM3800は、DCP上で新規のワークを起動するためにスケジューラ・ユニット3804が使用できるコマンドを書き込む。
少なくとも一実施例では、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つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細事項は、図10A及び/又は図10Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、SM3800に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、SM3800は、別のプロセッサ若しくはシステムによって、又はSM3800によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、SM3800は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
医療用途における画像推論及び画像処理など、先進コンピューティングのための仮想化コンピューティング・プラットフォームに関する実施例が開示される。限定することなく、実施例は、放射線写真撮影、磁気共鳴撮像(MRI)、核医学、超音波、ソノグラフィ、エラストグラフィ、光音響撮像、トモグラフィ、心エコー、機能的近赤外分光法、及び磁性粒子撮像、又はこれらの組合せを含んでもよい。少なくとも一実施例では、本明細書に記載の仮想化コンピューティング・プラットフォーム、及び関連するプロセスは、限定することなく、法科学分析、表面下検出及び撮像(たとえば、石油探査、考古学、古生物学など)、地形学、海洋学、地質学、骨学、気象学、知能分野、又は物体追跡及び監視、センサ・データ処理(たとえば、RADAR、SONAR、LIDARなど)、並びに/又はゲノミクス及び遺伝子配列において、追加的又は代替的に使用されてもよい。
図39を参照すると、図39は、少なくとも一実施例による、画像処理及び推論のパイプラインを生成及び導入するプロセス3900の実例データ・フロー図である。少なくとも一実施例では、プロセス3900は、医療施設、病院、ヘルスケア機関、クリニック、リサーチ若しくは診断の研究所などの1つ又は複数の施設3902において、撮像デバイス、処理デバイス、ゲノミクス・デバイス、遺伝子配列デバイス、放射線デバイス、及び/又は他のタイプのデバイスとともに使用するために導入されてもよい。少なくとも一実施例では、プロセッサ3900は、シーケンシング・データについてゲノミクスの分析及び推論を実行するために導入されてもよい。本明細書に記載のシステム及びプロセスを使用して実行することができるゲノム分析の実例は、限定することなく、バリアント・コール、変異検出、及び遺伝子発現の定量化を含む。
少なくとも一実施例では、プロセス3900は、訓練システム3904内及び/又は導入システム3906内で実行されてもよい。少なくとも一実施例では、訓練システム3904を使用して、導入システム3906で使用するための機械学習モデル(たとえば、ニューラル・ネットワーク、物体検出アルゴリズム、コンピュータ・ビジョン・アルゴリズムなど)の訓練、導入、及び実装が実行されてもよい。少なくとも一実施例では、導入システム3906は、処理及び計算のリソースを分散コンピューティング環境間でオフロードするように構成されて、施設3902におけるインフラストラクチャ要件を低減してもよい。少なくとも一実施例では、導入システム3906は、施設3902において撮像デバイス(たとえば、MRI、CTスキャン、X線、超音波など)又はシーケンシング・デバイスとともに使用するための仮想機器を選択し、カスタマイズし、実装するための合理化されたプラットフォームを提供してもよい。少なくとも一実施例では、仮想機器は、撮像デバイス、シーケンシング・デバイス、放射線デバイス、及び/又は他のタイプのデバイスによって生成された撮像データに対して1つ又は複数の処理動作を実行するためのソフトウェア定義アプリケーションを含んでもよい。少なくとも一実施例では、パイプライン内の1つ又は複数のアプリケーションは、アプリケーションの実行中に導入システム3906のサービス(たとえば、推論、仮想化、計算、AIなど)を使用又はコールしてもよい。
少なくとも一実施例では、先進処理及び推論パイプラインで使用されるアプリケーションのいくつかは、1つ又は複数の処理ステップを実行するために機械学習モデル又は他のAIを使用してもよい。少なくとも一実施例では、機械学習モデルは、施設3902で生成された(且つ、施設3902において1つ若しくは複数の画像アーカイブ及び通信システム(PACS)サーバに記憶された)(撮像データなどの)データ3908を使用して、施設3902において訓練されてもよく、1つ又は複数の別の施設(たとえば、異なる病院、研究所、クリニックなど)からの撮像若しくはシーケンシングのデータ3908を使用して訓練されてもよく、又はそれらの組合せであってもよい。少なくとも一実施例では、訓練システム3904を使用して、導入システム3906向けの実用的で導入可能な機械学習モデルを生成するためのアプリケーション、サービス、及び/又は他のリソースが提供されてもよい。
少なくとも一実施例では、モデル・レジストリ3924は、バージョン管理及び物体メタデータをサポートすることができる物体ストレージによってバックアップされてもよい。少なくとも一実施例では、物体ストレージには、たとえば、クラウド・プラットフォーム内から、クラウド・ストレージ(たとえば、図40のクラウド4026)の互換性アプリケーション・プログラミング・インターフェース(API)を介してアクセス可能であってもよい。少なくとも一実施例では、モデル・レジストリ3924内の機械学習モデルは、システムの開発者又はパートナがAPIと対話することによって、アップロード、リスト化、修正、又は削除されてもよい。少なくとも一実施例では、APIは、適切な資格を有するユーザがモデルをアプリケーションに関連付けできるようにする方法へのアクセスを提供してもよく、それによりアプリケーションのコンテナ化されたインスタンスを実行することの一部として、モデルを実行できるようになる。
少なくとも一実施例では、訓練パイプライン4004(図40)は、施設3902が独自の機械学習モデルを訓練している状況、又は最適化若しくは更新される必要がある既存の機械学習モデルを有している状況を含んでもよい。少なくとも一実施例では、撮像デバイス、シーケンシング・デバイス、及び/又は他のタイプのデバイスによって生成された撮像データ3908が受信されてもよい。少なくとも一実施例では、撮像データ3908が受信されると、機械学習モデルのグラウンド・トゥルース・データとして使用されることになる撮像データ3908に対応するアノテーションの生成を支援するために、AI支援アノテーション3910が使用されてもよい。少なくとも一実施例では、AI支援アノテーション3910は、1つ又は複数の機械学習モデル(たとえば、畳み込みニューラル・ネットワーク(CNN))を含んでもよく、これは(たとえば特定のデバイスからの)特定のタイプの撮像データ3908、及び/又は撮像データ3908内の特定のタイプの異常に対応するアノテーションを生成するように訓練されてもよい。少なくとも一実施例では、次いでAI支援アノテーション3910は、グラウンド・トゥルース・データを生成するために直接使用されてもよく、又は(たとえば、研究者、臨床医、医師、科学者などによって)アノテーション・ツールを使用して調節若しくは微調整されてもよい。少なくとも一実施例では、いくつかの実例において、ラベル付けされたクリニック・データ3912(たとえば、臨床医、医師、科学者、技術者などによって提供されたアノテーション)が、機械学習モデルを訓練するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、AI支援アノテーション3910、ラベル付けされたクリニック・データ3912、又はこれらの組合せが、機械学習モデルを訓練するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、訓練済み機械学習モデルは出力モデル3916と呼ばれてもよく、本明細書に記載の導入システム3906によって使用されてもよい。
少なくとも一実施例では、訓練パイプライン4004(図40)は、施設3902が、導入システム3906内の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行する際に使用する機械学習モデルを必要としているが、施設3902は現在そのような機械学習モデルを有していないかもしれない(又はそうした目的のために最適化された、効率よい、若しくは有効なモデルを有していないかもしれない)という状況を含んでもよい。少なくとも一実施例では、既存の機械学習モデルが、モデル・レジストリ3924から選択されてもよい。少なくとも一実施例では、モデル・レジストリ3924は、撮像データに対して様々な異なる推論タスクを実行するように訓練された機械学習モデルを含んでもよい。少なくとも一実施例では、モデル・レジストリ3924の機械学習モデルは、施設3902とは異なる施設(たとえば、離れた場所にある施設)からの撮像データについて訓練されたものであってもよい。少なくとも一実施例では、機械学習モデルは、1つの場所、2つの場所、又は任意の数の場所からの撮像データについて訓練されたものであってもよい。少なくとも一実施例では、特定の場所からの撮像データについて訓練されるとき、訓練は、その場所で行われてもよく、又は少なくとも、撮像データの機密性を保護するようなやり方で、若しくは撮像データが構外へ転送されるのを制限するようなやり方で(たとえば、HIPPA規定、プライバシー規定に準拠するように)行われてもよい。少なくとも一実施例では、1つの場所においてモデルが訓練されると、又は部分的に訓練されると、機械学習モデルはモデル・レジストリ3924に加えられてもよい。少なくとも一実施例では、次いで機械学習モデルは、任意の数の他の施設において再訓練又は更新されてもよく、再訓練又は更新されたモデルが、モデル・レジストリ3924において利用可能にされてもよい。少なくとも一実施例では、次いで機械学習モデルは、モデル・レジストリ3924から選択されてもよく、出力モデル3916と呼ばれてもよく、導入システム3906において使用されて、導入システムの1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行してもよい。
少なくとも一実施例では、訓練パイプライン4004(図40)は、施設3902が、導入システム3906内の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行する際に使用する機械学習モデルを必要としているが、施設3902は現在そのような機械学習モデルを有していないかもしれない(又はそうした目的のために最適化された、効率よい、若しくは有効なモデルを有していないかもしれない)という状況を含むシナリオで使用することができる。少なくとも一実施例では、モデル・レジストリ3924から選択された機械学習モデルは、母集団、遺伝的差異、機械学習モデルを訓練するために使用される訓練データの頑健性、訓練データの異常の多様性、及び/又は訓練データに伴う他の問題に違いがあることから、施設3902において生成される撮像データ3908向けに微調整又は最適化されていないことがある。少なくとも一実施例では、機械学習モデルを再訓練又は更新するためのグラウンド・トゥルース・データとして使用されることになる撮像データ3908に対応するアノテーションの生成を支援するために、AI支援アノテーション3910が使用されてもよい。少なくとも一実施例では、ラベル付けされたクリニック・データ3912(たとえば、臨床医、医師、科学者、技術者などによって提供されたアノテーション)が、機械学習モデルを訓練するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、機械学習モデルを再訓練又は更新することは、モデル訓練3914と呼ばれてもよい。少なくとも一実施例では、モデル訓練3914、たとえばAI支援アノテーション3910、ラベル付けされたクリニック・データ3912、又はこれらの組合せは、機械学習モデルを再訓練若しくは更新するためのグラウンド・トゥルース・データとして使用されてもよい。
少なくとも一実施例では、導入システム3906は、ソフトウェア3918、サービス3920、ハードウェア3922、並びに/又は他の構成要素、特徴、及び機能を含んでもよい。少なくとも一実施例では、導入システム3906は、ソフトウェア「スタック」を含んでもよく、それによりソフトウェア3918は、サービス3920の上に構築されてもよく、サービス3920を使用して一部若しくはすべての処理タスクを実行してもよく、サービス3920及びソフトウェア3918は、ハードウェア3922の上に構築され、ハードウェア3922を使用して、導入システム3906の処理、ストレージ、及び/又は他の計算のタスクを実行してもよい。
少なくとも一実施例では、ソフトウェア3918は、任意の数の異なるコンテナを含んでもよく、ここで各コンテナは、アプリケーションのインスタンス化を実行してもよい。少なくとも一実施例では、各アプリケーションは、先進処理及び推論パイプラインの1つ又は複数の処理タスク(たとえば、推論、物体検出、特徴検出、セグメント化、画像強調、キャリブレーションなど)を実行してもよい。少なくとも一実施例では、撮像デバイス(たとえば、CT、MRI、X線、超音波、ソノグラフィ、心エコーなど)、シーケンシング・デバイス、放射線デバイス、ゲノミクス・デバイスなどのタイプごとに、デバイスによって生成された撮像データ3908(又は、本明細書に記載のものなどの他のタイプのデータ)に対してデータ処理タスクを実行できる任意の数のコンテナが存在してもよい。少なくとも一実施例では、先進処理及び推論パイプラインは、(たとえば、医用におけるデジタル画像と通信(digital imaging and communications in medicine:DICOM)データ、放射線医学情報システム(RIS)データ、臨床情報システム(CIS)データ、リモート・プロシージャ・コール(RPC)データ、表現状態転送(REST)インターフェースに実質的に準拠したデータ、ファイルベースのインターフェースに実質的に準拠したデータ、及び/又は生のデータなどの使用可能なタイプのデータに出力を再変換して、施設3902において記憶及び表示するように)パイプラインを通して処理した後に、各コンテナによって使用される、且つ/又は施設3902によって使用される撮像データを受信及び構成するコンテナに加えて、撮像データ3908を処理するのに所望される又は必要とされる異なるコンテナの選択に基づき定義されてもよい。少なくとも一実施例では、(たとえばパイプラインを構成する)ソフトウェア3918内のコンテナの組合せは、(本明細書においてより詳細に記載する)仮想機器と呼ばれてもよく、仮想機器は、サービス3920及びハードウェア3922を利用して、コンテナにおいてインスタンス化されたアプリケーションの一部又はすべての処理タスクを実行してもよい。
少なくとも一実施例では、データ処理パイプラインは、推論要求(たとえば、臨床医、医師、放射線医など、導入システム3906のユーザからの要求)に応答して、DICOM、RIS、CIS、REST準拠、RPC、生、及び/又は他のフォーマットで入力データ(たとえば、撮像データ3908)を受け取ってもよい。少なくとも一実施例では、入力データは、1つ又は複数の撮像デバイス、シーケンシング・デバイス、放射線デバイス、ゲノミクス・デバイス、及び/又は他のタイプのデバイスによって生成される1つ又は複数の画像、ビデオ、及び/又は他のデータ表現を表してもよい。少なくとも一実施例では、データは、データ処理パイプラインの一部としての事前処理を受けて、1つ又は複数のアプリケーションによって処理できるようにデータが準備されてもよい。少なくとも一実施例では、パイプラインの1つ若しくは複数の推論タスク又は他の処理タスクの出力に対して後処理が実行されて、次のアプリケーション用に出力データが準備されてもよく、且つ/又は送信及び/若しくはユーザによる使用のために(たとえば、推論要求への応答として)出力データが準備されてもよい。少なくとも一実施例では、推論タスクは、訓練済み若しくは導入済みのニューラル・ネットワークなど、1つ又は複数の機械学習モデルによって実行されてもよく、このモデルは、訓練システム3904の出力モデル3916を含んでもよい。
少なくとも一実施例では、データ処理パイプラインのタスクはコンテナにカプセル化されてもよく、コンテナはそれぞれ、アプリケーションの個別の完全に機能的なインスタンス化、及び機械学習モデルを参照できる仮想化コンピューティング環境を表す少なくとも一実施例では、コンテナ又はアプリケーションは、(本明細書においてより詳細に記載する)コンテナ・レジストリのプライベート(たとえば、アクセスの制限された)区域に発行されてもよく、訓練済み又は導入済みのモデルは、モデル・レジストリ3924に記憶され、1つ又は複数のアプリケーションに関連付けられてもよい。少なくとも一実施例では、アプリケーションの画像(たとえば、コンテナの画像)は、コンテナ・レジストリにおいて入手可能であってもよく、パイプラインに導入するためにユーザによってコンテナ・レジストリから選択されると、画像は、ユーザのシステムで使用できるようにアプリケーションをインスタンス化するためのコンテナを生成するために使用されてもよい。
少なくとも一実施例では、開発者(たとえば、ソフトウェア開発者、臨床医、医師など)は、供給されたデータに対して画像処理及び/又は推論を実行するために、アプリケーションを(たとえばコンテナとして)開発、公開、及び記憶してもよい。少なくとも一実施例では、開発、公開、及び/又は記憶は、(たとえば、開発されたアプリケーション及び/又はコンテナが、確実にシステムに準拠するように、又はシステムと互換性があるようにするために)システムに関連付けられたソフトウェア開発キット(SDK)を使用して実行されてもよい。少なくとも一実施例では、開発されたアプリケーションは、システム(たとえば図40のシステム4000)としてサービス3920の少なくとも一部をサポートすることができるSDKを用いて、ローカルに(たとえば第1の施設において、第1の施設からのデータについて)テストされてもよい。少なくとも一実施例では、DICOM物体は、1個から数百個にわたる画像又は他のタイプのデータをどこにでも含むことができるうえに、データのバリエーションがあることから、開発者は、入力されるDICOMデータの抽出及び準備を管理する(たとえば、アプリケーション用の構成を設定する、事前処理をアプリケーションに構築するなどの)責任を負うことがある。少なくとも一実施例では、システム4000によって(たとえば、精度、安全性、患者のプライバシーなどが)検証されると、アプリケーションは、ユーザ(たとえば、病院、クリニック、研究所、ヘルスケア提供者など)によって選択及び/又は実装できるようにコンテナ・レジストリにおいて利用可能にされて、ユーザの施設(たとえば、第2の施設)におけるデータに対して1つ又は複数の処理タスクが実行されてもよい。
少なくとも一実施例では、次いで開発者は、アプリケーション又はコンテナを、システム(たとえば、図40のシステム4000)のユーザによってアクセス及び使用できるようにネットワークを通して共有してもよい。少なくとも一実施例では、完成し検証されたアプリケーション又はコンテナは、コンテナ・レジストリに記憶されてもよく、関連する機械学習モデルは、モデル・レジストリ3924に記憶されてもよい。少なくとも一実施例では、推論又は画像処理の要求を出す要求元エンティティ(たとえば、医療施設のユーザ)は、コンテナ・レジストリ及び/又はモデル・レジストリ3924をブラウジングしてアプリケーション、コンテナ、データセット、機械学習モデルなどを探し、データ処理パイプラインに含めるための要素の所望の組合せを選択し、撮像処理要求を送出してもよい。少なくとも一実施例では、要求は、要求を実行するために必要な入力データ(及びいくつかの実例では、関連する患者データ)を含んでもよく、且つ/又は要求を処理する際に実行されることになるアプリケーション及び/又は機械学習モデルの選択を含んでもよい。少なくとも一実施例では、次いで要求は、導入システム3906(たとえばクラウド)の1つ又は複数の構成要素に渡されて、データ処理パイプラインの処理が実行されてもよい。少なくとも一実施例では、導入システム3906による処理は、コンテナ・レジストリ及び/又はモデル・レジストリ3924から選択された要素(たとえば、アプリケーション、コンテナ、モデルなど)を参照することを含んでもよい。少なくとも一実施例では、パイプラインによって結果が生成されると、結果がユーザに返されて参照されてもよい(たとえば、ローカルで、構内のワークステーション又は端末で実行している視聴アプリケーション・スイートで視聴されてもよい)。少なくとも一実施例では、放射線医は、任意の数のアプリケーション及び/又はコンテナを含むデータ処理パイプラインから結果を受信してもよく、ここで結果は、X線、CTスキャン、MRIなどにおける異常検出を含んでもよい。
少なくとも一実施例では、パイプラインにおけるアプリケーション又はコンテナの処理又は実行を支援するために、サービス3920が利用されてもよい。少なくとも一実施例では、サービス3920は、計算サービス、人工知能(AI)サービス、視覚化サービス、及び/又は他のタイプのサービスを含んでもよい。少なくとも一実施例では、サービス3920は、ソフトウェア3918の1つ又は複数のアプリケーションに共通の機能を提供してもよく、それにより機能は、アプリケーションによってコール又は利用されることが可能なサービスに対して抽象化されてもよい。少なくとも一実施例では、サービス3920によって提供される機能は、動的でより効率的に実行されてもよく、それと同時に、(たとえば、並列コンピューティング・プラットフォーム4030(図40)を使用して)アプリケーションが並列にデータを処理できるようにすることにより、良好にスケーリングされてもよい。少なくとも一実施例では、サービス3920により提供される同じ機能を共有する各アプリケーションに、サービス3920のそれぞれのインスタンスを有するよう要求するのではなく、サービス3920が、様々なアプリケーション間で共有されてもよい。少なくとも一実施例では、サービスは、非限定的な実例として、検出又はセグメント化のタスクを実行するために使用されてもよい推論のサーバ又はエンジンを含んでもよい。少なくとも一実施例では、機械学習モデルの訓練及び/又は再訓練の機能を提供することができるモデル訓練サービスが含まれてもよい。少なくとも一実施例では、GPU加速化データ(たとえば、DICOM、RIS、CIS、REST準拠、RPC、生など)の抽出、リサイズ、スケーリング、及び/又は他の拡張を提供することができるデータ拡張サービスがさらに含まれてもよい。少なくとも一実施例では、レイ・トレーシング、ラスタ化、ノイズ除去、鮮鋭化などの画像レンダリング効果を加えることができる視覚化サービスが使用されて、2次元(2D)及び/又は3次元(3D)のモデルにリアル感が付加されてもよい。少なくとも一実施例では、仮想機器のパイプライン内の他のアプリケーションについてビーム形成、セグメント化、推論、撮像、及び/又はサポートを実現する仮想機器サービスが含まれてもよい。
少なくとも一実施例では、サービス3920がAIサービス(たとえば、推論サービス)を含む場合、異常検出(たとえば、腫瘍、発育異常、瘢痕化など)のためのアプリケーションに関連付けられた1つ又は複数の機械学習モデルは、機械学習モデル、又はその処理を、アプリケーション実行の一部として実行するように推論サービス(たとえば、推論サーバ)に(APIコールとして)コールすることによって、実行されてもよい。少なくとも一実施例では、セグメント化タスクのための1つ又は複数の機械学習モデルを別のアプリケーションが含む場合、セグメント化タスクに関連付けられた処理動作のうちの1つ又は複数を実行するための機械学習モデルを実行するように、アプリケーションは推論サービスをコールしてもよい。少なくとも一実施例では、セグメント化アプリケーション及び異常検出アプリケーションを含む先進処理及び推論パイプラインを実装するソフトウェア3918は、1つ又は複数の推論タスクを実行するためにそれぞれのアプリケーションが同じ推論サービスをコールすることがあるので、合理化されてもよい。
少なくとも一実施例では、ハードウェア3922は、GPU、CPU、グラフィックス・カード、AI/深層学習システム(たとえば、NVIDIAのDGXスーパーコンピュータ・システムなどのAIスーパーコンピュータ)、クラウド・プラットフォーム、又はそれらの組合せを含んでもよい。少なくとも一実施例では、異なるタイプのハードウェア3922を使用して、導入システム3906のソフトウェア3918及びサービス3920のための効率的で専用のサポートが提供されてもよい。少なくとも一実施例では、画像処理、画像再構築、セグメント化、MRI検査、脳卒中又は心臓発作の(たとえばリアルタイムの)検出、レンダリングの画像品質などの効率、精度、及び有効性を向上させるために、AI/深層学習システム内、クラウド・システム、及び/又は導入システム3906の他の処理構成要素において、ローカルで(たとえば、施設3902で)処理をおこなうためのGPU処理の使用が実装されてもよい。少なくとも一実施例では、施設は、撮像デバイス、ゲノミクス・デバイス、シーケンシング・デバイス、及び/又は他のタイプのデバイスを構内に含んでもよく、これらは、GPUを利用して、対象者の解剖学的組織を表す撮像データを生成してもよい。
少なくとも一実施例では、ソフトウェア3918及び/又はサービス3920は、非限定的な実例として深層学習、機械学習、及び/又は高性能コンピューティングに関するGPU処理のために最適化されてもよい。少なくとも一実施例では、導入システム3906及び/又は訓練システム3904のコンピューティング環境のうちの少なくとも一部は、データセンタの1つ若しくは複数のスーパーコンピュータ、又は高性能コンピューティング・システムにおいて、GPU最適化ソフトウェア(たとえば、NVIDIAのDGXシステムのハードウェアとソフトウェアの組合せ)を用いて実行されてもよい。少なくとも一実施例では、データセンサは、HIPAAの条項に準拠してもよく、したがって、撮像データ及び/又は他の患者データの受信、処理、及び送信は、患者データのプライバシーに関して安全に取り扱われる。少なくとも一実施例では、ハードウェア3922は、任意の数のGPUを含んでもよく、これらのGPUは、本明細書に記載するように、データの並列処理を実行するためにコールされてもよい。少なくとも一実施例では、クラウド・プラットフォームはさらに、深層学習タスク、機械学習タスク、又は他のコンピューティング・タスクのGPU最適化された実行のためのGPU処理を含んでもよい。少なくとも一実施例では、クラウド・プラットフォーム(たとえば、NVIDIAのNGC)は、(たとえば、NVIDIAのDGXシステムによって提供される)AI/深層学習スーパーコンピュータ、及び/又はGPU最適化ソフトウェアをハードウェア抽象化及びスケーリングのプラットフォームとして使用して、実行されてもよい。少なくとも一実施例では、クラウド・プラットフォームは、シームレスなスケーリング及びロード・バランシングを可能にするために、複数のGPUに対するアプリケーション・コンテナ・クラスタリング・システム又はオーケストレーション・システム(たとえば、KUBERNETES)を統合してもよい。
少なくとも一実施例では、把持姿勢を決定するシステムは、上に示し記載したようにプロセッサを使用して構築されることが可能である。少なくとも一実施例では、プロセッサは、本明細書に記載したように把持姿勢を決定及び精緻化することをプロセッサに行わせる実行可能命令を実行する。
図40は、少なくとも一実施例による撮像導入パイプラインを生成及び導入するための実例システム4000を示すシステム図である。少なくとも一実施例では、システム4000は、図39のプロセス3900、及び/又は先進処理及び推論パイプラインを含む他のプロセスを実装するために使用されてもよい。少なくとも一実施例では、システム4000は、訓練システム3904及び導入システム3906を含んでもよい。少なくとも一実施例では、訓練システム3904及び導入システム3906は、本明細書に記載するように、ソフトウェア3918、サービス3920、及び/又はハードウェア3922を使用して実装されてもよい。
少なくとも一実施例では、システム4000(たとえば、訓練システム3904及び/又は導入システム3906)は、クラウド・コンピューティング環境(たとえば、クラウド4026)において実装されてもよい。少なくとも一実施例では、システム4000は、ヘルスケア・サービス施設に関してローカルに実装されてもよく、又はクラウドとローカル・コンピューティング・リソースとの組合せとして実装されてもよい。少なくとも一実施例では、クラウド・コンピューティングが実装される実施例では、HIPAA並びに/又は他のデータ取扱い及びプライバシーの規定若しくは法律に準拠していない処理を提供するシステム4000の1つ又は複数の構成要素から、患者データは分離されてもよく、又はそれらによって処理されなくてもよい。少なくとも一実施例では、クラウド4026のAPIへのアクセスは、制定されたセキュリティ対策又はプロトコルを介して許可されたユーザに限定されてもよい。少なくとも一実施例では、セキュリティ・プロトコルはウェブ・トークンを含んでもよく、このウェブ・トークンは、認証(たとえば、AuthN、AuthZ、Glueconなど)のサービスによって署名されてもよく、適切な許可を持っていてもよい。少なくとも一実施例では、(本明細書に記載の)仮想機器のAPI、又はシステム4000の他のインスタンス化は、対話について検査済み又は許可済みのパブリックIPのセットに限定されてもよい。
少なくとも一実施例では、システム4000の様々な構成要素は、有線及び/又は無線の通信プロトコルを介して、ローカル・エリア・ネットワーク(LAN)及び/又は広域ネットワーク(WAN)を含むがこれらに限定されない様々な異なるタイプのネットワークのうちの任意のものを使用して、相互に通信してもよい。少なくとも一実施例では、(たとえば推論要求を送信するため、推論要求の結果を受信するためなど)施設とシステム4000の構成要素との間の通信は、1つ又は複数のデータ・バス、無線データ・プロトコル(Wi−Fi)、有線データ・プロトコル(たとえば、イーサネット(登録商標))などを介して通信されてもよい。
少なくとも一実施例では、訓練システム3904は、図39に関して本明細書に記載したものと同様の訓練パイプライン4004を実行してもよい。少なくとも一実施例では、1つ又は複数の機械学習モデルが導入システム3906により導入パイプライン4010において使用されることになる場合、訓練パイプライン4004を使用して、1つ又は複数の(たとえば、事前訓練された)モデルが訓練若しくは再訓練されてもよく、且つ/又は事前訓練されたモデル4006のうちの1つ又は複数が(たとえば再訓練若しくは更新を必要とせずに)実装されてもよい。少なくとも一実施例では、訓練パイプライン4004の結果として、出力モデル3916が生成されてもよい。少なくとも一実施例では、訓練パイプライン4004は、(たとえばDICOM画像を、それぞれの機械学習モデルによって処理するのに適した別のフォーマット、たとえばNeuroimaging Informatics Technology Initiative(NIfTI)フォーマットなどに変換するためのDICOMアダプタ4002Aを使用した)撮像データ(若しくは他の入力データ)の変換若しくは適合、AI支援アノテーション3910、ラベル付きクリニック・データ3912を生成するための撮像データ3908のラベル付け又はアノテーション付け、モデル・レジストリからのモデル選択、モデル訓練3914、モデルの訓練、再訓練、若しくは更新、及び/又は他の処理ステップなどであるがこれらに限定されない任意の数の処理ステップを含んでもよい。少なくとも一実施例では、導入システム3906によって使用される異なる機械学習モデルについて、異なる訓練パイプライン4004が使用されてもよい。少なくとも一実施例では、図37に関して記載した第1の実例と同様の訓練パイプライン4004は、第1の機械学習モデルに使用されてもよく、図39に関して記載した第2の実例と同様の訓練パイプライン4004は、第2の機械学習モデルに使用されてもよく、図39に関して記載した第3の実例と同様の訓練パイプライン4004は、第3の機械学習モデルに使用されてもよい。少なくとも一実施例では、それぞれの各機械学習モデルに要求されるものに応じて、訓練システム3904内のタスクの任意の組合せが使用されてもよい。少なくとも一実施例では、機械学習モデルのうちの1つ又は複数は、すでに訓練済みで導入の準備が整っていてもよく、それにより機械学習モデルは、訓練システム3904によるいかなる処理も受けなくてもよく、導入システム3906によって実装されてもよい。
少なくとも一実施例では、出力モデル3916及び/又は事前訓練されたモデル4006は、実装形態又は実施例に応じて任意のタイプの機械学習モデルを含んでもよい。少なくとも一実施例では、限定することなく、システム4000によって使用される機械学習モデルは、線形回帰、ロジスティック回帰、決定木、サポート・ベクター・マシン(SVM)、ナイーブ・ベイズ、k近傍法(k−nearest neighbor:Knn)、k平均クラスタリング、ランダム・フォレスト、次元縮小アルゴリズム、勾配ブースティング・アルゴリズム、ニューラル・ネットワーク(たとえば、オート・エンコーダ、畳み込み、再帰、パーセプトロン、長/短期メモリ(LSTM)、ホップフィールド、ボルツマン、ディープ・ビリーフ、逆畳み込み、敵対的生成、液体状態マシンなど)を使用する機械学習モデル、及び/又は他のタイプの機械学習モデルを含んでもよい。
少なくとも一実施例では、訓練パイプライン4004は、少なくとも図43Bに関して、より詳細に本明細書に記載するAI支援アノテーションを含んでもよい。少なくとも一実施例では、ラベル付きクリニック・データ3912(たとえば、従来のアノテーション)は、任意の数の技法によって生成されてもよい。少なくとも一実施例では、ラベル又は他のアノテーションは、描画プログラム(たとえば、アノテーション・プログラム)、コンピュータ支援設計(CAD)プログラム、ラベル付けプログラム、グラウンド・トゥルース用のアノテーション若しくはラベルの生成に適した別のタイプのプログラム内で生成されてもよく、且つ/又はいくつかの実例では、手書きされてもよい。少なくとも一実施例では、グラウンド・トゥルース・データは、合成により生成されてもよく(たとえば、コンピュータ・モデル又はレンダリングから生成されてもよく)、現実的に生成されてもよく(たとえば、実世界のデータから設計及び生成されてもよく)、機械自動化されてもよく(たとえば、特徴の分析及び学習を使用して、データから特徴を抽出し、次いでラベルを生成してもよく)、人間によりアノテーション付けされてもよく(たとえば、ラベラ、又はアノテーション専門家がラベルのロケーションを定義してもよく)、且つ/又はこれらの組合せであってもよい。少なくとも一実施例では、撮像データ3908のインスタンス(又は機械学習モデルによって使用される他のタイプのデータ)ごとに、訓練システム3904によって生成される対応するグラウンド・トゥルース・データが存在してもよい。少なくとも一実施例では、訓練パイプライン4004に含まれるAI支援アノテーションに加えて又はその代わりに、導入パイプライン4010の一部としてAI支援アノテーションが実行されてもよい。少なくとも一実施例では、システム4000は多層プラットフォームを含んでもよく、このプラットフォームは、1つ又は複数の医療用撮像及び診断の機能を実行することができる診断アプリケーション(又は他のタイプのアプリケーション)のソフトウェア層(たとえば、ソフトウェア3918)を含んでもよい。少なくとも一実施例では、システム4000は、1つ又は複数の施設のPACSサーバ・ネットワークに、(たとえば、暗号化リンクを介して)通信可能に結合されてもよい。少なくとも一実施例では、システム4000は、PACSサーバからのデータ(たとえば、DICOMデータ、RISデータ、生データ、CISデータ、REST準拠データ、RPCデータ、生データなど)に(たとえば、DICOMアダプタ4002、又はRIS、CIS、REST準拠、RPC、生など別のタイプのデータ・アダプタを介して)アクセスし、それを参照するように構成されて、機械学習モデルの訓練、機械学習モデルの導入、画像処理、推論、及び/又は他の動作などの動作を実行してもよい。
少なくとも一実施例では、ソフトウェア層は、セキュアな、暗号化された、且つ/又は認証されたAPIとして実装されてもよく、これを介して、アプリケーション又はコンテナが、外部環境(たとえば、施設3902)から呼び出し(たとえばコール)されてもよい。少なくとも一実施例では、次いでアプリケーションは、それぞれのアプリケーションに関連付けられた計算、AI、又は視覚化のタスクを実行するために1つ又は複数のサービス3920をコール又は実行してもよく、ソフトウェア3918及び/又はサービス3920は、ハードウェア3922を利用して、処理タスクを有効且つ効率的なやり方で実行してもよい。
少なくとも一実施例では、導入システム3906は、導入パイプライン4010を実行してもよい。少なくとも一実施例では、導入パイプライン4010は任意の数のアプリケーションを含んでもよく、これらは、上に記載のAI支援アノテーションを含め、撮像デバイス、シーケンシング・デバイス、ゲノミクス・デバイスなどによって生成された撮像データ(及び/又は他のタイプのデータ)に連続的に、非連続的に、又は他のやり方で適用されてもよい。少なくとも一実施例では、本明細書に記載するように、個々のデバイス用の導入パイプライン4010は、デバイス用の仮想機器(たとえば、仮想超音波機器、仮想CTスキャン機器、仮想シーケンシング機器など)と呼ばれてもよい。少なくとも一実施例では、デバイスによって生成されるデータに必要な情報に応じて、1つのデバイスにつき2つ以上の導入パイプライン4010が存在してもよい。少なくとも一実施例では、異常検出がMRIマシンに必要とされる場合、第1の導入パイプライン4010が存在してもよく、画像強調がMRIマシンの出力に必要とされる場合、第2の導入パイプライン4010が存在してもよい。
少なくとも一実施例では、導入パイプライン4010にとって利用可能なアプリケーションは、デバイスからの撮像データ又は他のデータに対して処理タスクを実行するために使用することができる任意のアプリケーションを含んでもよい。少なくとも一実施例では、画像強調、セグメント化、再構築、異常検出、物体検出、特徴検出、処置計画、線量測定、ビーム計画(又は他の放射線処置手順)、及び/又は他の分析、画像処理、又は推論のタスクを、異なるアプリケーションが担当してもよい。少なくとも一実施例では、導入システム3906は、それぞれのアプリケーションの構造を定義してもよく、それにより導入システム3906のユーザ(たとえば、医療施設、研修所、クリニックなど)は、構造を理解し、自らのそれぞれの施設内で実装できるようにアプリケーションを適応させてもよい。少なくとも一実施例では、導入パイプライン4010に含めるために、画像再構築用のアプリケーションが選択されてもよいが、撮像デバイスによって生成されるデータのタイプは、アプリケーション内で使用されるデータのタイプとは異なってもよい。少なくとも一実施例では、DICOMアダプタ4002B(及び/又はDICOMリーダ)は、又は別のタイプのデータ・アダプタ若しくはリーダ(たとえば、RIS、CIS、REST準拠、RPC、生など)が導入パイプライン4010内で使用されて、導入システム3906内のアプリケーションによって使用可能な形にデータを変換してもよい。少なくとも一実施例では、DICOM、RIS、CIS、REST準拠、RPC、生、及び/又は他のタイプのデータ・ライブラリへのアクセスは、データに対する任意の畳み込み、色補正、鮮明度、ガンマ、及び/又は他の拡張を、デコード、抽出、及び/又は実行することを含め、累積され、事前処理されてもよい。少なくとも一実施例では、DICOM、RIS、CIS、REST準拠、RPC、及び/又は生データは、順序なしであってもよく、収集されたデータを整理しソートするために、事前パスが実行されてもよい。少なくとも一実施例では、様々なアプリケーションは共通の画像動作を共有することがあるので、いくつかの実施例では、(たとえば、サービス3920の1つとして)データ拡張ライブラリを使用して、これらの動作が加速化されてもよい。少なくとも一実施例では、CPU処理に依存する従来の処理手法のボトルネックを回避するために、並列コンピューティング・プラットフォーム4030を使用して、これらの処理タスクがGPU加速化されてもよい。
少なくとも一実施例では、画像再構築アプリケーションは、機械学習モデルの使用を含む処理タスクを含んでもよい。少なくとも一実施例では、ユーザは、独自の機械学習モデルを使用すること、又はモデル・レジストリ3924から機械学習モデルを選択することを望む場合がある。少なくとも一実施例では、ユーザは、処理タスクを実行するために、独自の機械学習モデルを実装してもよく、又は機械学習モデルを選択してアプリケーションに含めてもよい。少なくとも一実施例では、アプリケーションは選択可能及びカスタマイズ可能であってもよく、アプリケーションの構造を定義することにより、特定のユーザ向けのアプリケーションの導入及び実装が、よりシームレスなユーザ・エクスペリエンスとして提示される。少なくとも一実施例では、システム4000の他の特徴、たとえばサービス3920及びハードウェア3922などを利用することにより、導入パイプライン4010は、さらによりユーザ・フレンドリになることができ、より容易な統合を実現でき、より正確で、効率的で、タイムリーな結果を生み出すことができる。
少なくとも一実施例では、導入システム3906はユーザ・インターフェース4014(たとえば、グラフィカル・ユーザ・インターフェース、ウェブ・インターフェースなど)を含んでもよく、これらは、アプリケーションを選択して導入パイプライン4010に含める、アプリケーションを構成する、アプリケーション又はそのパラメータ若しくは構造を修正又は変更する、セットアップ及び/又は導入中に導入パイプライン4010を使用しそれと対話する、且つ/又は他のやり方で導入システム3906と対話するために使用されてもよい。少なくとも一実施例では、訓練システム3904に関して図示されていないが、ユーザ・インターフェース4014(又は異なるユーザ・インターフェース)は、導入システム3906で使用するモデルを選択するため、訓練システム3904において訓練若しくは再訓練するモデルを選択するため、且つ/又は他のやり方で訓練システム3904と対話するために使用されてもよい。
少なくとも一実施例では、アプリケーション・オーケストレーション・システム4028に加えてパイプライン・マネージャ4012を使用して、導入パイプライン4010のアプリケーション又はコンテナと、サービス3920及び/又はハードウェア3922との間で対話が管理されてもよい。少なくとも一実施例では、パイプライン・マネージャ4012は、アプリケーションからアプリケーションへの対話、アプリケーションからサービス3920への対話、及び/又はアプリケーション若しくはサービスからハードウェア3922への対話を容易にするように構成されてもよい。少なくとも一実施例では、ソフトウェア3918に含まれるように図示してあるが、これは限定を意図しておらず、(たとえば、図41に示すものなど)いくつかの事例では、パイプライン・マネージャ4012は、サービス3920に含まれてもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム4028(たとえば、Kubernetes、DOCKERなど)は、コンテナ・オーケストレーション・システムを含んでもよく、このシステムは、アプリケーションを、調整、管理、スケーリング、及び導入のための論理ユニットとして、コンテナにグループ化することができる。少なくとも一実施例では、導入パイプライン4010からのアプリケーション(たとえば、再構築アプリケーション、セグメント化アプリケーションなど)を個々のコンテナに関連付けることより、各アプリケーションは自己完結型環境内(たとえば、カーネル・レベル)で実行して、スピード及び効率を向上させることができる。
少なくとも一実施例では、各アプリケーション及び/又はコンテナ(又はその画像)は、個々に開発、修正、及び導入されてもよく(たとえば、第1のユーザ又は開発者が、第1のアプリケーションを開発、修正、及び導入し、第2のユーザ又は開発者が、第1のユーザ又は開発者とは別に第2のアプリケーションを開発、修正、及び導入してもよく)、これにより、別のアプリケーション又はコンテナのタスクに邪魔されることなく、1つのアプリケーション及び/又はコンテナのタスクに集中し、注意を払うことが可能になる。少なくとも一実施例では、異なるコンテナ間又はアプリケーション間の通信、及び協調が、パイプライン・マネージャ4012及びアプリケーション・オーケストレーション・システム4028によって支援されてもよい。少なくとも一実施例では、各コンテナ又はアプリケーションの予測される入力及び/又は出力が、(たとえば、アプリケーション又はコンテナの構造に基づき)システムによって知られている限り、アプリケーション・オーケストレーション・システム4028及び/又はパイプライン・マネージャ4012は、アプリケーション又はコンテナのそれぞれ間の通信、及びそれらの間でのリソースの共有を容易にすることができる。少なくとも一実施例では、導入パイプライン4010のアプリケーション又はコンテナのうちの1つ又は複数は、同じサービス及びリソースを共有することができるので、アプリケーション・オーケストレーション・システム4028は、様々なアプリケーション間又はコンテナ間でサービス又はリソースをオーケストレートし、ロード・バランシングをおこない、共有を決定してもよい。少なくとも一実施例では、スケジューラを使用して、アプリケーション又はコンテナのリソース要件、これらのリソースの現在の使用量又は計画された使用量、及びリソースの利用可能性が追跡されてもよい。少なくとも一実施例では、こうしてスケジューラは、異なるアプリケーションにリソースを配分し、システムの要件及び利用可能性を考慮してアプリケーション間でリソースを分配してもよい。いくつかの実例では、スケジューラ(及び/又はアプリケーション・オーケストレーション・システム4028の他の構成要素)は、サービスの品質(QoS)、(たとえば、リアルタイム処理を実行するか、遅延処理を実行するかを決定するための)データ出力を必要とする緊急度など、システムに課される制約(たとえば、ユーザ制約)に基づき、リソースの利用可能性及び分配を決定してもよい。
少なくとも一実施例では、導入システム3906のアプリケーション又はコンテナによって利用及び共有されるサービス3920は、計算サービス4016、AIサービス4018、視覚化サービス4020、及び/又は他のタイプのサービスを含んでもよい。少なくとも一実施例では、アプリケーションは、サービス3920のうちの1つ又は複数をコール(たとえば実行)して、アプリケーションのための処理動作を実行してもよい。少なくとも一実施例では、計算サービス4016は、スーパーコンピューティング又は他の高性能コンピューティング(HPC)のタスクを実行するために、アプリケーションによって利用されてもよい。少なくとも一実施例では、アプリケーションのうちの1つ又は複数を介してデータを実質的に同時に処理するため、且つ/又は1つのアプリケーションの1つ又は複数のタスクを実質的に同時に処理するために、計算サービス4016を利用して(たとえば、並列コンピューティング・プラットフォーム4030を使用して)並列処理が実行されてもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム4030(たとえば、NVIDIAのCUDA)は、GPU(たとえば、GPU4022)上での汎用コンピューティング(GPGPU)を可能にしてもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム4030のソフトウェア層は、計算カーネルを実行するために仮想命令セット及びGPUの並列計算要素へのアクセスを提供してもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム4030はメモリを含んでもよく、いくつかの実施例では、メモリは、複数のコンテナ間で、且つ/又は1つのコンテナ内の異なる処理タスク間で共有されてもよい。少なくとも一実施例では、複数のコンテナ、及び/又はコンテナ内の複数のプロセスが、並列コンピューティング・プラットフォーム4030のメモリの共有セグメントからの同じデータを使用するために(たとえば、アプリケーションの複数の異なるステージ、又は複数のアプリケーションが、同じ情報を処理する場合)、プロセス間通信(IPC)コールが生成されてもよい。少なくとも一実施例では、データのコピーを作成し、データをメモリの異なるロケーションに移動(たとえば、読取り/書込みの動作)させるのではなく、メモリの同じロケーションの同じデータが、任意の数の処理タスクに(たとえば、同じ時間、異なる時間などに)使用されてもよい。少なくとも一実施例では、データが使用されて、処理の結果として新規データが生成されるとき、データの新規ロケーションのこの情報は、様々なアプリケーションに記憶され、それらの間で共有されてもよい。少なくとも一実施例では、データのロケーション及び更新済み又は修正済みのデータのロケーションは、コンテナ内でペイロードがどのように理解されるかという定義の一部であってもよい。
少なくとも一実施例では、AIサービス4018は、アプリケーションに関連付けられた(たとえば、アプリケーションの1つ又は複数の処理タスクを実行する役割を課された)機械学習モデルを実行するための推論サービスを実行するために利用されてもよい少なくとも一実施例では、AIサービス4018は、セグメント化、再構築、物体検出、特徴検出、分類、及び/又は他の推論タスクのための機械学習モデル(たとえば、CNNなどのニューラル・ネットワーク)を実行するために、AIシステム4024を利用してもよい。少なくとも一実施例では、導入パイプライン4010のアプリケーションは、訓練システム3904からの出力モデル3916及び/又はアプリケーションの他のモデルのうちの1つ又は複数を使用して、撮像データ(たとえば、DICOMデータ、RISデータ、CISデータ、REST準拠データ、RPCデータ、生データなど)について推論を実行してもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム4028(たとえば、スケジューラ)を使用する推論の2つ以上の実例が利用可能であってもよい。少なくとも一実施例では、第1のカテゴリは、緊急時の緊急要求について推論を実行するため、又は診断時の放射線医のためなど、より高いサービス・レベル合意を達成できる高優先順位/低レイテンシの経路を含むことができる。少なくとも一実施例では、第2のカテゴリは、緊急ではない要求のため、又は分析が後で実行されてもよい場合に使用することができる標準優先順位の経路を含んでもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム4028は、AIサービス4018の異なる推論タスク向けの優先順位経路に基づき、リソース(たとえば、サービス3920及び/又はハードウェア3922)を分配してもよい。
少なくとも一実施例では、共有ストレージが、システム4000内でAIサービス4018に取り付けられてもよい。少なくとも一実施例では、共有ストレージは、キャッシュ(又は他のタイプのストレージ・デバイス)として動作してもよく、アプリケーションからの推論要求を処理するために使用されてもよい。少なくとも一実施例では、推論要求が送出されたとき、要求は、導入システム3906のAPIインスタンスのセットによって受信されてもよく、1つ又は複数のインスタンスが(たとえば、最良な適合のため、ロード・バランシングのためなどに)選択されて、要求が処理されてもよい。少なくとも一実施例では、要求を処理するために、要求がデータベースに入れられてもよく、機械学習モデルは、まだキャッシュにない場合には、モデル・レジストリ3924から特定されてもよく、検証ステップは、適切な機械学習モデルがキャッシュ(たとえば、共有ストレージ)に確実にロードされるようにしてもよく、且つ/又はモデルのコピーがキャッシュに保存されてもよい。少なくとも一実施例では、アプリケーションがまだ実行されていない場合、又はアプリケーションの充分なインスタンスが存在しない場合には、スケジューラ(たとえば、パイプライン・マネージャ4012)を使用して、要求において参照されたアプリケーションが起動されてもよい。少なくとも一実施例では、モデルを実行するための推論サーバがまだ起動されていない場合には、推論サーバが起動されてもよい。少なくとも一実施例では、任意の数の推論サーバがモデルごとに起動されてもよい。少なくとも一実施例では、推論サーバがクラスタ化済みであるプル・モデルでは、ロード・バランシングが有利な場合にはいつでもモデルがキャッシュされてもよい。少なくとも一実施例では、推論サーバは、対応する分散サーバに静的にロードされてもよい。
少なくとも一実施例では、推論は、コンテナ内で実行される推論サーバを使用して実行されてもよい。少なくとも一実施例では、推論サーバのインスタンスは、モデルに(任意選択でモデルの複数のバージョンに)関連付けられてもよい。少なくとも一実施例では、モデルに対して推論を実行する要求が受信されたとき、推論サーバのインスタンスが存在しない場合には、新規のインスタンスがロードされてもよい。少なくとも一実施例では、推論サーバをスタートするとき、モデルが推論サーバに渡されてもよく、それにより、推論サーバが異なるインスタンスとして実行されている限り、同じコンテナを使用して異なるモデルにサービス提供されてもよい。
少なくとも一実施例では、アプリケーションの実行中、所与のアプリケーションについて推論要求が受信されてもよく、(たとえば、推論サーバのインスタンスをホストする)コンテナが(まだロードされていなければ)ロードされてもよく、開始プロシージャがコールされてもよい。少なくとも一実施例では、コンテナの事前処理論理が、(たとえばCPU及び/又はGPUを使用して)入力データに対する任意の追加的な事前処理をロード、デコード、及び/又は実行してもよい。少なくとも一実施例では、推論のためにデータが準備されると、コンテナは、必要に応じてデータに推論を実行してもよい。少なくとも一実施例では、これは1つの画像(たとえば手のX線)に対する単一の推論コールを含んでもよく、又は何百もの画像(たとえば胸のCT)について推論を要求してもよい。少なくとも一実施例では、アプリケーションは、完了前に結果を要約してもよく、これは限定することなく、単一の信頼性スコア、ピクセル・レベルのセグメント化、ボクセル・レベルのセグメント化、視覚化の生成、又は所見を要約するためのテキストの生成を含んでもよい。少なくとも一実施例では、異なるモデル又はアプリケーションには、異なる優先順位が割り当てられてもよい。たとえば、リアルタイム(TAT1分未満)の優先順位を有するモデルもあれば、低優先順位(たとえば、TAT10分未満)を有するモデルもある。少なくとも一実施例では、モデル実行時間は、要求元の施設又はエンティティから測定されてもよく、推論サービスに対する実行に加えてパートナー・ネットワーク横断時間を含んでもよい。
少なくとも一実施例では、サービス3920と推論アプリケーションの間での要求の移行は、ソフトウェア開発キット(SDK)の後ろに隠されてもよく、キューを通して頑健な移送が提供されてもよい。少なくとも一実施例では、個々のアプリケーション/テナントIDの組合せを求めて、要求がAPIを介してキューに入れられ、SDKは、キューから要求を引き出し、要求をアプリケーションに与える。少なくとも一実施例では、SDKが要求をピックアップする環境において、キューの名称が提供されてもよい。少なくとも一実施例では、キューを介した非同期の通信は、その通信が利用可能になったときに、その通信によって、アプリケーションの任意のインスタンスがワークをピックアップできるようになるので、有用な場合がある。少なくとも一実施例では、結果はキューを介して返送されて、データが失われないようにしてもよい。少なくとも一実施例では、最高優先順位のワークは、アプリケーションのほとんどのインスタンスがキューに接続された状態のキューに進むことができ、一方で最低優先順位のワークは、1つのインスタンスがキューに接続された状態の、受信した順番にタスクを処理するキューに進むことができるので、キューは、ワークをセグメント化する機能も提供することができる。少なくとも一実施例では、アプリケーションは、クラウド4026に生成されたGPU加速インスタンス上で実行されてもよく、推論サービスは、GPU上で推論を実行してもよい。
少なくとも一実施例では、視覚化サービス4020を利用して、アプリケーション及び/又は導入パイプライン4010の出力を見るための視覚化が生成されてもよい。少なくとも一実施例では、視覚化を生成するために、視覚化サービス4020によってGPU4022が利用されてもよい。少なくとも一実施例では、レイ・トレーシングなどのレンダリング効果が、視覚化サービス4020によって実装されて、より高品質の視覚化が生成されてもよい。少なくとも一実施例では、視覚化は、2D画像のレンダリング、3Dボリュームのレンダリング、3Dボリュームの再構築、2Dトモグラフィ・スライス、仮想現実表示、拡張現実表示などを、限定することなく含んでもよい。少なくとも一実施例では、仮想化された環境を使用して、システムのユーザが対話するための仮想のインタラクティブ表示又はインタラクティブ環境(たとえば、仮想環境)が生成されてもよい。少なくとも一実施例では、視覚化サービス4020は、内部ビジュアライザ、シネマティクス、及び/又は他のレンダリング若しくは画像処理の能力若しくは機能(たとえば、レイ・トレーシング、ラスタ化、内部光学など)を含んでもよい。
少なくとも一実施例では、ハードウェア3922は、GPU4022、AIシステム4024、クラウド4026、並びに/又は訓練システム3904及び/若しくは導入システム3906を実行するために使用される任意の他のハードウェアを含んでもよい。少なくとも一実施例では、GPU4022(たとえば、NVIDIAのTESLA及び/又はQUADROのGPU)は、任意の数のGPUを含んでもよく、これらは、計算サービス4016、AIサービス4018、視覚化サービス4020、他のサービス、及び/又はソフトウェア3918の任意の特徴若しくは機能の処理タスクを実行するために使用されてもよい。たとえば、AIサービス4018に関して、GPU4022を使用して、撮像データ(又は機械学習モデルによって使用される他のタイプのデータ)に対して事前処理が実行されてもよく、機械学習モデルの出力に対して事後処理が実行されてもよく、且つ/又は推論が実行されてもよい(たとえば、機械学習モデルが実行されてもよい)。少なくとも一実施例では、クラウド4026、AIシステム4024、及び/又はシステム4000の他の構成要素は、GPU4022を使用してもよい。少なくとも一実施例では、クラウド4026は、深層学習タスクのためにGPU最適化されたプラットフォームを含んでもよい。少なくとも一実施例では、AIシステム4024は、GPUを使用してもよく、クラウド4026、又は深層学習若しくは推論の役割を課された少なくとも一部分は、1つ又は複数のAIシステム4024を使用して実行されてもよい。したがって、ハードウェア3922は、個別構成要素として示されているが、これは限定を意図したものではなく、ハードウェア3922の任意の構成要素が、ハードウェア3922の任意の他の構成要素と組み合わされてもよく、それらによって利用されてもよい。
少なくとも一実施例では、AIシステム4024は、推論、深層学習、機械学習、及び/又は他の人工知能タスク向けに構成された専用のコンピューティング・システム(たとえば、スーパーコンピュータ又はHPC)を含んでもよい。少なくとも一実施例では、AIシステム4024(たとえば、NVIDIAのDGX)は、GPU最適化されたソフトウェア(たとえば、ソフトウェア・スタック)を含んでもよく、これは、CPU、RAM、ストレージ、及び/又は他の構成要素、特徴、若しくは機能に加えて、複数のGPU4022を使用して実行されてもよい。少なくとも一実施例では、1つ又は複数のAIシステム4024は、システム4000の一部又はすべてのAIベースの処理タスクを実行するために、(たとえば、データセンタにおいて)クラウド4026に実装されてもよい。
少なくとも一実施例では、クラウド4026は、GPU加速化インフラストラクチャ(たとえば、NVIDIAのNGC)を含んでもよく、これは、システム4000の処理タスクを実行するためのGPU最適化されたプラットフォームを提供してもよい。少なくとも一実施例では、クラウド4026は、システム4000のAIベースのタスクのうちの1つ又は複数を実行するためのAIシステム4024を(たとえば、ハードウェア抽象化及びスケーリングのプラットフォームとして)含んでもよい。少なくとも一実施例では、クラウド4026は、複数のGPUを利用してアプリケーション・オーケストレーション・システム4028と統合されて、アプリケーションとサービス3920の間でシームレスなスケーリング及びロード・バランシングを可能にしてもよい。少なくとも一実施例では、クラウド4026は、本明細書に記載する計算サービス4016、AIサービス4018、及び/又は視覚化サービス4020を含むシステム4000のサービス3920の少なくとも一部を実行する役割を課されてもよい。少なくとも一実施例では、クラウド4026は、大小のバッチ推論(たとえば、NVIDIAのテンソルRTの実行)を実行してもよく、加速化された並列コンピューティングのAPI及びプラットフォーム4030(たとえば、NVIDIAのCUDA)を提供してもよく、アプリケーション・オーケストレーション・システム4028(たとえば、KUBERNETES)を実行してもよく、グラフィックス・レンダリングのAPI及びプラットフォーム(たとえば、高品質のシネマティクスを生成するためのレイ・トレーシング、2Dグラフィックス、3Dグラフィックス、及び/又は他のレンダリング技法)を提供してもよく、且つ/又はシステム4000のための他の機能を提供してもよい。
少なくとも一実施例では、患者の機密性を保護するために(たとえば、患者のデータ又は記録が構外で使用されることになる場合)、クラウド4026は、深層学習コンテナ・レジストリなどのレジストリを含んでもよい。少なくとも一実施例では、レジストリは、患者データに対する事前処理、事後処理、又は他の処理タスクを実行できるアプリケーションのインスタンス化のためのコンテナを記憶してもよい。少なくとも一実施例では、クラウド4026は、患者データ並びにセンサ・データをコンテナに含むデータを受信してもよく、これらのコンテナにおいてセンサ・データについてのみ要求された処理を実行してもよく、次いで、いずれも患者データを抽出、記憶、又は他のやり方でそれにアクセスする必要なしに、結果の出力及び/又は視覚化を適切なパーティ及び/又はデバイス(たとえば、視覚化又は診断に使用される構内の医療デバイス)に転送してもよい。少なくとも一実施例では、患者データの機密性は、HIPAA及び/又は他のデータ規定に準拠して保護される。
図41は、少なくとも一実施例による、撮像データを処理するための導入パイプライン4010Aの実例の図を含む。少なくとも一実施例では、システム4000、具体的には導入システム3906は、導入パイプライン4010Aをカスタマイズ、更新、及び/又は統合して1つ若しくは複数の生成環境にするために使用されてもよい。少なくとも一実施例では、図41の導入パイプライン4010Aは、施設(たとえば、病院、クリニック、研究所、リサーチ環境など)において特定のユーザ(又はユーザのチーム)によってカスタム定義できる導入パイプライン4010Aの非限定的な実例を含む。少なくとも一実施例では、CTスキャナ4102用に導入パイプライン4010Aを定義するために、ユーザは、CTスキャナ4102によって生成される撮像データに対して特定の機能又はタスクを実行する1つ又は複数のアプリケーションを、たとえばコンテナ・レジストリから選択してもよい。少なくとも一実施例では、アプリケーションは、システム4000のサービス3920及び/又はハードウェア3922を利用できるコンテナとして、導入パイプライン4010Aに適用されてもよい。さらに、導入パイプライン4010Aは、アプリケーションによって使用されるデータを準備するように実装することができる追加の処理タスク又はアプリケーションを含んでもよい(たとえば、DICOMアダプタ4002B及びDICOMリーダ4106が、導入パイプライン4010Aにおいて使用されて、CT再構築4108、器官セグメント化4110などによって使用されるデータを準備してもよい)。少なくとも一実施例では、導入パイプライン4010Aは、一貫性のある導入、1回限りの使用、又は別の頻度若しくは間隔に合わせてカスタマイズ又は選択されてもよい。少なくとも一実施例では、ユーザは、特定の間隔で何人かの対象者について、CT再構築4108及び器官セグメント化4110をおこないたいと思うことがあり、したがって、その期間にわたってパイプライン4010Aを導入してもよい。少なくとも一実施例では、ユーザはシステム4000からの要求ごとに、その要求のためにそのデータに対してユーザが実行したい処理のアプリケーションを選択してもよい。少なくとも一実施例では、導入パイプライン4010Aは、任意の間隔で調節されてもよく、システム4000内のコンテナ構造は適応性及びスケーラビリティがあるので、これはシームレスなプロセスとすることができる。
少なくとも一実施例では、図41の導入パイプライン4010Aは、患者又は対象者の撮像データを生成するCTスキャナ4102を含んでもよい。少なくとも一実施例では、CTスキャナ4102からの撮像データは、CTスキャナ4102を収容する施設に関連付けられたPACSサーバ4104に記憶されてもよい。少なくとも一実施例では、PACSサーバ4104は、ソフトウェア及び/又はハードウェアの構成要素を含んでもよく、これらは施設において撮像モダリティ(たとえば、CTスキャナ4102)と直接インターフェースをとってもよい。少なくとも一実施例では、DICOMアダプタ4002Bは、DICOMプロトコルを使用してDICOM物体の送信及び受信を可能にしてもよい。少なくとも一実施例では、DICOMアダプタ4002Bは、導入パイプライン4010Aによって使用するために、PACSサーバからのDICOMデータの準備又は構成を支援してもよい。少なくとも一実施例では、DICOMデータがDICOMアダプタ4002Bを介して処理されると、パイプライン・マネージャ4012は、導入パイプライン4010Aを通るようにデータをルーティングしてもよい。少なくとも一実施例では、DICOMリーダ4106は、画像ファイル及び関連する任意のメタデータをDICOMデータ(たとえば、視覚化4116Aに示す生のシノグラム・データ)から抽出してもよい。少なくとも一実施例では、抽出された作業ファイルは、導入パイプライン4010Aの他のアプリケーションによってより高速に処理できるようにキャッシュに記憶されてもよい。少なくとも一実施例では、DICOMリーダ4106がデータの抽出及び/又は記憶を終了したら、完了信号がパイプライン・マネージャ4012に通信されてもよい。少なくとも一実施例では、次いでパイプライン・マネージャ4012は、導入パイプライン4010A内の1つ又は複数の他のアプリケーション若しくはコンテナを開始してもよく、又はそれをコールしてもよい。
少なくとも一実施例では、CT再構築4108のアプリケーションによる処理のためにデータ(たとえば、生のシノグラム・データ)が利用可能になると、CT再構築4108のアプリケーション及び/又はコンテナが実行されてもよい。少なくとも一実施例では、CT再構築4108は、生のシノグラム・データをキャッシュから読み取り、生のシノグラム・データから(たとえば、視覚化4116Bに示す)画像ファイルを再構築し、結果として生じる画像ファイルをキャッシュに記憶してもよい。少なくとも一実施例では、再構築の完了時、パイプライン・マネージャ4012は、再構築タスクが完了したことを通知されてもよい。少なくとも一実施例では、再構築が完了し、再構築された画像ファイルがキャッシュ(又は他のストレージ・デバイス)に記憶されると、器官セグメント化4110のアプリケーション及び/又はコンテナが、パイプライン・マネージャ4012によってトリガされてもよい。少なくとも一実施例では、器官セグメント化4110のアプリケーション及び/又はコンテナは、キャッシュから画像ファイルを読み取り、画像ファイルを推論に適したフォーマットに正規化又は変換し(たとえば、画像ファイルを機械学習モデルの入力解像度に変換し)、正規化された画像に対して推論を実行してもよい。少なくとも一実施例では、正規化された画像に対して推論を実行するために、器官セグメント化4110のアプリケーション及び/又はコンテナは、サービス3920に依存してもよく、パイプライン・マネージャ4012及び/又はアプリケーション・オーケストレーション・システム4028は、器官セグメント化4110のアプリケーション及び/又はコンテナによるサービス3920の使用を容易にしてもよい。少なくとも一実施例では、たとえば器官セグメント化4110のアプリケーション及び/又はコンテナは、AIサービス4018を利用して正規化画像に対して推論を実行してもよく、AIサービス4018はハードウェア3922(たとえば、AIシステム4024)を利用してAIサービス4018を実行してもよい。少なくとも一実施例では、推論の結果は(たとえば、視覚化4116Cに示す)マスク・ファイルであってもよく、このファイルはキャッシュ(又は他のストレージ・デバイス)に記憶されてもよい。
少なくとも一実施例では、DICOMデータ及び/又はDICOMデータから抽出されたデータを処理するアプリケーションが処理を完了したら、パイプライン・マネージャ4012向けに信号が生成されてもよい。少なくとも一実施例では、次いでパイプライン・マネージャ4012は、DICOMライタ4112を実行してキャッシュ(又は他のストレージ・デバイス)から結果を読み取り、要求を生成した施設のユーザによる使用のため、結果をDICOMフォーマットに(たとえば、DICOM出力4114として)パッケージ化してもよい。少なくとも一実施例では、次いでDICOM出力4114は、DICOMアダプタ4002Bに送信されて、(たとえば、施設のDICOMビューワによる視聴のために)PACSサーバ4104に記憶するようにDICOM出力4114が準備されてもよい。少なくとも一実施例では、再構築及びセグメント化の要求に応答して、視覚化4116B及び4116Cが生成され、診断、リサーチ、及び/又は他の目的のためにユーザにとって利用可能にされてもよい。
導入パイプライン4010Aでは連続したアプリケーションとして示されているが、CT再構築4108及び器官セグメント化4110のアプリケーションは、少なくとも一実施例において並列で処理されてもよい。少なくとも一実施例では、アプリケーションが互いに依存性を有しておらず、(たとえば、DICOMリーダ4106がデータを抽出した後に)アプリケーションごとにデータが利用可能である場合、アプリケーションは同時に、実質的に同時に、又は一部が重なって実行されてもよい。少なくとも一実施例では、2つ以上のアプリケーションが同様のサービス3920を要求する場合、システム4000のスケジューラを使用して、様々なアプリケーション間で計算又は処理のリソースのロード・バランシングが行われ、それらを分散させてもよい。少なくとも一実施例では、いくつかの実施例において、導入パイプライン4010Aのランタイムを短縮してリアルタイムの結果を提供するために、並列コンピューティング・プラットフォーム4030を使用してアプリケーションのための並列処理が実行されてもよい。
少なくとも一実施例では、図42A〜図42Bを参照すると、導入システム3906は、画像処理、セグメント化、強調、AI、視覚化、及び推論などの異なる機能を、撮像デバイス(たとえば、CTスキャナ、X線機械、MRI機械など)、シーケンシング・デバイス、ゲノミクス・デバイス、及び/又は他のタイプのデバイスを用いて実行するための1つ又は複数の仮想機器として実装されてもよい。少なくとも一実施例では、システム4000は、ソフトウェア定義された導入パイプライン4010を含むことができる仮想機器の生成及び提供を可能にしてもよく、この導入パイプライン4010は、デバイスによって生成された生/未処理の入力データを受信し、処理済み/再構築済みのデータを出力してもよい。少なくとも一実施例では、仮想機器を表す導入パイプライン4010(たとえば、4010A及び4010B)は、機械学習モデルを利用することなどにより、知能をパイプラインに実装して、コンテナ化された推論サポートをシステムに提供してもよい。少なくとも一実施例では、仮想機器は、アプリケーションのインスタンスをそれぞれが含む任意の数のコンテナを実行してもよい。少なくとも一実施例では、リアルタイムの処理が望ましい場合などでは、仮想機器を表す導入パイプライン4010は静的であってもよく(たとえば、コンテナ及び/又はアプリケーションが設定されていてもよく)、一方他の実例では、仮想機器用のコンテナ及び/又はアプリケーションが、アプリケーション又はリソースのプール(たとえばコンテナ・レジストリ内)から(たとえば要求ごとに)選択されてもよい。
少なくとも一実施例では、システム4000は、たとえば施設の放射線機械、撮像デバイス、及び/又は別のタイプのデバイスに隣接して導入された、又は他のやり方でそれらと通信するコンピューティング・システムにおいて、施設構内の1つ又は複数の仮想機器としてインスタンス化されてもよく、又は実行されてもよい。しかし少なくとも一実施例では、構内でのインストールは、デバイス自体(たとえば、撮像デバイスに統合されたコンピューティング・システム)内で、ローカルなデータセンタ(たとえば、構内のデータセンタ)で、及び/又はクラウド環境(たとえば、クラウド4026)でインスタンス化又は実行されてもよい。少なくとも一実施例では、仮想機器として動作する導入システム3906は、いくつかの実例においてスーパーコンピュータ又は他のHPCシステムによってインスタンス化されてもよい。少なくとも一実施例では、構内でのインストールにより、リアルタイムの処理のために(たとえば、イーサネット(登録商標)を介したRFなど、高スループットのローカル通信インターフェースを介した)広帯域の使用が可能になる。少なくとも一実施例では、リアルタイム又はほぼリアルタイムの処理は、正確な診断及び分析のために即時の視覚化が期待され必要とされる超音波デバイス又は他の撮像モダリティを仮想機器がサポートする場合に、特に有用なことがある。少なくとも一実施例では、ローカルな要求が構内の容量又は能力を超過するとき、クラウド・コンピューティング・アーキテクチャは、クラウド・コンピューティングのサービス・プロバイダ又は他の計算クラスタに対する動的バーストを実行することができる。少なくとも一実施例では、クラウド・アーキテクチャは、実装されると、訓練システム3904に関して本明細書に記載のニューラル・ネットワーク又は他の機械学習モデルを訓練するように調整されてもよい。少なくとも一実施例では、訓練パイプラインが定位置にあるとき、機械学習モデルは、それがサポートするデバイスからの追加情報を処理するとき、継続的に学習及び改善されてもよい。少なくとも一実施例では、仮想機器は、追加データ、新規データ、既存の機械学習モデル、及び/又は新規若しくは更新済みの機械学習モデルを使用して、継続的に改善されてもよい。
少なくとも一実施例では、コンピューティング・システムは、本明細書に記載のハードウェア3922の一部又はすべてを含んでもよく、ハードウェア3922は、デバイス内、デバイスに結合され近位に位置するコンピューティング・デバイスの一部として、施設のローカル・データセンタ内、及び/又はクラウド4026内を含む複数のやり方のうちの任意のやり方で分散されてもよい。少なくとも一実施例では、導入システム3906及び関連付けられたアプリケーション又はコンテナは、ソフトウェアに(たとえば、アプリケーションの個別のコンテナ化インスタンスとして)生成されるので、仮想機器の挙動、動作、及び構成、並びに仮想機器によって生成される出力は、仮想機器がサポートするデバイスの生の出力を変える又は変更する必要なしに、望み通りに修正又はカスタマイズされることが可能である。本明細書に記載の撮像システムは、ロボット把持を決定するための深度カメラとして使用されてもよい。たとえば、本明細書に記載の技法はロボット手術を実行するために使用されてもよく、撮像技法を使用して人間の器官又は異物の点群が生成され、次いでこれらの器官又は異物がロボット・グリッパを使用して把持される、又はロボット・マニピュレータで他のやり方で操作されてもよい。
図42Aは、少なくとも一実施例による、超音波デバイスをサポートする仮想器具の実例データ・フロー図を含む。少なくとも一実施例では、導入パイプライン4010Bは、システム4000のサービス3920のうちの1つ又は複数を利用してもよい。少なくとも一実施例では、導入パイプライン4010B及びサービス3920は、ローカルかクラウド4026のいずれかにおいて、システムのハードウェア3922を利用してもよい。少なくとも一実施例では、図示していないが、プロセス4200は、パイプライン・マネージャ4012、アプリケーション・オーケストレーション・システム4028、及び/又は並列コンピューティング・プラットフォーム4030によって促進されてもよい。
少なくとも一実施例では、プロセス4200は、超音波デバイス4202から撮像データを受信することを含んでもよい。少なくとも一実施例では、撮像データは、DICOMフォーマット(又はRIS、CIS、REST準拠、RPC、生などの他のフォーマット)でPACSサーバに記憶されてもよく、超音波デバイス4202用の仮想機器(たとえば仮想超音波)として選択又はカスタマイズされた導入パイプライン4010を通して処理するために、システム4000によって受信されてもよい。少なくとも一実施例では、撮像データは、撮像デバイス(たとえば、超音波デバイス4202)から直接受信されてもよく、仮想機器によって処理されてもよい。少なくとも一実施例では、撮像デバイスと仮想機器の間に通信可能に結合されたトランスデューサ又は他の信号変換器は、撮像デバイスによって生成された信号データを、仮想機器によって処理することができる画像データに変換してもよい。少なくとも一実施例では、生データ及び/又は画像データは、導入パイプライン4010Bのアプリケーション又はコンテナによって使用されるデータを抽出するために、DICOMリーダ4106に適用されてもよい。少なくとも一実施例では、DICOMリーダ4106は、アプリケーション又はコンテナによって使用されるデータを抽出、リサイズ、リスケーリング、及び/又は他のやり方で準備するためのサービス3920として(たとえば、計算サービス4016のうちの1つとして)、データ拡張ライブラリ4214(たとえば、NVIDIAのDALI(登録商標))を利用してもよい。
少なくとも一実施例では、データが準備されると、再構築4206のアプリケーション及び/又はコンテナが実行されて、超音波デバイス4202からのデータが画像ファイルに再構築されてもよい。少なくとも一実施例では、再構築4206の後、又は再構築4206と同時に、検出4208のアプリケーション及び/又はコンテナが、異常検出、物体検出、特徴検出、及び/又はデータに関する他の検出タスクのために実行されてもよい。少なくとも一実施例では、再構築4206中に生成された画像ファイルは、検出4208中に使用されて、異常、物体、特徴などが識別されてもよい。少なくとも一実施例では、検出4208のアプリケーションは、推論エンジン4216を(たとえば、AIサービス4018のうちの1つとして)利用して、データについて推論を実行して検出を生成してもよい。少なくとも一実施例では、(たとえば、訓練システム3904からの)1つ又は複数の機械学習モデルは、検出4208のアプリケーションによって実行又はコールされてもよい。
少なくとも一実施例では、再構築4206及び/又は検出4208が完了すると、これらのアプリケーション及び/又はコンテナからのデータ出力を使用して、ワークステーション又はディスプレイ端末に表示される視覚化4212(たとえば、グレースケール出力)などの視覚化4210が生成されてもよい。少なくとも一実施例では、視覚化により、超音波デバイス4202に対する導入パイプライン4010Bの結果を、技術者又は他のユーザが視覚化できるようになる。少なくとも一実施例では、視覚化4210は、システム4000のレンダリング構成要素4218(たとえば、視覚化サービス4020のうちの1つ)を利用することによって、実行されてもよい。少なくとも一実施例では、レンダリング構成要素4218は、2D、OpenGL、又はレイ・トレーシングのサービスを実行して、視覚化4212を生成してもよい。
図42Bは、少なくとも一実施例による、CTスキャナをサポートする仮想器具の実例データ・フロー図を含む。少なくとも一実施例では、導入パイプライン4010Cは、システム4000のサービス3920のうちの1つ又は複数を利用してもよい。少なくとも一実施例では、導入パイプライン4010C及びサービス3920は、ローカルかクラウド4026のいずれかにおいて、システムのハードウェア3922を利用してもよい。少なくとも一実施例では、図示していないが、プロセス4220は、パイプライン・マネージャ4012、アプリケーション・オーケストレーション・システム4028、及び/又は並列コンピューティング・プラットフォーム4030によって促進されてもよい。
少なくとも一実施例では、プロセス4220は、生データを生成するCTスキャナ4222を含んでもよく、この生データは、DICOMリーダ4106によって(たとえば、直接、PACSサーバ4104を介して、処理後になど)受信されてもよい。少なくとも一実施例では、(導入パイプライン4010Cによってインスタンス化された)仮想CTは、患者を監視するため(たとえば、患者動き検出AI4226)且つ/又はCTスキャナ4222の露出を(たとえば、露出制御AI4224を使用して)調節又は最適化するための、第1のリアルタイム・パイプラインを含んでもよい。少なくとも一実施例では、アプリケーションのうちの1つ又は複数(たとえば、4224及び4226)は、AIサービス4018などのサービス3920を利用してもよい。少なくとも一実施例では、露出制御AI4224のアプリケーション(又はコンテナ)及び/又は患者動き検出AI4226のアプリケーション(コンテナ)の出力は、CTスキャナ4222及び/又は技術者に対するフィードバックとして使用されて、露出(又はCTスキャナ4222の他の設定)が調節されてもよく、且つ/又は患者にあまり動かないように伝えられてもよい。
少なくとも一実施例では、導入パイプライン4010Cは、CTスキャナ4222によって生成されるデータを分析するための非リアルタイム・パイプラインを含んでもよい。少なくとも一実施例では、第2のパイプラインは、CT再構築4108のアプリケーション及び/又はコンテナ、粗検出AI4228のアプリケーション及び/又はコンテナ、(たとえば、粗検出AI4228によってある特定の結果が検出された場合の)精検出AI4232のアプリケーション及び/又はコンテナ、視覚化4230のアプリケーション及び/又はコンテナ、及びDICOMライタ4112(及び/又はRIS、CIS、REST準拠、RPC、生など他のタイプのデータ・ライタ)のアプリケーション及び/又はコンテナを含んでもよい。少なくとも一実施例では、CTスキャナ4222によって生成された生データは、(仮想CT機器としてインスタンス化された)導入パイプライン4010Cのパイプラインに通されて、結果が生成されてもよい。少なくとも一実施例では、DICOMライタ4112からの結果は、表示のために送信されてもよく、且つ/又は技術者、開業医、若しくは他のユーザによって後で検索、分析、又は表示できるようにPACSサーバ4104に記憶されてもよい。
図43Aは、少なくとも一実施例による、機械学習モデルを訓練、再訓練、又は更新するためのプロセス4300のデータ・フロー図を示す。少なくとも一実施例では、プロセス4300は、図40のシステム4000を非限定的な実例として使用して、実行されてもよい。少なくとも一実施例では、プロセス4300は、本明細書に記載のシステム4000のサービス3920及び/又はハードウェア3922を利用してもよい。少なくとも一実施例では、プロセス4300によって生成される精緻化モデル4312は、導入パイプライン4010内の1つ又は複数のコンテナ化アプリケーションのために、導入システム3906によって実行されてもよい。
少なくとも一実施例では、モデル訓練3914は、新規訓練データ(たとえば、顧客データセット4306、及び/又は入力データに関連付けられた新規グラウンド・トゥルース・データなどの新規入力データ)を使用して、初期モデル4304(たとえば、事前訓練済みモデル)を再訓練又は更新することを含んでもよい。少なくとも一実施例では、初期モデル4304を再訓練又は更新するために、初期モデル4304の出力又は損失層がリセットされてもよく、削除されてもよく、且つ/又は更新済み若しくは新規の出力若しくは損失層と置換されてもよい。少なくとも一実施例では、初期モデル4304は、以前に微調整された、前の訓練から残っているパラメータ(たとえば、重み及び/又はバイアス)を有してもよく、それにより、訓練又は再訓練3914は、最初からモデルを訓練するほど長い時間がかからず、又は多くの処理を必要としなくても済む。少なくとも一実施例では、モデル訓練3914の間に、初期モデル4304のリセット又は置換された出力又は損失層を有することにより、パラメータは、新規の顧客データセット4306(たとえば、図39の画像データ3908)について予測を生成する際の出力又は損失層の精度に関連付けられた損失計算に基づき、新規データセットのために更新又は再調整されてもよい。
少なくとも一実施例では、事前訓練済みモデル4006は、データストア又はレジストリ(たとえば、図39のモデル・レジストリ3924)に記憶されてもよい。少なくとも一実施例では、事前訓練済みモデル4006は、少なくとも部分的に、プロセス4300を実行する施設とは異なる1つ又は複数の施設において訓練済みであってもよい。少なくとも一実施例では、異なる施設の患者、対象者、顧客のプライバシー及び権利を保護するために、事前訓練済みモデル4006は、構内で生成された顧客又は患者のデータを使用して、構内で訓練されたものであってもよい。少なくとも一実施例では、事前訓練済みモデル4006は、クラウド4026及び/又は他のハードウェア3922を使用して訓練されてもよいが、プライバシー保護された機密の患者データは、クラウド4026(又は他の構外のハードウェア)の任意の構成要素に転送できず、それらの構成要素によって使用されず、又はアクセス不可能であってもよい。少なくとも一実施例では、事前訓練済みモデル4006が2つ以上の施設からの患者データを使用して訓練される場合、事前訓練済みモデル4006は、各施設について個々に訓練されてから、別の施設からの患者若しくは顧客のデータについて訓練されてもよい。少なくとも一実施例では、顧客又は患者のデータが(たとえば、実験での使用を目的とした権利放棄などによって)プライバシー問題から解放されている場合、又は顧客若しくは患者のデータがパブリック・データセットに含まれる場合などには、任意の数の施設からの顧客又は患者のデータを使用して、データセンタ又は他のクラウド・コンピューティング・インフラストラクチャなど、構内及び/又は構外で事前訓練済みモデル4006が訓練されてもよい。
少なくとも一実施例では、導入パイプライン4010で使用するアプリケーションを選択するとき、ユーザは、特定のアプリケーションで使用することになる機械学習モデルも選択することができる。少なくとも一実施例では、ユーザは、使用するモデルを有していないことがあり、したがって、ユーザはアプリケーションとともに使用する事前訓練済みモデル4006を選択してもよい。少なくとも一実施例では、訓練済みモデル4006は、(たとえば、患者の多様性、人口統計、使用される医療用撮像デバイスのタイプなどに基づき)ユーザの施設の顧客データセット4306について正確な結果を生成するように最適化されてもよい。少なくとも一実施例では、事前訓練済みモデル4006を、アプリケーションとともに使用するために導入パイプライン4010に導入する前に、事前訓練済みモデル4006は、それぞれの施設において使用するために更新、再訓練、及び/又は微調整されてもよい。
少なくとも一実施例では、ユーザは、更新、再訓練、及び/又は微調整されることになる事前訓練済みモデル4006を選択してもよく、事前訓練済みモデル4006は、プロセス4300内でシステム3904を訓練するための初期モデル4304と呼ばれてもよい。少なくとも一実施例では、顧客データセット4306(たとえば、施設のデバイスによって生成された撮像データ、ゲノミクス・データ、シーケンシング・データ、又は他のタイプのデータ)を使用して、初期モデル4304について(限定することなく転送学習(transfer learning)を含んでもよい)モデル訓練3914が実行されて、精緻化モデル4312が生成されてもよい。少なくとも一実施例では、顧客データセット4306に対応するグラウンド・トゥルース・データが、訓練システム3904によって生成されてもよい。少なくとも一実施例では、グラウンド・トゥルース・データは、(たとえば、図39のラベル付けされたクリニック・データ3912として)施設において臨床医、科学者、医師、開業医によって、少なくとも部分的に生成されてもよい。
少なくとも一実施例では、AI支援アノテーション3910がいくつかの実例において使用されて、グラウンド・トゥルース・データが生成されてもよい。少なくとも一実施例では、(たとえば、AI支援アノテーションSDKを使用して実装された)AI支援アノテーション3910は、機械学習モデル(たとえば、ニューラル・ネットワーク)を利用して、顧客データセットについて示唆又は予測されるグラウンド・トゥルース・データを生成してもよい。少なくとも一実施例では、ユーザ4310は、コンピューティング・デバイス4308上のユーザ・インターフェース(グラフィカル・ユーザ・インターフェース(GUI))内でアノテーション・ツールを使用してもよい。
少なくとも一実施例では、ユーザ4310は、コンピューティング・デバイス4308を介してGUIと対話して、アノテーション又は自動アノテーションを編集又は微調整してもよい。少なくとも一実施例では、ポリゴン編集特徴を使用して、ポリゴンの頂点をより正確なロケーション又は微調整されたロケーションに移動させてもよい。
少なくとも一実施例では、顧客データセット4306が、関連付けられたグラウンド・トゥルース・データを得ると、(たとえば、AI支援アノテーション、手動ラベリングなどからの)グラウンド・トゥルース・データが、モデル訓練3914中に使用されて、精緻化モデル4312が生成されてもよい。少なくとも一実施例では、顧客データセット4306は、初期モデル4304に任意の回数、適用されてもよく、グラウンド・トゥルース・データは、精緻化モデル4312について許容可能なレベルの精度が達成されるまで、初期モデル4304のパラメータを更新するために使用されてもよい。少なくとも一実施例では、精緻化モデル4312が生成されると、精緻化モデル4312は、医療用撮像データに対して1つ又は複数の処理タスクを実行するために、施設において1つ又は複数の導入パイプライン4010内に導入されてもよい。
少なくとも一実施例では、精緻化モデル4312は、別の施設によって選択されることになるモデル・レジストリ3924の事前訓練済みモデル4006にアップロードされてもよい。少なくとも一実施例では、このプロセスは任意の数の施設において完了されてもよく、それにより精緻化モデル4312は、新規データセットについて任意の回数さらに精緻化されて、より普遍的なモデルが生成されてもよい。
ロボット把持の評価及び精緻化の動作を実行するように訓練されたモデルは、様々な実例において、上に記載の技法を利用してもよい。
図43Bは、少なくとも一実施例による、事前訓練済みのアノテーション・モデルを用いてアノテーション・ツールを強化するためのクライアント・サーバのアーキテクチャの実例の図である。少なくとも一実施例では、AI支援アノテーション・ツール4336は、クライアント・サーバのアーキテクチャ4332に基づきインスタンス化されてもよい。少なくとも一実施例では、撮像アプリケーションのアノテーション・ツール4336は、たとえば放射線医が器官及び異常を識別するのを支援してもよい。少なくとも一実施例では、撮像アプリケーションは、非限定的な実例として(たとえば、3DのMRI又はCRスキャンの)生画像4334において、特定の対象器官上の数少ない極値点をユーザ4310が識別するのを援助し、特定の器官の2Dスライスすべてについて自動アノテーション付けされた結果を受信するソフトウェア・ツールを含んでもよい。少なくとも一実施例では、結果は、訓練データ4338としてデータストアに記憶されてもよく、(たとえば、限定することなく)訓練用のグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、コンピューティング・デバイス4308が、AI支援アノテーション3910のために極値点を送るとき、たとえば深層学習モデルがこのデータを入力として受信してもよく、セグメント化された器官又は異常の推論結果を返してもよい。少なくとも一実施例では、図43BのAI支援アノテーション・ツール4336Bなどの事前インスタンス化されたアノテーション・ツールは、たとえばアノテーション・モデル・レジストリに記憶された事前訓練済みモデル4342のセットを含むことができるアノテーション支援サーバ4340などのサーバに、APIコール(たとえば、APIコール4344)をおこなうことによって、拡張されてもよい。少なくとも一実施例では、アノテーション・モデル・レジストリは、特定の器官又は異常に対してAI支援アノテーションを実行するように事前訓練された事前訓練済みモデル4342(たとえば、深層学習モデルなどの機械学習モデル)を記憶してもよい。少なくとも一実施例では、これらのモデルは、訓練パイプライン4004を使用することにより、さらに更新されてもよい。少なくとも一実施例では、事前インストールされたアノテーション・ツールは、ラベル付けされた新規クリニック・データ3912が加えられるにつれて、経時的に改善されてもよい。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1015が使用される。推論及び/又は訓練論理1015に関する詳細は、図10A及び/又は図10Bと併せて本明細書において提供される。
少なくとも一実施例では、単一の半導体プラットフォームとは、単独で単体の半導体ベースの集積回路又はチップを指してもよい。少なくとも一実施例では、マルチ・チップ・モジュールは、オン・チップ動作をシミュレートする接続性が向上した状態で使用されてもよく、従来の中央処理装置(「CPU」)及びバスの実装形態の利用を大幅に改善する。少なくとも一実施例では、ユーザの希望に応じて、半導体プラットフォームとは別々に、又は半導体プラットフォームとの様々な組合せで、様々なモジュールがさらに設置されてもよい。
少なくとも一実施例では、図16に戻って参照すると、機械読取り可能で実行可能なコード若しくはコンピュータ制御論理アルゴリズムの形のコンピュータ・プログラムが、メイン・メモリ1604及び/又は二次ストレージに記憶される。コンピュータ・プログラムは、1つ又は複数のプロセッサによって実行された場合に、少なくとも一実施例による様々な機能をシステム1600が実行できるようにする。少なくとも一実施例では、メモリ1604、ストレージ、及び/又は任意の他のストレージが、コンピュータ読取り可能媒体の考えられる例である。少なくとも一実施例では、二次ストレージとは、フロッピー(登録商標)・ディスク・ドライブ、磁気テープ・ドライブ、コンパクト・ディスク・ドライブ、デジタル多用途ディスク(「DVD」:digital versatile disk)ドライブ、記録デバイス、ユニバーサル・シリアル・バス(「USB」)フラッシュ・メモリなどを表すハード・ディスク・ドライブ及び/若しくはリムーバブル・ストレージ・ドライブなどの任意の好適なストレージ・デバイス又はシステムを指してもよい。少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、CPU1602、並列処理システム1612、CPU1602と並列処理システム1612の両方の機能の少なくとも一部分を実現可能な集積回路、チップセット(たとえば、関連機能を実行するためのユニットとして機能し、販売されるように設計された集積回路のグループなど)、及び/又は集積回路の任意の好適な組合せの文脈において実装される。
少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、汎用コンピュータ・システム、回路板システム、エンタテイメント目的専用のゲーム・コンソール・システム、及び特定用途システムなどの文脈において実装される。少なくとも一実施例では、コンピュータ・システム1600は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイス、モバイル・フォン・デバイス、テレビ、ワークステーション、ゲーム・コンソール、組み込みシステム、及び/又は任意の他のタイプの論理の形をとってもよい。
少なくとも一実施例では、並列処理システム1612は、限定することなく、複数の並列処理ユニット(「PPU」)1614、及び関連メモリ1616を含む。少なくとも一実施例では、PPU1614は、相互接続1618及びスイッチ1620又はマルチプレクサを介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、並列処理システム1612は、計算タスクをPPU1614にわたって分配し、これは、たとえば複数のグラフィックス・プロセッシング・ユニット(「GPU」)のスレッド・ブロックにわたる計算タスクの分配の一部として、並列化可能とすることができる。少なくとも一実施例では、メモリは、PPU1614の一部又は全部にわたって共有され、(たとえば、読取り及び/又は書込みアクセスのために)アクセス可能であるが、こうした共有メモリは、PPU1614に常駐しているローカル・メモリ及びレジスタの使用に対して、性能に不利益をもたらすことがある。少なくとも一実施例では、PPU1614の動作は、_syncthreads()などのコマンドを使用することによって同期され、ここで(たとえば、複数のPPU1614にわたって動作している)ブロック内のすべてのスレッドが、進行前にコードのある一定の実行ポイントに到達する。
本開示の少なくとも一実施例は、以下の条項を考慮して説明することができる。
条項1 コンピュータ・システムであって、1つ又は複数のプロセッサと、1つ又は複数のプロセッサによって実行された結果、コンピュータ・システムに少なくとも、物体向けの把持姿勢のセットを生成することであって、把持姿勢のセットのうちの各把持姿勢が、物体を把持するためのロボットに関連付けられている、生成すること、把持姿勢のセットのうちの少なくとも1つの把持姿勢がロボットを別の物体に接触させると判定すること、把持姿勢のセットから、少なくとも1つの把持姿勢を除外すること、及び把持姿勢のセットから、少なくとも1つの把持姿勢を除外したことに応答して、把持姿勢のセットをロボットに提供することを行わせる実行可能命令を記憶するコンピュータ可読メモリとを備えるコンピュータ・システム。
条項2 実行可能命令が、1つ又は複数のプロセッサによって実行された結果、コンピュータ・システムにさらに、物体の画像情報と他の物体の画像情報とを含む点群を生成すること、物体の画像情報と他の物体の画像情報とを含む点群から、他の物体の画像情報がない修正済み点群を生成することを行わせ、ここで物体向けの把持姿勢のセットが、修正済み点群から生成される条項1に記載のコンピュータ・システム。
条項3 実行可能命令が、1つ又は複数のプロセッサによって実行された結果、コンピュータ・システムにさらに、物体の3次元画像と他の物体の3次元画像とを含む3次元画像情報を深度カメラから取得することを行わせ、ここで物体向けの把持姿勢のセットが、物体の3次元画像情報から生成される、条項1又は2に記載のコンピュータ・システム。
条項4 実行可能命令が、1つ又は複数のプロセッサによって実行された結果、コンピュータ・システムにさらに、物体のセグメント化画像情報と他の物体のセグメント化画像情報とを含むバイナリ・マスクを取得することを行わせ、ここで物体向けの把持姿勢のセットが、物体のセグメント化画像情報から生成される、条項1から3までのいずれか一項に記載のコンピュータ・システム。
条項5 実行可能命令が、1つ又は複数のプロセッサによって実行された結果、コンピュータ・システムにさらに、物体の画像情報と他の物体の画像情報とを含む点群を生成すること、及び修正済み点群を生成するように点群をクロッピングすることを行わせ、ここで物体向けの把持姿勢のセットが、修正済み点群から生成される、条項1から4までのいずれか一項に記載のコンピュータ・システム。
条項6 実行可能命令が、1つ又は複数のプロセッサによって実行された結果、コンピュータ・システムにさらに、物体の画像情報と他の物体の画像情報とを含む点群に3次元境界ボリュームを適用することを行わせ、ここで修正済み点群を生成することが、境界ボリュームの外側の画像情報を除去するように点群をクロッピングすることを含む、条項1から5までのいずれか一項に記載のコンピュータ・システム。
条項7 物体向けの把持姿勢のセットが、点群に基づき把持姿勢を予測するように訓練されたニューラル・ネットワークによって生成される、条項1から6までのいずれか一項に記載のコンピュータ・システム。
条項8 ニューラル・ネットワークが、点群及び潜在変数に基づき把持姿勢を予測するための確定関数を含む変分オートエンコーダであり、潜在変数が、確定関数によって予測された把持姿勢を少なくとも部分的に生成するために使用される所定の潜在空間を規定する、条項7に記載のコンピュータ・システム。
条項9 深度カメラによって生成された画像データを使用して、物体の3次元点群を生成するステップと、物体の3次元点群を使用して把持姿勢のセットを取得するステップと、把持姿勢のセットのうちの少なくとも1つの把持姿勢に関連付けられた干渉情報を判定するステップと、少なくとも1つの把持姿勢に関連付けられた干渉情報を判定したことに基づき、把持姿勢のセットから少なくとも1つの把持姿勢を削除して、精緻化された把持姿勢のセットを生成するステップと、精緻化された把持姿勢のセットをロボットに使用させるステップとを含むコンピュータ実装方法。
条項10 物体の3次元点群を生成するステップが、深度カメラによって生成されたデータを使用して、物体と別の物体との3次元点群を生成するステップを含む、条項9に記載のコンピュータ実装方法。
条項11 把持姿勢のセットのうちの少なくとも1つの把持姿勢に関連付けられた干渉情報を判定するステップは、少なくとも1つの把持姿勢がロボットを別の物体に接触させると判定するステップを含む、条項9又は10に記載のコンピュータ実装方法。
条項12 物体の3次元点群が、複数の物体を含む別の3次元点群に基づいており、他の3次元点群が、深度カメラによって生成された画像データを使用して生成される、条項9から11までのいずれか一項に記載のコンピュータ実装方法。
条項13 物体の3次元点群を生成するように他の3次元点群をクロッピングするステップをさらに含む、条項9から12までのいずれか一項に記載のコンピュータ実装方法。
条項14 他の3次元点群に3次元境界ボックスを適用するステップと、3次元境界ボックスに基づき、物体の3次元点群を生成するように他の3次元点群をクロッピングするステップとをさらに含む、条項9から13までのいずれか一項に記載のコンピュータ実装方法。
条項15 物体のセグメント化画像情報を含むバイナリ・マスクを取得するステップと、物体のセグメント化画像情報を含むバイナリ・マスクから、把持姿勢のセットを生成するステップとをさらに含む、条項9から14までのいずれか一項に記載のコンピュータ実装方法。
条項16 把持姿勢のセットを生成するために変分オートエンコーダを使用するステップであって、変分オートエンコーダが、3次元点群及び潜在変数に基づき把持姿勢を予測するための確定関数を含み、潜在変数が、確定関数によって予測された把持姿勢を少なくとも部分的に生成するために使用される所定の潜在空間を規定する、使用するステップをさらに含む、条項9に記載のコンピュータ実装方法。
条項17 1つ又は複数のプロセッサによって実行された場合に、1つ又は複数のプロセッサに少なくとも、物体向けの把持姿勢のセットを生成することであって、把持姿勢のセットのうちの各把持が、物体を把持するためのロボットに関連付けられている、生成することと、把持姿勢のセットのうちの少なくとも1つの把持姿勢がロボットを別の物体に接触させると判定することと、把持姿勢のセットのうちの少なくとも1つの把持姿勢がロボットを別の物体に接触させると判定したことに基づき、把持姿勢のセットを修正することとを行わせる命令のセットを記憶している機械可読媒体。
条項18 命令のセットが、1つ又は複数のプロセッサによって実行された結果、1つ又は複数のプロセッサにさらに、物体の画像情報と他の物体の画像情報とを含む点群を生成することと、物体の画像情報と他の物体の画像情報とを含む点群から、他の物体の画像情報がない修正済み点群を生成することとを行わせ、ここで物体向けの把持姿勢のセットが、修正済み点群から生成される、条項17に記載の機械可読媒体。
条項19 命令のセットが、1つ又は複数のプロセッサによって実行された結果、1つ又は複数のプロセッサにさらに、物体の3次元画像情報と他の物体の3次元画像情報とを含む3次元画像情報を深度カメラから取得することを行わせ、ここで物体向けの把持姿勢のセットが、物体の3次元画像情報から生成される、条項17又は18に記載の機械可読媒体。
条項20 命令のセットが、1つ又は複数のプロセッサによって実行された結果、1つ又は複数のプロセッサにさらに、物体のセグメント化画像情報と他の物体のセグメント化画像情報とを含むバイナリ・マスクを取得することを行わせ、ここで物体向けの把持姿勢のセットが、物体のセグメント化画像情報から生成される、条項17から19までのいずれか一項に記載の機械可読媒体。
条項21 命令のセットが、1つ又は複数のプロセッサによって実行された結果、1つ又は複数のプロセッサにさらに、物体の画像情報と他の物体の画像情報とを含む点群を生成することと、修正済み点群を生成するように点群をクロッピングすることとを行わせ、ここで物体向けの把持姿勢のセットが、修正済み点群から生成される、条項17から20までのいずれか一項に記載の機械可読媒体。
条項22 命令のセットが、1つ又は複数のプロセッサによって実行された結果、1つ又は複数のプロセッサにさらに、物体の画像情報と他の物体の画像情報とを含む点群に3次元境界ボリュームを適用することを行わせ、ここで修正済み点群を生成することが、境界ボリュームの外側の画像情報を除去するように点群をクロッピングすることを含む、条項21に記載の機械可読媒体。
条項23 3次元境界ボリュームが3次元境界ボックスである、条項17から22までのいずれか一項に記載の機械可読媒体。
条項24 ロボットであって、1つ又は複数のプロセッサと、1つ又は複数のプロセッサによって実行された結果、ロボットに、物体向けの把持姿勢のセットを生成すること、把持姿勢のセットのうちの少なくとも1つの把持姿勢が関連推論データを有すると判定すること、及び把持姿勢のセットのうちの少なくとも1つの把持姿勢が関連干渉データを有すると判定したことに基づき、ロボット・マニピュレータに把持姿勢を実行させること
を行わせる実行可能命令を記憶しているメモリとを備えるロボット。
条項25 1つ又は複数のプロセッサと、1つ又は複数のプロセッサによって実行された結果、ロボットにさらに、物体の画像データを含む点群を生成すること、及び修正済み点群を生成するように点群をクロッピングすることを行わせる実行可能命令を記憶しているメモリと、ここで物体向けの把持姿勢のセットが、修正済み点群から生成される、条項24に記載のロボット。
条項26 1つ又は複数のプロセッサと、1つ又は複数のプロセッサによって実行された結果、ロボットにさらに、物体の画像データを含む点群に3次元境界ボックスを適用することを行わせる実行可能命令を記憶しているメモリと、ここで修正済み点群を生成することが、3次元境界ボックスの外側の画像データを除去するように点群をクロッピングすることを含む、条項25に記載のロボット。
条項27 1つ又は複数のプロセッサと、1つ又は複数のプロセッサによって実行された結果、ロボットにさらに、物体のセグメント化画像データ含むバイナリ・マスクを取得することを行わせる実行可能命令を記憶しているメモリと、ここで物体向けの把持姿勢のセットが、物体のセグメント化画像データから生成される、条項24から26までのいずれか一項に記載のロボット。
条項28 少なくとも1つの把持姿勢に関連付けられた干渉データは、他の物体の画像データによって表される別の物体に少なくとも1つの把持姿勢が接触することを示す画像データである、条項24から27のいずれか一項に記載のロボット。
条項29 ロボット・マニピュレータが、クランプ、外科用メス、グリッパ、ニードル、はさみ、又はレーザのうちの少なくとも1つを備える、条項24から28のいずれか一項に記載のロボット。
他の変形形態は、本開示の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の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つ又は複数の方法をシステムが具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及することができる。少なくとも一実施例では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々なやり方で実現することができる。少なくとも一実施例では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。少なくとも一実施例では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。また、少なくとも一実施例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することができる。様々な例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース若しくはプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
本明細書の記載は、記載した技法の例示的な実装形態について述べているが、記載した機能を実装するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、説明を目的として、役割の具体的な分配が定義され得るが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
さらに、主題は、構造的特徴及び/又は方法論的動作に特有の言語で説明されてきたが、添付の特許請求の範囲で特許請求される主題は、説明した特有の特徴又は動作に必ずしも限定されないことが理解されるべきである。むしろ、特有の特徴及び動作は、特許請求の範囲を実装する例示的な形として開示されている。