(57)【特許請求の範囲】
【請求項１】
ハイパフォーマンスコンピューティング（ＨＰＣ）システムにおけるフォルトトレランス・リカバリシステムであって、
各ノードがカードに統合されたスイッチングファブリックと前記カードに統合された少なくとも２つのプロセッサとを有する、ＨＰＣシステムの複数のノードを互いに接続するファブリックと、
前記ファブリックに接続され、前記ノードのそれぞれにアクセス可能であって、各々が前記ノードの何れかにおいて実行可能な複数のホストアプリケーションを格納するよう動作可能な中央ストレージと、
前記ファブリックに接続され、ホストアプリケーションを実行する前記ＨＰＣシステムにおける現在実行中のノードをモニタし、前記実行中のノードのある通信インタフェースにおいてフォルトが発生したか判断し、前記現在実行中のノードの通信インタフェースにおいてフォルトが発生したことに応答して、前記現在実行中のノードにおいて実行されている前記ホストアプリケーションが１以上のさらなる通信パスを用いて前記通信インタフェースを介し通信することを可能にするためルーティングテーブルを更新し、前記中央ストレージへのアクセスを再開するためのアクションを開始し、フォルトトレランス・リカバリのための当該システムの管理者に前記検出されたフォルトを通知し、前記ノードに関してカスタマイズされたリカバリを実行するための設定可能なスクリプトを実行し、前記現在実行中のノードにリカバリ不能なフォルトが発生した場合、前記現在実行中のノードの処理を中断し、前記中央ストレージから前記ＨＰＣシステムの何れかのフリーノードにおいて前記ホストアプリケーションをブート処理するよう動作可能なマネージャと、
を有するシステム。
【請求項２】
前記マネージャはさらに、前記現在実行中のノードの状態を示す前記現在実行中のノードのデーモンからの１以上のメッセージに従って、前記現在実行中のノードにおける前記フォルトを特定するよう動作可能である、請求項１記載のシステム。
【請求項３】
前記現在実行中のノードの状態は、該現在実行中のノードにおけるファンの平均速度、該現在実行中のノードの現在の温度及び該現在実行中のノードにおける電力消費レベルの１以上から構成される、請求項２記載のシステム。
【請求項４】
前記デーモンは、定期的な間隔により前記メッセージを前記マネージャに通信する、請求項２記載のシステム。
【請求項５】
前記デーモンは、前記現在実行中のノードと前記ファブリックとの間の各インタフェースを介し前記メッセージを前記マネージャに通信する、請求項２記載のシステム。
【請求項６】
前記マネージャはさらに、前記マネージャがチェックポイントから前記フリーノードにおいて前記ホストアプリケーションをブート処理することを可能にするため、前記ホストアプリケーションをチェックポイント処理するよう動作可能である、請求項１記載のシステム。
【請求項７】
前記マネージャはさらに、前記現在実行中のノードにおいてフォルトが発生した場合、前記フリーノードのホストとの通信を可能にするため、前記ＨＰＣシステムにおいて１以上のルーティングテーブルを更新するよう動作可能である、請求項１記載のシステム。
【請求項８】
前記マネージャはさらに、前記現在実行中のノードにおいてフォルトが発生した場合、該フォルトの発生を前記ＨＰＣシステムの管理者に通知するよう動作可能である、請求項１記載のシステム。
【請求項９】
前記マネージャは、
前記現在実行中のノードとの通信を回避するため、
前記現在実行中のノードが前記中央ストレージにアクセスすることを回避するため、
前記現在実行中のノードをアイドル状態にするため、
前記現在実行中のノードをパワーダウン状態にするため、又は
前記現在実行中のノードをリブートするため、
の１以上を実行するため、前記現在実行中のノードの処理を中断するよう動作可能である、請求項１記載のシステム。
【請求項１０】
前記ファブリックは、３次元トーラスを構成するトポロジーに従って、前記ノードを互いに接続する複数のスイッチを有する、請求項１記載のシステム。
【請求項１１】
前記スイッチは、ＩＮＦＩＮＩＢＡＮＤスイッチである、請求項１０記載のシステム。
【請求項１２】
ホストアプリケーションは、前記ＨＰＣシステムのノードにおいて該ホストアプリケーションをブート処理するのに利用可能なＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス、ブートイメージ、コンフィギュレーション及びファイルシステムを有する、請求項１記載のシステム。
【請求項１３】
前記現在実行中のノードにおけるフォルトは、前記現在実行中のノードのハードウェアコンポーネントにおけるフォルトから構成される、請求項１記載のシステム。
【請求項１４】
前記現在実行中のノードにおけるフォルトは、前記現在実行中のノードのソフトウェアコンポーネントにおけるフォルトから構成される、請求項１記載のシステム。
【請求項１５】
前記現在実行中のノードにおけるフォルトは、前記現在実行中のノードと前記ファブリックとの間のインタフェースにおけるフォルトから構成される、請求項１記載のシステム。
【請求項１６】
ハイパフォーマンスコンピューティング（ＨＰＣ）システムにおけるフォルトトレランス・リカバリ方法であって、
各ノードがカードに統合されたスイッチングファブリックと前記カードに統合された少なくとも２つのプロセッサとを有する複数のノードと、該複数のノードを互いに接続し、該複数のノードのそれぞれにアクセス可能であって、各々が該複数のノードの何れかにおいて実行可能な複数のホストアプリケーションを格納するよう動作可能な中央ストレージと該複数のノードとを接続するファブリックとから構成されるＨＰＣシステムにおいて、マネージャが現在実行中のノードをモニタするステップと、
前記マネージャが、前記実行中のノードのある通信インタフェースにおいてフォルトが発生したか判断するステップと、
前記マネージャが、前記現在実行中のノードの通信インタフェースにおいてフォルトが発生したことに応答して、前記現在実行中のノードにおいて実行されている前記ホストアプリケーションが１以上のさらなる通信パスを用いて前記通信インタフェースを介し通信することを可能にするためルーティングテーブルを更新するステップと、
前記中央ストレージへのアクセスを再開するためのアクションを開始するステップと、
フォルトトレランス・リカバリのための前記システムの管理者に前記検出されたフォルトを通知するステップと、
前記ノードに関してカスタマイズされたリカバリを実行するための設定可能なスクリプトを実行するステップと、
前記現在実行中のノードにおいてリカバリ不能なフォルトが発生した場合、前記マネージャが、前記現在実行中のノードの処理を中断し、前記中央ストレージから前記ＨＰＣシステムの何れかのフリーノードにおいて前記故障している現在実行中のノードにより用いられるホストアプリケーションをブート処理するステップと、
を有する方法。
【請求項１７】
前記現在実行中のノードの状態を示す前記現在実行中のノードのデーモンからの１以上のメッセージに従って、前記現在実行中のノードにおいて前記フォルトを特定するステップをさらに有する、請求項１６記載の方法。
【請求項１８】
前記現在実行中のノードの状態は、該現在実行中のノードにおけるファンの平均速度、該現在実行中のノードの現在の温度及び該現在実行中のノードにおける電力消費レベルの１以上から構成される、請求項１７記載の方法。
【請求項１９】
前記デーモンは、定期的な間隔により前記メッセージを前記マネージャに通信する、請求項１７記載の方法。
【請求項２０】
前記デーモンは、前記現在実行中のノードと前記ファブリックとの間の各インタフェースを介し前記メッセージを前記マネージャに通信する、請求項１７記載の方法。
【請求項２１】
チェックポイントから前記フリーノードのホストアプリケーションをブート処理することを可能にするため、前記ホストアプリケーションをチェックポイント処理するステップをさらに有する、請求項１６記載の方法。
【請求項２２】
前記現在実行中のノードにおいてフォルトが発生した場合、前記フリーノードのホストアプリケーションとの通信を可能にするため、前記ＨＰＣシステムにおいて１以上のルーティングテーブルを更新するステップをさらに有する、請求項１６記載の方法。
【請求項２３】
前記現在実行中のノードにおいてフォルトが発生した場合、該フォルトの発生を前記ＨＰＣシステムの管理者に通知するステップをさらに有する、請求項１６記載の方法。
【請求項２４】
前記現在実行中のノードの処理を中断するステップは、
前記現在実行中のノードとの通信を回避するステップと、
前記現在実行中のノードが前記中央ストレージにアクセスすることを回避するステップと、
前記現在実行中のノードをアイドル状態にするステップと、
前記現在実行中のノードをパワーダウン状態にするステップと、
前記現在実行中のノードをリブートするステップと、
の１以上から構成される、請求項１６記載の方法。
【請求項２５】
前記ファブリックは、３次元トーラスを構成するトポロジーに従って、前記ノードを互いに接続する複数のスイッチを有する、請求項１６記載の方法。
【請求項２６】
前記スイッチは、ＩＮＦＩＮＩＢＡＮＤスイッチである、請求項２５記載の方法。
【請求項２７】
ハイパフォーマンスコンピューティング（ＨＰＣ）システムにおけるフォルトトレランス・リカバリのためのコードを含むコンピュータ可読媒体であって、
前記コードが前記ＨＰＣシステムにより実行されると、前記ＨＰＣシステムは、
各ノードがカードに統合されたスイッチングファブリックと前記カードに統合された少なくとも２つのプロセッサとを有する複数のノードと、該複数のノードを互いに接続し、該複数のノードのそれぞれにアクセス可能であって、各々が該複数のノードの何れかにおいて実行可能な複数のホストアプリケーションを格納するよう動作可能な中央ストレージと該複数のノードとを接続するファブリックとから構成されるＨＰＣシステムにおいて現在実行中のノードをモニタし、
前記実行中のノードのある通信インタフェースにおいてフォルトが発生したか判断し、
前記現在実行中のノードの通信インタフェースにおいてフォルトが発生したことに応答して、前記現在実行中のノードにおいて実行されている前記ホストアプリケーションが１以上のさらなる通信パスを用いて前記通信インタフェースを介し通信することを可能にするためルーティングテーブルを更新し、
前記中央ストレージへのアクセスを再開するためのアクションを開始し、
フォルトトレランス・リカバリのための前記システムの管理者に前記検出されたフォルトを通知し、
前記ノードに関してカスタマイズされたリカバリを実行するための設定可能なスクリプトを実行し、
前記現在実行中のノードにおいてリカバリ不能なフォルトが発生した場合、前記現在実行中のノードの処理を中断し、前記中央ストレージから前記ＨＰＣシステムの何れかのフリーノードにおいて前記故障している現在実行中のノードにより用いられるホストアプリケーションをブート処理する、
よう動作可能であるコンピュータ可読媒体。
【請求項２８】
前記現在実行中のノードの状態を示す前記現在実行中のノードのデーモンからの１以上のメッセージに従って、前記現在実行中のノードにおいて前記フォルトを特定するようさらに動作可能である、請求項２７記載のコンピュータ可読媒体。
【請求項２９】
前記現在実行中のノードの状態は、該現在実行中のノードにおけるファンの平均速度、該現在実行中のノードの現在の温度及び該現在実行中のノードにおける電力消費レベルの１以上から構成される、請求項２８記載のコンピュータ可読媒体。
【請求項３０】
前記デーモンは、定期的な間隔により前記メッセージを通信する、請求項２８記載のコンピュータ可読媒体。
【請求項３１】
前記デーモンは、前記現在実行中のノードと前記ファブリックとの間の各インタフェースを介し前記メッセージを通信する、請求項２８記載のコンピュータ可読媒体。
【請求項３２】
チェックポイントから前記フリーノードのホストアプリケーションをブート処理することを可能にするため、前記ホストアプリケーションをチェックポイント処理するようさらに動作可能である、請求項２７記載のコンピュータ可読媒体。
【請求項３３】
前記現在実行中のノードにおいてフォルトが発生した場合、前記フリーノードのホストアプリケーションとの通信を可能にするため、前記ＨＰＣシステムにおいて１以上のルーティングテーブルを更新するようさらに動作可能である、請求項２７記載のコンピュータ可読媒体。
【請求項３４】
前記現在実行中のノードにおいてフォルトが発生した場合、該フォルトの発生を前記ＨＰＣシステムの管理者に通知するようさらに動作可能である、請求項２７記載のコンピュータ可読媒体。
【請求項３５】
前記現在実行中のノードとの通信を回避するため、
前記現在実行中のノードが前記中央ストレージにアクセスすることを回避するため、
前記現在実行中のノードをアイドル状態にするため、
前記現在実行中のノードをパワーダウン状態にするため、又は
前記現在実行中のノードをリブートするため、
の１以上を実行するため、前記現在実行中のノードの処理を中断するよう動作可能である、請求項２７記載のコンピュータ可読媒体。
【請求項３６】
前記ファブリックは、３次元トーラスを構成するトポロジーに従って、前記ノードを互いに接続する複数のスイッチを有する、請求項２７記載のコンピュータ可読媒体。
【請求項３７】
前記スイッチは、ＩＮＦＩＮＩＢＡＮＤスイッチである、請求項３６記載のコンピュータ可読媒体。
【請求項３８】
ハイパフォーマンスコンピューティング（ＨＰＣ）システムにおけるフォルトトレランス・リカバリシステムであって、
各ノードがカードに統合されたスイッチングファブリックと前記カードに統合された少なくとも２つのプロセッサとを有する複数のノードと、該複数のノードを互いに接続し、該複数のノードのそれぞれにアクセス可能であって、各々が該複数のノードの何れかにおいて実行可能な複数のホストアプリケーションを格納するよう動作可能な中央ストレージと該複数のノードとを接続するファブリックとから構成されるＨＰＣシステムにおいて現在実行中のノードをモニタする手段と、
前記実行中のノードのある通信インタフェースにおいてフォルトが発生したか判断する手段と、
前記現在実行中のノードの通信インタフェースにおいてフォルトが発生したことに応答して、前記現在実行中のノードにおいて実行されている前記ホストアプリケーションが１以上のさらなる通信パスを用いて前記通信インタフェースを介し通信することを可能にするためルーティングテーブルを更新し、前記中央ストレージへのアクセスを再開するためのアクションを開始し、フォルトトレランス・リカバリのための当該システムの管理者に前記検出されたフォルトを通知し、前記ノードに関してカスタマイズされたリカバリを実行するための設定可能なスクリプトを実行する手段と、
前記現在実行中のノードにおいてリカバリ不能なフォルトが発生した場合、前記現在実行中のノードの処理を中断し、前記中央ストレージから前記ＨＰＣシステムの何れかのフリーノードにおいて前記故障している現在実行中のノードにより用いられるホストアプリケーションをブート処理する手段と、
を有するシステム。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［技術分野］
本発明は、一般にデータ処理に関し、より詳細には、ＨＰＣシステムにおけるフォルトトレランス及びリカバリに関する。
［背景］
ハイパフォーマンスコンピューティング（ＨＰＣ）は、しばしば複雑な物理的又はアルゴリズム的現象をモデリング、シミュレート及び解析するため科学者やエンジニアにより使用される計算システムにより特徴付けされる。現在、ＨＰＣマシーンは、典型的には、ノードと呼ばれる１以上のプロセッサの多数のＨＰＣクラスタを用いて設計される。大部分の大きな科学的及び技術的適用について、パフォーマンスは、個別のノードのスピードでなくパラレルスケーラビリティにより主として決定される。このため、スケーラビリティはしばしば、このようなハイパフォーマンスクラスを構築又は購入するに際して限定要因となる。スケーラビリティは、一般にはｉ）ハードウェア、ｉｉ）メモリ、入出力（Ｉ／Ｏ）及び通信帯域幅、ｉｉｉ）ソフトウェア、ｉｖ）アーキテクチャ、及びｖ）アプリケーションに基づくものであると考えられている。大部分の従来のＨＰＣ環境における処理、メモリ及びＩ／Ｏ帯域幅は、通常は良好にはバランスされておらず、このため、良好にスケーリングされない。多くのＨＰＣ環境は、ハイエンドデータ処理要求を充足するためのＩ／Ｏ帯域幅を有さず、又は多数の不要なコンポーネントがインストールされるブレードにより構築され、このことは、システムの信頼性を劇的に低減させる傾向がある。従って、多くのＨＰＣ環境は、製造用の環境における効率的な処理のためのロウバストなクラスタ管理ソフトウェアを提供しないかもしれない。
【０００２】
典型的には、コンピュータシステムがハードウェアの不具合に遭遇すると、コンピュータシステムに接続される記憶装置におけるソフトウェア及びデータは、当該不具合が解消されるまで利用不可なままである（コンピュータシステムの１以上のハードウェアコンポーネントの交換又はコンピュータシステム全体の交換を必要とするかもしれない）。科学的でありデータセンターのアプリケーションは、しばしば民生用のコンピュータシステム（ＰＣなど）のクラスタを利用するが、このようなクラスタは、しばしばフォルトトレランス及びリカバリ機能を欠いている。
【０００３】
典型的には、民生用のコンピュータシステムのクラスタは、アプリケーション及びアプリケーションデータを格納するため、民生用コンピュータシステムに共有される１以上の記憶装置を有する。このようなクラスタでは、アプリケーションに課される要求はしばしば、アプリケーションがクラスタを管理するソフトウェアに一体化されるか、アプリケーションにおける処理が制限されるか、又はその両方であることを要請し、このことは、このようなクラスにおいてフォルトトレランスを提供するアプリケーションの複雑さを増大させ、このようなアプリケーションの開発に係るコストを増大させる。科学的及びデータセンターアプリケーションはしばしば、民生用コンピュータシステム（ＰＣなど）のクラスタを利用するが、このようなクラスタはしばしば、フォルトトレランス及びリカバリ機能を欠いている。少なくとも一部のフォルトトレランスを提供するため、このようなクラスタはしばしば、イーサネット（登録商標）ネットワークにおいてネットワークファイルシステムを利用する共有ディスクシステムに依存する。このようなシステムは、アプリケーション、アプリケーションデータ又はその両方への高速アクセス性を要求するＨＰＣシステムには不十分である。
［概要］
本発明は、ＨＰＣシステムに係る短所、問題点又はその両方を軽減又は解消するかもしれない。
【０００４】
一実施例では、ハイパフォーマンスコンピューティング（ＨＰＣ）システムにおけるフォルトトレランス及びリカバリのための方法は、複数のノードを有するＨＰＣシステムにおける現在実行されているノードをモニタすることを含む。複数のノードを互いに接続し、各ノードにアクセス可能であって、複数のノードの何れかにおいてそれぞれ実行可能な複数のホストを格納することが可能なストレージと複数のノードを接続するファブリック（ｆａｂｒｉｃ）が、提供される。本方法は、現在実行中のノードにおいてフォルトが発生した場合、現在実行中のノードの動作を中断し、ストレージからＨＰＣシステムのフリーノードにおけるホストをブートすることを含む。
【０００５】
本発明の特定の実施例は、１以上の技術的効果を提供するかもしれない。一例として、特定の実施例は、民生用コンピュータシステムのクラスタにおけるフォルトトレランス及びリカバリを提供する。特定の実施例は、科学的及びデータセンター計算アプリケーションに対する民生用コンピュータシステムの実行可能なフォルトトレランス及びリカバリを提供する。特定の実施例は、科学的及びデータセンター計算アプリケーションのための民生用コンピュータシステムのクラスタにおけるコスト効果的なフォルトトレランス及びリカバリを提供する。本発明の特定の実施例は、上記技術的効果のすべて又は一部を提供し、又はその何れも提供しないかもしれない。特定の実施例は、他の１以上の技術的効果を提供するかもしれず、そのうちの１以上が、ここでの請求項、記載及び図面から当業者に容易に明らかであるかもしれない。
［発明の詳細な説明］
図１は、ソフトウェアのアプリケーション及び処理、例えば、大気シミュレーション、気象シミュレーションや衝撃シミュレーションを、ＨＰＣ手法を用いて実行する高性能計算（ＨＰＣ）システム１００を示す構成図である。システム１００は、処理性能にかなり同様なＩ／Ｏ性能を備えている、種々の計算ノード１１５の間で動的に割り当てられるＨＰＣ機能をユーザに備える。一般的に、これらのノード１１５は、とりわけ、この、入出力（Ｉ／Ｏ）性能の増加とファブリック・レーテンシの低減が理由で容易にスケーリング可能である。例えば、分散アークテクチャにおけるノード１１５のスケーラビリティは：
Ｓ（Ｎ）＝１／（（ＦＰ／Ｎ）＋ＦＳ）＊（１−Ｆｃ＊（１−ＲＲ／Ｌ）；
である、アムダールの法則の派生形によって表す場合があり、Ｓ（Ｎ）＝Ｎプロセッサでの高速化であり、Ｆｐ＝並列コードの割合であり、Ｆｓ＝非並列コードの割合であり、Ｆｃ＝通信に充てられる処理の割合であり、ＲＲ／Ｌ＝遠隔メモリ帯域幅の局所メモリ帯域幅に対する比率である。したがって、ＨＰＣシステム１００が、処理性能にかなり等しいか、かなり近づいているＩ／Ｏ性能を備えることによって、ＨＰＣシステム１００はＨＰＣアプリケーションの全体効率を向上させ、システム管理の容易化を可能にする。
【０００６】
ＨＰＣシステム１００は、（科学者や技術者などの）ユーザがジョブ１５０を投入してＨＰＣサーバ１０２上で処理することを可能にする分散クライアント／サーバ・システムである。例えば、システム１００は、１つ又は複数の管理ワークステーション又は局所クライアント１２０にネットワーク１０６を介して接続されるＨＰＣサーバ１０２を含み得る。しかし、スタンドアロン型計算環境又は何れかの別の適切な環境であり得る。要約すれば、システム１００は、スケーラビリティの高いノード１１５を含み、かつ、ユーザが、ジョブ１５０を投入し、スケーラブルなノード１５０をジョブ１５０に動的に割り当て、割り当てられたノード１１５を用いてジョブ１５０を自動的に実行することを可能にする何れかのＨＰＣ計算環境である。ジョブ１５０は、ＨＰＣ手法を用いて処理され、何れかの適切なユーザによって投入されるよう処理可能な何れかのバッチ・ジョブ又はオンライン・ジョブであり得る。例えば、ジョブ１５０は、シミュレーション、モデル、又は何れかの別の高性能要件に対する要求であり得る。ジョブ１５０は、クラスタ化データベース、オンライン・トランザクション処理システム、又はクラスタ化アプリケーション・サーバなどのデータ・センター・アプリケーションを実行する要求である場合もある。本明細書及び特許請求の範囲の原文記載の「ｄｙｎａｍｉｃａｌｌｙ」の語は一般的に、特定の処理が少なくとも部分的には実行時に１つ又は複数の変数に基づいて判定されるということを表す。本明細書及び特許請求の範囲の原文記載の「ａｕｔｏｍａｔｉｃａｌｌｙ」の語は一般的に、適切な処理がＨＰＣシステム１００の少なくとも部分によって実質的に行われるということを表す。この「ａｕｔｏｍａｔｉｃａｌｌｙ」の語が更に、何れかの適切なユーザ又は管理者による、システム１００との相互作用を、本願の開示の範囲から逸脱することなく想定しているということが分かるものである。
【０００７】
ＨＰＣサーバ１０２は、複数の、バランスされたノード１１５及びクラスタ管理ノード１３０を用いてジョブ１５０を処理するよう動作可能な何れかの、局所コンピュータ又は遠隔コンピュータを備える。一般的に、ＨＰＣサーバ１０２は、ブレード・サーバ又は別の分散サーバなどの分散コンピュータを備える。サーバ１０２は、その構成がどんなものであっても、複数のノード１１５を含む。ノード１１５は、例えば、ブレード、汎用パーソナル・コンピュータ（ＰＣ）、マッキントッシュ、ワークステーション、ユニックス（Ｕｎｉｘ（登録商標））ベースのコンピュータ、又は何れかの別の適切な装置などの何れかのコンピュータ装置又は処理装置を備える。一般的に、図１は、本願の開示とともに用い得るコンピュータの一例に過ぎないものを備える。例えば、図１は本願開示とともに用い得る一サーバ１０２を示すが、システム１００は、サーバ以外のコンピュータや、サーバ・プールを用いて実施することが可能である。すなわち、本願の開示は、汎用コンピュータ以外のコンピュータや、通常のオペレーティング・システムなしのコンピュータを想定している。本明細書及び特許請求の範囲の原文において用いているように、「ｃｏｍｐｕｔｅｒ」の語は、パーソナル・コンピュータ、ワークステーション、ネットワーク・コンピュータ、又は何れかの別の適切な処理装置に及ぶことが意図されている。ＨＰＣサーバ１０２又はコンポーネント・ノード１１５は、リナックス（Ｌｉｎｕｘ）、ユニックス（Ｕｎｉｘ（登録商標））、ウィンドウズ（登録商標）・サーバ、又は何れかの別の適切なオペレーティング・システムを含む何れかのオペレーティング・システムを実行するよう形成し得る。一実施例によれば、ＨＰＣサーバ１０２は、遠隔ウェブ・サーバを含んでいてもよく、遠隔ウェブ・サーバに通信可能に結合されていてもよい。したがって、サーバ１０２は、ノード１１５を動的に割り当ててＨＰＣジョブ１５０を処理するのに適した何れかの組み合わせでソフトウェア及び／ハードウェアを備えている何れかのコンピュータを備え得る。
【０００８】
概略を述べれば、ＨＰＣサーバ１０２は、管理ノード１０５、複数のノード１１５を備えるグリッド１１０、及びクラスタ管理エンジン１３０を含む。特に、サーバ１０２は、ｉ）デュアル・プロセッサと、ｉｉ）大容量の、高帯域幅のメモリと、ｉｉｉ）デュアル・ホスト・チャネル・アダプタ（ＨＣＡ）と、ｉｖ）統合ファブリック・スイッチングと、ｖ）ＦＰＧＡサポートと、ｖｉ）冗長な電源入力すなわちＮ＋１の電源との構成部分の一部又は全部を備えている複数のブレード（ノード１１５）を含む標準の１９インチのラックであり得る。これらの種々の構成部分によって、障害がノード・レベルに限定されることが可能になる。しかし、ＨＰＣサーバ１０２及びノード１１５がこれらの構成部分を全部含まない場合があるということが分かるものである。
【０００９】
管理ノード１０５は実質的に専ら、管理者を管理するか支援する少なくとも１つのブレードを備える。例えば、管理ノード１０５は２つのブレードを備える場合があり、２つのブレードのうちの１つは（アクティブ構成／パッシブ構成などの）冗長性を有する。一実施例では、管理ノード１０５は、ＨＰＣノード１１５と同じ種類のブレード又は計算装置であり得る。しかし、管理ノード１０５は、少なくとも部分的にグリッド１１０を管理するよう動作可能な状態にとどまっている限り、何れかの数の回路を含み、何れかの適切な方法で構成される何れかのノードであり得る。多くの場合、管理ノード１０５は、グリッド１１０に併せて表している複数のＨＰＣノード１１５から物理的又は論理的に分離されている。図示する実施例では、管理ノード１０５は、グリッド１１０にリンク１０８を介して通信可能に結合し得る。リンク１０８は、何れかの適切な通信プロトコルを実施する何れかの通信管路を備え得る。一実施例では、リンク１０８は管理ノード１０５とグリッド１１０との間の、ギガビット又は１０ギガビットのイーサネット（登録商標）通信を備える。
【００１０】
グリッド１１０は、処理能力を向上させるよう相互接続されるノード群１１５である。グリッドは、通常、３次元トーラスであるが、本願の開示の範囲から逸脱することなく、メッシュ、超立方体、又は何れかの別の形状若しくは構成であり得る。グリッド１１０におけるノード１１５間のリンクは、例えばファイバ又は銅などの、電気信号又は電磁気信号を伝達することが可能な、直列又は並列の、アナログ・リンク、ディジタル・リンク、又は何れかの別の種類のリンクを備え得る。各ノード１１５は統合スイッチによって構成される。このことによって、ノード１１５が３次元トーラスの基本的な構成体により容易になることを可能にし、別のノード１１５間のＸＹＺ距離を最小にすることに寄与する。更に、このことは、最大でギガビット・レベルの速度での大容量システムで銅線を機能させる場合があり、一部の実施例では、最長のケーブルは５メートル未満である。要約すれば、ノード１１５は、一般的に、最短距離の通信とＩ／Ｏ帯域幅の増加とに最適化される。
【００１１】
各ノード１１５は、クラスタ管理エンジン１３０と通信可能に結合されるクラスタ・エージェント１３２を含み得る。一般的には、エージェント１３２は要求又はコマンドを管理ノード１０５及び／又はクラスタ管理エンジン１３０から受信する。エージェント１３２は、ノード１１５の物理ステータスを判定し、処理データを「ハートビート」などによって管理ノード１０５に通信するよう動作可能な何れかのハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせを含み得る。別の実施例では、管理ノード１０５は、エージェント１３２を周期的にポーリングして関連ノード１１５のステータスを判定し得る。エージェント１３２は、クラスタ管理エンジン１３０の少なくとも部分と互換である状態のままである限り、例えば、Ｃ、Ｃ＋＋、アセンブラ、ジャバ（Ｊａｖａ（登録商標））、ビジュアル・ベーシック（Ｖｉｓｕａｌ  Ｂａｓｉｃ）及び他の言語又はそれらの組み合わせなどの何れかの適切なコンピュータ言語で書かれる場合がある、すなわち記述される場合がある。
【００１２】
クラスタ管理エンジン１３０は、ノード１１５を動的に、割り当て、管理し、ノード１１５を用いてジョブ１５０を実行するよう動作可能な、何れかのハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせを含み得る。例えば、クラスタ管理エンジン１３０は、Ｃ、Ｃ＋＋、ジャバ、ビジュアル・ベーシック、アセンブラ、４ＧＬの何れかの適切なバージョン、及びその他の言語又はそれらの何れかの組み合わせにおいて作成すなわち記述される場合がある。クラスタ管理エンジン１３０を図１に単一のマルチタスク・モジュールとして示しているが、このエンジンによって行われる特徴と機能は、（図７に更に詳細に表すように）例えば、物理層モジュール、仮想層モジュール、ジョブ・スケジューラ、及びプレゼンテーション・エンジンなどの、複数のモジュールによって行い得る。更に、管理ノード１０５の外部に示すが、管理ノード１０５は通常、クラスタ管理エンジン１３０と関連する１つ又は複数の処理を実行し、クラスタ管理エンジン１３０を記憶させ得る。更に、クラスタ管理エンジン１３０は、本願の開示の範囲から逸脱することなく、別のソフトウェア・モジュールの子モジュールすなわちサブモジュールであり得る。したがって、クラスタ管理エンジン１３０は、ノード１１５とジョブ１５０とをインテリジェントに管理するよう動作可能な１つ又は複数のソフトウェア・モジュールを備える。特定の実施例では、クラスタ管理エンジンは、以下に説明するように、ジョブ１５０にノード１１５を割り当てるスケジューラ５１５を含む。スケジューラ５１５は、以下に更に説明するように、ジョブ１５０にノード１１５を割り当てるスケジューリング・アルゴリズムを用い得る。
【００１３】
サーバ１０２は、クライアント・サーバ環境又は別の分散環境においてネットワーク１０６を介してクライアント１２０などの別のコンピュータ・システムと通信するインタフェース１０４を含み得る。特定の実施例では、サーバ１０２はジョブ１５０又はジョブ・ポリシーをネットワーク１０６から受信してディスク・ファーム１４０に記憶させる。ディスク・ファーム１４０は、ノードを相互接続するものと同じ広帯域インタフェースを用いて計算アレイに直接接続される場合もある。一般的には、インタフェース１０４は、適切な組み合わせにおける、ネットワーク１０６と通信するよう動作可能な、ソフトウェア及び／又はハードウェアにコード化される論理を備える。特に、インタフェース１０４は、物理的信号を通信するよう動作可能な通信ネットワーク１０６又はハードウェアに関連した１つ又は複数の通信プロトコルをサポートするソフトウェアを備え得る。
【００１４】
ネットワーク１０６は、コンピュータ・サーバ１０２と、クライアント１２０などの何れかの別のコンピュータとの間の無線通信又は有線通信を容易にする。実際に、サーバ１０２とクライアント１２０との間に存在するものとして図示しているが、ネットワーク１０６は、本願の開示の範囲から逸脱することなく、種々のノード１１５間に存在する場合もある。すなわち、ネットワーク１０６は、種々の計算構成部分間での通信を容易にするよう動作可能な何れかのネットワーク又はサブネットワークに及ぶ。ネットワーク１０６は、例えば、インターネット・プロトコル（ＩＰ）パケット、フレーム・リレイ・フレーム、非同期転送モード（ＡＴＭ）・セル、音声、データ、及び別の適切な情報をネットワーク・アドレス間で通信し得る。ネットワーク１０６は、１つ又は複数の場所での、１つ又は複数の、ローカル・エリア・ネットワーク（ＬＡＮ）、無線アクセス・ネットワーク（ＲＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネットとして知られるグローバル・コンピュータ・ネットワークの全部若しくは一部、及び／又はいずれかの別の通信システムを含み得る。
【００１５】
一般的には、ディスク・ファーム１４０は、ジョブ１５０、プロファイル、ブート画像、又は別のＨＰＣ情報を記憶させる何れかのメモリ、データベース又はストレージ・エリア・ネットワーク（ＳＡＮ）である。図示する実施例によれば、ディスク・ファーム１４０は、１つ又は複数のストレージ・クライアント１４２を含む。ディスク・ファーム１４０は、いくつかの通信プロトコル、例えば、インフィニバンド（ＩｎｆｉｎｉＢａｎｄ）（ＩＢ）、ギガビット（Ｇｉｇａｂｉｔ）・イーサネット（登録商標）（Ｅｔｈｅｒｎｅｔ（登録商標））（ＧＥ）、又はファイバチャネル（ＦｉｂｒｅＣｈａｎｎｅｌ）（ＦＣ）
のうちの何れかによってデータ・パケットを処理し、ルーティングする場合がある。データ・パケットは通常、ディスク・ファーム１４０内のデータを伝送するのに用いられる。データ・パケットは、発信元識別子と宛て先識別子とを有するヘッダを含み得る。発信元識別子、例えば、発信元アドレスは情報の発信元を識別し、宛て先識別子、例えば宛て先アドレスは情報の受信先を識別する。
【００１６】
クライアント１２０は、ジョブ投入画面又はアドミニストレーション（管理）画面がユーザにグラフィカル・ユーザ・インタフェース（ＧＵＩ）１２６を介して提示されるよう動作可能な何れかの装置である。概略を述べれば、図示するクライアント１２０は、少なくともＧＵＩ１２６を含み、システム１００に関連した何れかの適切なデータを受信し、送信し、処理し、記憶するよう動作可能な電子計算機装置を備える。通信可能にサーバ１０２に結合される何れかの数のクライアント１２０が存在する場合があるということが分かるものである。更に、「ｃｌｉｅｎｔ  １２０」及び「ｕｓｅｒ  ｏｆ  ｃｌｉｅｎｔ  １２０」は、本願の開示の範囲から逸脱することなく、適宜、同義で用い得る。更に、図示を容易にするよう、各クライアントは１つのユーザによって用いられるという点で表している。しかし、多くのユーザが１つのコンピュータを用いて、ジョブ１５０を同じＧＵＩ１２６を用いて通信し得る。
【００１７】
本願の開示に記載のように、クライアント１２０は、パーソナル・コンピュータ、タッチ画面端末、ワークステーション、ネットワーク・コンピュータ、キオスク、無線データ・ポート、携帯電話、携帯情報端末（ＰＤＡ）、これら若しくは別の装置の内部の１つか複数のプロセッサ、又は何れかの別の適切な処理装置に及ぶことが意図されている。例えば、クライアント１２０は、情報を受け入れることが可能な、キーパッド、タッチ画面、マウス、又は別の装置などの入力装置、ディジタル・データ、視覚情報を含む、サーバ１０２若しくはクライアント１２０の処理に関連した情報を伝える出力装置、又はＧＵＩ１２６を含むコンピュータを備え得る。入力装置も出力装置も、磁気コンピュータ・ディスクなどの固定記憶媒体又は取り外し可能記憶媒体、ＣＤ−ＲＯＭ、又は別の適切な媒体を含んで、アドミニストレーション画面及びジョブ投入画面、すなわちＧＵＩ１２６を介してクライアント１２０のユーザからの入力を受信し、出力をそのユーザに備え得る。
【００１８】
ＧＵＩ１２６は、ｉ）クライアント１２０のユーザがシステム１００とインタフェースをとって１つ又は複数のジョブ１５０を投入する工程；及び／又はｉｉ）システム管理者（又はネットワーク管理者）がクライアント１２０を用いて、何れかの適切な監視目的でシステム１００とインタフェースをとる工程；を可能にするよう動作可能なグラフィカル・ユーザ・インタフェースを備える。一般的に、ＧＵＩ１２６は、ＨＰＣシステム１００によって備えられるデータの効率的でかつユーザ・フレンドリな提示をクライアント１２０のユーザに備える。ＧＵＩ１２６は、ユーザによって操作される双方向フィールド、プルダウン・リスト、及びボタンを有する複数のカスタム化可能なフレームすなわち表示を備え得る。一実施例では、ＧＵＩ１２６は、種々のジョブ・パラメータ・フィールドを表示し、クライアント１２０のユーザからのコマンドを入力装置のうちの１つを介して受信するジョブ投入ディスプレイ（表示）を表示させる。代替的に、又は組み合わせによって、ＧＵＩ１２６は、ノード１１５の物理ステータス及び論理ステータスを図６Ａ乃至６Ｂに示すようにシステム管理者に提示し、種々のコマンドを管理者から受信する場合がある。管理者コマンドは、ノードを利用可能（不能）なものとして印しを付けるコマンド、保守するようノードをシャットダウンさせるコマンド、ノードを再ブートするコマンド、又は何れかの別の適切なコマンドを含み得る。更に、グラフィカル・ユーザ・インタフェース（ｇｒａｐｈｉｃａｌ  ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）の語を単数形か複数形で用いて、１つ又は複数のグラフィカル・ユーザ・インタフェースと、特定のグラフィカル・ユーザ・インタフェースの表示の各々を表し得るということが分かるものである。したがって、ＧＵＩ１２６は、情報をシステム１００において処理し、結果をユーザに効率的に提示する、一般的なウェブ・ブラウザなどの何れかのグラフィカル・ユーザ・インタフェースを想定している。サーバ１０２は、クライアント１２０からのデータをウェブ・ブラウザ（例えば、マイクロソフト（Ｍｉｃｒｏｓｏｆｔ）社のインターネット・エクスプローラ（Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ）又はネットスケープ（Ｎｅｔｓｃａｐｅ）社のナビゲータ（Ｎａｖｉｇａｔｏｒ））を介して受け入れ、適切なＨＴＭＬ応答又はＸＭＬ応答をネットワーク１０６を用いて戻すことが可能である。
【００１９】
処理の一特徴では、ＨＰＣサーバ１０２はまず、初期化すなわちブートされる。この処理中に、クラスタ管理エンジン１３０は、グリッド１１０におけるノード１１５の存在、状態、位置、及び／又は別の特性を判定する。上記のように、このことは、各ノードが初期化されるか、管理ノード１０５によってほぼ即時にポーリングされると、通信される「ハートビート」に基づく場合がある。次に、クラスタ管理エンジン１３０は、グリッド１１０の種々の部分を１つ又は複数の仮想クラスタ２２０に、例えば、所定のポリシーに基づいて動的に割り当て得る。一実施例では、クラスタ管理エンジン１３０は、考えられる障害についてノード１１５を継続して監視し、ノード１１５のうちの１つに障害が起こったということを判定すると、種々の回復手法のうちの何れかを用いて障害を効果的に管理する。クラスタ管理エンジン１３０が一意の実行環境を仮想クラスタ２２０の割り当てノード毎に管理し、備える場合もある。実行環境は、ホスト名、ＩＰアドレス、オペレーティング・システム、構成サービス、局所ファイル・システム並びに共有ファイル・システム、及びインストールされているアプリケーション群並びにデータ群を含み得る。クラスタ管理エンジン１３０は、関連ポリシーによって、かつ優先度などのクラスタ間ポリシーによってノードを仮想クラスタ２２０から動的に加算するか減算する場合がある。
【００２０】
ユーザは、クライアント１２０にログオンする場合、ＧＵＩ１２６を介してジョブ投入画面が提示される場合がある。ユーザがジョブ・パラメータを入力し、ジョブ１５０を投入すると、クラスタ管理エンジン１３０はジョブ投入、関連パラメータ、及び、ジョブ１５０、ユーザ又はユーザ群と関連した何れかの所定のポリシーを処理する。クラスタ管理エンジン１３０は更に、適切な仮想クラスタ２２０を、少なくとも部分的にはこの情報に基づいて判定する。エンジン１３０は更に、ジョブ空間２３０を仮想クラスタ２２０内に割り当て、ジョブ１５０を割り当てノード１１５にわたってＨＰＣ手法を用いて実行する。少なくとも部分的にはこの向上されたＩ／Ｏ性能に基づいて、ＨＰＣサーバ１０２はジョブ１５０の処理をよりすばやく完了し得る。完了すると、クラスタ管理エンジンは結果１６０をユーザに通信する。
【００２１】
図２はノード（又はブレード）１１５の例を示す。ノード１１５は、１つ又は複数のジョブ１５０の、スレッド又は処理などの全部又は一部を処理するよう、何れかの向きでの何れかの計算装置を含む。制約ではなく例として、ノード１１５は、ゼオン（ＸＥＯＮ）マザーボード、オプテロン（ＯＰＴＥＲＯＮ）マザーボード、又は別の計算装置を含み得る。ノード１１５は、グリッド１１０におけるノード１１５にわたってスイッチング機能を分散させることを可能にする統合ファブリックを備えるアーキテクチャを有する。特定の実施例では、グリッド１１０におけるノード１１５にわたってそのような機能を分散させることはグリッド１１０における集中スイッチングを妨げる場合があり、そのことは同様に、グリッド１１０におけるフォールト・トレランスを向上させ、グリッド１１０におけるノード１１５間の並列通信を可能にする。
【００２２】
ノード１１５は、２つのＣＰＵ１６４と、スイッチ（又はファブリック）１６６を含む。ノード１１５への言及は、適宜、２つのＣＰＵ１６４と、スイッチ１６６とに及び得る。ノード１１５への言及は、適宜、ＣＰＵ１６４のみに及び得る。スイッチ１６６は、統合スイッチであり得る。特定の実施例では、スイッチ１６６は２４個のポートを有する。スイッチ１６６上の２つのポートは、ノード１１５との間の入出力を行うよう、ノード１１５を管理ノード１０５に結合し得る。更に、グリッド１１０における３次元メッシュ、３次元トーラス、又は別のトポロジの実施を容易にするよう、スイッチ１６６上の２つのポートは各々、グリッド１１０のｘ軸に沿ってノード１１５を別のノード１１５に結合する場合があり、スイッチ１６６上の２つのポートは各々、グリッド１１０のｙ軸に沿ってノード１１５を別のノード１１５に結合する場合があり、スイッチ１６６上の２つのポートは各々、グリッド１１０のｚ軸に沿ってノード１１５を別のノード１１５に結合する場合がある。更に、スイッチ１６６上の別のポートはノード１１５を別のノード１１５にグリッド１１０において結合して、グリッド１１０における（４次元トーラス又は４つ以上の次元を含む別の非伝統的なトポロジなどの）多次元トポロジの実施を容易にする場合がある。特定の実施例では、スイッチ１６６上の１つ又は複数のポートは、ノード１１５を１つ又は複数の別のノード１１５にグリッド１１０の１つ又は複数の対角線軸に沿って結合する場合があり、そのことは、ノード１１５と、ノード１１５から比較的遠いところにある１つ又は複数の別のノード１１５との間の通信ジャンプ又は通信ホップを削減し得る。制約ではなく例として、スイッチ１６６上のポートは、ノード１１５からいくつかの３次元ジュンプ離れたところにある、グリッド１１０の北東軸に沿って存在する別のノード１５５に結合し得る。特定の実施例では、スイッチ１６６はインフィニバンド（ＩｎｆｉｎｉＢａｎｄ）・スイッチである。特定のスイッチ１６６を図示し、説明したが、本発明は何れかの適切なスイッチ１６６を想定している。
【００２３】
リンク１６８ａはＣＰＵ１６４ａをスイッチ１６６に結合する。リンク１６８ｂはＣＰＵ１６４ａを以下に説明するように、別のノード１１５における別のスイッチ１６６に結合する。リンク１６８ｃはＣＰＵ１６４ｂをスイッチ１６６に結合する。リンク１６８ｄはＣＰＵ１６４ｂを、以下に説明するように別のスイッチ１６６に結合する。リンク１６８ｅと１６８ｆは、スイッチ１６６を、以下に更に説明するように、別のノード１１５における２つの別のＣＰＵ１６４に結合する。特定の実施例では、リンク１６８は、各方向に毎秒約１ギガバイトを通信することができるインフィニバンド４Ｘリンクを含む。特定のリンク１６８を示し、説明したが、本発明は何れかの適切なリンク１６８を想定している。リンク１７０は、ノード１１５へのＩ／Ｏリンクである。リンク１７０は、各方向に毎秒約１ギガバイトを通信することができるインフィニバンド４Ｘリンクを含む。特定のリンク１７０を示し、説明したが、本発明は何れかの適切なリンク１７０を想定している。リンク１７２は、スイッチ１６６を、以下に説明するように、別のノード１１５における別のスイッチ１６６にスイッチ１６６を結合する。特定の実施例では、リンク１７２は、各方向に毎秒約３ギガバイトを通信することができるインフィニバンド１２Ｘリンクを含む。特定のリンク１７２を示し、説明したが、本発明は何れかの適切なリンク１７２を想定している。
【００２４】
図３は、ノード１１５におけるＣＰＵ１６４の例を示す。ＣＰＵ  １６４の例を示し、説明したが、本発明は何れかの適切なＣＰＵ１６４を想定している。ＣＰＵ１６４は、プロセッサ１７４、メモリ・コントローラ・ハブ（ＭＣＨ）１７６、メモリ装置１７８、及びホスト・チャネル・アダプタ（ＨＣＡ）１８０を含む。プロセッサ１７４は、ハードウェア構成部分、ソフトウェア構成部分、組み込み論理構成部分又は２つ以上のそのような構成部分の組み合わせを含む。特定の実施例では、プロセッサ１７４は、インテル（ＩＮＴＥＬ）社によるＮＯＣＯＮＡ（ノコナ）ＸＥＯＮ（ゼオン）プロセッサ１７４である。特定の実施例では、プロセッサ１７４は、約１メガバイトのキャッシュを有し、毎秒約７．２ギガフロップが可能な約３．６ギガヘルツのプロセッサである。特定の実施例では、プロセッサ１７４は、ハイパスレッディングを備える。特定の実施例では、プロセッサ１７４は、メモリ帯域幅の効率的な利用を備えるメモリ・コントローラを含む。特定のプロセッサ１７４を示し、表したが、本発明は何れかの適切なプロセッサ１７４を想定している。
【００２５】
バス１８２はプロセッサ１７４とＭＣＨ１７６とをお互いに結合する。特定の実施例では、バス１８２は、毎秒約６．４ギガバイトを通信することができる約８００ＭＨｚのフロント・サイド・バス（ＦＳＢ）である。特定のバス１８２を示し、説明したが、本発明は何れかの適切なバス１８２を想定している。ＭＣＨ１７６は、プロセッサ１７４と、メモリ装置１７８などの、ＨＰＣシステム１００の１つ又は複数の別の構成部分との間の通信を容易にする、ハードウェア構成部分、ソフトウェア構成部分、若しくは組み込み論理構成部分、又は２つ以上のそのような構成部分の組み合わせを含む。特定の実施例では、ＭＣＨ１７６は、プロセッサ１７４と、メモリ装置１７８、バス１８２、レベル２（Ｌ２）キャッシュ及び、ＣＰＵ１６４の１つ又は複数の別の構成部分のうちの１つ又は複数のものとの間の通信を制御するＣＰＵ１６４用のノースブリッジである。特定の実施例では、ＭＣＨ１７６は、リンデンハースト（ＬＩＮＤＥＮＨＵＲＳＴ）Ｅ７５２０ＭＣＨ１７６である。特定の実施例では、メモリ装置１７８はＭＣＨ１７６に別個に結合される２つのダブル・データ・レート（ＤＤＲ）のメモリ装置を含む。制約ではなく例として、メモリ装置１７８は、その各々が、チャネル毎に毎秒約３．２ギガバイトが可能なその２つのＤＤＲ２−４００メモリを含み得る。特定のメモリ装置１７８を示し、説明したが、本発明は何れかの適切なメモリ装置１７８を想定している。
【００２６】
特定の実施例では、リンクは、プロセッサ１７４と、ＩＣＨに結合される基本Ｉ／Ｏシステム（ＢＩＯＳ）と、ＩＣＨに結合される、ギガビット（Ｇｉｇａｂｉｔ）・イーサネット（登録商標）（Ｅｔｈｅｒｎｅｔ（登録商標））（ＧｂＥ）コントローラ又は別のイーサネット（登録商標）（Ｅｔｈｅｒｎｅｔ（登録商標））・インタフェースとの何れか又は両方などの、ＨＰＣシステム１００の１つ又は複数の別の構成部分との間のＩ／Ｏを容易にする１つ又は複数のハードウェア構成部分、ソフトウェア構成部分、又は組み込み論理構成部分を含むＩ／Ｏコントローラ・ハブ（ＩＣＨ）にＭＣＨ１７６を結合する。特定の実施例では、ＩＣＨは、ＣＰＵ１６４のＩ／Ｏ機能を制御するＣＰＵ１６４用のサウスブリッジである。ＩＣＨに結合されるイーサネット（登録商標）・インタフェースは、ＩＣＨと、イーサネット（登録商標）・インタフェースに結合されるベースボード管理コントローラ（ＢＭＣ）との間の通信を容易にし得る。特定の実施例では、ＨＰＣシステム１００の管理ノード１０５又は別の構成部分は、１つ又は複数のそのようなＢＭＣを含む。特定の実施例では、リンクはイーサネット（登録商標）・インタフェースをスイッチに結合し、それによって１つ又は複数のＧｂＥ管理ポートへのアクセスを備える。
【００２７】
バス１８４は、ＭＣＨ１７６とＨＣＡ１８０とをお互いに結合する。特定の実施例では、バス１８４は、毎秒約４ギガバイトを通信することが可能なＰＣＩ−Ｅｘｐｒｅｓｓ（エクスプレス）８Ｘバス１８４などの、端末構成部分相互接続（ＰＣＩ）バス１８４である。特定のバス１８４を図示し、説明したが、本発明は何れかの適切なバス１８４を想定している。ＨＣＡ１８０は、ＣＰＵ１６４にチャネル・ベースのＩ／Ｏを備える、ハードウェア構成部分、ソフトウェア構成部分、若しくは組み込み論理構成部分、又は２つ以上のそのような構成部分の組み合わせを含む。特定の実施例では、ＨＣＡ１８０はメラノックス（ＭＥＬＬＡＮＯＸ）社のインフィニバンドＨＣＡ１８０である。特定の実施例では、ＨＣＡ１８０は、ノード１１５におけるスイッチ１６６に対して処理構成要素（ＰＥ）毎に約１．８５ギガバイトを可能にし、基本Ｉ／Ｏシステム（ＢＩＯＳ）、イーサネット（登録商標）・インタフェース又は別のＩ／ＯなどのＩ／ＯにＰＥ毎に対して約８００メガバイトを可能にする場合がある、毎秒約２．６５ギガバイトの帯域幅を備える。特定の実施例では、ＨＣＡ１８０は、スイッチ１６６での帯域幅が毎秒約３．７ギガバイトに達して、ピーク時で毎秒約１３．６ギガフロップとなることと、スイッチ１６６でのＩ／Ｏ速度がギガフロップ毎約５０メガバイトに達してフロップ毎約０．２７バイトとなることとの何れか又は両方を可能にする。特定のＨＣＡ１８０を示し、説明したが、本発明は何れかの適切なＨＣＡ１８０を想定している。各リンク１６８は、ＨＣＡ１８０をスイッチ１６６に結合する。リンク１６８ａは、以下に説明するように、ＨＣＡ１８０に対して１次のスイッチ１６６である第１スイッチ１６６にＨＣＡ１８０を結合する。特定の実施例では、ＨＣＡ１８０を含むノード１１５は、第１スイッチ１６６を含む。リンク１６８ｂは、以下に説明するように、ＨＣＡ１８０に対して２次のスイッチである第２スイッチ１６６にＨＣＡ１８０を結合する。特定の実施例では、ＨＣＡ１８０を含まないノード１１５は、以下に説明するように、第２スイッチ１６６を含む。
【００２８】
図４は、２つのスイッチ１６６と４つのプロセッサ１７４とを含むノード対１８６の例を示す。ノード対１８６におけるスイッチ１６６は、お互いに対して冗長であり、そのことはノード対１８６でのフォールト・トレランスを向上させ得る。ノード対１８６における第１スイッチ１６６が適切に機能していない場合、ノード対１８６における第２スイッチ１６６がノード対１８６における４つのＣＰＵ全てにスイッチングを備え得る。ノード対１８６では、スイッチ１６６ａは、ＣＰＵ１６４ａと１６４ｂとに対しては１次スイッチ１６６であり、ＣＰＵ１６４ｃと１６４ｄとに対しては２次スイッチ１６６である。スイッチ１６６ｂは、ＣＰＵ１６４ｃと１６４ｄとに対して１次スイッチ１６６であり、ＣＰＵ１６４ａと１６４ｂとに対して２次スイッチ１６６である。両方のスイッチ１６６ａと１６６ｂが適切に機能している場合、スイッチ１６６ａはＣＰＵ１６４ａと１６４ｂとにスイッチングを備える場合があり、スイッチ１６６ｂはＣＰＵ１６４ｃと１６４ｄとにスイッチングを備え得る。スイッチ１６６ａが適切に機能しているが、スイッチ１６６ｂが適切に機能していない場合、スイッチ１６６ａは、ＣＰＵ１６４ａ、１６４ｂ、１６４ｃ及び１６４ｄにスイッチングを備え得る。スイッチ１６６ｂが適切に機能しているが、スイッチ１６６ａが適切に機能していない場合、スイッチ１６６ｂがＣＰＵ１６４ａ、１６４ｂ、１６４ｃ、及び１６４ｄにスイッチングを備え得る。
【００２９】
リンク１７２は、グリッド１１０におけるノード対１８６の外部の６つのノード１１５にノード対１８６における各ノード１１５を結合する。制約ではなく例として、スイッチ１６６ａでのリンク１７２ａは、グリッド１１０におけるノード１１５ａのノース（北）方向にあるノード対１８６の外部の第１ノード１１５にノード１１５ａを結合し、スイッチ１６６ａでのリンク１７２ｂは、グリッド１１０におけるノード１１５ａのサウス（南）方向にあるノード対１８６の外部の第２ノード１１５にノード１１５ａを結合し、スイッチ１６６ａでのリンク１７２ｃは、グリッド１１０におけるノード１１５ａのイースト（東）方向にあるノード対１８６の外部の第３ノード１１５にノード１１５ａを結合し、スイッチ１６６ａでのリンク１７２ｄは、グリッド１１０におけるノード１１５ａのウエスト（西）方向にあるノード対１８６の外部の第４ノード１１５にノード１１５ａを結合し、スイッチ１６６ａでのリンク１７２ｅは、グリッド１１０におけるノード１１５ａの上にあるノード対１８６の外部の第５ノード１１５にノード１１５ａを結合し、スイッチ１６６ａでのリンク１７２ｆは、グリッド１１０におけるノード１１５ａの下にあるノード対１８６の外部の第６ノード１１５にノード１１５ａを結合する。特定の実施例では、リンク１７２は、お互いに異なるノード対１８６の外部のノード１１５群にノード対１８６におけるノード１１５ａ及び１１５ｂを結合する。制約ではなく例として、スイッチ１６６ａでのリンク１７２は、ノード対１８６の外部の第１ノード１１５、ノード対１８６の外部の第２ノード１１５、ノード対１８６の外部の第３ノード１１５、ノード対１８６の外部の第４ノード１１５、ノード対１８６の外部の第５ノード１１５、及びノード対１８６の外部の第６ノード１１５を含む、ノード対１８６の外部の、第１の６つのノード１１５の群をノード１１５ａに結合し得る。スイッチ１６６ｂでのリンク１７２は、ノード対１８６の外部の第７ノード１１５、ノード対１８６の外部の第８ノード１１５、ノード対１８６の外部の第９ノード１１５、ノード対１８６の外部の第１０ノード１１５、ノード対１８６の外部の第１１ノード１１５、及びノード対１８６の外部の第１２ノード１１５を含む、ノード対１８６の外部の、第２の６つのノード１１５の群をノード１１５ｂに結合し得る。
【００３０】
特定の実施例では、リンク１７２は、第１端の反対側の、グリッド１１０の第２端に隣接する第２ノード１１５にグリッド１１０の第１端に隣接する第１ノード１１５を結合し得る。制約ではなく例として、グリッド１１０の左端に隣接する第１ノード１１５と、グリッド１１０の左端の反対側にある、グリッド１１０の右端に隣接する第２ノード１１５を検討する。リンク１７２は、グリッド１１０における、第２ノード１１５の位置に対する第１ノード１１５の位置にもかかわらず、第１ノード１１５が第２ノード１１５のイースト方向にあり、第２ノード１１５が第１ノード１１５のウエスト方向にあるように、第１ノード１１５と第２ノード１１５とをお互いに結合し得る。別の例として、グリッド１１０の前端に隣接する第１ノード１１５と、グリッド１１０の前端の反対側にある、グリッド１１０の後端に隣接する第２ノード１１５を検討する。リンク１７２は、グリッド１１０における、第２ノード１１５の位置に対する第１ノード１１５の位置にもかかわらず、第１ノード１１５が第２ノード１１５のサウス方向にあり、第２ノード１１５が第１ノード１１５のノース方向にあるように、第１ノード１１５と第２ノード１１５とをお互いに結合し得る。更に別の例として、グリッド１１０の上端に隣接する第１ノード１１５と、グリッド１１０の上端の反対側にある、グリッド１１０の下端に隣接する第２ノード１１５を検討する。リンク１７２は、グリッド１１０における、第２ノード１１５の位置に対する第１ノード１１５の位置にもかかわらず、第１ノード１１５が第２ノード１１５の下にあり、第２ノード１１５が第１ノード１１５の上にあるように、第１ノード１１５と第２ノード１１５とをお互いに結合し得る。
【００３１】
図５Ａ乃至図５Ｄは、システム１００におけるグリッド１１０とその利用又はトポロジの種々の実施例を示す。図５Ａは、複数のノード種類を用いたグリッド１１０の一構成、すなわち３次元トーラスを示す。例えば、図示するノード種類は外部Ｉ／Ｏノード、ファイル・システム（ＦＳ）サーバ、ＦＳメタデータ・サーバ、データベース・サーバ、及び計算ノードである。図５Ｂは、グリッド１１０の「フォールディング（畳むこと）」の例を示す。フォールディングは一般的に、グリッド１１０の１つの物理的な先端が、相当する軸方向の先端と接続し、それによってより頑健なトポロジすなわちエッジレス・トポロジを備えることを可能にする。この実施例では、ノード１１５は、ラップアラウンドされて、ノード・ライン２１６によるほぼシームレスなトポロジ接続を備える。ノード・ライン２１６は、２つ以上のノード１１５を相互接続する何れかの通信プロトコルを実施する何れかの適切なハードウェアであり得る。例えば、ノード・ライン２１６はギガビット・イーサネット（登録商標）を実施する銅線ケーブル又は光ファイバ・ケーブルであり得る。特定の実施例では、上記のように、ノード・ライン２１６は、１つ又は複数のリンク１７２を含む。
【００３２】
図５Ｃは、そのグリッド１１０内に割り当てられる１つの仮想クラスタ２２０を備えているそのグリッド１１０を示す。１つの仮想クラスタ２２０しか示していないが、本願の開示の範囲から逸脱することなく、グリッド１１０における仮想クラスタ２２０の（ゼロを含む）何れかの数であり得る。仮想クラスタ２２０は、関連ジョブ１５０を処理する論理的なノード群１１５である。例えば、仮想クラスタ２２０は、同様なジョブ１５０を投入すると思われる、１つの研究グループ、部署、研究所、又は何れかの別のユーザ群と関連し得る。仮想クラスタ２２０は、何れかの形状であり得るものであり、グリッド１１０内に何れかの数のノード１１５を含み得る。実際に、図示する仮想クラスタ２２０が複数の物理的に隣接しているノード１１５を含んでいるが、クラスタ２２０は、ジョブ１５０を処理するよう動作可能な論理的に関連したノード１１５の分散クラスタであり得る。
【００３３】
仮想クラスタ２２０は、何れかの適切な時点で割り当て得る。例えば、クラスタ２２０は、システム１００が初期化されると、例えば起動パラメータに基づいて割り当ててもよく、例えば、変動する、サーバ１０２のニーズに基づいて動的に割り当ててもよい。更に、仮想クラスタ２２０は経時的にその形状とサイズとを変えて、変動するリクエスト、デマンド、及び状況にすばやく対応し得る。例えば、仮想クラスタ２２０は、動的に変動させて、先行時点ではクラスタ２２０の部分であった第２ノード１１５の障害に応じて自動的に割り当てられる第１ノード１１５を含み得る。特定の実施例では、クラスタ２２０は、ノード１１５を処理の要求に応じて共有し得る。特定の実施例では、スケジューラ５１５が、以下に説明するように、スケジューリング・アルゴリズムによって１つ又は複数のジョブ１５０に１つ又は複数の仮想クラスタ２２０を割り当て得る。
【００３４】
図５Ｄは、仮想クラスタ２２０例の内部に割り当てられる種々のジョブ空間２３０ａ及び２３０ｂ各々を示す。一般的には、ジョブ空間２３０は、受信ジョブ１５０を完了するよう動的に割り当てられる仮想クラスタ２２０内のノード１１５の群である。通常、実行ジョブ１５０毎に１つのジョブ空間２３０が存在し、逆もあてはまるが、本願の開示の範囲から逸脱することなく、ジョブ空間２３０はノード１１５を共有し得る。ジョブ空間２３０の寸法は、ユーザ又は管理者によって手作業で入力してもよく、ジョブ・パラメータ、ポリシー、及び／又は何れかの別の適切な特性に基づいて動的に判定してもよい。特定の実施例では、スケジューラ５１５は、以下に説明するように、スケジューリング・アルゴリズムによってジョブ空間２３０の１つ又は複数の寸法を判定し得る。
【００３５】
図６Ａ及び図６Ｂは、システム１００による、管理グラフィカル・ユーザ・インタフェース４００の種々の実施例を示す。多くの場合、管理ＧＵＩ４００は、クライアント１２０にＧＵＩ１２６を用いて提示される。一般的に、管理ＧＵＩ４００は、種々の管理用対話画面若しくは管理用対話ディスプレイをシステム管理者に提示するもの及び／又は種々のジョブ投入画面若しくはジョブ・プロファイル画面をユーザに提示するものである。これらの画面又はディスプレイは、種々の収集情報表示に組み立てられるグラフィカル構成要素から成る。例えば、ＧＵＩ４００は、（図６Ａに示す）グリッド１１０の物理的状態の表示、又は（図６Ｂに示す）グリッド１１０におけるノード１１５の論理的な、割り当てすなわちトポロジの表示を提示し得る。
【００３６】
図６Ａは例示的ディスプレイ４００ａを示す。ディスプレイ４００ａは、ノード１１５を効果的に管理するよう、管理者に提示される情報を含み得る。例示的実施例は、グリッド１１０の論理的な、「ピクチャ」すなわちスクリーンショットを備えている標準的なウェブ・ブラウザを含む。例えば、このピクチャはグリッド１１０と構成ノード１１５との物理的な状態を備え得る。各ノード１１５が何れかの数の色のうちの１つであり、各色が種々の状態を表す場合がある。例えば、障害ノード１１５が赤色であり、利用ノード又は割り当てノード１１５が黒色であり、非割り当てノード１１５がシェード・カラーである場合がある。更に、ディスプレイ４００ａは、管理者が、ノード１１５のうちの１つの上にポインタを移動させ、その種々の物理的属性を視ることを可能にし得る。例えば、管理者には、「ノード」、「利用可能性」、「プロセッサ利用率」、「メモリ利用率」、「温度」、「物理位置」、及び「アドレス」を含む情報が備えられる場合がある。当然、これらは例示的なデータ・フィールドに過ぎず、何れかの適切な物理ノード情報又は論理ノード情報が管理者用ディスプレイであり得る。ディスプレイ４００ａは、管理者が、グリッド１１０の表示を回転させるか何れかの別の適切な関数を行うことを可能にする場合もある。
【００３７】
図６Ｂは例示的なディスプレイ４００ｂを示す。ディスプレイ４００ｂは、グリッド１００の論理的な状態の表示すなわちピクチャを提示する。図示する実施例は、グリッド１１０内に割り当てられる仮想クラスタ２２０を提示する。ディスプレイ４００ｂは更に、１つ又は複数のジョブ１５０を実行するよう、クラスタ２２０内に割り当てられる２つの例示的なジョブ空間２３０を表示する。ディスプレイ４００ｂは、管理者に、（割り当て又は非割り当てなどの）種々の状態によってグループ化されるノード１１５の数を視るよう、ポインタをグラフィカル仮想クラスタ２２０上に移動させることを可能にし得る。更に、管理者は、適切なジョブ情報が提示されるようにジョブ空間２３０のうちの１つの上にポインタを移動させ得る。例えば、管理者は、ジョブ名、開始時間、ノード数、推定終了時間、プロセッサ利用度、Ｉ／Ｏ利用度他を視ることができる場合がある。
【００３８】
（例示的ディスプレイ４００ａ及び４００ｂ各々によって上記に表す）管理ＧＵＩ１２６が例示的な目的のためのものにすぎず、図示するグラフィカル構成要素、更には図示しない別の管理構成要素を何ら含まない場合があり、それらの構成要素の一部又は全部を含む場合もあるということが分かるものである。
【００３９】
図７は、システム１００による、クラスタ管理エンジン１３０の一実施例を示す。この実施例では、クラスタ管理エンジン１３０は、複数のサブモジュール又は構成部分、すなわち、物理マネージャ５０５、仮想マネージャ５１０、ジョブ・スケジューラ５１５、及び局所のメモリ又は変数５２０を含む。
【００４０】
物理マネージャ５０５は、種々のノード１１５の物理的状態を判定し、この判定状態に基づいて効果的にノード１１５を管理するよう動作可能な何れかのソフトウェア、論理、ファームウェア、又は別のモジュールである。物理マネージャはこのデータを用いて、ノード１１５の障害を効率的に判定し、この障害に効率的に応答する場合がある。一実施例では、物理マネージャ５０５は複数のエージェント１３２に通信可能に結合され、各エージェントは１つのノード１１５上に存在する。上記のように、エージェント１３２は、少なくとも物理情報を収集し、マネージャ５０５に通信する。物理マネージャ５０５は更に、クライアント１２０のある場所にいるシステム管理者に警告を、ネットワーク１０６を介して通信するよう動作される。
【００４１】
仮想マネージャ５１０は、仮想クラスタ２２０と、ノード１１５の論理的状態とを管理するよう動作可能な何れかのソフトウェア、論理、ファームウェア、又は別のモジュールである。一般的に、仮想マネージャ５１０は、ノード１１５の論理的表現をノード１１５の物理的状態とリンクする。これらのリンクに基づいて、仮想マネージャ５１０は、ノード障害又は、ＨＰＣ処理を増加させる（システム若しくはユーザの）要求に応じる場合などに、仮想クラスタを生成し、これらのクラスタ２２０に対する種々の変更を処理し得る。仮想マネージャ５１０は、非割り当てノード１１５などの仮想クラスタ２２０の状態をスケジューラ５１５に通信して、非実行状態又は待ち行列に入っている状態の、ＨＰＣ処理及びＨＰＣジョブ１５０の動的バックフィルを可能にする場合もある。仮想マネージャ５１０は更に、ジョブ１５０の特定ノード１１５との互換性を判定し、この情報をスケジューラ５１５に通信する場合がる。特定の実施例では、仮想マネージャ５１０は、個々の仮想クラスタ２２０を表すオブジェクトであり得る。
【００４２】
特定の実施例では、クラスタ管理エンジン１３０は、スケジューラ５１５を含む。スケジューラ５１５は、スケジューリング・アルゴリズムによってジョブ１５０にノード１１５を割り当てる、ハードウェア構成部分、ソフトウェア構成部分、若しくは組み込み論理構成部分又は、１つか複数のそのような構成部分を含む。特定の実施例では、スケジューラ５１５はプラグインである。特定の実施例では、クラスタ管理エンジン１５０がジョブ１５０を受信することに応じて、クラスタ管理エンジン１３０は、ジョブ１５０に１つ又は複数のノード５１５を割り当てるようスケジューラ５１５をコールする。特定の実施例では、ジョブ１５０に１つ又は複数のノード５１５を割り当てるよう、クラスタ管理エンジン１３０がスケジューラ５１５をコールすると、クラスタ管理エンジン１３０は、ジョブ１５０に割り当てるのに利用可能な、グリッド１１０におけるノード１１５をスケジューラ５１５に対して識別する。制約ではなく例として、クラスタ管理エンジン１３０が、ジョブ１５０に１つ又は複数のノード１１５を割り当てるようスケジューラ５１５をコールすると、クラスタ管理エンジン１３０は、ジョブ１５０への割り当てに利用可能な、グリッド１１０におけるノード１１５の全てのリストをスケジューラ５１５に通信し得る。特定の実施例では、クラスタ管理エンジン１３０は、ジョブ１５０に対する割り当てに利用可能なノード１１５の数がジョブ１５０に要求されるノード１１５の数以上である場合にのみ、ジョブ１５０に１つ又は複数のノード１１５を割り当てるよう、スケジューラ５１５をコールする。
【００４３】
上記のように、特定の実施例では、グリッド１１０は、その各々が４つのＣＰＵ１６４に結合されるその３次元の、スイッチ１６６のトーラスである。スケジューラ５１５は、グリッド１１０を、ノード１１５のトーラスとして論理的に構成する。サイズが〔ｘ，ｙ，ｚ〕の、スイッチ１６６のトーラスは、〔４ｘ，ｙ，ｚ〕、〔ｘ，４ｙ，ｚ〕、〔ｘ，ｙ，４ｚ〕、〔２ｘ，２ｙ，ｚ〕、〔２ｘ，ｙ，２ｚ〕、及び〔ｘ，２ｙ，２ｚ〕の６つの考えられる論理的な構成を備える。スケジューラ５１５が、ジョブ１５０に１つ又は複数のノード１１５を割り当てる場合、スケジューラ５１５はジョブ１５０に最も適した論理的な構成を選択し得る。
【００４４】
メッセージ・パッシング・インタフェース（ＭＰＩ）は、ジョブ１５０における処理間の通信の標準である。特定の実施例では、スケジューラ５１５はジョブ１５０に割り当てられる各ノード１１５にＭＰＩランクを割り当てる。Ｎ個の処理を含むジョブ１５０について、スケジューラ１５０は各処理に０とＮ−１との間の一意の整数のランクを割り当てる。ジョブ１５０における第１処理にメッセージを通信するよう、ジョブ１５０における第２処理は、第１処理のランクを規定し得る。同様に、ジョブ１５０における第１処理からメッセージを受信するよう、ジョブ１５０における第２処理は、第１処理のランクを規定し得る。同様に、ジョブ１５０における第１処理からメッセージを受信するよう、ジョブ１５０における第２処理は第１処理のランクを規定し得る。スケジューラ１５０は、その各々がその各々のブロードキャスト・グループにおける処理からその各々のブロードキャスト・グループにおける全ての別の処理までのメッセージの通信を容易にする、その１つ又は複数のブロードキャスト・グループを規定する場合もある。ブロードキャスト・グループにおける第１処理からメッセージを受信するよう、ブロードキャスト・グループにおける第２処理はブロードキャスト・グループを規定し得る。
【００４５】
特定の実施例では、スケジューラ５１５は、「ｓｐａｔｉａｌ」と「ｃｏｍｐａｃｔ」と「ａｎｙ」との３つの種類の要求を処理する。「ｒｅｑｕｅｓｔ」への言及は、適宜、ジョブ１５０に及び、適宜、その逆もあてはまる。ユーザがジョブ１５０をＨＰＣサーバ１０２に投入すると、ユーザは要求の種類を規定し得る。「ｓｐａｔｉａｌ」の要求は、空間的に記述されるジョブ１５０に及ぶ。既存のＭＰＩアプリケーションのうちの１つのクラスは、ジョブ１５０における処理間の空間的な関係を呈する。例として、気象モデルがある。気象モデルを含むジョブ１５０を処理するよう、ＨＰＣサーバ１０２は、緯度経度（又は同様な座標システム）に及ぶ２次元グリッドを用いて、地球の表面を分割し、時間を離散的な時間ステップに分割する場合がある。ジョブ１５０の各処理は特定の領域の気象をモデル化する。各時間ステップの始めに、処理は、処理に隣接する４つの別の処理の各々と境界値を交換し、更に、特定の領域の気象を計算する。気象モデルを含むジョブ１５０を処理するよう、ＨＰＣサーバ１０２は、２次元のグリッドではなく、緯度経度と高度（又は同様な座標システム）に及ぶ３次元のグリッドを用いて地球の表面を分割し得る。
【００４６】
ジョブ１５０における処理間で空間的な関係を呈するＭＰＩアプリケーションについて、ユーザはジョブ１５０にノード１１５のトリプレット
【００４７】
【数１】
0005570095.tif 000002
を要求し得る。次元Ｓの全てが１よりも大きい場合、要求は３次元の要求である。次元Ｓのうちの１つが１に等しい場合、要求は２次元の要求である。次元Ｓのうちの２つが１に等しい場合、要求は１次元の要求である。要求をノード１１５に割り当てるよう、スケジューラ１５０は空間的な座標をＭＰＩランクに：
【００４８】
【数２】
0005570095.tif 000003

