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

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

Info

Publication number
JP2017199091A
JP2017199091A JP2016087590A JP2016087590A JP2017199091A JP 2017199091 A JP2017199091 A JP 2017199091A JP 2016087590 A JP2016087590 A JP 2016087590A JP 2016087590 A JP2016087590 A JP 2016087590A JP 2017199091 A JP2017199091 A JP 2017199091A
Authority
JP
Japan
Prior art keywords
processing
cpu
gpu
effect
effective performance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016087590A
Other languages
English (en)
Inventor
遼太 鈴木
Ryota Suzuki
遼太 鈴木
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2016087590A priority Critical patent/JP2017199091A/ja
Publication of JP2017199091A publication Critical patent/JP2017199091A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Image Processing (AREA)

Abstract

【課題】画像エフェクト処理を高速化することが可能な情報処理装置を提供する。
【解決手段】複数のプロセッサと、前記複数のプロセッサの性能を取得する性能取得手段と、前記複数のプロセッサの負荷状況を算出する負荷状況算出手段と、前記性能取得手段により取得した性能と、前記負荷状況算出手段により算出した負荷状況に基づき前記複数のプロセッサでそれぞれが行う前記画像エフェクト処理を決定する画像エフェクト処理決定手段とを備え、前記画像エフェクト処理決定手段により決定した画像エフェクト処理に基づき前記複数のプロセッサにそれぞれ分担して前記画像エフェクト処理を実行させるように制御する。
【選択図】図1

Description

