(57)【特許請求の範囲】
【請求項１】
並列コンピュータにおける事前対応型電力管理の方法であって、前記並列コンピュータは、サービス・ノードと複数の計算ノードとを含み、前記サービス・ノードは、帯域外ネットワークを介して前記計算ノードに接続されており、各計算ノードは、コンピュータ・プロセッサと、前記コンピュータ・プロセッサに動作可能に連結されているコンピュータ・メモリとを含み、前記方法は、
前記並列コンピュータ内の計算ノードの動作グループにてジョブを開始するユーザ命令を、前記サービス・ノードによって受信するステップであって、前記命令は、前記計算ノードの電力管理属性を含む、前記受信するステップと、
前記動作グループの前記計算ノードの前記電力管理属性に従って、前記動作グループの各計算ノードに関するコンピュータ・プロセッサ電力消費割合とコンピュータ・メモリ電力消費割合とを含んだ電力消費割合を、前記サービス・ノードによって設定するステップと、
前記サービス・ノードによって、前記並列コンピュータの前記動作グループの前記計算ノードにて前記ジョブを開始するステップと、
を含み、
前記電力消費割合は、実行サイクル対アイドル・サイクルの割合をさらに含み、
電力消費割合を設定するステップは、前記アイドル・サイクルの時間の長さを設定するステップをさらに含む、
方法。
【請求項２】
前記コンピュータ・プロセッサ電力消費割合は、前記コンピュータ・メモリ電力消費割合と等しい、請求項１に記載の方法。
【請求項３】
前記コンピュータ・プロセッサ電力消費割合は、前記コンピュータ・メモリ電力消費割合と等しくない、請求項１に記載の方法。
【請求項４】
ジョブの以前の実行の少なくとも１つの期間にわたり前記並列コンピュータの前記動作グループの前記計算ノードの電力消費を監視することを含んだ、前記電力管理属性をユーザによって構築するステップをさらに含む、請求項１乃至請求項３のいずれかに記載の方法。
【請求項５】
前記複数の計算ノードは、データ通信に向けて、ポイント・ツー・ポイント・データ通信向けに最適化された少なくとも１つのデータ通信ネットワークと集合的動作向けに最適化された少なくとも１つのデータ通信ネットワークとの複数のデータ通信ネットワークを介して接続されている、請求項１乃至請求項４のいずれかに記載の方法。
【請求項６】
並列コンピュータにおける事前対応型電力管理用のサービス・ノードであって、前記並列コンピュータは、前記サービス・ノードと複数の計算ノードとを含み、前記サービス・ノードは、帯域外ネットワークを介して前記計算ノードに接続されており、各計算ノードは、コンピュータ・プロセッサと、前記コンピュータ・プロセッサに動作可能に連結されているコンピュータ・メモリとを含み、前記サービス・ノードは、コンピュータ・プロセッサと、前記コンピュータ・プロセッサに動作可能に連結されているコンピュータ・メモリとを含み、前記コンピュータ・メモリはその内部に、以下のことを可能にするプログラム命令が配置されている：
前記並列コンピュータ内の計算ノードの動作グループにてジョブを開始するユーザ命令を、前記サービス・ノードによって受信すること、ただし前記命令は、前記計算ノードの電力管理属性を含む；
前記動作グループの前記計算ノードの前記電力管理属性に従って、前記動作グループの各計算ノードに関するコンピュータ・プロセッサ電力消費割合とコンピュータ・メモリ電力消費割合とを含んだ電力消費割合を、前記サービス・ノードによって設定すること；および、
前記サービス・ノードによって、前記並列コンピュータの前記動作グループの前記計算ノードにて前記ジョブを開始すること、そして更に、
前記電力消費割合は、実行サイクル対アイドル・サイクルの割合をさらに含み、
電力消費割合を設定することは、前記アイドル・サイクルの時間の長さを設定することをさらに含む。
【請求項７】
前記コンピュータ・プロセッサ電力消費割合は、前記コンピュータ・メモリ電力消費割合と等しい、請求項６に記載のサービス・ノード。
【請求項８】
前記コンピュータ・プロセッサ電力消費割合は、前記コンピュータ・メモリ電力消費割合と等しくない、請求項６に記載のサービス・ノード。
【請求項９】
ジョブの以前の実行の少なくとも１つの期間にわたり前記並列コンピュータの前記動作グループの前記計算ノードの電力消費を監視することを含めて、前記電力管理属性をユーザによって構築することを可能にするコンピュータ・プログラム命令をさらに含む、請求項６乃至請求項８のいずれかに記載のサービス・ノード。
【請求項１０】
前記複数の計算ノードは、データ通信に向けて、ポイント・ツー・ポイント・データ通信向けに最適化された少なくとも１つのデータ通信ネットワークと集合的動作向けに最適化された少なくとも１つのデータ通信ネットワークとの複数のデータ通信ネットワークを介して接続されている、請求項６乃至請求項９のいずれかに記載のサービス・ノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の技術分野は、データ処理であり、より具体的には、並列コンピュータにおける事前対応型電力管理の方法、装置および製品である。
【背景技術】
【０００２】
１９４８年のＥＤＶＡＣ（Ｅｌｅｃｔｒｏｎｉｃ  Ｄｉｓｃｒｅｔｅ  Ｖａｒｉａｂｌｅ  Ａｕｔｏｍａｔｉｃ  Ｃｏｍｐｕｔｅｒ：電子式離散変数自動計算機）コンピュータ・システムの開発は、コンピュータ時代の幕開けとしてしばしば言及される。それ以来、コンピュータ・システムは、極めて複雑なデバイスへと発展してきた。今日のコンピュータ・システムは、ＥＤＶＡＣなどの初期のシステムに比べるとはるかに高性能化している。コンピュータ・システムは一般に、ハードウェアおよびソフトウェア・コンポーネント、アプリケーション・プログラム、オペレーティング・システム、プロセッサ、バス、メモリ、入力／出力デバイスなどの組み合わせを含む。半導体加工およびコンピュータ・アーキテクチャの進歩によってコンピュータの性能がより一層向上するに従い、ハードウェアの高度な性能を活かすべくコンピュータ・ソフトウェアがさらに高性能に発展してきた結果、わずか数年前に比べてはるかに強力な今日のコンピュータ・システムがもたらされた。
【０００３】
並列コンピューティングは、進歩を呈しているコンピュータ技術領域である。並列コンピューティングとは、より迅速に結果を得るために、（分割され、特別に適応させられた）同一のタスクを、複数のプロセッサ上で同時に実行することである。並列コンピューティングは、問題を解くプロセスは通常、多少の協調により同時に実施可能な小さな複数のタスクに分割することができるという事実に、基づいている。
【０００４】
並列コンピュータは、並列アルゴリズムを実行する。並列アルゴリズムは、多数の異なる処理デバイス上で同時に断片が実行されるように分割しておいて、最後にもう一度元通りに集約してデータ処理結果を得ることができる。一部のアルゴリズムは、容易に断片に分けられる。例えば、どの数が素数であるかを調べるために１から１０万までの全ての数をチェックするというジョブの分割は、これらの数のサブセットを利用可能な各プロセッサへ割り当て、後に肯定的結果のリストを元通り集約することによって行うことができるであろう。本明細書では、並列プログラムの個々の断片を実行する複数の処理デバイスを、「計算ノード」と称する。並列コンピュータは、計算ノードのほか例えば入力／出力（Ｉ／Ｏ：ｉｎｐｕｔ／ｏｕｔｐｕｔ）ノードおよびサービス・ノードなどといったその他の処理ノードから成る。
【０００５】
並列アルゴリズムが有益であるのは、最近のプロセッサの機能の仕方に起因して、並列アルゴリズムを介する方が逐次（非並列）アルゴリズムを介するよりも迅速に、或る種の大規模なコンピューティング・タスクが実施されるためである。同じスループットであれば、単一の高速プロセッサを備えたコンピュータを構築することは、多数の低速プロセッサを備えたコンピュータを構築することよりもはるかに困難である。さらに、逐次プロセッサの潜在的な速度には、或る一定の理論的限界がある。その一方で、あらゆる並列アルゴリズムは逐次的部分を有しており、従って並列アルゴリズムには飽和点がある。その飽和点を過ぎると、さらに多くのプロセッサを追加してももはやスループットは得られず、ただオーバーヘッドおよびコストを増やすことになる。
【０００６】
並列アルゴリズムはさらに、並列コンピュータの各ノード間のデータ通信要件というもう１つの資源を最適化するように設計されている。並列プロセッサの通信には、共有メモリまたはメッセージ・パッシングの２つの方法がある。共有メモリ処理は、データに対する追加的なロックを必要とし、追加的なプロセッサ・サイクルおよびバス・サイクルのオーバーヘッドを与え、さらにはアルゴリズムの一部を逐次化するものである。
【０００７】
メッセージ・パッシング処理は、高速データ通信ネットワークおよびメッセージ・バッファを用いるものの、この通信により、データ通信ネットワーク上に転送オーバーヘッドが加わるほか、メッセージング・バッファ用の追加メモリの必要性とノード間のデータ通信における遅延とが加わる。並列コンピュータの設計には、通信オーバーヘッドが小さくなるように特別に設計されたデータ通信リンクが用いられているとはいえ、トラフィックの量を決めるのは、並列アルゴリズムである。
【０００８】
並列コンピュータ内のノード間のメッセージング・パッシングには、多数のデータ通信ネットワーク・アーキテクチャが使用されている。計算ノードは、例えば「トーラス」あるいは「メッシュ」としてネットワークに編成されるとよい。さらに計算ノードは、ツリーとしてネットワークに編成されてもよい。トーラス・ネットワークは、複数のノードを、ラップアラウンド・リンクを用いて３次元メッシュ状に接続する。このトーラス・ネットワークによって、全てのノードは各自の隣接する６個のノードに接続され、各ノードは、メッシュのｘ、ｙ、ｚ座標によってアドレス指定される。ツリー・ネットワークでは、ノードは一般にバイナリ・ツリーの状態に接続され、各ノードは、親と、２個の子とを有する（ただしハードウェア構成によっては、一部のノードがゼロ個あるいは１個の子しか有さない場合もある）。トーラス・ネットワークおよびツリー・ネットワークを用いるコンピュータでは、一般にこれら２つのネットワークは、別個のルーティング回路、別個の物理リンク、および別個のメッセージ・バッファを用いて互いに独立して実装される。
【０００９】
トーラス・ネットワークは、ポイント・ツー・ポイント動作に向いているが、ツリー・ネットワークは一般に、ポイント・ツー・ポイント通信では効率が悪い。一方、ツリー・ネットワークは、全ての計算ノードが同時に参加する或る特定の集団的動作すなわちメッセージ・パッシング動作に関しては、高帯域幅および低遅延をもたらす。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
並列コンピュータは、ジョブの間ずっと同時に動作する何千という多数の計算ノードを有することもあるため、並列コンピュータによって大量の電力が消費され得る。電気供給者は一般に、或る顧客が特定の量すなわちピーク電力量を上回る量の電力を消費するとその後その顧客には通常よりも高い料率で請求を行う。並列コンピュータは、ジョブの間ずっと同時に動作する多数の計算ノードのために、ピーク電力量を超える消費を行うことが多い。従って、並列コンピュータにおける事前対応型電力管理に改善の余地があることが分かる。
【課題を解決するための手段】
【００１１】
並列コンピュータにおける事前対応型電力管理の方法、サービス・ノード、および製品が開示される。上記の並列コンピュータには、サービス・ノードと複数の計算ノードとが含まれ、サービス・ノードは、帯域外サービス・ネットワークを介して計算ノードに接続されており、各計算ノードは、コンピュータ・プロセッサと、コンピュータ・プロセッサに動作可能に連結されているコンピュータ・メモリとを含む。実施形態は、並列コンピュータ内の計算ノードの動作グループにてジョブを開始するユーザ命令を、サービス・ノードによって受信すること、ただし上記命令は、計算ノードの電力管理属性を含む；動作グループの計算ノードの電力管理属性に従って、動作グループの各計算ノードに関するコンピュータ・プロセッサ電力消費割合とコンピュータ・メモリ電力消費割合とを含んだ電力消費割合を、サービス・ノードによって設定すること；ならびに、サービス・ノードによって並列コンピュータの動作グループの計算ノードにてジョブを開始することを含む。
【００１２】
本発明の上述およびその他の特徴および利点は、添付の図面に示す本発明の例示的な実施形態のより詳細な以下の説明から、明らかになるであろう。図面では、同じ参照符号は、通常本発明の例示的な実施形態の同じ部分を表す。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態による、並列コンピュータにおける事前対応型電力管理の例示的なシステムを示す図である。
【図２】本発明の実施形態による、並列コンピュータにおける事前対応型電力管理に有用な例示的な計算ノードのブロック図である。
【図３】本発明の実施形態による、並列コンピュータにおける事前対応型電力管理に有用な例示的なサービス・ノードを含んだ自動計算機のブロック図である。
【図４】図４のＡは、本発明の実施形態による、並列コンピュータにおける事前対応型電力管理が可能なシステムに有用な例示的なポイント・ツー・ポイント・アダプタを示す図である。図４のＢは、本発明の実施形態による、並列コンピュータにおける事前対応型電力管理が可能なシステムに有用な例示的なグローバル結合型ネットワーク・アダプタを示す図である。
【図５】本発明の実施形態による、並列コンピュータにおける事前対応型電力管理が可能なシステムに有用なポイント・ツー・ポイント動作向けに最適化された例示的なデータ通信ネットワークを示す線図である。
【図６】本発明の実施形態による、並列コンピュータにおける事前対応型電力管理が可能なシステムに有用な集合的動作向けに最適化された例示的なデータ通信ネットワークを示す線図である。
【図７】本発明の実施形態による、並列コンピュータにおける事前対応型電力管理の例示的な方法を示すフロー図である。
【図８】本発明の実施形態による、並列コンピュータにおける事前対応型電力管理のさらなる例示的な方法を示すフロー図である。
【発明を実施するための形態】
【００１４】
本発明の実施形態による、並列コンピュータにおける事前対応型電力管理の例示的な方法、装置およびコンピュータ製品を、図１から始まる添付図面に関連して説明する。図１は、本発明の実施形態による、並列コンピュータにおける事前対応型電力管理の例示的なシステムを示す。図１のシステムは、並列コンピュータ（１００）と、データ・ストレージ・デバイス（１１８）の形をした、上記コンピュータ用の不揮発性メモリと、プリンタ（１２０）の形をした、上記コンピュータ用の出力デバイスと、コンピュータ端末（１２２）の形をした、上記コンピュータ用の入力／出力デバイスと、を含む。図１の例の並列コンピュータ（１００）は、複数の計算ノード（１０２）を含む。
【００１５】
計算ノード（１０２）は、データ通信に向けて、いくつかの独立したデータ通信ネットワークによって連結されている。データ通信ネットワークとしては、高速イーサネット（Ｒ）ネットワーク（１７４）、ジョイント・テスト・アクション・グループ（「ＪＴＡＧ」：Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）ネットワーク（１０４）、集団的動作向けに最適化されたグローバル結合型ネットワーク（１０６）、およびポイント・ツー・ポイント動作向けに最適化されたトーラス・ネットワーク（１０８）などが挙げられる。グローバル結合型ネットワーク（１０６）は、計算ノードをツリーとして編成するように計算ノードに接続された複数のデータ通信リンクを含むデータ通信ネットワークである。各データ通信ネットワークは、計算ノード（１０２）間のデータ通信リンクによって実現される。データ通信リンクは、並列コンピュータの計算ノード間に、並列動作のためのデータ通信を提供する。
【００１６】
さらに、並列コンピュータの計算ノード（１０２）は、計算ノードから成る少なくとも１つの動作グループ（１３２）に編成される。計算ノードの動作グループは、或るジョブの実行に参加する、並列コンピュータの全計算ノードのサブセットである。動作グループは、集団的並列動作に向けて構成されることもあり、あるいはポイント・ツー・ポイント動作に向けて構成されることもある。
【００１７】
集団的動作は、動作グループの計算ノード間のデータ通信を用いて実現される。集団的動作は、或る動作グループの全ての計算ノードが関与する機能である。集団的動作は、計算ノードの動作グループ内の全計算ノードによって一斉に、言い換えればほとんど同時に実行される、メッセージ・パッシング・コンピュータ・プログラム命令の動作である。上述のような動作グループは、並列コンピュータ（１００）の全ての計算ノードを含んでもよいし、全ての計算ノードのサブセットを含んでもよい。集団的動作は、ポイント・ツー・ポイント動作を核として構築されることが多い。集団的動作では、動作グループ内の全計算ノード上の全プロセスが、マッチング引数を用いて同じ集団的動作を呼び出すことが必要である。「ブロードキャスト」は、動作グループの計算ノード間でデータを移動させる集団的動作の一例である。「リデュース（ｒｅｄｕｃｅ）」動作は、動作グループの計算ノード間に分配されたデータに対し算術的または論理的関数を実行する集団的動作の一例である。動作グループは、例えばＭＰＩ「コミュニケータ」として実現されるとよい。
【００１８】
「ＭＰＩ」とは、「Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ：メッセージング・パッシング・インターフェース」を指しており、従来技術の並列通信ライブラリであって、並列コンピュータにおけるデータ通信用のコンピュータ・プログラム命令のモジュールである。本発明の実施形態によるシステムでの使用に向けて改善され得る先行技術の並列通信ライブラリの例としては、ＭＰＩ、および「並列仮想マシン」（「ＰＶＭ」：Ｐａｒａｌｌｅｌ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）ライブラリなどがある。ＰＶＭは、テネシー大学、オークリッジ国立研究所、およびエモリー大学によって開発された。ＭＰＩは、ＭＰＩ標準を定義しこれを維持管理する多数の組織からの代表者による開放グループであるＭＰＩフォーラムによって、広められている。ＭＰＩは、本明細書記載の時点では、分散メモリ並列コンピュータにおいて並列プログラムを実行する計算ノード間の通信に関する事実上の標準である。本明細書では、説明を簡単にするために折々にＭＰＩ技術を用いるが、ＭＰＩをそのように用いることは、本発明の必要条件でも制限事項でもない。
【００１９】
一部の集団的動作は、動作グループ内の特定の計算ノードにて動作する単一の発信または受信プロセスを有する。例えば、「ブロードキャスト」集団的動作において、他の全ての計算ノードへデータを分配する計算ノードにおけるプロセスは、発信プロセスである。例えば、「ギャザ（ｇａｔｈｅｒ）」動作において、他の計算ノードから全データを受信した計算ノードにおけるプロセスは、受信プロセスである。上述のような発信または受信プロセスが動作している計算ノードを、論理ルートと称する。
【００２０】
大部分の集団的動作は、４つの基本動作：ブロードキャスト、ギャザ、スキャタ（ｓｃａｔｔｅｒ）およびリデュースの、変形または組み合わせである。こうした集団的動作のためのインターフェースは、ＭＰＩフォーラムによって広められているＭＰＩ標準に定義されている。一方、集団的動作を実行するアルゴリズムについては、ＭＰＩ標準に定義されていない。ブロードキャスト動作では、全てのプロセスが同一のルート・プロセスを指定し、そのルート・プロセスのバッファの内容が送信されることになる。ルート・プロセス以外のプロセスは、受信バッファを指定する。本動作の終了後、全てのバッファがルート・プロセスからのメッセージを含んでいる。
【００２１】
スキャタ動作では、論理ルートが、ルートにあるデータをセグメントに分割し、動作グループの各計算ノードに対し別個のセグメントを分配する。スキャタ動作では、一般に全てのプロセスが同一のｒｅｃｅｉｖｅ  ｃｏｕｎｔを指定する。送信引数は、ルート・プロセスにとってのみ有意であり、ルート・プロセスのバッファには、所与のデータ型の、ｓｅｎｄｃｏｕｎｔ＊Ｎ個の要素が実際に含まれている。この場合Ｎは、計算ノードの所与のグループ内のプロセス数である。上述の送信バッファは、分割されて全プロセス（論理ルート上のプロセスも含む）に分散させられる。各々の計算ノードには、「ランク」と呼ばれる連続した識別子が割り当てられている。本動作の終了後、ルートは、ランクの小さい方から順に各プロセスへｓｅｎｄｃｏｕｎｔ個ずつデータ要素を送信済みである。ランク０は、１番目のｓｅｎｄｃｏｕｎｔ個のデータ要素を送信バッファから受信する。ランク１は、２番目のｓｅｎｄｃｏｕｎｔ個のデータ要素を送信バッファから受信する、などである。
【００２２】
ギャザ動作は、多対１の集団的動作であって、スキャタ動作に関する記載の全く逆である。すなわちギャザは、或るデータ型の要素を、ランク付けされた複数の計算ノードからルート・ノードにある受信バッファへと集める、多対１の集団的動作である。
【００２３】
リデュース動作は、同様に多対１の集団的動作であって、２つのデータ要素に対して施される算術的または論理的関数が含まれる。全てのプロセスが、同一の「ｃｏｕｎｔ」、ならびに同一の算術的または論理的関数を指定する。リダクション（ｒｅｄｕｃｔｉｏｎ）終了後、全てのプロセスがｃｏｕｎｔ個のデータ要素を、計算ノードの送信バッファからルート・プロセスへ送信済みである。リダクション動作では、対応する送信バッファ位置からのデータ要素は算術的あるいは論理的演算によってペアワイズで組み合わされ、ルート・プロセスの受信バッファにおいて単一の対応要素が得られるようにする。アプリケーションに固有のリダクション動作を、実行時に定義することができる。並列通信ライブラリが、定義済みの動作をサポートしているとよい。例えばＭＰＩは、以下の定義済みリダクション動作を提供する：
ＭＰＩ＿ＭＡＸ    最大値
ＭＰＩ＿ＭＩＮ    最小値
ＭＰＩ＿ＳＵＭ    和
ＭＰＩ＿ＰＲＯＤ    積
ＭＰＩ＿ＬＡＮＤ    論理積
ＭＰＩ＿ＢＡＮＤ    ビット単位の論理積
ＭＰＩ＿ＬＯＲ    論理和
ＭＰＩ＿ＢＯＲ    ビット単位の論理和
ＭＰＩ＿ＬＸＯＲ    排他的論理和
ＭＰＩ＿ＢＸＯＲ    ビット単位の排他的論理和
【００２４】
計算ノードに加え、並列コンピュータ（１００）には、データ通信ネットワーク（１７４）のうちの１つを介して計算ノード（１０２）に連結されている入力／出力（「Ｉ／Ｏ」）ノード（１１０、１１４）が含まれる。Ｉ／Ｏノード（１１０、１１４）は、計算ノード（１０２）とＩ／Ｏデバイス（１１８、１２０、１２２）との間にＩ／Ｏサービスを提供する。Ｉ／Ｏノード（１１０、１１４）は、データ通信に向けて、ローカル・エリア・ネットワーク（「ＬＡＮ」：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）（１３０）を介してＩ／Ｏデバイス（１１８、１２０、１２２）に接続されている。並列コンピュータ（１００）はさらに、ネットワーク（１０４）のうちの１つを介して計算ノードに連結されているサービス・ノード（１１６）を含む。サービス・ノード（１１６）は、複数の計算ノードに共通するサービス、すなわち、計算ノードへプログラムをロードすること、計算ノードにてプログラム実行を開始すること、計算ノードにおけるプログラム動作の結果を取り出すこと、などを提供する。サービス・ノード（１１６）は、サービス・アプリケーション（１２４）を実行し、コンピュータ端末（１２２）上で動作するサービス・アプリケーション・インターフェース（１２６）を介してユーザ（１２８）と通信する。
【００２５】
本明細書において下記にさらに詳しく記載するように、図１のシステムは一般に、本発明の実施形態による並列コンピュータにおける事前対応型電力管理に向けて動作する。本発明の実施形態による並列コンピュータにおける電力管理は概して事前対応型と記載されているが、その理由は、並列コンピュータの先々の問題、必要性あるいは変化を予想した上で電力が管理されているからである。このような事前対応型管理は、並列コンピュータの先々の問題、必要性あるいは変化を予想しない電力管理である事後対応型電力管理とは、対照的である。図１のシステムは、以下のことが可能である：並列コンピュータ（１００）内の計算ノード（１０２）の動作グループ（１３２）にてジョブを開始するユーザ（１２８）命令を、サービス・ノード（１１６）によって受信すること；動作グループ（１３２）の計算ノード（１０２）の電力管理属性に従って、動作グループ（１３２）の各計算ノード（１０２）に関するコンピュータ・プロセッサ電力消費割合とコンピュータ・メモリ電力消費割合とを含んだ電力消費割合を、サービス・ノード（１１６）によって設定すること；および、サービス・ノード（１１６）によって並列コンピュータ（１００）の動作グループ（１３２）の計算ノード（１０２）にてジョブを開始すること。
【００２６】
並列コンピュータによって行われるジョブは、アプリケーションの実行のインスタンスである。そのようなアプリケーションには、動作グループの各計算ノードに向けたコンピュータ・プログラム命令が含まれる。故に、ジョブを行うことは、アプリケーションのコンピュータ・プログラム命令を実行することを含む。
【００２７】
上述のようなジョブを開始するユーザ命令には、計算ノードの電力管理属性が含まれる。電力管理属性は、動作グループの１つ以上の計算ノードの可変の電力消費機能を管理するためにサービス・ノードが使用するパラメータである。図１の例による標準的な計算ノードは、プロセッサの電力消費がジョブによって異なることに対処し、メモリの電力消費がジョブによって異なることに対処する。本発明の実施形態による電力管理属性は、並列コンピュータの或る動作グループ内の計算ノードに関する電力消費割合と、アイドル・サイクルの時間の長さとを含む。電力消費割合は、コンピュータ・プログラム命令実行中の計算ノードの電力消費を制御するためのパラメータである。電力消費割合には、コンピュータ・プロセッサ電力消費割合と、コンピュータ・メモリ電力消費割合とが含まれる。各々の割合は、実行サイクル対アイドル・サイクルの割合として表される。実行サイクルとは、コンピュータ・メモリまたはコンピュータ・プロセッサが命令を実行している期間である。言い換えれば、実行サイクルは、コンピュータ・メモリまたはコンピュータ・プロセッサがアクティブな期間である。それに対しアイドル・サイクルとは、コンピュータ・プロセッサまたはコンピュータ・メモリがアイドルである、言い換えれば、何も命令を実行していない期間である。アイドル状態にあるときは、コンピュータ・プロセッサもコンピュータ・メモリも電力を消費していない。
【００２８】
上述のように、電力消費属性は、アイドル・サイクルの時間の長さをも含む。アイドル・サイクルの時間が長いほど、そのようなアイドル・サイクルの期間中、計算ノードのコンピュータ・プロセッサまたはコンピュータ・メモリがより長くアイドル状態になる。サービス・ノードが、電力消費割合を設定するときに、アイドル・サイクルの時間の長さを設定するとよい。
【００２９】
電力管理属性は、ジョブ固有にすることもできる。言い換えれば、ユーザは、１つのジョブに対して特定の一連の電力管理属性を用意し、別のジョブに対して全く異なる一連の電力管理属性を用意してもよい。別の方法では、ユーザが、或るジョブ・グループに対して１つの一連の電力管理属性を用意すること、あるいは、ルールに基づいて適用されるように一連の電力管理属性を用意することもできる。例えばユーザは、夏の数ヶ月間に実施される全てのジョブに対して適用させるように１つの一連の電力管理属性を用意し、同年の残りの月に適用させるように１つの一連の電力管理属性を用意してもよい。
【００３０】
図１のサービス・ノード（１１６）は、サービス・アプリケーション（１２４）、すなわち並列コンピュータ（１００）内の計算ノード（１０２）の動作グループ（１３２）にてジョブを開始するユーザ（１２８）命令をサービス・ノード（１１６）によって受信することを可能にするコンピュータ・プログラム命令のモジュールを含み、上記ユーザ命令は、計算ノードの電力管理属性を含む。並列コンピュータ（１００）内の計算ノードの動作グループにてジョブを開始するユーザ命令を受信することは、サービス・アプリケーション・インターフェース（１２６）によって提供されるグラフィカル・ユーザ・インターフェース（「ＧＵＩ」：ｇｒａｐｈｉｃａｌ  ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）を介してユーザ（１２８）が入力した電力管理属性を、端末（１２２）から受信することによって、行われるとよい。上述のようなＧＵＩは、コンピュータ・プロセッサおよびコンピュータ・メモリ双方の電力消費割合に適用される実行サイクル対アイドル・サイクルの単一の割合に加えて、アイドル・サイクルの時間の長さをも受け付けるように、特別に構成されているとよい。あるいはＧＵＩは、実行サイクル対アイドル・サイクルの２つの別個の割合、すなわちコンピュータ・プロセッサ電力消費割合として設定される１つの割合とコンピュータ・メモリ電力消費割合として設定される１つの割合とに加えて、アイドル・サイクルの時間の長さを受け付けるように、特別に構成されていてもよい。
【００３１】
図１のサービス・アプリケーション（１２４）は、さらに、動作グループの計算ノード（１０２）の電力管理属性に従って、動作グループの各計算ノードに関するコンピュータ・プロセッサ電力消費割合とコンピュータ・メモリ電力消費割合とを含んだ電力消費割合をサービス・ノード（１１６）によって設定することを可能にするコンピュータ・プログラム命令を含む。動作グループ（１３２）の各計算ノード（１０２）に関する電力消費割合を設定することは、動作グループ（１３２）内の計算ノード（１０２）各々を電力消費割合を用いて構成することによって、行われるとよい。言い換えれば、計算ノード各々の中のコンピュータ・メモリを、電力消費割合を用いて構成するということである。
【００３２】
図１のシステムでは、例示的なサービス・ノード（１１６）が、帯域外サービス・ネットワーク、すなわちＪＴＡＧネットワーク（１０４）を介して電力管理属性を設定する。図１のサービス・ネットワークはＪＴＡＧネットワークとして図示されているが、当業者には当然のことながら、サービス・ネットワークは、サービス・ノード（１１６）と計算ノード（１０２）との間の帯域外通信を可能にすることのできる任意の通信リンクとして実装されればよい。そのような帯域外通信リンクとしては、例えば、当業者には思い当たるように、インター・インテグレーテッド回路（「Ｉ２Ｃ」：Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）バス、１−Ｗｉｒｅ（Ｒ）バス、周辺コンポーネント相互接続（「ＰＣＩ」：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス、システム管理バス（「ＳＭＢ」：Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）、シリアル周辺インターフェース（「ＳＰＩ」：ｓｅｒｉａｌ  ｐｅｒｉｐｈｅｒａｌ  ｉｎｔｅｒｆａｃｅ）、インテリジェント・プラットフォーム管理バス（「ＩＰＭＢ」：Ｉｎｔｅｌｌｉｇｅｎｔ  ｐｌａｔｆｏｒｍ  ｍａｎａｇｅｍｅｎｔ  ｂｕｓ）などを挙げることができる。
【００３３】
図１のサービス・アプリケーション（１２４）は、さらに、サービス・ノード（１１６）によって並列コンピュータ（１００）の動作グループ（１３２）の計算ノード（１０２）にてジョブを開始することを可能にするコンピュータ・プログラム命令をも含む。並列コンピュータ（１００）の動作グループ（１３２）の計算ノード（１０２）にてジョブを開始することは、動作グループ（１３２）内の各計算ノード（１０２）を各自のジョブ固有のコンピュータ・プログラム命令を用いて構成し、そのコンピュータ・プログラム命令を実行させる通知を動作グループ（１３２）の計算ノード（１０２）へ送信することによって、行なわれるとよい。
【００３４】
図１に示す例示的なシステムを構成しているノード、ネットワーク、およびＩ／Ｏデバイスの配列は説明のためのものに過ぎず、本発明を制限するためのものではない。本発明の実施形態による並列コンピュータにおける事前対応型電力管理が可能なデータ処理システムには、当業者には思い当たるように、図１には示さない追加的なノード、ネットワーク、デバイス、およびアーキテクチャを含めてもよい。図１の例における並列コンピュータ（１００）は１６個の計算ノード（１０２）を含んでいるが、本発明の実施形態による並列コンピュータにおける事前対応型電力管理が可能な並列コンピュータには、いくつの計算ノードを含めてもよいことが分かるだろう。上述のようなデータ処理システムにおけるネットワークは、イーサネットおよびＪＴＡＧに加え、多数のデータ通信プロトコルをサポートしていてもよく、例えば、当業者には思い当たるように、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ：伝送制御プロトコル）、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ：インターネット・プロトコル）などが挙げられる。本発明の多様な実施形態は、図１に示すハードウェア・プラットフォームのほかに、様々なハードウェア・プラットフォームにて実現することができる。
【００３５】
本発明の実施形態による並列コンピュータにおける事前対応型電力管理は、複数の計算ノードを含んだ並列コンピュータ上で実現されるとよい。実際、そのようなコンピュータには、上述のような計算ノードが何千も含まれることがある。さらには、各計算ノードそれ自体が、１つ以上のコンピュータ・プロセッサ、独自のコンピュータ・メモリ、および独自の入力／出力アダプタから成る一種のコンピュータとなっている。そこでさらなる説明のために、図２に、本発明の実施形態による並列コンピュータにおける事前対応型電力管理に有用な例示的な計算ノードのブロック図を示す。図２の計算ノード（１５２）は、１つ以上のコンピュータ・プロセッサ（１６４）のほか、ランダム・アクセス・メモリ（「ＲＡＭ」：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）（１５６）を含む。プロセッサ（１６４）は、高速メモリ・バス（１５４）を介してＲＡＭ（１５６）に接続され、さらにバス・アダプタ（１９４）および拡張バス（１６８）を介して、計算ノード（１５２）のその他のコンポーネントに接続されている。ＲＡＭ（１５６）に保存されているのは、アプリケーション・プログラム（１５８）、すなわち、並列したユーザレベルのデータ処理を並列アルゴリズムを用いて行うコンピュータ・プログラム命令のモジュールである。図２のアプリケーション（１５８）は、他の計算ノードへの伝送に向けてメッセージを保存するアプリケーション・バッファを確保する。
【００３６】
同様にＲＡＭ（１５６）に保存されているのは、メッセージング・モジュール（１６０）、すなわち、ポイント・ツー・ポイント動作ならびに集合的動作を含む計算ノード間の並列通信を行うコンピュータ・プログラム命令のライブラリである。アプリケーション・プログラム（１５８）は、メッセージング・モジュール（１６０）にあるソフトウェア・ルーチンを呼び出すことによって、集団的動作を実行する。並列通信ルーチンのライブラリは、２つの独立したデータ通信ネットワークにてノード間でデータを送受信する並列通信ルーチンを書くべく、Ｃプログラミング言語など従来のプログラミング言語を用い、さらに従来のプログラミング方法を用いて、本発明の実施形態によるシステムでの使用に向けて一から開発することができる。あるいは、本発明の実施形態に従って動作するように、既存の従来技術のライブラリを改善してもよい。従来技術の並列通信ライブラリとしては、「メッセージ・パッシング・インターフェース」（「ＭＰＩ」）ライブラリおよび「並列仮想マシン」（「ＰＶＭ」）ライブラリが挙げられる。
【００３７】
同様にＲＡＭ（１５６）に保存されているのは、オペレーティング・システム（１６２）、すなわち、計算ノードの他の資源に対するアプリケーション・プログラムのアクセスのためのコンピュータ・プログラム命令およびルーチンのモジュールである。並列コンピュータの計算ノードにあるアプリケーション・プログラムおよび並列通信ライブラリは、ユーザ・ログインも用いずセキュリティ問題もなく、実行の単一スレッドを動作させるのが標準的である。これは、上記スレッドが、当該ノードの全ての資源に対する完全なアクセス権を与えられているためである。従って、並列コンピュータ内の計算ノード上のオペレーティング・システムによって実施されるタスクの量および複雑度は、多数のスレッドが同時に動作している逐次コンピュータ上のオペレーティング・システムによって実施されるタスクの量および複雑度に比べると、少量であり単純である。加えて、図２の計算ノード（１５２）には映像Ｉ／Ｏがなく、オペレーティング・システムに対する要求を減らすもう１つの要因となっている。従って、本オペレーティング・システムは、汎用コンピュータのオペレーティング・システムと比べるとかなり軽くなり、言わば軽量版のようなものとすることもでき、あるいは特定の並列コンピュータ上での動作に向けて特別に開発されたオペレーティング・システムとすることもできる。計算ノードでの使用に向けて有用に改善され単純化され得るオペレーティング・システムとしては、当業者には思い当たるように、ＵＮＩＸ（Ｒ）、Ｌｉｎｕｘ（Ｒ）、Ｍｉｃｒｏｓｏｆｔ  ＸＰ（Ｒ）、ＩＢＭ  ＡＩＸ（ＩＢＭ社の登録商標）、ＩＢＭ  ｉ５／ＯＳ（ＩＢＭ社の登録商標）などが挙げられる。
【００３８】
同様にＲＡＭ（１５６）に保存されているのは、コンピュータ・プロセッサ電力消費割合（７１４）とコンピュータ・メモリ電力消費割合（７１６）とを含んだ電力消費割合（７１２）である。電力消費割合は、コンピュータ・プログラム命令を実行中の計算ノードの電力消費を制御するパラメータである。電力消費割合（７１２）は、サービス・ノードによって設定される。計算ノード（１５２）は、アプリケーション（１５８）を実行中、上述の電力消費割合（７１２）に従って動作する。
【００３９】
図２の例示的な計算ノード（１５２）は、並列コンピュータの他のノードとデータ通信を実施するように、いくつかの通信アダプタ（１７２、１７６、１８０、１８８）を含む。そのようなデータ通信は、ＲＳ−２３２接続を介すこと、ＵＳＢなどの外部バスを介すこと、ＩＰネットワークなどのデータ通信ネットワークを介すこと、および当業者には思い当たるであろうその他の方法を介すことによって、逐次的に行われてもよい。通信アダプタは、データ通信のハードウェア・レベルを実現しており、これを通じて１つのコンピュータが、直接あるいはネットワークを介して別のコンピュータにデータ通信を送信する。本発明の実施形態による並列コンピュータにおける事前対応型電力管理用のシステムに有用な通信アダプタの例としては、有線通信用のモデム、有線ネットワーク通信用のイーサネット（ＩＥＥＥ  ８０２．３）アダプタ、およびワイヤレス・ネットワーク通信用の８０２．１１ｂアダプタなどが挙げられる。
【００４０】
図２の例におけるデータ通信アダプタには、例示の計算ノード（１５２）をデータ通信に向けてギガビット・イーサネット（１７４）に連結する、ギガビット・イーサネット・アダプタ（１７２）が含まれる。ギガビット・イーサネットは、ＩＥＥＥ  ８０２．３標準に定義されているネットワーク伝送標準であり、１秒あたり１０億ビット（１ギガビット）のデータ・レートを提供する。ギガビット・イーサネットは、イーサネットの変形体であり、多モード光ファイバ・ケーブル、単一モード・光ファイバ・ケーブル、あるいは非シールドより対線で動作する。
【００４１】
図２の例におけるデータ通信アダプタには、例示の計算ノード（１５２）をデータ通信に向けてＪＴＡＧマスタ回路（１７８）に連結する、ＪＴＡＧスレーブ回路（１７６）が含まれる。ＪＴＡＧは、バウンダリ・スキャンを用いたプリント回路基板の検査に使用されるテスト・アクセス・ポートに関する、標準テスト・アクセス・ポートおよびバウンダリ・スキャン・アーキテクチャと題されたＩＥＥＥ  １１４９．１標準に対して使われる通称である。ＪＴＡＧは非常に広く適応しており、そのため現時点ではバウンダリ・スキャンとＪＴＡＧとはほぼ同義である。ＪＴＡＧは、プリント回路基板のためだけではなく、集積回路のバウンダリ・スキャンを行うためにも使用され、さらには組み込みシステムをデバッグする機構としても有用であって、便利な「バック・ドア」をシステムに与えている。図２の例の計算ノードは、上記３つの全てであり得る：本計算ノードは一般に、プリント回路基板上に実装された１つ以上の集積回路を含み、さらに、独自のプロセッサ、独自のメモリ、および独自のＩ／Ｏ機能を有する組み込みシステムとして実現され得る。ＪＴＡＧスレーブ（１７６）を介したＪＴＡＧバウンダリ・スキャンにより、計算ノード（１５２）のプロセッサ・レジスタおよびメモリを、本発明の実施形態による並列コンピュータにおける事前対応型電力管理での使用に向けて効率的に構成することができる。
【００４２】
図２の例におけるデータ通信アダプタには、ポイント・ツー・ポイントアダプタ（１８０）が含まれる。このポイント・ツー・ポイント・アダプタは、例示の計算ノード（１５２）を、データ通信に向けて、例えば３次元トーラスまたはメッシュとして構成されているネットワークなど、ポイント・ツー・ポイントのメッセージ・パッシング動作に最適なネットワーク（１０８）に対し、連結する。ポイント・ツー・ポイント・アダプタ（１８０）は、３つの通信軸すなわちｘ、ｙおよびｚ上で、６つの双方向リンク：＋ｘ（１８１）、−ｘ（１８２）、＋ｙ（１８３）、−ｙ（１８４）、＋ｚ（１８５）、および−ｚ（１８６）を通じて、６方向にデータ通信を提供する。
【００４３】
図２の例におけるデータ通信アダプタには、グローバル結合型ネットワーク・アダプタ（１８８）が含まれる。このグローバル結合型ネットワーク・アダプタは、例示の計算ノード（１５２）を、データ通信に向けて、例えばバイナリ・ツリーとして構成されているグローバル結合型ネットワークにおける集合的なメッセージ・パッシング動作に最適なネットワーク（１０６）に対し、連結する。グローバル結合型ネットワーク・アダプタ（１８８）は、３つの双方向リンク：子ノード（１９０）に対する２つのリンクならびに親ノード（１９２）に対する１つのリンクを通じて、データ通信を提供する。
【００４４】
例示の計算ノード（１５２）は、２つの算術的論理ユニット（「ＡＬＵ」）：ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）を含む。ＡＬＵ（１６６）は、プロセッサ（１６４）のコンポーネントである。さらに別個のＡＬＵ（１７０）が、グローバル結合型ネットワーク・アダプタ（１８８）専用となっており、リダクション動作の算術的および論理的関数の実施に使用される。並列通信ライブラリ（１６０）にある、リダクション・ルーチンのコンピュータ・プログラム命令が、算術的または論理的関数の命令を、命令レジスタ（１６９）にラッチするとよい。例えば、リダクション動作の算術的または論理的関数が「和」または「論理和」であるとき、グローバル結合型ネットワーク・アダプタ（１８８）は、プロセッサ（１６４）にあるＡＬＵ（１６６）を用いて、あるいは一般にはより高速に専用のＡＬＵ（１７０）を用いて、算術的または論理的演算を実行すればよい。
【００４５】
そこでさらなる説明のために、図３に、本発明の実施形態による並列コンピュータにおける事前対応型電力管理に有用な例示的なサービス・ノード（２５２）を含んだ自動計算機のブロック図を示す。図３のサービス・ノード（２５２）は、少なくとも１つのコンピュータ・プロセッサ（２５６）すなわち「ＣＰＵ」のほか、高速メモリ・バス（２６６）およびバス・アダプタ（２５８）を介してプロセッサ（２５６）とサービス・ノードのその他のコンポーネントとに接続されているランダム・アクセス・メモリ（２６８）（「ＲＡＭ」）を含む。
【００４６】
ＲＡＭ（２６８）に保存されているのは、サービス・アプリケーション（１２４）、すなわち本発明の実施形態による並列コンピュータにおいて事前対応的に電力を管理することの可能なコンピュータ・プログラム命令のモジュールである。図３のサービス・アプリケーション（１２４）は、以下のことを可能にするコンピュータ・プログラム命令を含む：並列コンピュータ内の計算ノードの動作グループにてジョブを開始するユーザ命令（７０６）を、サービス・ノード（２５２）によって受信すること、ただし上記ユーザ命令は、計算ノードの電力管理属性（７０８）を含む；動作グループの計算ノードの電力管理属性に従って、動作グループの各計算ノードに関するコンピュータ・プロセッサ電力消費割合とコンピュータ・メモリ電力消費割合とを含んだ電力消費割合を、サービス・ノードによって設定すること；および、サービス・ノードによって、並列コンピュータの動作グループの計算ノードにてジョブを開始すること。
【００４７】
同様にＲＡＭ（２６８）に保存されているのは、オペレーティング・システム（２５４）である。本発明の実施形態によるサービス・ノードに有用なオペレーティング・システムとしては、当業者には思い当たるように、ＵＮＩＸ（Ｒ）、Ｌｉｎｕｘ（Ｒ）、Ｍｉｃｒｏｓｏｆｔ  Ｖｉｓｔａ（Ｒ）、Ｍｉｃｒｏｓｏｆｔ  ＸＰ（Ｒ）、ＩＢＭ  ＡＩＸ（ＩＢＭ社の登録商標）、ＩＢＭ  ｉ５／ＯＳ（ＩＢＭ社の登録商標）などが挙げられる。図３の例ではオペレーティング・システム（２５４）およびメディア・サーバ・アプリケーション・プログラム（２０２）がＲＡＭ（２６８）の中に図示されているが、このようなソフトウェアの多くのコンポーネントは一般に、例えばディスク・ドライブ（２７０）上で、不揮発性メモリにも同様に保存される。図３のサービス・ノード（２５２）には、バス・アダプタ（２５８）が含まれ、このバス・アダプタは、複数の高速バスすなわちフロント・サイド・バス（２６２）、映像バス（２６４）、およびメモリ・バス（２６６）のためのドライブ・エレクトロニクスのほか低速な拡張バス（２６０）のためのドライブ・エレクトロニクスを含んでいる、コンピュータ・ハードウェア・コンポーネントである。本発明の実施形態による事前対応型電力管理に有用なバス・アダプタの例としては、インテル・ノースブリッジ、インテル・メモリ・コントローラ・ハブ、インテル・サウスブリッジ、およびインテルＩ／Ｏコントローラ・ハブが挙げられる。本発明の実施形態による並列コンピュータにおける事前対応型電力管理に有用な拡張バスの例としては、業界標準アーキテクチャ（「ＩＳＡ」：Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、および周辺コンポーネント相互接続（「ＰＣＩ」）バスが挙げられる。
【００４８】
図３のサービス・ノード（２５２）には、拡張バス（２６０）およびバス・アダプタ（２５８）を介してプロセッサ（２５６）とサービス・ノード（２５２）のその他のコンポーネントとに連結されているディスク・ドライブ・アダプタ（２７２）が含まれる。ディスク・ドライブ・アダプタ（２７２）は、不揮発性データ・ストレージを、ディスク・ドライブ（２７０）の形でサービス・ノード（２５２）に接続する。サービス・ノードにおいて有用なディスク・ドライブ・アダプタとしては、当業者には思い当たるように、統合ドライブ・エレクトロニクス（「ＩＤＥ」：Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）アダプタ、小型コンピュータ・システム・インターフェース（「ＳＣＳＩ」：Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）アダプタなどが挙げられる。加えて、不揮発性コンピュータ・メモリは、当業者には思い当たるように、光ディスク・ドライブ、電気的に消去可能なプログラム可能読み取り専用メモリ（いわゆる「ＥＥＰＲＯＭ」：ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ、または「フラッシュ」メモリ）、ＲＡＭドライブなどとして、サービス・ノード用に実装されてもよい。
【００４９】
図３の例のサービス・ノード（２５２）は、１つ以上の入力／出力（「Ｉ／Ｏ」）アダプタ（２７８）を含む。サービス・ノードにあるＩ／Ｏアダプタは、例えば、コンピュータ・ディスプレイ・スクリーンなどのディスプレイ・デバイスへの出力のほかキーボードおよびマウスなどのユーザ入力デバイス（２８１）からのユーザ入力を制御するソフトウェア・ドライバおよびコンピュータ・ハードウェアを介して、ユーザ指向の入力／出力を実現する。図３の例のサービス・ノード（２５２）には、ディスプレイ・スクリーンまたはコンピュータ・モニタなどのディスプレイ・デバイス（２８０）に対するグラフィックな出力に向けて特別に設計されたＩ／Ｏアダプタの一例である、映像アダプタ（２０９）が含まれる。映像アダプタ（２０９）は、高速映像バス（２６４）、バス・アダプタ（２５８）、および同様に高速バスであるフロント・サイド・バス（２６２）を介して、プロセッサ（２５６）に接続されている。
【００５０】
図３の例示的なサービス・ノード（２５２）は、他のコンピュータ（２８２）とのデータ通信、ならびにデータ通信ネットワーク（２００）とのデータ通信のための、通信アダプタ（２６７）を含む。そのようなデータ通信は、ＲＳ−２３２接続を介すこと、ユニバーサル・シリアル・バス（「ＵＳＢ」：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などの外部バスを介すこと、ＩＰデータ通信ネットワークなどのデータ通信ネットワークを介すこと、および当業者には思い当たるであろうその他の方法を介すことによって、逐次的に行われてもよい。通信アダプタは、データ通信のハードウェア・レベルを実現しており、これを通じて１つのコンピュータが、直接あるいはデータ通信ネットワークを介して別のコンピュータにデータ通信を送信する。本発明の実施形態による並列コンピュータにおける事前対応型電力管理に有用な通信アダプタの例としては、有線ダイアルアップ通信用のモデム、有線データ通信ネットワーク通信用のイーサネット（ＩＥＥＥ  ８０２．３）アダプタ、およびワイヤレ・スデータ通信ネットワーク通信用の８０２．１１アダプタなどが挙げられる。
【００５１】
さらなる説明のために、図４のＡに、本発明の実施形態による並列コンピュータにおける事前対応型電力管理が可能なシステムに有用な例示的なポイント・ツー・ポイント・アダプタ（１８０）を示す。ポイント・ツー・ポイント・アダプタ（１８０）は、ポイント・ツー・ポイント動作向けに最適化されたデータ通信ネットワーク、すなわち計算ノードを３次元トーラスまたはメッシュに編成するネットワークで使用するように、設計されている。図４のＡの例におけるポイント・ツー・ポイント・アダプタ（１８０）は、ｘ軸に沿って、−ｘ方向（１８２）の隣のノードに対する往復と＋ｘ方向（１８１）の隣のノードに対する往復との４つの単方向データ通信リンクを通じて、データ通信を提供する。ポイント・ツー・ポイント・アダプタ（１８０）はさらに、ｙ軸に沿って、−ｙ方向（１８４）の隣のノードに対する往復と＋ｙ方向（１８３）の隣のノードに対する往復との４つの単方向データ通信リンクを通じて、データ通信を提供する。図４Ａのポイント・ツー・ポイント・アダプタ（１８０）はさらに、ｚ軸に沿って、−ｚ方向（１８６）の隣のノードに対する往復と＋ｚ方向（１８５）の隣のノードに対する往復との４つの単方向データ通信リンクを通じて、データ通信を提供する。
【００５２】
さらなる説明のために、図４のＢに、本発明の実施形態による並列コンピュータにおける事前対応型電力管理が可能なシステムに有用な例示的なグローバル結合型ネットワーク・アダプタ（１８８）を示す。グローバル結合型ネットワーク・アダプタ（１８８）は、集合的動作向けに最適化されたネットワーク、すなわち並列コンピュータの計算ノードをバイナリ・ツリーに編成するネットワークで使用するように、設計されている。図４Ｂの例におけるグローバル結合型ネットワーク・アダプタ（１８８）は、４つの単方向データ通信リンク（１９０）を通じて、２つの子ノードに対する往復のデータ通信を提供する。グローバル結合型ネットワーク・アダプタ（１８８）はさらに、２つの単方向データ通信リンク（１９２）を通じて、親ノードに対する往復のデータ通信を提供する。
【００５３】
さらなる説明のために、図５に、本発明の実施形態による並列コンピュータにおける事前対応型電力管理が可能なシステムに有用なポイント・ツー・ポイント動作向けに最適化された例示的なデータ通信ネットワーク（１０８）を説明する線図を示す。図５の例において、複数の点は並列コンピュータの計算ノード（１０２）を表し、各点の間の点線は、計算ノード間のデータ通信リンク（１０３）を表す。データ通信リンク（１０３）は、例として図４Ａに示したものに類似するポイント・ツー・ポイント・データ通信アダプタを用いて実装され、ｘ、ｙおよびｚの３本の軸上で＋ｘ（１８１）、−ｘ（１８２）、＋ｙ（１８３）、−ｙ（１８４）、＋ｚ（１８５）、および−ｚ（１８６）の６方向に行き来するデータ通信リンクを備える。リンクおよび計算ノードは、ポイント・ツー・ポイント動作向けに最適化されたこのデータ通信ネットワークによって、３次元メッシュ（１０５）に編成される。メッシュ（１０５）は、各軸上に、メッシュ（１０５）の最も外側にある各計算ノードをメッシュ（１０５）の両端で接続するラップアラウンド・リンクを有している。こうしたラップアラウンド・リンクは、トーラス（１０７）の一部を形成する。トーラス内の計算ノードは各々、一連のｘ、ｙ、ｚ座標によって一意に特定される位置をトーラスにて有する。当然分かるように、ｙ方向およびｚ方向のラップアラウンド・リンクは、分かりやすくするために省略されているが、ｘ方向に示すラップアラウンド・リンクと同様のやり方で構成される。説明を分かりやすくするために、図５のデータ通信ネットワークは専ら２７個の計算ノードを用いて図示されているが、当然のことながら、本発明の実施形態による並列コンピュータにおける事前対応型電力管理で使用されるポイント・ツー・ポイント動作向けに最適化されたデータ通信ネットワークには、ほんの数個の計算ノードだけを含めることも、あるいは何千もの計算ノードを含めることもできる。
【００５４】
さらなる説明のために、図６に、本発明の実施形態による並列コンピュータにおける事前対応型電力管理が可能なシステムに有用な集合的動作向けに最適化された、例示的なデータ通信ネットワーク（１０６）を説明する線図を示す。図６の例のデータ通信ネットワークは、計算ノードをツリーとして編成するように計算ノードに接続されているデータ通信リンクを含む。図６の例において、複数の点は並列コンピュータの計算ノード（１０２）を表し、各点の間の点線（１０３）は、計算ノード間のデータ通信リンクを表す。データ通信リンクは、例として図４Ｂに示したものに類似するグローバル結合型ネットワーク・アダプタを用いて実装され、一部の例外を除いて一般に、各ノードが、２つの子ノードに対する往復のデータ通信、および親ノードに対する往復のデータ通信を提供する。バイナリ・ツリー（１０６）内のノードは、物理ルート・ノード（２０２）、ブランチ・ノード（２０４）、およびリーフ・ノード（２０６）と特徴付けることができる。ルート・ノード（２０２）は、子を２つ有するが、親は有さない。リーフ・ノード（２０６）の各々は親を有するが、リーフ・ノードは子は有さない。ブランチ・ノード（２０４）の各々は、親と２つの子との双方を有する。その結果リンクおよび計算ノードは、集合的動作向けに最適化された上記のデータ通信ネットワークによって、バイナリ・ツリー（１０６）に編成される。説明を分かりやすくするために、図６のデータ通信ネットワークは専ら３１個の計算ノードを用いて図示されているが、当然のことながら、本発明の実施形態による並列コンピュータにおける事前対応型電力管理用のシステムで使用される集合的動作向けに最適化されたデータ通信ネットワークには、ほんの数個の計算ノードだけを含めることも、あるいは何千もの計算ノードを含めることもできる。
【００５５】
図６の例において、ツリーの中の各ノードは、「ランク」（２５０）と称されるユニット識別子を割り当てられている。ノードのランクは、ツリー・ネットワークにおけるポイント・ツー・ポイント動作および集合的動作の双方での使用に向けて、ツリー・ネットワークにて当該ノードの位置を一意に特定する。本例でのランクは、ルート・ノード（２０２）に割り当てられた０から始まり、ツリーの第２層の１番目のノードに割り当てられた１、ツリーの第２層の２番目のノードに割り当てられた２、ツリーの第３層の１番目のノードに割り当てられた３、ツリーの第３層の２番目のノードに割り当てられた４というように、整数として割り当てられている。ここでは例示しやすいようにツリーの最初の３層のランクのみを示しているが、ツリー・ネットワーク内の全ての計算ノードが、一意のランクを割り当てられる。
【００５６】
さらなる説明のために、図７に、本発明の実施形態による並列コンピュータにおける事前対応型電力管理の例示的な方法を説明するフロー図を示す。並列コンピュータは、動作グループ（１３２）として編成された複数の計算ノード（１０２）を含む。並列コンピュータはさらに、ＪＴＡＧネットワーク（図１における１０４）などの帯域外サービス・ネットワークを介して計算ノード（１０２）に接続されているサービス・ノード（１１６）を含む。各計算ノード（１０２）は、コンピュータ・プロセッサと、コンピュータ・プロセッサに動作可能に連結されたコンピュータ・メモリとを含む。一部の実施形態では、複数の計算ノード（１０２）は、データ通信に向けて、複数のデータ通信ネットワークによって接続されている。複数のデータ通信ネットワークには、ポイント・ツー・ポイント・データ通信向けに最適化されたデータ通信ネットワーク（図１における１０８）が含まれるとよい。複数のデータ通信ネットワークにはさらに、集合的動作向けに最適化されたデータ通信ネットワーク（図１における１０６）が含まれるとよい。
【００５７】
図７の方法は、並列コンピュータ内の計算ノード（１０２）の動作グループ（１３２）にてジョブ（７０４）を開始するユーザ命令（７０６）を、サービス・ノード（１１６）によって受信するステップ（７０２）を含み、上記命令（７０６）は、計算ノード（１０２）の電力管理属性（７０８）を含む。並列コンピュータ内の計算ノード（１０２）の動作グループ（１３２）にてジョブ（７０４）を開始するユーザ命令（７０６）すなわち計算ノード（１０２）の電力管理属性（７０８）が含まれた命令（７０６）をサービス・ノード（１１６）によって受信するステップ（７０２）は、例えば、電力消費割合を受信することを含み、この電力消費割合には、コンピュータ・プロセッサおよびコンピュータ・メモリに関する実行サイクルおよびアイドル・サイクルの電力消費割合のほか、アイドル・サイクルの時間の長さが含まれる。
【００５８】
並列コンピュータ（１００）内の計算ノードの動作グループにてジョブ（７０４）を開始するユーザ命令（７０６）を受信するステップ（７０２）は、サービス・アプリケーション・インターフェース（１２６）によって提供されるグラフィカル・ユーザ・インターフェース（「ＧＵＩ」）にユーザ（１２８）が入力した電力管理属性を端末（１２２）から受信することによって、行われるとよい。上述のようなＧＵＩは、コンピュータ・プロセッサおよびコンピュータ・メモリ双方の電力消費割合に適用される実行サイクル対アイドル・サイクルの単一の割合に加えて、アイドル・サイクルの時間の長さをも受け付けるように、特別に構成されているとよい。あるいはＧＵＩは、実行サイクル対アイドル・サイクルの２つの別個の割合、すなわちコンピュータ・プロセッサ電力消費割合として設定される１つの割合とコンピュータ・メモリ電力消費割合として設定される１つの割合とに加えて、アイドル・サイクルの時間の長さを受け付けるように、特別に構成されていてもよい。
【００５９】
図７の方法はさらに、動作グループ（１３２）の計算ノード（１０２）の電力管理属性（７０８）に従って、動作グループ（１３２）の各計算ノード（１０２）に関するコンピュータ・プロセッサ電力消費割合（７１６）とコンピュータ・メモリ電力消費割合（７１４）とを含んだ電力消費割合（７１２）を、サービス・ノード（１１６）によって設定するステップ（７１０）が含まれる。動作グループ（１３２）の計算ノード（１０２）の電力管理属性（７０８）に従って、動作グループ（１３２）の各計算ノード（１０２）に関するコンピュータ・プロセッサ電力消費割合（７１６）とコンピュータ・メモリ電力消費割合（７１４）とを含んだ電力消費割合（７１２）をサービス・ノード（１１６）によって設定するステップ（７１０）は、動作グループ（１３２）内の各計算ノード（１０２）を電力消費割合を用いて構成することによって、行われるとよい。言い換えれば、計算ノードの各々にあるコンピュータ・メモリを、電力消費割合を用いて構成するということである。
【００６０】
図７の方法では、電力消費割合（７１２）は、実行サイクル（７１８、７２２）対アイドル・サイクル（７２０、７２４）の割合として表される。実行サイクルとは、コンピュータ・メモリまたはコンピュータ・プロセッサが命令を実行している期間である。言い換えれば、実行サイクルは、コンピュータ・メモリまたはコンピュータ・プロセッサがアクティブな期間である。それに対しアイドル・サイクルとは、コンピュータ・プロセッサまたはコンピュータ・メモリがアイドルである、言い換えれば、何も命令を実行していない期間である。アイドル状態にあるときは、コンピュータ・プロセッサもコンピュータ・メモリも電力を消費していない。一例として、ユーザ（１２８）が電力管理属性（７０８）として以下の電力消費割合を用意したとみなす：
●  コンピュータ・プロセッサ電力消費割合＝１／１０
●  コンピュータ・メモリ電力消費割合＝２／５
サービス・ノードが、計算ノードに上記の電力消費割合を設定し、その計算ノードにてジョブを開始すると、コンピュータ・プロセッサは、１サイクルの間は命令を実行し、その後１０サイクルはアイドル状態になる。コンピュータ・メモリは、２サイクルの間は命令を実行し、その後５サイクルはアイドル状態になる。
【００６１】
図７の方法では、電力消費割合（７１２）を設定するステップ（７１０）が、アイドル・サイクルの時間の長さ（７３０）を設定するステップを含む。アイドル・サイクルの時間の長さ（７３０）を設定するステップは、計算ノードの各々にあるコンピュータ・メモリを、時間の長さ（７３０）を用いて構成することによって、行われるとよい。アイドル・サイクルの時間の長さが長いほど、そのようなアイドル・サイクルの期間中、計算ノードのコンピュータ・プロセッサまたはコンピュータ・メモリがより長くアイドル状態になる。図７の例では、アイドル・サイクルの時間の長さ（７３０）は、１０マイクロ秒に設定されている。言い換えれば、コンピュータ・プロセッサまたはコンピュータ・メモリがアイドル状態になるサイクルは各々、１０マイクロ秒間続く。
【００６２】
図７の例において、コンピュータ・プロセッサ電力消費割合（７１４）は、コンピュータ・メモリ電力消費割合（７１６）と等しくてもよい。言い換えれば、ユーザは、電力管理属性（７０８）の一部として、２つの電力消費割合（７１４、７１６）に関し単一の割合を用意してもよい。あるいはユーザは、各々の電力消費割合に関して、別々の割合を選択してもよい。そのような場合、コンピュータ・プロセッサ電力消費割合（７１６）は、コンピュータ・メモリ電力消費割合（７１４）と等しくはない。ユーザが電力消費割合（７１４、７１６）を別個に設定できるようにすることによって、並列コンピュータにおける電力消費の精密な制御が可能になる。
【００６３】
図７の方法はさらに、サービス・ノード（１１６）によって、並列コンピュータの動作グループ（１３２）の計算ノード（１０２）にてジョブ（７０４）を開始するステップ（７２６）を含む。計算ノード（１０２）にてジョブ（７０４）を開始するステップ（７２６）は、動作グループ（１３２）の各計算ノード（１０２）を各自のジョブ固有のコンピュータ・プログラム命令を用いて構成し、そのコンピュータ・プログラム命令を実行させる通知を動作グループ（１３２）の計算ノード（１０２）へ送信することによって、行われるとよい。
【００６４】
さらなる説明のために、図８に、本発明の実施形態による並列コンピュータにおける事前対応型電力管理のさらなる例示的な方法を説明するフロー図を示す。図８の方法は、図８の方法が以下を含むという点で、図７の方法に類似している：並列コンピュータの計算ノード（１０２）の動作グループ（１３２）にてジョブ（７０４）を開始するユーザ命令（７０６）を、サービス・ノード（１１６）によって受信するステップ（７０２）、ただし上記命令（７０６）は、計算ノード（１０２）の電力管理属性（７０８）を含む；動作グループ（１３２）の計算ノード（１０２）の電力管理属性（７０８）に従って、動作グループ（１３２）の各計算ノード（１０２）に関するコンピュータ・プロセッサ電力消費割合（７１６）とコンピュータ・メモリ電力消費割合（７１４）とを含んだ電力消費割合（７１２）を、サービス・ノード（１１６）によって設定するステップ（７１０）；および、サービス・ノード（１１６）によって、並列コンピュータの動作グループ（１３２）の計算ノード（１０２）にてジョブ（７０４）を開始するステップ（７２６）。
【００６５】
図８の方法がユーザ（１２８）によって電力管理属性（７０８）を構築するステップ（８０２）をさらに含むという点で、図８の方法は図７の方法とは異なる。図８の方法では、電力管理属性（７０８）を構築するステップ（８０２）は、ジョブの以前の実行（８０４）の少なくとも１つの期間にわたり並列コンピュータの動作グループ（１３２）の計算ノード（１０２）の電力消費を監視すること（８０２）によって行われる。電力管理属性は、ジョブの実行中に並列コンピュータによって消費される電力量を所定の閾値未満の量にまで減らすように構築される。並列コンピュータの電力消費を事前対応的に管理するシステムにおける上述のような所定閾値は、一般にピーク電力、すなわち電気供給者が顧客により高い料率の請求を行うことになる電力量である。本明細書においては電力消費割合を構築するステップが単一ステップとして記載されているが、ユーザが、電力管理属性（７０８）の構築より前に多数のジョブ実行期間にわたって計算ノードの電力消費を監視してもよいことが、当業者にはすぐに分かるであろう。
【００６６】
本発明の例示的な実施形態は大部分、並列コンピュータにおける事前対応型電力管理に向けて十分に機能するコンピュータ・システムに関連して記載されている。一方、当業者には当然のことながら、本発明は、任意の適切なデータ処理システムで使用する信号担持媒体上に配置されたコンピュータ・プログラム製品に具現化することもできる。上述のような信号担持媒体は、磁気媒体、光媒体、あるいは適切なその他の媒体を含む、機械可読情報用の伝送媒体または記録可能媒体とすればよい。記録可能媒体の例としては、当業者には思い当たるように、ハード・ドライブまたはディスケットの磁気ディスク、光ドライブ用のコンパクト・ディスク、磁気テープなどが挙げられる。伝送媒体の例としては、音声通信用の電話ネットワークと、例えばイーサネットのほか、インターネット・プロトコルおよびワールド・ワイド・ウェブを用いて通信するネットワークなどの、デジタル・データ通信ネットワークとに加え、例えばＩＥＥＥ８０２．１１系の規格に従って実現されるネットワークなどといったワイヤレス伝送媒体とが挙げられる。当業者にはすぐに分かることであるが、適切なプログラミング手段を有するコンピュータ・システムであれば、プログラム製品に具現化される本発明の方法のステップ群を実行することが可能になる。本明細書に記載された例示的な実施形態の一部は、コンピュータ・ハードウェアに実装されコンピュータ・ハードウェア上で実行されるソフトウェアを指向しているが、それにもかかわらず、ファームウェアまたはハードウェアとして実現される代替的な実施形態も同様に本発明の範囲内にあることが、当業者にはすぐに分かるであろう。
【００６７】
前述の記載から理解されるように、本発明の本来の精神を逸脱することなく、本発明の多様な実施形態に修正および変更を施すことができる。本明細書における記載は、単なる例示を目的とするものに過ぎず、限定的な意味に解釈されるべきものではない。本発明の範囲は、以下の請求項の言葉によってのみ制限される。
【００６８】
誤解を避けるために、本明細書にて使用される用語「含む」は、明細および請求項の全体を通じて、「のみから成る」ことを意味すると解釈されるべきではない。
【図１】
0004659138.tif 000002
【図２】
0004659138.tif 000003
【図３】
0004659138.tif 000004
【図４】
0004659138.tif 000005
【図５】
0004659138.tif 000006
【図６】
0004659138.tif 000007
【図７】
0004659138.tif 000008
【図８】
0004659138.tif 000009