；としてマッピングし得る。Ｓｘ、Ｓｙ、及びＳｚは要求のサイズを示し、ｘはゼロとＳｘとの間であり、ｙはゼロとＳｙとの間であり、ｚはゼロとＳｚとの間である。ノード１１５を２次元の要求に割り当てるよう、スケジューラ１５０は、空間座標をＭＰＩランクに：
【００４９】
【数３】
0005570095.tif 000004

としてマッピングし得る。特定の実施例では、空間座標をＭＰＩランクにマッピングするよう、スケジューラ５１５はまず、グリッド１１０のｚ軸に沿って増加させ、次にグリッド１１０のｙ軸に沿って増加させ、更にグリッド１１０のｘ軸に沿って増加させる。スケジューラ５１５がＭＰＩランクに空間座標をマッピングすることに関して正しくない前提、例えば、まず、グリッド１１０のｘ軸に沿って増加させ、次にグリッド１１０のｙ軸に沿って増加させ、更にグリッド１１０のｚ軸に沿って増加させるという前提に対処するよう、クラスタ管理エンジン３０は要求ジョブ１５０を、例えば、
【００５０】
【数４】
0005570095.tif 000005

としてスケジューラ５１５に提示し得る。
【００５１】
「ｃｏｍｐａｃｔ」要求は、空間的に記述されていないジョブ１５０に及ぶ。スケジューラ５１５は、コンパクト要求に割り当てられる、ノード１１５の対の各々の間の最大通信距離（又は最大ホップ・カウント）を最小にするよう、ノード１１５をコンパクト要求に割り当て得る。「ａｎｙ」要求は、処理間通信をほとんど必要としないか全く必要としないジョブ１５０に及ぶ。スケジューラ１５０は何れかのノード１１５の群を割り当てて何れかの要求を満たし得る。そのようなジョブ１５０は、グリッド１１０における断片化から生じるホールを充填する機会をスケジューラ１５０に備える。
【００５２】
ユーザは、ジョブ１５０をＨＰＣサーバ１０２に投入する場合、ジョブ１５０にアグレシブ・フラグを規定する場合もある。特定の実施例では、アグレシブ・フラグは、ノード１１５をジョブ１５０に割り当てる目的でスケジューラ５１５に割り当てられる自由度を示す、ゼロと１との間の浮動小数である。高い数は低い数よりも自由度をスケジューラ５１５に与える。ユーザが空間的な要求をＨＰＣサーバ１０２に投入し、空間的な要求上のアグレシブ・フラグをゼロに設定する場合、空間的な要求に対応するようノード１１５が利用可能である場合のみジョブ１５０をスケジューリングする。特定の実施例では、ユーザが空間的な要求をＨＰＣサーバ１０２に投入し、空間的な要求上のアグレシブ・フラグをゼロより大きな数に設定する場合、スケジューラ５１５は空間的な要求に対応しようとするが、スケジューラ５１５は、空間的な要求に対応することが可能でない場合、ジョブ１５０をコンパクトな要求としてスケジューリングする。特定の実施例では、コンパクトな要求は、コンパクトな要求に割り当てられるノード１１５の対の間のホップ・カウントが無限であることを可能にし得る。クラスタ管理エンジン１３０は、割り当てに利用可能なノード１１５の数が要求ノード１１５数以上である場合のみ、スケジューラ５１５をコールするので、スケジューラ１５０は、そのような要求に常に対応することが可能である。特定の実施例では、コンパクトな要求のアグレシブ・フラグは、コンパクトな要求に割り当てられるノード１１５の対の間のホップ・カウントに対する限界を示す。そのような実施例では、ホップ・カウントに対する限界は
【００５３】
【数５】
0005570095.tif 000006