本発明は、情報処理装置に関する。
昨今の組み込みシステムでは、処理の内容に応じてプロセッサを使い分ける、ヘテロジニアス・マルチプロセッサ構成が主流である。それぞれアーキテクチャの異なるプロセッサが並列に演算処理を行うことで、演算時間の短縮を図ることが可能となる。
ヘテロジニアス・マルチプロセッサとしてGPU(Graphics Processing Unit)を利用した構成が注目されている。GPUは、本来CG(Computer Graphics)等のグラフィックス描画を目的に利用される。このGPUは、並列演算処理を特徴としており、複数の演算器がそれぞれ独立して同一の命令を実行するという動作メカニズムによって実現されている。このため、画像エフェクト処理のように、実行順番に依存しないことや、大量のデータに対して並列に同一の演算を繰り返す処理において、優れた性能を発揮する。
そこで、近年では、GPGPU(General Purpose computation on GPU)と呼ばれるGPUを汎用計算に適用する技術が登場している。
現在までに、GPGPU技術は様々な分野への応用が進んでおり、画像処理、音声処理、コーデック処理といったデジタル信号処理の高速化をはじめとして、流体シミュレーション、物理シミュレーション等の数値解析、気候シミュレーション、天体シミュレーションといった科学技術計算にも適用されている。
ここで、一般的なGPGPUシステムは、CPU(Central Processing Unit)とGPUによって構成されており、主にCPUが制御用プロセッサ、GPUが演算用プロセッサとしての役割を担っている。すなわち、GPUは、CPUによって制御されており、GPUが演算処理を実行している間、CPUは演算待ちとなっている。従って、GPUのみに依存してきた演算処理を、CPUとGPUで負荷分散して実行することによって、更なる高速化が見込める。
先行技術として、GPGPUによる画像エフェクト処理において、エフェクト処理に使われるGPUのメモリ予測使用量と、画像処理の条件に基づき、1つの画像フレームでCPUとGPUが処理を行う最適な画像面積を決定し、CPUとGPUが並列に画像処理を実行するシステムが特許文献1で開示されている。
特開2012−3619号公報
上述の特許文献1では、例えばCPUとGPUの負荷分散量の決定方法に、エフェクト処理に使われるメモリ使用量を予測する静的な負荷状況取得方法が記載されている。しかし、実際のシステムでは、GPUが本来の機能であるグラフィックス描画処理を行うことも想定され、GPUはシステム内で常に100%の余力を持ってGPGPU処理に専念出来るとは限らない。また、画像をCPU処理領域、GPU処理領域の2つに分割して、それぞれ画像エフェクト処理を行う例が示されているが、分割した境界部をオーバーラップして処理する必要があるため、オーバーヘッドが発生する。仮に、複数個の画像エフェクト処理が連続して実行される場合、累積されるオーバーヘッドは無視できない量になる。
そこで、本発明は、連続して実行される複数の画像エフェクト処理に対して、上述のオーバーヘッドの削減と、各プロセッサの負荷状況を動的に取得し、その稼働率に基づきCPU、GPU、それぞれが行う最適な処理配分を決定し、GPGPUによる画像エフェクト処理を高速化することが可能な情報処理装置を提供することを目的とする。
上記の目的を達成するために、本発明に係る情報処理装置は、
複数の画像エフェクト処理を連続して実行する情報処理装置であって、
複数のプロセッサと、
前記複数のプロセッサの性能を取得する性能取得手段と、
前記複数のプロセッサの負荷状況を算出する負荷状況算出手段と、
前記性能取得手段により取得した性能と、前記負荷状況算出手段により算出した負荷状況に基づき前記複数のプロセッサでそれぞれが行う前記画像エフェクト処理を決定する画像エフェクト処理決定手段とを備え、
前記画像エフェクト処理決定手段により決定した画像エフェクト処理に基づき前記複数のプロセッサにそれぞれ分担して前記画像エフェクト処理を実行させるように制御することを特徴とする。
本発明に係る情報処理装置によれば、連続して実行される複数の画像エフェクト処理に対して、各プロセッサの性能、稼働率に基づきCPU、GPUが行う処理配分が最適化され、GPGPUによる画像エフェクト処理が高速化することが可能となる。
本発明の第1の実施例に係る情報処理装置の構成を示す図である。 本発明の第1の実施例に係る情報処理装置におけるアプリケーションプログラムの構成を示す図である。 本発明の第1の実施例に係る情報処理装置におけるエフェクト処理段数算出の動作の手順を示すフローチャートである。 本発明の第1の実施例に係る情報処理装置におけるエフェクトのパイプライン処理を示す図である。 本発明の第2の実施例に係る情報処理装置におけるアプリケーションプログラムの構成を示す図である。 本発明の第2の実施例に係る情報処理装置におけるエフェクト処理段数算出の動作の手順を示すフローチャートである。 本発明の第2の実施例に係る情報処理装置におけるエフェクトのパイプライン処理を示す図である。
以下、本発明の好ましい実施の形態を添付の図面を参照して詳細に説明する。
[実施例1]
図1に、本発明の第1の実施例に係る情報処理装置のブロック図を示す。
本実施例に関わる情報処理装置は、撮像した画像データを記録・再生することが可能な情報処理装置であり、撮像又は再生した画像データに対し、所定のエフェクト処理を実行することが可能となっている。本実施例では、同一のエフェクト処理を複数回連続して実行する場合を説明するものとする。
[情報処理装置の構成]
操作部105は、ユーザの指令を受け付け、指令に応じた制御信号を生成し、CPU102に供給する。例えば、操作部105は、ユーザ指令を受け付ける入力デバイスとして、ボタンやタッチパネルなどからなる。
撮像部101は、被写体の光学像を光電変換して画像データに変換し、メモリ104に書き込む。CPU102は、操作部105から入力される制御信号に基づき、本実施例の情報処理装置を構成する各処理部を制御する。ここで、CPU102は、CPU102とGPU103がそれぞれ実行する最適なエフェクト処理段数の決定を行い、決定したエフェクト処理段数に従い、メモリ104に格納されたCPU102用の画像処理プログラム(以降CPUプログラムと呼ぶ)を実行することにより、メモリ104に格納された画像データに対してエフェクト処理を施し、メモリ104に書き込む。エフェクト処理段数の決定方法に関わる詳細な説明は後述する。
GPU103は、メモリ104に格納された画像データに対して、OSD(オンスクリーン・ディスプレイ)の多重描画処理を行い、表示部106へ出力する。また、GPU103は、CPU102の指示に基づきメモリ104に格納されたGPU103用の画像処理プログラム(以降GPUプログラムと呼ぶ)を実行することにより、メモリ104に格納された画像データに対し、エフェクト処理を施し、メモリ104に書き込む。
表示部106は、GPU103により入力された画像データを表示するディスプレイである。メディア107は、CPU102の指示に基づき、メモリ104に格納された画像データを記憶する記憶媒体である。内部バス108は、本実施例の情報処理装置を構成する各処理部を接続するインターコネクト・バスである。
本実施例の情報処理装置は、以上のように構成されている。
[アプリケーションプログラムの構成]
ここで、本実施例の情報処理装置で実行可能なエフェクト処理に関して図2に示すアプリケーションプログラム構成に基づき説明を行う。
図2に示すように、アプリケーションプログラムは、4つの平滑化エフェクトから成り、CPU102により算出された最適なエフェクト処理段数に基づくCPUプログラムもしくはGPUプログラムの組み合わせで構成される。ここでは、4つのエフェクトから構成する例を示しているが、これに限定されるものではなく、任意のエフェクト数で構成することも可能である。
アプリケーションプログラムの動作としては、メモリ104から、画像データを読み出し、1段目の平滑化エフェクトを実行し、その結果をメモリ104に書き込む。2段目以降の平滑化エフェクトも同様に、前段の平滑化エフェクト結果をメモリ104から読み出し、平滑化エフェクトを実行し、その結果をメモリ104に書き込む。ここで示す平滑化エフェクト処理の内容は一般的なものであるため、その処理に関わる詳細な説明は省略する。
[エフェクト処理段数の決定方法]
ここで、図3に示すフローチャートに基づいて最適なエフェクト処理段数の決定方法について説明する。
まず、ステップS201において、映像フレームナンバーを0(初期化)とし、1枚目の画像データに対するエフェクト処理を開始するための準備を行う。
ここで、1枚目の画像データにエフェクト処理を施すに当たり、性能情報を取得する(ステップS202)。性能情報は、CPU102とGPU103の平滑化エフェクト処理の実行速度を相対的な性能比で表したものであり、これは予め測定して保存しておいた情報である。また、各演算命令の処理サイクル、命令数、CPU102、GPU103の動作周波数から、平滑化エフェクト処理の性能比を算出しても良い。
次に、CPU102とGPU103の稼働率を算出する(ステップS203)。ここでは各プロセッサが演算実行中であるか否かのステータスを表すビジーフラグを設け、CPU102によりビジーフラグのHIGH状態、LOW状態の時間を測定し、その時間の割合をもとにそれぞれの稼働率[%]を算出するものとする。また、ここでは本実施例での単位時間とは、1つの画像データのエフェクト処理における、CPU処理とGPU処理のいずれか先に行われる処理が完了するまでの時間とするが、これに限定されるものではなく、任意に指定した時間としてもよい。
次に、ステップS202で取得した性能情報と、ステップS203で算出したCPU102とGPU103の稼働率をもとに、次式(1)、(2)に基づきCPU102とGPU103の実効性能を算出する(ステップS204)。
CPU102実効性能=GPU103性能値×GPU103稼働率[%]・・・(1)
GPU103実行性能=CPU102性能値×CPU102稼働率[%]・・・(2)
ここで、算出した実効性能とは、CPU102とGPU103の実効性能比を表しており、平滑化エフェクト1段分の相対的な処理時間に相当する。
次に、ステップS204で算出したCPU102とGPU103の実効性能をもとに、CPU102とGPU103が分担するエフェクト処理の段数を次式(3)、(4)に基づき決定する(ステップS205)。
CPU102によるエフェクト処理段数=全エフェクト処理段数×GPU103実効性能/(CPU102実効性能+GPU103実効性能)・・・(3)
GPU103によるエフェクト処理段数=全エフェクト処理段数×CPU102実効性能/(CPU102実効性能+GPU103実効性能)・・・(4)
ここで、エフェクトの処理段数は整数であるため、計算結果が小数になった場合は、四捨五入等により整数値へ変換を行う。また、CPU102によるエフェクト処理とGPU103によるエフェクト処理段数は、それぞれ連続して実行するように構成する。そして、ステップS204で算出した実効性能とステップS205で算出した処理段数をもとに、1フレームのエフェクト処理に要する相対的な処理時間を次式(5)、(6)に基づき算出する(ステップS206)。
CPU102の処理時間=CPU102による平滑化エフェクト1段分の処理時間×CPU102平滑化エフェクト処理段数・・・(5)
GPU103の処理時間=GPU103による平滑化エフェクト1段分の処理時間×GPU103平滑化エフェクト処理段数・・・(6)
このステップS201からステップS206までが、1枚目の画像データに関する処理である。そして、ステップS207で、フレームナンバーをインクリメントし、次の画像データのエフェクト処理を開始する。
続いて、2枚目以降の画像データへのエフェクト処理の動作手順を説明する。まず、ステップS208では、ユーザの記録停止が操作部105から指示されたかどうかを判定する。記録停止が指示された場合は、処理は終了する。指示されていなければ処理はステップS209に移行する。
ステップS209からステップS212は、上述のステップS202からステップS205と同様の手順を実行する。ステップS213では、ステップS206と異なる方法でCPU102とGPU103の処理時間を算出する。まず、CPU102とGPU103の平滑化エフェクト1段分の相対的な処理時間を次式(7)、(8)に基づき算出する。
CPU102エフェクト1段分の処理時間=1フレーム前に算出したCPU102による平滑化エフェクト1段分の処理時間×1フレーム前処理時に算出したCPU102の稼働率/現フレーム処理時に算出したCPU102の稼働率・・・(7)
GPU103エフェクト1段分の処理時間=1フレーム前に算出したGPU103による平滑化エフェクト1段分の処理時間×1フレーム前の平滑化エフェクト処理時に算出したGPU103の稼働率/現フレームの平滑化エフェクト処理時に算出したGPU103の稼働率・・・(8)
続いて、1フレーム分の相対的な処理時間を次式(9)、(10)に基づき算出する。
CPU102の1フレーム処理時間=CPU102による平滑化エフェクト処理段数×CPU102エフェクト1段分の処理時間・・・(9)
GPU103の1フレーム処理時間=GPU103による平滑化エフェクト処理段数×GPU103エフェクト1段分の処理時間・・・(10)
ここで、本実施例の情報処理装置におけるエフェクト処理は、フレームごとにCPU102処理とGPU103処理とでパイプライン処理を実行することを前提としたシステムとなっており、稼働率を算出する周期となる単位時間は、パイプラインのステージ単位である。ここで、1フレーム目のCPU102処理とGPU103処理を、前半処理、後半処理と区別した場合、1フレーム目の後半処理は2回目の稼働率算出のタイミングを跨いでしまうため、1回目に算出した稼働率に基づく後半処理の相対的な処理時間は、2回目に算出した稼働率に基づく相対的な処理時間へ次式(11)に基づき更新される(ステップS214)。
更新される後半処理の相対的な処理時間=1フレーム前に算出した後半処理の相対的な処理時間比×1フレーム前処理開始時に算出した稼働率/現フレーム処理開始時に算出した稼働率・・・(11)
次に、更新された相対的な処理時間をもとに、CPU102は、画像データに対するエフェクト処理におけるCPU102とGPU103の処理段数の最適化を行う(ステップS215)。ここで、パイプライン処理における最適化とは、同一ステージ内の1フレーム前の後半処理の処理時間と現フレームの前半処理の処理時間が、最も近くなるような処理段数の組み合わせを網羅的に算出し、処理段数を決定することを示す。ここでも同様に、CPU102によるエフェクト処理とGPU103によるエフェクト処理段数は、連続して実行するように構成する。
そして、フレームナンバーをインクリメントし、次の画像データのエフェクト処理を開始する(ステップS216)。このように、ステップS215では、常に同一ステージ内の処理時間が最適化されるように、CPU102とGPU103の処理段数を決定する。以上のように最適なエフェクト処理段数を決定する。
[本発明の効果の検証]
ここで、具体的な数値例を用いて、図4に示す3フレーム分の映像データに対してエフェクト処理を実行した場合のCPU102とGPU103のパイプライン処理に基づきエフェクト処理段数最適化による効果の検証を実施する。
まず、本実施例では、CPUとGPUの性能比を1:7とし、1回目に算出したCPU102とGPU103の稼働率を、CPU102を70%、GPU103を30%とする。ここで、性能比と稼働率をもとに、CPU102とGPU103の実効性能は、式(1)、(2)に基づき以下のように求められる。
CPU102実効性能=7×0.3=2.1
GPU103実効性能=1×0.7=0.7
そして、CPU102とGPU103の実効性能比は、2.1:0.7=3:1となり、平滑化エフェクト1段分の相対的な処理時間は以下のようになる。
CPU102の平滑化エフェクト1段分の処理時間=3
GPU103の平滑化エフェクト1段分の処理時間=1
続いて、算出した実効性能をもとに、平滑化エフェクト処理が4回行われる場合のCPU102およびGPU103の処理段数は、式(3)、(4)に基づき以下のように求められる。
CPU102による平滑化エフェクト処理段数=4×1/(1+3)=1
GPU103による平滑化エフェクト処理段数=4×3/(1+3)=3
つまり、4段構成の平滑化エフェクトは、CPU102が1段、GPU103が3段と分担して処理を実行するようにエフェクト処理段数を決定する。ここで、2回目に算出したCPU102とGPU103の稼働率を、CPU102を40%、GPU103を5%とする。この稼働率をもとに、CPU102とGPU103の実効性能は式(1)、(2)に基づき、以下のように求められる。
CPU102実効性能=7×0.05=0.35
GPU103実効性能=1×0.4=0.4
そして、この実効性能をもとに、CPU102およびGPU103の処理段数は式(3)、(4)に基づき、以下のように求められる。
CPU102による平滑化エフェクト処理段数=4×0.4/(0.4+0.35)≒2
GPU103による平滑化エフェクト処理段数=4×0.35/(0.4+0.35)≒2
ここで、1回目に算出した稼働率と2回目に算出した稼働率を比較すると、CPU102は70%から40%、GPU103は30%から5%となり、1フレームの処理時間は式(7)、(8)、(9)、(10)に基づき、以下のように求められる。
CPU102平滑化エフェクト1段分の処理時間=3×70/40=5.25
GPU103平滑化エフェクト1段分の処理時間=1×30/5=6
CPU102の1フレーム処理時間=2×5.25=10.5
GPU103の1フレーム処理時間=2×6=12
次に、2回目に算出した稼働率によって更新される1フレーム前の後半処理(GPU103処理)の相対的な処理時間は、式(11)に基づき以下のように求められる。
更新される後半処理(GPU103処理)の相対的な処理時間=3×30/5=18
次に、更新された後半処理の相対的な処理時間をもとに、現フレームのエフェクト処理におけるCPU102とGPU103の処理段数の最適化を行う。
(I)CPU102処理段数=4、GPU103処理段数=0である場合
式(9)を用いて、CPU102の平滑化エフェクト4段分の処理時間を算出する。
現フレームの前半処理=4×3×70/40=21
(II)CPU102処理段数=3、GPU103処理段数=1である場合
式(9)を用いて、CPU102の平滑化エフェクト3段分の処理時間を算出する。
現フレームの前半処理=3×3×70/40=15.75
(III)CPU102処理段数=1、GPU103処理段数=3である場合
式(9)を用いて、CPU102の平滑化エフェクト1段分の処理時間を算出する。
現フレームの前半処理=1×3×70/40=5.25
(IV)CPU102処理段数=0、GPU103処理段数=4である場合
式(9)を用いて、CPU102の平滑化エフェクト0段分の処理時間を算出する。
現フレームの前半処理=0×3×70/40=0
上記計算結果により、現フレームの前半処理(CPU102処理)の処理時間が、1フレーム前の後半処理(GPU103処理)の処理時間に最も近いCPU102とGPU103の処理段数の組み合わせは、CPU102処理段数=3、GPU103処理段数=1であることがわかる。そして、GPU103処理時間を1段分の処理時間に変更する。
次に、3回目に算出したCPU102とGPU103の稼働率を、CPU102を40%、GPU103を10%とする。まず、稼働率をもとに、CPU102とGPU103の実効性能を式(1)、(2)に基づき、以下のように求められる。
CPU102実効性能=7×0.1=0.7
GPU103実効性能=1×0.4=0.4
次に、この実効性能をもとに、CPU102およびGPU103の処理段数を式(3)、(4)に基づき、以下のように求められる。
CPU102による平滑化エフェクト処理段数=4×0.4/(0.4+0.7)≒1
GPU103による平滑化エフェクト処理段数=4×0.7/(0.4+0.7)≒3
次に、この処理段数をもとに、CPU102およびGPU103の1フレーム分の処理時間を式(7)、(8)、(9)、(10)に基づき求められる。
CPU102エフェクト1段分の処理時間=5.25×40/40=5.25
GPU103エフェクト1段分の処理時間=6×5/10=3
CPU102のフレーム処理時間=1×5.25=5.25
GPU103のフレーム処理時間=3×3=9
次に、3回目に算出した稼働率によって更新される後半処理(GPU103処理)の処理時間を式(11)に基づき、以下のように求められる。
更新される後半処理(GPU103処理)=6×5/10=3
ここで、1フレーム前の後半処理(GPU103処理)の処理時間と、現フレームの前半処理(CPU102処理)の処理時間を比較すると、処理時間はほぼ等しい。従って、処理段数は変更することなく、次の画像データのエフェクト処理が開始される。
以上のように、本実施例に関わる情報処理装置では、各プロセッサの稼働率を単位時間毎に算出し、それぞれの稼働率をもとに、実効性能を算出する。エフェクト処理段数は、実効性能をもとに算出し、常に単位時間毎のパイプラインステージで各プロセッサの処理段数の組み合わせが最適化される。結果的に、各プロセッサが処理を実行しない期間を最小限に抑えられるため、処理速度の向上が期待できる。
[実施例2]
本発明の第2の実施例に係る情報処理装置の構成は、第1の実施例に示す情報処理装置と同様であるため、その構成に関わる説明は省略する。第1の実施例では、画像データに対して、同一のエフェクト処理を複数回実行する場合について説明したのに対し、本実施例では、異なる4つのエフェクトを連続して実行する場合について説明するものとする。
[アプリケーションプログラムの構成]
ここで、本実施例の情報処理装置で実行可能なエフェクト処理に関して図5に示すアプリケーションプログラム構成に基づき説明を行う。
図5に示すように、アプリケーションプログラムは、“ポスタリゼーション”、“ストローク付加”、“平滑化”、“エッジ検出”のエフェクトから成り、CPU102により算出された最適なエフェクト処理段数に基づくCPUプログラムもしくはGPUプログラムの組み合わせで構成される。各エフェクト処理の内容自体は一般的なものであるため、処理に関わる詳細な説明は省略する。
[エフェクト処理段数の決定方法]
ここで、図6に示すフローチャートに基づいて、最適なエフェクト処理段数の決定方法について説明する。
尚、第1の実施例に対する差分となる、エフェクト情報の取得方法(ステップS303)、処理エフェクトの選択方法(ステップS307、ステップS312)、エフェクト選択の最適化方法(ステップS314)を詳細に説明するものとし、第1の実施形態と同様の処理に関しては詳細な説明を省略する。
まず、ステップS301では、映像フレームナンバーを0(初期化)とし、1枚目の画像データに対するエフェクト処理を開始するための準備を行う。
そして、性能情報を取得する(ステップS302)。
次に、ステップS303では、エフェクト情報を取得する。エフェクト情報は、“ポスタリゼーション”“ストローク付加”“平滑化エフェクト”“エッジ検出”4つのエフェクト処理に対するCPU102もしくはGPU103の実行速度を、相対的な演算量比として表したものである。これは、性能情報と同様に、予め測定して保存しておいた情報である。また、各演算命令の処理サイクル、命令数、CPU102、GPU103の動作周波数から、エフェクト間の演算量比を算出しても良い。また、本実施例では、CPU102処理におけるエフェクト間演算量比を利用するが、これはGPU103処理におけるエフェクト間演算量比であっても良い。
そして、ステップS304では、CPU102とGPU103の各エフェクトのCPU102とGPU103の実効性能を算出する。ここで算出する実効性能とは、エフェクト間のCPU102とGPU103の相対的な処理時間に相当し、各エフェクトに対する実行性能を相対的に比較するために、ステップS303で取得したエフェクト間演算量比を用いる。CPU102処理におけるエフェクト演算量比を用意した場合、各エフェクトのCPU102の実効性能は次式(12)で表される。
CPU102実効性能=実効性能比で示したCPU102の値×エフェクト演算量比の値・・・(12)
また、GPU103処理における各エフェクトのGPU103の実効性能は次式(13)で表される。
GPU103実効性能=CPU102実効性能×実効性能比で示したGPU102の値・・・(13)
ステップS304で算出する実効性能算出の手順をまとめると、まず、ある1つのエフェクトに対するCPU102とGPU103の実効性能を算出する。このCPU102とGPU103の実効性能比は、予め用意されている性能比の逆数で表される。続いて、CPU102におけるエフェクト間演算量比を用意しているのであれば、式(12)を用いて、各エフェクト間の相対的なCPU102の実効性能を算出する。式(13)により、式(12)に基づき算出されたCPU102の実行性能からGPU102の実行性能を算出する。
このステップS304で算出する実効性能は、後に行うエフェクト処理で実効性能を算出する際に用いる基準値である。続いて、第1の実施例と同様の方法で稼働率を算出する(ステップS305)。
次に、ステップS306では、ステップS304で算出したCPU102とGPU103の実効性能と、ステップS305で算出した稼働率を用いて、各エフェクトにおけるCPU102とGPU103の実効性能を式(14)、(15)に基づき算出する。
CPU102実効性能=CPU102実効性能×(100/稼働率)・・・(14)
GPU103実効性能=GPU103実効性能×(100/稼働率)・・・(15)
次に、ステップS307では、CPU102とGPU103で分担して実行するエフェクト処理のうち、処理時間の長い方が、最短となるエフェクトの組み合わせを網羅的に探索し、CPU102とGPU103がどのエフェクト処理を実行するかを決定する。ただし、第一の実施例と同様に、パイプライン処理を前提としたシステムであるため、CPU102によるエフェクト処理とGPU103によるエフェクト処理は、それぞれ連続して実行するように構成する。
そして、ステップS308で、フレームナンバーをインクリメントし、次の画像データのエフェクト処理を開始する。ステップS309では、ユーザの記録停止が操作部105から指示されたかどうかを判定する。記録停止が指示された場合は、処理は終了する。指示されていなければ処理はステップS310に移行する。ステップS310からステップS312は、上述のステップS305からステップS307と同様の手順を実行する。
ステップS313では、第1の実施例と同様に、稼働率を算出する周期となる単位時間は、パイプラインのステージ単位であり、CPU102処理とGPU103処理を前半処理、後半処理と区別した場合、前フレームの後半処理は現フレームの稼働率算出のタイミングを跨いでしまうため、前フレーム処理時に算出した稼働率に基づく後半処理の相対的な処理時間は、現フレーム処理時に算出した稼働率に基づく相対的な処理時間へ更新される。
次に、更新された相対的な処理時間をもとに、CPU102は、現フレームのエフェクト処理におけるCPU102とGPU103の処理エフェクトの最適化を行う(ステップS314)。ステップS314における最適化とは、同一ステージ内の1フレーム前の後半処理の処理時間と現フレームの前半処理の処理時間が、最も近くなるような処理段数の組み合わせを網羅的に算出し、処理段数を決定することを示す。ここでも同様に、CPU102による処理エフェクトとGPU103による処理エフェクトは、連続して実行するように構成する。
そして、フレームナンバーをインクリメントし、次の画像データのエフェクト処理を開始する(ステップS315)。このように、ステップS314では、常に同一ステージ内の処理時間が最適化されるように、CPU102とGPU103の処理段数を決定する。以上のように最適なエフェクト処理段数を決定する。
[本発明の効果の検証]
ここで、具体的な数値例を用いて、図7に示す3フレーム分の映像データに対してエフェクト処理を実行した際のCPU102とGPU103のパイプライン処理に基づきエフェクト選択の最適化による効果の検証を実施する。まず、CPU102とGPU103の実効性能を算出する。各エフェクトに対するCPU102とGPU103の実効性能を、CPU102とGPU103の性能比、及びCPU処理におけるエフェクト演算量重みより、式(12)、式(13)を用いて求める。
(I)ポスタリゼーション
CPU102とGPU103の性能比が1:0.2、CPU処理におけるエフェクト演算量重み1であるとすると、式(12)に基づき実行性能は以下のようになる。
CPU102実効性能=1×1=1
GPU103実効性能=1×0.2=0.2
(II)ストローク付加
CPU102とGPU103の性能比が1:2、CPU処理におけるエフェクト演算量重みが3であるとすると、実行性能は以下のようになる。
CPU102実効性能=1×3=3
GPU103実効性能=3×2=6
(III)平滑化
CPU102とGPU103の性能比が1:0.25、CPU処理におけるエフェクト演算量重みが4であるとすると、実行性能は以下のようになる。
CPU102実効性能=1×4=4
GPU103実効性能=4×0.25=1
(IV)エッジ検出
CPU102とGPU103の性能比が1:0.33、CPU処理におけるエフェクト演算量重みが5であるとすると、実行性能は以下のようになる。
CPU102実効性能=1×5=5
GPU103実効性能=5×0.33=1.65
以上が各エフェクト処理に対するCPU102とGPU103の実効性能である。続いて、1フレーム目のエフェクト処理が開始する。
1回目に算出したCPU102とGPU103の稼働率は、CPU102が10%、GPU103が50%であるものとし、式(14)、(15)を用いて、各エフェクトのCPU102とGPU103の実効性能を算出する。
(I)ポスタリゼーション
式(14)、(15)より、CPU102とGPU103の実効性能は以下の通りである。
CPU102実効性能=1×100/10=10
GPU103実効性能=0.2×100/50=0.4
(II)ストローク付加
式(14)、(15)よりCPU102とGPU103の実効性能を算出する。
CPU102実効性能=3×100/10=30
GPU103実効性能=6×100/50=12
(III)平滑化
式(14)、(15)よりCPU102とGPU103の実効性能を算出する。
CPU102実効性能=4×100/10=40
GPU103実効性能=1×100/50=2
(IV)エッジ検出
式(14)、(15)よりCPU102とGPU103の実効性能を算出する。
CPU102実効性能=5×100/10=50
GPU103実効性能=1.65×100/50=3.3
ここで、CPU102とGPU103で分担して実行するエフェクト処理の内、処理時間の長い方が最短となるエフェクトの組み合わせを、上記計算結果を用いて網羅的に探索し、CPU102とGPU103がどのエフェクト処理を実行するかを決定する。
(I)CPU102処理:なし
GPU103処理:“ポスタリゼーション”“ストローク付加”“平滑化”“エッジ検出”
CPU102処理時間=0
GPU103処理時間=0.4+12+2+3.3=17.7
(II)CPU102処理:“ポスタリゼーション”
GPU103処理:“ストローク付加”“平滑化”“エッジ検出”
CPU102実効性能=10
GPU103実効性能=12+2+3.3=17.3
(III)CPU102処理:“ポスタリゼーション”“ストローク付加”
GPU103処理:“平滑化”“エッジ検出”
CPU102実効性能=10+30=40
GPU103実効性能=2+3.3=5.3
(IV)CPU102処理:“ポスタリゼーション”“ストローク付加”“平滑化”
GPU103処理:“エッジ検出”
CPU102実効性能=10+30+40=80
GPU103実効性能=3.3
(V)CPU102処理:“ポスタリゼーション”“ストローク付加”“平滑化”“エッジ検出”
GPU103処理:なし
CPU102実効性能=10+30+40+50=130
GPU103実効性能=0
上記計算結果より、“ポスタリゼーション”のエフェクト処理をCPU102が実行し、“平滑化”“エッジ検出”“ストローク付加”のエフェクト処理をGPU103が実行することになる。
次に、2フレーム目のエフェクト処理が開始する。2回目に算出したCPU102とGPU103の稼働率は、CPU102が20%、GPU103が20%であるものとし、式(14)、(15)を用いて、各エフェクトのCPU102とGPU103の実効性能を算出する。
(I)ポスタリゼーション
式(14)、(15)より、CPU102とGPU103の実効性能は以下の通りである。
CPU102実効性能=1×100/20=5
GPU103実効性能=0.2×100/20=1
(II)ストローク付加
式(14)、(15)よりCPU102とGPU103の実効性能を算出する。
CPU102実効性能=3×100/20=15
GPU103実効性能=6×100/20=30
(III)平滑化
式(14)、(15)よりCPU102とGPU103の実効性能を算出する。
CPU102実効性能=4×100/20=20
GPU103実効性能=1×100/20=5
(IV)エッジ検出
式(14)、(15)よりCPU102とGPU103の実効性能を算出する。
CPU102実効性能=5×100/20=25
GPU103実効性能=1.65×100/20=8.25
ここで、CPU102とGPU103で分担して実行するエフェクト処理の内、処理時間の長い方が最短となるエフェクトの組み合わせを、上記計算結果を用いて網羅的に探索し、CPU102とGPU103がどのエフェクト処理を実行するかを決定する。
(I)CPU102処理:なし
GPU103処理:“ポスタリゼーション”“ストローク付加”“平滑化”“エッジ検出”
CPU102処理時間=0
GPU103処理時間=1+30+5+8.25=44.25
(II)CPU102処理:“ポスタリゼーション”
GPU103処理:“ストローク付加”“平滑化”“エッジ検出”
CPU102実効性能=5
GPU103実効性能=30+5+8.25=43.25
(III)CPU102処理:“ポスタリゼーション”“ストローク付加”
GPU103処理:“平滑化”“エッジ検出”
CPU102実効性能=5+15=20
GPU103実効性能=5+8.25=13.25
(IV)CPU102処理:“ポスタリゼーション”“ストローク付加”“平滑化”
GPU103処理:“エッジ検出”
CPU102実効性能=5+15+20=40
GPU103実効性能=8.25
(V)CPU102処理:“ポスタリゼーション”“ストローク付加”“平滑化”“エッジ検出”
GPU103処理:なし
CPU102実効性能=5+15+20+25=65
GPU103実効性能=0
上記計算結果より、“ポスタリゼーション”“平滑化”のエフェクト処理をCPU102が実行し、“エッジ検出”“ストローク付加”のエフェクト処理をGPU103が実行することになる。ここで、2回目に算出した稼働率によって更新される1フレーム前の後半処理(GPU103処理)の相対的な処理時間を、式(11)を用いて求める。
更新される後半処理(GPU103処理)=17.3×50/20=43.25
次に、更新された後半処理の相対的な処理時間をもとに、現フレームのエフェクト処理におけるCPU102とGPU103が実行するエフェクトの最適化を行う。先ほどの計算結果より、現フレームの前半処理(CPU102処理)の処理時間が、1フレーム前の後半処理(GPU103処理)の処理時間に最も近くなるのは、“ポスタリゼーション”“ストローク付加”“平滑化”のエフェクト処理をCPU102が実行し、“エッジ検出”のエフェクト処理をGPU103が実行する組み合わせであることがわかる。そして、GPU103処理時間を“エッジ検出”1段分の処理時間に変更する。
次に、3フレーム目のエフェクト処理が開始する。
3回目に算出したCPU102とGPU103の稼働率は、CPU102が50%、GPU103が20%であるものとし、式(14)、(15)を用いて、各エフェクトのCPU102とGPU103の実効性能を算出する。
(I)ポスタリゼーション
式(14)、(15)より、CPU102とGPU103の実効性能は以下の通りである。
CPU102実効性能=1×100/50=2
GPU103実効性能=0.2×100/20=1
(II)ストローク付加
式(14)、(15)よりCPU102とGPU103の実効性能を算出する。
CPU102実効性能=3×100/50=6
GPU103実効性能=6×100/20=30
(III)平滑化
式(14)、(15)よりCPU102とGPU103の実効性能を算出する。
CPU102実効性能=4×100/50=8
GPU103実効性能=1×100/20=5
(IV)エッジ検出
式(14)、(15)よりCPU102とGPU103の実効性能を算出する。
CPU102実効性能=5×100/50=10
GPU103実効性能=1.65×100/20=8.25
ここで、CPU102とGPU103で分担して実行するエフェクト処理の内、処理時間の長い方が最短となるエフェクトの組み合わせを、上記計算結果を用いて網羅的に探索し、CPU102とGPU103がどのエフェクト処理を実行するかを決定する。
(I)CPU102処理:なし
GPU103処理:“ポスタリゼーション”“ストローク付加”“平滑化”“エッジ検出”
CPU102処理時間=0
GPU103処理時間=1+30+5+8.25=44.25
(II)CPU102処理:“ポスタリゼーション”
GPU103処理:“ストローク付加”“平滑化”“エッジ検出”
CPU102実効性能=2
GPU103実効性能=30+5+8.25=43.25
(III)CPU102処理:“ポスタリゼーション”“ストローク付加”
GPU103処理:“平滑化”“エッジ検出”
CPU102実効性能=2+6=8
GPU103実効性能=5+8.25=13.25
(IV)CPU102処理:“ポスタリゼーション”“ストローク付加”“平滑化”
GPU103処理:“エッジ検出”
CPU102実効性能=2+6+8=16
GPU103実効性能=8.25
(V)CPU102処理:“ポスタリゼーション”“ストローク付加”“平滑化”“エッジ検出”
GPU103処理:なし
CPU102実効性能=2+6+8+10=26
GPU103実効性能=0
上記計算結果より、“ポスタリゼーション”“平滑化”のエフェクト処理をCPU102が実行し、“エッジ検出”“ストローク付加”のエフェクト処理をGPU103が実行することになる。ここで、2回目に算出した稼働率によって更新される1フレーム前の後半処理(GPU103処理)の相対的な処理時間を、式(11)を用いて求める。
更新される後半処理(GPU103処理)=8.25×20/20=8.25
次に、更新された後半処理の相対的な処理時間をもとに、現フレームのエフェクト処理におけるCPU102とGPU103が実行するエフェクトの最適化を行う。先ほどの計算結果より、現フレームの前半処理(CPU102処理)の処理時間が、1フレーム前の後半処理(GPU103処理)の処理時間に最も近くなるのは、“ポスタリゼーション”“ストローク付加”“平滑化”のエフェクト処理をCPU102が実行し、“エッジ検出”のエフェクト処理をGPU103が実行する組み合わせである。従って、最適化は行われない。
以上のように、本実施例に関わる情報処理装置では、エフェクト間演算量比を取得し、各プロセッサの稼働率を単位時間毎に算出し、それぞれのエフェクト間演算量比と稼働率をもとに、実効性能を算出する。各プロセッサが分担して実行するエフェクト処理段数は、実効性能をもとに決定するが、常に単位時間毎のパイプラインステージで各プロセッサが実行するエフェクト処理段数の組み合わせが異なるエフェクト処理であっても最適化される。結果的に、各プロセッサが処理を実行しない期間を最小限に抑えられるため、処理速度の向上が期待できる。
操作部105は、ユーザの指令を受け付け、指令に応じた制御信号を生成し、CPU102に供給する。例えば、操作部105は、ユーザ指令を受け付ける入力デバイスとして、ボタンやタッチパネルなどからなる。
101 撮像部、102 CPU、103 GPU、104 メモリ、105 操作部

