JP2010257056A - 並列処理装置、並列処理方法及び並列処理プログラム - Google Patents

並列処理装置、並列処理方法及び並列処理プログラム Download PDF

Info

Publication number
JP2010257056A
JP2010257056A JP2009104076A JP2009104076A JP2010257056A JP 2010257056 A JP2010257056 A JP 2010257056A JP 2009104076 A JP2009104076 A JP 2009104076A JP 2009104076 A JP2009104076 A JP 2009104076A JP 2010257056 A JP2010257056 A JP 2010257056A
Authority
JP
Japan
Prior art keywords
node
nodes
job
parallel processing
allocation pattern
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.)
Pending
Application number
JP2009104076A
Other languages
English (en)
Inventor
Takahiro Yamazaki
隆浩 山崎
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009104076A priority Critical patent/JP2010257056A/ja
Publication of JP2010257056A publication Critical patent/JP2010257056A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】ジョブを高速に実行することができる並列処理装置、並列処理方法及び並列処理プログラムを提供すること。
【解決手段】ジョブの実行中に、かかるジョブを実行している各ノードから性能情報を取得し、取得した性能情報に基づいて、ジョブを高速に実行できる割付パターンを予測し、予測した割付パターンが現行の割付パターンよりも高速にジョブを実行できる場合に、ジョブの実行を中断して、予測した割付パターンに基づいて各ノードにタスクを割り付けた後に、ジョブの実行を再開する。
【選択図】図2

Description