に等しい場合があり、ａはアグレシブ・フラグである。
【００５４】
特定の実施例では、クラスタ管理エンジン１３０がスケジューラ５１５をコールして１つ又は複数のノード１１５をジョブ１５０に割り当てる場合、クラスタ管理エンジン１３０は：要求される、ノード１１５の数；要求種類；ジョブ１５０のサイズ；ジョブ１５０上のアグレシブ・フラグ；（スケジューラ５１５が後に調節してグリッド１１０のノード・ベースのサイズを判定する）グリッド１１０のスイッチ・ベースのサイズ；（特定の実施例では、４に等しい、）スイッチ１６６毎のノード１１５の数；ジョブ１５０への割り当てに利用可能なノード１１５の数；及び（例えば、ジョブ１５０への割り当てに利用可能なノード１１５全てのリストなどの）ジョブ１５０への割り当てに利用可能な１つ又は複数のノード１１５を識別するもの；の入力をスケジューラ５１５に備える。特定の実施例では、ＲｅｑｕｅｓｔｅｄＮｏｄｅｓは要求されるノード１１５の数を示し、ＲｅｑｕｅｓｔＴｙｐｅは要求種類を示し、（アレイを含む）ＲｅｑｕｅｓｔｅｄＳｉｚｅはジョブ１５０のサイズを示し、ＡｇｇｒｅｓｓｉｖｅＦｌａｇはジョブ１５０上のアグレシブ・フラグを示し、（アレイを含む）ＴｏｒｕｓＳｉｚｅはグリッド１１０のスイッチ・ベースのサイズを示し、ＮｏｄｅｓＰｅｒＳｗｉｔｃｈはスイッチ１６６毎のノード１１５の数を示し、ＮｕｍＦｒｅｅＮｏｄｅｓはジョブ１５０への割り当てに利用可能なノード１１５の数を示し、（アレイを含む）ＦｒｅｅＮｏｄｅＬｉｓｔはジョブ１５０への割り当てに利用可能な１つ又は複数のノード１１５を識別する。
【００５５】
特定の実施例では、スケジューラ５１５がジョブ１５０をスケジューリングする（かスケジューリングしようとする）場合、スケジューラ５１５は、（ジョブ１５０に割り当てられるノード１１５のリストなどの）ジョブ１５０に割り当てられるノード１１５を識別するもの；ジョブ１５０に割り当てられる各ノードのＭＰＩランク；及び（１）スケジューラ５１５がジョブ１５０をスケジューリングしたこと；（２）スケジューラ５１５はジョブ１５０をスケジューリングしなかったこと；又は（３）スケジューラ５１５がジョブ１５０をスケジューリングすることが全く可能でないということを示す戻り値；の出力を備える。
【００５６】
特定の実施例では、ノード１１５をジョブ１５０に割り当てるよう、スケジューラ５１５はまず、ジョブ１５０をスケジューリングするよう変数を初期化し、次に変数によってジョブ１５０をスケジューリングし、クラスタ管理エンジン１３０で処理するようスケジュール（又は結果）を変換する。ＳｐａｔｉａｌＡｌｌｏｗｅｄ、ＣｏｍｐａｃｔＡｌｌｏｗｅｄ、及びＡｎｙＡｌｌｏｗｅｄの３つの変数は、スケジューリングが可能な種類を示す。スケジューラ５１５は、ＳｐａｔｉａｌＡｌｌｏｗｅｄ、ＣｏｍｐａｃｔＡｌｌｏｗｅｄ、及びＡｎｙＡｌｌｏｗｅｄを初期化するよう以下のロジックの例を用い得る：
【００５７】
【表１】
0005570095.tif 000007
特定の実施例では、スケジューラ５１５は、グリッド１１０のより小さい次元の前にグリッド１１０のより大きな次元を示すよう、グリッド１１０のスイッチ・ベースのサイズを形成させる。（アレイを含む）ＴｏｒｕｓＭａｐは、グリッド１１０のより小さい次元の前にグリッド１１０のより大きな次元を示すよう、グリッド１１０のスイッチ・ベースのサイズを形成させたグリッド１１０のスイッチ・ベースのサイズを示す。スケジューラ５１５は、ＴｏｒｕｓＭａｐをＦｒｅｅＮｏｄｅＬｉｓｔに識別されているノード１１５の全てに適用する。（アレイを含む）ＩｎｖｅｒｓｅＴｏｒｕｓＭａｐはＴｏｒｕｓＭａｐの逆数であり、スケジューラ５１５はＩｎｖｅｒｓｅＴｏｒｕｓＭａｐを、処理するようクラスタ管理エンジン１３０にリストを戻す前にジョブ１５０に割り当てられるノード１１５のリストに適用する。制約ではなく例として、クラスタ管理エンジン１３０が１４×１６×１５のスイッチ・ベースのトーラス・サイズをスケジューラ５１５に通信する場合、スケジューラ５１５はＴｏｒｕｓＭａｐを
【００５８】
【数６】
0005570095.tif 000008

