(57)【特許請求の範囲】
【請求項１】
データを処理する方法であって、
１つ又はそれよりも多くのネットワーク式デバイス上で発見され、フレームワークに設けられて該フレームワークに適合するモジュールを使用してタスクの並列処理を可能にするサービスを含む１つ又はそれよりも多くの発見メッセージを受信する段階と、
データを処理すべきであるプロジェクトを判断する段階と、
前記プロジェクトのためのデータの少なくとも一部を処理するタスクを実行してサービスを提供できる処理リソースを有する前記ネットワーク式デバイスの１つを判断するために、前記１つ又はそれよりも多くのネットワークデバイスを動的にポーリングする段階と、
前記プロジェクトを分析して、前記動的にポーリングされた前記サービスを提供できる処理リソースに基づいて前記タスクを実行する前記ネットワーク式デバイスの前記１つを判断する段階と、
前記サービスに対する前記フレームワークからのモジュールを前記ネットワーク式デバイスの前記１つに分散する段階と、
前記データがセグメント化制限を含むかを判断する段階と、
前記データがセグメント化制限を含む場合に、該セグメント化制限が侵害されないように該セグメント化制限及び前記ネットワーク式デバイスの前記１つに基づいて該データをデータユニットにセグメント化する段階と、
前記タスクのためのデータ又はセグメント化されたデータを前記プロジェクトのための前記モジュールを使用して該データを処理する前記ネットワーク式デバイスの前記１つに分散する段階と、
を含むことを特徴とする方法。
【請求項２】
前記１つ又はそれよりも多くのネットワーク式デバイス上で発見された前記サービスをレジストリに記憶する段階と、
前記１つ又はそれよりも多くのネットワーク式デバイスのどれがサービスを使用する前記プロジェクトのための前記タスクを実行することができるかを判断するために、前記レジストリにおける前記サービスを分析する段階と、
を更に含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記１つ又はそれよりも多くのネットワーク式デバイスにおけるネットワークデバイス上で発見される、第１のデバイスに転送することができるサービスを判断する段階と、
前記サービスの要求を前記第１のデバイスに送信する段階と、
を更に含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記ネットワーク上の新しいデバイスを検出する段階と、
前記新しいデバイスが処理リソースを有するかを判断する段階と、
前記新しいデバイスが利用可能な処理リソースを有する場合に該新しいデバイスに第２のタスクを分散する段階と、
を更に含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記１つ又はそれよりも多くのネットワーク式デバイスは、前記フレームワークを含み、これが、該１つ又はそれよりも多くのネットワーク式デバイス間のモジュールの分散を可能にすることを特徴とする請求項１に記載の方法。
【請求項６】
前記ネットワーク式デバイスの前記１つは、該ネットワーク式デバイスの該１つに含まれる機能に基づいて選択されることを特徴とする請求項１に記載の方法。
【請求項７】
前記データがセグメント化制限を含まない場合に、前記ネットワーク式デバイスの前記１つの前記機能に基づいて該データをセグメント化する段階を更に含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記モジュールは、複数のコンピュータアーキテクチャに適合するモジュールを含み、  前記ネットワーク式デバイスの前記１つに適合するモジュールが、該ネットワーク式デバイスの該１つに送信される、
ことを特徴とする請求項１に記載の方法。
【請求項９】
１つ又はそれよりも多くのプロセッサと、
前記１つ又はそれよりも多くのプロセッサによる実行のために１つ又はそれよりも多くのコンピュータ可読媒体に符号化され、かつ実行された時に、
１つ又はそれよりも多くのネットワーク式デバイス上で発見され、フレームワークに設けられて該フレームワークに適合するモジュールを使用してタスクの並列処理を可能にするサービスを含む１つ又はそれよりも多くの発見メッセージを受信し、
データを処理すべきであるプロジェクトを判断し、
前記プロジェクトのためのデータの少なくとも一部を処理するタスクを実行してサービスを提供できる処理リソースを有する前記ネットワークデバイスの１つを判断するために、前記１つ又はそれよりも多くのネットワーク式デバイスを動的にポーリングし、
前記プロジェクトを分析して、前記動的にポーリングされた前記サービスを提供できる処理リソースに基づいて前記タスクを実行する前記ネットワークデバイスの前記１つを判断し、
前記サービスに対する前記フレームワークからのモジュールを前記ネットワーク式デバイスの前記１つに分散し、
前記データがセグメント化制限を含むかを判断し、
前記データがセグメント化制限を含む場合に、該セグメント化制限が侵害されないように該セグメント化制限及び前記ネットワーク式デバイスの前記１つに基づいて該データをデータユニットにセグメント化し、
前記タスクのためのデータ又はセグメント化されたデータを前記プロジェクトのための前記モジュールを使用して該データを処理する前記ネットワーク式デバイスの前記１つに分散する、
ように作動可能である論理と、
を含むことを特徴とする装置。
【請求項１０】
前記論理は、実行された時に、
前記１つ又はそれよりも多くのネットワーク式デバイス上で発見された前記サービスをレジストリに記憶し、かつ
前記１つ又はそれよりも多くのネットワークデバイスのどれがサービスを使用する前記プロジェクトに対する前記タスクを実行することができるかを判断するために、前記レジストリにおける前記サービスを分析する、
ように更に作動可能である、
ことを特徴とする請求項９に記載の装置。
【請求項１１】
前記論理は、実行された時に、
第１のデバイスに転送することができるサービスであって、前記１つ又はそれよりも多くのネットワーク式デバイスにおけるネットワークデバイス上で発見されるサービスを判断し、かつ
前記サービスの要求を前記第１のデバイスに送信する、
ように更に作動可能である、
ことを特徴とする請求項９に記載の装置。
【請求項１２】
前記論理は、実行された時に、
前記ネットワーク上の新しいデバイスを検出し、
前記新しいデバイスが処理リソースを有するかを判断し、かつ
前記新しいデバイスが利用可能な処理リソースを有する場合に該新しいデバイスに第２のタスクを分散する、
ように更に作動可能である、
ことを特徴とする請求項９に記載の装置。
【請求項１３】
前記１つ又はそれよりも多くのネットワーク式デバイスは、前記フレームワークを含み、これが、該１つ又はそれよりも多くのネットワーク式デバイス間のモジュールの分散を可能にすることを特徴とする請求項９に記載の装置。
【請求項１４】
前記ネットワーク式デバイスの前記１つは、該ネットワーク式デバイスの該１つに含まれる機能に基づいて選択されることを特徴とする請求項９に記載の装置。
【請求項１５】
前記論理は、実行された時に、前記データがセグメント化制限を含まない場合に前記ネットワーク式デバイスの前記１つの前記機能に基づいて該データをセグメント化するように更に作動可能であることを特徴とする請求項９に記載の装置。
【請求項１６】
データを処理するためのシステムであって、
各々が異なる処理リソースを含む複数のターゲットコンピュータデバイスと、
前記複数のターゲットコンピュータデバイス上で発見され、フレームワークに設けられて該フレームワークに適合するモジュールを使用してタスクの並列処理を可能にするサービスを含む１つ又はそれよりも多くの発見メッセージを受信し、
データを処理すべきであるプロジェクトを判断し、
前記プロジェクトのための前記データの少なくとも一部を処理する１つ又はそれよりも多くのタスクを実行して１つ又はそれよも多くのサービスを提供できる処理リソースを有するネットワークデバイスの１つを判断するために、前記１つ又はそれよりも多くのネットワーク式デバイスを動的にポーリングし、
前記プロジェクトを分析して、前記動的にポーリングされた前記サービスを提供できる処理リソースに基づいて前記タスクを実行する前記ネットワークデバイスの前記１つを判断し、
前記１つ又はそれよりも多くのモジュールにおけるモジュールをサービスのための前記フレームワークから前記複数のターゲットコンピュータデバイスの各々に分散し、
前記データがセグメント化制限を含むかを判断し、
前記データがセグメント化制限を含む場合に、該セグメント化制限が侵害されないように該セグメント化制限及び前記ネットワーク式デバイスの前記１つに基づいて該データをデータユニットにセグメント化し、
タスクのためのデータ又はセグメントかされたデータを各々が前記プロジェクトのために前記分散されたモジュールを使用して分散された該データを処理する前記複数のターゲットコンピュータデバイスの各々に分散する、
ように構成されたマスターコンピュータデバイスと、
を含むことを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
本出願は、全ての目的に対して本出願に省略せずに示すが如く引用によりここで組み込まれる２００９年１月７日出願の「並列タスクアプリケーションフレームワーク」という名称の米国特許出願出願番号第１２／３５０，２０１号からの優先権を請求するものである。
【０００２】
特定的な実施形態は、一般的に、適応可能な方式でタスクの並列処理を可能にするフレームワークに関する。
【背景技術】
【０００３】
解決すべき問題がある時に、ユーザは、特定のタイプのマシンのためのプログラムを書くことができる。マシンは、プログラムを実行し、かつデータのある一定の塊に対して分析を実行することができる。しかし、処理されるデータは、マシンのリソースによって制限される。また、データの塊を並列に処理するように複数のマシンを構成することができる。しかし、プログラムは、そのデータを処理する複数のマシンに対して特別に書く必要がある。複数のマシンのためのプログラムを書くためには、マシンの構成に精通している経験豊富なプログラマーが必要である。これは、複雑になり、かつ複数のマシンに対して処理するためのプログラムを書く方法を理解していないユーザにとって有用でない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願出願番号第１２／３５０，２０１号
【発明の概要】
【課題を解決するための手段】
【０００５】
特定的な実施形態は、一般的に、並列タスクフレームワークに関する。ネットワークデバイスは、異なるデバイスによってどのサービスが提供されているかを判断するために発見メッセージを使用することができる。フレームワークを使用して提供されるサービスは、デバイスに発見されるモジュールを使用したタスクの並列処理を可能にする。デバイスの１つから他のデバイスへのモジュールの分散は、データに対して実行する必要があるいずれかの分析とすることができるプロジェクトを処理するために提供することができる。プロジェクトは、実行する必要があるタスクから作り上げることができ、各タスクは、プロジェクトに対するデータの少なくとも一部を処理する。
【０００６】
並列タスクフレームワークにより、デバイスは、他のデバイスがそれらの処理リソースの全利用可能性を使用していない時に他のデバイスから処理リソースを使用することが可能になる。例えば、第１デバイスは、演算中にその利用可能な処理リソースを常に使用しているとは限らない。この場合、第１デバイスは、モジュールを使用してタスクを実行すべきであると判断することができる。ターゲットデバイスは、そのタスクを実行するモジュールを有していない場合がある。しかし、第１デバイスは、フレームワークがモジュールをシームレスに転送することを可能にするので、モジュールをターゲットデバイスに送ることができる。次に、ターゲットデバイスは、フレームワークにモジュールをインストールすることができ、第１デバイスは、適用可能なデータを処理のためにターゲットデバイスに送信する。次に、ターゲットデバイスは、タスクを実行するためにデータを処理し、次に、結果を第１デバイスに送信して戻すことができる。
【０００７】
処理利用可能性を有するデバイスの間で異なるタスクのためのデータを分散させることにより、プロジェクトは、効率良く実行することができる。ユーザは、タスクの分散をプログラムする必要はない。むしろ、フレームワークは、デバイスが、処理機能を備えたデバイスにタスクを分散する判断を自動的に行うことを可能にする。モジュールは、それらをデバイス間に、たとえ異なるアーキテクチャを有するデバイス間であってさえも分散させることができるように書かれる。
【０００８】
本明細書に開示する特定的な実施形態の性質及び利点の更なる理解は、本明細書の残りの部分及び添付の図面を参照することによって認識することができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態による並列タスクフレームワークを提供するためのシステムの例を示す図である。
【図２】一実施形態によるコンピュータデバイスを初期化するための流れ図の例を示す図である。
【図３】一実施形態によりコンピュータデバイスが発見メッセージを受信した時に実行されるアクションのための方法の単純化された流れ図の例を示す図である。
【図４】一実施形態によるモジュールを交換する方法の単純化された流れ図である。
【図５】一実施形態によるタスクの並列実行を提供する方法の単純化された流れ図である。
【発明を実施するための形態】
【００１０】
図１は、一実施形態による並列タスクフレームワークを提供するためのシステム１００の例を示している。システム１００は、複数のコンピュータデバイス１０２、及びネットワーク１０４を含む。各デバイス１０２は、タスクの並列処理を可能にするフレームワーク１０６を含むことができる。
【００１１】
デバイス１０２は、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、携帯情報端末、カメラ、アクセスポイント、コントロールポイント、サーバ、ワークステーション、又は他の適切なコンピュータデバイスを含むことができる。一実施形態では、様々な消費者電子デバイスをネットワーク１０４に接続することができる。ネットワーク１０４は、デバイス１０２を互いに接続することができる。一例では、ネットワーク１０４は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、又は他の無線又は有線ネットワークを含むことができる。
【００１２】
フレームワーク１０６は、プロジェクトのためのタスクの並列演算を可能にすることができる。プロジェクトは、実行する必要があるあらゆる一連の演算とすることができる。例えば、プロジェクトは、データのある一定の態様を分析することができる。
【００１３】
モジュールは、モジュールがサービスを提供することができるフレームワーク１０６に設けることができる。例えば、モジュールは、ネットワーク接続性のような一般サービス、又はメディアプレーヤ、音楽プレーヤ、又は他の計算サービスのような他のサービスを含むことができる。モジュールは、フレームワーク１０６のためのプラグ・インとすることができる。プラグ・インは、アプリケーションプログラミングインタフェース（ＡＰＩ）又はアプリケーションバイナリインタフェース（ＡＢＩ）のフォーマットに準拠している。ユーザは、ＡＰＩ／ＡＢＩを使用するためのアプリケーションを作成することができ、モジュールを実行することができるアーキテクチャを考える必要はない。例えば、フレームワーク１０６のために作成されたモジュールは、Ｌｉｎｕｘ（登録商標）マシン、Ｗｉｎｄｏｗｓ（登録商標）マシン、Ａｎｄｒｏｉｄ（登録商標）マシン、又は他の消費者電子オペレーティングシステムで実行することができる。モジュールは、フレームワークに書き込むことができるが、デバイスの元のアーキテクチャとは必ずしも適合性がない。例えば、マシンＡは、ＰＣであり、マシンＢは、ゲームコンソールである。マシンＡは、Ｉｎｔｅｌアーキテクチャアクティブに対してコンパイルされたモジュールを有するが、他のプラットフォームのためのモジュールの小さなライブラリを維持することができる（ＰＣ及びアーキテクチャ自体に対して、モジュールはバイナリブロブと考えることができる）。マシンＢが発見処理中にマシンＡにレポートする時、識別情報の一部は、アーキテクチャタイプである。マシンＢが、サポートされるタイプのマシンＡのリストにある場合、全体のバンドル（マシンＢがモジュールを更に広めると予想される場合）又はＢのアーキテクチャのためのモジュールだけが送信される。全体のバンドルが送信される場合（バンドル＝同じ機能的モジュールのＷｉｎ３２／Ｌｉｎｕｘ／ＰＳ３／Ａｎｄｒｏｉｄバージョン）、マシンＢは、バンドルであらゆるアーキテクチャも更にサポートすることができる。また、マシンＢは、そのアーキテクチャに適合するモジュールを使用することができる。
【００１４】
フレームワーク１０６を含むコンピュータデバイス１０２は、通信して、サービスを提供するのに必要とされるモジュールを交換することができる。コンピュータデバイス１０２は、プロジェクトのための作業の調整のために他のコンピュータデバイス１０２を探し出す。これは、様々なコンピュータデバイス１０２への様々なモジュールの分散を伴う場合がある。コンピュータデバイス１０２が利用可能な処理リソースを有する場合、モジュールは、そのコンピュータデバイス１０２に分散させることができる。タスクにおけるデータは、タスクの実行のためのコンピュータデバイス１０２に送信することができる。従って、コンピュータデバイス１０２は、利用可能な処理リソースを有する他のコンピュータデバイスの間で作業を分散させることができる。これは、プロジェクトのためのタスクの実行の自動調整を可能にすることにより、ネットワーク１０４におけるコンピュータデバイス１０２の効率を上げる。
【００１５】
以下の説明は、プロジェクトを処理するためにフレームワークを使用する異なるステージを示している。第１ステージは、デバイスが互いの機能を発見する開始ステージである。次に、デバイスは、サービスを分散させるためにモジュールを交換することができる。プロジェクトのためのタスクの実行を次に説明する。
【００１６】
図２は、一実施形態によるコンピュータデバイス１０２を初期化するための流れ図２００の例を示している。段階２０２で、第１コンピュータデバイス１０２−１が初期化され、フレームワーク１０６が開始される。例えば、第１コンピュータデバイス１０２−１をネットワーク１０４に接続することができる。フレームワーク１０６の電力投入又は初期化時に、モジュールがロードされて初期化される。
【００１７】
段階２０４で、サービスレジストリが構築される。これは、第１コンピュータデバイス１０２−１が利用可能であるサービスのタイプを列挙する。
【００１８】
段階２０６で、次に、第１コンピュータデバイス１０２−１が、ネットワーク１０４上のネットワークインタフェースを通じて発見メッセージをブロードキャストする。発見メッセージは、利用可能なサービス、アーキテクチャ（例えば、Ｌｉｎｕｘ、ｘ８６）、及び他の情報のようなコンピュータデバイスに関する情報を含む。
【００１９】
ネットワーク上のコンピュータデバイスは、次に、発見メッセージを受信することができる。図３は、コンピュータデバイス１０２が一実施形態に従って発見メッセージを受信した時に実行されるアクションの方法の単純化された流れ図３００の例を示している。段階３０２で、第２コンピュータデバイス１０２−２は、第１コンピュータデバイス１０２−１に対して利用可能なサービスを含む発見メッセージを受信する。
【００２０】
段階３０４で、第２コンピュータデバイス１０２−２は、メッセージで提供されたサービスを分析し、これをレジストリに記憶することができる。例えば、第２コンピュータデバイス１０２−２は、ネットワークの全てのコンピュータデバイス１０２によって提供されるサービスを追跡することができる。第２コンピュータデバイス１０２は、適合性のないある一定のサービスを追跡しないと判断することができる。例えば、カメラは、利用可能なサービスとしてカメラを列挙することができない音楽プレーヤを使用することはない。しかし、ネットワークで提供されるサービスの全ては、適合性のない場合でも追跡することができる。それによって第２コンピュータデバイスは、他のデバイスがどのサービスを提供するかを通信することができる。
【００２１】
段階３０６で、第２コンピュータデバイス１０２−２は、その独自のサービス及び機能のリストによって応答する。例えば、第２コンピュータデバイス１０２−２は、利用可能なサービス及びそのアーキテクチャを含む発見メッセージを送信することができる。
【００２２】
段階３０８で、第２コンピュータデバイス１０２−２は、ピアとして第１コンピュータデバイス１０２−１を登録する。ピアとしてデバイスを登録することにより、デバイスは、後の時間に並列タスクの演算のために第１コンピュータデバイス１０２−１を使用することができる。
【００２３】
段階３１０で、第２コンピュータデバイス１０２−２及び逆に第１コンピュータデバイス１０２−１は、サービスのためのいずれかのモジュールを交換する必要があるかを判断する。例えば、第１コンピュータデバイス１０２−１のサービスの１つが第２コンピュータデバイス１０２−２によって要求された場合、第２コンピュータデバイス１０２−２は、そのモジュールを要求することができる。また、第１コンピュータデバイス１０２−１は、そのアーキテクチャで使用することができるモジュールを要求することができる。
【００２４】
モジュールの交換を必要とする場合、図４の処理が実行される。図４は、一実施形態によるモジュールを交換する方法の単純化された流れ図４００を示している。段階４０２で、第１コンピュータデバイス１０２−１は、サービス要求メッセージを受信する。例えば、第１コンピュータデバイス１０２−１が、それが提供するサービスを列挙しているその発見メッセージをそれが送信した後で、メディアプレーヤのサービスを要求することができる。
【００２５】
段階４０４で、第１コンピュータデバイス１０２−１は、要求が有効要求であるかを判断する。例えば、第２コンピュータデバイス１０２−２の認証を実行することができる。これは、第２コンピュータデバイス１０２−２が信頼されるマシンのネットワークにあるか否かを判断する段階を伴う場合がある。例えば、第２コンピュータデバイス１０２−２を信頼すべきか否かを判断するために、証明書を分析することができる。第２コンピュータデバイス１０２−２を認証する他の方法も認めることができる。
【００２６】
第１コンピュータデバイス１０２−１はまた、モジュールが第２コンピュータデバイス１０２−２で実行することができるか否かを判断することができる。これは、第２コンピュータデバイス１０２−２のアーキテクチャを分析する段階を伴う場合がある。しかし、上述のように、第１コンピュータデバイス１０２−１は、様々なアーキテクチャで実行することができる複数のモジュールを有することができる。第２コンピュータデバイス１０２−２上で実行することができるモジュールを判断することができる。
【００２７】
要求が有効でない場合、段階４０６で要求は拒否される。段階４０８で、第１コンピュータデバイス１０２−１は、第２コンピュータデバイス１０２−２でのインストールのためにモジュールをパッケージ化する。また、異なるアーキテクチャのためのモジュールの群のようなモジュールの群をパッケージ化することができる。それによって第２コンピュータデバイス１０２−２を他のデバイスと通信する時のモジュールの配信器とすることができる。モジュールのパッケージ化は、あらゆる必要とされるダウンロード情報を第２コンピュータデバイス１０２−２に通知する構成ファイルを含む。拡張可能マークアップ言語（ＸＭＬ）ファイル及び必要とされるファイルへの経路の構成ファイル、アクセスを可能にするための一時信用証明、及びアーキテクチャのために使用されるライブラリを送信することができる。それによってフレームワーク１０６を有するデバイスは、モジュールをダウンロード及びインストールすることができるようなる。段階４１０で、パッケージ化モジュールのダウンロードの準備ができたことを指示するメッセージが、第２コンピュータデバイス１０２−２に送信される。
【００２８】
第２コンピュータデバイス１０２−２は、ダウンロードメッセージを受信し、次に、第１コンピュータデバイス１０２−１から構成要素をダウンロードすることができる。例えば、ネットワーク層は、第１コンピュータデバイス１０２−１による転送を調整することができる。この場合、マシン対マシンハンドシェーキング及びセキュアセル（ＳＳＨ）を通じたファイル転送をパッケージ化モジュールのために実行することができる。パッケージ化モジュールがダウンロードされた後、これを構成及びダウンロード情報に基づいてインストールすることができる。モジュールがインストールされた状態で、サービスをそのサービスレジストリに追加することができ、また、新しいサービスが利用可能であることを指示する新しいメッセージをネットワーク１０４でブロードキャストすることができる。
【００２９】
ピアデバイスの発見が実行された状態で、タスクの並列実行を提供することができる。図５は、一実施形態によるタスクの並列実行を提供する方法の単純化された流れ図５００を示している。段階５０２で、第１コンピュータデバイス１０２−１は、実行されるプロジェクトを判断する。プロジェクトは、データに対して実行する必要があるあらゆる分析とすることができる。プロジェクトは、いずれのタスクも含むことができ、又は実行することができるいずれのタスクにも分割することができる。
【００３０】
段階５０４で、第１コンピュータデバイス１０２−１は、プロジェクトのためのタスクを判断する。例えば、プロジェクトは、分析して他のコンピュータデバイス１０２によって実行することができるタスクを判断することができる。サービスレジストリ及びピアリストを分析することができる。これは、他のコンピュータデバイス１０２によって提供されるサービスを判断することができる。また、ピアリストは、他のコンピュータデバイス１０２が処理することができるタスクのような他のコンピュータデバイス１０２の機能を示すことができる。例えば、Ｌｉｎｕｘマシンは、計算集中的なタスクを処理することができる。また、Ｐｌａｙｓｔａｔｉｏｎ３（ＰＳ３）は、ＰＳ３が強力なグラフィックプロセッサを有するので、グラフィック集中的なタスクを処理することができる。プログラマーは、プロジェクトをタスクに分割する方法をプログラムする必要はない。むしろ、第１コンピュータデバイス１０２−１が、プロジェクトを分析し、そのピアリスト及びピアによって提供されたサービスに基づいてプロジェクトから分割することができるタスクを判断する。この判断は、ネットワーク変更で利用可能な処理能力及び機能として動的に実行することができる。
【００３１】
プログラマーは、問題をどのように分散すべきかを正確に知る必要はないが、十分に細かい粒度で問題ドメインを概念的に分解し、それによって最小予想デバイスが、問題解決処理に参加することができる。これは、問題又はデータが一般化モデルに合わない場合にのみ必要とされる。例えば、モデルは、いずれのセグメント化規則又は制限にも従う必要がないプロジェクトのデータとすることができる。従って、データは、あらゆる方法で分割することができる。また、別のモデルは、ある一定の方法で分割することができるデータとすることができる。次に、プログラマーは、このモデル内に入るデータを指定することができる。プログラマーはまた、データをある一定のサイズよりも小さいサイズに分割する必要がないこと、ある一定のデータを一緒に維持するためにデータをセグメント化しなくてはならないこと等々のようなデータをどのように分割しなくてはならないかに関するセグメント化制限を指定することができる。
【００３２】
単純化された例に対して、情報の多数ギガバイトから構成されるデータの本体Ｘが存在する。解決するタスクは、特定のパターン（生物学上のデータにおける病気の兆候とすることができる）に対してこのデータの本体を検索することである。プログラマーは、データ及び検索する方法と何を検索するかの抽象論理を備えた１−ｎモジュール（各予想されるサポートプラットフォーム、同じコード、異なるターゲットに対してただ再コンパイルされたものに対しては１）を提供することができる。
【００３３】
あらゆるサイズのデータを処理することができるデバイスが出現した場合、任意の量のデータ及び付随するモジュールは、他のデバイスに分散される。しかし、ＰＤＡ又は他の制約されたデバイスのようなある一定の処理制限を有するデバイスが、一度にメガバイトのデータしか処理できない（例えば）ネットワークに入った場合、第１コンピュータデバイスは、ＰＤＡ以外のパーソナルコンピュータにより大きなデータのブロックを与えることになる。各デバイスがデータの処理を終えた時、結果が戻され、データの次のブロックが割り当てられる。特定の回線に沿ってデータをセグメント化するためのドメイン関連の理由がない限り、この処理は機能する。すなわち、第１コンピュータデバイスは、あらゆる方法でデータをセグメント化することができ、利用可能なデバイス及びその処理機能に基づいて動的にデータをセグメント化することができる。しかし、データの自然順序が、より強力なデバイスだけがそれに働くことができるものである場合、大量のデータを処理できないデバイスには作業が与えられない。この場合、プログラマーは、最小／最大データブロックサイズに対する指針を構成するために、パターン検出コード及びデータブロック普及コードを定めることができる。第１コンピュータデバイスは、指針を読取り、データをどのように分解するかを判断することができる。また、第１コンピュータデバイスは、データを分析することができ、実行する必要があるタスク及び最も効率的な方法でのデータの分割が判断される。いずれにせよ、第１コンピュータデバイスは、問題ドメインの必要性に沿って作業のユニットだけが分散されるようにする。
【００３４】
段階５０６で、第１コンピュータデバイス１０２−１は、タスクを処理するための処理リソースを含むコンピュータデバイス１０２を判断する。これは、処理リソースが利用可能であるかを判断するために、他のコンピュータデバイス１０２にポーリングする段階を伴う場合がある。例えば、メッセージを他のデバイス１０２に送信することができ、処理リソースが利用可能であるか否かを示す応答を受信することができる。処理リソースは、デバイスがある一定の閾値よりも上では作動しない場合に利用可能であるとすることができる。例えば、プロセッサが６０％の利用度である場合、コンピュータデバイスは、４０％の利用可能な処理リソースを有することを示すことができる。
【００３５】
段階５０８で、第１コンピュータデバイス１０２−１は、コンピュータデバイス１０２がタスクの１つを実行するためにモジュールを必要とするかを判断する。必要とする場合、段階５１０は、モジュールの分散を促進する。例えば、モジュールは、図４に関して上述したように分散させることができる。従って、タスクを実行することができることを第１コンピュータデバイス１０２−１が判断した時、モジュールを分散させることができる。
【００３６】
モジュールを分散する必要がない場合又はモジュールが分散された後に、段階５１２で、次に、第１コンピュータデバイス１０２−１がタスク及びデータを第２コンピュータデバイス１０２−２に送信する。例えば、必要なアルゴリズムがモジュールにパッケージ化され、演算を実行させるためにデータと共に送信される。１つの実施例では、問題解決アルゴリズム（上述のようなパターン検出アルゴリズム）を備えたモジュールが第２コンピュータデバイス１０２−２に与えられた状態で、タスクを実行するために、メッセージが第２コンピュータデバイス１０２−２に送信される。第２コンピュータデバイス１０２−２が、タスク及びタスクを実行する方法を知っている単一目的モデルでは、このメッセージが、作業をトリガするのに必要な全てとすることができる。タスクを実行するためにメッセージに含まれるのは、ネットワーク上の共有データリポジトリにアクセスするのに必要であるか又はタスクに必要なデータセグメントをどこにダウンロードするかの情報である。このメッセージの受信時に、ターゲットマシンは、共有リソースをダウンロード又は参照するかのいずれかを実行し、タスクを実行し、継続するか又は中断する演算利用可能性を示すフラグと共に結果をマスターマシンに転送する。ターゲットマシンが利用可能である場合、データの次のブロックに対して、次のタスクメッセージを通じて、処理されるデータの本体への参照が割り当てられる。通信される１つのコンピュータデバイスを説明しているが、あらゆる数のコンピュータデバイス１０２がタスクを受信し、データの一部に対して演算を実行することができることは理解されるであろう。
【００３７】
段階５１４で、第１コンピュータデバイス１０２−１は、タスクの実行の結果を受信する。タスクが多くの異なるデバイスによって実行されるので、段階５１６で、第１コンピュータデバイス１０２−１は、結果をプロジェクトに統合することができる。例えば、異なるタスクに対する異なる結果を異なるコンピュータデバイス１０２から受信することができる。第１コンピュータデバイス１０２−１は、プロジェクトに対する問題を解決するために異なるタスクの結果がどのように相関付けられるかを調整することができる。
【００３８】
異なる実施例をここで説明する。他の実施例も想定することができることは理解されるであろう。１つの実施例では、コンピュータデバイス１０２の小さいサーバファームを有する調査者は、デバイス１０２−１で必要とされるデータで問題を設定することができる。この問題は、フレームワーク１０６を実行しているあらゆるデバイスをコールドに（ファイルコピーだけ）又はホットに（構成要素をホットスワップすることができる）更新することができるように、ネットワークにわたって複製することができる。タスクが送信された時、これらのデバイスは、たんぱく質の調査から地質調査まで実行することができる。
【００３９】
別の実施例では、ネットワーク上のデバイスＡ−Ｆが問題を処理しており、各デバイスは、次のデバイスに結果をフィードし、このデバイスは、それを処理してそれを次に送る（すなわち、ＡはＢにフィードし、ＢはＣにフィードする等々）。Ｆの出力は「答え」である。作業フローは、データを従来通り処理するために全ての６つのマシンのために作成する必要がある。しかし、特定的な実施形態により、デバイスＦは、どのデバイスが利用可能な処理リソースを有するかを自動的に判断することができ、Ｆは、タスクの分散を調整することができる。デバイスＦは、システムの１−ｎでの構成／設定を変更し、Ａでデータを設定し、処理を戻すことができる。同じ問題が実行されている場合、Ｆの構成要素は、結果を調査し、ピアツーピア機構を通じて先行する５つのマシンに変更を実行し、試験自体をリセット及び再実行することができ、行われた時に人間を煩わすだけである。
【００４０】
本説明をその特定的な実施形態に関して説明したが、これらの特定的な実施形態は、単に例示的であり、制限ではない。Ｃ、Ｃ＋＋、Ｊａｖａ、アセンブリ言語などを含む特定的な実施形態のルーチンを実行するためのあらゆる適切なプログラミング言語を利用することができる。手順又はオブジェクト指向のような異なるプログラミング技術も利用することができる。ルーチンは、単一の処理デバイス又は複数のプロセッサで実行することができる。段階、演算、又は計算は、特定の順序で呈示することができるが、この順序は、異なる特定的な実施形態において変化させることができる。一部の特定的な実施形態では、本明細書で連続したものとして示されている複数の段階を同時に実行することができる。
【００４１】
特定的な実施形態は、命令実行システム、装置、システム、又はデバイスにより、又はこれらと共に使用するためのコンピュータ可読記憶媒体で実施することができる。特定的な実施形態は、ソフトウエア又はハードウエア又はその組合せにおける制御論理の形式で実施することができる。制御論理は、１つ又はそれよりも多くのプロセッサによって実行された時、特定的な実施形態に説明するものを実行することができる。
【００４２】
特定的な実施形態は、プログラムされた汎用デジタルコンピュータを使用することにより、特定用途向け集積回路、プログラマブル論理デバイス、フィールドプログラマブルゲートアレイ、光、化学、生物学、量子、又はナノ加工システム、構成要素、及び機構を使用することにより実施することができる。一般的に、特定的な実施形態の機能は、当業技術で公知のあらゆる手段によっても達成することができる。分散ネットワーク式システム、構成要素、及び／又は回路を使用することができる。データの通信又は転送は、有線、無線、又はあらゆる他の手段によるものとすることができる。
【００４３】
図／図面に示されている要素の１つ又はそれよりも多くはまた、特定の用途に従って有用である場合、より分離された又は統合された方式で実施することができ、又はある一定の場合に作動不能として取り除くか又はレンダリングすることができることも認められるであろう。上述の方法のいずれかをコンピュータに実行させるために、機械可読媒体に記憶することができるプログラム又はコードを実施することも本発明の精神及び範囲にある。
【００４４】
本明細書の説明及びそれに続く特許請求の範囲を通して使用される「ａ」、「ａｎ」、及び「ｔｈｅ」は、文脈が他を明確に示さない限り、複数の参照を含む。また、本明細書の説明及びそれに続く特許請求の範囲を通して使用される「ｉｎ」の意味は、文脈が他を明確に示さない限り、「ｉｎ」及び「ｏｎ」を含む。
【００４５】
すなわち、特定的な実施形態を本明細書に説明したが、修正、様々な変更、及び置換の裁量の余地が上述の開示に意図されており、場合によっては、特定の実施形態の一部の特徴は、示した精神及び範囲から逸脱することなく他の特徴の対応する使用なしに利用することができることが認められるであろう。従って、特定の状況又は材料を本質的な範囲及び精神に適応させるために、多くの修正を実施することができる。
【符号の説明】
【００４６】
１００  並列タスクフレームワークを提供するためのシステム
１０２  コンピュータデバイス
１０４  ネットワーク
１０６  フレームワーク
【図１】
0005486611.tif 000002
【図２】
0005486611.tif 000003
【図３】
0005486611.tif 000004
【図４】
0005486611.tif 000005
【図５】
0005486611.tif 000006