JP5949245B2 - 情報処理装置、実行プログラムおよび実行方法 - Google Patents

情報処理装置、実行プログラムおよび実行方法 Download PDF

Info

Publication number
JP5949245B2
JP5949245B2 JP2012155966A JP2012155966A JP5949245B2 JP 5949245 B2 JP5949245 B2 JP 5949245B2 JP 2012155966 A JP2012155966 A JP 2012155966A JP 2012155966 A JP2012155966 A JP 2012155966A JP 5949245 B2 JP5949245 B2 JP 5949245B2
Authority
JP
Japan
Prior art keywords
task
execution
unit
executed
processing load
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.)
Expired - Fee Related
Application number
JP2012155966A
Other languages
English (en)
Other versions
JP2014016966A (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.)
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 JP2012155966A priority Critical patent/JP5949245B2/ja
Publication of JP2014016966A publication Critical patent/JP2014016966A/ja
Application granted granted Critical
Publication of JP5949245B2 publication Critical patent/JP5949245B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、情報処理装置、実行プログラムおよび実行方法に関する。
スーパーコンピュータと呼ばれる膨大なデータの処理を高速で実行するコンピュータがある。スーパーコンピュータでは、膨大なデータの処理を高速で実行するために、複数のプロセッサを用いて処理を行うマルチコアプロセッサが用いられる。
また、スーパーコンピュータでは、より一層の処理の高速化を図る目的で、OpenMP Application Program Interface Version 3.0(OpenMP3.0)のアプリケーションが実行される。OpenMP3.0では、3.0以前のバージョンのOpenMPと比較して、新たにタスクと呼ばれるタスク構文についても記述が可能となった。OpenMP3.0では、並列処理を行わせたいタスクを開発者などがソースコードに記述することにより、所望のタスクに並列処理を行わせることが可能となる。OpenMP3.0では、複数のスレッドが生成され、複数のタスクのそれぞれが、複数のスレッドで並列処理されて、処理の高速化が図られる。
また、アプリケーションの実行時にプロファイル情報を生成し、生成したプロファイル情報を用いて、タスクを生成するか否かを判定する技術がある(例えば、非特許文献1参照)。かかる技術では、cut−offの手法を用いて、生成されるタスクの数を減少させることで、ランタイムシステムのオーバヘッドを抑制する。
"An adaptive cut−off for task parallelism"(Alejandro Duran, Julita Corbalan, and Eduard Ayguade)
上記技術では、子タスクを多く生成するタスクであれ、処理の実行に時間がかかるタスクであれ、タスクが常に所定の方法で実行される。このため、上記技術では、タスクの処理負荷に応じた実行方法で、タスクを実行することができないという問題がある。
1つの側面では、本発明は、タスクの処理負荷に応じた実行方法で、タスクを実行することを目的とする。
1態様の情報処理装置は、実行部と、予測部と、選択部と、実行制御部とを有する。実行部は、タスクを有するアプリケーションを実行する。予測部は、実行部により実行されたタスクの処理負荷を予測する。選択部は、タスクの処理負荷とタスクの実行方式とが対応付けられた対応情報を参照し、予測部により予測された処理負荷に応じたタスクの実行方式を選択する。実行制御部は、選択部により選択された実行方式で実行部によりタスクが実行されるように制御する。
1つの側面では、タスクの処理負荷に応じた実行方法で、タスクを実行することができる。
図1は、実施例1に係るシステムの構成の一例を示す図である。 図2は、実施例1に係る計算機の機能的な構成の一例を示す図である。 図3は、アプリケーションのソースコードの一例を示す図である。 図4Aは、子タスクの生成数を説明するための図である。 図4Bは、子タスクの生成数を説明するための図である。 図5は、タスク情報のデータ構造の一例を示す図である。 図6は、プロファイル情報のデータ構造の一例を示す図である。 図7は、スレッドにより実行されるタスクの実行形態の一例を説明するための図である。 図8は、タスクの「時間コスト」が示す処理負荷の度合いを算出する方法の一例を説明するための図である。 図9は、子タスクの数の多さを示す度合いを算出する方法の一例を説明するための図である。 図10は、タスクの処理負荷を予測する方法の一例を説明するための図である。 図11は、タスクの実行方式を選択する方法の一例を説明するための図である。 図12は、実行処理の手順を示すフローチャートである。 図13は、実行プログラムを実行するコンピュータを示す図である。
以下に、本願の開示する情報処理装置、実行プログラムおよび実行方法の実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
実施例1に係る情報処理装置を有するシステムについて説明する。図1は、実施例1に係るシステムの構成の一例を示す図である。図1の例に示すシステム1は、端末2および計算機3を有する。計算機3は、情報処理装置の一例である。なお、端末2および計算機3の台数は、任意の台数を採用できる。端末2と計算機3とはネットワークを介して接続されている。すなわち、端末2と、計算機3とは、互いに通信可能である。なお、端末2と計算機3とは、有線に限らず、無線などの任意に通信網を介して接続することができる。
端末2は、キーボードやマウスなどの受付部、および、液晶ディスプレイなどの表示部を有する。端末2の受付部は、ユーザからアプリケーションを実行する指示を受け付ける。そして、端末2は、受け付けた指示を計算機3に送信する。また、端末2の表示部は、計算機3から送信されたアプリケーションの実行結果などを表示する。
図2は、実施例1に係る計算機の機能的な構成の一例を示す図である。図2に示すように、計算機3は、入力部4、出力部5、通信部6、記憶部7、制御部8を有する。
入力部4は、各種情報を入力する。例えば、入力部4は、ユーザから、アプリケーションを実行する指示を受け付けて、受け付けた指示を制御部8に入力する。入力部4のデバイスの一例としては、マウスやキーボードなどのユーザの操作を受け付けるデバイスなどが挙げられる。
出力部5は、各種の情報を出力する。例えば、出力部5は、後述の実行部8aにより実行されたアプリケーションの実行結果を表示する。出力部5のデバイスの一例としては、液晶ディスプレイなどが挙げられる。
通信部6は、端末2との通信を行うためのインターフェースである。例えば、通信部6は、端末2からアプリケーションを実行する指示を受信した場合には、受信した指示を制御部8へ送信する。また、通信部6は、後述する実行部8aにより実行されたアプリケーションの実行結果を受信した場合には、受信した実行結果を出力部5や端末2へ送信する。
記憶部7は、各種の情報を記憶する。例えば、記憶部7は、アプリケーション7a、プロファイラ7b、ランタイムライブラリ7c、プロファイル情報7eを記憶する。
アプリケーション7aは、OpenMP3.0を用いて所定の言語で記述されたソフトウェアである。アプリケーション7aには、タスクの記述がある。したがって、アプリケーション7aが後述の実行部8aにより実行されることで、スレッドによってタスクが実行される。図3は、アプリケーションのソースコードの一例を示す図である。図3の例が示すソースコードには、タスク9aのコードおよびタスク9bのコードが記述されている。図3の例のソースコードが示すアプリケーション7aでは、「left」の値が真である場合に、タスク9aが実行される。また、図3の例のソースコードが示すアプリケーション7aでは、「right」の値が真である場合に、タスク9bが実行される。図3の例のソースコードが示すアプリケーション7aでは、タスク9aおよびタスク9bによって、再帰的にtraverse関数が呼び出される。以下、アプリケーション7aがOpenMP3.0のソフトウェアである場合について説明するが、アプリケーション7aとして、様々な種類のソフトウェアを採用できる。
プロファイラ7bは、アプリケーションの解析を行うソフトウェアである。例えば、プロファイラ7bは、アプリケーション7aとともに実行されることで、アプリケーション7aに含まれるタスクの各種情報を計測し、計測結果を後述のプロファイル情報7eに登録する。計測されるタスクの情報の一例としては、タスクが実行されてからタスクの実行が完了するまでの時間が挙げられる。なお、以下の説明では、かかる時間を、「時間コスト」と表記する場合がある。また、他の例としては、アプリケーション7aに含まれるタスクが実行された場合に、実行されたタスクによって生成される子タスクの数、すなわち、子タスクの生成数が挙げられる。図4Aおよび図4Bは、子タスクの生成数を説明するための図である。図4Aの例は、タスク10が実行された場合に、タスク10によって生成されるタスク11、12の数が「2」である場合を示す。また、図4Aの例では、タスク11によって生成されるタスク13、14の数が「2」であり、タスク12によって生成されるタスク15,16の数が「2」である場合を示す。このような場合、タスク10の子タスク11〜16の生成数は「6(2+2+2)」である。図4Bの例は、タスク17が実行された場合に、タスク17によって生成されるタスク18、19の数が「2」である場合を示す。このような場合、タスク17の子タスク18、19の生成数は「2」である。
ランタイムライブラリ7cは、アプリケーション7aの実行時に用いられる各種のモジュール群である。また、ランタイムライブラリ7cは、タスク情報7dを有する。タスク情報7dには、タスクごとのタスクの実行方式が登録される。ランタイムライブラリ7cは、後述の実行部8aによりアプリケーション7aとともに実行されると、タスク情報7dの登録内容に従って、スレッドにより実行されるタスクの実行方式を制御する。図5は、タスク情報のデータ構造の一例を示す図である。図5の例では、タスクごとに、タスクの実行方式がタスク情報7dに登録された場合が示されている。図5の例は、タスク情報7cに、ID「1」が示すタスクの実行方式として「A」が登録された場合を示す。
プロファイル情報7eには、プロファイラ7bにより計測されたタスクの各種情報が登録される。図6は、プロファイル情報のデータ構造の一例を示す図である。図6の例では、ID「1」〜「5」のそれぞれが示すタスクの「時間コスト」および「子タスクの生成数」が登録された場合が示されている。図6の例のプロファイル情報7eは、ID「1」が示すタスクが実行されてから、タスクの実行が完了するまでの時間が「300μs」である場合を示す。また、図6の例のプロファイル情報7eは、ID「2」が示すタスクが実行されてから、タスクの実行が完了するまでの時間が「200μs」である場合を示す。また、図6の例のプロファイル情報7eは、ID「3」が示すタスクが実行されてから、タスクの実行が完了するまでの時間が「5μs」である場合を示す。また、図6の例のプロファイル情報7eは、ID「4」が示すタスクが実行されてから、タスクの実行が完了するまでの時間が「250μs」である場合を示す。また、図6の例のプロファイル情報7eは、ID「5」が示すタスクが実行されてから、タスクの実行が完了するまでの時間が「8μs」である場合を示す。
また、図6の例のプロファイル情報7eは、ID「1」が示すタスクによって生成された子タスクの数が「20」である場合を示す。また、図6の例のプロファイル情報7eは、ID「2」が示すタスクによって生成された子タスクの数が「2」である場合を示す。また、図6の例のプロファイル情報7eは、ID「3」が示すタスクによって生成された子タスクの数が「1」である場合を示す。また、図6の例のプロファイル情報7eは、ID「4」が示すタスクによって生成された子タスクの数が「18」である場合を示す。また、図6の例のプロファイル情報7eは、ID「5」が示すタスクによって生成された子タスクの数が「8」である場合を示す。
記憶部7は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部7は、上記の種類の記憶装置に限定されるものではなく、Random Access Memory(RAM)、Read Only Memory(ROM)であってもよい。
制御部8は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。先の図2に示すように、制御部8は、実行部8aと、予測部8bと、選択部8cと、実行制御部8dとを有する。
実行部8aは、アプリケーションを実行する指示を受信した場合に、アプリケーション7aとともに、プロファイラ7bおよびランタイムライブラリ7cの実行を開始して、アプリケーション7a、プロファイラ7bおよびランタイムライブラリ7cを実行する。実行部8aによりアプリケーション7aが実行されると、アプリケーションに含まれるタスクがスレッドにより実行される。なお、アプリケーション7aは、複数のスレッドを生成する。そして、生成された複数のスレッドのそれぞれは、複数のタスクのそれぞれを生成し、生成した複数のタスクのそれぞれを実行する。図7は、スレッドにより実行されるタスクの実行形態の一例を説明するための図である。図7の例では、「待ち1」〜「待ち4」は、キュー20に格納された実行待ちのタスクを示し、「実行中1」〜「実行中4」は、キュー21に格納された実行中のタスクを示す。図7の例に示すように、スレッドは、生成したタスクをキュー20に格納し、所定の実行ポイントでキュー20からタスクを取り出して、取り出したタスクを、実行中のタスクが格納されるキュー21に格納して、取り出したタスクを実行する。そして、タスクの実行が完了した場合には、スレッドは、キュー21から実行が完了したタスクを取り出す。図7の例では、「待ち1」のタスクの実行ポイントに到達すると、スレッドが、「待ち1」のタスクをキュー20から取り出して、取り出したタスクを実行するとともに、「実行中4」のタスクとしてキュー21に格納した場合を示す。なお、キュー20およびキュー21は、単なるデータ構造を示すものであり、記憶部7の所定の記憶領域に対応する。
また、実行部8aは、後述の実行制御部8dによりタスクの実行方式が設定されると、設定された実行方式でタスクを実行するように制御される。
そして、実行部8aは、実行したアプリケーションの実行結果を出力部5や端末2に送信する。
予測部8bは、実行部8aにより実行されたタスクの処理負荷を予測する。具体例を挙げて説明すると、例えば、予測部8bは、実行部8aによりアプリケーション7a、プロファイラ7bおよびランタイムライブラリの実行が開始されると、まず、変数Nの値を1に設定する。予測部8bは、変数Nの値を1に設定した場合や、後述の実行制御部8dにより変数Nの値が1つインクリメントされた場合には、N番目に実行されたタスクの実行が完了したか否かを判定する。
N番目に実行されたタスクの実行が完了した場合には、予測部8bは、プロファイル情報7eを参照し、N番目に実行されたタスクの「時間コスト」および「子タスクの生成数」を取得する。例えば、N=1である場合に、1番目に実行されたタスクのIDが「1」であるときには、予測部8bは、図6に示すプロファイル情報7eから、IDが「1」であるタスクの時間コスト「300μs」および子タスクの生成数「20」を取得する。
そして、予測部8bは、N番目に実行されたタスクの「時間コスト」の値に応じて、タスクの「時間コスト」が示す処理負荷の度合いを算出する。図8は、タスクの「時間コスト」が示す処理負荷の度合いを算出する方法の一例を説明するための図である。図8の例に示すように、予測部8bは、N番目に実行されたタスクの「時間コスト」が「0.1μs」以下である場合には、N番目に実行されたタスクの「時間コスト」が示す処理負荷の度合い「小」を算出する。また、予測部8bは、N番目に実行されたタスクの「時間コスト」が「0.1μs」よりも大きく、「1μs」以下である場合には、N番目に実行されたタスクの「時間コスト」が示す処理負荷の度合い「中」を算出する。また、予測部8bは、N番目に実行されたタスクの「時間コスト」が「1μs」よりも大きい場合には、N番目に実行されたタスクの「時間コスト」が示す処理負荷の度合い「大」を算出する。「大」、「中」、「小」のうち、「大」は、処理負荷が最も大きいことを示し、「小」は、処理負荷が最も小さいことを示し、「中」は、処理負荷が「大」と「小」の間の大きさであることを示す。
また、予測部8bは、N番目に実行されたタスクの「子タスクの生成数」の値に応じて、タスクの「子タスクの生成数」が示す子タスクの数の多さを示す度合いを算出する。図9は、子タスクの数の多さを示す度合いを算出する方法の一例を説明するための図である。図9の例に示すように、予測部8bは、N番目に実行されたタスクの「子タスクの生成数」が「0〜3」である場合には、子タスクの数の多さを示す度合い「少」を算出する。また、予測部8bは、N番目に実行されたタスクの「子タスクの生成数」が「4〜10」である場合には、子タスクの数の多さを示す度合い「中」を算出する。また、予測部8bは、N番目に実行されたタスクの「子タスクの生成数」が「11」より大きい場合には、子タスクの数の多さを示す度合い「多」を算出する。「多」、「中」、「少」のうち、「多」は、子タスクの生成数が多いことを示し、「少」は、子タスクの生成数が少ないことを示し、「中」は、子タスクの生成数が「多」と「少」の間の多さであることを示す。
そして、予測部8bは、N番目に実行されたタスクの「時間コスト」が示す処理負荷の度合いと、N番目に実行されたタスクの「子タスクの生成数」が示す子タスクの数の多さを示す度合いとに基づいて、N番目に実行されたタスクの処理負荷を予測する。図10は、タスクの処理負荷を予測する方法の一例を説明するための図である。図10の例に示すように、予測部8bは、N番目に実行されたタスクの「時間コスト」が示す処理負荷の度合いが「大」であり、「子タスクの生成数」が示す子タスクの数の多さを示す度合いが「多」である場合には、次のような処理を行う。すなわち、予測部8bは、N番目に実行されたタスクの処理負荷「大」を予測する。また、予測部8bは、N番目に実行されたタスクの「時間コスト」が示す処理負荷の度合いが「大」であり、「子タスクの生成数」が示す子タスクの数の多さを示す度合いが「中」である場合には、N番目に実行されたタスクの処理負荷「大」を予測する。また、予測部8bは、N番目に実行されたタスクの「時間コスト」が示す処理負荷の度合いが「大」であり、「子タスクの生成数」が示す子タスクの数の多さを示す度合いが「少」である場合には、N番目に実行されたタスクの処理負荷「中」を予測する。
また、予測部8bは、N番目に実行されたタスクの「時間コスト」が示す処理負荷の度合いが「中」であり、「子タスクの生成数」が示す子タスクの数の多さを示す度合いが「多」である場合には、N番目に実行されたタスクの処理負荷「大」を予測する。また、予測部8bは、N番目に実行されたタスクの「時間コスト」が示す処理負荷の度合いが「中」であり、「子タスクの生成数」が示す子タスクの数の多さを示す度合いが「中」である場合には、N番目に実行されたタスクの処理負荷「中」を予測する。また、予測部8bは、N番目に実行されたタスクの「時間コスト」が示す処理負荷の度合いが「中」であり、「子タスクの生成数」が示す子タスクの数の多さを示す度合いが「少」である場合には、N番目に実行されたタスクの処理負荷「小」を予測する。
また、予測部8bは、N番目に実行されたタスクの「時間コスト」が示す処理負荷の度合いが「小」であり、「子タスクの生成数」が示す子タスクの数の多さを示す度合いが「多」である場合には、N番目に実行されたタスクの処理負荷「中」を予測する。また、予測部8bは、N番目に実行されたタスクの「時間コスト」が示す処理負荷の度合いが「小」であり、「子タスクの生成数」が示す子タスクの数の多さを示す度合いが「中」である場合には、N番目に実行されたタスクの処理負荷「小」を予測する。また、予測部8bは、N番目に実行されたタスクの「時間コスト」が示す処理負荷の度合いが「小」であり、「子タスクの生成数」が示す子タスクの数の多さを示す度合いが「少」である場合には、N番目に実行されたタスクの処理負荷「小」を予測する。
選択部8cは、予測部8bにより予測された処理負荷に応じて、N番目に実行されたタスクの実行方式を選択する。図11は、タスクの実行方式を選択する方法の一例を説明するための図である。図11には、タスクの処理負荷とタスクの実行方式とが対応付けられた対応情報が示されている。図11の例に示す対応情報には、タスクの処理負荷が「大」、「中」、「小」のそれぞれである場合における、タスクの実行方式A〜Dの4つの方式のそれぞれの推奨順位が登録されている。推奨順位は、「◎」が最も高く、次に、「○」が高い。また、その次に、推奨順位は、「△」が高く、「×」が最も低い。
ここで、実行方式A〜Dのそれぞれについて説明する。実行方式Aは、タスクのコードに遭遇したスレッドが、タスクを生成し、生成したタスクをキュー20に格納し、実行ポイントに到達した場合に、キュー20からタスクを取り出して実行する方式である。実行方式Bは、タスクのコードに遭遇したスレッドが、タスクを生成し、生成したタスクをキュー20に格納し、実行ポイントに到達した場合に、タスクのコードに遭遇したスレッド以外のスレッドが、キュー20からタスクを取り出して実行する方式である。実行方式Cは、タスクのコードに遭遇したスレッドがタスクを生成し、生成したタスクを、キュー20に格納することなく、タスクが生成されたタイミングで実行する方式である。実行方式Dは、タスクのコードに遭遇したスレッドが、タスクを生成し、キュー20に格納されたタスクの数が所定数、例えば、5未満となった場合に、生成したタスクをキュー20に格納する方式である。さらに、実行方式Dは、所定の実行ポイントに到達したときに、タスクのコードに遭遇したスレッドが、キュー20からタスクを取り出して実行する方式でもある。
選択部8cは、図11の例に示す対応情報を参照して、予測部8bにより予測されたタスクの処理負荷が「小」である場合には、タスクの実行方式として、推奨順位が最も高い実行方式Cを選択する。また、選択部8cは、図11の例に示す対応情報を参照して、予測部8bにより予測されたタスクの処理負荷が「中」である場合には、タスクの実行方式として、推奨順位が最も高い実行方式Bを選択する。また、選択部8cは、図11の例に示す対応情報を参照して、予測部8bにより予測されたタスクの処理負荷が「大」である場合には、タスクの実行方式として、推奨順位が最も高い実行方式Aを選択する。これにより、選択部8cは、タスクの処理負荷に応じたタスクの実行方式を選択することができる。なお、選択部8cは、「◎」に対応する実行方式ではなく、「○」や「△」に対応する実行方式を選択することもできる。
そして、選択部8cは、キュー20の状態に応じて、選択した実行方式を修正する。例えば、選択部8cは、キュー20に格納されたタスクの数が所定数、例えば、5以上である場合には、選択した実行方式を実行方式Dに修正する。これにより、選択部8cは、キュー20に格納されるタスクの数が増えることを抑制することができる。また、選択部8cは、キュー20に格納されたタスクの数が所定数以上である場合には、生成したタスクをキュー20に格納しない実行方式Cに修正することもできる。また、選択部8cは、キュー20に格納されたタスクの数が所定数、例えば、2以下である場合には、生成したタスクをキュー20に格納する実行方式AまたはBに修正することもできる。
実行制御部8dは、選択部8cにより選択された実行方式でタスクが実行されるように制御する。例えば、実行制御部8dは、選択部8cにより選択された実行方式と、かかる実行方式で実行されるタスクのIDとを対応付けてタスク情報7dに登録する。ここで、タスク情報7dに実行方式およびタスクのIDが登録されると、実行方式およびタスクのIDが登録された以降に、登録したIDが示すタスクが実行される場合には、ランタイムライブラリ7cによって、次のようにタスクの実行方式が制御される。すなわち、ランタイムライブラリ7cによって、タスク情報7dに登録された実行方式で、スレッドによりタスクが実行されるように制御される。
そして、実行制御部8dは、アプリケーションの実行が完了したか否かを判定し、アプリケーションの実行が完了していない場合には、変数Nの値を1つインクリメントする。
制御部8は、Application Specific Integrated Circuit(ASIC)などの集積回路である。また、制御部8は、Field Programmable Gate Array(FPGA)であってもよい。また、制御部8は、Central Processing Unit(CPU)などの電子回路であってもよい。さらに、制御部8は、Micro Processing Unit(MPU)であってもよい。
次に、本実施例に係る計算機3が実行する処理の流れを説明する。図12は、実行処理の手順を示すフローチャートである。この実行処理は、例えば、端末2などから送信されたアプリケーションを実行する指示を計算機3が受信した場合に実行される。
図12に示すように、実行部8aは、アプリケーション7aとともに、プロファイラ7bおよびランタイムライブラリ7cの実行を開始する(S101)。続いて、予測部8bは、変数Nの値を1に設定する(S102)。そして、予測部8bは、N番目に実行されたタスクの実行が完了したか否かを判定する(S103)。N番目に実行されたタスクの実行が完了していない場合(S103否定)には、予測部8bは、再び、S103の判定を行う。
一方、N番目に実行されたタスクの実行が完了した場合(S103肯定)には、予測部8bは、プロファイル情報7eを参照し、N番目に実行されたタスクの「時間コスト」および「子タスクの生成数」を取得する(S104)。
そして、予測部8bは、N番目に実行されたタスクの「時間コスト」が示す処理負荷の度合いと、N番目に実行されたタスクの「子タスクの生成数」が示す子タスクの数の多さを示す度合いとを算出し、算出した2つの度合いに基づいて、次のような処理を行う。すなわち、予測部8bは、N番目に実行されたタスクの処理負荷を予測する(S105)。
そして、選択部8cは、対応情報を参照して、予測部8bにより予測された処理負荷に応じて、N番目に実行されたタスクの実行方式を選択する(S106)。続いて、選択部8cは、キュー20の状態に応じて、選択した実行方式を修正する(S107)。
そして、実行制御部8dは、選択部8cにより選択された実行方式と、かかる実行方式で実行されるタスクのIDとを対応付けてタスク情報7dに登録する(S108)。そして、実行制御部8dは、アプリケーションの実行が完了したか否かを判定する(S109)。アプリケーションの実行が完了していない場合(S109否定)には、実行制御部8dは、変数Nの値を1つインクリメントする(S110)。そして、実行部8aは、アプリケーション7aを続行し(S111)、S103へ戻る。一方、アプリケーションの実行が完了した場合(S109肯定)には、実行制御部8dは、アプリケーションの実行結果を出力部5や端末2に送信し(S112)、処理を終了する。
上述してきたように、本実施例に係る計算機3は、タスクの処理負荷を予測し、タスクの処理負荷に応じたタスクの実行方式を選択し、実行方式を選択した以降のタスクを、選択した実行方式で実行することができる。したがって、本実施例に係る計算機3によれば、タスクの処理負荷に応じた実行方法で、タスクを実行することができる。
また、本実施例に係る計算機3は、アプリケーションの実行途中で、タスクの制御方式を選択する。したがって、本実施例に係る計算機3によれば、アプリケーションの実行が完了してからタスクの制御方式を選択する場合と比較して、迅速に、タスクの処理負荷に応じた実行方法で、タスクを実行することができる。
また、本実施例に係る計算機3は、処理負荷が第1の基準を超えた「大」のタスクの実行方式として、タスクを生成したスレッドが、所定の実行ポイントでタスクを実行する実行方式Aを選択する。また、本実施例に係る計算機3は、処理負荷が第1の基準以下であり且つ第1の基準よりも小さい第2の基準より大きい「中」のタスクの実行方式として、タスクを生成したスレッドとは異なるスレッドが、タスクを実行する実行方式Bを選択する。さらに、本実施例に係る計算機3は、処理負荷が第2の基準以下である「小」のタスクの実行方式として、タスクを生成したスレッドが、タスクが生成されたタイミングでタスクを実行する実行方式Cを選択する。したがって、本実施例に係る計算機3によれば、タスクの各段階の処理負荷に応じた実行方法で、タスクを実行することができる。
また、本実施例に係る計算機3は、キュー20に格納されたタスクの数が所定数以上である場合には、選択されたタスクの実行方式を、次のような方式に修正する。すなわち、計算機3は、タスクを生成したスレッドが、キュー20に格納されたタスクの数が所定数未満となったときに、生成したタスクをキュー20に格納する実行方式Dに修正する。したがって、本実施例に係る計算機3によれば、キュー20の状態に応じて実行方式を修正することができる。
さて、これまで開示の計算機に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
例えば、計算機3が、実行方式を選択した後に、キュー20の状態に応じて実行方式を修正し、修正された実行方式でタスクが実行されるように制御する場合について例示したが、開示の計算機はこれに限られない。例えば、開示の計算機は、実行方式を選択し、選択された実行方式でタスクが実行されるように制御することができる。
また、実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、本実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
また、各種の負荷や使用状況などに応じて、実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
また、各種の負荷や使用状況などに応じて、実施例において説明した各処理の各ステップでの処理の順番を変更できる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
[実行プログラム]
また、上記の実施例で説明した計算機3の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図13を用いて、上記の実施例で説明した計算機3と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図13は、実行プログラムを実行するコンピュータを示す図である。
図13に示すように、コンピュータ300は、複数のCPU310、メモリ320、Hard Disk Drive(HDD)330、入力装置350、表示制御装置361、表示装置360、通信制御装置370、ドライブ装置380を有する。CPU310、メモリ320、HDD330、入力装置350、表示制御装置361、通信制御装置370、ドライブ装置380は、バス390を介して接続される。
入力装置350は、マウスやキーボードなどのデバイスである。表示装置360は、液晶などのデバイスであり、表示制御部361の制御によって各種の情報を表示する。通信制御装置370は、通信を行うためのNetwork Interface Card(NIC)である。
メモリ320には、OSなどの基本プログラムが記憶されている。また、HDD330には、上記の実施例で示す実行部8a、予測部8b、選択部8c、実行制御部8dと同様の機能を発揮する実行プログラム330aが予め記憶される。なお、実行プログラム330aについては、適宜分離しても良い。また、HDD330には、アプリケーション、プロファイラ、ランタイムライブラリ、プロファイル情報が設けられる。これらアプリケーション、プロファイラ、ランタイムライブラリ、プロファイル情報は、上述したアプリケーション7a、プロファイラ7b、ランタイムライブラリ7c、プロファイル情報7eに対応する。
そして、CPU310が、実行プログラム330aを、ドライブ装置380を介してHDD330から読み出して実行する。
そして、CPU310は、アプリケーション、プロファイラ、ランタイムライブラリ、プロファイル情報を読み出してメモリ320に格納する。さらに、CPU310は、メモリ320に格納されたアプリケーション、プロファイラ、ランタイムライブラリ、プロファイル情報を用いて、実行プログラム330aを実行する。なお、メモリ320に格納される各データは、常に全てのデータがメモリ320に格納されなくともよい。処理に用いられるデータがメモリ320に格納されれば良い。
なお、上記した実行プログラム330aについては、必ずしも最初からHDD330に記憶させておく必要はない。
例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に実行プログラム330aを記憶させておく。そして、コンピュータ300がこれらから実行プログラム330aを読み出して実行するようにしてもよい。
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ300に接続される「他のコンピュータ(またはサーバ)」などに実行プログラム330aを記憶させておく。そして、コンピュータ300がこれらから実行プログラム330aを読み出して実行するようにしてもよい。
1 システム
2 端末
3 計算機
7 記憶部
7a アプリケーション
7b プロファイラ
7c ランタイムライブラリ
7d タスク情報
7e プロファイル情報
8 制御部
8a 実行部
8b 予測部
8c 選択部
8d 実行制御部