に設定する。その場合、スイッチ・ベースのトーラス・サイズは１６×１５×１４
となり、
【００５９】
【数７】
0005570095.tif 000009

の指数を有するＦｒｅｅＮｏｄｅＬｉｓｔにおけるノード１５５については、スケジューラ５１５がＴｏｒｕｓＭａｐを適用した後のノード１５５の指数は
【００６０】
【数８】
0005570095.tif 000010

である。上記例のＩｎｖｅｒｓｅＴｏｒｕｓＭａｐは
【００６１】
【数９】
0005570095.tif 000011

である。
【００６２】
特定の実施例では、ＮｕｍＭａｐＤｉｍｅｎｓｉｏｎｓは、スイッチ・ベースのトーラスをノード・ベースのトーラスに変換する場合に修正する次元の数を示す。ＭａｐＤｉｍｓｉｏｎｓ［２］及びＭａｐＭｏｄ［２］は、修正する次元の指数と、修正する次元の各々の乗数を備える。スケジューラ５１５は、修正する次元のうちの１つを４で掛けてもよく、修正する次元のうちの２つの各々を２で掛けてもよい。スケジューラ５１５は、どちらの乗算を適用するかを判定し、次に、適宜、当初はスイッチによって記述された、トーラスのサイズを修正する。スケジューラ５１５は、ＲｅｑｕｅｓｔＴｙｐｅによって、どちらの乗算を適用するかを判定する。
【００６３】
特定の実施例では、スケジューラ５１５は要求を満たすメッシュのリストを生成する要求に１つ又は複数の座標変換を適用する。メッシュは、グリッド１１０に埋め込まれるボックスを含む。
【００６４】
【数１０】
0005570095.tif 000012

の始点と
【００６５】
【数１１】
0005570095.tif 000013

の終点がメッシュを規定する。メッシュは、１つ又は複数の次元における終点よりも大きな始点を有する場合、１つ又は複数の次元において「ラッピング」する。制約ではなく例として、［３，７，５］での始点と［２，９，４］での始点とを備えているメッシュはｘ次元とｙ次元でラッピングする。グリッド１１０における点
【００６６】
【数１２】
0005570095.tif 000014

である場合、非ラッピング・メッシュに存在する。スケジューラ５１５が要求を満たすメッシュ・リストを生成した後、スケジューラ５１５は、要求への割り当てに利用可能なノード１５５の群に対してスケジューリング可能なメッシュをスケジューラ５１５が識別するまでスケジューラ５１５はリストをループする。一般的に、３次元の要求は、要求を満たす６つのメッシュをもたらす傾向にあり、２次元の要求は、要求を満たす数百のメッシュをもたらす傾向にあり、１次元の要求は、要求を満たす数十のメッシュをもたらす傾向にある。特定の実施例では、スケジューラ５１５は、要求を満たすメッシュ数を最大にするよう、２次元又は３次元の要求に対するノード・ベースのトーラスを設定する。
【００６７】
１次元の要求をスケジューリングする（か、１次元の要求に１つ又は複数のノード１１５を割り当てる）よう、変数を初期化するのに、スケジューラ５１５は、グリッド１１０におけるスイッチ１６６のｙ軸とｚ軸をノード１１５の２×２の構成に設定する。スケジューラ５１５は、グリッド１１０におけるスイッチ１６６のｚ軸が未使用の次元であるようにジョブ１５０をマッピングする。スケジューラ５１５は更に、ジョブ１５０をｚ軸に沿ってｙ軸にフォールディングする。したがって、特定の実施例では、１次元の要求には：
【００６８】
【表２】
0005570095.tif 000015
が適用され、
［ｎ］は０から１−ｎまでの範囲の指数を有する１次元のアレイを適宜、示す。制約ではなく例として、
【００６９】
【数１３】
0005570095.tif 000016

に相当する。
【００７０】
特定の実施例では、スケジューラ５１５は、２次元の要求をスケジューリングするよう、グリッド１１０におけるスイッチ１６６のｙ軸とｚ軸とをノード１１５の２×２の構成に設定して変数を初期化する場合もある。特定の実施例では、スケジューラ５１５は、スケジューリングするよう、２次元要求を第３の、未使用の次元にフォールディングして、よりコンパクトな形状を生成する。多くのそのようなフォールディングが考えられる場合があるので、スケジューラ５１５はそのようなフォールディングの最大数をもたらす（ノード１１５の２×２の構成とは異なり得る）構成を選択し得る。スケジューラ５１５は、２次元の要求について考えられる６つの構成の各々を検査し、６つの考えられる構成毎に考えられるフォールディングの数を計算する場合がある。特定の実施例では、スケジューラ５１５は最大の考えられるフォールディング数を可能にする構成を選択する。特定の実施例では、２つの１×４の構成が互角の場合、スケジューラ５１５はまず、ｚ軸を修正する１×４の構成を選択し、次にｙ軸を修正する１×４の構成を選択する。
【００７１】
更に、ｘ軸とｙ軸とを修正する２×２の構成を選択する。特定の実施例では、３次元の要求が、フォールディングを可能にする代わりにお互いに対してその各々が一意のその６つの向き（又は回転）を可能にする以外は、２次元の要求をスケジューリングするよう、スケジューラ５１５が変数を初期化することになるので、スケジューラ５１５は３次元の要求をスケジューリングするよう変数を初期化する。
【００７２】
特定の実施例では、コンパクトな要求をスケジューリングするよう変数を初期化するのに、スケジューラ５１５は、コンパクトな要求のｚ軸を４で掛けて１×４の構成を生成する。１×４の構成を用いて、コンパクトな要求を処理することは、コンパクトな要求に割り当てられるスイッチ１６６に結合されるノード１１５の全てを用いることを容易にし、このことは同様に、グリッド１１０におけるスイッチ・ポイントでの断片化を削減する。特定の実施例では、スケジューラ５１５は同様に、何れかの要求をスケジューリングするよう変数を初期化する。
【００７３】
パーティションは、スケジューリングするのに利用可能な、グリッド１１０におけるノード１１５の全てを含む最小メッシュである。ＰａｒｔＳｔａｒｔ［３］はパーティションの始点座標を示し、ＰａｒｔＥｎｄ［３］はパーティションの終点座標を示し、ＰａｒｔＳｉｚｅ［３］  はパーティションのサイズを示し、ＰａｒｔＷｒａｐｓ［３］はパーティションがラッピングするか否かを示す。スケジューラ５１５は要求を満たすノード１１５をサーチする長さを削減するようパーティションを構築し得る。パーティションは、グリッド１１０よりもずっと小さい場合がある。ｉ  ＝  ０、１、及び２の場合、ＰａｒｔＳｔａｒｔ［ｉ］は、（アレイを含む）ＦｒｅｅＭｅｓｈにおいて考えられるｉの座標の全てのうちの最小の値を含む。ＰａｒｔＳｉｚｅ［ｉ］  ＝  ＰａｒｔＥｎｄ［ｉ］  −  ＰａｒｔＳｔａｒｔ［ｉ］  ＋  １である。ＰａｒｔＳｉｚｅ［ｉ］がＴｏｒｕｓＳｉｚｅ［ｉ］に等しい場合、ＰａｒｔＷｒａｐｓ［ｉ］はＴｒｕｅ（真）である。スケジューラ５１５は（アレイを含む）ＮｏｄｅＩｎＵｓｅをＦｒｅｅＭｅｓｈにおける全てのノードについてＮＯＤＥ＿ＮＯＴ＿ＩＮ＿ＵＳＥに設定し、他のノードの全てについてＮＯＤＥ＿ＩＮ＿ＵＳＥに設定する。
【００７４】
特定の実施例では、ＦｒｅｅＹ［ｉ，ｊ，ｋ］は、
【００７５】
【数１４】
0005570095.tif 000017

までの線｛ｉ，ｊ，ｋ｝に沿ったフリー・ノード１５５の数を含む。ＦｒｅｅＸ［ｉ，ｊ，ｋ］は、
【００７６】
【数１５】
0005570095.tif 000018

