(57)【要約】【課題】画像エフェクト処理を高速化することが可能な情報処理装置を提供する。【解決手段】複数のプロセッサと、前記複数のプロセッサの性能を取得する性能取得手段と、前記複数のプロセッサの負荷状況を算出する負荷状況算出手段と、前記性能取得手段により取得した性能と、前記負荷状況算出手段により算出した負荷状況に基づき前記複数のプロセッサでそれぞれが行う前記画像エフェクト処理を決定する画像エフェクト処理決定手段とを備え、前記画像エフェクト処理決定手段により決定した画像エフェクト処理に基づき前記複数のプロセッサにそれぞれ分担して前記画像エフェクト処理を実行させるように制御する。【選択図】図１
2017199091.tif 000002
【特許請求の範囲】
【請求項１】
複数の画像エフェクト処理を連続して実行する情報処理装置であって、
複数のプロセッサと、
前記複数のプロセッサの性能を取得する性能取得手段と、
前記複数のプロセッサの負荷状況を算出する負荷状況算出手段と、
前記性能取得手段により取得した性能と、前記負荷状況算出手段により算出した負荷状況に基づき前記複数のプロセッサでそれぞれが行う前記画像エフェクト処理を決定する画像エフェクト処理決定手段とを備え、
前記画像エフェクト処理決定手段により決定した画像エフェクト処理に基づき前記複数のプロセッサにそれぞれ分担して前記画像エフェクト処理を実行させるように制御することを特徴とする情報処理装置。
【請求項２】
前記複数のプロセッサは少なくとも２種類以上の異なる演算特性を持つプロセッサを含むことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記複数のプロセッサは、複数の演算を同時に実行可能な前記演算特性を持つプロセッサを少なくとも１つ以上含むことを特徴とする請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記負荷状況算出手段は、単位時間当たりの各プロセッサの負荷状況を算出することを特徴とする請求項１乃至請求項３の何れか一項に記載の情報処理装置。
【請求項５】
前記複数の画像エフェクト処理間で演算量が異なる場合、前記画像エフェクト処理間で相対的な演算量の比率を取得し、前記各プロセッサの前記実効性能を算出することを特徴とする請求項１乃至請求項４の何れか一項に記載の情報処理装置。
【請求項６】
前記画像エフェクト処理決定手段は、前記複数の画像エフェクト処理を前記複数のプロセッサがそれぞれ連続して実行するように分担し、決定することを特徴とする請求項１乃至請求項５の何れか一項に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関する。
【背景技術】
【０００２】
昨今の組み込みシステムでは、処理の内容に応じてプロセッサを使い分ける、ヘテロジニアス・マルチプロセッサ構成が主流である。それぞれアーキテクチャの異なるプロセッサが並列に演算処理を行うことで、演算時間の短縮を図ることが可能となる。
【０００３】
ヘテロジニアス・マルチプロセッサとしてＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を利用した構成が注目されている。ＧＰＵは、本来ＣＧ（Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ）等のグラフィックス描画を目的に利用される。このＧＰＵは、並列演算処理を特徴としており、複数の演算器がそれぞれ独立して同一の命令を実行するという動作メカニズムによって実現されている。このため、画像エフェクト処理のように、実行順番に依存しないことや、大量のデータに対して並列に同一の演算を繰り返す処理において、優れた性能を発揮する。
【０００４】
そこで、近年では、ＧＰＧＰＵ（Ｇｅｎｅｒａｌ  Ｐｕｒｐｏｓｅ  ｃｏｍｐｕｔａｔｉｏｎ  ｏｎ  ＧＰＵ）と呼ばれるＧＰＵを汎用計算に適用する技術が登場している。
【０００５】
現在までに、ＧＰＧＰＵ技術は様々な分野への応用が進んでおり、画像処理、音声処理、コーデック処理といったデジタル信号処理の高速化をはじめとして、流体シミュレーション、物理シミュレーション等の数値解析、気候シミュレーション、天体シミュレーションといった科学技術計算にも適用されている。
【０００６】
ここで、一般的なＧＰＧＰＵシステムは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とＧＰＵによって構成されており、主にＣＰＵが制御用プロセッサ、ＧＰＵが演算用プロセッサとしての役割を担っている。すなわち、ＧＰＵは、ＣＰＵによって制御されており、ＧＰＵが演算処理を実行している間、ＣＰＵは演算待ちとなっている。従って、ＧＰＵのみに依存してきた演算処理を、ＣＰＵとＧＰＵで負荷分散して実行することによって、更なる高速化が見込める。
【０００７】
先行技術として、ＧＰＧＰＵによる画像エフェクト処理において、エフェクト処理に使われるＧＰＵのメモリ予測使用量と、画像処理の条件に基づき、１つの画像フレームでＣＰＵとＧＰＵが処理を行う最適な画像面積を決定し、ＣＰＵとＧＰＵが並列に画像処理を実行するシステムが特許文献１で開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−３６１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述の特許文献１では、例えばＣＰＵとＧＰＵの負荷分散量の決定方法に、エフェクト処理に使われるメモリ使用量を予測する静的な負荷状況取得方法が記載されている。しかし、実際のシステムでは、ＧＰＵが本来の機能であるグラフィックス描画処理を行うことも想定され、ＧＰＵはシステム内で常に１００％の余力を持ってＧＰＧＰＵ処理に専念出来るとは限らない。また、画像をＣＰＵ処理領域、ＧＰＵ処理領域の２つに分割して、それぞれ画像エフェクト処理を行う例が示されているが、分割した境界部をオーバーラップして処理する必要があるため、オーバーヘッドが発生する。仮に、複数個の画像エフェクト処理が連続して実行される場合、累積されるオーバーヘッドは無視できない量になる。
【００１０】
そこで、本発明は、連続して実行される複数の画像エフェクト処理に対して、上述のオーバーヘッドの削減と、各プロセッサの負荷状況を動的に取得し、その稼働率に基づきＣＰＵ、ＧＰＵ、それぞれが行う最適な処理配分を決定し、ＧＰＧＰＵによる画像エフェクト処理を高速化することが可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記の目的を達成するために、本発明に係る情報処理装置は、
複数の画像エフェクト処理を連続して実行する情報処理装置であって、
複数のプロセッサと、
前記複数のプロセッサの性能を取得する性能取得手段と、
前記複数のプロセッサの負荷状況を算出する負荷状況算出手段と、
前記性能取得手段により取得した性能と、前記負荷状況算出手段により算出した負荷状況に基づき前記複数のプロセッサでそれぞれが行う前記画像エフェクト処理を決定する画像エフェクト処理決定手段とを備え、
前記画像エフェクト処理決定手段により決定した画像エフェクト処理に基づき前記複数のプロセッサにそれぞれ分担して前記画像エフェクト処理を実行させるように制御することを特徴とする。
【発明の効果】
【００１２】
本発明に係る情報処理装置によれば、連続して実行される複数の画像エフェクト処理に対して、各プロセッサの性能、稼働率に基づきＣＰＵ、ＧＰＵが行う処理配分が最適化され、ＧＰＧＰＵによる画像エフェクト処理が高速化することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施例に係る情報処理装置の構成を示す図である。
【図２】本発明の第１の実施例に係る情報処理装置におけるアプリケーションプログラムの構成を示す図である。
【図３】本発明の第１の実施例に係る情報処理装置におけるエフェクト処理段数算出の動作の手順を示すフローチャートである。
【図４】本発明の第１の実施例に係る情報処理装置におけるエフェクトのパイプライン処理を示す図である。
【図５】本発明の第２の実施例に係る情報処理装置におけるアプリケーションプログラムの構成を示す図である。
【図６】本発明の第２の実施例に係る情報処理装置におけるエフェクト処理段数算出の動作の手順を示すフローチャートである。
【図７】本発明の第２の実施例に係る情報処理装置におけるエフェクトのパイプライン処理を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の好ましい実施の形態を添付の図面を参照して詳細に説明する。
【００１５】
［実施例１］
図１に、本発明の第1の実施例に係る情報処理装置のブロック図を示す。
本実施例に関わる情報処理装置は、撮像した画像データを記録・再生することが可能な情報処理装置であり、撮像又は再生した画像データに対し、所定のエフェクト処理を実行することが可能となっている。本実施例では、同一のエフェクト処理を複数回連続して実行する場合を説明するものとする。
【００１６】
［情報処理装置の構成］
操作部１０５は、ユーザの指令を受け付け、指令に応じた制御信号を生成し、ＣＰＵ１０２に供給する。例えば、操作部１０５は、ユーザ指令を受け付ける入力デバイスとして、ボタンやタッチパネルなどからなる。
【００１７】
撮像部１０１は、被写体の光学像を光電変換して画像データに変換し、メモリ１０４に書き込む。ＣＰＵ１０２は、操作部１０５から入力される制御信号に基づき、本実施例の情報処理装置を構成する各処理部を制御する。ここで、ＣＰＵ１０２は、ＣＰＵ１０２とＧＰＵ１０３がそれぞれ実行する最適なエフェクト処理段数の決定を行い、決定したエフェクト処理段数に従い、メモリ１０４に格納されたＣＰＵ１０２用の画像処理プログラム（以降ＣＰＵプログラムと呼ぶ）を実行することにより、メモリ１０４に格納された画像データに対してエフェクト処理を施し、メモリ１０４に書き込む。エフェクト処理段数の決定方法に関わる詳細な説明は後述する。
【００１８】
ＧＰＵ１０３は、メモリ１０４に格納された画像データに対して、ＯＳＤ（オンスクリーン・ディスプレイ）の多重描画処理を行い、表示部１０６へ出力する。また、ＧＰＵ１０３は、ＣＰＵ１０２の指示に基づきメモリ１０４に格納されたＧＰＵ１０３用の画像処理プログラム（以降ＧＰＵプログラムと呼ぶ）を実行することにより、メモリ１０４に格納された画像データに対し、エフェクト処理を施し、メモリ１０４に書き込む。
【００１９】
表示部１０６は、ＧＰＵ１０３により入力された画像データを表示するディスプレイである。メディア１０７は、ＣＰＵ１０２の指示に基づき、メモリ１０４に格納された画像データを記憶する記憶媒体である。内部バス１０８は、本実施例の情報処理装置を構成する各処理部を接続するインターコネクト・バスである。
【００２０】
本実施例の情報処理装置は、以上のように構成されている。
【００２１】
［アプリケーションプログラムの構成］
ここで、本実施例の情報処理装置で実行可能なエフェクト処理に関して図２に示すアプリケーションプログラム構成に基づき説明を行う。
【００２２】
図２に示すように、アプリケーションプログラムは、４つの平滑化エフェクトから成り、ＣＰＵ１０２により算出された最適なエフェクト処理段数に基づくＣＰＵプログラムもしくはＧＰＵプログラムの組み合わせで構成される。ここでは、４つのエフェクトから構成する例を示しているが、これに限定されるものではなく、任意のエフェクト数で構成することも可能である。
【００２３】
アプリケーションプログラムの動作としては、メモリ１０４から、画像データを読み出し、１段目の平滑化エフェクトを実行し、その結果をメモリ１０４に書き込む。２段目以降の平滑化エフェクトも同様に、前段の平滑化エフェクト結果をメモリ１０４から読み出し、平滑化エフェクトを実行し、その結果をメモリ１０４に書き込む。ここで示す平滑化エフェクト処理の内容は一般的なものであるため、その処理に関わる詳細な説明は省略する。
【００２４】
［エフェクト処理段数の決定方法］
ここで、図３に示すフローチャートに基づいて最適なエフェクト処理段数の決定方法について説明する。
【００２５】
まず、ステップＳ２０１において、映像フレームナンバーを０（初期化）とし、１枚目の画像データに対するエフェクト処理を開始するための準備を行う。
【００２６】
ここで、１枚目の画像データにエフェクト処理を施すに当たり、性能情報を取得する（ステップＳ２０２）。性能情報は、ＣＰＵ１０２とＧＰＵ１０３の平滑化エフェクト処理の実行速度を相対的な性能比で表したものであり、これは予め測定して保存しておいた情報である。また、各演算命令の処理サイクル、命令数、ＣＰＵ１０２、ＧＰＵ１０３の動作周波数から、平滑化エフェクト処理の性能比を算出しても良い。
【００２７】
次に、ＣＰＵ１０２とＧＰＵ１０３の稼働率を算出する（ステップＳ２０３）。ここでは各プロセッサが演算実行中であるか否かのステータスを表すビジーフラグを設け、ＣＰＵ１０２によりビジーフラグのＨＩＧＨ状態、ＬＯＷ状態の時間を測定し、その時間の割合をもとにそれぞれの稼働率［％］を算出するものとする。また、ここでは本実施例での単位時間とは、１つの画像データのエフェクト処理における、ＣＰＵ処理とＧＰＵ処理のいずれか先に行われる処理が完了するまでの時間とするが、これに限定されるものではなく、任意に指定した時間としてもよい。
【００２８】
次に、ステップＳ２０２で取得した性能情報と、ステップＳ２０３で算出したＣＰＵ１０２とＧＰＵ１０３の稼働率をもとに、次式（１）、（２）に基づきＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する（ステップＳ２０４）。
【００２９】
ＣＰＵ１０２実効性能＝ＧＰＵ１０３性能値×ＧＰＵ１０３稼働率［％］・・・（１）
ＧＰＵ１０３実行性能＝ＣＰＵ１０２性能値×ＣＰＵ１０２稼働率［％］・・・（２）
ここで、算出した実効性能とは、ＣＰＵ１０２とＧＰＵ１０３の実効性能比を表しており、平滑化エフェクト１段分の相対的な処理時間に相当する。
【００３０】
次に、ステップＳ２０４で算出したＣＰＵ１０２とＧＰＵ１０３の実効性能をもとに、ＣＰＵ１０２とＧＰＵ１０３が分担するエフェクト処理の段数を次式（３）、（４）に基づき決定する（ステップＳ２０５）。
【００３１】
ＣＰＵ１０２によるエフェクト処理段数＝全エフェクト処理段数×ＧＰＵ１０３実効性能／（ＣＰＵ１０２実効性能＋ＧＰＵ１０３実効性能）・・・（３）
ＧＰＵ１０３によるエフェクト処理段数＝全エフェクト処理段数×ＣＰＵ１０２実効性能／（ＣＰＵ１０２実効性能＋ＧＰＵ１０３実効性能）・・・（４）
【００３２】
ここで、エフェクトの処理段数は整数であるため、計算結果が小数になった場合は、四捨五入等により整数値へ変換を行う。また、ＣＰＵ１０２によるエフェクト処理とＧＰＵ１０３によるエフェクト処理段数は、それぞれ連続して実行するように構成する。そして、ステップＳ２０４で算出した実効性能とステップＳ２０５で算出した処理段数をもとに、１フレームのエフェクト処理に要する相対的な処理時間を次式（５）、（６）に基づき算出する（ステップＳ２０６）。
【００３３】
ＣＰＵ１０２の処理時間＝ＣＰＵ１０２による平滑化エフェクト１段分の処理時間×ＣＰＵ１０２平滑化エフェクト処理段数・・・（５）
ＧＰＵ１０３の処理時間＝ＧＰＵ１０３による平滑化エフェクト１段分の処理時間×ＧＰＵ１０３平滑化エフェクト処理段数・・・（６）
【００３４】
このステップＳ２０１からステップＳ２０６までが、１枚目の画像データに関する処理である。そして、ステップＳ２０７で、フレームナンバーをインクリメントし、次の画像データのエフェクト処理を開始する。
【００３５】
続いて、２枚目以降の画像データへのエフェクト処理の動作手順を説明する。まず、ステップＳ２０８では、ユーザの記録停止が操作部１０５から指示されたかどうかを判定する。記録停止が指示された場合は、処理は終了する。指示されていなければ処理はステップＳ２０９に移行する。
【００３６】
ステップＳ２０９からステップＳ２１２は、上述のステップＳ２０２からステップＳ２０５と同様の手順を実行する。ステップＳ２１３では、ステップＳ２０６と異なる方法でＣＰＵ１０２とＧＰＵ１０３の処理時間を算出する。まず、ＣＰＵ１０２とＧＰＵ１０３の平滑化エフェクト１段分の相対的な処理時間を次式（７）、（８）に基づき算出する。
【００３７】
ＣＰＵ１０２エフェクト１段分の処理時間＝１フレーム前に算出したＣＰＵ１０２による平滑化エフェクト１段分の処理時間×１フレーム前処理時に算出したＣＰＵ１０２の稼働率／現フレーム処理時に算出したＣＰＵ１０２の稼働率・・・（７）
【００３８】
ＧＰＵ１０３エフェクト１段分の処理時間＝１フレーム前に算出したＧＰＵ１０３による平滑化エフェクト１段分の処理時間×１フレーム前の平滑化エフェクト処理時に算出したＧＰＵ１０３の稼働率／現フレームの平滑化エフェクト処理時に算出したＧＰＵ１０３の稼働率・・・（８）
【００３９】
続いて、１フレーム分の相対的な処理時間を次式（９）、（１０）に基づき算出する。
【００４０】
ＣＰＵ１０２の１フレーム処理時間＝ＣＰＵ１０２による平滑化エフェクト処理段数×ＣＰＵ１０２エフェクト１段分の処理時間・・・（９）
ＧＰＵ１０３の１フレーム処理時間＝ＧＰＵ１０３による平滑化エフェクト処理段数×ＧＰＵ１０３エフェクト１段分の処理時間・・・（１０）
【００４１】
ここで、本実施例の情報処理装置におけるエフェクト処理は、フレームごとにＣＰＵ１０２処理とＧＰＵ１０３処理とでパイプライン処理を実行することを前提としたシステムとなっており、稼働率を算出する周期となる単位時間は、パイプラインのステージ単位である。ここで、１フレーム目のＣＰＵ１０２処理とＧＰＵ１０３処理を、前半処理、後半処理と区別した場合、１フレーム目の後半処理は２回目の稼働率算出のタイミングを跨いでしまうため、１回目に算出した稼働率に基づく後半処理の相対的な処理時間は、２回目に算出した稼働率に基づく相対的な処理時間へ次式（１１）に基づき更新される（ステップＳ２１４）。
【００４２】
更新される後半処理の相対的な処理時間＝１フレーム前に算出した後半処理の相対的な処理時間比×１フレーム前処理開始時に算出した稼働率／現フレーム処理開始時に算出した稼働率・・・（１１）
【００４３】
次に、更新された相対的な処理時間をもとに、ＣＰＵ１０２は、画像データに対するエフェクト処理におけるＣＰＵ１０２とＧＰＵ１０３の処理段数の最適化を行う（ステップＳ２１５）。ここで、パイプライン処理における最適化とは、同一ステージ内の１フレーム前の後半処理の処理時間と現フレームの前半処理の処理時間が、最も近くなるような処理段数の組み合わせを網羅的に算出し、処理段数を決定することを示す。ここでも同様に、ＣＰＵ１０２によるエフェクト処理とＧＰＵ１０３によるエフェクト処理段数は、連続して実行するように構成する。
【００４４】
そして、フレームナンバーをインクリメントし、次の画像データのエフェクト処理を開始する（ステップＳ２１６）。このように、ステップＳ２１５では、常に同一ステージ内の処理時間が最適化されるように、ＣＰＵ１０２とＧＰＵ１０３の処理段数を決定する。以上のように最適なエフェクト処理段数を決定する。
【００４５】
[本発明の効果の検証]
ここで、具体的な数値例を用いて、図４に示す３フレーム分の映像データに対してエフェクト処理を実行した場合のＣＰＵ１０２とＧＰＵ１０３のパイプライン処理に基づきエフェクト処理段数最適化による効果の検証を実施する。
【００４６】
まず、本実施例では、ＣＰＵとＧＰＵの性能比を１：７とし、１回目に算出したＣＰＵ１０２とＧＰＵ１０３の稼働率を、ＣＰＵ１０２を７０％、ＧＰＵ１０３を３０％とする。ここで、性能比と稼働率をもとに、ＣＰＵ１０２とＧＰＵ１０３の実効性能は、式（１）、（２）に基づき以下のように求められる。
【００４７】
ＣＰＵ１０２実効性能＝７×０．３＝２．１
ＧＰＵ１０３実効性能＝１×０．７＝０．７
【００４８】
そして、ＣＰＵ１０２とＧＰＵ１０３の実効性能比は、２．１：０．７＝３：１となり、平滑化エフェクト１段分の相対的な処理時間は以下のようになる。
【００４９】
ＣＰＵ１０２の平滑化エフェクト１段分の処理時間＝３
ＧＰＵ１０３の平滑化エフェクト１段分の処理時間＝１
【００５０】
続いて、算出した実効性能をもとに、平滑化エフェクト処理が４回行われる場合のＣＰＵ１０２およびＧＰＵ１０３の処理段数は、式（３）、（４）に基づき以下のように求められる。
【００５１】
ＣＰＵ１０２による平滑化エフェクト処理段数＝４×１／（１＋３）＝１
ＧＰＵ１０３による平滑化エフェクト処理段数＝４×３／（１＋３）＝３
【００５２】
つまり、４段構成の平滑化エフェクトは、ＣＰＵ１０２が１段、ＧＰＵ１０３が３段と分担して処理を実行するようにエフェクト処理段数を決定する。ここで、２回目に算出したＣＰＵ１０２とＧＰＵ１０３の稼働率を、ＣＰＵ１０２を４０％、ＧＰＵ１０３を５％とする。この稼働率をもとに、ＣＰＵ１０２とＧＰＵ１０３の実効性能は式（１）、（２）に基づき、以下のように求められる。
【００５３】
ＣＰＵ１０２実効性能＝７×０．０５＝０．３５
ＧＰＵ１０３実効性能＝１×０．４＝０．４
【００５４】
そして、この実効性能をもとに、ＣＰＵ１０２およびＧＰＵ１０３の処理段数は式（３）、（４）に基づき、以下のように求められる。
【００５５】
ＣＰＵ１０２による平滑化エフェクト処理段数＝４×０．４／（０．４＋０．３５）≒２
ＧＰＵ１０３による平滑化エフェクト処理段数＝４×０．３５／（０．４＋０．３５）≒２
【００５６】
ここで、１回目に算出した稼働率と２回目に算出した稼働率を比較すると、ＣＰＵ１０２は７０％から４０％、ＧＰＵ１０３は３０％から５％となり、１フレームの処理時間は式（７）、（８）、（９）、（１０）に基づき、以下のように求められる。
【００５７】
ＣＰＵ１０２平滑化エフェクト１段分の処理時間＝３×７０／４０＝５．２５
ＧＰＵ１０３平滑化エフェクト１段分の処理時間＝１×３０／５＝６
ＣＰＵ１０２の１フレーム処理時間＝２×５．２５＝１０．５
ＧＰＵ１０３の１フレーム処理時間＝２×６＝１２
【００５８】
次に、２回目に算出した稼働率によって更新される１フレーム前の後半処理（ＧＰＵ１０３処理）の相対的な処理時間は、式（１１）に基づき以下のように求められる。
【００５９】
更新される後半処理（ＧＰＵ１０３処理）の相対的な処理時間＝３×３０／５＝１８
次に、更新された後半処理の相対的な処理時間をもとに、現フレームのエフェクト処理におけるＣＰＵ１０２とＧＰＵ１０３の処理段数の最適化を行う。
【００６０】
（I）ＣＰＵ１０２処理段数＝４、ＧＰＵ１０３処理段数＝０である場合
式（９）を用いて、ＣＰＵ１０２の平滑化エフェクト４段分の処理時間を算出する。
現フレームの前半処理＝４×３×７０／４０＝２１
（II）ＣＰＵ１０２処理段数＝３、ＧＰＵ１０３処理段数＝１である場合
式（９）を用いて、ＣＰＵ１０２の平滑化エフェクト３段分の処理時間を算出する。
現フレームの前半処理＝３×３×７０／４０＝１５．７５
（III）ＣＰＵ１０２処理段数＝１、ＧＰＵ１０３処理段数＝３である場合
式（９）を用いて、ＣＰＵ１０２の平滑化エフェクト１段分の処理時間を算出する。
現フレームの前半処理＝１×３×７０／４０＝５．２５
（IV）ＣＰＵ１０２処理段数＝０、ＧＰＵ１０３処理段数＝４である場合
式（９）を用いて、ＣＰＵ１０２の平滑化エフェクト０段分の処理時間を算出する。
現フレームの前半処理＝０×３×７０／４０＝０
【００６１】
上記計算結果により、現フレームの前半処理（ＣＰＵ１０２処理）の処理時間が、１フレーム前の後半処理（ＧＰＵ１０３処理）の処理時間に最も近いＣＰＵ１０２とＧＰＵ１０３の処理段数の組み合わせは、ＣＰＵ１０２処理段数＝３、ＧＰＵ１０３処理段数＝１であることがわかる。そして、ＧＰＵ１０３処理時間を１段分の処理時間に変更する。
【００６２】
次に、３回目に算出したＣＰＵ１０２とＧＰＵ１０３の稼働率を、ＣＰＵ１０２を４０％、ＧＰＵ１０３を１０％とする。まず、稼働率をもとに、ＣＰＵ１０２とＧＰＵ１０３の実効性能を式（１）、（２）に基づき、以下のように求められる。
【００６３】
ＣＰＵ１０２実効性能＝７×０．１＝０．７
ＧＰＵ１０３実効性能＝１×０．４＝０．４
【００６４】
次に、この実効性能をもとに、ＣＰＵ１０２およびＧＰＵ１０３の処理段数を式（３）、（４）に基づき、以下のように求められる。
【００６５】
ＣＰＵ１０２による平滑化エフェクト処理段数＝４×０．４／（０．４＋０．７）≒１
ＧＰＵ１０３による平滑化エフェクト処理段数＝４×０．７／（０．４＋０．７）≒３
【００６６】
次に、この処理段数をもとに、ＣＰＵ１０２およびＧＰＵ１０３の１フレーム分の処理時間を式（７）、（８）、（９）、（１０）に基づき求められる。
【００６７】
ＣＰＵ１０２エフェクト１段分の処理時間＝５．２５×４０／４０＝５．２５
ＧＰＵ１０３エフェクト１段分の処理時間＝６×５／１０＝３
ＣＰＵ１０２のフレーム処理時間＝１×５．２５＝５．２５
ＧＰＵ１０３のフレーム処理時間＝３×３＝９
【００６８】
次に、３回目に算出した稼働率によって更新される後半処理（ＧＰＵ１０３処理）の処理時間を式（１１）に基づき、以下のように求められる。
【００６９】
更新される後半処理（ＧＰＵ１０３処理）＝６×５／１０＝３
【００７０】
ここで、１フレーム前の後半処理（ＧＰＵ１０３処理）の処理時間と、現フレームの前半処理（ＣＰＵ１０２処理）の処理時間を比較すると、処理時間はほぼ等しい。従って、処理段数は変更することなく、次の画像データのエフェクト処理が開始される。
【００７１】
以上のように、本実施例に関わる情報処理装置では、各プロセッサの稼働率を単位時間毎に算出し、それぞれの稼働率をもとに、実効性能を算出する。エフェクト処理段数は、実効性能をもとに算出し、常に単位時間毎のパイプラインステージで各プロセッサの処理段数の組み合わせが最適化される。結果的に、各プロセッサが処理を実行しない期間を最小限に抑えられるため、処理速度の向上が期待できる。
【００７２】
［実施例２］
本発明の第２の実施例に係る情報処理装置の構成は、第１の実施例に示す情報処理装置と同様であるため、その構成に関わる説明は省略する。第１の実施例では、画像データに対して、同一のエフェクト処理を複数回実行する場合について説明したのに対し、本実施例では、異なる４つのエフェクトを連続して実行する場合について説明するものとする。
【００７３】
［アプリケーションプログラムの構成］
ここで、本実施例の情報処理装置で実行可能なエフェクト処理に関して図５に示すアプリケーションプログラム構成に基づき説明を行う。
【００７４】
図５に示すように、アプリケーションプログラムは、“ポスタリゼーション”、“ストローク付加”、“平滑化”、“エッジ検出”のエフェクトから成り、ＣＰＵ１０２により算出された最適なエフェクト処理段数に基づくＣＰＵプログラムもしくはＧＰＵプログラムの組み合わせで構成される。各エフェクト処理の内容自体は一般的なものであるため、処理に関わる詳細な説明は省略する。
【００７５】
［エフェクト処理段数の決定方法］
ここで、図６に示すフローチャートに基づいて、最適なエフェクト処理段数の決定方法について説明する。
【００７６】
尚、第１の実施例に対する差分となる、エフェクト情報の取得方法（ステップＳ３０３）、処理エフェクトの選択方法（ステップＳ３０７、ステップＳ３１２）、エフェクト選択の最適化方法（ステップＳ３１４）を詳細に説明するものとし、第１の実施形態と同様の処理に関しては詳細な説明を省略する。
【００７７】
まず、ステップＳ３０１では、映像フレームナンバーを０（初期化）とし、１枚目の画像データに対するエフェクト処理を開始するための準備を行う。
そして、性能情報を取得する（ステップＳ３０２）。
【００７８】
次に、ステップＳ３０３では、エフェクト情報を取得する。エフェクト情報は、“ポスタリゼーション”“ストローク付加”“平滑化エフェクト”“エッジ検出”４つのエフェクト処理に対するＣＰＵ１０２もしくはＧＰＵ１０３の実行速度を、相対的な演算量比として表したものである。これは、性能情報と同様に、予め測定して保存しておいた情報である。また、各演算命令の処理サイクル、命令数、ＣＰＵ１０２、ＧＰＵ１０３の動作周波数から、エフェクト間の演算量比を算出しても良い。また、本実施例では、ＣＰＵ１０２処理におけるエフェクト間演算量比を利用するが、これはＧＰＵ１０３処理におけるエフェクト間演算量比であっても良い。
【００７９】
そして、ステップＳ３０４では、ＣＰＵ１０２とＧＰＵ１０３の各エフェクトのＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。ここで算出する実効性能とは、エフェクト間のＣＰＵ１０２とＧＰＵ１０３の相対的な処理時間に相当し、各エフェクトに対する実行性能を相対的に比較するために、ステップＳ３０３で取得したエフェクト間演算量比を用いる。ＣＰＵ１０２処理におけるエフェクト演算量比を用意した場合、各エフェクトのＣＰＵ１０２の実効性能は次式（１２）で表される。
【００８０】
ＣＰＵ１０２実効性能＝実効性能比で示したＣＰＵ１０２の値×エフェクト演算量比の値・・・（１２）
【００８１】
また、ＧＰＵ１０３処理における各エフェクトのＧＰＵ１０３の実効性能は次式（１３）で表される。
【００８２】
ＧＰＵ１０３実効性能＝ＣＰＵ１０２実効性能×実効性能比で示したＧＰＵ１０２の値・・・（１３）
【００８３】
ステップＳ３０４で算出する実効性能算出の手順をまとめると、まず、ある１つのエフェクトに対するＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。このＣＰＵ１０２とＧＰＵ１０３の実効性能比は、予め用意されている性能比の逆数で表される。続いて、ＣＰＵ１０２におけるエフェクト間演算量比を用意しているのであれば、式（１２）を用いて、各エフェクト間の相対的なＣＰＵ１０２の実効性能を算出する。式（１３）により、式（１２）に基づき算出されたＣＰＵ１０２の実行性能からＧＰＵ１０２の実行性能を算出する。
【００８４】
このステップＳ３０４で算出する実効性能は、後に行うエフェクト処理で実効性能を算出する際に用いる基準値である。続いて、第１の実施例と同様の方法で稼働率を算出する（ステップＳ３０５）。
【００８５】
次に、ステップＳ３０６では、ステップＳ３０４で算出したＣＰＵ１０２とＧＰＵ１０３の実効性能と、ステップＳ３０５で算出した稼働率を用いて、各エフェクトにおけるＣＰＵ１０２とＧＰＵ１０３の実効性能を式（１４）、（１５）に基づき算出する。
【００８６】
ＣＰＵ１０２実効性能＝ＣＰＵ１０２実効性能×（１００／稼働率）・・・（１４）
ＧＰＵ１０３実効性能＝ＧＰＵ１０３実効性能×（１００／稼働率）・・・（１５）
【００８７】
次に、ステップＳ３０７では、ＣＰＵ１０２とＧＰＵ１０３で分担して実行するエフェクト処理のうち、処理時間の長い方が、最短となるエフェクトの組み合わせを網羅的に探索し、ＣＰＵ１０２とＧＰＵ１０３がどのエフェクト処理を実行するかを決定する。ただし、第一の実施例と同様に、パイプライン処理を前提としたシステムであるため、ＣＰＵ１０２によるエフェクト処理とＧＰＵ１０３によるエフェクト処理は、それぞれ連続して実行するように構成する。
【００８８】
そして、ステップＳ３０８で、フレームナンバーをインクリメントし、次の画像データのエフェクト処理を開始する。ステップＳ３０９では、ユーザの記録停止が操作部１０５から指示されたかどうかを判定する。記録停止が指示された場合は、処理は終了する。指示されていなければ処理はステップＳ３１０に移行する。ステップＳ３１０からステップＳ３１２は、上述のステップＳ３０５からステップＳ３０７と同様の手順を実行する。
【００８９】
ステップＳ３１３では、第１の実施例と同様に、稼働率を算出する周期となる単位時間は、パイプラインのステージ単位であり、ＣＰＵ１０２処理とＧＰＵ１０３処理を前半処理、後半処理と区別した場合、前フレームの後半処理は現フレームの稼働率算出のタイミングを跨いでしまうため、前フレーム処理時に算出した稼働率に基づく後半処理の相対的な処理時間は、現フレーム処理時に算出した稼働率に基づく相対的な処理時間へ更新される。
【００９０】
次に、更新された相対的な処理時間をもとに、ＣＰＵ１０２は、現フレームのエフェクト処理におけるＣＰＵ１０２とＧＰＵ１０３の処理エフェクトの最適化を行う（ステップＳ３１４）。ステップＳ３１４における最適化とは、同一ステージ内の１フレーム前の後半処理の処理時間と現フレームの前半処理の処理時間が、最も近くなるような処理段数の組み合わせを網羅的に算出し、処理段数を決定することを示す。ここでも同様に、ＣＰＵ１０２による処理エフェクトとＧＰＵ１０３による処理エフェクトは、連続して実行するように構成する。
【００９１】
そして、フレームナンバーをインクリメントし、次の画像データのエフェクト処理を開始する（ステップＳ３１５）。このように、ステップＳ３１４では、常に同一ステージ内の処理時間が最適化されるように、ＣＰＵ１０２とＧＰＵ１０３の処理段数を決定する。以上のように最適なエフェクト処理段数を決定する。
【００９２】
[本発明の効果の検証]
ここで、具体的な数値例を用いて、図７に示す３フレーム分の映像データに対してエフェクト処理を実行した際のＣＰＵ１０２とＧＰＵ１０３のパイプライン処理に基づきエフェクト選択の最適化による効果の検証を実施する。まず、ＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。各エフェクトに対するＣＰＵ１０２とＧＰＵ１０３の実効性能を、ＣＰＵ１０２とＧＰＵ１０３の性能比、及びＣＰＵ処理におけるエフェクト演算量重みより、式（１２）、式（１３）を用いて求める。
【００９３】
（I）ポスタリゼーション
ＣＰＵ１０２とＧＰＵ１０３の性能比が１：０．２、ＣＰＵ処理におけるエフェクト演算量重み１であるとすると、式（１２）に基づき実行性能は以下のようになる。
ＣＰＵ１０２実効性能＝１×１＝１
ＧＰＵ１０３実効性能＝１×０．２＝０．２
【００９４】
（II）ストローク付加
ＣＰＵ１０２とＧＰＵ１０３の性能比が１：２、ＣＰＵ処理におけるエフェクト演算量重みが３であるとすると、実行性能は以下のようになる。
ＣＰＵ１０２実効性能＝１×３＝３
ＧＰＵ１０３実効性能＝３×２＝６
【００９５】
（III）平滑化
ＣＰＵ１０２とＧＰＵ１０３の性能比が１：０．２５、ＣＰＵ処理におけるエフェクト演算量重みが４であるとすると、実行性能は以下のようになる。
ＣＰＵ１０２実効性能＝１×４＝４
ＧＰＵ１０３実効性能＝４×０．２５＝１
【００９６】
（IV）エッジ検出
ＣＰＵ１０２とＧＰＵ１０３の性能比が１：０．３３、ＣＰＵ処理におけるエフェクト演算量重みが５であるとすると、実行性能は以下のようになる。
ＣＰＵ１０２実効性能＝１×５＝５
ＧＰＵ１０３実効性能＝５×０．３３＝１．６５
【００９７】
以上が各エフェクト処理に対するＣＰＵ１０２とＧＰＵ１０３の実効性能である。続いて、１フレーム目のエフェクト処理が開始する。
１回目に算出したＣＰＵ１０２とＧＰＵ１０３の稼働率は、ＣＰＵ１０２が１０％、ＧＰＵ１０３が５０％であるものとし、式（１４）、（１５）を用いて、各エフェクトのＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。
【００９８】
（I）ポスタリゼーション
式（１４）、（１５）より、ＣＰＵ１０２とＧＰＵ１０３の実効性能は以下の通りである。
ＣＰＵ１０２実効性能＝１×１００／１０＝１０
ＧＰＵ１０３実効性能＝０．２×１００／５０＝０．４
【００９９】
（II）ストローク付加
式（１４）、（１５）よりＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。
ＣＰＵ１０２実効性能＝３×１００／１０＝３０
ＧＰＵ１０３実効性能＝６×１００／５０＝１２
【０１００】
（III）平滑化
式（１４）、（１５）よりＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。
ＣＰＵ１０２実効性能＝４×１００／１０＝４０
ＧＰＵ１０３実効性能＝１×１００／５０＝２
【０１０１】
（IV）エッジ検出
式（１４）、（１５）よりＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。
ＣＰＵ１０２実効性能＝５×１００／１０＝５０
ＧＰＵ１０３実効性能＝１．６５×１００／５０＝３．３
【０１０２】
ここで、ＣＰＵ１０２とＧＰＵ１０３で分担して実行するエフェクト処理の内、処理時間の長い方が最短となるエフェクトの組み合わせを、上記計算結果を用いて網羅的に探索し、ＣＰＵ１０２とＧＰＵ１０３がどのエフェクト処理を実行するかを決定する。
【０１０３】
（I）ＣＰＵ１０２処理：なし
ＧＰＵ１０３処理：“ポスタリゼーション”“ストローク付加”“平滑化”“エッジ検出”
ＣＰＵ１０２処理時間＝０
ＧＰＵ１０３処理時間＝０．４＋１２＋２＋３．３＝１７．７
【０１０４】
（II）ＣＰＵ１０２処理：“ポスタリゼーション”
ＧＰＵ１０３処理：“ストローク付加”“平滑化”“エッジ検出”
ＣＰＵ１０２実効性能＝１０
ＧＰＵ１０３実効性能＝１２＋２＋３．３＝１７．３
【０１０５】
（III）ＣＰＵ１０２処理：“ポスタリゼーション”“ストローク付加”
ＧＰＵ１０３処理：“平滑化”“エッジ検出”
ＣＰＵ１０２実効性能＝１０＋３０＝４０
ＧＰＵ１０３実効性能＝２＋３．３＝５．３
【０１０６】
（IV）ＣＰＵ１０２処理：“ポスタリゼーション”“ストローク付加”“平滑化”
ＧＰＵ１０３処理：“エッジ検出”
ＣＰＵ１０２実効性能＝１０＋３０＋４０＝８０
ＧＰＵ１０３実効性能＝３．３
【０１０７】
（Ｖ）ＣＰＵ１０２処理：“ポスタリゼーション”“ストローク付加”“平滑化”“エッジ検出”
ＧＰＵ１０３処理：なし
ＣＰＵ１０２実効性能＝１０＋３０＋４０＋５０＝１３０
ＧＰＵ１０３実効性能＝０
【０１０８】
上記計算結果より、“ポスタリゼーション”のエフェクト処理をＣＰＵ１０２が実行し、“平滑化”“エッジ検出”“ストローク付加”のエフェクト処理をＧＰＵ１０３が実行することになる。
【０１０９】
次に、２フレーム目のエフェクト処理が開始する。２回目に算出したＣＰＵ１０２とＧＰＵ１０３の稼働率は、ＣＰＵ１０２が２０％、ＧＰＵ１０３が２０％であるものとし、式（１４）、（１５）を用いて、各エフェクトのＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。
【０１１０】
（Ｉ）ポスタリゼーション
式（１４）、（１５）より、ＣＰＵ１０２とＧＰＵ１０３の実効性能は以下の通りである。
ＣＰＵ１０２実効性能＝１×１００／２０＝５
ＧＰＵ１０３実効性能＝０．２×１００／２０＝１
【０１１１】
（II）ストローク付加
式（１４）、（１５）よりＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。
ＣＰＵ１０２実効性能＝３×１００／２０＝１５
ＧＰＵ１０３実効性能＝６×１００／２０＝３０
【０１１２】
（III）平滑化
式（１４）、（１５）よりＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。
ＣＰＵ１０２実効性能＝４×１００／２０＝２０
ＧＰＵ１０３実効性能＝１×１００／２０＝５
【０１１３】
（IV）エッジ検出
式（１４）、（１５）よりＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。
ＣＰＵ１０２実効性能＝５×１００／２０＝２５
ＧＰＵ１０３実効性能＝１．６５×１００／２０＝８．２５
【０１１４】
ここで、ＣＰＵ１０２とＧＰＵ１０３で分担して実行するエフェクト処理の内、処理時間の長い方が最短となるエフェクトの組み合わせを、上記計算結果を用いて網羅的に探索し、ＣＰＵ１０２とＧＰＵ１０３がどのエフェクト処理を実行するかを決定する。
【０１１５】
（Ｉ）ＣＰＵ１０２処理：なし
ＧＰＵ１０３処理：“ポスタリゼーション”“ストローク付加”“平滑化”“エッジ検出”
ＣＰＵ１０２処理時間＝０
ＧＰＵ１０３処理時間＝１＋３０＋５＋８．２５＝４４．２５
【０１１６】
（II）ＣＰＵ１０２処理：“ポスタリゼーション”
ＧＰＵ１０３処理：“ストローク付加”“平滑化”“エッジ検出”
ＣＰＵ１０２実効性能＝５
ＧＰＵ１０３実効性能＝３０＋５＋８．２５＝４３．２５
【０１１７】
（III）ＣＰＵ１０２処理：“ポスタリゼーション”“ストローク付加”
ＧＰＵ１０３処理：“平滑化”“エッジ検出”
ＣＰＵ１０２実効性能＝５＋１５＝２０
ＧＰＵ１０３実効性能＝５＋８．２５＝１３．２５
【０１１８】
（IV）ＣＰＵ１０２処理：“ポスタリゼーション”“ストローク付加”“平滑化”
ＧＰＵ１０３処理：“エッジ検出”
ＣＰＵ１０２実効性能＝５＋１５＋２０＝４０
ＧＰＵ１０３実効性能＝８．２５
【０１１９】
（Ｖ）ＣＰＵ１０２処理：“ポスタリゼーション”“ストローク付加”“平滑化”“エッジ検出”
ＧＰＵ１０３処理：なし
ＣＰＵ１０２実効性能＝５＋１５＋２０＋２５＝６５
ＧＰＵ１０３実効性能＝０
【０１２０】
上記計算結果より、“ポスタリゼーション”“平滑化”のエフェクト処理をＣＰＵ１０２が実行し、“エッジ検出”“ストローク付加”のエフェクト処理をＧＰＵ１０３が実行することになる。ここで、２回目に算出した稼働率によって更新される１フレーム前の後半処理（ＧＰＵ１０３処理）の相対的な処理時間を、式（１１）を用いて求める。
【０１２１】
更新される後半処理（ＧＰＵ１０３処理）＝１７．３×５０／２０＝４３．２５
【０１２２】
次に、更新された後半処理の相対的な処理時間をもとに、現フレームのエフェクト処理におけるＣＰＵ１０２とＧＰＵ１０３が実行するエフェクトの最適化を行う。先ほどの計算結果より、現フレームの前半処理（ＣＰＵ１０２処理）の処理時間が、１フレーム前の後半処理（ＧＰＵ１０３処理）の処理時間に最も近くなるのは、“ポスタリゼーション”“ストローク付加”“平滑化”のエフェクト処理をＣＰＵ１０２が実行し、“エッジ検出”のエフェクト処理をＧＰＵ１０３が実行する組み合わせであることがわかる。そして、ＧＰＵ１０３処理時間を“エッジ検出”１段分の処理時間に変更する。
【０１２３】
次に、３フレーム目のエフェクト処理が開始する。
３回目に算出したＣＰＵ１０２とＧＰＵ１０３の稼働率は、ＣＰＵ１０２が５０％、ＧＰＵ１０３が２０％であるものとし、式（１４）、（１５）を用いて、各エフェクトのＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。
【０１２４】
（Ｉ）ポスタリゼーション
式（１４）、（１５）より、ＣＰＵ１０２とＧＰＵ１０３の実効性能は以下の通りである。
ＣＰＵ１０２実効性能＝１×１００／５０＝２
ＧＰＵ１０３実効性能＝０．２×１００／２０＝1
【０１２５】
（II）ストローク付加
式（１４）、（１５）よりＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。
ＣＰＵ１０２実効性能＝３×１００／５０＝６
ＧＰＵ１０３実効性能＝６×１００／２０＝３０
【０１２６】
（III）平滑化
式（１４）、（１５）よりＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。
ＣＰＵ１０２実効性能＝４×１００／５０＝８
ＧＰＵ１０３実効性能＝１×１００／２０＝５
【０１２７】
（IV）エッジ検出
式（１４）、（１５）よりＣＰＵ１０２とＧＰＵ１０３の実効性能を算出する。
ＣＰＵ１０２実効性能＝５×１００／５０＝１０
ＧＰＵ１０３実効性能＝１．６５×１００／２０＝８．２５
【０１２８】
ここで、ＣＰＵ１０２とＧＰＵ１０３で分担して実行するエフェクト処理の内、処理時間の長い方が最短となるエフェクトの組み合わせを、上記計算結果を用いて網羅的に探索し、ＣＰＵ１０２とＧＰＵ１０３がどのエフェクト処理を実行するかを決定する。
【０１２９】
（Ｉ）ＣＰＵ１０２処理：なし
ＧＰＵ１０３処理：“ポスタリゼーション”“ストローク付加”“平滑化”“エッジ検出”
ＣＰＵ１０２処理時間＝０
ＧＰＵ１０３処理時間＝１＋３０＋５＋８．２５＝４４．２５
【０１３０】
（II）ＣＰＵ１０２処理：“ポスタリゼーション”
ＧＰＵ１０３処理：“ストローク付加”“平滑化”“エッジ検出”
ＣＰＵ１０２実効性能＝２
ＧＰＵ１０３実効性能＝３０＋５＋８．２５＝４３．２５
【０１３１】
（III）ＣＰＵ１０２処理：“ポスタリゼーション”“ストローク付加”
ＧＰＵ１０３処理：“平滑化”“エッジ検出”
ＣＰＵ１０２実効性能＝２＋６＝８
ＧＰＵ１０３実効性能＝５＋８．２５＝１３．２５
【０１３２】
（IV）ＣＰＵ１０２処理：“ポスタリゼーション”“ストローク付加”“平滑化”
ＧＰＵ１０３処理：“エッジ検出”
ＣＰＵ１０２実効性能＝２＋６＋８＝１６
ＧＰＵ１０３実効性能＝８．２５
【０１３３】
（Ｖ）ＣＰＵ１０２処理：“ポスタリゼーション”“ストローク付加”“平滑化”“エッジ検出”
ＧＰＵ１０３処理：なし
ＣＰＵ１０２実効性能＝２＋６＋８＋１０＝２６
ＧＰＵ１０３実効性能＝０
【０１３４】
上記計算結果より、“ポスタリゼーション”“平滑化”のエフェクト処理をＣＰＵ１０２が実行し、“エッジ検出”“ストローク付加”のエフェクト処理をＧＰＵ１０３が実行することになる。ここで、２回目に算出した稼働率によって更新される１フレーム前の後半処理（ＧＰＵ１０３処理）の相対的な処理時間を、式（１１）を用いて求める。
【０１３５】
更新される後半処理（ＧＰＵ１０３処理）＝８．２５×２０／２０＝８．２５
【０１３６】
次に、更新された後半処理の相対的な処理時間をもとに、現フレームのエフェクト処理におけるＣＰＵ１０２とＧＰＵ１０３が実行するエフェクトの最適化を行う。先ほどの計算結果より、現フレームの前半処理（ＣＰＵ１０２処理）の処理時間が、１フレーム前の後半処理（ＧＰＵ１０３処理）の処理時間に最も近くなるのは、“ポスタリゼーション”“ストローク付加”“平滑化”のエフェクト処理をＣＰＵ１０２が実行し、“エッジ検出”のエフェクト処理をＧＰＵ１０３が実行する組み合わせである。従って、最適化は行われない。
【０１３７】
以上のように、本実施例に関わる情報処理装置では、エフェクト間演算量比を取得し、各プロセッサの稼働率を単位時間毎に算出し、それぞれのエフェクト間演算量比と稼働率をもとに、実効性能を算出する。各プロセッサが分担して実行するエフェクト処理段数は、実効性能をもとに決定するが、常に単位時間毎のパイプラインステージで各プロセッサが実行するエフェクト処理段数の組み合わせが異なるエフェクト処理であっても最適化される。結果的に、各プロセッサが処理を実行しない期間を最小限に抑えられるため、処理速度の向上が期待できる。
【符号の説明】
【０１３８】
操作部１０５は、ユーザの指令を受け付け、指令に応じた制御信号を生成し、ＣＰＵ１０２に供給する。例えば、操作部１０５は、ユーザ指令を受け付ける入力デバイスとして、ボタンやタッチパネルなどからなる。
【０１３９】
１０１  撮像部、１０２  ＣＰＵ、１０３  ＧＰＵ、１０４  メモリ、１０５  操作部
【図１】
2017199091.tif 000003
【図２】
2017199091.tif 000004
【図３】
2017199091.tif 000005
【図４】
2017199091.tif 000006
【図５】
2017199091.tif 000007
【図６】
2017199091.tif 000008
【図７】
2017199091.tif 000009