(57)【要約】  コンピュータ１０は、画像処理が処理順序に逐次性を有する処理である場合、画像処理の対象となる画像データを複数の分割画像データに分割する分割部６０と、分割部６０が分割した分割画像データに対して行う画像処理であるタスク（部分処理３９）で、かつ前後の依存関係及び処理順序の依存関係に応じて処理可能なタスクを複数のコア１３の各々に並列して実行させる制御を行う制御部６２と、を備える。
2019053915.tif 000002
【特許請求の範囲】
【請求項１】
画像処理を実行するオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群の各オブジェクトにより画像処理を実行する画像処理装置であって、
前記画像処理が処理順序に逐次性を有する処理である場合、前記画像処理の対象となる画像データを複数の第１分割画像データに分割する分割部と、
前記第１分割画像データに対して行う画像処理である部分処理で、かつ前後の依存関係及び処理順序の依存関係に応じて処理可能な第１部分処理を複数の演算装置の各々に並列して実行させる制御を行う制御部と、
を備えた画像処理装置。
【請求項２】
前記分割部は、前記画像処理が処理順序に逐次性を有さない処理である場合、前記画像処理の対象となる画像データを複数の第２分割画像データに分割し、
前記制御部は、前記第２分割画像データに対して行う画像処理である部分処理で、かつ前後の依存関係に応じて処理可能な第２部分処理と、前記第１部分処理とを前記複数の演算装置の各々に並列して実行させる制御を行う、
請求項１に記載の画像処理装置。
【請求項３】
前記分割部は、前記第２部分処理に対応する前記第２分割画像データを第３分割画像データに再分割し、
前記制御部は、前記第３分割画像データに対して行う画像処理である第３分割処理と、前記第１部分処理とを前記複数の演算装置の各々に並列して実行させる制御を行う、
請求項２に記載の画像処理装置。
【請求項４】
前記オブジェクトは、実行する画像処理が処理順序に逐次性を有する処理であるか否かを表す情報を出力する、
請求項１から請求項３のいずれか１項に記載の画像処理装置。
【請求項５】
前記分割部は、前記オブジェクトが出力した前記逐次性を有する処理であるか否かを表す情報に基づいて、前記第１分割画像データに対する前記第１部分処理に、前記処理順序に応じた依存関係を付与する、
請求項４に記載の画像処理装置。
【請求項６】
前記オブジェクトは、実行する画像処理が処理順序に逐次性を有する処理であるか否かを表す情報を保持する、
請求項１から請求項３のいずれか１項に記載の画像処理装置。
【請求項７】
前記分割部は、前記オブジェクトに保持されている前記逐次性を有する処理であるか否かを表す情報を取得し、取得した当該情報に基づいて、前記第１分割画像データに対する前記第１部分処理に、前記処理順序に応じた依存関係を付与する、
請求項６に記載の画像処理装置。
【請求項８】
前記前後の依存関係とは、前後の画像処理における部分処理との間の依存関係であり、前記処理順序の依存関係とは、自身の画像処理における部分処理間の処理順序の依存関係である、
請求項１から請求項７のいずれか１項に記載の画像処理装置。
【請求項９】
画像処理を実行するオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群の各オブジェクトにより画像処理を実行する画像処理装置による画像処理方法であって、
前記画像処理が処理順序に逐次性を有する処理である場合、前記画像処理の対象となる画像データを複数の第１分割画像データに分割し、
前記第１分割画像データに対して行う画像処理である部分処理で、かつ前後の依存関係及び処理順序の依存関係に応じて処理可能な第１部分処理を複数の演算装置の各々に並列して実行させる制御を行う、
処理を含む画像処理方法。
【請求項１０】
コンピュータを、請求項１から請求項８のいずれか１項に記載の画像処理装置の分割部及び制御部として機能させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像処理装置、画像処理方法、及び画像処理プログラムに関する。
【背景技術】
【０００２】
特許文献１には、プログラムモジュールの組合せを表したグラフ構造を、分割した入力データ毎にノードを分割したグラフ構造に変換し、変換したグラフ構造の先行ノードの処理が終わったノードを並列に処理する情報処理装置が開示されている。【０００３】
また、非特許文献１及び非特許文献２には、ＤＡＧ（Directed Acyclic Graph：有向非循環（非巡回）グラフ）で表された画像処理の実行順序に従って、並列に画像処理を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】日本国特許第４９６５９９５号公報
【非特許文献】
【０００５】
【非特許文献１】遅延モード画像処理フレームワーク、［online］、［平成２９年８月３１日検索］、インターネット<URL: http://www.isus.jp/article/library-special/deferred-mode-image-processing-framework/>
【非特許文献２】The OpenVX Specification、［online］、［平成２９年８月３１日検索］、インターネット<URL: https://www.khronos.org/registry/vx/specs/1.0.1/OpenVX_Specification_1_0_1.pdf>
【発明の概要】
【発明が解決しようとする課題】
【０００６】
画像処理に基づく部分処理を複数の演算装置で並列に実行する場合に、処理順序に逐次性を有する画像処理を１つの部分処理として扱う場合、演算装置の稼働効率が低下し、有向非循環グラフ形態で表された画像処理全体の時間が長くなる場合があった。【０００７】
本開示の少なくとも一の実施形態は、処理順序に逐次性を有する画像処理を１つの部分処理として扱う場合に比べて、有向非循環グラフ形態で表された画像処理全体の画像処理時間を短縮することができる、画像処理装置、画像処理方法、及び画像処理プログラムを提供する。
【課題を解決するための手段】
【０００８】
本開示の第１の態様の画像処理装置は、画像処理を実行するオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群の各オブジェクトにより画像処理を実行する画像処理装置であって、前記画像処理が処理順序に逐次性を有する処理である場合、前記画像処理の対象となる画像データを複数の第１分割画像データに分割する分割部と、前記第１分割画像データに対して行う画像処理である部分処理で、かつ前後の依存関係及び処理順序の依存関係に応じて処理可能な第１部分処理を複数の演算装置の各々に並列して実行させる制御を行う制御部と、を備える。【０００９】
また、本開示の第２の態様の画像処理装置は、第１の態様において、前記分割部は、前記画像処理が処理順序に逐次性を有さない処理である場合、前記画像処理の対象となる画像データを複数の第２分割画像データに分割し、前記制御部は、前記第２分割画像データに対して行う画像処理である部分処理で、かつ前後の依存関係に応じて処理可能な第２部分処理と、前記第１部分処理とを前記複数の演算装置の各々に並列して実行させる制御を行う。【００１０】
また、本開示の第３の態様の画像処理装置は、第２の態様において、前記分割部は、前記第２部分処理に対応する前記第２分割画像データを第３分割画像データに再分割し、前記制御部は、前記第３分割画像データに対して行う画像処理である第３分割処理と、前記第１部分処理とを前記複数の演算装置の各々に並列して実行させる制御を行う。【００１１】
また、本開示の第４の態様の画像処理装置は、第１の態様から第３の態様のいずれか１態様において、前記オブジェクトは、実行する画像処理が処理順序に逐次性を有する処理であるか否かを表す情報を出力する。【００１２】
また、本開示の第５の態様の画像処理装置は、第４の態様において、前記分割部は、前記オブジェクトが出力した前記逐次性を有する処理であるか否かを表す情報に基づいて、前記第１分割画像データに対する前記第１部分処理に、前記処理順序に応じた依存関係を付与する。【００１３】
また、本開示の第６の態様の画像処理装置は、第１の態様から第３の態様のいずれか１態様において、前記オブジェクトは、実行する画像処理が処理順序に逐次性を有する処理であるか否かを表す情報を保持する。【００１４】
また、本開示の第７の態様の画像処理装置は、第６の態様において、前記分割部は、前記オブジェクトに保持されている前記逐次性を有する処理であるか否かを表す情報を取得し、取得した当該情報に基づいて、前記第１分割画像データに対する前記第１部分処理に、前記処理順序に応じた依存関係を付与する。【００１５】
また、本開示の第８の態様の画像処理装置は、第１の態様から第７の態様のいずれか１態様において、前記前後の依存関係とは、前後の画像処理における部分処理との間の依存関係であり、前記処理順序の依存関係とは、自身の画像処理における部分処理間の処理順序の依存関係である。【００１６】
また、上記目的を達成するために、本開示の第９の態様の画像処理方法は、画像処理を実行するオブジェクトが有向非循環グラフ形態で複数連結されたオブジェクト群の各オブジェクトにより画像処理を実行する画像処理装置による画像処理方法であって、前記画像処理が処理順序に逐次性を有する処理である場合、前記画像処理の対象となる画像データを複数の第１分割画像データに分割し、前記第１分割画像データに対して行う画像処理である部分処理で、かつ前後の依存関係及び処理順序の依存関係に応じて処理可能な第１部分処理を複数の演算装置の各々に並列して実行させる制御を行う、処理を含む。【００１７】
また、上記目的を達成するために、本開示の第１０の態様の画像処理プログラムは、コンピュータを、第１の態様から第８の態様のいずれか１態様に記載の画像処理装置の分割部及び制御部として機能させるためのものである。
【発明の効果】
【００１８】
本開示の第１の態様、第９の態様、及び第１０の態様によれば、処理順序に逐次性を有する画像処理を１つの部分処理として扱う場合に比べて、有向非循環グラフ形態で表された画像処理全体の画像処理時間を短縮することができる。【００１９】
本開示の第２の態様によれば、処理順序に逐次性を有さない画像処理を１つの部分処理として扱う場合に比べて、有向非循環グラフ形態で表された画像処理全体の画像処理時間をさらに短縮することができる。【００２０】
本開示の第３の態様によれば、第１部分処理と第２部分処理とを複数の演算装置の各々に並列して実行させる場合に比べて、画像処理の処理効率を高めた並列処理を実現することができる。【００２１】
本開示の第４の態様によれば、オブジェクト以外から出力された、実行する画像処理が処理順序に逐次性を有する処理であるか否かを表す情報を用いる場合に比べて、依存関係を付与する処理を容易に行うことができる。【００２２】
本開示の第５の態様によれば、実行する画像処理が処理順序に逐次性を有する処理であるか否かを表す情報をオブジェクトが出力しない場合に比べて、依存関係を付与する処理を容易に行うことができる【００２３】
本開示の第６の態様によれば、実行する画像処理が処理順序に逐次性を有する処理であるか否かを表す情報をオブジェクトが保持しない場合に比べて、依存関係を付与する処理を容易に行うことができる。【００２４】
本開示の第７の態様によれば、実行する画像処理が処理順序に逐次性を有する処理であるか否かを表す情報をオブジェクト以外から取得する場合に比べて、依存関係を付与する処理を容易に行うことができる。【００２５】
本開示の第８の態様によれば、前後の依存関係が本構成と異なる前後の依存関係、及び処理順序の依存関係が本構成と異なる処理順序の依存関係である場合に比べて、より有向非循環グラフ形態で表された画像処理全体の画像処理時間を短縮することができる。
【図面の簡単な説明】
【００２６】
【図１】図１は第１実施形態の画像処理装置として機能するコンピュータの構成の一例を示すブロック図である。
【図２Ａ】図２Ａは画像処理ＤＡＧの一例を示す概略図である。
【図２Ｂ】図２Ｂは画像処理ＤＡＧに入出力用のメモリを加えた場合の一例を示す概略図である。
【図３】図３は第１実施形態の処理制御部の機能的な構成の一例を示すブロック図である。
【図４Ａ】図４Ａは第１実施形態における入力画像の分割処理の一例の説明に供する概略図である。
【図４Ｂ】図４Ｂは第１実施形態における入力画像の分割処理の一例の説明に供する概略図である。
【図５】図５は画像処理モジュールが部分処理（タスク）に分割された画像処理ＤＡＧの一例を示す概略図である。
【図６】図６は第１実施形態のＤＡＧ構築処理の流れの一例を示すフローチャートである。
【図７】図７は第１実施形態のＤＡＧ更新処理の流れの一例を示すフローチャートである。
【図８】図８は第１実施形態のタスク実行処理の流れの一例を示すフローチャートである。
【図９】図９は第１実施形態のタスク実行処理の説明に供する概略図である。
【図１０Ａ】図１０Ａは第１実施形態の作用の説明に供する概略図である。
【図１０Ｂ】図１０Ｂは第１本実施形態の作用の説明に供する概略図である。
【図１０Ｃ】図１０Ｃは第１実施形態の作用の説明に供する概略図である。
【図１１Ａ】図１１Ａは比較例の作用の説明に供する概略図である。
【図１１Ｂ】図１１Ｂは比較例の作用の説明に供する概略図である。
【図１２】図１２は第２実施形態における入力画像の分割処理の一例の説明に供する概略図である。
【図１３】図１３は第２実施形態のタスク実行処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００２７】
以下、図面を参照して、本発明を実施するための形態例を詳細に説明する。
【００２８】
［第１実施形態］
まず、図１を参照して、画像処理装置として機能するコンピュータ１０の構成を説明する。なお、コンピュータ１０は、複写機、プリンタ、ファクシミリ装置、これらの装置の機能を兼ね備えた複合機、及びスキャナ等の内部で画像処理を行う画像取扱機器に組み込まれたコンピュータであってもよい。また、コンピュータ１０は、ＰＣ（Personal Computer）等の独立したコンピュータであってもよく、ＰＤＡ（Personal Digital Assistant）及び携帯電話機等の携帯機器に組み込まれたコンピュータであってもよい。
【００２９】
図１に示すように、本実施形態のコンピュータ１０は、第１演算部１２Ａ、第２演算部１２Ｂ、メモリ１４、表示部１６、操作部１８、記憶部２０、画像データ供給部２２、及び画像出力部２４を備えている。また、第１演算部１２Ａ、第２演算部１２Ｂ、メモリ１４、表示部１６、操作部１８、記憶部２０、画像データ供給部２２、及び画像出力部２４の各部は、バス２６を介して互いに接続されている。
【００３０】
本実施形態の第１演算部１２Ａは、コンピュータ１０のメイン・プロセッサであり、一例として複数のプロセッサ・コア１３（以下、「コア１３」という。）を有するＣＰＵ（Central Processing Unit）である。以下では、各コア１３を区別して説明する場合は、コア１３Ａ、コア１３Ｂのように、符号の末尾にアルファベットを付して説明する。
【００３１】
また、本実施形態の第２演算部１２Ｂは、一例として内部にローカルメモリ１５を有するＧＰＵ（Graphics Processing Unit）である。なお、第２演算部１２Ｂは、ローカルメモリ１５等の内部メモリを備え、内部メモリに記憶された画像データに対して画像処理を行う演算装置であれば、特に限定されず、例えば、ＣＰＵでもよい。また、第２演算部１２Ｂは、第１演算部１２Ａに内蔵されたＧＰＵでもよい。また、第１演算部１２Ａ及び第２演算部１２Ｂは、ＦＰＧＡ（Field Programmable Gate Array）等の演算装置でもよい。本実施形態のコア１３及び第２演算部１２Ｂが、本開示の演算装置の一例である。
【００３２】
メモリ１４は、第１演算部１２Ａが一時的にデータを記憶させる不揮発性の記憶手段である。本実施形態の第２演算部１２Ｂにより画像処理を行う場合、第１演算部１２Ａはメモリ１４又は記憶部２０の記憶領域に記憶された画像データを第２演算部１２Ｂにバス２６を介して転送する。そして、第２演算部１２Ｂは、第１演算部１２Ａから転送された画像データをローカルメモリ１５に記憶し、記憶した画像データに対して画像処理を行う。
【００３３】
コンピュータ１０が前述した画像取扱機器に組み込まれている場合、表示部１６及び操作部１８は、例えば画像取扱機器に設けられたＬＣＤ（Liquid Crystal Display）等の表示パネル及びテンキー等が適用される。また、コンピュータ１０が独立したコンピュータである場合、表示部１６及び操作部１８は、例えばコンピュータ１０に接続されたディスプレイ、及びキーボード、マウス等が適用される。また、表示部１６及び操作部１８は、タッチパネル及びディスプレイが一体化して構成されたタッチパネルディスプレイ等でもよい。また、記憶部２０は、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）、及びフラッシュメモリ等の不揮発性の記憶媒体が適用される。
【００３４】
画像データ供給部２２は、処理対象の画像データを供給するものであればよく、例えば紙又は写真フィルム等の記録材料に記録されている画像を読み取って画像データを出力する画像読取部が適用される。また、画像データ供給部２２は、例えば通信回線を介して外部装置から画像データを受信する受信部、及び画像データを記憶する画像記憶部（メモリ１４又は記憶部２０）等が適用される。
【００３５】
画像出力部２４は、画像処理を経た画像データ又は画像処理を経た画像データが表す画像を出力するものであればよく、例えば画像データが表す画像を紙又は感光材料等の記録材料に記録する画像記録部が適用される。また、画像出力部２４は、画像データが表す画像をディスプレイ等に表示する表示部（表示部１６）、画像データをＣＤ−ＲＯＭ（Compact Disk Read Only Memory）等の記録媒体に書き込む書込装置が適用される。また、画像出力部２４は、画像処理を経た画像データを、通信回線を介して外部装置に送信する送信部が適用される。また、画像出力部２４は、画像処理を経た画像データを記憶する画像記憶部（メモリ１４又は記憶部２０）であってもよい。
【００３６】
図１に示すように、記憶部２０には、第１演算部１２Ａ及び第２演算部１２Ｂによって実行される各種プログラムが記憶されている。記憶部２０には、各種プログラムとして、リソースの管理、プログラムの実行の管理、及びコンピュータ１０と外部装置との通信等を司るオペレーティングシステム３０のプログラムが記憶されている。また、記憶部２０には、各種プログラムとして、コンピュータ１０を画像処理装置として機能させるための画像処理プログラム群３４が記憶されている。また、記憶部２０には、各種プログラムとして、上記画像処理装置に対して所望の画像処理を行わせる各種のアプリケーションプログラム群３２（以下、「アプリケーション３２」という。）が記憶されている。
【００３７】
画像処理プログラム群３４は、前述した画像取扱機器、携帯機器、及びＰＣ等で実行される画像処理プログラムを開発する際の負荷を軽減することを目的として開発されたプログラムである。また、画像処理プログラム群３４は、前述した画像取扱機器、携帯機器、及びＰＣ等の各種機器（プラットフォーム）で共通に実行可能に開発されたプログラムである。
【００３８】
画像処理プログラム群３４によって実現される画像処理装置は、アプリケーション３２からの構築指示に従い、アプリケーション３２が指示した画像処理を行う画像処理ＤＡＧ（有向非循環グラフ：Directed Acyclic Graph）５０Ａ（詳細は後述）を構築する。そして、上記画像処理装置は、アプリケーション３２からの実行指示に従い画像処理ＤＡＧ５０Ａの処理を実行する。このため、画像処理プログラム群３４は、所望の画像処理を行う画像処理ＤＡＧ５０Ａの構築を指示したり、構築された画像処理ＤＡＧ５０Ａによる画像処理の実行を指示したりするためのインタフェースをアプリケーション３２に提供している。
【００３９】
以上の構成により、内部で画像処理を行う必要のある任意の機器を新規に開発する場合等にも、上記画像処理を行うプログラムの開発に関しては、上記任意の機器で必要とされる画像処理を、上記インタフェースを利用して画像処理プログラム群３４に行わせるアプリケーション３２を開発すればよい。従って、開発者は、実際に画像処理を行うプログラムを新たに開発する必要が無くなり、開発者の負荷が軽減される。
【００４０】
次に、本実施形態の画像処理プログラム群３４について詳細に説明する。図１に示すように、画像処理プログラム群３４は、モジュールライブラリ３６、処理構築部４２のプログラム、及び処理制御部４６のプログラムを含む。
【００４１】
モジュールライブラリ３６は、予め定められた互いに異なる画像処理を行う複数種類の画像処理モジュール３８のプログラムが各々登録されている。この画像処理としては、例えば、入力処理、フィルタ処理、誤差拡散処理、拡大・縮小処理（図１では「拡縮処理」と表記）、色変換処理、スキュー角検知処理、画像回転処理、画像合成処理、及び出力処理等（図１では、一例として入力処理、フィルタ処理、誤差拡散処理、拡大・縮小処理、及び出力処理の各処理のモジュールを記載）が挙げられる。
【００４２】
なお、モジュールライブラリ３６には、画像処理の種類が同一で、かつ実行する画像処理の内容が異なる画像処理モジュール３８も登録されていてもよい。例えば、拡大・縮小処理を行う画像処理モジュール３８については、入力された画像データを、水平方向及び垂直方向の各方向ともに１画素おきに間引くことで画像の縦横のサイズを５０％に縮小する縮小処理を行う画像処理モジュール３８と、指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール３８との２つのモジュールが登録されていてもよい。
【００４３】
また、モジュールライブラリ３６には、画像データを記憶するための記憶領域（バッファ）を備えたバッファモジュール４０も登録されている。
【００４４】
本実施形態の処理構築部４２は、アプリケーション３２からの指示によりＤＡＧ形態の画像処理ＤＡＧ５０Ａを構築する。画像処理ＤＡＧ５０Ａは、一例として図２Ａに示すように、１つ以上の画像処理モジュール３８が、個々の画像処理モジュール３８の前段及び後段の少なくとも一方に配置されたバッファモジュール４０を介して連結される。
【００４５】
なお、個々の画像処理モジュール３８は、入力画像データに対して画像処理を実行するオブジェクトの一例である。また、図２Ａに示す例では、バッファモジュール４０を介して前段に画像処理モジュール３８が連結された画像処理モジュール３８は、前段の画像処理モジュール３８による画像処理が終了した場合に、自身の画像処理の実行が可能となることを示している。また、バッファモジュール４０を介して前段に複数の画像処理モジュール３８が連結された画像処理モジュール３８は、前段の複数の画像処理モジュール３８のうち自身の処理の入力として必要な全ての画像処理が終了した場合に、自身の画像処理の実行が可能となることを示している。
【００４６】
また、図２Ａでは、各モジュールのみが処理の順に接続されたＤＡＧを示しているが、このＤＡＧが実行される際には、図２Ｂに示すようにメモリ１４に記憶された入力画像データが入力されてＤＡＧに従って画像処理が行われる。そして、最終的にメモリ１４に処理済みの出力画像データ等の処理結果が記憶される。
【００４７】
次に、図３を参照して、本実施形態の処理制御部４６の機能的な構成を説明する。図３に示すように、処理制御部４６は、分割部６０、制御部６２、タスクキュー６４、及び出力部６６を備えている。
【００４８】
本実施形態の分割部６０は、入力画像データの処理対象とする部分により示される画像を複数の部分領域（以下、「分割画像」という。）に分割する。一例として図４Ａに示すように、分割部６０は、入力画像データの処理対象とする部分により示される画像Ｇを、複数（図４Ａに示す例では３つ）の分割画像Ｂ１〜Ｂ３に分割する。なお、以下では分割画像を示す画像データを「分割画像データ」という。また、入力画像データの処理対象とする部分とは、色変換処理のように入力画像全体を処理対象とする画像処理では、入力画像データ全体が処理対象とする部分を意味する。また、入力画像データの処理対象とする部分とは、切り抜き（トリミング）処理のように、入力画像の一部を処理対象とする画像処理では、入力画像の一部を意味する。以下では、錯綜を回避するために、入力画像データの処理対象とする部分を、単に「入力画像データ」という。
【００４９】
また、図４Ａに示した例では、分割部６０が画像Ｇを正面視上下に分割しているが、これに限定されない。例えば分割部６０は画像Ｇを正面視左右に分割してもよいし、図４Ｂに示すように、正面視上下左右に分割してもよい。
【００５０】
なお、分割部６０による入力画像データの分割数は特に限定されない。例えば、分割部６０は、予め定められた数又はサイズで入力画像データを分割してもよい。また、例えば、分割部６０は、画像処理モジュール３８による画像処理を実行する演算部が有するプロセッサ・コア数以下で、かつ２以上の数に入力画像データを分割してもよい。
【００５１】
また、例えば、分割部６０は、画像処理モジュール３８による画像処理を実行する演算部が有するキャッシュメモリの容量以下のサイズで入力画像データを分割してもよい。この場合、例えば、分割部６０は、画像処理モジュール３８による画像処理を実行する演算部のプロセッサに付随する容量の大きなレベルのキャッシュメモリ、所謂ＬＬＣ（Last Level Cache）の容量以下で、かつＬＬＣの容量に極力一致するサイズで入力画像データを分割する形態が例示される。
【００５２】
本実施形態の分割部６０は、分割画像データに対応するタスクを複数のコア１３に並列に実行させる制御を行う。なお、ここでいう並列とは、依存関係に基づいて実行可能となったタスクが複数のコア１３により並列に（同時に）実行されることを意味する。
【００５３】
具体的には、分割部６０は、一例として図５に示すように、画像処理ＤＡＧ５０Ａの各画像処理モジュール３８で実行される画像処理を分割画像データの各々に対応する部分処理３９に分割して、画像処理ＤＡＧ５０Ａを画像処理ＤＡＧ５０Ｂに更新する。なお、画像処理ＤＡＧ５０Ｂは、各部分処理３９のタスクにおけるＤＡＧを表すものであり、いわゆるタスクＤＡＧである。
【００５４】
なお、図５は、図２Ａに示した画像処理ＤＡＧ５０Ａにおいて、入力画像データを４つの分割画像データに分割した場合の画像処理ＤＡＧ５０Ｂを示している。図５では、錯綜を回避するために、バッファモジュール４０の図示を省略している。
【００５５】
本実施形態の分割部６０は、画像処理モジュール３８で実行される画像処理の種類に応じて、部分処理３９間における依存関係を付与する。なお、図５では、この依存関係を破線の矢印で示している。
【００５６】
ここで、本実施形態の画像処理について説明する。本実施形態における画像処理には、処理順序に逐次性を有する画像処理と、処理順序に逐次性を有さない画像処理との２種類の画像処理がある。
【００５７】
例えば、画像処理が、８ビット構成の画素値（０〜２５５）を０または２５５に２値化する誤差拡散処理の場合、処理対象の画素の画素値に対して画像処理を行うためには、処理対象の画素よりも処理順番が前の画素までの画像処理による２値化誤差の伝播が必要となる。
【００５８】
また例えば、画像処理が、ハードディスク等、外部記憶装置との間での画像入力処理や画像出力処理の場合、画像ファイルが格納されたハードディスクは物理的な媒体として１つであるため、複数の演算装置等で並列に読み書きするとデータの順番に狂いが生じ、正しく読み書きすることができない場合がある。
本実施形態では、誤差拡散処理のように、画素毎に独立していない画像処理や、画像入力処理や画像出力処理のように、分割画像に対する画像処理を時系列で順次行わなくてはならない画像処理を、処理順序に逐次性を有する画像処理といい、以下では単に、逐次性を有する画像処理という。なお、本開示における逐次性を有する画像処理における部分処理３９が、本開示の第１部分処理の一例であり、その分割画像データが本開示の第１分割画像データの一例である。
【００５９】
一方、例えば、色変換処理や、画像の各画素値をＬＵＴ（Lookup Table）等の変換テーブルで変換する変換処理等の画像処理では、処理対象とする画素のみに対して画像処理が行われる。この場合の画像処理は画素毎に独立しており、他の画素の画素値の影響を受けない。
【００６０】
また例えば、畳み込みフィルタ処理のように、処理対象とする画素の周辺画素を参照する画像処理では、周辺画素に対して画像処理を行う前段の部分処理３９と依存関係を有するが、フィルタ処理自体は、画素毎に独立して行うことができる。
【００６１】
本実施形態では、このように、画素毎に独立した画像処理を、処理順序に逐次性を有さない画像処理といい、以下では単に、逐次性を有さない画像処理という。なお、本開示における逐次性を有さない画像処理における部分処理３９が、本開示の第２部分処理の一例であり、その分割画像データが本開示の第２分割画像データの一例である。
【００６２】
なお、逐次性を有する画像処理であるか否かは、各画像処理モジュール３８の処理内容に依存しているため、本実施形態では、各画像処理モジュール３８に逐次性を有する画像処理であるか否かを表す情報（以下、「逐次性情報」という）を保持しておく形態としている。なお、当該形態は、逐次性を有する画像処理を行う画像処理モジュール３８に、その旨を表す情報を保持しておく形態、及び逐次性を有さない画像処理を行う画像処理モジュール３８に、その旨を表す情報を保持しておく形態のいずれか一方の形態をも含んでいる。また、本実施形態に限定されず、例えば、逐次性情報を各画像処理モジュール３８が保持しているか否かにかかわらず、画像処理モジュール３８から逐次性情報が出力される形態としてもよい。
【００６３】
分割部６０は、逐次性を有する画像処理を行う画像処理モジュール３８Ｂに対して、分割画像（部分処理３９）に分割し、分割した部分処理３９の間に処理順序の依存関係（図５の画像処理モジュール３８Ｂにおける、部分処理３９間の矢印参照）を付与する。
【００６４】
また、分割部６０は、逐次性を有さない画像処理を行う画像処理モジュール３８Ａ及び逐次性を有する画像処理を行う画像処理モジュール３８Ｂに対して、前段に連結された画像処理モジュール３８の部分処理３９と、後段に連結された画像処理モジュール３８の部分処理３９との間で依存関係（図５の各画像処理モジュール３８間における矢印参照）を付与する。
【００６５】
具体的には、図５に示した場合では、画像処理モジュール３８Ａ１の部分処理３９Ａ、部分処理３９Ｂ、及び部分処理３９Ｃの各々は、画像処理の実行開始時に実行可能となる。一方、画像処理モジュール３８Ｂの部分処理３９Ｄは、依存関係が付与された部分処理３９Ａ及び部分処理３９Ｂの双方の処理が終了した場合に実行可能となる。また、画像処理モジュール３８Ｂの部分処理３９Ｅは、依存関係が付与された部分処理３９Ａ、部分処理３９Ｂ、部分処理３９Ｃ、及び部分処理３９Ｄの全ての処理が終了した場合に実行可能となる。さらに、画像処理モジュール３８Ａ２の部分処理３９Ｆが、依存関係が付与された部分処理３９Ｄの処理が終了した場合に実行可能となる。
【００６６】
すなわち、各部分処理３９は、依存関係が付与された部分処理３９が前処理として存在しない場合か、又は依存関係が付与された前処理である部分処理３９が全て終了した場合に実行可能となる。
【００６７】
なお、以下では、分割画像データに対応する部分処理３９について、「タスク」とも称している。
【００６８】
本実施形態の制御部６２は、実行可能となっているタスクを、格納されたタスクを複数のコア１３の各々が順次取り出して実行するためのタスクキュー６４に格納する。なお、タスクキュー６４に同時に格納するタスクの数は、本実施形態に限定されないが、２つ以上であることが好ましく、さらには、演算装置（コア１３等）の数等に応じた数とすることが好ましい。タスクキュー６４に格納されるタスクの数が少ない場合、タスクの実行が完了するまで新たなタスクをタスクキュー６４に格納しないとすると、新たなタスクがタスクキュー６４に格納されず、複数あるコア１３のうち、稼働しないコア１３が増加してしまい、コア１３の稼働率が低下する。なお、タスクキュー６４が同時に格納可能なタスクの数を制限しない場合、タスクキュー６４に格納された全てのタスクに対して、前処理（詳細後述）において、メモリが確保されるため、確保されるメモリ容量が多くなってしまう。
【００６９】
そのため、タスクキュー６４が同時に格納可能なタスクの数を制限することにより、前処理において確保されるメモリ等のリソースの量が増加するのが抑制される。そのため、タスクキュー６４が同時に格納可能なタスクの数は、メモリの容量等に応じて定めてもよいし、コア１３の稼働率に応じて可変としてもよい。
【００７０】
制御部６２は、タスクキュー６４からタスクを取得し、取得したタスクを実行させる。
【００７１】
本実施形態の出力部６６は、制御部６２による制御により、画像処理ＤＡＧ５０Ｂの最終段の画像処理モジュール３８により実行された画像処理の結果得られた出力画像データを出力する。本実施形態では、出力部６６は、得られた出力画像データにより示される出力画像を表示部１６に表示する。なお、出力部６６は、出力画像データを外部装置に出力（送信）してもよい。また、コンピュータ１０がプリンタに組み込まれている場合は、出力部６６は、出力画像データにより示される出力画像を紙等の記録材料に出力（形成）してもよい。
【００７２】
次に、図６〜図１０を参照して、本実施形態のコンピュータ１０の作用を説明する。なお、図６は、アプリケーション３２により画像処理の実行開始の指示が入力された場合に第１演算部１２Ａによって実行されるＤＡＧ構築・実行処理の流れの一例を示すフローチャートである。また、ＤＡＧ構築・実行処理のプログラムは記憶部２０に予めインストールされている。また、第１演算部１２Ａにおける何らかのタスクを実行していなく、タスクを実行可能なコア１３がＤＡＧ構築・実行処理プログラムを実行することで、前述した処理構築部４２及び制御部６２として機能する。
【００７３】
図６のステップ１００で、処理構築部４２は、アプリケーション３２からの構築指示に従い、アプリケーション３２が指示した画像処理を行う画像処理ＤＡＧ５０Ａを構築する。次のステップ１０２で、制御部６２は、ステップ１００で構築された画像処理ＤＡＧ５０Ａの更新処理及び依存関係の付与処理を画像処理モジュール３８毎に実行するタスクをタスクキュー６４に格納した後、本ＤＡＧ構築処理を終了する。
【００７４】
本実施形態では、タスクキュー６４に格納された上記タスクを取り出して、コア１３の１つが実行することで、図７に一例を示すＤＡＧ更新処理が実行される。
【００７５】
なお、図７は、ＤＡＧ更新処理プログラムの処理の流れを示すフローチャートであり、このＤＡＧ更新処理プログラムも記憶部２０に予めインストールされている。また、タスクを実行可能なコア１３がＤＡＧ更新処理プログラムを実行することで、前述した分割部６０及び制御部６２として機能する。
【００７６】
図７のステップ１２０で、分割部６０は、画像処理ＤＡＧ５０Ａに含まれる全ての画像処理モジュール３８を、トポロジカルソート等の既知のソート手法でソートする。
【００７７】
次のステップ１２２で分割部６０は、上記ステップ１２０でソートされた全ての画像処理モジュール３８の先頭から順に１つの画像処理モジュール３８を処理対象として取り出す。
【００７８】
ステップ１２４で、分割部６０は、上述したように、入力画像データを複数の分割画像データに分割する。そして、分割部６０は、上述したように、取り出した画像処理モジュール３８で実行される画像処理を分割画像データの各々に対応するタスクに分割する。
【００７９】
次のステップ１２６で、分割部６０は、取り出した画像処理モジュール３８の画像処理が逐次性を有する画像処理であるか否かを判定する。上述したように、本実施形態では、逐次性情報が画像処理モジュール３８に保持されている。このため、分割部６０は、画像処理モジュール３８に保持されている逐次性情報を参照して本ステップの判定を行う。逐次性を有さない画像処理の場合、ステップ１２６の判定が否定判定となり、ステップ１３０へ移行する。一方、逐次性を有する画像処理の場合、ステップ１２６の判定が肯定判定となり、ステップ１２８へ移行する。
【００８０】
ステップ１２８で分割部６０は、取り出した画像処理モジュール３８内の各タスクに処理順序を表す依存関係を付与する。
【００８１】
次のステップ１３０で分割部６０は、取り出した画像処理モジュール３８の前段に画像処理モジュール３８が連結されているか否かを判定する。画像処理モジュール３８が連結されていない場合、ステップ１３０の判定が否定判定となり、ステップ１３４へ移行する。一方、画像処理モジュール３８が連結されている場合、ステップ１３０の判定が肯定判定となり、ステップ１３２へ移行する。
【００８２】
ステップ１３２で、分割部６０は、上述したように、取り出した画像処理モジュール３８で実行される画像処理の種類に応じて、前段に連結された画像処理モジュール３８のタスクと、取り出した画像処理モジュール３８のタスクとの間で依存関係を付与する。
【００８３】
次のステップ１３４で分割部６０は、上記ステップ１２２で全ての画像処理モジュールを取り出したか否かを判定する。未だ取り出していない画像処理モジュール３８が有る場合、ステップ１３４の判定が否定判定となり、ステップ１２２に戻り、先頭から次の順の画像処理モジュール３８を１つ、処理対象として取り出し、上記ステップ１２４〜１３４の処理を繰り返す。一方、全ての画像処理モジュール３８を取り出した場合、ステップ１３４の判定が肯定判定となり、本ＤＡＧ更新処理を終了する。このようにして本実施形態のＤＡＧ更新処理が実行されることにより、画像処理ＤＡＧ５０Ｂが生成される。
【００８４】
一方、図８は、アプリケーション３２により画像処理の実行開始の指示が入力された場合に演算装置によって実行されるタスク実行処理プログラムの処理の流れを示すフローチャートである。また、このタスク実行処理プログラムも記憶部２０に予めインストールされている。また、タスクを実行可能なコア１３がタスク実行処理プログラムを実行することで、制御部６２として機能する。
【００８５】
図８のステップ１４０で、制御部６２は、タスクキュー６４にタスクが格納されているか否かを判定する。例えば、全ての画像処理モジュール３８の全てのタスクの実行が終了した場合、タスクキュー６４にタスクが格納されていないため、ステップ１４０の判定が否定判定となり、本タスク実行処理を終了する。本タスク実行処理が終了することにより、出力部６６からアプリケーション３２が所望する画像処理の結果が得られる。
【００８６】
一方、タスクキュー６４にタスクが格納されている場合、ステップ１４０の判定が肯定判定となり、ステップ１４２へ移行する。
【００８７】
ステップ１４２で制御部６２は、タスクキュー６４の先頭から１つのタスクを取り出す。そして次のステップ１４４で制御部６２は、取り出したタスクを、第１演算部１２Ａのコア１３または第２演算部１２Ｂに実行させる。なお、第２演算部１２Ｂにタスクを実行させる場合、第１演算部１２Ａのコア１３が、第２演算部１２Ｂにタスクを実行させる処理を行うことにより、第２演算部１２Ｂによりタスクが実行される。
【００８８】
なお、タスクを実行する前、例えばステップ１４４の前に、画像処理結果を格納するための出力バッファ領域の確保や画像処理用の変数の初期化等の演算用のリソースの確保を行う処理等の予め定められた前処理を行ってもよい。また、タスクの実行後、例えばステップ１４４の後に、確保した演算用のリソースの解放等の予め定められた後処理を行ってもよい。
【００８９】
次のステップ１４６で制御部６２は、ステップ１４４の処理により実行済となったタスクに依存するタスクの依存関係を解消する。
【００９０】
次のステップ１４８で制御部６２は、依存関係に基づいて新たに実行可能となったタスクを順次タスクキュー６４に格納した後、ステップ１４０に戻る。
【００９１】
一例として図９に示した画像処理ＤＡＧ５０Ｂには、逐次性を有する画像処理を行う画像処理モジュール３８ＢのタスクＴＢ１〜ＴＢ３について、タスクＴＢ１を最初とし、タスクＴＢ３を最後とする依存関係が付与されている。また、逐次性を有さない画像処理を行う画像処理モジュール３８ＡのタスクＴＡ１、ＴＡ２については、各々前段の画像処理モジュール３８ＢのタスクＴＢ１〜ＴＢ３との間の依存関係が付与されている。
【００９２】
タスク実行処理のステップ１４４でタスクＴＢ１及びタスクＴＢ２が実行済となっている場合、ステップ１４６では、タスクＴＢ１と、タスクＴＢ２及びタスクＴＡ１との間の依存関係、タスクＴＢ２と、タスクＴＢ３、タスクＴＡ１、及びタスクＴＡ２との依存関係が解消される。
【００９３】
そのため、図９に示したように、タスクＴＢ３及びタスクＴＡ１の実行が可能となり、ステップ１４８でタスクキュー６４に、各々格納される。
【００９４】
そこで、タスクを実行可能なコア１３（図９に示す例では、コア１３Ａ、１３Ｂ）がタスクキュー６４からタスク（タスクＴＢ３、タスクＴＡ１）を取り出して実行する。すなわち、図９に示すように、逐次性を有する画像処理を行う画像処理モジュール３８ＢのタスクＴＢ３と、逐次性を有さない画像処理を行う画像処理モジュール３８ＡのタスクＴＡ１とが、複数のコア１３により並列に実行される。
【００９５】
さらに、図１０（図１０Ａ〜１０Ｃ）を参照して、本実施形態のコンピュータ１０の作用を具体的に説明する。一例として、図１０Ａに示すように、画像処理ＤＡＧ５０Ａが、画像入力処理を行う画像処理モジュール３８Ｂ１、フィルタ処理を行う画像処理モジュール３８Ａ３、誤差拡散処理を行う画像処理モジュール３８Ｂ２、縮小処理を行う画像処理モジュール３８Ａ４、及び画像出力処理を行う画像処理モジュール３８Ｂ３とが連結されたＤＡＧである場合について説明する。なお、画像処理モジュール３８Ｂ１、３８ＡＢ２、３８Ｂ３が逐次性を有する画像処理を行う画像処理モジュール３８であり、画像処理モジュール３８Ａ３、３８Ａ４が逐次性を有さない画像処理を行う画像処理モジュール３８である。
【００９６】
図１０Ｂには、図１０Ａに示した画像処理ＤＡＧ５０Ａを、分割部６０が部分処理に分割し、依存性を付与することにより更新した画像処理ＤＡＧ５０Ｂの一例を示す。画像処理ＤＡＧ５０Ｂ全体では、図１０Ｂに示すように、１８個のタスク（Ｔ１〜Ｔ１８）に分割されている。具体的には、画像処理モジュール３８Ｂ１は、タスクＴ１〜Ｔ４に分割されており、各タスク間に処理順序（１から４へ向かう順序）に応じた依存関係が付与されている。画像処理モジュール３８Ａ３は、タスクＴ５〜Ｔ８に分割されており、前段の画像処理モジュール３８Ｂ１のタスク（Ｔ１〜Ｔ４）との間、及び後段の画像処理モジュール３８Ｂ２のタスク（Ｔ９〜Ｔ１２）との間の依存関係が付与されている。また、画像処理モジュール３８Ｂ２は、タスクＴ９〜Ｔ１２に分割されており、各タスク間に処理順序（９から１２へ向かう順序）に応じた依存関係と、前段の画像処理モジュール３８Ａ３のタスク（Ｔ５〜Ｔ８）との間、及び後段の画像処理モジュール３８Ａ４のタスク（Ｔ１３〜Ｔ１５）との間の依存関係とが付与されている。また、画像処理モジュール３８Ａ４は、タスクＴ１３〜Ｔ１５に分割されており、前段の画像処理モジュール３８Ｂ２のタスク（Ｔ９〜Ｔ１２）との間、及び後段の画像処理モジュール３８Ｂ３のタスク（Ｔ１６〜Ｔ１８）との間の依存関係が付与されている。さらに画像処理モジュール３８Ｂ３は、タスクＴ１６〜Ｔ１８に分割されており、各タスク間に処理順序（１６から１８へ向かう順序）に応じた依存関係と、前段の画像処理モジュール３８Ａ４のタスク（Ｔ１３〜Ｔ１５）との間の依存関係とが付与されている。
【００９７】
図１０Ｃには、図１０Ｂに示したタスクＴ１〜Ｔ１８を、４つのコア１３Ａ〜１３Ｄで並列に処理を行う場合に、各コア１３Ａ〜１３Ｄが実行するタスクの処理の流れの一例を示す。なお、説明の便宜上図１０Ｃでは各タスクの処理に要する時間が全て同一と仮定した場合を示している。複数のコア１３によって並列にタスクが実行される処理時間が長くなり、１つのコア１３によってタスクが実行される処理時間が短くなっている。
【００９８】
なお、画像入力処理及び画像出力処理では、画像ファイルをどこまで読んだか、及びどこまで書いたかを示す位置を表す情報や、誤差拡散処理の場合には処理済みの画素から伝播された誤差情報等がタスク間で受け渡される必要がある。しかしながら、これらの情報は、例えば、タスクの生成元の画像処理モジュール３８に格納しておくことにより、タスク間で受け渡しが可能となる。また、処理順序の依存関係が付与されていることにより、タスクが並列に処理されないことが保障されているため、これらの情報の読み書きは排他制御なしに行うことができる。
【００９９】
上記に対して、本実施形態と異なり、逐次性を有する画像処理について部分処理に分割することができない比較例の場合では、画像処理ＤＡＧ５０Ａは、図１１Ａに示したように、画像全体に対する３つの画像処理（Ｇ１〜Ｇ３）と、７つのタスク（Ｔ５〜Ｔ８、Ｔ１３〜Ｔ１５）とが含まれる画像処理ＤＡＧ１５０Ｂとなる。画像処理Ｇ１は、上記タスクＴ１〜Ｔ４に対応し、画像処理Ｇ２は上記タスクＴ９〜Ｔ１２に対応し、画像処理Ｇ３は、上記タスクＴ１６〜Ｔ１８に対応する。
【０１００】
図１１Ｂには、図１１Ａに示した画像処理Ｇ１〜Ｇ３と、タスクＴ５〜Ｔ８、Ｔ１３〜Ｔ１５を、４つのコア１３Ａ〜１３Ｄで並列に処理を行う場合に、各コア１３Ａ〜１３Ｄが実行するタスクの処理の流れの一例を示す。なお、説明の便宜上図１１Ｂにおいても、各タスクの処理に要する時間が全て同一と仮定した場合を示している。図１１Ｂに示した比較例の形態では、複数のコア１３によって並列に処理が行われる処理時間が本実施形態の場合（図１０Ｃ参照）よりも短くなっていることがわかる。
【０１０１】
なお、比較例の場合では、画像処理Ｇ１〜Ｇ３の各々において、画像全体に対応するメモリ（いわゆる、面メモリ）が必要となる。これに対して、本実施形態のコンピュータ１０によれば、このような面メモリを要しない。例えば、図１０Ｃに示したように処理を行う場合、タスクＴ９の処理に要するメモリは、タスクＴ１３の処理が終われば解放できるため、メモリの利用効率も向上させることができる。
【０１０２】
［第２実施形態］
【０１０３】
以下、図面を参照して本実施形態について詳細に説明する。
【０１０４】
上記第１実施形態と同様の構成及び動作については、その旨を記載し、詳細な説明を省略する。
【０１０５】
本実施形態のコンピュータ１０の構成は、第１実施形態のコンピュータ１０の構成（図１及び図３参照）と同様であるが、分割部６０の機能の一部が第１実施形態と異なっている。
【０１０６】
本実施形態の分割部６０は、第１実施形態の分割部６０が有していた機能に加え、逐次性を有さない画像処理が行われる画像を分割した分割画像（分割画像データ）を、複数の分割画像（分割画像データ、以下では、「再分割画像データ」という）に再分割する機能を有している。一例として図１２に示すように、分割部６０は、分割画像Ｂ１〜Ｂ３を、予め定められたサイズに応じて複数（図１２に示す例では２つずつ、合計６つ）の再分割画像Ｃ１１〜Ｃ３２に再分割する。
【０１０７】
換言すると、本実施形態の分割部６０は、逐次性を有さない画像処理が行われる画像におけるタスクへの分割では、一端、中粒度のタスクに分割して依存関係を設定した後、中粒度のタスクをタスクキュー６４に格納する。そして、中粒度のタスクがタスクキュー６４から取り出されて実行される前に予め定められた大きさの細粒度のタスクに再分割されて複数のコア１３により並列に処理される。本実施形態における細粒度のタスクが、本開示の第３部分処理の一例であり、その分割画像データが、本開示の第３分割画像データの一例である。
【０１０８】
なお、タスクを再分割する際の予め定められたサイズとは、上記中粒度のタスクのサイズよりも小さいサイズであればよく、本実施形態では、一例として、画像処理モジュール３８による画像処理を実行する演算部のプロセッサにより近く高速／小容量レベルのキャッシュメモリ、いわゆるＬ１（Level 1）やＬ２（Level 2）キャッシュの容量以下としている。
【０１０９】
一方、本実施形態のコンピュータ１０の作用は、第１実施形態と、ＤＡＧ構築処理（図６参照）及びＤＡＧ更新処理（図７参照）については、同様である。一方、タスク実行処理は、第１実施形態のタスク実行処理（図８参照）と異なる処理を含むため、以下では、本実施形態におけるタスク実行処理について説明する。
【０１１０】
図１３は、本実施形態のタスク実行処理の流れの一例を示すフローチャートである。図１３に示すように本実施形態のタスク実行処理は、ステップ１４２とステップ１４４との間に、ステップ１４３Ａ〜１４３Ｃの処理を含む点で、第１実施形態のタスク実行処理を異なっている。
【０１１１】
本実施形態では、ステップ１４２で制御部６２がタスクキュー６４からタスクを取得すると、次のステップ１４３Ａで分割部６０は、再分割が可能であるか否かを判定する。
【０１１２】
本実施形態では、ステップ１４２で取得したタスクに対応する画像データ（分割画像データまたは再分割画像データ）のサイズが上述した予め定められたサイズ以下の場合、すなわち、既に再分割後のタスクを取得した場合、再分割が不能となる。
【０１１３】
また例えば、画像処理を第２演算部１２Ｂで実行するタスクの場合、分割部６０による再分割を行わないようにしてもよい。第２演算部１２Ｂでタスクを実行する場合、ローカルメモリ１５への画像データの転送や、第２演算部１２Ｂの起動等、オーバーヘッドとして付加される処理が、第１演算部１２Ａでタスクを実行する場合に比べて大きい。このオーバーヘッドは、タスク毎に生じるため、タスクを再分割した場合、タスクの数が増加することに対応してオーバーヘッドが増加する。そのため、画像処理を第２演算部１２Ｂで実行するタスクについては、再分割をせずに中粒度のタスクのまま画像処理を実行してもよい。なお、タスクについて、第２演算部１２Ｂで実行するタスクであるか否かを表す情報は、処理構築部４２が画像処理ＤＡＧ５０Ａから画像処理ＤＡＧ５０Ｂを生成する際に付与すればよい。
【０１１４】
タスクの再分割が不可能な場合、ステップ１４３Ａの判定が否定判定となり、ステップ１４４へ移行する。一方、タスクの再分割が可能な場合、ステップ１４３Ａの判定が肯定判定となり、ステップ１４３Ｂへ移行する。
【０１１５】
ステップ１４３Ｂで分割部６０は、タスクを、上述した予め定められたサイズで再分割して細粒度のタスクとする。
【０１１６】
次のステップ１４３Ｃで制御部６２は、再分割により得られた細粒度のタスクを全てタスクキュー６４に格納した後、ステップ１４２に戻る。
【０１１７】
これにより、本実施形態のコンピュータ１０では、逐次性を有する画像処理が行われる画像が分割された中粒度のタスク、及び逐次性を有さないが画像処理が行われる画像が分割された後、さらに再分割された細粒度のタスクが、複数の演算装置で並列して実行される。
【０１１８】
このように本実施形態のコンピュータ１０では、中粒度のタスクを再分割した細粒度のタスクを実行することにより、コア１３や第２演算部１２Ｂの稼働率を向上させるとともに、必要なデータ量が大きくなるのが抑制されるため、キャッシュのミスヒットも生じにくくなる。
【０１１９】
従って、本実施形態のコンピュータ１０によれば、画像処理の処理効率、いわゆるスケーラビリティを高めた並列処理を実現できる。
【０１２０】
以上説明したように、上記各実施形態のコンピュータ１０は、画像処理を実行する画像処理モジュール３８がＤＡＧ形態で複数連結された画像処理モジュール３８群の各画像処理モジュール３８により画像処理を実行するコンピュータ１０である。コンピュータ１０は、画像処理が処理順序に逐次性を有する処理である場合、画像処理の対象となる画像データを複数の分割画像データに分割する分割部６０と、分割部６０が分割した分割画像データに対して行う画像処理であるタスク（部分処理３９）で、かつ前後の依存関係及び処理順序の依存関係に応じて処理可能なタスクを複数のコア１３の各々に並列して実行させる制御を行う制御部６２と、を備える。
【０１２１】
上記構成によれば、本実施形態のコンピュータ１０では、画像処理が処理順序に逐次性を有する処理である場合であっても、当該画像処理を分割して、部分処理として扱うことができるようになる。このため、コンピュータ１０によれば、複数のコア１３（演算装置）に並列してタスクを実行させる処理時間を比較的長くすることができる。
【０１２２】
従って、上記各実施形態のコンピュータ１０によれば、処理順序に逐次性を有する画像処理を１つのタスクとして扱う場合に比べて、画像処理ＤＡＧ５０（画像処理モジュール３８群）全体の画像処理時間を短縮することができる。
【０１２３】
また、本実施形態のコンピュータ１０によれば、上記のように、部分処理として扱うことにより、上述したように画像処理において、いわゆる面メモリが不要となるため、メモリの利用効率を向上させることができる。
【０１２４】
なお、上記各実施形態では、第２演算部１２Ｂがコンピュータ１０内部に備えられている場合について説明したが、第２演算部１２Ｂは、コンピュータ１０の外部に設けられていてもよいし、コンピュータ１０と異なるコンピュータに備えられていてもよい。また、第２演算部１２Ｂを備えていなくてもよい。
【０１２５】
また、上記各実施形態では、各種プログラムが記憶部２０に予め記憶（インストール）されている態様を説明したが、これに限定されない。各種プログラムは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ（Digital Versatile Disk Read Only Memory）、ＵＳＢ（Universal Serial Bus）メモリ等の記録媒体に記録された形態で提供されてもよい。また、各種プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【０１２６】
本発明を詳細にまた特定の実施態様を参照して説明したが、本発明の精神と範囲を逸脱することなく様々な変更や修正を加えることができることは当業者にとって明らかである。
本出願は、２０１７年９月１５日出願の日本特許出願である特願２０１７−１７７４６５に基づくものであり、それらの内容はここに参照として取り込まれる。
【符号の説明】
【０１２７】
１０  コンピュータ
１２Ａ  第１演算部
１２Ｂ  第２演算部
１３、１３Ａ〜１３Ｄ  コア
１４  メモリ
１５  ローカルメモリ
１６  表示部
１８  操作部
２０  記憶部
２２  画像データ供給部
２４  画像出力部
２６  バス
３０  オペレーティングシステム
３２  アプリケーションプログラム群（アプリケーションプログラム）
３４  画像処理プログラム群
３６  モジュールライブラリ
３８、３８Ａ１〜Ａ４、３８Ｂ、３８Ｂ１〜Ｂ３  画像処理モジュール
３９、３９Ａ〜３９Ｆ  部分処理
４０  バッファモジュール
４２  処理構築部
４６  処理制御部
５０Ａ、５０Ｂ  画像処理ＤＡＧ
６０  分割部
６２  制御部
６４  タスクキュー
６６  出力部
Ｂ１〜Ｂ３  分割画像
Ｃ１１、Ｃ１２、Ｃ２１、Ｃ２２、Ｃ３１、Ｃ３２  再分割画像
Ｇ  画像、Ｇ１〜Ｇ３  画像処理
ＴＡ１、ＴＡ２、ＴＢ１〜ＴＢ３、  タスク
【図１】
2019053915.tif 000003
【図２Ａ】
2019053915.tif 000004
【図２Ｂ】
2019053915.tif 000005
【図３】
2019053915.tif 000006
【図４Ａ】
2019053915.tif 000007
【図４Ｂ】
2019053915.tif 000008
【図５】
2019053915.tif 000009
【図６】
2019053915.tif 000010
【図７】
2019053915.tif 000011
【図８】
2019053915.tif 000012
【図９】
2019053915.tif 000013
【図１０Ａ】
2019053915.tif 000014
【図１０Ｂ】
2019053915.tif 000015
【図１０Ｃ】
2019053915.tif 000016
【図１１Ａ】
2019053915.tif 000017
【図１１Ｂ】
2019053915.tif 000018
【図１２】
2019053915.tif 000019
【図１３】
2019053915.tif 000020
【国際調査報告】
2019053915.tif 000021
2019053915.tif 000022