までの線｛ｉ，ｊ，ｋ｝に沿ったフリー・ノード１５５の数を含む。スケジューラ５１５は、ＦｒｅｅＹ［ｉ，ｊ，ｋ］とＦｒｅｅＸ［ｉ，ｊ，ｋ］とを用いて、以下に説明するようにスキャン・アルゴリズムを実行する。特定の実施例では、ＳｐａｔｉａｌＡｌｌｏｗｅｄ又はＣｏｍｐａｃｔＡｌｌｏｗｅｄがＴｒｕｅである場合のみ、ＦｒｅｅＹ［ｉ，ｊ，ｋ］と  ＦｒｅｅＸ［ｉ，ｊ，ｋ］とを構成する。
【００７７】
ＳｐａｔｉａｌＡｌｌｏｗｅｄがＴｒｕｅである場合、スケジューラ５１５は、要求をスケジューリングする種々の構造を試みる。
【００７８】
【数１６】
0005570095.tif 000019

の最大６つの一意の向きを有する。これらの６つの向きは、スケジューラ５１５がメッシュに適用し得る、４つの一意の９０°の回転と２つの一意の１８０°の回転とに相当する。いずれかの２つの次元がお互いに等しい場合、３つの一意の向きのみが利用可能である。スケジューラ５１５はメッシュをスケジューリングする場合、考えられる向きを全て考慮する。ジョブ１５０が２次元である、すなわちジョブ１５０の１つの次元が１に等しい場合、スケジューラ５１５は、ジョブ１５０の２つの使用次元、すなわちジョブ１５０の１より大きい次元、の何れかを、ジョブ１５０の未使用次元、すなわちジョブ１５０の１に等しい次元にアコーディオンに似たかたちでフォールディングして、よりコンパクトな３次元のメッシュを生成し得る。スケジューラ５１５がフォールディングの長さの整数の倍数でない次元をフォールディングする場合、最後のフォールディングは先行するフォールティングの全てよりも短くなり、それによって２次元のメッシュが３次元メッシュ上に連結されることになる。ジョブ１５０が１次元の場合、スケジューラ５１５はジョブ１５０を２つの未使用次元の何れかにフォールディングし得る。スケジューラ５１５は更に、２つの結果次元の何れかを残りの未使用次元にフォールディングし得る。メッシュの結果形状は、一般的に言えば、４つのメッシュを連結したものとなる。
【００７９】
図８は、ｙ次元にフォールディングされる１次元要求の例を示す。図８では、スケジューラ５１５は、２次元メッシュ｛１，２，４｝と、この２次元メッシュに連結される｛１，１，３｝を生成するよう、｛１，１，１１｝の１次元要求を４のフォールディング長を用いてｙ次元にフォールディングしている。スケジューラ５１５は第１フォールディングにゼロの番号を付し、第２フォールディングに１の番号を付し、第３の短いフォールディングに２の番号を付す場合がある。スケジューラ５１５がフォールディングに沿ったノード１１５にＭＰＩランクを割り当てる場合、ＭＰＩランクは、偶数番号のフォールディングに沿ってｚ値が増加するにつれ、かつ、奇数番号のフォールディングに沿ってｚ値が減少するにつれて増やされる。制約ではなく例として、［０，０］でのノード１１５のＭＰＩランクはゼロである場合があり、［０，１］でのノード１１５のＭＰＩランクは１である場合があり、［０，２］でのノード１１５のＭＰＩランクは２である場合があり、［０，３］でのノード１１５のＭＰＩランクは３である場合がある。［１，３］でのノード１１５のＭＰＩランクは４である場合があり、［１，２］でのノード１１５のＭＰＩランクは５である場合がある、などである。連結はｚ  ＝  ０で開始するが、これはフォールディングが偶数であるからである。スケジューラ５１５が奇数の完全なフォールディングを用いて要求をフォールディングした場合、連結はむしろｚ  ＝  ３で開始し、ｘ  ＝  ０に向けて内側に進むことになる。特定の実施例では、スケジューラ５１５はアコーディオンに似たフォールディングのみを考慮する。別の種類のフォールディングも存在する。制約ではなく例として、フォールディングは階段形状を形成する場合がある。スケジューラ５１５は、１次元のジョブ１５０に対する特定のフォールディングを禁止する場合がある。上記のように、特定の実施例では、スケジューラ５１５は１次元のジョブ１５０を２度フォールディングする。第２フォールディングは、スケジューラ５１５が最初にフォールディングした次元をフォールディングするか、スケジューラ５１５がフォールディングした対象の最初の次元をフォールディングする。図８では、スケジューラ５１５は、ｚ次元をフォールディングしており、ｙ次元にフォールディングしている。スケジューラ５１５が最初にフォールディングした次元を第２フォールディングがフォールディングした場合、スケジューラ５１５は、最大３つのメッシュを生成し、メッシュの合計を４つとする場合がある。特定の実施例では、スケジューラ５１５は、２つの連結までしか可能にしない。その結果、スケジューラ５１５が１次元のジョブ１５０をスケジューリングする場合、第１フォールディングが連結をもたらさなかった場合でなければ、第２フォールディングは、スケジューラ５１５が最初にフォールディングした対象の次元をフォールディングすることに制限される。ジョブ１５０のサイズがフォールディング長の整数の倍数であれば、連結は何ら生じない。特定の実施例では、そのような制限によって、スケジューラ５１５が２つの連結までしか可能にしないものとなる。特定の実施例では、スケジューラ５１５は当初、要求を満たす、考えられるメッシュ全てを構成する。要求が１次元か２次元の場合、スケジューラ５１５は、考えられる、アコーディオンに似たフォールディングの各々と、そのようなフォールディング各々の、考えられる向きの各々を構成する。要求が３次元の場合、スケジューラ５１５は、要求の、考えられる向きの各々を構成する。特定の実施例では、スケジューラ５１５は、以下に説明するように、Ｔｒｙ  Ｓｔｒｕｃｔｕｒｅｓのリストを用いてそのような構成の各々を記録する。
【００８０】
ＣｏｍｐａｃｔＡｌｌｏｗｅｄがＴｒｕｅである場合、スケジューラ５１５は、要求される、ノード１１５の数を含むコンパクトなメッシュを構成する。スケジューラ５１５はメッシュを最善のフィットと指定し、メッシュを（アレイを含む）ＢｅｓｔＦｉｔに記憶する。制約ではなく例として、Ｎを、要求される、ノード１１５の数とし、Ｑを、Ｎの立方根を整数に丸めたものとする。スケジューラは当初、ＢｅｓｔＦｉｔを｛Ｑ，Ｑ，Ｑ｝に設定する。
【００８１】
【数１７】
0005570095.tif 000020

の場合、スケジューラ５１５は終了する。さもなければ、スケジューラ５１５は、以下に説明するように、ＢｕｉｌｄＣｏｍｐａｃｔＦｉｔｓ関数によってＢｅｓｔＦｉｔの１つ又は複数の次元を増やすことになる。スケジューラ５１５は更に、ＢｅｓｔＦｉｔの次元以上でかつグリッド１１０の次元以下である次元を有するメッシュ全てを構成して、（アレイを含む）Ｆｉｔを用いてメッシュを記録する。
【００８２】
スケジューラ５１５は更に、望ましくないメッシュをＦｉｔから取り除く。上記のように、特定の実施例では、グリッド１１０は、その各々が４つのＣＰＵ１６４に結合されるそのスイッチ１６６の３次元トーラスである。スイッチ１６６毎に４つのＣＰＵ１６４を含むグリッド１１０に相当するよう、１次元における４倍又は２次元における２倍によってトーラスを修正する。スイッチ１６６での１つのＣＰＵ１６４が処理を実行する場合にスイッチ１６６でのＣＰＵ１６４の全てが処理を実行するようにスケジューラ５１５が要求を満たす可能性を増加させるよう、増倍率の整数の倍数である１つ又は複数の次元におけるサイズを有するメッシュのみを保持する。制約ではなく例として、スケジューラ５１５が、ｙ次元におけるスイッチ１６６のトーラスを２によって乗算し、ｚ次元におけるスイッチ１６６のトーラスを２によって乗算する場合、スケジューラ５１５は、偶数のｙ次元とｚ次元とを有するＦｉｔにおけるメッシュのみを保持することになる。
【００８３】
スケジューラ５１５は更に、残りのメッシュにおける最大ループ・カウントによってＦｉｔにおける残りのメッシュをソートする。サイズが
【００８４】
【数１８】
0005570095.tif 000021

のメッシュにおける何れかの２つのノード間の最大距離は、
【００８５】
【数１９】
0005570095.tif 000022

である。２つのメッシュが、お互いに同一の最大ホップ・カウントを有する場合、スケジューラ５１５は、メッシュを別のメッシュの前に近づけて立方体になるようにする。制約ではなく例として、
【００８６】
【数２０】
0005570095.tif 000023

とは同じ最大距離を有するが、スケジューラ５１５は、Ｍ２をＭ１の前に配置する。
【００８７】
スケジューラ５１５は、望ましくないメッシュをＦｉｔから取り除かなかった場合でも、少なくともＮ個のノード１１５を含むメッシュ全てを生成しないことになる。制約ではなく例として、Ｎが２７に等しいものであり、ＢｅｓｔＦｉｔが｛３，３，３｝に等しかった場合、Ｆｉｔはメッシュ｛１，１，２７｝を含むものでないことになる。
｛１，１，２７｝のメッシュは合理的なメッシュ数をもたらさないことになり、要求を満たす少なくとも１つのメッシュを常にもたらすことになるが、これは、Ｆｉｔがグリッド１１０に等しいメッシュを含むことになり、Ｎがグリッド１１０におけるノード１１５の数以下である場合にのみクラスタ管理エンジン１３０がスケジューラ５１５をコールするからである。
【００８８】
ＡｎｙＡｌｌｏｗｅｄが真である場合、１つ又は複数のフリー・メッシュを構成するよう、スケジューラ５１５は、フリー・ノード１１５を識別するまで、ｘ軸を外部ループとし、ｙ軸を次のループとし、ｚ軸を内部ループとして、ＮｏｄｅＩｎＵｓｅをループする。フリー・メッシュは、フリー・ノード１１５のみを含むメッシュを含み、フリー・ノード１１５はジョブ１５０に割り当て可能なノード１１５を含む。スケジューラ５１５は、ＮｕｍＦｒｅｅＭｅｓｈｅｓとＦｒｅｅＭｅｓｈ［ＮｕｍＦｒｅｅＭｅｓｈｅｓ］とを構成する。ＮｕｍＦｒｅｅＭｅｓｈｅｓはグリッド１１０におけるフリー・メッシュの数を示し、ＦｒｅｅＭｅｓｈは、グリッド１１０における１つ又は複数のフリー・メッシュを、グリッド１１０におけるフリー・メッシュ毎に識別するリストである。制約ではなく例として、ノード１１５の指数は
【００８９】
【数２１】
0005570095.tif 000024

であり得る。
スケジューラ５１５が、例えば
【００９０】
【数２２】
0005570095.tif 000025

などの非フリー・ノード１１５を識別するまでｚ軸を増やし得る。スケジューラ５１５はＦｒｅｅＭｅｓｈ．ｓｔａｒｔ［２］をｋ１に設定する場合があり、ＦｒｅｅＭｅｓｈ．ｅｎｄ［２］をｋ２―１に設定する場合がある。ＦｒｅｅＭｅｓｈ．ｓｔａｒｔ［２］はｚ軸に沿ったフリー・メッシュの開始値に相当し、ＦｒｅｅＭｅｓｈ．ｅｎｄ［２］はフリー・メッシュの終了値に相当する。スケジューラ５１５は、
【００９１】
【数２３】
0005570095.tif 000026

が少なくとも１つの非フリー・ノードを含むように、更に、ｙ軸をｊ１から始めて第１値ｊ２を識別し得る。スケジューラ５１５は更に、ＦｒｅｅＭｅｓｈ．ｓｔａｒｔ［１］をｊ１に設定し、ＦｒｅｅＭｅｓｈ．ｅｎｄ［２］をｊ２―１に設定する。スケジューラ５１５は更に、
【００９２】
【数２４】
0005570095.tif 000027

が少なくとも１つの非フリー・ノードを含むように、ｘ軸をｉ１から始めて第１値ｉ２を識別する。スケジューラは更に、ＦｒｅｅＭｅｓｈ．ｓｔａｒｔ［０］をｉ１  に設定し、ＦｒｅｅＭｅｓｈ．ｅｎｄ［０］をｉ２−１に設定する。スケジューラ５１５は、上記処理を繰り返し、グリッド１１０における全てのノード１１５を対象とする。上記処理は一意のフリー・メッシュ群をもたらすものでない。別の順序でループすることは、異なるフリー・メッシュ群を生成する傾向にあるが、それは２つ以上のフリー・メッシュがお互いに境界を共有する場合のみである。ノード１１５において全体が取り囲まれるフリー・メッシュは常に一意である。図９及び図１０は、２次元の場合に、ｙ軸を内部ループとして用いる場合とｘ軸を内部ループとして用いる場合との違いを示す。図９は、ｙ軸を内部ループとして用いて構成される２つのフリー・メッシュを示し、図１０は、ｘ軸を内部ループとして用いて構成される２つのフリー・メッシュを示す。図９では、領域５３０は使用中のノード１１５を含み、領域５３２ａは第１のフリー・メッシュであり、領域５３２ｂは第２のフリー・メッシュである。同様に、図１０では、領域５３０は使用中のノード１１５を含み、領域５３２ａは第１のフリー・メッシュであり、領域５３２ｂは第２のフリー・メッシュである。
【００９３】
特定の実施例では、スケジューラ５１５は第１スケジューリング・アルゴリズムを用いて空間的な要求をスケジューリングし、第２スケジューリング・アルゴリズムを用いてコンパクトな要求をスケジューリングし、第３スケジューリング・アルゴリズムを用いて何れかの要求をスケジューリングする。第１スケジューリング・アルゴリズムと第２スケジューリング・アルゴリズムはお互いに同様であるが、お互いに比較的異なるスキャン・アルゴリズムを用いる。スケジューラ５１５がジョブ１５０をスケジューリングする場合、スケジューラ５１５はＭＰＩランクによってＡｓｓｉｇｎｅｄＮｏｄｅＬｉｓｔにおけるジョブ１５０に割り当てられるノード１５０を示す、すなわち、ＡｓｓｉｇｎｅｄＮｏｄｅＬｉｓｔ［ｉ］はＭＰＩランク  ｉを有する。｛Ｓｘ，Ｓｙ，Ｓｚ｝のサイズを有する空間的な要求をスケジュール化するよう、スケジューラ５１５は、スキャン・アルゴリズムを用いて、空間的な要求についてのＮｏｄｅＩｎＵｓｅにおける始点をサーチする。以下のロジック例はスキャン・アルゴリズム例の記述例を備える。ＰａｒｔＳｔａｒｔは始点であり、ＰａｒｔＥｎｄ  はパーティションの終点であり、Ｔｘ，  Ｔｙ，  及びＴｚ  は各々、ｘ次元、ｙ次元、及びｚ次元である。
【００９４】
【表３】
0005570095.tif 000028

特定の実施例では、コンパクトな要求に適用可能なスキャン・アルゴリズムは、以下のように、最も内部にあるループにおいて増やされるカウント値によって上記Ｈｉｔフラグを置き換える。
【００９５】
【表４】
0005570095.tif 000029
上記ロジックは比較的非効率的であるが、それはスケジューラ５１５が最大
【００９６】
【数２５】
0005570095.tif 000030

回までＮｏｄｅＩｎＵｓｅにおける各点を評価するからである。コンパクト要求の上記スキャンでは、ｚのループが例えば、ｚ１から
【００９７】
【数２６】
0005570095.tif 000031

まで増やされるにつれ、ｉ内部ループとｊ内部ループは変わることなく、ｋループは終点でしか変わらない。その結果、
【００９８】
【数２７】
0005570095.tif 000032
までの２次元メッシュは更なる計算から除外され、スケジューラ５１５は、
【００９９】
【数２８】
0005570095.tif 000033

までの２次元メッシュを更なる計算に追加する。ｉ内部ループ、ｊ内部ループ、及びｋ内部ループは、サイズ
【０１００】
【数２９】
0005570095.tif 000034

