JP5486611B2 - 並列タスクアプリケーションフレームワーク - Google Patents

並列タスクアプリケーションフレームワーク Download PDF

Info

Publication number
JP5486611B2
JP5486611B2 JP2011544613A JP2011544613A JP5486611B2 JP 5486611 B2 JP5486611 B2 JP 5486611B2 JP 2011544613 A JP2011544613 A JP 2011544613A JP 2011544613 A JP2011544613 A JP 2011544613A JP 5486611 B2 JP5486611 B2 JP 5486611B2
Authority
JP
Japan
Prior art keywords
data
networked devices
devices
service
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011544613A
Other languages
English (en)
Other versions
JP2012514791A (ja
Inventor
ジェフ コブ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Publication of JP2012514791A publication Critical patent/JP2012514791A/ja
Application granted granted Critical
Publication of JP5486611B2 publication Critical patent/JP5486611B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

関連出願への相互参照
本出願は、全ての目的に対して本出願に省略せずに示すが如く引用によりここで組み込まれる2009年1月7日出願の「並列タスクアプリケーションフレームワーク」という名称の米国特許出願出願番号第12/350,201号からの優先権を請求するものである。
特定的な実施形態は、一般的に、適応可能な方式でタスクの並列処理を可能にするフレームワークに関する。
解決すべき問題がある時に、ユーザは、特定のタイプのマシンのためのプログラムを書くことができる。マシンは、プログラムを実行し、かつデータのある一定の塊に対して分析を実行することができる。しかし、処理されるデータは、マシンのリソースによって制限される。また、データの塊を並列に処理するように複数のマシンを構成することができる。しかし、プログラムは、そのデータを処理する複数のマシンに対して特別に書く必要がある。複数のマシンのためのプログラムを書くためには、マシンの構成に精通している経験豊富なプログラマーが必要である。これは、複雑になり、かつ複数のマシンに対して処理するためのプログラムを書く方法を理解していないユーザにとって有用でない。
米国特許出願出願番号第12/350,201号
特定的な実施形態は、一般的に、並列タスクフレームワークに関する。ネットワークデバイスは、異なるデバイスによってどのサービスが提供されているかを判断するために発見メッセージを使用することができる。フレームワークを使用して提供されるサービスは、デバイスに発見されるモジュールを使用したタスクの並列処理を可能にする。デバイスの1つから他のデバイスへのモジュールの分散は、データに対して実行する必要があるいずれかの分析とすることができるプロジェクトを処理するために提供することができる。プロジェクトは、実行する必要があるタスクから作り上げることができ、各タスクは、プロジェクトに対するデータの少なくとも一部を処理する。
並列タスクフレームワークにより、デバイスは、他のデバイスがそれらの処理リソースの全利用可能性を使用していない時に他のデバイスから処理リソースを使用することが可能になる。例えば、第1デバイスは、演算中にその利用可能な処理リソースを常に使用しているとは限らない。この場合、第1デバイスは、モジュールを使用してタスクを実行すべきであると判断することができる。ターゲットデバイスは、そのタスクを実行するモジュールを有していない場合がある。しかし、第1デバイスは、フレームワークがモジュールをシームレスに転送することを可能にするので、モジュールをターゲットデバイスに送ることができる。次に、ターゲットデバイスは、フレームワークにモジュールをインストールすることができ、第1デバイスは、適用可能なデータを処理のためにターゲットデバイスに送信する。次に、ターゲットデバイスは、タスクを実行するためにデータを処理し、次に、結果を第1デバイスに送信して戻すことができる。
処理利用可能性を有するデバイスの間で異なるタスクのためのデータを分散させることにより、プロジェクトは、効率良く実行することができる。ユーザは、タスクの分散をプログラムする必要はない。むしろ、フレームワークは、デバイスが、処理機能を備えたデバイスにタスクを分散する判断を自動的に行うことを可能にする。モジュールは、それらをデバイス間に、たとえ異なるアーキテクチャを有するデバイス間であってさえも分散させることができるように書かれる。
本明細書に開示する特定的な実施形態の性質及び利点の更なる理解は、本明細書の残りの部分及び添付の図面を参照することによって認識することができる。
一実施形態による並列タスクフレームワークを提供するためのシステムの例を示す図である。 一実施形態によるコンピュータデバイスを初期化するための流れ図の例を示す図である。 一実施形態によりコンピュータデバイスが発見メッセージを受信した時に実行されるアクションのための方法の単純化された流れ図の例を示す図である。 一実施形態によるモジュールを交換する方法の単純化された流れ図である。 一実施形態によるタスクの並列実行を提供する方法の単純化された流れ図である。
図1は、一実施形態による並列タスクフレームワークを提供するためのシステム100の例を示している。システム100は、複数のコンピュータデバイス102、及びネットワーク104を含む。各デバイス102は、タスクの並列処理を可能にするフレームワーク106を含むことができる。
デバイス102は、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、携帯情報端末、カメラ、アクセスポイント、コントロールポイント、サーバ、ワークステーション、又は他の適切なコンピュータデバイスを含むことができる。一実施形態では、様々な消費者電子デバイスをネットワーク104に接続することができる。ネットワーク104は、デバイス102を互いに接続することができる。一例では、ネットワーク104は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、又は他の無線又は有線ネットワークを含むことができる。
フレームワーク106は、プロジェクトのためのタスクの並列演算を可能にすることができる。プロジェクトは、実行する必要があるあらゆる一連の演算とすることができる。例えば、プロジェクトは、データのある一定の態様を分析することができる。
モジュールは、モジュールがサービスを提供することができるフレームワーク106に設けることができる。例えば、モジュールは、ネットワーク接続性のような一般サービス、又はメディアプレーヤ、音楽プレーヤ、又は他の計算サービスのような他のサービスを含むことができる。モジュールは、フレームワーク106のためのプラグ・インとすることができる。プラグ・インは、アプリケーションプログラミングインタフェース(API)又はアプリケーションバイナリインタフェース(ABI)のフォーマットに準拠している。ユーザは、API/ABIを使用するためのアプリケーションを作成することができ、モジュールを実行することができるアーキテクチャを考える必要はない。例えば、フレームワーク106のために作成されたモジュールは、Linux(登録商標)マシン、Windows(登録商標)マシン、Android(登録商標)マシン、又は他の消費者電子オペレーティングシステムで実行することができる。モジュールは、フレームワークに書き込むことができるが、デバイスの元のアーキテクチャとは必ずしも適合性がない。例えば、マシンAは、PCであり、マシンBは、ゲームコンソールである。マシンAは、Intelアーキテクチャアクティブに対してコンパイルされたモジュールを有するが、他のプラットフォームのためのモジュールの小さなライブラリを維持することができる(PC及びアーキテクチャ自体に対して、モジュールはバイナリブロブと考えることができる)。マシンBが発見処理中にマシンAにレポートする時、識別情報の一部は、アーキテクチャタイプである。マシンBが、サポートされるタイプのマシンAのリストにある場合、全体のバンドル(マシンBがモジュールを更に広めると予想される場合)又はBのアーキテクチャのためのモジュールだけが送信される。全体のバンドルが送信される場合(バンドル=同じ機能的モジュールのWin32/Linux/PS3/Androidバージョン)、マシンBは、バンドルであらゆるアーキテクチャも更にサポートすることができる。また、マシンBは、そのアーキテクチャに適合するモジュールを使用することができる。
フレームワーク106を含むコンピュータデバイス102は、通信して、サービスを提供するのに必要とされるモジュールを交換することができる。コンピュータデバイス102は、プロジェクトのための作業の調整のために他のコンピュータデバイス102を探し出す。これは、様々なコンピュータデバイス102への様々なモジュールの分散を伴う場合がある。コンピュータデバイス102が利用可能な処理リソースを有する場合、モジュールは、そのコンピュータデバイス102に分散させることができる。タスクにおけるデータは、タスクの実行のためのコンピュータデバイス102に送信することができる。従って、コンピュータデバイス102は、利用可能な処理リソースを有する他のコンピュータデバイスの間で作業を分散させることができる。これは、プロジェクトのためのタスクの実行の自動調整を可能にすることにより、ネットワーク104におけるコンピュータデバイス102の効率を上げる。
以下の説明は、プロジェクトを処理するためにフレームワークを使用する異なるステージを示している。第1ステージは、デバイスが互いの機能を発見する開始ステージである。次に、デバイスは、サービスを分散させるためにモジュールを交換することができる。プロジェクトのためのタスクの実行を次に説明する。
図2は、一実施形態によるコンピュータデバイス102を初期化するための流れ図200の例を示している。段階202で、第1コンピュータデバイス102−1が初期化され、フレームワーク106が開始される。例えば、第1コンピュータデバイス102−1をネットワーク104に接続することができる。フレームワーク106の電力投入又は初期化時に、モジュールがロードされて初期化される。
段階204で、サービスレジストリが構築される。これは、第1コンピュータデバイス102−1が利用可能であるサービスのタイプを列挙する。
段階206で、次に、第1コンピュータデバイス102−1が、ネットワーク104上のネットワークインタフェースを通じて発見メッセージをブロードキャストする。発見メッセージは、利用可能なサービス、アーキテクチャ(例えば、Linux、x86)、及び他の情報のようなコンピュータデバイスに関する情報を含む。
ネットワーク上のコンピュータデバイスは、次に、発見メッセージを受信することができる。図3は、コンピュータデバイス102が一実施形態に従って発見メッセージを受信した時に実行されるアクションの方法の単純化された流れ図300の例を示している。段階302で、第2コンピュータデバイス102−2は、第1コンピュータデバイス102−1に対して利用可能なサービスを含む発見メッセージを受信する。
段階304で、第2コンピュータデバイス102−2は、メッセージで提供されたサービスを分析し、これをレジストリに記憶することができる。例えば、第2コンピュータデバイス102−2は、ネットワークの全てのコンピュータデバイス102によって提供されるサービスを追跡することができる。第2コンピュータデバイス102は、適合性のないある一定のサービスを追跡しないと判断することができる。例えば、カメラは、利用可能なサービスとしてカメラを列挙することができない音楽プレーヤを使用することはない。しかし、ネットワークで提供されるサービスの全ては、適合性のない場合でも追跡することができる。それによって第2コンピュータデバイスは、他のデバイスがどのサービスを提供するかを通信することができる。
段階306で、第2コンピュータデバイス102−2は、その独自のサービス及び機能のリストによって応答する。例えば、第2コンピュータデバイス102−2は、利用可能なサービス及びそのアーキテクチャを含む発見メッセージを送信することができる。
段階308で、第2コンピュータデバイス102−2は、ピアとして第1コンピュータデバイス102−1を登録する。ピアとしてデバイスを登録することにより、デバイスは、後の時間に並列タスクの演算のために第1コンピュータデバイス102−1を使用することができる。
段階310で、第2コンピュータデバイス102−2及び逆に第1コンピュータデバイス102−1は、サービスのためのいずれかのモジュールを交換する必要があるかを判断する。例えば、第1コンピュータデバイス102−1のサービスの1つが第2コンピュータデバイス102−2によって要求された場合、第2コンピュータデバイス102−2は、そのモジュールを要求することができる。また、第1コンピュータデバイス102−1は、そのアーキテクチャで使用することができるモジュールを要求することができる。
モジュールの交換を必要とする場合、図4の処理が実行される。図4は、一実施形態によるモジュールを交換する方法の単純化された流れ図400を示している。段階402で、第1コンピュータデバイス102−1は、サービス要求メッセージを受信する。例えば、第1コンピュータデバイス102−1が、それが提供するサービスを列挙しているその発見メッセージをそれが送信した後で、メディアプレーヤのサービスを要求することができる。
段階404で、第1コンピュータデバイス102−1は、要求が有効要求であるかを判断する。例えば、第2コンピュータデバイス102−2の認証を実行することができる。これは、第2コンピュータデバイス102−2が信頼されるマシンのネットワークにあるか否かを判断する段階を伴う場合がある。例えば、第2コンピュータデバイス102−2を信頼すべきか否かを判断するために、証明書を分析することができる。第2コンピュータデバイス102−2を認証する他の方法も認めることができる。
第1コンピュータデバイス102−1はまた、モジュールが第2コンピュータデバイス102−2で実行することができるか否かを判断することができる。これは、第2コンピュータデバイス102−2のアーキテクチャを分析する段階を伴う場合がある。しかし、上述のように、第1コンピュータデバイス102−1は、様々なアーキテクチャで実行することができる複数のモジュールを有することができる。第2コンピュータデバイス102−2上で実行することができるモジュールを判断することができる。
要求が有効でない場合、段階406で要求は拒否される。段階408で、第1コンピュータデバイス102−1は、第2コンピュータデバイス102−2でのインストールのためにモジュールをパッケージ化する。また、異なるアーキテクチャのためのモジュールの群のようなモジュールの群をパッケージ化することができる。それによって第2コンピュータデバイス102−2を他のデバイスと通信する時のモジュールの配信器とすることができる。モジュールのパッケージ化は、あらゆる必要とされるダウンロード情報を第2コンピュータデバイス102−2に通知する構成ファイルを含む。拡張可能マークアップ言語(XML)ファイル及び必要とされるファイルへの経路の構成ファイル、アクセスを可能にするための一時信用証明、及びアーキテクチャのために使用されるライブラリを送信することができる。それによってフレームワーク106を有するデバイスは、モジュールをダウンロード及びインストールすることができるようなる。段階410で、パッケージ化モジュールのダウンロードの準備ができたことを指示するメッセージが、第2コンピュータデバイス102−2に送信される。
第2コンピュータデバイス102−2は、ダウンロードメッセージを受信し、次に、第1コンピュータデバイス102−1から構成要素をダウンロードすることができる。例えば、ネットワーク層は、第1コンピュータデバイス102−1による転送を調整することができる。この場合、マシン対マシンハンドシェーキング及びセキュアセル(SSH)を通じたファイル転送をパッケージ化モジュールのために実行することができる。パッケージ化モジュールがダウンロードされた後、これを構成及びダウンロード情報に基づいてインストールすることができる。モジュールがインストールされた状態で、サービスをそのサービスレジストリに追加することができ、また、新しいサービスが利用可能であることを指示する新しいメッセージをネットワーク104でブロードキャストすることができる。
ピアデバイスの発見が実行された状態で、タスクの並列実行を提供することができる。図5は、一実施形態によるタスクの並列実行を提供する方法の単純化された流れ図500を示している。段階502で、第1コンピュータデバイス102−1は、実行されるプロジェクトを判断する。プロジェクトは、データに対して実行する必要があるあらゆる分析とすることができる。プロジェクトは、いずれのタスクも含むことができ、又は実行することができるいずれのタスクにも分割することができる。
段階504で、第1コンピュータデバイス102−1は、プロジェクトのためのタスクを判断する。例えば、プロジェクトは、分析して他のコンピュータデバイス102によって実行することができるタスクを判断することができる。サービスレジストリ及びピアリストを分析することができる。これは、他のコンピュータデバイス102によって提供されるサービスを判断することができる。また、ピアリストは、他のコンピュータデバイス102が処理することができるタスクのような他のコンピュータデバイス102の機能を示すことができる。例えば、Linuxマシンは、計算集中的なタスクを処理することができる。また、Playstation3(PS3)は、PS3が強力なグラフィックプロセッサを有するので、グラフィック集中的なタスクを処理することができる。プログラマーは、プロジェクトをタスクに分割する方法をプログラムする必要はない。むしろ、第1コンピュータデバイス102−1が、プロジェクトを分析し、そのピアリスト及びピアによって提供されたサービスに基づいてプロジェクトから分割することができるタスクを判断する。この判断は、ネットワーク変更で利用可能な処理能力及び機能として動的に実行することができる。
プログラマーは、問題をどのように分散すべきかを正確に知る必要はないが、十分に細かい粒度で問題ドメインを概念的に分解し、それによって最小予想デバイスが、問題解決処理に参加することができる。これは、問題又はデータが一般化モデルに合わない場合にのみ必要とされる。例えば、モデルは、いずれのセグメント化規則又は制限にも従う必要がないプロジェクトのデータとすることができる。従って、データは、あらゆる方法で分割することができる。また、別のモデルは、ある一定の方法で分割することができるデータとすることができる。次に、プログラマーは、このモデル内に入るデータを指定することができる。プログラマーはまた、データをある一定のサイズよりも小さいサイズに分割する必要がないこと、ある一定のデータを一緒に維持するためにデータをセグメント化しなくてはならないこと等々のようなデータをどのように分割しなくてはならないかに関するセグメント化制限を指定することができる。
単純化された例に対して、情報の多数ギガバイトから構成されるデータの本体Xが存在する。解決するタスクは、特定のパターン(生物学上のデータにおける病気の兆候とすることができる)に対してこのデータの本体を検索することである。プログラマーは、データ及び検索する方法と何を検索するかの抽象論理を備えた1−nモジュール(各予想されるサポートプラットフォーム、同じコード、異なるターゲットに対してただ再コンパイルされたものに対しては1)を提供することができる。
あらゆるサイズのデータを処理することができるデバイスが出現した場合、任意の量のデータ及び付随するモジュールは、他のデバイスに分散される。しかし、PDA又は他の制約されたデバイスのようなある一定の処理制限を有するデバイスが、一度にメガバイトのデータしか処理できない(例えば)ネットワークに入った場合、第1コンピュータデバイスは、PDA以外のパーソナルコンピュータにより大きなデータのブロックを与えることになる。各デバイスがデータの処理を終えた時、結果が戻され、データの次のブロックが割り当てられる。特定の回線に沿ってデータをセグメント化するためのドメイン関連の理由がない限り、この処理は機能する。すなわち、第1コンピュータデバイスは、あらゆる方法でデータをセグメント化することができ、利用可能なデバイス及びその処理機能に基づいて動的にデータをセグメント化することができる。しかし、データの自然順序が、より強力なデバイスだけがそれに働くことができるものである場合、大量のデータを処理できないデバイスには作業が与えられない。この場合、プログラマーは、最小/最大データブロックサイズに対する指針を構成するために、パターン検出コード及びデータブロック普及コードを定めることができる。第1コンピュータデバイスは、指針を読取り、データをどのように分解するかを判断することができる。また、第1コンピュータデバイスは、データを分析することができ、実行する必要があるタスク及び最も効率的な方法でのデータの分割が判断される。いずれにせよ、第1コンピュータデバイスは、問題ドメインの必要性に沿って作業のユニットだけが分散されるようにする。
段階506で、第1コンピュータデバイス102−1は、タスクを処理するための処理リソースを含むコンピュータデバイス102を判断する。これは、処理リソースが利用可能であるかを判断するために、他のコンピュータデバイス102にポーリングする段階を伴う場合がある。例えば、メッセージを他のデバイス102に送信することができ、処理リソースが利用可能であるか否かを示す応答を受信することができる。処理リソースは、デバイスがある一定の閾値よりも上では作動しない場合に利用可能であるとすることができる。例えば、プロセッサが60%の利用度である場合、コンピュータデバイスは、40%の利用可能な処理リソースを有することを示すことができる。
段階508で、第1コンピュータデバイス102−1は、コンピュータデバイス102がタスクの1つを実行するためにモジュールを必要とするかを判断する。必要とする場合、段階510は、モジュールの分散を促進する。例えば、モジュールは、図4に関して上述したように分散させることができる。従って、タスクを実行することができることを第1コンピュータデバイス102−1が判断した時、モジュールを分散させることができる。
モジュールを分散する必要がない場合又はモジュールが分散された後に、段階512で、次に、第1コンピュータデバイス102−1がタスク及びデータを第2コンピュータデバイス102−2に送信する。例えば、必要なアルゴリズムがモジュールにパッケージ化され、演算を実行させるためにデータと共に送信される。1つの実施例では、問題解決アルゴリズム(上述のようなパターン検出アルゴリズム)を備えたモジュールが第2コンピュータデバイス102−2に与えられた状態で、タスクを実行するために、メッセージが第2コンピュータデバイス102−2に送信される。第2コンピュータデバイス102−2が、タスク及びタスクを実行する方法を知っている単一目的モデルでは、このメッセージが、作業をトリガするのに必要な全てとすることができる。タスクを実行するためにメッセージに含まれるのは、ネットワーク上の共有データリポジトリにアクセスするのに必要であるか又はタスクに必要なデータセグメントをどこにダウンロードするかの情報である。このメッセージの受信時に、ターゲットマシンは、共有リソースをダウンロード又は参照するかのいずれかを実行し、タスクを実行し、継続するか又は中断する演算利用可能性を示すフラグと共に結果をマスターマシンに転送する。ターゲットマシンが利用可能である場合、データの次のブロックに対して、次のタスクメッセージを通じて、処理されるデータの本体への参照が割り当てられる。通信される1つのコンピュータデバイスを説明しているが、あらゆる数のコンピュータデバイス102がタスクを受信し、データの一部に対して演算を実行することができることは理解されるであろう。
段階514で、第1コンピュータデバイス102−1は、タスクの実行の結果を受信する。タスクが多くの異なるデバイスによって実行されるので、段階516で、第1コンピュータデバイス102−1は、結果をプロジェクトに統合することができる。例えば、異なるタスクに対する異なる結果を異なるコンピュータデバイス102から受信することができる。第1コンピュータデバイス102−1は、プロジェクトに対する問題を解決するために異なるタスクの結果がどのように相関付けられるかを調整することができる。
異なる実施例をここで説明する。他の実施例も想定することができることは理解されるであろう。1つの実施例では、コンピュータデバイス102の小さいサーバファームを有する調査者は、デバイス102−1で必要とされるデータで問題を設定することができる。この問題は、フレームワーク106を実行しているあらゆるデバイスをコールドに(ファイルコピーだけ)又はホットに(構成要素をホットスワップすることができる)更新することができるように、ネットワークにわたって複製することができる。タスクが送信された時、これらのデバイスは、たんぱく質の調査から地質調査まで実行することができる。
別の実施例では、ネットワーク上のデバイスA−Fが問題を処理しており、各デバイスは、次のデバイスに結果をフィードし、このデバイスは、それを処理してそれを次に送る(すなわち、AはBにフィードし、BはCにフィードする等々)。Fの出力は「答え」である。作業フローは、データを従来通り処理するために全ての6つのマシンのために作成する必要がある。しかし、特定的な実施形態により、デバイスFは、どのデバイスが利用可能な処理リソースを有するかを自動的に判断することができ、Fは、タスクの分散を調整することができる。デバイスFは、システムの1−nでの構成/設定を変更し、Aでデータを設定し、処理を戻すことができる。同じ問題が実行されている場合、Fの構成要素は、結果を調査し、ピアツーピア機構を通じて先行する5つのマシンに変更を実行し、試験自体をリセット及び再実行することができ、行われた時に人間を煩わすだけである。
本説明をその特定的な実施形態に関して説明したが、これらの特定的な実施形態は、単に例示的であり、制限ではない。C、C++、Java、アセンブリ言語などを含む特定的な実施形態のルーチンを実行するためのあらゆる適切なプログラミング言語を利用することができる。手順又はオブジェクト指向のような異なるプログラミング技術も利用することができる。ルーチンは、単一の処理デバイス又は複数のプロセッサで実行することができる。段階、演算、又は計算は、特定の順序で呈示することができるが、この順序は、異なる特定的な実施形態において変化させることができる。一部の特定的な実施形態では、本明細書で連続したものとして示されている複数の段階を同時に実行することができる。
特定的な実施形態は、命令実行システム、装置、システム、又はデバイスにより、又はこれらと共に使用するためのコンピュータ可読記憶媒体で実施することができる。特定的な実施形態は、ソフトウエア又はハードウエア又はその組合せにおける制御論理の形式で実施することができる。制御論理は、1つ又はそれよりも多くのプロセッサによって実行された時、特定的な実施形態に説明するものを実行することができる。
特定的な実施形態は、プログラムされた汎用デジタルコンピュータを使用することにより、特定用途向け集積回路、プログラマブル論理デバイス、フィールドプログラマブルゲートアレイ、光、化学、生物学、量子、又はナノ加工システム、構成要素、及び機構を使用することにより実施することができる。一般的に、特定的な実施形態の機能は、当業技術で公知のあらゆる手段によっても達成することができる。分散ネットワーク式システム、構成要素、及び/又は回路を使用することができる。データの通信又は転送は、有線、無線、又はあらゆる他の手段によるものとすることができる。
図/図面に示されている要素の1つ又はそれよりも多くはまた、特定の用途に従って有用である場合、より分離された又は統合された方式で実施することができ、又はある一定の場合に作動不能として取り除くか又はレンダリングすることができることも認められるであろう。上述の方法のいずれかをコンピュータに実行させるために、機械可読媒体に記憶することができるプログラム又はコードを実施することも本発明の精神及び範囲にある。
本明細書の説明及びそれに続く特許請求の範囲を通して使用される「a」、「an」、及び「the」は、文脈が他を明確に示さない限り、複数の参照を含む。また、本明細書の説明及びそれに続く特許請求の範囲を通して使用される「in」の意味は、文脈が他を明確に示さない限り、「in」及び「on」を含む。
すなわち、特定的な実施形態を本明細書に説明したが、修正、様々な変更、及び置換の裁量の余地が上述の開示に意図されており、場合によっては、特定の実施形態の一部の特徴は、示した精神及び範囲から逸脱することなく他の特徴の対応する使用なしに利用することができることが認められるであろう。従って、特定の状況又は材料を本質的な範囲及び精神に適応させるために、多くの修正を実施することができる。
100 並列タスクフレームワークを提供するためのシステム
102 コンピュータデバイス
104 ネットワーク
106 フレームワーク

Claims (16)

  1. データを処理する方法であって、
    1つ又はそれよりも多くのネットワーク式デバイス上で発見され、フレームワークに設けられて該フレームワークに適合するモジュールを使用してタスクの並列処理を可能にするサービスを含む1つ又はそれよりも多くの発見メッセージを受信する段階と、
    データを処理すべきであるプロジェクトを判断する段階と、
    前記プロジェクトのためのデータの少なくとも一部を処理するタスクを実行してサービスを提供できる処理リソースを有する前記ネットワーク式デバイスの1つを判断するために、前記1つ又はそれよりも多くのネットワークデバイスを動的にポーリングする段階と、
    前記プロジェクトを分析して、前記動的にポーリングされた前記サービスを提供できる処理リソースに基づいて前記タスクを実行する前記ネットワーク式デバイスの前記1つを判断する段階と、
    前記サービスに対する前記フレームワークからのモジュールを前記ネットワーク式デバイスの前記1つに分散する段階と、
    前記データがセグメント化制限を含むかを判断する段階と、
    前記データがセグメント化制限を含む場合に、該セグメント化制限が侵害されないように該セグメント化制限及び前記ネットワーク式デバイスの前記1つに基づいて該データをデータユニットにセグメント化する段階と、
    前記タスクのためのデータ又はセグメント化されたデータを前記プロジェクトのための前記モジュールを使用して該データを処理する前記ネットワーク式デバイスの前記1つに分散する段階と、
    を含むことを特徴とする方法。
  2. 前記1つ又はそれよりも多くのネットワーク式デバイス上で発見された前記サービスをレジストリに記憶する段階と、
    前記1つ又はそれよりも多くのネットワーク式デバイスのどれがサービスを使用する前記プロジェクトのための前記タスクを実行することができるかを判断するために、前記レジストリにおける前記サービスを分析する段階と、
    を更に含むことを特徴とする請求項1に記載の方法。
  3. 前記1つ又はそれよりも多くのネットワーク式デバイスにおけるネットワークデバイス上で発見される、第1のデバイスに転送することができるサービスを判断する段階と、
    前記サービスの要求を前記第1のデバイスに送信する段階と、
    を更に含むことを特徴とする請求項1に記載の方法。
  4. 前記ネットワーク上の新しいデバイスを検出する段階と、
    前記新しいデバイスが処理リソースを有するかを判断する段階と、
    前記新しいデバイスが利用可能な処理リソースを有する場合に該新しいデバイスに第2のタスクを分散する段階と、
    を更に含むことを特徴とする請求項1に記載の方法。
  5. 前記1つ又はそれよりも多くのネットワーク式デバイスは、前記フレームワークを含み、これが、該1つ又はそれよりも多くのネットワーク式デバイス間のモジュールの分散を可能にすることを特徴とする請求項1に記載の方法。
  6. 前記ネットワーク式デバイスの前記1つは、該ネットワーク式デバイスの該1つに含まれる機能に基づいて選択されることを特徴とする請求項1に記載の方法。
  7. 前記データがセグメント化制限を含まない場合に、前記ネットワーク式デバイスの前記1つの前記機能に基づいて該データをセグメント化する段階を更に含むことを特徴とする請求項1に記載の方法。
  8. 前記モジュールは、複数のコンピュータアーキテクチャに適合するモジュールを含み、 前記ネットワーク式デバイスの前記1つに適合するモジュールが、該ネットワーク式デバイスの該1つに送信される、
    ことを特徴とする請求項1に記載の方法。
  9. 1つ又はそれよりも多くのプロセッサと、
    前記1つ又はそれよりも多くのプロセッサによる実行のために1つ又はそれよりも多くのコンピュータ可読媒体に符号化され、かつ実行された時に、
    1つ又はそれよりも多くのネットワーク式デバイス上で発見され、フレームワークに設けられて該フレームワークに適合するモジュールを使用してタスクの並列処理を可能にするサービスを含む1つ又はそれよりも多くの発見メッセージを受信し、
    データを処理すべきであるプロジェクトを判断し、
    前記プロジェクトのためのデータの少なくとも一部を処理するタスクを実行してサービスを提供できる処理リソースを有する前記ネットワークデバイスの1つを判断するために、前記1つ又はそれよりも多くのネットワーク式デバイスを動的にポーリングし、
    前記プロジェクトを分析して、前記動的にポーリングされた前記サービスを提供できる処理リソースに基づいて前記タスクを実行する前記ネットワークデバイスの前記1つを判断し、
    前記サービスに対する前記フレームワークからのモジュールを前記ネットワーク式デバイスの前記1つに分散し、
    前記データがセグメント化制限を含むかを判断し、
    前記データがセグメント化制限を含む場合に、該セグメント化制限が侵害されないように該セグメント化制限及び前記ネットワーク式デバイスの前記1つに基づいて該データをデータユニットにセグメント化し、
    前記タスクのためのデータ又はセグメント化されたデータを前記プロジェクトのための前記モジュールを使用して該データを処理する前記ネットワーク式デバイスの前記1つに分散する、
    ように作動可能である論理と、
    を含むことを特徴とする装置。
  10. 前記論理は、実行された時に、
    前記1つ又はそれよりも多くのネットワーク式デバイス上で発見された前記サービスをレジストリに記憶し、かつ
    前記1つ又はそれよりも多くのネットワークデバイスのどれがサービスを使用する前記プロジェクトに対する前記タスクを実行することができるかを判断するために、前記レジストリにおける前記サービスを分析する、
    ように更に作動可能である、
    ことを特徴とする請求項9に記載の装置。
  11. 前記論理は、実行された時に、
    第1のデバイスに転送することができるサービスであって、前記1つ又はそれよりも多くのネットワーク式デバイスにおけるネットワークデバイス上で発見されるサービスを判断し、かつ
    前記サービスの要求を前記第1のデバイスに送信する、
    ように更に作動可能である、
    ことを特徴とする請求項9に記載の装置。
  12. 前記論理は、実行された時に、
    前記ネットワーク上の新しいデバイスを検出し、
    前記新しいデバイスが処理リソースを有するかを判断し、かつ
    前記新しいデバイスが利用可能な処理リソースを有する場合に該新しいデバイスに第2のタスクを分散する、
    ように更に作動可能である、
    ことを特徴とする請求項9に記載の装置。
  13. 前記1つ又はそれよりも多くのネットワーク式デバイスは、前記フレームワークを含み、これが、該1つ又はそれよりも多くのネットワーク式デバイス間のモジュールの分散を可能にすることを特徴とする請求項9に記載の装置。
  14. 前記ネットワーク式デバイスの前記1つは、該ネットワーク式デバイスの該1つに含まれる機能に基づいて選択されることを特徴とする請求項9に記載の装置。
  15. 前記論理は、実行された時に、前記データがセグメント化制限を含まない場合に前記ネットワーク式デバイスの前記1つの前記機能に基づいて該データをセグメント化するように更に作動可能であることを特徴とする請求項9に記載の装置。
  16. データを処理するためのシステムであって、
    各々が異なる処理リソースを含む複数のターゲットコンピュータデバイスと、
    前記複数のターゲットコンピュータデバイス上で発見され、フレームワークに設けられて該フレームワークに適合するモジュールを使用してタスクの並列処理を可能にするサービスを含む1つ又はそれよりも多くの発見メッセージを受信し、
    データを処理すべきであるプロジェクトを判断し、
    前記プロジェクトのための前記データの少なくとも一部を処理する1つ又はそれよりも多くのタスクを実行して1つ又はそれよも多くのサービスを提供できる処理リソースを有するネットワークデバイスの1つを判断するために、前記1つ又はそれよりも多くのネットワーク式デバイスを動的にポーリングし、
    前記プロジェクトを分析して、前記動的にポーリングされた前記サービスを提供できる処理リソースに基づいて前記タスクを実行する前記ネットワークデバイスの前記1つを判断し、
    前記1つ又はそれよりも多くのモジュールにおけるモジュールをサービスのための前記フレームワークから前記複数のターゲットコンピュータデバイスの各々に分散し、
    前記データがセグメント化制限を含むかを判断し、
    前記データがセグメント化制限を含む場合に、該セグメント化制限が侵害されないように該セグメント化制限及び前記ネットワーク式デバイスの前記1つに基づいて該データをデータユニットにセグメント化し、
    タスクのためのデータ又はセグメントかされたデータを各々が前記プロジェクトのために前記分散されたモジュールを使用して分散された該データを処理する前記複数のターゲットコンピュータデバイスの各々に分散する、
    ように構成されたマスターコンピュータデバイスと、
    を含むことを特徴とするシステム。
JP2011544613A 2009-01-07 2009-12-30 並列タスクアプリケーションフレームワーク Active JP5486611B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/350,201 US7890644B2 (en) 2009-01-07 2009-01-07 Parallel tasking application framework
US12/350,201 2009-01-07
PCT/US2009/069864 WO2010080680A2 (en) 2009-01-07 2009-12-30 Parallel tasking application framework

Publications (2)

Publication Number Publication Date
JP2012514791A JP2012514791A (ja) 2012-06-28
JP5486611B2 true JP5486611B2 (ja) 2014-05-07

Family

ID=42312393

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011544613A Active JP5486611B2 (ja) 2009-01-07 2009-12-30 並列タスクアプリケーションフレームワーク

Country Status (5)

Country Link
US (1) US7890644B2 (ja)
EP (1) EP2380079B1 (ja)
JP (1) JP5486611B2 (ja)
CN (1) CN102272717A (ja)
WO (1) WO2010080680A2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100228951A1 (en) * 2009-03-05 2010-09-09 Xerox Corporation Parallel processing management framework
US8448185B2 (en) * 2009-03-23 2013-05-21 Siemens Aktiengesellschaft Method and system for dynamic discovery of services in a communication framework
US8161275B1 (en) * 2009-04-20 2012-04-17 Adobe Systems Incorporated Configuring media player
CN103336684B (zh) * 2013-07-18 2016-08-10 上海寰创通信科技股份有限公司 一种并发处理ap消息的ac及其处理方法
CN106068668B (zh) * 2013-10-31 2019-11-08 Lg电子株式会社 在无线通信系统中执行设备到设备通信的方法和装置
US11226841B2 (en) 2016-03-22 2022-01-18 Mitsubishi Electric Corporation Information processing system, information processing device, and information processing method
US10761903B2 (en) * 2018-03-29 2020-09-01 Servicenow, Inc. Management instrumentation and discovery (MID) server support for executing automated flows within a cloud based system
CN112131903B (zh) * 2019-06-24 2024-02-20 浙江宇视科技有限公司 设备数据的分析方法、装置、服务平台、系统及介质
WO2020258098A1 (en) * 2019-06-26 2020-12-30 Orange Deploying computing tasks on client computing apparatus

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0844678A (ja) * 1994-07-29 1996-02-16 Canon Inc 画像処理装置及びシステム
US6446070B1 (en) 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6185611B1 (en) * 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
JP4000223B2 (ja) * 1997-09-24 2007-10-31 富士通株式会社 情報検索方法,情報検索システムおよび同システム用検索管理装置
US6480876B2 (en) * 1998-05-28 2002-11-12 Compaq Information Technologies Group, L.P. System for integrating task and data parallelism in dynamic applications
US7114159B2 (en) * 2001-07-11 2006-09-26 Sun Microsystems, Inc. Processing resource for use in a distributed processing framework system and methods for implementing the same
US7093004B2 (en) * 2002-02-04 2006-08-15 Datasynapse, Inc. Using execution statistics to select tasks for redundant assignment in a distributed computing platform
JP3983619B2 (ja) * 2002-07-30 2007-09-26 大日本印刷株式会社 並列処理システム、サーバ、並列処理方法、プログラム、及び、記録媒体
US7346902B2 (en) 2002-10-22 2008-03-18 Sun Microsystems, Inc. System and method for block-based concurrentization of software code
US7395536B2 (en) 2002-11-14 2008-07-01 Sun Microsystems, Inc. System and method for submitting and performing computational tasks in a distributed heterogeneous networked environment
US7318092B2 (en) * 2003-01-23 2008-01-08 Computer Associates Think, Inc. Method and apparatus for remote discovery of software applications in a networked environment
US7680933B2 (en) * 2003-12-15 2010-03-16 International Business Machines Corporation Apparatus, system, and method for on-demand control of grid system resources
US7668939B2 (en) * 2003-12-19 2010-02-23 Microsoft Corporation Routing of resource information in a network
JP2005339174A (ja) * 2004-05-26 2005-12-08 Sony Corp 情報処理システム及び情報処理方法、並びにコンピュータプログラム
US20050278708A1 (en) 2004-06-15 2005-12-15 Dong Zhao Event management framework for network management application development
EP1688841A1 (en) 2005-02-04 2006-08-09 Sap Ag Dynamic parallel processing
JP2006228093A (ja) * 2005-02-21 2006-08-31 Takumi Ichimura Pcクラスタ計算機における計算ノードの選択と選択された計算ノードの起動とプログラムの配布スケジューリング処理の方法およびその装置
JP2006236123A (ja) * 2005-02-25 2006-09-07 Fujitsu Ltd ジョブ分散プログラム、ジョブ分散方法およびジョブ分散装置
US8126914B2 (en) * 2005-03-23 2012-02-28 International Business Machines Corporation Selecting a resource manager to satisfy a service request
US9270532B2 (en) * 2005-10-06 2016-02-23 Rateze Remote Mgmt. L.L.C. Resource command messages and methods
US20070208837A1 (en) 2006-02-22 2007-09-06 Lifen Tian Device management system for processing client requests
US7788330B2 (en) * 2006-08-24 2010-08-31 Research In Motion Limited System and method for processing data associated with a transmission in a data communication system
KR100827925B1 (ko) * 2006-09-08 2008-05-07 아주대학교산학협력단 유비쿼터스 환경에서 애플리케이션의 분산 및 이동성을위한 애플리케이션 프레임워크 시스템
US20080120592A1 (en) 2006-10-31 2008-05-22 Tanguay Donald O Middleware framework
US20080189718A1 (en) * 2007-02-02 2008-08-07 The Mathworks, Inc. Scalable architecture
US7926058B2 (en) * 2007-02-06 2011-04-12 Mba Sciences, Inc. Resource tracking method and apparatus

Also Published As

Publication number Publication date
EP2380079A4 (en) 2012-06-06
JP2012514791A (ja) 2012-06-28
EP2380079A2 (en) 2011-10-26
US20100174771A1 (en) 2010-07-08
US7890644B2 (en) 2011-02-15
WO2010080680A3 (en) 2010-09-23
EP2380079B1 (en) 2020-12-16
WO2010080680A2 (en) 2010-07-15
CN102272717A (zh) 2011-12-07

Similar Documents

Publication Publication Date Title
JP5486611B2 (ja) 並列タスクアプリケーションフレームワーク
Aksakalli et al. Deployment and communication patterns in microservice architectures: A systematic literature review
US8495598B2 (en) Control flow graph operating system configuration
Warneke et al. Exploiting dynamic resource allocation for efficient parallel data processing in the cloud
EP2143001B1 (en) Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US20080244507A1 (en) Homogeneous Programming For Heterogeneous Multiprocessor Systems
WO2017067586A1 (en) Method and system for code offloading in mobile computing
US11886302B1 (en) System and method for execution of applications in a container
Montella et al. Enabling android-based devices to high-end gpgpus
Chowdhury et al. A disaggregated packet processing architecture for network function virtualization
Nozal et al. Load balancing in a heterogeneous world: CPU-Xeon Phi co-execution of data-parallel kernels
Noor et al. Iotdoc: A docker-container based architecture of iot-enabled cloud system
US20200310828A1 (en) Method, function manager and arrangement for handling function calls
Carneiro Pessoa et al. GPU‐accelerated backtracking using CUDA Dynamic Parallelism
US10540193B2 (en) Software-defined microservices
Rościszewski et al. KernelHive: a new workflow‐based framework for multilevel high performance computing using clusters and workstations with CPUs and GPUs
US8429218B2 (en) Process restart on a compute node
WO2022166480A1 (zh) 任务调度方法、装置及系统
US11403083B2 (en) Offloading server and offloading program
Caruana et al. gSched: a resource aware Hadoop scheduler for heterogeneous cloud computing environments
US20220113978A1 (en) Methods and apparatus to conditionally activate a big core in a computing system
Gudukbay et al. GYAN: Accelerating bioinformatics tools in galaxy with GPU-aware computation mapping
Audsley et al. Real-time big data: the Juniper approach.
US20170286181A1 (en) Deployment and execution of sensing and computational tasks in a network of computing devices
US7908375B2 (en) Transparently externalizing plug-in computation to cluster

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121220

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130319

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130327

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130422

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130430

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130517

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130717

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131017

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131024

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131118

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131125

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131217

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140117

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140221

R150 Certificate of patent or registration of utility model

Ref document number: 5486611

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250