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

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

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

特表2023-553213計算クラスタにおける実行ジョブ計算ユニット合成
<>
  • 特表-計算クラスタにおける実行ジョブ計算ユニット合成 図1
  • 特表-計算クラスタにおける実行ジョブ計算ユニット合成 図2
  • 特表-計算クラスタにおける実行ジョブ計算ユニット合成 図3
  • 特表-計算クラスタにおける実行ジョブ計算ユニット合成 図4
  • 特表-計算クラスタにおける実行ジョブ計算ユニット合成 図5
  • 特表-計算クラスタにおける実行ジョブ計算ユニット合成 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-20
(54)【発明の名称】計算クラスタにおける実行ジョブ計算ユニット合成
(51)【国際特許分類】
   G06F 9/50 20060101AFI20231213BHJP
   G06F 9/48 20060101ALI20231213BHJP
【FI】
G06F9/50 120A
G06F9/48 300A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023559965
(86)(22)【出願日】2021-11-11
(85)【翻訳文提出日】2023-08-07
(86)【国際出願番号】 US2021058947
(87)【国際公開番号】W WO2022125259
(87)【国際公開日】2022-06-16
(31)【優先権主張番号】17/119,165
(32)【優先日】2020-12-11
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.3GPP
2.Linux
3.WINDOWS
4.macOS
5.ANDROID
6.iOS
7.OPENCAPI
(71)【出願人】
【識別番号】523220499
【氏名又は名称】リキッド インコーポレイテッド
(74)【代理人】
【識別番号】110000659
【氏名又は名称】弁理士法人広江アソシエイツ特許事務所
(72)【発明者】
【氏名】クラーク,ジョサイア
(57)【要約】
本明細書では、通信ファブリックを介して結合された物理計算構成要素の配置の展開が提示される。一例では、方法は、少なくとも1つの通信ファブリックに結合された計算構成要素のプールを含む計算クラスタに指示する実行ジョブを受信するステップを含む。実行ジョブのプロパティに基づいて、本方法は、実行ジョブを処理するためのリソーススケジューリングを決定するステップであって、リソーススケジューリングが、計算クラスタのリソースの時間的割り当てを示す、ステップと、実行ジョブを処理するために計算構成要素のプールの中から選択された計算構成要素のセットを含む計算ユニットを合成するように通信ファブリックに少なくとも命令することによって、リソーススケジューリングに従って計算クラスタ上で実行ジョブを開始するステップと、を含む。実行ジョブの完了に応答して、計算ユニットが合成解除されて、計算構成要素のプールに戻される。
【選択図】図1
【特許請求の範囲】
【請求項1】
少なくとも1つの通信ファブリックに結合された計算構成要素のプールを含む計算クラスタに指示する実行ジョブを受信するステップと、
前記実行ジョブのプロパティに基づいて、前記実行ジョブを処理するためのリソーススケジューリングを決定するステップであって、前記リソーススケジューリングが、前記計算クラスタのリソースの時間割り当てを示す、ステップと、
前記実行ジョブを処理するために前記計算構成要素のプールの中から選択された計算構成要素のセットを含む計算ユニットを合成するように前記通信ファブリックに少なくとも命令することによって、前記リソーススケジューリングに従って前記計算クラスタ上で前記実行ジョブを開始するステップであって、前記実行ジョブの完了に応答して、前記計算ユニットが合成解除されて前記計算構成要素のプールに戻される、ステップと、
を含む方法。
【請求項2】
前記リソーススケジューリングに従って、前記計算ユニットの各々が形成されると、前記実行ジョブを実行するために前記計算ユニットにソフトウェア構成要素を展開するように前記通信ファブリックに命令するステップを、さらに含む、請求項1に記載の方法。
【請求項3】
前記実行ジョブの完了に応答して、前記計算ユニットの計算構成要素が追加の計算ユニットへの合成に利用可能になるように、前記計算ユニットの対応する論理分離を除去することによって前記計算ユニットを合成解除するように前記通信ファブリックに命令するステップを、さらに含む、請求項1に記載の方法。
【請求項4】
前記リソーススケジューリングが、前記実行ジョブの識別子、前記実行ジョブの各々を実行するのに必要な前記計算構成要素のセットの表示、前記計算ユニットの合成および合成解除を開始する時間枠、および前記実行ジョブのために前記計算ユニットに展開するソフトウェア構成要素の表示、に関する1つまたは複数のデータ構造を含む、請求項1に記載の方法。
【請求項5】
前記計算構成要素のプールが、少なくとも前記通信ファブリックに結合された、中央処理装置(CPU)、コプロセッシングユニット、グラフィックス処理ユニット(GPU)、テンソル処理ユニット(TPU)、フィールド・プログラマブル・ゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、記憶ドライブ、およびネットワーク・インターフェース・コントローラ(NIC)を含む、請求項1に記載の方法。
【請求項6】
前記計算構成要素のプールが、各々が異なる通信プロトコルを含む、2つ以上の通信ファブリックに結合された計算構成要素を含む、請求項5に記載の方法。
【請求項7】
前記通信ファブリックが、周辺機器相互接続エクスプレス(PCIe、Peripheral Component Interconnect Express)、Gen-Z、コンピュート・エクスプレス・リンク(CXL、Compute Express Link)、NVLink、アクセラレータ用キャッシュコヒーレント相互接続(CCIX、Cache Coherent Interconnect for Accelerators)、オープン・コヒーレント・アクセラレータ・インターフェース(OpenCAPI、Open Coherent Accelerator Processor Interface)、イーサネット(Ethernet)、インフィニバンド(InfiniBand)、およびファイバーチャネル(FibreChannel)のうちの少なくとも1つからの通信プロトコルを含む、請求項1に記載の方法。
【請求項8】
前記計算ユニットを合成するように前記通信ファブリックに命令するステップが、前記計算構成要素のセットを通信可能に結合する前記通信ファブリック内に論理分離を形成するように前記通信ファブリックに命令するステップを含み、前記論理分離はそれぞれ、前記計算構成要素のセットのそれぞれ内の計算構成要素が、対応する論理分離内でのみ前記通信ファブリックを介して通信することを可能にする、請求項1に記載の方法。
【請求項9】
1つまたは複数のコンピュータ可読記憶媒体と、
前記1つまたは複数のコンピュータ可読記憶媒体と動作可能に結合された処理システムと、
前記1つまたは複数のコンピュータ可読記憶媒体に記憶されたプログラム命令であって、前記処理システムによって読み取られかつ実行されることに基づいて、
前記処理システムに、少なくとも、
少なくとも1つの通信ファブリックに結合された計算構成要素のプールを含む計算クラスタに指示する実行ジョブを受信することと、
前記実行ジョブのプロパティに基づいて、前記実行ジョブを処理するためのリソーススケジューリングを決定し、前記リソーススケジューリングが、前記計算クラスタのリソースの時間的割り当てを示すことと、
前記実行ジョブを処理するために前記計算構成要素のプールの中から選択された計算構成要素のセットを含む計算ユニットを構成するように前記通信ファブリックに少なくとも命令することによって、前記リソーススケジューリングに従って前記計算クラスタ上で前記実行ジョブを開始することであって、前記実行ジョブの完了に応答して、前記計算ユニットが合成解除されて、前記計算構成要素のプールに戻されることと、を指示する、プログラム命令と、
を含む、装置。
【請求項10】
前記処理システムによって実行されることに基づいて、前記処理システムに、少なくとも、
前記リソーススケジューリングに従って、前記計算ユニットの各々が形成されると、前記実行ジョブを実行するために前記計算ユニットにソフトウェア構成要素を展開するように、前記通信ファブリックに命令することを、指示する、プログラム命令をさらに含む、請求項9に記載の装置。
【請求項11】
前記処理システムによって実行されることに基づいて、前記処理システムに、少なくとも、
前記実行ジョブの前記完了に応答して、前記計算ユニットの計算構成要素が追加の計算ユニットへの合成に利用可能になるように、前記計算ユニットの対応する論理分離を除去することによって、前記計算ユニットを合成解除するように前記通信ファブリックに命令することを、指示する、プログラム命令をさらに含む、請求項9に記載の装置。
【請求項12】
前記リソーススケジューリングが、前記実行ジョブの識別子、前記実行ジョブの各々を実行するのに必要な前記計算構成要素のセットの表示、前記計算ユニットの合成および合成解除を開始する時間枠、および前記実行ジョブのために前記計算ユニットに展開するソフトウェア構成要素の表示、に関する1つまたは複数のデータ構造を含む、請求項9に記載の装置。
【請求項13】
前記計算構成要素のプールが、少なくとも前記通信ファブリックに結合された、中央処理装置(CPU)、コプロセッシングユニット、グラフィックス処理ユニット(GPU)、テンソル処理ユニット(TPU)、フィールド・プログラマブル・ゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、記憶ドライブ、およびネットワーク・インターフェース・コントローラ(NIC)、を含む、請求項9に記載の装置。
【請求項14】
前記計算構成要素のプールが、各々が異なる通信プロトコルを含む2つ以上の通信ファブリックに結合された計算構成要素を含む、請求項13に記載の装置。
【請求項15】
前記通信ファブリックが、周辺機器相互接続エクスプレス(PCIe、Peripheral Component Interconnect Express)、Gen-Z、コンピュート・エクスプレス・リンク(CXL、Compute Express Link)、NVLink、アクセラレータ用キャッシュコヒーレント相互接続(CCIX、Cache Coherent Interconnect for Accelerators)、オープン・コヒーレント・アクセラレータ・インターフェース(OpenCAPI、Open Coherent Accelerator Processor Interface)、イーサネット(Ethernet)、インフィニバンド(InfiniBand)、およびファイバーチャネル(FibreChannel)のうちの少なくとも1つからの通信プロトコルを含む、請求項9に記載の装置。
【請求項16】
前記処理システムによって実行されることに基づいて、前記処理システムに、少なくとも、
前記計算構成要素のセットを通信可能に結合する前記通信ファブリック内に論理分離を形成するように、前記通信ファブリックに少なくとも命令することによって、前記通信ファブリックに前記計算ユニットを合成するように命令することであって、前記論理分離は各々、前記計算構成要素のセットの各々の内の計算構成要素が、対応する論理分離内でのみ前記通信ファブリックを介して通信することを可能にすること、を指示する、プログラム命令をさらに含む、請求項9に記載の装置。
【請求項17】
計算システムであって、
前記計算システムによる処理のための実行ジョブを受信するように構成されたジョブインターフェースと、
管理プロセッサであって、
少なくとも1つの通信ファブリックに結合された計算構成要素のフリープールを形成することと、
前記実行ジョブのプロパティに基づいて、前記実行ジョブを処理するためのリソーススケジューリングを決定することであって、前記リソーススケジューリングが、前記計算構成要素のフリープールからのリソースの時間割り当てを示すことと、
前記実行ジョブを処理するために前記計算構成要素のプールの中から選択された計算構成要素のセットを含む計算ユニットを、少なくとも合成することによって、前記リソーススケジューリングに従って前記実行ジョブを開始することと、
前記リソーススケジューリングに従って、前記計算ユニットの各々が形成されると、前記実行ジョブを実行するために前記計算ユニットにソフトウェア構成要素を展開することと、
前記実行ジョブの完了に応答して、前記計算ユニットの計算構成要素が追加の計算ユニットへの合成に利用可能になるように、前記計算ユニットの対応する論理分離を除去することによって、前記計算ユニットを合成解除することと、
を行うように構成されている、管理プロセッサと、
を含む、計算システム。
【請求項18】
前記リソーススケジューリングが、前記実行ジョブの識別子、前記実行ジョブの各々を実行するのに必要な前記計算構成要素のセットの表示、前記計算ユニットの構成および合成解除を開始する時間枠、ならびに前記実行ジョブのために前記計算ユニットに展開するソフトウェア構成要素の表示、に関する1つまたは複数のデータ構造を含む、請求項17に記載の計算システム。
【請求項19】
前記管理プロセッサが、前記計算構成要素のセットを通信可能に結合する前記通信ファブリック内に少なくとも論理分離を形成することによって前記計算ユニットを合成するように構成され、前記論理分離は各々、前記計算構成要素のセットの各々内の計算構成要素が対応する論理分離内でのみ前記通信ファブリックを介して通信することを可能にする、請求項17に記載の計算システム。
【請求項20】
前記計算構成要素のプールが、少なくとも前記通信ファブリックに結合された中央処理装置(CPU)、コプロセッシングユニット、グラフィックス処理ユニット(GPU)、テンソル処理ユニット(TPU)、フィールド・プログラマブル・ゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、記憶ドライブ、およびネットワーク・インターフェース・コントローラ(NIC)を含む、請求項17に記載の計算システム。
【発明の詳細な説明】
【背景技術】
【0001】
クラスタ化された計算システムは、データ記憶、データ処理、およびパケット通信処理に対する需要が高まるにつれて普及している。データセンタは、典型的には、大型ラックマウント型およびネットワーク結合型のデータ記憶およびデータ処理システムを含む。これらのデータセンタは、ネットワークリンクを介して外部ユーザから記憶のためのデータを受信でき、データセンタ内の処理要素で実行されるアプリケーションから生成されたデータを受信できる。多くの場合、データセンタおよび関連する計算機器を使用して、複数の同時ユーザまたはアプリケーションのためのジョブを実行できる。ジョブは、中央処理装置(CPU)またはグラフィックス処理装置(GPU)を使用してデータを処理するために、ならびに、これらのリソースに関連するデータを一時記憶と長期記憶との間でやり取りするために、データセンタのリソースを利用できる実行ジョブを含む。GPUベースの処理は、人工知能(AI)および機械学習レジームで使用するために人気が高まっている。これらのレジームでは、ブレードサーバなどの計算システムは、大規模データセットを処理するための関連するCPUと共に1つまたは複数のGPUを含むことができる。
【0002】
しかしながら、ラックマウント型機器を有する大規模なデータセンタであっても、ブレードサーバまたは同様のタイプの計算要素を展開するときに密度の制限が生じる。具体的には、各サーバは、典型的には、CPU、GPU、および共通のエンクロージャまたはシャーシに収容された記憶要素の間に固定された配置を含む。着信ジョブがデータセンタ内に展開されると、計算リソースの粒度は個々のサーバに制限される。したがって、展開されたジョブは、通常、サーバのリソース全体が実際にジョブを実行するために必要であるか否かにかかわらず、各サーバの対応するCPU、GPU、および記憶要素のすべてと共に、1つまたは複数のサーバを占有する。補填するために、データセンタのオペレータは通常、サーバの数を連続的に増加して展開し、ジョブからの増加するトラフィックに対応する。この戦略は、ラックマウント型サーバに必要な物理的空間だけでなく、環境の温度調節システムのための大きな空間およびコスト要件において、障害に直面する可能性がある。
【発明の概要】
【0003】
本明細書では、通信ファブリックを介して結合された物理計算構成要素の配置の展開が提示される。一例では、方法は、少なくとも1つの通信ファブリックに結合された計算構成要素のプールを含む計算クラスタに指示する実行ジョブを受信するステップを含む。実行ジョブのプロパティに基づいて、本方法は、実行ジョブを処理するためのリソーススケジューリングを決定するステップであって、リソーススケジューリングが、計算クラスタのリソースの時間的割り当てを示す、ステップと、実行ジョブを処理するために計算構成要素のプールの中から選択された計算構成要素のセットを含む計算ユニットを合成するように通信ファブリックに少なくとも命令することによって、リソーススケジューリングに従って計算クラスタ上で実行ジョブを開始するステップと、を含む。実行ジョブの完了に応答して、計算ユニットが合成解除されて、計算構成要素のプールに戻される。
【0004】
別の例では、装置は、1つまたは複数のコンピュータ可読記憶媒体と、1つまたは複数のコンピュータ可読記憶媒体と動作可能に結合された処理システムとを含む。プログラム命令は、処理システムによって読み取られかつ実行されることに基づいて、少なくとも1つの通信ファブリックに結合された計算構成要素のプールを含む計算クラスタに指示する実行ジョブを少なくとも受信するように処理システムに指示する、1つまたは複数のコンピュータ可読記憶媒体に記憶される。実行ジョブのプロパティに基づいて、プログラム命令は、実行ジョブを処理するためのリソーススケジューリングを決定するように処理システムに指示し、リソーススケジューリングは、計算クラスタのリソースの時間的割り当てを示す。プログラム命令は、実行ジョブを処理するために計算構成要素のプールの中から選択された計算構成要素のセットを含む計算ユニットを合成するように通信ファブリックに少なくとも命令することによって、リソーススケジューリングに従って計算クラスタ上の実行ジョブを開始するように処理システムに指示し、実行ジョブの完了に応答して、計算ユニットが合成解除されて、計算構成要素のプールに戻される。
【0005】
さらに別の例では、システムは、計算システムによる処理のための実行ジョブを受信するように構成されたジョブインターフェースと、管理プロセッサとを含む。管理プロセッサは、少なくとも1つの通信ファブリックに結合された計算構成要素のフリープールを形成するように構成される。実行ジョブのプロパティに基づいて、管理プロセッサは、実行ジョブを処理するためのリソーススケジューリングを決定するように構成され、リソーススケジューリングは、計算構成要素のフリープールからのリソースの時間的な割り当てを示す。管理プロセッサは、実行ジョブを処理するために計算構成要素のプールの中から選択された計算構成要素のセットを含む計算ユニットを少なくとも合成することによって、リソーススケジューリングに従って実行ジョブを開始するように構成される。リソーススケジューリングに従って、管理プロセッサは、計算ユニットの各々が形成されると、実行ジョブを実行するためにソフトウェア構成要素を計算ユニットに展開し、実行ジョブの完了に応答して、計算ユニットの対応する論理分離を除去することによって計算ユニットを合成解除し、その結果、計算ユニットの計算構成要素が追加の計算ユニットへの合成に利用可能になるように、構成される。
【0006】
この概要は、本技術開示において以下でさらに説明される概念の選択を簡略化した形で紹介するために提供される。この概要は、特許請求される主題の重要な特徴または本質的な特徴を特定することを意図するものではなく、特許請求される主題の範囲を限定するために使用されるべきでもないことを理解されたい。
【0007】
本開示の多くの態様は、以下の図面を参照してよりよく理解することができる。図面の構成要素は必ずしも縮尺通りではなく、代わりに本開示の原理を明確に示すことに重点が置かれている。さらに、図面において、同様の参照番号は、いくつかの図を通して対応する部分を示す。これらの図面に関連していくつかの実施形態が説明されているが、本開示は本明細書に開示された実施形態に限定されない。それどころか、すべての代替形態、修正形態、および同等物を網羅することを、意図としている。
【図面の簡単な説明】
【0008】
図1】一実装形態における計算システムを示す図である。
【0009】
図2】一実装形態における計算システムの動作例を示す流れ図である。
【0010】
図3】一実装形態における計算システムの管理を示す図である。
【0011】
図4】一実装形態における計算システムを示す図である。
【0012】
図5】一実装形態における計算システムの管理要素を示す図である。
【0013】
図6】一実装形態における管理プロセッサを示す図である。
【発明を実施するための形態】
【0014】
複数の同時ユーザまたはアプリケーションのためのジョブを実行するために、関連する計算機器を有するデータセンタを使用できる。ジョブは実行ジョブを含み、実行ジョブはデータセンタのリソースを利用してデータを処理するとともに、これらのリソースに関連するデータを一時記憶と長期記憶との間でやり取りすることができる。データセンタ処理リソースは、グラフィックス処理装置(GPU、Graphics Processing Units)、テンソル処理装置(TPU、Tensor Processing Units)、フィールド・プログラマブル・ゲートアレイ(FPGA、Field-Programmable Gate Arrays)、または特定用途向け集積回路(ASIC、Application-Specific Integrated Circuits)などの様々な種類のコプロセッシングユニット(CoPU、Co-Processing Units)と共に中央処理装置(CPU、Central Processing Units)を含むことができる。人工知能(AI)および機械学習システムで使用するために、コプロセッシングユニット)タイプの処理は人気が高まっている。本明細書の例では、ブレードサーバベースのデータシステムの制限は、各着信実行ジョブの必要性に従ってオンザフライで計算のグループを動的に合成できる分解された計算システムを使用して克服できる。本明細書では計算ユニットまたはベアメタルマシンと呼ばれるこれらのグループ化は、様々な実行ジョブのニーズを満たし、そのようなジョブに合わせて調整されたリソースを含むことができる。共通のエンクロージャまたはシャーシに収容されたCPU、CoPU、および記憶要素間の固定配置を持つ代わりに、本明細書の例は、任意の数のエンクロージャ/シャーシにわたり、そして、通信ファブリック上で論理配置に動的に形成される任意の数のCPU、CoPU、および記憶要素を柔軟に含むことができる。計算ユニットは、より大きな並列性およびスループットを達成するために、多くの計算ユニット/マシンのセットまたはクラスタに、さらにグループ化できる。したがって、データシステムは、特定のジョブまたはジョブの特定部分に必要とされないブレードサーバのアイドル部分または無駄な部分を有さないことによって、リソースをより良好に利用できる。データセンタのオペレータは、固定配置サーバを使用して達成できるよりも大きい、データセンタの非常に高い利用レベルを達成できる。
【0015】
本明細書では、通信ファブリックを介して結合された物理計算構成要素の配置の展開が提示される。計算クラスタに指示する実行ジョブが受信される。クラスタは、少なくとも1つの「マシン」または計算ユニットを含み、計算ユニットは、少なくとも1つのプロセッサ要素(例えば、CPU)を含む。計算ユニットはまた、CoPU(GPUなど)、ネットワークインターフェース要素(例えば、NIC)、またはデータ記憶要素(例えば、SSD)を含むことができるが、これらの要素は計算ユニットに必要ではない。計算ユニットまたはクラスタは、1つまたは複数の通信ファブリックを介して結合された計算構成要素のプールから形成される。実行ジョブのプロパティに基づいて、制御システムは、ジョブに必要なリソース、ならびに実行ジョブを処理するためのリソーススケジューリングを決定できる。ジョブが実行される予定になると、制御システムは、実行ジョブを処理するための計算ユニットの合成を促進する。計算ユニットは、計算構成要素のプールを形成する計算構成要素の中から合成される。論理分割は、計算ユニットを形成し、各計算ユニットを互いに分離するために通信ファブリック内で確立される。実行ジョブの完了に応答して、計算ユニットが合成解除されて、計算構成要素のプールに戻される。
【0016】
本明細書では、1つまたは複数の共有通信ファブリックを介して結合された様々な個々の物理計算構成要素について説明する。本明細書では、様々な通信ファブリックタイプを使用できる。例えば、周辺機器相互接続エクスプレス(PCIe)ファブリックを使用することができ、それは、とりわけ3.0、4.0、または5.0などの様々なバージョンを含んでもよい。PCIeファブリックの代わりに、関連する物理層、電気シグナリング、プロトコル、および階層化された通信スタックを有する他のポイントツーポイント通信ファブリックまたは通信バスを使用できる。これらは、とりわけ、Gen-Z、イーサネット、インフィニバンド(InfiniBand)、NVMe、インターネットプロトコル(IP、Internet Protocol)、シリアル接続SCSI(SAS、Serial Attached SCSI)、ファイバーチャネル、サンダーボルト、シリアル接続ATAエクスプレス(SATA Express)、NVLink、アクセラレータ用キャッシュコヒーレント相互接続(CCIX、Cache Coherent Interconnect for Accelerators)、コンピュート・エクスプレス・リンク(CXL、Compute Express Link)、オープン・コヒーレント・アクセラレータ・プロセッサ・インターフェース(OpenCAPI、Open Coherent Accelerator Processor Interface)、ワイヤレス・イーサネットまたはWi-Fi(802.11 x)、またはセルラ無線技術を含むことができる。イーサネットは、10 BASE-T、100 BASE-TX、1000 BASE-T、10 GBASE-T(10 GBイーサネット)、40 GBASE-T(40 GBイーサネット)、ギガビット(イーサネット)、テラビット(TbE)、200GBbE、400GbE、800GbE、または他の様々な有線および無線イーサネットフォーマットおよび速度など、利用可能な様々なネットワーク通信プロトコル規格および帯域幅のいずれかを指すことができる。セルラ無線技術は、とりわけ、4Gロングタームエボリューション(LTE、Long-Term Evolution)、5G NR(New Radio)、および関連する5G規格を含む、第3世代パートナーシッププロジェクト(3GPP、3rd Generation Partnership Project)規格の周りに構築された様々な無線プロトコルおよびネットワークを含んでもよい。
【0017】
前述のシグナリングまたはプロトコルタイプのいくつかは、PCIe上に構築され、したがってPCIeインターフェースに追加機能を追加する。パラレル、シリアル、または複合パラレル/シリアル型のインターフェースも、本明細書の例に適用できる。以下の例では、例示的なファブリックタイプとしてPCIeを使用しているが、代わりに他のものを使用できることを理解されたい。PCIeは、高速シリアルコンピュータ拡張バス規格であり、典型的には、ホストおよび構成要素デバイス間、またはピアデバイス間のポイントツーポイント接続を有する。PCIeは、典型的には、すべてのデバイスをホストとも呼ばれるルートコンプレクスに接続する個々のシリアルリンクを有する。PCIe通信ファブリックは、本明細書に記載の様々なスイッチング回路および制御アーキテクチャを使用して確立できる。
【0018】
本明細書の様々な計算システムの構成要素は、棚またはラックユニットにさらに含めることができるラックマウント可能モジュールなどの1つまたは複数の物理的エンクロージャに含めることができる。特定のエンドユーザの必要に応じてモジュールを挿入および取り外しできるモジュール式フレームワークなど、物理的なエンクロージャに多数の構成要素を挿入または設置できる。囲まれたモジュール式システムは、回路、プリント回路基板、半導体システム、および構造要素を含む物理的支持構造体およびエンクロージャを含むことができる。計算システム100などの構成要素を含むモジュールは、ラックマウント型またはラックユニット(U)タイプのエンクロージャに挿入可能かつ取り外し可能であってもよい。図1の構成要素は、任意の物理的な取り付け環境に含めることができ、関連するエンクロージャまたはラックマウント要素を含む必要がないことを理解されたい。
【0019】
第1の例示的なシステムとして、図1が提示される。図1は、ワークロードベースのハードウェア合成技法を使用する計算システム100を示すシステム図である。計算システム100は、通信ファブリック140を介して結合された物理計算構成要素のプールを有する計算クラスタ101を含む。計算システム100はまた、管理システム110、ジョブインターフェース111、およびジョブキュー112を含む。物理計算構成要素は、CPUプール141内のCPU、CoPUプール142内のCoPU、および記憶プール143内の記憶ユニットを含む。ネットワーク・インターフェース・コントローラ(NIC、Network Interface Controller)、フィールド・プログラマブル・ゲートアレイ(FPGA、Field Programmable Gate Arrays)、ファブリック結合ランダムアクセスメモリ(RAM、Random-Access Memory)、または他の形態のデータ記憶ユニットのプールなど、構成要素の追加のプールを含めることができる。プール141~143のこれらの物理計算構成要素は、この例ではPCIeベースのファブリックを含む通信ファブリック140を介して通信可能に結合される。通信ファブリック140は、計算クラスタ101内の物理構成要素のそれぞれに個別に結合する複数のPCIeスイッチ要素および様々な対応するPCIeリンクから形成される。通信ファブリック140は、複数の物理計算構成要素を通信可能に結合し、また通信ファブリック内で論理分割を使用して計算ユニットを確立するように構成される。例えば図1の計算ユニット120および130に示されているこれらの計算ユニットは各々、いくつかのタイプの構成要素のうちの0個を含む、物理計算構成要素のそれぞれのプールからの任意の数のジョブ定義数量のCPU、CoPU、または記憶ユニットから構成できる。
【0020】
動作中、ジョブは、ジョブインターフェース111を介して受信され、システム100の要素による実行または他のタイプの処理のためにキュー112に置かれる。ジョブインターフェース111は、他のインターフェースの中でも、ネットワークインターフェース、ユーザインターフェース、端末インターフェース、アプリケーション・プログラミング・インターフェース(API)、または、レプレセンテーショナル・ステート・トランスファ(REST、Representational State Transfer)インターフェースを含むことができる。いくつかの例では、ワークロード・マネージャ・ソフトウェア・プラットフォーム(図示せず)は、システム100による実行または処理のためにジョブを作成、スケジュール、および転送できるユーザまたはオペレータ用のフロントエンドを確立する。後述するように、他の様々なジョブインターフェースを使用できる。これらの実行ジョブは、各ジョブの実行、操作、および処理プロセスの性質を記述するプロパティを有する。例えば、ジョブは、ジョブの実行に必要なリソースを示すメタデータの付随セットを有することができ、または、システム/計算要件の最小セットが、ジョブの実行をサポートするために必要である。ジョブ要件は、構成要素タイプ、処理能力、記憶使用量、ジョブ完了最大時間枠、または他の表示の仕様として示すことができる。
【0021】
最初に、計算ユニットは、様々なジョブの実行または処理をサポートするために形成または確立されない。代わりに、物理構成要素のプールが確立され、計算ユニットは、実行ジョブの特定の要件に適合するように、これらのプール内の構成要素からオンザフライで形成できる。特定の実行ジョブのための計算ユニット内に含まれる必要がある構成要素を決定するために、管理システム110は、実行ジョブの前述のプロパティを処理して、ジョブの実行または処理をサポートするためにどのリソースが必要かを決定し、ジョブを処理するための計算ユニットを確立する。したがって、計算クラスタ101の総リソースは、ジョブインターフェース111を介して受信される様々な実行ジョブの実行をサポートするために、必要に応じて動的に細分化できる。計算ユニットは、合成または合成されていると呼ばれる特定の時間に形成され、ジョブのソフトウェアは、ジョブの性質に従って実行/処理するために計算ユニットの要素に展開される。特定のジョブが特定の計算ユニット上で完了すると、その計算ユニットが合成解除され、計算ユニットは、追加のジョブのためのさらなる計算ユニットの作成に使用するために、物理構成要素のプールに追加される個々の物理構成要素を含む。本明細書で説明するように、これらの計算ユニットを合成および合成解除するために、様々な技法が使用される。
【0022】
図1では、2つの例示的な実行ジョブが強調表示されている。すなわち、ジョブ191および192は、ジョブインターフェース111によって受信された後にキュー112に保持される。ジョブ191が受信されると、ジョブ191のプロパティが管理システム110によって分析されて、ジョブ191を実行するためにどの物理計算構成要素が必要とされるかが決定される。図1では、ジョブ191をサポートするために、CPUプール141からのCPU、CoPUプール142からのCoPU、および記憶プール143からの記憶ユニットが選択され、これらの物理計算構成要素(CPU121、CoPU122、記憶ユニット123)が、計算ユニット120に合成される。図1の要素150として示されているこの合成プロセスは、ジョブ191の計算クラスタ101のリソースのスケジュールまたは時間的割り当てに対応できる時間t1において行われる。同様に、ジョブ192は、ジョブ192のプロパティに基づいて割り当てられた物理計算構成要素の異なるセットを有する。図1では、ジョブ192をサポートするために、CPUプール141からのCPU、CoPUプール142からの2つのCoPU、および記憶プール143からの記憶ユニットが選択され、これらの物理計算構成要素(CPU131、CoPU132~133、記憶ユニット134)が、計算ユニット130に合成される。図1の要素151として示されているこの合成プロセスは、ジョブ192の計算クラスタ101のリソースのスケジュールまたは時間的割り当てに対応できる時間t2において行われる。
【0023】
計算ユニット120および130に合成されるハードウェアまたは物理構成要素に加えて、計算ユニットが合成されると、ジョブ191~192の各々のソフトウェア構成要素が展開される。ジョブは、ユーザアプリケーション、ユーザデータセット、モデル、スクリプト、または他のジョブ提供ソフトウェアなど、実行のために展開されるソフトウェア構成要素を含むことができる。オペレーティングシステム、仮想化システム、ハイパーバイザ、デバイスドライバ、ブートストラップソフトウェア、BIOS要素および構成、状態情報、または他のソフトウェア構成要素などの他のソフトウェアが管理システム110によって提供されてもよい。例えば、管理システム110は、特定のジョブの実行をサポートするために、Linuxのバージョンなどの特定のオペレーティングシステムを、合成された計算ユニットに展開すべきであると決定できる。オペレーティングシステムの種類またはバージョンの表示は、着信ジョブに付随するプロパティに含まれてもよく、またはジョブの他のメタデータに含まれてもよい。オペレーティングシステムイメージの形態のオペレーティングシステムは、計算ユニットの他の物理計算構成要素をサポートするために必要なデバイスドライバと共に、合成された計算ユニットに含まれるデータ記憶要素に展開できる。ジョブは、データ処理を実行する1つまたは複数のアプリケーションと共に、計算ユニットによって処理される1つまたは複数のデータセットを含んでもよい。利用レベル、完全性レベルを示すジョブ実行ステータス、ウォッチドッグモニタ、または他の要素など、様々な監視またはテレメトリ構成要素を展開して、計算ユニットのアクティビティを監視できる。他の例では、利用可能なアプリケーションおよびオペレーティングシステムのカタログを計算クラスタ101によって提供することができ、計算クラスタは、関連する計算ユニットに含めるためにジョブによって選択され得る。最後に、ハードウェアおよびソフトウェア構成要素が合成/展開されて計算ユニットを形成すると、ジョブは計算ユニット上で実行できる。
【0024】
計算ユニットを合成するために、管理システム110は、ファブリックインターフェース113を介してコマンドまたは制御命令を発行し、通信ファブリック140の要素を制御する。物理構成要素は、1つまたは複数の共有通信ファブリックに結合される。これらの構成要素は、任意の数の別個の任意に定義された配置(計算ユニット)に論理的に分離できる。通信ファブリックは、異なる計算ユニット間の論理分離を維持しながら、特定の計算ユニットの構成要素間でトラフィックを選択的にルーティングするように管理システム110によって構成できる。このようにして、計算クラスタ101の物理構成要素間で柔軟な「ベアメタル」構成を確立できる。個々の計算ユニットは、計算ユニットの計算、記憶、ネットワーク、またはグラフィックス処理リソースを利用することができる外部ユーザまたはクライアントマシンに関連付けることができる。さらに、より大きな並列性および容量のために、任意の数の計算ユニットを計算ユニットの「クラスタ」にグループ化できる。明確にするために図1には示されていないが、様々な電源モジュールならびに関連する電力および制御配信リンクもまた、構成要素の各々に含まれ得る。
【0025】
通信ファブリック140の一例では、PCIeファブリックが使用される。PCIeファブリックは、PCIeクロスポイントスイッチと称され得る複数のPCIeスイッチ回路から形成される。PCIeスイッチ回路は、少なくとも各PCIeリンクによって搬送されるトラフィックに基づいて、様々なPCIeリンクを論理的に相互接続するように構成できる。これらの例では、オペレータ定義グループに従ってPCIeスイッチのPCIeポートのセグメント化を可能にするドメインベースのPCIeシグナリング配信を含めることができる。オペレータ定義グループは、管理システム110によって管理でき、管理システムは、構成要素を関連する計算ユニットに論理的に組み立て、異なる計算ユニットの構成要素を論理的に分離する。管理システム110は、PCIeポート間の論理分割またはセグメント化を変更し、したがって物理構成要素のグループ化の合成を変更するために、PCIeファブリックを含むファブリックインターフェース113を介してPCIeスイッチ回路を制御できる。ドメインベースのセグメント化に加えて、または代替として、各PCIeスイッチポートは、非透過(NT、non-transparent)ポートまたは透過ポートとすることができる。NTポートは、ブリッジのようにエンドポイント間の何らかの論理分離を可能にすることができるが、透過ポートは論理分離を可能にせず、純粋に切り替えられた構成でエンドポイントを接続する効果を有する。1つまたは複数のNTポートを介したアクセスは、特定のNTポートを選択するため、またはNTポートを介した可視性を可能にするために、PCIeスイッチと開始エンドポイントとの間の追加のハンドシェイクを含むことができる。有利には、このドメインベースのセグメント化(NTポートベースのセグメント化)は、物理的構成要素(すなわち、CPU、CoPU、記憶ユニット、NIC)を共有ファブリックまたは共通ファブリックに結合することを可能にするが、セグメント化/分割を介して計算ユニットに含まれる構成要素に対する可視性のみを有することができる。したがって、PCIeファブリック間の論理分割を用いて、複数の物理構成要素間のグループ化を実現できる。この分割は本質的にスケーラブルであり、管理システム110または他の制御要素によって必要に応じて動的に変更できる。
【0026】
図1の要素の説明に戻ると、管理システム110は、1つまたは複数のマイクロプロセッサと、関連する記憶システム(図示せず)からジョブインターフェース112およびファブリック管理ソフトウェアなどのソフトウェアを検索および実行する他の処理回路とを含むことができる。管理システム110は、単一の処理デバイス内に実装できるが、プログラム命令を実行する際に協働する複数の処理デバイスまたはサブシステムにわたって分散させることもできる。管理システム110の例は、汎用中央処理装置、特定用途向けプロセッサ、および論理デバイス、ならびに任意の他の種類の処理デバイス、それらの組み合わせ、または変形を含む。いくつかの例では、管理システム110は、Intel(登録商標)もしくはAMD(登録商標)マイクロプロセッサ、ARM(登録商標)マイクロプロセッサ、フィールド・プログラマブル・ゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向けプロセッサ、または他のマイクロプロセッサもしくは処理要素を含む。管理システム110は、ジョブインターフェース111およびキュー112を含むか、または提供する。これらの要素は、管理システム110のプロセッサ要素によって実行される様々なソフトウェア構成要素を含むことができ、あるいは代わりに回路を含んでもよい。
【0027】
図1では、管理システム110は、ファブリックインターフェース113を提供する。ファブリックインターフェース113は、管理システム110と、通信ファブリック140に結合された任意の構成要素との間の通信リンクを備え、通信リンクは、1つまたは複数のPCIeリンクを備えてもよい。いくつかの例では、ファブリックインターフェース113は、PCIeリンクまたは他のリンクを介して転送されるイーサネットトラフィックを使用してもよい。さらに、図1の計算ユニットに含まれる各CPUは、PCIeリンクを介して伝送されるイーサネット通信を提供することができるドライバまたはエミュレーションソフトウェアで構成されてもよい。したがって、プール141のCPUのいずれか(計算ユニットに展開されると)および管理システム110は、PCIeファブリックを介して転送されるイーサネットを介して通信できる。しかしながら、実装形態はPCIe上のイーサネットに限定されず、PCIeインターフェース上のPCIeトラフィックを含む他の通信インターフェースが使用されてもよい。
【0028】
計算クラスタ101の構成要素は、通信ファブリック140、CPU、CoPU、および記憶ユニットを含む。NIC、FPGA、RAM、またはプログラマブル読み出し専用メモリ(PROM)デバイスなどの他の様々なデバイスを含んでもよい。CPUプール141のCPUは各々、マイクロプロセッサ、システム・オン・チップ・デバイス、または関連する記憶システムからユーザアプリケーションなどのソフトウェアを検索および実行する他の処理回路を備える。各CPUは、単一の処理デバイス内に実装できるが、プログラム命令を実行する際に協働する複数の処理デバイスまたはサブシステムにわたって分散させることもできる。各CPUの例は、汎用中央処理装置、特定用途向けプロセッサ、および論理デバイス、ならびに任意の他の種類の処理デバイス、それらの組み合わせ、または変形を含む。いくつかの例では、各CPUは、Intel(登録商標)、AMD(登録商標)、またはARM(登録商標)マイクロプロセッサ、グラフィックスコア、計算コア、ASIC、FPGA部分、または他のマイクロプロセッサもしくは処理要素を含む。各CPUは、CPUを通信ファブリック140のスイッチ要素に結合するPCIeなどの1つまたは複数のファブリック通信インターフェースを含む。CPUは、ルートコンプレクスを有しても有しなくてもよいPCIeエンドポイントデバイスまたはPCIeホストデバイスを備えてもよい。
【0029】
CoPUプール142のCoPUは各々、データセットの特殊な処理のためのコプロセッシング要素を備える。例えば、CoPUプール142は、1つまたは複数の計算ユニットに割り当てることができるグラフィックス処理リソースを備えることができる。GPUは、グラフィックスプロセッサ、シェーダ、ピクセルレンダリング要素、フレームバッファ、テクスチャマッパ、グラフィックスコア、グラフィックスパイプライン、グラフィックスメモリ、または他のグラフィックス処理および処理要素を備えることができる。いくつかの例では、各GPUは、GPUチップをサポートする回路を備えるグラフィックス「カード」を備える。例示的なGPUカードは、様々なサポート回路、コネクタ、および他の要素と共にグラフィックス処理要素を含むnVIDIA(登録商標)またはAMD(登録商標)グラフィックスカードを含む。さらなる例では、機械学習処理ユニット、テンソル処理ユニット(TPU)、FPGA、ASIC、または他の専用プロセッサなど、他のスタイルの共処理ユニットまたは共処理アセンブリを使用できる。
【0030】
記憶プール143の記憶ユニットは各々、関連するエンクロージャおよび回路と共に、ソリッドステート記憶ドライブ(SSD)または磁気ハードディスクドライブ(HDD)などの1つまたは複数のデータ記憶ドライブを備える。各記憶ユニットはまた、ファブリックインターフェース(PCIeインターフェースなど)、制御プロセッサ、および電力システム要素を含む。さらに他の例では、各記憶ユニットは、関連するエンクロージャおよび回路と共に、1つまたは複数の別個のデータ記憶ユニットのアレイを備える。いくつかの例では、記憶ユニットを形成するために、ファブリックインターフェース回路が記憶ドライブに追加される。具体的には、記憶ドライブは、SAS、SATA Express、NVMe、または他の記憶インターフェースなどの記憶インターフェースを備えることができ、記憶ユニットに含まれる通信変換回路を使用して通信ファブリック140に結合され、PCIe通信または他のファブリックインターフェースに通信を変換する。
【0031】
NICが計算クラスタ101の物理構成要素の間に含まれる場合、各NICは、イーサネットおよびTCP/IP(伝送制御プロトコル/インターネットプロトコル)ネットワークなどのパケットネットワークを介して通信するための回路を備える。いくつかの例は、iSCSI(Internet Small Computer System Interface)などのイーサネットまたはTCP/IPを介して他のトラフィックを伝送する。各NICは、イーサネットインターフェース機器を備え、有線、光、または無線リンクを介して通信できる。計算クラスタ101の構成要素への外部アクセスは、NICによって提供されるパケット・ネットワーク・リンクを介して提供でき、ネットワークリンクを介してiSCSI、ネットワークファイルシステム(NFS)、サーバ・メッセージ・ブロック(SMB)、または共通インターネットファイルシステム(CIFS)共有を提示することを含んでもよい。いくつかの例では、記憶ユニットを形成するために、ファブリックインターフェース回路が記憶ドライブに追加される。具体的には、NICは、PCIe通信または他のファブリックインターフェースを使用してNICを通信ファブリック140に結合するために、NICに含まれる通信変換回路を備えることができる。
【0032】
通信ファブリック140は、通信スイッチ回路によって結合された複数のファブリックリンクを備える。PCIeが使用される例では、通信ファブリック140は、関連するPCIeリンクを介して計算クラスタ101のメンバと通信する、複数のPCIeスイッチを備える。各PCIeスイッチは、各PCIeスイッチによって処理される任意のPCIeインターフェース間の切り替え接続を確立するためのPCIeクロス・コネクト・スイッチを備える。通信ファブリック140は、複数のPCIeホストが、関連するPCIeエンドポイントにのみに通信可能に結合されながら同一ファブリック上に存在することを、受け入れることができる。したがって、多くのホスト(例えば、CPU)は、同一ファブリックを使用して多くのエンドポイントと独立して通信できる。CPU、CoPU、および計算ユニット内の記憶ユニット間、およびホスト間通信が使用される場合の計算ユニット間、でデータを転送するために、PCIeスイッチを使用できる。本明細書で説明するPCIeスイッチは、少なくとも各PCIeリンクによって搬送されるトラフィックに基づいて、関連するPCIeリンクのうちの様々なPCIeリンクを論理的に相互接続するように構成できる。これらの例では、ユーザ定義のグループに従ってPCIeスイッチのPCIeポートをセグメント化できるドメインベースのPCIeシグナリング配信を含むことができる。ユーザ定義グループは、構成要素を関連する計算ユニットに論理的に統合し、異なる計算ユニット間から構成要素を論理的に分離する管理システム110によって管理できる。ドメインベースのセグメント化に加えて、またはその代わりに、各PCIeスイッチポートは、非透過(NT)または透過ポートであり得る。NTポートは、ブリッジのようにエンドポイント間のいくらかの論理分離を可能にできるが、透過ポートは論理分離を可能にせず、純粋な回路切り替え構成でエンドポイントを接続する効果を有する。1つまたは複数のNTポートを介したアクセスは、特定のNTポートを選択するため、またはNTポートを介した可視性を可能にするために、PCIeスイッチと開始エンドポイントとの間の追加のハンドシェイクを含むことができる。いくつかの例では、各PCIeスイッチは、PEX8796 24ポート、96レーンPCIeスイッチチップ、PEX8725 10ポート、24レーンPCIeスイッチチップ、PEX97 xxチップ、PEX9797チップ、または他のPEX87 xx/PEX97 xxチップなどのPLX/Broadcom/Avago PEXシリーズチップを備える。
【0033】
図2は、図1の要素の例示的な動作を示すために含まれる。動作201において、管理システム110のジョブインターフェース111は、キュー112への実行ジョブを受信する。このエンキュー処理は、少なくとも通信ファブリック140に結合された計算構成要素のプールを含む計算クラスタ101に指示する実行ジョブを受信することを含むことができる。動作202において、管理システム110は、ジョブプロファイルを分析して必要な計算リソースを決定し、動作203において、ジョブを合成スケジューリング情報と共にキュー112に追加する。実行ジョブのプロパティに基づいて、管理システム110は、実行ジョブを処理するためのリソーススケジューリングを決定し、リソーススケジューリングは、計算クラスタ101のリソースの時間的割り当てを示す。リソーススケジューリングが、実行ジョブの識別子、実行ジョブの各々を実行するのに必要な計算構成要素のセットの表示、計算ユニットの合成および合成解除を開始する時間枠、ならびに実行ジョブの計算ユニットに展開するソフトウェア構成要素の表示、に関する1つまたは複数のデータ構造を含む。
【0034】
動作204において、管理システム110は、キュー112に示されたスケジュールに従ってジョブをサポートするために計算ユニットを合成する。管理システム110は、実行ジョブを処理するために計算構成要素のプールの中から選択された計算構成要素のセットを含む計算ユニットを合成するように通信ファブリック140に少なくとも命令することによって、リソーススケジューリングに従って計算クラスタ101上の実行ジョブを開始する。通信ファブリック140に計算ユニットを合成するように命令することは、計算構成要素セットを通信可能に結合する通信ファブリック内に論理分離を形成するように通信ファブリック140に命令することを含む。論理分離は各々、計算構成要素のセットの各々内の計算構成要素が、対応する論理分離内でのみ通信ファブリックを介して通信することを可能にする。リソーススケジューリングに従って、管理システム110は、計算ユニットの各々が形成されると、実行ジョブを実行するためにソフトウェア構成要素を計算ユニットに展開するための通信ファブリックを制御する。次に、動作205において、合成された計算ユニットは、合成された計算ユニット上で対応するジョブを実行する。最後に、実行ジョブが完了すると、動作206において、管理システム110は、計算ユニットリソースを合成解除し、フリープールに戻す。計算ユニットが合成解除されて、計算構成要素のプールに戻される。管理システム110は、計算ユニットの対応する論理分離を除去することによって計算ユニットを合成解除するように通信ファブリック140に命令し、その結果、計算ユニットの計算構成要素は、追加の計算ユニットへの合成に利用可能となる。
【0035】
図2および本明細書の他の例の動作は、計算ユニットの合成および合成解除のジョブベースの開始を説明する。したがって、実行ジョブの開始および関連するジョブプロパティは、ジョブを実行する計算ユニットの作成をトリガできる。本明細書のこれらの例では、別個に、または前述のトリガと組み合わせて、他のトリガを使用できる。第1の代替トリガでは、イベントベースのトリガが使用される。これらのイベントベースのトリガは、ジョブまたはジョブを含む作業単位をサポートするために、計算ユニットを変更もしくは修正するか、または追加の計算ユニットを追加できる。ジョブによって示される動的イベントまたはパターンの管理システム110による観測に基づいて、管理システム110は、それに割り当てられた計算ユニットおよびリソースの構成に対する変更を開始できる。そのようなイベントまたはパターンの例には、プロセスの観測されたリソース不足、機能によって識別される特定の文字列、インテリジェント・インフラストラクチャ・アルゴリズムによって識別される特定の信号、または管理システム110によって監視することができる他の要因、が含まれる。実行中のジョブのテレメトリまたは実行前もしくは実行中のジョブのプロパティの分析は、管理システム110に、計算ユニットの動的変更を開始するように通知できる。したがって、管理システム110は、イベントまたはパターンに従って計算ユニットのリソース(例えば、物理計算構成要素)を追加または削除するために計算ユニットの合成を変更できる。有利には、各ジョブの現在のリソースニーズをサポートするために計算ユニットをより良好に最適化することができ、現在のジョブによって不要になったとき、または他の将来のジョブによる使用のために、リソースをプールにインテリジェントに戻すことができる。
【0036】
別の代替トリガは、機械学習タイプのアルゴリズムまたはユーザ定義の時間枠に基づく時間トリガを含む。この例では、特定の種類のジョブが特定の種類の挙動を示すように、合成された計算ユニットのパターンまたは挙動を、経時的に決定または学習できる。これらの挙動に基づいて、計算ユニットへの変更を動的に行い、ワークロードパターンをサポートできる。例えば、管理システム110は、特定の種類の実行ジョブの特定の実行段階において、より多くの/より少ない記憶リソースが必要である、または、より多くの/より少ないコプロセッシングリソースが必要である、と決定できる。管理システム110は、追加または削除またはリソースを含むことができる計算ユニットの合成を予測的または予防的に変更して、作業単位がジョブによって実行されている状態で計算ユニットに割り当てられた現在のリソースをより良好に最適化できる。時間プロパティは、明示的なユーザ入力に基づいて、または機械学習プロセスに基づいて管理システム110により決定され、計算ユニットからリソースを追加または削除する時間枠を決定できる。管理システム110は、どのリソース変更が必要であるか、および、これらの変更が現在および将来のジョブニーズをサポートするためにいつ必要とされるか、を決定できるリソーススケジューラ要素を含むことができる。本明細書で説明する計算ユニットへの変更は、いくつかの例では、特定の物理構成要素またはリソースを追加または削除するときなどに、計算ユニットおよび関連するオペレーティングシステムの再合成および再起動を必要とする場合がある。しかしながら、記憶またはネットワークインターフェースリソースの追加/削除などの他の変更は、特定の計算ユニットを再起動または再合成することなくオンザフライで達成され得る。
【0037】
ここで、ワークロードベースのハードウェア合成のための技法の詳細な説明に移り、図3を提示する。図3は、いくつかの計算ユニット合成動作を有する構成300を示す。いくつかの例示的な実行ジョブ320,330および340がエンキューされたワークロードキュー390が含まれる。物理計算構成要素の例示的なプール、すなわち16個のGPUのセットも含まれる。明確にするためにこの例ではGPUのみが示されているが、他の要素の中でもCPUおよび記憶ユニットなどの計算ユニットを形成するために、他のコプロセッシング要素または他のタイプの要素を、選択されたGPUに含むことができる。したがって、図3のキュー390内の実行ジョブは、機械学習ジョブ、人工知能ジョブ、グラフィックスレンダリングジョブ、または複数の同時GPUにわたって実行することから利益を得ることができる他の種類のデータ処理ジョブ、などのグラフィックス処理リソースを使用するジョブを含む。
【0038】
実行ジョブ320,330および340が対応するジョブインターフェースを介して受信されると、実行ジョブ320,330および340のプロパティが分析されて、そのようなジョブを実行するためにどの物理計算構成要素が必要とされるかが決定される。これらのプロパティは、ジョブに望まれるGPU、CPU、または記憶要素間の計算構成要素の量および構成を直接示すことができ、または計算構成要素の量および構成は、ジョブによって示されるリソース要件によって推測できる。例えば、実行ジョブは、特定の最小クラスまたはタイプのCPUまたはGPU(および量)が所望され、その能力を超えるものは許容可能であることを示すことができる。実行ジョブ320,330および340の各々は、図3に作業単位として示されている部分に細分化できる。各作業単位は、計算ユニット内の異なるGPUに展開できる。
【0039】
実行ジョブが実行されるべきであるとスケジュールが示すと、管理要素は各ジョブの計算ユニットを形成できる。GPU350のプールの初期状態301は、すべてのGPUがアイドルであり、現在ジョブを処理していないことを示すが、他の初期状態も可能である。状態302において、実行ジョブ320,330、および340は、実行ジョブ320,330、および340の各々をサポートするために、新たに合成された計算ユニット上に展開される。すなわち、計算ユニット310は実行ジョブ320をサポートするように合成され、計算ユニット311は実行ジョブ330をサポートするように合成され、計算ユニット312はジョブ340の第1の部分をサポートするように合成される。実行ジョブ320および330はGPU350のプールの一部を消費するので、計算ユニット312には、ジョブ340の完全適応に必要な量よりも少なくなり得る残りの数のGPUが残る。いくつかの例では、ジョブ340は、すべての必要なリソースが利用可能になるまで遅延されてもよく、または代わりに、図3に示すように部分適応が採用されてもよい。
【0040】
一定期間後、実行ジョブは完了または終了する。これらのジョブが完了すると、これらのジョブに割り当てられた計算ユニットのリソースが手放され、追加のジョブで使用するためにフリーリソースのプールに戻される。図3では、実行ジョブ320および330が完了し、実行ジョブ340の最初の作業単位が完了すると、実行ジョブ340の後続の作業単位は、手放されたGPUを包含することができる。後続の実行ジョブの作業単位340を展開するために、計算ユニット313が合成される。計算ユニット313は、計算ユニット312の修正バージョン、またはGPUリソースの放棄に応答して形成される新たな計算ユニットを備えることができる。したがって、状態303は、計算ユニット313内のGPU350のプールのすべてのGPUおよび実行ジョブ340の作業単位の実行を示す。
【0041】
図4は、計算プラットフォーム400を示すシステム図である。計算プラットフォーム400は、モジュール式シャーシのラックマウント配置を備える。モジュール式シャーシなどの1つまたは複数の物理的エンクロージャは、棚またはラックユニットにさらに含めることができる。シャーシ410,420,430,440、および450は、計算プラットフォーム400に含まれ、1つまたは複数のデータセンタ内の共通のラックマウント配置に取り付けられてもよく、または複数のラックマウント配置にまたがってもよい。各シャーシ内で、モジュールは、様々な電力システム、構造支持体、およびコネクタ要素と共に、共有PCIeスイッチに取り付けられる。計算プラットフォーム400の所定数の構成要素は、特定のエンドユーザの必要に応じてモジュールを挿入および取り外しすることができるモジュール式フレームワークなどの物理的エンクロージャに挿入または設置できる。囲まれたモジュール式システムは、回路、プリント回路基板、半導体システム、および構造要素を含む物理的支持構造体およびエンクロージャを含むことができる。計算プラットフォーム400の構成要素を備えるモジュールは、ラックマウント式のエンクロージャに挿入可能かつ取り外し可能である。いくつかの例では、図4の要素は、より大きなラックマウント環境内に取り付けるための「U」スタイルのシャーシに含まれる。図4の構成要素は、任意の物理的な取り付け環境に含めることができ、関連するエンクロージャまたはラックマウント要素を含む必要がないことを理解されたい。
【0042】
シャーシ410は、管理モジュールまたはトップ・オブ・ラック(ToR)スイッチシャーシを備え、管理プロセッサ411およびPCIeスイッチ460を備える。管理プロセッサ411は、管理オペレーティングシステム(OS)412、ユーザインターフェース413、およびジョブインターフェース414を含む。管理プロセッサ411は、1つまたは複数のPCIeレーンを含む1つまたは複数のPCIeリンクを介して、PCIeスイッチ460に結合される。
【0043】
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ファブリックを備える様々な回路のファームウェアの更新、および他の動作を含むことができる。
【0044】
シャーシ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の個々の要素のさらなる説明が以下に含まれる。
【0045】
計算プラットフォーム400の様々なCPU、GPU、SSD、またはNIC構成要素が関連するシャーシまたはエンクロージャに設置されると、構成要素は、PCIeファブリックを介して結合され、「マシン」または計算ユニットと呼ばれる任意の数の別個の任意に定義された配置に論理的に分離できる。計算ユニットはそれぞれ、任意のタイプのモジュールの0を含む、選択された数のCPU、GPU、SSD、およびNICで合成できるが、典型的には、少なくとも1つのCPUが各計算ユニットに含まれる。図4には、CPU421、GPU431~432、SSD441、およびNIC451を含む計算ユニット401の一例が示されている。計算ユニット401は、論理ドメイン470によって示されるPCIeファブリック内の論理分割を使用して合成される。PCIeファブリックは、特定の計算ユニットに含まれない構成要素間の論理分離を維持しながら、特定の計算ユニットの構成要素間でトラフィックを選択的にルーティングするように、管理プロセッサ411によって構成できる。このようにして、プラットフォーム100の構成要素間に分解された柔軟な「ベアメタル」構成を確立できる。個々の計算ユニットは、計算ユニットの計算、記憶、ネットワーク、またはグラフィックス処理リソースを利用することができる外部ユーザ、着信ジョブ、またはクライアントマシンに関連付けることができる。さらに、より大きな並列性および容量のために、任意の数の計算ユニットを計算ユニットの「クラスタ」にグループ化できる。
【0046】
いくつかの例では、管理プロセッサ411は、1つまたは複数のユーザインターフェースまたはジョブインターフェースを介して計算ユニットを作成できる。例えば、管理プロセッサ411は、テンプレートを使用して作成された計算ユニットのために、割り当てられるハードウェア構成要素、ならびにソフトウェアおよび構成情報を指定できる計算ユニットのためのマシンテンプレートを提示できるユーザインターフェース413を提供してもよい。いくつかの例では、計算ユニット作成ユーザインターフェースは、計算ユニットのユースケースまたは使用カテゴリに基づいて、計算ユニットのマシンテンプレートを提供してもよい。例えば、ユーザインターフェースは、ゲーム・サーバ・ユニット、人工知能学習計算ユニット、データ分析ユニット、および記憶サーバユニットのための提案されたマシンテンプレートまたは計算ユニット構成を提供してもよい。例えば、ゲーム・サーバ・ユニット・テンプレートは、記憶サーバユニットテンプレートと比較して追加の処理リソースを指定してもよい。さらに、構成要素のリストまたはカテゴリから任意に選択された構成要素タイプから計算ユニットテンプレートをユーザが作成するための、テンプレートまたは計算ユニット構成およびオプションのカスタマイズを、ユーザインターフェースが提供してもよい。
【0047】
追加の例では、管理プロセッサ411は、動作中にポリシーベースの動的調整を計算ユニットに提供できる。いくつかの例では、ユーザが、計算ユニットに割り当てられたハードウェアおよびソフトウェアの調整、ならびに動作中のその構成情報の調整のためのポリシーを定義することを、ユーザインターフェース413は可能にできる。一例では、動作中に、管理プロセッサ411は、現在のリソースの利用率を決定するために、計算ユニットのテレメトリデータを分析できる。現在の利用率に基づいて、動的調整ポリシーは、処理リソース、記憶リソース、ネットワーキングリソースなどが計算ユニットに割り当てられるか、または計算ユニットから削除されることを指定できる。例えば、テレメトリデータは、記憶計算ユニットの割り当てられた記憶リソースの現在の使用レベルが100%に近づいていることを示し、追加の記憶デバイスを計算ユニットに割り当てることができる。
【0048】
さらに別の例では、管理プロセッサ411は、動作中に計算ユニットに対する実行ジョブベースの動的調整を提供できる。いくつかの例では、ジョブインターフェース414は、計算プラットフォーム400によって処理されるべき実行ジョブの表示を受信できる。管理プロセッサ411は、これらの着信ジョブを分析して、CPU、GPU、SSD、NIC、および他のリソースの中から選択されたリソースを含む、ジョブを実行/処理するためのシステム要件を決定できる。図4において、表490は、ジョブインターフェース414を介して受信され、ジョブキューにエンキューされたいくつかのジョブを示す。表490は、一意のジョブ識別子(ID)とそれに続く、ジョブをサポートするために形成された計算ユニット内に含まれることになる様々な粒度のシステム構成要素、とを示す。例えば、ジョブ491は、00001234のジョブIDを有し、ジョブ491を実行するために形成される計算ユニットに、1個のCPU、2個のGPU、1個のSSD、1個のNICが含まれることを示す。これにより、管理プロセッサ411は、ジョブ491の実行タイミングになると、CPU421、GPU431~432、SSD441、NIC451からなる計算ユニット401を構築する。計算ユニット401は、論理ドメイン470によって示されるPCIeファブリック内の論理分割を使用して合成される。CPU421、GPU431~432、SSD441、およびNIC451がPCIeシグナリングを介して通信することを、論理ドメイン470は可能にし、同時に、他の論理ドメインの他の構成要素および他の計算ユニットを計算ユニット401からPCIe通信を分離し、すべて同じPCIeファブリックを共有する。ジョブ491は、様々なソフトウェア構成要素が計算ユニット401に展開されると、計算ユニット401上で実行できる。図5は、これらの様々なソフトウェア構成要素の展開を示している。
【0049】
PCIeファブリックが図4の文脈で説明されているが、管理プロセッサ411は、複数のプロトコル通信ファブリックの制御および管理を提供できる。例えば、管理プロセッサ411およびPCIeファブリックのPCIeスイッチデバイスは、PCIeおよび同様のプロトコルの複数の異なる実装形態またはバージョンを使用して物理構成要素の通信結合を提供できる。例えば、同じPCIeファブリック内の異なる物理構成要素に対して、異なるPCIeバージョン(例えば、3.0、4.0、5.0、およびそれ以降)が使用されてもよい。さらに、次世代インターフェース、例えば、Gen-Z、CCIX、CXL、OpenCAPI、またはWi-Fiインターフェースもしくはセルラ無線インターフェースを含む無線インターフェースを使用できる。また、図4ではPCIeが使用されているが、PCIeは存在しなくてもよく、他の相互接続、ネットワーク、およびリンクインターフェースの中でも、NVMe、イーサネット、SAS、ファイバーチャネル、サンダーボルト、SATAエクスプレスなどの異なる通信リンクまたはバスを代わりに使用できることを理解されたい。
【0050】
ここで計算プラットフォーム400の構成要素に関する説明を参照すると、管理プロセッサ411は、関連する記憶システムから、管理オペレーティングシステム412、ユーザインターフェース413、およびジョブインターフェース414などのソフトウェアを検索および実行する、1つまたは複数のマイクロプロセッサおよび他の処理回路を備えることができる。管理プロセッサ411は、単一の処理デバイス内に実装できるが、プログラム命令を実行する際に協働する複数の処理デバイスまたはサブシステムにわたって分散させることもできる。管理プロセッサ411の例は、汎用中央処理装置、特定用途向けプロセッサ、および論理デバイス、ならびに任意の他の種類の処理デバイス、それらの組み合わせ、または変形を含む。いくつかの例では、管理プロセッサ411は、Intel(登録商標)もしくはAMD(登録商標)マイクロプロセッサ、ARM(登録商標)マイクロプロセッサ、フィールド・プログラマブル・ゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向けプロセッサ、または他のマイクロプロセッサもしくは処理要素を含む。
【0051】
管理オペレーティングシステム(OS)412は、管理プロセッサ411によって実行され、計算プラットフォーム400のリソースの管理を提供する。この管理には、1つまたは複数の計算ユニットの合成、変更、合成解除、および監視が含まれる。管理OS412は、管理プロセッサ411のための本明細書に記載の機能および動作を提供する。ユーザインターフェース413は、グラフィカルユーザインターフェース(GUI)、アプリケーション・プログラミング・インターフェース(API)、またはコマンド・ライン・インターフェース(CLI)、ウエブソケット(WebSocket)インターフェースを1人または複数のユーザに提示できる。ユーザインターフェース413は、計算ユニットを確立し、計算ユニットにリソースを割り当て、計算ユニットのクラスタを作成し、他の動作を実行するために、エンドユーザまたは管理者によって使用できる。いくつかの例では、ユーザインターフェース413は、ユーザが、計算ユニットの作成で使用するために、使用またはカスタマイズするための1つまたは複数の計算ユニットテンプレートおよび動的調整ポリシーセットを決定できるインターフェースを提供する。ユーザインターフェース413を使用して、マシンテンプレートを管理、選択、および変更できる。ユーザインターフェース413を使用して、計算ユニットのポリシーを管理、選択、および変更できる。ユーザインターフェース413はまた、計算プラットフォーム400の動作のためのテレメトリ情報を、1つまたは複数のステータスインターフェースまたはステータスビューなどで、ユーザに提供できる。計算プラットフォーム400の様々な構成要素または要素の状態は、とりわけ、CPU状態、GPU状態、NIC状態、SSD状態、PCIeスイッチ/ファブリック状態など、ユーザインターフェース413を介して監視できる。様々な性能測定基準、エラーステータスは、ユーザインターフェース413を使用して監視できる。
【0052】
要素411~414の2つ以上のインスタンスを計算プラットフォーム400に含めることができる。各管理インスタンスは、所定数のクラスタまたは計算ユニットのリソースを管理することができる。GUIを介して受信されるものなどのユーザコマンドは、管理インスタンスのいずれかに受信され、受信管理インスタンスによってハンドリング管理インスタンスに転送され得る。各管理インスタンスは、適切な管理インスタンスへのユーザコマンドの配信を助けることができる、一意のまたは事前に割り当てられた識別子を有することができる。さらに、各管理インスタンスの管理プロセッサは、メールボックスプロセスまたは他のデータ交換技法を使用するなどして、互いに通信できる。この通信は、I2Cインターフェースなどの専用サイドバンドインターフェースを介して行うことができ、または各管理プロセッサを結合するPCIeまたはイーサネットインターフェースを介して行うことができる。
【0053】
複数のCPU421~425は、シャーシ420に含まれる。各CPUは、1つまたは複数のCPUまたはマイクロプロセッサと、関連する記憶システムからオペレーティングシステム、デバイスドライバ、およびアプリケーションなどのソフトウェアを取得して実行する他の処理回路と、を含むCPUモジュールを備えることができる。各CPUは、単一の処理デバイス内に実装できるが、プログラム命令を実行する際に協働する複数の処理デバイスまたはサブシステムにわたって分散させることもできる。各CPUの例は、汎用中央処理装置、特定用途向けプロセッサ、および論理デバイス、ならびに任意の他の種類の処理デバイス、それらの組み合わせ、または変形を含む。いくつかの例では、各CPUは、Intel(登録商標)もしくはAMD(登録商標)マイクロプロセッサ、ARM(登録商標)マイクロプロセッサ、グラフィックスプロセッサ、計算コア、グラフィックスコア、ASIC、FPGA、または他のマイクロプロセッサもしくは処理要素を含む。各CPUはまた、1つまたは複数のPCIeインターフェースおよびPCIeファブリックを介して、同じ記憶アセンブリ/エンクロージャまたは別の記憶アセンブリ/エンクロージャ内のものなどの他の計算ユニットと通信できる。
【0054】
複数のGPU431~435は、シャーシ430に含まれる。各GPUは、1つまたは複数のGPUを含むGPUモジュールを備えることができる。各GPUは、1つまたは複数の計算ユニットに割り当てることができるグラフィックス処理リソースを含む。GPUは、グラフィックスプロセッサ、シェーダ、ピクセルレンダリング要素、フレームバッファ、テクスチャマッパ、グラフィックスコア、グラフィックスパイプライン、グラフィックスメモリ、または他のグラフィックス処理および処理要素を含むことができる。いくつかの例では、各GPUは、GPUチップをサポートする回路を備えるグラフィックス「カード」を備える。例示的なGPUカードは、様々なサポート回路、コネクタ、および他の要素と共にグラフィックス処理要素を含むnVIDIA(登録商標)またはAMD(登録商標)グラフィックスカードを含む。さらなる例では、機械学習処理ユニット、テンソル処理ユニット(TPU)、FPGA、ASIC、または特殊なデータセットの処理に処理およびメモリリソースを集中させるための特殊な処理要素を含むことができる他の特殊なプロセッサなど、他のスタイルのグラフィックス処理ユニット、グラフィックス処理アセンブリ、またはコプロセッシング要素を使用できる。
【0055】
複数のSSD441~445は、シャーシ440に含まれる。各SSDは、1つまたは複数のSSDを含むSSDモジュールを備えてもよい。各SSDは、PCIeインターフェースを有するソリッドステート記憶ドライブなどの1つまたは複数の記憶ドライブを含む。各SSDはまた、PCIeインターフェース、制御プロセッサ、および電力システム要素を含む。各SSDは、他の動作の中でも、トラフィック統計およびステータス監視のためのプロセッサまたは制御システムを含むことができる。さらに他の例では、各SSDは、代わりに、磁気ハードディスクドライブ(HDD)、クロスポイントメモリ(例えば、Optane(登録商標)デバイス)、スタティック・ランダム・アクセスメモリ(SRAM)デバイス、プログラマブル読み出し専用メモリ(PROM)デバイス、または他の磁気、光学、もしくは半導体ベースの記憶媒体などの異なるデータ記憶媒体を、関連するエンクロージャ、制御システム、電力システム、およびインターフェース回路と共に備える。
【0056】
複数のNIC451~455は、シャーシ450に含まれる。各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つまたは複数の他のシャーシ、ラックマウントシステム、データセンタ、計算プラットフォーム、通信ファブリック、または他の要素と通信するために提供される。
【0057】
計算プラットフォームには、CPU、GPU、SSD、およびNICに加えて、他の専用デバイスが使用されてもよい。これらの他の専用デバイスは、他の回路の中でも、専用のコプロセッシング回路、ファブリックカップリングRAMデバイス、ASIC回路、またはFPGA回路、ならびに様々なメモリ構成要素、記憶構成要素、およびインターフェース構成要素を備えるコプロセッシングモジュールを含むことができる。他の専用デバイスは各々、1つまたは複数のPCIeレーンを備えるPCIeインターフェースを含むことができる。これらのPCIeインターフェースは、PCIeファブリックを介して通信し、1つまたは複数の計算ユニットに他の専用デバイスを含めるために使用することができる。これらの他の専用デバイスは、ルートコンプレクスを有しても有しなくてもよいPCIeエンドポイントデバイスまたはPCIeホストデバイスを備えてもよい。
【0058】
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回路またはパッケージに組み込むことができる。
【0059】
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スイッチと開始エンドポイントとの間の追加のハンドシェイクを含むことができる。
【0060】
有利には、このNTポートベースのセグメント化またはドメインベースのセグメント化は、物理的構成要素(すなわち、CPU、GPU、SSD、NIC)がセグメント化/分割を介して含まれるこれらの構成要素に対してのみ視認性を有することを可能にできる。したがって、PCIeファブリック間の論理分割を用いて、複数の物理構成要素間のグループ化を実現できる。この分割は本質的にスケーラブルであり、管理プロセッサ411または他の制御要素によって必要に応じて動的に変更できる。管理プロセッサ411は、PCIeファブリックを備えるPCIeスイッチ回路を制御することができ、PCIeポート間の論理分割またはセグメント化を変更し、したがって物理構成要素のグループ化の合成を変更できる。本明細書では計算ユニットと呼ばれるこれらのグループ化は、個別に「マシン」を形成することができ、多くの計算ユニット/マシンのクラスタにさらにグループ化することができる。本明細書で説明される他の考慮事項の中でも、ユーザインターフェースを介して受信されたユーザ命令に従って、ロード/アイドル状態に応答して動的に、着信またはキューに入れられた実行ジョブに応答して動的に、または予期される必要性に起因して予防的に、物理的構成要素を、計算ユニットに追加または計算ユニットから削除できる。
【0061】
さらなる例では、メモリ・マップド・ダイレクト・メモリ・アクセス(DMA、Direct Memory Access)コンジットを、個々のCPU/PCIeデバイスペアの間に形成することができる。このメモリマッピングは、他の構成の中でもとりわけ、PCIeファブリックアドレス空間上で行うことができる。多くのCPUおよびGPUを備える共有PCIeファブリック上にこれらのDMAコンジットを提供するために、本明細書に記載の論理分割を採用できる。具体的には、PCIeスイッチ上のNTポートまたはドメインベースの分割は、関連するCPU/GPU間の個々のDMAコンジットを分離できる。PCIeファブリックは、64ビットのアドレス空間を有することができ、これにより、264バイトのアドレス指定可能な空間が可能になり、少なくとも16エクスビバイトのバイトアドレス指定可能なメモリがもたらされる。64ビットPCIeアドレス空間は、すべての計算ユニットによって共有できるか、またはリソースへの適切なメモリマッピングのための配置を形成する様々な計算ユニット間でセグメント化できる。
【0062】
PCIeインターフェースは、x1、x2、x4、x8、x16、およびx32などの複数のバス幅をサポートすることができ、バス幅の各倍数は、データ転送のための追加の「レーン」を含む。PCIeはまた、他のシグナリングの中でも、システム管理バス(SMBus)インターフェースおよびジョイント・テスト・アクション・グループ(JTAG、Joint Test Action Group)インターフェース、ならびに関連するクロック、電力、およびブートストラップなどのサイドバンドシグナリングの転送をサポートする。PCIeはまた、本明細書で使用される異なる実装形態またはバージョンを有してもよい。例えば、PCIeバージョン3.0以降(例えば、4.0、5.0、またはそれ以降)が使用されてもよい。さらに、Gen-Z、キャッシュコヒーレントCCIX、CXL、またはOpenCAPIなどの次世代インターフェースを使用できる。また、図4ではPCIeが使用されているが、他の相互接続、ネットワーク、およびリンクインターフェースの中でも、NVMe、イーサネット、SAS、ファイバーチャネル、サンダーボルト、SATAエクスプレスなど、の異なる通信リンクまたはバスを代わりに使用できることを理解されたい。NVMeは、ハードディスクドライブおよびソリッドステートメモリデバイスなどの大容量記憶デバイスのためのインターフェース規格である。NVMeは、パーソナルコンピュータおよびサーバ環境における大容量記憶デバイスとインターフェースするためのSATAインターフェースに取って代わることができる。しかしながら、これらのNVMeインターフェースは、SATAデバイスと同様に、1対1のホストドライブ関係に限定される。本明細書で説明する例では、PCIeインターフェースを使用してNVMeトラフィックを転送し、PCIeインターフェース上で1つまたは複数のNVMe仮想論理ユニット番号(VLUN、Virtual Logical Unit Numbers)として多くの記憶ドライブを備えるマルチドライブシステムを提示できる。
【0063】
図4のリンクのいずれも、空気、空間、金属、光ファイバー、またはそれらの組み合わせを含む他の何らかの信号伝搬経路などの様々な通信媒体をそれぞれ使用できる。図4のリンクのいずれも、任意の数のPCIeリンクまたはレーン構成を含むことができる。図4のリンクのいずれも、それぞれ直接リンクであってもよく、または様々な機器、中間構成要素、システム、およびネットワークを含んでもよい。図4のリンクのいずれも、それぞれ共通リンク、共有リンク、統合リンクとすることができ、または個別の別個のリンクから構成できる。
【0064】
次に、計算ユニットの形成および処理の詳細な例について説明する。図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リソースは、計算ユニット全体に適用することもできる。
【0065】
図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は、ユーザレベルアプリケーションおよび実行ジョブを提供する。
【0066】
管理OS111はまた、リンク510を介して、計算ユニット401上に展開された計算ユニットインターフェース525と通信する管理インターフェース515を含む。管理インターフェース515は、ソフトウェア構成要素を計算ユニットに転送し、計算ユニットからステータス、テレメトリ、および他のデータを受信するために、計算ユニットとの通信を可能にする。管理インターフェース515および計算ユニットインターフェース525は、制御命令、制御応答、テレメトリデータ、ステータス情報、または他のデータなどのための管理トラフィックのための標準化されたインターフェースを提供する。標準化されたインターフェースは、1つまたは複数のAPIを含むことができる。
【0067】
いくつかの例では、計算ユニットインターフェースは、エミュレートされたネットワークインターフェースを含む。このエミュレートされたネットワークインターフェースは、1つまたは複数のPCIeインターフェース上でパケットネットワークトラフィックを転送するための転送機構を備える。エミュレートされたネットワークインターフェースは、イーサネットデバイスなどのネットワークデバイスを管理プロセッサ411にエミュレートすることができ、その結果、管理プロセッサ411は、あたかも管理プロセッサ411およびCPU421がイーサネットネットワークインターフェースを介して通信しているかのように、PCIeインターフェースを介して計算ユニット401のCPU421と対話/インターフェースすることができる。エミュレートされたネットワークインターフェースは、OSがイーサネットスタイルのコマンドおよびドライバを使用してインターフェースすることを可能にし、アプリケーションまたはOSレベルのプロセスが、完全なネットワークスタックに関連付けられた関連するレイテンシおよび処理オーバーヘッドを有することなく、エミュレートされたネットワークデバイスと通信することを可能にする、カーネルレベルの要素またはモジュールを備えることができる。エミュレートされたネットワークインターフェースは、ドライバ、モジュール、カーネルレベルモジュール、または計算ユニットのCPUによって実行されるアプリケーションレベルおよびシステムレベルのソフトウェアに対するネットワークデバイスとして見える他のソフトウェア構成要素、などのソフトウェア構成要素を含む。有利には、エミュレートされたネットワークインターフェースは、通信を転送するためにネットワークスタック処理を必要としない。計算ユニット401などの計算ユニットの場合、エミュレートされたネットワークインターフェースは、ネットワークスタック処理を使用せず、依然としてネットワークデバイスとしてオペレーティングシステム522に現れるので、その結果、関連するCPUのユーザソフトウェアまたはオペレーティングシステム要素は、ネットワークインターフェースと対話し、イーサネット通信などの既存のネットワークに面する通信方法を使用してPCIeファブリックを介して通信することができる。管理プロセッサ411のエミュレートされたネットワークインターフェースは、PCIeインターフェースまたはPCIeファブリックを介して、関連するトラフィックとして、計算ユニット401上に位置する別のエミュレートされたネットワークデバイスに通信を転送する。エミュレートされたネットワークインターフェースは、PCIeトラフィックをネットワークデバイストラフィックに翻訳し、その逆も同様である。ネットワークスタックを介してエミュレートされたネットワークデバイスに転送される通信の処理は省略され、ネットワークスタックは、通常、提示されるネットワークデバイス/インターフェースのタイプに使用されることが多い。例えば、エミュレートされたネットワークデバイスは、オペレーティングシステムまたはアプリケーションにイーサネットデバイスとして提示されてもよい。オペレーティングシステムまたはアプリケーションから受信した通信は、エミュレートされたネットワークデバイスによって1つまたは複数の宛先に転送される。しかしながら、エミュレートされたネットワークインターフェースは、アプリケーション層からリンク層までの通信を処理するためのネットワークスタックを含まない。代わりに、エミュレートされたネットワークインターフェースは、オペレーティングシステムまたはアプリケーションから受信した通信からペイロードデータおよび宛先を抽出し、宛先に関連するアドレス指定を使用してペイロードデータをPCIeフレームにカプセル化することなどによって、ペイロードデータおよび宛先をPCIeトラフィックに翻訳する。
【0068】
計算ユニットインターフェース525は、エミュレートされたネットワークインターフェースについて説明したような、エミュレートされたネットワークインターフェースを含むことができる。さらに、計算ユニットインターフェース525は、CPU421の動作およびCPU421によって実行されるソフトウェアを監視し、この動作のためのテレメトリを管理プロセッサ411に提供する。したがって、ユーザ提供オペレーティングシステム(Windows、Linux、MacOS、Android、iOSなど...)、実行ジョブ491、ユーザアプリケーション524、または他のソフトウェアおよびドライバなどの任意のユーザ提供ソフトウェアを、CPU421によって実行できる。計算ユニットインターフェース525は、関連する計算ユニットおよび/またはクラスタに関与すること、ならびに、リンク510を介して管理プロセッサ411にテレメトリデータを提供することを、CPU421が可能にする機能を提供する。計算ユニットが複数のまたは異なる通信プロトコルを利用する物理構成要素を含む例では、計算ユニットインターフェース525は、計算ユニット内でプロトコル間通信を行うことができる機能を提供してもよい。計算ユニットの各CPUはまた、PCIeファブリックを介してネットワークトラフィックを伝送するエミュレートされたネットワークデバイスを介して、互いに通信できる。計算ユニットインターフェース525はまた、ユーザソフトウェアおよびオペレーティングシステムが計算ユニットインターフェース525と対話するためのAPI、ならびに管理プロセッサ411と制御/テレメトリシグナリングを交換するためのAPI、を提供することもできる。
【0069】
さらに、例えば、PCIeデバイスが異なる通信プロトコルを利用する場合、計算ユニットのPCIeデバイスのデバイスドライバ間のプロトコル間通信またはピアツーピア通信を容易にするために、計算ユニットインターフェース525が、計算ユニットのPCIeデバイスのデバイスドライバへのインターフェースとして動作してもよい。さらに、計算ユニットインターフェース525は、動的調整ポリシーに基づいて計算ユニットに対する動的調整中の継続動作を容易にするように動作してもよい。さらに、計算ユニットインターフェース525は、ポリシー(例えば、利用率または応答性ポリシーに基づくPCIeバージョン3.0ハードウェアからGen-Zハードウェアへの移行)に基づいて、計算プラットフォームにおける代替ハードウェアへの移行を容易にするように動作してもよい。対応するPCIeスイッチ回路内の制御要素は、異なるバージョンまたは通信プロトコルを利用する計算ユニット間のPCIe通信を監視するように構成されてもよい。上述したように、計算プラットフォーム内で、およびいくつかの実装形態では計算ユニット内で、異なるバージョンまたは通信プロトコルを利用できる。いくつかの例では、PCIeファブリック内の1つまたは複数のPCIeスイッチまたは他のデバイスは、異なるバージョンまたは通信プロトコルを利用するPCIeデバイス間のインターフェースとして機能するように動作してもよい。検出されたデータ転送は、「トラップ」され、PCIeスイッチ回路によって宛先PCIeデバイスによって利用されるバージョンまたは通信プロトコルに翻訳または変換され、次いで宛先PCIeデバイスにルーティングされてもよい。
【0070】
図6は、管理プロセッサ600の実装形態を示すブロック図である。管理プロセッサ600は、図1の管理システム110または図4および図5の管理プロセッサ411など、本明細書で説明する管理プロセッサのいずれかの例を示す。管理プロセッサ600は、通信インターフェース601と、ジョブインターフェース602と、ユーザインターフェース603と、処理システム610とを含む。処理システム610は、処理回路611と、ランダムアクセスメモリ(RAM)613を含むことができるデータ記憶システム612とを含むが、追加のまたは異なる構成の要素を含むことができる。
【0071】
処理回路611は、単一の処理デバイス内に実装できるが、プログラム命令を実行する際に協働する複数の処理デバイスまたはサブシステムにわたって分散させることもできる。処理回路611の例は、汎用中央処理装置、マイクロプロセッサ、特定用途向けプロセッサ、および論理デバイス、ならびに任意の他の種類の処理デバイスを含む。いくつかの例では、処理回路611は、クラウド計算システムなどの物理的に分散された処理デバイスを含む。
【0072】
通信インターフェース601は、通信リンク、パケットネットワークなどのネットワーク、およびインターネットなどを介して通信するための1つまたは複数の通信およびネットワークインターフェースを含む。通信インターフェースは、PCIeインターフェース、イーサネットインターフェース、シリアルインターフェース、シリアル・ペリフェラル・インターフェース(SPI)リンク、集積回路間(I2C)インターフェース、ユニバーサルシリアルバス(USB)インターフェース、UARTインターフェース、無線インターフェース、またはイーサネットもしくはインターネットプロトコル(IP)リンクを介して通信することができる1つもしくは複数のローカルもしくはワイドエリアネットワーク通信インターフェース、を含むことができる。通信インターフェース601は、異なるネットワークリンクに関連付けることができる1つまたは複数のネットワークアドレスを使用して通信するように構成されたネットワークインターフェースを含むことができる。通信インターフェース601の例は、ネットワーク・インターフェース・カード機器、トランシーバ、モデム、および他の通信回路を含む。通信インターフェース601は、PCIeファブリックまたは他の通信ファブリックの要素と通信して、通信ファブリックの1つまたは複数の通信スイッチの管理インターフェースまたは制御インターフェースなどを介して、ファブリック内で論理分割を確立できる。
【0073】
ジョブインターフェース602は、1つまたは複数の外部システムから実行ジョブを受け取り、そのような外部システムに実行ジョブ結果およびステータスを提供する、ネットワークベースのインターフェースまたは他のリモートインターフェースを備える。ジョブは、ジョブインターフェース602を介して受信され、対応する計算プラットフォームの要素による実行または他の種類の処理のために、ジョブスケジュール631に置かれる。ジョブインターフェース602は、他のインターフェースの中でも、ネットワークインターフェース、ユーザインターフェース、端末インターフェース、アプリケーション・プログラミング・インターフェース(API)、またはレプレセンテーショナル・ステート・トランスファ(REST)インターフェースを含むことができる。いくつかの例では、ワークロード・マネージャ・ソフトウェア・プラットフォーム(図示せず)は、実行または処理のためにジョブを作成、スケジュール、および転送することができるユーザまたはオペレータ用のフロントエンドを確立する。ジョブインターフェース602は、ワークロード・マネージャ・ソフトウェア・プラットフォームからこれらのジョブの表示を受信できる。
【0074】
ユーザインターフェース603は、タッチスクリーン、キーボード、マウス、音声入力デバイス、音声入力デバイス、またはユーザからの入力を受信するための他のタッチ入力デバイスを含んでもよい。ディスプレイ、スピーカ、ウエブインターフェース、端末インターフェース、および他の種類の出力デバイスなどの出力デバイスもまた、ユーザインターフェース603に含まれてもよい。ユーザインターフェース603は、通信インターフェース601などのネットワークインターフェースを介して出力を提供し、入力を受信できる。ネットワークの例では、ユーザインターフェース603は、1つまたは複数のネットワークインターフェースを介して結合されたディスプレイシステムまたは計算システムによって、リモートディスプレイ用のディスプレイまたはグラフィックスデータをパケット化することができる。ユーザインターフェース603の物理的または論理的要素は、ユーザまたは他のオペレータに警告または視覚的出力を提供できる。ユーザインターフェース603はまた、上述した様々なユーザ入出力デバイスをサポートする、処理システム610によって実行可能な関連するユーザインターフェースソフトウェアを含んでもよい。別個に、または互いにおよび他のハードウェアおよびソフトウェア要素と共に、ユーザインターフェースソフトウェアおよびユーザインターフェースデバイスは、グラフィカルユーザインターフェース、自然なユーザインターフェース、または任意の他の種類のユーザインターフェースをサポートできる。
【0075】
ユーザインターフェース603は、グラフィカルユーザインターフェース(GUI)を1人または複数のユーザに提示できる。GUIは、クラスタを確立し、アセット(計算ユニット/マシン)を各クラスタに割り当てるために、エンドユーザまたは管理者によって使用され得る。いくつかの例では、GUIまたはユーザインターフェース603の他の部分は、エンドユーザが、計算ユニットの作成で使用するために、使用またはカスタマイズするための1つまたは複数の計算ユニットテンプレートおよび動的調整ポリシーセットを決定できるインターフェースを提供する。ユーザインターフェース603を使用して、マシンテンプレートを管理、選択、および変更したり、または、計算ユニットのポリシーを変更したりすることができる。ユーザインターフェース603はまた、1つまたは複数のステータスインターフェースまたはステータスビューなどにおいて、テレメトリ情報を提供できる。様々な構成要素または要素の状態は、とりわけ、プロセッサ/CPU状態、ネットワーク状態、記憶ユニット状態、PCIe要素状態などを、ユーザインターフェース603を介して監視できる。様々な性能測定基準、エラーステータスは、ユーザインターフェース603を使用して監視できる。ユーザインターフェース603は、コマンド・ライン・インターフェース(CLI)、アプリケーション・プログラミング・インターフェース(API)、または他のインターフェースなど、GUI以外の他のユーザインターフェースを提供できる。ユーザインターフェース603の一部は、ウエブソケットベースのインターフェースを介して提供できる。
【0076】
記憶システム612およびRAM 613は、共に非一時的データ記憶システムを備えることができるが、変形も可能である。記憶システム612およびRAM 613は各々、処理回路611によって読み取り可能であり、ソフトウェアおよびOSイメージを記憶することができる、任意の記憶媒体を備えることができる。RAM 613は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装された揮発性および不揮発性、取り外し可能および固定の媒体を含むことができる。記憶システム612は、ソリッドステート記憶媒体、フラッシュメモリ、相変化メモリ、または磁気メモリなどの不揮発性記憶媒体を含むことができ、それらの組み合わせを含む。記憶システム612およびRAM 613は各々、単一の記憶デバイスとして実装することができるが、複数の記憶デバイスまたはサブシステムにわたって実装することもできる。記憶システム612およびRAM 613は各々、処理回路611と通信することができるコントローラなどの追加の要素を備えることができる。
【0077】
記憶システム612もしくはRAM 613上、またはそれらの内に記憶されるソフトウェアまたはデータは、コンピュータプログラム命令、ファームウェア、または処理システムが実行されると本明細書に記載されるように動作するようにプロセッサ600に指示するプロセスを有する何らかの他の形態の機械可読処理命令、を含むことができる。例えば、ソフトウェア620は、プロセッサ600を駆動して、他の構成要素の中でも、CPU、GPU、SSD、およびNICを含む複数の分解された物理計算構成要素間で計算ユニットを確立するためのユーザコマンドを受信することができる。ソフトウェア620は、テレメトリデータ、統計情報、動作データ、および他のデータを受信および監視して、テレメトリをユーザに提供し、テレメトリデータ、ポリシー、または他のデータおよび基準に従って計算ユニットの動作を変更するように、プロセッサ600を駆動できる。ソフトウェア620は、とりわけ、クラスタリソースおよび計算ユニットリソースを管理し、通信ファブリック要素間のドメイン分割またはNT分割を確立し、個々の通信スイッチとインターフェースしてそのような通信スイッチの動作を制御するように、プロセッサ600を駆動できる。ソフトウェアはまた、ユーザ・ソフトウェア・アプリケーション、アプリケーション・プログラミング・インターフェース(API)、またはユーザインターフェースを含むことができる。ソフトウェアは、単一のアプリケーションまたは複数のアプリケーションとして実装できる。一般に、ソフトウェアは、処理システムにロードされて実行されると、汎用デバイスから本明細書で説明するようにカスタマイズされた専用デバイスに、処理システムを変換できる。
【0078】
システムソフトウェア620は、RAM 613の例示的な構成の詳細図を示す。異なる構成が可能であることを理解されたい。システムソフトウェア620は、アプリケーション621およびオペレーティングシステム(OS)622を含む。ソフトウェアアプリケーション623~628は各々、計算システムもしくはクラスタコントローラを動作させるため、または本明細書で説明する動作に従って他の回路を動作させるため、にプロセッサ600によって実行できる実行可能命令を含む。
【0079】
具体的には、クラスタ管理アプリケーション623は、図1に示すように、計算プラットフォームの様々なハードウェア要素間でクラスタおよび計算ユニットを確立および維持する。ユーザ・インターフェース・アプリケーション624は、エンドユーザが関連するクラスタおよび計算ユニットを管理し、クラスタおよび計算ユニットの動作を監視するための、1つまたは複数のグラフィカルまたは他のユーザインターフェースを提供する。ジョブ処理アプリケーション625は、ジョブインターフェース602を介して実行ジョブを受信し、合成された計算ユニット内のジョブの処理/実行に必要な計算構成要素の表示と共に、スケジューリング/待ち行列のために実行ジョブを分析する。ジョブ処理アプリケーション625はまた、ジョブの実行のために合成された計算ユニットに展開される必要があるジョブソフトウェアまたはデータ、ならびに、どのデータ、ステータス、または結果が、ジョブのためにジョブインターフェース602を介して転送される必要があるか、を示す。モジュール間通信アプリケーション626は、I2C、イーサネット、エミュレートされたネットワークデバイス、またはPCIeインターフェースなどの他のプロセッサ600要素間の通信を提供する。モジュール間通信アプリケーション626は、プロセッサ600と合成された計算ユニットとの間の通信、ならびに他の要素との間の通信、を可能にする。ユーザCPUインターフェース627は、計算ユニットのプロセッサおよびその専用ドライバ要素と通信するための通信、API、およびエミュレートされたネットワークデバイスを提供する。ファブリックインターフェース628は、PCIeファブリックのPCIeスイッチ要素などの通信ファブリック回路要素間の様々な論理分割またはドメインを確立する。ファブリックインターフェース628はまた、ファブリックスイッチ要素の動作を制御し、ファブリックスイッチ要素からテレメトリを受信する。ファブリックインターフェース628はまた、通信ファブリック内にアドレストラップまたはアドレスリダイレクト機能を確立する。ファブリックインターフェース628は、監視およびリダイレクトされるアドレス範囲を確立するために、1つまたは複数のファブリックスイッチ回路要素とインターフェースすることができ、したがって、通信ファブリック内にアドレストラップを形成する。
【0080】
ソフトウェア620に加えて、他のデータ630が記憶システム612およびRAM 613によって記憶され得る。データ630は、ジョブスケジュール631(またはジョブキュー)、テンプレート632、マシンポリシー633、テレメトリエージェント634、テレメトリデータ635、およびファブリックデータ636を含むことができる。ジョブスケジュール631は、ジョブ識別子、ジョブの実行に必要なジョブリソース、ならびに様々な他のジョブ情報の表示を含む。この他のジョブ情報には、受信、実行開始/終了、その他の情報のタイムスタンプを含むことができる。ジョブスケジュール631は、実行ジョブの実行/処理のために合成された計算ユニットに含むために必要な実行ジョブおよび関連する計算構成要素の時間的表現を保持する、1つまたは複数のデータ構造を含むことができる。テンプレート632は、事前定義された様々なハードウェアテンプレートまたはマシンテンプレートの仕様または記述を含む。テンプレート632はまた、テンプレート作成またはテンプレート調整に使用することができる、構成要素のリストまたはデータ構造および構成要素プロパティを含むことができる。マシンポリシー633は、事前定義された様々なマシンポリシーの仕様または説明を含む。これらのマシンポリシー仕様は、基準、トリガ、閾値、制限、または他の情報のリスト、ならびにポリシーの影響を受ける構成要素またはファブリックの表示、を含むことができる。マシンポリシー633はまた、ポリシー要因、基準、トリガ、閾値、制限、または、ポリシー作成もしくはポリシー調整に使用することができる他の情報、のリストあるいはデータ構造を含むことができる。テレメトリエージェント634は、計算ユニットの動作を監視するために計算ユニット内の構成要素に展開することができるソフトウェア要素を含むことができる。テレメトリエージェント634は、ハードウェア/ソフトウェアパラメータ、テレメトリ・デバイス・アドレス指定、または計算ユニットおよび通信ファブリックのIPMI準拠ハードウェア/ソフトウェアなどの監視要素とのインターフェースに使用される他の情報、を含むことができる。テレメトリデータ635は、様々な計算ユニットのテレメトリ要素からの受信データのデータストアを含み、この受信データは、テレメトリデータまたは監視データを含むことができる。テレメトリデータ635は、データを計算ユニット配置、通信ファブリック配置、または他の構造に編成できる。テレメトリデータ635は、データ630としてキャッシュされ、その後、計算システムの他の要素に転送されるか、またはユーザインターフェースを介した提示に使用され得る。ファブリックデータ636は、ファブリックタイプ、プロトコルバージョン、技術記述子、ヘッダ要件、アドレス指定情報、および他のデータなどのリソースのプールまたは構成要素のプールを含む、様々な通信ファブリックの情報ならびにプロパティを含む。ファブリックデータ636は、構成要素と構成要素が接続する特定のファブリックとの間の関係を含んでもよい。
【0081】
ソフトウェア620は、プロセッサ600の実行および動作中にRAM 613に存在することができ、他の場所および状態の中でも、電源オフ状態中に記憶システム612の不揮発性部分に存在できる。ソフトウェア620は、コンピュータ・オペレーティング・システムおよびアプリケーションについて説明したように、起動またはブート手順中にRAM 613にロードできる。ソフトウェア620は、ユーザインターフェース603を介してユーザ入力を受け取ることができる。このユーザ入力は、ユーザコマンド、ならびにそれらの組み合わせを含む他の入力を含むことができる。
【0082】
記憶システム612は、他のソリッドステート記憶技術の中でも、NANDフラッシュまたはNORフラッシュメモリなどのフラッシュメモリ、相変化メモリ、磁気メモリを含むことができる。図6に示すように、記憶システム612はソフトウェア620を含む。上述したように、ソフトウェア620は、他のオペレーティングソフトウェアの中でも、プロセッサ600の電源が切られた状態の間、アプリケーションおよびOSのための不揮発性記憶空間内にあり得る。
【0083】
プロセッサ600は、一般に、本明細書に記載の動作をレンダリングまたは他の様態で実施するために、少なくともソフトウェア620が展開および実行される計算システムを表すことを意図している。しかしながら、プロセッサ600はまた、少なくともソフトウェア620をステージングすることができ、そこから、ソフトウェア620を展開および実行、またはさらに追加の配信のためにさらに別の計算システムに分散、転送、ダウンロード、または提供され得る、任意の計算システムを表すこともできる。
【0084】
本明細書で説明するシステムおよび動作は、計算ユニットを備える計算クラスタへの計算リソース(CPU)、グラフィックス処理リソース(GPU)、ネットワークリソース(NIC)、または記憶リソース(SSD)の動的な割り当てを提供する。計算ユニットは、分解され、計算ユニットに割り当てられる(合成される)まで、未使用、未割り当て、または自由な構成要素のプール内に存在する。管理プロセッサは、計算ユニットの合成および合成解除を制御し、外部ユーザ、ジョブ管理ソフトウェア、またはオーケストレーションソフトウェアへのインターフェースを提供できる。処理リソースおよび他の要素(グラフィックス処理、ネットワーク、記憶、FPGA、またはその他)は、オンザフライで計算ユニットおよび関連するクラスタの内外で交換することができ、これらのリソースは他の計算ユニットまたはクラスタに割り当てることができる。一例では、グラフィックス処理リソースは、第1の計算リソース/CPUによってディスパッチ/編成され、続いてグラフィックス処理ステータス/結果を別の計算ユニット/CPUに提供できる。別の例では、リソースに障害、ハング、過負荷状態が発生した場合、追加のリソースを計算ユニットおよびクラスタに導入して、リソースを補うことができる。
【0085】
処理リソース(例えば、CPU)には、管理プロセッサによる識別およびPCIeファブリック上の識別に使用するための、一意の識別子を割り当てることができる。オペレーティングシステムおよびアプリケーションなどのユーザ供給ソフトウェアは、CPUが計算ユニットに追加された後に初期化されるときに必要に応じて処理リソースに展開することができ、ユーザ供給ソフトウェアは、それらのCPUが計算ユニットから削除されるときにCPUから削除できる。ユーザソフトウェアは、管理プロセッサが展開のためにアクセスすることができる記憶システムから展開できる。記憶ドライブ、記憶デバイス、および他の記憶リソースなどの記憶リソースは、計算ユニット/クラスタ間で割り当てられ、細分化できる。これらの記憶リソースは、異なるまたは類似の記憶ドライブまたはデバイスにまたがることができ、任意の数の論理ユニット(LUN)、論理ターゲット、分割、または他の論理配置を有することができる。これらの論理配置は、1つ以上のLUN、iSCSI LUN、NVMeターゲット、または他の論理分割を含むことができる。ミラーリング、ストライプ、独立ディスク冗長アレイ(RAID、Redundant Array of Independent Disk)アレイなどの記憶リソースのアレイを使用することができ、または記憶リソース全体で他のアレイ構成を使用することができる。ネットワーク・インターフェース・カードなどのネットワークリソースは、ブリッジまたはスパン技法を使用してクラスタの計算ユニット間で共有できる。グラフィックリソース(例えば、GPU)またはFPGAリソースは、PCIeファブリックおよびPCIeスイッチ上でNT分割またはドメインベースの分割を使用して、クラスタの2つ以上の計算ユニット間で共有できる。
【0086】
図で提供される機能ブロック図、動作シナリオおよびシーケンス、ならびにフロー図は、本開示の新規な態様を実行するための例示的なシステム、環境、および方法論を表す。説明を簡単にするために、本明細書に含まれる方法は、機能図、動作シナリオもしくはシーケンス、またはフロー図の形態であってもよく、一連の動作として説明されてもよいが、いくつかの動作は、それに従って、本明細書に示され説明されているものとは異なる順序で、および/または他の動作と同時に行われ得るため、方法は動作の順序によって限定されないことを理解および認識されたい。例えば、当業者は、方法が状態図などの一連の相互に関連する状態または事象として代替的に表され得ることを理解および認識するであろう。さらに、方法論において例示されたすべての動作が、新規な実装形態のために必要とされるわけではない。
【0087】
本明細書に含まれる説明および図は、最良の選択肢を作成および使用する方法を当業者に教示するための特定の実装形態を示す。本発明の原理を教示する目的で、いくつかの従来の態様は簡略化または省略されている。当業者は、本開示の範囲内に入るこれらの実装形態からの変形を理解するであろう。当業者はまた、上述の特徴を様々な方法で組み合わせて複数の実装形態を形成することができることを理解するであろう。結果として、本発明は、上述の特定の実装形態に限定されず、特許請求の範囲およびそれらの同等物によってのみ限定される。
図1
図2
図3
図4
図5
図6
【国際調査報告】