のｚ軸に沿った２次元のメッシュのシーケンスにおけるフリー・ノード１１５をカウントする。ｚループは１つのメッシュを取り除き、別のものを追加する。  ｙ  ループでは同様な効果がｙ軸に沿って生じる。（その両方ともアレイを含む）そのＦｒｅｅＸ及びＦｒｅｅＹ  は処理時間を削減することを容易にする。特定の実施例では、スケジューラ５１５は以下のアルゴリズムを用いて、コンパクトな要求をスキャンする：
【０１０１】
【表５】
0005570095.tif 000035
特定の実施例では、スケジューラ５１５は次元におけるパーティション・ラッピングに対応するよう以下の修正の１つ又は複数のものを適用する：（１）次元における指数がアレイ限界を超える場合、スケジューラ５１５は、何れかのアレイ参照の前に指数にモジュラス関数を適用する；（２）パーティションがｘ次元又はｙ次元においてラッピングする場合、例えば点ａから点ｂまでの、線区間についてフリー・ノード１１５を計算するよう、スケジューラ５１５は、ｘ次元又はｙ次元における点ａからパーティションの終点までの１つのものと、パーティションの始点から点ｂまでの別のものとの２つの線区間についてフリー・ノード１１５を計算する。
【０１０２】
特定の実施例では、空間的な要求に適用可能なスキャン・アルゴリズムは、コンパクトな要求に適用可能な上記スキャン・アルゴリズムに同様である。特定の実施例では、空間的な要求に適用可能なスキャン・アルゴリズムとコンパクトな要求に適用可能な上記スキャン・アルゴリズムとの間の違いには以下のことが含まれる。すなわち、（１）スケジューラ５１５は、特定のカウントを有するメッシュにおける点を識別する代わりに、ノード１１５の全てがフリーであるメッシュにおける点を探し、そのことはメモリ参照を削減する傾向にあるということ；と（２）スケジューラ５１５は、最大２つの別のメッシュをそのベース・メッシュに連結させたそのベース・メッシュを生成するようフォールディングされる、１次元の要求又は２次元の要求を処理する場合があるので、１つ又は複数の連結メッシュを処理する必要がある場合がある。特定の実施例では、スキャン・アルゴリズムに対するそのような修正は、１６×１６×１６の構成をスケジューリングするスケジューラ５１５に関連した最大実行時間を、１つ又は複数の桁違いで削減する傾向にある。
【０１０３】
空間的な要求をスケジューリングするよう、スケジューラ５１５は、スケジューリング可能なＴｒｙ  Ｓｔｒｕｃｔｕｒｅを識別するまでＴｒｙ構造におけるリストにおける各Ｔｒｙ構造にスキャン・アルゴリズムを適用するスケジューリング・アルゴリズムを用いる。リストにおけるＴｒｙ構造でスケジューリング可能なものが何らない場合、スケジューラ５１５は、空間的な要求をスケジューリングすることなくクラスタ管理エンジン１３０に戻る。さもなければ、スケジューラ５１５はコンパクトなスケジューリング・アルゴリズムを用いて空間的な要求をスケジューリングしようとする。
【０１０４】
特定の実施例では、空間的なアルゴリズムによる要求をスケジューリングすることには、最大、２つのフォールディングと１つの回転との３つの変換が関係する。スケジューラ５１５はＴｒｙにおける以下のフィールドを用いて変換を追跡する：
【０１０５】
【表６】
0005570095.tif 000036
特定の実施例では、Ｔｒｙ構造を用いてグリッド１１０における始点でジョブ１５０がスケジューリング可能であるということをスケジューラ５１５が判定した後、スケジューラ５１５は以下のようにＭＰＩランクを割り当てる。
【０１０６】
【表７】
0005570095.tif 000037
特定の実施例では、コンパクト・スケジューリング・アルゴリズムは、機能するＴｒｙ機能を識別するまで、Ｔｒｙ機能のリストにおける各メッシュにスキャン・あるごりリズムを適用する。リストにおけるメッシュ数は比較的大きい場合がある。制約ではなく例として、トーラスが１６×１６×１６のノード１１５を含み、要求が１００のノード１１５に対するものである場合、ＢｅｓｔＦｉｔ＝｛４，４，５｝であり、このことは、Ｔｒｙ構造リストにおいて２０００を超えるメッシュをもたらす。２進サーチをＴｒｙ構造に適用することは望ましい場合があるが、Ｔｒｙ構造リストの２進サーチは特定の実施例では機能しないものである。条件Ｃを含む２進サーチは：（１）Ｃが要素ｉについて真であったならば、ｉ以上の全てのｊについてＣが真であったということ；及び（２）Ｃが要素ｉについて偽であったならば、ｉ以下の全てのｊについてＣが偽であったということ；でない限り機能しないものである。特定の実施例では、Ｔｒｙ構造の２進サーチは機能しないものであるが、それは、例えばメッシュＭ１＝｛４，４，４｝を用いたスキャンが、要求を満たすのに十分なノードを見つけることになる一方、Ｔｒｙ構例えば、メッシュＭ２＝｛２，２，１０｝を用いたスキャンが、造リストにおいてＭ２がＭ１を上回っているにもかかわらず、要求を満たすのに十分なノードを見つけないことになるという可能性が存在するからである。特定の実施例では、最大距離の２進サーチは機能する。スケジューラ５１５は、最大距離によってＴｒｙ構造リストにおけるメッシュをグループ化する場合、最大距離ｉを有する、リストにおけるメッシュに対するフィットを識別すれば、ｉ以上のｊ全てについて、最大距離ｊを有する、リストにおける少なくとも１つのメッシュもフィットすることになる。最大距離ｉを有する、リストにおけるメッシュが何らフィットしない場合、ｉ以下の最大距離を有する、リストにおけるメッシュも何らフィットしないことになる。制約ではなく例として、｛ｘ，ｙ，ｚ｝が、フィットする最大距離ｉを有するメッシュであると仮定する。したがって、｛ｘ，ｙ，ｚ＋１｝はｉ＋１の最大距離を有し、｛ｘ，ｙ，ｚ＋１｝は｛ｘ，ｙ，ｚ｝に及ぶので｛ｘ，ｙ，ｚ＋１｝も機能する。帰納的推論はｉ以上のｊ全てにあてはまる。最大距離ｉを有する、リストにおけるメッシュが何ら機能しない場合、最大距離ｉ２−１を有する何れかのメッシュ｛ｘ，ｙ，ｚ｝に対して、｛ｘ，ｙ，ｚ＋１｝は最大距離ｉを有し、｛ｘ，ｙ，ｚ＋１｝もフィットしない。｛ｘ，ｙ，ｚ｝もフィットしないが、それは｛ｘ，ｙ，ｚ＋１｝が｛ｘ，ｙ，ｚ｝に及ぶからである。よって、スケジューラ５１５は初期化中にＭａｘＤｉｓｔａｎｃｅ［ＮｕｍＭａｘＤｉｓｔａｎｃｅｓ，２］を構成する。
【０１０７】
特定の実施例では、Ｆｉｔにおけるメッシュの２進サーチはベスト・フィットを保証するものでないが、ベスト・フィットに対する相当好適な上限を備える。特定の実施例では、Ｆｉｔにおけるメッシュの２進サーチは効率的である、約１０００のメッシュに対して約１０のスキャンを生成する。スケジューラ５１５は、最大長に対する２進サーチを実行するか上限から下方線形サーチを実行するよう、上限を使用し得る。特定の実施例では、下方線形サーチのほうが、効率が高い傾向にある。
【０１０８】
スケジューラ５１５はＦｉｔに対する２進サーチを実行し、ＨｉｇｈＦｉｔとＨｉｇｈＳｔａｒｔ［３］とを戻す。ＨｉｇｈＦｉｔは要求を満たすＦｉｔの指数であり、ＨｉｇｈＳｔａｒｔはグリッド１１０におけるフィットの始点である。下方線形サーチを実行するアルゴリズムはＨｉｇｈＦｉｔとＨｉｇｈＳｔａｒｔとから開始する。特定の実施例では、スケジューラ５１５は現行のＨｉｇｈＦｉｔメッシュの最大距離を減らす。スケジューラ５１５は更に、要求を満たすメッシュをスケジューラ５１５が識別するまで、最大距離を含むメッシュ全てをループする。要求を満たすメッシュをスケジューラ５１５が識別する場合、スケジューラ５１５はメッシュをＨｉｇｈＦｉｔに設定し、もう一度最大距離を減らし、当該処理を繰り返す。スケジューラ５１５がそのようなメッシュを何ら識別しない場合、アルゴリズムの出口処理を行い、現行のＨｉｇｈＦｉｔが最善のフィットとなる。スケジューラ５１５は、特定の最大距離に対するフィットを識別することが可能でない場合、より短い最大距離に対するフィットを識別することが可能でない。
【０１０９】
スケジューラ５１５はＦｉｔメッシュをループし、ＡｓｓｉｇｎｅｄＮｏｄｅＬｉｓｔの終わりに１つ又は複数のノード１１５を挿入する。３つのループの順序は、ノード・ベースのトーラスにスイッチ・ベースのトーラスをスケジューラ５１５がマッピングする方法によって変わってくる。スケジューラは、１つの次元において、４×１の構成を用いてスイッチ・ベースのトーラスをマッピングする場合、１つの次元が内部ループである。スケジューラ５１５は、１つの次元において、２×２の構成を用いてスイッチ・ベースのトーラスをマッピングする場合、２つの次元が最も内部にあるループである。
【０１１０】
何れかの要求をスケジューリングするよう、スケジューラ５１５は、ノード１１５の要求数を何れかの要求に割り当てるまで、ＦｒｅｅＭｅｓｈをループし、何れかの要求を満たす。
【０１１１】
スケジューラ５１５は、ＦｒｅｅＭｅｓｈをループするにつれ、ノード１１５をＡｓｓｉｇｎｅｄＮｏｄｅＬｉｓｔ漸増的に挿入する。特定の実施例では、スケジューラ５１５は以下のようにＦｒｅｅＭｅｓｈをループする：
【０１１２】
【表８】
0005570095.tif 000038
スケジューラ５１５は、ＭＰＩランクによるＡｓｓｉｇｎｅｄＮｏｄｅＬｉｓｔにおけるノード・ベースの座標を用いた選択ノード１１５を示す。ＡｓｓｉｇｎｅｄＮｏｄｅＬｉｓｔ［ｉ，０］はＭＰＩランクｉのノード１１５のｘ座標であり、ＡｓｓｉｇｎｅｄＮｏｄｅＬｉｓｔ［ｉ，１］はＭＰＩランクｉのノード１１５のｙ座標であり、ＡｓｓｉｇｎｅｄＮｏｄｅＬｉｓｔ［ｉ，２］はＭＰＩランクｉのノード１１５のｚ座標である。ＦｒｅｅＮｏｄｅＬｉｓｔはスイッチ・ベースの座標における、スケジューラ５１５に転送される、利用可能ノード１１５のリストである。特定の実施例では、ＦｒｅｅＮｏｄｅＬｉｓｔにおけるｍｐｉＲａｎｋフィールドを設定するよう、スケジューラ５１５は以下のアルゴリズム例を用いる：
【０１１３】
【表９】
0005570095.tif 000039
以下のロジック例は、スケジューラ５１５の特定の実施例を記述する。特定の実施例では、ジョブ１５０をスケジューリングするよう、クラスタ管理エンジン１３０がスケジューラ５１５をコールする場合、クラスタ管理エンジン１３０はスケジューラ５１５に、以下の入力パラメータ値を伝達する。
【０１１４】
【表１０】
0005570095.tif 000040
特定の実施例では、スケジューラ５１５は、ジョブ１５０をスケジューリングしようとした後、以下のうちの１つを戻す：
【０１１５】
【表１１】
0005570095.tif 000041
スケジューラ５１５は、ジョブ１５０をスケジューリングする場合、適宜、ＦｒｅｅＮｏｄｅ構造のｍｐｉＲａｎｋフィールドを設定する。特定の実施例では、クラスタ管理エンジン１３０とスケジューラ５１５との間のラッパ機能が、クラスタ管理エンジン１３０からの入力を、スケジューラ５１５が想定する形式に変換し、スケジューラ５１５からの出力を、クラスタ管理エンジン１３０が想定する形式に変換する。
【０１１６】
特定の実施例では、ジョブ１５０が理論的にスケジューリング可能であるか否かを判定するｓｅｔＳｃｈｅｄｕｌａｂｌｅは以下のロジック例を包含する：
【０１１７】
【表１２】
0005570095.tif 000042
特定の実施例では、ジョブ・サイズを評価するようスケジューラ５１５がコールするＲａｎｋは以下のロジック例を包含する。Ｒａｎｋに対するＩｎｐｕｔは３つの要素を有する１次元アレイＩｎ［３］を含む。ＲａｎｋからのＯｕｔｐｕｔは、Ｉｎの指数をサイズの昇順によって示す３つの要素を有する１次元アレイＲａｎｋ［３］を含む。
【０１１８】
【数３０】
0005570095.tif 000043
である。特定の実施例では、Ｒａｎｋはバブル・アルゴリズムを含む。
【０１１９】
【表１３】
0005570095.tif 000044
特定の実施例では、ジョブ１５０が理論的にスケジューリング可能か否かを判定するｓｅｔＳｃｈｅｄｕｌａｂｌｅは以下のロジックを包含する：
【０１２０】
【表１４】
0005570095.tif 000045
特定の実施例では、可能なスケジューリング種類を設定するｉｎｉｔＳｃｈｅｄｕｌｅｒは以下のロジック例を包含する。ジョブ１５０が１つのノード１１５しか要求しない場合、ｉｎｉｔＳｃｈｅｄｕｌｅｒは、元の要求にかかわらず、可能な種類をＡｎｙに設定する：
【０１２１】
【表１５】
0005570095.tif 000046
特定の実施例では、空間的な要求について、スイッチ・ベースのトーラスをノード・ベースのトーラスにマッピングするｓｅｔＴｏｒｕｓＦｏｒＳｐａｔｉａｌは以下のロジック例を包含する：
【０１２２】
【表１６】
0005570095.tif 000047
特定の実施例では、ジョブ１５０の最も大きな次元と次に大きな次元ｊＲａｎｋ［２］とｊＲａｎｋ［１］とにおいてグリッド１１０を２倍にするｓｅｔＴｏｒｕｓＦｏｒ１Ｄは以下のロジック例を包含する：
【０１２３】
【表１７】
0005570095.tif 000048
特定の実施例では、ｓｅｔＴｏｒｕｓＦｏｒ２Ｄは６つの方法のうちの１つにおいて、スイッチ・ベースのトーラスをマッピングする：
【０１２４】
【表１８】
0005570095.tif 000049
ＴはＴｏｒｕｓＳｉｚｅである。最初の３つの構成は、スイッチ１６６毎のノード１１５をスケジューラ５１５が２×２のノード１１５として構成することによってもたらされる。後の３つの構成は、スイッチ１６６毎のノード１１５をスケジューラ５１５が１×１のノード１１５として構成することによってもたらされる。特定の実施例では、ｓｅｔＴｏｒｕｓＦｏｒ２Ｄは、スケジューラ５１５がマップ毎に生成することになるＴｒｙ構造をカウントし、最大のＴｒｙ構造数を生成することになるマップを選択する。互角の場合には、ｓｅｔＴｏｒｕｓＦｏｒ２Ｄは上記の順序によってマップを選択する。スケジューラ５１５はｐＳｉｚｅ［６，４］を：
【０１２５】
【表１９】
0005570095.tif 000050
を含めるよう構成する。
特定の実施例では、ｓｅｔＴｏｒｕｓＦｏｒ２Ｄは以下のロジック例を包含する：
【０１２６】
【表２０】
0005570095.tif 000051
【０１２７】
【表２１】
0005570095.tif 000052
特定の実施例では、ｓｅｔＴｏｒｕｓＦｏｒ３Ｄは以下のロジック例を包含する：
【０１２８】
【表２２】
0005570095.tif 000053
【０１２９】
【表２３】
0005570095.tif 000054
特定の実施例では、コンパクトな要求のｚ次元を４×１の構成に設定するｓｅｔＴｏｒｕｓＦｏｒＣｏｍｐａｃｔは以下のロジック例を包含する：
【０１３０】
【表２４】
0005570095.tif 000055
特定の実施例では、何れかの要求のｚ次元を４×１の構成に設定するｓｅｔＴｏｒｕｓＦｏｒＡｎｙは以下のロジック例を包含する：
【０１３１】
【表２５】
0005570095.tif 000056
特定の実施例では、ｓｅｔＰａｒｔｉｔｉｏｎは以下のロジック例を包含する：
【０１３２】
【表２６】
0005570095.tif 000057
特定の実施例では、ＦｒｅｅＹとＦｒｅｅＸとを構成するｉｎｉｔＳｃａｎは以下のロジック例を包含する：
【０１３３】
【表２７】
0005570095.tif 000058
特定の実施例では、要求における次元の数を判定するｂｕｉｌｄＳｐａｔｉａｌＴｒｉｅｓは以下のロジック例を包含する：
【０１３４】
【表２８】
0005570095.tif 000059
特定の実施例では、３次元の要求についてＴｒｙＬｉｓｔを構築し、１次元の要求又は２次元の要求におけるフォールディング毎にＴｒｙ構造を構築するｂｕｉｌｄ３Ｄｔｒｙは以下のロジック例を包含する：
【０１３５】
【表２９】
0005570095.tif 000060
特定の実施例では、回転毎のＴｒｙ構造と指数マップとに対して、一意の回転の数ＮｕｍＯｒｉｅｎｔを計算するｓｅｔＯｒｉｅｎｔは以下のロジック例を包含する：
【０１３６】
【表３０】
0005570095.tif 000061
【０１３７】
【表３１】
0005570095.tif 000062
【０１３８】
【表３２】
0005570095.tif 000063
【０１３９】
【表３３】
0005570095.tif 000064
特定の実施例では、ｂｕｉｌｄ２Ｄｔｒｙは以下のロジック例を包含する：
【０１４０】
【表３４】
0005570095.tif 000065
特定の実施例では、２次元のメッシュの、考えられるフォールディング全てを構築するｂｕｉｌｄ２Ｄｆｏｌｄは以下のロジック例を包含する：
【０１４１】
【表３５】
0005570095.tif 000066
【０１４２】
【表３６】
0005570095.tif 000067
【０１４３】
【表３７】
0005570095.tif 000068
特定の実施例では、ｂｕｉｌｄ１Ｔｒｙは、１次元の要求のフォールディングのリストを生成し、フォールディング毎に、ｂｕｉｌｄ２ＤＦｏｌｄをコールして、１つ又は複数の追加のフォールディングのリストを生成する。ｂｕｉｌｄ１Ｔｒｙは、以下の構造例を包含するＯｎｅＤＦｏｌｄＬｉｓｔにフォールディングのリストを記録する：
【０１４４】
【表３８】
0005570095.tif 000069
特定の実施例では、ｏｎｅＤは第一フォールドを含む。特定の実施例では、ｔｗｏＤは第一フォールドから生成されるフォールディングのリストを含む。ＮｕｍＴｗｏＤＦｏｌｄｓは、ｔｗｏＤにおけるフォールディング数を示す。特定の実施例では、ｂｕｉｌｄ２Ｄｆｏｌｄに転送されるメッシュ・サイズを示す。スケジューラ５１５は、ｔｗｏＤの要素についてＴｒｙ構造を生成し、ｂｕｉｌｄ３Ｄｔｒｙをコールして各Ｔｒｙ構造の、考えられる回転全てを構築する。特定の実施例では、ｂｕｉｌｄ１Ｔｒｙは以下のロジック例を包含する：
【０１４５】
【表３９】
0005570095.tif 000070
【０１４６】
【表４０】
0005570095.tif 000071
【０１４７】
【表４１】
0005570095.tif 000072
【０１４８】
【表４２】
0005570095.tif 000073
特定の実施例では、ＢｅｓｔＦｉｔ［３］を構成するｂｕｉｌｄＣｏｍｐａｃｔＦｉｔｓは以下のロジック例を包含する：
【０１４９】
【表４３】
0005570095.tif 000074
【０１５０】
【表４４】
0005570095.tif 000075
【０１５１】
【表４５】
0005570095.tif 000076
特定の実施例では、ｂｕｉｌｄＦｒｅｅＭｅｓｈｅｓ  Ｆｕｎｃｔｉｏｎ（関数）は以下のロジック例を包含する：
【０１５２】
【表４６】
0005570095.tif 000077
【０１５３】
【表４７】
0005570095.tif 000078
【０１５４】
【表４８】
0005570095.tif 000079
【０１５５】
【表４９】
0005570095.tif 000080
特定の実施例では、スケジューラ５１５がジョブ１５０を正常にスケジューリングする場合Ｔｒｕｅを戻すＳｃｈｅｄｕｌｅＪｏｂは以下のロジック例を包含する：
【０１５６】
【表５０】
0005570095.tif 000081
特定実施例では、ＡｓｓｉｇｎｅｄＮｏｄｅＬｉｓｔを構築するｓｅｔＳｐａｔｉａｌＮｏｄｅＩｎＵｓｅは以下のロジック例を包含する：
【０１５７】
【表５１】
0005570095.tif 000082
特定の実施例では、ｓｃａｎＳｐａｔｉａｌは以下のロジック例を包含する：
【０１５８】
【表５２】
0005570095.tif 000083
【０１５９】
【表５３】
0005570095.tif 000084
特定の実施例では、Ｆｉｔに対して２進サーチを実行するｓｃｈｅｄｕｌｅＣｏｍｐａｃｔＦｕｎｃｔｉｏｎは以下のロジック例を包含する：
【０１６０】
【表５４】
0005570095.tif 000085
特定の実施例では、ｓｅｔＣｏｍＰａｃｔＮｏｄｅＩｎＵｓｅは以下のロジック例を包含する：
【０１６１】
【表５５】
0005570095.tif 000086
特定の実施例では、ＳｃａｎＣｏｍｐａｃｔは以下のロジック例を包含する：
【０１６２】
【表５６】
0005570095.tif 000087
【０１６３】
【表５７】
0005570095.tif 000088
特定の実施例では、ｓｃｈｅｄｕｌｅＡｎｙは以下のロジックを包含する：
【０１６４】
【表５８】
0005570095.tif 000089
特定の実施例では、ｓｅｔＭｐｉＲａｎｋは以下のロジックを包含する：
【０１６５】
【表５９】
0005570095.tif 000090
特定の実施例では、スケジューラ５１５は、以下に定義する以下の構造例を用いてノード１１５をジョブ１５０に割り当てる。上記のように、クラスタ管理エンジン１３０はＦｒｅｅＮｏｄｅ構造のリストをジョブ１５０とともにスケジューラ５１５に伝達する。このリストはスケジューリングに利用可能なノード１１５全てを含む。このリストでは、スイッチ・ベースの座標がリストにおける利用可能ノード１１５を識別する。スケジューラ５１５がジョブ１５０をスケジューリングする場合、スケジューラ５１５は戻す前にｍｐｉＲａｎｋを設定する。
【０１６６】
【表６０】
0005570095.tif 000091
特定の実施例では、スケジューラ５１５はＴｒｙ構造を用いて、空間的なジョブ１５０をスケジューリングするのに用いるメッシュに関する情報を記憶する。Ｔｒｙ構造は、ベース・メッシュと、最大２つまでの連結メッシュとに関する情報を含む。
【０１６７】
【表６１】
0005570095.tif 000092
特定の実施例では、スケジューラ５１５は、以下に定義する以下の変数例を用いてノード１１５をジョブ１５０に割り当てる。
【０１６８】
【表６２】
0005570095.tif 000093
【０１６９】
【表６３】
0005570095.tif 000094
クラスタ管理エンジン１３０は更に、スケジューラ５１５などによって、効率的なチェック・ポインティングを行うよう動作可能であり得る。再起動ダンプは通常、ディスクに書き込まれるデータの７５％を超えるデータを備える。このＩ／Ｏは、多くの場合、処理がプラットフォームの障害によって喪失されないように行われる。このことに基づいて、ファイル・システムのＩ／Ｏは、プロダクティブＩ／ＯとディフェンシブＩ／Ｏとの２つの部分に分離することが可能である。プロダクティブＩ／Ｏは、例えば、視覚化ダンプ、主要物理変数の経時的なトレーシング他などの科学的方法を行ううえでユーザが要求する、データの書き込みである。ディフェンシブＩ／Ｏは、かなりの期間にわたって実行される大規模シミュレーションを管理するよう行われる。よって、Ｉ／Ｏ帯域幅の増加によって、チェック・ポインティングに係わる時間とリスクとを大いに削減する。
【０１７０】
エンジン１３０に戻れば、局所メモリ５２０は、システム１００の複数の特徴の論理的な記述（すなわちデータ構造）を備える。局所メモリ５２０は、互換コードによって定義、処理、又は取り出しを行うよう動作可能な何れかの物理データ記憶機構又は論理データ記憶機構に記憶させ得る。例えば、局所メモリ５２０は、１つ又は複数の拡張マーク付け言語（ＸＭＬ）のテーブル又は文書を備え得る。種々の構成要素は、ＳＱＬステートメント若しくはＳＱＬスクリプト、仮想記憶アクセス方法（ＶＳＡＭ）ファイル、フラット・ファイル、２進データ・ファイル、ビートリーブ（Ｂｔｒｉｅｖｅ）・ファイル、データベース・ファイル、又はコンマで区切られた値（ＣＳＶ）ファイルによって記述し得る。各構成要素は変数、テーブル、又は何れかの別のデータ構造を備え得るということが分かるものである。局所メモリ５２０は１つのサーバ１０２上に記憶されているか複数のサーバ又はノードにわたって記憶されている複数のテーブル又はファイルを備える場合もある。更に、エンジン１３０内部に存在しているように示されているが、局所メモリ５２０の一部又は全部は、本願の開示の範囲から逸脱することなく内部のものか外部のものであり得る。
【０１７１】
図示する局所メモリ５２０は、物理リスト５２１、仮想リスト５２２、グループ・ファイル５２３、ポリシー・テーブル５２４、及びジョブ・キュー５２５を含む。しかし、図示していないが、局所メモリ５２０は、本願の開示の範囲から逸脱することなく、ジョブ・テーブルと監査ログとを含む別のデータ構造を含み得る。図示された構造に戻れば、物理リスト５２１はノード１１５に関する識別管理情報と物理的な管理情報とを記憶させるよう動作可能である。物理リスト５２１は、ノード１１５毎に少なくとも１つのレコードを含む多次元のデータ構造であり得る。例えば、物理レコードは、「ノード」、「利用可能性」、「プロセッサ利用率」、「メモリ利用率」、「温度」、「物理位置」、「アドレス」、「ブート画像」他などのフィールドを含み得る。各レコードは上記例示的フィールドを全く含まない場合があり、上記例示的フィールドの一部又は全部を含む場合もある。一実施例では、物理レコードは、例えば仮想リスト５２２などの別のテーブルへの外部キーを備え得る。
【０１７２】
仮想リスト５２２は、ノード１１５に関する論理管理情報又は仮想管理情報を記憶させるよう動作可能である。仮想リスト５２２は、ノード１１５毎に少なくとも１つのレコードを含む多次元データ構造であり得る。例えば、仮想レコードは、「ノード」、「利用可能性」、「ジョブ」、「仮想クラスタ」、「２次ノード」、「論理位置」、「互換性」他などのフィールドを含み得る。各レコードが、上記例示的フィールドを何ら含まない場合があり、上記例示的フィールドの一部又は全部を含む場合もあるということが分かるものである。一実施例では、仮想レコードは、例えばグループ・ファイル５２３などの別のテーブルへのリンクを含み得る。
【０１７３】
グループ・ファイル５２３は、アクセス・コントロール・リスト（すなわちＡＣＬ）などの、ユーザ・グループ情報及びセキュリティ情報を記憶させるよう動作可能な１つ若しくは複数のテーブル又はレコードを備える。例えば、各グループ・レコードは、ユーザが利用可能なサービス、ノード１１５、又はジョブのリストを含み得る。各論理グループは、ジョブ１５０を投入するか、システム１００の少なくとも一部分を管理することができる１つ又は複数のユーザの事業グループ若しくは事業単位、部署、プロジェクト、セキュリティ・グループ、又は何れかの別の集合と関連し得る。この情報に基づいて、クラスタ管理エンジン１３０は、ジョブ１５０を投入するユーザが有効なユーザであるかを判定し、判定結果が肯定の場合、ジョブを実行する上で最適なパラメータを判定し得る。更に、グループ・テーブル５２３は、各ユーザ・グループを、仮想クラスタ２２０と関連させるか、特定のグループの領域内部に存在するノードなどの１つ又は複数の物理ノード１１５と関連させる場合がある。これによって、各グループが、資源をめぐって競合することなく個々の処理空間を有することを可能にする。しかし、上記のように、仮想クラスタ２２０の形状とサイズは、動的である場合があり、必要性、時間、又は何れかの別のパラメータによって変動し得る。
【０１７４】
ポリシー・テーブル５２４は１つ又は複数のポリシーを含む。ポリシー・テーブル５２４とポリシー５２４を適宜、同義に用い得るということが分かるものである。ポリシー５２４は一般的に、ジョブ１５０及び／又は仮想クラスタ２２０に関する処理情報及び管理情報を記憶している。例えば、ポリシー５２４は、問題サイズ、問題実行時間、時間スロット、横取り、ノード１１５又は仮想クラスタ２２０のユーザ割り当て率などを含む何れかの数のパラメータ又は変数を含み得る。
【０１７５】
ジョブ・キュー５２５は、実行を待つ１つ又は複数の、ジョブ１５０のストリームを表す。一般的に、キュー５２５は、（ゼロを含む）何れかの数のジョブ１５０又は、それに対する参照を記憶させる、バブル・アレイ、データベース・テーブル、又はポインタ・アレイなどの、何れかの適切なデータ構造を含む。グリッド１１０又は複数のキュー５２５と関連する１つのキュー５２５が存在し、各キュー５２５が、グリッド１１０内の一意の仮想クラスタ２２０の１つと関連付けられる場合がある。
【０１７６】
動作の一特徴では、クラスタ管理エンジン１３０は、計算を行い、情報を交換することによって問題を協調して解決するＮのタスクから成るジョブ１５０を受信する。クラスタ管理エンジン１３０は、Ｎのノード１１５を割り当て、Ｎのタスクの各々を１つの特定のノード５１５に何れかの適切な手法を用いて割り当て、それによって問題が効率的に解決されることが可能になる。例えば、クラスタ管理エンジン１３０は、ユーザによって供給される、ジョブ・タスク配置ストラテジなどのジョブ・パラメータを利用し得る。とにかく、クラスタ管理エンジン１３０は、サーバ１０２のアーキテクチャを駆使しようとし、同様に、ユーザにとってより高速なターンアラウンドを備え、システム１００の全体スループットを向上させると思われる。
【０１７７】
一実施例では、クラスタ管理エンジン１３０は更に、次の例のトポロジの何れかによって、ノード１１５を選択し、割り当てる。
【０１７８】
特定の、２次元（ｘ，ｙ）又は３次元（ｘ，ｙ，ｚ）。ノード１１５を割り当て、タスクを特定の次元で順序付けして、それによって、効率的な、近隣同士の通信を確保する場合がある。特定のトポロジは、物理的な通信トポロジが問題トポロジに一致して、ジョブ１５０の協調タスクが近隣のタスクと頻繁に通信することを可能にするということが望ましい種々のジョブ１５０を管理する。例えば、２ｘ２ｘ２次元（２，２，２）における８つのタスクの要求は立方体に割り当てられることになる。最善のフィットの目的では、２Ｄの割り当ては、効率的な近隣同士の通信を確保する一方で３次元に「フォールディング」することが可能である。クラスタ管理エンジン１３０は、特定の次元の形状を何れかの向きで自由に割り当てることができる場合がある。例えば、２ｘ２ｘ８のボックスは、垂直方向又は水平方向に、利用可能な物理ノード内に割り当て得る。
【０１７９】
最善のフィットの立方体。クラスタ管理エンジン１３０は、Ｎのノード１１５を立方体の体積において割り当てる。このトポロジはジョブ１５０を効率的に処理し、それによって、協調タスクが、何れかの２つのノード１１５間での距離を最小にすることによって、何れかの別のタスクとデータを交換することを可能にする。
【０１８０】
最善のフィットの球体。クラスタ管理エンジン１３０は、Ｎのノード１１５を球体の体積において割り当てる。例えば、第１タスクが球体の中心ノード１１５に配置され、残りのタスクが中央ノード１１５を取り囲むノード１１５上に配置される場合がある。残りのタスクの配置順序は通常重要でないということが分かるものである。このトポロジは、第１タスクと全ての別のタスクとの間の距離を最小にする場合がある。このことは、タスク２乃至Ｎが第１タスクと通信するが、お互いには通信しない大規模の問題クラスを効率的に処理する。
【０１８１】
ランダム。クラスタ管理エンジン１３０がＮのノード１１５を割り当てるが、ノード１１５が論理的に位置特定されるか物理的に位置特定されることに対する考慮の度合いは低くなっている。一実施例では、このトポロジはバックフィル目的でのグリッド１１０の積極的な利用を奨励し、別のジョブ１５０への影響はわずかなものである。
【０１８２】
上記トポロジと、付随する説明は図示する目的に過ぎず、実際に使用されるトポロジもそのようなトポロジを割り当てる手法も表さない場合がある。
【０１８３】
クラスタ管理エンジン１３０は、ジョブ１５０のパラメータ又はポリシー５２４のパラメータとして記憶される配置重みを利用し得る。一実施例では、配置重みは０と１との間のモディファイア値であり、この値は、要求されるタスク配置ストラテジ（又は処理配置ストラテジ）によってクラスタ管理エンジン１３０がどれだけ積極的にノード１１５を配置させようとするものであるかを表す。この例では、０の値は最適なストラテジ（又は次元）が考えられる場合のみノード１１５を配置させることを表し、１の値は、要求を処理するのに十分な、空き状態のノード１１５が存在するか、別のかたちで利用可能なノード１１５が存在する限り、直ちにノード１１５を配置させることを表す。通常、配置重みは、大規模のジョブ１５０の枯渇を妨げてＨＲＣシステム１００のジョブ・スループットを確保するために、資源予約などの管理ポリシー５２４をオーバライドするものでない。
【０１８４】
上記図示と、付随する説明は、ノード１１５とジョブ１５０とを管理する論理的な手法を実施するエンジン１３０の例示的なモジュール図を備える。しかし、この図は例示的なものに過ぎず、システム１００はこれらやその他のアルゴリズムを実施する論理構成要素の何れかの適切な組み合わせと配置とを用いることが想定されている。よって、これらのソフトウェア・モジュールは、ノード１１５とジョブ１５０とを効果的に管理する構成要素の何れかの適切な組み合わせと配置とを含み得る。しかし、種々の図示モジュールの処理は、適宜、合成される場合及び／又は分離される場合がある。
【０１８５】
図１１は、一例となるインタフェース１０４を示す。インタフェース１０４は、ハードウェア、ソフトウェア、埋め込みロジックコンポーネント、又はネットワーク１０６とＨＰＣサーバ１０２との間のインタフェースを提供するこのようなコンポーネントの２以上の組み合わせを有する。特定の実施例では、インタフェース１０４は、インスタンス化マネージャ５３４とインスタンス化データ５３６とを有する。インスタンス化マネージャ５３４は、ハードウェア、ソフトウェア、埋め込みロジックコンポーネント、又はクライアント１２０からの接続リクエストに応答して、ノード１１５におけるホストを動的にインスタンス化するこのような２以上のコンポーネントの組み合わせを有する。特定の実施例では、クライアント１２０からの接続リクエストは、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）接続リクエストである。ＴＰＣ接続リクエストが記載されているが、本発明は、何れか適切な接続リクエストを想定する。限定されることなく例えば、クライアント１２０からの接続リクエストは、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）又は他のＩＰベース接続リクエストであってもよい。特定の実施例では、インスタンス化マネージャ５３４は、ＨＰＣサーバ１０２に関して外部的に通知されるホスト名及びポート番号を、ＨＰＣサーバ１２０の内部のホスト名及びポート番号にマップするルータ又はルータとのインタフェースとして機能する。インスタンス化マネージャ５３４は、特定のニーズに従って、クライアント１２０からの接続リクエストに応答して１以上のノード１１５の１以上のホストを動的にインスタンス化するため、クラスタ管理エンジン１３０（物理マネージャ５０５、バーチャルマネージャ５１０、又はその両方など）の１以上のコンポーネントとやりとりするようにしてもよい。
【０１８６】
インスタンス化データ５３６は、クライアント１２０からの接続リクエストに応答して、ノード１１５のホストをインスタンス化するデータを有する。特定の実施例では、インスタンス化データ５３６は、ＨＰＣサーバ１０２に関して外部的に通知されるサービスの１以上のリストを有する。サービスの参照は、必要に応じてアプリケーションを含み、またその反対も成り立つ。ＨＰＣサーバ１０２に関して外部的に通知されるサービスのリストの参照は、必要に応じてルーティングテーブルを含み、またその反対も成り立つ。特定の実施例では、インスタンス化マネージャ５３４は、このようなルーティングテーブルを設定及び維持する。特定の実施例では、ＨＰＣサーバ１０２に関して外部的に通知されるサービスのリストへのエントリは、（１）サービス、（２）当該サービスに対応するＨＰＣサーバ１０２に関して外部に通知されるホスト名及びポート番号、及び（３）インスタンス化時に当該サービスを提供するホストに対応するＨＰＣサーバ１０２の内部のホスト名及びポート番号を指定する。当該エントリはまた、ホストが利用可能とされるべき時点、ホストのインスタンス化が行われるべき時点、及びホストが利用不可とされるべき時点を指定するルール、条件又はその両方を指定するようにしてもよい。限定されることなく一例として、ホストはウェブサーバを提供するようにしてもよい。インスタンス化マネージャ５３４が営業時間中にウェブサーバに対応するＨＴＴＰポートにおいてＨＴＴＰリクエストを受信していない場合、ホストは営業時間中はインスタンス化されないままとされ、ホストがインスタンス化される場合に利用する１以上のリソース（グリッド１１０のノード１１５など）が、他のホスト、サービス又はその両方について利用可能とされてもよい。クライアント１２０のユーザが営業時間中にウェブサーバにアクセスするためウェブブラウザを使用する場合、インスタンス化マネージャ５３４は、ウェブサーバをクライアント１２０に提供するためホストをインスタンス化するようにしてもよい。クライアント１２０のユーザがウェブブラウザを使用して営業時間外にウェブサーバにアクセスする場合、インスタンス化マネージャ５３４は、ホストがウェブサーバをクライアント１２０に提供することを回避するため、ウェブサーバに対応するＨＴＴＰポートをブロックする。
【０１８７】
特定の実施例では、インスタンス化データ５３６は、サービスを提供するためノード１１５のホストをインスタンス化するための１以上のブートイメージを有する。特定の実施例では、インスタンス化データ５３６はまた、サービスを提供するためノード１１５のホストをインスタンス化するため１以上のファイルシステムを有する。特定の実施例では、インスタンス化データ５３６はまた、サービスを提供するためノード１１５のホストをインスタンス化するため１以上のＯＳコンフィギュレーションファイルを有する。限定されることなく一例として、インスタンス化マネージャ５３４が、ＨＰＣサーバ１０２に関して外部に通知されるサービスに対応するＨＰＣサーバ１０２に関して外部的に通知されるポート番号を指定する接続リクエストをクライアント１２０から受信することに応答して、インスタンス化マネージャ５３４は、ノード１１５の当該サービスのホストを初期化するため、サービスのための１以上のファイルシステムとブートイメージとを利用して、グリッド１１０における利用可能なノード１１５をブートするようにしてもよい。インスタンス化マネージャ５３４はまた、クライアント１２０からノード１１５にＩＰトラフィックをルーティングするため、１以上のＯＳコンフィギュレーションファイルと１以上のローカルルーティングテーブルとを更新するようにしてもよい。特定の実施例では、クライアント１２０からの接続リクエストに応答するＨＰＣサーバ１０２に係る時間要求を低減させるため、インスタンス化マネージャ５３４は、ターゲットホストのＩＰ／ＭＡＣアドレスをスプーフ（ｓｐｏｏｆ）し、ターゲットホストの代わりにＴＣＰ／ＩＰ接続シーケンスをスタートする。クライアント１２０とインスタンス化マネージャ５３４との間のＴＣＰ／ＩＰ接続シーケンスは、ターゲットホストのブート処理中に実行される。ＴＣＰ／ＩＰ接続シーケンスが記載されたが、本発明は、何れか適切な接続シーケンスを想定する。限定することなく一例として、インスタンス化マネージャ５３４は、ターゲットホストの代わりにＵＤＰ／ＩＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ  ｏｖｅｒ  ＩＰ）又は他のＩＰベース接続シーケンスをスタートすることも可能である。
【０１８８】
特定の実施例では、インスタンス化マネージャ５３４は、ＨＰＣサーバ１０２の各ホストがアクティブ状態か又は非アクティブ状態であるか追跡する。特定の実施例では、インスタンス化マネージャ５３４はまた、ＨＰＣサーバ１０２の各ホストがアクティブ状態か又は非アクティブ状態であるか制御する。特定の実施例では、インスタンス化マネージャ５３４は、サービスがもはや利用可能であるべきでないと判断した場合、インスタンス化マネージャ５３４は、インスタンス化マネージャ５３４がサービスを提供するためホストをインスタンス化した１以上のノード１１５をシャットダウン、アイドル化又は利用不可とし、これに応じて１以上のルーティングテーブルを更新する。
【０１８９】
図１２は、一例となる管理ノード１５を示す。管理ノード１５は、フォルトトレランス・リカバリマネージャ５３８と、中央ストレージ５４０とを有する。フォルトトレランス・リカバリマネージャ５３８は、ハードウェア、ソフトウェア、埋め込みロジックコンポーネント、又はグリッド１１０のノード１１５におけるフォルトを検出し、このようなフォルトからリカバリを開始するための上記２以上のコンポーネントの組み合わせを有する。中央ストレージ５４０は、グリッド１１０のすべてのノード１１５にアクセス可能なＨＰＣサーバ１０２のネットワークファブリックに接続される１以上の記憶装置を有する。中央ストレージ５４０は、後述されるように、グリッド１１０のノード１１５において実行可能なアプリケーション及びホストに関するデータを含むアプリケーションデータを含む。中央ストレージ５４０とＨＰＣサーバ１０２のネットワークファブリックは、ＨＰＣシステム１００におけるフォルトトレランス及びリカバリを実現する。特定の実施例では、ＨＰＣサーバ１０２のネットワークファブリックは、高速ネットワークファブリックである。特定の実施例では、ＨＰＣサーバ１０２のネットワークファブリックは、上述されるように、３次元トーラスを包含するトポロジーに従って、互いに接続されるスイッチ１６６を有する。特定の実施例では、中央ストレージ５４０の記憶装置は、高帯域幅記憶装置である。特定の実施例では、中央ストレージの記憶装置は、典型的には従来の記憶装置より高速なレートによるアクセスを可能にする。
【０１９０】
特定の実施例では、フォルトトレランス・リカバリマネージャ５３８は、アプリケーションの利用のためホストを構成することを実現する。限定されることなく一例として、フォルトトレランス・リカバリマネージャ５３８は、ＨＰＣサーバ１０２の管理者がホストを規定し、当該ホストを中央ストレージ５４０に格納することを可能にするかもしれない。フォルトトレランス・リカバリマネージャ５３８はまた、ＨＰＣサーバ１０２の管理者がホスト名、ＩＰアドレス、ブートイメージ、コンフィギュレーション及び当該ホストに対応する１以上のファイルシステムを指定し、その詳細を中央ストレージ５４０に格納することを可能にするかもしれない。中央ストレージ５４０はホストと当該ホストに対応する詳細とを有するため、グリッド１１０の各ノード１１５は、ＨＰＣサーバ１０２のネットワークファブリックを介しホスト及び当該ホストに対応する詳細にアクセスするようにしてもよく、この結果、グリッド１００の任意のノード１１５が当該ホストを実行するかもしれない。
【０１９１】
特定の実施例では、フォルトトレランス・リカバリマネージャ５３８は、グリッド１１０の何れかのノード１１５における何れかのホストの実行を実現する。限定することなく一例として、フォルトトレランス・リカバリマネージャ５３８は、ホストを実行するため１以上のノード１１５を選択するため、インタフェース１０４（インスタンス化マネージャ５３４を含む）とクラスタ管理エンジン１３０（ジョブスケジューラ５１５を含む）とやりとりするようにしてもよい。フォルトトレランス・リカバリマネージャ５３８又はＨＰＣサーバ１０２の他のコンポーネントがホストを実行するためノード１１５を選択した後、フォルトトレランス・リカバリマネージャ５３８は、設定されたブートイメージ、１以上のファイルシステム及びホストに対応するＩＰアドレスを利用して、ノード１１５上でホストをブートするようにしてもよい。ホストをブートするため、フォルトトレランス・リカバリマネージャ５３８は、Ｗａｋｅ−Ｏｎ  ＬＡＮ、ＩＰＭＩ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｐｌａｔｆｏｒｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｆａｃｅ）、ＰＸＥ（Ｐｒｅｂｏｏｔ  Ｅｘｅｃｕｔｉｏｎ  Ｅｎｖｉｒｏｎｍｅｎｔ）及びＤＨＣＰ（Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）の１以上を利用してもよい。その後、フォルトトレランス・リカバリマネージャ５３８又はＨＰＣサーバ１０２の他のコンポーネントは、ホストを実行するノードを１１５を特定するため、１以上のルーティングテーブルを更新するようにしてもよい。
【０１９２】
特定の実施例では、ノード１１５がホストを実行すると、フォルトトレランス・リカバリマネージャ５３８は、ハートビート（ｈｅａｒｔｂｅａｔ）機構を提供するノード１１５のデーモン又は他のソフトウェアコンポーネントを利用して、ノード１１５の健全性を監視する。デーモンは、ノード１１５が適切に機能していることを示すハートビートメッセージを定期的な間隔によりフォルトトレランス・リカバリマネージャ５３８に通信する。デーモンからのハートビートメッセージは、ノード１１５に関する状態情報を提供するかもしれない。限定されることなく一例として、デーモンからのハートビートメッセージは、ノード１１５の温度、ノード１１５のファンの平均速度及びノード１１５の電力消費レベルを示すノード１１５に関する状態情報を提供するかもしれない。ノード１１５のフォルトを示す状態情報に応答して、フォルトトレランス・リカバリマネージャ５３８は、自動的にかつユーザ入力なしに、フォルトからリカバするためのアクションを開始し、フォルトをＨＰＣサーバ１０２の管理者に通知し、又はその両方を実行するようにしてもよい。
【０１９３】
特定の実施例では、フォルトトレランス・リカバリマネージャ５３８がノード１１５が１以上の設定可能な閾値を超過していないことを示す状態情報を提供するハートビートメッセージをノード１１５から受信し続ける場合、フォルトトレランス・リカバリマネージャ５３８はノード１１５を健全であるとみなす。ノード１１５が１以上の設定可能な閾値を超過していないことを示す状態情報を提供するハートビートメッセージをノード１１５から受信しなかった場合、フォルトトレランス・リカバリマネージャ５３８は、自動的にかつユーザ入力なしに、フォルトからリカバするためのアクションを開始し、フォルトをＨＰＣサーバ１０２の管理者に通知し、又はその両方を実行するようにしてもよい。ノード１１５がＨＰＣサーバ１０２のネットワークファブリックとの複数のインタフェース（１以上のイーサネット（登録商標）インタフェース、１以上のＩＮＦＩＮＩＢＡＮＤインタフェース又はその両方など）を有する場合、フォルトトレランス・リカバリマネージャ５３８にハートビートメッセージを通信するノード１１５のデーモンは、フォルトトレランス・リカバリマネージャ５３８がノード１１５の複数のインタフェースのそれぞれが適切に機能しているか判断できるように、ノード１１５の複数のインタフェースのそれぞれを介しハートビートメッセージのインスタンスを通信するようにしてもよい。デーモンはまた、フォルトトレランス・リカバリマネージャ５３８がハートビートメッセージを読むことができるように、ハートビートメッセージのインスタンスを中央ストレージ５４０に格納するようにしてもよい。特定の実施例では、ハートビートメッセージは、デーモンがハートビートメッセージのインスタンスを送信したすべてのインタフェースを特定する。フォルトトレランス・リカバリマネージャ５３８がノード１１５の複数のインタフェースの１以上においてフォルトを検出した場合、フォルトトレランス・リカバリマネージャ５３８は、ノード１１５において実行されるホストが１以上の追加的な通信パスを用いて他のホスト（ＨＰＣサーバ１０２にとって内部的又は外部的なものであるかもしれない）と通信することを可能にするため、ＨＰＣサーバ１０２における１以上のルーティングテーブルを更新するようにしてもよい。フォルトトレランス・リカバリマネージャ５３８はまた、中央ストレージ５４０へのアクセスをノード１１５に復元するためアクションを開始するようにしてもよい。フォルトトレランス・リカバリマネージャ５３８はまた、検出されたフォルトをＨＰＣサーバ１０２の管理者に通知し、ノード１１５に関してカスタマイズされたリカバリを実行するため、設定可能なスクリプトを実行するようにしてもよい。
【０１９４】
特定の実施例では、第１ノード１１５におけるデーモンからのハートビートメッセージが、第１ノード１１５においてホストを実行するハードウェアにリカバリ不可能なフォルトが発生し、第１ノード１１５に関してカスタマイズされたリカバリを実行するための設定可能なスクリプトが、グリッド１１０の第２ノード１１５におけるホストを再スタートさせることを含むリカバリ方法を指定していることを示す場合、フォルトトレランス・リカバリマネージャ５３８は、ホストを実行するため第２ノード１１５を選択肢、その後、第２ノード１１５において実行するため、第２ノード１１５のホストをブート処理するようにしてもよい。その後、フォルトトレランス・リカバリマネージャ５３８は、当該ホストがグリッド１１０の他のノード１１５と、ＨＰＣサーバ１０２の外部のクライアントと通信することを可能にするため、１以上のルーティングテーブルを更新するようにしてもよい。フォルトトレランス・リカバリマネージャ５３８は、ルーティングテーブル又はＨＰＣサーバ１０２の何れかにおいて、第１ノード１１５がオフラインであることを示し、ＨＰＣサーバ１０２の管理者に第１ノード１１５におけるフォルトを通知するようにしてもよい。
【０１９５】
特定の実施例では、フォルトトレランス・リカバリマネージャ５３８がホストを実行する第１ノード１１５においてフォルトを検出し、当該フォルトに応答して、第２ノード１１５をブート処理し、第２ノード１１５においてホストの初期化に成功した場合、フォルトトレランス・リカバリマネージャ５３８は、第１ノード１１５の処理を中断するためのステップを実行するようにしてもよい。限定されることなく一例として、第１ノード１１５の処理を中断するため、フォルトトレランス・リカバリマネージャ５３８は、第１ノード１１５との通信を回避するためＨＰＣサーバ１０２において１以上のルーティングテーブルを更新し、第１ノード１１５が中央ストレージ５４０にアクセスすることを回避するため、中央ストレージ５４０においてソフトウェア又は他のロジックを更新し、ノード１１５にアイドル状態若しくはパワーダウン状態にし、又は第１ノード１１５をリブートさせるようにしてもよい。第１ノード１１５が、第１ノード１１５のハードウェアにおけるフォルトのためでなく、ＯＳ又は第１ノード１１５の他のソフトウェアにおける不具合又はネットワーク不具合のため故障した場合、第１ノード１１５の処理を中断することが好ましいかもしれない。
【０１９６】
特定の実施例では、ＨＰＣサーバ１０２の管理者は、第１ノード１１５のハードウェアに関する修正メンテナンスを実行し、又はフォルトトレランス・リカバリマネージャ５３８が検出した第１ノード１１５における潜在的な問題をチェックするため、第１ノード１１５から第２ノード１１５にホストを手動により移すことを選択するようにしてもよい。特定の実施例では、フォルトトレランス・リカバリマネージャ５３８は、管理者が第１ノード１１５から第２ノード１１５にホストを手動により移動することを可能にしている。特定の実施例では、管理者がホストを第１ノード１１５から第２ノード１１５に手動により移動するとき、フォルトトレランス・リカバリマネージャ５３８は、ルーティングテーブル又はＨＰＣサーバ１０２の何れかにおいて、第１ノード１１５がオフラインであることを示し、これにより、ＨＰＣサーバ１０２が他のホストを第１ノード１１５にスケジューリングしないようにしてもよい。第１ノード１１５において実行されるアプリケーションがチェックポイント処理（ｃｈｅｃｋｐｏｉｎｔｉｎｇ）をサポートし、又はＨＰＣサーバ１０２のハードウェアがカーネルレベルのチェックポイント処理及び再スタートをサポートしている場合、フォルトトレランス・リカバリマネージャ５３８は、第１ノード１１５においてアプリケーションのチェックポイント処理と、第２ノード１１５におけるアプリケーションの再スタートをサポートするようにしてもよい。
【０１９７】
特定の実施例では、第１ノード１１５において実行されるアプリケーションとＯＳとがカーネルレベルのチェックポイント処理及び再スタートをサポートしている場合、フォルトトレランス・リカバリマネージャ５３８は、第１ノード１１５における所定のスケジュール、設定可能なロード若しくはユーザにより指定された閾値に従って、第１ノード１１５をチェックポイント処理するようにしてもよい。フォルトトレランス・リカバリマネージャ５３８が第１ノード１１５のホストをチェックポイント処理すると、フォルトトレランス・リカバリマネージャ５３８は、ＯＳ及びアプリケーションが第１ノード１１５において実行されている状態を示すチェックポイントファイルを中央ストレージ５４０に書き込むようにしてもよい。フォルトトレランス・リカバリマネージャ５３８は、第１ノード１１５が故障しているか、又は設定可能なロード又はユーザにより指定された閾値に到達している場合、第２ノード１１５においてホストアプリケーションを再スタートするようにしてもよい。特定の実施例では、フォルトトレランス・リカバリマネージャ５３８は、他のより高い優先度のホストを実行するために第１ノード１１５を解放するため、第２ノード１１５においてホスト及びアプリケーションを再スタートするようにしてもよい。
【０１９８】
図１３は、本開示の一実施例によるジョブ命令を動的に処理する一例となる方法６００を示すフローチャートである。一般に、図１３は、バッチジョブ命令を受け付け、ジョブパラメータ及び関連するポリシー５２４に基づきノード１１５をジョブスペース２３０に動的に割当て、割り当てられたスペースを用いてジョブ１５０を実行する方法６００を記載する。以下の説明は、方法６００を実行するに際してクラスタ管理モジュール１３０の処理に着目している。しかしながら、システム１００は当該機能が適切に維持される限り、説明される機能の一部又はすべてを実現する論理要素の何れか適切な組み合わせ及び構成を利用することを想定している。
【０１９９】
方法６００は、ＨＰＣサーバ１０２がユーザからジョブ命令１５０を受け付けるステップ６０５から開始される。上述されるように、一実施例では、ユーザはクライアント１２０を用いてジョブ１５０を提供する。他の実施例では、ユーザはＨＰＣサーバ１０２を直接利用して、ジョブ１５０を提供するかもしれない。次にステップ６１０において、クラスタ管理エンジン１３０は、ユーザに基づきグループ５２３を選択する。ユーザが認証されると、クラスタ管理エンジン１３０は、ステップ６１５において、ユーザとグループアクセスコントロールリスト（ＡＣＬ）とを比較する。しかしながら、クラスタ管理エンジン１３０は、何れか適切なセキュリティ技術を利用してユーザを認証するようにしてもよいということは理解されるであろう。リクエストされたサービス及びホスト名に基づき、クラスタ管理エンジン１３０は、ステップ６２０においてバーチャルクラスタ２２０を選択する。典型的には、バーチャルクラスタ２２０は、ジョブ１５０の提供前に特定及び割り当てられるようにしてもよい。しかしながら、バーチャルクラスタ２２０が確立されていない場合には、クラスタ管理エンジン１３０は、上述した技術の何れかを利用してバーチャルクラスタ２２０を自動的に割り当てるようにしてもよい。次にステップ６２５において、クラスタ管理エンジン１３０は、ジョブ１５０の提供に基づきポリシー５２４を抽出する。一実施例では、クラスタ管理エンジン１３０は、ユーザに係る適切なポリシー５２４、ジョブ１５０又は他の何れか適切な基準を決定するようにしてもよい。クラスタ管理エンジン１３０は、その後ステップ６３０において、ジョブ１５０のサイズを決定又は計算する。適切なサイズは、長さ、幅、高さ又は他の何れか適切なパラメータ又は特性を含むものであってもよいということが理解されるであろう。上述されるように、これらのサイズは、バーチャルクラスタ２２０内の適切なジョブスペース２３０（又はノード１１５のサブセット）を決定するのに利用される。初期的なパラメータが確立された後、クラスタ管理１３０は、ステップ６３５〜６６５においてＨＰＣサーバ１０２上でジョブ１５０を実行しようとする。
【０２００】
判定ステップ６３５において、クラスタ管理エンジン１３０は、すでに確立されたパラメータを利用して、所望のジョブスペース２３０を割り当てるのに利用可能な十分なノードがあるか判断する。十分なノード１１５が存在しない場合、クラスタ管理エンジン１３０は、ステップ６４０においてバーチャルクラスタ２２０のノード１１５の最先の利用可能なサブセット２３０を決定する。その後ステップ６４５において、当該サブセット２３０が利用可能になるまで、クラスタ管理エンジン１３０はジョブ１５０をジョブキュー１２５に加える。その後、処理は判定ステップ６３５に戻る。利用可能な十分なノード１１５が存在すると、クラスタ管理エンジン１３０は、ステップ６５０において利用可能なノード１１５からの最適なサブセット２３０を動的に決定する。最適なサブセット２３０が、最速の処理時間、最も信頼度の高いノード、物理又はバーチャル位置又は最初の利用可能なノード１１５を含む何れか適切な基準を用いて決定されてもよいということは理解されるであろう。ステップ６５５において、クラスタ管理エンジン１３０は、選択されたバーチャルクラスタ２２０から決定されたサブセット２３０を選択する。次にステップ６６０において、クラスタ管理エンジン１３０は、選択されたサブセット２３０を利用してジョブ１５０の選択されたノード１１５を割り当てる。一実施例によると、クラスタ管理エンジン１３０は、“未割当て（ｕｎａｌｌｏｃａｔｅｄ）”から“割当て済み（ａｌｌｏｃａｔｅｄ）”にバーチャルノードリスト５２２のノード１１５の状態を変更するようにしてもよい。サブセット２３０が適切に割り当てられると、クラスタ管理エンジン１３０は、ジョブパラメータ、抽出されたポリシー５２４及び他の何れか適切なパラメータに基づき割り当てられたスペースを利用して、ステップ６６５においてジョブ１５０を実行する。何れか適切な時点において、クラスタ管理エンジン１３０は、ユーザにジョブ結果を通信又は提示するようにしてもよい。例えば、結果１６０はＧＵＩ１２６を介しフォーマット化又はユーザに提示されるようにしてもよい。
【０２０１】
図１４は、本開示の一実施例によるグリッド１１０のバーチャルクラスタ２２０を動的に充填する一例となる方法７００を示すフローチャートである。高いレベルにおいては、方法７００は、バーチャルクラスタ２２０の利用可能なスペースを決定し、当該スペースに両立する最適なジョブ１５０を決定し、利用可能なスペースにおいて決定されたジョブ１５０を実行することを記載する。以下の説明は、当該方法を実行するに際してクラスタ管理モジュール１３０の処理に着目している。しかしながら、前のフローチャートと同様に、システム１００は記載される機能の一部又はすべてを実現する論理要素の何れか適切な組み合わせ及び構成を利用することを想定している。
【０２０２】
方法７００は、クラスタ管理エンジン１３０がジョブキュー５２５をソートするステップ７０５から開始される。図示された実施例では、クラスタ管理エンジン１３０は、キュー５２５に格納されているジョブ１５０の優先度に基づきキュー５２５をソートする。しかしながら、クラスタ管理エンジン１３０が適切な又は最適なジョブ１５０が実行されるように、何れか適切な特性を利用してキュー５２５をソートするようにしてもよいということは理解されるであろう。次にステップ７１０において、クラスタ管理エンジン１３０は、バーチャルクラスタ２２０の１つにおける利用可能なノード１１５の個数を決定する。もちろん、クラスタ管理エンジン１３０はまた、グリッド１１０又はバーチャルクラスタ２２０の何れ１以上における利用可能なノード１１５の個数を決定するようにしてもよい。ステップ７１５において、クラスタ管理エンジン１３０は、ソートされたジョブキュー５２５から最初のジョブ１５０を選択する。次にステップ７２０において、クラスタ管理エンジン１３０は、選択されたジョブの最適な形状（又は他のサイズ）を動的に決定する。選択されたジョブ１５０の最適な形状又はサイズが決定されると、クラスタ管理エンジン１３０は、ステップ７２５〜７４５において、適切なバーチャルクラスタ２２０にジョブ１５０を充填することが可能であるか判断する。
【０２０３】
判定ステップ７２５において、クラスタ管理エンジン１３０は、選択されたジョブ１５０に利用可能な十分なノードがあるか判断する。利用可能な十分なノード１１５が存在する場合、ステップ７３０において、クラスタ管理エンジン１３０は、何れか適切な技術を用いて選択されたジョブに対してノード１１５を動的に割り当てる。例えば、クラスタ管理エンジン１３０は、図６に示される技術を利用するようにしてもよい。次にステップ７３５において、クラスタ管理エンジン１３０は、バーチャルクラスタ２２０における利用可能なノードの個数を再計算する。ステップ７４０において、クラスタ管理エンジン１３０は、割り当てられたノード１１５上でジョブ１５０を実行する。ジョブ１５０が実行されると（又は選択されたジョブ１５０について十分なノード１１５が存在しなかった場合）、クラスタ管理エンジン１３０は、ステップ７４５においてソートされたジョブキュー５２５の次のジョブ１５０を選択肢、処理はステップ７２０に戻る。ループとして図示されているが、クラスタ管理エンジン１３０は何れか適切な時点において方法７００に示された技術を開始、実行及び終了するようにしてもよいということは理解されるであろう。
【０２０４】
図１５は、本開示の一実施例によるグリッド１１０のノード１１５の不具合を動的管理する一例となる方法８００を示すフローチャートである。高いレベルでは、方法８００は、ノード１１５が故障したと判断し、ジョブリカバリ及び管理を自動的に実行し、故障したノード１１５を補助的なノード１１５に交換することを記載している。以下の説明は、当該方法を実行するに際してクラスタ管理モジュール１３０の処理に着目している。しかしながら、前のフローチャートと同様に、システム１００は、説明される機能の一部又はすべてを実現する論理要素の何れか適切な組み合わせ及び構成を利用することを想定している。
【０２０５】
方法８００は、クラスタ管理エンジン１３０がノード１１５が故障したと判断するステップ８０５から開始される。上述されるように、クラスタ管理エンジン１３０は、ノード１１５が故障したことを何れか適切な技術を用いて判断するかもしれない。例えば、クラスタ管理エンジン１３０は、各時点においてノード１１５（又はエージェント１３２）を抽出し、ノード１１５からの応答の欠落に基づきノード１１５が故障したことを判断するようにしてもよい。他の例では、ノード１１５上に存在するエージェント１３２が“ハートビート”を通信し、この“ハートビート”の欠落がノード１１５の故障を示すかもしれない。次にステップ８１０において、クラスタ管理エンジン１３０は、バーチャルクラスタ２２０から故障したノード１１５を取り除く。一実施例では、クラスタ管理エンジン１３０は、バーチャルリスト５２２のノード１１５の状態を“割当て済み”から“故障”に変更するようにしてもよい。その後判定ステップ８１５において、クラスタ管理エンジン１３０は、ジョブ１５０が故障したノード１１５に係るものか判断する。ノード１１５に係るジョブ１５０がない場合、処理は終了する。上述されるように、処理が終了する前に、クラスタ管理エンジン１３０は、エラーメッセージを管理者に通信し、置換ノード１１５又は他の何れか適切な処理を自動的に決定する。故障したノード１１５に係るジョブ１５０が存在する場合、クラスタ管理エンジン１３０は、ステップ８２０においてジョブ１５０に係る他のノード１１５を決定する。次にステップ８２５において、クラスタ管理エンジン１３０は、すべての適切なノード１１５上のジョブ１５０をキル（ｋｉｌｌ）する。例えば、クラスタ管理エンジン１３０は、キルジョブコマンドを実行し、又はジョブ１５０を終了するための他の何れか適切な技術を利用するようにしてもよい。次にステップ８３０において、クラスタ管理エンジン１３０は、バーチャルリスト５２２を用いてノード１１５を割当て解除する。例えば、クラスタ管理エンジン１３０は、バーチャルリスト５２２のノード１１５の状態を“割当て済み”から“利用可能”に変更するようにしてもよい。当該ジョブが終了し、すべての適切なノード１１５が割当て解除されると、クラスタ管理エンジン１３０は、ステップ８３５〜８５０において利用可能なノード１１５を用いてジョブ１５０を再実行しようとする。
【０２０６】
ステップ８３５において、クラスタ管理エンジン１３０は、ステップ８３５においてキルされたジョブ１５０のポリシー及びパラメータを抽出する。その後ステップ８４０において、クラスタ管理エンジン１３０は、抽出したポリシー５２４とジョブパラメータとに基づき、バーチャルクラスタ２２０のノード１１５の最適なサブセットを決定する。ノード１１５のサブセット２３０が決定されると、クラスタ管理エンジン１３０は、ステップ８４５においてノード１１５のサブセット２３０を動的に割り当てる。例えば、クラスタ管理エンジン１３０は、バーチャルリスト５２２のノード１１５の状態を“未割当て”から“割当て済み”に変更してもよい。当該ノード１１５のサブセットがジョブ１５０が実行されていた当初のノードサブセットと異なるかもしれないということが理解されるであろう。例えば、クラスタ管理エンジン１３０は、当該実行を促したノードの不具合のため、異なるノードサブセットが最適であると判断するかもしれない。他の例では、クラスタ管理エンジン１３０は、補助的なノード１１５が故障したノード１１５を交換するよう動作可能であり、新たなサブセット２３０が古いジョブスペース２３０と実質的に類似しているということを判断したかもしれない。割当て済みサブセット２３０が決定及び割り当てられると、クラスタ管理エンジン１３０は、ステップ８５０においてジョブ１５０を実行する。
【０２０７】
上記フローチャート及び付属の説明は、一例となる方法６００、７００及び８００を示している。すなわち、システム１００は、上記及び他のタスクを実行するための何れか適切な技術を利用することを想定している。従って、当該フローチャートのステップの多くは、同時に及び／又は図示されるものと異なる順序により行われるようにしてもよい。さらに、システム１００は、上記方法が適切なものである限り、より多く、より少ない及び／又は異なるステップによる方法を利用するようにしてもよい。
【０２０８】
図１６は、ＨＰＣシステム１００のオン・デマンドインスタンス化の一例となる方法を示す。本方法は、インタフェース１０４がＨＰＣサーバ１０２に関して外部的に通知されたポート番号とホスト名とを規定する接続リクエストをクライアント１２０から受け付ける。ステップ９０２において、当該接続リクエストに応答して、インスタンス化マネージャ５３４は、ＨＰＣサーバ１０２に関して外部的に通知されたサービスのリストを提供するインスタンス化データ５３６にアクセスする。ステップ９０４において、インスタンス化マネージャ５３４は、当該サービスのリストを用いて接続リクエストに規定されるポート番号とホスト名とに対応するサービスを特定する。ステップ９０６において、インスタンス化マネージャ５３４は、当該サービスリストに従って、特定されたサービスがクライアント１２０に利用可能であるか判断する。上述されるように、特定されたサービスがクライアント１２０に利用可能であるか否かは、当該接続リクエストに係る時間、クライアント１２０のユーザの身元又は接続リクエストの他の側面に依存するかもしれない。ステップ９０６において、特定されたサービスがクライアント１２０に利用可能である場合、本方法はステップ９０８に移行する。ステップ９０８において、インスタンス化マネージャ５３４は、特定されたサービスに対応するＨＰＣサーバ１０２の内部のホスト名とポート番号とを示すインスタンス化データ５３６を利用して、特定されたサービスをクライアント１２０に提供するためグリッド１１０の１以上のノード１１５のホストをインスタンス化する。上述されるように、インスタンス化マネージャ５３４はまた、ブートイメージ、ファイルシステム及びＯＳコンフィギュレーションを含むインスタンス化データ５３６を利用して、本方法が終了する時点においてノード１１５のホストをインスタンス化するようにしてもよい。ステップ９０６において、特定されたサービスがクライアント１２０に利用可能でない場合、本方法はステップ９１０に移行する。ステップ９１０において、インスタンス化マネージャ５３４は、クライアント１２０が本方法が終了する時点において特定されたサービスにアクセスすることを回避するため、接続リクエストに指定されるポートをブロックする。図１６に示される方法の特定のステップが特定の順序で行われるものとして図示及び記載されたが、図１６に示される方法の何れか適切なステップが、何れか適切な順序により行われるようにしてもよい。
【０２０９】
図１７は、ＨＰＣシステム１００におけるフォルトトレランス及びリカバリのための一例となる方法を示す。本方法は、フォルトトレランス・リカバリマネージャ５３８が第１ノード１１５において実行されるホストから１以上のハートビートメッセージを受け付けるステップ１０００から開始される。ステップ１００２において、フォルトトレランス・リカバリマネージャ５３８は、１以上のハートビートメッセージから第１ノード１１５の健全性（ハードウェア、ソフトウェア、埋め込みロジックコンポーネント、又は第１ノード１１５におけるこのような２以上のコンポーネントの組み合わせの健全性を有するものであってもよい）を決定する。ステップ１００４において、第１ノード１１５が検算である場合、本方法はステップ１０００に戻る。ステップ１００４において、第１ノード１１５が健全でない場合、本方法は、フォルトトレランス・リカバリマネージャ５３８がホストを実行するためグリッド１１０の第２ノード１１５を選択するステップ１００６に移行する。ステップ１００８において、フォルトトレランス・リカバリマネージャ５３８は第１ノード１１５の処理を中断する。ステップ１０１２において、フォルトトレランス・リカバリマネージャ５３８は、本方法が終了する時点において第１ノード１１５が検算でないことをＨＰＣサーバ１０２の管理者に通知する。図１７に示される方法の特定のステップは、特定の順序により行われるとして図示及び説明されたが、図１７に示される方法の何れか適切なステップは、何れか適切な順序により実行されてもよい。
【０２１０】
本開示が特定の実施例及び全体的に関連する方法に関して説明されたが、当業者には上記実施例及び方法の変形及び置換が明らかであろう。従って、上記実施例の説明は本開示を規定又は制限するものではない。本開示の趣旨及び範囲から逸脱することなく、他の変更、置換及び変形がまた可能である。
【図面の簡単な説明】
【０２１１】
【図１】本願開示の一実施例による、高性能計算システムの例を示す図である。
【図２】図１に示すＨＰＣシステムにおけるノードの例を示す図である。
【図３】ノードにおける中央処理装置（ＣＰＵ）の例を示す図である。
【図４】ノード対の例を示す図である。
【図５Ａ】図１のシステムにおけるグリッドとその利用との種々の実施例を示す図である。
【図５Ｂ】図１のシステムにおけるグリッドとその利用との種々の実施例を示す別の図である。
【図５Ｃ】図１のシステムにおけるグリッドとその利用との種々の実施例を示す更に別の図である。
【図５Ｄ】図１のシステムにおけるグリッドとその利用との種々の実施例を示す更に別の図である。
【図６Ａ】図１のシステムによる、グラフィカル・ユーザ・インタフェースの種々の実施例を示す図である。
【図６Ｂ】図１のシステムによる、グラフィカル・ユーザ・インタフェースの種々の実施例を示す別の図である。
【図７】図１におけるシステムによる、クラスタ管理ソフトウェアの一実施例を示す図である。
【図８】ｙ次元にフォールディングされる１次元の要求の例を示す図である。
【図９】ｙ軸を内部ループとして用いて構成される２つのフリー・メッシュを示す図である。
【図１０】ｘ軸を内部ループとして用いて構成される２つのフリー・メッシュを示す図である。
【図１１】図１に示されるＨＰＣシステムの一例となるインタフェースを示す。
【図１２】図１に示されるＨＰＣシステムの一例となる管理ノードを示す。
【図１３】図１のハイパフォーマンスコンピューティングシステムによるバッチジョブを提供する方法を示すフローチャートである。
【図１４】図１のハイパフォーマンスコンピューティングシステムによるグリッドの動的充填のための方法を示すフローチャートである。
【図１５】図１のハイパフォーマンスコンピューティングシステムによるノード不具合を動的管理する方法を示すフローチャートである。
【図１６】図１に示されるＨＰＣシステムにおけるオン・デマンドインスタンス化のための一例となる方法を示す。
【図１７】図１に示されるＨＰＣシステムにおけるフォルトトレランス及びリカバリのための一例となる方法を示す。
【図１】
0005570095.tif 000095
【図２】
0005570095.tif 000096
【図３】
0005570095.tif 000097
【図４】
0005570095.tif 000098
【図５Ａ】
0005570095.tif 000099
【図５Ｂ】
0005570095.tif 000100
【図５Ｃ】
0005570095.tif 000101
【図５Ｄ】
0005570095.tif 000102
【図６Ａ】
0005570095.tif 000103
【図６Ｂ】
0005570095.tif 000104
【図７】
0005570095.tif 000105
【図８】
0005570095.tif 000106
【図９】
0005570095.tif 000107
【図１０】
0005570095.tif 000108
【図１１】
0005570095.tif 000109
【図１２】
0005570095.tif 000110
【図１３】
0005570095.tif 000111
【図１４】
0005570095.tif 000112
【図１５】
0005570095.tif 000113
【図１６】
0005570095.tif 000114
【図１７】
0005570095.tif 000115