图像处理装置、图像处理方法和图像处理程序与流程

文档序号:15285908发布日期:2018-08-29 00:04阅读:200来源:国知局

本发明涉及一种图像处理装置、图像处理方法和图像处理程序。



背景技术:

ptl1公开了一种信息处理装置,其将表示程序模块的组合的图结构转换为通过分割各个分割输入数据的节点而获得的图结构,并且在完成先前节点的处理之后并行执行具有转换的图结构的节点的处理。

另外,npl1和npl2公开了一种根据由有向非循环图(dag)表示的图像处理的执行顺序并行执行图像处理的技术。

在先技术文献

专利文献

专利文献1:日本专利第4965995号公报

非专利文献

非专利文献1:遅延モード画像処理フレームワーク,[在线],[2016年3月11日搜索],互联网<url:http://www.isus.jp/article/library-special/deferred-mode-image-processing-framework/>

非专利文献2:theopenvxspecification,[在线],[2016年3月11日搜索],互联网<url:https://www.khronos.org/registry/vx/specs/1.0.1/openvx_specification_1_0_1.pdf>



技术实现要素:

本发明要解决的技术问题

在由多个计算装置并行执行与通过将作为图像处理的目标的图像数据分割而获得的分割图像数据对应的部分处理的情况下,图像处理的处理效率在一些情况下降低。

本发明的至少一个实施方式的目的在于提供一种图像处理装置、图像处理方法和图像处理程序,其与由多个计算装置并行执行与通过将作为图像处理的目标的图像数据分割而获得的分割图像数据对应的部分处理的情况相比,能够实现图像处理中的处理效率改进的并行处理。

问题的解决方案

[1]根据本发明的一方面,提供了一种通过以有向非循环图的形式连接多个对象而成的对象群中的各个对象来执行图像处理的图像处理装置。该图像处理装置包括:分割单元,其将作为所述图像处理的对象的图像数据分割成具有第一大小的分割图像数据;再分单元,其针对各个部分处理,将与基于前后依存关系判定为可处理的所述部分处理对应的所述分割图像数据再分成具有小于所述第一大小的第二大小的再分图像数据,所述部分处理是对所述分割图像数据执行的图像处理;以及控制单元,其执行控制以使得多个计算装置并行执行再分部分处理,所述再分部分处理是对再分图像数据执行的图像处理。

[2]在根据[1]所述的图像处理装置中,控制单元可执行如下控制:对于所述多个计算装置中的仅利用自己具备的存储器来执行部分处理的计算装置,使得代替所述再分图像数据而执行针对所述分割图像数据的部分处理。

[3]在根据[1]或[2]所述的图像处理装置中,所述第一大小是基于所述多个计算装置执行所述部分处理时使用的多个高速缓存存储器当中距所述多个计算装置最远级别的高速缓存存储器的容量以及任务队列中能够存储的所述部分处理的数量的大小,其中所述多个计算装置分别从所述任务队列顺序地读取并执行所存储的所述部分处理。

[4]在根据[1]至[3]中的任一项所述的图像处理装置中,所述第二大小是等于或小于所述多个计算装置执行所述再分部分处理时使用的多个高速缓存存储器当中比距所述多个计算装置最远级别的高速缓存存储器更靠近所述多个计算装置的级别的高速缓存存储器的容量的大小。

[5]在根据[1]至[4]中的任一项所述的图像处理装置中,在所述多个计算装置当中的仅利用自己具备的存储器来执行部分处理的第二计算单元能够与其它的第一计算单元异步地执行所述部分处理的情况下,所述控制单元在所述第一计算单元执行用于指示所述第二计算单元执行所述部分处理的执行指令任务后,使得所述第一计算单元反复地执行用于检测所述第二计算单元中的所述部分处理的完成的完成检测任务,直至检测到所述完成。

[6]根据本发明的另一方面,提供了一种图像处理装置的图像处理方法,所述图像处理装置通过以有向非循环图的形式连接多个对象而成的对象群中的各个对象来执行图像处理。所述图像处理方法包括以下步骤:将作为图像处理的对象的图像数据分割成具有第一大小的分割图像数据;针对各个部分处理,将与基于前后依存关系判定为可处理的所述部分处理对应的所述分割图像数据再分成具有小于所述第一大小的第二大小的再分图像数据,所述部分处理是对所述分割图像数据执行的图像处理;以及执行控制以使得多个计算装置并行执行再分部分处理,所述再分部分处理是对所述再分图像数据执行的图像处理。

[7]根据本发明的另一方面,提供了一种图像处理程序,其使得计算机作为根据[1]至[5]中的任一项所述的图像处理装置进行工作的分割单元、再分单元和控制单元。

发明的效果