本発明は、並列処理装置、並列処理方法及び並列処理プログラムに関する。
複数のプロセッサや複数の情報処理装置等のノードを用いて、ジョブを分散して実行する並列処理装置が知られている。このような並列処理装置は、ジョブに含まれる処理要素であるタスクを複数のノードに割り付ける。そして、各ノードは、自身に割り付けられたタスクを他のノードと並列に実行する。
並列処理装置によるジョブの実行時間は、タスクの割り付け方によって変動する。これは、ノードによって性能が異なったり、ノード間の通信経路によってデータの転送時間が変動するからである。このようなことから、並列処理装置は、ジョブを効率良く実行できるようにタスクを割り付けることが求められる。
そこで、近年では、シミュレータなどを用いてジョブを実行することにより処理時間を予測する技術が知られている。かかる技術は、シミュレータによって、ジョブの実行時間が短くなると考えられるノードとタスクとの組合せのパターン(以下、「割付パターン」と言う)、及び、ノードにタスクを割り付けるスケジュールを予測する。そして、並列処理装置は、シミュレータによって予測された割付パターン及びスケジュールにしたがって、各ノードにタスクを割り付けてジョブを実行する。
特開平6−75786号公報 特開平5−73515号公報
しかしながら、上述した従来技術を用いると、シミュレータによって予測された割付パターンにしたがって、各ノードにタスクを割り付けることができない場合があった。具体的には、実際にジョブを実行する際に、シミュレータによって予測された割付パターンに含まれるノードが空いていないことがあった。かかる場合、従来の並列処理装置は、予測された割付パターンにしたがってタスクを割り付けることができなかった。このことは、効率良くジョブを実行できないため、ジョブの実行時間が長くなるという問題を招いていた。
開示の技術は、上記に鑑みてなされたものであって、ジョブを高速に実行することができる並列処理装置、並列処理方法及び並列処理プログラムを提供することを目的とする。
本願の開示する並列処理装置は、一つの態様において、複数の処理要素を含むジョブを複数のノードに実行させる並列処理装置であって、前記複数のノードによって前記ジョブが実行されている間に、前記複数のノードから処理要素実行時における性能に関する情報である性能情報を取得する取得部と、前記取得部によって取得された性能情報に基づいて、現行の各ノードと各処理要素との組合せのパターンである割付パターンよりも前記ジョブを高速に実行する割付パターンが存在する場合に、該割付パターンに基づいて各ノードに処理要素を割り付ける割付部とを備える。
本願の開示する並列処理装置の一つの態様によれば、ジョブを高速に実行することができるという効果を奏する。
図1は、典型的なシミュレーションプログラムにおける処理プロセスを示す図である。 図2は、実施例1に係る並列処理装置によるタスク割付処理を説明するための図である。 図3は、実施例1に係る並列処理装置の構成を示す図である。 図4は、図3に示したノードの通信経路の一例を示す図である。 図5は、図3に示したノードの構成を示す図である。 図6は、ジョブ実行開始時における割付パターンの一例を示す図である。 図7−1は、第二演算においてデータ転送が行われるノードの一例を示す図である。 図7−2は、第三演算においてデータ転送が行われるノードの一例を示す図である。 図7−3は、第五演算においてデータ転送が行われるノードの一例を示す図である。 図8−1は、第一演算及び第二演算を実行しているノードによって収集される性能情報の一例を示す図である。 図8−2は、第三演算を実行しているノードによって収集される性能情報の一例を示す図である。 図8−3は、第五演算を実行しているノードによって収集される性能情報の一例を示す図である。 図9は、性能予測部によって特定された割付パターンの一例を示す図である。 図10−1は、第二演算においてデータ転送が行われるノードの一例を示す図である。 図10−2は、第三演算においてデータ転送が行われるノードの一例を示す図である。 図10−3は、第五演算においてデータ転送が行われるノードの一例を示す図である。 図11−1は、第一演算及び第二演算の実行時間の予測例を示す図である。 図11−2は、第三演算の実行時間の予測例を示す図である。 図11−3は、第五演算の実行時間の予測例を示す図である。 図12は、実施例1に係る並列処理装置による処理手順を示すフローチャートである。 図13は、性能予測装置と接続される並列処理装置の構成を示す図である。 図14は、性能情報収集処理の開始終了タイミングが埋め込まれたジョブの一例を示す図である。 図15は、割付処理を複数回行う例を説明するための図である。 図16は、複数のジョブを実行する場合における割付処理の一例を示す図である。 図17は、並列処理プログラムを実行するコンピュータを示す図である。
以下に、本願の開示する並列処理装置、並列処理方法及び並列処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例により本願の開示する並列処理装置、並列処理方法及び並列処理プログラムが限定されるものではない。
[実施例1に係る並列処理装置によって実行されるジョブ]
実施例1に係る並列処理装置100は、多種多様なジョブを実行することができるが、特に、シミュレーション処理を行うジョブを実行する場合に有用である。そこで、実施例1では、並列処理装置100が、シミュレーション処理を行うジョブを実行する場合について説明する。まず、シミュレーション処理を行う典型的なジョブについて説明する。
シミュレーション処理が行われるジョブは、一般的に、所定のプログラミング言語で記述されたプログラムにより形成される。以下では、所定のプログラミング言語でシミュレーション処理が記述されたプログラムを「シミュレーションプログラム」と表記するものとする。
図1は、典型的なシミュレーションプログラムにおける処理プロセスを示す図である。図1に示すように、シミュレーションプログラムを並列処理装置100に実行させると、一般的には、並列処理装置100は、まず、初期値を設定する処理などの前処理を行う(ステップS1)。続いて、並列処理装置100は、初期値に基づいてシミュレーション処理を行う(ステップS2)。以下では、シミュレーションプログラムにおいて行われるシミュレーション処理を「核心処理」と表記するものとする。
続いて、並列処理装置100は、シミュレーションの結果が収束していない場合(ステップS3否定)、例えば、核心処理において用いられる各種設定値を修正する設定値修正処理を行う(ステップS4)。一方、並列処理装置100は、シミュレーションの結果が収束した場合(ステップS3肯定)、処理を終了する。
ここで、上述した処理について、シミュレーションプログラムの具体例を挙げて説明する。例えば、分子動力学計算に関するシミュレーションプログラムである場合、並列処理装置100は、核心処理において、各原子に働く力の計算や、運動方程式にしたがった原子及び分子の座標更新を行う。
また、例えば、量子論の計算に関するシミュレーションプログラムである場合、並列処理装置100は、前処理において、初期の電子状態(波動関数及び電荷密度)を設定する処理を行う。続いて、並列処理装置100は、核心処理において、かかる電子状態からポテンシャルを算出し、算出したポテンシャルを用いて電子状態の更新を行う。そして、並列処理装置100は、収束判定において、核心処理によって更新される前の電子状態と、更新後の電子状態との差異が所定の誤差の範囲に含まれるか否かを判定する。
このように、シミュレーションプログラムを実行すると、一般的に、シミュレーションの結果が収束するまで核心処理が繰り返し行われる。すなわち、シミュレーションプログラムにより形成されるジョブを実行する時間は、核心処理の実行時間に依存する。言い換えれば、核心処理の実行時間を予測することができれば、シミュレーションプログラムの実行時間を予測できると言える。
[実施例1に係る並列処理装置によるタスク割付処理]
次に、上述したようなシミュレーションプログラムにより形成されるジョブを実行する並列処理装置100によるタスク割付処理について説明する。実施例1に係る並列処理装置100は、処理郡であるジョブを実行する場合に、かかるジョブに含まれるタスクを、プロセッサや情報処理装置であるノードに割り付ける。そして、並列処理装置100は、ノードによってタスクが実行されている途中で、各ノードから、タスク実行時における性能に関する情報(以下、「性能情報」と言う)を取得する。続いて、並列処理装置100は、取得した性能情報に基づいて、割付パターンごとに、ジョブの実行時間を予測する。そして、並列処理装置100は、現行の割付パターンよりも高速にジョブを実行できる割付パターンが存在する場合に、予測した割付パターンに基づいて各ノードにタスクを割り付ける。
図2を用いて具体的に説明する。図2は、実施例1に係る並列処理装置100によるタスク割付処理を説明するための図である。図2の左側には、ジョブ実行時における処理の流れを示し、図2の右側には、タスク割付処理の流れを示す。
図2に示すように、並列処理装置100は、ジョブを実行すると、図1に示した処理と同様に、まず、前処理を行う(ステップS11)。なお、かかる前処理は、前処理に対応するタスクが割り付けられたノードによって行われる。
続いて、並列処理装置100は、核心処理を行う(ステップS12−1)。上述したように核心処理は何度も繰り返し行われるので、並列処理装置100は、核心処理を繰り返し行う(ステップS12−2)。なお、かかる核心処理は、核心処理に対応するタスクが割り付けられたノードによって行われる。
ここで、並列処理装置100は、ジョブが実行されてから所定の時間が経過した場合に、各ノードから性能情報を取得する。図2に示した例では、並列処理装置100は、核心処理が2回行われた後に(ステップS12−1及びS12−2)、性能情報を取得している(ステップS21)。なお、ここで言う「性能情報」とは、タスク実行時におけるノード間の通信量や、通信時間、ノードによって実行される演算の内容や、かかる演算にかかる時間などを示す。性能情報については後述する。
このとき、各ノードは、継続して核心処理を行う(ステップS12−3及びS12−4)。すなわち、並列処理装置100によって性能情報が取得された場合であっても、各ノードは自身に割り付けられたタスクを実行する。
続いて、並列処理装置100は、ステップS21において取得した性能情報に基づいて、割付パターンごとにジョブ時における性能を予測する(ステップS22)。具体的には、シナリオ作成装置100は、割付パターンごとにジョブの実行時間を予測する。そして、並列処理装置100は、現行の割付パターンよりも高速にジョブを実行する割付パターンが存在する場合に、ジョブの実行を中断する(ステップS23)。図2に示した例では、並列処理装置100は、ステップS12−4における核心処理を行った後に、ジョブの実行を中断する。
続いて、並列処理装置100は、予測した割付パターンに基づいて各ノードにタスクを割り付ける(ステップS24)。なお、ジョブが実行中である場合や、ジョブの実行が中断されている場合、かかるジョブを実行しているノードは、他のジョブに用いられて、実行中や中断中のジョブを実行できなくなることはない。すなわち、並列処理装置100は、ステップS22において予測した割付パターンに基づいて、確実に各ノードにタスクを割り付けることができる。
続いて、並列処理装置100は、ジョブの実行を再開する(ステップS25)。これにより、各ノードは、核心処理を再度行う(ステップS12−5)。そして、各ノードは、核心処理の結果が収束した場合に(ステップS12−n)、核心処理を終了し、後処理を行う(ステップS13)。
このように、実施例1に係る並列処理装置100は、ジョブの実行中に、各ノードから性能情報を取得し、取得した性能情報に基づいて、ジョブを高速に実行できる割付パターンを予測する。そして、並列処理装置100は、ジョブの実行を中断して、予測した割付パターンに基づいて各ノードにタスクを割り付けた後に、ジョブの実行を再開する。これにより、実施例1に係る並列処理装置100は、ジョブを高速に実行できる割付パターンに基づいて、確実に各ノードにタスクを割り付けることができるので、ジョブを高速に実行することができる。
特に、上記例のように、ジョブがシミュレーションプログラムである場合、並列処理装置100は、核心処理を数回だけ実行した時点で性能情報を取得すれば、ジョブの実行時間を高精度に予測することができる。これは、上述したように、シミュレーションプログラムは、核心処理を繰り返し行う場合が多いので、核心処理の実行時間を予測することができれば、シミュレーションプログラムの実行時間を予測することができるからである。すなわち、並列処理装置100は、核心処理の実行時間を高速化することができるので、ジョブ全体の実行時間を高速化することができる。
[実施例1に係る並列処理装置の構成]
次に、図3を用いて、実施例1に係る並列処理装置100の構成について説明する。図3は、実施例1に係る並列処理装置100の構成を示す図である。図3に示すように、並列処理装置100は、並列計算部110と、ジョブ制御部120と、性能予測部130とを有する。
並列計算部110は、タスクを実行する複数のノード111−1〜111−nを有する。ノード111−1〜111−nは、一又は複数のCPU(Central Processing Unit)を有し、自身に割り付けられたタスクを実行する。
また、ノード111−1〜111−nは、タスクを実行している場合に、性能情報を収集する。具体的には、ノード111−1〜111−nは、タスク実行時にデータを送受する相手先のノードの情報である通信パターンや、タスク実行時における通信量及び通信時間、タスク実行時における演算内容及び演算にかかる時間などを収集する。なお、ノード111−1〜111−nの構成については、図5を用いて後述する。
かかるノード111−1〜111−nは、相互に所定の通信経路によって接続される。図4に、図3に示したノード111−1〜111−nの通信経路の一例を示す。図4では、ノード111−1〜111−nのうち、ノード111−1〜111−8を例に挙げて説明する。図4に示すように、ノード111−1〜111−8は、距離の異なる通信経路によって接続される。ここで言う「距離」とは、ノード間に介在する通信機構の数を示す。
例えば、図4に示した例において、ノード111−1及びノード111−2は、距離が「1」である通信経路によって接続されている。同様に、ノード111−3及びノード111−4、ノード111−5及びノード111−6、ノード111−7及びノード111−8は、距離が「1」である通信経路によって接続されている。
また、図4に示した例において、例えば、ノード111−1及びノード111−3は、距離が「2」である通信経路によって接続されている。同様に、例えば、ノード111−2及びノード111−4や、ノード111−5及びノード111−7、ノード111−6及びノード111−8は、距離が「2」である通信経路によって接続されている。
また、図4に示した例において、ノード111−1及びノード111−5は、距離が「3」である通信経路によって接続されている。同様に、例えば、ノード111−2及びノード111−6や、ノード111−3及びノード111−7、ノード111−4及びノード111−8は、距離が「3」である通信経路によって接続されている。
実施例1において、「距離」の値が大きい通信経路で接続されているノード間ほど、通信時間が長くなるものとする。例えば、図4に示した例において、距離が「2」である通信経路によって接続されているノード111−1及び111−3間の通信は、距離が「1」である通信経路によって接続されているノード111−1及びノード111−2間の通信よりも時間がかかる。なお、図4では、ノード111−1〜111−8の接続関係の例を示したが、ノード111−9〜111−nも、距離の異なる通信経路によって接続される。
図3の説明に戻って、ジョブ制御部120は、ジョブの実行を制御する。具体的には、ジョブ制御部120は、ジョブを実行開始する場合に、かかるジョブを実行するノードを確保したり、確保したノードに対して、タスクの実行を中断させたり、タスクの実行を再開させたりする。
また、実施例1におけるジョブ制御部120は、性能情報取得部121と、タスク割付部122とを有する。性能情報取得部121は、タスクが割り付けられた複数のノードによってジョブが実行されてから所定の時間が経過した場合に、かかる複数のノードから、タスク実行時における性能情報を取得する。具体的には、性能情報取得部121は、各ノードによって収集された通信パターンや、通信時間、演算内容、演算時間などを、各ノードから取得する。そして、性能情報取得部121は、取得した性能情報と現行の割付パターンとを性能予測部130へ送信する。
なお、ジョブがシミュレーションプログラムである場合、性能情報取得部121は、核心処理が所定の回数実行された場合に、各ノードから性能情報を取得してもよい。例えば、性能情報取得部121は、図2に示した例のように、核心処理が2回実行された後に、各ノードから性能情報を取得してもよい。
タスク割付部122は、後述する性能予測部130によって、現行の割付パターンよりも高速にジョブを実行する割付パターンが予測された場合に、予測された割付パターンに基づいて各ノードにタスクを割り付ける。
以下に、ジョブ制御部120による処理について、処理の順に具体的に説明する。まず、ジョブ制御部120は、ジョブを実行するノードを確保する。例えば、ジョブ制御部120は、ノード111−1〜111−nのうち、ノード111−1〜111−8を確保する。
続いて、ジョブ制御部120のタスク割付部122は、確保した各ノードに対して、ジョブに含まれるタスクを割り付ける。このとき、タスク割付部122は、例えば、事前にシミュレーションした結果に基づいてタスクをノードに割り付けてもよいし、ランダムにタスクをノードに割り付けてもよい。
続いて、ジョブ制御部120は、タスクを割り付けた各ノードに対して、タスクを実行するように指示する。これにより、各ノードは、自身に割り付けられたタスクを実行するとともに、性能情報を収集する。
そして、ジョブ制御部120の性能情報取得部121は、各ノードによってタスクが実行されてから所定の時間が経過した場合に、各ノードから性能情報を取得する。続いて、性能情報取得部121は、取得した性能情報と現行の割付パターンとを性能予測部130へ送信する。これにより、性能予測部130によって割付パターンごとにジョブの実行時間が予測される。
続いて、ジョブ制御部120は、性能予測部130によって、現行の割付パターンよりも高速にジョブを実行する割付パターンが予測された場合に、各ノードに対してタスクの実行を中断させる。かかる指示を受け付けた各ノードは、計算の一単位が終了した後にタスクの実行を中断する。例えば、各ノードは、核心処理を実行中である場合、かかる核心処理が終了した後にタスクの実行を中断する。
続いて、ジョブ制御部120のタスク割付部122は、性能予測部130によって予測された割付パターンに基づいて各ノードにタスクを割り付ける。すなわち、タスク割付部122は、現行の割付パターンを、現行よりもジョブを高速に実行できる割付パターンに変更する。
続いて、ジョブ制御部120は、各ノードに対して、タスクの実行に用いられる各種データを相互に転送するように指示する。かかる指示を受け付けた各ノードは、タスクの実行に用いる各種データを相互に転送する。例えば、タスク割付部122が、ノード111−1に割り付けられていたタスクT11をノード111−2に割り付け、ノード111−2に割り付けられていたタスクT12をノード111−1に割り付けたものとする。かかる場合、ノード111−1は、タスクT11の実行に用いる各種データを、ノード111−2へ転送する。また、ノード111−2は、タスクT12の実行に用いる各種データを、ノード111−1へ転送する。
そして、ジョブ制御部120は、各ノードによる転送処理が終了した場合に、各ノードに対して、ジョブの実行を再開するように指示する。かかる指示を受け付けた各ノードは、新たに割り付けられたタスクを実行する。
性能予測部130は、性能情報取得部121によって取得された性能情報に基づいて、割付パターンごとにジョブを実行する時間を予測する。具体的には、性能予測部130は、割付パターンを変動させてジョブを実行する時間をシミュレーションする。このとき、性能予測部130は、例えば、遺伝的アルゴリズム等を用いてシミュレーションを行う。そして、性能予測部130は、シミュレーションした実行時間と割付パターンの組合せの中から、最も実行時間が短くなる割付パターンを特定する。続いて、性能予測部130は、特定した割付パターンの方が、現行の割付パターンよりも高速にジョブを実行できる場合に、特定した割付パターンをタスク割付部122へ送信する。
[実施例1におけるノードの構成]
次に、図5を用いて、図3に示したノード111−1〜111−nの構成について説明する。図5は、図3に示したノード111−1〜111−nの構成を示す図である。なお、図5に示したノード111は、図3に示したノード111−1〜111−nに対応する。
図5に示すように、ノード111は、外部記憶装置112と、主記憶装置113と、退避用記憶装置114と、CPU115a〜115dとを有する。かかる外部記憶装置112、主記憶装置113、退避用記憶装置114、CPU115a〜115dとは、バス116によって接続される。
外部記憶装置112は、ハードディスク等の記憶デバイスであり、タスクを実行する際に用いられる各種データを記憶する。主記憶装置113は、メモリ等の記憶デバイスであり、タスクを実行する際に用いられる各種データを記憶する。
退避用記憶装置114は、タスクの実行に用いられる各種データを他のノード111と相互に転送する場合に、外部記憶装置112や主記憶装置113に記憶されている各種データを記憶する。
CPU115a〜115dは、ノード111に割り付けられたタスクを実行する。具体的には、CPU115a〜115dは、外部記憶装置112や主記憶装置113に記憶されている各種データを用いて、タスクを実行する。
また、CPU115a〜115dは、ジョブ制御部120から、タスクの実行に用いられる各種データを他のノード111へ転送する旨の指示を受け付けた場合に、各データの転送処理を行う。具体的には、CPU115a〜115dは、外部記憶装置112や主記憶装置113に記憶されている各種データを退避用記憶装置114に退避する。続いて、CPU115a〜115dは、退避用記憶装置114に退避した各種データを、かかる各種データを処理する他のノード111へ転送する。また、CPU115a〜115dは、他のノード111から、自身に新たに割り付けられたタスクを実行する際に用いる各種データが転送された場合に、かかる各種データを外部記憶装置112や主記憶装置113に記憶させる。
なお、図5に示した例では、ノード111が4個のCPU115a〜115dを有する例を示したが、ノード111は、1〜3個のCPUを有してもよいし、5個以上のCPUを有してもよい。
[実施例1に係る並列処理装置の適用例]
次に、上述した並列処理装置100による処理について、ジョブの具体例を用いて詳細に説明する。以下では、まず、並列処理装置100によって実行されるジョブの具体例について説明し、次に、ジョブ実行開始時における割付パターンについて説明し、次に、各ノードによるタスクの実行処理について説明する。そして、タスク実行時における性能情報について説明し、最後に、性能情報に基づいて最適な割付パターンを予測する処理について説明する。
まず、並列処理装置100によって実行されるジョブの具体例について説明する。ここでは、並列処理装置100によって実行されるジョブの核心処理は、以下に示す演算を行うことにより算出されるhを求める処理であるものとする。
Figure 2010257056
Figure 2010257056
Figure 2010257056
上記式(1)〜(3)について具体的に説明すると、まず、上記式(1)に示すように、所定の範囲の変数iについてw(i、j)の和v(j)を算出する。続いて、算出したv(j)の二乗であるz(j)を算出する。そして、最後に、所定の範囲の変数jについてz(j)の和を算出することによりhを求める。なお、ここでは、「i=1〜80」であり、「j=1〜40」であるものとする。
次に、ジョブ実行開始時における割付パターンについて説明する。ここでは、8個のノード111−1〜111−8によって、上記のジョブを実行するものとする。また、ここでは、説明を簡単にするために、ノード111−1〜111−8による処理性能は全て同一であるものとする。なお、ノード111−1〜111−8は、上記式(1)〜(3)の順に演算を行わずに、他の演算を行うことにより、上記式(1)〜(3)により算出されるhと等しい値を求める。
図6に、ジョブ実行開始時における割付パターンの一例を示す。図6において、タスク番号は、タスクを識別するための番号を示す。また、タスクは、ノードに割り付けられたタスクを示す。また、ノード識別子は、ノードを識別するための識別子を示す。なお、本明細書において、ノード識別子は、各ノードに付与した符号「111−n」に該当するものとする。
すなわち、図6に示すように、ノード111−1は、ジョブ実行開始時において、タスク「w(1:20、1:20)」が割り付けられている。w(1:20、1:20)は、上記式(1)を条件「i=1〜20」で算出し、算出した値に「j=1〜20」を代入することを示す。すなわち、w(1:20、1:20)を演算すると、20個の値が求められる。
また、図6に示すように、ノード111−6は、タスクw「(21:40、1:20)」が割り付けられている。w(21:40、1:20)は、上記式(1)を条件「i=21〜40」で算出し、算出した値に「j=1〜20」を代入することを示す。すなわち、w(21:40、1:20)を演算すると、w(1:20、1:20)と同様に20個の値が求められる。
同様に、ノード111−2は、タスクw「(41:60、1:20)」が割り付けられ、ノード111−3は、タスクw「(61:80、1:20)」が割り付けられている。
また、図6に示すように、ノード111−5は、タスクw「(1:20、21:40)」が割り付けられている。w(1:20、21:40)は、上記式(1)を条件「i=1〜20」で算出し、算出した値に「j=21〜40」を代入することを示す。すなわち、w(1:20、21:40)を演算すると、w(1:20、1:20)と同様に20個の値が求められる。
同様に、ノード111−4は、タスクw「(21:40、21:40)」が割り付けられ、ノード111−7は、タスクw「(41:60、21:40)」が割り付けられ、ノード111−8は、タスクw「(61:80、21:40)」が割り付けられている。
次に、ノード111−1〜111−8によるタスクの実行処理について説明する。ここでは、ノード111−1〜111−8は、図6に示したようにタスクが割り付けられたものとする。ノード111−1〜111−8は、以下に示す(第一演算)〜(第五演算)を行うことにより、上記式(3)に示したhを算出する。以下に、(第一演算)〜(第五演算)に分けて、各演算について説明する。
(第一演算)
まず、ノード111−1〜111−8は、自身に割り付けられたタスクを実行する。具体的には、ノード111−1は、タスク「w(1:20、1:20)」を実行する。具体的には、ノード111−1は、上記式(1)を条件「i=1〜20」で算出し、算出した値に「j=1〜20」を代入して、20個の値を算出する。
また、ノード111−6は、タスク「w(21:40、1:20)」を実行する。具体的には、ノード111−6は、上記式(1)を条件「i=21〜40」で算出し、算出した値に「j=1〜20」を代入して、20個の値を求める。
また、ノード111−4は、タスク「w(21:40、21:40)」を実行する。具体的には、ノード111−4は、上記式(1)を条件「i=21〜40」で算出し、算出した値に「j=21〜40」を代入して、20個の値を求める。同様に、ノード111−2、111−3、111−5、111−7及び111−8は、それぞれ自身に割り付けられたタスクを実行し、20個の値を算出する。
なお、以下では、(第一演算)により算出された値をvn(j)と表記するものとする。なお、vn(j)に付した「n」は、ノード識別子の末尾に付した数字を示す。例えば、ノード111−1によって算出された値は、v1(j)であり、ノード111−2によって算出された値は、v2(j)である。すなわち、例えば、ノード111−1は、(第一演算)により、20個のv1(1)〜v1(20)を算出する。また、例えば、ノード111−4は、(第一演算)により、20個のv4(21)〜v4(40)を算出する。
(第二演算)
続いて、ノード111−1〜111−8は、(第一演算)において算出した20個のvn(j)を、所定のノード間で転送し、自身が算出したvn(j)と、他のノードから転送されたvn(j)とを加算する。ここでは、以下の(A)〜(D)に示すタスク番号が割り付けられたノード間でデータ転送を行うものとする。
(A)タスク番号「T1」及びタスク番号「T2」
(B)タスク番号「T3」及びタスク番号「T4」
(C)タスク番号「T5」及びタスク番号「T6」
(D)タスク番号「T7」及びタスク番号「T8」
図7−1に、(第二演算)においてデータ転送が行われるノードの一例を示す。図7−1に示すように、(第二演算)において、タスク番号「T1」が示すタスクを割り付けられたノード111−1と、タスク番号「T2」が示すタスクを割り付けられたノード111−6との間で、vn(j)が転送される。すなわち、ノード111−1とノード111−6との間では、距離「3」の通信経路を介して20個のvn(j)が転送される。
また、ノード111−2とノード111−3との間では、距離「2」の通信経路を介して20個のvn(j)が転送される。また、ノード111−4とノード111−5との間では、距離「3」の通信経路を介して20個のvn(j)が転送される。また、ノード111−7とノード111−8との間では、距離「1」の通信経路を介して20個のvn(j)が転送される。
そして、ノード111−1は、自身が算出したv1(1)〜v1(20)と、ノード111−6から転送されたv6(1)〜v6(20)とを加算する。このとき、ノード111−1は、jの値が一致するvn(j)同士を加算する。具体的には、ノード111−1は、v1(1)とv6(1)とを加算し、v1(2)とv6(2)とを加算し、・・・、v1(20)とv6(20)とを加算する。
同様にして、ノード111−2〜111−8は、自身が算出したvn(j)と、他のノードから転送されたvn(j)とを加算する。
すなわち、ノード111−1及び111−6は、(第二演算)により、上記式(1)を条件「i=1〜40」で算出し、算出した値に「j=1〜20」を代入した20個の値を算出したことになる。また、ノード111−2及び111−3は、(第二演算)により、上記式(1)を条件「i=41〜80」で算出し、算出した値に「j=1〜20」を代入した20個の値を算出したことになる。
また、ノード111−4及び111−5は、(第二演算)により、上記式(1)を条件「i=1〜40」で算出し、算出した値に「j=21〜40」を代入した20個の値を算出したことになる。ノード111−7及び111−8は、(第二演算)により、上記式(1)を条件「i=41〜80」で算出し、算出した値に「j=21〜40」を代入した20個の値を算出したことになる。
なお、以下では、(第二演算)により算出された値をvn(j)と表記するものとする。例えば、ノード111−1は、(第二演算)により、20個のv1(1)〜v1(20)を算出する。また、例えば、ノード111−4は、(第二演算)により、20個のv4(21)〜v4(40)を算出する。
(第三演算)
続いて、ノード111−1〜111−8は、(第二演算)において算出した20個のvn(j)を、所定のノード間で転送し、自身が算出したvn(j)と、他のノードから転送されたvn(j)とを加算する。ここでは、以下の(E)〜(H)に示すタスク番号が割り付けられたノード間でデータ転送を行うものとする。
(E)タスク番号「T1」及びタスク番号「T3」
(F)タスク番号「T2」及びタスク番号「T4」
(G)タスク番号「T5」及びタスク番号「T7」
(H)タスク番号「T6」及びタスク番号「T8」
図7−2に、(第三演算)においてデータ転送が行われるノードの一例を示す。図7−2に示すように、(第三演算)において、タスク番号「T1」が示すタスクを割り付けられたノード111−1と、タスク番号「T3」が示すタスクを割り付けられたノード111−2との間で、vn(j)が転送される。すなわち、(第三演算)において、ノード111−1とノード111−2との間では、距離「1」の通信経路を介して20個のvn(j)が転送される。
また、ノード111−3とノード111−6との間では、距離「3」の通信経路を介して20個のvn(j)が転送される。また、ノード111−4とノード111−8との間では、距離「3」の通信経路を介して20個のvn(j)が転送される。また、ノード111−5とノード111−7との間では、距離「2」の通信経路を介して20個のvn(j)が転送される。
そして、ノード111−1は、自身が算出したv1(1)〜v1(20)と、ノード111−2から転送されたv2(1)〜v2(20)とを加算する。このとき、ノード111−1は、jの値が一致するvn(j)同士を加算する。具体的には、ノード111−1は、v1(1)とv2(1)とを加算し、v2(2)とv2(2)とを加算し、・・・、v2(20)とv2(20)とを加算する。
同様にして、ノード111−2〜111−8は、自身が算出したv(j)と、他のノードから転送されたv(j)とを加算する。
すなわち、ノード111−1、111−2、111−3及び111−6は、(第三演算)により、上記式(1)を条件「i=1〜80」で算出し、算出した値に「j=1〜20」を代入した20個の値を算出したことになる。また、ノード111−4、111−5、111−7及び111−8は、(第三演算)により、上記式(1)を条件「i=1〜80」で算出し、算出した値に「j=21〜40」を代入した20個の値を算出したことになる。
なお、以下では、(第三演算)により算出された値をvn(j)と表記するものとする。すなわち、ノード111−1、111−2、111−3及び111−6は、(第三演算)により、それぞれ20個のv1(1)〜v1(20)、v2(1)〜v2(20)、v3(1)〜v3(20)、v6(1)〜v6(20)を算出する。また、ノード111−4、111−5、111−7及び111−8は、(第三演算)により、それぞれ20個のv4(21)〜v4(40)、v5(21)〜v5(40)、v7(21)〜v7(40)、v8(21)〜v8(40)を算出する。
(第四演算)
続いて、ノード111−1〜111−8は、(第三演算)において算出した20個のvn(j)について、上記式(2)に示した演算を行い、演算結果の総和を算出する。具体的には、ノード111−1は、「v1(1)・v1(1)」、「v1(2)・v1(2)」、・・・、「v1(20)・v1(20)」を算出し、算出した20個の値の総和を算出する。また、ノード111−2は、「v2(1)・v2(1)」、「v2(2)・v2(2)」、・・・、「v2(20)・v2(20)」を算出し、算出された20個の値の総和を算出する。
同様にして、ノード111−3〜111−8は、(第三演算)において算出した20個のvn(j)について、上記式(2)に示した演算を行い、演算結果の総和を算出する。
なお、以下では、(第四演算)により算出された値をvnと表記するものとする。すなわち、ノード111−1、111−2、111−3及び111−6は、(第四演算)により、それぞれv1、v2、v3、v6を算出する。また、ノード111−4、111−5、111−7及び111−8は、(第四演算)により、それぞれv4、v5、v7、v8を算出する。
(第五演算)
続いて、ノード111−1〜111−8は、(第四演算)において算出したvnを、所定のノード間で転送し、自身が算出したvnと、他のノードから転送されたvnとを加算する。ここでは、以下の(I)〜(L)に示すタスク番号が割り付けられたノード間でデータ転送を行うものとする。
(I)タスク番号「T1」及びタスク番号「T5」
(J)タスク番号「T2」及びタスク番号「T6」
(K)タスク番号「T3」及びタスク番号「T7」
(L)タスク番号「T4」及びタスク番号「T8」
図7−3に、(第五演算)においてデータ転送が行われるノードの一例を示す。図7−3に示すように、(第五演算)において、タスク番号「T1」が示すタスクを割り付けられたノード111−1と、タスク番号「T5」が示すタスクを割り付けられたノード111−5との間で、距離「3」の通信経路を介してvnが転送される。
また、ノード111−2とノード111−7との間では、距離「3」の通信経路を介してvnが転送される。また、ノード111−3とノード111−8との間では、距離「3」の通信経路を介してvnが転送される。また、ノード111−4とノード111−6との間では、距離「3」の通信経路を介してvnが転送される。
そして、ノード111−1は、自身が算出したv1と、ノード111−5から転送されたv5とを加算する。これにより、ノード111−1は、上記式(3)に示したhを算出する。同様にして、ノード111−2〜111−8は、自身が算出したvと、他のノードから転送されたvとを加算することにより、hを算出する。
このようにして、ノード111−1〜111−8は、自身に割り付けられたタスクを実行することにより、上記式(3)に示したhを算出する。hを算出する処理は、1個の核心処理であるので、ノード111−1〜111−8は、上述したhを算出する処理を、例えば、「i」や「j」の条件を変えながら繰り返し行うことになる。
次に、上述したタスクを実行しているノード111−1〜111−8によって収集される性能情報について説明する。まず、図8−1を用いて、上述した(第一演算)及び(第二演算)を実行しているノード111−1〜111−8によって収集される性能情報について説明する。図8−1は、第一演算及び第二演算を実行しているノード111−1〜111−8によって収集される性能情報の一例を示す図である。
図8−1に示した例では、ノード111−1〜111−8は、性能情報として、通信パターンや、通信量、通信時間、演算内容、演算時間を収集する。図7−1を用いて説明したように、(第二演算)において、ノード111−1とノード111−6とは、相互にデータの送受を行う。同様に、ノード111−2とノード111−3とはデータの送受を行い、ノード111−4とノード111−5とはデータの送受を行い、ノード111−7とノード111−8とはデータの送受を行う。
したがって、ノード111−1〜111−8は、図8−1に示すように、「通信パターン」として、例えば、「111−1⇔111−6」、「111−2⇔111−3」、「111−4⇔111−5」、「111−7⇔111−8」といった情報を収集する。なお、図8−1に示した例において、通信パターンが「X⇔Y」である場合、ノードXとノードYとが通信を行うことを示す。
また、上述したように、(第二演算)では、20個のvn(j)がノード間で転送される。したがって、ノード111−1〜111−8は、図8−1に示すように、「通信量」として、例えば、「20個の値」といった情報を収集する。
ここで、(第二演算)において行われる転送処理にかかる時間を「ts1(N)」、「ts2(N)」、「ts3(N)」のいずれかにより示すものとする。なお、ts1(N)〜ts3(N)のうち、「ts」の後に付した数値「1」〜「3」は、通信経路の距離を示し、「N」は、転送された値の数を示す。すなわち、ts1(20)は、距離が「1」である通信経路を介して、20個の値が転送されたことを示す。また、ts2(20)は、距離が「2」である通信経路を介して、20個の値が転送されたことを示す。
したがって、ノード111−1〜111−8は、図8−1に示すように、通信パターン「111−1⇔111−6」に対応する「通信時間」として、「ts3(20)」といった情報を収集する。これは、ノード111−1とノード111−6との間は、距離が「3」である通信経路によって接続されているからである。
同様に、ノード111−1〜111−8は、通信パターン「111−2⇔111−3」に対応する「通信時間」として、「ts2(20)」といった情報を収集する。また、ノード111−1〜111−8は、通信パターン「111−4⇔111−5」に対応する「通信時間」として、「ts3(20)」といった情報を収集する。また、ノード111−1〜111−8は、通信パターン「111−7⇔111−8」に対応する「通信時間」として、「ts1(20)」といった情報を収集する。
また、上述したように、(第一演算)及び(第二演算)では、加算処理が行われるので、ノード111−1〜111−8は、図8−1に示すように、「演算内容」として、例えば、「加算」といった情報を収集する。
ここで、(第一演算)にかかる演算時間を「ta(N)」により示し、(第二演算)にかかる演算時間を「tb(N)」により示すものとする。なお、Nは、演算処理が行われた値の数を示す。したがって、ノード111−1〜111−8は、図8−1に示すように、「演算時間」として、「ta(20)+tb(20)」といった情報を収集する。
このようにして、ノード111−1〜111−8は、(第一演算)及び(第二演算)を実行している場合に、図8−1に示したような性能情報を収集する。ここで、(第一演算)及び(第二演算)にかかる実行時間について検討する。ノード111−1〜111−8は、互いに並列処理を行うので、(第一演算)及び(第二演算)にかかる実行時間は、各ノード間で行われる転送処理にかかる通信時間の最大値と、各ノードにより行われる演算にかかる演算時間の最大値との総和になる。
(第一演算)及び(第二演算)における通信時間は、図8−1に示すように、「ts1(20)」、「ts2(20)」、「ts3(20)」の3種類が存在する。上述したように、「距離」の値が大きい通信経路を介して通信を行うほど通信時間がかかるので、上記の通信時間の間には「ts1(20) < ts2(20) < ts3(20)」の関係が成り立つ。すなわち、(第一演算)及び(第二演算)における通信時間の最大値は、「ts3(20)」である。
また、(第一演算)及び(第二演算)における演算時間は、図8−1に示すように、全て「ta(20)+tb(20)」である。すなわち、(第一演算)及び(第二演算)における演算時間の最大値は、「ta(20)+tb(20)」である。
以上のことから、(第一演算)及び(第二演算)にかかる実行時間は、「ts3(20)+ta(20)+tb(20)」である。
なお、図8−1に示した各性能情報は、「通信パターン」に示したノードによって収集される。具体的には、1行目に示した性能情報は、ノード111−1及び111−6によって収集される。また、2行目に示した性能情報は、ノード111−2及び111−3によって収集され、3行目に示した性能情報は、ノード111−4及び111−5によって収集され、4行目に示した性能情報は、ノード111−7及び111−8によって収集される。
続いて、図8−2を用いて、(第三演算)を実行しているノード111−1〜111−8によって収集される性能情報について説明する。図8−2は、第三演算を実行しているノード111−1〜111−8によって収集される性能情報の一例を示す図である。
図7−2を用いて説明したように、(第三演算)において、ノード111−1とノード111−2とは、相互にデータの送受を行う。また、ノード111−3とノード111−6とはデータの送受を行い、ノード111−4とノード111−8とはデータの送受を行い、ノード111−5とノード111−7とはデータの送受を行う。
したがって、ノード111−1〜111−8は、図8−2に示すように、「通信パターン」として、「111−1⇔111−2」、「111−3⇔111−6」、「111−4⇔111−8」、「111−5⇔111−7」といった情報を収集する。
また、上述したように、(第三演算)では、20個のvn(j)がノード間で転送される。したがって、ノード111−1〜111−8は、図8−2に示すように、「通信量」として、例えば、「20個の値」といった情報を収集する。
また、ノード111−1〜111−8は、図8−2に示すように、通信パターン「111−1⇔111−2」に対応する「通信時間」として、「ts1(20)」といった情報を収集する。これは、ノード111−1とノード111−2との間は、距離が「1」である通信経路によって接続されているからである。
同様に、ノード111−1〜111−8は、通信パターン「111−3⇔111−6」に対応する「通信時間」として、「ts3(20)」といった情報を収集する。また、ノード111−1〜111−8は、通信パターン「111−4⇔111−8」に対応する「通信時間」として、「ts3(20)」といった情報を収集する。また、ノード111−1〜111−8は、通信パターン「111−5⇔111−7」に対応する「通信時間」として、「ts2(20)」といった情報を収集する。
ここで、(第三演算)にかかる演算時間を「tc(N)」により示すものとする。したがって、ノード111−1〜111−8は、図8−2に示すように、「演算時間」として、「tc(20)」といった情報を収集する。
このようにして、ノード111−1〜111−8は、(第三演算)を実行している場合に、図8−2に示したような性能情報を収集する。ここで、(第三演算)にかかる実行時間について検討する。上述したように、「ts1(20)<ts2(20)<ts3(20)」の関係が成り立つので、(第三演算)にかかる実行時間は、「ts3(20)+tc(20)」である。
続いて、(第四演算)を実行しているノード111−1〜111−8によって収集される性能情報について説明する。(第四演算)では、ノード間でデータの送受は行われず、各ノードによって乗算及び加算処理が行われる。ここでは、(第四演算)にかかる演算時間を「td(N)」により示すものとする。したがって、ノード111−1〜111−8は、「演算時間」として、「td(20)」といった情報を収集する。
続いて、図8−3を用いて、(第五演算)を実行しているノード111−1〜111−8によって収集される性能情報について説明する。図8−3は、第五演算を実行しているノード111−1〜111−8によって収集される性能情報の一例を示す図である。
図7−3を用いて説明したように、(第五演算)において、ノード111−1とノード111−5とは、相互にデータの送受を行う。また、ノード111−2とノード111−7とはデータの送受を行い、ノード111−3とノード111−8とはデータの送受を行い、ノード111−4とノード111−6とはデータの送受を行う。
したがって、ノード111−1〜111−8は、図8−3に示すように、「通信パターン」として、「111−1⇔111−5」、「111−2⇔111−7」、「111−3⇔111−8」、「111−4⇔111−6」といった情報を収集する。
また、上述したように、(第五演算)では、1個のvnがノード間で転送される。したがって、ノード111−1〜111−8は、図8−3に示すように、「通信量」として、例えば、「1個の値」といった情報を収集する。
また、ノード111−1〜111−8は、図8−3に示すように、通信パターン「111−1⇔111−5」に対応する「通信時間」として、「ts3(1)」といった情報を収集する。同様に、ノード111−1〜111−8は、通信パターン「111−2⇔111−7」に対応する「通信時間」として、「ts3(1)」といった情報を収集する。また、ノード111−1〜111−8は、通信パターン「111−3⇔111−8」に対応する「通信時間」として、「ts3(1)」といった情報を収集する。また、ノード111−1〜111−8は、通信パターン「111−4⇔111−6」に対応する「通信時間」として、「ts3(1)」といった情報を収集する。
ここで、(第五演算)にかかる演算時間を「te(N)」により示すものとする。したがって、ノード111−1〜111−8は、図8−3に示すように、「演算時間」として、「te(1)」といった情報を収集する。
このようにして、ノード111−1〜111−8は、(第五演算)を実行している場合に、図8−3に示したような性能情報を収集する。すなわち、(第五演算)にかかる実行時間は、「ts3(1)+te(1)」である。
以上のように、図6に示した例のように、ノード111−1〜111−8にタスクが割り付けられた場合、ジョブにおける1個の核心処理を実行する時間は、上述した(第一演算)〜(第五演算)にかかる実行時間の総和になる。具体的には、(第一演算)〜(第五演算)にかかる実行時間の総和は、以下に示す値になる。
Figure 2010257056
次に、性能予測部130による割付パターン予測処理について説明する。性能予測部130は、図8−1〜図8−3に示した性能情報に基づいて、最適な割付パターンを予測する。ここで言う「最適な割付パターン」とは、ジョブの実行を最も高速に実行できる割付パターンを示す。
性能予測部130は、ノード111−1〜111−8に割り付けるタスクを変動させながら、図8−1〜図8−3に示した性能情報を用いて、1個の核心処理の実行時間を予測する。例えば、性能予測部130は、ノード111−1〜111−8に、それぞれタスク番号T1、T3、T5、T7、T2、T4、T6、T8を割り付けたり、タスク番号T1、T4、T7、T2、T5、T8、T3、T6を割り付けたりして、核心処理の実行時間を予測する。
このとき、性能予測部130は、図8−1〜図8−3に示した通信時間や、演算時間を用いて、1個の核心処理の実行時間を予測する。そして、性能予測部130は、予測した実行時間と割付パターンの組合せの中から、核心処理を最も高速に実行できる割付パターンを特定する。続いて、性能予測部130は、特定した割付パターンが現行の割付パターンよりも高速に核心処理を実行できる場合に、特定した割付パターンをタスク割付部122へ送信する。
ここで、図9に、性能予測部130によって特定された割付パターンの一例を示す。図9に示すように、ノード111−1〜111−8は、それぞれ、タスク番号T1〜T8が示すタスクが割り付けられる。性能予測部130は、図9に示すようにタスクが割り付けられた場合に、核心処理を最も高速に実行できると予測したことになる。
以下に、図9に示した例のようにタスクが割り付けられたノード111−1〜111−8によって行われる処理を、(第一演算)〜(第五演算)に分けて説明する。
(第一演算)
図9に示した例のようにタスクが割り付けられた場合、ノード111−1は、タスク「w(1:20、1:20)」を実行する。同様に、ノード111−2〜111−8は、それぞれ図9に示したタスクを実行する。
(第二演算)
続いて、ノード111−1〜111−8は、(第一演算)において算出した20個のvn(j)を、所定のノード間で転送し、自身が算出したvn(j)と、他のノードから転送されたvn(j)とを加算する。ここでは、上記例と同様に、上述した(A)〜(D)に示したノード間でデータ転送を行うものとする。
図10−1に、(第二演算)においてデータ転送が行われるノードの一例を示す。図10−1に示すように、タスク番号「T1」が示すタスクを割り付けられたノード111−1と、タスク番号「T2」が示すタスクを割り付けられたノード111−2との間で、vn(j)が転送される。すなわち、ノード111−1とノード111−2との間では、距離「1」の通信経路を介して20個のvn(j)が転送される。
同様に、ノード111−3とノード111−4との間では、距離「1」の通信経路を介して20個のvn(j)が転送される。また、ノード111−5とノード111−6との間では、距離「1」の通信経路を介して20個のvn(j)が転送される。また、ノード111−7とノード111−8との間では、距離「1」の通信経路を介して20個のvn(j)が転送される。
(第三演算)
続いて、ノード111−1〜111−8は、(第二演算)において算出した20個のvn(j)を、所定のノード間で転送し、自身が算出したvn(j)と、他のノードから転送されたvn(j)とを加算する。ここでは、上記例と同様に、上述した(E)〜(H)に示したノード間でデータ転送を行うものとする。
図10−2に、(第三演算)においてデータ転送が行われるノードの一例を示す。図10−2に示すように、タスク番号「T1」が示すタスクを割り付けられたノード111−1と、タスク番号「T3」が示すタスクを割り付けられたノード111−3との間で、距離「2」の通信経路を介して20個のvn(j)が転送される。
同様に、ノード111−2とノード111−4との間では、距離「2」の通信経路を介して20個のvn(j)が転送される。また、ノード111−5とノード111−7との間では、距離「2」の通信経路を介して20個のvn(j)が転送される。また、ノード111−6とノード111−8との間では、距離「2」の通信経路を介して20個のvn(j)が転送される。
(第四演算)
続いて、ノード111−1〜111−8は、(第三演算)において算出した20個のvn(j)について、上記式(2)に示した演算を行い、演算結果の総和を算出する。
(第五演算)
続いて、ノード111−1〜111−8は、(第四演算)において算出したvnを、所定のノード間で転送し、自身が算出したvnと、他のノードから転送されたvnとを加算する。ここでは、上記例と同様に、上述した(I)〜(L)に示したノード間でデータ転送を行うものとする。
図10−3に、(第五演算)においてデータ転送が行われるノードの一例を示す。図10−3に示すように、タスク番号「T1」が示すタスクを割り付けられたノード111−1と、タスク番号「T5」が示すタスクを割り付けられたノード111−5との間で、距離「3」の通信経路を介してvnが転送される。
同様に、ノード111−2とノード111−6との間では、距離「3」の通信経路を介してvnが転送される。また、ノード111−3とノード111−7との間では、距離「3」の通信経路を介してvnが転送される。また、ノード111−4とノード111−8との間では、距離「3」の通信経路を介してvnが転送される。
性能予測部130は、ノード111−1〜111−8によって上述した(第一演算)〜(第五演算)が行われることにより、上記式(3)に示したhが算出されると予測する。そして、性能予測部130は、ノード111−1〜111−8によって上述した(第一演算)〜(第五演算)が行われる実行時間を予測する。図11−1〜図11−3を用いて、性能予測部130によって予測される実行時間について説明する。
まず、図11−1を用いて、性能予測部130によって予測される(第一演算)及び(第二演算)の実行時間について説明する。図11−1は、第一演算及び第二演算の実行時間の予測例を示す図である。図10−1を用いて説明したように、(第二演算)では、ノード111−1〜111−8との間で、距離が「1」である通信経路を介して通信が行われる。したがって、性能予測部130は、図11−1に示すように、ノード間の通信時間が全て「ts1(20)」であると予測する。
また、性能予測部130は、(第一演算)及び(第二演算)にかかる演算時間が、図8−1に示した例と同様に「ta(20)+tb(20)」であると予測する。
続いて、図11−2を用いて、性能予測部130によって予測される(第三演算)の実行時間について説明する。図11−2は、第三演算の実行時間の予測例を示す図である。図10−2を用いて説明したように、(第三演算)では、ノード111−1〜111−8との間で、距離が「2」である通信経路を介して通信が行われる。したがって、性能予測部130は、図11−2に示すように、ノード間の通信時間が全て「ts2(20)」であると予測する。
また、性能予測部130は、(第三演算)にかかる演算時間が、図8−2に示した例と同様に「tc(20)」であると予測する。
続いて、性能予測部130によって予測される(第四演算)の実行時間について説明する。(第四演算)では、ノード間でデータの送受は行われず、各ノードによって乗算及び加算処理が行われる。したがって、性能予測部130は、(第四演算)にかかる演算時間が、「td(20)」であると予測する。
続いて、図11−3を用いて、性能予測部130によって予測される(第五演算)の実行時間について説明する。図11−3は、第五演算の実行時間の予測例を示す図である。図10−3を用いて説明したように、(第五演算)では、ノード111−1〜111−8との間で、距離が「3」である通信経路を介して通信が行われる。したがって、性能予測部130は、図11−3に示すように、ノード間の通信時間が全て「ts3(1)」であると予測する。
また、性能予測部130は、図11−3に示すように、(第五演算)にかかる演算時間が、図8−3に示した例と同様に「te(1)」であると予測する。
そして、性能予測部130は、予測した(第一演算)〜(第五演算)の実行時間の総和を算出する。具体的には、(第一演算)〜(第五演算)の実行時間の総和は、以下に示す値になる。
Figure 2010257056
このようにして、性能予測部130は、図9に示した例のようにノード111−1〜111−8にタスクを割り付けた場合における核心処理の実行時間を予測する。そして、性能予測部130は、現行の割付パターンによる核心処理の実行時間と、最適な割付パターンによる核心処理の実行時間とを比較する。具体的には、性能予測部130は、上記式(4)によって示される実行時間から、上記式(5)によって示される実行時間を減算する。減算結果は以下に示す値となる。
Figure 2010257056
上述したように「ts3(20)>ts2(20)>ts1(20)」が成り立つため、上記式(6)は、正の値となる。すなわち、上記式(6)により、最適な割付パターンによる核心処理の実行時間は、現行の割付パターンによる核心処理の実行時間よりも短くなることが分かる。
このように、並列処理装置100は、ジョブ実行開始時に図6に示した例のようにタスクを割り付けた場合、ジョブを実行中に図9に示した例のようにタスクを割り付け直す。これにより、並列処理装置100は、核心処理を高速に実行することができるので、ジョブを高速に実行することができる。
なお、上記例では、ノード111−1〜111−8が全て同一の処理性能を有することを前提として説明した。したがって、ノード111−1〜111−8における通信時間や演算時間は全て同一であることを前提とした。例えば、図8−1に示した例において、「111−1⇔111−6」における通信時間と、「111−4⇔111−5」における通信時間とは、同一であるものとした。また、例えば、図8−1に示した例において、ノード111−1〜111−8における演算時間は、同一であるものとした。
しかし、ノード111−1〜111−8の処理性能が異なる場合、通信時間や演算時間は、ノード111−1〜111−8によって異なる。かかる場合、ノード111−1〜111−8は、性能情報として、それぞれ異なる通信時間や演算時間を収集する。そして、並列処理装置100は、収集された性能情報に基づいて、ジョブの実行時間を予測する。したがって、並列処理装置100は、ノード111−1〜111−8の処理性能が異なる場合であっても、最適な割付パターンを予測することができる。
また、上記例では、性能予測部130が、性能情報の「演算内容」を、予測処理に用いない例を示した。しかし、性能予測部130は、演算内容を用いて予測処理を行ってもよい。例えば、高速処理できる演算がノードによって異なる場合がある。具体的には、ノード111−1は、算術論理演算を高速に処理できるが、浮動小数点演算を高速に処理できない場合がある。一方、ノード111−2は、算術論理演算を高速に処理できないが、浮動小数点演算を高速に処理できる場合がある。このような場合に、性能予測部130は、「演算内容」に基づいて、高速に処理できるノードに対してタスクを割り付けるようにしてもよい。
[実施例1に係る並列処理装置による処理手順]
次に、図12を用いて、実施例1に係る並列処理装置100による処理手順について説明する。図12は、実施例1に係る並列処理装置100による処理手順を示すフローチャートである。
図12に示すように、並列処理装置100のジョブ制御部120は、ジョブの実行を開始する旨の指示を受け付けた場合に(ステップS101肯定)、かかるジョブを実行するノードを確保する(ステップS102)。
続いて、ジョブ制御部120のタスク割付部122は、ステップS102において確保された各ノードに対して、ジョブに含まれるタスクを割り付ける(ステップS103)。そして、各ノードは、自身に割り付けられたタスクを実行する(ステップS104)。また、各ノードは、タスクを実行している間に、性能情報を収集する(ステップS105)。
続いて、ジョブ制御部120の性能情報取得部121は、各ノードによってタスクを実行されてから所定の時間が経過した場合に(ステップS106肯定)、各ノードから性能情報を取得する(ステップS107)。
続いて、性能予測部130は、性能情報取得部121によって取得された性能情報に基づいて、割付パターンを変動させてジョブを実行する時間を予測する(ステップS108)。続いて、性能予測部130は、シミュレーションした実行時間と割付パターンの組合せの中から、最も実行時間が短くなる割付パターンを特定する。
そして、性能予測部130は、特定した割付パターンの方が、現行の割付パターンよりも高速にジョブを実行できる場合に(ステップS109肯定)、特定した割付パターンをタスク割付部122へ送信する。
続いて、ジョブ制御部120は、各ノードに対してタスクの実行を中断させる(ステップS110)。続いて、タスク割付部122は、性能予測部130によって特定された割付パターンに基づいて各ノードにタスクを割り付ける(ステップS111)。
続いて、ジョブ制御部120は、各ノードに対して、タスクの実行に用いられる各種データを相互に転送するように指示する。かかる指示を受け付けた各ノードは、タスクの実行に用いる各種データを相互に転送する(ステップS112)。
そして、ジョブ制御部120は、各ノードによる転送処理が終了した場合に、各ノードに対して、ジョブの実行を再開するように指示する。かかる指示を受け付けた各ノードは、新たに割り付けられたタスクを実行する(ステップS113)。
なお、性能予測部130によって特定された割付パターンが、現行の割付パターンよりも高速にジョブを実行できない場合(ステップS109否定)、並列処理装置100は、処理を終了する。
[実施例1の効果]
上述してきたように、実施例1に係る並列処理装置100は、ジョブの実行中に、各ノードから性能情報を取得する。そして、並列処理装置100は、取得した性能情報に基づいて、ジョブを高速に実行できる割付パターンが予測された場合に、ジョブの実行を中断して、予測された割付パターンに基づいて各ノードにタスクを割り付けてジョブの実行を再開する。ジョブが実行中である場合や中断中である場合、かかるジョブを実行しているノードは、実行中や中断中のジョブを実行できなくなることはない。このため、実施例1に係る並列処理装置100は、ジョブを高速に実行できる割付パターンに基づいて、確実に各ノードにタスクを割り付けることができる。その結果、並列処理装置100は、ジョブを高速に実行することができる。
また、実施例1に係る並列処理装置100は、割付パターンごとにジョブの実時間を予測するので、ジョブを高速に実行できる割付パターンを確実に予測することができる。
また、実施例1に係る並列処理装置100は、性能情報として、タスク実行時におけるノード間の通信量及び通信時間、ノードにおいて実行される演算の内容及び演算にかかる時間を取得する。これにより、並列処理装置100は、実際にタスクが実行された際に収集された通信時間や演算時間等に基づいて、ジョブを高速に実行できる割付パターンを高精度に予測することができる。
特に、ジョブがシミュレーションプログラムである場合、並列処理装置100は、核心処理を数回だけ実行した時点で性能情報を取得すれば、ジョブの実行時間を高精度に予測することができる。すなわち、並列処理装置100は、核心処理の実行時間を高速化することができるので、ジョブ全体の実行時間を高速化することができる。
また、従来の並列処理装置では、シミュレータによって予測された割付パターンにしたがって各ノードにタスクを割り付ける場合、プログラム作成者が、プログラム内に割付パターンを記述していた。このため、従来の並列処理装置を用いると、プログラム作成者にかかる負担が増大していた。一方、実施例1に係る並列処理装置100は、ジョブの実行中に、並列処理装置100自身が最適な割付パターンに基づいて、各ノードにタスクを割り付けるので、プログラム作成者にかかる負担を低減することができる。
また、実施例1に係る並列処理装置100は、特に、ノードによって処理性能が異なる場合や、ノード間によって通信時間が異なるシステムに適用する場合に有効である。なお、現在の計算機システムは、大規模になっているので、全てのノードを同一の処理性能にしたり、各ノード間をクロスバースイッチなどにより接続することは困難である。したがって、多くの計算機システムは、処理性能の異なるノードを有したり、各ノード間がツリー型、トーラス型などのネットワークトポロジーにより接続されている。
また、実施例1に係る並列処理装置100は、特に、複数の利用者によって用いられるシステムに提供する場合に有効である。これは、複数の利用者によって用いられる場合、従来の並列処理装置では、シミュレータによって予測された割付パターンにしたがって各ノードにタスクを割り付けることができないケースが多発するからである。一方、実施例1に係る並列処理装置100は、複数の利用者によって用いられる場合であっても、最初に確保したノードに対して最適な割付パターンを予測するので、ジョブを高速に実行することができる。
ところで、本願の開示する並列処理装置等は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例2では、本願に開示する並列処理装置等の他の実施例について説明する。
[ノード]
上記実施例1では、並列処理装置100が、ノード111−1〜111−nを有する態様について説明した。しかし、本願の開示する並列処理装置は、ノード111−1〜111−nを有していない態様にも適用することができる。例えば、本願の開示する並列処理装置は、並列処理装置とノード111−1〜111−nとがネットワーク接続されている場合にも適用することができる。また、ノード111−1〜111−nは、パーソナルコンピュータやサーバ等の情報処理装置であってもよい。
[性能予測部]
また、上記実施例1では、並列処理装置100が性能予測部130を有する例を示した。しかし、並列処理装置は、性能予測部130と同様の機能を有する性能予測装置と接続されていてもよい。図13に、性能予測装置と接続される並列処理装置200の構成を示す。なお、ここでは、図3に示した構成部位と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。図13に示すように、並列処理装置200は、図3に示した並列処理装置100と比較して、性能予測部130を有さない。また、並列処理装置200は、性能予測装置300と接続されている。並列処理装置200は、並列計算部110から取得した性能情報を性能予測装置300へ送信し、性能予測装置300によって予測された割付パターンを受け付ける。
[性能情報収集タイミング]
また、上記実施例1では、ノード111が、タスクを実行している間に性能情報を収集する例について説明した。しかし、ノード111は、所定の時間だけ性能情報を収集してもよい。例えば、処理対象のプログラムに、性能情報収集処理の開始タイミングを示す情報と、性能情報収集処理の終了タイミングを示す情報とを記述しておく。以下に、図14を用いて具体的に説明する。
図14は、性能情報収集処理の開始終了タイミングが埋め込まれたジョブの一例を示す図である。図14に示すように、ノード111は、まず、前処理を行う(ステップS31)。続いて、ノード111は、性能情報収集処理の開始タイミングを示す情報を検知した場合に(ステップS32)、性能情報収集処理を開始する。具体的には、ノード111は、核心処理を行うとともに、性能情報を収集する(ステップS33−1及びS33−2)。そして、各ノードは、性能情報収集処理の終了タイミングを示す情報を検知した場合に(ステップS34)、性能情報収集処理を終了する。そして、性能情報取得部121は、性能情報収集処理の終了タイミングを示す情報を検知した場合に(ステップS34)、性能情報を取得する(ステップS41)。以降の処理は、図2に示した例と同様である。
このように、処理対象のプログラムに、性能情報収集処理の開始及び終了タイミングを記述しておくことにより、ノード111は、所定の時間だけ性能情報収集処理を行えばよい。これにより、ノード111にかかる負荷を低減することができる。
[割付処理]
また、上記実施例1では、並列処理装置100がジョブの実行中に割付処理を1回行う場合を例に挙げて説明した。しかし、並列処理装置100は、ジョブの実行中に、何度も割付処理を行ってもよい。図15を用いて具体的に説明する。図15は、割付処理を複数回行う例を説明するための図である。図15に示すように、並列処理装置100は、ステップS12−4における核心処理が行われた後に、性能情報を取得して最適な割付パターンに基づいてタスクを割り付ける(ステップS51)。また、並列処理装置100は、ステップS12−mにおける核心処理が行われた後に、再度、性能情報を取得して最適な割付パターンに基づいてタスクを割り付ける(ステップS52)。
このように割付処理を複数回行うことは、核心処理における通信パターンや演算内容が変動するジョブに適用する場合に有効である。なお、上述した性能情報収集処理の開始及び終了タイミングを、処理対象のプログラムに複数記述しておくことにより、並列処理装置100は、核心処理における通信パターンや演算内容が変化したタイミングで、再度、割付処理を行うことができる。
[複数のジョブ]
また、上記実施例1では、並列処理装置100が1個のジョブを実行する場合を例に挙げて説明した。しかし、並列処理装置100は、複数のジョブを実行する場合に、上述してきた割付処理を行ってもよい。具体的には、並列処理装置100の性能情報取得部121は、複数のジョブに含まれるタスクが割り付けられた全てのノード111から性能情報を取得する。そして、性能予測部130は、性能情報取得部121によって取得された性能情報に基づいて、複数のジョブに跨って割付パターンを変動させて、複数のジョブの実行時間を予測する。続いて、性能予測部130は、複数のジョブを最も高速に実行できる割付パターンを特定する。そして、タスク割付部122は、性能予測部130によって、現行の割付パターンよりも高速に複数のジョブを実行できる割付パターンが予測された場合に、予測された割付パターンに基づいて各ノードにタスクを割り付ける。
図16に、複数のジョブを実行する場合における割付処理の一例を示す。図16の上段に示すように、ジョブAに含まれるタスクT11〜T14が、それぞれノード111−1、111−2、111−7及び111−8に割り付けられているものとする。また、ジョブBに含まれるタスクT21〜T24が、それぞれノード111−3〜111−6に割り付けられているものとする。かかる場合に、並列処理装置100は、ノード111−1〜111−8から性能情報を取得して、最適な割付パターンを予測する。そして、並列処理装置100は、例えば、図16の下段に示すように、タスクT11〜T14を、それぞれノード111−1〜111−4に割り付け、タスクT21〜T24を、それぞれノード111−5〜111−8に割り付ける。図16に示した例の場合、割付パターン変更前よりも変更後の方が、ノード間の通信時間を短くすることができるので、ジョブA及びBの実行時間を高速化することができると考えられる。
[プログラム]
上記実施例1で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図17を用いて、上記の実施例1における並列処理装置100と同様の機能を有する並列処理プログラムを実行するコンピュータの一例を説明する。
図17は、並列処理プログラムを実行するコンピュータを示す図である。図17に示すように、コンピュータ1000は、RAM(Random Access Memory)1010と、キャッシュ1020と、HDD1030と、ROM(Read Only Memory)1040と、CPU(Central Processing Unit)1050とを有する。RAM1010、キャッシュ1020、HDD1030、ROM1040、CPU1050は、バス1060によって接続されている。
ROM1040には、上記の実施例1における並列処理装置100と同様の機能を発揮する並列処理プログラムが予め記憶されている。具体的には、ROM1040には、性能情報取得プログラム1041と、タスク割付プログラム1042と、性能予測プログラム1043とが記憶されている。
そして、CPU1050は、これらの性能情報取得プログラム1041と、タスク割付プログラム1042と、性能予測プログラム1043とを読み出して実行する。これにより、図17に示すように、性能情報取得プログラム1041は、性能情報取得プロセス1051になり、タスク割付プログラム1042は、タスク割付プロセス1052になり、性能予測プログラム1043は、性能予測プロセス1053になる。
なお、性能情報取得プロセス1051は、図3に示した性能情報取得部121に対応し、タスク割付プロセス1052は、図3に示したタスク割付部122に対応し、性能予測プロセス1053は、図3に示した性能予測部130に対応する。
また、HDD1030には、図17に示すように、性能情報データ1031が設けられる。かかる性能情報データ1031は、性能情報取得プロセス1051によって取得される性能情報が記憶される。
なお、上記した各プログラム1041〜1043については、必ずしもROM1040に記憶させなくてもよい。例えば、コンピュータ1000に挿入されるフレキシブルディスク(FD)、CD−ROM、MOディスク、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」にプログラム1041〜1043を記憶させてもよい。または、コンピュータ1000の内外に備えられるハードディスクドライブ(HDD)などの「固定用の物理媒体」にプログラム1041〜1043を記憶させてもよい。または、公衆回線、インターネット、LAN、WANなどを介してコンピュータ1000に接続される「他のコンピュータ(またはサーバ)」にプログラム1041〜1043を記憶させてもよい。そして、コンピュータ1000は、上述したフレキシブルディスク等から各プログラムを読み出して実行するようにしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)複数の処理要素を含むジョブを複数のノードに実行させる並列処理装置であって、
前記複数のノードによって前記ジョブが実行されている間に、前記複数のノードから処理要素実行時における性能に関する情報である性能情報を取得する取得部と、
前記取得部によって取得された性能情報に基づいて、現行の各ノードと各処理要素との組合せのパターンである割付パターンよりも前記ジョブを高速に実行する割付パターンが存在する場合に、該割付パターンに基づいて各ノードに処理要素を割り付ける割付部と
を備えたことを特徴とする並列処理装置。
(付記2)前記取得部によって取得された性能情報に基づいて、割付パターンごとに前記ジョブを実行する時間を予測する性能予測部をさらに備え、
前記割付部は、前記性能予測部によって現行の割付パターンよりも高速に前記ジョブを実行する割付パターンが予測された場合に、前記性能予測部によって予測された割付パターンに基づいて各ノードに処理要素を割り付けることを特徴とする付記1に記載の並列処理装置。
(付記3)前記取得部は、割付パターンごとに前記ジョブを実行する時間を予測する性能予測装置に対して、前記各ノードから取得した性能情報を送信し、
前記割付部は、前記性能予測装置によって現行の割付パターンよりも高速に前記ジョブを実行する割付パターンが予測された場合に、前記性能予測装置によって予測された割付パターンに基づいて各ノードに処理要素を割り付けることを特徴とする付記1に記載の並列処理装置。
(付記4)前記ジョブは、同一又は近似する処理要素を複数含み、
前記取得部は、前記各ノードによって同一又は近似する処理要素が所定の回数実行された場合に、前記各ノードから性能情報を取得することを特徴とする付記1〜3のいずれか一つに記載の並列処理装置。
(付記5)前記ジョブは、前記性能情報を収集し始めるタイミングを示す情報である開始タイミング情報と、前記性能情報の収集を終了するタイミングを示す情報である終了タイミング情報とを含み、
前記取得部は、前記終了タイミング情報を検知した場合に、前記複数のノードによって前記開始タイミング情報が示すタイミングから前記終了タイミング情報が示すタイミングの間に収集された性能情報を取得することを特徴とする付記1〜3のいずれか一つに記載の並列処理装置。
(付記6)前記取得部は、複数のジョブに含まれる処理要素が割り付けられた各ノードから性能情報を取得し、
前記性能予測部は、前記取得部によって取得された性能情報に基づいて、前記複数のジョブに跨って割付パターンを変動させて前記複数のジョブを実行する時間を予測し、
前記割付部は、前記性能予測部によって、現行の割付パターンよりも高速に前記複数のジョブを実行する割付パターンが予測された場合に、前記性能予測部によって予測された割付パターンに基づいて各ノードに処理要素を割り付けることを特徴とする付記2、4又は5に記載の並列処理装置。
(付記7)前記取得部は、前記性能情報として、前記各ノードから、処理要素実行時にデータを送受するノード間の情報である通信パターンと、処理要素実行時に送受されるデータの量である通信量及び通信時間と、前記各ノードにおいて実行される演算の内容及び演算にかかる時間とを取得することを特徴とする付記1〜6のいずれか一つに記載の並列処理装置。
(付記8)複数の処理要素を含むジョブを複数のノードに実行させる並列処理装置による並列処理方法であって、
前記並列処理装置が、
前記複数のノードによって前記ジョブが実行されている間に、前記複数のノードから処理要素実行時における性能に関する情報である性能情報を取得する取得ステップと、
前記取得ステップによって取得された性能情報に基づいて、現行の各ノードと各処理要素との組合せのパターンである割付パターンよりも前記ジョブを高速に実行する割付パターンが存在する場合に、該割付パターンに基づいて各ノードに処理要素を割り付ける割付ステップと
を含んだことを特徴とする並列処理方法。
(付記9)前記取得ステップによって取得された性能情報に基づいて、割付パターンごとに前記ジョブを実行する時間を予測する性能予測ステップをさらに含み、
前記割付ステップは、前記性能予測ステップによって現行の割付パターンよりも高速に前記ジョブを実行する割付パターンが予測された場合に、前記性能予測ステップによって予測された割付パターンに基づいて各ノードに処理要素を割り付けることを特徴とする付記8に記載の並列処理方法。
(付記10)複数の処理要素を含むジョブを複数のノードに実行させる並列処理プログラムであって、
前記複数のノードによって前記ジョブが実行されている間に、前記複数のノードから処理要素実行時における性能に関する情報である性能情報を取得する取得手順と、
前記取得手順によって取得された性能情報に基づいて、現行の各ノードと各処理要素との組合せのパターンである割付パターンよりも前記ジョブを高速に実行する割付パターンが存在する場合に、該割付パターンに基づいて各ノードに処理要素を割り付ける割付手順と
をコンピュータに実行させることを特徴とする並列処理プログラム。
(付記11)前記取得手順によって取得された性能情報に基づいて、割付パターンごとに前記ジョブを実行する時間を予測する性能予測手順をさらにコンピュータに実行させ、
前記割付手順は、前記性能予測手順によって現行の割付パターンよりも高速に前記ジョブを実行する割付パターンが予測された場合に、前記性能予測手順によって予測された割付パターンに基づいて各ノードに処理要素を割り付けることを特徴とする付記10に記載の並列処理プログラム。
100、200 並列処理装置
110 並列計算部
111 ノード
111−1〜111−n ノード
112 外部記憶装置
113 主記憶装置
114 退避用記憶装置
115a〜115d CPU
116 バス
120 ジョブ制御部
121 性能情報取得部
122 タスク割付部
130 性能予測部
300 性能予測装置
1000 コンピュータ
1010 RAM
1020 キャッシュ
1030 HDD
1031 性能情報データ
1040 ROM
1041 性能情報取得プログラム
1042 タスク割付プログラム
1043 性能予測プログラム
1050 CPU
1051 性能情報取得プロセス
1052 タスク割付プロセス
1053 性能予測プロセス
1060 バス