Claims (7)

  1. タスクを有するアプリケーションを実行する実行部と、
    前記実行部によ実行が完了したタスクの処理負荷を推測する推測部と、
    スクの処理負荷と、スクの実行方式とが対応付けられた対応情報を参照して、前記推測部により処理負荷が推測されたタスクの実行方式を選択する選択部と、
    前記実行部による実行が完了し、前記選択部により実行方式が選択されたタスクと同一IDのタスクが実行される場合に、前記選択部により選択された実行方式で前記実行部により該同一IDのタスクが実行されるように制御する実行制御部と、
    を有し、
    前記実行部は、複数のスレッドのそれぞれが複数のタスクのそれぞれを生成し実行するアプリケーションを実行し、
    前記選択部は、前記推測部により推測された処理負荷が第1の基準を超えたタスクについては、該タスクを生成したスレッドが、所定の実行ポイントで該タスクを実行する実行方式を選択する
    ことを特徴とする情報処理装置。
  2. 前記選択部は、前記推測部により推測された処理負荷が第1の基準以下であり且つ該第1の基準よりも小さい第2の基準より大きいタスクについては、該タスクを生成したスレッドとは異なるスレッドが、所定の実行ポイントで該タスクを実行する実行方式を選択する
    ことを特徴とする請求項に記載の情報処理装置。
  3. 前記選択部は、前記推測部により推測された処理負荷が第2の基準以下であるタスクについては、該タスクを生成したスレッドが、該タスクが生成されたタイミングで該タスクを実行する実行方式を選択する
    ことを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記実行部は、複数のスレッドのそれぞれが複数のタスクのそれぞれを生成し、生成したタスクを所定の記憶領域に格納し、所定のタイミングで前記所定の記憶領域からタスクを取得し、取得したタスクを実行するアプリケーションを実行し、
    前記選択部は、前記所定の記憶領域に格納されたタスクの数が所定数以上である場合には、タスクを生成したスレッドが、前記所定の記憶領域に格納されたタスクの数が所定数未満となったときに、生成したタスクを前記所定の記憶領域に格納し、所定の実行ポイントで前記所定の記憶領域からタスクを取得して実行する実行方式を選択する
    ことを特徴とする請求項1〜3のいずれか1つに記載の情報処理装置。
  5. 前記推測部は、前記実行部によりタスクが実行されるたびに、該タスクの処理負荷を推測し、
    前記選択部は、前記推測部によりタスクの処理負荷が推測されるたびに、該タスクの実行方式を選択し、
    前記実行制御部は、前記実行部により前記アプリケーションが実行されている間に、前記選択部によりタスクの実行方式が選択されるたびに、選択された実行方式で前記実行部により前記同一IDのタスクが実行されるように制御する
    ことを特徴とする請求項1〜のいずれか1つに記載の情報処理装置。
  6. コンピュータに、
    タスクを有するアプリケーションを実行し、
    実行が完了したタスクの処理負荷を推測し、
    スクの処理負荷と、スクの実行方式とが対応付けられた対応情報を参照して、処理負荷が推測されたタスクの実行方式を選択し、
    実行が完了し、実行方式が選択されたタスクと同一IDのタスクが実行される場合に、選択された実行方式で該同一IDのタスクが実行されるように制御する
    各処理を実行させ
    前記コンピュータに、
    複数のスレッドのそれぞれが複数のタスクのそれぞれを生成し実行するアプリケーションを実行し、
    推測された処理負荷が第1の基準を超えたタスクについては、該タスクを生成したスレッドが、所定の実行ポイントで該タスクを実行する実行方式を選択する
    各処理をさらに実行させることを特徴とする実行プログラム。
  7. コンピュータが、
    タスクを有するアプリケーションを実行し、
    実行が完了したタスクの処理負荷を推測し、
    スクの処理負荷と、スクの実行方式とが対応付けられた対応情報を参照して、処理負荷が推測されたタスクの実行方式を選択し、
    実行が完了し、実行方式が選択されたタスクと同一IDのタスクが実行される場合に、選択された実行方式で該同一IDのタスクが実行されるように制御する
    各処理を実行し、
    前記コンピュータが、
    複数のスレッドのそれぞれが複数のタスクのそれぞれを生成し実行するアプリケーションを実行し、
    推測された処理負荷が第1の基準を超えたタスクについては、該タスクを生成したスレッドが、所定の実行ポイントで該タスクを実行する実行方式を選択する
    各処理をさらに実行することを特徴とする実行方法。