根据[1]所述的装置、[6]所述的方法以及[7]所述的程序,与由多个计算装置并行执行与通过将作为图像处理的目标的图像数据分割而获得的分割图像数据对应的部分处理的情况相比,可实现图像处理中的处理效率改进的并行处理。

根据[2]所述的装置,与多个计算装置当中仅利用自己具备的存储器来执行部分处理的计算装置执行与再分图像数据对应的再分部分处理的情况相比,可抑制执行处理所需的开销的增加。

根据[3]所述的装置,可根据执行并行处理的计算装置的数量将第一大小设定为适当的大小。

根据[4]所述的装置,可改进多个计算装置的运转率。

根据[5]所述的装置,可改进多个计算装置的运转率。

附图说明

图1是示出用作根据实施方式的图像处理装置的计算机的配置的示例的框图。

图2a是示出图像处理dag的示例的示意图。

图2b是示出输入/输出存储器被添加到图像处理dag的情况的示例的示意图。

图3是示出根据实施方式的处理控制单元的功能配置的示例的框图。

图4是用于说明输入图像的分割处理的示例的示意图。

图5是示出图像处理模块被分割成部分处理的图像处理dag的示例的示意图。

图6是示出根据实施方式的dag配置/执行处理的流程的流程图。

图7是示出根据实施方式的任务存储处理的流程的流程图。

图8是用于说明根据实施方式的图像处理的执行处理的示意图。

图9是示出根据实施方式的任务执行处理的流程的流程图。

图10a是示出作为gpu处理的两个任务顺序地执行的情况下的处理流程的示例的示意图。

图10b是示出第二计算单元(gpu)与第一计算单元的内核同步执行处理的情况下的处理流程的示例的示意图。

图10c是示出第二计算单元(gpu))与第一计算单元的内核异步执行处理的情况下的处理流程的示例的示意图。

具体实施方式

以下,将参照附图详细描述根据本发明的示例性实施方式。

首先,将参照图1描述用作图像处理装置的计算机10的配置。计算机10可以是复印机、打印机、传真机、具有这些装置的功能的多功能机或者包含在诸如扫描仪的执行图像处理的图像操纵装置中的计算机。另外,计算机10可以是诸如个人计算机(pc)的独立计算机,并且可以是包含在诸如个人数字助理(pda)或移动电话的便携式装置中的计算机。

如图1所示,根据本示例性实施方式的计算机10包括第一计算单元12a、第二计算单元12b、存储器14、显示单元16、操作单元18、存储单元20、图像数据供给单元22和图像输出单元24。另外,第一计算单元12a、第二计算单元12b、存储器14、显示单元16、操作单元18、存储单元20、图像数据供给单元22和图像输出单元24中的各个单元经由总线26彼此连接。

根据本示例性实施方式的第一计算单元12a是计算机10的主处理器,并且作为示例,是包括多个处理器内核13(以下称为“内核13”)的中央处理单元(cpu)。各个内核13是执行图像处理的计算装置的示例。在以下描述中,在区分各个内核13的情况下,如内核13a和内核13b中一样,在标号13的末尾添加字母。.

另外,作为示例,根据本示例性实施方式的第二计算单元12b是包括本地存储器15的图形处理单元(gpu)。第二计算单元12b包括诸如本地存储器15的内部存储器,不受特别限制,只要第二计算单元是对存储在内部存储器中的图像数据执行图像处理的计算装置即可,例如可以是cpu。另外,第二计算单元12b可以是包含在第一计算单元12a中的gpu。另外,第一计算单元12a和第二计算单元12b可以是诸如现场可编程门阵列(fpga)的计算装置。

存储器14是用于暂时地存储第一计算单元12a的数据的非易失性存储装置。在由根据本示例性实施方式的第二计算单元12b执行图像处理的情况下,第一计算单元12a经由总线26将存储在存储器14或存储单元20的存储区域中的图像数据发送到第二计算单元12b。第二计算单元12b将从第一计算单元12a发送来的图像数据存储在本地存储器15中,并对所存储的图像数据执行图像处理。

在计算机10被包含在图像操纵装置中的情况下,作为显示单元16和操作单元18,例如,可使用设置在图像操纵装置上的诸如液晶显示器(lcd)、数字键等的显示面板。在计算机10是独立计算机的情况下,作为显示单元16和操作单元18,例如,可使用连接到计算机10的显示器、键盘、鼠标等。另外,显示单元16和操作单元18可以是通过将触摸面板和显示器集成而形成的触摸面板显示器等。另外,作为存储单元20,可使用诸如硬盘驱动器(hdd)、固态驱动器(ssd)或闪存的非易失性存储介质。

图像数据供给单元22可以是任何装置,只要图像数据供给单元供应图像数据作为处理目标即可。例如,可使用读取记录在记录材料(例如,纸张或照相胶片)上的图像并输出图像数据的图像读取单元。另外,作为图像数据供给单元22,例如,可使用经由通信线路从外部装置接收图像数据的接收单元以及存储图像数据的图像存储单元(存储器14或存储单元20)。

图像输出单元24可以是任何装置,只要图像输出单元输出经受图像处理的图像数据或者由经受图像处理的图像数据表示的图像。例如,作为图像输出单元,可使用将图像数据所表示的图像记录在记录材料(例如,纸张或感光材料)上的图像记录单元。另外,作为图像输出单元24,可使用将图像数据所表示的图像显示在显示器等上的显示单元(显示单元16)或者将图像数据写在诸如紧凑盘只读存储器(cd-rom)的记录介质上的写入装置。另外,作为图像输出单元24,可使用经由通信线路将经受图像处理的图像数据发送到外部装置的传输单元。另外,图像输出单元24可以是存储经受图像处理的图像数据的图像存储单元(存储器14或存储单元20)。

如图1所示,存储单元20存储要由第一计算单元12a和第二计算单元12b执行的各种程序。存储单元20将操作系统30的程序存储为各种程序,所述程序包括用于资源管理的程序、用于程序执行管理的程序、用于计算机10与外部装置之间的通信的程序等。另外,存储单元20将使得计算机10用作图像处理装置的图像处理程序群34存储为各种程序。另外,存储单元20将使得图像处理装置执行期望的图像处理的各种应用程序群32(以下称为“应用32”)存储为各种程序。

图像处理程序群34包括为了在开发要由图像操纵装置、便携式装置、pc等执行的图像处理程序时减轻负荷而开发的程序。另外,图像处理程序群34包括被开发以在诸如图像操纵装置、便携式装置、pc等的各种类型的装置(平台)上共同执行的程序。

由图像处理程序群34实现的图像处理装置根据来自应用32的配置指令来配置执行由应用32指示的图像处理的图像处理dag50a(将详细描述)。图像处理装置根据来自应用32的执行指令来执行图像处理dag50a的处理。以这样的方式,图像处理程序群34为应用32提供接口,该接口指示执行期望的图像处理的图像处理dag50的配置或者指示由所配置的图像处理dag50a执行图像处理。

通过该配置,即使在新开发需要内部执行图像处理的特定装置的情况下,为了开发执行该图像处理的程序,可使用该接口来开发使得图像处理程序群34执行特定装置中所需的图像处理的应用32。因此,开发者不需要新开发实际执行图像处理的程序,因此开发者的负荷减轻。

接下来,将详细描述根据本示例性实施方式的图像处理程序群34。如图1所示,图像处理程序群34包括模块库36、用作处理配置单元42的程序以及用作处理控制单元46的程序。

在模块库36中,注册有执行彼此不同的预定图像处理的多种类型的图像处理模块38的程序。例如,图像处理的示例包括输入处理、过滤处理、颜色转换处理、放大处理和缩小处理(在图1中表示为“放大/缩小处理”)、倾斜角检测处理、图像旋转处理、图像合成处理、输出处理等。

另外,在模块库36中,还注册有具有相同的图像处理类型以及要执行的不同的图像处理内容的图像处理模块38。在图1中,图像处理模块通过在末尾添加数字来彼此区分,如“模块1”、“模块2”等中一样。例如,作为执行放大/缩小处理的图像处理模块38,准备这样的图像处理模块38,其执行通过在水平方向和垂直方向中的每一个方向上对输入图像数据拉长间隔(thinout)一个像素来将图像的水平和垂直尺寸缩小至50%的处理。此外,例如,作为执行放大/缩小处理的图像处理模块38,准备这样的图像处理模块38,其以指定的放大/缩小比执行输入图像数据的放大/缩小处理。

另外,例如,作为执行颜色转换处理的图像处理模块38,准备将红色、绿色和蓝色(rgb)颜色空间中的图像转换为青色、品红色、黄色和主版(黑色)(cmyk)颜色空间中的图像的图像处理模块38以及将cmyk颜色空间中的图像转换为rgb颜色空间中的图像的图像处理模块38。此外,例如,作为执行颜色转换处理的图像处理模块38,准备将rgb颜色空间中的图像转换为ycbcr颜色空间中的图像的图像处理模块38以及将ycbcr颜色空间中的图像转换为rgb颜色空间中的图像的图像处理模块38。

另外,在模块库36中,还注册有包括用于存储图像数据的存储区域(缓存区)的缓存模块40。

根据来自应用32的指令,根据本示例性实施方式的处理配置单元42以dag形式配置图像处理dag50a。如图2a所示,在图像处理dag50a中,作为示例,一个或更多个图像处理模块38经由设置在各个图像处理模块38的前级和后级中的至少一个中的缓存模块40彼此连接。

各个图像处理模块38是对输入图像数据执行图像处理的对象的示例。另外,在图2a所示的示例中,对于经由缓存模块40连接到前级图像处理模块38的图像处理模块38,在前级图像处理模块38的图像处理完成的情况下,可执行图像处理模块38的图像处理。另外,在图2a所示的示例中,对于经由缓存模块40连接到多个前级图像处理模块38的图像处理模块38,在多个前级图像处理模块38的所有图像处理完成的情况下,可执行图像处理模块38的图像处理。

另外,图2a示出模块仅按照处理的顺序彼此连接的dag。另一方面,当执行dag时,如图2b所示,输入存储在存储器14中的输入图像数据,并且根据dag执行图像处理。诸如经受处理的输出图像数据的处理结果最终被存储在存储器14中。

接下来,将参照图3描述根据本示例性实施方式的处理控制单元46的功能配置。如图3所示,处理控制单元46包括分割单元60、再分单元61、控制单元62、任务队列64和输出单元66。

根据本示例性实施方式的分割单元60将输入图像数据当中作为图像处理的目标(以下,“图像处理的目标”被简称为“处理目标”)的图像数据分割成具有第一大小的多个分割图像数据。在本示例性实施方式中,作为具体示例,作为输入图像数据的处理目标的部分所表示的图像被分割成多个部分区域(以下称为“分割图像”)。如图4所示,作为示例,分割单元60根据第一大小将作为输入图像数据的处理目标的部分所表示的图像g分割成多个(在图4所示的示例中,三个)分割图像b1至b3。在整个输入图像是处理目标的诸如颜色转换处理的图像处理中,作为输入图像数据的处理目标的部分意指整个输入图像数据是处理目标的部分。另外,在输入图像的一部分是处理目标的诸如剪辑(修剪)处理的图像处理中,作为输入图像数据的处理目标的部分意指输入图像的一部分。在以下描述中,为了避免混淆,作为输入图像数据的处理目标的部分被简称为“输入图像数据”。

另外,在图4所示的示例中,尽管分割单元60在从正面看时垂直地分割图像g,本发明不限于此。例如,分割单元60可在从正面看时水平地分割图像g,或者在从正面看时垂直地和水平地分割图像g。

在本示例性实施方式中,分割单元60分割输入图像数据的第一大小被设定为通过将距通过图像处理模块38执行图像处理的计算单元的处理器最远级别的高速缓存存储器(即,所谓的末级高速缓存(llc))的容量除以存储在任务队列64中的任务t(将详细描述)的数量而获得的值(下舍入到小数点)。第一大小不限于本示例性实施方式。另一方面,优选地,第一大小被设定为等于或大于通过将为各个内核13设置的llc以外的高速缓存存储器的容量除以存储在任务队列64中的任务t的数量而获得的值,并且被设定为等于或小于通过将llc的容量除以存储在任务队列64中的任务t的数量而获得的值。

根据本示例性实施方式的再分单元61将分割图像数据分割成具有第二大小的再分图像数据。在本示例性实施方式中,作为具体示例,再分单元61进一步分割(再分)分割图像。如图4所示,作为示例,再分单元61根据第二大小将分割图像b1至b3再分成多个(在图4所示的示例中,每个分割图像上两个,总共六个)再分图像c11至c32。因此,具有第二大小的再分图像数据的任务(将描述的任务t)是精细程度任务,具有第一大小的分割图像数据的任务(将描述的任务t)是中等程度任务。

再分单元61分割输入图像数据的第二大小小于第一大小。在本示例性实施方式中,第二大小被设定为等于或小于距通过图像处理模块38执行图像处理的计算单元的处理器最近级别的高速缓存存储器(所谓的级别1(l1)高速缓存)的容量的值。

根据本示例性实施方式的控制单元62执行使得多个内核13并行执行与再分图像数据对应的任务的控制。这里,术语“并行”意指可基于依赖关系执行的任务由多个内核13并行(同时)执行。

具体地,如图5所示,作为示例,控制单元62将图像处理dag50a的各个图像处理模块38要执行的图像处理分割成与各个分割图像数据(由分割单元60分割的分割图像数据)对应的部分处理39,并将图像处理dag50a更新为图像处理dag50b。图像处理dag50b表示各个部分处理39的任务的dag,是所谓的任务dag。

图5示出图2a所示的图像处理dag50a的输入图像数据被分割成四条分割图像数据的情况下的图像处理dag50b。在图5中,为了避免混淆,未示出缓存模块40。

根据图像处理模块38所执行的图像处理的类型,根据本示例性实施方式的控制单元62赋予连接到前级的图像处理模块38的部分处理39与连接到后级的图像处理模块38的部分处理39之间的依赖关系。在图5中,依赖关系由虚线箭头指示。

例如,如颜色转换处理中一样,在仅对作为处理目标的像素执行图像处理的处理中,控制单元向各个部分处理39赋予一对一依赖关系。另一方面,例如,如过滤处理中一样,在还需要与作为处理目标的像素相邻的像素的图像处理中,控制单元还将依赖关系赋予对相邻像素执行图像处理的前级部分处理39。即,依赖关系是彼此连接的图像处理模块38之间的关系,其中可在连接到前级的图像处理模块38的部分处理39完成的情况下执行连接到后级的图像处理模块38的部分处理39。因此,各个部分处理39可在不存在赋予依赖关系的前级部分处理39的情况下,或者在赋予依赖关系的所有前级部分处理39均完成的情况下执行。

具体地,例如,图5所示的部分处理39a和部分处理39b可在开始执行图像处理时执行。另外,例如,图5所示的部分处理39c可在赋予依赖关系的前级部分处理39a和前级部分处理39b二者均完成时执行。

在本示例性实施方式中,与分割图像数据对应的部分处理39被称为“任务t”。另外,与再分图像数据对应的再分部分处理被称为“任务t”。此外,当笼统地描述而无需区别时,任务t和任务t被简称为“任务”。为了说明方便,在以下描述中,与任务t对应的分割图像数据被再分成与任务t对应的再分图像数据被称为“任务t被再分成任务t”的事实。

控制单元62将可执行任务t存储在任务队列64中,多个内核13中的每一个从该任务队列64顺序地读取并执行所存储的任务。作为示例,由根据本示例性实施方式的控制单元62同时存储在任务队列64中的任务t的数量被设定为两个或以下。同时存储在任务队列64中的任务t的数量不限于本示例性实施方式,并且优选地,被设定为两个或更多。在仅一个任务t被存储在任务队列64中并且未在任务队列64中存储新的任务t直至任务t的执行完成的情况下,当在通过再分任务t而获得的多个任务t当中存在未完成执行的一个任务t时,新的任务t未被存储在任务队列64中。在这种情况下,在多个内核13当中,没有操作的内核13的数量增加,结果,内核13的运转率降低。另一方面,在可同时存储在任务队列64中的任务t的数量不受限制的情况下,在预处理(将详细描述)中,为存储在任务队列64中的所有任务t预留存储器,结果,预留的存储器的容量增加。因此,通过限制可同时存储在任务队列64中的任务t的数量,可抑制在预处理中预留的诸如存储器的资源量的增加。因此,可同时存储在任务队列64中的任务t的数量可根据存储器的容量等来确定,或者可根据内核13的运转率而改变。

此外,控制单元62将与再分单元61所再分的再分图像数据对应的任务t存储在任务队列64中。

在控制单元62的控制下,根据本示例性实施方式的输出单元66输出通过由在图像处理dag50b的末级的图像处理模块38执行图像处理而获得的输出图像数据。在本示例性实施方式中,输出单元66将由所获得的输出图像数据表示的输出图像显示在显示单元16上。输出单元66可将输出图像数据输出(发送)到外部装置。另外,在计算机10被并入打印机的情况下,输出单元66可在诸如纸张的记录材料上输出(形成)由输出图像数据表示的输出图像。

接下来,将参照图6至图10描述根据本示例性实施方式的计算机10的操作。图6是示出在通过应用32输入开始执行图像处理的指令的情况下由第一计算单元12a执行的dag配置/执行处理的流程的流程图。用于dag配置/执行处理的程序(dag配置/执行处理程序)被预先安装在存储单元20中。另外,在第一计算单元12a中不执行任何任务,并且能够执行任务的内核13执行dag配置/执行处理程序。因此,该程序用作处理配置单元42和控制单元62。

在图6的步骤100中,处理配置单元42根据来自应用32的配置指令来配置执行由应用32指示的图像处理的图像处理dag50a。另外,处理配置单元42如上所述将图像处理dag50a更新为图像处理dag50b。在本示例性实施方式中,此时,添加表示用于再分各个任务t的第二大小的信息。

在下一步骤102中,控制单元62和处理配置单元42使得第一计算单元12a(内核13)和第二计算单元12b通过在步骤100中配置的图像处理dag50b来执行图像处理。在执行图像处理dag的执行处理之后,dag配置/执行处理完成。

通过执行dag配置/执行处理,从输出单元66获得应用32所期望的图像处理的结果。在本示例性实施方式中,在dag配置/执行处理完成的情况下,控制单元62向应用32通知表示处理完成的信息。另选地,在处理期间发生任何错误的情况下,控制单元62向应用32通知表示发生错误的信息。

接下来,在dag配置/执行处理的步骤102中,将详细描述图像处理dag的执行处理。根据本示例性实施方式的dag配置/执行处理包括两个处理,包括将图像处理dag50b的可执行任务t存储在任务队列64中的任务存储处理以及执行存储在任务队列64中的任务的任务执行处理。

首先,将参照图7描述任务存储处理。图7是示出任务存储处理的流程的流程图。在本示例性实施方式中,用于任务存储处理的程序(任务存储处理程序)被预先安装在存储单元20中作为dag配置/执行处理程序的一部分或所谓的子程序。

另外,在第一计算单元12a中不执行任何任务,并且能够执行任务的内核13执行任务存储处理程序。因此,该程序用作控制单元62,并且执行图7所示的任务存储处理。

在图7的步骤110中,控制单元62确定可执行任务t是否存储在任务队列64中。此时,即使当任务t以外的任务(在本示例性实施方式中,任务t)存储在任务队列64中时,该任务也不参与确定。在本示例性实施方式中,在存储在任务队列64中的可执行任务t的数量为两个或更多的情况下,控制单元62确定确定结果为是,并前进到步骤114。

另一方面,在存储在任务队列64中的可执行任务t的数量少于两个的情况下,控制单元62确定步骤110中的确定结果为否,并前进到步骤112。

在步骤112中,控制单元62从图像处理dag50b检索可执行任务,并将可执行任务存储在任务队列64中。图8所示的示例示出了图像处理dag50b的可执行任务t(阴影线)被存储在任务队列64中的状态。

此时,如上所述,存储在任务队列64中的任务t的数量可为两个或更少,并且在步骤112中,由控制单元62同时存储在任务队列64中的任务t的数量可为一个或两个。具体地,在任务队列64中没有存储任务t的情况下,控制单元62可存储一个任务t或两个任务t,并且在任务队列64中存储有一个任务t的情况下,一个任务t可被存储在任务队列64中。在步骤112中,要通过任务队列64同时存储在任务队列64中的任务t的数量可预先确定,或者可根据各个内核13中的任务处理的进度而改变。

在下一步骤114中,控制单元62确定是否图像处理dag50b的所有任务t均存储在任务队列64中。在存在还未存储在任务队列64中的任务t的情况下,控制单元62确定确定结果为否,返回到步骤110,并重复任务存储处理。另一方面,在所有任务t均存储在任务队列64中的情况下,控制单元62确定确定结果为是,并结束任务存储处理。

接下来,将参照图9描述任务执行处理。图9是示出任务执行处理的流程的流程图。在本示例性实施方式中,用于任务执行处理的程序(任务执行处理程序)被预先安装在存储单元20中作为dag配置/执行处理程序的一部分或所谓的子程序。

在第一计算单元12a中不执行任何任务,并且能够执行任务的每一个内核13执行任务执行处理程序。因此,该程序用作控制单元62,并且执行图9所示的任务执行处理。在本示例性实施方式中,任务存储处理和任务执行处理由不同的内核13执行,因此任务存储处理和任务执行处理并行执行。

在图9的步骤120中,控制单元62从任务队列64获取任务。这里,所获取的任务可以是任务t或者另一任务(在本示例性实施方式中,任务t)。

在下一步骤122中,控制单元62确定所获取的任务是不是任务t。在所获取的任务是任务t的情况下,控制单元62确定确定结果为是,并前进到步骤118。

在步骤124中,控制单元62执行在任务t的执行中预定的预处理,然后前进到步骤126。在步骤124中执行的预处理是预先确定以在图像处理之前执行的处理,并且不受特别限制。例如,预处理是预留用于存储图像处理结果的输出缓存区域的处理,或者预留诸如用于图像处理的变量的初始化的计算资源的处理。

另一方面,在步骤122中,在所获取的任务不是任务t的情况下,即,在本示例性实施方式中在所获取的任务是任务t的情况下,控制单元62确定确定结果为否,并前进到步骤126。

在步骤126中,控制单元62确定在步骤120中获取的任务是否可被再分。

在本示例性实施方式中,在由第二计算单元12b执行图像处理的任务的情况下,不执行由再分单元61的再分。与由第一计算单元12a执行任务的情况相比,在由第二计算单元12b执行任务的情况下,作为开销增加的处理(例如,将图像数据传输到本地存储器15或者启用第二计算单元12b)增多。针对各个任务发生开销,结果,在任务t被再分成任务t的情况下,开销与任务数量的增加对应地增加。因此,在本示例性实施方式中,对于由第二计算单元12b执行的任务t,在维持任务t而不再分的同时执行图像处理。因此,在任务t是要由第二计算单元12b执行的任务的情况下,在图像处理中禁用再分。当处理配置单元42在dag配置/执行处理的步骤100(参照图6)中从图像处理dag50a生成图像处理dag50b时,赋予表示任务t是不是要由第二计算单元12b执行的任务的信息。

另外,在本示例性实施方式中,即使在与所获取的任务对应的图像数据(分割图像数据或再分图像数据)的大小等于或小于与任务t对应的再分图像数据的大小的情况下,再分也被禁用。

另一方面,在所获取的任务是要由第一计算单元12a的内核13执行的任务并且与所获取的任务对应的图像数据(分割图像数据或再分图像数据)的大小等于或大于与任务t对应的再分图像数据的大小的情况下(在本示例性实施方式中,在与所获取的任务对应的图像数据的大小是与任务t对应的分割图像数据的大小的情况下),再分被禁用。

以这种方式,在本示例性实施方式中,具体地,在所获取的任务是任务t并且该任务由第一计算单元12a执行的情况下,任务可被再分。因此,控制单元62确定步骤126中的确定结果为是,并前进到步骤128。

在步骤128中,再分单元61按照第二大小将任务(在本示例性实施方式中,任务t)分割成任务t。根据本示例性实施方式的再分单元61将在步骤120中获取的任务再分成任务t。在图8所示的示例中,示出了内核13c将任务t再分成三个任务t的情况。如上所述,在本示例性实施方式中,作为示例,所有任务t被再分成任务t,因此获得多个任务t。

在下一步骤130中,控制单元62将通过再分而获得的所有任务t存储在任务队列64中,然后返回到步骤120。

另一方面,在如上面在步骤126中所述再分被禁用的情况下,控制单元62确定确定结果为否,并前进到步骤132。

在步骤132中,控制单元62使得第一计算单元12a或第二计算单元12b的内核13执行任务。在任务t要由第二计算单元12b执行的情况下,第一计算单元12a的内核13执行使得第二计算单元12b执行任务t的处理,因此由第二计算单元12b执行任务t。

在下一步骤134中,控制单元62确定在步骤132中执行的任务是不是最后的任务t。具体地,控制单元62确定在步骤132中执行的任务是不是任务t并且作为再分源的相同任务t的任务t没有存储在任务队列64中,即,是否执行了所有任务t。

在所执行的任务不是最后的任务t的情况下,控制单元62确定确定结果为否,并返回到步骤120。另一方面,在所执行的任务是最后的任务t的情况下,控制单元62确定确定结果为是,并前进到步骤136。

在步骤136中,控制单元62执行后处理。

在步骤136中执行的后处理是预定要在与任务t对应的部分处理之后执行的处理,并且不受特别限制。例如,后处理是释放在步骤124的处理中预留的计算资源的处理。

在下一步骤138中,任务队列64向处理配置单元42通知任务t完成,然后任务执行处理结束。当接收到任务t的完成通知时,处理配置单元42更新图像处理dag50b的依赖关系。如上所述,当图像处理dag50b的依赖关系被更新时,在任务存储处理(参照图7)中,处理配置单元42基于更新的依赖关系来确定可执行任务t。

在任务t是要由第二计算单元12b执行的任务t的情况下,高速执行处理。因此,通常,处理所需的数据(图像数据)被发送到第二计算单元12b的本地存储器15,并被处理。在以下描述中,作为具体示例将描述第二计算单元12b是gpu的情况。作为示例,如图10a所示,在作为gpu处理的任务t1和t2顺序地执行的情况下,如图10b的示例中所示,在执行任务t1之前执行图像数据从存储器14到第二计算单元12b的本地存储器15的传输处理,并且在执行任务t2之后执行处理结果从本地存储器15到存储器14的传输处理。由于在内核13的控制下通过直接存储器访问(dma)传输等来执行传输处理,所以当处理单位变小时,dma传输的次数增加,结果,传输速率减小。另外,由于以小单位来执行gpu启用,所以由于gpu的控制而引起的开销也增加,结果,处理性能下降。因此,通过将要由gpu执行的任务t的分割图像数据的大小设定为等于或大于第一大小,如上所述不执行任务t的再分。

如上所述,内核13指示cpu执行任务t,因此gpu被启用并控制。由此,由gpu执行任务t。在图10b中作为示例示出的同步处理的情况下(在控制不返回到内核13直至gpu中的处理完成的情况下),按照与要由正常cpu执行的任务t相同的方式来配置任务。另一方面,在图10b中从gpu处理1到gpu处理2的时段期间,内核13处于待命状态直至处理完成,结果,执行了内核13的不必要的操作。

在图10c中作为示例示出的异步处理的情况下(在内核13指示gpu执行处理并且控制返回到内核13而不等待处理完成的情况下),内核13可与gpu处理1和gpu处理2的执行并行执行另一任务,因此运转率改进。在异步处理的情况下,有必要检测由gpu执行的任务(图10c中的任务t1和t2)的完成。因此,如图10c所示,内核13执行指令,使得图像数据向gpu的传输、图像数据的处理以及处理结果从gpu的传输(任务t0至t3)中的每一个异步地执行。当控制返回到内核13时,内核13执行检测gpu中的任务的完成的任务t4,并且在没有检测到任务的完成的情况下将完成检测任务t4输入到任务队列64中。内核13从任务队列64读取不同于任务t4的另一任务,并执行处理。由此,参照图10b作为示例描述的待命状态不存在,因此抑制了内核13的不必要的操作。

对于由gpu执行的任务t,通过将gpu上的处理时间以及从存储器14到本地存储器15的传输时间或者从本地存储器15到存储器14的传输时间设定为相同(包括误差),传输时间减少。因此,可进一步改进诸如处理速度的性能。

如上所述,根据本示例性实施方式的计算机10是通过对象群中的各个对象来执行图像处理的计算机10,其中用于执行图像处理的多个对象以有向非循环图的形式连接。计算机10包括:分割单元60,其将作为图像处理目标的图像数据分割成具有第一大小的分割图像数据;再分单元61,其针对作为要对分割图像数据执行的图像处理的各个部分处理将分割图像数据再分成具有小于第一大小的第二大小的再分图像数据,分割图像数据与基于前后依赖关系确定为可执行处理的部分处理对应;以及控制单元62,其执行使得多个第一计算单元12a(内核13)和第二计算单元12b并行执行再分部分处理的控制,所述再分部分处理是要对再分图像数据执行的图像处理。

如上所述,根据本示例性实施方式的计算机10执行与通过按照大于第二大小的第一大小分割图像数据而获得的分割图像数据对应的任务t,因此由于并行处理而引起的开销减小。另外,计算机10执行与通过按照第二大小再分分割图像数据而获得的分割图像数据对应的任务t。由此,内核13和第二计算单元12b的运转率改进。此外,防止所需的数据量增加,因此也几乎不会发生高速缓存未命中。

因此,根据本示例性实施方式的计算机10,可实现图像处理中的处理效率改进(所谓的改进的可扩展性)的并行处理。

在本示例性实施方式中,当然,在排他地控制各个处理的同时,有必要执行更新图像处理dag50b、将任务存储在任务队列64中以及从任务队列64读取任务的各个处理。

在本示例性实施方式中,在任务执行处理的步骤134(参照图9)中,所有任务t预先在步骤128中被再分成多个任务t,并且再分的任务被存储在任务队列64中,并且基于是否存在存储在任务队列64中的任务t来确定任务t是不是最后的任务。另一方面,确定方法不限于此。例如,当包括由各个内核13共享的共享指针的计数器与任务t关联并且计数器的初始值被设定为0时,在从任务t再分一个任务t的情况下(或者在一个任务t被存储在任务队列64中的情况下),计数器增加1,在任务t的执行完成的情况下(或者在从任务队列64读取任务t的情况下),计数器减数。因此,在计数器的值变为0的情况下,可确定任务t是最后的任务。

在本示例性实施方式中,尽管描述了第二计算单元12b被包括在计算机10中的情况,第二计算单元12b可被设置在计算机10外部,或者可被设置在不同于计算机10的计算机中。

另外,在上述实施方式中,尽管描述了各种程序被预先存储(安装)在存储单元20中的模式,本发明不限于此。各种程序可通过记录在诸如cd-rom、数字多功能盘只读存储器(dvd-rom)或通用串行总线(usb)存储器的记录介质上来提供。另外,各种程序可经由网络从外部装置下载。

尽管上面描述了各种示例性实施方式,这些实施方式可彼此适当地组合。

另外,本公开不限于上述各个实施方式,而是在不脱离本公开的精神的情况下可按照各种形式自由地修改。

本申请基于并要求2016年3月24日提交的日本专利申请no.2016-060525的优先权,其完整内容通过引用并入本文。

符号说明

10:计算机

12a:第一计算单元

12b:第二计算单元

13、13a至13c:内核

14:存储器

15:本地存储器

16:显示单元

18:操作单元

20:存储单元

22:图像数据供给单元

24:图像输出单元

26:总线

30:操作系统

32:应用程序群(应用程序)

34:图像处理程序群

36:模块库

38:图像处理模块

39、39a至39c:部分处理

40:缓存模块

42:处理配置单元

46:处理控制单元

50a、50b:图像处理dag

60:分割单元

61:再分单元

62:控制单元

64:任务队列

66:输出单元

b1至b3、c11至c32:分割图像

g:图像

t、t:任务

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1