JP4402051B2 - データ処理システムおよびデータ処理方法 - Google Patents

データ処理システムおよびデータ処理方法 Download PDF

Info

Publication number
JP4402051B2
JP4402051B2 JP2006008064A JP2006008064A JP4402051B2 JP 4402051 B2 JP4402051 B2 JP 4402051B2 JP 2006008064 A JP2006008064 A JP 2006008064A JP 2006008064 A JP2006008064 A JP 2006008064A JP 4402051 B2 JP4402051 B2 JP 4402051B2
Authority
JP
Japan
Prior art keywords
sub
unit
control
processing
control device
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
JP2006008064A
Other languages
English (en)
Other versions
JP2007188456A (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 Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
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 Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2006008064A priority Critical patent/JP4402051B2/ja
Priority to EP07706746.0A priority patent/EP1993038B1/en
Priority to CN2007800013955A priority patent/CN101356503B/zh
Priority to PCT/JP2007/050412 priority patent/WO2007081002A1/ja
Priority to US12/089,315 priority patent/US9311156B2/en
Publication of JP2007188456A publication Critical patent/JP2007188456A/ja
Application granted granted Critical
Publication of JP4402051B2 publication Critical patent/JP4402051B2/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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、複数の計算資源に処理を分散させてコンピュータプログラムを実行するための技術、に関する。
コンピュータゲームやウェブ検索ソフトをはじめとするソフトウェアの高機能化は、ハードウェアに対して大きな処理負荷をかけるようになってきている。このような状況に対処するためには、演算処理自体の高速化が必要であることはもちろんであるが、複数の処理装置間でタスクを好適に分散することも同様に重要である。
しかし、一口にタスクを分散させるといっても、システム全体として利用できる計算資源は多様である。このような実行環境の多様性まで考慮してタスク配分を制御するアプリケーションプログラムを作成するとすれば、その開発負担は、シングルプロセッサ上での動作を前提としたアプリケーションプログラムとは比べものにならない。
本発明は、このような課題に鑑みてなされたものであり、その主たる目的は、ネットワーク上の多様な計算資源に処理を分散させるコンピュータプログラムを簡易に作成するための技術、を提供することにある。
本発明のある態様は、通信回線を介して互いに接続された複数の制御ユニットに処理を分散させてコンピュータプログラムを実行するためのデータ処理システムである。
このシステムでは、データ処理の内容が記述されたスクリプトコードを参照して、データ処理を複数の単位処理に分解し、複数の制御ユニットに各単位処理を割り当てる。
制御ユニットは、制御ユニットを統括的に制御する主制御装置と、主制御装置により割り当てられた処理を実行する複数の副制御装置を含む。
主制御装置は単位処理の一部を副制御装置に割り当て、各副制御装置が割り当てられた処理を実行する。
スクリプトコードを参照してデータ処理を単位処理に分解したり単位処理を割り当てる処理は、いずれかの制御ユニットによって実行されてもよい。あるいは、このような処理を実行するための装置が別途設けられてもよい。スクリプトコードは、XMLのようにタグによって構造化される構造化文書ファイルとして記述されてもよいし、PerlやJavaScript(Javaは登録商標)などのスクリプト言語によって記述されてもよい。
通信回線は、インターネットやLANのような通信ネットワークであってもよいが、複数の制御ユニットを接続するバスのようなデータ送受信経路であってもよい。
本発明の別の態様は、複数の実行主体に処理を分散させてコンピュータプログラムを実行するためのデータ処理システムである。
このシステムは、データ処理の内容が記述されたスクリプトコードを参照して、前記データ処理を複数の単位処理に分解し、複数の実行主体に各単位処理を割り当てる。そして、各実行主体が割り当てられた処理を実行する。
このシステムにおいて、複数の実行主体は、1つのMPUに内蔵されるプロセッサであってもよい。そして、スクリプトーコードから抽出された単位処理は、単一のMPU内の複数の実行主体に割り当てられてもよい。あるいは、複数のMPUにそれぞれ含まれている更に多くの実行主体に対して、単位処理が分散されてもよい。
なお、本発明を方法、装置、システム、記録媒体、コンピュータプログラムにより表現したものもまた、本発明の態様として有効である。
本発明によれば、ネットワーク上の多様な計算資源にて分散処理を実行するコンピュータプログラムの作成負担を軽減する上で効果がある。
本実施例においては、コンピュータで特定の処理を実行するときに、当該コンピュータ内のプロセッサだけでなく、そのコンピュータが接続されたネットワーク内における他の装置のプロセッサをも利用できるスケーラビリティを確保した環境を実現する。そのために、各コンピュータからのハードウエア資源の提供をネットワーク上で管理し、分散処理の割り当てやデータ受け渡しを制御する仕組みを構築する。
図1は、リソースマネジメントシステム10の構成を模式的に示す。
リソースマネジメントシステム10は、インターネット14と、インターネット14に接続されたLAN12やユーザ端末16などのコンピュータで構成される。各ユーザ端末16は、インターネット14に直接接続されている場合と、ホームネットワークや企業内ネットワークなどのLAN12を経由してインターネット14に接続されている場合がある。インターネット14には、ユーザ端末16間の資源利用および提供を管理、制御するネットワークサーバ20が接続されている。LAN12には、LAN12内に接続されたユーザ端末16間における資源利用および提供を管理、制御するホームサーバなどのローカルサーバ18が接続されていてもよい。各ユーザ端末16は、LAN12内における資源を利用してもよいし、インターネット14を介したユーザ端末16同士で資源を利用しあってもよい。また、ユーザ端末16は、ローカルサーバ18の資源を利用してもよい。このように、広くインターネット14およびLAN12を介して複数のユーザ端末16やローカルサーバ18の間でハードウエア資源を共有し、そうした資源を相補的に利用して分散処理を図ることにより、単独で処理実行するよりも処理能力向上を図ることができる。
あるユーザ端末16は、1つのマイクロプロセッサユニット(MPU)を備え、別のユーザ端末16は2つのMPUを備えるかもしれない。また、ローカルサーバ18は、4個のMPUを備えるかもしれない。本実施例におけるリソースマネジメントシステム10においては、さまざまな装置が備えるMPUが、制御ユニットとして、全体としてのデータ処理を少しずつ分担することになる。
図2は、ユーザ端末16のハードウエア構成を例示する。
ユーザ端末16は、マイクロプロセッサユニット(MPU)22、グラフィックス処理ユニット(GPU)40、メインメモリ42、補助記憶装置(HDD)44、ネットワーク制御部46を備え、それぞれがメインバス38を介して接続される。ネットワーク制御部46は、LAN12またはインターネット14を介して他のユーザ端末16との間でデータを送受信する。
MPU22は、非対称型のマルチプロセッサユニットであり、1つのメイン処理ユニット(PU)24と複数のサブ処理ユニット(SPU)30を有し、それぞれがMPU22の内部バス36を介して接続される。PU24は、OSや各SPU30の制御を処理する主制御装置としてのユニットであり、プロセッサ26とローカルメモリ28を含む。ローカルメモリ28は、たとえばキャッシュメモリである。各SPU30は、積和計算を中心とする演算を処理する副制御装置としてのユニットであり、それぞれプロセッサ32とローカルメモリ34を含む。メインメモリ42から読み出されたプログラムやデータがローカルメモリ34に書き込まれてプロセッサ32により実行される。各SPU30は、PU24による制御の下で画像処理やデータ変換処理などの処理を分散して実行する。いずれのSPU30が処理を実行するかや、処理内容および実行予定時間は、PU24により管理される。
OSとしての機能は主としてPU24によって実行されることになるが、その機能の一部は各SPU30に委譲されている。たとえば、各SPU30には、メモリアクセスや割り込み、プロセス間通信等のごく基本的な機能が実装される。本実施例において、PU24は、各SPU30への処理の割り振りを中心とした制御を行い、SPU30がプログラムの実行主体となる。MPU22においてOSが起動すると、各SPU30でも実行スレッドが起動され、各SPU30はPU24から処理の割り当てを待機する。そして、PU24からなんらかの処理の実行を指示されたときには、SPU30はメインメモリ42等から必要なプログラム(以下、「要素プログラム」とよぶ)をローカルメモリ34にロードして、処理を開始することになる。
例として、ロボットAとロボットBがそれぞれ歩行する様子をシミュレーションする場合を想定する。PU24は、待機状態にあるSPU30aに対して、ロボットAの歩行処理を実行するよう指示する。ロボットの歩行処理のための要素プログラムは、実行形式にてメインメモリ42に用意されている。SPU30aは、この要素プログラムをローカルメモリ34にロードして、処理を開始する。一方、PU24は、別のSPU30bに対して、ロボットBの歩行処理の実行を指示する。SPU30bも同じく、所定の要素プログラムをローカルメモリ34にロードして、処理を開始する。ここで、SPU30aが実行する要素プログラムとSPU30bが実行する要素プログラムが時間的に並行して実行可能であれば、各SPU30によってそれぞれの要素プログラムが同時に実行されることになる。また、要素プログラムにおいて、ロボットは3分間歩行すると歩行を終了するとすれば、このときSPU30は要素プログラムの実行を停止させ、再び待機状態に戻る。すると、PU24は新たに別の処理をこのSPU30に割り当てることができるようになる。PU24、厳密には、PU24が実行するOSは、支配下にある各SPU30の実行状態を監視している。このようにして、MPU22内における複数の計算資源、すなわち、SPU30が適宜、PU24によって割り当てられた処理を実行することになる。
図3は、リソースマネジメントシステム10におけるアプリケーションプログラムの実行方法を説明するための模式図である。
本実施例においては、リソースマネジメントシステム10にて実行させたい処理内容は、XMLファイルに記述される。以下、このようなファイルに記述されているアプリケーションプログラムの実行内容を示す記述のことを「アプリケーションコード」とよぶ。アプリケーションコードは、XMLの所定のタグセットにて記述されてもよいし、スクリプト言語によって記述されてもよい。
同図の場合、「c1」という名前の「component」という処理と、「c2」という名前の「component」という処理を時間的に並行して実行するように記述されている。<parallel>というタグは、そのタグの要素として定義されている処理が時間的に並行して実行可能である旨を示すとして定義されているものとする。同様に、<component>というタグが示す処理がどのような処理内容を意味するかもあらかじめ定義されているものとする。<component>は、「人型のキャラクタを歩行させる処理」かもしれないし、単に「音声を出力する処理」かもしれない。アプリケーションコードを作成する段階では、タグに対応づけられた基本的な処理を組み合わせるだけで、全体としての処理を記述できる。また、<parallel>タグのように、その処理方法を記述することもできる。更に、各処理に要するMPU22やSPU30の数を指定できてもよい。
このようなアプリケーションコードをインタプリタ形式にて解釈するためのプログラム(以下、「メインプログラム」とよぶ)が、所定のユーザ端末16に用意されているとする。このユーザ端末16のMPU22は、メインプログラムを実行して、与えられたアプリケーションコードを解釈し、アプリケーションコードに示される処理を複数の処理に分解する。たとえば、図3に示すアプリケーションコードの場合、「c1」という名前の「component」という処理と、「c2」という名前の「component」という処理の2つの処理を含んでいる。
これら2種類の処理は並列実行可能であるため、メインプログラムによって、ユーザ端末16aのMPU22と、ユーザ端末16bのMPU22のそれぞれに各処理が割り当てられる。各MPU22は、「component」という処理を実行するためのプログラムを取得する。このようなプログラムは、各ユーザ端末16のHDD44にあらかじめ用意されていてもよいし、インターネット14を介して、所定のサーバ装置からダウンロードしてきてもよい。こうして、メインプログラムによって処理を割り当てられたMPU22は、割り当てられた処理の具体的内容を認識する。以下、MPU22が実行するプログラムのことを「単位プログラム」とよぶことにする。
MPU22は、こうして取得した「component」処理のための単位プログラムが、更に細分化できるかを検査する。たとえば、この単位プログラムがマルチスレッドプログラムの場合、PU24は、各スレッドの処理をSPU30に割り振ってもよい。SPU30は、割り当てられた処理を実行するための要素プログラムを取得し、PU24からの指示に応じて、割り当てられた処理を実行する。たとえば、「componet」という処理が、「ロボットの歩行処理」を意味するならば、この処理は、更に、「ロボットの歩行経路を計算する処理」や「ロボットの手の動きを計算する処理」のように、小さな処理単位に分解できるかもしれない。PU24は、このように細分化された処理をSPU30に割り当てる。PU24は、支配下にあるSPU30だけでなく、別のMPU22のPU24に対して単位プログラムにおける処理の一部を委譲してもよい。
このように、もともとのアプリケーションコードに記述されていた処理内容は順次細分化され、その処理主体も、複数のMPU22、ひいては、複数のSPU30に分散されていくことになる。
なお、アプリケーションコードにおいて定義されている「component」という処理は、必ずしも単位プログラムに対応するものでなくともよい。たとえば、アプリケーションコードにおいてタグにより定義される「component」のような処理単位自体が、SPU30において実行されることを前提とした要素プログラムに対応するものであってもよい。このように、アプリケーションコードにおいては、SPU30で処理できるサイズ(粒度)にて、処理単位が特定されてもよい。
図4は、本実施例における分散処理の階層構造を示す概念図である。
ここで「Models」とあるのは、アプリケーションコードを作成するために基本となる計算モデルである。たとえば、「Models」においては、さきほどの<componet>のように、多くのアプリケーションで利用可能な処理単位が定義される。アプリケーションコードの作成者は、「Models」が提供する機能や規則にしたがって、必要なパラメータを属性値などで与えながら、全体としての処理をデザインすることになる。あとは、この「Models」にしたがって、あらかじめ用意されているさまざまな単位プログラムがMPU22によって自動的に分解・分散されるため、アプリケーションコードの作成者は、作成したアプリケーションコードの処理主体がどのMPU22、更には、どのSPU30となるかをほとんど意識せずに処理内容を定義できる。
同図において、「全体制御」として示されている部分は、アプリケーションそのものに対応したレイヤである。すなわち、このレイヤが、処理内容を定義するレイヤであり、その処理を実際に担うのが「部分制御」として示されているレイヤである。「全体制御」レイヤで、定義されるアプリケーションコードの実行主体が、「部分制御」レイヤで示されるMPU22群、ひいては、SPU30群となる。
図5は、アプリケーションコードに記述された処理が複数の処理主体に分散されていく様子を説明するための模式図である。
説明を簡単にするため、XMLファイルには、処理A、処理Bおよび処理Cという3つの処理が並行して実行されるようにアプリケーションコードが記述されているものとする。メインプログラムによって、処理AはあるMPU22aにディスパッチされる。MPU22aのPU24aは、MPU22aのメインメモリ42に処理Aを実行するための単位プログラムをロードする。この単位プログラムは、更に、処理A1、処理A2および処理A3という3つの処理を並行して実行するプログラムであるとする。
このとき、PU24aは、これら3つの処理を支配下のSPU30に分配する。処理A2、処理A3は、それぞれ1つのSPU30により処理可能であるとする。ここでは、PU24aは、処理A2および処理A3を支配下のSPU30に割り当てる。SPU30は、割り当てられた処理に対応する要素プログラムを実行する。
処理A1は、更に、処理A1−1、処理A1−2の2種類の処理を並列実行することにより実現される処理であるとする。このとき、PU24aは、処理A1を、支配下にあるSPU30に分配してもよいが、別のMPU22bに委譲してもよい。MPU22bのPU24bは、処理A1を実行するためのプログラムをメインメモリ42にロードする。PU24bは、このプログラムをMPU22aから受け取ってもよいし、他の装置から取得してもよい。PU24bは、処理A1−1と処理A1−2を、支配下にあるSPU30に割り当てる。
図6は、要素プログラム間において処理を連係させるためのインタフェースについて説明するための模式図である。
アプリケーションコードとして記述された処理は、複数の単位プログラムに分解される。MPU22のPU24は、更に、この単位プログラムを構成する要素プログラムを各SPU30に割り当てる。
各SPU30で実行される要素プログラムは、互いに、データ送受することができる。たとえば、SPU30aの要素プログラムは、SPU30bが実行する要素プログラムの処理状態に応じて条件制御されるとする。このとき、SPU30aの要素プログラムは、SPU30bの要素プログラムに対して処理状態を問い合わせる必要がある。そのため、要素プログラムは、自分の処理に対して外部からアクセスするためのインタフェースをメソッドとして提供する。
このインタフェースは、「限定公開インタフェース」と、「完全公開インタフェース」に分けることができる。互いに同じMPU22に属するSPU30は、基本的に、同一プロセス空間において別々のスレッドとしてそれぞれが担当する処理を実行する。「限定公開インタフェース」は、このような要素プログラム間におけるスレッド間通信を想定したインタフェースである。一方、互いに別々のMPU22に属するSPU30は、別々のプロセス空間に属する。「完全公開インタフェース」は、このような要素プログラム間におけるプロセス間通信を想定したインタフェースである。このようなインタフェースを介して、複数の要素プログラムを連係動作させることができる。
限定公開インタフェースの場合、メソッド呼び出しの形式にて、メッセージパッシングにより通信を行う。完全公開インタフェースも同様であるが、XML形式のリクエストを送信することにより、他のMPU22に属するSPU30に処理を割り当てることもできる。
図7は、要素プログラムの一例を示す図である。
ここで「MyModule1」クラスは、あるSPU30においてインスタンス化されるクラスであり、「SpuModule」クラスを継承するクラスである。「SpuModule」クラスは、要素プログラムとして提供すべき基本的な機能を備えるクラスである。この「MyModule1」クラスが、SPU30において実行対象となる要素プログラムであるといえる。アクセス権が「PUBLIC」と指定されているメソッド「method1」は、限定公開インタフェースである。一方、アクセス権として「PROTECTED」と指定されているメソッド「method2」は、完全公開インタフェースである。
このMyModule1クラスのmethod2関数は、別のSPU30において実行されている要素プログラムのインタフェースを利用しつつ、処理を実行している。method2関数は、まず、MyModule2クラスのプロキシオブジェクトを取得している。このMyModule2クラスは、同じMPU22に属する別のSPU30によってインスタンス化されるクラスである。MyModule1クラスやMyModule2クラスのように、SpuModuleクラスから継承されているクラスは、インスタンス化に際して、自オブジェクトにアクセスするためのプロキシコードを生成する。このプロキシコードは、メインメモリ42に保持され、また、このプロキシコードの実行はPU24によってコントロールされる。
PU24は、支配下にあるSPU30にて、どのような要素プログラムが実行されているかを統括管理している。したがって、MyModule1クラスのmethod2関数は、PU24上の実行プログラムが提供するgetModuleProxy関数を介して、MyModule2クラスにアクセスするためのプロキシオブジェクトを取得できる。こうして取得されたプロキシオブジェクトm2proxyの仲介により、method2関数はMyModule2クラスが提供しているasyncmethodやsyncmethod、delayedmethodといったメソッドを呼び出すことができる。ちなみに、asyncmethodは非同期型の呼び出し、syncmethodは同期型の呼び出し、delayedmethodは、遅延評価のための呼び出しである。
図8は、図7に示した要素プログラムの続きを示す図である。
method3関数は、MyProgramという単位プログラムにアクセスするためのプロキシオブジェクトprogproxyを取得している。たとえば、図7のmethod1のように他のMPU22からのアクセスが可能な完全公開インタフェースは、PU24によって他のMPU22にも通知される。MPU22は、このような完全公開インタフェースに関する情報を互いに交換することができる。完全公開インタフェースに関する情報は、所定のユーザ端末16が一元的に管理してもよいし、各ユーザ端末16が情報を交換しあう形にて管理してもよい。図5に示した例の場合、処理Aを実行するMPU22aは、処理Aに対応する単位プログラムを実行形式に変換するときに、その単位プログラムに含まれている各要素プログラムの完全公開インタフェースに関する情報を他のMPU22に通知する。したがって、MyModule1クラスのmethod3関数は、自らを管理するPU24に問い合わせることにより、MyProgramという別の単位プログラムにアクセスするためのプロキシオブジェクトを取得できる。こうして取得されたプロキシオブジェクトprogproxyを介して、MyProgramの完全公開インタフェースであるasyncmethodといったメソッドを呼び出すことができる。
更に、method3は、「ScriptA」という名前のXMLファイルを指定して、executeScript関数を実行している。この「ScriptA」というXMLファイルには所定の処理を実行するためのロジックが記述されている。このようなXMLファイルのことを、「インタフェースコード」とよぶことにする。複数の要素プログラム間で実行される典型的な処理については、インタフェースコードとしてまとめておくことにより、要素プログラム自体のサイズをコンパクトにできる。インタフェースコードは、完全公開インタフェースに関する情報と同様に、所定のユーザ端末16が一元的に管理してもよいし、各ユーザ端末16が情報を交換しあう形にて管理してもよい。
図9は、インタフェースコードを示す図である。
このインタフェースコードでは、まず、MyProgramという単位プログラムの完全公開インタフェースであるmethod1を、argument1およびargument2という2つの引数を与えて実行指示している。また、method2は引数なしで実行指示されている。<concurrent>タグにより、これらの関数は同時並行的に実行指示可能であることが示されている。また、method3とmethod4は、<sequence>タグにより、method3の実行がなされたあとにmethod4が実行されるように指示されている。図8のexecuteScript関数の実行により、このインタフェースコードに記述されている処理が実行され、結果として、SpuModule1から他の要素プログラムの処理をコントロールできる。
インタフェースコードやアプリケーションコードは、図4のModelsによって規定される所定のタグセットによって記述される。
以上をふまえ、複数のMPU22、更には、複数のSPU30に処理を分散させるプログラムの例として、水槽の中での魚の動きをシミュレーション計算するというアプリケーションを題材として説明する。
図10は、コンピュータグラフィックスにより魚の動きをシミュレーションした様子を示す模式図である。
水槽50には、魚52aから魚52gまでの7匹の魚がそれぞれ所定のパターンにしたがって泳ぐようなシミュレーションを想定する。水槽50は、ボックスA〜ボックスDまでの4つのボックスに分けて処理される。SPU30aは、ボックスAの中にいる魚の動きを計算する。同様に、SPU30bはボックスB、SPU30cはボックスC、SPU30dはボックスDを担当する。また、SPU30eは、水槽50の外部の光源54を移動させる。魚52は、光源54によって照らされと、動きが変化するものとする。
図11は、各SPU30間における処理の連係を説明するためのタイムチャートである。
SPU30aからSPU30eまでの5つのSPU30は、それぞれ与えられた要素プログラムを同時並行的に実行する。時刻t〜時刻tn+1の期間において、SPU30aはボックスAの中における魚52gの動きを計算する。同様に、SPU30bはボックスBにおける魚52fや魚52eの動きを計算する。
SPU30aによる計算の結果、ボックスAにいた魚52gが、ボックスBに移動したとする。このとき、時刻tn+1に、SPU30aは、SPU30bが実行している要素プログラムのメソッドを介して、魚52gがボックスBに移動した旨を通知する。SPU30bは、時刻tn+1〜時刻tn+2の期間において、新たにボックスBに入ってきた魚52gも含めて、ボックスB内の魚52の動きを計算することになる。
一方、時刻t〜時刻tn+1の期間においてSPU30eが光源54を移動させた結果、SPU30cが担当するボックスCの魚の動きに影響が発生するとする。このとき、SPU30eが実行する要素プログラムは、SPU30cが実行する要素プログラムのメソッドを介して、ボックスCが照射された旨を通知する。これにより、時刻tn+1〜時刻tn+2
までの期間においては、SPU30cは光源の影響を考慮にいれて、魚52の動きを計算することになる。
図12は、本シミュレーションで使用されるプログラム例を示す。本プログラム例では、初期配置処理(一点鎖線枠で囲むA部分)、シミュレーション実行処理(一点鎖線枠で囲むB部分)を順次実行する。同図における、<Sequence>タグは、以下の処理、すなわち、初期配置処理Aとシミュレーション実行処理Bがシーケンシャルに実行される旨を示すタグである。
初期配置処理Aでは、図10中の各ボックスA〜D、光源54に関するシミュレーション処理がSPU30a〜30eに割り当てられ、各SPU30上では割り当てられたシミュレーションを実行するための初期化が並行して行われる。同図における<Concurrent>タグは、Aa〜Alに示す各処理が並列実行される旨を示すタグである。
本例では、水槽50の初期配置に相当する破線枠で囲まれたモジュールAa〜AdがSPU30a〜30dにそれぞれ割り当てられ、光源54の初期配置に相当する破線枠で囲まれたモジュールAlがSPU30eに割り当てられている。なお、初期化の際、各SPU30には、自己がシミュレーションするボックスと隣接するボックスをシミュレーションするプログラムIDなど、シミュレーション実行に必要な各種値が与えられる。
シミュレーション実行Bでは、SPU30e上で光源移動のシミュレーションモジュールBlが実行され、この光源シミュレーション結果に基づいて、各SPU30a〜30d上で各ボックス内のシミュレーションモジュールBa〜Bdが並行実行され、この一連の処理が<Loop>タグの指示により繰り返される。
本プログラム例は、メインプログラムの所定ルーチンによりその内容が解析されて各モジュールに分解され、各モジュールが使用可能なSPU30に割り当てられることとなる。メインプログラムは、いずれかのMPU22上で実行されるプログラムである。なお、並行実行されるべきプログラムモジュールの個数が使用可能なSPU30の個数よりも多いときは、SPU30を時分割で利用すればよい。また、メインプログラムは、SPU30同士の結合度またはプログラムモジュールのプライオリティを参照して、プログラムモジュールを各SPU30に分配してもよい。
このような態様によれば、水槽50における複数の魚52の動きを計算するというシミュレーションが5つのSPU30の同時並行的な処理によって実現される。このような場合、簡単なアプリケーションコードにて、複雑な処理を複数の計算資源に簡単に分散させることができる。
以上に示した処理方法によれば、XML等の構造化文書ファイルに記述された処理内容が、複数のPU24によって分散され、更に多数のSPU30に処理が割り振られていくことになる。そのため、アプリケーションコードの作成負担を軽減しつつも、処理を複数の計算資源に分散させるための好適なスキームを提供することができる。複数のMPU22が使えるときには各MPU22に処理を分散させ、単一のMPU22しか使えないときには各処理を時分割処理するとしてもよい。
各PU24は、単位プログラムや要素プログラムへの処理分解、各プログラムのインタフェースの登録、各プログラムの割り当て、実行制御、各プログラムの実行主体の登録・検索等を協働して行うことになる。このため、各MPU22のPU24群が連係して処理分散を実行し、それぞれの支配下にあるSPU30が連係して実際の処理を実行することになる。
請求項に記載の処理分解部や分配部の機能は、本実施例においては、いずれかのMPU22上で実行されるメインプログラムの所定ルーチンによって実現される。また、処理分解部や分配部の機能を提供するMPU22は、リソースマネジメントシステム10に含まれる装置に搭載される任意のMPU22であってもよいが、メインプログラムを実行するための専用装置に搭載されもよい。
これら請求項に記載の各構成要件が果たすべき機能は、本実施例において示された各機能ブロックの単体もしくはそれらの連係によって実現されることも当業者には理解されるところである。
以上、本発明を実施例をもとに説明した。この実施例はあくまで例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
リソースマネジメントシステムの構成を模式的に示す図である。 ユーザ端末のハードウエア構成を例示する図である。 リソースマネジメントシステムにおけるアプリケーションプログラムの実行方法を説明するための模式図である。 本実施例における分散処理の階層構造を示す概念図である。 アプリケーションコードに記述された処理が複数の処理主体に分散されていく様子を説明するための模式図である。 要素プログラム間において処理を連係させるためのインタフェースについて説明するための模式図である。 要素プログラムの一例を示す図である。 図7に示した要素プログラムの続きを示す図である。 インタフェースコードを示す図である。 コンピュータグラフィックスにより魚の動きをシミュレーションした様子を示す模式図である。 各SPU間における処理の連係を説明するためのタイムチャートである。 本シミュレーションで使用されるプログラム例を示す図である。
符号の説明
10 リソースマネジメントシステム、 12 LAN、 14 インターネット、 16 ユーザ端末、 18 ローカルサーバ、 20 ネットワークサーバ、 22 MPU、 24 PU、 26 プロセッサ、 28 ローカルメモリ、 30 SPU、 32 プロセッサ、 34 ローカルメモリ、 36 内部バス、 38 メインバス、 40 GPU、 42 メインメモリ、 44 HDD、 46 ネットワーク制御部、 50 水槽、 52 魚、 54 光源。

Claims (9)

  1. 通信回線を介して互いに接続された複数の制御ユニットに処理を分散させてコンピュータプログラムを実行するためのシステムであって、
    データ処理の内容が記述されたスクリプトコードを参照して、前記データ処理を複数の単位処理に分解する処理分解部と、
    複数の制御ユニットに各単位処理を割り当てる分配部と、
    を備え、
    制御ユニットは、
    制御ユニットを統括的に制御する主制御装置と、
    主制御装置により割り当てられた処理を実行する複数の副制御装置と、
    を含み、
    一の制御ユニットの主制御装置は自身の支配下にある副制御装置の実行状態に応じて単位処理の一部を自身の支配下にある副制御装置に割り当て、各副制御装置が割り当てられた処理を実行し、
    前記一の制御ユニットの主制御装置は、前記単位処理の別の一部を実行させる他の制御ユニットにおける特定の副制御装置を指定することなく、前記他の制御ユニットの主制御装置に対して、前記他の制御ユニットの主制御装置の支配下にある副制御装置への前記単位処理の別の一部の割り当てを指示可能であり、
    前記単位処理の別の一部の割り当てを指示された前記他の制御ユニットの主制御装置は、自身の支配下にある副制御装置の実行状態に応じて前記単位処理の別の一部を自身の支配下にある副制御装置に割り当て、各副制御装置が割り当てられた処理を実行することを特徴とするデータ処理システム。
  2. 前記スクリプトコードは、所定のタグセットによる構造化文書ファイルとして記述されることを特徴とする請求項に記載のデータ処理システム。
  3. 副制御装置に割り当てられた処理は、当該処理を他の制御ユニットから制御するためのインタフェースを主制御装置に通知し、当該主制御装置は、そのインタフェースを前記他の制御ユニットの主制御装置に通知し、
    前記他の制御ユニットの副制御装置は、前記他の制御ユニットの主制御装置に通知されたインタフェースを介して前記副制御装置による処理を制御可能であることを特徴とする請求項1または2に記載のデータ処理システム。
  4. 副制御装置に割り当てられた処理を制御するための、他の制御ユニットからもアクセス可能なインタフェースの一覧を公開インタフェース情報として保持する公開インタフェース情報保持部、を更に備え、
    副制御装置に割り当てられた処理は、前記公開インタフェース情報を参照することにより、別の制御ユニットにおける単位処理を制御可能であることを特徴とする請求項1から3のいずれかに記載のデータ処理システム。
  5. 前記公開インタフェース情報に登録されているインタフェースを介して1以上の単位処理を制御するためのロジックが記述されたインタフェースコードを保持するインタフェースコード保持部、を更に備え、
    副制御装置に割り当てられた処理は、前記インタフェースコードを実行することにより、別の制御ユニットにおける単位処理を制御可能であることを特徴とする請求項に記載のデータ処理システム。
  6. ある領域の変化が他の領域に影響を及ぼしうる複数の領域に関する所定のシミュレーション処理を指示するスクリプトコードが実行される際、複数の副制御装置のそれぞれは、前記複数の領域それぞれに関するシミュレーション処理を並行して実行し、
    副制御装置に割り当てられたシミュレーション処理は当該処理を当該処理とは異なるシミュレーション処理から制御するためのインタフェースを主制御装置に通知し、前記副制御装置とは異なる副制御装置は、主制御装置に通知されたインタフェースを介して前記副制御装置によるシミュレーション処理を制御可能であり、
    前記複数の領域のうち1つの領域に関するシミュレーション処理を実行する副制御装置は、当該領域に関するシミュレーション処理の結果が、他の領域に関するシミュレーション処理に影響を及ぼす場合、当該領域に関するシミュレーション処理の結果を、主制御装置に通知されたインタフェースを介して、前記他の領域に関するシミュレーション処理を実行する他の副制御装置へ通知することで、当該領域に関するシミュレーション処理の結果を反映したシミュレーション処理を前記他の副制御装置に実行させることを特徴とする請求項1から5のいずれかに記載のデータ処理システム。
  7. 通信回線を介して互いに接続された複数の制御ユニットに処理を分散させてコンピュータプログラムを実行するための方法であって、
    プロセッサユニットが、データ処理の内容が記述されたスクリプトコードを参照して、前記データ処理を複数の単位処理に分解する処理分解ステップと、
    プロセッサユニットが、それぞれの単位処理に対応するソフトウェアモジュールを取得するモジュール取得ステップと、
    プロセッサユニットが、複数の制御ユニットに各ソフトウェアモジュールを割り当てる割当ステップと、
    一の制御ユニットにおいてその制御ユニットを統括的に制御するプロセッサユニットである主制御装置が、自身の支配下にあるプロセッサユニットであり、主制御装置により割り当てられた処理を実行する複数の副制御装置それぞれの実行状態に応じて、単位処理の一部を自身の支配下にある副制御装置に割り当て、割り当てられた処理を各副制御装置が実行するステップと、
    前記一の制御ユニットの主制御装置が、前記単位処理の別の一部を実行させる他の制御ユニットにおける特定の副制御装置を指定することなく、前記他の制御ユニットの主制御装置に対して、前記他の制御ユニットの主制御装置の支配下にある副制御装置への前記単位処理の別の一部の割り当てを指示するステップと、
    前記単位処理の別の一部の割り当てを指示された前記他の制御ユニットの主制御装置が、自身の支配下にある副制御装置の実行状態に応じて前記単位処理の別の一部を自身の支配下にある副制御装置に割り当て、割り当てられた処理を各副制御装置が実行するステップと、
    を備えることを特徴とするデータ処理方法。
  8. 副制御装置に割り当てられた処理は、当該処理を他の制御ユニットから制御するためのインタフェースを主制御装置に通知し、当該主制御装置は、そのインタフェースを前記他の制御ユニットの主制御装置に通知し、
    前記他の制御ユニットの副制御装置が、前記他の制御ユニットの主制御装置に通知されたインタフェースを介して前記副制御装置による処理を制御するステップをさらに備えることを特徴とする請求項7に記載のデータ処理方法。
  9. ある領域の変化が他の領域に影響を及ぼしうる複数の領域に関する所定のシミュレーション処理を指示するスクリプトコードが実行される際、複数の副制御装置のそれぞれは、前記複数の領域それぞれに関するシミュレーション処理を並行して実行し、
    副制御装置に割り当てられたシミュレーション処理は当該処理を当該処理とは異なるシミュレーション処理から制御するためのインタフェースを主制御装置に通知し、前記副制御装置とは異なる副制御装置は、主制御装置に通知されたインタフェースを介して前記副制御装置によるシミュレーション処理を制御し、
    前記複数の領域のうち1つの領域に関するシミュレーション処理を実行する副制御装置は、当該領域に関するシミュレーション処理の結果が、他の領域に関するシミュレーション処理に影響を及ぼす場合、当該領域に関するシミュレーション処理の結果を、主制御装置に通知されたインタフェースを介して、前記他の領域に関するシミュレーション処理を実行する他の副制御装置へ通知することで、当該領域に関するシミュレーション処理の結果を反映したシミュレーション処理を前記他の副制御装置に実行させることを特徴とする請求項7または8に記載のデータ処理方法。
JP2006008064A 2006-01-16 2006-01-16 データ処理システムおよびデータ処理方法 Active JP4402051B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2006008064A JP4402051B2 (ja) 2006-01-16 2006-01-16 データ処理システムおよびデータ処理方法
EP07706746.0A EP1993038B1 (en) 2006-01-16 2007-01-15 Data processing system and data processing method
CN2007800013955A CN101356503B (zh) 2006-01-16 2007-01-15 数据处理***和数据处理方法
PCT/JP2007/050412 WO2007081002A1 (ja) 2006-01-16 2007-01-15 データ処理システムおよびデータ処理方法
US12/089,315 US9311156B2 (en) 2006-01-16 2007-01-15 System and method for distributing data processes among resources

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006008064A JP4402051B2 (ja) 2006-01-16 2006-01-16 データ処理システムおよびデータ処理方法

Publications (2)

Publication Number Publication Date
JP2007188456A JP2007188456A (ja) 2007-07-26
JP4402051B2 true JP4402051B2 (ja) 2010-01-20

Family

ID=38256403

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006008064A Active JP4402051B2 (ja) 2006-01-16 2006-01-16 データ処理システムおよびデータ処理方法

Country Status (5)

Country Link
US (1) US9311156B2 (ja)
EP (1) EP1993038B1 (ja)
JP (1) JP4402051B2 (ja)
CN (1) CN101356503B (ja)
WO (1) WO2007081002A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8261117B2 (en) * 2008-09-11 2012-09-04 International Business Machines Corporation Virtualization in a multi-core processor (MCP)
US8732716B2 (en) 2008-09-30 2014-05-20 International Business Machines Corporation Virtualization across physical partitions of a multi-core processor (MCP)
JP6078515B2 (ja) * 2014-11-13 2017-02-08 京セラドキュメントソリューションズ株式会社 電子機器およびプログラム
US11226841B2 (en) 2016-03-22 2022-01-18 Mitsubishi Electric Corporation Information processing system, information processing device, and information processing method
CN108885563B (zh) * 2016-03-22 2021-09-14 三菱电机株式会社 信息处理***、信息处理装置和信息处理方法
US20220197698A1 (en) * 2020-12-23 2022-06-23 Komprise Inc. System and methods for subdividing an unknown list for execution of operations by multiple compute engines

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0232509B1 (en) * 1986-02-04 1992-03-04 International Business Machines Corporation Method for balancing the workload in a multiprocessing system
JPH09218861A (ja) * 1996-02-08 1997-08-19 Fuji Xerox Co Ltd スケジューラ
AU4194499A (en) * 1998-05-22 1999-12-13 Ellis E. Frampton Iii Global network computers
US6775831B1 (en) * 2000-02-11 2004-08-10 Overture Services, Inc. System and method for rapid completion of data processing tasks distributed on a network
US20030018661A1 (en) * 2001-07-19 2003-01-23 Darugar Parand Tony XML smart mapping system and method
WO2003100648A1 (en) 2002-05-28 2003-12-04 Dai Nippon Printing Co., Ltd. Parallel processing system
US7478233B2 (en) * 2002-05-30 2009-01-13 Microsoft Corporation Prevention of software tampering
IL155112A0 (en) * 2003-03-27 2003-10-31 Eci Telecom Ltd Technique for network management
CN100483459C (zh) * 2003-04-24 2009-04-29 富士胶片株式会社 分散处理控制装置、***和方法
JP2005242598A (ja) * 2004-02-26 2005-09-08 Sony Corp 情報処理システム及び情報処理方法、並びにコンピュータ・プログラム
JP2005339137A (ja) * 2004-05-26 2005-12-08 Sony Corp 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム
JP4229935B2 (ja) * 2005-08-15 2009-02-25 株式会社日本製鋼所 冷却機構

Also Published As

Publication number Publication date
US9311156B2 (en) 2016-04-12
CN101356503A (zh) 2009-01-28
WO2007081002A1 (ja) 2007-07-19
EP1993038A1 (en) 2008-11-19
JP2007188456A (ja) 2007-07-26
EP1993038B1 (en) 2018-05-16
US20100131740A1 (en) 2010-05-27
EP1993038A4 (en) 2011-09-28
CN101356503B (zh) 2013-03-13

Similar Documents

Publication Publication Date Title
Teich et al. Invasive computing: An overview
Rowley et al. SpiNNTools: the execution engine for the SpiNNaker platform
KR101713009B1 (ko) 스케일가능한 컴퓨트 패브릭
JP4402051B2 (ja) データ処理システムおよびデータ処理方法
US20130061231A1 (en) Configurable computing architecture
CN103262035B (zh) 组合式cpu/gpu体系结构***中的装置发现和拓扑报告
CN111353609A (zh) 一种机器学习***
Rehm et al. Performance modeling of heterogeneous HW platforms
Theodoropoulos et al. The AXIOM platform for next-generation cyber physical systems
Giorgi et al. AXIOM: a flexible platform for the smart home
Pavlov et al. Multi-agent systems meet GPU: deploying agent-based architectures on graphics processors
Volovich et al. Deployment of parallel computing in a hybrid high-performance cluster based on virtualization technologies
Libutti et al. Towards a malleable tensorflow implementation
Badia et al. Workflow environments for advanced cyberinfrastructure platforms
CN116724292A (zh) 线程组的并行处理
Fabra et al. A framework for the flexible deployment of scientific workflows in grid environments
Liu et al. A balanced programming model for emerging heterogeneous multicore systems
Rossbach et al. Operating Systems Must Support {GPU} Abstractions
Plauth et al. CloudCL: distributed heterogeneous computing on cloud scale
Hugo et al. A runtime approach to dynamic resource allocation for sparse direct solvers
Fiaidhi et al. Empowering extreme automation via zero-touch operations and GPU parallelization
Plauth et al. CloudCL: single-paradigm distributed heterogeneous computing for cloud infrastructures
Christodoulis et al. An FPGA target for the StarPU heterogeneous runtime system
Perdomo et al. DEMAC: A Modular Platform for HW-SW Co-Design
Kobbe Scalable and Distributed Resource Management for Many-Core Systems

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090324

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090521

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: 20091027

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091028

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4402051

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121106

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121106

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131106

Year of fee payment: 4

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250