Claims (6)

  1. 複数の画像エフェクト処理を連続して実行する情報処理装置であって、
    複数のプロセッサと、
    前記複数のプロセッサの性能を取得する性能取得手段と、
    前記複数のプロセッサの負荷状況を算出する負荷状況算出手段と、
    前記性能取得手段により取得した性能と、前記負荷状況算出手段により算出した負荷状況に基づき前記複数のプロセッサでそれぞれが行う前記画像エフェクト処理を決定する画像エフェクト処理決定手段とを備え、
    前記画像エフェクト処理決定手段により決定した画像エフェクト処理に基づき前記複数のプロセッサにそれぞれ分担して前記画像エフェクト処理を実行させるように制御することを特徴とする情報処理装置。
  2. 前記複数のプロセッサは少なくとも2種類以上の異なる演算特性を持つプロセッサを含むことを特徴とする請求項1に記載の情報処理装置。
  3. 前記複数のプロセッサは、複数の演算を同時に実行可能な前記演算特性を持つプロセッサを少なくとも1つ以上含むことを特徴とする請求項1又は請求項2に記載の情報処理装置。
  4. 前記負荷状況算出手段は、単位時間当たりの各プロセッサの負荷状況を算出することを特徴とする請求項1乃至請求項3の何れか一項に記載の情報処理装置。
  5. 前記複数の画像エフェクト処理間で演算量が異なる場合、前記画像エフェクト処理間で相対的な演算量の比率を取得し、前記各プロセッサの前記実効性能を算出することを特徴とする請求項1乃至請求項4の何れか一項に記載の情報処理装置。
  6. 前記画像エフェクト処理決定手段は、前記複数の画像エフェクト処理を前記複数のプロセッサがそれぞれ連続して実行するように分担し、決定することを特徴とする請求項1乃至請求項5の何れか一項に記載の情報処理装置。
