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

文档序号:20499437发布日期:2020-04-21 22:38阅读:216来源:国知局
图像处理装置、图像处理方法以及图像处理程序与流程

本公开涉及图像处理装置、图像处理方法以及图像处理程序。



背景技术:

在jp特开2004-030312号公报中公开了如下控制方式:在多个线程(运算装置)取得同步的同时由多个线程分担一系列处理来同时进行处理,由此实现处理的高速化。

另外,在markgrand,patternsinjava:acatalogofreusabledesignpatternsillustratedwithuml,2ndedition,vol.1,wileypub.,2003/02/17,p.495-500以及rajatp.gangandilyasharapov,techniquesforoptimizingapplications:highperformancecomputing,prentice-hall,2001/07/25,p.394-395中公开了将任务提供者(producer)投入队列的任务提供给基于多个工作者线程的任务消费者(consumer)的技术。



技术实现要素:

发明要解决的课题

在上述jp特开2004-030312号公报、markgrand,patternsinjava:acatalogofreusabledesignpatternsillustratedwithuml,2ndedition,vol.1,wileypub.,2003/02/17,p.495-500以及rajatp.gangandilyasharapov,techniquesforoptimizingapplications:highperformancecomputing,prentice-hall,2001/07/25,p.394-395公开的技术中,在与主要进行部分处理的第1运算部非同步地根据第1运算部的指示由第2运算部执行部分处理的情况下,有时无法高效地进行第2运算部中的部分处理的结束的探测。在该情况下,就算部分处理结束,也是直到探测到部分处理的结束为止都不能使第2运算部新进行部分处理,因此不能使第2运算部充分工作,有时图像处理的处理效率会降低。

本公开提供通过更高效地进行第2运算部中的部分处理的结束的探测来使图像处理高速化的图像处理装置、图像处理方法以及图像处理程序。

用于解决课题的手段

本公开的第1方案是图像处理装置,由将多个执行图像处理的物体以有向非循环图的形态连结而成的物体群的各物体执行图像处理,该图像处理装置具备:分割部,其将成为图像处理的对象的图像数据分割成多个分割图像数据;控制部,其进行控制,使第1运算部所具备的多个运算装置各自并行地执行部分处理,该部分处理是对分割图像数据进行的图像处理且能对应于前后的依赖关系来进行处理;登记部,其在第2运算部能与第1运算部非同步地执行部分处理的情况下,在第1运算部的运算装置中执行了对第2运算部指示部分处理的执行的执行指示任务后,将探测第2运算部中的部分处理的结束的结束探测任务登记到结束探测任务管理信息中;和判定部,其访问结束探测任务管理信息,判定有无第2运算部结束了部分处理的结束探测任务。

另外,本公开的第2方案在上述第1方案基础上,也可以,运算装置在部分处理执行后作为判定部进行动作。

另外,本公开的第3方案在上述第2方案基础上,也可以,运算装置在作为判定部结束了有无结束探测任务的判定后,再次通过控制部的控制来执行其他部分处理。

另外,本公开的第4方案在上述方案基础上,也可以,运算装置作为登记部进行动作。

另外,本公开的第5方案在上述方案基础上,也可以,运算装置连续进行作为登记部的动作和作为判定部的动作。

另外,本公开的第6方案在上述第1方案基础上,也可以,控制部使运算装置执行用于作为判定部进行动作的判定任务。

另外,本公开的第7方案在上述方案基础上,也可以,登记部以及判定部对结束探测任务管理信息的访问被进行排他控制。

另外,本公开的第8方案在上述方案基础上,也可以,判定部将第2运算部结束了部分处理的结束探测任务从结束探测任务管理信息中删除。

另外,本公开的第9方案在上述方案基础上,也可以,控制部将存放于任务队列的部分处理依次取出,来使多个运算装置并行地执行。

另外,本公开的第10方案是图像处理方法,是图像处理装置所进行的图像处理方法,该图像处理装置由将多个执行图像处理的物体以有向非循环图的形态连结而成的物体群的各物体执行图像处理,该图像处理方法包含如下处理:将成为图像处理的对象的图像数据分割成多个分割图像数据,进行控制,使第1运算部所具备的多个运算装置各自并行地执行部分处理,该部分处理是对分割图像数据进行的图像处理且能对应于前后的依赖关系来进行处理,在第2运算部能与第1运算部非同步地执行部分处理的情况下,在第1运算部的运算装置中执行了对第2运算部指示部分处理的执行的执行指示任务后,将探测第2运算部中的部分处理的结束的结束探测任务登记到结束探测任务管理信息中,访问结束探测任务管理信息,判定有无第2运算部结束了部分处理的结束探测任务。

另外,本公开的第11方案是图像处理程序,使计算机作为本公开的图像处理装置的分割部、控制部、登记部以及判定部发挥功能。

本公开的第12方案是图像处理装置,由将多个执行图像处理的物体以有向非循环图的形态连结而成的物体群的各物体执行图像处理,该图像处理装置具有处理器,其执行:将成为所述图像处理的对象的图像数据分割成多个分割图像数据,进行控制,使第1运算部所具备的多个运算装置各自并行地执行部分处理,该部分处理是对分割图像数据进行的图像处理且能对应于前后的依赖关系来进行处理,在第2运算部能与第1运算部非同步地执行部分处理的情况下,在第1运算部的运算装置中执行了对所述第2运算部指示部分处理的执行的执行指示任务后,将探测第2运算部中的部分处理的结束的结束探测任务登记到结束探测任务管理信息中,访问结束探测任务管理信息,判定有无第2运算部结束了部分处理的结束探测任务。

发明效果

根据本公开的上述方案,能提供图像处理装置、图像处理方法以及图像处理程序,通过更高效地进行第2运算部中的部分处理的结束的探测来使图像处理高速化。

附图说明

图1是表示作为第1例示的实施方式所涉及的图像处理装置发挥功能的计算机的结构的一例的框图。

图2a是表示图像处理dag的一例的简要图。

图2b是表示在图像处理dag中加进输入输出用的存储器的情况的一例的简要图。

图3是表示第1例示的实施方式所涉及的处理控制部的功能性结构的一例的框图。

图4a是用于输入图像的分割处理的一例的说明的简要图。

图4b是用于输入图像的分割处理的一例的说明的简要图。

图5是表示图像处理模块被分割成部分处理的图像处理dag的一例的简要图。

图6a是用于非同步处理结束探测任务列表的说明的简要图。

图6b是用于非同步处理结束探测任务列表的说明的简要图。

图7a是用于非同步处理结束探测任务列表的判定的说明的简要图。

图7b是用于非同步处理结束探测任务列表的判定的说明的简要图。

图7c是用于非同步处理结束探测任务列表的判定的说明的简要图。

图8是表示第1例示的实施方式所涉及的dag构建/执行处理的流程的一例的流程图。

图9是表示第1例示的实施方式所涉及的任务存放处理的流程的一例的流程图。

图10是用于第1例示的实施方式所涉及的图像处理dag执行处理的说明的简要图。

图11是表示第1例示的实施方式所涉及的任务执行处理的流程的一例的流程图。

图12是表示第1例示的实施方式所涉及的非同步处理结束探测任务列表判定处理的流程的流程图。

图13a是表示作为gpu处理的2个任务连续进行的情况下的处理的流程的一例的简要图。

图13b是表示第2运算部(gpu)与第1运算部的核心同步地进行处理的情况下的处理的流程的一例的简要图。

图13c是表示第2运算部(gpu)与第1运算部的核心非同步地进行处理的情况下的处理的流程的一例的简要图。

图14是表示第2例示的实施方式所涉及的任务执行处理的流程的一例的流程图。

图15是表示第3例示的实施方式所涉及的任务执行处理的流程的一例的流程图。

图16是用于第3例示的实施方式所涉及的图像处理dag执行处理的说明的简要图。

具体实施方式

以下,参考附图来详细说明用于实施本公开的方式的示例。

[第1例示的实施方式]

首先,参考图1来说明作为图像处理装置发挥功能的计算机10的结构。另外,计算机10可以是组装于在复印机、打印机、传真装置、兼具这些装置的功能的复合机、以及扫描仪等的内部进行图像处理的图像处理设备的计算机。另外,计算机10也可以是pc(personalcomputer,个人计算机)等独立的计算机,还可以是组装于pda(personaldigitalassistant,个人数字助手)以及便携电话机等便携设备的计算机。

如图1所示那样,本例示的实施方式所涉及的计算机10具备第1运算部12a、第2运算部12b、存储器14、显示部16、操作部18、存储部20、图像数据提供部22、以及图像输出部24。另外,第1运算部12a、第2运算部12b、存储器14、显示部16、操作部18、存储部20、图像数据提供部22、以及图像输出部24的各部经由总线26相互连接。

本例示的实施方式所涉及的第1运算部12a是计算机10的主处理器,作为一例,是具有多个处理器核心13(以下称作“核心13”)的cpu(centralprocessingunit,中央处理单元)。以下,在区别各核心13来进行说明的情况下,如核心13a、核心13b那样在附图标记的末尾标注字母来进行说明。本例示的实施方式的核心13是本公开的运算装置的一例。

另外,本例示的实施方式所涉及的第2运算部12b作为一例是在内部具有本地存储器15的gpu(graphicsprocessingunit,图形处理单元)。另外,第2运算部12b具备本地存储器15等内部存储器,只要是对存储于内部存储器的图像数据进行图像处理的运算装置,就没有特别限定,例如也可以是cpu。另外,第2运算部12b也可以是内置于第1运算部12a的gpu。另外,第1运算部12a以及第2运算部12b也可以是fpga(fieldprogrammablegatearray,现场可编程门阵列)等运算器。

存储器14是第1运算部12a临时存储数据的非易失性的存储单元。在由本例示的实施方式所涉及的第2运算部12b进行图像处理的情况下,第1运算部12a将存储于存储器14或存储部20的存储区域的图像数据经由总线26转送到第2运算部12b。并且,第2运算部12b将从第1运算部12a转送的图像数据存储到本地存储器15,对存储的图像数据进行图像处理。

在将计算机10组装于前述的图像处理设备的情况下,显示部16以及操作部18例如可应用设于图像处理设备的lcd(liquidcrystaldisplay,液晶显示器)等显示面板以及数字小键盘等。另外,在计算机10是独立的计算机的情况下,显示部16以及操作部18例如可应用与计算机10连接的显示器以及键盘、鼠标等。另外,显示部16以及操作部18也可以是由触摸面板以及显示器一体化构成的触摸面板显示器等。另外,存储部20可应用hdd(harddiskdrive,硬盘驱动器)、ssd(solidstatedrive,固态硬盘)以及闪速存储器等非易失性的存储介质。

图像数据提供部22只要可提供处理对象的图像数据即可,例如可应用读取记录于纸或摄影胶片等记录材料的图像并输出图像数据的图像读取部。另外,图像数据提供部22例如可应用经由通信线路从外部装置接收图像数据的接收部以及存储图像数据的图像存储部(存储器14或存储部20)等。

图像输出部24只要可输出经过图像处理的图像数据或经过图像处理的图像数据所表征的图像即可,例如可应用将图像数据所表征的图像记录于纸或感光材料等记录材料的图像记录部。另外,图像输出部24可应用将图像数据所表征的图像显示在显示器等的显示部(显示部16)、将图像数据写入cd-rom(compactdiskreadonlymemory,只读光盘存储器)等记录介质的写入装置。另外,图像输出部24可应用将经过图像处理的图像数据经由通信线路发送到外部装置的发送部。另外,图像输出部24可以是存储经过图像处理的图像数据的图像存储部(存储器14或存储部20)。

如图1所示那样,在存储部20中存储由第1运算部12a以及第2运算部12b执行的各种程序。在存储部20中,作为各种程序而存储有掌管资源管理、程序执行管理以及计算机10与外部装置的通信等的操作系统30的程序。另外,在存储部20中,作为各种程序而存储有用于使计算机10作为图像处理装置发挥功能的图像处理程序群34。另外,在存储部20中,作为各种程序,存储有使上述图像处理装置进行所期望的图像处理的各种应用程序群32(以下称作“应用32”)。

图像处理程序群34是以减轻开发在前述的图像处理设备、便携设备以及pc等中执行的图像处理程序时的负担为目的而开发的程序。另外,图像处理程序群34是以能在前述的图像处理设备、便携设备以及pc等各种设备(平台)中共同执行的方式进行开发的程序。

由图像处理程序群34实现的图像处理装置遵循来自应用32的构建指示来构建进行由应用32指示的图像处理的图像处理dag(有向非循环图:directedacyclicgraph)50a(详细情况后述)。然后,上述图像处理装置遵循来自应用32的执行指示来执行图像处理dag50a的处理。因此,图像处理程序群34将用于指示构建进行所期望的图像处理的图像处理dag50a、或用于指示执行所构建的图像处理dag50a的图像处理的接口提供给应用32。

通过以上的结构,在新开发需要在内部进行图像处理的任意设备的情况下等,关于进行上述图像处理的程序的开发,也只要开发利用上述接口来使图像处理程序群34进行上述任意设备中所需的图像处理的应用32即可。因此,开发者实际并不需要新开发进行图像处理的程序,可减轻开发者的负担。

接下来,详细说明本例示的实施方式所涉及的图像处理程序群34。如图1所示那样,图像处理程序群34包含模块库36、处理构建部42的程序以及处理控制部46的程序。

模块库36分别登记有进行预先确定的相互不同的图像处理的多种图像处理模块38的程序。作为该图像处理,例如可举出输入处理、过滤处理、颜色变换处理、放大/缩小处理(图1中标记为“缩放处理”)、侧倾角探测处理、图像旋转处理、图像合成处理以及输出处理等。

另外,在模块库36中还登记有图像处理的种类相同且所执行的图像处理的内容不同的图像处理模块38。在图1中,将这种图像处理模块在末尾标注数字区别为“模块1”、“模块2”。例如,对于进行放大/缩小处理的图像处理模块38,准备进行如下缩小处理的图像处理模块38,在该缩小处理中,通过将输入的图像数据在水平方向以及垂直方向的各方向上均每隔1像素进行间除,来使图像的纵横的尺寸缩小成50%。进而,例如对于进行放大/缩小处理的图像处理模块38,准备对输入的图像数据以指定的放大/缩小率进行放大/缩小处理的图像处理模块38等。

另外,例如对于进行颜色变换处理的图像处理模块38,准备将rgb(redgreenblue,红绿蓝)颜色空间的图像向cmyk(cyanmagentayellowkey-plate(黑),青品红黄黑)颜色空间的图像进行变换的图像处理模块38以及将cmyk颜色空间的图像向rgb颜色空间的图像进行变换的图像处理模块38。进而,例如,对于进行颜色变换处理的图像处理模块3,准备将rgb颜色空间的图像向ycbcr颜色空间的图像进行变换的图像处理模块38以及将ycbcr颜色空间的图像向rgb颜色空间的图像进行变换的图像处理模块38等。

另外,在模块库36中还登记有具备用于存储图像数据的存储区域(缓冲)的缓冲模块40。

本例示的实施方式所涉及的处理构建部42根据来自应用32的指示来构建dag形态的图像处理dag50a。作为一例,图像处理dag50a如图2a所示那样将1个以上的图像处理模块38经由配置于各个图像处理模块38的前级以及后级的至少一方的缓冲模块40而连结。

另外,各个图像处理模块38是对输入图像数据执行图像处理的物体的一例。另外,在图2a所示的示例中示出:经由缓冲模块40而在前级连结有图像处理模块38的图像处理模块38在前级的图像处理模块38的图像处理结束的情况下能执行自身的图像处理。另外,示出:经由缓冲模块40而在前级连结有多个图像处理模块38的图像处理模块38在前级的多个图像处理模块38的全部图像处理结束的情况下能执行自身的图像处理。

另外,在图2a中示出仅将各模块按照处理的顺序连接而成的dag,但在执行该dag时,如图2b所示那样,将存储于存储器14的输入图像数据输入并遵循dag来进行图像处理。然后,最终在存储器14中存储处理完毕的输出图像数据等处理结果。

接下来,参考图3来说明本例示的实施方式所涉及的处理控制部46的功能性结构。如图3所示那样,处理控制部46具备分割部60、控制部62、任务队列64、输出部66、登记部67、判定部68以及非同步处理结束探测任务列表(以下仅称作“列表”)69。

本实施方式所涉及的分割部60将由设为输入图像数据的处理对象的部分表示的图像分割成多个部分区域(以下称作“分割图像”)。作为一例,如图4a所示那样,分割部60将由设为输入图像数据的处理对象的部分表示的图像g分割成多个(图4a所示的示例中是3个)分割图像b1~b3。另外,以下将表示分割图像的图像数据称作“分割图像数据”。另外,所谓设为输入图像数据的处理对象的部分,在如颜色变换处理那样将输入图像整体作为处理对象的图像处理中,意思是输入图像数据整体作为处理对象的部分。另外,所谓设为输入图像数据的处理对象的部分,在如修剪(trimming)处理那样将输入图像的一部分作为处理对象的图像处理中,意思是输入图像的一部分。以下,为了避免复杂,将设为输入图像数据的处理对象的部分仅称作“输入图像数据”。

另外,在图4a所示的示例中,分割部60将图像g在主视观察下上下进行分割,但并不限定于此。例如分割部60也可以将图像g在主视观察下左右进行分割,还可以如图4b所示那样在主视观察下上下左右进行分割。

另外,分割部60的输入图像数据的分割数并没有特别限定。例如分割部60可以以预先确定的数目或尺寸来分割输入图像数据。另外,例如,分割部60将输入图像数据分割成执行图像处理模块38的图像处理的运算部所具有的处理器核心数以下且2个以上的数目。

另外,例如,分割部60也可以以执行图像处理模块38的图像处理的运算部所具有的高速缓冲存储器的容量以下的尺寸来分割输入图像数据。在该情况下,例如,例示以下形态:分割部60以距执行图像处理模块38的图像处理的运算部的处理器最远的级别的高速缓冲存储器即所谓的llc(lastlevelcache,最末级高速缓冲)的容量以下且与llc的容量尽量一致的尺寸来分割输入图像数据。

本例示的实施方式所涉及的控制部62进行使多个核心13并行地执行与分割图像数据对应的任务的控制。另外,这里所谓的并行,意思是由多个核心13并行(同时)地执行能基于依赖关系而执行的任务。

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

另外,图5表示在图2a所示的图像处理dag50a中将输入图像数据分割成4个分割图像数据的情况下的图像处理dag50b。在图5中,为了避免复杂而省略缓冲模块40的图示。

本例示的实施方式所涉及的控制部62对应于图像处理模块38中执行的图像处理的种类在连结于前级的图像处理模块38的部分处理39与连结于后级的图像处理模块38的部分处理39之间赋予依赖关系。另外,在图5中用虚线箭头来表示该依赖关系。

例如,如颜色变换处理那样,对于仅对设为处理对象的像素进行图像处理的处理来说,各部分处理39也成为1对1的依赖关系。另一方面,例如,如过滤处理那样,在还需要设为处理对象的像素的周边像素的图像处理中,对于对周边像素进行图像处理的前级的部分处理39也赋予依赖关系。即,该依赖关系是如下那样的关系:在被连结的图像处理模块38间,在连结于前级的图像处理模块38的部分处理39结束的情况下,能执行连结于后级的图像处理模块38的部分处理39。因此,各部分处理39能在不存在对前级赋予依赖关系的部分处理39的情况下,或者在被赋予依赖关系的前级的全部部分处理39结束的情况下执行。

具体地,例如,图5所示的部分处理39a以及部分处理39b能在图像处理的执行开始时执行。另外,例如,图5所示的部分处理39c能在被赋予依赖关系的前级的部分处理39a以及部分处理39b双方的处理结束的情况下执行。

另外,在本例示的实施方式中,针对与分割图像数据对应的部分处理39,将其称作“任务”。

控制部62将能执行的任务存放在用于多个核心13各自依次取出并执行所存放的任务的任务队列64中。另外,作为一例,本例示的实施方式的控制部62将同时存放于任务队列64的任务的数目设为2个以下。

另外,同时存放于任务队列64的任务的数目并不限定于本例示的实施方式,但优选是2个以上。在任务队列64中仅存放1个任务的情况下,若设为直到完成任务的执行为止都不将新的任务存放到任务队列64中,则新的任务就不会存放在任务队列64中,多个核心13当中不工作的核心13就会增加,核心13的工作率就会降低。另一方面,在不限制任务队列64所能同时存放的任务的数目的情况下,由于对存放于任务队列64的全部任务,在前处理(详细情况后述)中确保存储器,因此要确保的存储器容量会变多。

因此,通过限制任务队列64所能同时存放的任务的数目,来抑制前处理中确保的存储器等资源的量增加。因此,任务队列64所能同时存放的任务的数目可以对应于存储器的容量等确定,也可以设为对应于核心13的工作率可变。

在本例示的实施方式中的任务中有同步任务和非同步任务这2个种类。所谓同步任务是如下任务:若核心13a对核心13b或第2运算部12b指示处理的执行,则直到核心13b或第2运算部12b中的处理结束为止,控制都不返回到核心13a。另一方面,所谓非同步任务是如下任务:若核心13a对核心13b或第2运算部12b指示处理的执行,则控制不等待核心13b或第2运算部12b中的处理结束就返回到核心13a。

控制部62从任务队列64中取得任务,执行所取得的任务。若开始任务的执行,则在本例示的实施方式中,从任务中将表征是否结束了处理或是否是继续中的信息输出到控制部62。另外,并不限定于本例示的实施方式,例如也可以是如下形态:关于表征是否是继续中的信息不进行输出,仅将表征结束了处理的信息输出到控制部62。

在任务是非同步任务的情况下,由于是刚开始任务的执行的定时,因此从任务中输出表征处理是继续中的信息。在该情况下,控制部62经由登记部67将处理是继续中的非同步任务登记到列表69中。本例示的实施方式的列表69是本公开的结束探测任务管理信息的一例。

登记于列表69的非同步任务被设为将用于探测非同步处理的结束的结束探测任务(详细情况后述)组合而成的任务。以下,将组合了结束探测任务而成的非同步任务仅称作“结束探测任务”。另外,以下,在结束探测任务中,将被组合的非同步任务的处理处于继续中的状态的结束探测任务称作“继续中的结束探测任务”,将被组合的非同步任务的处理处于结束的状态的结束探测任务称作“结束完毕的结束探测任务”。

图6a表示列表69的状态的一例。在图6a所示的示例中示意性地示出已经将2个继续中的结束探测任务tep登记在列表69中的状态。另外,列表69中示出的实线箭头表征从列表的排头向末尾去的方向。具体地,在图6a中,列表69的左侧是排头,箭头的尖端所碰到的右侧成为末尾。

图6b示意性地示出登记部67将1个新的继续中的结束探测任务tep登记在列表69中的示例。登记部67在列表69中登记结束探测任务tep的情况下,作为一例,如图6b所示那样,在列表69的末尾登记结束探测任务tep。

另一方面,在任务是同步任务的情况下,从任务中输出表征结束了处理的信息。在该情况下,控制部62在去任务队列64取得下一任务前,执行判定部68中的列表判定处理(详细情况后述)。

判定部68将列表69从排头起按顺序进行扫描,来调查有无结束完毕的结束探测任务。判定部68在判定为有结束完毕的结束探测任务的情况下,通过将判定的结束完毕的结束探测任务从列表69中抽出而进行删除,从而更新列表69。

图7a示意性地示出判定部68将列表69从排头起按顺序进行扫描并判定为列表69中的第2个结束探测任务是结束完毕的结束探测任务tef的状态的示例。如图7b所示那样,判定部68在判定为是结束完毕的结束探测任务tef的情况下,通过将判定的结束完毕的结束探测任务tef从列表69中抽出而进行删除,从而更新列表69。如图7c所示那样,接着,判定部68判定下一顺序的结束探测任务是否是结束完毕的结束探测任务tef。判定部68执行以上的处理直到列表69的末尾。

本例示的实施方式所涉及的输出部66通过控制部62的控制,输出由图像处理dag50b的最终级的图像处理模块38执行的图像处理的结果所得到的输出图像数据。在本例示的实施方式中,输出部66将由所得到的输出图像数据表示的输出图像显示在显示部16。另外,输出部66也可以将输出图像数据输出(发送)到外部装置。另外,在计算机10被组装入打印机的情况下,输出部66可以将由输出图像数据表示的输出图像输出(形成)在纸等记录材料上。

接下来,参考图8~图13来说明本例示的实施方式所涉及的计算机10的作用。另外,图8是表示在由应用32输入图像处理的执行开始的指示的情况下由第1运算部12a执行的dag构建/执行处理的流程的一例的流程图。另外,dag构建/执行处理的程序(dag构建/执行处理程序)预先安装在存储部20。另外,对于能不执行第1运算部12a中的一些任务地执行任务的核心13来说,其通过执行dag构建/执行处理程序来作为前述的处理构建部42以及控制部62发挥功能。

在图8的步骤100,处理构建部42遵循来自应用32的构建指示来构建进行应用32所指示的图像处理的图像处理dag50a。另外,处理构建部42将图像处理dag50a如上述那样更新成图像处理dag50b。

在接下来的步骤102,控制部62在执行了使第1运算部12a(核心13)以及第2运算部12b进行步骤100中构建的图像处理dag50b的图像处理的执行的图像处理dag执行处理后,结束本dag构建/执行处理。

通过执行本dag构建/执行处理,能从输出部66得到应用32所期望的图像处理的结果。另外,在本例示的实施方式中,在本dag构建/执行处理结束的情况下,控制部62将表征处理完成的信息向应用32通知,或在处理中出现什么错误的情况下,将表征该意思的信息向应用32通知。

接下来,详细说明上述dag构建/执行处理的步骤102中的图像处理dag执行处理。在本例示的实施方式的dag构建/执行处理中包含如下2个处理:将图像处理dag50b能执行的任务存放在任务队列64中的任务存放处理;和执行存放于任务队列64的任务的任务执行处理。

首先,参考图9来说明任务存放处理。图9是表示任务存放处理的流程的一例的流程图。在本例示的实施方式中,任务存放处理的程序(任务存放处理程序)作为dag构建/执行处理程序的一部分或者其他的所谓子程序等而预先安装在存储部20。

对于能不执行第1运算部12a中的一些任务地执行任务的核心13来说,其通过执行任务存放处理程序而作为控制部62发挥功能,执行图9所示的任务存放处理。

在图9的步骤110,控制部62判定是否在任务队列64中存放有能执行的任务。在本例示的实施方式中,在存放于任务队列64的能执行的任务为2个以上的情况下,步骤110的判定成为肯定判定,向步骤114移转。

另一方面,在存放于任务队列64的能执行的任务不足2个的情况下,步骤110的判定成为否定判定,向步骤112移转。

在步骤112,控制部62从图像处理dag50b找出能执行的任务,并存放到任务队列64中。在图10所示的示例中示出控制部62将图像处理dag50b能执行的同步任务ts存放到已经存放有能执行的非同步任务ta的任务队列64中的状态。

另外,在存放任务的情况下,如上述那样,存放于任务队列64的任务的数目为2个以下即可,本步骤中控制部62同时存放于任务队列64的任务的数目可以是1个,也可以是2个。具体地,在任务队列64中未存放任务的情况下,控制部62在任务队列64中存放1个或2个任务即可,在任务队列64中存放有1个任务的情况下,控制部62在任务队列64中存放1个任务即可。关于将控制部62在本步骤中在任务队列64中同时存放的任务的数目设为多少,可以预先确定,也可以设为对应于各核心13中的任务处理的进展可变。

在接下来的步骤114,控制部62判定是否将图像处理dag50b的全部任务存放到了任务队列64中。在有尚未存放于任务队列64的任务的情况下,步骤114的判定成为否定判定,返回到步骤110,重复进行本任务存放处理。另一方面,在将全部任务存放到了任务队列64的情况下,步骤114的判定成为肯定判定,结束本任务存放处理。

接下来,参考图11来说明任务执行处理。图11是表示任务执行处理的流程的一例的流程图。在本例示的实施方式中,任务执行处理的程序(任务执行处理程序)作为dag构建/执行处理程序的一部分,或其他的所谓子程序等而预先安装在存储部20。

对于能不执行第1运算部12a中的一些任务地执行任务的各个核心13来说,其通过执行任务执行处理程序而作为控制部62、登记部67以及判定部68发挥功能,执行图11所示的任务执行处理。另外,在本例示的实施方式中,通过由不同的核心13执行上述任务存放处理以及任务执行处理而并行地执行任务存放处理以及任务执行处理。

在图11的步骤120,控制部62从任务队列64中取得任务。

在接下来的步骤122,控制部62在任务的执行中执行预先确定的前处理。本步骤中执行的前处理是预先确定要在图像处理前进行的处理,并没有特别限定,例如是进行用于存放图像处理结果的输出缓冲区域的确保、图像处理用的变量的初始化等运算用的资源的确保的处理。

在接下来的步骤124,控制部62使第1运算部12a的核心13或第2运算部12b执行上述步骤120中取得的任务。另外,在使第2运算部12b执行任务的情况下,第1运算部12a的核心13通过进行使第2运算部12b执行任务的处理,来由第2运算部12b执行任务。本例示的实施方式的使第2运算部12b执行的任务是本公开的执行指示任务的一例。

另外,表征任务是否是由第2运算部12b执行的任务的信息在上述dag构建/执行处理的步骤100(参考图8)中由处理构建部42在从图像处理dag50a生成图像处理dag50b的处理中赋予。

在接下来的步骤126,控制部62判定上述步骤124中执行的任务是否结束(结束完毕)。

在任务是由第2运算部12b执行的任务的情况下(参考图10的箭头(a)),为了高速进行处理,一般将处理所需的数据(图像数据)转送到第2运算部12b的本地存储器15来处理。以下,将第2运算部12b是gpu的情况作为具体例来进行说明。作为一例,如图13a所示那样,在连续进行作为gpu处理的任务t1、t2的情况下,如图13b中示出一例那样,在任务t1执行前进行从存储器14向第2运算部12b的本地存储器15转送的转送处理,并在任务t2执行后进行处理结果从本地存储器15向存储器14转送的转送处理。

如上述那样,通过核心13执行任务并对cpu进行指示,从而gpu被启动以及控制,由gpu执行任务。在图13b示出一例的同步处理(直到gpu中的处理结束为止,控制都不返回到核心13的处理)的情况下,构成为与由通常的cpu执行的任务相同,但在图13b中的gpu处理1与gpu处理2之间,核心13直到处理结束为止都成为待机状态,在核心13的工作中出现浪费。

在图13c中示出一例的非同步处理(若核心13对gpu指示处理的执行则控制就不等待处理的结束地返回到核心13侧的处理)的情况下,核心13由于能与gpu处理1以及gpu处理2并行地执行其他任务,因此工作率得到提升。

另外,在非同步处理的情况下,需要进行由gpu执行的任务(图13c中任务t1、t2)的结束的探测。因此,如图13c所示那样,核心13进行用于将向gpu的转送、处理以及来自gpu的处理结果的转送分别(任务t0~t3)非同步进行处理的指示。并且,若控制返回到核心13侧,则核心13就执行探测gpu中的任务的结束的结束探测任务t4。

在该情况下,在执行步骤s124的定时,几乎没有处理成为结束完毕这样的情形。在处理不是结束完毕的情况下,步骤126的判定成为否定判定,向步骤128移转。

在步骤128,控制部62在由登记部67将结束探测任务t4登记到列表69的末尾后,结束本任务执行处理。

在图10所示的示例中示出使第2运算部12b执行非同步任务ta的核心13a在已经登记有2个结束探测任务tep、tef的列表69的末尾登记该结束探测任务tep的状态(参考箭头(b))。

另一方面,在任务是由第1运算部12a执行的任务的情况下(参考图10的箭头(c)),在核心13中以同步处理进行执行,直到同步处理结束为止,控制都不返回到控制部62。因此,由于在控制返回到控制部62后的步骤126的判定中,同步处理成为结束完毕,因此步骤126的判定成为肯定判定,向步骤130移转。

在步骤130,控制部62进行后处理。本步骤中执行的后处理是预先确定要在与任务对应的部分处理之后进行的处理,并没有特别限定,例如是进行上述步骤122的处理中确保的运算用的资源的释放等的处理。

在接下来的步骤132,控制部62对处理构建部42进行任务的完成通知。接受到任务的完成通知的处理构建部42将图像处理dag50b的依赖关系更新。若如此地更新图像处理dag50b的依赖关系,则在上述的任务存放处理(参考图9)中,处理构建部42就基于更新的依赖关系来判定能执行的任务。

在接下来的步骤134,控制部62在使判定部68执行进行针对登记于列表69的结束探测任务的判定的列表判定处理后,结束本任务执行处理。

接下来,参考图12来详细说明上述任务执行处理(参考图11)的步骤134的列表判定处理。图12是表示列表判定处理的流程的一例的流程图。

在步骤150,判定部68取得登记于列表69的排头的结束探测任务。

在接下来的步骤152,判定部68判定结束探测任务的取得是否成功。在列表69为空而不能取得结束探测任务的情况下,步骤152的判定成为否定判定,结束本列表判定处理。

另一方面,在能取得结束探测任务的情况下,步骤152的判定成为肯定判定,向步骤154移转。

在步骤154,判定部68判定与所取得的结束探测任务对应的非同步处理是否结束完毕。在非同步处理继续且通过结束探测任务尚未探测到非同步处理的结束的情况下,例如在图10所示的示例中,在判定部68取得的结束探测任务是结束探测任务tep的情况下,步骤154的判定成为否定判定,向步骤162移转。在步骤162,判定部68从列表69取得下一登记的结束探测任务,并返回到步骤152的处理。

另一方面,在非同步处理结束完毕且通过对应的结束探测任务探测到非同步处理的结束的情况下,例如在图10所示的示例中,在判定部68取得的结束探测任务是结束探测任务tef的情况下,步骤154的判定成为肯定判定,向步骤156移转。

在步骤156,判定部68将结束完毕的结束探测任务从列表69中抽出而删除(还参考图7b)。

在接下来的步骤158,判定部68与上述的任务执行处理(参考图11)的步骤130同样地进行后处理。进而,在接下来的步骤160,判定部68与上述的任务执行处理的步骤132同样地对处理构建部42进行任务的完成通知。

在接下来的步骤162,判定部68从列表69取得下一登记的结束探测任务,并返回到步骤152的处理。

即,控制部62将列表69从排头到末尾按顺序进行扫描,对各个结束探测任务执行是否结束了所组合的非同步处理的判定。图10的箭头(d)例示了以下情况:结束了同步任务ts的处理的核心13b将第2个登记的结束探测任务是结束完毕的结束探测任务tef的状态的列表69从排头起按顺序进行扫描。

如此地,在本例示的实施方式中,对第2运算部12b指示非同步任务的处理的执行且任务的执行未结束的核心13在列表69中登记结束探测任务。另外,任务的执行结束了的核心13进行列表判定处理,将结束完毕的结束探测任务从列表69中删除,进而进行对应的非同步任务的后处理,并对处理构建部42进行任务的完成通知。

在本例示的实施方式中,由于通过列表69进行结束探测任务的管理,因此能高效地进行第2运算部12b中执行的非同步任务的结束的探测。由此,在本例示的实施方式中,能使第2运算部12b高效地工作,能实现提高了可扩展性的并行处理。

另外,就算在列表69中登记有结束探测任务,在通过任务存放处理(参考图9)存放于任务队列64的任务没有了的情况下,将登记于列表69的结束探测任务存放在任务队列64中即可。由此,能抑制核心13成为待机状态而发生死锁。

另外,在本例示的实施方式中,上述的图像处理dag50b的更新、任务向任务队列64的存放以及任务从任务队列64的取出的各个处理需要在进行排他控制的同时进行,这点不言自明。

[第2例示的实施方式]

在本例示的实施方式中,为了避免复杂,说明用于分别进行结束探测任务的登记、判定用的扫描以及删除的对列表69的访问的排他控制的形态。另外,对与上述第1例示的实施方式同样的结构以及动作,记载其主旨,省略详细的说明。

本例示的实施方式的计算机10的结构由于与第1例示的实施方式的计算机10的结构(参考图1以及3)同样,因此省略详细的说明。

在本例示的实施方式中,计算机10所执行的dag构建/执行处理(参考图8)中的任务存放处理由于与第1例示的实施方式的任务存放处理(参考图9)同样,因此省略说明。另一方面,任务执行处理由于包含与第1例示的实施方式的任务执行处理(参考图11)不同的处理,因此以下对本例示的实施方式中的任务执行处理详细进行说明。

图14是表示本例示的实施方式的任务执行处理的流程的一例的流程图。如图14所示那样,本例示的实施方式的任务执行处理在步骤126与步骤128之间包含步骤127a以及127b的处理,在步骤128之后包含步骤129的处理,在这点上与第1例示的实施方式的任务执行处理(参考图11)不同。

在本例示的实施方式中,在步骤126中成为否定判定的情况下,移转到步骤127a。在步骤127a,控制部62判定是否能取得针对列表69的访问的排他控制的锁定。直到能取得锁定为止,步骤127a的判定都成为否定判定,若能取得锁定,则步骤127a的判定就成为肯定判定,向步骤127b移转。

在步骤127b,控制部62与上述的第1例示的实施方式的任务执行处理的步骤134同样,在由判定部68进行列表判定处理后移转到步骤128。在步骤128如上述那样由登记部67在列表69的末尾登记了结束探测任务后,向步骤129移转。

在步骤129,控制部62在将取得的锁定解除后,结束本任务执行处理。

另外,如图14所示那样,本例示的实施方式的任务执行处理在步骤132与步骤134之间包含步骤133的处理,在步骤134的处理后包含步骤135的处理,在这点上与第1例示的实施方式的任务执行处理(参考图11)不同。

在步骤133,控制部62判定是否能取得针对列表69的访问的排他控制的锁定。在不能取得锁定的情况下,步骤133的判定成为否定判定,结束本任务执行处理。另一方面,在能取得锁定的情况下,步骤133的判定成为肯定判定,向步骤134移转。

另外,在步骤135,控制部62在将取得的锁定解除后,结束本任务执行处理。

如此地,在本例示的实施方式的计算机10中,在列表69中登记结束探测任务的核心13直到能取得针对列表69的访问的锁定为止都成为待机状态,若能取得锁定,就在进行列表判定处理后在列表69中登记结束探测任务。另外,接受到任务的完成通知的核心13在能取得针对列表69的访问的锁定的情况下,进行列表判定处理,在不能取得锁定的情况下,不进行列表判定处理。

与本例示的实施方式不同,在仅将对列表69的访问排他控制的情况下,若执行列表判定处理的核心13有多个,且各个核心13访问列表69的定时重叠,则在1个核心13访问列表69的期间,其他核心13被阻止。在该情况下,在被阻止的核心13的工作中出现浪费。由于取得了针对列表69的访问的锁定的核心13通过列表判定处理来扫描列表69内的全部结束探测任务,因此可以不进行其他核心13的列表判定处理。

因此,在本例示的实施方式中,不能取得锁定的核心13通过不进行列表判定处理来使处理高效化,能抑制核心13的工作的浪费。

另外,在进行结束探测任务的登记的核心13取得了向列表69的锁定的期间,进行列表判定处理的核心13被阻止。与本例示的实施方式不同,若仅对进行列表判定处理的核心13进行阻止,则结束完毕的结束探测任务的判定就会滞后,不能使第2运算部12b新进行非同步任务,在第2运算部12b的工作中出现浪费。

因此,在本例示的实施方式中,在进行结束探测任务的登记的核心13取得向列表69的锁定的情况下,也进行列表判定处理,由此能更高效地进行结束完毕的结束探测任务的判定。由此,在本例示的实施方式中,能使第2运算部12b更高效地工作,能实现提高了可扩展性的并行处理。

[第3例示的实施方式]

在本例示的实施方式中,说明将列表判定处理作为1个任务进行处理的形态。另外,关于与上述第1例示的实施方式同样的结构以及动作,记载其主旨,省略详细的说明。

本例示的实施方式的计算机10的结构由于与第1例示的实施方式的计算机10的结构(参考图1以及3)同样,因此省略详细的说明。

在本例示的实施方式中,计算机10执行的dag构建/执行处理(参考图8)中的任务存放处理由于与第1例示的实施方式的任务存放处理(参考图9)同样,因此省略说明。另一方面,任务执行处理由于包含与第1例示的实施方式的任务执行处理(参考图11)不同的处理,因此以下对本例示的实施方式中的任务执行处理详细进行说明。

图15是表示本例示的实施方式的任务执行处理的流程的一例的流程图。如图15所示那样,本例示的实施方式的任务执行处理在步骤128之后包含步骤139的处理,在这点上与第1例示的实施方式的任务执行处理(参考图11)不同。

在将结束探测任务登记到列表69中后,在步骤139,控制部62将用于进行列表判定处理的判定任务存放到任务队列64中,之后结束本任务执行处理。在图16所示的示例中示出在列表69中存放了结束探测任务tep的核心13a在任务队列64中存放判定任务tj的状态(参考箭头(e))。

另外,如图15所示那样,本例示的实施方式的任务执行处理在步骤120与步骤122之间包含步骤121的处理,这点以及执行步骤134的处理的定时与第1例示的实施方式的任务执行处理(参考图11)不同。

在步骤121,控制部62判定取得的任务是否是判定任务。在取得的任务不是判定任务的情况下,步骤121的判定成为否定判定,向步骤122移转。另一方面,在取得的任务是判定任务的情况下,步骤121的判定成为肯定判定,向步骤134移转,在执行列表判定处理后,结束本任务执行处理。另外,在本例示的实施方式中,在步骤132,在对处理构建部42进行了任务的完成通知后,结束本任务执行处理。

如此地,在本例示的实施方式中,通过将用于进行列表判定处理的判定任务存放到任务队列64中,来将进行列表判定处理的定时设为核心13从任务队列64中取得判定任务的定时。

在本例示的实施方式的情况下,也将多个结束探测任务总括地通过列表69进行管理,通过一次列表判定处理的执行,来对登记于列表69的全部结束探测任务判定是否是结束完毕的结束探测任务。因此,与例如将各个结束探测任务存放在任务队列64中的情况相比,能高效地进行结束完毕的结束探测任务的判定。由此,在本例示的实施方式中,能使第2运算部12b高效地工作,能实现提高了可扩展性的并行处理。

如以上说明的那样,上述各例示的实施方式的计算机10是由将多个执行图像处理的物体以有向非循环图的形态连结而成的物体群的各物体执行图像处理的计算机10,具备:分割部60,其将成为图像处理的对象的图像数据分割成多个分割图像数据;控制部62,其进行控制,使第1运算部12a所具备的多个核心13各自并行地执行任务,该任务是对分割图像数据进行的图像处理且能对应于前后的依赖关系进行处理;登记部67,其在第2运算部12b能与第1运算部12a非同步地执行任务的情况下,在第1运算部12a的核心13中执行了对第2运算部12b指示任务的执行的执行指示任务后,将探测第2运算部12b中的任务的结束的结束探测任务登记到列表69中;和判定部68,其访问列表69,判定有无第2运算部12b结束了任务的结束探测任务。

如此地,在上述各例示的实施方式中,对第2运算部12b指示了非同步任务的处理的执行的核心13在列表69中登记结束探测任务。另外,核心13通过列表判定处理将结束完毕的结束探测任务从列表69中删除,对处理构建部42进行任务的完成通知。

与此相对,与上述各例示的实施方式不同,在将结束探测任务存放在任务队列64中的情况下,直到在结束探测任务前存放的其他任务的执行结束并从任务队列64中取得结束探测任务为止,就算任务的执行结束,也不能使第2运算部12b新进行任务。因此,不能使第2运算部12b充分工作,图像处理的处理效率会降低。

另一方面,在上述各例示的实施方式中,由于通过列表69进行多个结束探测任务的管理,因此能高效地进行由第2运算部12b执行的非同步任务的结束的探测。由此,在上述各例示的实施方式中,能使第2运算部12b高效地工作,能实现提高了可扩展性的并行处理。

因此,根据上述各例示的实施方式的计算机10,通过更高效地进行第2运算部12b中的任务的结束的探测,能使图像处理高速化。

另外,在上述各例示的实施方式中说明了在计算机10内部具备第2运算部12b的情况,但第2运算部12b也可以设于计算机10的外部,还可以由与计算机10不同的计算机具备。

另外,在上述各例示的实施方式中说明了各种程序预先存储(安装)在存储部20中的方案,但并不限定于此。各种程序也可以以记录于cd-rom、dvd-rom(digitalversatilediskreadonlymemory,数字多功能盘只读存储器)、usb(universalserialbus,通用串行总线)存储器等记录介质的形态来提供。另外,各种程序也可以设为经由网络从外部装置下载的形态。

通过参考其整体,将日本申请特愿2017-165510的公开引入到本说明书中。

对于本说明书记载的全部文献、专利申请以及技术标准来说,与具体且个别记述将各个文献、专利申请以及技术标准通过参考来引入的情况同等程度地,将其通过参考而引入到本说明书中。

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