IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2023-543976動的計算リソース上での並列タスク初期化
<>
  • 特表-動的計算リソース上での並列タスク初期化 図1
  • 特表-動的計算リソース上での並列タスク初期化 図2
  • 特表-動的計算リソース上での並列タスク初期化 図3
  • 特表-動的計算リソース上での並列タスク初期化 図4
  • 特表-動的計算リソース上での並列タスク初期化 図5
  • 特表-動的計算リソース上での並列タスク初期化 図6
  • 特表-動的計算リソース上での並列タスク初期化 図7
  • 特表-動的計算リソース上での並列タスク初期化 図8
  • 特表-動的計算リソース上での並列タスク初期化 図9
  • 特表-動的計算リソース上での並列タスク初期化 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-10-19
(54)【発明の名称】動的計算リソース上での並列タスク初期化
(51)【国際特許分類】
   G06F 9/52 20060101AFI20231012BHJP
【FI】
G06F9/52 150A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023515690
(86)(22)【出願日】2021-10-12
(85)【翻訳文提出日】2023-03-08
(86)【国際出願番号】 CN2021123260
(87)【国際公開番号】W WO2022078323
(87)【国際公開日】2022-04-21
(31)【優先権主張番号】17/069,554
(32)【優先日】2020-10-13
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ミラー、スコット
(72)【発明者】
【氏名】ローリア、オーステン ウィリアム
(72)【発明者】
【氏名】シャルカウィ、サメ シェリフ
(72)【発明者】
【氏名】レペラ、ウィリアム ピー.
(57)【要約】
第1計算リソース上で第1タスクの実行がトリガされ、第1タスクの一部の実行は、第2タスクが第2計算リソース上で実行されることを条件とする。第2タスクの状態インジケータが監視され、状態インジケータは、第2タスクが第2計算リソース上で現在実行されているかどうかを示す。第2タスクが現在実行されていないことを状態インジケータが示していることに応答して、第1タスクの一部の実行が一時停止される。状態インジケータの変化が生じたと判断される。判断されることに応答して、第2タスクに関する受信された接続情報が第1タスクに転送される。第1計算リソース上で第1タスクの一部の実行が再トリガされる。
【特許請求の範囲】
【請求項1】
第1計算リソース上で第1タスクの実行をトリガする段階、ここで前記第1タスクの一部の実行は、第2タスクが第2計算リソース上で実行されることを条件とする;
前記第2タスクの状態インジケータを監視する段階、ここで前記状態インジケータは、前記第2タスクが前記第2計算リソース上で現在実行されているかどうかを示す;
前記第2タスクが現在実行されていないことを前記状態インジケータが示していることに応答して、前記第1タスクの前記一部の実行を一時停止する段階;
前記状態インジケータの変化が生じたと判断する段階;
前記判断する段階に応答して、前記第2タスクに関する受信された接続情報を前記第1タスクに転送する段階;及び
前記第1計算リソース上で前記第1タスクの前記一部の実行を再トリガする段階
を備えるコンピュータ実装方法。
【請求項2】
前記監視する段階は、前記一部に到達する前の前記第1タスクの前記実行と同時に実行される、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記一時停止する段階は、前記第1タスクの実行が前記一部に到達したという通知を受信することに応答して実行される、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記第2タスクが現在実行されていることを前記状態インジケータが示していることに応答して、前記第1タスクの前記一部を実行する段階
を更に備える、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記状態インジケータは、前記受信された接続情報を含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記第1タスクの前記一部の実行は、前記第2タスクから受信されたデータを処理することを含み、前記データは、前記受信された接続情報を使用して受信される、請求項5に記載のコンピュータ実装方法。
【請求項7】
動的計算リソース上での並列タスク初期化のためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、
1つ又は複数のコンピュータ可読記憶媒体、及び前記1つ又は複数のコンピュータ可読記憶媒体に集合的に記憶されたプログラム命令
を備え、
前記プログラム命令は、
第1計算リソース上で第1タスクの実行をトリガするためのプログラム命令、ここで前記第1タスクの一部の実行は、第2タスクが第2計算リソース上で実行されることを条件とする;
前記第2タスクの状態インジケータを監視するためのプログラム命令、ここで前記状態インジケータは、前記第2タスクが前記第2計算リソース上で現在実行されているかどうかを示す;
前記第2タスクが現在実行されていないことを前記状態インジケータが示していることに応答して、前記第1タスクの前記一部の実行を一時停止するためのプログラム命令;
前記状態インジケータの変化が生じたと判断するためのプログラム命令;
前記判断することに応答して、前記第2タスクに関する受信された接続情報を前記第1タスクに転送するためのプログラム命令;及び
前記第1計算リソース上で前記第1タスクの前記一部の実行を再トリガするためのプログラム命令
を含む、
コンピュータプログラム製品。
【請求項8】
前記監視することは、前記一部に到達する前の前記第1タスクの前記実行と同時に実行される、請求項7に記載のコンピュータプログラム製品。
【請求項9】
前記一時停止することは、前記第1タスクの実行が前記一部に到達したという通知を受信することに応答して実行される、請求項7に記載のコンピュータプログラム製品。
【請求項10】
前記第2タスクが現在実行されていることを前記状態インジケータが示していることに応答して、前記第1タスクの前記一部を実行するためのプログラム命令
を更に備える、請求項7に記載のコンピュータプログラム製品。
【請求項11】
前記状態インジケータは、前記受信された接続情報を含む、請求項7に記載のコンピュータプログラム製品。
【請求項12】
前記第1タスクの前記一部の実行は、前記第2タスクから受信されたデータを処理することを含み、前記データは、前記受信された接続情報を使用して受信される、請求項11に記載のコンピュータプログラム製品。
【請求項13】
前記記憶されたプログラム命令は、ローカルデータ処理システムの前記1つ又は複数の記憶媒体のうちの前記少なくとも1つに記憶され、前記記憶されたプログラム命令は、ネットワーク経由でリモートデータ処理システムから転送される、請求項7に記載のコンピュータプログラム製品。
【請求項14】
前記記憶されたプログラム命令は、サーバデータ処理システムの前記1つ又は複数の記憶媒体のうちの前記少なくとも1つに記憶され、前記記憶されたプログラム命令は、リモートデータ処理システムに関連付けられるコンピュータ可読記憶デバイスで使用するために、ネットワーク経由で前記リモートデータ処理システムにダウンロードされる、請求項7に記載のコンピュータプログラム製品。
【請求項15】
前記コンピュータプログラム製品は、クラウド環境におけるサービスとして提供される、請求項7に記載のコンピュータプログラム製品。
【請求項16】
1つ又は複数のプロセッサ、1つ又は複数のコンピュータ可読メモリ、及び1つ又は複数のコンピュータ可読記憶デバイス、及び前記1つ又は複数のメモリのうちの少なくとも1つを介して前記1つ又は複数のプロセッサのうちの少なくとも1つにより実行するための、前記1つ又は複数の記憶デバイスのうちの少なくとも1つに記憶されたプログラム命令、を備えるコンピュータシステムであって、前記記憶されたプログラム命令は、
第1計算リソース上で第1タスクの実行をトリガするためのプログラム命令、ここで前記第1タスクの一部の実行は、第2タスクが第2計算リソース上で実行されることを条件とする;
前記第2タスクの状態インジケータを監視するためのプログラム命令、ここで前記状態インジケータは、前記第2タスクが前記第2計算リソース上で現在実行されているかどうかを示す;
前記第2タスクが現在実行されていないことを前記状態インジケータが示していることに応答して、前記第1タスクの前記一部の実行を一時停止するためのプログラム命令;
前記状態インジケータの変化が生じたと判断するためのプログラム命令;
前記判断することに応答して、前記第2タスクに関する受信された接続情報を前記第1タスクに転送するためのプログラム命令;及び
前記第1計算リソース上で前記第1タスクの前記一部の実行を再トリガするためのプログラム命令
を含む、コンピュータシステム。
【請求項17】
前記監視することは、前記一部に到達する前の前記第1タスクの前記実行と同時に実行される、請求項16に記載のコンピュータシステム。
【請求項18】
前記一時停止することは、前記第1タスクの実行が前記一部に到達したという通知を受信することに応答して実行される、請求項16に記載のコンピュータシステム。
【請求項19】
前記第2タスクが現在実行されていることを前記状態インジケータが示していることに応答して、前記第1タスクの前記一部を実行するためのプログラム命令
を更に備える、請求項16に記載のコンピュータシステム。
【請求項20】
前記状態インジケータは、前記受信された接続情報を含む、請求項16に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、動的計算リソースを使用するための方法、システム、及びコンピュータプログラム製品に関する。より具体的には、本発明は、動的計算リソース上での並列タスク初期化のための方法、システム、及びコンピュータプログラム製品に関する。
【0002】
計算リソースは、データ処理能力を提供する。計算リソースのいくつかの非限定的な例には、物理コンピュータシステム、物理コンピュータシステムを仮想化する仮想マシン(VM)又は論理区画、VM上で実行されるコンテナ、コンピュータシステムの仮想又は物理クラスタ、及び仮想又は物理リソースプールがある。
【0003】
コンピューティング環境は、複数の計算リソース及びこれらのリソース上で実行されるソフトウェアを含むことが多い、コンピュータシステムアドミニストレーションでは、オーケストレーションは、コンピュータシステム及びソフトウェアの自動化された構成、調整、及び管理である。オーケストレーションは、通常、複数の異質なシステムにわたる多くの段階を含むプロセス又はワークフローを自動化する。オーケストレーションフレームワークは、オーケストレーションを実行するソフトウェアツールである。オーケストレーションフレームワークの機能の1つは、リソースが必要になったときに使用するための計算リソースを構成及び提供すること、及びリソースが必要ではなくなると計算リソースを除去又は再構成することである。要求に応じて提供される再構成可能な計算リソースは、動的計算リソースとも呼ばれる。Kubernetesは、オーケストレーションフレームワークの非限定的な例であり;現在では他のオーケストレーションフレームワークも利用できる。(Kubernetesは、米国及び他の国にあるLinux(登録商標)Foundationの登録商標である。)
【0004】
ジョブは、データ処理業務の単位である。ジョブは、並列処理を使用して実行されることが多く、並列処理では、ジョブの一部が複数の計算リソース間に分散されて、互いに並列して実行される。タスクは、単一の計算リソース上で実行される単一のプログラムインスタンスである。このように、ジョブは、複数のタスクとして実行される。ジョブの実行中、タスクは、互いにステータス及び処理済みデータを通信する。Message Passing Interface(MPI)及びProcess Management Interface-eXascale(PMIx)は、タスクが互いに通信するためのインタフェースの2つの非限定的な例であり;現在では他のタスク通信インタフェースも利用できる。
【0005】
プロセスマネージャは、計算リソース上でのタスクの初期化、及びタスク間の通信情報の転送を含む、ジョブ内のタスクを管理する。いくつかの実装では、ローカルプロセスマネージャが、特定の計算リソース上で実行されるタスクを管理し、ルートプロセスマネージャ(root process manager)が、1つ又は複数のローカルプロセスマネージャを管理し、その各々が、異なる計算リソース上で実行されるタスクを管理する。ルートプロセスマネージャ及び1つ又は複数のローカルプロセスマネージャは、プロセスマネージャネットワークを形成する。プロセスマネージャネットワーク内のプロセスマネージャは、互いに通信する。
【発明の概要】
【0006】
例示的な実施形態は、方法、システム、及びコンピュータプログラム製品を提供する。一実施形態は、第1計算リソース上で第1タスクの実行をトリガする方法を含み、第1タスクの一部の実行は、第2タスクが第2計算リソース上で実行されることを条件とする。一実施形態は、第2タスクの状態インジケータを監視し、状態インジケータは、第2タスクが第2計算リソース上で現在実行されているかどうかを示す。一実施形態は、第2タスクが現在実行されていないことを状態インジケータが示していることに応答して、第1タスクの一部の実行を一時停止する。一実施形態は、状態インジケータの変化が生じたと判断する。一実施形態は、判断することに応答して、第2タスクに関する受信された接続情報を第1タスクに転送する。一実施形態は、第1計算リソース上で第1タスクの一部の実行を再トリガする。
【0007】
一実施形態は、コンピュータ使用可能プログラム製品を含む。コンピュータ使用可能プログラム製品は、1つ又は複数のコンピュータ可読記憶デバイス、及び1つ又は複数の記憶デバイスのうちの少なくとも1つに記憶されたプログラム命令を含む。
【0008】
一実施形態は、コンピュータシステムを含む。コンピュータシステムは、1つ又は複数のプロセッサ、1つ又は複数のコンピュータ可読メモリ、及び1つ又は複数のコンピュータ可読記憶デバイス、及び1つ又は複数のメモリのうちの少なくとも1つを介して1つ又は複数のプロセッサのうちの少なくとも1つにより実行するための、1つ又は複数の記憶デバイスのうちの少なくとも1つに記憶されたプログラム命令を含む。
【図面の簡単な説明】
【0009】
本発明の特性と考えられる特定の新規の特徴は、添付の特許請求の範囲に記載される。しかしながら、本発明自体、並びにその好ましい使用様式、更なる目的、及び利点は、添付の図面と共に読むと、例示的な実施形態の以下の詳細な説明を参照して最もよく理解されることになる。
【0010】
図1】例示的な実施形態が実装され得るデータ処理システムのネットワークのブロック図を示す;
【0011】
図2】例示的な実施形態が実装され得るデータ処理システムのブロック図を示す;
【0012】
図3】例示的な実施形態に係る動的計算リソース上での並列タスク初期化のための例示的な構成のブロック図を示す;
【0013】
図4】例示的な実施形態に係る動的計算リソース上での並列タスク初期化のための例示的な構成のブロック図を示す;
【0014】
図5】例示的な実施形態に係る動的計算リソース上での並列タスク初期化の一例を示す;
【0015】
図6】例示的な実施形態に係る動的計算リソース上での並列タスク初期化の一例を示す;
【0016】
図7】例示的な実施形態に係る動的計算リソース上での並列タスク初期化のための例示的なプロセスのフローチャートを示す;
【0017】
図8】例示的な実施形態に係る動的計算リソース上での並列タスク初期化のための例示的なプロセスのフローチャートを示す;
【0018】
図9】本発明の一実施形態に係るクラウドコンピューティング環境を示す;及び
【0019】
図10】本発明の一実施形態に係る抽象化モデル層を示す。
【発明を実施するための形態】
【0020】
例示的な実施形態は、オーケストレーションフレームワークが現在、ジョブの実行をスケジュールし、そのジョブに計算リソースを割り当てていることを認識する。計算リソースを構成し且つ必要な場合にのみ利用できるデータ処理環境では、スケジュールされたジョブに割り当てられる計算リソースを、タスク実行に使用する前に構成及び初期化する必要があるかもしれない。割り当てられた計算リソースのすべてでタスク実行の準備ができると、各計算リソース上でタスクが開始される。タスクは並列して実行され、互いに通信する。例示的な実施形態は、ジョブの実行に必要な計算リソースが多いほど、すべての計算リソースが利用可能になり且つジョブの実行が実際に開始されるまでの待ち時間が長くなることも認識する。その結果、ジョブの実行をスケジュールしてから、割り当てられた計算リソース上でジョブの実行が実際に開始されるまでの時間を短縮する必要がある。
【0021】
例示的な実施形態は、現在利用可能なツール又は解決策では、これらの必要性に対しての対処はなされていない、又はこれらの必要性に対して適切な解決策を提供していないことを認識する。本発明の説明に使用する例示的な実施形態は、概して、上記の問題及び動的計算リソース上での並列タスク初期化に関連する他の問題に対処し、それらを解決する。
【0022】
一実施形態は、ソフトウェアアプリケーションとして実装され得る。実施形態を実装するアプリケーションは、既存のプロセスマネージャの修正として、既存のプロセスマネージャと共に動作する別個のアプリケーション、スタンドアロンアプリケーション、又はそれらの何らかの組み合わせとして構成され得る。
【0023】
特に、いくつかの例示的な実施形態は、第2計算リソース上で第2タスクの実行が開始されるのを待たずに第1計算リソース上で第1タスクの実行をトリガし且つ第2タスクの実行ステータスを監視する方法を提供する。第2タスクが実行されることを条件とする部分に第1タスクの実行が到達すると、第1タスクは、必要であれば、第2タスクが実行されるまで待機し、次に実行を継続する。
【0024】
まず、オーケストレーションフレームワークがジョブの実行をスケジュールし、そのジョブに計算リソースのセットを割り当てて、ジョブ及び割り当てられた計算リソースのセットに関するデータをルートプロセスマネージャに転送する。計算リソースを構成し且つ必要な場合にのみ利用できるデータ処理環境では、割り当てられた計算リソースを、タスク実行に使用する前に構成及び初期化する必要があるかもしれない。このように、オーケストレーションフレームワークは、ジョブに割り当てられる計算リソースを構成及び初期化し、各計算リソースがジョブ内のタスク実行に利用できるようになると、ルートプロセスマネージャで実装された実施形態に通知する。
【0025】
ルートプロセスマネージャで実装された実施形態は、計算リソースをタスク実行に利用できるというイベント通知を受信する。1つの実施形態において、ルートプロセスマネージャは、ルートプロセスマネージャに通知すべき特定のタイプのイベントをオーケストレーションフレームワークに通知することにより、計算リソース発見イベントにサブスクライブする。別の実施形態は、サブスクリプションの実装を採用せず、代わりに、ルートプロセスマネージャが、割り当てられた計算リソースの利用可能性に関するブロードキャスト通知を受信する。別の実施形態は、オーケストレーションフレームワーク以外のソースから計算リソース通知を受信する。
【0026】
ルートプロセスマネージャで実装された実施形態が、計算リソースをタスク実行に利用できるというイベント通知を受信すると、この実施形態は、新たに利用できるようになった計算リソース上でローカルプロセスマネージャを生成し、現在のジョブの一部であり且つ他の計算リソース上で既に実行されているタスクに関する接続情報を提供する。実施形態では、タスクに関する接続情報がネットワーキング環境及び他の要因に応じて異なる。1つの非限定的な例として、InfiniBandネットワークでは、2つのタスク間のタスク接続情報が、キューペア(通信エンドポイント)及びローカルID(割り当てられたデバイス識別子)を含む。(InfiniBandは、米国及び他の国におけるSystem I/O,Inc.の登録商標である。)特定のタスクに関する接続情報を利用できることは、そのタスクが計算リソース上で現在実行されているという状態インジケータとして機能する。逆に、特定のタスクに関する接続情報がないことは、そのタスクが計算リソース上で現在実行されていないという状態インジケータとして機能する。
【0027】
新たに生成されたローカルプロセスマネージャで実装された実施形態は、新たに利用できるようになった計算リソース上で、少なくとも1つのローカルタスクを実行のためにトリガする。この実施形態は、他の計算リソース上で既に実行されているタスクに関する接続情報をローカルタスクに提供し、他の計算リソース上で実行されている他のプロセスマネージャに、ローカルタスクに関する接続情報を提供する。結果として、現在実行されているジョブ内のタスクはすべて、接続情報を使用して互いにデータを通信することができる。
【0028】
計算リソース構成中の後の時点で、ルートプロセスマネージャで実装された実施形態は、新たな計算リソースをタスク実行に利用できるというイベント通知を受信し、その新たな計算リソース上で第2ローカルプロセスマネージャを生成する。第2ローカルプロセスマネージャは、第1ローカルプロセスマネージャを含むプロセスマネージャネットワークに、自らのローカルタスクに関するタスク接続情報を提供する。このように、第1計算リソース上で実行されるタスクは、新たな計算リソース上で現在実行されているタスクとデータを通信することができる。結果として、第1計算リソース上で実行されるタスクは、新たな計算リソースが利用できるようになるのを待ってから実行を開始する必要がなく、全体的なジョブ初期化時間が低減する。
【0029】
計算リソース構成中の後の時点で、第1計算リソース上で実行されるタスクは、実行を継続するために第3タスクと通信する必要がある。第1タスクが第3タスクに関する通信情報を有する場合は、第3タスクが計算リソース(ローカル又はリモート)上で実行されており、第1タスクと通信することができる。このように、第1タスクは引き続き実行される。一方で第1タスクが第3タスクに関する通信情報を有しない場合は、第3タスクが計算リソース上でまだ実行されておらず、第1タスクと通信することができない。結果として、第1タスクは、実行を一時停止する。次に、計算リソース構成中の後の時点で、ルートプロセスマネージャで実装された実施形態は、第3の新たな計算リソースをタスク実行に利用できるというイベント通知を受信し、その第3計算リソース上で第3ローカルプロセスマネージャを生成する。第3ローカルプロセスマネージャは、第1タスクが待っている第3タスクを含む自らのローカルタスクに関するタスク接続情報をプロセスマネージャネットワークに提供する。第1ローカルプロセスマネージャは、第3タスクに関する通信情報を受信し、その情報を第1タスクに転送して、第3タスクを利用できる以上は、第1タスクの実行を再トリガする。結果として、第1計算リソース上で実行されるタスクは、第3の新たな計算リソースが利用できるようになるのを待ってから実行を継続する必要があったが、第1タスクは、何らかの処理を実行することができ、全体的なジョブ初期化時間が低減した。
【0030】
計算リソース構成中の後の時点で、第1計算リソース上で実行されるタスクは、実行を継続するために第4タスクと通信する必要がある。第1タスクが第4タスクに関する通信情報を有する場合は、第1タスクが引き続き実行される。一方で第1タスクが第4タスクに関する通信情報を有しない場合は、第4タスクが計算リソース上でまだ実行されていない。結果として、第1タスクは、第4計算リソース上で実行される第4タスクに関する接続情報が利用できるようになるまで、実行を一時停止する。結果として、タスクが第1計算リソース上で実行される必要性、及び追加の計算リソースを利用できるタイミングに応じて、タスクは、計算リソースが利用できるようになるのを待っている間、実行を0回以上一時停止及び再開する必要があるかもしれない。
【0031】
本明細書で説明する動的計算リソース上での並列タスク初期化の方式は、タスク及び計算リソース管理に関連する試みの技術分野において現在利用できる方法では利用できない。本明細書で説明する実施形態の方法は、デバイス又はデータ処理システム上で実行されるように実装されると、第2計算リソース上で第2タスクの実行が開始されるのを待たずに第1計算リソース上で第1タスクの実行をトリガすること、及び第2タスクの実行ステータスを監視することにおける、そのデバイス又はデータ処理システムの機能の大幅な進歩を含む。第2タスクが実行されることを条件とする部分に第1タスクの実行が到達すると、第1タスクは、必要であれば、第2タスクが実行されるまで待機し、次に実行を継続する。
【0032】
例示的な実施形態は、特定のタイプの計算リソース、オーケストレーションフレームワーク、プロセスマネージャ、ジョブ、タスク、タスク間通信情報、応答、デバイス、データ処理システム、環境、コンポーネント、及びアプリケーションに関して、単に例として説明されている。これら及び他の同様の人工物の任意の特定の出現は、本発明の限定するものとして意図していない。これら及び他の同様の人工物の任意の好適な出現は、例示的な実施形態の範囲内で選択され得る。
【0033】
更に、例示的な実施形態は、任意のタイプのデータ、データソース、又はデータネットワークを介したデータソースへのアクセスに関して実装され得る。本発明の範囲内において、データ処理システムにおいてローカルで、又はデータネットワークを介してのいずれかで、任意のタイプのデータ記憶デバイスが本発明の一実施形態にデータを提供し得る。一実施形態がモバイルデバイスを使用して説明される場合、例示的な実施形態の範囲内において、モバイルデバイスにおいてローカルで、又はデータネットワークを介してのいずれかで、モバイルデバイスとの使用に好適な任意のタイプのデータ記憶デバイスがそのような実施形態にデータを提供し得る。
【0034】
例示的な実施形態は、例としてのみ特定のコード、設計、アーキテクチャ、プロトコル、レイアウト、図式、及びツールを使用して説明され、これらは例示的な実施形態に限定されない。更に、例示的な実施形態は、いくつかの例において、説明の明確性のために一例としてのみ、特定のソフトウェア、ツール、及びデータ処理環境を使用して説明される。例示的な実施形態は、他の同等の又は同様の目的の構造、システム、アプリケーション、又はアーキテクチャと共に使用され得る。例えば、他の同等のモバイルデバイス、構造、システム、アプリケーション、又はそのためのアーキテクチャは、本発明の範囲内において、本発明のそのような実施形態と共に使用され得る。例示的な実施形態は、ハードウェア、ソフトウェア、又はそれらの組み合わせにおいて実装され得る。
【0035】
本開示における例は、説明の明確さのためのみに使用され、例示的な実施形態に限定するものではない。本開示から追加のデータ、動作、アクション、タスク、アクティビティ、及び操作が考えられ、それらは例示的な実施形態の範囲内において企図されている。
【0036】
本明細書に列挙される任意の利点は、例のみであり、例示的な実施形態を限定することを意図していない。特定の例示的な実施形態により追加の又は異なる利点が実現され得る。更に、特定の例示的な実施形態は、上に列挙した利点の一部若しくは全部を有し得るか、又はそれらを全く有しない場合がある。
【0037】
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書において記載される教示の実装はクラウドコンピューティング環境に限定されないことが理解されるべきである。むしろ、本発明の実施形態は、現在知られている又は今後に開発される任意の他のタイプのコンピューティング環境と共に実装されることが可能である。
【0038】
クラウドコンピューティングは、管理の労力又はサービスのプロバイダとの対話を最小限に抑えながら迅速にプロビジョニング及びリリースされ得る、構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールに対する便利なオンデマンドネットワークアクセスを可能にするための、サービス提供モデルである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、及び少なくとも4つの展開モデルを含み得る。
【0039】
特性は、以下のとおりである。
【0040】
オンデマンドセルフサービス:クラウドコンシューマは、サービスプロバイダとの人的対話を必要とすることなく、必要に応じて自動的に、サーバ時間及びネットワークストレージ等のコンピューティング能力を一方的にプロビジョニングすることができる。
【0041】
幅広いネットワークアクセス:この能力は、ネットワークを介して利用可能であり、異種のシン又はシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促す標準メカニズムを通してアクセスされる。
【0042】
リソースプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを使用して複数のコンシューマに役立つようプールされ、異なる物理リソース及び仮想リソースが、需要に従って動的に割り当て及び再割り当てされる。コンシューマは概して提供されたリソースの正確なロケーションに対して制御又は知識を有しないが、より高いレベルの抽象化(例えば、国、州、又はデータセンタ)においてロケーションを指定することが可能である場合があるという点で、ロケーションの独立性がある。
【0043】
迅速な弾力性:この能力は、迅速且つ弾力的に、いくつかの場合では自動的にプロビジョニングして、早急にスケールアウトし、且つ迅速にリリースして早急にスケールインすることができる。コンシューマにとっては、多くの場合、プロビジョニングに利用可能な能力が無制限にあるように感じられ、また、いつでもどんな量でも購入することができる。
【0044】
測定されるサービス:クラウドシステムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅及びアクティブユーザアカウント)に適切な或るレベルの抽象化における計測能力を活用することによって、自動的にリソース使用を制御及び最適化する。リソース使用は、監視され、制御され、また報告され得、利用されるサービスのプロバイダ及びコンシューマの両方に透明性を提供する。
【0045】
サービスモデルは、以下のとおりである。
【0046】
ソフトウェアアズアサービス(SaaS):コンシューマに提供される能力は、クラウドインフラストラクチャ上で実行されるプロバイダのアプリケーションを使用することである。このアプリケーションは、ウェブブラウザ(例えば、ウェブベースの電子メール)等のシンクライアントインタフェースを通じて、様々なクライアントデバイスからアクセス可能である。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、ストレージ、又は更には個々のアプリケーション能力を含む基礎となるクラウドインフラストラクチャを管理又は制御しないが、限定されたユーザ固有のアプリケーション構成設定は例外であり得る。
【0047】
プラットフォームアズアサービス(PaaS):コンシューマに提供される能力は、クラウドインフラストラクチャ上に、プロバイダによってサポートされるプログラミング言語及びツールを使用して作成される、コンシューマが作成又は取得したアプリケーションを展開することである。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、又はストレージを含む基礎となるクラウドインフラストラクチャを管理又は制御しないが、展開されたアプリケーション、及び、場合によっては、環境構成をホストするアプリケーションに対する制御を有する。
【0048】
インフラストラクチャアズアサービス(IaaS):コンシューマに提供される能力は、処理、ストレージ、ネットワーク及び他の基本的なコンピューティングリソースをプロビジョニングすることであり、ここでコンシューマは、オペレーティングシステム及びアプリケーションを含むことができる任意のソフトウェアを展開及び実行することが可能である。コンシューマは、基礎となるクラウドインフラストラクチャを管理又は制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーション、及び、場合によっては、選択されたネットワーキングコンポーネント(例えばホストファイアウォール)の限定された制御に対する制御を有する。
【0049】
展開モデルは以下のとおりである。
【0050】
プライベートクラウド:このクラウドインフラストラクチャは、或る組織のためにのみ動作する。プライベートクラウドは、その組織又はサードパーティによって管理されてよく、オンプレミス又はオフプレミスで存在してよい。
【0051】
コミュニティクラウド:このクラウドインフラストラクチャは、いくつかの組織によって共有され、共有される関心事項(例えば、ミッション、セキュリティ要件、ポリシ及び遵守性考慮事項)を有する特定のコミュニティをサポートする。コミュニティクラウドは、それらの組織又はサードパーティによって管理されてよく、オンプレミス又はオフプレミスで存在してよい。
【0052】
パブリッククラウド:このクラウドインフラストラクチャは、一般大衆又は大規模な業界団体に利用可能とされ、クラウドサービスを販売する組織によって所有される。
【0053】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ又はそれより多くのクラウド(プライベート、コミュニティ、又はパブリック)の複合体であり、2つ又はそれより多くのクラウドは、独自のエンティティのままであるが、データ及びアプリケーションのポータビリティ(例えば、クラウド間の負荷分散のためのクラウドバースト)を可能にする標準技術又は独自技術によって共に結合される。
【0054】
クラウドコンピューティング環境は、ステートレス性、低結合性、モジュール性、及びセマンティック相互運用性に重点を置いたサービス指向型である。クラウドコンピューティングの中核には、相互接続されたノードからなるネットワークを含むインフラストラクチャが存在する。
【0055】
図を参照すると、特に、図1及び2を参照すると、これらの図は、例示的な実施形態が実装され得るデータ処理環境の例示的なダイアグラムである。図1及び2は、例のみであり、異なる実施形態が実装され得る環境に関していかなる限定も主張又は示唆することは意図していない。特定の実装は、以下の説明に基づいて、示される環境に対して多くの修正をなし得る。
【0056】
図1は、例示的な実施形態が実装され得るデータ処理システムのネットワークのブロック図を示す。データ処理環境100は、例示的な実施形態が実装され得る、コンピュータのネットワークである。データ処理環境100はネットワーク102を含む。ネットワーク102は、データ処理環境100内で共に接続された様々なデバイス及びコンピュータの間に通信リンクを提供するのに使用される媒体である。ネットワーク102は、有線若しくは無線通信リンク、又は光ファイバケーブル等の接続を含み得る。
【0057】
クライアント又はサーバは、ネットワーク102に接続された特定のデータ処理システムの例示的な役割のみであり、これらのデータ処理システムの他の構成又は役割を排除することは意図していない。サーバ104及びサーバ106は、記憶ユニット108と共にネットワーク102に連結する。ソフトウェアアプリケーションは、データ処理環境100内の任意のコンピュータ上で実行し得る。クライアント110、112及び114もネットワーク102に連結される。サーバ104若しくは106又はクライアント110、112若しくは114等のデータ処理システムはデータを含んでよく、そこで実行しているソフトウェアアプリケーション又はソフトウェアツールを有してよい。
【0058】
一例としてのみ、且つ、そのようなアーキテクチャに対していかなる限定も示唆することなく、図1は、一実施形態の例示的な実装において使用可能な特定のコンポーネントを示す。例えば、サーバ104及び106、及びクライアント110、112、114は、例としてのみ、サーバ及びクライアントとして示されており、クライアントサーバアーキテクチャへの限定を示唆するものではない。別の例として、一実施形態は、示されるように、いくつかのデータ処理システム及びデータネットワークにわたって分散され得る一方、別の実施形態は、例示的な実施形態の範囲内において、単一のデータ処理システム上に実装され得る。データ処理システム104、106、110、112及び114はまた、一実施形態を実装するために好適なクラスタ、区画、及び他の構成における例示的なノードを表す。
【0059】
デバイス132は、本明細書で説明されるデバイスの一例である。例えば、デバイス132は、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、静置型若しくはポータブル型の形態のクライアント110、ウェアラブルコンピューティングデバイス、又は任意の他の好適なデバイスの形態を取り得る。図1において別のデータ処理システムで実行されるものとして説明されている任意のソフトウェアアプリケーションは、同様の方式でデバイス132において実行するように構成され得る。図1における別のデータ処理システムにおいて記憶された又は生み出された任意のデータ又は情報は、同様の方式でデバイス132において記憶される又は生み出されるように構成され得る。
【0060】
アプリケーション105は、本明細書で説明される一実施形態を実装する。アプリケーション105は、サーバ104及び106、クライアント110、112、及び114、及びデバイス132のいずれかで実行される。リモートプロセスマネージャ、ローカルプロセスマネージャ、又はタスク内でアプリケーション105の一部を実装することができ、異なるシステムでアプリケーション105の異なる部分を実行することができる。
【0061】
サーバ104及び106、記憶ユニット108、クライアント110、112及び114、及びデバイス132は、有線接続、無線通信プロトコル、又は他の好適なデータ接続を使用してネットワーク102に連結し得る。クライアント110、112及び114は、例えば、パーソナルコンピュータ又はネットワークコンピュータであり得る。
【0062】
示される例において、サーバ104は、ブートファイル、オペレーティングシステム画像、及びアプリケーション等のデータをクライアント110、112及び114に提供し得る。クライアント110、112及び114は、この例において、サーバ104のクライアントであり得る。クライアント110、112、114、又はそれらのいくつかの組み合わせは、それら自体のデータ、ブートファイル、オペレーティングシステム画像、及びアプリケーションを含み得る。データ処理環境100は、示されていない追加のサーバ、クライアント、及び他のデバイスを含み得る。
【0063】
示される例において、データ処理環境100はインターネットであり得る。ネットワーク102は、伝送制御プロトコル/インターネットプロトコル(TCP/IP)及び他のプロトコルを使用して互いに通信するネットワーク及びゲートウェイの集合を表し得る。インターネットの中核には、データ及びメッセージをルーティングする何千もの商業用、政府用、教育用、及び他のコンピュータシステムを含む、主要なノード又はホストコンピュータ間のデータ通信リンクのバックボーンが存在する。もちろん、データ処理環境100も、例えば、イントラネット、ローカルエリアネットワーク(LAN)、又はワイドエリアネットワーク(WAN)等の、数々の異なるタイプのネットワークとして実装され得る。図1は一例として意図されており、異なる例示的な実施形態に対するアーキテクチャの限定としては意図されない。
【0064】
他の使用の中でも、データ処理環境100は、例示的な実施形態が実装され得るクライアントサーバ環境を実装するために使用され得る。クライアントサーバ環境により、クライアントデータ処理システム及びサーバデータ処理システムの間のインタラクティブ性を使用することによってアプリケーションが機能するように、ネットワークにわたってソフトウェアアプリケーション及びデータが分散されることが可能になる。データ処理環境100はまた、ネットワークに分散される相互運用性ソフトウェアコンポーネントが一貫したビジネスアプリケーションとしてパッケージングされ得るサービス指向アーキテクチャを採用し得る。データ処理環境100はクラウドの形態を取ってもよく、最小限の管理労力又はサービスのプロバイダとの対話で迅速にプロビジョニング及びリリースができる、構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの便利なオンデマンドネットワークアクセスを可能にするサービス提供のクラウドコンピューティングモデルを採用してもよい。
【0065】
図2を参照すると、この図は、例示的な実施形態が実装され得るデータ処理システムのブロック図を示す。データ処理システム200は、図1のサーバ104及び106又はクライアント110、112及び114等のコンピュータ、又は、プロセスを実装しているコンピュータ使用可能プログラムコード若しくは命令が例示的な実施形態のために位置し得る別のタイプのデバイスの一例である。
【0066】
データ処理システム200はまた、例示的な実施形態のプロセスを実装しているコンピュータ使用可能プログラムコード又は命令が位置し得る、図1のデータ処理システム132等のデータ処理システム又はその中の構成を表し得る。データ処理システム200は、一例としてのみコンピュータとして説明されているが、それに限定されない。図1のデバイス132等の他のデバイスの形態での実装は、本明細書に記載されるデータ処理システム200の動作及び機能の一般的な説明から逸脱することなく、例えばタッチインタフェースを追加することによってデータ処理システム200を修正し得、更には、特定の示されるコンポーネントをデータ処理システム200から除き得る。
【0067】
図示されている例では、データ処理システム200には、ノースブリッジ及びメモリコントローラハブ(NB/MCH)202、及び、サウスブリッジ及び入力/出力(I/O)コントローラハブ(SB/ICH)204を含むハブアーキテクチャを採用する。処理ユニット206、メインメモリ208、及びグラフィックスプロセッサ210は、ノースブリッジ及びメモリコントローラハブ(NB/MCH)202に連結される。処理ユニット206は、1つ又は複数のプロセッサを含み得、1つ又は複数の異種のプロセッサシステムを使用して実装され得る。処理ユニット206はマルチコアプロセッサであり得る。グラフィックスプロセッサ210は、特定の実装において加速グラフィックスポート(AGP)を通じてNB/MCH202に連結され得る。
【0068】
示される例において、ローカルエリアネットワーク(LAN)アダプタ212は、サウスブリッジ及びI/Oコントローラハブ(SB/ICH)204に連結される。オーディオアダプタ216、キーボード及びマウスアダプタ220は、モデム222、リードオンリメモリ(ROM)224、ユニバーサルシリアルバス(USB)及び他のポート232、及びPCI/PCIeデバイス234は、バス238を通じてサウスブリッジ及びI/Oコントローラハブ204に連結される。ハードディスクドライブ(HDD)又はソリッドステートドライブ(SSD)226及びCD-ROM230は、バス240を通じてサウスブリッジ及びI/Oコントローラハブ204に連結される。PCI/PCIeデバイス234は、例えば、イーサネット(登録商標)アダプタ、アドインカード、及びノートブックコンピュータ用のPCカードを含み得る。PCIはカードバスコントローラを使用する一方、PCIeはそれを使用しない。ROM224は、例えば、フラッシュバイナリ入力/出力システム(BIOS)であり得る。ハードディスクドライブ226及びCD-ROM230は、例えば、統合デバイスエレクトロニクス(IDE)、シリアルアドバンストテクノロジーアタッチメント(SATA)インタフェース、又は、外部SATA(eSATA)及びマイクロSATA(mSATA)等のその変形を使用し得る。スーパI/O(SIO)デバイス236は、バス238を通じてサウスブリッジ及びI/Oコントローラハブ(SB/ICH)204に連結され得る。
【0069】
メインメモリ208、ROM224、又はフラッシュメモリ(図示せず)等のメモリは、コンピュータ使用可能記憶デバイスのいくつかの例である。ハードディスクドライブ又はソリッドステートドライブ226、CD-ROM230、及び他の同様に使用可能なデバイスは、コンピュータ使用可能記憶媒体を含むコンピュータ使用可能記憶デバイスのいくつかの例である。
【0070】
オペレーティングシステムは処理ユニット206上で実行する。オペレーティングシステムは、図2のデータ処理システム200内の様々なコンポーネントの制御を整合し、提供する。オペレーティングシステムは、サーバシステム、パーソナルコンピュータ、及びモバイルデバイスを含むがこれらに限定されない任意のタイプのコンピューティングプラットフォーム用の市販のオペレーティングシステムであり得る。オブジェクト指向型又は他のタイプのプログラミングシステムがオペレーティングシステムと共に動作してもよく、データ処理システム200で実行するプログラム又はアプリケーションからオペレーティングシステムへの呼び出しを提供し得る。
【0071】
オペレーティングシステム、オブジェクト指向型プログラミングシステム、及び、図1のアプリケーション105等のアプリケーション又はプログラムに対する命令は、例えばハードディスクドライブ226上のコード226Aの形態で、記憶デバイス上に位置し、処理ユニット206による実行のために、1つ又は複数のメモリのうちの少なくとも1つ、例えばメインメモリ208にロードされ得る。例示的な実施形態のプロセスは、例えばメインメモリ208、リードオンリメモリ224等のメモリ、又は1つ若しくは複数の周辺デバイスに位置し得るコンピュータ実装命令を使用して、処理ユニット206により実行され得る。
【0072】
更に、1つの場合では、コード226Aは、リモートシステム201Bからネットワーク201Aを介してダウンロードされ得る一方、同様のコード201Cは記憶デバイス201Dに記憶されている。別の場合では、コード226Aは、ネットワーク201Aを介してリモートシステム201Bにダウンロードされ得る一方、ダウンロードされたコード201Cは、記憶デバイス201Dに記憶される。
【0073】
図1~2のハードウェアは、実装に応じて変化し得る。他の内部ハードウェア又は周辺デバイス、例えば、フラッシュメモリ、同等の不揮発性メモリ、又は光学ディスクドライブ等が、図1~2に示されるハードウェアに加えて又はその代わりに使用されてよい。また、例示的な実施形態のプロセスは、マルチプロセッサデータ処理システムに適用され得る。
【0074】
いくつかの例示的な例において、データ処理システム200は、概して、オペレーティングシステムファイル若しくはユーザが生成したデータ又はその組み合わせを記憶するための不揮発性メモリを提供するためにフラッシュメモリを有するように構成されるパーソナルデジタルアシスタント(PDA)であり得る。バスシステムは、1つ又は複数のバス、例えば、システムバス、I/Oバス、及びPCIバスを含み得る。もちろん、バスシステムは、ファブリック又はアーキテクチャに取り付けられた異なるコンポーネント又はデバイス間でデータの転送を提供する任意のタイプの通信ファブリック又はアーキテクチャを使用して実装されてよい。
【0075】
通信ユニットは、データの送受信に使用される、モデム又はネットワークアダプタ等の1つ又は複数のデバイスを含み得る。メモリは、例えば、メインメモリ208又はキャッシュ、例えば、ノースブリッジ及びメモリコントローラハブ202において見られるキャッシュであり得る。処理ユニットは、1つ又は複数のプロセッサ又はCPUを含み得る。
【0076】
図1~2において示される例及び上記の例は、アーキテクチャの限定を示唆することを意味するものではない。例えば、データ処理システム200はまた、モバイルデバイス又はウェアラブルデバイスの形態を取るものに加えて、タブレットコンピュータ、ラップトップコンピュータ、又は電話デバイスであり得る。
【0077】
コンピュータ又はデータ処理システムが仮想マシン、仮想デバイス、又は仮想コンポーネントとして説明される場合、その仮想マシン、仮想デバイス、又は仮想コンポーネントは、データ処理システム200に示される一部又はすべてのコンポーネントの仮想化された人工物を使用してデータ処理システム200の方式で動作する。例えば、仮想マシン、仮想デバイス、又は仮想コンポーネントにおいて、処理ユニット206は、ホストデータ処理システムにおいて利用可能なハードウェア処理ユニット206のすべて又はいくつかの仮想化インスタンスとして現れ、メインメモリ208は、ホストデータ処理システムにおいて利用可能であり得るメインメモリ208のすべて又は一部の仮想化インスタンスとして現れ、ディスク226は、ホストデータ処理システムにおいて利用可能であり得るディスク226のすべて又は一部の仮想化インスタンスとして現れる。そのような場合におけるホストデータ処理システムは、データ処理システム200により表される。
【0078】
図3を参照すると、この図は、例示的な実施形態に係る動的計算リソース上での並列タスク初期化のための例示的な構成のブロック図を示す。アプリケーション300は、図1のアプリケーション105の一例であり、図1のサーバ104及び106、クライアント110、112及び114、及びデバイス132のいずれかで実行される。
【0079】
ルートプロセスマネージャ310は、オーケストレーションフレームワーク又は別のソースから、ジョブ及びそのジョブの割り当てられた計算リソースのセットに関するデータを受信する。
同様に、ルートプロセスマネージャ310は、計算リソースをタスク実行に利用できるというイベント通知を受信する。ルートプロセスマネージャ310の一実装は、ルートプロセスマネージャ310に通知すべき特定のタイプのイベントをオーケストレーションフレームワーク又は他のイベントソースに通知することにより、計算リソース発見イベントにサブスクライブする。ルートプロセスマネージャ310の別の実装は、サブスクリプションの実装を採用せず、代わりに、割り当てられた計算リソースの利用可能性に関するブロードキャスト通知を受信する。
【0080】
ルートプロセスマネージャ310が、計算リソースをタスク実行に利用できるというイベント通知を受信すると、ルートプロセスマネージャ310は、新たに利用できるようになった計算リソース上でローカルプロセスマネージャを生成し、現在のジョブの一部であり且つ他の計算リソース上で既に実行されているタスクに関する接続情報を提供する。
【0081】
新たに生成されたローカルプロセスマネージャ320は、新たに利用できるようになった計算リソース上で、少なくとも1つのローカルタスクを実行のためにトリガする。ローカルプロセスマネージャ320は、他の計算リソース上で既に実行されているタスクに関する接続情報をローカルタスクに提供し、他の計算リソース上で実行されるローカルプロセスマネージャ320及びルートプロセスマネージャ310の他のインスタンスに、ローカルタスクに関する接続情報を提供する。結果として、現在実行されているジョブ内のタスクはすべて、互いに通信することができる。
【0082】
計算リソース構成中の後の時点で、ルートプロセスマネージャ310は、新たな計算リソースをタスク実行に利用できるというイベント通知を受信し、その新たな計算リソース上でローカルプロセスマネージャ320の第2インスタンスを生成する。ローカルプロセスマネージャ320の第2インスタンスは、ローカルプロセスマネージャ320の第1インスタンスを含むプロセスマネージャネットワークに、自らのローカルタスクに関するタスク接続情報を提供する。このように、第1計算リソース上で実行されるタスクは、新たな計算リソース上で現在実行されているタスクと通信することができる。
【0083】
タスクモジュール330は、ローカルプロセスマネージャ320により実行のためにトリガされ、且つローカルプロセスマネージャ320により管理されるタスクである。
計算リソース構成中の後の時点で、第1計算リソース上で実行されるタスクモジュール330は、実行を継続するために第3タスクと通信する必要がある。タスクモジュール330が第3タスクに関する通信情報を有する場合は、第3タスクが計算リソース(ローカル又はリモート)上で実行されており、タスクモジュール330と通信することができる。このように、タスクモジュール330は引き続き実行される。一方でタスクモジュール330が第3タスクに関する通信情報を有しない場合は、第3タスクが計算リソース上でまだ実行されておらず、第1タスクと通信することができない。結果として、タスクモジュール330は、実行を一時停止する。次に、計算リソース構成中の後の時点で、ルートプロセスマネージャ310は、第3の新たな計算リソースをタスク実行に利用できるというイベント通知を受信し、その第3計算リソース上でローカルプロセスマネージャ320の第3インスタンスを生成する。ローカルプロセスマネージャ320の第3インスタンスは、タスクモジュール330が待っている第3タスクを含む自らのローカルタスクに関するタスク接続情報をプロセスマネージャネットワークに提供する。ローカルプロセスマネージャ320の第1インスタンスは、第3タスクに関する通信情報を受信し、その情報をタスクモジュール330に転送して、第3タスクを利用できる以上は、タスクモジュール330の実行を再トリガする。
【0084】
図4を参照すると、この図は、例示的な実施形態に係る動的計算リソース上での並列タスク初期化のための例示的な構成のブロック図を示す。特に、図4は、図3におけるローカルプロセスマネージャ320の更なる詳細を示す。
【0085】
新たに利用できるようになった計算リソース上のローカルプロセスマネージャ320の新たに生成されたインスタンス内では、タスク生成モジュール410が、少なくとも1つのローカルタスクを実行のためにトリガする。タスクデータ受信マネージャ420が、他の計算リソース上で既に実行されているタスクに関する接続情報をローカルタスクに提供し、タスクデータ通知マネージャ430が、他の計算リソース上で実行される他のプロセスマネージャに、ローカルタスクに関する接続情報を提供する。結果として、現在実行されているジョブ内のタスクはすべて、互いに通信することができる。
【0086】
図5を参照すると、この図は、例示的な実施形態に係る動的計算リソース上での並列タスク初期化の一例を示す。この例は、図3のアプリケーション300を使用して実行され得る。ルートプロセスマネージャ310は、図3のルートプロセスマネージャ310と同じである。
【0087】
ルートプロセスマネージャ310は、オーケストレーションフレームワーク又は別のソースから、ジョブ及び割り当てられた計算リソースデータ510を受信する。
同様に、ルートプロセスマネージャ310は、計算リソースをタスク実行に利用できることを示す計算リソース利用可能イベント520を受信する。
【0088】
ルートプロセスマネージャ310がイベント520を受信すると、ルートプロセスマネージャ310は、生成イベント530を生み出して、新たに利用できるようになった計算リソース上でローカルプロセスマネージャを生成し、現在のジョブの一部であり且つ他の計算リソース上で既に実行されているタスクに関する接続情報を提供する。
【0089】
図6を参照すると、この図は、例示的な実施形態に係る動的計算リソース上での並列タスク初期化の一例を示す。この例は、図3のアプリケーション300を使用して実行され得る。
【0090】
時間602では、計算リソース構成中に、ローカルプロセスマネージャインスタンス616が、新たに利用できるようになった計算リソース上で生成されたばかりである。イベント620では、現在のジョブの一部であり且つ他の計算リソース上で既に実行されているタスクに関する接続情報が、プロセスマネージャネットワーク610からローカルプロセスマネージャインスタンス616に渡される。イベント622では、ローカルプロセスマネージャインスタンス616が、ローカルタスクであるタスク620を生成して、タスク620を実行のためにトリガする。イベント624では、タスク620が自らに関する接続情報をローカルプロセスマネージャインスタンス616に提供し、イベント626では、ローカルプロセスマネージャインスタンス616がプロセスマネージャネットワーク610にタスク620の接続情報を提供して、他の計算リソース上で実行される他のプロセスマネージャに中継する。結果として、現在実行されているジョブ内のタスクはすべて、互いに通信することができる。
【0091】
計算リソース構成中の後の時点である時間604では、ルートプロセスマネージャが、新たな計算リソースをタスク実行に利用できるというイベント通知を受信し、その新たな計算リソース上で第2ローカルプロセスマネージャを生成する。第2ローカルプロセスマネージャは、自らのローカルタスクに関するタスク接続情報をプロセスマネージャネットワーク610に提供する。イベント630では、新たなタスク接続情報がローカルプロセスマネージャインスタンス616に提供される。イベント632では、ローカルプロセスマネージャインスタンス616がタスク620に新たなタスク接続情報を転送する。このように、タスク620は、新たな計算リソース上で現在実行されているタスクと通信することができる。
【0092】
計算リソース構成中の後の時点である時間606では、タスク620が、実行を継続するために第3タスクと通信する必要がある。タスク620が第3タスクに関する通信情報を有する場合は、第3タスクが計算リソース(ローカル又はリモート)上で実行されており、タスク620と通信することができ、タスク620が引き続き実行される。図6は、タスク620が第3タスクに関する通信情報を有しない代替案を示す。なぜなら、第3タスクは、計算リソース上でまだ実行されておらず、タスク620と通信できないからである。結果として、イベント640では、タスク620が実行を一時停止し、これをローカルプロセスマネージャインスタンス616に報告する。次に、計算リソース構成中の後の時点では、第3の新たな計算リソースがタスク実行に利用できるようになり、第3ローカルプロセスマネージャが第3計算リソース上に生成される。第3ローカルプロセスマネージャは、第1タスクが待っている第3タスクを含む自らのローカルタスクに関するタスク接続情報をプロセスマネージャネットワーク610に提供する。イベント642では、ローカルプロセスマネージャインスタンス616が第3タスクに関する通信情報を受信し、イベント644では、その情報をタスク620に転送して、第3タスクを利用できる以上は、タスク620の実行を再トリガする。
【0093】
図7を参照すると、この図は、例示的な実施形態に係る動的計算リソース上での並列タスク初期化のための例示的なプロセスのフローチャートを示す。図3のアプリケーション300では、プロセス700が実装され得る。
【0094】
ブロック702では、アプリケーションが、第2リソース上で第2タスクが実行されることを条件とする部分を有する第1タスクを、第1計算リソース上での実行のためにトリガする。ブロック704では、アプリケーションが、第2タスクが現在実行されているかどうかを判断する。実行されていれば(ブロック704の「YES」進路)、ブロック706で、アプリケーションがその部分の実行を完了し、次に終了する。そうでなければ(ブロック704の「NO」進路)、ブロック708で、アプリケーションが、第2タスクが現在実行されているという通知が受信されるまで、その部分の実行を阻止する。ブロック710では、アプリケーションが、第2計算リソース上で実行される第2タスクに関する受信された接続情報を第1タスクに転送する。ブロック712では、アプリケーションがその部分の実行を再トリガする。次に、アプリケーションが終了する。
【0095】
図8を参照すると、この図は、例示的な実施形態に係る動的計算リソース上での並列タスク初期化のための例示的なプロセスのフローチャートを示す。図3のアプリケーション300では、プロセス800が実装され得る。
【0096】
ブロック802では、アプリケーションが、リモート計算リソース上で実行されるタスクに関する接続情報を利用できないと判断する。ブロック804では、アプリケーションが、接続情報が必要であることをプロセスマネージャに通知する。ブロック806では、アプリケーションが、接続情報が受信されたかどうかをチェックする。受信されていなければ(ブロック806の「NO」進路)、アプリケーションがブロック806に留まって、接続情報を待つ。そうでなければ(ブロック806の「YES」進路)、ブロック808で、アプリケーションが、タスクとの通信に接続情報を使用して、実行を再開する。次に、アプリケーションが終了する。
【0097】
ここで図9を参照すると、例示的なクラウドコンピューティング環境50が示されている。図示のように、クラウドコンピューティング環境50は、クラウドコンシューマにより使用されるローカルコンピューティングデバイス(例えば、パーソナルデジタルアシスタント(PDA)若しくはセルラ電話機54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、又は、自動車コンピュータシステム54N、あるいは、又はその組み合わせ等)が通信をすることができる1つ又は複数のクラウドコンピューティングノード10を含む。ノード10は、互いに通信してよい。ノード10は、本明細書の上記で説明されたようなプライベートクラウド、コミュニティクラウド、パブリッククラウド、若しくはハイブリッドクラウド、又はこれらの組み合わせ等の、1つ又は複数のネットワーク内で物理的に又は仮想的にグループ化されてよい(図示せず)。これにより、クラウドコンピューティング環境50は、インフラストラクチャ、プラットフォーム、若しくはソフトウェア、又はその組み合わせを、クラウドコンシューマがそのためにローカルコンピューティングデバイス上にリソースを維持する必要がないサービスとして提供することが可能になる。示されるコンピューティングデバイス54A~Nのタイプは、例示のみを意図し、コンピューティングノード10及びクラウドコンピューティング環境50は、任意のタイプのネットワーク若しくはネットワークアドレス指定可能な接続(例えば、ウェブブラウザを使用して)又はその両方を通して、任意のタイプのコンピュータ化されたデバイスと通信可能であることを理解されたい。
【0098】
ここで図10を参照すると、クラウドコンピューティング環境50(図9)によって提供される機能抽象化層のセットが示されている。示されるコンポーネント、層、及び機能が、例示のみを意図するものであり、本発明の実施形態がそれに限定されるものではないことを、前もって理解されるべきである。図示されているように、以下の層及び対応する機能が提供されている。
【0099】
ハードウェア及びソフトウェア層60は、ハードウェアコンポーネント及びソフトウェアコンポーネントを備える。ハードウェアコンポーネントの例としては、メインフレーム61、RISC(縮小命令セットコンピュータ)アーキテクチャベースサーバ62、サーバ63、ブレードサーバ64、記憶デバイス65、並びに、ネットワーク及びネットワーキングコンポーネント66が挙げられる。いくつかの実施形態では、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67及びデータベースソフトウェア68を備える。
【0100】
仮想化層70は、仮想サーバ71;仮想ストレージ72;仮想プライベートネットワークを含む仮想ネットワーク73;仮想アプリケーション及びオペレーティングシステム74;及び仮想クライアント75である、仮想エンティティの例が提供され得る抽象化層を提供する。
【0101】
1つの例では、管理層80は、以下で説明される機能を提供してよい。リソースプロビジョニング81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソース及び他のリソースの動的な調達を提供する。計測及び価格設定82は、リソースがクラウドコンピューティング環境内で利用されるときのコスト追跡、及び、これらのリソースの消費に対する課金又は請求書を提供する。1つの例では、これらのリソースは、アプリケーションソフトウェアライセンスを含んでよい。セキュリティが、クラウドコンシューマ及びタスクについてのアイデンティティ検証、並びにデータ及び他のリソースについての保護を行う。ユーザポータル83は、コンシューマ及びシステムアドミニストレータに対してクラウドコンピューティング環境へのアクセスを提供する。サービス水準管理84は、要求されるサービス水準が満たされるように、クラウドコンピューティングリソース割り当て及び管理を提供する。サービス水準合意(SLA)計画及び履行85は、将来の要件がSLAに従って予期されるクラウドコンピューティングリソースの事前の取り決め及び調達を提供する。
【0102】
ワークロード層90は、クラウドコンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロード及び機能の非限定的な例は、マッピング及びナビゲーション91、ソフトウェア開発及びライフサイクル管理92、仮想クラスルーム教育配信93、データ分析処理94、トランザクション処理95、及び、合成システム障害生成ソフトウェア96に基づくアプリケーション選択を含む。
【0103】
このように、動的計算リソース上での並列タスク初期化、及び他の関連する特徴、機能、又は動作のための例示的な実施形態において、コンピュータ実装方法、システム又は装置、及びコンピュータプログラム製品が提供される。一実施形態又はその一部があるタイプのデバイス、コンピュータ実装方法、システム、又は装置に関して説明される場合、コンピュータプログラム製品又はその一部は、そのタイプのデバイスの好適且つ同等の出現を伴う使用のために適合又は構成される。
【0104】
一実施形態がアプリケーションにおいて実装されるものとして説明される場合、サービスとしてのソフトウェア(SaaS)モデルでのアプリケーションの提供が例示的な実施形態の範囲内において企図される。SaaSモデルにおいて、クラウドインフラストラクチャにおいてアプリケーションを実行することによって、一実施形態を実装するアプリケーションの能力がユーザに提供される。ユーザは、多様なクライアントデバイスを使用して、ウェブブラウザ(例えば、ウェブベースの電子メール)、又は他の軽量クライアントアプリケーション等のシンクライアントインタフェースを通じてアプリケーションにアクセスすることができる。ユーザは、ネットワーク、サーバ、オペレーティングシステム、又はクラウドインフラストラクチャのストレージを含む、基礎となるクラウドインフラストラクチャを管理又は制御しない。いくつかの場合では、ユーザは、SaaSアプリケーションの能力の管理又は制御さえ行わない場合がある。いくつかの他の場合では、アプリケーションのSaaS実装は、限定されたユーザ固有のアプリケーション構成設定の考えられる例外を許容し得る。
【0105】
本発明は、任意の考えられる技術詳細レベルで統合化されたシステム、方法、若しくはコンピュータプログラム製品、又はその組み合わせであり得る。コンピュータプログラム製品は、本発明の態様をプロセッサに実行させるためにコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含んでよい。
【0106】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるように命令を保持及び記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、又は上述のものの任意の好適な組み合わせであり得るが、これらに限定されるものではない。コンピュータ可読記憶媒体のより具体的な例の非包括的なリストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピディスク、パンチカード又は命令が記録されている溝内の隆起構造等の機械的にエンコードされたデバイス、及び、上述のものの任意の好適な組み合わせを含む。本明細書において使用されるコンピュータ可読記憶媒体は、電波又は他の自由に伝播する電磁波、導波路又は他の伝送媒体を通って伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又はワイヤを通じて伝送される電気信号等、それ自体が一時的な信号であると解釈されるべきではない。
【0107】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされ得、あるいは、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、若しくは無線ネットワーク、又はその組み合わせを介して、外部コンピュータ又は外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、若しくはエッジサーバ、又はその組み合わせを備え得る。各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【0108】
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データであってもよく、Smalltalk(登録商標)又はC++等のようなオブジェクト指向型プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語のような手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述したソースコード又はオブジェクトコードであってもよい。コンピュータ可読プログラム命令は、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で全体を実行すること、ユーザのコンピュータ上で一部分を実行することができ、ユーザのコンピュータ上で一部分を、リモートのコンピュータ上で一部分を実行すること、又は、リモートのコンピュータ若しくはサーバ上で全体を実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)若しくはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、又はその接続は、外部コンピュータに対して(例えば、インターネットサービスプロバイダを使用してインターネットを介して)行われてもよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズしてよい。
【0109】
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図若しくはブロック図又はその両方を参照して、説明されている。フローチャート図若しくはブロック図又はその組み合わせの各ブロックと、フローチャート図若しくはブロック図又はその組み合わせにおける各ブロックの組み合わせとは、コンピュータ可読プログラム命令により実装され得ることが理解されよう。
【0110】
これらのコンピュータ可読プログラム命令をコンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供してマシンを生み出してよく、それにより、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート若しくはブロック図、又はその両方の1つ又は複数のブロックで指定された機能/動作を実装する手段を作成するようになる。また、これらのコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体に記憶されてよく、当該命令は、コンピュータ、プログラマブルデータ処理装置若しくは他のデバイス、又はその組み合わせに対し、特定の方式で機能するよう命令することができ、それにより、命令を記憶したコンピュータ可読記憶媒体は、フローチャート若しくはブロック図、又はその両方の1つ又は複数のブロックで指定された機能/動作の態様を実装する命令を含む製品を含むようになる。
【0111】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブルデータ処理装置、又は、他のデバイスにロードして、コンピュータ、他のプログラマブル装置、又は、他のデバイス上で一連の動作段階を実行させることでコンピュータ実装プロセスを生み出すこともでき、これにより、コンピュータ、他のプログラマブル装置、又は、他のデバイス上で実行される命令が、フローチャート若しくはブロック図の、又はその両方の1つ又は複数のブロックで指定される機能/動作を実装するようになる。
【0112】
図面におけるフローチャート及びブロック図は、本発明の様々な実施形態によるシステム、方法、及びコンピュータプログラム製品の考えられる実装のアーキテクチャ、機能、及び動作を示している。これに関して、フローチャート又はブロック図における各ブロックは、指定された論理機能を実装する1つ又は複数の実行可能命令を含む命令のモジュール、セグメント、又は一部を表し得る。いくつかの代替的な実装において、ブロックに記されている機能は、図面に記されている順序とは異なる順序で行われ得る。例えば、連続して示されている2つのブロックは、実際には、1つの段階として達成されても、同時に、実質的に同時に、部分的に若しくは全体的に時間重複する形で実行されてもよいし、ブロックは、関与する機能に依存して逆の順序で実行される場合もあり得る。ブロック図若しくはフローチャート図又はその組み合わせの各ブロック、及び、ブロック図若しくはフローチャート図又はその組み合わせにおけるブロックの組み合わせが、指定された機能若しくは動作を実行する、又は特定用途向けハードウェア及びコンピュータ命令の組み合わせを実行する、特定用途向けハードウェアベースのシステムによって実装され得ることにも留意されたい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【手続補正書】
【提出日】2023-04-17
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
第1計算リソース上で第1タスクの実行をトリガする段階、ここで前記第1タスクの一部の実行は、第2タスクが第2計算リソース上で実行されることを条件とする;
前記第2タスクの状態インジケータを監視する段階、ここで前記状態インジケータは、前記第2タスクが前記第2計算リソース上で現在実行されているかどうかを示す;
前記第2タスクが現在実行されていないことを前記状態インジケータが示していることに応答して、前記第1タスクの前記一部の実行を一時停止する段階;
前記状態インジケータの変化が生じたと判断する段階;
前記判断する段階に応答して、前記第2タスクに関する受信された接続情報を前記第1タスクに転送する段階;及び
前記第1計算リソース上で前記第1タスクの前記一部の実行を再トリガする段階
を備えるコンピュータ実装方法。
【請求項2】
前記監視する段階は、前記一部に到達する前の前記第1タスクの前記実行と同時に実行される、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記一時停止する段階は、前記第1タスクの実行が前記一部に到達したという通知を受信することに応答して実行される、請求項1または2に記載のコンピュータ実装方法。
【請求項4】
前記第2タスクが現在実行されていることを前記状態インジケータが示していることに応答して、前記第1タスクの前記一部を実行する段階
を更に備える、請求項1から3のいずれか一項に記載のコンピュータ実装方法。
【請求項5】
前記状態インジケータは、前記受信された接続情報を含む、請求項1から4のいずれか一項に記載のコンピュータ実装方法。
【請求項6】
前記第1タスクの前記一部の実行は、前記第2タスクから受信されたデータを処理することを含み、前記データは、前記受信された接続情報を使用して受信される、請求項5に記載のコンピュータ実装方法。
【請求項7】
動的計算リソース上での並列タスク初期化のためのコンピュータプログラムあって、前記コンピュータプログラムはコンピュータに
1計算リソース上で第1タスクの実行をトリガする手順、ここで前記第1タスクの一部の実行は、第2タスクが第2計算リソース上で実行されることを条件とする;
前記第2タスクの状態インジケータを監視する手順、ここで前記状態インジケータは、前記第2タスクが前記第2計算リソース上で現在実行されているかどうかを示す;
前記第2タスクが現在実行されていないことを前記状態インジケータが示していることに応答して、前記第1タスクの前記一部の実行を一時停止する手順
前記状態インジケータの変化が生じたと判断する手順
前記判断することに応答して、前記第2タスクに関する受信された接続情報を前記第1タスクに転送する手順;及び
前記第1計算リソース上で前記第1タスクの前記一部の実行を再トリガする手順を実行させる、コンピュータプログラム
【請求項8】
前記監視する手順は、前記一部に到達する前の前記第1タスクの前記実行と同時に実行される、請求項7に記載のコンピュータプログラム
【請求項9】
前記一時停止する手順は、前記第1タスクの実行が前記一部に到達したという通知を受信することに応答して実行される、請求項7または8に記載のコンピュータプログラム
【請求項10】
前記コンピュータにさらに、前記第2タスクが現在実行されていることを前記状態インジケータが示していることに応答して、前記第1タスクの前記一部を実行させる、請求項7から9のいずれか一項に記載のコンピュータプログラム
【請求項11】
前記状態インジケータは、前記受信された接続情報を含む、請求項7から10のいずれか一項に記載のコンピュータプログラム
【請求項12】
前記第1タスクの前記一部の実行は、前記第2タスクから受信されたデータを処理することを含み、前記データは、前記受信された接続情報を使用して受信される、請求項11に記載のコンピュータプログラム
【請求項13】
前記コンピュータプログラム、ローカルデータ処理システムのつ又は複数の記憶媒体のうちのなくとも1つに記憶され、前記記憶されたコンピュータプログラム、ネットワーク経由でリモートデータ処理システムから転送される、請求項7から12のいずれか一項に記載のコンピュータプログラム
【請求項14】
前記コンピュータプログラム、サーバデータ処理システムのつ又は複数の記憶媒体のうちのなくとも1つに記憶され、前記記憶されたコンピュータプログラム、リモートデータ処理システムに関連付けられるコンピュータ可読記憶デバイスで使用するために、ネットワーク経由で前記リモートデータ処理システムにダウンロードされる、請求項7から12のいずれか一項に記載のコンピュータプログラム
【請求項15】
前記コンピュータプログラム、クラウド環境におけるサービスとして提供される、請求項7から14のいずれか一項に記載のコンピュータプログラム
【請求項16】
1つ又は複数のプロセッサ、1つ又は複数のコンピュータ可読メモリ、つ又は複数のコンピュータ可読記憶デバイス、及び前記1つ又は複数のコンピュータ可読メモリのうちの少なくとも1つを介して前記1つ又は複数のプロセッサのうちの少なくとも1つにより実行するための、前記1つ又は複数の記憶デバイスのうちの少なくとも1つに記憶されたプログラム命令、を備えるコンピュータシステムであって、前記記憶されたプログラム命令は、
第1計算リソース上で第1タスクの実行をトリガするためのプログラム命令、ここで前記第1タスクの一部の実行は、第2タスクが第2計算リソース上で実行されることを条件とする;
前記第2タスクの状態インジケータを監視するためのプログラム命令、ここで前記状態インジケータは、前記第2タスクが前記第2計算リソース上で現在実行されているかどうかを示す;
前記第2タスクが現在実行されていないことを前記状態インジケータが示していることに応答して、前記第1タスクの前記一部の実行を一時停止するためのプログラム命令;
前記状態インジケータの変化が生じたと判断するためのプログラム命令;
前記判断することに応答して、前記第2タスクに関する受信された接続情報を前記第1タスクに転送するためのプログラム命令;及び
前記第1計算リソース上で前記第1タスクの前記一部の実行を再トリガするためのプログラム命令
を含む、コンピュータシステム。
【請求項17】
前記監視することは、前記一部に到達する前の前記第1タスクの前記実行と同時に実行される、請求項16に記載のコンピュータシステム。
【請求項18】
前記一時停止することは、前記第1タスクの実行が前記一部に到達したという通知を受信することに応答して実行される、請求項16または17に記載のコンピュータシステム。
【請求項19】
前記第2タスクが現在実行されていることを前記状態インジケータが示していることに応答して、前記第1タスクの前記一部を実行するためのプログラム命令
を更に備える、請求項16から18のいずれか一項に記載のコンピュータシステム。
【請求項20】
前記状態インジケータは、前記受信された接続情報を含む、請求項16から19のいずれか一項に記載のコンピュータシステム。
【国際調査報告】