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

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

▶ リキッド インコーポレイテッドの特許一覧

特表2024-512302統合されていないコンピュータシステムにおけるジョブターゲットエイリアシング
<>
  • 特表-統合されていないコンピュータシステムにおけるジョブターゲットエイリアシング 図1
  • 特表-統合されていないコンピュータシステムにおけるジョブターゲットエイリアシング 図2
  • 特表-統合されていないコンピュータシステムにおけるジョブターゲットエイリアシング 図3
  • 特表-統合されていないコンピュータシステムにおけるジョブターゲットエイリアシング 図4
  • 特表-統合されていないコンピュータシステムにおけるジョブターゲットエイリアシング 図5
  • 特表-統合されていないコンピュータシステムにおけるジョブターゲットエイリアシング 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-19
(54)【発明の名称】統合されていないコンピュータシステムにおけるジョブターゲットエイリアシング
(51)【国際特許分類】
   G06F 9/50 20060101AFI20240312BHJP
【FI】
G06F9/50 150C
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023553070
(86)(22)【出願日】2022-02-18
(85)【翻訳文提出日】2023-10-30
(86)【国際出願番号】 US2022016993
(87)【国際公開番号】W WO2022186997
(87)【国際公開日】2022-09-09
(31)【優先権主張番号】17/191,112
(32)【優先日】2021-03-03
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.THUNDERBOLT
2.WINDOWS
3.macOS
4.ANDROID
5.iOS
(71)【出願人】
【識別番号】523220499
【氏名又は名称】リキッド インコーポレイテッド
(74)【代理人】
【識別番号】110000659
【氏名又は名称】弁理士法人広江アソシエイツ特許事務所
(72)【発明者】
【氏名】カンナタ,ジェームズ
(72)【発明者】
【氏名】クラーク,フィリップ
(72)【発明者】
【氏名】マクムレン,マーシャル
(72)【発明者】
【氏名】シュラム,ブライアン
(57)【要約】
本明細書では、通信ファブリックを介して結合される物理コンピューティング構成要素の配置の展開が提示される。一例において、方法は、ワークロードマネージャから実行ジョブを受信することができるターゲットマシンをワークロードマネージャに提示するステップを含む。ターゲットマシンは、ネットワーク状態を有し、コンピューティング構成要素の選択を含む。また、方法は、ターゲットマシンに向けられるワークロードマネージャによって発行されたジョブを受信するステップも含む。ジョブの特性に基づいて、方法は、ジョブを処理するためのリソース要件を決定するステップと、ジョブのリソース要件をサポートする物理コンピューティング構成要素を備える合成マシンを形成するステップと、ターゲットマシンのネットワーク状態を合成マシンに転送して合成マシンのネットワーク状態をワークロードマネージャに示すステップと、合成マシン上でジョブの実行を開始するステップとを含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
実行ジョブを受信することができるターゲットマシンをワークロードマネージャに提示するステップであって、前記ターゲットマシンがネットワーク状態を有するとともにコンピューティング構成要素の選択を含む、ステップと、
前記ワークロードマネージャによって発行されて前記ターゲットマシンに向けられるジョブを受信するステップと、
前記ジョブの特性に基づいて、前記ジョブを処理するためのリソース要件を決定するとともに、前記ジョブの前記リソース要件をサポートする物理コンピューティング構成要素を備える合成マシンを形成するステップと、
前記ターゲットマシンの前記ネットワーク状態を前記合成マシンに転送し、前記合成マシンの前記ネットワーク状態を前記ワークロードマネージャに示すステップと、
前記合成マシン上で前記ジョブの実行を開始するステップと、
を含む方法。
【請求項2】
前記ターゲットマシンは、物理コンピューティング構成要素に対応しないプレースホルダエンティティを備える、請求項1に記載の方法。
【請求項3】
前記プレースホルダエンティティに関する状態問い合わせに応答して、選択したコンピューティング構成要素がコンピューティング構成要素の前記選択の利用可能性状態に関係なく前記ジョブの実行に利用可能であることを示す状態応答を転送する、請求項2に記載の方法。
【請求項4】
前記ネットワーク状態は、前記ターゲットマシンに対応するネットワークソケットを備える、請求項1に記載の方法。
【請求項5】
前述ターゲットマシンに最初に対応するIPアドレスが代わりに前記合成マシンのMACアドレスに対応するように少なくとも媒体アクセス制御(MAC)アドレス関係を変更することによって前記ネットワーク状態を転送するステップ、
を更に含む、請求項4に記載の方法。
【請求項6】
前記コンピューティング構成要素の選択は、物理的に利用可能な数よりも多い数のコンピューティング構成要素を有するオーバープロビジョニングされた数のコンピューティング構成要素を備える、請求項1に記載の方法。
【請求項7】
物理コンピューティング構成要素のプールの中から前記物理コンピューティング構成要素を選択するステップと、
前記物理コンピューティング構成要素の前記プールを結合する少なくとも1つの通信ファブリックに、前記合成マシンを確立するために前記通信ファブリックにおいて論理分割を形成するように命令するステップであって、前記論理分割が、前記合成マシンの前記物理コンピューティング構成要素を前記物理コンピューティング構成要素のプールの他の物理コンピューティング構成要素から分離する、ステップと
を更に含む、請求項1に記載の方法。
【請求項8】
前記物理コンピューティング構成要素のプールは、少なくとも前記通信ファブリックに結合される中央処理ユニット(CPU)、コプロセッシングユニット、グラフィックス処理ユニット(GPU)、テンソル処理ユニット(TPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、ストレージドライブ、及びネットワークインタフェースコントローラ(NIC)のうちの1つ以上を備える、請求項7に記載の方法。
【請求項9】
前記ジョブの完了に応答して、前記合成マシンを分解し、前記合成マシンの前記ネットワーク状態を前記ターゲットマシンに転送するステップ、
を更に含む、請求項1に記載の方法。
【請求項10】
1つ以上のコンピュータ可読記憶媒体と、
前記1つ以上のコンピュータ可読記憶媒体と動作可能に結合される処理システムと、
前記1つ以上のコンピュータ可読記憶媒体に記憶されるプログラム命令であって、前記処理システムによって実行されることに基づいて、少なくとも、
実行ジョブを受信できるターゲットマシンをワークロードマネージャに提示し、前記ターゲットマシンがネットワーク状態を有するとともにコンピューティング構成要素の選択を含み、
前記ワークロードマネージャによって発行されて前記ターゲットマシンに向けられるジョブを受信し、
前記ジョブの特性に基づいて、前記ジョブを処理するためのリソース要件を決定し、前記ジョブの前記リソース要件をサポートする物理コンピューティング構成要素を備える合成マシンを形成し、
前記ターゲットマシンの前記ネットワーク状態を前記合成マシンに転送して、前記合成マシンの前記ネットワーク状態を前記ワークロードマネージャに示し、
前記合成マシン上で前記ジョブの実行を開始する、
ように前記処理システムに指示する、プログラム命令と、
を備える装置。
【請求項11】
前記ターゲットマシンは、物理コンピューティング構成要素に対応しないプレースホルダエンティティを備える、請求項10に記載の装置。
【請求項12】
前記処理システムによって実行されることに基づいて、少なくとも、
前記プレースホルダエンティティに関する状態問い合わせに応答して、選択したコンピューティング構成要素がコンピューティング構成要素の前記選択の利用可能性状態に関係なく前記ジョブの実行に利用可能であることを示す状態応答を転送する、
ように前記処理システムに指示するプログラム命令を含む、請求項11に記載の装置。
【請求項13】
前記ネットワーク状態は、前記ターゲットマシンに対応するネットワークソケットを備える、請求項10に記載の装置。
【請求項14】
前記処理システムによって実行されることに基づいて、少なくとも、
前記ターゲットマシンに最初に対応するIPアドレスが代わりに前記合成マシンのMACアドレスに対応するように少なくとも媒体アクセス制御(MAC)アドレス関係を変更することによって前記ネットワーク状態を転送する、
ように前記処理システムに指示するプログラム命令を含む、請求項13に記載の装置。
【請求項15】
前記コンピューティング構成要素の選択は、物理的に利用可能な数よりも多い数のコンピューティング構成要素を有するオーバープロビジョニングされた数のコンピューティング構成要素を備える、請求項10に記載の装置。
【請求項16】
前記処理システムによって実行されることに基づいて、少なくとも、
物理コンピューティング構成要素のプールの中から前記物理コンピューティング構成要素を選択し、
前記物理コンピューティング構成要素の前記プールを結合する少なくとも1つの通信ファブリックに、前記合成マシンを確立するために前記通信ファブリックにおいて論理分割を形成するように命令し、前記論理分割が、前記合成マシンの前記物理コンピューティング構成要素を前記物理コンピューティング構成要素のプールの他の物理コンピューティング構成要素から分離する、
ように前記処理システムに指示するプログラム命令を含む、請求項10に記載の装置。
【請求項17】
前記物理コンピューティング構成要素のプールは、少なくとも前記通信ファブリックに結合される中央処理ユニット(CPU)、コプロセッシングユニット、グラフィックス処理ユニット(GPU)、テンソル処理ユニット(TPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、ストレージドライブ、及びネットワークインタフェースコントローラ(NIC)のうちの1つ以上を備える、請求項16に記載の装置。
【請求項18】
ジョブインタフェースであって、
ジョブ実行のための架空のターゲットとしてコンピューティングターゲットを提示し、前記コンピューティングターゲットがそれぞれ、アドバタイズされたコンピューティング構成要素の関連するセット及び対応するネットワークアドレス指定を有し、
対応するネットワークアドレスを有する選択されたコンピューティングターゲットに向けられる実行のためのジョブを受信する、
ように構成されるジョブインタフェースと、
コントローラであって、
物理コンピューティング構成要素のプールから前記ジョブの実行をサポートするのに必要な物理コンピューティング構成要素のセットを選択し、
前記物理コンピューティング構成要素のセットを備える物理コンピューティングノードを合成し、
前記選択されたコンピューティングターゲットの代わりに対応するネットワークアドレスを介して通信するように前記物理コンピューティングノードを構成し、
処理のために前記物理コンピューティングノードに前記ジョブを展開する、
ように構成されるコントローラと、
を備えるコンピューティングシステム。
【請求項19】
アドバタイズされたコンピューティング構成要素の前記関連するセットのそれぞれは、前記物理コンピューティング構成要素のプールから利用可能な数よりも多くの数のコンピューティング構成要素を備える、請求項18に記載のシステム。
【請求項20】
前記コントローラは、
通信ファブリックにおいて論理分割を形成して前記物理コンピューティングノードを確立するように前記物理コンピューティング構成要素の前記プールを結合する少なくとも1つの前記通信ファブリックに命令するべく構成され、前記論理分割は、前記物理コンピューティングノードの前記物理コンピューティング構成要素を前記物理コンピューティング構成要素の前記プールの他の物理コンピューティング構成要素から分離し、
前記物理コンピューティング構成要素のプールは、少なくとも前記通信ファブリックに結合される中央処理ユニット(CPU)、コプロセッシングユニット、グラフィックス処理ユニット(GPU)、テンソル処理ユニット(TPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、ストレージドライブ、及びネットワークインタフェースコントローラ(NIC)のうちの1つ以上を備える、
請求項18に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
クラスタ化されたコンピューティングシステムは、データストレージ、データ処理、及び通信処理に対する需要が高まっているため、普及している。データセンタは、一般に、大型ラックマウント型及びネットワーク結合型のデータストレージ及びデータ処理システムを含む。これらのデータセンタは、ネットワークリンクを介して外部ユーザから記憶のためのデータを受信することができ、並びにデータセンタ内の処理要素で実行されるアプリケーションから生成されるデータを受信することができる。多くの場合、データセンタ及び関連するコンピューティング機器を使用して、複数の同時ユーザ又はアプリケーションのためのジョブを実行することができる。ジョブは、中央処理ユニット(CPU)又はグラフィックス処理ユニット(GPU)を使用してデータを処理し、並びにこれらのリソースに関連するデータを一時記憶装置と長期記憶装置との間で、又は様々なネットワーク位置の間でルーティングするためにデータセンタのリソースを利用できる実行ジョブを含む。GPUベースの処理は、人工知能(AI)及び機械学習レジームで使用するために人気が高まっている。これらのレジームでは、ブレードサーバなどのコンピューティングシステムは、大規模データセットを処理するための関連するCPUと共に1つ以上のGPUを含むことができる。
【0002】
サーバによる、例えば大規模クラウドシステム及びコンピューティングクラスタによる実行のためのコンピューティングジョブを受信及び展開することができるワークロードマネージャが開発されている。例示的なワークロードマネージャとしては、Slurmワークロードマネージャ、OpenStack、Kubernetes、及び他の一般的なワークロード及びクラウドオーケストレーション/デプロイメントサービスが挙げられる。これらのワークロードマネージャは、一般に、ジョブ処理のために選択され得るサーバのリストを有する。ジョブに関してサーバが選択された時点で、選択されたサーバによる実行又は他のタイプの処理のためにジョブを展開することができる。しかしながら、経時的に構成を変更し得るサーバを有する大規模コンピューティングクラスタにわたってこれらのワークロードマネージャの需要を管理することは困難であり得る。
【0003】
大規模コンピューティングクラスタでは密度の制限が生じる可能性がある。具体的には、各サーバは、一般に、CPU、GPU、及び共通の筐体又はシャーシに収容される記憶要素の間に固定された構成を含む。着信ジョブがデータセンタ内に展開されると、コンピューティングリソースの粒度が個々のサーバに制限される。したがって、展開されたジョブは、一般に、サーバのリソース全体が実際にジョブを実行するために必要であるか否かにかかわらず、各サーバの対応するCPU、GPU、及び記憶要素の全てと共に1つ以上のサーバを占有する。補償するために、データセンタのオペレータは、一般に、ジョブからの増大するトラフィックに対応するために、連続的に増大する量のサーバを展開する。この戦略は、ラックマウント型サーバに必要な物理的スペース、並びに大きなスペース及びコスト要件に対する障壁に直面する可能性がある。
【発明の概要】
【0004】
本明細書では、通信ファブリックを介して結合される物理コンピューティング構成要素の配置の展開が提示される。一例において、方法は、ワークロードマネージャから実行ジョブを受信することができるターゲットマシンをワークロードマネージャに提示するステップを含む。ターゲットマシンは、ネットワーク状態を有し、コンピューティング構成要素の選択を含む。また、方法は、ターゲットマシンに向けられるワークロードマネージャによって発行されたジョブを受信するステップも含む。ジョブの特性に基づいて、方法は、ジョブを処理するためのリソース要件を決定するステップと、ジョブのリソース要件をサポートする物理コンピューティング構成要素を備える合成マシンを形成するステップと、ターゲットマシンのネットワーク状態を合成マシンに転送して合成マシンのネットワーク状態をワークロードマネージャに示すステップと、合成マシン上でジョブの実行を開始するステップとを含む。
【0005】
他の例において、装置は、1つ以上のコンピュータ可読記憶媒体に記憶されたプログラム命令を含み、プログラム命令は、処理システムによって実行されることに基づいて、実行ジョブを受信することができるターゲットマシンをワークロードマネージャに提示するように処理システムに指示し、ターゲットマシンは、ネットワーク状態を有するとともに、コンピューティング構成要素の選択を含む。プログラム命令は、ワークロードマネージャによって発行されてターゲットマシンに向けられるジョブを受信するように処理システムに指示する。ジョブの特性に基づいて、プログラム命令は、ジョブを処理するためのリソース要件を決定し、ジョブのリソース要件をサポートする物理コンピューティング構成要素を備える合成マシンを形成するように処理システムに指示する。プログラム命令は、ターゲットマシンのネットワーク状態を合成マシンに転送し、合成マシンのネットワーク状態をワークロードマネージャに示し、合成マシン上でのジョブの実行を開始するように処理システムに指示する。
【0006】
他の例は、ジョブ実行のための架空のターゲットとしてコンピューティングターゲットを提示するように構成されたジョブインタフェースを備えるシステムを含み、コンピューティングターゲットはそれぞれ、アドバタイズされたコンピューティング構成要素の関連付けられたセット及び対応するネットワークアドレス指定を有する。ジョブインタフェースは、対応するネットワークアドレスを有する選択されたコンピューティングターゲットに向けられる実行のためのジョブを受信する。また、システムは、物理コンピューティング構成要素のプールからのジョブの実行をサポートするのに必要な物理コンピューティング構成要素のセットを選択し、物理コンピューティング構成要素のセットを備える物理コンピューティングノードを合成し、選択されたコンピューティングターゲットの代わりに対応するネットワークアドレスを介して通信するように物理コンピューティングノードを構成し、処理のために物理コンピューティングノードにジョブを展開するように構成されたコントローラも含む。
【0007】
この概要は、本技術開示において以下で更に説明される概念の選択を簡略化した形で紹介するために提供される。この概要は、特許請求される主題の重要な特徴又は本質的な特徴を特定することを意図するものではなく、特許請求される主題の範囲を限定するために使用されるべきでもないことを理解すべきである。
【図面の簡単な説明】
【0008】
本開示の多くの態様は、以下の図面に関連してより良く理解することができる。図面の構成要素は、必ずしも縮尺通りではなく、代わりに本開示の原理を明確に示すことに重点が置かれている。更に、図面において、同様の参照番号は、幾つかの図を通して対応する部分を示す。これらの図面に関連して幾つかの実施形態が説明されているが、本開示は本明細書に開示された実施形態に限定されない。それどころか、意図は、全ての代替形態、修正形態、及び均等物を網羅することである。
【0009】
図1】一実装形態におけるコンピューティングシステムを示す図である。
【0010】
図2】一実装形態におけるコンピューティングシステムの動作例を示すフロー図である。
【0011】
図3】一実装形態におけるコンピューティングシステムの動作例を示すフロー図である。
【0012】
図4】一実装形態におけるコンピューティングシステムを示す図である。
【0013】
図5】一実装形態におけるコンピューティングシステムを示す図である。
【0014】
図6】一実装形態におけるコンピューティングシステムの管理要素を示す図である。
【発明を実施するための形態】
【0015】
関連するコンピューティング機器を有するデータセンタを使用して、複数の同時ユーザ又は同時データアプリケーションの実行ジョブを処理することができる。ジョブは、データセンタのリソースを利用して、データを処理し、並びにこれらのリソースに関連するデータを一時的なストレージと長期的なストレージとの間で、又は様々なネットワーク送信先間で転送することができる。データセンタ処理リソースは、グラフィックス処理ユニット(GPU)、テンソル処理ユニット(TPU)、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)などの様々な種類のコプロセッシングユニット(CoPU)と共に中央処理ユニット(CPU)を含むことができる。コプロセッシングユニットタイプの処理は、人工知能(AI)及び機械学習システムで使用するために人気が高まっている。本明細書の例では、ブレードサーバベースのデータシステムの制限は、各着信実行ジョブの必要性に従ってオンザフライでコンピューティングのグループを動的に合成することができる分散コンピューティングシステムを使用して克服することができる。本明細書では計算ユニット、計算ノード、又はベアメタルマシンと呼ばれるこれらのグループ化は、様々な実行ジョブのニーズを満たし、そのようなジョブに合わせて調整されたリソースを含むことができる。共通の筐体又はシャーシに収容されたCPU、CoPU、及び記憶要素間の固定配置を有する代わりに、本明細書の例は、任意の数の筐体/シャーシに及び、通信ファブリック上で論理配置に動的に形成される任意の数のCPU、CoPU、及び記憶要素を柔軟に含むことができる。計算ユニットは、より大きな並列性及びスループットを達成するために、多くの計算ユニット/マシンのセット又はクラスタに更にグループ化することができる。したがって、データシステムは、特定のジョブ又はジョブの特定の部分に必要とされないブレードサーバのアイドル部分又は無駄な部分を有さないことによって、リソースをより良好に利用することができる。データセンタのオペレータは、固定配置サーバを使用して達成することができるよりも高い、データセンタの非常に高い利用レベルを達成することができる。
【0016】
本明細書では、通信ファブリックを介して結合される物理コンピューティング構成要素の配置の展開が提示される。コンピューティングクラスタに向けられる実行ジョブが受信される。クラスタは、少なくとも1つの「マシン」又は計算ユニットを含み、計算ユニットは、少なくとも1つのプロセッサ要素(例えば、CPU)を含む。コンピューティングユニットはまた、CoPU(GPUなど)、ネットワークインタフェース要素(例えば、NIC)、又はデータ記憶要素(例えば、SSD)を含むことができるが、これらの要素はコンピューティングユニットに必要ではない。計算ユニット又はクラスタは、1つ以上の通信ファブリックを介して結合されたコンピューティング構成要素のプールから形成される。実行ジョブの特性に基づいて、制御システムは、ジョブに必要なリソース、並びに実行ジョブを処理するためのリソーススケジューリングを決定することができる。ジョブが実行される予定になると、制御システムは、実行ジョブを処理するための計算ユニットの合成を容易にする。計算ユニットは、コンピューティング構成要素のプールを形成するコンピューティング構成要素の中から合成される。論理分割は、計算ユニットを形成し、各計算ユニットを互いに分離するために通信ファブリック内で確立される。実行ジョブの完了に応答して、計算ユニットは、コンピューティング構成要素のプールに分解し戻される。
【0017】
本明細書では、1つ以上の共有通信ファブリックを介して結合された様々な個々の物理コンピューティング構成要素について説明する。本明細書では、様々な通信ファブリックタイプを使用することができる。例えば、とりわけ3.0、4.0、又は5.0などの様々なバージョンを含み得る周辺構成要素相互接続エクスプレス(PCIe)ファブリックを使用することができる。PCIeファブリックの代わりに、関連する物理層、電気シグナリング、プロトコル、及び階層化された通信スタックを有する他のポイントツーポイント通信ファブリック又は通信バスを使用することができる。これらは、とりわけ、Gen-Z、イーサネット、InfiniBand、NVMe、インターネットプロトコル(IP)、シリアル接続SCSI(SAS)、ファイバチャネル、サンダーボルト、シリアル接続ATAエクスプレス(SATAExpress)、NVLink、アクセラレータ用キャッシュコヒーレント相互接続(CCIX)、計算エクスプレスリンク(CXL)、オープン・コヒーレント・アクセラレータ・プロセッサ・インタフェース(OpenCAPI)、無線イーサネット又はWi-Fi(802.11x)、又はセルラ無線技術を含むことができる。イーサネットは、10BASE-T、100BASE-TX、1000BASE-T、10GBASE-T(10GBイーサネット)、40GBASE-T(40GBイーサネット)、ギガビット(GbE)、テラビット(TbE)、200GbE、400GbE、800GbE、又は他の様々な有線及び無線イーサネットフォーマット及び速度など、利用可能な様々なネットワーク通信プロトコル規格及び帯域幅のいずれかを指すことができる。セルラ無線技術は、とりわけ、4Gロングタームエボリューション(LTE)、5GNR(New Radio)、及び関連する5G規格を含む、第3世代パートナーシッププロジェクト(3GPP(登録商標))規格の周りに構築された様々な無線プロトコル及びネットワークを含み得る。
【0018】
前述のシグナリング又はプロトコルタイプの幾つかは、PCIe上に構築され、したがってPCIeインタフェースに更なる機能を追加する。パラレル、シリアル、又は組み合わせたパラレル/シリアルタイプのインタフェースも、本明細書の例に適用することができる。以下の例では、例示的なファブリックタイプとしてPCIeを使用しているが、代わりに他のものを使用できることを理解されるべきである。PCIeは、高速シリアルコンピュータ拡張バス規格であり、一般に、ホスト及び構成要素デバイス間、又はピアデバイス間のポイントツーポイント接続を有する。PCIeは、一般に、全てのデバイスをホストとも呼ばれるルートコンプレクスに接続する個々のシリアルリンクを有する。PCIe通信ファブリックは、本明細書に記載の様々なスイッチング回路及び制御アーキテクチャを使用して確立することができる。
【0019】
本明細書の様々なコンピューティングシステムの構成要素は、棚又はラックユニットに更に含めることができるラックマウント可能モジュールなどの1つ以上の物理的筐体に含めることができる。特定のエンドユーザの必要に応じてモジュールを挿入及び取り外しできるモジュール式フレームワークなど、物理的な筐体に多数の構成要素を挿入又は設置することができる。密閉モジュール式システムが、回路、プリント回路基板、半導体システム、及び構造要素を含む物理的支持構造体及び筐体を含むことができる。コンピューティングシステム100などの構成要素を含むモジュールは、ラックマウント型又はラックユニット(U)タイプの筐体に挿入可能且つ取り外し可能であってもよい。図1の構成要素は、任意の物理的な取り付け環境に含めることができ、関連する筐体又はラックマウント要素を含む必要がないことを理解されたい。
【0020】
第1の例示的なシステムとして、図1が提示される。図1は、ワークロードベースのハードウェア合成技法を使用するコンピューティングシステム100を示すシステム図である。コンピューティングシステム100は、通信ファブリック(図示せず)を介して結合された物理コンピューティング構成要素を有するコンピューティングクラスタ101を含む。コンピューティングシステム100は、ジョブインタフェース111及びジョブキュー112を有する管理システム110を含む。コンピューティングシステム100は、ユーザインタフェース121を有するワークロードマネージャ120を含む。管理システム110及びワークロードマネージャ120は、図1のリンク150などの1つ以上のネットワークリンクを介して通信することができる。
【0021】
動作中、幾つかの計算ユニットエイリアス130、すなわち計算ユニットエイリアス131~133が管理システム110によって提供されるが、異なる数を提供することもできる。各計算ユニットエイリアスは、対応する計算ユニットエイリアスを含む架空のコンピューティング構成要素のセットの指示を含む。これらの架空のコンピューティング構成要素は、ジョブの実行などのためにジョブを処理するためにどの種類及び量のコンピューティング構成要素が利用可能であるかを記述する。計算ユニットエイリアス130は、各計算ユニットエイリアスを含む架空のコンピューティング構成要素のセットの指示と共に、ジョブインタフェース111を介して、1つ以上のネットワークリンク150を介してワークロードマネージャ120に提示される。この提示及び指示は、ジョブインタフェース111を介した管理システムによる計算ユニットエイリアスのアドバタイズメントと呼ぶことができる。
【0022】
ワークロードマネージャ120は、ユーザインタフェース121を介して実行のためのジョブを開始し、又はジョブの指示を受信し、計算ユニットエイリアス130のいずれかによってジョブを処理するためにジョブインタフェース111を介して要求を転送することができる。ジョブインタフェース111は、他のインタフェースの中でも、ネットワークインタフェース、ユーザインタフェース、端末インタフェース、アプリケーション・プログラミング・インタフェース(API)、表現状態転送(REST)インタフェース、又はRestAPIを含むことができる。幾つかの例では、ワークロードマネージャ120は、システムコンピューティングクラスタ101による実行又は処理のためにジョブを作成、スケジュール、及び転送することができるユーザ又はオペレータ用のフロントエンド(ユーザインタフェース121)を確立する。これらの実行ジョブは、各ジョブの実行、操作、及び処理プロセスの性質を記述する特性を有する。例えば、ジョブは、ジョブの実行に必要なリソースを示すメタデータの付随セットを有することができ、又はジョブの実行をサポートするためにシステム/コンピューティング要件の最小セットが必要である。ジョブ要件は、構成要素タイプ、処理能力、ストレージ使用量、ジョブ完了最大時間枠、又は他の指示の仕様として示すことができる。
【0023】
ジョブが管理システム110によって受信されると、ジョブはユニットエイリアス130を計算するために展開されない。代わりに、管理システム110は、着信ジョブの特性を処理して、ジョブをサポートするためにどの物理コンピューティング構成要素が実際に必要とされるかを決定する。次に、管理システム110は、ジョブを実行するために物理計算ユニットを動的に合成する。物理計算ユニット135などのこれらの物理コンピューティングユニットは、物理計算構成要素を結合する通信ファブリック内に構成された分割によって論理配置に結合された物理コンピューティング構成要素のセットを含む。図1の物理計算ユニット135に示すような物理計算ユニットはそれぞれ、幾つかのタイプの構成要素のうちの0を含む、物理コンピューティング構成要素の1つ以上のプール160から選択される任意の数のジョブ定義数量のCPU、CoPU、NIC、GPU、又はストレージユニットで構成することができる。ネットワークアドレス指定、ポート、ソケット、又は他のネットワーク状態情報などのネットワーク状態は、ワークロードマネージャ120によってジョブに対して選択された計算ユニットエイリアスから物理計算ユニット135に割り当てられる。これにより、ワークロードマネージャ120は、中断することなく、ジョブの実行、状態、及び処理のためにコンピューティングクラスタ101の要素と通信し続けることができる。
【0024】
最初は、物理計算ユニットは、様々なジョブの実行又は処理をサポートするために形成又は確立されていない。代わりに、物理構成要素のプール160が確立され、計算ユニットは、実行ジョブの特定の要件に適合するように、これらのプール内の構成要素からオンザフライで形成することができる。特定の実行ジョブのための計算ユニット内に含まれる必要がある構成要素を決定するために、管理システム110は、実行ジョブの前述の特性を処理して、ジョブの実行又は処理をサポートするためにどのリソースが必要かを決定し、ジョブを処理するための計算ユニットを確立する。したがって、コンピューティングクラスタ101の総リソースは、ジョブインタフェース111を介して受信される様々な実行ジョブの実行をサポートするために、必要に応じて動的に細分化することができる。計算ユニットは、合成又は合成されると呼ばれる特定の時間に形成され、ジョブのソフトウェアは、ジョブの性質に従って実行/処理するために計算ユニットの要素に展開される。特定のジョブが特定の計算ユニット上で完了すると、その計算ユニットを分解することができ、それは、追加のジョブのための更なる計算ユニットの作成に使用するために物理構成要素のプール160に追加される個々の物理構成要素を含む。本明細書で説明するように、これらの計算ユニットを合成及び分解するために、様々な技法が使用される。
【0025】
物理計算ユニットへと合成されるハードウェア又は物理構成要素に加えて、計算ユニットが合成されると、ジョブのソフトウェア構成要素が展開される。ジョブは、ユーザアプリケーション、ユーザデータセット、モデル、スクリプト、又は他のジョブ提供ソフトウェアなど、実行のために展開されるソフトウェア構成要素を含むことができる。オペレーティングシステム、仮想化システム、ハイパーバイザ、デバイスドライバ、ブートストラップソフトウェア、BIOS要素及び構成、状態情報、又は他のソフトウェア構成要素などの他のソフトウェアが管理システム110によって提供されてもよい。例えば、管理システム110は、特定のジョブの実行をサポートするために、Linux(登録商標)のバージョンなどの特定のオペレーティングシステムを合成計算ユニットに展開すべきであると決定することができる。オペレーティングシステムの種類又はバージョンの表示は、着信ジョブに付随する特性に含まれてもよく、又はジョブの他のメタデータに含まれてもよい。オペレーティングシステムイメージの形態のオペレーティングシステムは、合成計算ユニットに含まれるデータ記憶要素に、計算ユニットの他の物理コンピューティング構成要素をサポートするために必要なデバイスドライバと共に展開することができる。ジョブは、データ処理を実行する1つ以上のアプリケーションと共に、計算ユニットによって処理される1つ以上のデータセットを含むことができる。利用レベル、完全性レベルを示すジョブ実行状態、ウォッチドッグモニタ、又は他の要素など、様々な監視又はテレメトリ構成要素を展開して、計算ユニットのアクティビティを監視することができる。他の例では、利用可能なアプリケーション及びオペレーティングシステムのカタログをコンピューティングクラスタ101によって提供することができ、コンピューティングクラスタは、関連する計算ユニットに含めるためにジョブによって選択することができる。最後に、ハードウェア及びソフトウェア構成要素が合成/展開されて計算ユニットを形成すると、ジョブは計算ユニット上で実行することができる。
【0026】
計算ユニットを合成するために、管理システム110は、物理コンピューティング構成要素を結合する通信ファブリックの要素を制御するためのコマンド又は制御命令を発行する。これらの物理コンピューティング構成要素は、任意の数の別個の任意に定義された配置(計算ユニット)に論理的に分離することができる。通信ファブリックは、異なる計算ユニット間の論理的分離を維持しながら、特定の計算ユニットの構成要素間でトラフィックを選択的にルーティングするように管理システム110によって構成することができる。このようにして、コンピューティングクラスタ101の物理構成要素間で柔軟な「ベアメタル」構成を確立することができる。個々の計算ユニットは、計算ユニットのコンピューティング、ストレージ、ネットワーク、又はグラフィックス処理リソースを利用することができる外部ユーザ又はクライアントマシンに関連付けることができる。更に、より大きな並列性及び容量のために、任意の数の計算ユニットを計算ユニットの「クラスタ」にグループ化することができる。明確にするために図1には示されていないが、様々な電源モジュール並びに関連する電力及び制御分配リンクもまた、構成要素のそれぞれに含まれ得る。
【0027】
通信ファブリックの一例では、PCIeファブリックが採用される。PCIeファブリックは、PCIeクロスポイントスイッチと称され得る複数のPCIeスイッチ回路から形成される。PCIeスイッチ回路は、少なくとも各PCIeリンクによって搬送されるトラフィックに基づいて、様々なPCIeリンクを論理的に相互接続するように構成することができる。これらの例では、オペレータ定義のグループに従ってPCIeスイッチのPCIeポートの分離を可能にするドメインベースのPCIeシグナリング配信を含めることができる。オペレータ定義グループは、管理システム110によって管理することができ、管理システムは、構成要素を関連する計算ユニットに論理的に組み立て、異なる計算ユニットの構成要素を論理的に分離する。管理システム110は、PCIeファブリックに結合されたファブリックインタフェースを介してPCIeスイッチ回路を制御し、PCIeポート間の論理分割又は分離を変更し、したがって物理構成要素のグループ化の合成を変更することができる。ドメインベースの分離に加えて、又は代替として、各PCIeスイッチポートは、非透過(NT)ポート又は透過ポートとすることができる。NTポートは、ブリッジのようにエンドポイント間の何らかの論理的分離を可能にすることができるが、透過ポートは論理的分離を可能にせず、純粋に切り替えられた構成でエンドポイントを接続する効果を有する。1つ以上のNTポートを介したアクセスは、特定のNTポートを選択するため、又はNTポートを介した可視性を可能にするために、PCIeスイッチと開始エンドポイントとの間の追加のハンドシェイクを含むことができる。好適には、このドメインベースの分離(NTポートベースの分離)は、物理的構成要素(すなわち、CPU、CoPU、ストレージユニット、NIC)を共有ファブリック又は共通ファブリックに結合することを可能にするが、計算ユニットへの分離/分割を介して含まれる構成要素に対する可視性のみを有することができる。したがって、PCIeファブリック間の論理分割を用いて、複数の物理構成要素間のグループ化を実現することができる。この分割は本質的にスケーラブルであり、管理システム110又は他の制御要素によって必要に応じて動的に変更することができる。
【0028】
図1の要素の説明に戻ると、管理システム110は、1つ以上のマイクロプロセッサと、関連するストレージシステム(図示せず)からジョブインタフェース111及びファブリック管理ソフトウェアなどのソフトウェアを検索及び実行する他の処理回路とを備えることができる。管理システム110は、単一の処理デバイス内に実装することができるが、プログラム命令を実行する際に協働する複数の処理デバイス又はサブシステムにわたって分散させることもできる。管理システム110の例は、汎用中央処理ユニット、特定用途向けプロセッサ、及び論理デバイス、並びに任意の他の種類の処理デバイス、それらの組み合わせ、又は変形を含む。幾つかの例では、管理システム110は、Intel(登録商標)マイクロプロセッサ、Apple(登録商標)マイクロプロセッサ、AMD(登録商標)マイクロプロセッサ、ARM(登録商標)マイクロプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向けプロセッサ、又は他のマイクロプロセッサもしくは処理要素を含む。管理システム110は、ジョブインタフェース111を含むか、又は提供する。これらの要素は、管理システム110のプロセッサ要素によって実行される様々なソフトウェア構成要素を含むことができ、或いは代わりに回路を含むことができる。
【0029】
図1では、管理システム110は、ファブリックインタフェースを含む。ファブリックインタフェースは、管理システム110と、1つ以上のPCIeリンクを含み得る関連する通信ファブリックに結合された任意の構成要素との間の通信リンクを含む。幾つかの例では、ファブリックインタフェースは、PCIeリンク又は他のリンクを介して転送されるイーサネットトラフィックを使用することができる。更に、図1の計算ユニットに含まれる各CPUは、PCIeリンクを介して伝送されるイーサネット通信をもたらすことができるドライバ又はエミュレーションソフトウェアで構成することができる。したがって、プール160のCPUのいずれか(計算ユニットに展開されると)及び管理システム110は、PCIeファブリックを介して転送されるイーサネットにわたって通信することができる。しかしながら、実装はPCIe上のイーサネットに限定されず、PCIeインタフェース上のPCIeトラフィックを含む他の通信インタフェースが使用されてもよい。
【0030】
図2は、図1の要素の例示的な動作を示すために含まれる。動作201において、管理システム110のジョブインタフェース111は、ワークロードマネージャ120によって監視されるリンク150を介して計算ユニットエイリアスをアドバタイズする。図1に計算ユニットエイリアス131~133として示されているこれらの計算ユニットエイリアスは、コンピューティング構成要素の所定のセットを含む。計算ユニットエイリアス131は、任意の数のCPU、NIC、GPU、CoPU、ストレージユニット、又は他の構成要素を含むことができるコンピューティング構成要素の一例の集合を示す。幾つかの例示的な計算ユニットエイリアスは、物理構成要素に対応する構成要素のセットを有することができるが、本明細書の例は、架空の構成要素のセットを有する計算ユニットエイリアスを提示するオプションも有する。すなわち、ジョブの物理的配置、物理量、又は現在の可用性に対応しないコンピューティング構成要素のセットである。したがって、計算ユニットエイリアスは、管理システム110によってアドバタイズされ、実行のためにジョブを受け入れるために利用可能なプレースホルダエンティティを含むことができる。図1は、1つのそのようなジョブ140を示しており、これは、ユーザインタフェース121を引き継ぐジョブ要求に応答してワークロードマネージャ120によって開始される。管理システム110によってジョブがディスパッチされると、計算ユニットエイリアスはジョブを実行するために使用されず、代わりに物理計算ユニットは、ジョブに対応するためにオンザフライで合成される。このようにして、計算ユニットエイリアスは、本明細書に示す分散コンピューティングクラスタなどにおけるジョブの開始及び処理に関してより柔軟性を可能にする。
【0031】
幾つかの例では、計算ユニットエイリアス131~133は架空であるだけでなく、オーバープロビジョニングされている。オーバープロビジョニングとは、コンピューティングクラスタ101におけるジョブ実行のために現在利用可能であり得るコンピューティング構成要素の量が多いこと、又は可用性が高いことを指す。幾つかの例では、全ての計算ユニットエイリアスは、現在の可用性又は物理的存在に関係なく、ジョブを処理するために利用可能であるとして、計算クラスタ101の物理コンピューティング構成要素の量全体を提示する。したがって、計算ユニットエイリアスは、架空の数のコンピューティング構成要素を提示する。コンピューティングクラスタ101の分解されたファブリック結合特性に部分的に起因して、物理的に存在するコンピューティング構成要素の迅速かつ動的な再構成が行われる可能性があり、これにより、ワークロードマネージャ120の観点から認識される構成要素のより高い容量又は量が可能になる。コンピューティングクラスタ101のユーザ又はオペレータは、オーバープロビジョニングの指示を受信して(211)、コンピューティングクラスタ101及び計算ユニットエイリアスのオーバープロビジョニングを有効又は無効にすることができる。この指示はまた、任意の所与の時間の物理的に存在する量のコンピューティング構成要素又はデータ処理能力を超える固定又は動的マージンなどの、計算ユニットエイリアスをオーバープロビジョニングする割合又は量を示すことができる。それに応答して、管理システム110は、示された量のオーバープロビジョニングに基づいて計算ユニットエイリアスを形成することができ(212)、これらのオーバープロビジョニングされた計算ユニットエイリアスは、ジョブインタフェース111を介してワークロードマネージャ120にアドバタイズすることができる。
【0032】
ワークロードマネージャ120が起動してジョブを処理するための動作を開始した後、リンク150を介して様々なジョブをジョブインタフェース111に転送することができる。具体的には、計算ユニットエイリアス131~133は、ジョブを受け付けることができ、コンピューティング構成要素の対応するセットを含むものとして、ジョブインタフェース111を介してアドバタイズされ又は提示される。ワークロードマネージャ120は、特定のジョブを処理するために計算ユニットエイリアス131~133のうちの1つ以上を選択し、それらのジョブの指示を、計算ユニットエイリアス131~133のうちのどれがジョブを処理すべきかの指示と共に転送することができる。更に、ジョブ指示は、他の量の中でもCPU、GPU、記憶ユニット、又はNICの量など、ジョブを処理するために必要なリソースの量又はセットを含むことができ、これらは、構成要素の量に対応する粒度単位で、又は代わりにジョブの最小性能要件として示され得る。これらの最小性能要件は、他の指定の中でも、必要とされるCPU処理能力(コアの数又は毎秒の動作などの処理能力の様々な単位)、記憶空間(バイト単位)、通信帯域幅におけるNIC容量、及びGPU容量(毎秒の動作における)を含むことができる。計算ユニットエイリアス131~133のそれぞれはまた、ネットワークアドレス指定、ネットワークポート、ネットワークソケット、又はジョブ要求内のワークロードマネージャ120によって示され、ジョブを開始し、ジョブの実行又は処理に関する状態を取得し、ジョブに関連する結果データ又は完了状態を受信するためにワークロードマネージャ120によって使用される他のネットワーク識別子によって示される関連するネットワーク状態を有する。
【0033】
動作202において、管理システム110のジョブインタフェース111は、コンピューティングクラスタ101の計算ユニットエイリアス131~133をターゲットとする実行ジョブを受信する。前述したように、管理システム110は、ジョブ要求に含まれるジョブ特性を解析して、ジョブを実行するために必要な計算リソースを決定する。動作203において、管理システム110は、次に、計算ユニット合成スケジューリング情報と共にジョブキュー112にジョブを追加することができる。ジョブの特性に基づいて、管理システム110は、ジョブを処理するためのリソーススケジューリングを決定し、リソーススケジューリングは、コンピューティングクラスタ101のリソースの時間的割り当てを示す。リソーススケジューリングは、ジョブの識別子、各ジョブを実行するのに必要なコンピューティング構成要素のセットの表示、計算ユニットの合成及び分解を開始する時間枠、並びに計算ユニット上で実行されてジョブを実行する計算ユニットに展開するソフトウェアの表示に関する1つ以上のデータ構造を含むことができる。
【0034】
図1では、一例の実行ジョブ140が強調表示されている。ジョブ140が受信されると、ジョブ140の特性が管理システム110によって解析されて、ジョブ140を実行するためにどの物理コンピューティング構成要素が必要とされるかが決定される。物理コンピューティング構成要素は、ジョブ140をサポートするためにプール160から選択されるCPU、CoPU、ストレージユニット、及びNICを含むことができる。選択されたコンピューティング構成要素は、物理計算ユニット135に合成される。この合成プロセスは、ジョブ140のコンピューティングクラスタ101のリソースのスケジュール又は時間的割り当てに対応することができる。同様に、ジョブインタフェース111によって受信された他のジョブは、ジョブの特性に基づいてプール160から割り当てられた異なる物理コンピューティング構成要素のセットを有することができる。物理計算ユニットは、同じコンピューティング構成要素を使用することができるが、スケジュールされた時間は異なる。様々なジョブにわたる同じ物理コンピューティング構成要素のこの再使用は、着信ジョブ、ジョブ完了状態、及びジョブ性能要件に応じた物理コンピューティング装置の動的合成、分解、及び再合成によって部分的に可能になる。好適には、ジョブが異なる物理計算ユニット上でスケジュールされ実行されると、計算ユニットエイリアス131~133は一定のままであり、したがって、経時的に一貫した計算ユニットのセットをワークロードマネージャ120に提示する。以下で説明するように、様々なハンドシェイク及び遷移が容易になり、架空の計算ユニットエイリアス131~133のいずれかに対してワークロードマネージャ120によってディスパッチされたジョブを、オンザフライで合成及び分解された物理計算ユニットに実際に展開することができる。
【0035】
動作205において、管理システム110は、キュー112に示されたスケジュール及び特性に従ってジョブをサポートするために計算ユニットを合成する。管理システム110は、実行ジョブを処理するためにプール160の中から選択された物理コンピューティング構成要素のセットを含む計算ユニットを合成するようにプール160に関連付けられた通信ファブリックに少なくとも命令することによって、リソーススケジューリングに従ってコンピューティングクラスタ101上の実行ジョブを開始する。計算ユニットを合成するように通信ファブリックに命令することは、物理コンピューティング構成要素セットを通信可能に結合する通信ファブリック内に論理分離を形成するように通信ファブリックに命令することを含む。論理分離はそれぞれ、各セット内の物理コンピューティング構成要素が、対応する論理分離内でのみ通信ファブリックを介して通信することを可能にする。管理システム110は、各物理計算ユニットが形成されると、ジョブを実行するためにソフトウェア構成要素を計算ユニットに展開するための通信ファブリックを制御する。次に、動作207において、合成計算ユニットは、合成計算ユニット上で対応するジョブを実行する。
【0036】
しかしながら、前述したように、ワークロードマネージャ120は、物理計算ユニットに直接ではなく、計算ユニットエイリアス131~133にジョブを展開する。ジョブが物理計算ユニット135などの物理計算ユニットによって展開され実行される前に、ネットワーク状態は、ジョブについてワークロードマネージャ120によって示される特定の計算ユニットエイリアスから物理計算ユニットに転送される(動作206)。ネットワーク状態は、様々なネットワークアドレス指定及び関連情報を含むことができる。一例では、メディアアクセス制御アドレス(MACアドレス)は計算ユニットエイリアス131に対応し、異なるMACアドレスは物理計算ユニット135のネットワークインタフェースに対応する。計算ユニットエイリアス131のMACアドレスは、ワークロードマネージャ120に提示されるIPアドレスなどの他のネットワークアドレス指定と関連付けられる。物理計算ユニット135は、オンザフライで合成され、1つ以上のNICを含むことができるので、物理計算ユニット135のNICのMACアドレスは動作213で決定される。次に、再構成プロセスが使用されて、どのMACアドレスが計算ユニットエイリアス131に関連付けられたネットワークアドレス指定に対応するかが変更される。具体的には、動作214において、計算ユニットエイリアス131のIPアドレスを物理計算ユニット135のNICのMACアドレス(例えば、イーサネットアドレス)に関連付けるために、アドレス解決プロトコル(ARP)再構成又は再ブロードキャストプロセスが実行される。これは、計算ユニットエイリアス131のネットワーク状態を物理計算ユニット135に割り当てる効果を有する。ここで、ワークロードマネージャ120は、以前と同じIPアドレス、ソケット、又はポートを使用して通信し続けることができるが、代わりに、通信を計算ユニットエイリアス131の代わりに物理計算ユニット135に対応させることができる。物理計算ユニット135への移行中のワークロードマネージャ120と計算ユニットエイリアス131との間の通信の中断は、TCP/IPのフロー制御及びエラー訂正機能によって処理される。
【0037】
物理計算ユニット135の合成後にネットワーク状態が転送されると、対応するジョブを物理計算ユニット135によって実行することができる。ジョブの展開、実行、又は完了に関して、様々な状態をワークロードマネージャ120に提供することができる。この状態は、ワークロードマネージャ120への配信のために関連するネットワーク状態(すなわち、ネットワークアドレス指定)を使用して物理計算ユニット135によって提供することができ、ワークロードマネージャ120は、そのようなネットワーク状態を使用して物理計算ユニット135と通信することができる。このネットワーク状態は、図1の要素142としてワークロードマネージャ120に示すことができる。
【0038】
最後に、実行ジョブが完了すると、動作208において、管理システム110は、物理計算ユニット135のリソースをプール160に分解し戻す。分解の前に、ジョブからの様々な結果をワークロードマネージャ120に転送することができる。これらの結果は、処理されたデータセット、完了時の状態、又は実行、処理、操作、もしくは物理計算ユニット135に展開された他のデータを含むことができる。分解を実行するために、管理システム110は、通信ファブリックに、計算ユニットのコンピューティング構成要素が追加の物理計算ユニットへの合成に利用可能になるように、物理計算ユニットの対応する論理分離を除去するべく命令する。分解の一部として、物理計算ユニット135に転送されたネットワーク状態は、計算ユニットエイリアス131に戻される。ネットワーク状態のこの復帰は、ジョブに使用され、物理計算ユニット135に元々転送されたIPアドレスに関連付けられる計算ユニットエイリアス131のMACアドレスを変更することを含むことができる。ARP再構成又は再ブロードキャストプロセス(動作215)は、計算ユニットエイリアス131のMACアドレス又はイーサネットアドレスの変更に対応するように、MACアドレス又はイーサネットアドレスのこの変更を実行することができる。
【0039】
図2及び本明細書の他の例の動作は、計算ユニットのエイリアシング及び物理計算ユニットへのネットワーク状態転送と共に、計算ユニットの合成及び分解のジョブベースの開始を説明する。したがって、実行ジョブの開始及び関連するジョブ特性は、ジョブを実行する物理計算ユニットの作成及びエイリアスされた計算ユニットから物理計算ユニットへのネットワーク状態の転送をトリガすることができる。
【0040】
物理計算ユニットを修正又は変更するために、別々に、又は前述のジョブに基づく合成と組み合わせて、様々なトリガを使用することができる。第1のトリガでは、イベントベースのトリガが採用される。これらのイベントベースのトリガは、ジョブ又はジョブを含む作業ユニットをサポートするために、計算ユニットを変更もしくは修正するか、又は更なる計算ユニットを追加することができる。ジョブによって示される動的イベント又はパターンの管理システム110による観測に基づいて、管理システム110は、それに割り当てられた計算ユニット及びリソースの構成に対する変更を開始することができる。そのようなイベント又はパターンの例には、プロセスの観測されたリソース不足、機能によって識別される特定の文字列、インテリジェントインフラストラクチャアルゴリズムによって識別される特定の信号、又は管理システム110によって監視することができる他の要因が含まれる。実行中のジョブのテレメトリ又は実行前もしくは実行中のジョブの特性の解析は、管理システム110に、計算ユニットの動的変更を開始するように通知することができる。したがって、管理システム110は、イベント又はパターンに従って計算ユニットのリソース(例えば、物理コンピューティング構成要素)を追加又は削除するために計算ユニットの合成を変更することができる。好適には、各ジョブの現在のリソースニーズをサポートするために計算ユニットをより良好に最適化することができ、現在のジョブによって不要になったとき、又は他の将来のジョブによる使用のためにリソースをプールにインテリジェントに戻すことができる。
【0041】
別の代替トリガは、機械学習タイプのアルゴリズム又はユーザ定義の時間枠に基づく時間トリガを含む。この例では、特定の種類のジョブが特定の種類の挙動を示すように、合成計算ユニットのパターン又は挙動を経時的に決定又は学習することができる。これらの挙動に基づいて、計算ユニットへの変更を動的に行い、ワークロードパターンをサポートすることができる。例えば、管理システム110は、特定の種類のジョブの実行の特定の段階において、より多くの/より少ないストレージリソースが必要であるか、又はより多くの/より少ないコプロセッシングリソースが必要であると決定することができる。管理システム110は、追加又は除去又はリソースを含むことができる計算ユニットの合成を予測的又は先制的に変更して、作業ユニットがジョブによって実行されている状態で計算ユニットに割り当てられた現在のリソースをより良好に最適化することができる。時間特性は、明示的なユーザ入力に基づいて、又は機械学習プロセスに基づいて管理システム110によって決定され、計算ユニットからリソースを追加又は削除する時間枠を決定することができる。管理システム110は、どのリソース変更が必要であるか、及びこれらの変更が現在及び将来のジョブニーズをサポートするためにいつ必要とされるかを決定することができるリソーススケジューラ要素を含むことができる。本明細書で説明する計算ユニットへの変更は、幾つかの例では、特定の物理構成要素又はリソースを追加又は削除するときなどに、計算ユニット及び関連するオペレーティングシステムの再合成及び再起動を必要とする場合がある。しかしながら、ストレージ又はネットワークインタフェースリソースの追加/削除などの他の変更は、特定の計算ユニットを再起動又は再合成することなくオンザフライで達成され得る。
【0042】
図3は、着信ジョブを処理する計算ユニットを展開するための更なる技術及び構造を示す。図3は、コンピューティングクラスタ301、管理コントローラ310、及びワークロードマネージャ320を含むシステム300を含む。管理コントローラ310は、コンピューティングクラスタ301の動作及び構成を制御及び管理し、ネットワークリンクを介して提示される1つ以上のAPIスタイルのインタフェースを介して複数の架空のターゲット又はターゲットエイリアス(330)をワークロードマネージャ320に提示する。動作中、管理コントローラ310は、コンピューティングクラスタ301の要素による処理又は実行のためのジョブを受信し、ジョブの要件を解釈し、物理コンピューティング構成要素の様々なプールの中からジョブを処理するための計算ユニットを動的に合成する。以下に説明するように、ジョブは、オーバープロビジョニングされた構成要素のセットを含む、図3のターゲット331~333として示される架空のターゲット又はターゲットエイリアスをターゲットとする。対照的に、構成要素の物理プールは、セットが実際のハードウェアを含むため、計算ユニット又は物理計算ユニットと呼ばれる様々なグループ又はセットに再構成することができる実際のハードウェアを含む。図3は、コンピューティングクラスタ301内の幾つかのプール、すなわちCPUプール341、CoPUプール342、ストレージプール343、及びNICプール344を示す。各プール内の全ての構成要素は、ファブリック340などの共通の通信ファブリックを介して通信可能に結合される。ファブリック340は、PCIeなどの本明細書で説明する通信ファブリックタイプのいずれかを含む。管理コントローラ310は、ファブリック340内の論理分離及び区分を再構成することによって計算ユニットを形成するために、ファブリック340のスイッチング素子とインタフェースすることができる。
【0043】
管理コントローラ310は、表現状態転送(REST)インタフェース規格などの各種インタフェース規格に準拠したアプリケーション・プログラミング・インタフェース(API)を採用する。RESTアーキテクチャ制約に従うAPIは、RESTful APIと呼ばれる。したがって、管理コントローラ310は、ワークロードマネージャ320(又は任意の他のワークロード管理もしくはオーケストレーションソフトウェアエンティティ)と管理コントローラ310によって管理されるコンピューティングクラスタ301の要素との間の通信のための定義及びプロトコルを標準化するRestAPIとも呼ばれるRESTful APIを含む1つ以上のインタフェースを提示することができる。このAPIの一部として、管理コントローラ310は、実行又は他のデータ処理のためにジョブを受信することができる様々なターゲットを識別するワークロードマネージャ320に1つ以上の構成ファイルを提供する。起動時に、ワークロードマネージャ320は、これらの構成ファイルを読み取り、各ターゲットに関連するネットワークアドレス指定とともに、どのターゲットが利用可能であるか、及び各ターゲットがどのリソースを利用可能であるかを決定することができる。
【0044】
図3では、3つの例示的なターゲット、すなわちターゲット331~333がワークロードマネージャ320に提示されている。これらのターゲットのそれぞれは、ジョブを処理することができるコンピューティング構成要素のセットを示し、ワークロードマネージャ320は、必要に応じて個々のジョブを処理するために個々のターゲットを選択することができる。しかしながら、本明細書で説明するように、これらのターゲット331~333は、架空の又は偽装されたエイリアスであり、コンピューティングクラスタ301の実際のハードウェアに対応しない。したがって、より柔軟な構成及び数量のコンピューティング構成要素を各ターゲットに含めることができる。そのような配置の1つは、コンピューティングクラスタ301内で物理的に利用可能なより多くの構成要素を有するようにこれらのターゲットをオーバープロビジョニングすることである。この物理的な可用性は、物理的なモジュール式シャーシ及びラックマウントシステム内のコンピューティング構成要素の存在に関連することができ、又はワークロード(すなわち、アイドル)を受け入れるための現在の可用性に関連することができる。したがって、ターゲット331~333は、より多くのコンピューティング構成要素をワークロードマネージャ320に示し、コンピューティングクラスタ301の物理構成要素をワークロードマネージャ320に抽象化する。このオーバープロビジョニングは、一部には、物理構成要素が期待されるよりも大きな容量を有するように見えるべくオンザフライで合成及び分解され得る速度のために可能にされる。管理コントローラ310は、物理コンピューティング構成要素間の論理関係を任意に組み立て及び分解することができるので、計算ユニットは、ターゲット331~333に発行される大量の同時ジョブを処理することができる。オーバープロビジョニングの量は、帯域幅、処理容量、又は物理構成要素の粒度インスタンスに関するオーバープロビジョニングの比率、割合、又は絶対値など、ユーザ又はオペレータが指定することができる。例えば、計算クラスタ301内で物理的に利用可能なコンピューティング構成要素よりも20%多い計算構成要素を有するものとして各ターゲット331~333を提示する20%オーバープロビジョニングが指定されてもよい。オーバープロビジョニングは、全てのタイプの構成要素に適用することができ、或いは代わりにCPU又はGPUなどの特定の構成要素のみに関連してもよい。
【0045】
架空のターゲット331~333の1つの利点は、ターゲットの特性が変化したときに特定のワークロードマネージャがその場で再構成することができない(すなわち、再起動/再起動なし)ことである。したがって、管理コントローラ310は、ワークロードマネージャ320を再起動する必要がないように、全てのターゲットに対してコンピューティングクラスタ301で利用可能なコンピューティング構成要素の最大数又はオーバープロビジョニング数を提示することができる。ワークロードマネージャ320は、任意の所与の時間に任意の及び全てのターゲット331~333に対してコンピューティングクラスタ301の任意の又は全ての構成要素を使用することができ、ジョブをサポートするために必要に応じて物理計算ユニットが合成及び分解される場合でも、ワークロードマネージャ320の再起動は必要とされない。オーバープロビジョニングの態様は、ターゲットに展開されたジョブのより多くの同時実行性を可能にし、物理構成要素のオーケストレーションの負担を管理コントローラ310にシフトさせる。ワークロードマネージャ310は、必要に応じてターゲット331~333にジョブを盲目的にディスパッチすることができ、管理コントローラ310は、物理ハードウェア上での実行の詳細を処理することができる。更に、ワークロードマネージャ320によって開始された任意のジョブは、ハードウェア構成要素が他のジョブによって現在使用されている場合であっても、各ターゲット331~333を有するコンピューティングクラスタ301のフル(又はオーバープロビジョニングされた)リソースにアクセスすることができる。ビジー/アイドル状態に関するターゲット331~333への状態問い合わせは、常にアイドル状態のターゲットを提示し、利用可能な物理ターゲットの錯覚をワークロードマネージャ320に維持するために、管理コントローラ310によって回答することができる。管理コントローラ310は、これを、ターゲット331~333のそれぞれに対するネットワーク状態のスプーフィング又はネットワークアドレス指定を使用して行う。
【0046】
ターゲット331~333のそれぞれは、他のネットワーク特性の中でも、IPアドレス及びネットワークポートによって定義されるネットワークソケットなど、それに関連付けられた対応するネットワーク状態を有する。ワークロードマネージャ320がターゲットと通信することを望む場合、ワークロードマネージャ320は、各ターゲットに関連付けられたネットワークソケットにトラフィックをディスパッチする。図3に示すように、ターゲット331はネットワークソケット「A」を有し、ターゲット332はネットワークソケット「B」を有し、ターゲット333はネットワークソケット「C」を有し、そのそれぞれは一意的なIPアドレスを含む。最初に、ターゲット331~333のIPアドレスはまた、ターゲットに固有のMACアドレス指定又はイーサネットアドレス指定に関連付けられる。しかしながら、これらのIPアドレスは、架空の主体としてターゲット物331~333を提示している管理コントローラ310にトラフィックをルーティングする。
【0047】
管理コントローラ310によって受信された個々のターゲットに向けられたジョブに応答して、管理コントローラ310は、ジョブをキューに入れ、架空のターゲット331~333の代わりに完了のために実際の物理ハードウェアにディスパッチすることができる。この例では、管理コントローラ310は、RestAPIを介してジョブ要求を受信し、ジョブ要求を解釈してジョブをサポートするために必要なハードウェアを決定し、ジョブを処理するためにマシン又は計算ユニットを合成する。最初のジョブの場合、管理コントローラ310は、CPU351、NIC352、GPU353、及び記憶装置354などの物理コンピューティング構成要素のセットを含む物理コンピューティング装置350を合成する。第2のジョブの場合、管理コントローラ310は、CPU361、NIC362、GPU363、及び記憶ユニット364などの物理コンピューティング構成要素のセットを含む物理計算ユニット360を合成する。更に、ネットワーク状態は、ジョブの実行及び完了中にワークロードマネージャ320が物理計算ユニットと通信できるように、架空のターゲットのそれぞれから物理計算ユニットに転送される。図3では、これは、ターゲットのIPアドレス指定とターゲットのMACアドレス指定との間に確立される関係の変化として示されており、代わりに物理計算ユニットに関連付けられたMACアドレス指定に対応する(合成された時点で)。これは、ARP再構成又は再ブロードキャストプロセスなどの様々な方法で達成することができる。したがって、ワークロードマネージャ320は、物理計算ユニットがジョブを処理するためにディスパッチされると、ジョブ要求に使用されるのと同じネットワークソケットを依然として使用する。ここから、ジョブは、物理計算ユニットに含まれるハードウェアによって実行又は処理される。ジョブ実行は、データ処理動作、機械学習プロセス、データ記憶動作、データ転送動作、データ変換動作、グラフィックスレンダリング動作、又は含まれるハードウェアによって処理することができる任意の他のデータもしくは処理動作を含むことができる。データ、状態、及び他の情報は、ジョブの実行中にワークロードマネージャ320と物理計算ユニットとの間で転送することができる。ジョブの完了後、物理計算ユニットは、計算クラスタ301の様々なプールに分解し戻される。この分解は、管理コントローラ310が、ハードウェア構成要素間のファブリック340内の様々な分割又は論理的関連付けを除去し、各ハードウェア構成要素の状態を更なる計算ユニットへの合成に利用可能であるものとしてロギングすることによって行われる。
【0048】
前述したように、コンピューティングクラスタ301の構成要素は、通信ファブリック340、CPU、CoPU、及び記憶装置を含む。NIC、FPGA、RAM、又はプログラマブルリードオンリメモリ(PROM)デバイスなどの他の様々なデバイスを含めることができる。CPUプール341のCPUはそれぞれ、マイクロプロセッサ、システム・オン・チップ・デバイス、又は関連するストレージシステムからユーザアプリケーションなどのソフトウェアを検索及び実行する他の処理回路を備える。各CPUは、単一の処理デバイス内に実装することができるが、プログラム命令を実行する際に協働する複数の処理デバイス又はサブシステムにわたって分散させることもできる。各CPUの例は、汎用中央処理ユニット、特定用途向けプロセッサ、及び論理デバイス、並びに任意の他の種類の処理デバイス、それらの組み合わせ、又は変形を含む。幾つかの例では、各CPUは、Intel(登録商標)、AMD(登録商標)、Apple(登録商標)、又はARM(登録商標)マイクロプロセッサ、グラフィックスコア、計算コア、ASIC、FPGA部分、又は他のマイクロプロセッサもしくは処理要素を含む。各CPUは、CPUを通信ファブリック340のスイッチ要素に結合するPCIeなどの1つ以上のファブリック通信インタフェースを含む。CPUは、ルートコンプレクスを有しても有しなくてもよいPCIeエンドポイントデバイス又はPCIeホストデバイスを備えてもよい。
【0049】
CoPUプール342のCoPUはそれぞれ、データセットの特殊な処理のためのコプロセッシング要素を備える。例えば、CoPUプール342は、1つ以上の計算ユニットに割り当てることができるグラフィックス処理リソースを備えることができる。GPUは、グラフィックスプロセッサ、シェーダ、ピクセルレンダリング要素、フレームバッファ、テクスチャマッパ、グラフィックスコア、グラフィックスパイプライン、グラフィックスメモリ、又は他のグラフィックス処理及び処理要素を含むことができる。幾つかの例では、各GPUは、GPUチップをサポートする回路を備えるグラフィックス「カード」を備える。例示的なGPUカードは、様々なサポート回路、コネクタ、及び他の要素と共にグラフィックス処理要素を含むnVIDIA(登録商標)又はAMD(登録商標)グラフィックスカードを含む。更なる例では、機械学習処理ユニット、テンソル処理ユニット(TPU)、FPGA、ASIC、又は他の専用プロセッサなど、他のスタイルのコプロセッシングユニット又はコプロセッシングアセンブリを使用することができる。
【0050】
ストレージプール343のストレージユニットはそれぞれ、関連する筐体及び回路と共に、ソリッドステートストレージドライブ(SSD)又は磁気ハードディスクドライブ(HDD)などの1つ以上のデータストレージドライブを備える。各記憶ユニットはまた、ファブリックインタフェース(PCIeインタフェースなど)、制御プロセッサ、及び電力システム要素を含む。更に他の例では、各記憶装置は、関連する筐体及び回路と共に、1つ以上の別個のデータ記憶装置のアレイを備える。幾つかの例では、記憶装置を形成するために、ファブリックインタフェース回路がストレージドライブに追加される。具体的には、ストレージドライブは、SAS、SATAExpress、NVMe、又は他のストレージインタフェースなどのストレージインタフェースを備えることができ、ストレージインタフェースは、通信をPCIe通信又は他のファブリックインタフェースに変換するために、ストレージユニットに含まれる通信変換回路を使用して通信ファブリック340に結合される。
【0051】
NICプール344のNICはそれぞれ、イーサネット及びTCP/IP(伝送制御プロトコル/インターネットプロトコル)ネットワークなどのパケットネットワークを介して通信するための回路を備える。幾つかの例は、iSCSI(Internet Small Computer System Interface)などのイーサネット又はTCP/IPを介して他のトラフィックを伝送する。各NICは、イーサネットインタフェース機器を備え、有線、光、又は無線リンクを介して通信することができる。コンピューティングクラスタ301の構成要素への外部アクセスは、NICによって提供されるパケットネットワークリンクを介してもたらすことができ、これは、ネットワークリンクを介してiSCSI、ネットワークファイルシステム(NFS)、サーバ・メッセージ・ブロック(SMB)、又は共通インターネットファイルシステム(CIFS)共有を提示することを含むことができる。幾つかの例では、記憶装置を形成するために、ファブリックインタフェース回路がストレージドライブに追加される。具体的には、NICは、PCIe通信又は他のファブリックインタフェースを使用してNICを通信ファブリック340に結合するために、NICに含まれる通信変換回路を備えることができる。
【0052】
通信ファブリック340は、通信スイッチ回路によって結合された複数のファブリックリンクを含む。PCIeが使用される例では、通信ファブリック340は、関連するPCIeリンクを介して計算クラスタ301のメンバと通信する複数のPCIeスイッチを備える。各PCIeスイッチは、各PCIeスイッチによって処理される任意のPCIeインタフェース間の切り替え接続を確立するためのPCIeクロスコネクトスイッチを備える。通信ファブリック340は、複数のPCIeホストが、関連するPCIeエンドポイントにのみ通信可能に結合されながら、同じファブリック上に存在することを可能にすることができる。したがって、多くのホスト(例えば、CPU)は、同じファブリックを使用して多くのエンドポイントと独立して通信することができる。PCIeスイッチは、CPU、CoPU、及び計算ユニット内のストレージユニット間、及びホスト間通信が使用される場合の計算ユニット間でデータを転送するために使用することができる。本明細書で説明するPCIeスイッチは、少なくとも各PCIeリンクによって搬送されるトラフィックに基づいて、関連するPCIeリンクのうちの様々なPCIeリンクを論理的に相互接続するように構成することができる。これらの例では、ユーザ定義のグループに従ってPCIeスイッチのPCIeポートを分離することを可能にするドメインベースのPCIeシグナリング配信を含めることができる。ユーザ定義グループは、構成要素を関連する計算ユニットに論理的に統合し、異なる計算ユニット間から構成要素を論理的に分離する管理コントローラ310によって管理することができる。ドメインベースの分離に加えて、又はその代わりに、各PCIeスイッチポートは、非透過(NT)又は透過ポートとすることができる。NTポートは、ブリッジのようにエンドポイント間のいくらかの論理的分離を可能にすることができるが、透過ポートは論理的分離を可能にせず、純粋な回路切替え構成でエンドポイントを接続する効果を有する。1つ以上のNTポートを介したアクセスは、特定のNTポートを選択するため、又はNTポートを介した可視性を可能にするために、PCIeスイッチと開始エンドポイントとの間の追加のハンドシェイクを含むことができる。幾つかの例では、各PCIeスイッチは、PEX879624ポート、96レーンPCIeスイッチチップ、PEX872510ポート、24レーンPCIeスイッチチップ、PEX97xxチップ、PEX9797チップ、又は他のPEX87xx/PEX97xxチップなどのPLX/Broadcom/Avago PEXシリーズチップを備える。
【0053】
図4は、コンピューティングプラットフォーム400を示すシステム図である。コンピューティングプラットフォーム400は、図1及び図3のコンピューティングクラスタ101又は301の要素を含むことができるが、変形も可能である。コンピューティングプラットフォーム400は、複数のモジュール式シャーシのラックマウント装置を備える。モジュール式シャーシなどの1つ以上の物理的筐体は、棚又はラックユニットに更に含めることができる。シャーシ410,420,430,440、及び450は、コンピューティングプラットフォーム400に含まれ、1つ以上のデータセンタ内の共通のラックマウント構成に取り付けられてもよく、又は複数のラックマウント構成にまたがってもよい。各シャーシ内で、モジュールは、様々な電力システム、構造支持体、及びコネクタ要素と共に、共有PCIeスイッチに取り付けられる。コンピューティングプラットフォーム400の所定数の構成要素は、特定のエンドユーザの必要に応じてモジュールを挿入及び取り外しすることができるモジュール式フレームワークなどの物理的筐体に挿入又は設置することができる。密閉モジュール式システムが、回路、プリント回路基板、半導体システム、及び構造要素を含む物理的支持構造体及び筐体を含むことができる。コンピューティングプラットフォーム400の構成要素を備えるモジュールは、ラックマウント式の筐体に挿入可能かつ取り外し可能である。幾つかの例では、図4の要素は、より大きなラックマウント環境内に取り付けるための「U」スタイルのシャーシに含まれる。図4の構成要素は、任意の物理的な取り付け環境に含めることができ、関連する筐体又はラックマウント要素を含む必要がないことを理解すべきである。
【0054】
シャーシ410は、管理モジュール又はトップオブラック(ToR)スイッチシャーシを備え、管理プロセッサ411及びPCIeスイッチ460を備える。管理プロセッサ411は、管理オペレーティングシステム(OS)412、ユーザインタフェース413、及びジョブインタフェース414を含む。管理プロセッサ411は、1つ以上のPCIeレーンを含む1つ以上のPCIeリンクを介してPCIeスイッチ460に接続される。
【0055】
PCIeスイッチ460は、コンピューティングプラットフォーム400内の他のシャーシ内のPCIeスイッチ461~464に、1つ以上のPCIeリンクを介して結合される。これらの1つ以上のPCIeリンクは、PCIeモジュール間接続465によって表される。PCIeスイッチ460~464及びPCIeモジュール間接続465は、図4の様々な物理コンピューティング要素の全てを通信可能に結合するPCIeファブリックを形成する。幾つかの例では、管理プロセッサ411は、PCIeファブリックの動作及び分割を制御するために、集積回路間(I2C)インタフェースなどの特別な管理PCIeリンク又はサイドバンドシグナリング(図示せず)を介して、PCIeファブリックの要素と通信することができる。これらの制御動作は、計算ユニットの合成及び分解、PCIeファブリック内の論理分割の変更、PCIeファブリックのテレメトリの監視、PCIeファブリック上のモジュールのパワーアップ/ダウン動作の制御、PCIeファブリックを備える様々な回路のファームウェアの更新、及び他の動作を含むことができる。
【0056】
シャーシ420は、それぞれがPCIeスイッチ461及び関連するPCIeリンク(図示せず)を介してPCIeファブリックに結合された複数のCPU421~425を備える。シャーシ430は、それぞれがPCIeスイッチ462及び関連するPCIeリンク(図示せず)を介してPCIeファブリックに結合された複数のGPU431~435を備える。シャーシ440は、それぞれがPCIeスイッチ463及び関連するPCIeリンク(図示せず)を介してPCIeファブリックに結合された複数のSSD441~445を備える。シャーシ450は、それぞれがPCIeスイッチ464及び関連するPCIeリンク(図示せず)を介してPCIeファブリックに結合された複数のNIC451~455を備える。各シャーシ420,430,440、及び450は、各CPU、GPU、SSD、又はNICの対応する要素を備えるモジュールを取り付けるための様々なモジュール式ベイを含むことができる。電力システム、監視要素、内部/外部ポート、取り付け/取り外しハードウェア、及び他の関連する特徴を各シャーシに含めることができる。シャーシ420,430,440、及び450の個々の要素の更なる説明が以下に含まれる。
【0057】
コンピューティングプラットフォーム400の様々なCPU、GPU、SSD、又はNIC構成要素が関連するシャーシ又は筐体にインストールされると、構成要素は、PCIeファブリックを介して結合され、「マシン」又は計算ユニットと呼ばれる任意の数の別個の任意に定義された構成に論理的に分離することができる。計算ユニットはそれぞれ、任意のタイプのモジュールの0を含む、選択された数のCPU、GPU、SSD、及びNICで合成することができるが、一般に、少なくとも1つのCPUが各計算ユニットに含まれる。物理計算ユニット401の一例が図4に示されており、これはCPU421、GPU431~432、SSD441、及びNIC451を含む。計算ユニット401は、論理ドメイン470によって示されるPCIeファブリック内の論理分割を使用して合成される。PCIeファブリックは、特定の計算ユニットに含まれない構成要素間の論理的分離を維持しながら、特定の計算ユニットの構成要素間でトラフィックを選択的にルーティングするように管理プロセッサ411によって構成することができる。このようにして、プラットフォーム100の構成要素間に分散された柔軟な「ベアメタル」構成を確立することができる。個々の計算ユニットは、計算ユニットのコンピューティング、ストレージ、ネットワーク、又はグラフィックス処理リソースを利用することができる外部ユーザ、着信ジョブ、又はクライアントマシンに関連付けることができる。更に、より大きな並列性及び容量のために、任意の数の計算ユニットを計算ユニットの「クラスタ」にグループ化することができる。
【0058】
幾つかの例では、管理プロセッサ411は、1つ以上のユーザインタフェース又はジョブインタフェースを介して計算ユニットの作成をもたらすことができる。例えば、管理プロセッサ411は、テンプレートを使用して作成された計算ユニットのために、割り当てられるハードウェア構成要素、並びにソフトウェア及び構成情報を指定することができる計算ユニットのためのマシンテンプレートを提示することができるユーザインタフェース413を提供することができる。幾つかの例では、計算ユニット作成ユーザインタフェースは、計算ユニットのユースケース又は使用カテゴリに基づいて計算ユニットのマシンテンプレートを提供することができる。例えば、ユーザインタフェースは、ゲームサーバユニット、人工知能学習計算ユニット、データ解析ユニット、及びストレージサーバユニットのための提案されたマシンテンプレート又は計算ユニット構成を提供することができる。例えば、ゲームサーバユニットテンプレートは、ストレージサーバユニットテンプレートと比較して追加の処理リソースを指定することができる。更に、ユーザインタフェースは、ユーザが構成要素のリスト又はカテゴリから任意に選択された構成要素タイプから計算ユニットテンプレートを作成するためのテンプレート又は計算ユニット構成及びオプションのカスタマイズを提供することができる。
【0059】
追加の例では、管理プロセッサ411は、動作中にポリシーベースの動的調整を計算ユニットにもたらすことができる。幾つかの例では、ユーザインタフェース413は、ユーザが、計算ユニットに割り当てられたハードウェア及びソフトウェアの調整、並びに動作中のその構成情報の調整のためのポリシーを定義することを可能にすることができる。一例では、動作中に、管理プロセッサ411は、現在のリソースの利用率を決定するために、計算ユニットのテレメトリデータを解析することができる。現在の利用率に基づいて、動的調整ポリシーは、処理リソース、ストレージリソース、ネットワーキングリソースなどが計算ユニットに割り当てられるか、又は計算ユニットから削除されることを指定することができる。例えば、テレメトリデータは、ストレージ計算ユニットの割り当てられたストレージリソースの現在の使用レベルが100%に近づいていることを示し、追加のストレージデバイスを計算ユニットに割り当てることができる。
【0060】
更に別の例では、管理プロセッサ411は、動作中に計算ユニットに対する実行ジョブベースの動的調整をもたらすことができる。幾つかの例では、ジョブインタフェース414は、コンピューティングプラットフォーム400のために提示された架空のターゲットA~Bによって処理されるべき実行ジョブの指示を受信することができる。管理プロセッサ411は、これらの着信ジョブを解析して、CPU、GPU、SSD、NIC、及び他のリソースの中から選択されたリソースを含むジョブを実行/処理するためのシステム要件を決定することができる。図4において、表490は、ジョブインタフェース414を介して受信され、ジョブキューにエンキューされた幾つかのジョブを示す。表490は、一意のジョブ識別子(ID)及びどのターゲットがジョブに関連付けられているかの表示を示し、その後に、ジョブをサポートするために形成された計算ユニット内に含まれるべき様々な粒度のシステム構成要素が続く。例えば、ジョブ491は、00001234のジョブIDを有し、ターゲットAをターゲットとし、ジョブ491を実行するために形成された計算ユニットに含まれるCPUが1つ、GPUが2つ、SSDが1つ、NICが1つであることを示す。これにより、管理プロセッサ411は、ジョブ491の実行タイミングになると、CPU421、GPU431~432、SSD441、NIC451から合成される計算ユニット401を構築する。計算ユニット401は、論理ドメイン470によって示されるPCIeファブリック内の論理分割を使用して合成される。論理ドメイン470は、CPU421、GPU431~432、SSD441、及びNIC451がPCIeシグナリングを介して通信することを可能にし、同時に、他の論理ドメインの他の構成要素及び他の計算ユニットを計算ユニット401からPCIe通信を分離し、全て同じPCIeファブリックを共有する。計算ユニット401はまた、NIC451のMACアドレス又はイーサネットアドレスが最初にターゲットAに関連付けられたIPアドレスに関連付けられるように、再割り当てされたターゲットAに関連付けられたIPアドレスを有する。ジョブ491は、様々なソフトウェア構成要素が計算ユニット401に展開されると、計算ユニット401上で実行することができる。計算ユニット401は、ジョブの完了時に分解することができ、様々なネットワーク状態をターゲットAに戻すことができる。他のターゲットA~C(又はそれ以上)も同様に処理することができる。
【0061】
PCIeファブリックが図4との関連で説明されているが、管理プロセッサ411は、複数のプロトコル通信ファブリック及びPCIeとは異なる通信ファブリックの制御及び管理を行なうことができる。例えば、管理プロセッサ411及びPCIeファブリックのPCIeスイッチデバイスは、PCIe及び同様のプロトコルの複数の異なる実装又はバージョンを使用して物理構成要素の通信結合をもたらすことができる。例えば、同じPCIeファブリック内の異なる物理構成要素に対して、異なるPCIeバージョン(例えば、3.0、4.0、5.0、及びそれ以降)が採用されてもよい。更に、次世代インタフェース、例えば、Gen-Z、CCIX、CXL、OpenCAPI、又はWi-Fiインタフェースもしくはセルラ無線インタフェースを含む無線インタフェースを使用することができる。また、図4ではPCIeが使用されているが、PCIeは存在しなくてもよく、他の相互接続、ネットワーク、及びリンクインタフェースの中でも、NVMe、Ethernet、SAS、FibreChannel、Thunderbolt、SATA Expressなどの異なる通信リンク又はバスを代わりに使用できることを理解されたい。
【0062】
ここでコンピューティングプラットフォーム400の構成要素に関する説明を参照すると、管理プロセッサ411は、関連するストレージシステムから、管理オペレーティングシステム412、ユーザインタフェース413、及びジョブインタフェース414などのソフトウェアを検索及び実行する、1つ以上のマイクロプロセッサ及び他の処理回路を備えることができる。管理プロセッサ411は、単一の処理デバイス内に実装することができるが、プログラム命令を実行する際に協働する複数の処理デバイス又はサブシステムにわたって分散させることもできる。管理プロセッサ411の例は、汎用中央処理ユニット、特定用途向けプロセッサ、及び論理デバイス、並びに任意の他の種類の処理デバイス、それらの組み合わせ、又は変形を含む。幾つかの例では、管理プロセッサ411は、Intel(登録商標)もしくはAMD(登録商標)マイクロプロセッサ、Apple(登録商標)マイクロプロセッサ、ARM(登録商標)マイクロプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向けプロセッサ、又は他のマイクロプロセッサもしくは処理要素を含む。
【0063】
管理オペレーティングシステム(OS)412は、管理プロセッサ411によって実行され、コンピューティングプラットフォーム400のリソースの管理を行なう。この管理は、他の機能の中でも、計算ユニットエイリアシング、計算ユニットエイリアスオーバープロビジョニング、計算ユニット合成、計算ユニット変更、計算ユニット分解、計算ユニットネットワーク状態転送、及び計算ユニットの監視を含む。管理OS 412は、管理プロセッサ411のための本明細書に記載の機能及び動作もたらす。ユーザインタフェース413は、グラフィカルユーザインタフェース(GUI)、アプリケーション・プログラミング・インタフェース(API)、又はコマンド・ライン・インタフェース(CLI)、WebSocketインタフェースを一人以上のユーザに提示することができる。ユーザインタフェース413は、計算ユニットを確立し、計算ユニットにリソースを割り当て、計算ユニットのクラスタを作成し、他の動作を実行するために、エンドユーザ又は管理者によって使用することができる。幾つかの例では、ユーザインタフェース413は、ユーザが、計算ユニットの作成で使用するために使用又はカスタマイズするための1つ以上の計算ユニットテンプレート及び動的調整ポリシーセットを決定することを可能にするインタフェースを提供する。ユーザインタフェース413を使用して、マシンテンプレートを管理、選択、及び変更することができる。ユーザインタフェース413を使用して、計算ユニットのポリシーを管理、選択、及び変更することができる。ユーザインタフェース413はまた、コンピューティングプラットフォーム400の動作のためのテレメトリ情報を、1つ以上の状態インタフェース又は状態ビューなどでユーザに提供することができる。コンピューティングプラットフォーム400の様々な構成要素又は要素の状態は、とりわけ、CPU状態、GPU状態、NIC状態、SSD状態、PCIeスイッチ/ファブリック状態など、ユーザインタフェース413を介して監視することができる。様々な性能測定基準、エラー状況は、ユーザインタフェース413を使用して監視することができる。
【0064】
要素411~414の複数のインスタンスをコンピューティングプラットフォーム400に含めることができる。各管理インスタンスは、所定数のクラスタ又は計算ユニットのリソースを管理することができる。GUIを介して受信されるものなどのユーザコマンドは、管理インスタンスのいずれかに受信され、受信管理インスタンスによってハンドリング管理インスタンスに転送されることができる。各管理インスタンスは、適切な管理インスタンスへのユーザコマンドの配信を助けることができる一意的な又は事前に割り当てられた識別子を有することができる。更に、各管理インスタンスの管理プロセッサは、メールボックスプロセス又は他のデータ交換技術を使用するなどして、互いに通信することができる。この通信は、I2Cインタフェースなどの専用サイドバンドインタフェースを介して行うことができ、又は各管理プロセッサを結合するPCIe又はイーサネットインタフェースを介して行うことができる。
【0065】
複数のCPU421~425は、シャーシ420に含まれる。各CPUは、1つ以上のCPU又はマイクロプロセッサと、関連するストレージシステムからオペレーティングシステム、デバイスドライバ、及びアプリケーションなどのソフトウェアを取得して実行する他の処理回路とを含むCPUモジュールを備えることができる。各CPUは、単一の処理デバイス内に実装することができるが、プログラム命令を実行する際に協働する複数の処理デバイス又はサブシステムにわたって分散させることもできる。各CPUの例は、汎用中央処理ユニット、特定用途向けプロセッサ、及び論理デバイス、並びに任意の他の種類の処理デバイス、それらの組み合わせ、又は変形を含む。幾つかの例では、各CPUは、Intel(登録商標)マイクロプロセッサ、Apple(登録商標)マイクロプロセッサ、AMD(登録商標)マイクロプロセッサ、ARM(登録商標)マイクロプロセッサ、グラフィックスプロセッサ、計算コア、グラフィックスコア、ASIC、FPGA、又は他のマイクロプロセッサもしくは処理要素を含む。各CPUはまた、1つ以上のPCIeインタフェース及びPCIeファブリックを介して、同じストレージアセンブリ/筐体又は別のストレージアセンブリ/筐体内のものなどの他の計算ユニットと通信することができる。
【0066】
複数のGPU431~435がシャーシ430に含まれ、これは任意のタイプのCoCPUを表すことができる。各GPUは、1つ以上のGPUを含むGPUモジュールを備えることができる。各GPUは、1つ以上の計算ユニットに割り当てることができるグラフィックス処理リソースを含む。GPUは、グラフィックスプロセッサ、シェーダ、ピクセルレンダリング要素、フレームバッファ、テクスチャマッパ、グラフィックスコア、グラフィックスパイプライン、グラフィックスメモリ、又は他のグラフィックス処理及び処理要素を含むことができる。幾つかの例では、各GPUは、GPUチップをサポートする回路を備えるグラフィックス「カード」を備える。例示的なGPUカードは、様々なサポート回路、コネクタ、及び他の要素と共にグラフィックス処理要素を含むnVIDIA(登録商標)又はAMD(登録商標)グラフィックスカードを含む。更なる例では、機械学習処理ユニット、テンソル処理ユニット(TPU)、FPGA、ASIC、又は特殊なデータセットの処理に処理及びメモリリソースを集中させるための特殊な処理要素を含むことができる他の特殊なプロセッサなど、他のスタイルのグラフィックス処理ユニット、グラフィックス処理アセンブリ、又はコプロセッシング要素を使用することができる。
【0067】
複数のSSD441~445は、シャーシ440に含まれる。各SSDは、1つ以上のSSDを含むSSDモジュールを備えてもよい。各SSDは、PCIeインタフェースを有するソリッドステートストレージドライブなどの1つ以上のストレージドライブを含む。各SSDはまた、PCIeインタフェース、制御プロセッサ、及び電力システム要素を含む。各SSDは、他の動作の中でも、トラフィック統計及び状態監視のためのプロセッサ又は制御システムを含むことができる。更に他の例では、各SSDは、代わりに、磁気ハードディスクドライブ(HDD)、クロスポイントメモリ(例えば、Optane(登録商標)デバイス)、スタティックランダムアクセスメモリ(SRAM)デバイス、プログラマブル読み出し専用メモリ(PROM)デバイス、又は他の磁気、光学、もしくは半導体ベースの記憶媒体などの異なるデータ記憶媒体を、関連する筐体、制御システム、電力システム、及びインタフェース回路と共に備える。
【0068】
複数のNIC451~455がシャーシ450内に含まれ、それぞれが関連するMACアドレス又はイーサネットアドレスを有する。各NICは、1つ以上のNICを含むNICモジュールを備えることができる。各NICは、TCP/IP(伝送制御プロトコル(TCP)/インターネットプロトコル)ネットワークを介して通信するための、又はiSCSI(Internet Small Computer System Interface)もしくはNVMe(NVM Express)トラフィックなどのユーザトラフィックを搬送するためのネットワークインタフェースコントローラカードを含むことができる。NICは、イーサネットインタフェース機器を備えることができ、有線、光、又は無線リンクを介して通信することができる。コンピューティングプラットフォーム400の構成要素への外部アクセスは、NICによって提供されるパケットネットワークリンクを介してもたらすことができる。NICは、PCIeファブリックの関連するPCIeリンクを介して、関連する計算ユニットの他の構成要素と通信することができる。幾つかの例では、NICは、イーサネットリンクを介して管理プロセッサ411と通信するために提供される。追加の例では、NICは、イーサネットリンクを介して1つ以上の他のシャーシ、ラックマウントシステム、データセンタ、コンピューティングプラットフォーム、通信ファブリック、又は他の要素と通信するために提供される。
【0069】
コンピューティングプラットフォームには、CPU、GPU、SSD、及びNICに加えて、他の専用デバイスが採用されてもよい。これらの他の専用デバイスは、他の回路の中でも、専用のコプロセッシングサーキットリ、ファブリックカップリングRAMデバイス、ASIC回路、又はFPGA回路、並びに様々なメモリ構成要素、記憶構成要素、及びインタフェース構成要素を備えるコプロセッシングモジュールを含むことができる。他の専用デバイスはそれぞれ、1つ以上のPCIeレーンを備えるPCIeインタフェースを含むことができる。これらのPCIeインタフェースは、PCIeファブリックを介して通信し、1つ以上の計算ユニットに他の専用デバイスを含めるために使用することができる。これらの他の専用デバイスは、ルートコンプレクスを有しても有しなくてもよいPCIeエンドポイントデバイス又はPCIeホストデバイスを備えてもよい。
【0070】
FPGAデバイスは、他の専用デバイスの一例として採用することができる。FPGAデバイスは、CPU又はGPUなどの別のPCIeデバイスから処理タスクを受信して、それらの処理タスクをFPGAプログラマブル論理回路にオフロードすることができる。FPGAは、一般に、構成データを使用してプログラム状態に初期化され、このプログラム状態は、様々な論理構成、メモリ回路、レジスタ、処理コア、特殊回路、及び特殊回路又は特定用途向け回路を提供する他の機能を含む。FPGAデバイスは、その中に実装された回路を変更し、異なる時点で異なるセットの処理タスクを実行するように再プログラムすることができる。FPGAデバイスを使用して、機械学習タスクを実行し、人工ニューラルネットワーク回路を実装し、カスタムインタフェース又はグルーロジックを実装し、暗号化/復号タスクを実行し、ブロックチェーン計算及び処理タスクを実行し、又は他のタスクを実行することができる。幾つかの例では、CPUは、PCIeインタフェースを介してFPGAによって処理されるデータをFPGAに提供する。FPGAは、このデータを処理して結果を生成し、この結果をPCIeインタフェースを介してCPUに提供することができる。2つ以上のCPU及び/又はFPGAが、2つ以上のデバイスを介してタスクを並列化するために、又は2つ以上のデバイスを介してデータをシリアル処理するために関与し得る。幾つかの例では、FPGA装置は、構成データ記憶装置に記憶された構成データを使用して補足、置換、又は上書きすることができるローカルに記憶された構成データを含むことができる。この構成データは、本明細書で説明される他の構成データの中でも、ファームウェア、プログラマブル論理プログラム、ビットストリーム、又はオブジェクト、PCIeデバイス初期構成データを含むことができる。FPGA構成はまた、ブートプログラミング、電源オン構成、又はFPGAデバイスの初期構成を確立するための他の機能を実行するために使用されるSRAMデバイス又はPROMデバイスを含むことができる。幾つかの例では、SRAM又はPROMデバイスをFPGA回路又はパッケージに組み込むことができる。
【0071】
PCIeスイッチ460~464は、関連するPCIeリンクを介して通信する。図4の例では、PCIeスイッチ460~464は、各シャーシ内のPCIeデバイス間及び各シャーシ間でユーザデータを搬送するために使用することができる。各PCIeスイッチ460~464は、各PCIeスイッチによって処理される任意のPCIeインタフェース間の切り替え接続を確立するためのPCIeクロスコネクトスイッチを備える。本明細書で説明されるPCIeスイッチは、少なくとも各PCIeリンクによって搬送されるトラフィックに基づいて、関連するPCIeリンクのうちの様々なPCIeリンクを論理的に相互接続することができる。これらの例では、ユーザ定義のグループに従ってPCIeスイッチのPCIeポートを分離することを可能にするドメインベースのPCIeシグナリング配信を含めることができる。ユーザ定義グループは、構成要素を関連する計算ユニットに論理的に統合し、構成要素及び計算ユニットを互いに論理的に分離する管理プロセッサ411によって管理することができる。ドメインベースの分離に加えて、又はその代わりに、各PCIeスイッチポートは、非透過(NT)又は透過ポートとすることができる。NTポートは、ブリッジのようにエンドポイント間の何らかの論理的分離を可能にすることができるが、透過ポートは論理的分離を可能にせず、純粋に切り替えられた構成でエンドポイントを接続する効果を有する。1つ以上のNTポートを介したアクセスは、特定のNTポートを選択するため、又はNTポートを介した可視性を可能にするために、PCIeスイッチと開始エンドポイントとの間の追加のハンドシェイクを含むことができる。
【0072】
好適には、このNTポートベースの分離又はドメインベースの分離は、物理的構成要素(すなわち、CPU、GPU、SSD、NIC)が分離/分割を介して含まれる構成要素に対してのみ視認性を有することを可能にすることができる。したがって、PCIeファブリック間の論理分割を用いて、複数の物理構成要素間のグループ化を実現することができる。この分割は本質的にスケーラブルであり、管理プロセッサ411又は他の制御要素によって必要に応じて動的に変更することができる。管理プロセッサ411は、PCIeポート間の論理分割又は分離を変更し、したがって物理構成要素のグループ化の合成を変更するために、PCIeファブリックを備えるPCIeスイッチ回路を制御することができる。本明細書では計算ユニットと呼ばれるこれらのグループ化は、個別に「マシン」を形成することができ、多くの計算ユニット/マシンのクラスタに更にグループ化することができる。本明細書で説明される他の考慮事項の中でも、ユーザインタフェースを介して受信されたユーザ命令に従って、ロード/アイドル状態に応答して動的に、着信又はキューに入れられた実行ジョブに応答して動的に、又は予期される必要性に起因して先制的に、物理的構成要素を計算ユニットに追加又は計算ユニットから除去することができる。
【0073】
更なる例では、メモリマップドダイレクトメモリアクセス(DMA)コンジットを、個々のCPU/PCIeデバイスペアの間に形成することができる。このメモリマッピングは、他の構成の中でもとりわけ、PCIeファブリックアドレス空間上で行うことができる。多くのCPU及びGPUを備える共有PCIeファブリック上にこれらのDMAコンジットを提供するために、本明細書に記載の論理分割を採用することができる。具体的には、PCIeスイッチ上のNTポート又はドメインベースの分割は、関連するCPU/GPU間の個々のDMAコンジットを分離することができる。PCIeファブリックは、64ビットのアドレス空間を有することができ、これにより、264バイトのアドレス指定可能な空間が可能になり、少なくとも16エクスビバイトのバイトアドレス指定可能なメモリがもたらされる。64ビットPCIeアドレス空間は、全ての計算ユニットによって共有されるか、又はリソースへの適切なメモリマッピングのための構成を形成する様々な計算ユニット間で分離されることが可能である。
【0074】
PCIeインタフェースは、x1、x2、x4、x8、x16、及びx32などの複数のバス幅をサポートすることができ、バス幅の各倍数は、データ転送のための追加の「レーン」を含む。PCIeはまた、他のシグナリングの中でも、システム管理バス(SMBus)インタフェース及びジョイントテストアクショングループ(JTAG)インタフェース、並びに関連するクロック、電力、及びブートストラップなどのサイドバンドシグナリングの転送をサポートする。PCIeはまた、本明細書で使用される異なる実装又はバージョンを有し得る。例えば、PCIeバージョン3.0以降(例えば、4.0、5.0、又はそれ以降)が採用されてもよい。更に、Gen-Z、Cache Coherent CCIX、CXL、又はOpenCAPIなどの次世代インタフェースを使用することができる。また、図4ではPCIeが使用されているが、他の相互接続、ネットワーク、及びリンクインタフェースの中でも、NVMe、イーサネット、SAS、FibreChannel、Thunderbolt、SATA Expressなどの異なる通信リンク又はバスを代わりに使用できることを理解されたい。NVMeは、ハードディスクドライブ及びソリッドステートメモリ装置などの大容量記憶装置のためのインタフェース規格である。NVMeは、パーソナルコンピュータ及びサーバ環境における大容量記憶装置とインタフェースするためのSATAインタフェースに取って代わることができる。しかしながら、これらのNVMeインタフェースは、SATAデバイスと同様に、1対1のホストドライブ関係に限定される。本明細書で説明する例では、PCIeインタフェースを使用して、NVMeトラフィックを転送し、PCIeインタフェース上で1つ以上のNVMe仮想論理ユニット番号(VLUN)として多くのストレージドライブを備えるマルチドライブシステムを提示することができる。
【0075】
図4のリンクのいずれも、空気、空間、金属、光ファイバ、又はそれらの組み合わせを含む他の何らかの信号伝搬経路などの様々な通信媒体をそれぞれ使用することができる。図4のリンクのいずれも、任意の数のPCIeリンク又はレーン構成を含むことができる。図4のリンクのいずれも、それぞれ直接リンクであってもよく、又は様々な機器、中間構成要素、システム、及びネットワークを含んでもよい。図4のリンクのいずれも、それぞれ共通リンク、共有リンク、集約リンクとすることができ、又は個別の別個のリンクから構成することができる。
【0076】
次に、計算ユニットの形成及び処理の詳細な例について説明する。図4では、任意のCPU421~425は、PCIeファブリックによって論理的に分離されているように、任意の/全てのGPU431~435、SSD441~445、及びNIC451~455、又はコンピューティングプラットフォーム400のPCIeファブリックに結合された他の物理構成要素に対する構成可能な論理的可視性を有する。例えば、任意のCPU421~425は、同じ計算ユニットに含まれる任意のSSD441~445とストレージデータを転送及び検索することができる。同様に、任意のCPU421~425は、同じ計算ユニットに含まれる任意のGPU431~435による処理のためにデータを交換することができる。したがって、「m」個のSSD又はGPUを「n」個のCPUと結合して、高レベルの性能、冗長性、及び密度を有する大規模でスケーラブルなアーキテクチャを可能にすることができる。グラフィック処理の例では、PCIeファブリックにおけるNT分割又はドメインベースの分割は、PCIeスイッチの1つ以上によってもたらすことができる。この分割により、GPUを所望の1つ以上のCPUと相互作用させることができ、8つのGPUなどの2つ以上のGPUを特定の計算ユニットに関連付けることができる。更に、動的なGPU計算ユニットの関係は、PCIeファブリック全体の分割を使用してオンザフライで調整することができる。共有NICリソースは、計算ユニット全体に適用することもできる。
【0077】
図5は、計算ユニットの形成及びそこへのソフトウェア構成要素の展開など、図4の要素に関する更なる詳細を含むシステム図である。システム500は、リンク510を介して合成計算ユニット401と通信する管理プロセッサ411を含む。合成計算ユニット401は、CPU421、GPU431~432、SSD441、及びNIC451を備える。CPU421は、オペレーティングシステム522、アプリケーション524、計算ユニットインタフェース525、及び実行ジョブ491を備えるソフトウェアを展開している。したがって、CPU421は、幾つかの動作層を有するものとして示されている。第1の層501は、論理ドメイン470を使用してPCIeファブリック上に形成される計算ユニット401のハードウェア層又は「金属」マシンインフラストラクチャである。第2の層502は、OS並びに計算ユニットインタフェース525を提供する。最後に、第3の層503は、ユーザレベルアプリケーション及び実行ジョブを提供する。
【0078】
管理OS111はまた、リンク510を介して、計算ユニット401上に展開された計算ユニットインタフェース525と通信する管理インタフェース515を含む。管理インタフェース515は、ソフトウェア構成要素を計算ユニットに転送し、計算ユニットから状態、テレメトリ、及び他のデータを受信するために、計算ユニットとの通信を可能にする。管理インタフェース515及び計算ユニットインタフェース525は、制御命令、制御応答、テレメトリデータ、状態情報、又は他のデータなどのための管理トラフィックのための標準化されたインタフェースを提供する。標準化されたインタフェースは、1つ以上のAPIを含むことができる。
【0079】
幾つかの例では、計算ユニットインタフェースは、エミュレートされたネットワークインタフェースを含む。このエミュレートされたネットワークインタフェースは、1つ以上のPCIeインタフェース上でパケットネットワークトラフィックを転送するためのトランスポート機構を備える。エミュレートされたネットワークインタフェースは、イーサネットデバイスなどのネットワークデバイスを管理プロセッサ411にエミュレートすることができ、その結果、管理プロセッサ411は、あたかも管理プロセッサ411及びCPU421がイーサネットネットワークインタフェースを介して通信しているかのように、PCIeインタフェースを介して計算ユニット401のCPU421と対話/インタフェースすることができる。エミュレートされたネットワークインタフェースは、OSがイーサネットスタイルのコマンド及びドライバを使用してインタフェースすることを可能にし、アプリケーション又はOSレベルのプロセスが、完全なネットワークスタックに関連付けられた関連するレイテンシ及び処理オーバーヘッドを有することなく、エミュレートされたネットワークデバイスと通信することを可能にするカーネルレベルの要素又はモジュールを備えることができる。エミュレートされたネットワークインタフェースは、ドライバ、モジュール、カーネルレベルモジュール、又は計算ユニットのCPUによって実行されるアプリケーションレベル及びシステムレベルのソフトウェアに対するネットワークデバイスとして見える他のソフトウェア構成要素などのソフトウェア構成要素を含む。好適には、エミュレートされたネットワークインタフェースは、通信を転送するためにネットワークスタック処理を必要としない。計算ユニット401などの計算ユニットの場合、エミュレートされたネットワークインタフェースは、ネットワークスタック処理を使用せず、依然としてネットワークデバイスとしてオペレーティングシステム522に現れるので、関連するCPUのユーザソフトウェア又はオペレーティングシステム要素は、ネットワークインタフェースと対話し、イーサネット通信などの既存のネットワークに面する通信方法を使用してPCIeファブリックを介して通信することができる。管理プロセッサ411のエミュレートされたネットワークインタフェースは、PCIeインタフェース又はPCIeファブリックを介して、関連するトラフィックとして、計算ユニット401上に位置する別のエミュレートされたネットワークデバイスに通信を転送する。エミュレートされたネットワークインタフェースは、PCIeトラフィックをネットワークデバイストラフィックに変換し、その逆も同様である。ネットワークスタックを介してエミュレートされたネットワークデバイスに転送される通信の処理は省略され、ネットワークスタックは、一般に、提示されるネットワークデバイス/インタフェースのタイプに使用される。例えば、エミュレートされたネットワークデバイスは、1つ以上のオペレーティングシステム又はアプリケーションにイーサネットデバイスとして提示されてもよい。1つ以上のオペレーティングシステムから受信した通信は、エミュレートされたネットワークデバイスによって1つ以上の送信先に転送される。しかしながら、エミュレートされたネットワークインタフェースは、アプリケーション層からリンク層までの通信を処理するためのネットワークスタックを含まない。代わりに、エミュレートされたネットワークインタフェースは、1つ以上のオペレーティングシステムから受信した通信からペイロードデータ及び送信先を抽出し、送信先に関連するアドレス指定を使用してペイロードデータをPCIeフレームにカプセル化することなどによって、ペイロードデータ及び送信先をPCIeトラフィックに変換する。
【0080】
計算ユニットインタフェース525は、エミュレートされたネットワークインタフェースについて説明したような、エミュレートされたネットワークインタフェースを含むことができる。更に、計算ユニットインタフェース525は、CPU421の動作及びCPU421によって実行されるソフトウェアを監視し、この動作のためのテレメトリを管理プロセッサ411に提供する。したがって、ユーザ提供オペレーティングシステム(Windows、Linux(登録商標)、MacOS、Android、iOSなど...)、実行ジョブ491、ユーザアプリケーション524、又は他のソフトウェア及びドライバなどの任意のユーザ提供ソフトウェアをCPU421によって実行することができる。計算ユニットインタフェース525は、CPU421が関連する計算ユニット及び/又はクラスタに関与すること、並びにリンク510を介して管理プロセッサ411にテレメトリデータを提供することを可能にする機能を与える。計算ユニットが複数の又は異なる通信プロトコルを利用する物理構成要素を含む例では、計算ユニットインタフェース525は、計算ユニット内でプロトコル間通信が行われることを可能にする機能を与えることができる。計算ユニットの各CPUはまた、PCIeファブリックを介してネットワークトラフィックを伝送するエミュレートされたネットワークデバイスを介して互いに通信することができる。計算ユニットインタフェース525はまた、ユーザソフトウェア及びオペレーティングシステムが計算ユニットインタフェース525と対話するためのAPI、並びに管理プロセッサ411と制御/テレメトリシグナリングを交換するためのAPIを提供することもできる。
【0081】
更に、計算ユニットインタフェース525は、例えば、PCIeデバイスが異なる通信プロトコルを利用する場合、計算ユニットのPCIeデバイスのデバイスドライバ間のプロトコル間通信又はピアツーピア通信を容易にするために、計算ユニットのPCIeデバイスのデバイスドライバへのインタフェースとして動作することができる。更に、計算ユニットインタフェース525は、ダイナミクス調整ポリシーに基づいて計算ユニットに対する動的調整中の継続動作を容易にするように動作することができる。更に、計算ユニットインタフェース525は、ポリシー(例えば、利用率又は応答性ポリシーに基づくPCIeバージョン3.0ハードウェアからGen-Zハードウェアへの移行)に基づいて、コンピューティングプラットフォームにおける代替ハードウェアへの移行を容易にするように動作することができる。対応するPCIeスイッチ回路内の制御要素は、異なるバージョン又は通信プロトコルを利用する計算ユニット間のPCIe通信を監視するように構成されてもよい。前述したように、コンピューティングプラットフォーム内で、及び幾つかの実装形態では計算ユニット内で、異なるバージョン又は通信プロトコルを利用することができる。幾つかの例では、PCIeファブリック内の1つ以上のPCIeスイッチ又は他のデバイスは、異なるバージョン又は通信プロトコルを利用するPCIeデバイス間のインタフェースとして機能するように動作することができる。検出されたデータ転送は、「トラップ」され、PCIeスイッチ回路によって送信先PCIeデバイスによって利用されるバージョン又は通信プロトコルに変換又は変換され、次いで送信先PCIeデバイスにルーティングされ得る。
【0082】
図6は、管理プロセッサ600の実装形態を示すブロック図である。管理プロセッサ600は、図1の管理システム110、図3の管理コントローラ310、又は図4及び図5の管理プロセッサ411など、本明細書で説明する管理プロセッサのいずれかの例を示す。管理プロセッサ600は、通信インタフェース601と、ジョブインタフェース602と、ユーザインタフェース603と、処理システム610とを含む。処理システム610は、処理回路611と、ランダムアクセスメモリ(RAM)613を含むことができるデータストレージシステム612とを含むが、追加の又は異なる構成の要素を含むことができる。
【0083】
処理回路611は、単一の処理デバイス内に実装することができるが、プログラム命令を実行する際に協働する複数の処理デバイス又はサブシステムにわたって分散させることもできる。処理回路611の例は、汎用中央処理ユニット、マイクロプロセッサ、特定用途向けプロセッサ、及び論理デバイス、並びに任意の他の種類の処理デバイスを含む。幾つかの例では、処理回路611は、クラウドコンピューティングシステムなどの物理的に分散された処理デバイスを含む。
【0084】
通信インタフェース601は、通信リンク、パケットネットワークなどのネットワーク、及びインターネットなどを介して通信するための1つ以上の通信及びネットワークインタフェースを含む。通信インタフェースは、PCIeインタフェース、イーサネットインタフェース、シリアルインタフェース、シリアルペリフェラルインタフェース(SPI)リンク、集積回路間(I2C)インタフェース、ユニバーサルシリアルバス(USB)インタフェース、UARTインタフェース、無線インタフェース、又はイーサネットもしくはインターネットプロトコル(IP)リンクを介して通信することができる1つ以上のローカルもしくはワイドエリアネットワーク通信インタフェースを含むことができる。通信インタフェース601は、異なるネットワークリンクに関連付けることができる1つ以上のネットワークアドレスを使用して通信するように構成されたネットワークインタフェースを含むことができる。通信インタフェース601の例は、ネットワークインタフェースカード機器、トランシーバ、モデム、及び他の通信回路を含む。通信インタフェース601は、PCIeファブリック又は他の通信ファブリックの要素と通信して、通信ファブリックの1つ以上の通信スイッチの管理インタフェース又は制御インタフェースなどを介して、ファブリック内で論理分割を確立することができる。
【0085】
ジョブインタフェース602は、1つ以上の外部システムから実行ジョブを受け取り、そのような外部システムに実行ジョブ結果及び状態を提供するネットワークベースのインタフェース又は他のリモートインタフェースを備える。ジョブは、ジョブインタフェース602を介して受信され、対応するコンピューティングプラットフォームの要素による実行又は他の種類の処理のためにジョブスケジュール631に配置される。ジョブインタフェース602は、他のインタフェースの中でも、ネットワークインタフェース、ユーザインタフェース、端末インタフェース、アプリケーション・プログラミング・インタフェース(API)、表現状態転送(REST)インタフェース、RESTfulインタフェース、RestAPIを含むことができる。幾つかの例では、ワークロードマネージャソフトウェアプラットフォーム(図示せず)は、実行又は処理のためにジョブを作成、スケジュール、及び転送することができるユーザ又はオペレータ用のフロントエンドを確立する。ジョブインタフェース602は、ワークロードマネージャソフトウェアプラットフォームからこれらのジョブの指示を受信することができる。
【0086】
ユーザインタフェース603は、タッチスクリーン、キーボード、マウス、音声入力装置、音声入力装置、又はユーザからの入力を受信するための他のタッチ入力装置を含むことができる。ディスプレイ、スピーカ、ウェブインタフェース、端末インタフェース、及び他の種類の出力装置などの出力装置もまた、ユーザインタフェース603に含まれてもよい。ユーザインタフェース603は、通信インタフェース601などのネットワークインタフェースを介して出力を提供し、入力を受信することができる。ネットワークの例では、ユーザインタフェース603は、1つ以上のネットワークインタフェースを介して結合されたディスプレイシステム又はコンピューティングシステムによって、リモートディスプレイ用のディスプレイ又はグラフィックスデータをパケット化することができる。ユーザインタフェース603の物理的又は論理的要素は、ユーザ又は他のオペレータに警告又は視覚的出力を提供することができる。ユーザインタフェース603はまた、前述した様々なユーザ入出力装置をサポートする、処理システム610によって実行可能な関連するユーザインタフェースソフトウェアを含むことができる。別個に、又は互いに及び他のハードウェア及びソフトウェア要素と共に、ユーザインタフェースソフトウェア及びユーザインタフェースデバイスは、グラフィカルユーザインタフェース、自然なユーザインタフェース、又は任意の他の種類のユーザインタフェースをサポートすることができる。
【0087】
ユーザインタフェース603は、グラフィカルユーザインタフェース(GUI)を一人以上のユーザに提示することができる。GUIは、クラスタを確立し、アセット(計算ユニット/マシン)を各クラスタに割り当てるために、エンドユーザ又は管理者によって使用され得る。幾つかの例では、GUI又はユーザインタフェース603の他の部分は、エンドユーザが、計算ユニットの作成で使用するために使用又はカスタマイズするための1つ以上の計算ユニットテンプレート及び動的調整ポリシーセットを決定することを可能にするインタフェースを提供する。ユーザインタフェース603を使用して、マシンテンプレートを管理、選択、及び変更したり、計算ユニットのポリシーを変更したりすることができる。ユーザインタフェース603はまた、1つ以上の状態インタフェース又は状態ビューなどにおいて、テレメトリ情報を提供することができる。様々な構成要素又は要素の状態は、とりわけ、プロセッサ/CPU状態、ネットワーク状態、記憶装置状態、PCIe要素状態など、ユーザインタフェース603を介して監視することができる。様々な性能測定基準、エラー状況は、ユーザインタフェース603を使用して監視することができる。ユーザインタフェース603は、コマンド・ライン・インタフェース(CLI)、アプリケーション・プログラミング・インタフェース(API)、又は他のインタフェースなど、GUI以外の他のユーザインタフェースを提供することができる。ユーザインタフェース603の一部は、WebSocketベースのインタフェースを介して提供することができる。
【0088】
ストレージシステム612及びRAM 613は、共に非一時的データストレージシステムを備えることができるが、変形も可能である。ストレージシステム612及びRAM613はそれぞれ、処理回路611によって読み取り可能であり、ソフトウェア及びOSイメージを記憶することができる任意の記憶媒体を備えることができる。RAM613は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報を記憶するための任意の方法又は技術で実装された揮発性及び不揮発性、取り外し可能及び固定の媒体を含むことができる。ストレージシステム612は、それらの組み合わせを含む、固体記憶媒体、フラッシュメモリ、相変化メモリ、又は磁気メモリなどの不揮発性記憶媒体を含むことができる。ストレージシステム612及びRAM613はそれぞれ、単一のストレージデバイスとして実装することができるが、複数のストレージデバイス又はサブシステムにわたって実装することもできる。ストレージシステム612及びRAM613はそれぞれ、処理回路611と通信することができるコントローラなどの追加の要素を備えることができる。
【0089】
ストレージシステム612又はRAM613上又はストレージシステム内に記憶されるソフトウェア又はデータは、コンピュータプログラム命令、ファームウェア、又は処理システムが実行されると本明細書に記載されるように動作するようにプロセッサ600に指示するプロセスを有する何らかの他の形態の機械可読処理命令を含むことができる。例えば、ソフトウェア620は、プロセッサ600を駆動して、他の構成要素の中でも、CPU、GPU、SSD、及びNICを含む複数の分散された物理コンピューティング構成要素間で計算ユニットを確立するためのユーザコマンドを受信することができる。ソフトウェア620は、テレメトリデータ、統計情報、動作データ、及び他のデータを受信及び監視して、テレメトリをユーザに提供し、テレメトリデータ、ポリシー、又は他のデータ及び基準に従って計算ユニットの動作を変更するようにプロセッサ600を駆動することができる。ソフトウェア620は、とりわけ、クラスタリソース及び計算ユニットリソースを管理し、通信ファブリック要素間のドメイン分割又はNT分割を確立し、個々の通信スイッチとインタフェースしてそのような通信スイッチの動作を制御するようにプロセッサ600を駆動することができる。ソフトウェアはまた、ユーザソフトウェアアプリケーション、アプリケーション・プログラミング・インタフェース(API)、又はユーザインタフェースを含むことができる。ソフトウェアは、単一のアプリケーション又は複数のアプリケーションとして実装することができる。一般に、ソフトウェアは、処理システムにロードされて実行されると、処理システムを汎用デバイスから本明細書で説明するようにカスタマイズされた専用デバイスに変換することができる。
【0090】
システムソフトウェア620は、RAM613の例示的な構成の詳細図を示す。異なる構成が可能であることを理解されたい。システムソフトウェア620は、アプリケーション621及びオペレーティングシステム(OS)622を含む。ソフトウェアアプリケーション623~629はそれぞれ、本明細書で説明する動作に従ってコンピューティングシステムもしくはクラスタコントローラを動作させるため、又は他の回路を動作させるためにプロセッサ600によって実行することができる実行可能命令を含む。
【0091】
具体的には、クラスタ管理アプリケーション623は、図1に示すように、コンピューティングプラットフォームの様々なハードウェア要素間でクラスタ及び計算ユニットを確立及び維持する。ユーザインタフェースアプリケーション624は、エンドユーザが関連するクラスタ及び計算ユニットを管理し、クラスタ及び計算ユニットの動作を監視するための1つ以上のグラフィカル又は他のユーザインタフェースを提供する。ジョブ処理アプリケーション625は、ジョブインタフェース602を介して実行ジョブを受信し、合成計算ユニット内のジョブの処理/実行に必要なコンピューティング構成要素の表示と共に、スケジューリング/待ち行列のために実行ジョブを解析する。ジョブ処理アプリケーション625はまた、ジョブの実行のために合成計算ユニットに展開される必要があるジョブソフトウェア又はデータ、並びにジョブのためにジョブインタフェース602を介して発信システムに転送される必要があるデータ、状態、又は結果を示す。モジュール通信アプリケーション626は、I2C、イーサネット、エミュレートされたネットワークデバイス、又はPCIeインタフェースなどの他のプロセッサ600要素間の通信を行なう。モジュール通信アプリケーション626は、プロセッサ600と合成計算ユニット、並びに他の要素との間の通信を可能にする。
【0092】
ターゲットエイリアシングハンドラ627は、1つ以上のワークロードマネージャ又は他の外部エンティティによってジョブをディスパッチさせることができるジョブターゲット又はプレースホルダエンティティを提示及び管理する。ターゲットエイリアシングハンドラ627は、物理コンピューティング構成要素に対応する必要がないプレースホルダエンティティを含むターゲットマシンを提供する。ターゲットマシンは、それに関連するネットワークアドレス指定又は他のネットワーク特性を有することができる。ターゲットエイリアシングハンドラ627は、ターゲットマシンに関する状態問い合わせに応答して、コンピューティング構成要素の選択の可用性状態にかかわらず、対応する選択又はコンピューティング構成要素セットがジョブの実行に利用可能であることを示す状態応答を転送する。ジョブが合成計算ユニットにディスパッチされると、ターゲットエイリアシングハンドラ627は、ARP再構成プロセスを実行して、ターゲットマシンの初期MACアドレスからのIPアドレスを合成マシン又は物理計算ユニットの異なるMACアドレスに関連付けるなど、合成計算ユニットのNICのネットワークアドレス指定へのネットワークアドレス指定の転送を処理することができる。ターゲットエイリアシングハンドラ627はまた、ジョブの完了及び合成マシンの分解後に、合成マシンからターゲットマシンにアドレス指定するネットワークの復帰を処理する。
【0093】
ユーザCPUインタフェース628は、計算ユニットのプロセッサ及びその専用ドライバ要素と通信するための通信、API、及びエミュレートされたネットワークデバイスを提供する。ファブリックインタフェース629は、PCIeファブリックのPCIeスイッチ素子などの通信ファブリック回路素子間の様々な論理分割又はドメインを確立する。ファブリックインタフェース629はまた、ファブリックスイッチ素子の動作を制御し、ファブリックスイッチ素子からテレメトリを受信する。ファブリックインタフェース629はまた、通信ファブリック内にアドレストラップ又はアドレスリダイレクト機能を確立する。ファブリックインタフェース629は、監視及びリダイレクトされるアドレス範囲を確立するために、1つ以上のファブリックスイッチ回路要素とインタフェースすることができ、したがって、通信ファブリック内にアドレストラップを形成する。
【0094】
ソフトウェア620に加えて、他のデータ630をストレージシステム612及びRAM613によって記憶することができる。データ630は、ジョブスケジュール631(又はジョブキュー)、テンプレート632、マシンポリシー633、テレメトリエージェント634、テレメトリデータ635、ファブリックデータ636、及びターゲットエイリアシング構成637を含むことができる。ジョブスケジュール631は、ジョブ識別子、ジョブの実行に必要なジョブリソース、並びに様々な他のジョブ情報の表示を含む。この他のジョブ情報には、受信、実行開始/終了、その他の情報のタイムスタンプを含めることができる。ジョブスケジュール631は、実行ジョブの実行/処理のために合成された計算ユニットに含めるために必要な実行ジョブ及び関連するコンピューティング構成要素の時間的表現を保持する1つ以上のデータ構造を含むことができる。テンプレート632は、予め定義された様々なハードウェアテンプレート又はマシンテンプレートの仕様又は記述を含む。テンプレート632はまた、テンプレート作成又はテンプレート調整に使用することができる構成要素のリスト又はデータ構造及び構成要素特性を含むことができる。マシンポリシー633は、以前に定義された様々なマシンポリシーの仕様又は説明を含む。これらのマシンポリシー仕様は、基準、トリガ、閾値、制限、又は他の情報のリスト、並びにポリシーの影響を受ける構成要素又はファブリックの指示を含むことができる。マシンポリシー633はまた、ポリシー要因、基準、トリガ、閾値、制限、又はポリシー作成もしくはポリシー調整に使用することができる他の情報のリスト又はデータ構造を含むことができる。テレメトリエージェント634は、計算ユニットの動作を監視するために計算ユニット内の構成要素に展開することができるソフトウェア要素を含むことができる。テレメトリエージェント634は、ハードウェア/ソフトウェアパラメータ、テレメトリデバイスアドレス指定、又は計算ユニット及び通信ファブリックのIPMI準拠ハードウェア/ソフトウェアなどの監視要素とのインタフェースに使用される他の情報を含むことができる。テレメトリデータ635は、様々な計算ユニットのテレメトリ要素からの受信データのデータストアを含み、この受信データは、テレメトリデータ又は監視データを含むことができる。テレメトリデータ635は、データを計算ユニット配置、通信ファブリック配置、又は他の構造に編成することができる。テレメトリデータ635は、データ630としてキャッシュされ、その後、コンピューティングシステムの他の要素に転送されるか、又はユーザインタフェースを介した提示に使用され得る。ファブリックデータ636は、ファブリックタイプ、プロトコルバージョン、技術記述子、ヘッダ要件、アドレス指定情報、及び他のデータなどのリソースのプール又は構成要素のプールを含む様々な通信ファブリックの情報及び特性を含む。ファブリックデータ636は、構成要素と構成要素が接続する特定のファブリックとの間の関係を含むことができる。
【0095】
ターゲットエイリアシング構成637は、物理的に利用可能なコンピューティング構成要素よりも多い数のコンピューティング構成要素を有するオーバープロビジョニングされた数のコンピューティング構成要素を示すオーバープロビジョニングレベルの選択又は指示を受信して記憶する。ターゲットエイリアシング構成637は、外部エンティティに提示されるターゲットの数の指示、及びそのようなターゲットの様々な構成を記憶することができる。例えば、ターゲットエイリアシング構成637は、オーバープロビジョニング特性、構成要素のタイプ、構成要素の数、ネットワークアドレス指定特性、又は他の特性を記憶することができる。
【0096】
ソフトウェア620は、プロセッサ600の実行及び動作中にRAM613に存在することができ、他の場所及び状態の中でも電源オフ状態中にストレージシステム612の不揮発性部分に存在することができる。ソフトウェア620は、コンピュータオペレーティングシステム及びアプリケーションについて説明したように、起動又はブート手順中にRAM613にロードすることができる。ソフトウェア620は、ユーザインタフェース603を介してユーザ入力を受け取ることができる。このユーザ入力は、ユーザコマンド、並びにそれらの組み合わせを含む他の入力を含むことができる。
【0097】
ストレージシステム612は、他のソリッドステート記憶技術の中でも、NANDフラッシュ又はNORフラッシュメモリなどのフラッシュメモリ、相変化メモリ、磁気メモリを含むことができる。図6に示すように、ストレージシステム612はソフトウェア620を含む。前述したように、ソフトウェア620は、他のオペレーティングソフトウェアの中でも、プロセッサ600の電源が切られた状態の間、アプリケーション及びOSのための不揮発性記憶空間内にあり得る。
【0098】
プロセッサ600は、一般に、本明細書に記載の動作をレンダリング又は他の様態で実施するために、少なくともソフトウェア620が展開及び実行されるコンピューティングシステムを表すことを意図している。しかしながら、プロセッサ600はまた、少なくともソフトウェア620をステージングすることができ、そこからソフトウェア620を展開及び実行、又は更に追加の配布のために更に別のコンピューティングシステムに配布、輸送、ダウンロード、又は提供することができる任意のコンピューティングシステムに相当することもできる。
【0099】
本明細書で説明するシステム及び動作は、コンピューティングユニットを備えるコンピューティングクラスタへのコンピューティングリソース(CPU)、グラフィックス処理リソース(GPU)、ネットワークリソース(NIC)、又はストレージリソース(SSD)の動的な割り当てを行なう。計算ユニットは、分解され、計算ユニットに割り当てられる(合成される)まで、未使用、未割り当て、又は自由な構成要素のプール内に存在する。管理プロセッサは、計算ユニットの合成及び分解を制御し、外部ユーザ、ジョブ管理ソフトウェア、又はオーケストレーションソフトウェアへのインタフェースを提供することができる。処理リソース及び他の要素(グラフィックス処理、ネットワーク、ストレージ、FPGA、又はその他)は、オンザフライでコンピューティングユニット及び関連するクラスタの内外で交換することができ、これらのリソースは他のコンピューティングユニット又はクラスタに割り当てることができる。一例では、グラフィックス処理リソースは、第1のコンピューティングリソース/CPUによってディスパッチ/調整され、続いてグラフィックス処理状況/結果を別のコンピューティングユニット/CPUに提供することができる。別の例では、リソースに障害、ハング、過負荷状態が発生した場合、追加のリソースをコンピューティングユニット及びクラスタに導入してリソースを補うことができる。
【0100】
処理リソース(例えば、CPU)には、管理プロセッサによる識別及びPCIeファブリック上の識別に使用するための一意的な識別子を割り当てることができる。オペレーティングシステム及びアプリケーションなどのユーザ供給ソフトウェアは、CPUが計算ユニットに追加された後に初期化されるときに必要に応じて処理リソースに展開することができ、ユーザ供給ソフトウェアは、それらのCPUが計算ユニットから取り外されるときにCPUから取り外すことができる。ユーザソフトウェアは、管理プロセッサが展開のためにアクセスすることができるストレージシステムから展開することができる。ストレージドライブ、ストレージデバイス、及び他のストレージリソースなどのストレージリソースは、計算ユニット/クラスタ間で割り当てられ、細分化され得る。これらのストレージリソースは、異なる又は類似のストレージドライブ又はデバイスにまたがることができ、任意の数の論理ユニット(LUN)、論理ターゲット、パーティション、又は他の論理配置を有することができる。これらの論理配置は、1つ以上のLUN、iSCSI LUN、NVMeターゲット、又は他の論理分割を含むことができる。ミラーリング、ストライプ、独立ディスク冗長アレイ(RAID)アレイなどのストレージリソースのアレイを使用することができ、又はストレージリソース全体で他のアレイ構成を使用することができる。ネットワークインタフェースカードなどのネットワークリソースは、ブリッジ又はスパン技術を使用してクラスタの計算ユニット間で共有することができる。グラフィックリソース(例えば、GPU)又はFPGAリソースは、PCIeファブリック及びPCIeスイッチ上でNT分割又はドメインベースの分割を使用して、クラスタの複数の計算ユニット間で共有することができる。
【0101】
図で提供される機能ブロック図、動作シナリオ及びシーケンス、並びにフロー図は、本開示の新規な態様を実行するための例示的なシステム、環境、及び方法論を表す。説明を簡単にするために、本明細書に含まれる方法は、機能図、動作シナリオもしくはシーケンス、又はフロー図の形態であってもよく、一連の動作として説明されてもよいが、幾つかの動作は、それに従って、本明細書に示され説明されているものとは異なる順序で、及び/又は他の動作と同時に行われ得るため、方法は動作の順序によって限定されないことを理解及び認識されるべきである。例えば、当業者は、方法が状態図などの一連の相互に関連する状態又は事象として代替的に表され得ることを理解及び認識できる。更に、方法論において例示された全ての動作が、新規な実施のために必要とされるわけではない。
【0102】
本明細書に含まれる説明及び図は、最良のオプションを作成及び使用する方法を当業者に教示するための特定の実施態様を示す。本発明の原理を教示する目的で、幾つかの従来の態様が簡略化又は省略される。当業者は、本開示の範囲内に入るこれらの実施からの変形を理解することができる。また、当業者であれば分かるように、前述の特徴を様々な方法で組み合わせて複数の実装形態を形成することができる。結果として、本発明は、前述の特定の実施態様に限定されず、特許請求の範囲及びそれらの均等物によってのみ限定される。
図1
図2
図3
図4
図5
図6
【国際調査報告】