Claims (7)

  1. 複数の処理要素を含むジョブを複数のノードに実行させる並列処理装置であって、
    前記複数のノードによって前記ジョブが実行されている間に、前記複数のノードから処理要素実行時における性能に関する情報である性能情報を取得する取得部と、
    前記取得部によって取得された性能情報に基づいて、現行の各ノードと各処理要素との組合せのパターンである割付パターンよりも前記ジョブを高速に実行する割付パターンが存在する場合に、該割付パターンに基づいて各ノードに処理要素を割り付ける割付部と
    を備えたことを特徴とする並列処理装置。
  2. 前記取得部によって取得された性能情報に基づいて、割付パターンごとに前記ジョブを実行する時間を予測する性能予測部をさらに備え、
    前記割付部は、前記性能予測部によって現行の割付パターンよりも高速に前記ジョブを実行する割付パターンが予測された場合に、前記性能予測部によって予測された割付パターンに基づいて各ノードに処理要素を割り付けることを特徴とする請求項1に記載の並列処理装置。
  3. 前記ジョブは、前記性能情報を収集し始めるタイミングを示す情報である開始タイミング情報と、前記性能情報の収集を終了するタイミングを示す情報である終了タイミング情報とを含み、
    前記取得部は、前記終了タイミング情報を検知した場合に、前記複数のノードによって前記開始タイミング情報が示すタイミングから前記終了タイミング情報が示すタイミングの間に収集された性能情報を取得することを特徴とする請求項1又は2に記載の並列処理装置。
  4. 前記取得部は、複数のジョブに含まれる処理要素が割り付けられた各ノードから性能情報を取得し、
    前記性能予測部は、前記取得部によって取得された性能情報に基づいて、前記複数のジョブに跨って割付パターンを変動させて前記複数のジョブを実行する時間を予測し、
    前記割付部は、前記性能予測部によって、現行の割付パターンよりも高速に前記複数のジョブを実行する割付パターンが予測された場合に、前記性能予測部によって予測された割付パターンに基づいて各ノードに処理要素を割り付けることを特徴とする請求項2又は3に記載の並列処理装置。
  5. 前記取得部は、前記性能情報として、前記各ノードから、処理要素実行時にデータを送受するノード間の情報である通信パターンと、処理要素実行時に送受されるデータの量である通信量及び通信時間と、前記各ノードにおいて実行される演算の内容及び演算にかかる時間とを取得することを特徴とする請求項1〜4のいずれか一つに記載の並列処理装置。
  6. 複数の処理要素を含むジョブを複数のノードに実行させる並列処理装置による並列処理方法であって、
    前記並列処理装置が、
    前記複数のノードによって前記ジョブが実行されている間に、前記複数のノードから処理要素実行時における性能に関する情報である性能情報を取得する取得ステップと、
    前記取得ステップによって取得された性能情報に基づいて、現行の各ノードと各処理要素との組合せのパターンである割付パターンよりも前記ジョブを高速に実行する割付パターンが存在する場合に、該割付パターンに基づいて各ノードに処理要素を割り付ける割付ステップと
    を含んだことを特徴とする並列処理方法。
  7. 複数の処理要素を含むジョブを複数のノードに実行させる並列処理プログラムであって、
    前記複数のノードによって前記ジョブが実行されている間に、前記複数のノードから処理要素実行時における性能に関する情報である性能情報を取得する取得手順と、
    前記取得手順によって取得された性能情報に基づいて、現行の各ノードと各処理要素との組合せのパターンである割付パターンよりも前記ジョブを高速に実行する割付パターンが存在する場合に、該割付パターンに基づいて各ノードに処理要素を割り付ける割付手順と
    をコンピュータに実行させることを特徴とする並列処理プログラム。