JP2016087590A 2016-04-26 2016-04-26 情報処理装置、情報処理方法およびプログラム Pending JP2017199091A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016087590A JP2017199091A (ja) 2016-04-26 2016-04-26 情報処理装置、情報処理方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016087590A JP2017199091A (ja) 2016-04-26 2016-04-26 情報処理装置、情報処理方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2017199091A true JP2017199091A (ja) 2017-11-02

Family

ID=60237957

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016087590A Pending JP2017199091A (ja) 2016-04-26 2016-04-26 情報処理装置、情報処理方法およびプログラム

Country Status (1)

Country Link
JP (1) JP2017199091A (ja)

Similar Documents

Publication Publication Date Title
US7310722B2 (en) Across-thread out of order instruction dispatch in a multithreaded graphics processor
US9424038B2 (en) Compiler-controlled region scheduling for SIMD execution of threads
TWI493451B (zh) 使用預解碼資料進行指令排程的方法和裝置
JP6526920B2 (ja) 処理ユニットのためのフレームベースのクロックレート調整
US20110310107A1 (en) Information processing apparatus, method for controlling information processing apparatus, and program
US9830156B2 (en) Temporal SIMT execution optimization through elimination of redundant operations
US9606808B2 (en) Method and system for resolving thread divergences
US10255228B2 (en) System and method for performing shaped memory access operations
US10977037B2 (en) Techniques for comprehensively synchronizing execution threads
US10346212B2 (en) Approach for a configurable phase-based priority scheduler
KR102356705B1 (ko) 커널 퓨징, 리사이징 및 인터리빙 자동 연산 방법
EP3557434B1 (en) Computational resource pipelining in general purpose graphics processing unit
US9069609B2 (en) Scheduling and execution of compute tasks
JP2013541748A (ja) 多重処理ユニット内のオンチップメモリを用いるデータ処理
US10489200B2 (en) Hierarchical staging areas for scheduling threads for execution
US9378533B2 (en) Central processing unit, GPU simulation method thereof, and computing system including the same
US9030480B2 (en) Triggering performance event capture via pipelined state bundles
US9830731B2 (en) Methods of a graphics-processing unit for tile-based rendering of a display area and graphics-processing apparatus
US20130185725A1 (en) Scheduling and execution of compute tasks
US10152329B2 (en) Pre-scheduled replays of divergent operations
JP2010287110A (ja) 情報処理装置、情報処理方法、プログラム及び記録媒体
US20180246655A1 (en) Fused shader programs
KR20210091817A (ko) 레이 트레이싱에서 삼각형 및 박스 교차 테스트를 위한 병합된 데이터 경로
JP2017199091A (ja) 情報処理装置、情報処理方法およびプログラム
CN111124626A (zh) 一种众核系统及其数据处理方法和处理装置