JP5030647B2 - 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム - Google Patents

複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム Download PDF

Info

Publication number
JP5030647B2
JP5030647B2 JP2007098425A JP2007098425A JP5030647B2 JP 5030647 B2 JP5030647 B2 JP 5030647B2 JP 2007098425 A JP2007098425 A JP 2007098425A JP 2007098425 A JP2007098425 A JP 2007098425A JP 5030647 B2 JP5030647 B2 JP 5030647B2
Authority
JP
Japan
Prior art keywords
program
node
page table
computer system
compute
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007098425A
Other languages
English (en)
Other versions
JP2007280397A (ja
Inventor
ダニエル・ポール・コルツ
ジェイ・シンメス・ブライアント
ダルメシュ・ジェイ・ペイテル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2007280397A publication Critical patent/JP2007280397A/ja
Application granted granted Critical
Publication of JP5030647B2 publication Critical patent/JP5030647B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Description

本発明は、概して、コンピュータ・システム及び開発に関する。特に、本発明は、分散コンピュータ・システムまたは高並列化コンピュータ・システムにおいて実行用プログラムをロードするために必要とされる時間を減少させるプロセスに関する。
スーパーコンピュータ・システムは、ますます複雑な計算問題に対処するために開発され続けている。これらシステムは、生命科学、金融モデル化、流体力学、量子化学、分子力学、天文学、気象モデル化及び予測、並びに地質学モデル化を含む幅広い種類の用途に特に有用であることが証明されている。スーパーコンピュータ開発者は、これらの用途及びその他の用途に適用するための絶えず増大する量の計算能力を達成するため、超並列コンピュータ・アーキテクチャに焦点を合わせている。
超並列システムの1つのファミリーが、Blue Gene(登録商標)という名前でインターナショナル・ビジネス・マシーンズ・コーポレーション(以下、IBMという)によって開発され(続け)ている。Blue Gene(登録商標)/Lシステムはスケーラブルであって、最大65536(216)個の計算ノードを構成することができる。各Blue Gene(登録商標)/Lノードは、2CPUを有する単一の特定用途向け集積回路(ASIC)及びメモリを含む。Blue Gene(登録商標)アーキテクチャは大成功し、2005年10月27日、IBMは、Blue Gene(登録商標)/Lシステムが280.6テラフロップ(毎秒280.6兆回の浮動小数点演算)の演算速度に達し、これにより、この時点で、世界で最も速いコンピュータであることを発表した。更に、2005年6月現在で、世界中の様々な場所におけるBlue Gene(登録商標)/Lの導入は、世界中で最も高性能なトップ10のコンピュータのうちの5つに入った。
IBMは、Blue Gene(登録商標)/Pと名付けた、Blue Gene(登録商標)/Lシステムに継ぐものを現在開発している。Blue Gene(登録商標)/Pは、連続1ペタフロップ(毎秒1000兆回の浮動小数点演算)で動作する最初のコンピュータ・システムになると期待されている。Blue Gene(登録商標)/Lシステムのように、Blue Gene(登録商標)/Pはスケーラブルであって、計画では最大73728個の計算ノードを有する。各Blue Gene(登録商標)/Pノードは、4CPUを有する単一の特定用途向け集積回路(ASIC)及びメモリを含む。完全なBlue Gene(登録商標)/Pシステムは72個のラックまたはキャビネットに収納され、各々は32個のノード・ボードを有する(1ボード当たり32個のノードを有する)。
IBMによって開発されたBlue Gene(登録商標)アーキテクチャに加えて、その他の分散コンピュータ・システムは、超並列コンピュータ・システムと類似する全アーキテクチャを有することがある。その他の分散システムの例として、クラスタ化システム及びグリッド・ベース・システムが挙げられる。例えば、Beowulfクラスタは一群のコンピュータ・システムであって、各コンピュータ・システムは、LINUX(登録商標)またはBSDオペレーティング・システムのようなUNIX(登録商標)系オペレーティング・システムを実行する。この集合のコンピュータ・システムは高速ネットワークを介して小規模TCP/IP LANに接続され、ライブラリと、インストールされたプログラムとを有し、これによって、ノード間で処理を共有することができる。
前述の用途の多くを実行する場合、スーパーコンピュータ・システムは、異なるデータ・セットに対して実質的に同じ計算を実行することを含むことが多い様々な問題を解くために用いられる。この種類の用途の例として、個々のたんぱく質の折り畳みをシミュレートするといったような分子間相互作用のモデル化が挙げられる。これらの種類の用途の場合、所与のノードで実行するプログラムが用いるデータは比較的少量である。プログラムは、このデータを用いて多くの計算を行う。計算が終了すると、計算の結果が戻される。何千ものノードが(異なるデータ・セットについて)同じ計算を実行するので、比較的短い期間に極端に多くのデータ・セットを処理することがある。
Blue Gene(登録商標)システムのような高並列化スーパーコンピュータ、またはその他の分散システムにおけるノードの数を考慮すると、個々のノードのいずれに対しても少量のオーバーヘッドしか必要としない動作であっても、システム全体としてはかなりの時間を消費することが多い。例えば、個々の計算ノードによってプログラムをロードするのに必要とされる総合時間は顕著となる。従って、プログラムを計算ノードに送信するだけのために、総合的にかなりの量の時間を費やすことがある。同じ現象は、分散システムの一部である処理ノードにデータ・セットやプログラムなどを送信する必要がある分散システムにおいても生じる。従って、当該技術分野では、高並列化コンピュータ・システムまたは分散コンピュータ・システムにおいてプログラムのロード時間を減少させる技術を必要とする。
本発明は、高並列化コンピュータ・システムまたは分散コンピュータ・システムにおいてプログラムをロードするのに必要とされる時間を減少させる方法を提供する。本発明の一実施形態は、複数処理ノードを含むコンピュータ・システムで、プログラムをロードする方法を提供する。この方法は、当該コンピュータ・システムによる実行を依頼された計算ジョブと関連するプログラムを前に実行した複数の処理ノードを識別することを含む。この方法は、プログラムの前の実行に関連するページ・テーブルを保持するためのメッセージを、識別した各処理ノードに送信することと、計算ジョブを複数の処理ノードにディスパッチすることとを更に含む。
本発明の別の実施形態は、プログラムを含むコンピュータ可読媒体であって、プログラムが実行されると、複数処理ノードを含むコンピュータ・システムにプログラムをロードする動作を実行するコンピュータ可読媒体を含む。動作は、当該コンピュータ・システムによる実行を依頼された計算ジョブと関連するプログラムを前に実行した複数の処理ノードを識別することを含む。動作は、プログラムの前の実行に関連するページ・テーブルを保持するためのメッセージを、識別した各処理ノードに送信することと、計算ジョブを複数の処理ノードにディスパッチすることとを更に含む。
本発明の更なる別の実施形態は、並列コンピュータ・システムを含む。このシステムは、複数の計算ノードと、一連の動作を実行することによって複数の計算ノードの少なくとも幾つかで計算ジョブを実行するように構成された制御システムとを含む。計算ジョブは、並列コンピュータ・システム上で実行すべきプログラムを識別する。動作は、プログラムを前に実行した複数の計算ノードを識別することを含むことができ、動作は、プログラムの前の実行に関連するページ・テーブルを保持するためのメッセージを、複数の計算ノードの少なくとも幾つかに送信することと、計算ジョブを、複数の計算ノードの少なくとも幾つかにディスパッチすることとを更に含むことができる。
本発明の前述の特徴、利点及び目的が実現され、これらを細部にわたって理解できるように、上記で簡潔に要約した本発明を、添付図面に示された本発明の実施形態を参照して更に詳細に説明する。
しかしながら、添付図面は本発明の代表的な実施形態のみを示し、従って、本発明の範囲を限定するものではなく、本発明に対して、その他の同様に効果的な実施形態も認められることに留意すべきである。
本発明の実施形態は、高並列化コンピュータ・システムまたは分散コンピュータ・システムにおいてプログラムのロード時間を減少させる方法を提供する。このことは、高並列化コンピュータ・システムまたは分散コンピュータ・システムの特定の計算ノードでプログラムの前の呼び出しによってロードされた情報を、可能であれば再利用することによって実現される。ジョブが実行のためディスパッチされる際に(複数の)計算ノードに送信されるデータの幾つかのセグメントは、メモリ内で不変であるプログラムのバイナリ命令であるので、同じプログラムの前の呼び出しからメモリのページを保存することができる。従って、本発明の実施形態は、制御システムがジョブを特定の計算ノードにディスパッチするたびに生じるページ不在を回避する。同時に、所与の計算ノードは、特定のジョブを実行し始めるよう指示されたとき、バイナリ命令がメモリにページ・インされるのを待つ必要がない。
本明細書では、IBMによって開発されたBlue Gene(登録商標)コンピュータ・アーキテクチャを参照して本発明の実施形態を説明する。本明細書で説明する実施形態は、Blue Gene(登録商標)システムのような何千もの処理ノードを含む超並列コンピュータ・システムに対して特に有利である。しかし、ネットワークを介して通信するように配置された複数のCPUを用いる様々な並列コンピュータ・システムに用いるように本発明の実施形態を適合させることができる。例えば、クラスタまたはグリッドのような分散アーキテクチャに用いるように実施形態を容易に適合させることができる。このようなアーキテクチャでは、各処理ノードを、ローカル・ネットワーク、地域ネットワークまたはグローバル・ネットワークを介して他のノードと通信するコンピュータ・システムとすることができる。
下記では、本発明の実施形態について説明する。しかし、当然のことながら、本発明は、説明した特定の実施形態に限定されるものではない。代わりとして、下記の特徴及び要素のいかなる組み合わせも、異なる実施形態に関連するか否かにかかわらず、本発明を実装し実施するものである。更に、様々な実施形態では、本発明は、従来技術よりも優れた多数の利点を提供する。しかし、本発明の実施形態は、その他の可能な解決策よりも優れた利点、または、従来技術よりも優れた利点、あるいはその両方を実現することができるが、特定の利点が所与の実施形態によって実現されるか否かは、本発明を限定するものではない。従って、下記の側面、特徴、実施形態及び利点は単に例示のためであって、請求項に明記された箇所以外は、請求項の要素または請求項を限定するものと見なされるべきではない。これと同様に、「本発明」という表現は、本明細書で開示した発明の主題の一般化として解釈されるべきではなく、請求項に明記された箇所以外は、請求項の要素または請求項を限定するものと見なされるべきではない。
本発明の一実施形態は、例えば、以下で説明する図1の高並列化コンピュータ・システム100のようなコンピュータ・システムと用いるプログラム製品として実装される。プログラム製品のプログラムは、(本明細書で説明する方法を含む)実施形態の機能を定義するもので、様々な信号担持媒体に記録することができる。例示的な信号担持媒体は、(i)書き込み不可能ストレージ媒体(例えば、CD‐ROMドライブによって読み取り可能なCD‐ROMディスクのようなコンピュータ内の読み取り専用メモリ装置)に永続的に格納された情報と、(ii)書き込み可能ストレージ媒体(例えば、ディスケット・ドライブ内のフレキシブル・ディスクまたはハード・ディスク・ドライブ)に格納された可変情報と、(iii)無線通信を含むコンピュータ・ネットワークまたは電話網を介するような通信媒体によってコンピュータに搬送された情報とを含むが、これらに限定されない。後者の実施形態は、インターネット及びその他のネットワークからダウンロードされた情報を特に含む。このような信号担持媒体は、本発明の機能を指示するコンピュータ可読命令を搬送する場合、本発明の実施形態を表現する。
一般に、本発明の実施形態を実装するのに実行されるルーチンを、オペレーティング・システムまたは特定のアプリケーションの一部、コンポーネント、プログラム、モジュール、オブジェクト、または、一連の命令とすることができる。本発明のコンピュータ・プログラムは、一般に、ネイティブ・コンピュータによって機械可読フォーマット従って実行可能命令に変換される多数の命令を含む。プログラムは、当該プログラムに局所的に存在るか、あるいは、メモリまたはストレージ装置にある変数及びデータ構造をも含む。更に、以後に説明する様々なプログラムは、それらを本発明の特定の実施形態に実装する用途に基づいて識別することができる。しかし、以後のいかなる特定のプログラム用語も便宜のためにのみ用いられ、従って、このような用語によって識別され、または暗に示され、あるいはその両方が行われた任意の特定の用途のみに用いることに本発明を限定すべきではない。
図1は、本発明の一実施形態による高並列化コンピュータ・システム100を示すブロック図である。特に、高並列化コンピュータ・システム100は、Blue Gene(登録商標)システムの概略を示す。図示のように、高並列化コンピュータ・システム100は、計算ノード110の集合及び入出力(I/O)ノード112の集合を含む。計算ノード110は、高並列化コンピュータ・システム100の計算能力を提供する。一実施形態では、各計算ノード110は、1つ以上のCPUを含む。更に、各計算ノード110は、プログラム命令と、命令の操作対象となるデータ・セットとの両方を格納するのに用いられるメモリを含むことができる。
一実施形態では、計算ノード110は、当該計算ノード110で実行されるプログラムと関連するページ・テーブルを再利用するように構成することができる。同じプログラムを複数回呼び出すためである。既知のように、ページ・テーブルは、ページと、その物理アドレス及び論理アドレスとの索引付けを提供する。ページ・テーブルの再利用については、以下で更に詳細に説明する。
I/Oノード112は、機能ネットワーク160を介して計算ノード110とファイル・サーバ130との間に物理インターフェースを提供することができる。一実施形態では、計算ノード110及びI/Oノード112は、制御ネットワーク150または機能ネットワーク160あるいはその両方を介してファイル・サーバ130、フロント・エンド・ノード120及びサービス・ノード140と通信する。Blue Gene(登録商標)システムでは、I/Oノード112及び計算ノード110は、ネットワーク・インターフェースのどれが使用可能であるか、また、高並列化コンピュータ・システム100によってノードがどのように用いられるかによってのみ、互いに異なることができる。高並列化コンピュータ・システム100の制御、起動、ジョブ開始及びデバッグを容易にするプロセスを実行するようにもI/Oノード112を構成することができる。これにより、各計算ノード110がわずかなI/Oノード112と通信するだけで足りるので、各計算ノード110で稼働しているオペレーティング・システム・カーネルを簡単にすることができる。フロント・エンド・ノード120は、コンパイラと、高並列化コンピュータ・システム100と対話するユーザによって用いられるその他のアプリケーションとを格納する。典型的に、ユーザはフロント・エンド・ノード120にアクセスし、プログラムのコンパイルを依頼し、サービス・ノード140にジョブの実行を依頼する。
サービス・ノード140は、システム・データベースと、高並列化コンピュータ・システム100によって供給されたすべての管理ツールとを含むことができる。典型的に、サービス・ノード140は、計算ノード110のソフトウェア・プログラム及びデータのスケジューリング及びロードを処理するように構成されたコンピュータ・システムを含む。一実施形態では、サービス・ノード140は、(ブロックと称する)一群の計算ノード110を組立て、ジョブを実行のためブロックにディスパッチするように構成することができる。典型的に、サービス・ノード140は、オペレーティング・システム、メモリ、ストレージ及び制御コンソール(図示せず)を含むコンピュータ・システムである。例えば、Blue Gene(登録商標)/Pシステムは、LINUX(登録商標)オペレーティング・システムを実行するコンピュータ・システムを用いる。サービス・ノード140は、制御ネットワーク150を介して計算ノード110と通信する。制御ネットワーク150は、高並列化コンピュータ・システム100の動作を制御するため、サービス・ノード140に対して通信チャネルを提供する。
図2は、本発明の一実施形態による超並列コンピュータ・システムの構成を更に示すブロック図である。図2は、特に、Blue Gene(登録商標)/Pコンピュータ・システムの構成を示すブロック図である。前述したように、Blue Gene(登録商標)/Pは、計画では最大73728個の計算ノード110を有するスケーラブルなシステムである。Blue Gene(登録商標)/Pシステムでは、各計算ノード110はノード・カードにパッケージされ、4CPUを有する単一の特定用途向け集積回路(ASIC)212及びメモリ214から成る。ノード・ボード220は32個のノード・カードを収納し、各ノード・カードは計算ノード110を有する。従って、各ノード・ボードは、一計算ノード110当たり4つのCPU及びメモリ214を有する32個のノードを有する。ラック230は、32個のノード・ボード220を保持するハウジングである。完全なBlue Gene(登録商標)/Pシステムは、各ラックに32個のノード・ボード220を有する72個のラック230に収納される。従って、完全なBlue Gene(登録商標)/Pシステムは、最大294912個のCPU(72ラック×32ノード・ボード×32ノード×4CPU)を有する。
Blue Gene(登録商標)/Pコンピュータ・システムは、複数のデータ通信ネットワークを含む。幾つかのノード・ボード220に位置付けられたI/Oプロセッサは、サービス・ノード140と一群の計算ノード110との間のデータ通信を処理する。一実施形態では、各I/Oノード112は、1024個の計算ノード110に対して機能ネットワーク160を介するデータ通信を管理する。Blue Gene(登録商標)/Pシステムでは、73728個の計算ノード110及び1024個のI/Oノード112が、論理ツリー・ネットワーク及びトーラス・ネットワークの両方を介して通信するように構成されている。トーラス・ネットワークは、各計算ノード110に6個の最近傍ノードと直接通信させることができる格子状構造に計算ノード110を接続する。計算ノード110は、高並列化コンピュータ・システムまたはクラスタ・コンピュータ・システム(例えば、システム100)用のアプリケーションを開発するのに用いられるアプリケーション・プログラミング・インターフェースを、周知のメッセージ・パッシング・インターフェース(MPI)を用いてトーラス・ネットワークを介して通信することができる。いずれの計算ノード110も、トーラス・ネットワークを介してメッセージを別の計算ノード110に発送することができる。
図3は、本発明の一実施形態による超並列コンピュータ・システムの構成を更に示すブロック図である。特に、図3には、Blue Gene(登録商標)/Pコンピュータ・システムのシステム・アーキテクチャの図を更に示す。図3において、高並列化コンピュータ・システム100のすべての計算ノード110は、制御システム208に接続された計算コア210として示されている。計算コア210は、制御ネットワーク150を介して制御システム208のサービス・ノード140と通信する。計算コア210は、各I/Oノード112を一連の計算ノード110と接続するハードウェア制御装置270を介して制御ネットワーク150に接続されている。
高並列化コンピュータ・システム100は、1024個の計算ノード110との通信が同じI/Oノード112によって管理されるI/Oノード面を有する計算コア210として表すことができる。Blue Gene(登録商標)システムでは、I/Oノード112はツリー・ネットワーク215を介して計算ノード110に接続され、しかも、ギガビット・イーサネット(登録商標)ネットワーク(例えば、機能ネットワーク160)を介した機能的広域ネットワーク機能を有する。
一実施形態では、ハードウェア制御装置270は、JTAGネットワーク219を用いて計算ノード110と通信する。既知のように、JTAGは、計算ノードを初期化し、システム・イメージをロードさせるようにこれら計算ノードを準備するのに用いることができる低レベル通信プロトコルである。JTAGネットワークを用いて、様々なその他の低レベル監視及びサポート機能をも実行することができる。ハードウェア制御装置270は各ラック230に存在し、制御システム208に対するインターフェースを提供する。このインターフェースは、計算ノード110を構成し、計算ノードのメモリ214にプログラム命令及びデータをロードするためのものである。Blue Gene(登録商標)/Pコンピュータ・システムでは、各ノード・ボード及びミッドプレーンのパッケージ化は、IDoチップを含む。IDoチップは、JTAGネットワーク219を介して送信されるUDPパケットを用いてサービス・ノードからコマンドを受信する25MHzのFPGAである。
更に、図3に示すように、計算コア210は、機能ネットワーク160を介してファイル・サーバ130及びフロント・エンド・ノード120とも通信する。機能ネットワーク160をギガビット・イーサネット(登録商標)とすることができる。ファイル・サーバ130は、ユーザ・アプリケーション用のデータ及びシステム・イメージを格納する。個々の計算ノードは、I/Oノード112と通信することによってファイル・サーバにアクセスする。例えば、計算ノードは、NFS共有を介してファイル・サーバ130にアクセスすることができる。一実施形態では、制御システム208は、計算ノード110と関連する状態情報を指定するデータ・テーブルを保持するように構成されたデータベース250を含む。計算コア210内のハードウェアを異なる計算ジョブに割り当てることを管理するようにミッドプレーン管理及び制御システム(MMCS)144を構成することができる。制御システム208は、機能ネットワーク160にも接続されている。一実施形態では、この接続は、システム・イメージ及びデータ・ファイルがロードされた後、計算ノード110が起動プロセスを完了したときを制御システム208に検出させることができる。制御システム208は、ユーザ及びシステム管理者によって用いられるコンソール260を更に含む。
また、図3において、計算コア210には、ラック230に収納された計算ノード110を示す。Blue Gene(登録商標)システムでは、計算ノードは、処理セット(Pセット)にグループ化されている。Pセットは、特定のI/Oノード112と通信する一セットにグループ化された64個のノードのグループである。一実施形態では、計算コア210を、最大でPセットの数に分割することができ、各々は、LINUX(登録商標)オペレーティング・システム・カーネルを実行する1つのI/Oノード112と、制御ネットワーク150を介してシステム・イメージとして送信された計算ノード・カーネル(CNK)を実行する64個の計算ノード110とを有する。記述されているように、I/Oノード112は、所与のPセット内の計算ノードに対して機能ネットワーク160を介する通信を提供する。Blue Gene(登録商標)/Pシステムでは、8個乃至128個の計算ノードと通信するようにI/Oノード112を構成することができる。
各計算ノード110は、計算ノード110のメモリ214に格納されたシステム・イメージ・ファイル及びデータ・ファイルを含む。システム・イメージ・ファイル及び計算ノード・カーネル(CNK)218は、オペレーティング・システム・カーネルのようなシステム・ファイルを含む。計算ノード・カーネル218は、各計算ノード110のメモリ214に格納されている。計算ノード110がユーザ・アプリケーションを実行するよう命令される前に、一般に、システム・イメージ・ファイルがロードされ、計算ノード・カーネル218が実行し始める。
計算ジョブを高並列化コンピュータ・システム100で実行するため、計算ノード110の集合を、ジョブを実行するブロックに割り当てるようサービス・ノード140に要求する。計算ノード110は、ハード・ディスク・ドライブのような任意のローカル永続ストレージを含まなくてもよいので、計算ノード110には、ジョブを実行するために適切なソフトウェアをロードする必要がある。一実施形態では、ユーザは、ジョブを実行するために所望のパーティションの特性を指定する。スケジューラ280は、ジョブを実行するのに用いるブロックを形成するように一連の計算ノード110を選択する。選択後、スケジューラ280によって選択された計算ノード110(及び対応のI/Oノード112)を、制御ネットワーク150を用いてサービス・ノード140によってブロックに構成する。ブロックを生成した後、制御ネットワーク150または機能ネットワーク160あるいはその両方を介してI/Oノード112と通信する制御システム208を通じてジョブをディスパッチすることができる。
一実施形態では、サービス・ノード140は、各計算ノード110で最後に呼び出されたプログラムのテーブルを維持するためにデータベース250及びノード状態テーブル252を用いる。ユーザがジョブを呼び出すと、制御システム208は、ディスパッチされる同じプログラムを最後に実行した計算ノード110が現在利用可能であるかどうかを決定する。計算ノード110が利用可能である場合、制御システム208は、このような計算ノード110に、ジョブ要求中に識別されたプログラムと関連するページ・テーブルを保持するよう指示する。ディスパッチされるプログラムと関連するページ・テーブル以外のすべてのページ・テーブルは、計算ノードによって廃棄される。更に、保持されたページ・テーブルの、無効または書き込み可能とマークされた項目を、保持されたページ・テーブルから除去することができる。この時点で、プログラムの前の実行で生成または変更されたデータのいずれをも、ディスパッチされたプログラムを最後に実行したプロセスのメモリ・スペースから除去している。同時に、ディスパッチされたプログラムが計算ノード110によって実行されるとき、読み取り専用または実行可能とマークされたページは保持されていて、ロードされる必要はなく、ページ不在を生じさせない(ページ不在は、必要とされるページが物理メモリにマッピングされていないときにメモリ管理ユニットによって引き起こされる例外である)。
この時点で、プログラムは計算ノード110にディスパッチされる。制御システム208は、ディスパッチされるプロセスに対して新たなページ・テーブルを生成する代わりに、保持されたページ・テーブルを用いるよう計算ノード110に指示する。計算ジョブの一部である他のいかなるプロセスも、空のメモリ・スペースから開始し、デマンド・ページング・プロセスを用い、機能ネットワーク及びI/Oノード112を用いてページをメモリに導入することができる。プログラムは、実行を開始するとき、最初の命令をメモリ内のロケーションからロードしようとする。通常、これによって、ページ不在が引き起こされる。この例外は、オペレーティング・システムに送られ、オペレーティング・システムは、ページ不在に応答して、要求されたページを何らかの2次ストレージ・ソースから物理メモリ内にロードする。しかし、保持されたページ・テーブルからの情報は有効なマッピングを含むので、プログラムは容易に情報バイナリ命令にアクセスする。このことは、プログラムのすべての命令に起こる。従って、保持されたページ・テーブルと関連するアプリケーションのロード時間をかなり減少させることができる。このことは、特に、異なるデータ・セットを有する同じジョブを何千回、何百万回または何十億回もディスパッチすることがあるBlue Gene(登録商標)システムのような超並列システムに当てはまる。
図4は、本発明の一実施形態によるサービス・ノード140によって維持されるノード状態テーブル252のブロック図である。一実施形態では、ノード状態テーブル252をデータベース250の一部として格納することができる。図示のように、ノード状態テーブル252は、所与のシステムの一部である計算ノード110と、各ノードで実行された最後のジョブとを示すリストを含む。従って、ユーザがジョブ要求をディスパッチすると、制御システム208はノード状態テーブル252を用いて、ディスパッチされたジョブを前に実行したノードを識別することができる。
図5は、本発明の一実施形態による高並列化コンピュータ・システムまたは分散コンピュータ・システムにおいて計算ジョブを実行する一連の計算ノード110を準備する方法500を示す流れ図である。この方法500はステップ510で開始し、制御システム208は、計算コア210にディスパッチするためのジョブ記述を受信する。一実施形態では、ジョブ記述は、実行すべきアプリケーション・プログラム、ジョブを実行するのに用いる計算ノード110の数のような所望の性能特性、または、ジョブを完了する所望の推定時間を指定することができ、所与のジョブと関連するデータ・セットを更に含むことができる。
ステップ520で、制御システム208は、ジョブ記述で指定されたアプリケーション・プログラムを最後に実行した計算ノード110が利用可能であるかどうかを決定する。利用可能でない場合、ステップ525で、制御システム208はジョブをスケジュールし、計算コア210にディスパッチする。更に、計算ノード110がジョブの処理を終了すると、制御システム208は、ジョブを実行するのに用いた計算ノード110をノード状態テーブル252に記録することができる。
これに対して、ジョブ記述によって指定されたアプリケーション・プログラムを最後に実行した計算ノード110が利用可能である場合、ステップ530で、制御システム208は、アプリケーション・プログラムを最後に実行した一連の計算ノードを識別する。ステップ540で、制御システム208は、ジョブ記述で指定されたアプリケーション・プログラム用のページ・テーブルを保持するため、識別した計算ノード110にメッセージを送信する。一実施形態では、制御システムは、制御ネットワーク150を介して、影響を受けた計算ノード110と通信する。以下に説明する図6は、アプリケーション・プログラム用のページ・テーブルを保持するためのメッセージを受信したことに応答して計算ノード110によって実行されるアクションを示している。
ステップ550で、ジョブを実行用の計算ノードにディスパッチする。計算ノード110がジョブの実行を終了すると、ステップ560で、制御システム208は、ジョブを実行するのに用いた計算ノード110をノード状態テーブル252に記録することができる。
図6は、本発明の一実施形態による並列化コンピュータ・システムまたは分散コンピュータ・システムのノードが計算ジョブを実行する方法600を示す流れ図である。方法600はステップ610で開始し、計算ノード110は、同じアプリケーションの前の呼び出しからのページ・テーブルを保持するため、制御ネットワーク150を介して制御システム208からメッセージを受信する。ステップ620で、計算ノード110は、ユーザ・アプリケーションと関連するページ・テーブルを識別する。その後、ステップ630〜660を含むループが開始する。ループの各繰り返しにおいて、計算ノード110は、アプリケーションと関連するページ・テーブルの項目を保持するか廃棄するかを決定する。ステップ630で、計算ノード110は、考慮中のページが書き込み可能とマークされているかどうかを決定する。マークされている場合、ステップ640で、ページをページ・テーブルから消去し、メモリから廃棄する。これに対して、ページ・テーブルの項目が書き込み可能とマークされていない場合、ステップ650で、計算ノード110は、ページ・テーブルと関連するアプリケーション・プログラムのその後の呼び出し中に用いるためページ・テーブルの項目を保持する。これと反対に、ステップ630では、計算ノード110は、ページ・テーブルの項目が読み取り専用(すなわち、実行可能)とマークされているかどうかを決定し、これに応じて、ページを保持または廃棄することもできる。考慮中のページ・テーブルの項目を保持しても廃棄しても、ステップ660で、計算ノード110は、更なるページ・テーブルの項目を評価する必要があるかどうかを決定する。評価する必要がある場合、ステップ630に戻り、別のページ・テーブルの項目を評価する。
これに対して、ステップ660で、ページ・テーブルの項目のすべてが評価されていると、計算ノード110は、同じアプリケーション・プログラムの前の呼び出しからの変更したページ・テーブルを用いてアプリケーション・プログラムの実行を開始することができる。その結果として、再入可能ページ(すなわち、実行可能命令のみを含むページ)はページ・テーブルで有効のままであり、プログラムをロードするため計算ノードの物理メモリに導入される必要はない。
図7のA及びBは、本発明の一実施形態による高並列化コンピュータ・システムまたは分散コンピュータ・システムの計算ノード110によって維持されるページ・テーブルを示す。図示のように、図7のAは、(P0,P1として示された)2つのユーザ・アプリケーションが実行を完了した後の計算ノード110の状態を表す。仮想メモリ・テーブル710は、プロセスP0によって用いられた4つのページ(ページ0、1、2及び3)を示す。プロセスP0は、実行可能命令の3つのページ(ページ0、1及び3)と、実行可能でない(すなわち、書き込み可能データ)とマークされた単一ページ(ページ2)とを含む。ページ・テーブル715は、プロセスP0によって用いられた仮想メモリ・アドレスを物理メモリ730のアドレスにマッピングする。特に、ページ0、1、2及び3はそれぞれ、物理メモリ730のページ1、4、3及び7にマッピングされている。図示のように、ページ・テーブル715は、物理メモリ730に位置付けられた仮想ページからのマッピングを示す列716と、ページが実行可能であるかどうかを示す列717と、ページ・テーブルの項目が有効であるかどうかを示す列718とを含む。これと同様に、ページ・テーブル725は、プロセスP1によって用いられたページ720を物理メモリ730のページにマッピングする。プロセスP1は、実行可能命令の単一ページ(ページ0)と、3つのデータ・ページ(ページ1、2及び3)とを含む。ページ・テーブル725は、プロセスP1によって用いられた仮想メモリ・アドレスを物理メモリ730のアドレスにマッピングする。図示のように、ページ0、1、2及び3はそれぞれ、物理メモリ730のページ2、5、0及び6にマッピングされている。
図7のBは、プロセスP0を2度目に実行する準備をするため、制御システム208からメッセージを受信した後の図7のAの計算ノード110の状態を示す。受信したことに応答して、計算ノード110は特定の項目をページ・テーブル715から廃棄し、その他の値を変更した。例えば、計算ノード110は、図6に示す方法600に従ってページ・テーブル715を変更することができる。図示のように、プロセスP1用のページ・テーブル725は廃棄された。しかし、計算ノード110がP0を再び実行しようとしているので、ページ・テーブル715は保持されている。ページ・テーブル715の項目は仮想メモリ・テーブル710からのページ0、1及び3をそれぞれ物理メモリ730のページ1、4及び7にマッピングし続ける。しかし、仮想メモリのページ2のページ・テーブルの項目は除去される。図示のように、ページ・テーブル715は、現在、ページ2の項目が無効であると示している。更に、物理メモリ730のページ3に現在示されている値は、このページがプロセスP0の前の呼び出し中にマッピングされ、ヌルに設定されていることを示している。プロセスP0が実行されるとき、追加の時間、並びに、ページ0、1及び3のページ不在は生じない。
分散コンピュータ・システムまたは高並列化コンピュータ・システムにおいて実行用のプログラムをロードするのに必要とされる時間を減少させるため、本発明の実施形態を用いることができる。このことは、特定の計算ノードでプログラムの前の呼び出し中に生成された特定のページ・テーブルの項目を再利用することによって達成される。従って、全体として、計算ノードのメモリにページングする必要があるページの数は減少され、これによって、プログラムのロード時間を減少させる。同じジョブを何回も実行することがある超並列システム及び分散システムまたはクラスタ化システムの両方において、個々の計算ノードの改善が比較的わずかとなる場合であっても、システム性能全体への改善は多大である。
上記の記述は本発明の実施形態に関するものであるが、本発明のその他の実施形態及び更なる実施形態を、本発明の基本範囲から逸脱することなく考え出すことができる。本発明の範囲は、特許請求の範囲によって決定される。
本発明の一実施形態による超並列コンピュータ・システムを示すブロック図である。 本発明の一実施形態による超並列コンピュータ・システムの構成を更に示すブロック図である。 本発明の一実施形態による超並列コンピュータ・システムの構成を更に示すブロック図である。 本発明の一実施形態によるサービス・ノードによって維持される計算ノード状態テーブルのブロック図である。 本発明の一実施形態による高並列化コンピュータ・システムまたは分散コンピュータ・システムにおいて計算ジョブを実行する一連の計算ノードを準備する方法を示す流れ図である。 本発明の一実施形態による高並列化コンピュータ・システムまたは分散コンピュータ・システムの計算ノードに関して計算ジョブを実行する方法を示す流れ図である。 A及びBは、本発明の一実施形態による高並列化コンピュータ・システムまたは分散コンピュータ・システムの計算ノードによって維持されるページ・テーブルを示す図である。
符号の説明
100 高並列化コンピュータ・システム
110 計算ノード
112 I/Oノード
120 フロント・エンド・ノード
130 ファイル・サーバ
140 サービス・ノード
144 ミッドプレーン管理及び制御システム(MMCS)
150 制御ネットワーク
160 機能ネットワーク
208 制御システム
210 計算コア
212 単一の特定用途向け集積回路(ASIC)
214 メモリ
215 ツリー・ネットワーク
218 計算ノード・カーネル(CNK)
219 JTAGネットワーク
220 ノード・ボード
230 ラック
250 データベース
252 ノード状態テーブル
260 コンソール
270 ハードウェア制御装置
280 スケジューラ
P0、P1 プロセス
710、720 仮想メモリ
715、725 ページ・テーブル

730 物理メモリ

Claims (8)

  1. 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法であってコンピュータが下記動作を実行し、当該動作が、
    前記コンピュータ・システムによる実行を依頼された計算ジョブと関連するプログラムを前に実行した複数の処理ノードを識別することと、
    前記プログラムの前の実行に関連するページ・テーブルを保持するためのメッセージを、識別した各処理ノードに送信することと、
    可能であれば前記プログラムの前の実行においてロードされた実行可能命令を参照する前記保持されたページ・テーブルを用いて前記プログラムが実行されるように、前記計算ジョブを前記複数の処理ノードにディスパッチすることと
    を含む方法。
  2. コンピュータが、前記計算ジョブがディスパッチされた前記複数の処理ノードの標識を記録することを更に含む、請求項1に記載の方法。
  3. 各処理ノードは少なくともCPU及びメモリを含む、請求項1に記載の方法。
  4. 前記コンピュータ・システムは並列コンピュータ・システムまたは分散コンピュータ・システムを含む、請求項1に記載の方法。
  5. 前記メッセージを受信したことに応答して、処理ノードが、
    前記プログラムと関連するページ・テーブルを識別することと、
    各ページ・テーブル項目に対して、当該ページ・テーブル項目が、前記プログラムに関する実行可能命令を参照しているかどうかを決定することと、
    当該ページ・テーブル項目が実行可能命令を参照している場合、前記ページ・テーブルに当該ページ・テーブル項目を保持することと、
    当該ページ・テーブル項目が実行可能命令を参照していない場合、前記ページ・テーブルから当該ページ・テーブル項目を廃棄することと
    を更に含む、請求項1に記載の方法。
  6. 処理ノードが、廃棄したページ・テーブル項目によってマッピングされていた物理メモリ・アドレスの内容を消去することを更に含む、請求項5に記載の方法。
  7. 請求項1〜6のいずれかに記載の方法の各ステップをコンピュータまたは処理ノードにそれぞれ実行させる、コンピュータ・プログラム。
  8. 請求項1〜6のいずれかに記載の方法の各ステップを実行する手段を備える、システム。
JP2007098425A 2006-04-06 2007-04-04 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム Active JP5030647B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/278829 2006-04-06
US11/278,829 US8429218B2 (en) 2006-04-06 2006-04-06 Process restart on a compute node

Publications (2)

Publication Number Publication Date
JP2007280397A JP2007280397A (ja) 2007-10-25
JP5030647B2 true JP5030647B2 (ja) 2012-09-19

Family

ID=38576848

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007098425A Active JP5030647B2 (ja) 2006-04-06 2007-04-04 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム

Country Status (4)

Country Link
US (1) US8429218B2 (ja)
JP (1) JP5030647B2 (ja)
CN (1) CN100462956C (ja)
TW (1) TWI414947B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8346886B2 (en) * 2004-09-08 2013-01-01 Red Hat, Inc. System, method, and medium for configuring client computers to operate disconnected from a server computer while using a master instance of the operating system
US7844620B2 (en) * 2007-11-16 2010-11-30 International Business Machines Corporation Real time data replication for query execution in a massively parallel computer
US8095512B2 (en) * 2007-11-19 2012-01-10 International Business Machines Corporation Managing database resources used for optimizing query execution on a parallel computer system
CN102053945B (zh) * 2009-11-09 2012-11-21 中国科学院过程工程研究所 一种面向多尺度离散模拟的并行计算系统
US10599482B2 (en) 2017-08-24 2020-03-24 Google Llc Method for intra-subgraph optimization in tuple graph programs
US10887235B2 (en) * 2017-08-24 2021-01-05 Google Llc Method of executing a tuple graph program across a network
US10642582B2 (en) 2017-08-24 2020-05-05 Google Llc System of type inference for tuple graph programs method of executing a tuple graph program across a network

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1992016895A1 (en) * 1991-03-18 1992-10-01 Echelon Corporation Networked variables
US6105053A (en) * 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
US6317774B1 (en) * 1997-01-09 2001-11-13 Microsoft Corporation Providing predictable scheduling of programs using a repeating precomputed schedule
JPH11259318A (ja) * 1998-03-13 1999-09-24 Hitachi Ltd ディスパッチ方式
US6336170B1 (en) * 1998-10-13 2002-01-01 International Business Machines Corporation Method and system in a distributed shared-memory data processing system for determining utilization of shared-memory included within nodes by a designated application
US6925642B1 (en) * 1999-04-29 2005-08-02 Hewlett-Packard Development Company, L.P. Distributed computer network which spawns inter-node parallel processes based on resource availability
JP4475614B2 (ja) * 2000-04-28 2010-06-09 大正製薬株式会社 並列処理方法におけるジョブの割り当て方法および並列処理方法
US7356026B2 (en) * 2000-12-14 2008-04-08 Silicon Graphics, Inc. Node translation and protection in a clustered multiprocessor system
CN1225691C (zh) * 2002-07-08 2005-11-02 华为技术有限公司 一种程序动态加载方法
US7143412B2 (en) * 2002-07-25 2006-11-28 Hewlett-Packard Development Company, L.P. Method and apparatus for optimizing performance in a multi-processing system
GB2404827A (en) * 2003-08-05 2005-02-09 Motorola Inc Fault containment at non-faulty processing nodes in TDMA networks
US7181637B2 (en) * 2003-12-02 2007-02-20 International Business Machines Corporation Packet processing system and method for a data transfer node with time-limited packet buffering in a central queue
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
CN100342335C (zh) * 2004-09-23 2007-10-10 华为技术有限公司 芯片程序加载方法
US20060080389A1 (en) * 2004-10-06 2006-04-13 Digipede Technologies, Llc Distributed processing system

Also Published As

Publication number Publication date
US8429218B2 (en) 2013-04-23
CN100462956C (zh) 2009-02-18
CN101051302A (zh) 2007-10-10
US20070239851A1 (en) 2007-10-11
TWI414947B (zh) 2013-11-11
TW200813738A (en) 2008-03-16
JP2007280397A (ja) 2007-10-25

Similar Documents

Publication Publication Date Title
Akkus et al. {SAND}: Towards {High-Performance} serverless computing
JP5106036B2 (ja) コンピュータ・システム上のハイパーバイザ内にポリシ・ベースのオペレーティング・システム・サービスを提供する方法、コンピュータ・システム及びコンピュータ・プログラム
US7647590B2 (en) Parallel computing system using coordinator and master nodes for load balancing and distributing work
US8214814B2 (en) Sharing compiler optimizations in a multi-node system
JP5030647B2 (ja) 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム
US8122441B2 (en) Sharing compiler optimizations in a multi-node system
US8112526B2 (en) Process migration based on service availability in a multi-node environment
US8171267B2 (en) Method and apparatus for migrating task in multi-processor system
KR20060071307A (ko) 가상 기기들을 위한 프로세서 토폴로지를 노출시키는시스템 및 방법
US20230127141A1 (en) Microservice scheduling
US20150205888A1 (en) Simulation of high performance computing (hpc) application environment using virtual nodes
JPH08502612A (ja) データ処理システムおよびオペレーティング・システム
WO2012000820A1 (en) Accelerator for virtual machine migration
JP4873423B2 (ja) 仮想化プログラム、シミュレーション装置、仮想化方法
US20200341789A1 (en) Containerized workload scheduling
US20200073718A1 (en) Throttling logging processes
EP1915681A1 (en) Method and apparatus for supporting universal serial bus devices in a virtualized environment
US11886302B1 (en) System and method for execution of applications in a container
US11886898B2 (en) GPU-remoting latency aware virtual machine migration
US20090319662A1 (en) Process Migration Based on Exception Handling in a Multi-Node Environment
Ma et al. Delta execution: A preemptive Java thread migration mechanism
KR102413924B1 (ko) 복수의 컴퓨팅 노드를 이용한 고성능 클라우드 서비스 시스템에서의 프로세스 그룹 관리 방법 및 그 시스템
US9619277B2 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method
KR102045997B1 (ko) 분산 파일 시스템을 기반으로 하는 빅데이터 처리 플랫폼의 태스크 스케줄링 방법, 이를 위한 컴퓨터 프로그램 및 컴퓨터 판독 가능 기록 매체
KR101809380B1 (ko) 가상머신 기반 통합항해시스템을 위한 스케줄링 방법 및 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100122

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120425

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120529

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120626

R150 Certificate of patent or registration of utility model

Ref document number: 5030647

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150706

Year of fee payment: 3