JP2009104076A 2009-04-22 2009-04-22 並列処理装置、並列処理方法及び並列処理プログラム Pending JP2010257056A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009104076A JP2010257056A (ja) 2009-04-22 2009-04-22 並列処理装置、並列処理方法及び並列処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009104076A JP2010257056A (ja) 2009-04-22 2009-04-22 並列処理装置、並列処理方法及び並列処理プログラム

Publications (1)

Publication Number Publication Date
JP2010257056A true JP2010257056A (ja) 2010-11-11

Family

ID=43317921

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009104076A Pending JP2010257056A (ja) 2009-04-22 2009-04-22 並列処理装置、並列処理方法及び並列処理プログラム

Country Status (1)

Country Link
JP (1) JP2010257056A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012243223A (ja) * 2011-05-23 2012-12-10 Fujitsu Ltd プロセス配置装置、プロセス配置方法及びプロセス配置プログラム
JP2012243224A (ja) * 2011-05-23 2012-12-10 Fujitsu Ltd プロセス配置装置、プロセス配置方法及びプロセス配置プログラム
EP2960788A2 (en) 2014-06-13 2015-12-30 Fujitsu Limited Parallel computer system, control method, and job management program
JP2016139271A (ja) * 2015-01-27 2016-08-04 富士通株式会社 演算処理システムおよび演算処理システムの制御方法
JP2016224756A (ja) * 2015-06-01 2016-12-28 富士通株式会社 並列演算装置、並列演算システム、ノード割当プログラム及びノード割当方法
JP2019106120A (ja) * 2017-12-14 2019-06-27 日本電気株式会社 プロセススケジューリング装置、プロセス実行装置およびプロセススケジューリング方法
JP2021511609A (ja) * 2018-01-23 2021-05-06 パルテック・クラスター・コンペテンス・センター・ゲゼルシャフト・ミット・ベシュレンクテル・ハフツングPartec Cluster Competence Center Gmbh アプリケーションの実行中に決定される異種コンピューティングリソースの動的な割り当て

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005004676A (ja) * 2003-06-16 2005-01-06 Fujitsu Ltd 適応型分散処理システム
JP2006079341A (ja) * 2004-09-09 2006-03-23 Mitsubishi Electric Corp 分散シミュレーションシステム及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005004676A (ja) * 2003-06-16 2005-01-06 Fujitsu Ltd 適応型分散処理システム
JP2006079341A (ja) * 2004-09-09 2006-03-23 Mitsubishi Electric Corp 分散シミュレーションシステム及びプログラム

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012243223A (ja) * 2011-05-23 2012-12-10 Fujitsu Ltd プロセス配置装置、プロセス配置方法及びプロセス配置プログラム
JP2012243224A (ja) * 2011-05-23 2012-12-10 Fujitsu Ltd プロセス配置装置、プロセス配置方法及びプロセス配置プログラム
EP2960788A2 (en) 2014-06-13 2015-12-30 Fujitsu Limited Parallel computer system, control method, and job management program
JP2016139271A (ja) * 2015-01-27 2016-08-04 富士通株式会社 演算処理システムおよび演算処理システムの制御方法
US9898434B2 (en) 2015-01-27 2018-02-20 Fujitsu Limited System, process control method and medium
JP2016224756A (ja) * 2015-06-01 2016-12-28 富士通株式会社 並列演算装置、並列演算システム、ノード割当プログラム及びノード割当方法
US10193969B2 (en) 2015-06-01 2019-01-29 Fujitsu Limited Parallel processing system, method, and storage medium
JP2019106120A (ja) * 2017-12-14 2019-06-27 日本電気株式会社 プロセススケジューリング装置、プロセス実行装置およびプロセススケジューリング方法
JP7009971B2 (ja) 2017-12-14 2022-01-26 日本電気株式会社 プロセススケジューリング装置およびプロセススケジューリング方法
JP2021511609A (ja) * 2018-01-23 2021-05-06 パルテック・クラスター・コンペテンス・センター・ゲゼルシャフト・ミット・ベシュレンクテル・ハフツングPartec Cluster Competence Center Gmbh アプリケーションの実行中に決定される異種コンピューティングリソースの動的な割り当て