JP2012155966A 2012-07-11 2012-07-11 情報処理装置、実行プログラムおよび実行方法 Expired - Fee Related JP5949245B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012155966A JP5949245B2 (ja) 2012-07-11 2012-07-11 情報処理装置、実行プログラムおよび実行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012155966A JP5949245B2 (ja) 2012-07-11 2012-07-11 情報処理装置、実行プログラムおよび実行方法

Publications (2)

Publication Number Publication Date
JP2014016966A JP2014016966A (ja) 2014-01-30
JP5949245B2 true JP5949245B2 (ja) 2016-07-06

Family

ID=50111552

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012155966A Expired - Fee Related JP5949245B2 (ja) 2012-07-11 2012-07-11 情報処理装置、実行プログラムおよび実行方法

Country Status (1)

Country Link
JP (1) JP5949245B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6561444B2 (ja) 2014-09-24 2019-08-21 富士ゼロックス株式会社 情報処理装置、情報処理システム及びプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160650A (ja) * 1993-12-02 1995-06-23 Matsushita Electric Ind Co Ltd タスクの実行制御装置
JP2000330801A (ja) * 1999-05-21 2000-11-30 Casio Comput Co Ltd ジョブ処理装置、ジョブ処理システム及び記憶媒体
JP4211645B2 (ja) * 2004-03-16 2009-01-21 株式会社日立製作所 専用プロセッサの備わった計算機システム
JP2010072872A (ja) * 2008-09-17 2010-04-02 Ricoh Co Ltd 画像処理装置、画像処理方法、画像処理システム

