JP2012003619A - 情報処理装置、情報処理装置の制御方法、およびプログラム - Google Patents
情報処理装置、情報処理装置の制御方法、およびプログラム Download PDFInfo
- Publication number
- JP2012003619A JP2012003619A JP2010139719A JP2010139719A JP2012003619A JP 2012003619 A JP2012003619 A JP 2012003619A JP 2010139719 A JP2010139719 A JP 2010139719A JP 2010139719 A JP2010139719 A JP 2010139719A JP 2012003619 A JP2012003619 A JP 2012003619A
- Authority
- JP
- Japan
- Prior art keywords
- processing
- unit
- program
- image
- processing unit
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000012545 processing Methods 0.000 claims abstract description 415
- 230000015654 memory Effects 0.000 claims description 86
- 230000010365 information processing Effects 0.000 claims description 34
- 230000006870 function Effects 0.000 claims description 4
- 230000000694 effects Effects 0.000 abstract description 178
- 230000008569 process Effects 0.000 abstract description 41
- 230000004913 activation Effects 0.000 abstract description 7
- 238000004364 calculation method Methods 0.000 description 29
- 238000012546 transfer Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 239000007858 starting material Substances 0.000 description 6
- 238000011144 upstream manufacturing Methods 0.000 description 6
- 238000012937 correction Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 230000002730 additional effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Processing (AREA)
Abstract
【課題】CPUおよびGPUをフレキシブルに用いて、画像の処理を効率的に行うことのできる情報処理装置を提供する。
【解決手段】エフェクトの処理を実行する主体として、CPU、GPU、およびその両方のいずれかを選択し、CPUとGPUの両方が選択された場合、画像を2つの領域に分割し、分割された2つの領域それぞれの画像に対するエフェクトの処理をCPUとGPUに分担して実行させるようにCPUを動作させるエフェクトプログラム選択起動部を設ける。エフェクトプログラム選択起動部は、画像の全体に対するエフェクト処理がユーザによって選択された場合に、その画像の全体に対するエフェクト処理を実行する主体として、CPUとGPUの両方を選択し、それぞれに割り当てる処理面積の最適な割合を決定する。
【選択図】図7
【解決手段】エフェクトの処理を実行する主体として、CPU、GPU、およびその両方のいずれかを選択し、CPUとGPUの両方が選択された場合、画像を2つの領域に分割し、分割された2つの領域それぞれの画像に対するエフェクトの処理をCPUとGPUに分担して実行させるようにCPUを動作させるエフェクトプログラム選択起動部を設ける。エフェクトプログラム選択起動部は、画像の全体に対するエフェクト処理がユーザによって選択された場合に、その画像の全体に対するエフェクト処理を実行する主体として、CPUとGPUの両方を選択し、それぞれに割り当てる処理面積の最適な割合を決定する。
【選択図】図7
Description
本発明は、画像の処理に用いることができる情報処理装置、情報処理装置の制御方法、およびプログラムに関する。
近年、汎用のコンピュータ・ハードウェアの高性能化・高機能化により、以前は専用のハードウエアでのみ実装可能であった画像処理が、汎用のコンピュータ・ハードウェアを利用して行うことが可能となってきた。コンピュータ・ハードウェアのうち、特にCPUの高速化、メインメモリとして用いられるメモリの高速化は目覚しく、これらの成果は大容量の画像データに対して様々かつ複雑なエフェクト処理を実用的に満足のできる時間で処理することを可能とした。
画像処理のさらなる高速化は、並列演算処理に特化して設計された演算処理装置であるGPU(Graphics Processing Unit)の導入によって可能である。GPUによる並列演算処理は、特に画像処理のように一部の演算結果が全体に影響しない処理において、その高性能を発揮し得る。GPUによる並列演算処理は、複数の演算ユニットに同じ命令を発行することで、各演算ユニットがそれぞれ独立して同じ命令を実行するというメカニズムによって実現されるのに対し、CPUでは複数の演算ユニットにそれぞれ異なる命令が発行されることで、各演算ユニットがそれぞれ異なる命令を実行する。このためCPUは逐次型処理に適したものと言える。
また最近では、GPUを、画像処理のみならず、他の数値演算にも利用できるようにしたGPGPU(General−Purpose computing on Graphics Processing Units)という技術分野が存在する。
特許文献1には、CPUとGPUとでワークユニットを処理する際の負荷の分散について記載されている。具体的には、GPUが複数の光線と少なくとも一つのグラフィックオブジェクトを境界付ける表面のセットとの交差を並列に計算し、CPUが複数の光線のうち少なくとも幾つかとグラフィカルオブジェクトとの交差を計算するとされている。しかし、特許文献1には、画像の処理をCPUとGPUで分散して実行する点、CPUおよびGPUの負荷状況を考慮して最適な画像処理の主体を選択する点などについて記載されていない。
上記のように、近年、CPUは、その高速化によって画像処理に対しても実用上十分なレスポンスを持つものとなってきた。このことは、これまでGPUのみに依存してきた画像の処理を、CPUとGPUで分担して行うことによって、GPU単体で行う場合よりも結果的に高速に行うことができる可能性が増大したと言うことができる。また、仮に画像の処理をCPUとGPUで分担して行うことがスペック的に最速であったとしても、CPU、GPUの負荷状態やそれぞれのメモリの使用状態によってはGPU単独で行う方が高速である場合もあるなど、画像の処理をCPUとGPUで分担して行うことが速度上必ずしも最適とはいえない。
以上のような事情に鑑み、本発明の目的は、CPUおよびGPUをフレキシブルに用いて、画像の処理を効率的に行うことのできる情報処理装置、情報処理装置の制御方法、およびプログラムを提供することにある。
上記目的を達成するため、本発明の一形態に係る情報処理装置は、画像の処理を実行可能な第1のプロセッサユニットと、前記画像の処理を当該画像を区分する単位毎に並列に実行可能な第2のプロセッサユニットと、前記画像の処理を実行する主体を、前記第1のプロセッシング・ユニット、前記第2のプロセッシング・ユニット、およびその両方のいずれかを選択し、前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットの両方が選択された場合、前記画像を第1の領域と第2の領域とに分割し、分割された前記第1の領域および前記第2の領域それぞれの画像に対する処理を前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットに分担して実行させるように制御を行う制御手段とを具備する。
本発明では、第1のプロセッシング・ユニット、第2のプロセッシング・ユニット、およびその両方の中から画像の処理を実行する主体が適宜選択されることで、各プロセッシング・ユニットの負荷状況や画像の処理の条件などに合わせて、画像の処理を効率的に行うことができる。
制御手段は、画像の全体に対する処理を行う場合に、画像の処理を実行する主体として第1のプロセッシング・ユニットと第2のプロセッシング・ユニットの両方を選択する。画像処理の負荷は処理する画素数つまり画像の面積に対して比例する。したがって、画像の全体に対する処理を行う場合には、第1のプロセッシング・ユニットと第2のプロセッシング・ユニットの両方を用いることで、画像の処理を高速化できる。
制御手段は、第1のプロセッシング・ユニットによる第1の領域に対する第1の処理時間と第2のプロセッシング・ユニットによる第2の領域に対する第2の処理時間とが等しくもしくは略等しくなるように、第1の領域および第2の領域それぞれの面積を決定する。これにより、それぞれの領域に対する処理は同じもしくは略同じタイミングで終了し、結果的に最速の時間で画像処理を完了させることができる。
また、本発明の情報処理装置は、前記第1のプログラムユニットによる前記画像の処理で用いられる第1のメモリと、前記第2のプログラムユニットによる前記画像の処理で用いられる第2のメモリとをさらに具備し、前記制御手段は、前記第1の領域および前記第2の領域それぞれの画像の対する処理を前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットに分担して実行させる場合を想定した前記第2のメモリの予測使用量を計算し、前記計算された前記第2のメモリの予測使用量が閾値に達した場合、前記予測使用量が当該第2のメモリにおいて前記第2のプロセッシング・ユニットにより使用可能な容量内に収まるように、前記決定された前記第1の領域および前記第2の領域それぞれの面積を修正するようにしてもよい。これにより、第2のプログラムユニットによる画像の処理で用いられる第2のメモリの使用状態を考慮しつつ、画像に対する処理を各プロセッシング・ユニットに分担して良好に実行させることができる。
前記制御手段は、前記第2のメモリの予測使用量が当該第2のメモリの容量を超えない場合、前記第1のプロセッシング・ユニットの稼働率を取得し、この稼働率が閾値に達していない場合に、前記主体として選択された前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットに前記第1の領域および前記第2の領域それぞれの画像に対する処理を分担して実行させるようにしてもよい。これにより、第1のプロセッシング・ユニットの稼働率を考慮しつつ、画像に対する処理を各プロセッシング・ユニットに分担して良好に実行させることができる。
前記制御手段は、前記画像の一部に対して処理を行う場合、前記第1のプロセッシング・ユニットにより前記画像の一部に対して処理を行う場合を想定した予測処理時間と前記第2のプロセッシング・ユニットにより前記画像の一部に対して処理を行う場合を想定した予測処理時間を算出し、当該予測処理時間が短い方のプロセッシング・ユニットを前記画像の一部に対する処理を実行する主体として選択するようにしてもよい。
制御手段は、前記第2のプロセッシング・ユニットが前記主体として選択された場合、前記第2のプロセッシング・ユニットにより前記画像の一部に対して処理を行う場合を想定した前記第2のメモリの予測使用量を計算し、前記計算された前記第2のメモリの予測使用量が前記閾値に達していない場合、前記第2のプロセッシング・ユニットに前記画像の一部に対して処理を実行させるようにしてもよい。これにより、第2のプログラムユニットによる画像の処理で用いられる第2のメモリの使用状態を考慮しつつ、画像の一部に対する処理を第2のプロセッシング・ユニットに実行させることができる。
さらに制御手段は、前記第1のプロセッシング・ユニットが前記主体として選択された場合、前記第1のプロセッシング・ユニットの稼働率を取得し、この稼働率が閾値に達していない場合に、前記第1のプロセッシング・ユニットに前記画像の一部に対して処理を実行させるようにしてもよい。これにより、第1のプログラムユニットの稼働率を考慮しつつ、画像の一部に対する処理を第1のプロセッシング・ユニットに実行させることができる。
本発明の他の形態に係る情報処理装置の制御方法は、画像の処理を実行可能な第1のプロセッシング・ユニットと、前記画像の処理を当該画像を区分する単位毎に並列に実行可能な第2のプロセッシング・ユニットとを具備する情報処理装置の制御方法であって、制御手段が、画像の処理を実行する主体を前記第1のプロセッシング・ユニット、前記第2のプロセッシング・ユニット、およびその両方のいずれかを選択し、前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットの両方が選択された場合、前記画像を第1の領域と第2の領域とに分割し、分割された前記第1の領域および前記第2の領域それぞれの画像に対する処理を前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットに分担して実行させるというものである。
本発明の他の形態に係るプログラムは、画像の処理を実行可能な第1のプロセッシング・ユニットと、前記画像の処理を当該画像を区分する単位毎に並列に実行可能な第2のプロセッシング・ユニットとを具備するコンピュータを動作させるプログラムであって、前記画像の処理を実行する主体を、前記第1のプロセッシング・ユニット、前記第2のプロセッシング・ユニット、およびその両方のいずれかを選択し、前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットの両方が選択された場合、前記画像を第1の領域と第2の領域とに分割し、分割された前記第1の領域および前記第2の領域それぞれの画像に対する処理を前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットに分担して実行させるように制御を行う制御手段として前記コンピュータを機能させるものである。
以上のように、本発明によれば、CPUおよびGPUをフレキシブルに用いて、画像の処理を効率的に行うことができる。
以下、図面を参照しながら、本発明の実施形態を説明する。
<第1の実施形態>
[情報処理装置]
本実施形態は、CPU(Central Processing Unit)とGPU(Graphics Processing Unit)を搭載したコンピュータ上で、画像処理プログラムを実行させることにより、画像データに対して例えばエフェクト処理などの画像処理を行うことのできる情報処理装置に関するものである。
<第1の実施形態>
[情報処理装置]
本実施形態は、CPU(Central Processing Unit)とGPU(Graphics Processing Unit)を搭載したコンピュータ上で、画像処理プログラムを実行させることにより、画像データに対して例えばエフェクト処理などの画像処理を行うことのできる情報処理装置に関するものである。
図1は、本発明の一実施形態に係る情報処理装置の構成を示す図である。
同図に示すように、この情報処理装置10は、CPU部11、GPU部12、記憶装置13、表示インターフェース部14、操作インターフェース部15、これらを相互に接続するバス17を備える。
同図に示すように、この情報処理装置10は、CPU部11、GPU部12、記憶装置13、表示インターフェース部14、操作インターフェース部15、これらを相互に接続するバス17を備える。
CPU部11は、CPU111(第1のプロセッシング・ユニット)とメモリ(以下「CPUメモリ112」と記述する。)(第1のメモリ)を有し、CPUメモリ112に格納されたCPU用の画像処理プログラムを実行させることによってCPUメモリ112上で各種の演算処理に関する命令を実行する。CPU部11は、操作インターフェース部15に接続された操作入力装置18を通じてユーザより入力された指令を解釈して画像処理プログラムの動作に反映させる。また、CPU部11は、ユーザからの指令などをもとに記憶装置13から画像データを読み出し、CPUメモリ112に設けられた画像バッファに画像データを取り込み、この画像データに対するエフェクト等の処理を行うことができる。画像バッファの画像データは表示インターフェース部14に供給され、ここで描画処理によって可視的な画素単位のデータとされて表示装置19に出力される。さらにCPU部11は、画像バッファの編集後の画像データをユーザからの指令などをもと記憶装置13に書き込むように制御を行うことができる。
GPU部12は、GPU121(第2のプロセッシング・ユニット)とメモリ(以下「GPUメモリ122」と記述する。)(第2のメモリ)とを有し、GPUメモリ122に格納されたGPU用の画像処理プログラムを実行させることによってGPUメモリ122上で画像処理を並列に実行することが可能である。GPU部12は、CPU部11による制御によって記憶装置13から読み出された画像データをGPUメモリ122に設けられた画像バッファに取り込み、この画像データに対するエフェクト等の処理を、画像を区分するスレッド等の単位毎に並列に実行することができる。画像バッファの画像データは表示インターフェース部14に供給され、ここで描画処理によって可視的な画素単位のデータとされて表示装置19に出力される。さらにGPU部12は、画像バッファの例えば編集された画像データをCPU部11からの指令などをもと記憶装置13に書き込むように制御を行うことができる。
表示インターフェース部14は、表示装置19とのインターフェースであり、CPU部11および/またはGPU部12より画像データを受け取って描画処理を行い、描画データを表示装置19に供給する。この表示インターフェース部14の処理は、表示インターフェース部14内の設けられた図示しない専用のGPUによって行われてもよいし、例えば、上記のGPU121によって行われるようにしてもよい。
操作インターフェース部15は、操作入力装置18とのインターフェースであり、操作入力装置18から入力されたユーザからのデータおよび指令をCPU111に供給する処理などを行う。
記憶装置13は、編集前および編集後の画像データを保存する。また、記憶装置13には画像処理プログラムも格納されている。記憶装置13に格納された画像処理プログラムはCPU111用のプログラムとGPU121用のプログラムを含むものである。CPU111用のプログラムは、記憶装置13からCPU部11のCPUメモリ112にロードされてCPU111により実行される。また、GPU121用のプログラムは記憶装置13からGPU部12のGPUメモリ122にロードされてGPU121により実行される。
[画像処理プログラムの構成と実行形態]
図2は、本実施形態の情報処理装置10における画像処理プログラムの実行形態を示す図である。同図に示すように、画像処理プログラムの実行形態は、I/Oプログラム21と、I/Oプログラム21に接続された1以上のエフェクト・プラグイン・プログラム22とからなる。ここで、1以上のエフェクト・プラグイン・プログラム22はそれぞれユーザによって適宜選択されたエフェクトの種類に対応する。
図2は、本実施形態の情報処理装置10における画像処理プログラムの実行形態を示す図である。同図に示すように、画像処理プログラムの実行形態は、I/Oプログラム21と、I/Oプログラム21に接続された1以上のエフェクト・プラグイン・プログラム22とからなる。ここで、1以上のエフェクト・プラグイン・プログラム22はそれぞれユーザによって適宜選択されたエフェクトの種類に対応する。
I/Oプログラム21は画像データの入出力制御を行うプログラムである。より詳細には、I/Oプログラム21は、図1の記憶装置13から画像データを読み出し、接続されたエフェクト・プラグイン・プログラム22に転送する。I/Oプログラム21は、エフェクト・プラグイン・プログラム22よりエフェクト処理された画像データを受け取り、記憶装置13に書き戻したり、表示インターフェース部14を介して表示装置19に出力したりする。
I/Oプログラム21には、ユーザによってそれぞれ適宜選択された種類のエフェクトに対応する1以上のエフェクト・プラグイン・プログラム22がシリアルに接続される。具体的には、最上流のエフェクト・プラグイン・プログラム22はI/Oプログラム21より画像データを受け取ってエフェクト処理を実行し、その結果を1つ下流側のエフェクト・プラグイン・プログラム22に受け渡す。最上流および最下流以外のエフェクト・プラグイン・プログラム22は、1つ上流側のエフェクト・プラグイン・プログラム22より画像データを受け取ってエフェクト処理を実行し、その結果を1つ下流側のエフェクト・プラグイン・プログラム22に受け渡す。最下流のエフェクト・プラグイン・プログラム22は、1つ上流側のエフェクト・プラグイン・プログラム22より画像データを受け取ってエフェクト処理を実行し、その結果をI/Oプログラム21に受け渡す。このように本実施形態では、エフェクト・プラグイン・プログラム22の間で直接、画像データを受け渡すこととしたが、I/Oプログラム21を介して隣のエフェクト・プラグイン・プログラム22との間で画像データを受け渡すようにしてもよい。
一方、記憶装置13にはエフェクトの種類毎にエフェクトプログラムセット24が格納されている。それぞれのエフェクトプログラムセット24は、図3に示すように、画像データに対するエフェクト処理をCPU111に実行させるためのCPUプログラム241、そのエフェクト処理をGPU121に実行させるためのGPUプログラム242、そのエフェクト処理の実行をCPU111とGPU121とに分担して行う制御のためのCPU/GPU制御プログラム243とで構成される。これらのCPUプログラム241、GPUプログラム242、CPU/GPU制御プログラム243を特に区別しない場合には「エフェクトプログラム」と記述する。
CPUプログラム241は、画像データに対するエフェクト処理をCPU111に実行させるためのプログラムである。より詳細には、CPUプログラム241は、
(1)I/Oプログム21または1つ上流側に接続されたエフェクト・プラグイン・プログラム22からCPUメモリ112上の画像バッファを受け取る。
(2)エフェクト処理をCPU111に実行させる。
(3)エフェクト処理の結果を画像バッファに書き出す。
(4)その画像バッファを1つ下流側に接続されたエフェクト・プラグイン・プログラム22に渡すか、I/Oプログラム21に戻す。
などの処理手順を含む。
(1)I/Oプログム21または1つ上流側に接続されたエフェクト・プラグイン・プログラム22からCPUメモリ112上の画像バッファを受け取る。
(2)エフェクト処理をCPU111に実行させる。
(3)エフェクト処理の結果を画像バッファに書き出す。
(4)その画像バッファを1つ下流側に接続されたエフェクト・プラグイン・プログラム22に渡すか、I/Oプログラム21に戻す。
などの処理手順を含む。
GPUプログラム242は、画像データに対するエフェクト処理をGPU121に実行させるためのプログラムである。より詳細には、GPUプログラム242は、
(1)CPUメモリ112からGPUメモリ122へ画像データを取り込むか、1つ上流側に接続されたエフェクト・プラグイン・プログラム22からGPUメモリ122上の画像バッファを受け取る。
(2)エフェクト処理をGPU121に実行させる。
(3)エフェクト処理の結果を画像バッファに書き出す。
(4)その画像バッファを1つ下流側に接続されたエフェクト・プラグイン・プログラム22に渡すか、GPUメモリ122上の画像データをCPUメモリ112に転送する。
などの処理手順を含む。
(1)CPUメモリ112からGPUメモリ122へ画像データを取り込むか、1つ上流側に接続されたエフェクト・プラグイン・プログラム22からGPUメモリ122上の画像バッファを受け取る。
(2)エフェクト処理をGPU121に実行させる。
(3)エフェクト処理の結果を画像バッファに書き出す。
(4)その画像バッファを1つ下流側に接続されたエフェクト・プラグイン・プログラム22に渡すか、GPUメモリ122上の画像データをCPUメモリ112に転送する。
などの処理手順を含む。
また、GPUプログラム242は、GPU121のみでエフェクト処理を完結させるのではなく、図4に示すように、補助的に演算の一部をCPU111に依頼し、その演算結果をCPUメモリ112からGPUメモリ121に取り込むように作成される場合もある。その具体例として、デフォーカス等のフィルタ処理がある。GPU121の高速性は、単純な積和演算を大量に行う処理で発揮され、条件分岐などの逐次型処理では活かされない。例えば、デフォーカス処理は、デフォーカス用のフィルタの生成とフィルタの画像への畳み込みの二段階の処理になる。デフォーカス用のフィルタの生成は、せいぜい数百タップ程度と積和演算の数は少ないが、虹彩の形状や、角度といったパラメータ依存の条件分岐が多い。このようなデフォーカス処理の場合、CPU111でフィルタの生成を行い、フィルタを画像に畳み込む処理をGPU121で行うことによって、GPU121の高速性が活かされ、処理効率を向上させることができる。一方、例えば、画素に均一に重みをかける移動平均型のフィルタ処理のように条件分岐のないフィルタ処理に関しては、フィルタの生成は不要であることから、GPU121のみで処理が完結する。このように、GPUプログラム242は、GPU121のみで処理が完結するものと、GPU121に逐次型の演算の処理の一部を依頼するように作成されたものとがある。
CPU/GPU制御プログラム243は、ユーザによって選択されたエフェクト処理の実行をCPU111とGPU121とに分担させるエフェクトプログラムである。例えば、図5および図6に示すように、CPU/GPU制御プログラム243は、画像を2つの領域に分割し、分割された領域毎の演算をCPU111とGPU121とに分担させるように、CPUプログラム241とGPUプログラム242にそれぞれの領域の情報を供給する。また、CPU/GPU制御プログラム243は、CPU111とGPU121によるそれぞれの処理結果を同期させ結合して全画面の処理結果を形成する。
図2に戻って、エフェクトプログラム選択起動部23(制御手段)は、ユーザにより選択された種類のエフェクトに対応するエフェクトプログラムセット24の中から所定のアルゴリズムに従って少なくとも1つのエフェクトプログラムを呼び出し、I/Oプログラム21に上記のエフェクト・プラグイン・プログラム22として接続するようにCPU111を動作させるプログラムである。
すなわち、図2の画像処理プログラムの実行形態では、まず、ユーザによって選択された画像データがI/Oプログラム21によって記憶装置13から読み出される。次に、ユーザによって選択されたエフェクトに対応するエフェクトプログラムセット24の中から、エフェクトプログラム選択起動部23が所定のアルゴリズムに従って少なくとも1つのエフェクトプログラムを呼び出し、I/Oプログラム21にエフェクト・プラグイン・プログラム22として接続する。かくして、I/Oプログラム21に接続された1以上のエフェクト・プラグイン・プログラム22によって、画像データに対するエフェクト処理が実行される。エフェクト処理が施された画像データは、I/Oプログラム21によって表示インターフェース部14に出力され、表示装置19に可視的な画像となって表示される。さらに、I/Oプログラム21はユーザからの指令に応じて、エフェクト処理が施された画像データを記憶装置13に書き戻す。
[エフェクトプログラム選択起動部23]
次に、エフェクトプログラム選択起動部23の詳細を説明する。
図7は、エフェクトプログラム選択起動部23の構成を示すブロック図である。
同図に示すように、エフェクトプログラム選択起動部23は、全画面処理判定部231、処理面積演算部232、CPU処理時間予測部233、GPU処理時間予測部234、CPU処理時間保持部235、GPU処理時間保持部236、処理面積割り当て算出部237、プログラム判定部238、負荷判定部239、負荷情報更新部239A、プログラム読み出し部239Bを有する。
次に、エフェクトプログラム選択起動部23の詳細を説明する。
図7は、エフェクトプログラム選択起動部23の構成を示すブロック図である。
同図に示すように、エフェクトプログラム選択起動部23は、全画面処理判定部231、処理面積演算部232、CPU処理時間予測部233、GPU処理時間予測部234、CPU処理時間保持部235、GPU処理時間保持部236、処理面積割り当て算出部237、プログラム判定部238、負荷判定部239、負荷情報更新部239A、プログラム読み出し部239Bを有する。
全画面処理判定部231は、ユーザによって選択されたエフェクトの種類や処理対象の領域を指定する情報の有無などから、そのエフェクトの処理が画像データの全画素に施される処理か一部に施される処理かを判定する。
処理面積演算部232は、エフェクトをかける処理領域の面積(=処理画素数)を算出する。
CPU処理時間保持部235は、複数の種類のエフェクトについて予め実験的に測定しておいた1画素あたりのCPU処理時間を保持する部分である。
GPU処理時間保持部236は、複数の種類のエフェクトについて予め実験的に測定しておいた1画素あたりのGPU処理時間を保持する部分である。
CPU処理時間予測部233は、画像データの一部に対してエフェクトの処理が施される場合に用いられる。CPU処理時間予測部233は、CPU処理時間保持部235に保持されているCPU処理時間を用いて、そのエフェクト処理をCPU111で行う場合に必要な時間を「CPU予測処理時間」として算出する。
GPU処理時間予測部234は、画像データの一部に対してエフェクトの処理が施される場合に用いられる。GPU処理時間予測部234は、GPU処理時間保持部236に保持されているGPU処理時間を用いて、そのエフェクト処理をGPU121で行う場合に必要な時間を「GPU予測処理時間」として算出する。
プログラム判定部238は、CPU処理時間予測部233により算出されたCPU予測処理時間とGPU処理時間予測部234により算出されたGPU予測処理時間とをもとに、エフェクトプログラムセット24中のCPUプログラム241およびGPUプログラム242のうち一方をI/Oプログラム21に接続する候補として判定する。また、プログラム判定部238は、全画面処理判定部231によって画像データの全画素に施されるエフェクト処理が判定された場合に、エフェクトプログラムセット24内の各エフェクトプログラムをI/Oプログラム21に接続する候補として判定する。
処理面積割り当て算出部237は、エフェクトプログラムセット24がI/Oプログラム21に接続される候補として判定された場合に用いられる。処理面積割り当て算出部237は、エフェクトプログラムセット24の中のCPU/GPU制御プログラム243により1つの画像データのエフェクト処理がCPU111とGPU121を使って分担して行われるときの、それぞれの処理面積の最適な割合を算出し、その情報をCPU/GPU制御プログラム243に通知する。
負荷情報更新部239Aは、I/Oプログラム21へのエフェクトプログラムの接続状況をもとに、CPU111およびGPU121の稼動率、GPUメモリ122の使用量を負荷情報として管理する。
負荷判定部239は、負荷情報更新部239Aにて管理された負荷情報を用いて、エフェクトプログラムが接続された場合を仮定したCPU部11およびGPU部12それぞれの負荷情報を予測する。そして、負荷判定部239は、その予測結果をもとにプログラム判定部238による接続候補の選択結果に対して見直しを要求したり、その接続候補の選択結果をそのままプログラム読み出し部239に通知したりする。
プログラム読み出し部239は、負荷判定部239より供給された接続候補の情報をもとに、記憶装置13から、ユーザにより選択されたエフェクトの種類の対応するエフェクトプログラムセット24中の少なくとも一部のプログラムを読み出してI/Oプログラム21にエフェクト・プラグイン・プログラム22として接続する。
[エフェクトプログラム選択起動部23の動作]
次に、エフェクトプログラム選択起動部23の動作を説明する。
図8はエフェクトプログラム選択起動部23の動作の手順を示すフローチャートである。
なお、動作の説明は、
1.接続候補としてのエフェクトプログラムを判定する動作
2.GPUプログラム242が接続候補として選択された場合の動作
3.CPUプログラム241が接続候補として判定された後の動作
4.エフェクトプログラムセット24が接続候補として判定された場合の動作
の順で行う。
次に、エフェクトプログラム選択起動部23の動作を説明する。
図8はエフェクトプログラム選択起動部23の動作の手順を示すフローチャートである。
なお、動作の説明は、
1.接続候補としてのエフェクトプログラムを判定する動作
2.GPUプログラム242が接続候補として選択された場合の動作
3.CPUプログラム241が接続候補として判定された後の動作
4.エフェクトプログラムセット24が接続候補として判定された場合の動作
の順で行う。
[1.接続候補としてのエフェクトプログラムを判定する動作]
まず、I/Oプログラム21に接続される候補としてのエフェクトプログラムを判定する動作から説明する。
まず、I/Oプログラム21に接続される候補としてのエフェクトプログラムを判定する動作から説明する。
全画面処理判定部231によって、ユーザにより選択されたエフェクトが画像の全画素に施される処理であるか、画像の一部に対して行われる処理であるかどうかが判定される(ステップS101)。
ここで、当該エフェクトが画像の一部に対して行われる処理である場合に続く動作を説明する(ステップS101のN)。この場合、CPU111とGPU121それぞれの処理時間の予測が次のように行われる。まず、処理面積演算部232が、処理面積(=処理画素数)を算出する(ステップS102)。
次に、CPU処理時間予測部233が、CPU処理時間保持部235に保持されているCPU処理時間とステップS102で算出された処理画素数から下式(1)を用いて、当該エフェクトの処理をCPU111で行う場合に必要な時間を「CPU予測処理時間」として算出する(ステップS103)。
CPU予測処理時間=(1画素あたりのCPU処理時間)×(処理画素数) ・・・(1)
CPU予測処理時間=(1画素あたりのCPU処理時間)×(処理画素数) ・・・(1)
次に、GPU処理時間予測部234が、GPU処理時間保持部236に保持されているGPU処理時間とステップS102で算出された処理画素数から下式(2)を用いて、当該エフェクトの処理をGPU121で行う場合に必要な時間を「GPU予測処理時間」として算出する(ステップS104)。
GPU予測処理時間=(CPU−GPU間の転送時間)+(1画素あたりのGPU処理時間×処理画素数) ・・・(2)
GPU予測処理時間=(CPU−GPU間の転送時間)+(1画素あたりのGPU処理時間×処理画素数) ・・・(2)
CPU処理時間保持部235およびGPU処理時間保持部236にそれぞれ保持されている1画素あたりの処理時間は、全ての種類のエフェクトに対して予め実験的に測定して保存しておいた情報である。また、1画素あたりの処理時間は、1画素あたりの処理を、演算命令(加算・減算・乗算・除算の四則演算、ロード・ストア、条件分岐命令、シフト演算・論理演算)に分解し、その命令数とCPU111およびGPU121の動作周波数から概算によって算出することも可能である。また、式(2)における「CPU−GPU間の転送時間」についても、扱う全画像のサイズ、フォーマットごとの「CPU−GPU間の転送時間」を予め測定して保存しておいた結果を、GPU予測処理時間の計算時に用いればよい。また、「CPU−GPU間の転送時間」は、CPU−GPU間のバス17の帯域と画像のデータ量から算出することも可能である。
なお、実際の画像処理演算では、厳密には「1画素あたりの演算時間×処理画素数」に加えて「画素のインクリメントにかかる演算時間」や「処理する画素とそうでない画素を判定する条件分岐の演算時間」等が存在する。しかし、演算時間に占める割合としては、上記により計算されるCPU予測処理時間およびGPU予測処理時間が支配的であることから、これらのCPU予測処理時間およびGPU予測処理時間で近似することが可能である。
次に、プログラム判定部238が、CPU予測処理時間とGPU予測処理時間をもとに、CPUプログラム241とGPUプログラム242のどちらを接続候補とするかを判定する。具体的には、プログラム判定部238は、予測処理時間が短い方のエフェクトプログラムを接続候補として判定する。例えば、GPU予測処理時間がCPU予測処理時間より短い場合(ステップS105のY)、プログラム判定部238はGPUプログラム242を接続候補として判定する(ステップS106)。逆に、GPU予測処理時間がCPU予測処理時間以上である場合(ステップS105のN)、プログラム判定部238はCPUプログラム241を接続候補として判定する(ステップS112)。
ところで、GPU予測処理時間がCPU予測処理時間より短くなるケースとして、画像の大部分の領域に例えば数百タップの積和演算を均一にかけるエフェクト処理などを挙げることができる。これは、GPU121が画素毎にスレッドを設定して並列に処理を行うことができることに拠る。逆に、画像のごく一部の領域にエフェクトをかける場合にはGPU121の特性が十分活かされない。さらに実際には、GPU121の処理時間は、演算時間のみならず、CPU−GPU間の画像データの転送時間を伴う。このため、例えば、4096×2160(画素)などの比較的サイズの大きい画像中のごく一部に、例えば色変換のように演算量の小さい処理をGPU121により行う場合、全体の処理時間における画像データの転送時間の支配率が高くなり、CPU111によりそのエフェクト処理を行った場合よりも時間がかかることがある。
動作の説明に戻る。CPUプログラム241とGPUプログラム242との間で接続候補としてのエフェクトプログラムが判定される動作までを説明したが、この時点では、そのエフェクトプログラムが実際にI/Oプログラム21にエフェクト・プラグイン・プログラム22として接続されたわけではない。この後、接続候補として判定されたエフェクトプログラムがI/Oプログラム21に接続された場合を想定したCPU部11およびGPU部12の負荷状況をもとに、そのエフェクトプログラムの接続の可否が負荷判定部239によって判定される。次に、この動作について説明する。
[2.GPUプログラム242が接続候補として選択された場合の動作]
まず、ステップS106において、接続候補としてGPUプログラム242が選択された場合について説明する。
まず、ステップS106において、接続候補としてGPUプログラム242が選択された場合について説明する。
負荷判定部239は、そのGPUプログラム242がI/Oプログラム21に接続された場合を想定したGPUメモリ122の予測使用量(以下「GPUメモリ予測使用量」と記述する。)を算出する。GPUメモリ予測使用量の算出は、例えは、次式(3)によって行われる(ステップS107)。
GPUメモリ予測使用量=(既に接続されたエフェクトで使用される総メモリ量)+ (追加エフェクトで使用する画像メモリの個数)×(画像メモリサイズ) ・・・(3)
GPUメモリ予測使用量=(既に接続されたエフェクトで使用される総メモリ量)+ (追加エフェクトで使用する画像メモリの個数)×(画像メモリサイズ) ・・・(3)
負荷判定部239は、取得したGPUメモリ予測使用量が予め決められた閾値に達しているかどうかを判定する(ステップS108)。ここで、GPUメモリ予測使用量の閾値とは、GPUメモリ122の枯渇状態を判定するために予め決められた値である。
GPUメモリ予測使用量が予め決められた閾値に達していない場合(ステップS108のY)、負荷判定部239は、プログラム判定部238によって接続候補として判定されたGPUプログラム242の読み出しをプログラム読み出し部239に依頼する。プログラム読み出し部239は、この依頼を受けると、負荷情報更新部239AにGPUプログラム242の追加に伴う負荷情報の更新を依頼する。負荷情報更新部239Aは、この依頼に応じて、GPUメモリ122の負荷情報(使用量)を更新する(ステップS109)。この後、プログラム読み出し部239は、プログラム判定部238により接続候補として判定されたGPUプログラム242を記憶装置13から読み出し、I/Oプログラム21にエフェクト・プラグイン・プログラム22として接続する(ステップS110)。
また、ステップS108の判定において、GPUメモリ予測使用量が予め決められた閾値に達している場合(ステップS108のN)、負荷判定部239は、接続候補としてのエフェクトプログラムを、GPUプログラム242からCPUプログラム241に切り替える(ステップS111のNの場合)。この後に続く動作として、CPUプログラム241に接続候補を切り替えた場合を想定したCPU111の稼働率を考慮した当該CPUプログラム241の接続の可否の判定が負荷判定部239によって行われる。なお、この動作の詳細は、ステップS112にて、接続候補としてCPUプログラム241が選択された場合の後に続く動作と同じであるので、後でその説明を行うこととする。また、GPUメモリ予測使用量が予め決められた閾値以上である場合で(ステップS108のN)、なおかつCPUプログラム241の接続が不可と判定された経緯がある場合には(ステップS111のY)、負荷判定部239は、接続候補としてのエフェクトプログラムを、GPUプログラム242からエフェクトプログラムセット24に切り替える。この後に続く動作は、後述するステップS116において、接続候補としてエフェクトプログラムセット24が選択された場合の後に続く動作と同じであるので、後でその説明を行うこととする。
[3.CPUプログラム241が接続候補として判定された場合の動作]
[3.CPUプログラム241が接続候補として判定された場合の動作]
次に、ステップS112において、接続候補としてCPUプログラム241が判定された後の動作を説明する。
負荷判定部239は、現在のCPU111の稼働率を取得する(ステップS113)。CPU111の稼働率は、例えは、本情報処理装置に実装されたOS(Operating System)がもつCPU稼動率監視機能などから取得することが可能である。
負荷判定部239は、CPU111の稼働率が予め決められた閾値に達しているかどうかを判定する(ステップS114)。CPU稼働率の閾値は、情報処理装置の全体的な動作の効率、安定性などを考慮して設計的に決められた値である。CPU111の稼働率が予め決められた閾値に達していない場合には(ステップS114のY)、負荷判定部239は、プログラム判定部238によって接続候補として判定されたCPUプログラム241の読み出しをプログラム読み出し部239に依頼する。プログラム読み出し部239は、この依頼を受けると、プログラム判定部238により接続候補として判定されたCPUプログラム241を記憶装置13から読み出し、I/Oプログラム21にエフェクト・プラグイン・プログラム22として接続する(ステップS110)。
CPU111の稼働率が予め決められた閾値に達している場合で(ステップS114のNO)、なおかつGPUプログラム242の接続が不可と判定された経緯がある場合には(ステップS115のY)、負荷判定部239は、エフェクトプログラムの追加が不可であるとして、エフェクト追加不可コードを図示しないグラフィカル・ユーザ・インターフェース部に通知する(ステップS124)。グラフィカル・ユーザ・インターフェース部は、表示装置19(図1)の画面を通して、ユーザからの、処理対象である画像データの選択、画像データにかけるエフェクトの選択、各種パラメータの入力などを受け付けて、その応答をユーザに返す処理などを行うプログラムである。グラフィカル・ユーザ・インターフェース部は、負荷判定部239からのエフェクト追加不可コードを受け取ると、ユーザによって選択されたエフェクトを追加できない旨を表示装置19(図1)の画面を通してユーザに通知する。また、この際、負荷判定部239からプログラム読み出し部239に、エフェクトプログラムの読み出しの依頼を出さないように振る舞うことで、I/Oプログラム21にエフェクトプログラムが新たに接続されることなく、処理が終了する。
また、ステップS114の判定において、CPU111の稼働率が予め決められた閾値に達している場合で(ステップS114のNO)、なおかつGPUプログラム242の接続が不可と判定された経緯がない場合は(ステップS115のN)、ステップS106に移行し、接続候補がCPUプログラム241からGPUプログラム242に切り替えられる。この後に続く動作は既に説明した通りである。
[4.エフェクトプログラムセット24が接続候補として判定された場合の動作]
次に、ステップS101において、全画面処理判定部231によってエフェクトの処理が画像の全画素に施される処理であることが判定された場合について説明する(ステップS101のY)。この場合、全画面処理判定部231は、プログラム判定部238に対し、ユーザにより選択されたエフェクトに対応するエフェクトプログラムセット24(CPUプログラム241、GPUプログラム242、CPU/GPU制御プログラム243)を接続候補として判定するように指示する(ステップS116)。
次に、ステップS101において、全画面処理判定部231によってエフェクトの処理が画像の全画素に施される処理であることが判定された場合について説明する(ステップS101のY)。この場合、全画面処理判定部231は、プログラム判定部238に対し、ユーザにより選択されたエフェクトに対応するエフェクトプログラムセット24(CPUプログラム241、GPUプログラム242、CPU/GPU制御プログラム243)を接続候補として判定するように指示する(ステップS116)。
次に、全画面処理判定部231は処理面積割り当て算出部237を起動する。処理面積割り当て算出部237は、CPU111とGPU121とで当該エフェクトの処理を分担して行うためのCPU111およびGPU121それぞれの処理面積の割り当てを行う(ステップS117)。これらの処理面積の割り当ては、具体的には、次のようにして行われる。以後の説明において、CPU111に割り当てられる処理面積を「CPU処理面積」、GPU121に割り当てられる処理面積を「GPU処理面積」と記述する。
処理面積割り当て算出部237は、CPU処理時間予測部233とGPU処理時間予測部234に対し、CPU予測処理時間とGPU予測処理時間の算出をそれぞれ依頼する。CPU処理時間予測部233は、この依頼に従って、CPU処理時間保持部235に保持されているCPU処理時間と画像の全画素数から式(1)を用いてCPU予測処理時間を算出する。同様にCPU処理時間予測部233は、GPU処理時間保持部236に保持されているGPU処理時間と画像の全画素数から式(2)を用いてGPU予測処理時間を算出する。
処理面積割り当て算出部237は、CPU処理時間予測部233とGPU処理時間予測部234によってそれぞれ算出されたCPU予測処理時間とGPU予測処理時間とがほぼ等しくなる割合を求める。処理面積割り当て算出部237は、求めた割合で全処理面積(全画素数)をCPU処理面積とGPU処理面積とに分配し、それぞれの処理面積の情報を処理面積割当情報として保持する(ステップS117)。処理面積割り当て算出部237に保持された処理面積割当情報は、後でプログラム読み出し部239Bによって記憶装置13から読み出されてI/Oプログラム21に接続されたCPU/GPU制御プログラム243に通知されることとなる。
処理面積割り当て算出部237にCPU処理面積およびGPU処理面積の割当情報が保持された後、接続候補として判定されたエフェクトプログラムセット24が接続された場合を想定したCPU111の稼動率をもとに、そのエフェクトプログラムセット24の接続の可否が負荷判定部239によって判定される。次に、この動作について説明する。
負荷判定部239は、当該エフェクトプログラムセット24中のGPUプログラム242がI/Oプログラム21に接続された場合を想定したGPUメモリ予測使用量を算出する。GPUメモリ予測使用量の算出は次式(4)によって行われる(ステップS118)。
GPUメモリ予測使用量=(既に接続されたエフェクトで使用される総メモリ量)+(追加エフェクトで使用される画像メモリの個数)×(画像メモリサイズ)×(GPU処理面積)/(全画面面積) ・・・(4)
次に、負荷判定部239は、算出されたGPUメモリ予測使用量が予め決められた閾値に達しているかどうかを判定する(ステップS119)。GPUメモリ予測使用量が予め決められた閾値に達していない場合(ステップS119のY)、負荷判定部239は、ステップS113と同様にCPU111の稼働率を取得する(ステップS120)。続いて負荷判定部239は、ステップS114と同様に、CPU111の稼働率が予め決められた閾値に達しているかどうかを判定する(ステップS121)。
CPU111の稼働率が予め決められた閾値に達していない場合には(ステップS121のY)、負荷判定部239は、当該エフェクトプログラムセット24の接続が可能であることを判定して、当該エフェクトプログラムセット24の読み出しをプログラム読み出し部239に依頼する。プログラム読み出し部239は、この依頼に従って、当該エフェクトプログラムセット24を記憶装置13から読み出し、I/Oプログラム21にエフェクト・プラグイン・プログラム22として接続する(ステップS110)。この後、I/Oプログラム21に接続されたCPU/GPU制御プログラム243に、処理面積割り当て算出部237に保持された割当情報が通知される。これにより、ユーザによって選択されたエフェクト処理がCPU111とGPU121とで分担して行われる環境が構築される。
次に、ステップS119において、GPUメモリ予測使用量が予め決められた閾値に達している場合を説明する(ステップS119のN)。この場合、ステップS117に戻り、処理面積割り当て算出部237によってCPU処理面積およびGPU処理面積の割り当ての修正が行われる(ステップS117)。この割り当ての修正は次のように行われる。
まず、処理面積割り当て算出部237は、GPU処理面積の修正値を次式(5)により計算する。
GPU処理面積の修正値=((GPUで使用できる総メモリ量)−(既に接続されたエフェクトで使用される総メモリ量))/(1画素あたりのメモリ使用量) ・・・(5)
そして処理面積割り当て算出部237は、全画面面積からGPU処理面積の修正値を減算した結果をCPU処理面積の修正値とする。
GPU処理面積の修正値=((GPUで使用できる総メモリ量)−(既に接続されたエフェクトで使用される総メモリ量))/(1画素あたりのメモリ使用量) ・・・(5)
そして処理面積割り当て算出部237は、全画面面積からGPU処理面積の修正値を減算した結果をCPU処理面積の修正値とする。
この後、負荷判定部239は、GPU処理面積の修正値と上記の式(4)を用いて、当該エフェクトプログラムセット24に含まれるGPUプログラム242がI/Oプログラム21に接続された場合を想定したGPUメモリ予測使用量を算出する(ステップS118)。負荷判定部239は、この結果求められたGPUメモリ予測使用量が予め決められた閾値に達しているかどうかを判定する(ステップS119)。GPUメモリ予測使用量が閾値に達している場合で(ステップS119のN)、なおかつCPU処理面積およびGPU処理面積の割り当てが修正された経緯がある場合は(ステップS122のYES)、負荷判定部239はエフェクトプログラムの接続が不可であるとしてエフェクト追加不可コードを図示しないグラフィカル・ユーザ・インターフェース部に通知する(ステップS124)。この後に続く動作は前述と同じである。
以上のように、本実施形態では、エフェクトを画像の全画素に対してかける場合つまり最も負荷の大きいエフェクト処理を行う場合には、CPUプログラム241、GPUプログラム242、CPU/GPU制御プログラム243で構成されるエフェクトプログラムセット24がI/Oプログラム21に接続される。これにより画像全体に対するエフェクト処理がCPU111とGPU121とで分担して行われる。したがって、画像の全画素に対するエフェクト処理の速度向上を期待できる。
また、本実施形態では、プログラム判定部238が、エフェクトを画像の一部の領域に対してかける場合には、CPUプログラム241とGPUプログラム242とで予測処理時間が短い方のエフェクトプログラムを接続候補として選択することで、エフェクト処理の高速化を図ることができる。
さらに、本実施形態では、GPUプログラム242が接続候補として選択された場合、負荷判定部239が、GPUプログラム242が接続された場合を想定したGPUメモリ予測使用量を算出し、これが予め決められた閾値に達しているかどうかを判定する。達していなければGPUプログラム242がそのままI/Oプログラム21にエフェクト・プラグイン・プログラム22として接続される。また、閾値に達している場合には、接続候補がCPUプログラム241に切り替えられる。そして、負荷判定部239はCPU稼働率が予め決められた閾値に達しているかどうかを判定し、閾値に達していなければ、CPUプログラム241をI/Oプログラム21にエフェクト・プラグイン・プログラム22として接続する。このようにすることで、GPUメモリの枯渇時にあってもエフェクト処理の実行を高い確率で保証することができる。
さらに、本実施形態では、CPUプログラム241が接続候補として判定された場合、負荷判定部239が、CPUプログラム241が接続された場合を想定したCPU稼働率を算出し、これが予め決められた閾値に達しているかどうかを判定する。達していなければCPUプログラム241がそのままI/Oプログラム21にエフェクト・プラグイン・プログラム22として接続される。また、閾値に達している場合には、接続候補がGPUプログラム242に切り替えられる。そして、負荷判定部239はGPUメモリ予測使用量が予め決められた閾値に達しているかどうかを判定し、閾値に達していなければ、GPUプログラム242をI/Oプログラム21にエフェクト・プラグイン・プログラム22として接続する。このようにすることで、CPU稼働率に余裕がない時にあってもエフェクト処理の実行を高い確率で保証することができる。
また、本実施形態では、エフェクトプログラムセット24が接続候補として判定された場合、CPU予測処理時間とGPU予測処理時間とがほぼ等しくなる割合で全処理面積(全画素数)をCPU処理面積とGPU処理面積とに分配する。これにより、CPU111とGPU121それぞれのもつ能力の範囲でエフェクト処理をほぼ最速に行うことができる。
さらに、本実施形態では、接続候補として判定されたエフェクトプログラムセット24が接続された場合を想定したGPUメモリ予測使用量が閾値に達している場合に、処理面積割り当て算出部237が、CPU処理面積およびGPU処理面積の割り当てをGPUメモリの空き容量を考慮した値に修正する。これにより、GPUメモリ122の空き容量に余裕が無くなってきた状況にあっても、CPU111とGPU121とでのエフェクト処理の分担をして高速に行うことができる。
<第2の実施形態>
上記の第1の実施形態では、CPU処理時間保持部235に保持されているCPU処理時間と処理画素数からCPU予測処理時間を求めるとともに、GPU処理時間保持部236に保持されているGPU処理時間と処理画素数からGPU予測処理時間を求め、予測処理時間が短い方のエフェクトプログラムを接続候補として判定することとした。
第2の実施形態では、CPUプログラム241およびGPUプログラム242によるそれぞれのエフェクト処理時間の計測結果から、より高速な方のエフェクトプログラムが接続候補として判定される。
上記の第1の実施形態では、CPU処理時間保持部235に保持されているCPU処理時間と処理画素数からCPU予測処理時間を求めるとともに、GPU処理時間保持部236に保持されているGPU処理時間と処理画素数からGPU予測処理時間を求め、予測処理時間が短い方のエフェクトプログラムを接続候補として判定することとした。
第2の実施形態では、CPUプログラム241およびGPUプログラム242によるそれぞれのエフェクト処理時間の計測結果から、より高速な方のエフェクトプログラムが接続候補として判定される。
図9は第2の実施形態のエフェクトプログラム選択起動部23aの構成を示すブロック図である。図10はエフェクトプログラム選択起動部23aの動作の手順を示すフローチャートである。
このエフェクトプログラム選択起動部23aにおいて、CPU処理時間予測部233aは、画像データの一部に対してエフェクトの処理が施される場合に、記憶装置13からCPUプログラム241を読み出し、CPUプログラム241の処理時間を実際に計測する。一方、GPU処理時間予測部234aは、画像データの一部に対してエフェクトの処理が施される場合に、記憶装置13からGPUプログラム242を読み出し、GPUプログラム242の処理時間を計測する。ここで、CPU処理時間予測部233aおよびGPU処理時間予測部234aは、I/Oプログラム21から与えられる実際の画像データに対してエフェクト処理を行うことによって処理時間を計測してもよいが、必ずしも実際の画像データを用いる必要はない。すなわち、処理時間の計算に際して、CPUメモリ112、GPUメモリ122に格納されているデータは問わない。
プログラム判定部238は、このようにして計測されたCPUプログラム241とGPUプログラム242とで処理時間が短い方のエフェクトプログラムを接続候補として判定する。その他の構成および動作は第1の実施形態と同じである。このような構成を採用することによっても、第1の実施形態と同様の効果を得ることができる。
なお、本発明は以上説明した実施の形態には限定されるものではなく、本発明の技術思想の範囲内で種々の変形が可能である。
10…情報処理装置
13…記憶装置
21…I/Oプログラム
22…エフェクト・プラグイン・プログラム
23…エフェクトプログラム選択起動部
24…エフェクトプログラムセット
111…CPU
112…CPUメモリ
121…GPU
122…GPUメモリ
231…全画面処理判定部
232…処理面積演算部
233…CPU処理時間予測部
234…GPU処理時間予測部
235…CPU処理時間保持部
236…GPU処理時間保持部
237…処理面積割り当て算出部算出部
238…プログラム判定部
239…負荷判定部
239A…負荷情報更新部
239B…プログラム読み出し部
241…CPUプログラム
242…GPUプログラム
243…GPU制御プログラム
13…記憶装置
21…I/Oプログラム
22…エフェクト・プラグイン・プログラム
23…エフェクトプログラム選択起動部
24…エフェクトプログラムセット
111…CPU
112…CPUメモリ
121…GPU
122…GPUメモリ
231…全画面処理判定部
232…処理面積演算部
233…CPU処理時間予測部
234…GPU処理時間予測部
235…CPU処理時間保持部
236…GPU処理時間保持部
237…処理面積割り当て算出部算出部
238…プログラム判定部
239…負荷判定部
239A…負荷情報更新部
239B…プログラム読み出し部
241…CPUプログラム
242…GPUプログラム
243…GPU制御プログラム
Claims (11)
- 画像の処理を実行可能な第1のプロセッシング・ユニットと、
前記画像の処理を当該画像を区分する単位毎に並列に実行可能な第2のプロセッシング・ユニットと、
前記画像の処理を実行する主体として、前記第1のプロセッシング・ユニット、前記第2のプロセッシング・ユニット、およびその両方のいずれかを選択し、前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットの両方が選択された場合、前記画像を第1の領域と第2の領域とに分割し、分割された前記第1の領域および前記第2の領域それぞれの画像に対する処理を前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットに分担して実行させるように制御を行う制御手段と
を具備する情報処理装置。 - 請求項1に記載の情報処理装置であって、
前記制御手段は、前記画像の全体に対する処理を行う場合に、前記画像の処理を実行する主体として前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットの両方を選択する
情報処理装置。 - 請求項2に記載の情報処理装置であって、
前記制御手段は、前記第1のプロセッシング・ユニットによる前記第1の領域に対する第1の処理時間と前記第2のプロセッシング・ユニットによる前記第2の領域に対する第2の処理時間とが等しくもしくは略等しくなるように、前記第1の領域および前記第2の領域それぞれの面積を決定する
情報処理装置。 - 請求項3に記載の情報処理装置であって、
前記第1のプログラムユニットによる前記画像の処理で用いられる第1のメモリと、
前記第2のプログラムユニットによる前記画像の処理で用いられる第2のメモリとをさらに具備し、
前記制御手段は、前記第1の領域および前記第2の領域それぞれの画像の対する処理を前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットに分担して実行させる場合を想定した前記第2のメモリの予測使用量を計算し、前記計算された前記第2のメモリの予測使用量が閾値に達した場合、前記予測使用量が当該第2のメモリにおいて前記第2のプロセッシング・ユニットにより使用可能な容量内に収まるように、前記決定された前記第1の領域および前記第2の領域それぞれの面積を修正する
情報処理装置。 - 請求項4に記載の情報処理装置であって、
前記制御手段は、前記第2のメモリの予測使用量が当該第2のメモリの容量を超えない場合、前記第1のプロセッシング・ユニットの稼働率を取得し、この稼働率が閾値に達していない場合に、前記主体として選択された前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットに前記第1の領域および前記第2の領域それぞれの画像に対する処理を分担して実行させる
情報処理装置。 - 請求項5に記載の情報処理装置であって、
前記制御手段は、前記画像の一部に対して処理を行う場合、前記第1のプロセッシング・ユニットにより前記画像の一部に対して処理を行う場合を想定した予測処理時間と前記第2のプロセッシング・ユニットにより前記画像の一部に対して処理を行う場合を想定した予測処理時間を算出し、当該予測処理時間が短い方のプロセッシング・ユニットを前記画像の一部に対する処理を実行する主体として選択する
情報処理装置。 - 請求項6に記載の情報処理装置であって、
前記制御手段は、前記第2のプロセッシング・ユニットが前記主体として選択された場合、前記第2のプロセッシング・ユニットにより前記画像の一部に対して処理を行う場合を想定した前記第2のメモリの予測使用量を計算し、前記計算された前記第2のメモリの予測使用量が前記閾値に達していない場合、前記第2のプロセッシング・ユニットに前記画像の一部に対して処理を実行させる
情報処理装置。 - 請求項7に記載の情報処理装置であって、
前記制御手段は、前記第1のプロセッシング・ユニットが前記主体として選択された場合、前記第1のプロセッシング・ユニットの稼働率を取得し、この稼働率が閾値に達していない場合に、前記第1のプロセッシング・ユニットに前記画像の一部に対して処理を実行させる
情報処理装置。 - 請求項1ないし8に記載のいずれかの情報処理装置であって、
前記制御手段は、前記第1のプロセッシング・ユニットと、この第1のプロセッシング・ユニットを前記制御手段として機能させるプログラムにより構成される
情報処理装置。 - 画像の処理を実行可能な第1のプロセッシング・ユニットと、
前記画像の処理を当該画像を区分する単位毎に並列に実行可能な第2のプロセッシング・ユニットとを具備する情報処理装置の制御方法であって、
制御手段が、画像の処理を実行する主体として、前記第1のプロセッシング・ユニット、前記第2のプロセッシング・ユニット、およびその両方のいずれかを選択し、前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットの両方が選択された場合、前記画像を第1の領域と第2の領域とに分割し、分割された前記第1の領域および前記第2の領域それぞれの画像に対する処理を前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットに分担して実行させる
情報処理装置の制御方法。 - 画像の処理を実行可能な第1のプロセッシング・ユニットと、
前記画像の処理を当該画像を区分する単位毎に並列に実行可能な第2のプロセッシング・ユニットとを具備するコンピュータを動作させるプログラムであって、
前記画像の処理を実行する主体として、前記第1のプロセッシング・ユニット、前記第2のプロセッシング・ユニット、およびその両方のいずれかを選択し、前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットの両方が選択された場合、前記画像を第1の領域と第2の領域とに分割し、分割された前記第1の領域および前記第2の領域それぞれの画像に対する処理を前記第1のプロセッシング・ユニットと前記第2のプロセッシング・ユニットに分担して実行させるように制御を行う制御手段として
前記コンピュータを機能させるプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010139719A JP2012003619A (ja) | 2010-06-18 | 2010-06-18 | 情報処理装置、情報処理装置の制御方法、およびプログラム |
US13/157,934 US8482571B2 (en) | 2010-06-18 | 2011-06-10 | Information processing processing apparatus, method for controlling information processing apparatus, and program |
CN2011101652761A CN102289782A (zh) | 2010-06-18 | 2011-06-13 | 信息处理装置、用于控制信息处理装置的方法、和程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010139719A JP2012003619A (ja) | 2010-06-18 | 2010-06-18 | 情報処理装置、情報処理装置の制御方法、およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012003619A true JP2012003619A (ja) | 2012-01-05 |
Family
ID=45328223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010139719A Pending JP2012003619A (ja) | 2010-06-18 | 2010-06-18 | 情報処理装置、情報処理装置の制御方法、およびプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US8482571B2 (ja) |
JP (1) | JP2012003619A (ja) |
CN (1) | CN102289782A (ja) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101473955B1 (ko) * | 2013-01-28 | 2014-12-17 | 한국과학기술원 | Qr분해 연산 방법 및 기록매체 |
JP2015520881A (ja) * | 2013-03-07 | 2015-07-23 | ▲ホア▼▲ウェイ▼技術有限公司 | 描画の方法、装置、および端末 |
JP2016010112A (ja) * | 2014-06-26 | 2016-01-18 | オリンパス株式会社 | 画像処理装置 |
KR101627456B1 (ko) * | 2015-03-16 | 2016-06-07 | 성균관대학교산학협력단 | 그래픽 사용자 인터페이스 품질 개선방법 및 그 방법을 수행하는 프로그램이 저장된 기록매체 |
WO2016157329A1 (ja) * | 2015-03-27 | 2016-10-06 | 三菱電機株式会社 | クライアント装置及び通信システム及び描画処理制御方法及び描画処理制御プログラム |
JP2017164914A (ja) * | 2016-03-14 | 2017-09-21 | コニカミノルタ株式会社 | 描画処理装置、画像処理装置、描画処理方法及び描画処理プログラム |
WO2017163590A1 (ja) * | 2016-03-24 | 2017-09-28 | 富士フイルム株式会社 | 画像処理装置、画像処理方法、及び画像処理プログラム |
JP2019071024A (ja) * | 2017-10-11 | 2019-05-09 | コニカミノルタ株式会社 | シミュレート装置、装置設定方法および装置設定プログラム |
WO2023223408A1 (ja) * | 2022-05-17 | 2023-11-23 | 三菱電機株式会社 | 画像処理支援装置、画像処理支援方法及び画像処理支援プログラム |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2880622B1 (en) * | 2012-07-31 | 2020-11-04 | Intel Corporation | Hybrid rendering systems and methods |
WO2014123552A1 (en) * | 2013-02-08 | 2014-08-14 | Mellmo Inc. | Executing database queries using multiple processors |
KR20140114501A (ko) * | 2013-03-14 | 2014-09-29 | 삼성전자주식회사 | 영상 데이터 처리 방법 및 이를 지원하는 전자 장치 |
KR102126507B1 (ko) * | 2013-12-09 | 2020-06-24 | 삼성전자주식회사 | 센서 데이터 스트림을 처리하는 단말기, 시스템 및 방법 |
CN104866381B (zh) * | 2014-02-20 | 2018-10-12 | 联想(北京)有限公司 | 一种信息处理方法及第一电子设备 |
US9384016B2 (en) * | 2014-03-14 | 2016-07-05 | Wisconsin Alumni Research Foundation | Method of estimating program speed-up with highly parallel architectures |
CN106034210A (zh) * | 2015-03-09 | 2016-10-19 | 华为技术有限公司 | 一种图像编辑方法和装置 |
US10445850B2 (en) * | 2015-08-26 | 2019-10-15 | Intel Corporation | Technologies for offloading network packet processing to a GPU |
US10754744B2 (en) | 2016-03-15 | 2020-08-25 | Wisconsin Alumni Research Foundation | Method of estimating program speed-up in highly parallel architectures using static analysis |
WO2017163441A1 (ja) * | 2016-03-24 | 2017-09-28 | 富士ゼロックス株式会社 | 画像処理装置、画像処理方法、及び画像処理プログラム |
CN106454413B (zh) * | 2016-09-20 | 2019-10-08 | 北京小米移动软件有限公司 | 直播编码切换方法、装置及设备 |
JP6823251B2 (ja) * | 2016-10-13 | 2021-02-03 | 富士通株式会社 | 情報処理装置、情報処理方法及びプログラム |
CN106648895A (zh) * | 2016-12-26 | 2017-05-10 | 宇龙计算机通信科技(深圳)有限公司 | 一种处理数据的方法、装置及终端 |
US20190253357A1 (en) * | 2018-10-15 | 2019-08-15 | Intel Corporation | Load balancing based on packet processing loads |
CN109375979B (zh) * | 2018-10-22 | 2022-12-27 | 联洋国融(北京)科技有限公司 | 流量控制方法、终端及可读存储介质 |
CN110365962B (zh) * | 2019-07-17 | 2021-08-17 | Oppo广东移动通信有限公司 | 色域转换处理方法、装置以及电子设备 |
CN116402674B (zh) * | 2023-04-03 | 2024-07-12 | 摩尔线程智能科技(北京)有限责任公司 | Gpu的命令处理方法、装置、电子设备和存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7075541B2 (en) * | 2003-08-18 | 2006-07-11 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
JP2007512613A (ja) * | 2003-11-19 | 2007-05-17 | ルシッド インフォメーション テクノロジー リミテッド | Pcバス上の多重3−dグラフィックパイプラインのための方法およびシステム |
CN101091175B (zh) | 2004-09-16 | 2012-03-14 | 辉达公司 | 负载均衡 |
EP3413198A1 (en) * | 2007-04-11 | 2018-12-12 | Apple Inc. | Data parallel computing on multiple processors |
KR101467558B1 (ko) * | 2007-07-26 | 2014-12-01 | 엘지전자 주식회사 | 그래픽데이터 처리 장치 및 방법 |
US8284205B2 (en) * | 2007-10-24 | 2012-10-09 | Apple Inc. | Methods and apparatuses for load balancing between multiple processing units |
-
2010
- 2010-06-18 JP JP2010139719A patent/JP2012003619A/ja active Pending
-
2011
- 2011-06-10 US US13/157,934 patent/US8482571B2/en not_active Expired - Fee Related
- 2011-06-13 CN CN2011101652761A patent/CN102289782A/zh active Pending
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101473955B1 (ko) * | 2013-01-28 | 2014-12-17 | 한국과학기술원 | Qr분해 연산 방법 및 기록매체 |
JP2015520881A (ja) * | 2013-03-07 | 2015-07-23 | ▲ホア▼▲ウェイ▼技術有限公司 | 描画の方法、装置、および端末 |
KR101623415B1 (ko) * | 2013-03-07 | 2016-05-23 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 드로잉 방법, 장치, 및 단말 |
US9430810B2 (en) | 2013-03-07 | 2016-08-30 | Huawei Technologies Co., Ltd. | Drawing method, apparatus, and terminal |
JP2016010112A (ja) * | 2014-06-26 | 2016-01-18 | オリンパス株式会社 | 画像処理装置 |
KR101627456B1 (ko) * | 2015-03-16 | 2016-06-07 | 성균관대학교산학협력단 | 그래픽 사용자 인터페이스 품질 개선방법 및 그 방법을 수행하는 프로그램이 저장된 기록매체 |
WO2016157329A1 (ja) * | 2015-03-27 | 2016-10-06 | 三菱電機株式会社 | クライアント装置及び通信システム及び描画処理制御方法及び描画処理制御プログラム |
JP2017164914A (ja) * | 2016-03-14 | 2017-09-21 | コニカミノルタ株式会社 | 描画処理装置、画像処理装置、描画処理方法及び描画処理プログラム |
WO2017163590A1 (ja) * | 2016-03-24 | 2017-09-28 | 富士フイルム株式会社 | 画像処理装置、画像処理方法、及び画像処理プログラム |
CN108885777A (zh) * | 2016-03-24 | 2018-11-23 | 富士胶片株式会社 | 图像处理装置、图像处理方法及图像处理程序 |
JPWO2017163590A1 (ja) * | 2016-03-24 | 2019-02-14 | 富士フイルム株式会社 | 画像処理装置、画像処理方法、及び画像処理プログラム |
US10783604B2 (en) | 2016-03-24 | 2020-09-22 | Fujifilm Corporation | Image processing apparatus, image processing method, and image processing program |
JP2019071024A (ja) * | 2017-10-11 | 2019-05-09 | コニカミノルタ株式会社 | シミュレート装置、装置設定方法および装置設定プログラム |
WO2023223408A1 (ja) * | 2022-05-17 | 2023-11-23 | 三菱電機株式会社 | 画像処理支援装置、画像処理支援方法及び画像処理支援プログラム |
JP7499998B2 (ja) | 2022-05-17 | 2024-06-14 | 三菱電機株式会社 | 画像処理支援装置、画像処理支援方法及び画像処理支援プログラム |
Also Published As
Publication number | Publication date |
---|---|
CN102289782A (zh) | 2011-12-21 |
US8482571B2 (en) | 2013-07-09 |
US20110310107A1 (en) | 2011-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2012003619A (ja) | 情報処理装置、情報処理装置の制御方法、およびプログラム | |
US8144149B2 (en) | System and method for dynamically load balancing multiple shader stages in a shared pool of processing units | |
CN110032395B (zh) | 用于提高资源利用率的统一寄存器文件 | |
KR101885211B1 (ko) | Gpu의 자원 할당을 위한 방법 및 장치 | |
KR102510524B1 (ko) | 조합된 월드-공간 파이프라인 셰이더 스테이지 | |
US7366842B1 (en) | Creating permanent storage on the fly within existing buffers | |
US20070091088A1 (en) | System and method for managing the computation of graphics shading operations | |
KR102605313B1 (ko) | 가상화된 가속 처리 디바이스를 위한 조기 가상화 컨텍스트 전환 | |
US10388056B2 (en) | Split frame rendering | |
US9043806B2 (en) | Information processing device and task switching method | |
KR20120058605A (ko) | Gpu 워크의 하드웨어 기반 스케쥴링 | |
KR102346119B1 (ko) | 입력 인덱스 스트림 내 프리미티브의 식별 | |
KR20140122835A (ko) | 프로세스 병렬 처리 장치 및 방법 | |
US10915359B2 (en) | Variable latency request arbitration | |
US7685370B1 (en) | Data synchronization with multiple producers | |
TW201435581A (zh) | 透過管線狀態繫結觸發的效能事件擷取 | |
CN110168497A (zh) | 可变波阵面大小 | |
US20150121392A1 (en) | Scheduling in job execution | |
JP2023527322A (ja) | ワークロード処理のためのタスクグラフスケジューリング | |
KR102248787B1 (ko) | Gpu의 리소스에 대한 전력 소비 제어방법 및 장치 | |
US20180246655A1 (en) | Fused shader programs | |
JP6368452B2 (ja) | 非同期のデバイスによって実行されるタスクのスケジューリングの向上 | |
KR20230124598A (ko) | 높은 처리량 및 낮은 오버헤드 커널 개시를 위한 압축 커맨드 패킷 | |
US12014208B2 (en) | Techniques for reducing serialization in divergent control flow | |
WO2014016950A1 (ja) | 並列計算機システムおよび並列計算機システムへの処理負荷配置方法 |