Similar Documents

Publication Publication Date Title
JP2010257056A (ja) 並列処理装置、並列処理方法及び並列処理プログラム
JP6044131B2 (ja) プログラム、管理サーバおよび仮想マシン移動制御方法
Borgdorff et al. Distributed multiscale computing with MUSCLE 2, the multiscale coupling library and environment
JP5402226B2 (ja) 管理装置、情報処理システム、情報処理システムの制御プログラムおよび情報処理システムの制御方法
JP5454135B2 (ja) 仮想マシン移動制御装置、仮想マシン移動制御方法および仮想マシン移動制御プログラム
CN103119580B (zh) 异构多处理器计算平台中的应用调度
CN103534687B (zh) 聚簇数据格网中的可扩展集中动态资源分配
TWI547817B (zh) 叢集運算架構的資源規劃方法、系統及裝置
JP2004078824A (ja) 命令スケジューリング方法、命令スケジューリング装置、及びプログラム
Makrani et al. Energy-aware and machine learning-based resource provisioning of in-memory analytics on cloud
JP2017041191A (ja) リソース管理装置、リソース管理プログラム、及びリソース管理方法
Grunske et al. An outline of an architecture-based method for optimizing dependability attributes of software-intensive systems
Srikanth et al. Task scheduling using Ant Colony Optimization in multicore architectures: a survey
Patel et al. Perq: Fair and efficient power management of power-constrained large-scale computing systems
Stavrinides et al. Scheduling real-time jobs in distributed systems-simulation and performance analysis
Goh et al. Design and performance evaluation of combined first-fit task allocation and migration strategies in mesh multiprocessor systems
Saleem et al. A Survey on Dynamic Application Mapping Approaches for Real-Time Network-on-Chip-Based Platforms
KR100935361B1 (ko) 가중치 기반 멀티큐 부하분산 병렬처리 시스템 및 방법
Ibrahim et al. Improving mapreduce performance with progress and feedback based speculative execution
van Stralen et al. Fitness prediction techniques for scenario-based design space exploration
JP6349837B2 (ja) スケジューラ装置及びそのスケジューリング方法、演算処理システム、並びにコンピュータ・プログラム
Beaumont et al. Analysis of dynamic scheduling strategies for matrix multiplication on heterogeneous platforms
KR101470695B1 (ko) 그리드 컴퓨팅 스케쥴링을 위한 생물지리학적 최적화 방법 및 시스템
JP5927871B2 (ja) 管理装置、情報処理装置、管理プログラム、管理方法、プログラムおよび処理方法
JP2009193255A (ja) 集団通信最適化プログラム、集団通信最適化装置および集団通信最適化方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130417

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130430

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130701

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130827