(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-18
(45)【発行日】2023-12-26
(54)【発明の名称】高性能のコンピューティングシステムおよび方法
(51)【国際特許分類】
G06F 9/50 20060101AFI20231219BHJP
G06F 9/54 20060101ALI20231219BHJP
【FI】
G06F9/50 150Z
G06F9/54 A
【外国語出願】
(21)【出願番号】P 2022001010
(22)【出願日】2022-01-06
(62)【分割の表示】P 2019518274の分割
【原出願日】2017-10-05
【審査請求日】2022-01-19
(32)【優先日】2016-10-05
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】507402886
【氏名又は名称】パルテック・アーゲー
【氏名又は名称原語表記】ParTec AG
【住所又は居所原語表記】Possartstr. 20, 81679 Muenchen, Germany
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】リッペルト,トーマス
【審査官】坂東 博司
(56)【参考文献】
【文献】特表2013-539881(JP,A)
【文献】米国特許出願公開第2014/0181806(US,A1)
【文献】特開2016-012347(JP,A)
【文献】特開2012-048330(JP,A)
【文献】特開2013-196206(JP,A)
【文献】特表2013-515991(JP,A)
【文献】EICKER NORBERT ET AL,The DEEP Project Pursuing Cluster-Computing in the Many-Core Era,INTERNATIONAL CONFERENCE ON PARALLEL PROCESSING,米国,IEEE,2013年10月01日,885-892,[令和5年2月8日検索],インターネット<URL:https://ieeexplore.ieee.org/document/6687429>
【文献】EICKER NORBERT ET AL,The DEEP Project An alternative approach to heterogeneous cluster-computing in the many-core Era,CONCURRENCY AND COMPUTATION:PRACTICE AND EXPERIENCE,2015年07月27日,2394-2411,[令和5年2月8日検索],インターネット<URL:https://onlinelibrary.wiley.com/doi/abs/10.1002/cpe.3562>
【文献】田中 宏明,山本 怜,大野 和彦,GPGPUフレームワークMESI-CUDAにおけるデータ再利用性を高めるスケジューラ,情報処理学会 研究報告 ハイパフォーマンスコンピューティング(HPC) 2016-HPC-155,日本,情報処理学会,2016年08月01日,1-7,[令和5年2月8日検索],インターネット<URL:https://ipsj.ixsq.nii.ac.jp/ej/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=174122&item_no=1&attribute_id=1&file_no=1&page_id=13&block_id=8>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 9/54
(57)【特許請求の範囲】
【請求項1】
アプリケーションプログラムの計算を行なうためのモジュラーコンピューティングシステムであって、
前記モジュラーコンピューティングシステムは、
少なくともクラスタモジュールとブースタモジュールとによって形成される異なるモジュールを備え、各モジュールは複数のノードを含み、
前記モジュラーコンピューティングシステムは、アプリケーション層が
前記モジュラーコンピューティングシステムのリソースにアクセスすることを可能にするモジュラーコンピューティング抽象化層をさらに備え、前記モジュラーコンピューティング抽象化層は、前記複数のノードに分散され、前記異なるモジュールの前記ノードのためにモジュール内およびモジュール間通信ならびに管理機能を提供し、
前記管理機能は、ノード管理、モジュール管理、プロセス管理、およびリソース管理を提供し、
前記モジュラーコンピューティング抽象化層は、ノード管理のために仮想ノードの概念を採用し、前記仮想ノードは実際のハードウェアを表し、前記モジュラーコンピューティング抽象化層は
前記仮想ノードと物理ノードとの間を動的に
マッピングするように適合される、モジュラーコンピューティングシステム。
【請求項2】
前記異なるモジュールは
さらに、少なくとも
、ストレージモジュールによって形成されていることを特徴とする、請求項1に記載のモジュラーコンピューティングシステム。
【請求項3】
前記モジュラーコンピューティング抽象化層は、前記ノード内に設けられたノードマネージャによって実現されることを特徴とする、請求項1または2に記載のモジュラーコンピューティングシステム。
【請求項4】
前記ノードマネージャは、管理ネットワークを介して互いに通信することを特徴とする、請求項3に記載のモジュラーコンピューティングシステム。
【請求項5】
前記複数のノードは、通信ネットワークを介して通信することを特徴とする、
請求項1~請求項4のいずれか1項に記載のモジュラーコンピューティングシステム。
【請求項6】
前記通信ネットワークは、共有メモリ通信を用いて実現されることを特徴とする、請求項5に記載のモジュラーコンピューティングシステム。
【請求項7】
ノードマネージャ間の通信は、モジュール間の通信から分離されている、請求項3に記載のモジュラーコンピューティングシステム。
【請求項8】
前記ノードマネージャは、前記ノードマネージャの各々が各ノードおよび前記ノード間の各インターコネクトのステータスについての情報のセットを維持するように情報をやり取りし、好ましくは、
前記情報のセットに応じて前記ノードにリソースを割り当てることによって
前記モジュラーコンピューティングシステムの動作を動的に調整するように前記情報のセットが用いられる、請求項3に記載のモジュラーコンピューティングシステム。
【請求項9】
前記モジュラーコンピューティング抽象化層は、1つ以上のブースタノード、または、ニューロモーフィックノード、データ解析ノード、グラフィックスノード、もしくは量子コンピューティングノード
を含むさらに特定的なノードを、それぞれのモジュールから割り当てるように適合されている、
請求項1~請求項8のいずれか1項に記載のモジュラーコンピューティングシステム。
【請求項10】
前記ノードの動的な割り当ては、将来の割り当てが相応に調整されるように、フィードバックループ登録システムの割り当て決定の広範な影響を用いてリソースの前記割り当てが行なわれることを含む、
請求項1~請求項9のいずれか1項に記載のモジュラーコンピューティングシステム。
【請求項11】
前記リソース管理は、必要な時にのみ実際に確立するオンデマンド接続を用いることにより、異なるプロセス間の接続数を減少させるように適合されている、
請求項1~請求項10のいずれか1項に記載のモジュラーコンピューティングシステム。
【請求項12】
前記リソース管理は、仮想割り当てを物理ネットワークに適用するように適合されている、
請求項1~請求項11のいずれか1項に記載のモジュラーコンピューティングシステム。
【請求項13】
前記リソース管理は、ノードが故障している場合またはノードが
前記モジュラーコンピューティングシステムに追加された場合に、前記仮想ノードと
前記物理ノードとの間のマッピングを変更するように適合されている、
請求項1~請求項12のいずれか1項に記載のモジュラーコンピューティングシステム。
【請求項14】
請求項1~請求項13のいずれか1項に記載のアプリケーションプログラムの計算を行なうためのモジュラーコンピューティングシステムを管理するための方法であって、前記モジュラーコンピューティングシステムは、異なるモジュールを備え、各モジュールは複数のノードを含み、前記モジュラーコンピューティングシステムは、前記複数のノードに分散されたモジュラーコンピューティング抽象化層を備え、前記方法は、
前記モジュラーコンピューティング抽象化層を用いて、前記異なるモジュールの前記ノードのためにノード内およびノード間通信ならびに管理機能を提供するステップ
と、前記仮想ノードと前記物理ノードとの間を動的にマッピングするステップを含む、方法。
【請求項15】
ノードマネージャをさらに備え、前記方法はさらに、 前記ノードマネージャが、前記ノードのステータスについての情報を収集し、前記収集したステータスの情報に応じて、前記ノードにリソースを割り当てるステップを含む、請求項14に記載のモジュラーコンピューティングシステムを管理するための方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、高性能のコンピューティング(HPC)の技術分野に関する。特に、本発明はヘテロジニアスコンピューティングシステムに関し、より特定的には、協働して計算タスクを処理するように自由に割り当てられ得る異なるモジュールを含むコンピューティングシステムに関する。モジュールコンピューティング抽象化層(MCAL)と呼ばれる制御エンティティが設けられる。この制御エンティティにより、異なるモジュールによって提供されるさまざまなリソースを動的に割り当てることが可能になる。本発明は、コンピューティングにおけるさまざまな要求に対する調整において柔軟性があるため、クラウドコンピューティングサービスを提供するための基礎となるシステムとしても適用可能である。クラウドコンピューティングサービスは、共有のコンピュータ処理リソースおよびデータを、要求に応じて(多くの場合、インターネットを通じて)コンピュータや他のデバイスに提供するものである。
【背景技術】
【0002】
HPCシステムの用途は、幅広い技術分野をカバーする。ほんの数例挙げてみただけでも、人間の脳のシミュレーションを始めとして、天気および気候の予測、コンピュータによる流体工学、地震学的描像、電波天文学、データ解析などがある。高性能のコンピューティングへの要求は、絶えず高まっている。
【0003】
現在主流のHPCアーキテクチャは、クラスタコンピュータおよび超並列処理(MPP)システムである。クラスタコンピュータは、標準ネットワーク技術を用いて互いに通信する複数のクラスタノードを含む。個々のクラスタノードは、既製の汎用プロセッサを備える。MPP(超並列処理)システムでは、多数のプロセッサが同時に(したがって、並列して)計算を行なう。それらもまた、通常は既製の汎用プロセッサを使用する。しかしながら、プロセッサは、通信のために専有のネットワーク技術および個別的に適合されたソフトウェアを使用する傾向にある。
【0004】
より高い計算能力への強い要求を満たすために、コンピュータクラスタ内のクラスタノードの数、およびMPPシステム内のプロセッサの数が近年大幅に増加した。しかしながら、既製の汎用プロセッサを用いてシステム内での数を増やすだけでは解決策にならないことも分かってきた。
【0005】
既製の汎用プロセッサにも、もちろんプラスの側面はある。それらの単一スレッド性能は高い。マルチコアプロセッサの場合、それらは、プロセッサまたはコア1つ当たり大容量のメモリを有する。標準プログラミングを使用することができるため、これらのシステムにアプリケーションを移植することが容易である。しかしながら、この技術は、限界に達しつつある。既製の汎用プロセッサに関して、そのクロック速度(頻度)は、この10年で実際的には増加していない。このことは、特にシステムの冷却に関して限界とならないように、チップ1つ当たりのエネルギ消費が100ワットを大きく超えるべきではないということに密接に関係している。さらに、それらのプロセッサは比較的高価であり、かつエネルギ効率が低い。
【0006】
解決策は、アクセラレータを採用することに見出された。アクセラレータを用いることによって、非常にスケーラブルなアプリケーションの部分を計算することができる。アプリケーションが費用効果の高い方法で多くのリソースを追加することによって高負荷を処理することができる場合、そのアプリケーションは非常にスケーラブルであると言える。コードにおける並列して計算することのできないシーケンシャル部分が、通常、スケーラ
ビリティへの最も重大な制約要因のうちの1つである。
【0007】
2種類以上のプロセッサを用いたシステムは、ヘテロジニアスコンピュータシステムと呼ばれる。異なるアクセラレータは、汎用プロセッサ、具体的には、メニーコアプロセッサおよびGPU(グラフィックス・プロセッシング・ユニット)と組み合わせて使用され得る。メニーコアプロセッサは、50以上のコアを有する。GPUは、何百個もの単純なコンピューティングコアを有する。これらのタイプのプロセッサは、ともにエネルギ効率が良い。
【0008】
ヘテロジニアスコンピュータシステムでは、各クラスタノードが、1つ以上のマルチコアプロセッサまたはGPUによって形成されるアクセラレータを備える。アクセラレータは、基本的には、クラスタノードのプライマリープロセッサの機能を補うコプロセッサとして機能する。クラスタノードは、コンポーネント同士がインターコネクトスイッチを通じてデータを伝送し合うファブリックを介して通信する。「ファブリック」という用語は、高性能のコンピューティングの分野では、システムトポロジーを意味するために使用される。また、インターコネクトという用語は、クラスタノード間の通信インフラストラクチャについて使用され、別々のデバイスを接続する電気的または光学的な接続またはケーブルを意味する。各ノードにアクセラレータを取り付けることの大きな問題は、割り当てが静的であることである。汎用プロセッサとGPUとの比は、システムの設計時に固定される。
【0009】
国際出願WO2012-049247A1は、コンピュータクラスタ配列、および、当該紹介されたコンピュータクラスタ配列を動作させるための方法によって、上記欠点に取り組んでいる。このコンピュータクラスタ配列は計算ノードCNを備える。これにより、ブースタBに対する特定の計算タスクを動的に外部調達している。このように、計算ノードCNへのブースタBの割り当て手法が紹介されている。割り当ては、実行時に動的に行なわれる。このアーキテクチャでは、ブースタを形成するクラスタノードおよびアクセラレータノードが1つのファブリックに入る。これは、加速クラスタノードと比較して、より柔軟性がある。なぜなら、プロセスの開始時に、加速処理のためにブースタをクラスタノードに割り当てることができるからである。この配列については、Norbert Eicker等による「メニーコア時代におけるクラスタコンピューティングを追究するDEEPプロジェクト(The DEEP project Pursuing cluster-computing in the many-core era)」、第42回並列処理に関する国際会議(International Conference on Parallel Processing)
、885~892頁、2013年、および、「メニーコア時代におけるヘテロジニアスクラスタコンピューティングへの代替アプローチであるDEEPプロジェクト(The DEEP Project An alternative approach to heterogeneous cluster-computing in the many-core era)」、同時実行および計算:実践と経験(Concurrency and Computation: Practice and Experience)、28、2394~2411頁、2015年にさらに記載されている。
【0010】
1つのアプリケーションがクラスタブースタ型などのヘテロジニアスシステムによって計算されるとき、個々の計算タスクは、複数の異なるクラスタノード上で処理される必要があるだけでなく、2つの異なるアーキテクチャ、すなわち、コンピュータクラスタ上およびアクセラレータ上で処理される必要がある。クラスタコンピュータ内、およびブースタ内、さらには、クラスタコンピュータとブースタとの間において、効率的な通信が確保されなければならない。さらに、個々のパーツの信頼性が高い場合であっても、コンポーネント数の増加によってコンポーネントが故障するリスクが生じる。したがって、システムは、高い回復力、すなわち、個々のコンポーネントの故障への耐性を確保しつつ、機能性も保つ必要がある。
【発明の概要】
【課題を解決するための手段】
【0011】
本発明は、モジュラーコンピューティングシステムを提供する。モジュラーコンピューティングシステムは、クラスタモジュール、ブースタモジュール、ストレージモジュール、ニューロモーフィックモジュール、データ解析モジュール、グラフィックスモジュール、量子コンピューティングモジュールなどの異なるモジュールを含む。各モジュールは、複数のノードを含み得る。クラスタモジュールは複数のクラスタノードを含み、ブースタモジュールは複数のブースタノードを含み、ストレージモジュールは複数のストレージノードを含む。その他同様である。
【0012】
個々のノードは、すべて1つのファブリックに接続されている。異なるモジュールは異なるインターコネクトを有してもよい。クラスタモジュールは、例えばインフィニバンドインターコネクトを使用する。一方、ブースタモジュールは、特殊インターフェースノードを介してインフィニバンドインターコネクトに接続されたインテルOmni-Pathファブリックを使用する。同じことが、他のタイプのモジュールについても当てはまる。
【0013】
異なるモジュールを結合して1つのシステムとするために、モジュラーコンピューティング抽象化層(MCAL)が設けられる。MCALは、通信機能および管理機能を提供する。Par Tec Cluster Competence Center社によるPara Stationを使用すれば、以下で説
明する機能および特性を有するMCALを実現するための基盤を形成することができる。
【0014】
MCALは、モジュール内での通信(モジュール内通信と呼ぶ)と、モジュール間の通信(モジュール間通信と呼ぶ)とを可能にする。そのために、MCALは、それぞれのファブリックにインターフェースを提供する。例えば、システム全体に対してファブリックが1つの場合もあるし、または、モジュール毎にファブリックが特化されている場合もある(例えば、クラスタモジュールにはインフィニバンド、ブースタモジュールにはインテルOmni-Pathファブリック、など)。イーサネット(登録商標)、10G、ギガビット、または共有メモリ通信など、他のインターコネクトも可能である。MCALは、如何なる種類の通信を用いてもよく、可用性、アプリケーションプログラムによる指示、性能、またはコストなどの要素に基づいて、特定の通信方法を選択する。
【0015】
共有メモリ通信は、2つ以上のプロセスが通信するための非常に高速かつ効率的な方法を提供する。異なるタイプの共有メモリ通信が、MCALによって採用され得る。共有メモリを有する同じ物理ノード上で並列タスクの2つ以上のプロセスが実行される場合、これらのプロセス間の共有メモリ通信のために、この共有メモリが使用され得る。これは、典型的には、CPU1つ当たり1つのプロセスが生成されるSMPノード上で起こり得る。対称型マルチプロセッシング(SMP)は、2つ以上の同一のプロセッサが単一の共有メインメモリに接続しているアーキテクチャを意味する。MCALはプロセスについての知識、および、どのノードでプロセスが行なわれているかについての知識を有しているため、MCALは、そのような状況で共有メモリ通信を確立することができる。
【0016】
しかしながら、共有メモリ通信はSMP状況に限定されない。プロセスが1つのモジュール内の異なるノード上で実行される場合、または、異なるモジュールに属するノード上で実行される場合であっても、MCALは、共有の仮想アドレス空間通信を確立する。共有の仮想アドレス空間通信を用いると、メッセージのメタデータおよびデータ自体の仮想アドレスを共有するだけで、サイズの大きなメッセージをノード間で伝達することができる。実際のメッセージは、プロセスにより、その割り当てられた仮想アドレス空間を介してアクセス可能である。したがって、高速通信が可能である。MCALは、通信に関係するプロセスまたはノードによって直接共有されるメモリ領域を設けることによって、仮想アドレス空間通信を確立する。
【0017】
上記の例から分かるように、MCALは、通信機能を提供するだけでなく、通信方法を選択し、それによって性能および効率を向上させる。MCALは、例えば、プロセスを生成しながら、すなわち、新たな子プロセスを作成および実行しながら、どのインターコネクトが通信に使用可能かを決定することができる。同時に、MCALは、現在行なわれているプロセスを監視し、子プロセスを見つけて終了させるか、または非同期的に実行し続け得る。
【0018】
MCALが提供する第2の主要な機能は、管理である。管理機能は、さまざまな局面、具体的には、ノード管理、モジュール管理、プロセス管理、およびリソース管理をカバーする。
【0019】
ノード管理は、個々のノードを対象とする。例えば、クラスタモジュールにおけるクラスタノード、ブースタモジュールにおけるブースタノード、ストレージモジュールにおけるストレージノードなどであり、上で挙げたようなシステム内に存在する他のタイプのモジュールに関しても同様である。初めに、MCALは使用可能なノードを検出する。使用可能なノードとは、使用できる状態にあるノードのことである。これは、例えば、温度、メモリの空き容量など、および、それらの特性の経時的な変化などのシステムパラメータに基づいて、MCALが、正常に機能していないノードまたは故障寸前のノードを特定するように構成されていることを含む。したがって、MCALはフォールトトレランスを実現し、それによって高い回復力を確保している。
【0020】
これは、MCALが仮想ノードの概念を採用することによって実現する。仮想ノードは、クラスタノード、ブースタノード、ストレージノードなどの実際のハードウェアを表わすものであるが、MCALは、自由に動的にノードをマップすることができる。例えば、アプリケーションにおいてX個のクラスタノード、Y個のブースタノード、およびZ個のストレージノード(X、Y、Zは整数)が必要である場合、MCALは、すべての利用可能なリソースの中からそれらのノードを提供することができる。ノードが故障している場合、または、ノードがシステムに追加された場合には、MCALは、仮想ノードと物理ノードとの間のマッピングを変更するだけで、迅速に反応することができる。利用可能なノードのリストの中から正常に機能していないノードを取り出すことができ、システム全体が機能不全に陥ることがない。
【0021】
また、MCALは、到達可能性、レイテンシ、または物理的配置などの要因に応じて、特定のノードを選択することもできる。これは、実行中のアプリケーションに完全に透過的に行なわれ得る。
【0022】
MCALは、システム全体を見渡し、各ノードおよび各インターコネクトの状態を絶えず最新の状態に維持している。MCALは、ノード1つ当たり利用可能なCPUの数、実行中のサービス、利用可能なストレージ、インターコネクト帯域幅、空きメモリ、温度、システムクロック速度などの、各ノードおよび各インターコネクトの特定の特性について、常時通知される。
【0023】
もう一つの機能は、モジュール管理である。モジュール管理は、ノード管理に類似しており、特定のモジュールについてのノード管理を含み得るが、モジュールに特有の側面を考慮する。モジュール管理は、モジュールが他のモジュールと通信するために用いるインターフェースノード(設けられる場合)の状態など、モジュールに特有の側面に焦点を当てる。ノードと同様に、MCALは、モジュールの利用増大を可能にするために、モジュールの状態を監視する。
【0024】
MCALは、プロセス管理も担う。実行中のアプリケーションの各々は、複数の個々のプロセスに分割される。複数の個々のプロセスは、開始、分散、および監視する必要がある。同時に、リソースを割り当てる必要がある。これは、プロセスが計算能力およびストレージを必要とすることに対応する。プロセスが特定の処理を必要とする場合、MCALは、1つ以上のブースタノード、または、ニューロモーフィックノード、データ解析ノード、グラフィックスノード、または、量子コンピューティングノードなどのさらに特定的なノードを、それぞれのモジュールから割り当てる。
【0025】
そのために、MCALは、プロセスとその要件との間の依存を認識および制御するように構成されている。これに基づいて、MCALは、ブースタモジュールまたはクラスタモジュールの場合にはノード上にプロセスを作成し、または、ストレージモジュールの場合にはストレージを割り当てる。プロセスは監視され、依存プロセスはグループとして扱われる。これにより、並列タスクのうちのいずれか1つで発生するエラーに迅速に応答することが可能である。したがって、プロセスを速やかに再開させることができ、その結果、実行中のアプリケーションの全体の遅延を最小限に抑えることができる。
【0026】
リソース管理は、MCALがモジュラーコンピューティングシステムにおいて行なうもう一つのタスクである。リソース管理の一部として、MCALは、オフロード機構を実現する。すなわち、例えばクラスタモジュール上で実行中のプロセスは、ブースタモジュール中のいくつかのブースタノードを必要とし得る。そのような場合には、MCALは、タスクを並列して実行するために、選択されたブースタノード上にプロセスを生成することができる。
【0027】
オフロードの一部として、1つのブースタ上で実行されるように作成されるプロセスは、1つだけでなく複数であってもよい。複数のプロセスは、ホストプロセッサの介入を必要とせずに、モジュール通信ファブリックを用いて互いに直接通信する。
【0028】
また、リソース管理は、例えば異なるプロセス間の接続数を減少させることによって、メモリ消費を低減することも保証する。これは、必要な時にのみ実際に確立するオンデマンド接続を用いることによって行なわれる。これにより、接続1つ当たりのメモリ消費が劇的に低減される。したがって、ノードなどのリソースは仮想的に扱われるだけでなく、仮想割り当ては物理ネットワークにも適用される。
【0029】
リソースを割り当てる際に、MCALは、1つのプロセスのリクエストを考慮するだけでなく、他のプロセスのリクエストも考慮する。これにより、統合制御に基づいて通信インフラストラクチャの変更に柔軟に応答することができる。
【0030】
統合制御は、MCALによって提供されるもう一つの機能局面である。統合制御は、MCALが、管理機能から収集した情報を用いて通信を制御すること(およびその逆)を意味する。このように、通信機能と管理機能とは別個のものではなく、システム性能全体をさらに最適化するために統合されたものである。
【0031】
すべてのモジュールにおけるすべてのノードのすべての異なる局面、ならびにすべてのインターコネクト、モジュール内通信、およびモジュール間通信のステータスについてのMCALの知識を用いて、システムを作動させる。これにより、システムの挙動の変更、および、システム上で実行中のアプリケーションの要求の変更に対する動的な調整が可能になる。
【0032】
統合制御は、実際のシステム状態およびアプリケーション要求を考慮するだけでなく、次に起こるモジュールのリクエストまたはインターコネクト使用の予測も行なう。
【0033】
システム状態の情報は、ノードの動的な割り当てのために用いられる。これは、フィードバックループ登録システムの割り当て決定の広範な影響を用いてリソースの割り当てが行なわれることを含む。その結果、将来の割り当てが相応に調整される。また、システムは、自己学習の方法で、そのような情報を記憶することによって将来のケースの割り当て決定を向上させる。
【0034】
アプリケーションの主要部分が通常はクラスタモジュールで開始されるとしても、MCALは、クラスタモジュールまたはブースタモジュール上でアプリケーションのどの部分を実行させるかを特定する。決定の根拠は、例えば、実行中のコード性能の監視結果をアプリケーションコード自体で示すものである。これにより、アプリケーションのコンピューティング中に割り当てを調整することができる。
【0035】
MCALの実現例としては、MCALは、システム全体にわたって分散されている。MCALは、各ノード上に実装されるノードマネージャ(NM)を含む。ノードマネージャはハードウェアで実現されてもよく、またはソフトウェアで実現されてもよく、例えば、それぞれのノード上で実行されるデーモンプロセスとして実現されてもよい。ノードマネージャは、モジュールおよびシステム全体を大域的に見るために、絶えず情報を収集する。システム上で実行中のアプリケーションは、管理機能と通信することによって、または個々のノードマネージャと直接通信することによって、この情報を活用することができる。これは特定のインターフェースによって実現される。この特定のインターフェースは、ハードウェアであってもよいし、API(アプリケーションプログラミングインターフェース)であってもよい。このように、MCALがアプリケーションから入力を得るだけでなく、アプリケーションも、MCALによって収集された情報を個々のノードマネージャを介して活用する。
【0036】
ノードマネージャの通信トラフィックは、モジュール内およびモジュール間通信から厳密に分離されている。これにより、モジュール内およびモジュール間通信は、管理機能によって中断されることなく高速で実行される。さらに、このような分離によって、システムセキュリティを高めることができる。
【0037】
実際の通信ネットワークの使用は、MCALによって制御される。MCALは、この機能をメッセージパッシングインターフェース(MPI)を介してアプリケーションに提供する。MCALの一部は、モジュール毎のMPIスタックであるとともに、システム全体に及ぶグローバルMPIである。個々のMPIは、例えば、コンピュータクラスタモジュール、ブースタモジュール、ストレージモジュールなどについて実現される。
【0038】
MCALの通信は、管理ネットワークを用いる。管理ネットワークは、モジュール内およびモジュール間通信に用いられる物理ネットワークと同じ物理ネットワークであってもよいし、異なる物理ネットワークであってもよい。例えば、モジュール内およびモジュール間通信は、インフィニバンド、ミリネットなどであってもよく、管理ネットワークは、ノードマネージャを接続するイーサネットによって形成されてもよい。
【0039】
システムには、管理タスクまたは制御機能がシステムを作動させることを可能にするフロントエンドを提供するための特殊ノードが含まれてもよい。フロントエンドが通信ネットワークに接続されることは必要ではないが、通信ネットワークへだけ接続されている。例えばワークステーションコンピュータ、パーソナルコンピュータ(PC)、ラップトップコンピュータ、または任意のスマートコンピューティングデバイスによって形成され得るフロントエンドノードを介して、モジュラーコンピューティングシステムは管理され得る。モジュラーコンピューティングシステム上で実行中のアプリケーションは、スケジュ
ール、開始、停止、および監視され得る。これは、バッチ処理によって行なわれ得る。すなわち、手動による介入なく、したがって非対話方式で、モジュラーコンピューティングシステム上で一連のジョブを実行することによって行なわれ得る。
【0040】
手動による介入なくモジュラーコンピューティングシステム上で一連のジョブを実行することに加えて、MCALは、対話型コンピューティングを提供し得る。対話型コンピューティングでは、モジュラーコンピューティングシステム上で実行中のアプリケーションが、その実行中に人からの入力を受け付ける。この入力は、ワークステーションコンピュータ、パーソナルコンピュータ(PC)、ラップトップコンピュータ、または任意のスマートコンピューティングデバイスを介して提供され得る。そのようなシナリオでは、例えばラップトップコンピュータを介してモジュラーコンピューティングシステムにアクセスし、ラップトップコンピュータがモジュラーコンピューティングシステムの計算能力を有しているかのように見せることができる。これは、即時または現在進行中であるとユーザが感じるような時間枠内での応答が必要なリアルタイムのアプリケーションに非常に有用である。また、膨大な量の構造化データ、半構造化データ、および非構造化データを情報のマイニングのためにアクセス可能にするビッグデータアプリケーションにおいても、そのような配列を利用することができる。これは、計算能力およびストレージを提供するための基礎となるリソースとしてモジュラーコンピューティングシステムを有するクラウドコンピューティングサービスにも当てはまる。
【発明の効果】
【0041】
上述のモジュラーコンピューティングシステムにおいて、MCALとシステムとが強固に統合されることによって、通信レイテンシが低減され、通信を向上させることができる。
【図面の簡単な説明】
【0042】
【
図1】本発明に従うモジュラーコンピューティングシステムの機能図である。
【
図2】本発明に従うモジュラーコンピューティングシステムの第1の実施形態を示す図である。
【
図3】本発明に従うモジュラーコンピューティングシステムの第2の実施形態を示す図である。
【発明を実施するための形態】
【0043】
図1は、本発明に従うモジュラーコンピューティングシステム100の機能図である。アプリケーション層110がモジュラーコンピューティングシステムの最上部を形成する。モジュラーコンピューティングシステム100において、アプリケーション層では、ソフトウェアプログラムなどのアプリケーションプログラムが実行され得る。アプリケーション層110がシステムのリソースにアクセスすることを可能にするために、モジュラーコンピューティング抽象化層120(MCAL)が設けられる。システムのリソースは、クラスタモジュール130、ブースタモジュール140、ストレージモジュール150、データ解析モジュール160、および他のモジュール170、例えば、ニューロモーフィックモジュール、グラフィックスモジュール、および量子コンピューティングモジュールからなるグループのうちの1つ以上など、さまざまなモジュールによって形成される。同じ種類のモジュールを複数有することも可能である。
【0044】
MCAL120は、モジュール内での通信(モジュール内通信と呼ぶ)と、モジュール間の通信(モジュール間通信と呼ぶ)とを可能にする。MCAL120は、如何なる種類の通信を用いてもよく、可用性、アプリケーションプログラムによる指示、性能、またはコストなどの要素に基づいて、特定の通信方法を選択する。
【0045】
さらに、MCAL120は管理機能を提供する。管理機能は、さまざまな局面、具体的には、ノード管理、モジュール管理、プロセス管理、およびリソース管理をカバーする。ノード管理は、個々のノードを対象とするものであり、
図2および
図3を参照して、さらに説明する。
【0046】
MCAL120は、システム全体を見渡し、モジュール130、140、150、160、および170の各々の状態を絶えず最新の状態に維持している。MCAL120は、利用可能なプロセッサの数、実行中のサービス、利用可能なストレージ、インターコネクト帯域幅、空きメモリ、温度、システムクロック速度などの、モジュール130、140、150、160、および170の特定の特性について、常時通知される。MCAL120が提供するもう一つの機能は、モジュール管理である。モジュール管理は、モジュールに特有の側面を考慮する。したがって、MCALは、クラスタモジュール130、ブースタモジュール140、ストレージモジュール150、データ解析モジュール160、および他のモジュール170を管理するように特別に適合された機能を含む。MCAL120は、プロセス管理も担う。実行中のアプリケーション110の各々は、複数の個々のプロセスに分割される。複数の個々のプロセスは、開始、分散、および監視する必要がある。同時に、リソースを割り当てる必要がある。これは、プロセスが計算能力およびストレージを必要とすることに対応する。プロセスが特定の処理を必要とする場合、MCAL120は、1つ以上のブースタノード、または、ニューロモーフィックノード、データ解析ノード、グラフィックスノード、または、量子コンピューティングノードなどのさらに特定的なノードを、それぞれのモジュールから割り当てる。そのために、MCAL120は、プロセスとその要件との間の依存を認識および制御するように構成されている。リソース管理は、MCAL120がモジュラーコンピューティングシステムにおいて行なうもう一つのタスクである。リソース管理の一部として、MCAL120は、オフロード機構を実現する。すなわち、例えばクラスタモジュール130上で実行中のプロセスは、ブースタモジュール140中のいくつかのブースタノードを必要とし得る。そのような場合には、MCAL120は、タスクを並列して実行するために、ブースタモジュール140から選択されたブースタノード上にプロセスを生成することができる。
【0047】
統合制御は、MCAL120によって提供されるもう一つの機能局面である。統合制御は、MCAL120が、管理機能から収集した情報を用いて通信を制御すること(およびその逆)を意味する。このように、通信機能と管理機能とは別個のものではなく、システム性能全体をさらに最適化するために統合されたものである。これにより、システムの挙動の変更、および、システム上で実行中のアプリケーションの要求の変更に対する動的な調整が可能になる。統合制御は、実際のシステム状態およびアプリケーション要求を考慮するだけでなく、次に起こるモジュールのリクエストまたはインターコネクト使用の予測も行なう。
【0048】
図2は、本発明に従うモジュラーコンピューティングシステム200の第1の実施形態を示す。モジュラーコンピューティングシステム200は、クラスタモジュール202と、ブースタモジュール204と、ストレージモジュール206とを含む。
【0049】
クラスタモジュール202は、複数のクラスタノード208(CN)を含む。各クラスタノード208上には、ノードマネージャ209(NM)が設けられる。ノードマネージャ209(NM)は、他のノードマネージャ209と協働して、モジュラーコンピューティングシステム200に通信機能および管理機能を提供する。ブースタモジュール204は、複数のブースタノード210(BN)を含む。各ブースタノード210上には、ノードマネージャ209が設けられる。ノードマネージャ209は、他のノードマネージャ209と協働して、モジュラーコンピューティングシステム200に通信機能および管理機能を提供する。ストレージモジュール206は、複数のストレージノード212(SN)
を含む。各ストレージノード212上には、ノードマネージャ209が設けられる。ノードマネージャ209は、他のノードマネージャ209と協働して、モジュラーコンピューティングシステム200に通信機能および管理機能を提供する。
【0050】
クラスタノードは、汎用マイクロプロセッサ(例えば、インテルXeonプロセッサ)、メモリ、インターフェース(例えば、ネットワークカード)を有するコンピュータによって形成され得る。ブースタノードは、GPUまたはメニーコアプロセッサ、メモリ、および、インターフェース(例えば、ネットワークカード)を備える処理システムによって形成され得る。ストレージノードは、RAM(ランダムアクセスメモリ)、不揮発性メモリ(例えば、フラッシュメモリ)、SSD(ソリッドステートディスク)、ハードディスクなどであり得るメモリを含む。さらに、ストレージノードは、ノードコントローラ(例えば、マイクロプロセッサ)、およびインターフェース(例えば、ネットワークカード)を含む。
【0051】
2つの異なるネットワーキングインフラストラクチャが設けられる。1つ目は、クラスタノード208、ブースタノード210、およびストレージノード212が通信可能になるように、すべてのノード208、210、212を互いに接続する通信ネットワーク220である。
【0052】
2つ目は、さまざまなノード208、210、および212において設けられたすべてのノードマネージャ209を接続するように提供される管理ネットワーク224である。モジュラーコンピューティングシステム全体の制御を可能にするフロントエンド230が、管理ネットワーク224に取り付けられている。フロントエンド230もまた、ノードマネージャ209を含む。このノードマネージャ209は、他のノードマネージャ209への実際の通信を行なう。
【0053】
異なるモジュールを結合して1つのシステムとするために、
図1を参照して説明したモジュラーコンピューティング抽象化層(MCAL)が設けられる。MCALは、通信機能および管理機能を提供する。Par Tec Cluster Competence Center社によるPara Station
を使用すれば、本明細書で説明する機能および特性を有するMCALを実現するための基盤を形成することができる。
【0054】
MCALは、個々のノード上のノードマネージャ209によって実現され、モジュール内での通信(モジュール内通信と呼ぶ)と、モジュール間の通信(モジュール間通信と呼ぶ)とを可能にする。そのために、ノードマネージャは、それぞれのファブリックにインターフェースを提供する。例えば、システム全体に対してファブリックが1つの場合もあるし、または、モジュール毎にファブリックが特化されている場合もある(例えば、クラスタモジュール202にはインフィニバンド、ブースタモジュール204にはインテルOmni-Pathファブリック、など)。イーサネット、10G、ギガビット、または共有メモリ通信など、他のインターコネクトも可能である。ノードマネージャ309は、如何なる種類の通信を用いてもよく、可用性、アプリケーションプログラムによる指示、性能、またはコストなどの要素に基づいて、特定の通信方法を選択する。
【0055】
共有メモリ通信および共有の仮想アドレス空間通信が採用されてもよい。これらは、2つ以上のプロセスが通信するための非常に高速かつ効率的な方法を提供する。
【0056】
ノードマネージャ209は、一括してノード管理を提供する。ノード管理は、個々のノードを対象とする。例えば、クラスタモジュール202におけるクラスタノード208、ブースタモジュール204におけるブースタノード210、ストレージモジュール206におけるストレージノード212などである。
【0057】
さらに、ノードマネージャ209は、到達可能性、レイテンシまたは物理的配置などの要因に応じて、特定のノードを選択する。これは、実行中のアプリケーションに完全に透過的に行なわれ得る。ノードマネージャ209は、システム全体についての情報を収集およびやり取りし、各ノードおよび各インターコネクトの状態を絶えず最新の状態に維持している。これにより、ノードマネージャ309は、ノード1つ当たり利用可能なCPUの数、実行中のサービス、利用可能なストレージ、インターコネクト帯域幅、空きメモリ、温度、システムクロック速度などの、各ノードおよび各インターコネクトの特定の特性について、常時通知される。
【0058】
ノードマネージャによって実施されるもう一つの機能は、モジュール管理である。モジュール管理は、ノード管理に類似しており、特定のモジュールについてのノード管理を含み得るが、モジュールに特有の側面を考慮する。モジュール管理は、モジュールが他のモジュールと通信するために用いるインターフェースノード(設けられる場合)の状態など、モジュールに特有の側面に焦点を当てる。ノードと同様に、ノードマネージャ309は、モジュールの利用増大を可能にするために、モジュールの状態を監視する。
【0059】
リソース管理は、ノードマネージャ209がモジュラーコンピューティングシステム200において行なうもう一つのタスクである。リソース管理の一部として、ノードマネージャ209は、オフロード機構を実現する。すなわち、例えばクラスタモジュール202上で実行中のプロセスは、ブースタモジュール204中のいくつかのブースタノード210を必要とし得る。そのような場合には、ノードマネージャは、タスクを並列して実行するために、選択されたブースタノード210上にプロセスを生成することができる。
【0060】
統合制御は、ノードマネージャによって実施されるもう一つの機能局面である。統合制御は、ノードマネージャが、管理機能から収集した情報を用いて通信を制御すること(およびその逆)を意味する。このように、通信機能と管理機能とは別個のものではなく、システム性能全体をさらに最適化するために統合されたものである。
【0061】
すべてのモジュールにおけるすべてのノードのすべての異なる局面、ならびにすべてのインターコネクト、モジュール内通信、およびモジュール間通信のステータスについてのノードマネージャ209の知識を用いて、システムを作動させる。これにより、システムの挙動の変更、および、システム上で実行中のアプリケーションの要求の変更に対する動的な調整が可能になる。
【0062】
統合制御は、実際のシステム状態およびアプリケーション要求を考慮するだけでなく、次に起こるモジュールのリクエストまたはインターコネクト使用の予測も行なう。
【0063】
ノードマネージャ209はハードウェアで実現されてもよく、またはソフトウェアで実現されてもよく、例えば、それぞれのノード上で実行されるデーモンプロセスとして実現されてもよい。ノードマネージャ209は、モジュールおよびシステム全体を大域的に見るために、絶えず情報を収集する。システム上で実行中のアプリケーションは、管理機能と通信することによって、または個々のノードマネージャ209と直接通信することによって、この情報を活用することができる。これは、特定のインターフェースによって実現される。この特定のインターフェースは、ハードウェアであってもよいし、API(アプリケーションプログラミングインターフェース)であってもよい。
【0064】
ノードマネージャ209の通信トラフィックは、モジュール内およびモジュール間通信から厳密に分離されている。これにより、モジュール内およびモジュール間通信は、管理機能によって中断されることなく高速で実行される。さらに、このような分離によって、
システムセキュリティを高めることができる。
【0065】
実際の通信ネットワーク220の使用は、ノードマネージャ209によって制御される。ノードマネージャ209は、この機能をメッセージパッシングインターフェース(MPI)を介してアプリケーションに提供する。
【0066】
ノードマネージャ209は、管理ネットワーク224を用いて互いに通信する。管理ネットワーク224は、モジュール内およびモジュール間通信に用いられる物理ネットワーク(ここでは、通信ネットワーク220と称する)と同じ物理ネットワークであってもよいし、異なる物理ネットワークであってもよい。例えば、モジュール内およびモジュール間通信は、インフィニバンド、ミリネットなどであってもよく、管理ネットワークは、ノードマネージャ209を接続するイーサネットによって形成されてもよい。
【0067】
システムには、管理タスクまたは制御機能がシステムを作動させることを可能にするフロントエンド230を提供するための特殊ノードが含まれてもよい。フロントエンドが通信ネットワーク220に接続されることは必要ではないが、通信ネットワーク220へだけ接続されている。例えばワークステーションコンピュータ、パーソナルコンピュータ(PC)、ラップトップコンピュータ、または任意のスマートコンピューティングデバイスによって形成され得るフロントエンドノードを介して、モジュラーコンピューティングシステム200は管理され得る。モジュラーコンピューティングシステム200上で実行中のアプリケーションは、スケジュール、開始、停止、および監視され得る。これは、バッチ処理によって行なわれ得る。すなわち、手動による介入なく、したがって非対話方式で、モジュラーコンピューティングシステム200上で一連のジョブを実行することによって行なわれ得る。
【0068】
手動による介入なくモジュラーコンピューティングシステム200上で一連のジョブを実行することに加えて、ノードマネージャ309は、対話型コンピューティングを提供し得る。対話型コンピューティングでは、モジュラーコンピューティングシステム200上で実行中のアプリケーションが、その実行中に人からの入力を受け付ける。この入力は、ワークステーションコンピュータ、パーソナルコンピュータ(PC)、ラップトップコンピュータ、または任意のスマートコンピューティングデバイスを介して提供され得る。そのようなシナリオでは、例えばラップトップコンピュータを介してモジュラーコンピューティングシステム200にアクセスし、ラップトップコンピュータがモジュラーコンピューティングシステム200の計算能力を有しているかのように見せることができる。これは、即時または現在進行中であるとユーザが感じるような時間枠内での応答が必要なリアルタイムのアプリケーションに非常に有用である。また、膨大な量の構造化データ、半構造化データ、および非構造化データを情報のマイニングのためにアクセス可能にするビッグデータアプリケーションにおいても、そのような配列を利用することができる。これは、計算能力およびストレージを提供するための基礎となるリソースとしてモジュラーコンピューティングシステム200を有するクラウドコンピューティングサービスにも当てはまる。
【0069】
図3は、本発明に従うモジュラーコンピューティングシステム300の第2の実施形態を示す。モジュラーコンピューティングシステム300は、クラスタモジュール302と、ブースタモジュール304と、ストレージモジュール306とを含む。
【0070】
クラスタモジュール302は、複数のクラスタノード310(CN)を含む。各クラスタノード310上には、ノードマネージャ309(NM)が設けられる。ノードマネージャ309(NM)は、他のノードマネージャ309と協働して、モジュラーコンピューティングシステム300に通信機能および管理機能を提供する。クラスタノード310は、
クラスタインターコネクト312を介して互いに接続されている。
【0071】
ブースタモジュール304は、複数のブースタノード320(BN)を含む。各ブースタノード320上には、ノードマネージャ309が設けられる。ノードマネージャ309は、他のノードマネージャ309と協働して、モジュラーコンピューティングシステム300に通信機能および管理機能を提供する。ブースタノード320は、ブースタインターコネクト322を介して互いに接続されている。
【0072】
ストレージモジュール306は、複数のストレージノード330(SN)を含む。各ストレージノード330上には、ノードマネージャ309が設けられる。ノードマネージャ309は、他のノードマネージャ309と協働して、モジュラーコンピューティングシステム300に通信機能および管理機能を提供する。ストレージノード330は、ストレージインターコネクト332を介して互いに接続されている。
【0073】
クラスタノードは、汎用マイクロプロセッサ(例えば、インテルXeonプロセッサ)、メモリ、インターフェース(例えば、ネットワークカード)を有するコンピュータによって形成され得る。ブースタノードは、GPUまたはメニーコアプロセッサ、メモリ、および、インターフェース(例えば、ネットワークカード)を備える処理システムによって形成され得る。ストレージノードは、RAM(ランダムアクセスメモリ)、不揮発性メモリ(例えば、フラッシュメモリ)、SSD(ソリッドステートディスク)、ハードディスクなどであり得るメモリを含む。さらに、ストレージノードは、ノードコントローラ(例えば、マイクロプロセッサ)、およびインターフェース(例えば、ネットワークカード)を含む。
【0074】
クラスタモジュール302は、クラスタインターコネクト312とストレージインターコネクト332とを接続するインターフェースノード340を介して、ストレージモジュール306と通信可能である。ストレージモジュール306は、ストレージインターコネクト332とブースタインターコネクト322とを接続するインターフェースノード342を介して、ブースタモジュール304と通信可能である。ブースタモジュール304は、ブースタインターコネクト322とクラスタインターコネクト312とを接続するインターフェースノード344を介して、クラスタモジュール302と通信可能である。
【0075】
クラスタモジュール302は、例えばインフィニバンドインターコネクトを使用する。一方、ブースタモジュール304は、インターフェースノード344を介してインフィニバンドインターコネクトに接続されたインテルOmni-Pathファブリックを使用する。性能およびスループットを向上させるために、各インターフェースノードは複数のノードによって形成されてもよい。同じことが、他のタイプのモジュールについても当てはまる。
【0076】
さまざまなノード310、310、312において設けられたすべてのノードマネージャ309は、同じ通信インフラストラクチャを使用する。モジュラーコンピューティングシステム全体の制御を可能にするフロントエンド350が、クラスタインターコネクト312に取り付けられている。フロントエンド350もまた、ノードマネージャ309を含む。このノードマネージャ309は、他のノードマネージャ309への実際の通信を行なう。
【0077】
異なるモジュールを結合して1つのシステムとするために、
図1を参照して説明したモジュラーコンピューティング抽象化層(MCAL)が設けられる。MCALは、通信機能および管理機能を提供する。Par Tec Cluster Competence Center社によるPara Station
を使用すれば、以下で説明する機能および特性を有するMCALを実現するための基盤を
形成することができる。
【0078】
MCALは、各ノードにおいてノードマネージャ309によって実現される。プロセス間の通信のために、提供される如何なる種類の通信リンクを用いてもよい。
【0079】
前述のように、ノードマネージャ309はノード管理も提供する。ノード管理は、個々のノードを対象とする。例えば、クラスタモジュール302におけるクラスタノード310、ブースタモジュール304におけるブースタノード320、ストレージモジュール306におけるストレージノード330などである。また、ノードマネージャ309は、到達可能性、レイテンシ、または物理的配置などの要因に応じて、特定のノードを選択することもできる。これは、実行中のアプリケーションに完全に透過的に行なわれ得る。ノードマネージャ309は、常にシステム全体を見渡し、各ノードおよび各インターコネクトの状態を絶えず最新の状態に維持している。ノードマネージャ309は、ノード1つ当たり利用可能なCPUの数、実行中のサービス、利用可能なストレージ、インターコネクト帯域幅、空きメモリ、温度、システムクロック速度などの、各ノードおよび各インターコネクトの特定の特性について、常時、互いに通知し合う。
【0080】
ノードマネージャ309が実施するもう一つの機能は、モジュール管理である。モジュール管理は、ノード管理に類似しており、特定のモジュールについてのノード管理を含み得るが、モジュールに特有の側面を考慮する。モジュール管理は、モジュールが他のモジュールと通信するために用いるインターフェースノード(設けられる場合)の状態など、モジュールに特有の側面に焦点を当てる。
【0081】
ノードマネージャ309は、プロセス管理も実施する。実行中のアプリケーションの各々は、複数の個々のプロセスに分割される。複数の個々のプロセスは、開始、分散、および監視する必要がある。同時に、リソースを割り当てる必要がある。これは、プロセスが計算能力およびストレージを必要とすることに対応する。ノードマネージャ309は、プロセスとその要件との間の依存を認識および制御するように構成されている。これに基づいて、ノードマネージャ309は、ブースタモジュール304またはクラスタモジュール302の場合にはノード上にプロセスを作成し、または、ストレージモジュール306の場合にはストレージを割り当てる。プロセスは監視され、依存プロセスはグループとして扱われる。これにより、並列タスクのうちのいずれか1つで発生するエラーに迅速に応答することが可能である。したがって、プロセスを速やかに再開させることができ、その結果、実行中のアプリケーションの全体の遅延を最小限に抑えることができる。
【0082】
リソース管理は、ノードマネージャ309がモジュラーコンピューティングシステム300において実施するもう一つのタスクである。リソース管理の一部として、ノードマネージャ309は、オフロード機構を実現する。すなわち、例えばクラスタモジュール302上で実行中のプロセスは、ブースタモジュール304中のいくつかのブースタノード320を必要とし得る。そのような場合には、ノードマネージャ309は、タスクを並列して実行するために、選択されたブースタノード320上にプロセスを生成する。
【0083】
オフロードの一部として、1つのブースタ上で実行されるように作成されるプロセスは、1つだけでなく複数であってもよい。複数のプロセスは、ホストプロセッサの介入を必要とせずに、モジュール通信ファブリックを用いて互いに直接通信する。
【0084】
また、リソース管理は、例えば異なるプロセス間の接続数を減少させることによって、メモリ消費を低減することも保証する。これは、必要な時にのみ実際に確立するオンデマンド接続を用いることによって行なわれる。これにより、接続1つ当たりのメモリ消費が劇的に低減される。したがって、ノードなどのリソースは仮想的に扱われるだけでなく、
仮想割り当ては物理ネットワークにも適用される。
【0085】
リソースを割り当てる際に、ノードマネージャ309は、1つのプロセスのリクエストを考慮するだけでなく、他のプロセスのリクエストも考慮する。これにより、統合制御に基づいて通信インフラストラクチャの変更に柔軟に応答することができる。
【0086】
統合制御は、ノードマネージャ309によって提供されるもう一つの機能局面である。統合制御は、ノードマネージャが、管理機能から収集した情報を用いて通信を制御すること(およびその逆)を意味する。このように、通信機能と管理機能とは別個のものではなく、システム性能全体をさらに最適化するために統合されたものである。
【0087】
すべてのモジュールにおけるすべてのノードのすべての異なる局面、ならびにすべてのインターコネクト、モジュール内通信、およびモジュール間通信のステータスについてのノードマネージャの知識を用いて、システムを作動させる。これにより、システムの挙動の変更、および、システム上で実行中のアプリケーションの要求の変更に対する動的な調整が可能になる。
【0088】
統合制御は、実際のシステム状態およびアプリケーション要求を考慮するだけでなく、次に起こるモジュールのリクエストまたはインターコネクト使用の予測も行なう。システム状態の情報は、ノードの動的な割り当てのために用いられる。これは、フィードバックループ登録システムの割り当て決定の広範な影響を用いてリソースの割り当てが行なわれることを含む。その結果、将来の割り当てが相応に調整される。また、システムは、自己学習の方法で、そのような情報を記憶することによって将来のケースの割り当て決定を向上させる。
【0089】
アプリケーションの主要部分が通常はクラスタモジュール302で開始されるとしても、ノードマネージャは、クラスタモジュール302またはブースタモジュール304上でアプリケーションのどの部分を実行させるかを特定する。決定の根拠は、例えば、実行中のコード性能の監視結果をアプリケーションコード自体で示すものである。これにより、アプリケーションのコンピューティング中に割り当てを調整することができる。
【0090】
ノードマネージャ309はハードウェアで実現されてもよく、またはソフトウェアで実現されてもよく、例えば、それぞれのノード上で実行されるデーモンプロセスとして実現されてもよい。ノードマネージャ309は、モジュールおよびシステム全体を大域的に見るために、絶えず情報を収集する。システム上で実行中のアプリケーションは、管理機能と通信することによって、または個々のノードマネージャ309と直接通信することによって、この情報を活用することができる。これは特定のインターフェースによって実現される。この特定のインターフェースは、ハードウェアであってもよいし、API(アプリケーションプログラミングインターフェース)であってもよい。
【0091】
ノードマネージャの通信トラフィックは、モジュール内およびモジュール間通信から厳密に分離されている。これにより、モジュール内およびモジュール間通信は、管理機能によって中断されることなく高速で実行される。さらに、このような分離によって、システムセキュリティを高めることができる。
【0092】
実際の通信ネットワークの使用は、ノードマネージャ309によって制御される。ノードマネージャ309は、この機能をメッセージパッシングインターフェース(MPI)を介してアプリケーションに提供する。ノードマネージャ309は、管理ネットワーク(図示せず)を用いる。管理ネットワーク(図示せず)は、モジュール内およびモジュール間通信に用いられる物理ネットワークと同じ物理ネットワークであってもよいし、異なる物
理ネットワークであってもよい。例えば、モジュール内およびモジュール間通信は、インフィニバンド、ミリネットなどであってもよく、管理ネットワーク(図示せず)は、ノードマネージャ309を接続するイーサネットによって形成されてもよい。
【0093】
システムには、管理タスクまたは制御機能がシステムを作動させることを可能にするフロントエンドを提供するための特殊ノードが含まれてもよい。フロントエンド350が通信ネットワークに接続されることは必要ではないが、通信ネットワークへだけ接続されている。例えばワークステーションコンピュータ、パーソナルコンピュータ(PC)、ラップトップコンピュータ、または任意のスマートコンピューティングデバイスによって形成され得るフロントエンド350ノードを介して、モジュラーコンピューティングシステム300は管理され得る。モジュラーコンピューティングシステム300上で実行中のアプリケーションは、スケジュール、開始、停止、および監視され得る。これは、バッチ処理によって行なわれ得る。すなわち、手動による介入なく、したがって非対話方式で、モジュラーコンピューティングシステム300上で一連のジョブを実行することによって行なわれ得る。
【0094】
手動による介入なくモジュラーコンピューティングシステム300上で一連のジョブを実行することに加えて、ノードマネージャは、対話型コンピューティングを提供し得る。対話型コンピューティングでは、モジュラーコンピューティングシステム300上で実行中のアプリケーションが、その実行中に人からの入力を受け付ける。この入力は、ワークステーションコンピュータ、パーソナルコンピュータ(PC)、ラップトップコンピュータ、または任意のスマートコンピューティングデバイスを介して提供され得る。そのようなシナリオでは、例えばラップトップコンピュータを介してモジュラーコンピューティングシステム300にアクセスし、ラップトップコンピュータがモジュラーコンピューティングシステム300の計算能力を有しているかのように見せることができる。これは、即時または現在進行中であるとユーザが感じるような時間枠内での応答が必要なリアルタイムのアプリケーションに非常に有用である。また、膨大な量の構造化データ、半構造化データ、および非構造化データを情報のマイニングのためにアクセス可能にするビッグデータアプリケーションにおいても、そのような配列を利用することができる。これは、計算能力およびストレージを提供するための基礎となるリソースとしてモジュラーコンピューティングシステム300を有するクラウドコンピューティングサービスにも当てはまる。