(57)【要約】【課題】異種プロセッサを用いた並列計算環境において、計算の所要時間のばらつきが大きくても、良好な効率で演算を行わせることができる、プロセッサ割り当て装置およびプロセッサ割り当て方法を提供する。【解決手段】性能の異なるＣＰＵ２１０、およびＧＰＧＰＵ２０ａ，２０ｂなどの複数種別のプロセッサを備え、プロセッサそれぞれに計算処理を割り当てるプロセッサ割り当て装置２００である。ＣＰＵ２１０上で動作するＯＳは、メソッド単位に、各プロセッサでの計算実行時間を計測し、平均実行時間および呼出回数を保存する計算時間履歴情報保存部と、記憶部に保存された平均実行時間と計算実行時間の偏差とから、スコアを計算するスコア算出部と、スコアに基づいて、メソッドを割り当てるプロセッサを決定するプロセッサ決定部とを有する。【選択図】図２
2017037533.tif 000002
【特許請求の範囲】
【請求項１】
複数の性能の異なるプロセッサを備え、各プロセッサに計算処理を割り当てる、プロセッサ割り当て装置であって、
前記プロセッサそれぞれへ割り当てるメソッド単位に、各プロセッサでの計算実行時間を計測し、平均実行時間および呼出回数を記憶部に保存する計算時間履歴情報保存部と、
前記記憶部から取得した前記平均実行時間および前記呼出回数を用いて前記計算実行時間の偏差を求め、前記計算実行時間の偏差と前記平均実行時間とからスコアを算出するスコア算出部と、
前記スコアに基づいて、メソッドを割り当てるプロセッサを決定するプロセッサ決定部と、
を有することを特徴とするプロセッサ割り当て装置。
【請求項２】
前記スコア算出部は、前記プロセッサの呼出回数が所定の回数に到達すると、前記スコアの計算を行なうことを特徴とする請求項１に記載のプロセッサ割り当て装置。
【請求項３】
複数の性能の異なるプロセッサを備え、各プロセッサに計算処理を割り当てる、プロセッサ割り当て装置のプロセッサ割り当て方法であって、
前記プロセッサ割り当て装置は、
前記プロセッサそれぞれへ割り当てるメソッド単位に、各プロセッサでの計算実行時間を計測し、平均実行時間および呼出回数を計算時間履歴情報として記憶部に保存するステップと、
前記記憶部から取得した前記平均実行時間および前記呼出回数を用いて前記計算実行時間の偏差を求め、該計算実行時間の偏差と前記平均実行時間とからスコアを算出するステップと、
前記スコアに基づいて、メソッドを割り当てるプロセッサを決定するステップと、
を実行することを特徴とするプロセッサ割り当て方法。
【請求項４】
前記スコアを算出するステップにおいて、前記プロセッサの呼出回数が前記平均実行時間を計算するために必要とされる所定の回数に到達すると、スコアの算出を行なうことを特徴とする請求項３に記載のプロセッサ割り当て方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（Central Processing Unit）やＧＰＧＰＵ（General Purpose Graphics Processing Unit）などアーキテクチャの異なる種類のプロセッサを具備するノードにおいて、計算内容（メソッド）に応じて計算の所要時間が最も少ないプロセッサを計算の割り当て先として選択するためのプロセッサ割り当て装置およびプロセッサ割り当て方法に関する。
【背景技術】
【０００２】
従来から、画像処理に用いられるＧＰＵ（Graphics Processing Unit）を汎用計算に応用し、並列計算を実行するＧＰＧＰＵが知られている。
近年、ＧＰＧＰＵは、ＨＰＣ（High Performance Computing）をはじめとする並列計算環境にも応用されている。また並行プログラミングなどの普及とともにＧＰＧＰＵの適用範囲は広がりを見せている。
【０００３】
しかしながら、ＧＰＧＰＵ上で演算処理を実行させるためには、専用のプログラミング言語による記述が必要であり、ＮＶＩＤＩＡ（登録商標）社のＣＵＤＡ（登録商標：Compute Unified Device Architecture）などベンダ固有の実行環境を必要としていたため、利便性が良好であるとは言い難かった。
【０００４】
これに対して、ハードウェアアーキテクチャの異なる場合でも一元的に動作させたいというヘテロジーニアスコンピューティングへの要求を背景に、「ＯｐｅｎＣＬ（Open Computing Language）」と呼ばれる特定の計算デバイスに依存しない環境が近年開発され、マルチコアＣＰＵやＧＰＵ、ＤＳＰ(Digital Signal Processor)といったデバイスの違いに関わらないプログラミングが可能となった（非特許文献1）。
【０００５】
ＧＰＧＰＵを用いる場合、同時実行させたい並列処理をＣＰＵのメイン処理から分散タスクとしてＧＰＧＰＵへ割り当て、その際にＣＰＵの管理するメモリからＧＰＧＰＵのメモリへのデータ転送が必要となる。その後、ＣＰＵはそれぞれの実行結果を受け取り、チェック処理等が行なわれる。
【０００６】
ＣＰＵからＧＰＧＰＵへ処理を割り振る際、ＣＰＵ−ＧＰＧＰＵ間のメモリデータ転送、同期などオーバーヘッド処理が発生する場合があることが知られている。
このため、このようなオーバーヘッドのコストを評価した上で、ＧＰＧＰＵへ計算を割り振るかどうかを決定する手法が提案されている（非特許文献２）。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】John E. Stone,et al.，“OpenCL: A Parallel Programming Standard for Heterogeneous Computing Systems”，Computing in Science ＆ Engineering，2010，Volume:12，Issue：3，p.66-72.
【非特許文献２】Ramy Gad，et al.， “Compiler Driven Automatic Kernel Context Migration for Heterogeneous Computing”，2014，IEEE 34th International Conference on Distributed Computing System
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の手法では、計算の割り当て先を決定するために、あらかじめＣＰＵもしくはＧＰＧＰＵに計算を割り当てて、計算開始から計算終了までの計算所要時間（以下、計算実行時間とも記す）を測定し、処理内容ごとに所要時間を記録して、履歴を蓄積することにより、ＣＰＵもしくは、ＧＰＧＰＵ、どちらの平均所要時間が短いかを計算している。
【０００９】
そして、蓄積された履歴の平均時間を比較することにより、どちらに処理を割り振るべきかを判定している。このため、計算の所要時間は、サーバの稼働状況などにより大きく変動することがあった。
【００１０】
たとえば、平均時間のみを用いてどちらの処理に割り振るべきかを判定すると、計算の所要時間のばらつきまで考慮することができない。このため、期待する所要時間よりも演算所要時間が長引き、終了時刻が大幅に遅れる可能性があった。
【００１１】
このような背景に鑑みて本発明がなされたのであり、本発明は、異種プロセッサを用いた並列計算環境において、計算の所要時間のばらつきが大きくても、効率よく演算を行わせることができる、プロセッサ割り当て装置およびプロセッサ割り当て方法を提供することを課題とする。
【課題を解決するための手段】
【００１２】
前記した課題を解決するため、請求項１に記載の発明は、複数の性能の異なるプロセッサを備え、各プロセッサに計算処理を割り当てる、プロセッサ割り当て装置であって、プロセッサそれぞれへ割り当てるメソッド単位に、各プロセッサでの計算実行時間を計測し、平均実行時間および呼出回数を記憶部に保存する計算時間履歴情報保存部と、記憶部から取得した平均実行時間および呼出回数を用いて計算実行時間の偏差を求め、計算実行時間の偏差と平均実行時間とからスコアを算出するスコア算出部と、スコアに基づいて、メソッドを割り当てるプロセッサを決定するプロセッサ決定部とを有するプロセッサ割り当て装置を特徴とする。
【００１３】
このようにすることにより、スコア算出部により計算されたスコアに基づいて、プロセッサ決定部がメソッドを割り当てるプロセッサが決定される。スコアは、平均実行時間および計算実行時間の偏差に基づいて算出されている。このため、計算の所要時間のばらつきが大きくても、メソッドを割り当てられたプロセッサにて、効率よく演算を行わせることができる。
【００１４】
請求項２に記載の発明は、スコア算出部が、プロセッサの呼出回数が所定の回数に到達すると、スコアの計算を行なうことを特徴とする。
【００１５】
このようにすることにより、たとえば、平均実行時間の計算に必要とされる所定の回数にプロセッサの呼出回数が到達してから、スコアの計算を行なうことができる。したがって、プロセッサへの割り当てに用いるスコアの精度を向上させることができる。
【００１６】
請求項３に記載の発明は、複数の性能の異なるプロセッサを備え、プロセッサは、各プロセッサに計算処理を割り当てる、プロセッサ割り当て装置のプロセッサ割り当て方法であって、プロセッサ割り当て装置が、プロセッサそれぞれへ割り当てるメソッド単位に、各プロセッサでの計算実行時間を計測し、平均実行時間および呼出回数を計算時間履歴情報として記憶部に保存するステップと、記憶部から取得した平均実行時間および呼出回数を用いて計算実行時間の偏差を求め、該計算実行時間の偏差と前記平均実行時間とからスコアを算出するステップと、スコアに基づいて、メソッドを割り当てるプロセッサを決定するステップと、を実行することを特徴とする。
【００１７】
このようにすることにより、計算の所要時間のばらつきが大きな装置であっても、スコアに基づいて、メソッドを割り当てるプロセッサが決定されて、割り当てられたプロセッサにて、効率よく演算が実行される。
【００１８】
請求項４に記載の発明は、スコアを算出するステップにおいて、プロセッサの呼出回数が前記平均実行時間を計算するために必要とされる所定の回数に到達すると、スコアの算出を行なうことを特徴とする。
【００１９】
このようにすることにより、平均実行時間の算出に必要とされる所定の回数にプロセッサの呼出回数が到達すると、スコアの計算が行なわれる。このため、プロセッサへの割り当てに用いられるスコアの精度を向上させることができる。
【発明の効果】
【００２０】
本発明によれば、異種プロセッサを用いた並列計算環境において、計算の所要時間のばらつきが大きくても、良好な効率で演算を行わせることができる、プロセッサ割り当て装置およびプロセッサ割り当て方法を提供することができる。
【図面の簡単な説明】
【００２１】
【図１】従来のプロセッサ割り当て装置の構成の概要を説明するための図である。
【図２】本実施形態に係るプロセッサ割り当て装置の概要を説明するための図である。
【図３】本実施形態のプロセッサ割り当て装置およびプロセッサ割り当て方法を用いて得られる計算時間履歴情報の一例を示す表である。
【図４】本実施形態に係るプロセッサ割り当て装置のＣＰＵ内の機能を説明するブロック図である。
【図５】本実施形態に係るプロセッサ割り当て装置のフローチャートである。
【図６】本実施形態に係るプロセッサ割り当て装置の平均実行時間の分布を比較するグラフである。
【発明を実施するための形態】
【００２２】
＜従来のプロセッサ割り当て装置＞
図１は、従来の一般的な異種プロセッサを用いた並列計算環境におけるプロセッサ割り当て装置１００の構成の概要を説明するための図である。ここでは、後述する本実施形態のプロセッサ割り当て装置２００との相違点を述べる。
【００２３】
図１に示すように、一般に異種プロセッサを用いた並列計算環境におけるプロセッサ割り当て装置１００のノードは、ＣＰＵ１０、および複数のＧＰＧＰＵ２０ａ、ＧＰＧＰＵ２０ｂなどの複数種別のプロセッサ（以下、各プロセッサとも記す）を有している。
ここで、複数種別とは、内部アーキテクチャの相違のみならず、内部アーキテクチャが同一もしくは同一とされる範囲のものであっても、計算処理速度が相違するものを含む。
【００２４】
ＣＰＵ１０は、ＣＰＵ１０自体もしくは、ＧＰＧＰＵ２０ａ，ＧＰＧＰＵ２０ｂのうち、いずれの平均所要時間が短いかを計算して、割り当て先として最も平均所要時間の短いプロセッサであるＣＰＵ１０自体もしくは、ＧＰＧＰＵ２０ａ，ＧＰＧＰＵ２０ｂに計算を割り当てる。
【００２５】
たとえば、計算の割り当て判定により、最も平均所要時間が短いと判定されたＧＰＧＰＵ２０ａに割り当てが行なわれると、ＧＰＧＰＵ２０ａでは、その割り当てられたメソッド（作業）の計算が実行される。
【００２６】
つづいて、次の計算割り当て判定により、ＧＰＧＰＵ２０ｂに割り当てが行なわれると、ＧＰＧＰＵ２０ｂでは、割り当てられたメソッドの計算が実行される。そして、その次の計算割り当て判定により、ＣＰＵ１０自体に割り当てが行なわれると、ＣＰＵ１０では、割り当てられたメソッドの計算を実行するように構成されている。
【００２７】
従来のプロセッサ割り当て装置１００では、割り当て先として選択されるプロセッサの平均実行時間を、蓄積された実行時間の履歴から呼び出して計算することにより、割り当てを決定している。
【００２８】
このような従来のプロセッサ割り当て装置１００では、平均所要時間のみに基づいて判定が行なわれている。平均所要時間は、実行されるタスクの数や、頻度、サーバの稼働状況、サンプリングの方法などのばらつき要因により大きく変動して、実計算所要時間にばらつきが生じる可能性がある。
このため、平均所要時間に基づいて割り当て判定を行なうと、期待される計算結果が得られる時刻から遅れてしまう場合があった。
【００２９】
＜本実施形態のプロセッサ割り当て装置＞
これに対して、本実施形態に係るプロセッサ割り当て装置２００は、メソッドの割り当て先を決定する際、平均所要時間に加えて偏差を考慮して後述するスコアＳＣの計算を行い、この計算されたスコアＳＣに基づいて、割り当て先となるプロセッサを選択し、その選択したプロセッサにメソッドの計算を行なわせるように構成している。
【００３０】
＜構成の概要＞
図２は、本実施形態に係るプロセッサ割り当て装置２００の概要を説明するための図である。このプロセッサ割り当て装置２００は、複数の性能の異なるプロセッサとして、ＣＰＵ２１０，ＧＰＧＰＵ２０ａ，ＧＰＧＰＵ２０ｂを備えている。
【００３１】
このうち、ＣＰＵ２１０は、各プロセッサ（ＣＰＵ２１０自体もしくはＧＰＧＰＵ２０ａ，ＧＰＧＰＵ２０ｂ）に計算処理を割り当てるように構成されている。
【００３２】
ＣＰＵ２１０には、ＣＰＵ２１０上で動作するＯＳ（Operating System）および各プロセス＃１〜＃Ｐの所要時間を記憶するメモリ１１１が設けられている。メモリ１１１は、各プロセス＃１〜＃Ｐで行なわれるメソッドごとに計算所要時間を計測して保持する。
【００３３】
また、このＣＰＵ２１０は、ＯＳの動作により計測された計算所要時間に基づく計算時間履歴情報として、タスク履歴テーブル３００を記憶するストレージ１４０が設けられている。本実施形態のストレージ１４０は、例えば、磁気ディスクを媒体としてＣＰＵ２１０に接続されている。
【００３４】
本実施形態のプロセッサ割り当て装置２００は、ＣＰＵ２１０にて動作するＯＳが各プロセス＃１〜＃Ｐにて行なわれるメソッドごとの計算所要時間を計測する。
そして、計測された計算所要時間に基づいて算出された平均実行時間および呼出回数は、後述する計算時間履歴情報保存部１１（図４参照）によって記憶部としてのストレージ１４０に保存される。
【００３５】
また、ＧＰＧＰＵ２０ａ，ＧＰＧＰＵ２０ｂには、メモリ２１ａ，２１ｂが設けられている。ＧＰＧＰＵ２０ａ，ＧＰＧＰＵ２０ｂは、ＣＰＵ２１０のＯＳから割り付けられた各プロセス＃１〜＃Ｐを各タスク＃１〜＃Ｍごとに処理して、その結果をそれぞれのメモリ２１ａ，２１ｂに保存する。
【００３６】
＜タスク履歴テーブル３００＞
図３は、本実施形態のプロセッサ割り当て装置２００およびプロセッサ割り当て方法に用いる計算時間履歴情報が保存されたタスク履歴テーブル３００の一例を示すものである。
ストレージ１４０に保存されるタスク履歴テーブル３００は、各タスクに対応した平均実行時間（ＣＰＵ平均実行時間，ＧＰＧＰＵ平均実行時間），呼出回数（ＣＰＵ呼出回数，ＧＰＧＰＵ呼出回数）を計算時間履歴情報として読み書き可能に保存している。
ここでメソッド名とは、プロセッサへ割り振る処理の名称のことである。メソッド名は関数名およびその引数で示されている。
【００３７】
また、平均実行時間とは、メソッドの開始から終了までに要する計算時間の平均値のことである。そして、呼出回数とは、メソッドが実行された回数のことである。
なお、図３の記載では、ＧＰＧＰＵ２０ａまたはＧＰＧＰＵ２０ｂの一方をＧＰＧＰＵとして例示しているが、他方のＧＰＧＰＵ２０ａ，ＧＰＧＰＵ２０ｂの平均実行時間，呼出回数の情報についても、計算時間履歴情報として、タスク履歴テーブル３００に併せて記憶されている。
【００３８】
図４は、本実施形態に係るプロセッサ割り当て装置２００のＣＰＵ２１０内にて動作するＯＳの機能を説明するブロック図である。本実施形態に係るプロセッサ割り当て装置２００のＯＳは、いずれかのプロセッサに計算処理を割り当てるため、計算時間履歴情報保存部１１と、スコア算出部１２と、プロセッサ決定部１３とを有している。
【００３９】
＜履歴情報の蓄積＞
計算時間履歴情報保存部１１は、メソッド単位（作業単位）に、各プロセッサでの計算実行時間（処理時間）を計測すると、計測されたタスクごとの処理時間と、取得されたタスクの呼出回数とから平均実行時間を算出する。
また、計算時間履歴情報保存部１１は、算出した平均実行時間および、取得したタスクの呼出回数を保存して、タスク履歴テーブル３００を構成する。
計算時間履歴情報保存部１１は、タスクが実行される度に、タスク履歴テーブル３００の平均実行時間およびタスクの呼出回数を更新して、保存されている計算時間履歴情報の精度を向上させている。
【００４０】
＜スコアの計算＞
スコア算出部１２は、ストレージ１４０に記憶されたタスク履歴テーブル３００の平均実行時間を取得し、処理時間の偏差ｓｉを計算して、プロセッサ（ｉ＝ＣＰＵ２１０，ＧＰＧＰＵ２０ａ，２０ｂ）ごとのスコアＳＣｉを算出する。
【００４１】
具体的なスコア算出部１２におけるスコアＳＣｉの算出は、下記に示す（式１）〜（式３）を用いて、平均実行時間および実行時間の偏差から計算によって求められる。
【数１】
2017037533.tif 000003
【数２】
2017037533.tif 000004
【数３】
2017037533.tif 000005
【００４２】
＜プロセッサの割り当て＞
プロセッサ決定部１３は、算出されたスコアＳＣｉに基づいて、メソッドを割り当てるプロセッサを決定する。
本実施形態のＣＰＵ２１０上で動作するＯＳは、タスク＃１〜＃Ｍをいずれのプロセッサ（ＣＰＵ２１０，ＧＰＧＰＵ２０ａ，２０ｂ）に割り当てるべきかについて、ストレージ１４０に保存された計算時間履歴情報から取得した平均実行時間と、プロセッサ実行時間の偏差とからスコアＳＣｉを算出して判定する。
【００４３】
図５は、本実施形態に係るプロセッサ割り当て装置２００のフローチャートである。
この図５に示すフローチャートでは、プロセッサ割り当て装置２００のＣＰＵ２１０がタスク履歴テーブル３００に保存された計算時間履歴情報に基づき、割り当て先として最適なプロセッサを判定する。
【００４４】
スコアＳＣｉの計算に用いるプロセッサの呼出回数は、処理時間の平均値の算出に用いられる。プロセッサの呼出回数（試行回数）が少ないうちは、十分な計算実行時間のサンプルが得られず平均実行時間の精度が良好であるとは言い難いため、ある程度の呼出回数が必要となる。
【００４５】
このため、プロセッサの呼出回数が予め設定された所定の回数Ｎ（Ｎ：たとえば処理時間ｔｉの平均実行時間の算出に必要とされる所定の回数）に到達するまでは、スコアＳＣｉの計算を行わず、プロセッサの呼出回数が所定の回数Ｎに到達すると、算出により求められた平均実行時間が所望の精度に到達したとして、スコアＳＣｉの計算を行なうようにしている。
【００４６】
すなわち、ＣＰＵ２１０は、フローチャートに沿って処理を開始するとまず、ステップＳ１では、ＣＰＵ呼出回数がＮ回に到達したか否かを判定する。ＣＰＵ２１０は、ステップＳ１にてＣＰＵ呼出回数がＮ回に到達していない（ステップＳ１にてＹｅｓ）場合、ステップＳ２に処理を進めて、メソッドをＣＰＵ２１０に割り当てて計算を行なう。
【００４７】
ステップＳ１にてＣＰＵ２１０がＣＰＵ自体のＣＰＵ呼出回数がＮ回に到達した（ステップＳ１にてＮｏ）と判断した場合は、ステップＳ４に処理を進める。
【００４８】
ステップＳ４では、ＣＰＵ２１０によってＧＰＧＰＵ２０ａ，２０ｂのＧＰＧＰＵ呼出回数がＮ回に到達したか否かを判定する。
ステップＳ４にてＣＰＵ２１０は、ＧＰＧＰＵ呼出回数がＮ回に到達していない（ステップＳ４にてＹｅｓ）と判定した場合、ＣＰＵ２１０は、ステップＳ７に処理を進めて、Ｋｅｒｎｅｌを生成する。
ここでＫｅｒｎｅｌとは、プロセッサ割り当て装置２００のリソースを管理し、ハードウェアとソフトウェアコンポーネントとの入出力を制御するＯＳの中核となる部分を示している。
【００４９】
ステップＳ４にてＧＰＧＰＵ呼出回数がＮ回に到達した（ステップＳ４にてＮｏ）場合、ＣＰＵ２１０はステップＳ５に処理を進める。
ステップＳ５にて、ＣＰＵ２１０は、スコア計算を行なう（上記（式１）〜（式３）参照）。本実施形態では、ＣＰＵ２１０自体のスコアＳＣＣＰＵが算出されるとともに、ＧＰＧＰＵ２０ａ，２０ｂについて、それぞれスコアＳＣＧＰＧＰＵが算出される。
【００５０】
ステップＳ６に処理を進めると、ＣＰＵ２１０は、ＣＰＵ２１０のスコアＳＣＣＰＵと、ＧＰＧＰＵ２０ａ，２０ｂそれぞれのスコアＳＣＧＰＧＰＵとを比較する。ステップＳ６にてＣＰＵ２１０のスコアＳＣＣＰＵがＧＰＧＰＵ２０ａ，２０ｂのスコアＳＣＧＰＧＰＵよりも小さいとＣＰＵ２１０が判定する場合（ステップＳ６にてＹｅｓ）、ＣＰＵ２１０は、ステップＳ２に処理を進めてメソッドをＣＰＵ２１０自体に割り当てて計算を行なう。
【００５１】
また、ＣＰＵ２１０のスコアＳＣＣＰＵが、ＧＰＧＰＵ２０ａ，２０ｂのいずれかのスコアＳＣＧＰＧＰＵよりも小さくなく、つまり同じか大きいと判定する場合（ステップＳ６にてＮｏ）、ＣＰＵ２１０は、ステップＳ７に処理を進めてＫｅｒｎｅｌを生成する。
【００５２】
たとえば、ＣＰＵ２１０のスコアＳＣＣＰＵの値がＧＰＧＰＵ２０ａのスコアＳＣＧＰＧＰＵの値よりも大きいと判定する場合（ステップＳ６にてＮｏ）、ＣＰＵ２１０は、ステップＳ７に処理を進めて、スコアＳＣＧＰＧＰＵの値が小さなＧＰＧＰＵ２０ａのＫｅｒｎｅｌを生成する。
そして、ステップＳ８では、この生成されたＫｅｒｎｅｌをＧＰＧＰＵ２０ａに割り当てる。
【００５３】
このように、本実施例のＣＰＵ２１０に設けられたプロセッサ決定部１３は、スコアＳＣ同士を比較することにより、平均値だけでなく偏差も考慮して、より効率的に演算処理が可能なプロセッサにメソッドを割り当てることができる。
【００５４】
ＣＰＵ２１０は、ステップＳ９に処理を進めると、ＧＰＧＰＵ２０ａの計算結果を取得する。そして、ステップＳ１０にてＣＰＵ２１０は、ＧＰＧＰＵ２０ａで実行された計算結果が正しいか否かの検証を行なう。ここで検証は、例えばデータ型が不正かどうか、あり得ない値（0以上の数値を期待しているのに負の値となった、など）かどうかで、正誤の判定が行なわれる。
【００５５】
また、ステップＳ１０にて、ＣＰＵ２１０により、計算結果が正しくない場合（ステップＳ１０にてＮｏ）、たとえばＣＰＵ２１０にて、ＧＰＧＰＵ２０ａで計算した場合に予想される計算時間と比較して、ＧＰＧＰＵ２０ａで実行された計算時間が長くなる場合など、プロセッサへの割り当てが正しくない場合、ＣＰＵ２１０はステップＳ８に処理を戻す。
なお、ＧＰＧＰＵ２０ａの物理的な故障などにより、継続的に計算結果が正しくない場合（ステップＳ１０にてＮｏ）には、予め設定された規定回数以上、ステップＳ１０にてＮｏが続くことによって、エラー終了とするなどの処理手順を用いるようにしてもよい。
【００５６】
また、ステップＳ１０にて、ＣＰＵ２１０により、計算結果が正しく、プロセッサへの割り当てが正しいと判定された場合（ステップＳ１０にてＹｅｓ）、ＣＰＵ２１０は、ステップＳ３に処理を進める。
そして、ステップＳ３にて、計算時間履歴情報保存部１１によって、ストレージ１４０に保存されているタスク履歴テーブル３００の平均実行時間および呼出回数を更新して、精度の高い計算結果をストレージＩ４０に保存するとともに、計算処理を終了する。
【００５７】
図６は、本実施形態のプロセッサ割り当て装置２００を用いたプロセッサ割り当て方法によって、効率的にプロセッサａまたはプロセッサｂにメソッドを割り当て可能であることを説明するため、平均実行時間の分布を比較したグラフである。
【００５８】
本来、平均実行時間は、プロセッサａの方がプロセッサｂよりも短い。しかしながら、プロセッサｂの実行時間のばらつきが大きいと、サンプリングの点の取り方（図中では、複数個ずつ丸点にて示す）によっては、プロセッサａの平均実行時間の方が長いと判断される場合がある。
これに対して、本実施形態のプロセッサ割り当て装置２００を用いたプロセッサ割り当て方法では、平均実行時間だけでなく、偏差を考慮したスコアＳＣａ，ＳＣｂを用いている。
これにより、実行時間のばらつきが大きなプロセッサｂの平均実行時間よりも、プロセッサａの平均実行時間の方が長いと誤って判断されることを回避できる。そして、スコアＳＣａ，ＳＣｂを比較することにより、実際に計算所要時間の短いプロセッサａにメソッドが割り当てられるため、計算効率を向上させることが可能となる。
【００５９】
以上説明したように、本実施形態に係るプロセッサ割り当て装置２００によれば、ＣＰＵ２１０では、メソッド単位に、各プロセッサでの計算実行時間が計測されると、計算時間履歴情報保存部１１は、平均実行時間および呼出回数を計算時間履歴情報として記憶部内のタスク履歴テーブル３００に保存する。
スコア算出部１２は、この平均実行時間および呼出回数からなる計算時間履歴情報を呼び出して、この平均実行時間と呼出回数とを用いて、偏差を計算することにより、スコアを算出する。
【００６０】
プロセッサ決定部１３は、この算出されたスコアに基づいて、ＣＰＵ２１０、およびＧＰＧＰＵ２０ａ、ＧＰＧＰＵ２０ｂ…などの複数種別のプロセッサからメソッドを割り当てるプロセッサを決定する。
【００６１】
このように偏差が考慮されたスコアに基づいて、メソッドを割り当てるプロセッサが決定される。このため、計算所要時間のばらつきが大きなプロセッサがあっても、計算実行時間の偏差を考慮することにより、装置全体の計算の効率が向上する。
【００６２】
また、プロセッサの呼出回数が平均実行時間の計算に必要とされる所定の回数Ｎに到達するまでは、スコア算出部１２によるスコアの算出が行なわれず、所定の回数Ｎに到達すると、十分な計算実行時間のサンプルが得られたとして、スコア算出部１２によりスコアの算出が行なわれる。
【００６３】
したがって、ある程度の呼出回数が確保されて、平均実行時間が精度よく計算されるため、スコアＳＣを用いたプロセッサへの割り当て判定の信頼性をさらに向上させることができる。
【００６４】
上述してきたように、本実施形態に係る異種プロセッサを用いた並列計算環境におけるプロセッサ割り当て方法およびプロセッサ割り当て装置２００によれば、性能の異なるＣＰＵ２１０、およびＧＰＧＰＵ２０ａ、ＧＰＧＰＵ２０ｂ…などの複数種別のプロセッサが備えられていても、ＣＰＵ２１０は、メソッド単位に、各プロセッサでの計算実行時間を計測し、平均実行時間および呼出回数をストレージ１４０などに保存する計算時間履歴情報保存部１１と、平均実行時間および呼出回数から求められた計算実行時間の偏差を、平均実行時間に加えてスコアＳＣを算出するスコア算出部１２と、スコアＳＣに基づいて、メソッドを割り当てるプロセッサを決定するプロセッサ決定部１３とを有して、最適な各プロセッサに計算処理を割り当てることができる。
【００６５】
このため、プロセッサ割り当て装置２００がばらつきの大きい複数のプロセッサを有していても、ばらつきを考慮して算出されたスコアＳＣを用いて比較することにより、割り当て先として最適なプロセッサが判定される。したがって、有効なプロセッサへの割り当てを行なえるので、ばらつき要因を有していても良好な効率で並列計算を行わせることができる。
【００６６】
本発明は、上記において説明した実施形態に限定されず、その趣旨を逸脱しない範囲で変更可能である。
たとえば、実施形態では、プロセッサとして、ＣＰＵ２１０および、ＧＰＧＰＵ２０ａ，２０ｂ…といった２種類のものを示して説明してきたが特にこれに限らず、ＦＰＵ(floating point number processing unit)、ＤＳＰ(digital signal processor)、ＰＰＵ(physics processing unit)、ＰＰＵ(picture processing unit)、周辺装置用プロセッサ (peripheral processor)、データ通信プロセッサ (data communication processor)、もしくは他のＧＰＵ(graphics processing unit)を２種類以上、複数種類組み合わせてもよく、数量、種類を限定するものではない。
【００６７】
また、たとえば、上記実施形態では、計算時間履歴情報を記憶する磁気ディスクをストレージ１４０として接続したものを示して説明したが特にこれに限らず、たとえば光学ディスク（CD/DVD/Blu-ray（登録商標） Discなど）、フラッシュメモリ記憶装置（USBメモリ/メモリカード/SSDなど）、磁気テープなど、計算時間履歴情報を含むデータを記憶できるものであればどのようなものであってもよい。
【符号の説明】
【００６８】
１０，２１０    ＣＰＵ
１１            計算時間履歴情報保存部
１２            スコア算出部
１３            プロセッサ決定部
２０ａ，２０ｂ  ＧＰＧＰＵ
２１ａ，２１ｂ，１１１  メモリ
１００，２００  プロセッサ割り当て装置
１４０          ストレージ
３００          タスク履歴テーブル
【図１】
2017037533.tif 000006
【図２】
2017037533.tif 000007
【図３】
2017037533.tif 000008
【図４】
2017037533.tif 000009
【図５】
2017037533.tif 000010
【図６】
2017037533.tif 000011