(57)【要約】【課題】本発明の好適な諸実施形態は、ハイブリッド処理システムにおける高スループット・コンピューティングを提供する。【解決手段】高スループット・コンピューティング・サービス品質保証契約（ＳＬＡ）のセットが分析される。高スループット・コンピューティングＳＬＡのセットは、ハイブリッド処理システムと関連付けられている。ハイブリッド処理システムは、第一コンピューティング・アーキテクチャを包含する少なくとも一つのサーバ・システムと、各々が第一コンピューティング・アーキテクチャとは異なる第二コンピューティング・アーキテクチャを包含するアクセラレータ・システムのセットと、を含む。サーバ・システム中のリソースの第一セット、およびアクセラレータ・システムのセット中のリソースの第二セットがモニタされる。データ並列ワークロード・タスクのセットが、リソースの第一セット中の少なくとも一つのリソースと、リソースの第二セット中の少なくとも一つのリソースとに亘って動的にスケジュールされる。このデータ並列ワークロード・タスクのセットの動的なスケジューリングは、高スループット・コンピューティングＳＬＡのセットをほぼ満たす。【選択図】図１
2013538398.tif 000002
【特許請求の範囲】
【請求項１】
ハイブリッド処理システムに高スループット・コンピューティングを設ける、情報処理システムの方法であって、前記方法は、
高スループット・コンピューティング・サービス保証品質契約（ＳＬＡ）のセットを分析するステップであって、前記高スループット・コンピューティングＳＬＡのセットは、第一コンピューティング・アーキテクチャを含む少なくとも一つのサーバ・システム、および各々が前記第一コンピューティング・アーキテクチャとは異なる第二コンピューティング・アーキテクチャを含むアクセラレータ・システムのセットを包含する、ハイブリッド処理システムに関連付けられている、前記分析するステップと、
前記高スループット・コンピューティングＳＬＡのセットに基づいて、前記少なくとも一つのサーバ・システム中のリソースの第一セット、および前記アクセラレータ・システムのセット中のリソースの第二セットをモニタするステップと、
前記モニタリングに基づいて、前記リソースの第一セット中の少なくとも一つのリソースと前記リソースの第二セット中の少なくとも一つのリソースとに亘るデータ並列ワークロード・タスクのセットを動的にスケジューリングするステップであって、前記動的にスケジューリングするステップは、前記高スループット・コンピューティングＳＬＡのセットをほぼ満たす、前記スケジューリングするステップと、
を含む方法。
【請求項２】
前記ハイブリッド処理システムは、クロスプラットフォーム並列プログラミング環境を含む、請求項１に記載の方法。
【請求項３】
前記リソースの第一セットおよび前記リソースの第二セットは、各々、クロスプラットフォーム並列プログラミング・リソースのセットを含む、請求項１または２に記載の方法。
【請求項４】
前記クロスプラットフォーム並列プログラミング・リソースのセットは計算カーネルを含む、請求項１〜３のいずれかに記載の方法。
【請求項５】
前記少なくとも一つのサーバ・システムは、前記アクセラレータ・システムのセットにネットワークによって通信可能に連結されている、請求項１〜４のいずれかに記載の方法。
【請求項６】
前記リソースの第一セットの少なくともサブセットは、前記アクセラレータ・システムのセット上で利用可能なリソースのセットをエミュレートする、請求項１〜５のいずれかに記載の方法。
【請求項７】
前記高スループット・コンピューティングＳＬＡのセットは、前記ハイブリッド処理システムが達成すべき、パフォーマンス要求事項のセットおよびエネルギ要求事項のセットの少なくとも一つを含む、請求項１〜６のいずれかに記載の方法。
【請求項８】
前記動的にスケジューリングするステップの後で、前記高スループット・コンピューティングＳＬＡのセットが満たされていないことを判定するステップと、
前記判定するステップに応じて、前記リソースの第一セットおよび前記リソースの第二セットの少なくとも一つに、追加のリソースを動的に割り当てるステップと、
をさらに含む、請求項１〜７のいずれかに記載の方法。
【請求項９】
前記データ並列ワークロード・タスクのセット中の少なくとも一つのデータ並列ワークロード・タスクを、前記リソースの第二セット中の前記少なくとも一つのリソースから前記リソースの第一セット中のリソースに移動するステップ、
をさらに含む、請求項１〜８のいずれかに記載の方法。
【請求項１０】
前記移動するステップは、
前記少なくとも一つのデータ並列ワークロード・タスクに関連付けられた実行条件のセットを識別するステップと、
前記少なくとも一つのデータ並列ワークロード・タスクの実行の過程で、少なくとも一つの実行条件が満たされていないことを判定するステップと、
前記少なくとも一つの実行条件が満たされていないことの前記判定に応じて、前記移動するステップを遂行するステップと、
をさらに含む、請求項９に記載の方法。
【請求項１１】
前記実行条件のセットは、前記高スループット・コンピューティングＳＬＡのセット中に示され、前記ハイブリッド処理システムに関連付けられた、パフォーマンス指標およびエネルギ指標の少なくとも一つを含む、請求項１０に記載の方法。
【請求項１２】
複数のワークロードを分析するステップであって、前記複数のワークロード中の少なくとも一つのワークロードは前記データ並列ワークロード・タスクのセットを含む、前記分析するステップと、
前記分析するステップに基づいて、前記複数のワークロード中の、ほぼ類似のデータ並列オペレーションを遂行するワークロードのセットを識別するステップと、
前記識別するステップに応じて、前記識別されたワークロードのセットをワークロード・クラスタ中にグループ化するステップと、
前記ワークロード・クラスタ中の前記ワークロードのセットを、同時に動的にスケジューリングするステップであって、この動的にスケジューリングするステップは、前記ワークロード・クラスタ中の、相互に依存しているワークロードを時間的に整列させるステップをさらに含む、前記スケジューリングするステップと、
をさらに含む、請求項１〜１１のいずれかに記載の方法。
【請求項１３】
ハイブリッド処理システムに高スループット・コンピューティングを設けるためのシステムであって、前記システムは、
メモリと、
前記メモリに通信可能に連結されたプロセッサと、
前記メモリおよび前記プロセッサに通信可能に連結されたワークロード・マネージャであって、前記ワークロード・マネージャは、
高スループット・コンピューティング・サービス保証品質契約（ＳＬＡ）のセットを分析するための分析コンポーネントあって、前記高スループット・コンピューティングＳＬＡのセットは、第一コンピューティング・アーキテクチャを含む少なくとも一つのサーバ・システム、および各々が前記第一コンピューティング・アーキテクチャとは異なる第二コンピューティング・アーキテクチャを含むアクセラレータ・システムのセットを包含する、ハイブリッド処理システムに関連付けられている、前記分析コンポーネント、
前記高スループット・コンピューティングＳＬＡのセットに応じて、前記サーバ・システム中のリソースの第一セット、および前記アクセラレータ・システムのセット中のリソースの第二セットをモニタするためのモニタ・コンポーネント、および
前記モニタ・コンポーネントのモニタリングに応じ、前記リソースの第一セット中の少なくとも一つのリソースと前記リソースの第二セット中の少なくとも一つのリソースとに亘るデータ並列ワークロード・タスクのセットを動的にスケジューリングするためのスケジュール・コンポーネントであって、前記動的にスケジューリングするステップは、前記高スループット・コンピューティングＳＬＡのセットをほぼ満たす、前記スケジュール・コンポーネント、
を包含する前記ワークロード・マネージャと、
を含むシステム。
【請求項１４】
ハイブリッド処理システムに高スループット・コンピューティングを設けるためのシステムであって、前記システムは、
メモリと、
前記メモリに通信可能に連結されたプロセッサと、
前記メモリおよび前記プロセッサに通信可能に連結されたワークロード・マネージャであって、前記ワークロード・マネージャは、
高スループット・コンピューティング・サービス保証品質契約（ＳＬＡ）のセットを分析するステップであって、前記高スループット・コンピューティングＳＬＡのセットは、第一コンピューティング・アーキテクチャを含む少なくとも一つのサーバ・システム、および各々が前記第一コンピューティング・アーキテクチャとは異なる第二コンピューティング・アーキテクチャを含むアクセラレータ・システムのセットを包含する、ハイブリッド処理システムに関連付けられている、前記分析するステップと、
前記高スループット・コンピューティングＳＬＡのセットに基づいて、前記サーバ・システム中のリソースの第一セット、および前記アクセラレータ・システムのセット中のリソースの第二セットをモニタするステップと、
前記モニタリングに基づいて、前記リソースの第一セット中の少なくとも一つのリソースと前記リソースの第二セット中の少なくとも一つのリソースとに亘るデータ並列ワークロード・タスクのセットを動的にスケジューリングするステップであって、前記動的にスケジューリングするステップは、前記高スループット・コンピューティングＳＬＡのセットをほぼ満たす、前記スケジューリングするステップと、
を含む方法を遂行するようになされている、前記ワークロード・マネージャと、
を含むシステム。
【請求項１５】
前記ハイブリッド処理システムは、クロスプラットフォーム並列プログラミング環境を含み、前記リソースの第一セットおよび前記リソースの第二セットは、各々、クロスプラットフォーム並列プログラミング・リソースのセットを含む、請求項１４に記載のシステム。
【請求項１６】
前記リソースの第一セットの少なくともサブセットは、前記アクセラレータ・システムのセット上で利用可能なリソースのセットをエミュレートする、請求項１４または１５のいずれかに記載のシステム。
【請求項１７】
前記高スループット・コンピューティングＳＬＡのセットは、前記ハイブリッド処理システムが達成すべき、パフォーマンス要求事項のセットおよびエネルギ要求事項のセットの少なくとも一つを含む、請求項１４〜１６のいずれかに記載のシステム。
【請求項１８】
前記方法は、
前記動的にスケジューリングするステップに応じて、前記高スループット・コンピューティングＳＬＡのセットが満たされていないことを判定するステップと、
前記判定するステップに応じて、前記リソースの第一セットおよび前記リソースの第二セットの少なくとも一つに、追加のリソースを動的に割り当てるステップと、
をさらに含む、請求項１４〜１７のいずれかに記載のシステム。
【請求項１９】
前記方法は、
前記データ並列ワークロード・タスクのセット中の少なくとも一つのデータ並列ワークロード・タスクを、前記リソースの第二セット中の前記少なくとも一つのリソースから前記リソースの第一セット中のリソースに移動するステップをさらに含み、
前記移動するステップは、
前記少なくとも一つのデータ並列ワークロード・タスクに関連付けられた実行条件のセットを識別するステップと、
前記少なくとも一つのデータ並列ワークロード・タスクの実行の過程で、少なくとも一つの実行条件が満たされていないことを判定するステップと、
前記少なくとも一つの実行条件が満たされていないことの前記判定に応じて、前記移動するステップを遂行するステップと、
をさらに含む、
請求項１４〜１８のいずれかに記載のシステム。
【請求項２０】
ハイブリッド処理システムに高スループット・コンピューティングを設けるためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、
処理回路が読み取り可能で、請求項１〜１２のいずれかに記載の方法を遂行するため前記処理回路が実行する命令を格納するコンピュータ可読ストレージ媒体を含む、コンピュータ・プログラム製品。
【請求項２１】
コンピュータ可読媒体に格納され、デジタル・コンピュータの内部メモリ中にロード可能で、プログラムがコンピュータ上で実行されたとき請求項１〜請求項１２のいずれかに記載の前記方法を遂行するための、ソフトウェア・コードの一部を含む、前記コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にハイブリッド・コンピューティング環境に関し、さらに具体的には、ハイブリッド・コンピューティング環境における高スループット・コンピューティングの遂行に関する。
【背景技術】
【０００２】
今日のコンピュータ・システムは、今や一部のコンピューティング環境においては、データ処理タスクを達成するため共同で作業する、相異なるアーキテクチャのコア・コンポーネントが包含されるまでに進んでいる。かかるコンピューティング環境は、一般に「ハイブリッド」環境といわれ、かかる環境が、ホスト・コンピュータと相異なるアーキテクチャを有するアクセラレータとを含むことを表している。
【０００３】
２００９年３月５日出願、発明の名称「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｈａｒｄｗａｒｅ  Ｂａｓｅｄ  Ｄｙｎａｍｉｃ  Ｌｏａｄ  Ｂａｌａｎｃｉｎｇ  ｏｆ  Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ  Ｔａｓｋｓ  Ｂｙ  Ｍｏｄｉｆｙｉｎｇ  Ｔａｓｋｓ」の特許文献１は、タスクを修正することによって、メッセージ・パッシング・インターフェース（ＭＰＩ：ｍｅｓｓａｇｅ  ｐａｓｓｉｎｇ  ｉｎｔｅｒｆａｃｅ）タスクの、ハードウェア・ベースの動的負荷バランシングを提供するためのシステムおよび方法を教示している。ＭＰＩ作業のタスクを実行するプロセッサのワークロードのバランスを調整するためのメカニズムが、プロセッサの全てが同期オペレーションを呼び出すのを待っている待ち期間を最小化するように設けられる。各プロセッサは、関連付けられたハードウェア実装のＭＰＩ負荷バランシング・コントローラを有する。ＭＰＩ負荷バランシング・コントローラは、同期オペレーションへの呼び出しに関するタスクのプロフィールを備えた履歴を維持する。この情報から、並列実行システムの全体的オペレーションに大きな悪影響を与えずに、どのプロセッサの負荷が軽減されるべきで、どのプロセッサが追加の処理負荷を取り扱うことが可能かを判定することができる。しかして、オペレーションは、最も遅いプロセッサから、より進度の速い一つ以上のプロセッサへのワークロードのシフトを行うことができる。
【０００４】
２０１０年４月６日出願、発明の名称「Ｂａｌａｎｃｉｎｇ  ｃｏｍｐｕｔａｔｉｏｎａｌ  ｌｏａｄ  ａｃｒｏｓｓ  ａ  ｐｌｕｒａｌｉｔｙ  ｏｆ  ｐｒｏｃｅｓｓｏｒｓ」の特許文献２は、複数のプロセッサに亘る計算負荷のバランスを教示している。ソース・コードのサブタスクは、バイト・コードのサブタスクにコンパイルされ、これにより、バイト・コード・サブタスクは、実行時に、プロセッサ固有のオブジェクト・コードのサブタスクに変換される。プロセッサ型の選択は、次の３つのアプローチ、１）総当たりアプローチ、２）上位レベル・アプローチ、または３）プロセッサ利用可能性アプローチ、の一つに基づく。各オブジェクト・コード・サブタスクは、実行のため、対応するプロセッサ型にロードされる。一つの実施形態において、コンパイラは、バイト・コード・ファイル中に、バイト・コード・サブタスクの位置を参照するポインタを格納する。この実施形態では、バイト・コード・サブタスクは共用ライブラリに格納され、実行時に、ランタイム・ローダが、バイト・コード・サブタスクを変換するために、このポイントを使って該バイト・コード・サブタスクの位置を識別する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２００９／００６４１６８号
【特許文献２】米国特許第７，６９４，３０６号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ハイブリッド・コンピューティング環境は、多くの非ハイブリッド・コンピューティング環境よりもコンピュータ処理的に強力でありデータ処理効率が高いが、通常、高スループット・コンピューティング能力は備えていない。従って、当該技術分野では、この問題に対処することが必要となっている。
【課題を解決するための手段】
【０００７】
第一態様から見ると、本発明は、ハイブリッド処理システムにおいて高スループット・コンピューティングを設ける方法を提供する。本方法は、高スループット・コンピューティング・サービス品質保証契約のセットを分析するステップを含む。この高スループット・コンピューティング・サービス品質保証契約（ＳＬＡ：ｓｅｒｖｉｃｅ  ｌｅｖｅｌ  ａｇｒｅｅｍｅｎｔ）のセットは、ハイブリッド処理システムと関連付けられている。ハイブリッド処理システムは、第一コンピューティング・アーキテクチャを包含する少なくとも一つのサーバ・システムと、各々が第一コンピューティング・アーキテクチャとは異なる第二コンピューティング・アーキテクチャを包含する、アクセラレータ・システムのセットとを含む。サーバ・システム中のリソースの第一セットおよびアクセラレータ・システムのセット中のリソースの第二セットは、高スループット・コンピューティングＳＬＡのセットに基づいてモニタされる。このモニタリングに基づき、データ並列ワークロード・タスクのセットが、リソースの第一セット中の少なくとも一つのリソースと、リソースの第二セット中の少なくとも一つのリソースとに亘って動的にスケジュールされる。データ並列ワークロード・タスクのセットの動的なスケジューリングは、高スループット・コンピューティングＳＬＡのセットをほぼ満たす。
【０００８】
さらなる態様から見ると、本発明は、ハイブリッド処理システムにおいて高スループット・コンピューティングを設けるためのシステムを提供する。本システムは、メモリおよびメモリに通信可能に連結されたプロセッサを含む。ワークロード・マネージャが、メモリとプロセッサとに通信可能に連結される。ワークロード・マネージャは、方法を遂行するようになされている。本方法は、高スループット・コンピューティング・サービス品質保証契約のセットを分析するステップを含む。この高スループット・コンピューティングＳＬＡのセットは、ハイブリッド処理システムと関連付けられている。ハイブリッド処理システムは、第一コンピューティング・アーキテクチャを包含する少なくとも一つのサーバ・システムと、各々が第一コンピューティング・アーキテクチャとは異なる第二コンピューティング・アーキテクチャを包含する、アクセラレータ・システムのセットとを含む。サーバ・システム中のリソースの第一セットおよびアクセラレータ・システムのセット中のリソースの第二セットは、高スループット・コンピューティングＳＬＡのセットに基づいてモニタされる。このモニタリングに基づき、データ並列ワークロード・タスクのセットが、リソースの第一セット中の少なくとも一つのリソースと、リソースの第二セット中の少なくとも一つのリソースとに亘って動的にスケジュールされる。データ並列ワークロード・タスクのセットの動的なスケジューリングは、高スループット・コンピューティングＳＬＡのセットをほぼ満たす。
【０００９】
さらなる態様から見ると、本発明は、ハイブリッド処理システムにおいて高スループット・コンピューティングを設けるためのコンピュータ・プログラム製品を提供する。本コンピュータ・プログラム製品は、処理回路が読み取り可能で、方法を遂行するため処理回路が実行する命令を格納するストレージ媒体を含む。本方法は、高スループット・コンピューティング・サービス品質保証契約のセットを分析するステップを含む。この高スループット・コンピューティングＳＬＡのセットは、ハイブリッド処理システムと関連付けられている。ハイブリッド処理システムは、第一コンピューティング・アーキテクチャを包含する少なくとも一つのサーバ・システムと、各々が第一コンピューティング・アーキテクチャとは異なる第二コンピューティング・アーキテクチャを包含する、アクセラレータ・システムのセットとを含む。サーバ・システム中のリソースの第一セットおよびアクセラレータ・システムのセット中のリソースの第二セットは、高スループット・コンピューティングＳＬＡのセットに基づいてモニタされる。このモニタリングに基づき、データ並列ワークロード・タスクのセットが、リソースの第一セット中の少なくとも一つのリソースと、リソースの第二セット中の少なくとも一つのリソースとに亘って動的にスケジュールされる。データ並列ワークロード・タスクのセットの動的なスケジューリングは、高スループット・コンピューティングＳＬＡのセットをほぼ満たす。
【００１０】
さらなる態様から見ると、本発明は、コンピュータ可読媒体に格納され、デジタル・コンピュータの内部メモリ中にロード可能で、プログラムがコンピュータ上で実行されたとき本発明のステップを遂行するためのソフトウェア・コードを含む、コンピュータ・プログラムを提供する。
【００１１】
単なる例示を目的として、添付の図面を参照しながら、以下に本発明の好適な実施形態を説明する。
【図面の簡単な説明】
【００１２】
【図１】本発明の一つの実施形態による動作環境の一例を示すブロック図である。
【図２】本発明の一つの実施形態による、ハイブリッド・システムに亘って高スループット・コンピューティングワークロードを分配する一例を示すブロック図である。
【図３】本発明の一つの実施形態による、ハイブリッド・システム中のワークロードの移動を示す機能タイミング図である。
【図４】本発明の一つの実施形態による、ハイブリッド・システムに対するワークロード・キューの一例を示すブロック図である。
【図５】本発明の一つの実施形態による、高スループット・コンピューティングのためのハイブリッド・システム中のサーバの一つの構成を示すブロック図である。
【図６】本発明の一つの実施形態による、ハイブリッド・システムに高スループット・コンピューティングを設ける一例を示すオペレーショナル・フロー図である。
【図７】本発明の一つの実施形態のデータ・アクセス構成による、ハイブリッド・システムに高スループット・コンピューティングを設ける別の例を示すオペレーショナル・フロー図である。
【図８】本発明の一つの実施形態の別のデータ・アクセス構成による、ワークロードを再分配することによって、ハイブリッド・システムに高スループット・コンピューティングを設ける一例を示すオペレーショナル・フロー図である。
【図９】本発明の一つの実施形態の別のデータ・アクセス構成による、ＳＬＡに基づきワークロードを再分配することによって、ハイブリッド・システムに高スループット・コンピューティングを設ける一例を示すオペレーショナル・フロー図である。
【図１０】本発明の一つの実施形態による、ハイブリッド・システムにおけるワークロードのクラスタリングの一例を示すオペレーショナル・フロー図である。
【図１１】本発明の一つの実施形態による、ハイブリッド・システムにおけるワークロードの移動の一例を示すオペレーショナル・フロー図である。
【図１２】本発明の一つの実施形態による、あるシステム環境における、アクセラレータのワークロードを遂行するためのサーバ・システム構成の一例を示すオペレーショナル・フロー図である。
【図１３】本発明の一つの実施形態による、ある情報処理システムの詳細ビューを示すブロック図である。
【発明を実施するための形態】
【００１３】
本明細書で、必要に応じて本発明の詳細で好適な実施形態を開示するが、開示する実施形態は本発明の単なる例示であって、これらはさまざまな形態で具現できることを理解されたい。従って、本明細書で開示される具体的な構造上および機能上の詳細は、限定をするものと解釈されてはならず、これらは、単なる請求項のベースであり、当業者が、実際面で任意の適切に詳細化された構成で、本発明を多様に用いるための教示の典型となるベースである。さらに、本明細書で用いる用語および表現は限定することを意図されておらず、むしろ本発明の理解しやすい説明を提供するためのものである。
【００１４】
本明細書で使う用語「ある（ａまたはａｎ）」は、１つまたはそれ以上として定義される。本明細書で使う用語「複数（ｐｌｕｒａｌｉｔｙ）」は、２つまたはそれ以上として定義される。別途に明示されていない限り、複数形用語と単数形用語とは同じである。本明細書で使う用語「別の（ａｎｏｔｈｅｒ）」は、少なくとも第二またはそれ以上として定義される。本明細書で使う用語「含む（ｉｎｃｌｕｄｉｎｇ）」もしくは「有する（ｈａｖｉｎｇ）」またはその両方は、「包含する（ｃｏｍｐｒｉｓｉｎｇ）」として定義される（すなわち、オープン言語）。本明細書で使う用語「連結された（ｃｏｕｐｌｅｄ）」は、「接続された（ｃｏｎｎｅｃｔｅｄ）」として定義されるが、必ずしも直接にではなく、必ずしも機械的にでもない。本明細書で使う用語「プログラム（ｐｒｏｇｒａｍ）」、「ソフトウエア・アプリケーション（ｓｏｆｔｗａｒｅ  ａｐｐｌｉｃａｔｉｏｎ）」および類似の用語は、コンピュータ・システムで実行するために設計された一連の命令として定義される。プログラム、コンピュータ・プログラム、またはソフトウエア・アプリケーションは、サブルーチン、関数、プロシージャ、オブジェクト・メソッド、オブジェクト・インプリメンテーション、実行可能アプリケーション、アプレット、サーブレット、ソース・コード、オブジェクト・コード、共用ライブラリ／動的ロード・ライブラリ、もしくは、コンピュータ・システム上での実行のため設計された他の命令のシーケンス、またはこれらの組み合わせを含み得る。
【００１５】
動作環境
図１は、本発明の各種の好適な実施形態に適用可能な動作環境１００の一例を示す。この例の動作環境１００は、ハイブリッド・コンピューティング環境である。本明細書で使う用語としての「ハイブリッド・コンピューティング環境」は、それが、動作可能にコンピュータ・メモリに連結されたコンピュータ・プロセッサ群を含み、メモリに格納されてプロセッサ群に実行されるコンピュータ・プログラム命令の実行という形でデータ処理を実装している、という点でコンピューティング環境である。
【００１６】
さらに、図１の例のハイブリッド・コンピューティング環境１００は、アクセラレータ・アーキテクチャを有するアクセラレータと協働して動作するホスト／サーバ・アーキテクチャを含み、このサーバ・アーキテクチャとアクセラレータ・アーキテクチャとは相異なるアーキテクチャである。この例のホスト／サーバおよびアクセラレータのアーキテクチャは、各々のアーキテクチャ上で実行されるコンピュータ・プログラム命令によってアクセスが可能なレジスタである、例えば、命令レジスタ、プログラム・カウンタ、メモリ・インデックス・レジスタ、スタック・ポインタなどのレジスタなどの、アーキテクチャラル・レジスタによって特徴付けられる。すなわち、２つのアーキテクチャのアーキテクチャラル・レジスタ群の間で、数、種類、構造および関係が異なり、ハイブリッド・コンピューティング環境のホスト・コンピュータ上で実行するためコンパイルされたコンピュータ・プログラム命令は、通常、そのハイブリッド・コンピューティング環境のどの関連アクセラレータによってネイティブに実行できないほど異なっている。ハイブリッド・コンピューティング環境の例には、各々がＩＢＭ（ＩＢＭ社の登録商標）のＳｙｓｔｅｍ  ｚ（ＩＢＭ社の登録商標）プロセッサを有する、一つ以上のホスト・コンピュータと、アーキテクチャラル・レジスタにＩＢＭ（ＩＢＭ社の登録商標）ＰＯＷＥＲ（ＩＢＭ社の登録商標）命令セットを実装しているアクセラレータと、を包含するデータ処理システムが含まれる。ホスト・コンピュータ中のＩＢＭ（ＩＢＭ社の登録商標）Ｓｙｓｔｅｍ  ｚ（ＩＢＭ社の登録商標）プロセッサによる実行のためにコンパイルされたコンピュータ・プログラム命令は、アクセラレータ中のＩＢＭ（ＩＢＭ社の登録商標）ＰＯＷＥＲ（ＩＢＭ社の登録商標）プロセッサによってネイティブに実行することはできない。
【００１７】
具体的には、図１は、サーバ・システム１０２などのホスト・システムと、複数のアクセラレータ・システム１０４と、一つ以上のネットワーク１０８を介して通信可能に連結された一つ以上のユーザ・クライアント１０６とを示す。一つ以上のネットワーク１０８は、有線もしくは無線通信ネットワークまたはその両方の任意の種類とすることができる。例えば、ネットワーク１０８は、イントラネット、エクストラネット、またはインターネットなどの相互接続ネットワークあるいはこれらの組み合わせとすることができる。ネットワーク（群）１０８は、無線、有線、もしくは光ファイバ・リンクまたはこれらの組み合わせを含むことができる。本発明の一つの好適な実施形態において、サーバ・システム１０２は、以下に限らないが、ＩＢＭ（ＩＢＭ社の登録商標）Ｓｙｓｔｅｍ  ｚ（ＩＢＭ社の登録商標）サーバなど、任意の種類のサーバ・システムである。本発明の一つの好適な実施形態において、アクセラレータ・システム１０４は、以下に限らないが、ＩＢＭ（ＩＢＭ社の登録商標）Ｓｙｓｔｅｍ  ｐ（ＩＢＭ社の登録商標）またはＳｙｓｔｅｍ  ｘ（ＩＢＭ社の登録商標）サーバなどのブレード・サーバである。本発明の一つの好適な実施形態において、ユーザ・クライアント１０６は、以下に限らないが、ワークステーション、デスクトップ、ノートブック、無線通信デバイス、ゲーム・コンソールなど、ユーザが、サーバ・システム１０２もしくはアクセラレータ・システム１０４またはその両方とやり取りできる任意の情報処理システムである。ユーザ・クライアント１０６は、ユーザが、サーバ・システム１０２もしくはアクセラレータ・システム１０４またはその両方とやり取りできる一つ以上インターフェース１１０を含む。なお、前述のサーバ・システム１０２、アクセラレータ・システム１０４、およびユーザ・クライアント１０６は、例示目的だけのためのものであり、他の種類のシステムも同様に適用できる。ＩＢＭ、Ｓｙｓｔｅｍ  ｚ、ＰＯＷＥＲ、Ｓｙｓｔｅｍ  ｐ、およびＳｙｓｔｅｍ  ｘは、世界中の多くの裁判管轄地で登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。
【００１８】
サーバ・システム１０２およびアクセラレータ・システム１０４の組み合わせは、さまざまなシステムの種類のサーバ１０２とアクセラレータ１０４との異機種組み合わせなので、本明細書中では、これをハイブリッド環境１００内のハイブリッド・サーバ／システム１１２という。例えば、サーバ・システム１０２は、高速メモリ・バス（図示せず）を介してコンピュータ・メモリであるランダム・アクセス・メモリ（図示せず）に動作可能に連結された（各々が一つ以上のコアを備えた）一つ以上のプロセッサ１１４を含む。プロセッサ（群）１１４は、ホスト・コンピュータ・アーキテクチャを特徴づけるアーキテクチャラル・レジスタのセット（図示せず）を包含する。また、各アクセラレータ１０４は、アクセラレータ・アーキテクチャを特徴づけるアーキテクチャラル・レジスタのセット（図示せず）を包含する一つ以上のプロセッサ１１６を含む。なお、アクセラレータ・システム１０４の各々には、同一または異なる種類のプロセッサを含めることができる。
【００１９】
各アクセラレータの（各々が一つ以上のコアを備えた）プロセッサ１１６のアーキテクチャラル・レジスタは、サーバ・システム１０２中のプロセッサ１１４のアーキテクチャ・レジスタとは異なる。相異なるアーキテクチャを有するので、可能ではあるが、サーバ・システム１０２とアクセラレータ１０４とが同一の命令セットをサポートするのはまれであろう。しかる故、アクセラレータ１０４のプロセッサ１１６上で実行するためコンパイルされたコンピュータ・プログラム命令は、サーバ・システム１０２のプロセッサ１１４上でネイティブに実行すること、およびその逆を実行することは一般には期待されないであろう。さらに、サーバ・プロセッサとアクセラレータ・プロセッサとの間のハードウェア・アーキテクチャの特徴的相違の故に、サーバ・システム１０２のプロセッサ１１４上での実行のためにコンパイルされたコンピュータ・プログラム命令は、たとえ、アクセラレータがサーバの命令セットに対応していたとしても、アクセラレータ１０４のプロセッサ１１６上でネイティブに実行されることは一般には期待されないであろう。アクセラレータ・アーキテクチャは、コンピューティング機能の特定のクラスの実行の速度のために、サーバ・システム１０２に対して最適化される。すなわち、アクセラレータが最適化された対象の機能または機能群に対しては、それらの機能の実行は、アクセラレータ１０４上では、それらがサーバ・システム１０２のプロセッサ上で実行された場合よりも一般に速く進むことになる。
【００２０】
本発明の一つの好適な実施形態において、サーバ・システム１０２は、とりわけて、ワークロード・マネージャ１１８、一つ以上のプロセッサ１１４、およびデータベースまたはメモリ１２２内に格納された複数のサービス品質保証契約（ＳＬＡ）１２０を含む。なお、ＳＬＡは、サーバ・システム１０２に通信可能に連結された一つ以上の情報処理システム（図示せず）に格納しておくこともできる。本発明の一つの好適な実施形態において、ＳＬＡは、ワークロードが満たす必要のあるサービス品質のユーザによる規定である。ワークロード・マネージャは、品質レベルを交渉し、ワークロードがそれらのサービス品質レベルを満たすように調整する。スループット・コンピューティングＳＬＡ記録は、パフォーマンス−スループット、パフォーマンス−対応時間−バッチ・ウィンドウ、エネルギ、信頼性、および可用性に対する複数のサブ記録を持つことができる。ＳＬＡ記録の値は、データ入力の速度および量、または他の実行条件が変化するので、ワークロードの実行の間に動的に変化し得る。
【００２１】
ワークロード・マネージャ１１８は、ハイブリッド・サーバ１１２に対し、高スループット・コンピューティング（ＨＴＣ：ｈｉｇｈ−ｔｈｒｏｕｇｈｐｕｔ  ｃｏｍｐｕｔｉｎｇ）環境を提供するよう構成される。この高スループット・コンピューティング環境には、（ｉ）データ並列およびベクトル・エレメント、（ｉｉ）バッチ・ウィンドウ、および（ｉｉｉ）長期間での持続計算スループット（オペレーション数／秒）を含めることができる。本発明の一つの好適な実施形態において、ハイブリッド・サーバ１１２は、単一命令複数データ（ＳＩＭＤ：ｓｉｎｇｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ，  ｍｕｌｔｉｐｌｅ  ｄａｔａ）構造体を活用し、これは、同時に複数のデータ項目に演算を行い、データ並列処理を達成して、単一の命令が遂行する作業を増加させる。
【００２２】
ＳＩＭＤを含むハイブリッド・サーバ１１２内のプロセッサは、それらのＳＩＭＤユニット中でネイティブに、ある特定の長さのデータ並列計算を遂行することができる。ロング・ベクトルを使うデータ並列計算を必要とするワークロードに対し、ソフトウェアで多重プロセッサ・コアのＳＩＭＤユニットを「グループ化（ｇａｎｇｅｄ）」または「直列連結化（ｄａｉｓｙ−ｃｈａｉｎｅｄ）」をすることができ、プロセッサ・コアのネイティブなＳＩＭＤユニットによって可能なよりも、長いベクトルの演算が可能になる。複数のコアに亘ってサーバ・プロセッサの「余裕分（ｈｅａｄｒｏｏｍ）」が利用可能な場合、このグループ化構成を使う選択が行われる。これに換えて、ワークロードは、単一コア上のループでデータ並列計算を完了することもできる。
【００２３】
ワークロード・マネージャ１１８は、ＳＬＡマネージャ１２４と、ワークロード・アロケータ１２６と、クラスタ・スケジューラ１２８と、バッチ・ウィンドウ・マネージャ１３０と、動的ワークロード・リアロケータ１３２と、ワークロード移動マネージャ１３４と、ワークロード・キュー１３６と、を含む。ワークロード・マネージャ１１８およびこれらのコンポーネントの各々については、後記でさらなる詳細を説明する。アクセラレータ（群）１０４は、とりわけて、前述した一つ以上のプロセッサ１１６、および、アクセラレータ１０４で遂行予定のさまざまなワークロードを入れるための一つ以上のワークロード・キュー１３８を含み、該アクセラレータについても後記でさらなる詳細を説明する。
【００２４】
前述したように、ハイブリッド・システム１１２は異機種混在システムである。従って、本発明の一つの好適な実施形態において、ハイブリッド・コンピューティング環境１００は、以下に限らないが、ＯｐｅｎＣＬ（Ｏｐｅｎ  Ｃｏｍｐｕｔｅ  Ｌａｎｇｕａｇｅ（オープン計算言語））環境など、クロスプラットフォーム並列プログラミング環境を実装している。この種の環境は、中央処理装置（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、グラフィクス処理装置（ＧＰＵ：ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、およびアクセラレータなど、いくつかの異機種デバイスにまたがる並列プログラミングを可能にする。言い換えれば、クロスプラットフォーム並列プログラミング環境は、プログラムが異機種コンポーネントにまたがって実行されることを可能にする。この環境において、ワークロードは、複数の処理／アドレス・スペースを含む。各処理ではいくつかのタスクを実行でき、各タスクは特定の計算集約的な部分を、実行可能コードの基本的ユニットである計算カーネルにオフロードすることができる。計算カーネルは、プロセッサ・コアなど、一つの計算エレメントまたはいくつかの計算エレメント上で実行されてもよい。計算カーネルは、サーバ・システム１０２内に所在するプロセッサなどのＣＰＵに対するタスク並列化、もしくはアクセラレータ１０４内に所在するプロセッサなどのＣＰＵに対するデータ並列化とすることができる。ハイブリッド・システム１１２は、計算カーネルがＣまたはＣ＋＋のような言語で記述され、ネイティブな命令セットにコンパイルされている場合、ハイブリッド・システム１１２内の相異なるアーキテクチャの各々に対し別々の計算カーネルを維持する。計算カーネルが、Ｊａｖａ（Ｒ）またはＯｐｅｎＣＬのような言語で記述されている場合、Ｊａｖａ（Ｒ）およびＯｐｅｎＣＬは、異なるアーキテクチャに亘って計算カーネルを可搬的に実行するためにサポートを提供しているので、一つのカーネルを維持する必要があるだけである。ワークロードは、サーバ１０２およびアクセラレータ１０４それぞれのワークロード・キュー１３６、１３８に入れられる。ＪａｖａはＯｒａｃｌｅもしくはその関係会社またはこれら両方の登録商標である。他の名称も、米国、他の国、またはその両方の、それらそれぞれの所有権者の商標であり得る。
【００２５】
ワークロード・マネージャ１１８は、これらの計算カーネルをアクセラレータ１０４に送信する。これに換えて、これらのカーネル機能を呼び出す処理が開始された場合、サーバ上のＯｐｅｎＣＬランタイム処理が、これらのカーネルをアクセラレータに送信することもできる。また、アクセラレータは、ＯｐｅｎＣＬカーネルを、自身らのローカル第三ストレージに格納しておく選択をすることもできる。これらのカーネルは、呼び出しを行う処理がサーバで実行されたときに起動することができる。このとき、これらの計算カーネルはアクセラレータ１０４上で開始される。サーバは、データをこれらの計算カーネルに渡し、カーネルはデータに基づき結果を計算する。次いで、これらの結果は、アクセラレータ１０４からサーバ・システム１０２に渡される。なお、以下の説明において、このクロスプラットフォーム並列プログラミング環境に関連させて本発明の各種の好適な実施形態を詳解することがあるとしても、本発明の一つ以上の好適な実施形態は、同様に、非クロスプラットフォーム並列プログラミング環境にも適用が可能である。
【００２６】
前述したように、在来のハイブリッド・コンピューティング環境は、一般に、ハイブリッド・コンピューティング・システム全体に亘る、高スループット・コンピューティングへの要求事項の統一的な仕様およびマネジメントを提供していない。例えば、ハイブリッド・コンピューティング環境内に実装された多くのサーバ・システムは、長期間に亘るデータ並列オペレーションを遂行するように構成されていない。また、在来のハイブリッド・コンピューティング環境は、通常、サーバ・システム上ではオンライン・トランザクション処理ワークロードなど計算集約度の低いワークロードをスケジュールし、アクセラレータ（群）上では計算集約度のより高いワークロードをスケジュールする。しかしながら、後でさらに詳しく説明するように、本発明の各種の好適な実施形態は、パフォーマンス／エネルギ・トレードオフに基づいて、スループット・コンピューティングＳＬＡ、サーバ１０２とアクセラレータ１０４との間での代理実行、ネットワーク・リンクにまたがって相互リンクされたキュー、および前述に組み合わせたデータ／ワークロード・スティーリング、をサポートすることによって、これらの問題を克服する。また、本発明の各種の好適な実施形態は、計算集約的ワークロード・コンポーネントを、アクセラレータ（群）とともにサーバ・システム上に配置することによって、スループットを最大化し、（サーバ・システムのＭＩＰＳ／ＷａｔｔまたはＦｌｏｐｓ／Ｗａｔｔが同程度のアクセラレータ・システムよりも小さい場合）エネルギ・フットプリントを最小化する。
【００２７】
ハイブリッド・コンピューティング環境における高スループット・コンピューティング
本発明の一つの好適な実施形態において、ワークロード・マネージャ１１８は、ＳＬＡ１２０およびワークロード管理をサポートすることによって、ハイブリッド・システム１１２に対するスループット・コンピューティング環境を提供する。ワークロード・マネージャ１１８は、データ並列オペレーション（例、ベクトル・オペレーション数／秒）、伸縮バッチ・ウィンドウ（ｅｌａｓｔｉｃ  ｂａｔｃｈ  ｗｉｎｄｏｗ）に対するＳＬＡサポート、サーバ・システムおよびアクセラレータ双方のプロセッサへのサポート、ワークロード・クラスタ・スケジューリング、並びに、入力／出力、メモリ、およびプロセッサ・コンポーネントに対するリソース保証を提供する。ワークロード・マネージャ１１８は、ＳＬＡ１２０の要求事項を満たすために、ワークロード・アロケータ１２６を介して、サーバ・システムおよびアクセラレータ両方のリソースに亘ってワークロードを管理／割り当てすることができる。
【００２８】
例えば、ＳＬＡマネージャ１２４は、ストレージ領域１２２からＳＬＡ１２０を読み出し、ＳＬＡ１２０が、２日の期間に亘って秒あたり１０，０００オペレーションを要求していることを確認する。この例において、アクセラレータ１０４のカーネル群は、総計で秒あたり５，０００オペレーションだけを遂行することができ、これではＳＬＡ１２０を満たさないことになる。そこで、ワークロード・マネージャ１１８は、秒あたり１０，０００オペレーションのＳＬＡ１２０が達成できるように、このアクセラレータ・ワークロードの一部２０２、２０４（例、タスク）をアクセラレータ・プロセッサ１１６上の一つ以上の計算カーネル２０６、２０８となし、ワークロードの残りの部分２１０、２１２をサーバ・システム・プロセッサ１１４上の一つ以上の計算カーネル２１４、２１６となすスケジュールをする。サーバ・システム１０２のプロセッサ１１４は、それらが、アクセラレータのプロセッサ１１６を補って、アクセラレータのワークロードのデータ並列コンピューティングを遂行しているプロセッサなので、「代理プロセッサ」ということができる。アクセラレータのリソースを補うためのサーバ・システムのリソースの使用は、「代理実行」ということができる。図２から分かるように、ワークロード・マネージャ１１８は、ＳＬＡ要求事項を達成するために、サーバ・システム１０４上のリソースを利用してアクセラレータのリソースを補うことができる。
【００２９】
また、ワークロード・マネージャ１１８は、リソース保証も提供する。例えば、ＳＬＡ１２０が秒あたり１０，０００オペレーションを要求する場合、ワークロード・マネージャ１１８は、ハイブリッド・システム１１２がその持続速度を備えていることを確実にする。しかしながら、このＳＬＡ１２０が、（例えば）追加の入来データのため、秒あたり１０，０００オペレーションから秒あたり１５，０００オペレーションに変更されることがあり得る。従って、この例では、ワークロード・マネージャ１１８は、追加されたアクセラレータのワークロードが実行できるよう、秒あたり１５，０００のオペレーションを維持するために、サーバ・システム１０２、アクセラレータ１０４またはこれらの双方に追加のカーネル２０６、２０８、２１４、２１６を動的に割り当てる。言い換えれば、ワークロード・マネージャ１１８は、スループット・コンピューティング速度に変更が生じた場合、ワークロード・マネージャ１１８が、そのスループット・コンピューティング速度を提供するため追加のリソースを割り当てるようにして、リソース保証を提供する。さらに、ワークロード・マネージャは、ハードウェアおよびソフトウェアのカウンタを使って、実効計算スループット速度、入力／出力データ速度、およびメモリ帯域幅を測定するエージェントをアクセラレータ上で実行することができる。
【００３０】
前述したように、ハイブリッド・システム１１２は、データ並列オペレーションを遂行する。すなわち、データは、ハイブリッド・システム１１２内の複数のプロセッサまたはコンピューティング・ノードに亘って分配することができる。いくつかの例において、これらのデータ並列オペレーションが、他のオペレーションからのデータを必要とすることがある。例えば、第一ワークロード・グループは、ベクトルの乗算を行っており、第二グループはベクトルの減算を行っていて第一グループの結果を必要とするといったことがあり得よう。従って、ワークロード・マネージャ１１８は、ワークロード・クラスタ・スケジューラ１２８を介し、従属関係のあるワークロード・グループを識別し、これら従属関係グループを一緒にクラスタ内に置き、これらがサーバ・システム・プロセッサ１１４およびアクセラレータ・プロセッサ１１６のセット上で同時にスケジュールできるようにする。言い換えれば、複数のワークロード・グループが単一のクラスタ内にあり、これらは、ワークロードとワークロード・グループの間の従属関係を有する同類のデータ並列ワークロードのセットである（例えば、これらは同類のデータ並列オペレーションを遂行する）。例えば、図２に示されるワークロード２０２、２０４、２１０、２１２は、全てあるワークロード・クラスタ内にあり得る。従って、第一サイクルからの第一ワークロード・グループの結果は、第二サイクルの開始に先立って、同じクラスタ中の第二ワークロード・グループに渡すことが可能である。なお、クラスタ内のワークロードは、混在させることができ、類似である必要はないが、一回で同時にスケジュールされる。ワークロード・マネージャ１１８は、このとき、クラスタ・スケジューラ１２８を介して、クラスタ内のワークロード群を、それらが従属関係を有する場合時間的に整列させ、ワークロード・クラスタ群も、それらが相互に従属関係を有する場合は時間的に整列させる。
【００３１】
さらに、ワークロード・マネージャ１１８は、バッチ・ウィンドウ・マネージャ１３０を介し、伸縮バッチ・ウィンドウをサポートする。バッチ・ウィンドウは、何時バッチ処理ワークロードが完了すればよいかを指定する時間ウィンドウである。これはＳＬＡ（サービス品質保証契約）の属性である。ワークロード・マネージャは、ワークロードがバッチ・ウィンドウ内で完了できるように、バッチ・ウィンドウ仕様を使って、リソースを割り当てる。ワークロード実行の過程において、あるワークロードを、初回のバッチ締め切り期限仕様の前または後に完了することが必要になることがある。かかるバッチ・ウィンドウ仕様を伸縮バッチ・ウィンドウと呼ぶ。バッチ・ウィンドウは、ビジネス・プロセス要件またはデータ処理要求事項に基づいて、実行の過程で時間とともに短縮したり伸張したりすることができる。ワークロード・マネージャ１１８は、バッチ・ウィンドウ・マネージャ１３０を介して、例えば、短縮されたバッチ・ウィンドウに対応するため、ワークロード・クラスタにより多くのリソースを割り当てる。この処理には、実行中に追加アクセラレータを追加または削減すること、もしくは実行中のサーバ・システムの代理プロセッサを追加／削減すること、またはこれらの両方を含めることができる。各追加アクセラレータは、契約されたバッチ時間ウィンドウを満たすことを可能にする、計算カーネルを実行することができる。バッチ・ウィンドウ仕様が緩和された場合、ワークロード・マネージャ１１８は、アクセラレータおよび関連するカーネルを除去し、それらが他のワークロードによって再使用できるようにすることができる。ワークロードは、アクセラレータ・リソースの最適化されたセットを使って、緩和されたバッチ・ウィンドウ内で完了することができる。
【００３２】
ハイブリッド・システム１１２全体に亘ってワークロード（群）がスケジュールされたならば、ワークロード・マネージャ１１８は、ワークロード移動マネージャ１３４を介して、サーバ・システム１０２とアクセラレータ１０４との間で異機種間移動ができるようにする。言い換えれば、ワークロードは、（第一アーキテクチャを実装している）アクセラレータ・プロセッサ１１６から、サーバ・システム１０２上の（第一アーキテクチャとは異なる第二アーキテクチャを実装している）代理プロセッサ１１４に移動することができる。例えば、図３は、Ｔ１によって、複数のワークロード３０２、３０４がアクセラレータのプロセッサ１１６に割り当てられていることを示している。ワークロード・マネージャ１１８は、一つ以上のワークロード３０４をサーバ・システム１０２に移行させる必要があると判定する。例えば、ワークロード３０４が、サーバ・システム１０２から特定のデータを必要としているが、ＳＬＡ１２０は、そのデータがセキュリティ上の理由でサーバ・システム１０２から外に移動することができないことを示していることがある。こういった場合、ワークロード・マネージャ１１８は、Ｔ２によって、ワークロード３０４を、アクセラレータ１０４からサーバ・システム１０２の計算コア（またはアクセラレータ）３１０に移動させ、ワークロード３０４は、サーバ・システム１０２中の必要なデータを使ってそのオペレーションを遂行できる。
【００３３】
異機種間移動はさまざまな仕方で実施することができる。例えば、第一方法は、移動割り込みが受信されたとき、アーキテクチャ依存性のないチェックポイント状態を実行することである。移動されるワークロードのコードが制御フローを含む場合には、このコード中の変数の全てが、割り込み状態に対応する一切のソース・コード・ライン番号とともに保存される。次いで、これらは、該ワークロードが移動されたとき新しいプロセッサ上に再ロードされる。該コードがデータフローを含む場合、ワークロードからのデータは、ワークロードの移動元のサーバ／アクセラレータから、ワークロードの移動先のサーバ／アクセラレータに渡すことができる。この第一方法では、実行ファイルの２つのコピーが、異なるアーキテクチャの各々に所在する。
【００３４】
第二方法では、実行ファイルは、移動元のプロセッサ上で停止させ、移動先のプロセッサ上で再開させることができる。例えば、（サーバ・システム１０２もしくはアクセラレータ１０４の）移動元プロセッサのリカバリ・ユニット（図示せず）が使われ、この移動元プロセッサの実行状態が保存される。Ｓｙｓｔｅｍ  ｚ（ＩＢＭ社の登録商標）およびＳｙｓｔｅｍ  ｐ（ＩＢＭ社の登録商標）プロセッサ中のリカバリ・ユニットまたはＲ−ユニットは、該プロセッサの全アーキテクチャ状態を格納する。マッピング・テーブルは、レジスタ状態を、中間表現（ＩＲ：Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）の構造体および記号とソース・コード・レベルの構造体および記号と、に関連付ける。ワークロードが他のプロセッサに移動されたとき、リカバリ・ユニットの実行状態を、マッピング・テーブルを使って復号し、新しいプロセッサにロードすることができる。本発明のこれら好適な実施形態は、ワークロードが、相異なるアーキテクチャの物理マシンをまたいで移動することを可能にする。ワークロード・マネージャ１１８は、ワークロードを、データ交換が最も効率的な場所、安全な場所、もしくはデータが利用可能な場所、またはそのこれらを兼ねる場所に移動する。
【００３５】
ワークロードをアクセラレータ１０４からサーバ・システム１０２に、またはその逆方向に移動させる決定は、ＳＬＡ１２０に示されたパフォーマンスまたはエネルギ要求事項、あるいは自然な相互作用の親和性（ｎａｔｕｒａｌ  ｉｎｔｅｒａｃｔｉｏｎ  ａｆｆｉｎｉｔｙ）（すなわち、データ交換の効率および安全性）に基づいて行うことができる。また、移動は、実行されるワークロードの種類に応じたものとすることもできる。例えば、ワークロードの一つの種類は、（例えば、固定／拡張タスク、データ並列オペレーションに重点を置いた入力データの変数割り当てなどの）スループット・コンピューティング・バッチ・ワークロードであり、ワークロードの別の種類は、長期走行の（ほとんどがスカラー・オペレーションの）計算ワークロードである。
【００３６】
スループット・コンピューティング・バッチ・ワークロードに関しては、これらのワークロードは、サーバ・システム・プロセッサ１１４、アクセラレータ・プロセッサ１１６、またはその両方に割り当てることができる。移動マネージャ１３４は、ワークロードに対するパフォーマンス指標もしくはエネルギ指標またはその両方をモニタし、これらの指標がそれぞれの所与の閾値を上回っているか下回っているかを判定する。ワークロード移動マネージャ１３４が、所与の閾値が満たされていない、または逆に閾値を超えていると判定した場合、移動マネージャ１３４は、ワークロードの少なくとも一部をその現行のシステム（サーバ１０２またはアクセラレータ１０４）から別のシステム（サーバ１０２またはアクセラレータ１０４）に移動する。これにより、ハイブリッド・システム１１２が、対応するＳＬＡ１２０に示されたパフォーマンス指標レベルもしくはエネルギ指標レベルまたはその両方を達成することが可能になる。なお、スループット・コンピューティング・バッチ・ワークロードは、バッチ時間ウィンドウ、およびエネルギ・ウィンドウ仕様を使って初期化することができる。バッチ時間ウィンドウ仕様には、スループット・コンピューティング・ワークロードが、例えば４時間以内に完了しなければならないと規定することができる。エネルギ・ウィンドウ仕様には、あるワークロードが４００ワット時のエネルギより多くを消費してはならないと規定することができる。ワークロード・マネージャ１１８は、バッチ時間ウィンドウ仕様およびエネルギ・ウィンドウ仕様の両方を考慮に入れて、ワークロードを実行する。あるワークロードを、あるアクセラレータ上で実行すれば、例えば２時間の契約実行時間が成就可能だが、エネルギ消費が３００ワット時となるなどといったことがあるかもしれない。ワークロード・マネージャ１１８は、エネルギ・ウィンドウの妥当な達成を得ながらバッチ・ウィンドウを満たせると評定した場合、ワークロードを、サーバ（サーバがエネルギ効率が良いと仮定して）に移動する決定を行うことができる。また、ＳＬＡには、バッチ・ウィンドウとエネルギ・ウィンドウとの間での優先度のためのフィールドを含めることができる。また、前述のようなワークロードに対しては、タスクの完了の後にだけ移動が遂行され、状態は保存されない。
【００３７】
長期走行計算を伴うワークロードに関しては、これらのワークロードは、初期の開始データを含むことができ、ワークロードの移動は、例えばクロスオーバ・ポイントなどの実行条件が満たされない限り実行されない。これらのワークロードを、バッチ時間ウィンドウまたはエネルギ・ウィンドウに対して初期化し、これらのウィンドウが限度に達したときだけにこれらのワークロードが移動されるようにすることができる。しかしながら、ワークロードを移動するのに先立って、それにチェックポイント設定を行う必要があり得る。このワークロードの種類は、移動に進むことができる、わずかなチェックポイント位置だけをサポートしている。
【００３８】
前述したように、在来のハイブリッド・コンピューティング環境の計算集約的なワークロードは、一般にアクセラレータ上だけにスケジュールされ、サーバ・システム上にはスケジュールされない。しかしながら、本発明の各種の好適な実施形態のハイブリッド・システム１１２は、サーバ・システムのプロセッサ１１４が、多くのインスタンスにおいてアクセラレータのプロセッサ１１６を補う処理容量を有する事実を利用する。例えば、サーバ・システム・プロセッサ１１４には、追加のリソース、または事前に購入したが現在使われていないＭＩＰＳ（ｍｉｌｌｉｏｎ  ｉｎｓｔｒｕｃｔｉｏｎｓ  ｐｅｒ  ｓｅｃｏｎｄ（秒あたり百万単位の命令処理数））である、割り当てられた「ドーマントな」ＭＩＰＳの形でのコンピューティング・オペレーション；未使用の浮動小数点オペレーション処理容量；あるいは、あるプロセッサがＩＯに対する完了を「ブロック」されたときのための未使用のプロセッサ処理容量を含めることができる。これによって、ワークロード・マネージャ１１８は、このサーバ・システムの「余裕分」を利用して、代理遂行として、データ並列アクセラレータ・ワークロードを実行することができる。言い換えれば、ワークロード・マネージャ１１８は、動的ワークロード・リロケータ１３２を介して、前にスケジュールしたアクセラレータ１０４上のワークロードをサーバ・システム１０２に再割り当てする。サーバ・システム・プロセッサ１１４は、代理プロセッサの役割を果たし、これら再配置されたワークロードを、アクセラレータ・プロセッサ１１６上に残っているワークロードと並行して実行する。すなわち、アクセラレータのカーネルまたはワークロードを実行するため、サーバ・プロセッサの未使用の処理容量を使うことができる。
【００３９】
さらに、サーバ・システム１０２とアクセラレータ１０４とは、相互にワークロードを「スティール（ｓｔｅａｌ）」することができる。例えば、サーバ・システム１０２およびアクセラレータ１０４のワークロード・キュー１３６、１３８の各々は相互リンクされている。すなわち、サーバ・システム１０２はアクセラレータ１０４のワークロード・キュー１３８にアクセスでき、アクセラレータ１０４はサーバ・システム１０２のワークロード・キュー１３６にアクセスできる。サーバ・システム１０２とアクセラレータ１０４とは相手方システムに割り当てられたワークロードを取り上げる。というのは、これらの待ちキュー１３６、１３８は、サーバ・システム１０２とアクセラレータ１０４との間で共用されている一つのメモリ領域に所在するからである。このメモリ領域は、各々のワークロード・キューに対し、サーバ・システム１０２とアクセラレータ１０４とに所在する。
【００４０】
図４に示されるように、これらの待ちキュー１３６、１３８は、「実行中」行列４０４、４０６と「実行直前」行列４０８、４１０とを含むことができる。「実行中」行列は、それぞれのシステム１０２、１０４において、どのワークロードが現在実行中であるかを示す。「実行直前」行列４０８、４１０は、どのワークロードが、現在実行されてはいないが実行を待機しているかを示す。サーバ・システム１０２上のプロセッサ１１４が、その割り当てワークロードを終了してしまい、アクセラレータのワークロード・キュー１３８に、実行を待つワークロードがあると判定したとき、サーバ・システム１０２は、動的ワークロード・リアロケータ１３２を介して、アクセラレータのワークロード・キュー１３８から作業を取り上げ、そのワークロードをサーバ・システム１０２上で実行することができる。また、アクセラレータ１０４も同様なオペレーションを遂行することができ、ワークロード・マネージャ１１８が、サーバ・システム・ワークロード・キュー１３６からワークロードを取り上げ、それをアクセラレータ１０４に動的に再割り当てする。さらに、サーバ・システムのワークロード・キュー１３６中のワークロードがアクセラレータのワークロードであり、それらのワークロードが効率的に実行されていない場合、アクセラレータ１０４はそれらのワークロードを取り戻すことができる。タスクを取り上げられた方のシステム１０２、１０４は、そのパフォーマンス／エネルギ指標が所与の閾値を上回ったならば、これらのタスクを取り戻すことができる。
【００４１】
本発明の別の好適な実施形態において、ワークロード・マネージャ１１８は、動的ワークロード・リアロケータ１３２を介し、締め切り期限／パフォーマンスおよびエネルギ要求事項に基づいて、ワークロードを再分配することができる。例えば、ＳＬＡ１２０は、タスクの締め切り期限要求事項、パフォーマンス要求事項、およびエネルギ要求事項を含み得る。動的ワークロード・リアロケータ１３２は、サーバ・システム１０２およびアクセラレータ１０４中の現在のワークロードをモニタし、これらの要求事項が満たせるかどうかを判定することができる。動的ワークロード・リアロケータ１３２が、所与のワークロードに対し、これらの要求事項が満たされないであろうと判定した場合、動的ワークロード・リアロケータ１３２は、ＳＬＡ要求事項が達成できるように、該所与のワークロードを他方のシステム（すなわち、サーバ・システム１０２もしくはアクセラレータ１０４）に動的に移行させる。すなわち、ワークロードは、ワークロードのＳＬＡを満たすため動的に再分配される。ＳＬＡ中のいかなる変更も、ハイブリッド・システム１１２全体に亘るワークロードの動的分配をトリガする。
【００４２】
また、ワークロード・マネージャ１１８は、前述したワークロード「スティーリング」の態様と再分配の態様とを組み合わせることもできる。例えば、ワークロードがデータ並列なので、サーバ・システム１０２またはアクセラレータ１０４は、ワークロードまたはワークロードに関連付けられたデータの一部だけを「スティール」することが可能である。類似の機能を実行するカーネルをホストまたはアクセラレータ上で実行することができる。サーバまたはアクセラレータは、サーバまたはアクセラレータの実行直前行列から、カーネル全体の代わりに、インプット・データ（問題インプット・データとしても知られる）を「スティール」することもできる。インプット問題データを「スティーリング」するサーバまたはアクセラレータが同じ機能のコピーを実行しているので、これが可能となる。また、サーバまたはアクセラレータは、現在実行されているカーネルからデータ部分をスティールすることもできる。これを可能にするために、カーネルは（実行中行列エントリ中の）アシスト・フラッグ・フィールドを＜ｙｅｓ＞に設定し、（開始アドレス、終了アドレス）タプルの収集として、データの位置を提示する。データ部分をスティーリングするカーネルは、スティーリングされたカーネルが必要とするかもしれない一切の同期化アクティビティに参加できるように、その識別子および位置を提示することができる。システムがその全ワークロードを取り扱えないことがあるので、これには利点がある。ただし、サーバ・システム１０２またはアクセラレータ１０４は、依然としてＳＬＡ１２０の要求事項を順守する必要がある。例えば、サーバ・システム１０２もしくはアクセラレータ１０４またはその両方がある特定のエネルギ要求事項を満すことを要求するＳＬＡを考えてみる。サーバ・システム１０２およびアクセラレータ１０４は、ワークロードまたはワークロードの一部を「スティール」するための余裕分を有し得るが、サーバ・システム１０２またはアクセラレータ１０４がＳＬＡのエネルギ要求事項を満たせない場合は、ワークロード・マネージャ１１８は、サーバ・システム１０２およびアクセラレータ１０４がそのワークロードを取るのを阻む。従って、パフォーマンス指標もしくはエネルギ指標またはその両方に基づいた「スティーリング」閾値を使って、ワークロード・スティーリングを許可または不許可とすることができる。以上のように、ＳＬＡ１２０によって指示された締め切り期限およびエネルギ目標を満たすために「スティーリング」を使うことができる。スループット・コンピューティングＳＬＡを維持するために、ワークロードまたはワークロードの部分、もしくは対応するデータ、またはこれらの両方がスティールされる。ネットワーク１０８を介してワークロードのタスクをスティールするコストが、スループット・コンピューティングＳＬＡのパフォーマンス属性を低減させることになる場合は、ワークロード・マネージャ１１８は、そのタスクがスティールされるのを阻むことができる。
【００４３】
図５は、サーバ・システム１０２とアクセラレータ１０４との間での割り当てワークロードの再分配に対する、ハイブリッド・システム１１２の一つの構成を示す。具体的には、図５は、クロスプラットフォーム並列プログラミングＯｐｅｎＣＬ呼び出しアドレス・スペースを含むサーバ・システムのプロセッサ５０２、５０４、５０６と、サーバ・システムのプロセッサ５０８、５１０、５１２とを示している。サーバ・システム・プロセッサ５０８、５１０、５１２の各々は、一つ以上の計算カーネル５１４、５１６、５１８を含む。アクセラレータ１０４の各々は、コンピュータ・カーネル５２０、５２２、５２４など、一つ以上のＯｐｅｎＣＬデバイスを含み、これらデバイスの各々は、一つ以上の計算カーネルを実行することができる。疑似ＯｐｅｎＣＬデバイスが、サーバ・プロセッサ上で直接実行されるのに対し、アクセラレータは相互接続を使って接続される。疑似ＯｐｅｎＣＬデバイスは、呼び出しアドレス・スペースとともに同一場所に配置された５０２、５０４、および５０６上で、直接に実行することができる。サーバは、疑似ＯｐｅｎＣＬデバイスをインスタンス化し、アクセラレータ・デバイス上で実行されるカーネルとともにカーネルを実行することができる。これは、より高いスループットを達成することを可能にする。サーバは、パフォーマンスおよびエネルギＳＬＡの属性に基づいて、疑似ＯｐｅｎＣＬデバイスとアクセラレータのＯｐｅｎＣＬデバイスとのミックス（混和構成）を決めることができる。サーバのエネルギ効率がアクセラレータより高い場合、ワークロード・マネージャは、エネルギ目標を満たすために、サーバ上でより多くの疑似ＯｐｅｎＣＬデバイスをインスタンス化することができる。厳格なパフォーマンスＳＬＡが、疑似ＯｐｅｎＣＬカーネルを一切使うことなく、アクセラレータ上で直接にカーネルを実行することを要求することがあり得る。また、ワークロード・マネージャは、「ヘッドルーム（ｈｅａｄｒｏｏｍ）（余裕分）」（ＭＩＰＳまたはＦＬＯＰＳでの用語）が利用できる場合においてだけ、疑似ＯｐｅｎＣＬデバイス上の疑似ＯｐｅｎＣＬカーネルを開始する選択をすることもできる。
【００４４】
疑似デバイス５０８、５１０、５１２は、クロスプラットフォーム並列プログラミング・コーラー・スタック５１５と同時に実行され、それら自体を、正常なデバイスだがサーバ・システム１０２で実行されているとして、コーラー・スタック５１５に提示する。コーラー・スタック５１５は、各デバイス５１４、５１６、５１８、５２０、５２２、５２４に対する待ちキュー１３６、１３８を維持する。コーラー・スタック５１５は、前述したように、ワークロード管理トリガ（例えば、パフォーマンス指標、エネルギ指標など）からのインプットに基づいて、疑似デバイス５０８、５１０、５１２および正規デバイス５０２、５０４、５０６の間でインプット・データを再分配することができる。例えば、ワークロードを遂行するために、アクセラレータ１０４に対して行われたＯｐｅｎＣＬ呼び出し５１７は、サーバ・システム１０２の疑似クロスプラットフォーム並列プログラミング・デバイス５１４、５１６、５１８によって満たすことができる。同様に、異機種タスクが、疑似デバイス５１４、５１６、５１８およびアクセラレータのクロスプラットフォーム並列プログラミング・デバイス５０２、５１６、５１８にまたがって実行されている場合、前述したように、ワークロード管理トリガに基づいて、タスクおよびデータ項目を再分配することができる。カーネル・スケジューラ５１９は、カーネル呼び出しを満たすため、サーバ・システム１０２またはアクセラレータに、物理アクセラレータ計算リソース（プロセッサ５０２、５０４、５０６）または疑似アクセラレータ計算リソース（例えば、プロセッサ／カーネル５０８／５１４、５１０／５１６、５１２／５１８）をスケジュールする。
【００４５】
さらに、このハイブリッド・システム１１２の構成は、より容易でより効率的な、ハイブリッド・システムの検査およびデバッグを可能にする。例えば、ハイブリッド・システム１１２は、ローカル（すなわちサーバ・システム１０２上）および遠隔（すなわちアクセラレータ１０４上）のクロスプラットフォーム並列プログラミングＯｐｅｎＣＬデバイス（すなわち、計算カーネル）を含む。このシステムの検査は、関与するネットワーク・エレメント１０８に起因して、面倒となり得る。しかしながら、図５に示された構成はそういった問題を克服する。遠隔アクセラレータＯｐｅｎＣＬデバイスは、疑似ＯｐｅｎＣＬデバイスとしてサーバ上で直接に実行される。これはパフォーマンスの低下をもたらす可能性はあるが、全てのＯｐｅｎＣＬデバイスを、サーバの統一された共用メモリ・イメージの中で実行することができる。遠隔アクセラレータへのネットワーク利用トランザクションは、サーバの統一された共用メモリ構造体中の共用メモリ・オペレーションとして実行される。検査およびデバッギングは、ネットワーク利用の側面を取り除き、あらゆるものをサーバ・システム１０２内でローカルに実行することによって、より簡潔でより効率的に行われる。
【００４６】
当業者ならよく理解するであろうように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現することができる。従って、本発明の態様は、全体が本発明のハードウェアの好適な実施形態、全体が本発明のソフトウェアの好適な実施形態（ファームウエア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、一般に本明細書では全て「回路」、「モジュール」、または「システム」といわれる、ソフトウェアおよびハードウェア態様を組み合わせた本発明の好適な実施形態の形を取ることができる。さらに、本発明の態様は、内部に具体化されたコンピュータ可読プログラム・コードを有する一つ以上のコンピュータ可読媒体（群）中に具現されたコンピュータ・プログラム製品の形を取ることもできる。
【００４７】
一つ以上のコンピュータ可読媒体（群）の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体、またはコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的な、または半導体の、システム、装置、もしくはデバイス、あるいはこれらの任意の適切な組み合わせとすることができる。コンピュータ可読記憶媒体のさらに具体的な例（非包括的リスト）には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）またはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光記憶デバイス、磁気記憶デバイス、またはこれらの任意の適切な組み合わせが含まれよう。本文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによってまたはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体とすることができる。
【００４８】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現されたコンピュータ可読のプログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、さまざまな形態の任意の形を取ることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではないが、命令実行システム、装置、またはデバイスによってまたはこれらに関連させて使用するためのプログラムを通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であり得る。
【００４９】
コンピュータ可読媒体中に具現されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、ＲＦなど、またはこれらの任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
【００５０】
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合せで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで全体的に、ユーザのコンピュータで部分的に実行することができ、ユーザのコンピュータで部分的に、遠隔コンピュータで部分的に、または遠隔のコンピュータまたはサーバで全体的に実行することができる。後者のシナリオでは、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）または広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することができ、あるいは（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うことができる。
【００５１】
本発明の好適な実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の各種の好適な実施形態の態様を以下に説明する。フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合せは、コンピュータ・プログラム命令によって実行可能であることが理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに供給し、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群／処理群を実施するための手段を生成するようにすることができる。
【００５２】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令できるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能／処理を実施する命令群を包含する製造品を形成するようにすることができる。
【００５３】
同様に、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、これらコンピュータ、他のプログラム可能装置、またはコンピュータ実行のプロセスを生成する他のデバイス上で一連のオペレーション・ステップを実行させて、これらコンピュータまたは他のプログラム可能装置で実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群／処理群を実施するためのプロセスを提供するようにすることもできる。
【００５４】
オペレーション・フロー図
ここで図６〜図１２を参照すると、これらの図中のフローチャートおよびブロック図は、本発明の各種の好適な実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、およびオペレーションを例示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、所定の論理機能（群）を実行するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図に記載された順序を外れて行われることがあり得ることに留意すべきである。例えば、連続して示された２つのブロックが、実際にはほぼ同時に実行されることがあり、関与する機能によっては、時には、これらブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロックの組み合わせは、特定の機能または処理を実施する、専用ハードウェア・ベースのシステム、または専用ハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。
【００５５】
図６は、前述した、ハイブリッド・コンピューティング環境に高スループット・コンピューティングを設ける一例を示すオペレーショナル・フロー図である。図６のオペレーショナル・フローは、ステップ６０２で開始され、そのままステップ６０４に進む。ステップ６０４で、ワークロード・マネージャ１１８は、ハイブリッド・システム１１２に関連付けられた、高スループット・コンピューティングＳＬＡ１２０のセットを分析する。ステップ６０６で、ワークロード・マネージャ１１８は、以下に限らないが、計算カーネルなどのリソースの第一セットをモニタする。ステップ６０８で、ワークロード・マネージャ１１８は、以下に限らないが、計算カーネルなどのリソースの第二セットをモニタする。ステップ６１０で、ワークロード・マネージャ１１８は、モニタに基づいて、リソースの第一セット中の少なくとも一つのリソースとリソースの第二セット中の少なくとも一つのリソースに亘る並列ワークロード・タスクのセットを動的にスケジュールし、これにより、高スループットＳＬＡ１２０のセットをほぼ満たす。次いでステップ６１２でこの制御フローは終了する。
【００５６】
図７は、前述した、ハイブリッド・コンピューティング環境に高スループット・コンピューティングを設ける別の例を示すオペレーショナル・フロー図である。図７のオペレーショナル・フローは、ステップ７０２で開始され、そのままステップ７０４に進む。ステップ７０４で、ワークロード・マネージャ１１８は、ハイブリッド・システム１１２に関連付けられた、高スループット・コンピューティングＳＬＡ１２０のセットを読み出す。ステップ７０６で、ワークロード・マネージャ１１８は、サーバ・システム１０２上にスケジュールされた、データ並列ワークロード・タスクの第一セットに関連付けられた待ちキュー１３６の第一セットを維持する。ステップ７０８で、ワークロード・マネージャ１１８は、アクセラレータ・システムのセット１０４上にスケジュールされた、データ並列ワークロード・タスクの第二セットに関連付けられた待ちキュー１３８の第二セットを維持する。ステップ７１０で、ワークロード・マネージャ１１８は、サーバ・システム１０２のリソースのセット、もしくはアクセラレータ・システムのセット１０４のリソースのセットが利用可能であることの判定をする。ステップ７１２で、ワークロード・マネージャ１１８は、上記判定に応じて、データ並列ワークロード・タスクの第一セットおよびデータ並列ワークロード・タスクの第二セットの一つの少なくとも一部を動的に再スケジュールし、これにより、高スループットＳＬＡ１２０のセットをほぼ満たす。なお、前述したように、ワークロードは、動的に再スケジュールするのと別に、スティールすることもできる。次いでステップ７１４でこの制御フローは終了する。
【００５７】
図８は、前述した、ワークロードを再分配することによって、ハイブリッド・コンピューティング環境に高スループット・コンピューティングを設ける一例を示すオペレーショナル・フロー図である。図８のオペレーショナル・フローは、ステップ８０２で開始され、そのままステップ８０４に進む。ステップ８０４で、ワークロード・マネージャ１１８は、サーバ・システム１０２およびアクセラレータ・システム１０４の各々にスケジュールされたワークロードのセットをモニタする。ステップ８０６で、ワークロード・マネージャ１１８は、システム１０２、１０４の一つで、ワークロードの少なくとも一つが最高優先度ＳＬＡ限度の閾値を超えているかどうかを判定する。なお、スループットＳＬＡ、エネルギＳＬＡ、およびバッチ・ウィンドウＳＬＡを有するワークロードに対して、優先順位付けをすることが可能である。最高優先度ＳＬＡ限度とは、前述の３つのＳＬＡの種類の中で最高の優先度を有するＳＬＡをいう。この判定の結果が「いいえ」の場合、制御フローはステップ８０４に戻る。この判定の結果が「はい」の場合、ステップ８０８でワークロード・マネージャ１１８は、一つのワークロード追加に対するリソース容量を有するある第二システム上で、ワークロードが最高ＳＬＡ優先度の限度に適合しそうかどうかを判定する。この判定の結果が「いいえ」であれば、制御フローはステップ８０６に戻る。この判定の結果が「はい」であれば、ステップ８１０で、ワークロード・マネージャ１１８は、少なくとも一つのワークロードを該第二システム１０２、１０４に動的に再割り当てする。次いでステップ８１２でこの制御フローは終了する。
【００５８】
図９は、前述した、ＳＬＡに基づきワークロードを再分配することによって、ハイブリッド・コンピューティング環境に高スループット・コンピューティングを設ける一例を示すオペレーショナル・フロー図である。図９のオペレーショナル・フローは、ステップ９０２で開始され、そのままステップ９０４に進む。ステップ９０４で、ワークロード・マネージャ１１８は、サーバ・システム１０２およびアクセラレータ・システム１０４の各々の上にスケジュールされたワークロードのセットをモニタする。ステップ９０６で、ワークロード・マネージャ１１８は、システム１０２、１０４の第一システムのリソースが少なくとも一つのワークロード追加に対する処理容量を有することを判定する。ステップ９０８で、ワークロード・マネージャ１１８は、システム１０２、１０４の第二システムからの一つの追加ワークロードを再割り当てした場合、ＳＬＡ要求事項への違反になりそうかどうかを判定する。この判定の結果が「はい」であれば、制御フローはステップ９１０で終了する。この判定の結果が「いいえ」であれば、ステップ９１２で、ワークロード・マネージャ１１８は、システム１０２、１０４の第二システムに現在スケジュールされているワークロードを、システム１０２、１０４の第一システムのリソースに動的に再割り当てる。次いでステップ９１４でこの制御フローは終了する。
【００５９】
図１０は、前述した、ハイブリッド・コンピューティング環境におけるワークロードのクラスタリングの一例を示すオペレーショナル・フロー図である。図１０のオペレーショナル・フローは、ステップ１００２で開始され、そのままステップ１００４に進む。ステップ１００４で、ワークロード・マネージャ１１８は、複数のワークロードを分析する。ステップ１００６で、ワークロード・マネージャ１１８は、複数のワークロードの中の、ほぼ類似のデータ並列オペレーションを遂行するワークロードのセットを識別する。ステップ１００８で、ワークロード・マネージャ１１８は、そのワークロードのセットを単一のワークロード・クラスタ中にグループ化する。ステップ１０１０で、ワークロード・マネージャ１１８は、クラスタ内で相互に依存しているワークロードを識別する。ステップ１０１２で、ワークロード・マネージャ１１８は、クラスタ内のワークロードを同時にスケジュールし、相互に依存しているワークロードを時間的に整列させる。次いでステップ１０１４でこの制御フローは終了する。
【００６０】
図１１は、前述した、ハイブリッド・コンピューティング環境におけるワークロードの移動の一例を示すオペレーショナル・フロー図である。図１１のオペレーショナル・フローは、ステップ１１０２で開始され、そのままステップ１１０４に進む。ステップ１１０４で、ワークロード・マネージャ１１８は、アクセラレータ１０４上にスケジュールされたワークロードのセットをモニタする。ステップ１１０６で、ワークロード・マネージャ１１８は、そのワークロードのセットに関連するワークロードの種類に対する実行条件のセットを識別する。これに換えて、以下に限らないが、パフォーマンス閾値もしくはエネルギ閾値またはその両方など、ＳＬＡ要求事項の閾値を同様に識別することもできる。ステップ１１０８で、ワークロード・マネージャ１１８は、実行条件が成り立つか（もしくは閾値が満たされているか、またはその両方が是か）を判定する。判定の結果が「いいえ」の場合、ワークロード・マネージャは、条件または閾値が満たされているかどうかの判定を継続する。判定の結果が「はい」の場合、ステップ１１１０で、ワークロード・マネージャ１１８は、該条件もしくは閾値またはその両方に関連付けられたワークロードを、サーバ・システム１０２に移行させるため必要なワークロードのデータを保存する。ステップ１１１２で、ワークロード・マネージャ１１８は、次いでワークロードをサーバ・システム１０２に移行させ、保存されたワークロードのデータを使ってそのワークロードの実行を継続させる。次いでステップ１１１４でこの制御フローは終了する。
【００６１】
図１２は、前述した、ハイブリッド・コンピューティング環境においてアクセラレータのワークロードを遂行するためのサーバ・システム構成の一例を示すオペレーショナル・フロー図である。図１２のオペレーショナル・フローは、ステップ１２０２で開始され、そのままステップ１２０４に進む。ステップ１２０４で、ワークロード・マネージャ１１８は、サーバ・システム１０２上に、複数の疑似アクセラレータ・リソース５０８、５１０、５１２を割り当てる。疑似アクセラレータ・リソースおよび物理アクセラレータ・リソースのミックスと順序付けは、スループット・コンピューティング、エネルギＳＬＡ、およびバッチ・ウィンドウＳＬＡから導出される。ステップ１２０６で、あるタスクがアクセラレータ・システム１０４のまたは疑似アクセラレータ・システムの計算カーネルを呼び出す。ステップ１２０８で、カーネル・スケジューラ５１９は、カーネル呼び出しを満たすため、サーバ・システム１０２またはアクセラレータに、物理アクセラレータ計算リソースまたは疑似アクセラレータ計算リソースをスケジュールする。次いでステップ１２１０でこの制御フローは終了する。
【００６２】
情報処理システム
図１３は、図１に関して前に説明した動作環境１００の中で活用できる、情報処理システム１３００のさらなる詳細ビューを示すブロック図である。情報処理システム１３００は、本発明の一つ以上の好適な実施形態を実装するようになされ適切に構築された処理システムに基づく。本発明の一つ以上の好適な実施形態は、適切に構築された任意の処理システムを情報処理システム１３００として同様に使用することができる。なお、本情報処理システム１３００は、図１に示された、それぞれのコンポーネントを備えたサーバ・システム１０２またはアクセラレータ・システム１０４のいずれとすることもできる。
【００６３】
情報処理システム１３００は、コンピュータ１３０２を含む。コンピュータ１３０２は、主メモリ１３０６、大容量ストレージ・インターフェース１３０８、およびネットワーク・アダプタ・ハードウェア１３１０に接続された（プロセッサ１１４または１１６などの）プロセッサ（群）１３０４を有する。システム・バス１３１２がこれらのシステム・コンポーネントを相互接続している。本発明の一つの好適な実施形態において、主メモリ１３０６は、前述した、ワークロード・マネージャ１１８（およびそのコンポーネント）、ＳＬＡ１２０、およびワークロード・キュー１３６などのサーバ・システム１０２のコンポーネント、もしくはワークロード・キュー１３８などのアクセラレータ１０４のコンポーネントを含む。
【００６４】
主メモリ１３０６中に同時に常駐しているように示されているが、主メモリ１３０６のそれぞれのコンポーネント群は、常時または同時に、主メモリ１３０６中に全体が常駐する必要がないことは明白である。本発明の一つの好適な実施形態において、情報処理システム１３００は、従来式の仮想アドレッシング・メカニズムを用い、プログラムが、主メモリ１３０６およびデータ・ストレージ・デバイス１３１６などの複数のより小型のストレージ・エンティティにアクセスする代わりに、あたかも、本明細書ではコンピュータ・システム・メモリと呼ぶ、大型で単一のストレージ・エンティティにアクセスしているかのように振る舞うことを可能にする。なお、用語「コンピュータ・システム・メモリ（ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｍｅｍｏｒｙ）」は、本明細書では、総称的に、情報処理システム１３００の仮想メモリ全体を言及するために使われる。
【００６５】
大容量ストレージ・インターフェース１３０８は、大容量ストレージ・デバイス１３１４などの大容量ストレージ・デバイスを、情報処理システム１３００に接続するために使われる。データ・ストレージ・デバイスの一つの具体的種類に、ＣＤ／デジタル・ビデオ・ディスク（ＤＶＤ：Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｄｉｓｃ）ドライブなどの光学式ドライブがあり、これらは、（以下に限らないが）ＣＤ／ＤＶＤ１３１６などのコンピュータ可読媒体またはストレージ製品へのデータの格納およびこれらからのデータの読み取りのために使用することができる。データ・ストレージ・デバイスの別の種類には、例えば、ニュー・テクノロジー・ファイル・システム（ＮＴＦＳ：Ｎｅｗ  Ｔｅｃｈｎｏｌｏｇｙ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）型のファイル・システム・オペレーションをサポートするよう構成されたデータ・ストレージ・デバイスがある。
【００６６】
コンピュータ１３０２として一つだけのＣＰＵ１３０４が示されているが、複数のＣＰＵを備えたコンピュータ・システムも同様に効率よく使うことができる。本発明の好適な諸実施形態は、各々が、ＣＰＵ１３０４からのオフロードの処理に使われる、別個の完全にプログラムされたマイクロプロセッサを含む、インターフェース群をさらに組み込む。主メモリに包含されるオペレーティング・システム（図示せず）は、Ｌｉｎｕｘ（Ｒ）、ＵＮＩＸ（Ｒ）、Ｍｉｃｒｏｓｏｆｔ（Ｒ）Ｗｉｎｄｏｗｓ（Ｒ）  ＸＰ、およびＭｉｃｒｏｓｏｆｔ（Ｒ）  Ｗｉｎｄｏｗｓ  Ｓｅｒｖｅｒ（Ｒ）  ２００３オペレーティング・システムなど、適切なマルチタスク・オペレーティング・システムである。Ｌｉｎｕｘは、米国、他の国々、またはその両方におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの登録商標である。ＵＮＩＸは、米国および他の国々におけるＴｈｅ  Ｏｐｅｎ  Ｇｒｏｕｐの登録商標である。ＭｉｃｒｏｓｏｆｔおよびＷｉｎｄｏｗｓ並びにＷｉｎｄｏｗｓロゴは、米国、他の国々、またはその両方におけるＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標である。本発明の好適な諸実施形態には、任意の他の適切なオペレーティング・システムを用いることが可能である。本発明のいくつかの好適な実施形態は、オペレーティング・システム（図示せず）のコンポーネントの命令を、情報処理システム１３００内に配置されたどのプロセッサでも実行できるようにする、オブジェクト指向フレームワーク・メカニズムなどのアーキテクチャを活用する。ネットワーク・アダプタ・ハードウェア１３１０を使って、ネットワーク１０８へのインターフェースが提供される。本発明の好適な諸実施形態は、現今のアナログもしくはデジタル技法またはその両方を含む任意のデータ通信接続、あるいは将来のネットワーキング・メカニズムを使って動作するように構成することが可能である。
【００６７】
本発明の例示的な好適な実施形態を、完全に機能するコンピュータ・システムのコンテキストで説明しているが、当業者は、各種の好適な実施形態を、例えばＣＤ１３１６、ＣＤ  ＲＯＭなどのＣＤまたはＤＶＤまたは他の形態の記録可能媒体を介して、あるいは任意の種類の電子伝送メカニズムを介して、プログラム製品として配布することが可能なことをよく理解していよう。
【００６８】
限定されない実施例
本発明の具体的な好適な実施形態を開示してきたが、当業者は、本発明の範囲から逸脱することなく、これらの具体的な好適な実施形態に変更を加えることが可能であることを理解していよう。従って、本発明の範囲は、これら具体的な好適な実施形態に限定されるものでなく、添付の請求項は、かかるありとあらゆる応用、修改、および本発明の範囲内の好適な諸実施形態を網羅することが意図されている。
【００６９】
本発明の各種の例示的な好適な実施形態を、完全に機能するコンピュータ・システムのコンテキストで説明しているが、当業者は、各種の好適な実施形態を、例えばＣＤ、ＣＤ  ＲＯＭなどのＣＤまたはＤＶＤ、または他の形態の可読媒体を介して、もしくは、別の実施形態によって任意の種類の電子伝送メカニズムを介して、またはその両方によって、コンピュータ可読ストレージ媒体またはプログラム製品として配布することが可能なことをよく理解していよう。
【００７０】
疑念を避けるために、本出願で説明され請求項全体を通して使用されている用語「含む（ｃｏｍｐｒｉｓｉｎｇ）」は、「だけから成る（ｃｏｎｓｉｓｔｉｎｇ  ｏｎｌｙ  ｏｆ）」の意味には解釈しないものとする。
【図１】
2013538398.tif 000003
【図２】
2013538398.tif 000004
【図３】
2013538398.tif 000005
【図４】
2013538398.tif 000006
【図５】
2013538398.tif 000007
【図６】
2013538398.tif 000008
【図７】
2013538398.tif 000009
【図８】
2013538398.tif 000010
【図９】
2013538398.tif 000011
【図１０】
2013538398.tif 000012
【図１１】
2013538398.tif 000013
【図１２】
2013538398.tif 000014
【図１３】
2013538398.tif 000015
【手続補正書】
【提出日】平成25年3月1日(2013.3.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ハイブリッド処理システムに高スループット・コンピューティングを設ける、情報処理システムの方法であって、前記方法は、
高スループット・コンピューティング・サービス保証品質契約（ＳＬＡ）のセットを分析するステップであって、前記高スループット・コンピューティングＳＬＡのセットは、第一コンピューティング・アーキテクチャを含む少なくとも一つのサーバ・システム、および各々が前記第一コンピューティング・アーキテクチャとは異なる第二コンピューティング・アーキテクチャを含むアクセラレータ・システムのセットを包含する、ハイブリッド処理システムに関連付けられている、前記分析するステップと、
前記高スループット・コンピューティングＳＬＡのセットに基づいて、前記少なくとも一つのサーバ・システム中のリソースの第一セット、および前記アクセラレータ・システムのセット中のリソースの第二セットをモニタするステップと、
前記モニタリングに基づいて、前記リソースの第一セット中の少なくとも一つのリソースと前記リソースの第二セット中の少なくとも一つのリソースとに亘るデータ並列ワークロード・タスクのセットを動的にスケジューリングするステップであって、前記動的にスケジューリングするステップは、前記高スループット・コンピューティングＳＬＡのセットを満たす、前記スケジューリングするステップと、
を含む方法。
【請求項２】
前記ハイブリッド処理システムは、クロスプラットフォーム並列プログラミング環境を含む、請求項１に記載の方法。
【請求項３】
前記リソースの第一セットおよび前記リソースの第二セットは、各々、クロスプラットフォーム並列プログラミング・リソースのセットを含む、請求項１または２に記載の方法。
【請求項４】
前記クロスプラットフォーム並列プログラミング・リソースのセットは計算カーネルを含む、請求項１〜３のいずれかに記載の方法。
【請求項５】
前記少なくとも一つのサーバ・システムは、前記アクセラレータ・システムのセットにネットワークによって通信可能に連結されている、請求項１〜４のいずれかに記載の方法。
【請求項６】
前記リソースの第一セットの少なくともサブセットは、前記アクセラレータ・システムのセット上で利用可能なリソースのセットをエミュレートする、請求項１〜５のいずれかに記載の方法。
【請求項７】
前記高スループット・コンピューティングＳＬＡのセットは、前記ハイブリッド処理システムが達成すべき、パフォーマンス要求事項のセットおよびエネルギ要求事項のセットの少なくとも一つを含む、請求項１〜６のいずれかに記載の方法。
【請求項８】
前記動的にスケジューリングするステップの後で、前記高スループット・コンピューティングＳＬＡのセットが満たされていないことを判定するステップと、
前記判定するステップに応じて、前記リソースの第一セットおよび前記リソースの第二セットの少なくとも一つに、追加のリソースを動的に割り当てるステップと、
をさらに含む、請求項１〜７のいずれかに記載の方法。
【請求項９】
前記データ並列ワークロード・タスクのセット中の少なくとも一つのデータ並列ワークロード・タスクを、前記リソースの第二セット中の前記少なくとも一つのリソースから前記リソースの第一セット中のリソースに移動するステップ、
をさらに含む、請求項１〜８のいずれかに記載の方法。
【請求項１０】
前記移動するステップは、
前記少なくとも一つのデータ並列ワークロード・タスクに関連付けられた実行条件のセットを識別するステップと、
前記少なくとも一つのデータ並列ワークロード・タスクの実行の過程で、少なくとも一つの実行条件が満たされていないことを判定するステップと、
前記少なくとも一つの実行条件が満たされていないことの前記判定に応じて、前記移動するステップを遂行するステップと、
をさらに含む、請求項９に記載の方法。
【請求項１１】
前記実行条件のセットは、前記高スループット・コンピューティングＳＬＡのセット中に示され、前記ハイブリッド処理システムに関連付けられた、パフォーマンス指標およびエネルギ指標の少なくとも一つを含む、請求項１０に記載の方法。
【請求項１２】
複数のワークロードを分析するステップであって、前記複数のワークロード中の少なくとも一つのワークロードは前記データ並列ワークロード・タスクのセットを含む、前記分析するステップと、
前記分析するステップに基づいて、前記複数のワークロード中の、ほぼ類似のデータ並列オペレーションを遂行するワークロードのセットを識別するステップと、
前記識別するステップに応じて、前記識別されたワークロードのセットをワークロード・クラスタ中にグループ化するステップと、
前記ワークロード・クラスタ中の前記ワークロードのセットを、同時に動的にスケジューリングするステップであって、この動的にスケジューリングするステップは、前記ワークロード・クラスタ中の、相互に依存しているワークロードを時間的に整列させるステップをさらに含む、前記スケジューリングするステップと、
をさらに含む、請求項１〜１１のいずれかに記載の方法。
【請求項１３】
ハイブリッド処理システムに高スループット・コンピューティングを設けるためのシステムであって、前記システムは、
メモリと、
前記メモリに通信可能に連結されたプロセッサと、
前記メモリおよび前記プロセッサに通信可能に連結されたワークロード・マネージャであって、前記ワークロード・マネージャは、
高スループット・コンピューティング・サービス保証品質契約（ＳＬＡ）のセットを分析するための分析コンポーネントあって、前記高スループット・コンピューティングＳＬＡのセットは、第一コンピューティング・アーキテクチャを含む少なくとも一つのサーバ・システム、および各々が前記第一コンピューティング・アーキテクチャとは異なる第二コンピューティング・アーキテクチャを含むアクセラレータ・システムのセットを包含する、ハイブリッド処理システムに関連付けられている、前記分析コンポーネント、
前記高スループット・コンピューティングＳＬＡのセットに応じて、前記サーバ・システム中のリソースの第一セット、および前記アクセラレータ・システムのセット中のリソースの第二セットをモニタするためのモニタ・コンポーネント、および
前記モニタ・コンポーネントのモニタリングに応じ、前記リソースの第一セット中の少なくとも一つのリソースと前記リソースの第二セット中の少なくとも一つのリソースとに亘るデータ並列ワークロード・タスクのセットを動的にスケジューリングするためのスケジュール・コンポーネントであって、前記動的にスケジューリングするステップは、前記高スループット・コンピューティングＳＬＡのセットを満たす、前記スケジュール・コンポーネント、
を包含する前記ワークロード・マネージャと、
を含むシステム。
【請求項１４】
ハイブリッド処理システムに高スループット・コンピューティングを設けるためのシステムであって、前記システムは、
メモリと、
前記メモリに通信可能に連結されたプロセッサと、
前記メモリおよび前記プロセッサに通信可能に連結されたワークロード・マネージャであって、前記ワークロード・マネージャは、
高スループット・コンピューティング・サービス保証品質契約（ＳＬＡ）のセットを分析するステップであって、前記高スループット・コンピューティングＳＬＡのセットは、第一コンピューティング・アーキテクチャを含む少なくとも一つのサーバ・システム、および各々が前記第一コンピューティング・アーキテクチャとは異なる第二コンピューティング・アーキテクチャを含むアクセラレータ・システムのセットを包含する、ハイブリッド処理システムに関連付けられている、前記分析するステップと、
前記高スループット・コンピューティングＳＬＡのセットに基づいて、前記サーバ・システム中のリソースの第一セット、および前記アクセラレータ・システムのセット中のリソースの第二セットをモニタするステップと、
前記モニタリングに基づいて、前記リソースの第一セット中の少なくとも一つのリソースと前記リソースの第二セット中の少なくとも一つのリソースとに亘るデータ並列ワークロード・タスクのセットを動的にスケジューリングするステップであって、前記動的にスケジューリングするステップは、前記高スループット・コンピューティングＳＬＡのセットを満たす、前記スケジューリングするステップと、
を含む方法を遂行するようになされている、前記ワークロード・マネージャと、
を含むシステム。
【請求項１５】
ハイブリッド処理システムに高スループット・コンピューティングを設けるためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、
実行されることにより、情報処理システムに、請求項１〜１２のいずれかに記載の方法を遂行させるコンピュータ・プログラム。
【国際調査報告】
2013538398.tif 000016
2013538398.tif 000017
2013538398.tif 000018