Also Published As

Publication number Publication date
JP2014016966A (ja) 2014-01-30

Similar Documents

Publication Publication Date Title
US10789544B2 (en) Batching inputs to a machine learning model
Jia et al. Stargazer: Automated regression-based GPU design space exploration
JP2018533795A (ja) 計算グラフのストリームベースのアクセラレータ処理
US8756600B2 (en) Judging apparatus, method, and recording medium of program for estimating the effect of deployment of an application in a virtual machine environment
US20150025848A1 (en) Parallel processing optimization method, and information processing device
JP6369170B2 (ja) 実行時間推定装置及び方法
US9442696B1 (en) Interactive partitioning and mapping of an application across multiple heterogeneous computational devices from a co-simulation design environment
US20130231912A1 (en) Method, system, and scheduler for simulating multiple processors in parallel
Belwal et al. Determining actual response time in P-FRP
JP2022500768A (ja) 熱負荷予測方法、装置、読み取り可能な媒体及び電子機器
US20150067644A1 (en) Method and apparatus for minimum cost cycle removal from a directed graph
US9396095B2 (en) Software verification
JP2020053013A (ja) 要求処理方法及び装置
US20130144587A1 (en) Scalability evaluation device, scalability evaluation method, and scalability evaluation program
JP2009277022A (ja) 情報処理システム、負荷制御方法、および負荷制御プログラム
JP2011180725A (ja) ハイブリッド並列処理システム、方法、及びプログラム
JP5949245B2 (ja) 情報処理装置、実行プログラムおよび実行方法
US11226798B2 (en) Information processing device and information processing method
Gu et al. Analyzing execution dynamics of scientific workflows for latency minimization in resource sharing environments
US20160179572A1 (en) Method and apparatus for selecting preemption technique
KR101674324B1 (ko) 실시간 제어 응용에 적용되는 태스크 스케쥴링 장치 및 방법
JP5304972B1 (ja) 情報処理装置、情報処理方法、及びプログラム
Wu et al. Modeling the virtual machine launching overhead under fermicloud
Duttagupta et al. Predicting performance in the presence of software and hardware resource bottlenecks
Lina et al. Scheduling of elastic message passing applications on hpc systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150406

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151117

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151225

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160523

R150 Certificate of patent or registration of utility model

Ref document number: 5949245

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees