JP5556326B2 - 情報処理システム、タスク制御方法及びタスク制御プログラム - Google Patents

情報処理システム、タスク制御方法及びタスク制御プログラム Download PDF

Info

Publication number
JP5556326B2
JP5556326B2 JP2010096887A JP2010096887A JP5556326B2 JP 5556326 B2 JP5556326 B2 JP 5556326B2 JP 2010096887 A JP2010096887 A JP 2010096887A JP 2010096887 A JP2010096887 A JP 2010096887A JP 5556326 B2 JP5556326 B2 JP 5556326B2
Authority
JP
Japan
Prior art keywords
task
queue
tasks
queues
task queue
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
JP2010096887A
Other languages
English (en)
Other versions
JP2011227708A (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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2010096887A priority Critical patent/JP5556326B2/ja
Publication of JP2011227708A publication Critical patent/JP2011227708A/ja
Application granted granted Critical
Publication of JP5556326B2 publication Critical patent/JP5556326B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は情報処理システム、タスク制御方法及びタスク制御プログラムに関する。
演算量が多く、長い計算時間が必要な処理を高速に実行するための手段の一つに、並列処理がある。並列処理ではタスクと呼ばれる処理単位ごとにプロセッサに振り分けられ、それぞれのプロセッサが並列にタスクを処理する。このタスクの振り分け処理をスケジューリングといい、スケジューリング性能やアルゴリズムが並列処理効率に大きな影響を及ぼす。特に、タスクにより処理量が異なる場合には、プロセッサ毎の処理量が不均衡になりやすく、並列処理効率は低くなりがちである。並列処理効率を高めるためには、スケジューラ制御コストやリソース競合などのスケジューリングに必要なオーバヘッドを低く抑えつつ、プロセッサ毎の処理量を均等にする必要がある。
各タスクが独立に実行できる場合のスケジューリング方式の一例として、非特許文献1に記載の複数のタスクキューを使用してスケジュールする手法がある。タスクキューは実行待ちタスクが入っている待ち行列で、プロセッサはタスクキューからタスクを取り出し、そのタスクの処理を行う。そして、取り出したタスクの処理が終わると次のタスクを取り出す。このように、実行するタスクを動的に決定することで、プロセッサ毎の処理量が均等化される。しかし、タスクキューは複数のプロセッサが排他的にアクセスする必要があるため、多くのプロセッサでひとつのタスクキューを共有すると競合コストが大きい。
非特許文献1に記載の技術は、複数のタスクキューを用い、タスクキューあたりのプロセッサ数を制限することで、タスクキューへのアクセス競合コストを抑えることが出来る。しかし、全てのプロセッサでタスクキューを共有するのではないため、タスクキュー間の負荷不均衡がプロセッサ間の負荷不均衡につながり、並列処理効率に影響する。
L.M. Ni, C.-F.E. Wu, "Design Tradeoffs for Process Scheduling in Shared Memory Multiprocessor Systems," IEEE Transactions on Software Engineering, pp. 327-334, March, 1989.
非特許文献1の記載に基づいた並列処理システムは、例えば 図33に示すように、処理すべきタスクが格納されているタスク蓄積装置913と、タスクをタスクキューに割り当てるスケジューリング装置911と、実行待ちタスク行列である複数のタスクキュー981、982、・・・、98mと、タスクを並列処理する複数のプロセッサ9141、9142、9143、・・・、914nからなる並列演算装置914で構成される。ここで、m及びnは、任意の正整数である。なお、図33に記載した並列処理システム901は、本願の発明者が非特許文献1の記載に基づいて想到したものである。
タスクキュー数mはプロセッサ数n以下である。1つのタスクキューに対してそれぞれ一つまたは複数のプロセッサが接続されている。スケジューリング装置911は、タスクを追加するタスクキューを選択するキュー選択部9111と、選択されたタスクを追加(エンキュー)するエンキュー部9112からなる。非特許文献1の記載に基づいたシステムは、図34に示すように、スケジューリング装置911がタスクスケジューリングを行ってタスクをタスクキューに入れ(ステップS101)、並列演算装置914内のプロセッサ9141、9142、9143、・・・、914nは、タスクキュー981、982、・・・、98mからタスクを取り出し実行する(ステップS102)。
非特許文献1では、タスクスケジューリング時に新たなタスクを追加するタスクキューの選択法として、ランダム、サイクリック、負荷最小のタスクキューを選択の3手法について述べられている。1つめの乱数を用いてランダムにタスクキューを選択する手法と、2つめのサイクリック、つまり順番かつ循環的にタスクキューを選択する手法の場合は 図33に示す構成からなり、タスクスケジューリングは図35に示すように動作する。
まず、エンキュー部9112はタスク蓄積装置913中にタスクキューに未割り当てのタスクTがあるかを判断する(ステップS111)。未割り当てのタスクTがなければスケジューリングは終了であり、あれば、キュー選択部9111がタスクTを割り当てるタスクキューQをランダムもしくはサイクリックに選択する(ステップS112)。エンキュー部9112はタスク蓄積装置913から取り出したタスクTをタスクキューQに追加する(ステップS113)。
ここで、並列処理するアプリケーションによっては、各タスクの絶対的な処理量は不明だが、順番付けられたタスクの処理量の大小において周期的な相関があることがわかっている場合がある。例えば、後述するように、並列処理システムにおいて動画像を処理するときに、この動画像を任意の行数及び列数の複数の領域に区分して、区分したそれぞれの領域における画像処理を別々のタスクに実行させる場合である。この場合、例えば、図36に示されるようなタスク群となる。つまり、各タスクをタスク番号順に並べた場合に、各タスクの処理量が周期的に変化する場合がある。この例ではタスク番号1からタスク番号12の処理量の大小関係と似た処理量の大小関係のタスク群がタスク番号13以降も繰り返される。この一定タスク数で繰り返されるタスクの処理量の大小関係において、その繰り返されるタスク数をタスク処理量の周期とする。よって、図36のタスク群の処理量の周期は12となる。
上述した非特許文献1の記載に基づいた並列処理システム901では、タスクをランダムもしくはサイクリックにタスクキューへ割り当てるため、タスクキュー毎の負荷が分散されにくく、そのため、スケジュールされたタスクの並列処理実行時間が長くなるという課題がある。特に、複数タスクの処理量の大小において周期的な相関がある場合には、相関を考慮しない割り当て方では負荷が偏る可能性が高い。
例えば、図36に例示したタスク群をタスク番号順にサイクリックに4つのタスクキューに割り当てた場合、図37に例示するように、特定のタスクキューに負荷が偏ってしまう。つまり、タスクキューに含まれるタスクの処理量が、特定のタスクキューに偏ってしまう。ここで、図37に示される各タスクキュー内の番号は、タスク番号を示す。つまり、タスクキュー1には、タスク番号1、5、9、13、17、21のタスク番号が格納されている。図37は、タスクの処理量の大きさに比例して、各タスクの幅が広くなるように図示されている。
3つめのタスクの追加時に負荷最小のタスクキューを選択する場合の構成は 図38に示すように、スケジューリング時に各タスクキューの負荷を測定する負荷取得部9112が追加され、キュー選択部9111と接続される。なお、図38に記載した並列処理システム902も、本願の発明者が非特許文献1の記載に基づいて想到したものである。
この場合のタスクスケジューリングの動作は、 図39に示すように、未割り当てのタスクTがあれば(ステップS111)、負荷取得部9112が各タスクキューの負荷を測定し(ステップS121)、キュー選択部9111が負荷最小のタスクキューQを選択する(ステップS122)。エンキュー部112はタスク蓄積装置913から取り出したタスクTをタスクキューQに追加する(ステップS113)。
図33、 図35に示された、タスクをランダムもしくはサイクリックにタスクキューに割り当てる場合には、タスクの情報を必要とせず単純かつ低コストにタスクキューを選択することができる一方、タスクの処理量を考慮しないため、タスクキューの負荷が偏る可能性がある。しかし、図38、図39に示された負荷最小のタスクキューにタスクを追加する場合は、タスクキューの負荷を分散させることができるが、タスク実行前に各タスクの処理量が既知である必要があり、また、各タスクキューの負荷を調査し最小値を計算するオーバヘッドが発生するという課題がある。
以上に説明したように、タスクの処理量に周期的な相関があるタスク群をスケジューリングすると、非特許文献1の記載に基づいたシステムでは、タスクキューの負荷が偏るか、もしくは、スケジューリングオーバヘッドが大きくなるかとなり、並列処理効率が悪い。
本発明の目的は、上述したような課題を解決するために、タスクのスケジューリングにおけるオーバヘッドを低減しつつ、タスクキュー毎の負荷を分散することのできる情報処理システム、タスク制御方法及びタスク制御プログラムを提供することにある。
本発明の第1の態様にかかる情報処理システムは、複数タスクの処理量の大小における周期に基づいて、プロセッサ毎のタスクの処理量の総計を分散させるものである。
本発明の第2の態様にかかるタスク制御方法は、複数タスクの処理量の大小における周期に基づいて、プロセッサ毎のタスクの処理量の総計を分散させるものである。
本発明の第3の態様にかかるタスク制御プログラムは、複数タスクの処理量の大小における周期に基づいて、プロセッサ毎のタスクの処理量の総計を分散させるものである。
本発明の上述した各態様によれば、上述したような課題を解決するために、タスクのスケジューリングにおけるオーバヘッドを低減しつつ、タスクキュー毎の負荷を分散することのできる情報処理システム、タスク制御方法及びタスク制御プログラムを提供することができる。
本発明の第1の実施の形態にかかる情報処理システムの構成図である。 本発明の第1の実施の形態にかかる並列処理システムの構成図である。 本発明の第1の実施の形態にかかる並列処理システムのタスクスケジューリングの動作例を示すフローチャートである。 本発明の第1の実施の形態におけるタスク番号と対応するキュー番号の例である。 本発明の第1の実施の形態によるスケジュール結果の例である。 本発明の第2の実施の形態にかかる情報処理システムの構成図である。 本発明の第2の実施の形態にかかる並列処理システムの構成図である。 本発明の第2の実施の形態にかかる並列処理システムのタスクスケジューリングの動作例を示すフローチャートである。 本発明の第2の実施例によるスケジュール結果の例である。 本発明の第3の実施の形態にかかる並列処理システムの構成図である。 本発明の第3の実施の形態にかかる並列処理システムのタスクスケジューリングの動作例を示すフローチャートである。 本発明の第4の実施の形態にかかる並列処理システムの構成図である。 本発明の第4の実施の形態にかかる並列処理システムのタスクスケジューリングの動作例を示すフローチャートである。 本発明の第5の実施の形態にかかる情報処理システムの構成図である。 本発明の第5の実施の形態にかかる並列処理システムの構成図である。 本発明の第5の実施の形態にかかる並列処理システムのタスクスケジューリングの動作例を示すフローチャートである。 本発明の第5の実施例によるスケジュール結果の例である。 本発明の第6の実施の形態にかかる情報処理システムの構成図である。 本発明の第6の実施の形態にかかる並列処理システムの構成図である。 本発明の第6の実施の形態にかかる並列処理システムのタスクスケジューリングの動作例を示すフローチャートである。 本発明の第6の実施の形態におけるタスク番号と対応するキュー番号の例である。 本発明の第6の実施の形態によるスケジュール結果の例である。 他の実施の形態にかかる並列処理システムの構成図である。 他の実施の形態にかかる並列処理システムの構成図である。 背景と同物体からなる画像の例である。 背景と同物体の動きの大きさの例である。 タスクとその処理量の例である。 本発明の第2の実施の形態と第1の実施例の対応を示す表である。 実施例にかかる並列処理システムの構成図である。 実施例にかかる並列処理システムのタスクスケジューリングの動作例を示すフローチャートである。 実施例における動作例を示す図である。 実施例におけるスレッドブロック(プロセッサ)ごとの処理量の偏りを表したグラフである。 非特許文献1の記載に基づいた並列処理システムの1つ目の構成例を示す構成図である。 並列処理システムの動作例を示すフローチャートである。 非特許文献1の記載に基づいた並列処理システムのタスクスケジューリングの1つ目の動作例を示すフローチャートである。 スケジュールするタスクの例である。 非特許文献1の記載に基づいた並列処理システムによるスケジュール結果の例である。 非特許文献1の記載に基づいた並列処理システムの2つ目の構成例を示す構成図である。 非特許文献1の記載に基づいた並列処理システムのタスクスケジューリングの2つ目の動作例を示すフローチャートである。
[第1の実施の形態]
まず、図1を参照して、本発明の第1の実施の形態にかかる並列処理システムの概要となる情報処理システムについて説明する。図1は、本発明の第1の実施の形態にかかる情報処理システムの構成図である。
情報処理システム1001は、タスクキュー81、82、・・・、8m、タスク蓄積部1013、タスクキュー選択部1111及びエンキュー部1112を有する。
タスクキュー81〜8mは、タスクを格納する。なお、mは、任意の正整数である。
タスク蓄積部1013は、それぞれの処理量が周期的に変化する複数のタスクを格納する。
タスクキュー選択部1111は、複数のタスクのそれぞれの処理量が周期的に変化する場合に、同一の1周期に含まれるタスクが同一のタスクキューに格納されるように、タスクを格納するタスクキューを複数のタスクキュー81〜8mから選択する。
エンキュー部1112は、タスクを、そのタスクを格納するタスクキューとしてタスクキュー選択部1111が選択したタスクキューに格納する。
続いて、本発明の第1の実施の形態にかかる情報処理システムの動作について説明する。
タスクキュー選択部1111は、複数のタスクのそれぞれの処理量が周期的に変化する場合に、同一の1周期に含まれるタスクが同一のタスクキューに格納されるように、タスクを格納するタスクキューを複数のタスクキュー81〜8mから選択する。
エンキュー部1112は、タスク蓄積部1013に格納されるタスクをタスクキューに格納する場合に、そのタスクを格納するタスクキューとしてタスクキュー選択部1111が選択したタスクキューに格納する。
続いて、本発明の第1の実施の形態にかかる並列処理システムについて説明する。図2は本発明の第1の実施の形態にかかる並列処理システムを示す構成図である。
図2に示されるように、本発明の第1の実施の形態における並列処理システム1は、スケジューリング装置11、タスク処理量周期取得部12、タスク蓄積装置13と、並列演算装置14と、複数のタスクキュー81、82、・・・、8mを有する。並列演算装置14は、複数のプロセッサ141、142、143、・・・、14nを含む。スケジューリング装置11はキュー選択部111とエンキュー部112を含む。キュー選択部111とエンキュー部112は、相互に接続されている。なお、n及びmは、任意の正整数である。
スケジューリング装置11は、タスク蓄積装置13に格納されるタスクをスケジューリングする。
タスク処理量周期取得部12は、タスク蓄積装置13内のタスクから、タスク処理量周期を取得しキュー選択部111にタスク処理量周期を出力する。例えば、1周期における最初又は最後のタスクに、最初又は最後のタスクであることを示す情報を含めることによって、タスク処理量周期取得部12がタスク処理量周期を判断して取得可能とする。また、例えば、任意の記憶装置にタスク処理量周期を示す情報を格納しておき、タスク処理量周期取得12がこの情報を参照することでタスク処理量周期を取得できるようにしてもよい。なお、任意の記憶装置は、タスク蓄積装置13であってもよく、タスク蓄積装置13以外のメモリやハードディスク等の記憶装置であってもよい。
ここで、タスク処理量周期とは、一定タスク数で繰り返されるタスクの処理量の大小関係において、その繰り返されるタスク数である。つまり、タスク処理量周期取得部12は、タスク蓄積装置13に格納される複数のタスクの処理量の周期を、1周期に含まれるタスクのタスク数として取得する。ここで、タスクの処理量周期は、例えば、ユーザ入力など外部からの入力によって取得しても良い。具体的には、マウスやキーボード等の入力装置を情報処理システム1に備えるようにして、この入力装置によってユーザから入力されたタスク処理量周期を、タスク処理量周期取得部12が参照する任意の記憶装置に格納するようにする。
タスク蓄積装置13は、それぞれの処理量が周期的に変化する複数のタスクが格納される。タスク蓄積装置13は、例えば、メモリやハードディスク等の記憶装置である。タスク蓄積装置13は、例えば、図36に例示するように、それぞれの処理量がタスク番号順に周期的に変化する複数のタスクを格納する。タスク番号とは、例えば、タスクが生成された順に、各タスクに割り当てられる番号である。また、タスクは、タスク蓄積装置13に蓄積せずとも、タスクを生成する他の機器などから直接個々に取得しても良い。
並列演算装置14は、タスクキュー81〜8mに格納されたタスクを実行する。
タスクキュー81〜8mは、プロセッサ141〜14nによって実行されるタスクが格納される。
キュー選択部111は、タスク処理量周期取得部12から入力された処理量周期から推測できるタスクの処理量が、タスクキュー毎に分散されるように、例えば、同一周期のタスクを同一キューに追加するようにタスクキューを選択し、選択されたタスクキューを示す情報をエンキュー部112に出力する。
エンキュー部112は、キュー選択部111から出力された情報に基づいて、キュー選択部111によって選択されたタスクキューにタスク蓄積装置13から入力されたタスクを追加する。
プロセッサ141〜14nは、それぞれタスクキュー81〜8mのいずれかと対応付けられる。プロセッサ141〜14nは、自身と対応づけられたタスクキュー81〜8mからタスクを取得して実行する。図2では、タスクキュー71とプロセッサ141、142が対応付けられ、タスクキュー72とプロセッサ143が対応付けられ、タスクキュー7mとプロセッサ14nが対応付けられている場合について例示している。
次に、 図3のフローチャートを参照して本実施の形態のタスクスケジューリングの動作について詳細に説明する。
タスク処理量周期取得部12はタスク蓄積装置13からタスク処理量周期を取得し、取得したタスク処理量周期をキュー選択部111に出力する(ステップS1)。エンキュー部112は、タスク蓄積装置13にタスクキューに未割り当てのタスクTがあるかを判断する(ステップS2)。言い換えると、タスクキューに未格納のタスクTがあるか否かを判断する。エンキュー部112は、例えば、タスク番号順に未割り当てのタスクTがあるか否かを判断する。エンキュー部112は、未割り当てのタスクTがあった場合、タスク蓄積装置13からタスクTを取得する。
ここで、例えば、タスク蓄積装置13にタスクキューに未割り当てのタスクを格納するようにしている場合、エンキュー部111は、タスク蓄積装置13にタスクが格納されているか否かを判断する。また、例えば、全てのタスクのそれぞれについて、タスクがタスクキューに割り当てられているか否かを示す情報をタスク蓄積装置13に格納している場合は、エンキュー部111は、その情報を参照して判断する。
キュー選択部111は、エンキュー部112によって未割り当てのタスクTがあると判断された場合、タスク処理量周期取得12から入力されたタスク処理量周期を考慮してキュー毎の処理量が偏らないキューQを選択する(ステップS3)。ステップS3において、キュー選択部111は、例えば、同一周期のタスクを同一タスクキューに追加するように、つまりタスクTが一つ前のタスクと異なる周期になるまでは同じタスクキューを選択し続ける。
具体的には、エンキュー部112は、未割り当てのタスクTのタスク番号をキュー選択部111に出力する。キュー選択部111は、エンキュー部112から出力されたタスクTのタスク番号が同一の1周期に含まれ続けている間は、同一のタスクキューを選択し続ける。つまり、図36に例示するように、タスク処理量周期が12である場合、エンキュー部112から出力されるタスク番号が1〜12までの間は、同一のタスクキューを選択し続ける。そして、キュー選択部111は、選択したタスクキューQを示す情報をエンキュー部112に出力する。
エンキュー部112は、タスクTをキュー選択部111により選択されたタスクキューQに追加する(ステップS4)。具体的には、エンキュー部112は、キュー選択部111から出力された情報が示すタスクキューQにタスクTを格納する。キュー選択部111及びエンキュー部112は、ステップS2からステップS4をタスク蓄積装置13に未割り当てのタスクがなくなるまで実行する。
次に、本実施の形態の効果について説明する。本実施の形態では、タスク処理量周期情報を用いて新たなタスクを追加するタスクキューを決定する。これにより、各タスクの処理量がわからずとも、タスク処理量周期を考慮しない場合に比べて負荷が分散される。また、負荷分散を行った結果、全タスクの並列処理時間を短縮することができる。
例えば、図36に示された周期的に処理量の大小に相関のあるタスクをスケジュールする場合、非特許文献1に基づいた並列処理システム901のように、タスク処理量周期を考慮せずにタスクを追加するタスクキューをサイクリックに決定すると、図37に示すようにタスクキュー毎のタスクの処理量の合計が大きく異なり、偏りが大きい。なお、図37は、各タスクキューに、図36に示す複数のタスクがタスク番号1のタスクからタスク番号順にタスクキューに追加された場合について例示している。
これに対して、本実施の形態によりタスクの処理量周期を考慮して図36に示されるタスクをスケジュールすると、タスクキュー毎のタスク処理量の偏りを小さくすることができる。例えば、前記で述べたように、 図4に示すようにタスクの周期ごとに選択するタスクキューを変えることで、スケジューリング結果は図5に示すようにひとつのタスクキューに処理量の多いタスクが集中することがなくなり、タスクキュー毎の負荷が分散できる。
キュー選択部111は、例えば、図5に示すように、1周期毎にサイクリックにタスクキューを選択する。また、キュー選択部111によるタスクキューの選択方法は、1周期毎に規則的にタスクキューを選択する方法であれば、サイクリックに選択する方法に限られない。例えば、図5のように4つのタスクキューがある場合において、1周期毎にタスクキュー1、3、2、4、1、3、・・・の順にタスクキューを選択するようにしても、各タスクキューにおける負荷を分散することができる。
また、本実施の形態によれば、タスクをタスクキューに追加する場合に、負荷が最小となっているタスクキューを調査することなく、タスクキューの負荷を分散することができる。したがって、タスクキューの負荷を計算するオーバヘッドを発生させることがない。
[第2の実施の形態]
まず、図6を参照して、本発明の第2の実施の形態にかかる並列処理システムの概要となる情報処理システムについて説明する。図6は、本発明の第2の実施の形態にかかる情報処理システムの構成図である。
情報処理システム1002は、タスクキュー81、82、・・・、8m、タスク蓄積部1013、タスクキュー数決定部1021、エンキュー部1112及びタスクキュー選択部1221を有する。なお、mは、タスクキュー数決定部1021によって決定される任意の正整数である。
タスクキュー81〜8mは、タスクを格納する。
タスク蓄積部1013は、それぞれの処理量が周期的に変化する複数のタスクを格納する。
タスクキュー数決定部1021は、複数のタスクをそれぞれの処理量が周期的に変化する場合に、1周期に含まれるタスク数の約数及び倍数とは異なる数となるように複数のタスクキュー81〜8mのタスクキュー数を決定する。
エンキュー部1112は、タスクを、そのタスクを格納するタスクキューとしてタスクキュー選択部1111が選択したタスクキューに格納する。
タスクキュー選択部1221は、タスクを格納するタスクキューを複数のタスクキュー81〜8mから規則的に選択する。
続いて、本発明の第2の実施の形態にかかる情報処理システムの動作について説明する。
タスクキュー数決定部1021は、複数のタスクをそれぞれの処理量が周期的に変化する場合に、1周期に含まれるタスク数の約数及び倍数とは異なる数となるように複数のタスクキュー81〜8mのタスクキュー数を決定する。
タスクキュー選択部1221は、タスクを格納するタスクキューを複数のタスクキュー81〜8mから規則的に選択する。
エンキュー部1112は、タスク蓄積部1013に格納されるタスクを、そのタスクを格納するタスクキューとしてタスクキュー選択部1221が選択したタスクキューに格納する。
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。図7に示されるように、本発明の第2の実施の形態における並列処理システム2は、タスク処理量周期取得部12と、タスク蓄積装置13と、並列演算装置14と、キュー数決定部21と、スケジューリング装置22と、複数のタスクキュー81、82、・・・、8mを有する。スケジューリング装置22は、キュー選択部221と、エンキュー部112を含む。タスクキュー数mは可変であり、キュー数決定部21によって決められる。第1の実施の形態と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。
キュー数決定部21は、タスク処理量周期取得部12が出力したタスク処理量周期を入力とし、タスク処理量周期の約数や倍数と異なるタスクキュー数mを決定する。例えば、 図36に示すようにタスク処理量周期が12であれば、タスクキュー数mは約数でも倍数でもでない例えば5と設定する。
スケジューリング装置22は、タスク蓄積装置13に格納されるタスクを規則的にスケジューリングする。
キュー選択部221は、タスクを割り当てるタスクキューを規則的に選択する。キュー選択部221は、例えば、タスクキュー数mが5の場合、次のタスクを割り当てるタスクキューを81、82、83、84、85、81・・・のようにサイクリックに決定する。キュー選択部221は、例えば、タスク番号順にサイクリックにタスクを割り当てるタスクキューを選択する。また、キュー選択部221は、タスク毎に、選択したタスクキューを示す情報をエンキュー部112に出力する。
図8は、本発明の第2の実施の形態における並列処理システム2のタスクスケジューリングの動作の一例を示すフローチャートである。
まず、タスク処理量周期取得部12はタスク蓄積装置13からタスクの処理量周期を取得し、キュー数決定部21に出力する(ステップS11)。キュー数決定部21はタスクの処理量周期からタスクの処理量周期の約数や倍数と異なるタスクキュー数mを決定する(ステップS12)。エンキュー部112は、未割り当てのタスクTがあるかを判断する(ステップS3)。エンキュー部112によって未割り当てのタスクTがあると判断された場合、キュー選択部221は、タスクキューをサイクリックに選択する(ステップS13)。エンキュー部112は、タスクTを選択されたタスクキューに追加する(ステップS4)。
次に、本実施の形態の効果について説明する。本実施の形態では、タスクキュー数を、タスク処理量周期の約数や倍数と異なる数にすることにより、タスクを追加するタスクキューはサイクリックに選択するだけで、タスクキューに入っているタスクと新たにタスクキューに入れるタスクの位相を違えることができる。これにより、スケジュール時にタスクの周期や位相を考慮することなく負荷分散を行うことができる。スケジュール時にタスクの位相を考慮してタスク割り当てタスクキューを決定する必要がないため、スケジュールオーバヘッドを削減することができる。
例えば、図36のようにタスク処理量周期が12である場合に、タスクキュー数mを12の約数である4としてサイクリックにタスクキューを選択すると図37に示すようにタスクキュー毎の処理量が偏るが、タスクキュー数mを 図9に示すように12の約数でも倍数でもではない5とするとサイクリックにタスクキューを選択してもタスクキュー毎の処理量の偏りは小さくなる。つまり、タスクキュー毎の負荷を分散することができる。
また、タスクキューの選択は、サイクリックではなくとも規則的であれば、同様にキュー毎の負荷を分散することができる。例えば、タスクキュー数mが5の場合、タスクを割り当てるタスクキューを81、83、85、82、84、81、83・・・の順に規則的に選択するようにしてもよい。
また、本実施の形態によれば、タスクをタスクキューに追加する場合に、負荷が最小となっているタスクキューを調査することなく、タスクキューの負荷を分散することができる。したがって、タスクキューの負荷を計算するオーバヘッドを発生させることがない。
[第3の実施の形態]
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。図10に示されるように本発明の第3の実施の形態における並列処理システム3は、タスク処理量周期取得部12と、タスク蓄積装置13と、並列演算装置14と、スケジューリング装置22と、キュー数決定部31と、プロセッサ数取得部33と、複数のタスクキュー81、82、・・・、8mを有する。なお、第2の実施の形態と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。
第3の実施の形態では、キュー数決定部31は、タスク処理量周期取得部12から得られるタスク処理量周期に加えて、プロセッサ数取得部33からプロセッサ数が入力されることが第2の実施の形態との違いである。キュー数決定部31は、タスクの周期の約数や倍数と異なり、かつ、プロセッサ数の約数又は倍数と、同一又は近い数を優先してタスクキュー数mとする。例えば、図36に示すようにタスク処理量周期が12であり、また、プロセッサ数が8であれば、タスクキュー数mは、タスク処理量周期12の約数でも倍数でもなく、プロセッサ数8の約数に近い、例えば5と設定する。
プロセッサ数取得部33は、プロセッサ数を取得して、取得したプロセッサ数をキュー数決定部31に出力する。ここで、任意の記憶装置にプロセッサ数を示す情報を格納しておき、プロセッサ数取得部33がこの情報を参照することで、プロセッサ数を取得できるようにしてもよい。また、入力装置を情報処理システム1に備えるようにして、この入力装置によってユーザから入力されたプロセッサ数を、プロセッサ数取得部33が参照する任意の記憶装置に格納するようにしてもよい。
図11は、本発明を実施するための第3の実施の形態における並列処理システム3のタスクスケジューリングの動作の一例を示すフローチャートである。
タスク処理量周期取得部12はタスクの処理量周期を取得し(ステップS11)、取得したタスク処理量周期をキュー数決定部31に出力する。プロセッサ数取得部33はプロセッサ数を取得し(ステップS21)、取得したプロセッサ数をキュー数決定部31に出力する。キュー数決定部31は、タスクの周期の約数や倍数と異なり、かつプロセッサ数の約数と同一又は近いタスクキュー数を決定する(ステップS22)。他のステップは第2の実施の形態と同様であるため、説明を省略する。
次に、本実施の形態の効果について説明する。本実施の形態では、タスク処理量周期の約数や倍数と異なり、かつプロセッサ数の約数又は倍数と、同一又は近い数にタスクキュー数を決定し、タスクを追加するタスクキューをサイクリックに選択する。これにより、スケジュール時にタスクの位相を考慮することなくタスクキューとタスクの位相を違えることができ、かつ、1つのタスクキューを共有するプロセッサ数を均等化することができるため、タスクキュー間の負荷分散を行うことができる上に、プロセッサの性能が全て同等であればプロセッサ間の負荷分散も可能になる。
[第4の実施の形態]
次に、本発明の第4の発明を実施するための最良の形態について図面を参照して詳細に説明する。図12に示されるように本発明の第4の実施の形態における並列処理システム4は、タスク処理量周期取得部12と、タスク蓄積装置13と、並列演算装置14と、プロセッサ数取得部33と、スケジューリング装置22と、キュー数決定部41と、タスク数取得部44と、複数のタスクキュー81、82、・・・、8mを有する。なお、第3の実施の形態と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。
第4の実施の形態では、キュー数決定部41は、タスク処理量周期取得部12から入力されるタスク処理量周期とプロセッサ数取得部33から入力されるプロセッサ数に加えて、タスク数取得部44からタスク数が入力されることが第3の実施の形態との違いである。キュー数決定部41は、タスクの処理量周期の約数や倍数と異なり、プロセッサ数の約数又は倍数と、同一又は近く、さらにタスク数の約数と同一又は近い数を優先してタスクキュー数mとする。
タスク数取得部44は、タスク蓄積装置13に格納されるタスクを参照することによって、タスク蓄積装置13に格納されているタスクのタスク数を取得する。タスク数取得部44は、取得したタスク数をキュー数決定部に出力する。
図13は、本発明を実施するための第4の実施の形態における並列処理システム4のタスクスケジューリングの動作の一例を示すフローチャートである。
タスク処理量周期取得部12はタスクの処理量周期を取得し(ステップS11)、取得したタスク処理量周期をキュー決定部41に出力する。プロセッサ数取得部33はプロセッサ数を取得し(ステップS21)、取得したプロセッサ数をキュー決定部41に出力する。タスク数取得部44はタスク数を取得し(ステップS31)、取得したタスク数をキュー数決定部41に出力する。キュー数決定部41は、タスクの周期の約数や倍数と異なり、プロセッサ数の約数又は倍数と、同一又は近く、さらにタスク数の約数と同一又は近いキュー数mを決定する(ステップS32)。他のステップは第3の実施の形態と同様であるため、説明を省略する。
次に、本実施の形態の効果について説明する。本実施の形態では、タスク処理量周期と異なり、プロセッサ数の約数に近く、タスク数の約数に近い数にタスクキュー数を決定し、タスクを追加するタスクキューをサイクリックに選択する。これにより、スケジュール時にタスクの位相を考慮することなくタスクキューとタスクの位相を違えることができ、かつ、1つのタスクキューを共有するプロセッサ数を均等化することができる上に、タスクキューあたりのタスク数も均等化できるため、第3の実施の形態の効果に加えて、よりタスクキュー毎の処理量が分散できる。
[第5の実施の形態]
まず、図14を参照して、本発明の第5の実施の形態にかかる並列処理システムの概要となる情報処理システムについて説明する。図14は、本発明の第5の実施の形態にかかる情報処理システムの構成図である。
情報処理システム1005は、タスクキュー81、82、・・・、8m、タスク蓄積部1013、エンキュー部1112、タスクキュー履歴記憶部1053及びタスクキュー選択部1521を有する。なお、mは、任意の正整数である。
タスクキュー81〜8mは、それぞれの処理量が周期的に変化する複数のタスクを格納する。
タスク蓄積部1013は、タスクを格納する。
エンキュー部1112は、タスク蓄積部1013に格納されるタスクを、そのタスクを格納するタスクキューとしてタスクキュー選択部1521が選択したタスクキューに格納する。
タスクキュー履歴記憶部1053は、複数のタスクキューのそれぞれについて、これらのタスクキューが格納先として選択されたタスクの位相の履歴を示すタスクキュー履歴情報を格納する。
タスクキュー選択部1521は、タスクを格納するタスクキューを複数のタスクキュー81〜8mから選択する。タスクキュー選択部1521は、タスクを格納するタスクキューを選択する場合に、タスクキュー履歴記憶部1053に格納されたタスクキュー履歴情報に基づいて、格納先のタスクキューを選択するタスクと同一位相のタスクが格納先として選択された回数が少ないタスクキューを優先的に選択する。また、タスクキュー選択部1521は、タスクキューの選択結果に基づいて、タスクキュー履歴記憶部1053に格納される履歴情報を更新する。
続いて、本発明の第5の実施の形態にかかる情報処理システムの動作について説明する。
タスクキュー選択部1521は、タスクキュー履歴記憶部1053に格納されたタスクキュー履歴情報に基づいて、格納先のタスクキューを選択するタスクと同一位相のタスクが格納先として選択された回数が少ないタスクキューを優先的に選択する。そして、タスクキュー選択部1521は、タスクキューの選択結果に基づいて、タスクキュー履歴記憶部1053に格納される履歴情報を更新する。
エンキュー部1112は、タスク蓄積部1013に格納されるタスクを、そのタスクを格納するタスクキューとしてタスクキュー選択部1521が選択したタスクキューに格納する。
次に、本発明の第5の実施の形態について図面を参照して詳細に説明する。図15に示されるように本発明の第5の実施の形態における並列処理システム5は、タスク処理量周期取得部12と、タスク蓄積装置13と、並列演算装置14と、タスク処理量位相算出部51と、スケジューリング装置52と、選択キュー記憶装置53と、複数のタスクキュー81、82、・・・、8mを有する。スケジューリング装置52は、キュー選択部521と、エンキュー部112を含む。なお、mは、任意の正整数である。なお、第1の実施の形態と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。
第5の実施の形態におけるキュー選択部521は、キュー選択部521と接続された選択キュー記憶装置53に記憶された選択キュー履歴情報を用いて選択するタスクキューを決定することが第1の実施の形態との違いである。
タスク処理量位相算出部51は、タスク処理量周期取得部12から入力されたタスク処理量周期に基づいて、タスクキューに追加するタスクのタスク処理量位相を算出し、キュー選択部521に出力する。
選択キュー記憶装置53は、タスクのタスク処理量位相と、そのタスクの格納先として選択されたタスクキューとの組み合わせを示す情報を格納する。つまり、選択キュー記憶装置53に格納される情報は、タスクキュー81〜8mのそれぞれについて、タスクキューを格納先として選択したタスクの位相の履歴を示す選択キュー履歴情報となる。
キュー選択部521は、タスク処理量周期取得部12から入力されたタスク処理量周期と、タスク処理量位相算出部51から入力されたタスク処理量位相と、選択キュー記憶装置53から入力された選択キュー履歴情報を考慮しながら、タスクキューを選択する。
図16は、本発明を実施するための第5の実施の形態における並列処理システム5のタスクスケジューリングの動作の一例を示すフローチャートである。
まず、タスク処理量周期取得部12はタスク蓄積装置13からタスクの処理量周期を取得し(ステップS41)、取得したタスク処理量周期をタスク処理量位相算出部51に出力する(ステップS41)。エンキュー部112は、未割り当てのタスクTがあるかを判断する(ステップS3)。エンキュー部112によって未割り当てのタスクTがあると判断された場合、タスク処理量位相算出部51はタスク処理量周期取得部12から出力されたタスク処理量周期に基づいて、タスクTのタスク処理量位相を算出する(ステップS42)。タスク処理量算出部51は、算出したタスク処理量位相をキュー選択部521に出力する。
具体的には、キュー選択部521は、タスクTを割り当てるタスクキューを選択するときに、タスクTのタスク番号をタスク処理量位相算出部51に出力する。タスク処理量位相算出部51は、タスク処理量周期と、キュー選択部521から出力されたタスク番号に基づいて、タスク処理量位相を算出する。タスク処理量位相は、1周期におけるタスクの位置を示す情報である。例えば、図36に例示するようなタスクの場合、タスク処理量周期が12であるため、タスク処理量位相は1〜12で表される。例えば、タスク番号が14のタスクは、タスク処理量位相は2となる。タスク処理量位相算出部51は、算出したタスクTのタスク処理量位相をキュー選択部521に出力する。
キュー選択部521は、選択キュー記憶装置53を参照し、次にタスクキューを割り当てるタスクTと同位相のタスクが少ないタスクキューを選択する(ステップS43)。具体的には、タスク処理量位相算出部51から出力されたタスクTのタスク処理量位相と、同一位相のタスクが格納先として選択された回数が少ないタスクキューを優先的に選択する。よって、選択キュー記憶装置53に格納される情報は、どの位相のタスクがどのタスクキューに何回格納されたかが分かる情報であれば、上述した情報に限られない。例えば、タスクキュー81〜8mのそれぞれについて、タスクキューを格納先として選択したタスクの位相を、位相毎にカウントした情報であってもよい。
ステップS43は、例えば、 図36に示されるタスクを図17に示すように4つのタスクキューにスケジュールする場合、1周期目のタスク1乃至12を追加するタスクキューをサイクリックに選択すると、2周期目のタスク13を追加するタスクキューとして、同位相のタスクがすでに入っているタスクキュー1を避け、同位相のタスクが入っていないタスクキュー2を選択する。ここで、タスクキューの選択方法は、タスクTと同一位相のタスクが格納先として選択された回数が少ないタスクキューを選択する方法であれば、これに限られない。つまり、1周期の最初のタスク以外のタスクについても、そのタスクと同位相のタスクが選択された回数が少ないタスクキューを選択するようにしてもよい。例えば、図17に示すように4つのタスクキュー1〜4がある場合に、1周期目のタスク2を追加するタスクキューとしてタスクキュー2を選択したときは、2週目のタスク14は、タスクキュー1、3、4のいずれかから選択するようにしてもよい。
そして、エンキュー部112は、キュー選択部521によって選択されたタスクキューにタスクを追加する(ステップS4)。キュー選択部112は、タスクTの位相とタスクキューQの組み合わせを、選択キュー記憶装置53に保存する(ステップ44)。
次に、本実施の形態の効果について説明する。本実施の形態では、タスクキューへ追加されたタスクの位相の履歴をもとに新たなタスクを割り当てるタスクキューを決定するので、容易にタスクキュー毎の負荷分散が行える。本実施の形態によりスケジューリングされた 図36のタスクの例を図17に示す。また、本実施の形態では、選択キュー履歴情報により、同様の処理量となる同位相のタスクが特定のタスクキューに偏らないようにすることができる。そのため、タスクキュー毎の負荷を分散することができる。
また、非特許文献1に基づいた並列処理システム922のようにタスクキューの負荷(処理量)を計測しながらタスクキューを選択するのではないため、タスクキューを選択するコストも小さく、また各タスクの処理量がわからずともタスクキュー毎の負荷分散を行うことができる。つまり、タスクキューの負荷を計算するオーバヘッドを発生させることがない。
[第6の実施の形態]
まず、図18を参照して、本発明の第6の実施の形態にかかる並列処理システムの概要となる情報処理システムについて説明する。図18は、本発明の第6の実施の形態にかかる情報処理システムの構成図である。
情報処理システム1006は、タスクキュー81、82、・・・、8m、タスク蓄積部1013、エンキュー部1112及びタスクキュー選択部1621を有する。なお、mは、任意の正整数である。
タスクキュー81〜8mは、それぞれの処理量が周期的に変化する複数のタスクを格納する。
タスク蓄積部1013は、タスクを格納する。
エンキュー部1112は、タスク蓄積部1013に格納されるタスクを、そのタスクを格納するタスクキューとしてタスクキュー選択部1621が選択したタスクキューに格納する。
タスクキュー選択部1621は、タスクを格納するタスクキューを複数のタスクキュー81〜8mから規則的に選択する。タスクキュー選択部1621は、複数のタスクのそれぞれの処理量が周期的に変化する場合に、1周期における最初のタスクを格納するタスクキューとして、その1周期の前の1周期における最初のタスクとは異なるタスクキューを選択する。
続いて、本発明の第6の実施の形態にかかる情報処理システムの動作について説明する。
タスクキュー選択部1621は、タスクを格納するタスクキューを複数のタスクキュー81〜8mから規則的に選択する。このとき、タスクキュー選択部1621は、格納先のタスクキューを選択するタスクが、1周期における最初のタスクを格納するタスクキューとして、当該1周期の前の1周期における最初のタスクとは異なるタスクキューを選択する。
エンキュー部1112は、タスク蓄積部1013に格納されるタスクを、そのタスクを格納するタスクキューとしてタスクキュー選択部1621が選択したタスクキューに格納する。
次に、本発明の第6の実施の形態について図面を参照して詳細に説明する。本発明を実施するための第6の実施の形態における並列処理システム6の構成を図19に示す。並列処理システム6は、タスク処理量周期取得部12と、タスク蓄積装置13と、並列演算装置14と、スケジューリング装置62と、タスクキュー81〜8mを有する。スケジューリング装置62は、エンキュー部112と、キュー選択部621を含む。なお、mは、任意の正整数である。なお、第1の実施の形態と同様の構成要素については、同一の符号を付し、詳細な説明を省略する。
第6の実施の形態におけるキュー選択部621は、タスク処理量周期取得部12から得られるタスクの処理量周期が入力される。キュー選択部621は、タスク処理量周期取得部12から入力されたタスク処理量周期をタスクキューの選択に使用する。キュー選択部621は、タスクを割り当てるタスクキューを規則的に選択する。また、キュー選択部621は、1周期における最初のタスクを割り当てるタスクキューを選択する場合、その1周期の前の1周期における最初のタスクとは異なるタスクキューを選択する。
図20は、本発明を実施するための第6の実施の形態における並列処理システム6のタスクスケジューリングの動作の一例を示すフローチャートである。
まず、タスク処理量周期取得部12はタスク処理量周期をタスク蓄積装置13から取得する(ステップS1)。タスク処理量周期取得部12は、取得したタスク処理量周期をキュー選択部621に出力する。キュー選択部621は変数sを−1に、iを0に初期化する(ステップS51)。エンキュー部112は、未割り当てのタスクTがあるかを判断する(ステップS3)。
エンキュー部112が未割り当てのタスクTがあると判断(ステップS3)したら、キュー選択部621はタスク処理量周期取得部12より入力されたタスク処理量周期からタスクTが周期の開始かを判断する(ステップS52)。具体的には、エンキュー部112は、未割り当てのタスクTのタスク番号をキュー選択部111に出力する。キュー選択部621は、エンキュー部112から出力されたタスクTのタスク番号が1周期における最初のタスクか否かを判断する。つまり、図36に例示するように、タスク処理量周期が12である場合、エンキュー部112から出力されるタスク番号が1、13、25、・・・等であるか否かを判断する。
タスクTが周期の開始タスクであれば、変数sをインクリメントし、変数iを0にする(ステップS53)。開始タスクでなければ変数iをインクリメントする(ステップS54)。そして、[(s+i)をタスクキュー数で割った余り+1]番目のタスクキューQを選択する(ステップS55)。エンキュー部112はタスクキューQにタスクTを追加する(ステップS4)。つまり本実施の形態では、 図21に示すように、毎周期ごとに周期開始のタスクを割り当てるタスクキューをずらし、サイクリックにタスクを割り当てる。
次に、本実施の形態の効果について説明する。本実施の形態では、周期開始のタスクを割り当てるキューを周期ごとに変え、残りのタスクはサイクリックに割り当てることで、タスクキュー数によらず、同位相のタスクを偏ったタスクキューに割り当てることがなく、タスクキュー毎の負荷が分散できる。本実施の形態により、図36に示すタスクをスケジューリングした例を図22に示す。また、タスクキューの選択は、サイクリックではなくとも規則的であれば、同様にキュー毎の負荷を分散することができる。
また、本実施の形態によれば、タスクをタスクキューに追加する場合に、負荷が最小となっているタスクキューを調査することなく、タスクキューの負荷を分散することができる。したがって、タスクキューの負荷を計算するオーバヘッドを発生させることがない。
以上、これまで述べてきた各実施の形態は、本発明の好適な実施形態であり、前記実施の形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。例えば、図23に示すように、タスクキューを用いずに、スケジューリング装置が直接プロセッサへ処理するタスクを指示しても良い。これは、タスクキューとプロセッサ数が同数であるのと同義である。
また、例えば、図24に示すように、独立したスケジューリング装置を用いずに、並列演算装置14内のプロセッサ141〜14nが、各々タスク処理量周期取得部12が得たタスク処理量周期をもとに処理するタスクを決定し、処理を行っても良い。具体的には、例えば、タスク処理量周期取得部12は、タスク処理量周期をプロセッサ141〜14nが有する処理タスク決定部1412〜14n2に出力するようにする。処理タスク決定部1412〜14n2は、タスク処理量周期取得部12から出力されたタスク処理量周期に基づいて、処理するタスクを決定する。処理タスク決定部1412〜14n2は、決定したタスクのタスク番号をタスク処理演算部1411〜14n1に出力する。タスク処理演算部1411〜14n1は、処理タスク決定部1412〜14n2から出力されたタスク番号のタスクをタスク蓄積装置13から取得して処理する。なお、後述する実施例では、図24に示すように、独立したスケジューリング装置を用いずに並列演算装置内のプロセッサが処理するタスクを決定している。
なお本発明は、コンピュータを並列処理システムとして機能させる並列処理プログラムとしても実現することができる。コンピュータは、並列処理スケジューリングプログラムが記憶媒体から読み込まれ実行される中央演算処理装置(CPU(Central Processing Unit))や画像演算処理装置(GPU(Graphics Processing Unit))などの演算処理装置を備える。本発明の第1の実施の形態を例にとれば、CPUに読み込まれた並列処理プログラムは、コンピュータを第1の実施の形態において説明された、タスク処理量周期取得部やキュー選択部、エンキュー部として機能させる。即ちこの場合、CPU(不図示)は、図3に示すフローチャートに対応するソフトウェアプログラムを実行することにより、上述した第1の実施形態において説明した並列処理システム1の機能を実現することになる。
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
また、コンピュータが上述の実施の形態の機能を実現するプログラムを実行することにより、上述の実施の形態の機能が実現されるだけではなく、このプログラムの指示に基づき、コンピュータ上で稼動しているOS(Operating System)もしくはアプリケーションソフトウェアと共同して上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
さらに、このプログラムの処理の全てもしくは一部がコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットにより行われて上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
本発明を実施するための実施例を第3の実施の形態と対応付けて説明する。本実施例では、動画像の動き探索処理を行うアプリケーションプログラムを実行する場合について例示する。このアプリケーションプログラムは、並列処理される複数のタスクを含む。各タスクは、16×16画素の領域である1マクロブロックの動き探索処理である。
また、本実施例における並列処理はGPUで実行される。GPUの統合開発環境であるNVIDIA社のCUDA(Compute Unified Device Architecture)プログラミングモデルでは、最小処理単位である"スレッド"を複数まとめた"スレッドブロック"と呼ばれる単位で、SM(Streaming Multiprocessor)と呼ばれる演算処理ユニットに割り当てられる。複数のスレッドブロックがSM上で同時に動作するため、スレッドブロック数が実際の並列実行数であると言える。よって、本実施例におけるスレッドブロックは、図10におけるプロセッサに相当する。
動き探索処理は対応するマクロブロックにおける画像がどれくらい移動したかを検出する処理で、マクロブロック毎に処理量が異なる。画像は、空間的に連続している部分は似ていることが多い。そのため、動き探索処理では空間的に連続しているマクロブロックの処理量相関が高い、つまり行方向と列方向に連続したマクロブロックの処理量には相関があることが多い。1つのマクロブロックにおける探索処理を1つのタスクで実行し、行と列方向にタスクが順序付けられているとすると、同一列(行)のタスクは相関があり、これは周期的である。
例えば、図25に示すような背景と動物体の画像では、図26の斜線部分である動物体は、空間的に近いマクロブロック群で構成され、また、動きが大きいため動き探索の処理量が多い。一方、それ以外のマクロブロックである背景は、動きが小さく、動き探索の処理量も少ない。背景と動物体の動きの大きさを矢印の大きさとし、動きの方向を矢印の向きとして図26中に示す。行と列の順にマクロブロックが順序付けられているとすると、マクロブロック列数がタスク処理量の周期となり、図26の各タスクの処理量を順に表すと 図27に示すように、周期的に処理量の大きいタスクが現れる。
具体的に例えると、1行目1列目のマクロブロックに対応するタスクのタスク番号は1、1行目2列目のマクロブロックに対応するタスクのタスク番号は2、・・・となる。以降、列番号が増える毎に、マクロブロックに対応するタスク番号が増加していく。よって、列数が120の場合、2行目1列目のマクロブロックに対応するタスクのタスク番号は121となる。
図27に例示するような動画像の場合、同行や同列のタスクを同タスクキューに割り当てると、動物体部分を処理するタスクが同タスクキューとなり、他タスクキューと比べて処理量が多い。このような場合には、同行や同列のタスクをなるべく同タスクキューに入れないことでタスクキュー間の負荷が分散でき、並列処理効率が向上する。そのため、本発明の実施の形態3を適用した本実施例によれば、タスクキュー数をマクロブロック列数の約数や倍数ではなく、スレッドブロック数の約数と同一又は近い数にし、タスクキューにタスクをサイクリックに割り当てることができるので、行と列に連続したタスクが連続して同一タスクに入ることがなく、タスクキュー毎の負荷を分散できる。
また、図10におけるタスクキューは、実際にタスクを格納する配列などを用いるのではなく、各プロセッサから排他的にアクセスされるカウンタを用いて実装してもよい。このようなカウンタの値は処理するマクロブロック(タスク)番号を表す。各カウンタの初期値はカウンタ番号に一致し、処理すべきタスクを取り出したプロセッサによって、カウンタ数(タスクキュー数)が加算される。これにより、タスクキューにサイクリックにタスクが割り当たるのと同じ状態となる。つまり、本発明の実施の形態において、カウンタにタスク番号を格納することも、タスクキューにタスクを格納することに含まれる。
実施の形態3の並列処理システム2と本実施例の対応を図28に示す。
本実施例の構成を図29に示す。本実施例である並列処理システム7は、マクロブロック列数を取得するマクロブロック列数取得部74と、スレッドブロック数を取得するスレッドブロック数取得部75と、マクロブロック列数とスレッドブロック数からカウンタ数mを決定するカウンタ数決定部71と、m個のカウンタ7211、7212、・・・、721mと、n個のスレッドブロック7221、7222、7223、・・・、722nからなる並列演算装置72で構成される。
カウンタ7211、7212、・・・、721mはカウンタ数決定部71とスレッドブロック7221、7222、7223、・・・、722nとに接続されている。カウンタ数mはスレッドブロック数n以下であり、また、1つのカウンタに対して1つまたは複数のスレッドブロックが接続されている。カウンタ721mのカウンタ番号はmとなる。
次に、本実施例のフローチャートを図30に示す。マクロブロック列数取得部74はマクロブロック列数を取得し、取得したマクロブロック列数をカウンタ数決定部71に出力する。スレッドブロック数取得部75はスレッドブロック数を取得し(ステップS61)、取得したスレッドブロック数をカウンタ数決定部71に出力する。カウンタ数決定部71は、マクロブロック列数74の約数や倍数と異なり、スレッドブロック数の約数と同一又は近いカウンタ数mを設定する(ステップS62)。
スレッドブロック7221、7222、7223、・・・、722n(または図示していないCPUなどの他の演算装置)はカウンタ7211、7212、・・・、721mをカウンタ番号で初期化する(ステップS63)。スレッドブロック7221、7222、7223、・・・、722nは該スレッドブロックが接続されているカウンタ7211、7212、・・・、721mに格納されている値iを取得し該カウンタにカウンタ数mを加算する(ステップS64)。
各スレッドブロックを実行するSMは、iがタスク数以下であれば(ステップS65)i番目のタスクを実行し(ステップS66)、iがタスク数以上であれば該スレッドブロックが実行すべきタスクはないので処理を終了する。例えば、スレッドブロック数が180、カウンタ数が90であり、スレッドブロック7221とスレッドブロック7222がともにカウンタ7211に接続されているとすると、スレッドブロック7221とスレッドブロック7222を実行するSMは、タスク1、タスク91、タスク181、タスク271・・・を分担して処理する。もし、前記タスクの処理量が全て同じであれば、図31に示すようにスレッドブロック7221を実行するSMがタスク1、タスク181・・・を、スレッドブロック7222を実行するSMがタスク2、タスク271・・・を処理する。
ステップS64における2つの処理は、複数のスレッドブロックが1つのカウンタを使用することによる競合状態を避けるため、不可分に行われる必要がある。競合状態が起こると、例えば複数のスレッドブロックが同一のカウンタ値を得たり、使用されないカウンタ値が現れたりするため、正常な処理が行えない。
本実施例の効果の例として、1920×1080画素のフルHD(High Definition)サイズ画像を16×16画素のマクロブロックで分割して動きベクトル探索を行った場合のスケジュール結果を示す。評価画像にはITE標準動画像No.31を用いた。マクロブロック列数つまりタスク処理量周期は120となる。スレッドブロック数は180とした。
図32は、本実施例においてタスクキュー毎の処理量が偏る場合と分散できる場合のスレッドブロックごとの処理量を表している。カウンタ数60はタスク処理量周期であるマクロブロック列数120の約数であるためタスクキュー毎の処理量が偏り、スレッドブロックごとの処理量が偏っている。カウンタ数90は120の約数ではないため、カウンタ数60よりも処理量が分散されており、スレッドブロック当たりの最大処理量も小さい。つまり、より短い時間ですべてのタスクを並列処理できたと言える。
以上、本発明の好適な実施例を説明した。本発明は、前記実施例のみに範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した実施が可能である。前記実施例では、マクロブロックの列を周期としているが、行でも同様にマクロブロックの処理量に周期的な相関が現れ、本発明の適用が可能である。例えば、1列目1行目のマクロブロックに対応するタスクのタスク番号は1、1列目2行目のマクロブロックに対応するタスクのタスク番号は2、・・・としてもよい。つまり、行番号が増える毎に、マクロブロックに対応するタスク番号が増加するように、マクロブロックにタスクを割り当てても良い。
また、前記実施例は、画像の動き探索処理をマクロブロック毎にタスクとして並列処理を行っているが、1タスクの処理は1マクロブロックの処理に限定されることはなく、マクロブロック以外の領域範囲で分割された画像の処理も周期的に成り得る。つまり、1つの画像をN行M列(N及びMは、任意の正整数)に区分した画像の処理に適用することができる。
また、静止画像や動画像の動き探索処理以外の画像処理、そして、音声処理など、タスクの処理量に周期的な相関があるアプリケーションの並列処理や分散処理であれば本発明を適用することができる。さらに、本実施例では並列演算装置としてGPUを用いているが、これは、複数のCPUが集積されたマルチコアプロセッサや、複数のコンピュータが接続されたコンピュータクラスタなど、他の並列計算機での実施も可能である。
本発明は、画像処理の並列処理のスケジューリングだけではなく、音声処理や領域ごとに処理量の異なる行列を扱う数値計算の並列処理、定期的に負荷の重い処理を実行するサーバアプリケーションの分散処理などの、タスク間の処理時間に周期的な相関がある用途のスケジューリングに適用できる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)複数のタスクを格納するタスク蓄積部と、前記タスクを格納する複数のタスクキューと、前記複数のタスクのそれぞれの処理量が周期的に変化する場合に、同一の1周期に含まれるタスクが同一のタスクキューに格納されるように、前記タスクを格納するタスクキューを前記複数のタスクキューから選択するタスクキュー選択部と、前記タスクを、当該タスクを格納するタスクキューとして前記タスクキュー選択部が選択したタスクキューに格納するエンキュー部と、を備えた情報処理システム。
(付記2)複数のタスクを格納するタスク蓄積部と、前記タスクを格納する複数のタスクキューと、前記複数のタスクをそれぞれの処理量が周期的に変化する場合に、1周期に含まれるタスク数の約数及び倍数とは異なる数となるように前記複数のタスクキューのタスクキュー数を決定するタスクキュー数決定部と、前記タスクを格納するタスクキューを前記複数のタスクキューから規則的に選択するタスクキュー選択部と、前記タスクを、当該タスクを格納するタスクキューとして前記タスクキュー選択部が選択したタスクキューに格納するエンキュー部と、を備えた情報処理システム。
(付記3)前記情報処理システムは、前記複数のタスクキューに格納されたタスクを実行する複数のプロセッサをさらに備え、前記タスクキュー数決定部は、前記複数のプロセッサのプロセッサ数の約数又は倍数と、同一又は相対的に近い数となるように前記複数のタスクキューのタスクキュー数を決定する付記2に記載の情報処理システム。
(付記4)前記タスクキュー数決定部は、前記複数のタスクのタスク数の約数と同一又は相対的に近い数となるように前記複数のタスクキューのタスクキュー数を決定する付記2または3に記載の情報処理システム。
(付記5)それぞれの処理量が周期的に変化する複数のタスクを格納するタスク蓄積部と、前記タスクを格納する複数のタスクキューと、前記タスクを格納するタスクキューを前記複数のタスクキューから選択するタスクキュー選択部と、前記複数のタスクキューのそれぞれについて、前記タスクキューが格納先として選択されたタスクの位相の履歴を示すタスクキュー履歴情報を格納するタスクキュー履歴記憶部と、前記タスクを、当該タスクを格納するタスクキューとして前記タスクキュー選択部が選択したタスクキューに格納するエンキュー部と、を備え、前記タスクキュー選択部は、前記タスクキュー履歴記憶部に格納されたタスクキュー履歴情報に基づいて、前記格納先のタスクキューを選択するタスクと同一位相のタスクが格納先として選択された回数が少ないタスクキューを優先的に選択するとともに、当該選択結果に基づいて、前記タスクキュー履歴記憶部に格納される履歴情報を更新する情報処理システム。
(付記6)前記タスクキュー履歴情報は、前記タスクキューと、当該タスクキューが格納先として選択されたタスクの位相とを対応付けたタスクキュー対応情報を含み、前記タスクキュー選択部は、前記選択したタスクキューと、当該選択したタスクキューを格納先としたタスクの位相とを対応付けたタスクキュー対応情報を前記タスクキュー記憶部に格納する付記5に記載の情報処理システム。
(付記7)複数のタスクを格納するタスク蓄積部と、前記タスクを格納する複数のタスクキューと、前記タスクを格納するタスクキューを前記複数のタスクキューから規則的に選択するタスクキュー選択部と、前記タスクを、当該タスクを格納するタスクキューとして前記タスクキュー選択部が選択したタスクキューに格納するエンキュー部と、を備え、前記タスクキュー選択部は、前記複数のタスクのそれぞれの処理量が周期的に変化する場合に、1周期における最初のタスクを格納するタスクキューとして、当該1周期の前の1周期における最初のタスクとは異なるタスクキューを選択する情報処理システム。
(付記8)前記タスクは、N行M列(N及びMは、任意の正整数)に区分した画像の画像処理を実行し、前記周期は、NもしくはMである付記1乃至7の何れか1項に記載の情報処理システム。
(付記9)複数のタスクを、複数のタスクキューのいずれかに格納するタスク制御方法であって、前記複数のタスクをそれぞれの処理量が周期的に変化する場合に、同一の1周期に含まれるタスクが同一のタスクキューに格納されるように、前記タスクを格納するタスクキューを前記複数のタスクキューから選択するステップと、前記タスクを、当該タスクを格納するタスクキューとして選択したタスクキューに格納するステップと、を備えたタスク制御方法。
(付記10)複数のタスクを、複数のタスクキューのいずれかに格納するタスク制御方法であって、前記複数のタスクをそれぞれの処理量が周期的に変化する場合に、1周期に含まれるタスク数の約数及び倍数とは異なる数となるように前記複数のタスクキューのタスクキュー数を決定するステップと、前記タスクを格納するタスクキューを前記複数のタスクキューから規則的に選択するステップと、前記タスクを、当該タスクを格納するタスクキューとして選択したタスクキューに格納するステップと、を備えたタスク制御方法。
(付記11)前記タスク制御方法は、複数のプロセッサによって、前記複数のタスクキューに格納されたタスクを実行するステップをさらに備え、前記タスクキュー数を決定するステップでは、前記複数のプロセッサのプロセッサ数の約数又は倍数と、同一又は相対的に近い数となるように前記複数のタスクキューのタスクキュー数を決定する付記10に記載のタスク制御方法。
(付記12)前記タスクキュー数を決定するステップでは、前記複数のタスクのタスク数の約数と同一又は相対的に近い数となるように前記複数のタスクキューのタスクキュー数を決定する付記10または11に記載のタスク制御方法。
(付記13)それぞれの処理量が周期的に変化する複数のタスクを、複数のタスクキューのいずれかに格納するタスク制御方法であって、前記タスクを格納するタスクキューを前記複数のタスクキューから選択するステップと、前記タスクを、当該タスクを格納するタスクキューとして選択したタスクキューに格納するステップと、を備え、前記タスクキューを選択するステップでは、前記タスクキューが格納先として選択されたタスクの位相の履歴を示すタスクキュー履歴情報に基づいて、前記格納先のタスクキューを選択するタスクと同一位相のタスクが格納先として選択された回数が少ないタスクキューを優先的に選択するとともに、当該選択結果に基づいて、前記タスクキュー履歴記憶部に格納される履歴情報を更新するタスク制御方法。
(付記14)前記タスクキュー履歴情報は、前記タスクキューと、当該タスクキューが格納先として選択されたタスクの位相とを対応付けたタスクキュー対応情報を含み、前記タスクキューを選択するステップでは、前記選択したタスクキューと、当該選択したタスクキューを格納先としたタスクの位相とを対応付けたタスクキュー対応情報を前記タスクキュー履歴情報に含める付記13に記載のタスク制御方法。
(付記15)複数のタスクを、複数のタスクキューのいずれかに格納するタスク制御方法であって、前記タスクを格納するタスクキューを前記複数のタスクキューから規則的に選択するステップと、前記タスクを、当該タスクを格納するタスクキューとして選択したタスクキューに格納するステップと、を備え、前記タスクキューを選択するステップでは、前記複数のタスクのそれぞれの処理量が周期的に変化する場合に、1周期における最初のタスクを格納するタスクキューとして、当該1周期の前の1周期における最初のタスクとは異なるタスクキューを選択するタスク制御方法。
(付記16)前記タスクは、画像をN行M列(N及びMは、任意の正整数)に区分した画像の画像処理を実行し、前記周期は、NもしくはMである付記9乃至15の何れか1項に記載のタスク制御方法。
(付記17)複数のタスクを、複数のタスクキューのいずれかに格納するタスク制御プログラムであって、前記複数のタスクをそれぞれの処理量が周期的に変化する場合に、同一の1周期に含まれるタスクが同一のタスクキューに格納されるように、前記タスクを格納するタスクキューを前記複数のタスクキューから選択するステップと、前記タスクを、当該タスクを格納するタスクキューとして選択したタスクキューに格納するステップと、 をコンピュータに実行させるタスク制御プログラム。
(付記18)複数のタスクを、複数のタスクキューのいずれかに格納するタスク制御プログラムであって、前記複数のタスクをそれぞれの処理量が周期的に変化する場合に、1周期に含まれるタスク数の約数及び倍数とは異なる数となるように前記複数のタスクキューのタスクキュー数を決定するステップと、前記タスクを格納するタスクキューを前記複数のタスクキューから規則的に選択するステップと、前記タスクを、当該タスクを格納するタスクキューとして選択したタスクキューに格納するステップと、をコンピュータに実行させるタスク制御プログラム。
(付記19)前記タスク制御プログラムは、複数のプロセッサによって、前記複数のタスクキューに格納されたタスクを実行するステップをさらに備え、前記タスクキュー数を決定するステップでは、前記複数のプロセッサのプロセッサ数の約数又は倍数と、同一又は相対的に近い数となるように前記複数のタスクキューのタスクキュー数を決定する付記18に記載のタスク制御プログラム。
(付記20)前記タスクキュー数を決定するステップでは、前記複数のタスクのタスク数の約数と同一又は相対的に近い数となるように前記複数のタスクキューのタスクキュー数を決定する付記18または19に記載のタスク制御プログラム。
(付記21)それぞれの処理量が周期的に変化する複数のタスクを、複数のタスクキューのいずれかに格納するタスク制御プログラムであって、前記タスクを格納するタスクキューを前記複数のタスクキューから選択するステップと、前記タスクを、当該タスクを格納するタスクキューとして選択したタスクキューに格納するステップと、をコンピュータに実行させ、前記タスクキューを選択するステップでは、前記タスクキューが格納先として選択されたタスクの位相の履歴を示すタスクキュー履歴情報に基づいて、前記格納先のタスクキューを選択するタスクと同一位相のタスクが格納先として選択された回数が少ないタスクキューを優先的に選択するとともに、当該選択結果に基づいて、前記タスクキュー履歴記憶部に格納される履歴情報を更新するタスク制御プログラム。
(付記22)前記タスクキュー履歴情報は、前記タスクキューと、当該タスクキューが格納先として選択されたタスクの位相とを対応付けたタスクキュー対応情報を含み、前記タスクキューを選択するステップでは、前記選択したタスクキューと、当該選択したタスクキューを格納先としたタスクの位相とを対応付けたタスクキュー対応情報を前記タスクキュー履歴情報に含める付記21に記載のタスク制御プログラム。
(付記23)複数のタスクを、複数のタスクキューのいずれかに格納するタスク制御プログラムであって、前記タスクを格納するタスクキューを前記複数のタスクキューから規則的に選択するステップと、前記タスクを、当該タスクを格納するタスクキューとして選択したタスクキューに格納するステップと、をコンピュータに実行させ、前記タスクキューを選択するステップでは、前記複数のタスクのそれぞれの処理量が周期的に変化する場合に、1周期における最初のタスクを格納するタスクキューとして、当該1周期の前の1周期における最初のタスクとは異なるタスクキューを選択するタスク制御プログラム。
(付記24)前記タスクは、画像をN行M列(N及びMは、任意の正整数)に区分した画像の画像処理を実行し、前記周期は、NもしくはMである付記17乃至23の何れか1項に記載のタスク制御プログラム。
1、2、3、4、5、6、7、901、902 並列処理システム
11、22、52、62、911、922 スケジューリング装置
12 タスク処理量周期取得部
13 タスク蓄積装置
14、72、914 並列演算装置
21、31、41 キュー数決定部
33 プロセッサ数取得部
44 タスク数取得部
51 タスク処理量位相算出部
53 選択キュー記憶装置
71 カウンタ数決定部
73 マクロブロック列数取得部
74 スレッドブロック数取得部
81、82、8n、981、982、98m タスクキュー
111、221、521、621、9111、9221 キュー選択部
112、1112、9112 エンキュー部
141、142、143、14n、9141、9142、9143、914n プロセッサ
1001、1002、1005、10006 情報処理システム
1013 タスク蓄積部
1021 タスクキュー数決定部
1053 タスクキュー履歴記憶部
1111、1221、1521、1621 タスクキュー選択部
7211、7212、721m カウンタ
7221、7222、7223、722n スレッドブロック
9222 負荷取得部

Claims (10)

  1. タスクを格納する複数のタスクキューと、
    複数のタスクに属する各タスクの処理量の大小関係の周期を得るタスク周期取得部と、
    前記タスク周期取得部から得られた周期に基づいて、前記タスクキューの各々に格納するタスクの処理量の合計がタスクキュー毎に偏らないタスクキューのうち、いずれか一つを選択するタスクキュー選択部と、
    前記タスクキュー選択部で選択されたタスクキューに、タスク蓄積装置から入力されたタスクを追加するエンキュー部と、
    を備え、
    前記複数のタスクキューは、それぞれ、複数のプロセッサのいずれかに対応付けられ、対応するプロセッサによってタスクが実行され、
    前記タスクキュー選択部は、前記複数のタスクのそれぞれの処理量が周期的に変化する場合に、同一の1周期に含まれるタスクが同一のタスクキューに格納されるように、前記タスクを格納するタスクキューを前記複数のタスクキューから選択する
    情報処理システム。
  2. タスクを格納する複数のタスクキューと、
    複数のタスクに属する各タスクの処理量の大小関係の周期を得るタスク周期取得部と、
    前記タスク周期取得部から得られた周期に基づいて、前記タスクキューの各々に格納するタスクの処理量の合計がタスクキュー毎に偏らないタスクキューのうち、いずれか一つを選択するタスクキュー選択部と、
    前記タスクキュー選択部で選択されたタスクキューに、タスク蓄積装置から入力されたタスクを追加するエンキュー部と、
    前記複数のタスクをそれぞれの処理量が周期的に変化する場合に、1周期に含まれるタスク数の約数及び倍数とは異なる数となるように前記複数のタスクキューのタスクキュー数を決定するタスクキュー数決定部と、
    を備え、
    前記複数のタスクキューは、それぞれ、複数のプロセッサのいずれかに対応付けられ、対応するプロセッサによってタスクが実行され、
    前記タスクキュー選択部は、前記タスクを格納するタスクキューを前記複数のタスクキューから規則的に選択する
    報処理システム。
  3. 前記情報処理システムは、前記複数のプロセッサをさらに備え、
    前記タスクキュー数決定部は、前記複数のプロセッサのプロセッサ数の約数又は倍数と、同一となるように前記複数のタスクキューのタスクキュー数を決定する請求項に記載の情報処理システム。
  4. タスクを格納する複数のタスクキューと、
    複数のタスクに属する各タスクの処理量の大小関係の周期を得るタスク周期取得部と、
    前記タスク周期取得部から得られた周期に基づいて、前記タスクキューの各々に格納するタスクの処理量の合計がタスクキュー毎に偏らないタスクキューのうち、いずれか一つを選択するタスクキュー選択部と、
    前記タスクキュー選択部で選択されたタスクキューに、タスク蓄積装置から入力されたタスクを追加するエンキュー部と、
    前記複数のタスクキューのそれぞれについて、前記タスクキューが格納先として選択されたタスクの位相の履歴を示すタスクキュー履歴情報を格納するタスクキュー履歴記憶部と、
    を備え、
    前記複数のタスクキューは、それぞれ、複数のプロセッサのいずれかに対応付けられ、対応するプロセッサによってタスクが実行され、
    前記タスクキュー選択部は、前記タスクキュー履歴記憶部に格納されたタスクキュー履歴情報に基づいて、前記格納先のタスクキューを選択するタスクと同一位相のタスクが格納先として選択された回数が少ないタスクキューを優先的に選択するとともに、当該選択結果に基づいて、前記タスクキュー履歴記憶部に格納される履歴情報を更新することでプロセッサ毎のタスクの処理量の総計を分散させる
    報処理システム。
  5. タスクを格納する複数のタスクキューと、
    複数のタスクに属する各タスクの処理量の大小関係の周期を得るタスク周期取得部と、
    前記タスク周期取得部から得られた周期に基づいて、前記タスクキューの各々に格納するタスクの処理量の合計がタスクキュー毎に偏らないタスクキューのうち、いずれか一つを選択するタスクキュー選択部と、
    前記タスクキュー選択部で選択されたタスクキューに、タスク蓄積装置から入力されたタスクを追加するエンキュー部と、
    を備え、
    前記複数のタスクキューは、それぞれ、複数のプロセッサのいずれかに対応付けられ、対応するプロセッサによってタスクが実行され、
    前記タスクキュー選択部は、1周期における最初のタスクを格納するタスクキューとして当該1周期の前の1周期における最初のタスクとは異なるタスクキューを選択し、その他のタスクを格納するタスクキューを規則的に選択する
    報処理システム。
  6. 前記タスクは、N行M列(N及びMは、任意の正整数)に区分した画像の画像処理を実行し、
    前記周期は、NもしくはMである請求項1乃至の何れか1項に記載の情報処理システム。
  7. 複数のタスクに属する各タスクの処理量の大小関係の周期を得るタスク周期取得ステップと、
    前記得られた周期に基づいて、複数のタスクキューの各々に格納するタスクの処理量の合計がタスクキュー毎に偏らないタスクキューのうち、いずれか一つを選択するタスクキュー選択ステップと、
    前記選択されたタスクキューに、タスク蓄積装置から入力されたタスクを追加するエンキューステップと、
    を備え、
    前記複数のタスクキューは、それぞれ、複数のプロセッサのいずれかに対応付けられ、対応するプロセッサによってタスクが実行され、
    前記タスクキュー選択ステップでは、前記複数のタスクのそれぞれの処理量が周期的に変化する場合に、同一の1周期に含まれるタスクが同一のタスクキューに格納されるように、前記タスクを格納するタスクキューを前記複数のタスクキューから選択する
    タスク制御方法。
  8. 複数のタスクに属する各タスクの処理量の大小関係の周期を得るタスク周期取得ステップと、
    前記複数のタスクをそれぞれの処理量が周期的に変化する場合に、1周期に含まれるタスク数の約数及び倍数とは異なる数となるように複数のタスクキューのタスクキュー数を決定するタスクキュー数決定ステップと、
    前記得られた周期に基づいて、前記複数のタスクキューの各々に格納するタスクの処理量の合計がタスクキュー毎に偏らないタスクキューのうち、いずれか一つを選択するタスクキュー選択ステップと、
    前記選択されたタスクキューに、タスク蓄積装置から入力されたタスクを追加するエンキューステップと、
    を備え、
    前記複数のタスクキューは、それぞれ、複数のプロセッサのいずれかに対応付けられ、対応するプロセッサによってタスクが実行され、
    前記タスクキュー選択ステップでは、前記タスクを格納するタスクキューを前記複数のタスクキューから規則的に選択する
    タスク制御方法。
  9. 複数のタスクに属する各タスクの処理量の大小関係の周期を得るタスク周期取得処理と、
    前記得られた周期に基づいて、複数のタスクキューの各々に格納するタスクの処理量の合計がタスクキュー毎に偏らないタスクキューのうち、いずれか一つを選択するタスクキュー選択処理と、
    前記選択されたタスクキューに、タスク蓄積装置から入力されたタスクを追加するエンキュー処理と、
    をコンピュータに実行させ、
    前記複数のタスクキューは、それぞれ、複数のプロセッサのいずれかに対応付けられ、対応するプロセッサによってタスクが実行され、
    前記タスクキュー選択処理では、前記複数のタスクのそれぞれの処理量が周期的に変化する場合に、同一の1周期に含まれるタスクが同一のタスクキューに格納されるように、前記タスクを格納するタスクキューを前記複数のタスクキューから選択する
    タスク制御プログラム。
  10. 複数のタスクに属する各タスクの処理量の大小関係の周期を得るタスク周期取得処理と、
    前記複数のタスクをそれぞれの処理量が周期的に変化する場合に、1周期に含まれるタスク数の約数及び倍数とは異なる数となるように複数のタスクキューのタスクキュー数を決定するタスクキュー数決定処理と、
    前記得られた周期に基づいて、前記複数のタスクキューの各々に格納するタスクの処理量の合計がタスクキュー毎に偏らないタスクキューのうち、いずれか一つを選択するタスクキュー選択処理と、
    前記選択されたタスクキューに、タスク蓄積装置から入力されたタスクを追加するエンキュー処理と、
    をコンピュータに実行させ、
    前記複数のタスクキューは、それぞれ、複数のプロセッサのいずれかに対応付けられ、対応するプロセッサによってタスクが実行され、
    前記タスクキュー選択処理では、前記タスクを格納するタスクキューを前記複数のタスクキューから規則的に選択する
    タスク制御プログラム
JP2010096887A 2010-04-20 2010-04-20 情報処理システム、タスク制御方法及びタスク制御プログラム Expired - Fee Related JP5556326B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010096887A JP5556326B2 (ja) 2010-04-20 2010-04-20 情報処理システム、タスク制御方法及びタスク制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010096887A JP5556326B2 (ja) 2010-04-20 2010-04-20 情報処理システム、タスク制御方法及びタスク制御プログラム

Publications (2)

Publication Number Publication Date
JP2011227708A JP2011227708A (ja) 2011-11-10
JP5556326B2 true JP5556326B2 (ja) 2014-07-23

Family

ID=45042977

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010096887A Expired - Fee Related JP5556326B2 (ja) 2010-04-20 2010-04-20 情報処理システム、タスク制御方法及びタスク制御プログラム

Country Status (1)

Country Link
JP (1) JP5556326B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023076063A (ja) 2021-11-22 2023-06-01 富士通株式会社 制御プログラム、情報処理装置および制御方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006166190A (ja) * 2004-12-09 2006-06-22 Seiko Epson Corp 画像処理装置、印刷装置および画像処理方法

Also Published As

Publication number Publication date
JP2011227708A (ja) 2011-11-10

Similar Documents

Publication Publication Date Title
JP5245722B2 (ja) スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム
US9152462B2 (en) Parallel processing device, parallel processing method, optimization device, optimization method and computer program
US8516461B2 (en) Method to dynamically distribute a multi-dimensional work set across a multi-core system
KR101400577B1 (ko) Gpu를 이용한 희소행렬 곱셈 방법
CN110308982B (zh) 一种共享内存复用方法及装置
CN103748559B (zh) 利用工作需求反馈进行处理器工作划分的方法和系统
US20130036423A1 (en) Systems and methods for bounding processing times on multiple processing units
TWI564807B (zh) 排程方法及應用其的處理裝置
KR20140122835A (ko) 프로세스 병렬 처리 장치 및 방법
US9965343B2 (en) System and method for determining concurrency factors for dispatch size of parallel processor kernels
KR20110075296A (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
Fotohi et al. A cluster based job scheduling algorithm for grid computing
JP5556326B2 (ja) 情報処理システム、タスク制御方法及びタスク制御プログラム
CN111930516B (zh) 一种负载均衡方法及相关装置
WO2021146635A1 (en) Sparse matrix operations for deep learning
JP6435980B2 (ja) 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム
US9760969B2 (en) Graphic processing system and method thereof
US9436503B2 (en) Concurrency control mechanisms for highly multi-threaded systems
JP2011175573A (ja) クラスタシステム、プロセス配置方法、及びプログラム
CN111712793A (zh) 线程处理方法和图形处理器
KR102195886B1 (ko) 분산 처리 시스템 및 이의 동작 방법
CN109716297A (zh) 优化针对高激活率的操作系统计时器
Kim et al. Tiled QR decomposition and its optimization on CPU and GPU computing system
Kuchumov et al. HPC workload balancing algorithm for co-scheduling environments
Hwang et al. Hardware Interrupt and CPU Contention aware CPU/GPU Co-Scheduling on Multi-Cluster System

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130311

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140404

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140520

R150 Certificate of patent or registration of utility model

Ref document number: 5556326

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees