CN117934532B - 一种图像边缘检测并行优化方法及系统 - Google Patents
一种图像边缘检测并行优化方法及系统 Download PDFInfo
- Publication number
- CN117934532B CN117934532B CN202410332148.9A CN202410332148A CN117934532B CN 117934532 B CN117934532 B CN 117934532B CN 202410332148 A CN202410332148 A CN 202410332148A CN 117934532 B CN117934532 B CN 117934532B
- Authority
- CN
- China
- Prior art keywords
- tile
- image
- slave
- core
- slave core
- 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.)
- Active
Links
- 238000003708 edge detection Methods 0.000 title claims abstract description 62
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000005457 optimization Methods 0.000 title claims abstract description 34
- 238000012545 processing Methods 0.000 claims abstract description 41
- 230000000903 blocking effect Effects 0.000 claims abstract description 17
- 238000001514 detection method Methods 0.000 claims abstract description 15
- 230000006870 function Effects 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 claims description 14
- 238000004891 communication Methods 0.000 claims description 13
- 230000001133 acceleration Effects 0.000 claims description 6
- 238000007493 shaping process Methods 0.000 claims description 4
- 230000009286 beneficial effect Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 6
- ODKSFYDXXFIFQN-UHFFFAOYSA-M argininate Chemical compound [O-]C(=O)C(N)CCCNC(N)=N ODKSFYDXXFIFQN-UHFFFAOYSA-M 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011897 real-time detection Methods 0.000 description 1
- 230000003313 weakening effect Effects 0.000 description 1
Landscapes
- Image Processing (AREA)
Abstract
本发明提供了一种图像边缘检测并行优化方法及系统,属于并行计算技术领域,该方法包括:每个核组的主核从任务池中调度一张图像进行计算,将图像分块为tile_list和little_tile_list;主核初始化从核阵列,并采用非阻塞接口开启从核阵列进行计算;主核负责从little_tile_list依次获取little_tile并进行边缘检测处理,同时从核阵列处理tile_list中的tile;从核阵列采用向量化指令加速检测;从核阵列将处理后的图像数据传输回主存。本发明充分利用了神威架构的特征,包括负载均衡、访存优化和从核阵列并行计算,以提高图像边缘检测的计算效率。
Description
技术领域
本发明属于并行计算技术领域,尤其涉及一种图像边缘检测并行优化方法及系统。
背景技术
图像边缘检测是图像处理任务中的一个基本环节,通过卷积核作用于图像,从而识别出物体的边缘或者轮廓。目前,自动驾驶和实时工业检测迅猛发展,对图像进行边缘检测提出了新的要求。新一代神威超算使用的是sw26010 pro芯片,每个芯片上包含6个核组,每个核组由1个主核和1个从核阵列构成,从核阵列由64个从核按照8*8的方式进行排列,芯片上配备16GB主存,每个从核配备256KB的LDM(local data memory),LDM可被配置为私有LDM、从核cache和从核连续共享LDM。主核和从核阵列通过DMA(Remote Memory Access)传输数据,从核与从核之间通过RMA实现细粒度通信。新一代神威超算支持C、C++和Fortran语言,支持 SWpyTorch、SWTensorFlow 和 SWBlas 等编程框架和库。尽管图像边缘检测算法在其他平台上已经得到了较为成熟的优化,但针对神威架构的优化算法目前仍在发展中,这导致在神威架构上的实时检测表现仍不如预期。
发明内容
针对现有技术中的上述不足,本发明提供的一种图像边缘检测并行优化方法及系统,旨在解决该平台上图像边缘检测延迟高的问题,通过充分利用神威超算的并行处理特性和优化算法,实现了实时图像边缘检测的目标。
为了达到以上目的,本发明采用的技术方案为:
本方案提供一种图像边缘检测并行优化方法,包括以下步骤:
S1、将所需处理的图像组织为一个任务池,并由每个核组从图像处理任务池中调度图像;
S2、利用主核按预设分块pre_tile对图像进行分块,并将划分结果分别存储于tile_list和little_tile_list,其中,tile_list表示存储与预设分块pre_tile大小相同的图像块的位置信息的列表,little_tile_list表示存储小于预设分块pre_tile的图像块的位置信息的列表;
S3、利用主核和从核列阵,对划分结果进行协同并行计算;
S4、根据S3中主核和从核阵列完成的协同并行计算结果,输出边缘检测后的图像结果,完成对图像边缘检测并行的优化。
本发明的有益效果是:本发明通过对图像检测任务进行多层次划分,充分利用了神威架构主核和从核阵列的算力,并且结合sobel边缘检测算法,进一步划分了从核列阵的高速储存区,从而削弱了每个从核的访存瓶颈,提升了图像处理的实时效率,适用于各种需要高效边缘检测的应用场景。
进一步地,所述S1包括以下步骤:
S101、将所需处理的图像组织为一个任务池;
S102、由每个核组的主核依次从图像处理任务池中调度一个图像任务。
再进一步地,所述S2包括以下步骤:
S201、按从核连续共享 LDM的大小对预设分块pre_tile进行设置,其中,从核连续共享LDM的大小在提交任务脚本中通过参数ldm_share_size设置,且满足下式:
其中,ldm_share_size表示每个从核连续共享LDM空间中负责配置从核连续共享LDM的大小参数,pre_tile.width表示预设分块pre_tile的水平宽度,pre_tile.height表示预设分块pre_tile的垂直高度,sizeof(int)表示一个类型为整形数据所占的字节数,3表示一个图像像素需要储存三个通信的信息,nums_cpe表示参与配置从核连续共享LDM的从核数量;
S202、初始化tile_list和little_tile_list;
S203、选定图像的左上角端点作为起点,从起点开始,以预设分块pre_tile的尺寸为步长,遍历图像;
S204、对于每个步长的位置,判断是否能截取一个大小等于预设分块pre_tile的区域,若是,则将该区域的左上角坐标储存至tile_list中,否则,将该区域的左上角坐标、宽度和长度存储至little_tile_list中;
S205、判断整个图像是否遍历完,若是,则进入S3,否则,返回S203。
上述进一步方案的有益效果是:本发明通过预设从核连续共享LDM空间的大小,使得从核阵列在访问子图像像素数据时,减少cache miss的概率,削弱了访存瓶颈。
再进一步地,所述S3包括以下步骤:
S301、由主核初始化从核阵列,并调用从核阵列执行从核函数且向从核阵列传递参数;
S302、由主核从little_tile_list中依次获取little_tile的位置信息,对图像进行边缘检测处理;同时,利用从核依次获取tile位置信息,并将该tile边界拓展数据传输至从核阵列共享LDM,由从核列阵按行并行对图像进行边缘检测处理,并将从核检测结果通过DMA传输至主存,其中,little_tile表示小于预设分块pre_tile的图像块的位置信息,tile表示tile_list中的图像块的位置信息,即大小与预设分块pre_tile大小相同的子图像;
S303、判断是否遍历完little_tile_list中所有的little_tile位置信息,若是,则进入S4,否则,返回S302;同时,
判断tile_list中的单元项是否遍历完毕,若是,则进入S4,否则,返回S302。
再进一步地,所述S302中利用从核依次获取tile位置信息,并将该tile边界拓展数据传输至从核阵列共享LDM,由从核按行并行对图像进行边缘检测处理,并将从核检测结果通过DMA传输至主存,其具体为:
A1、利用每个从核获取需要处理tile的左上角坐标,分别记录起始行号begin_row和起始列号begin_col,并获取从核编号id,以及预设分块pre_tile中的pre_tile_width和pre_tile_height,其中,pre_tile_width表示预设分块pre_tile的宽度,pre_tile_height表示预设分块pre_tile的高度;
A2、根据记录结果,在从核阵列中,通过循环遍历pre_tile_height+2,由所有从核调用通信接口,将图像边缘拓展的子图像的每一行图像色彩数据依次存放至从核连续共享LDM;
A3、由从核阵列按行并行对图像进行边缘检测;
A4、针对每个从核计算结束一行后,由每个从核通过数据通信函数将从核私有LDM中的数据,通过DMA传输至主存。
上述进一步方案的有益效果是:本发明采用主从协同并行计算模式,充分利用单核组的计算资源,尽可能地保证负载均衡。本发明通过采用从核阵列512位向量指令集,一个指令周期内完成更多的乘加计算,加速了检测过程。
再进一步地,所述A3包括以下步骤:
A31、针对每个从核,计算得到每个从核的处理范围:
A32、根据每个从核的处理范围,针对每个从核进行图像边缘检测时,采用从核512位的单指令多数据流SIMD指令集进行向量化加速;
A33、由每个从核在私有LDM中申请(pre_tile_width+2)*3*sizeof(int)字节大小的数组,并利用申请的数组存放子图像每计算完一行后的图像输出数据,其中,sizeof(int)表示一个类型为整形数据所占的字节数,3表示一个图像像素需要储存三个通信的信息。
再进一步地,所述每个从核的处理范围的表达式如下:
lines_per_slave = floor((pre_tile_height + 2) / 64)
其中,lines_per_slave表示每个从核的处理范围,floor()表示向下取整函数,64表示从核列阵中的从核数量为64。
本发明提供了一种图像边缘检测并行优化方法的图像边缘检测并行优化系统,包括:
任务调度模块,用于将所需处理的图像组织为一个任务池,并由每个核组从图像处理任务池中调度图像;
图像分块模块,用于利用主核按预设分块pre_tile对图像进行分块,并将划分结果分别存储于tile_list和little_tile_list,其中,tile_list表示存储与预设分块pre_tile大小相同的图像块的位置信息的列表,little_tile_list表示存储小于预设分块pre_tile的图像块的位置信息的列表;
主从协同并行计算模块,用于利用主核和从核列阵,对划分结果进行协同并行计算;
数据拷贝模块,用于将边缘拓展的子图像通过DMA方式传输至从核连续共享LDM;
数据回传模块,用于由每个从核将处理后的图像通过DMA的方式回传至主存,完成对图像边缘检测并行的优化。
本发明的有益效果是:本发明通过对图像检测任务进行多层次划分,充分利用了神威架构主核和从核阵列的算力,并且结合算法特征,进一步划分了从核列阵的高速储存区,从而削弱了每个从核的访存瓶颈,提升了图像处理的实时效率,适用于各种需要高效边缘检测的应用场景。
附图说明
图1为本发明的方法流程图。
图2为本发明的系统结构示意图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
在对本发明作说明前,先对以下术语作解释:
神威架构:神威新一代超算架构,采用sw26010 pro处理器,每个节点包含1个芯片,芯片上包含6个核组,每个核组由1个主核和1个从核阵列构成,其中从核阵列由64个从核按照8*8的排列形式构成。
LDM:Local Direct Memory ,每个从核的局部存储,大小为256KB,可以配置为私有LDM、从核cache和从核连续共享LDM。
主从协同并行计算模式:神威架构中,每个核组包括1个主核和1个从核阵列,通常从核阵列承担98%的计算任务,主核负责任务的分配与计算进度的协调,主从协同并行计算模式指的是,将主核视为与从核相同的计算设备,同时对同一类的任务进行计算,主核、从核阵列同时进行高负载运算。
athread库:athread库是针对神威加速编程模型所设计的运行时支撑,其目的是能够方便、快捷地对核组内的线程进行控制和调度,从而更好地发挥核组内多从核执行加速性能。
SIMD:Single Instruction Multiple Data,单指令多数据流,能在单一指令周期内对多个数据执行相同的操作。
实施例1
基于神威架构的图像边缘检测并行优化方法,特征为单个核组处理一张图像,每个核组包含1个主核、1个从核阵列、16GB主存和每个从核256KBLDM。如图1所示,本发明提供了一种图像边缘检测并行优化方法,其实现方法如下:
S1、将所需处理的图像组织为一个任务池,并由每个核组从图像处理任务池中调度图像,其实现方法如下:
S101、将所需处理的图像组织为一个任务池;
S102、由每个核组的主核依次从图像处理任务池中调度一个图像任务,其中,主核获取的图像任务信息为:图像的输入数据指针inputImage、输出数据指针outputimage、宽度width和高度height。
本实施例中,每个主核依次从任务池中调度一个图像任务,完成任务之后,会请求从任务池中获取下一个任务。然而,只有一个主核能够成功获取任务,其他主核必须等待,直到当前主核成功调度。具体而言,主核获取的任务信息为,图像的输入数据指针inputImage、输出数据指针outputimage、宽度width和高度height。
S2、利用主核按预设分块pre_tile对图像进行分块,并将划分结果分别存储于tile_list和little_tile_list,其中,tile_list表示存储与预设分块pre_tile大小相同的图像块的位置信息的列表,little_tile_list表示存储小于预设分块pre_tile的图像块的位置信息的列表,其实现方法如下:
S201、按从核连续共享 LDM的大小对预设分块pre_tile进行设置,其中,从核连续共享LDM的大小在提交任务脚本中通过参数ldm_share_size设置,且满足下式:
其中,ldm_share_size表示每个从核连续共享LDM空间中负责配置从核连续共享LDM的大小参数,pre_tile.width表示预设分块pre_tile的水平宽度,pre_tile.height表示预设分块pre_tile的垂直高度,sizeof(int)表示一个类型为整形数据所占的字节数,3表示一个图像像素需要储存三个通信的信息,nums_cpe表示参与配置从核连续共享LDM的从核数量;
S202、初始化tile_list和little_tile_list;
S203、选定图像的左上角端点作为起点,从起点开始,以预设分块pre_tile的尺寸为步长,遍历图像;
S204、对于每个步长的位置,判断是否能截取一个大小等于预设分块pre_tile的区域,若是,则将该区域的左上角坐标储存至tile_list中,否则,将该区域的左上角坐标、宽度和长度存储至little_tile_list中;
S205、判断整个图像是否遍历完,若是,则进入S3,否则,返回S203。
本实施例中,由于超算是通过提交作业脚本来运行程序的,运行时的一些参数用户可以自定义,ldm_share_size中的LDM表示local Direct Memory,为从核阵列中每个从核的本地存储空间,LDM可以被配置为三个部分,私有LDM、从核连续共享LDM以及从核Cache,其中,从核连续共享LDM指的是每个从核ldm_share_size的LDM空间组装起来形成的较大共享空间,这部分空间从核阵列中每个从核都可以进行访问,Cache表示高速缓冲存储器。
本实施例中,主核按照预设分pre_tile对图像进行分块,其具体为:
预设分块pre_tile依照从核连续共享LDM的大小进行设置,从核连续共享LDM的大小可在提交任务脚本中通过参数ldm_share_size设置,可选大小为0 KB、4KB、8KB、16KB、32KB、64KB和128KB,需要保证(pre_tile.width+1)*(pre_tile.height+1)*sizeof(int)*3小于从核连续共享LDM的大小;创建两个数组tile_list和little_tile_list,其包含子图像的左上角坐标、宽度和长度;对原图像向内拓展一个像素,即为后续分块时需要遍历的图像;选定图像的左上角端点作为起点,从起点开始,以预设分块pre_tile的尺寸为步长,从左到右,从上到下地遍历此图像;对于每个步长的位置,判断是否能截取一个大小等于预设分块pre_tile的区域,若是,则将该区域的左上角坐标储存至tile_list中,否则,将该区域的左上角坐标、宽度和长度存储至little_tile_list中。
S3、利用主核和从核列阵,对划分结果进行协同并行计算,其实现方法如下:
S301、由主核初始化从核阵列,并调用从核阵列执行从核函数且向从核阵列传递参数;
S302、由主核从little_tile_list中依次获取little_tile的位置信息,对图像进行边缘检测处理;同时,利用从核依次获取tile位置信息,并将该tile边界拓展数据传输至从核阵列共享LDM,由从核列阵按行并行对图像进行边缘检测处理,并将从核检测结果通过DMA传输至主存,其中,little_tile表示小于预设分块pre_tile的图像块的位置信息,tile表示tile_list中的图像块的位置信息,即大小与预设分块pre_tile大小相同的子图像;
所述S302中利用从核依次获取tile位置信息,并将该tile边界拓展数据传输至从核阵列共享LDM,由从核按行并行对图像进行边缘检测处理,并将从核检测结果通过DMA传输至主存,其具体为:
A1、利用每个从核获取需要处理tile的左上角坐标,分别记录起始行号begin_row和起始列号begin_col,并获取从核编号id,以及预设分块pre_tile中的pre_tile_width和pre_tile_height,其中,pre_tile_width表示预设分块pre_tile的宽度,pre_tile_height表示预设分块pre_tile的高度;
A2、根据记录结果,在从核阵列中,通过循环遍历pre_tile_height+2,由所有从核调用通信接口,将图像边缘拓展的子图像的每一行图像色彩数据依次存放至从核连续共享LDM;
A3、由从核阵列按行并行对图像进行边缘检测,其实现方法如下:
A31、针对每个从核,计算得到每个从核的处理范围:
A32、根据每个从核的处理范围,针对每个从核进行图像边缘检测时,采用从核512位的单指令多数据流SIMD指令集进行向量化加速;
A33、由每个从核在私有LDM中申请(pre_tile_width+2)*3*sizeof(int)字节大小的数组,并利用申请的数组存放子图像每计算完一行后的图像输出数据,其中,sizeof(int)表示一个类型为整形数据所占的字节数,3表示一个图像像素需要储存三个通信的信息;
A4、针对每个从核计算结束一行后,由每个从核通过数据通信函数将从核私有LDM中的数据,通过DMA传输至主存;
S303、判断是否遍历完little_tile_list中所有的little_tile位置信息,若是,则进入S4,否则,返回S302;同时,
判断tile_list中的单元项是否遍历完毕,若是,则进入S4,否则,返回S302。
本实施例中,进入主从协同并行计算模式,其具体为:
主核通过调用athread库的athread_init()接口初始化从核阵列,通过athread_enter64_arg()进入满核组快速工作模式,通过athread_spawn64_arg()调用从核阵列执行从核函数并且向从核阵列传递相关参数,其中,athread_init()为athread库中的一个函数接口,作用为初始化从核阵列,在调用任何athread库接口之前都需要先进行初始化的操作,athread_enter64_arg()为athread库中的一个函数接口,作用为快速进入满核组模式,即64个从核全部参与计算。
主核从litte_tile_list依次获取需要进行处理的little_tile的信息,直接读取inputImage的数据并将检测后的图像输出数据储存于outputimage中,其中,inputImage表示一个数组,用于储存输入图像的RGB数据,outputimage表示一个数组,用于储存边缘检测之后的输出图像的RGB数据。
每个从核获取目前需要处理tile的左上角坐标,记录为起始行号begin_row和起始列号begin_col,通过athread_get_id()获取从核编号id,获取预设分块pre_tile的pre_tile_width和pre_tile_height,其中,athread_get_id()为athread库中的一个函数接口,作用是得到当前从核的编号,tile表示tile_list中的单元项,即大小与预设分块pre_tile大小相同的子图像。
在从核阵列中,通过循环遍历pre_tile_height+2,所有从核调用athread_memcpy_sldm(),一次传输pre_tile_width*3*sizeof(int)字节的数据量,将边缘拓展的子图像的每一行图像色彩数据依次存放至从核连续共享LDM,其中,athread_memcpy_sldm()表示athread库中的一个接口,用于主存和从核连续共享LDM之间的数据传输,需要全部从核同时调用,传输方向可指定为主存数据传输至从核连续共享LDM或者从核连续共享LDM数据传输至主存,pre_tile_width表示预设分块pre_tile的宽度,sizeof(int)表示一个类型为整形数据所占的字节数。
针对于每个从核,将pre_tile_height+2除以64并且向下取整得到每个从核理论计算的行数lines_per_slave:
lines_per_slave = floor((pre_tile_height + 2) / 64)
其中,lines_per_slave表示每个从核的处理范围,floor()表示向下取整函数,64表示从核列阵中的从核数量为64。
每个核的处理范围为[lines_per_slave*id,lines_per_slave*(id+1)),其中,63号从核的处理范围为[lines_per_slave*id,pre_tile_height+2),其中,pre_tile_height表示预设分块pre_tile的高度。
每个从核在进行检测计算时,采用从核512位的SIMD指令集进行向量化加速,由于图像的数据是用int来储存的,int表示字节数,所以一次可以处理16个数据。针对每一个像素,需要遍历其周围9个像素来进行检测运算,每两个像素的检测可以合为一轮:
定义一个填充为0的向量A;
按照inputImage[index].red、inputImage[index].green、inputImage[index].blue、inputImage[index].red、inputImage[index].green、inputImage[index].blue、inputImage[index+1].red、inputImage[index+1].green、inputImage[index+1].blue、inputImage[index+1].red、inputImage[index+1].green、inputImage[index+1].blue排列加载进1个向量B,高128位用0填充,其中,inputImage表示输入图像的结构体数组,index为一个整数,代表在inputImage中的像素索引,red、green和blue是表示像素颜色通道的值,通常在0到255的范围内,分别表示红色、绿色和蓝色通道的亮度,B表示向量,用于存储按照指定顺序排列的像素通道值。
按照sobelX[i]、sobelX[i]、sobelX[i]、sobelY[i]、sobelY[i]、sobelY[i]、sobelX[i+1]、sobelX[i+1]、sobelX[i+1]、sobelY[i+1]、sobelY[i+1]、sobelY[i+1]排列加载进一个向量C,高128位用0填充,其中,sobelX和sobelY是一种图像处理算子,通常用于边缘检测,sobelX和sobelY分别代表在 X方向和 Y 方向上的 Sobel 算子卷积核,i是一个整数,代表在sobelX和sobelY中的索引,C是一个向量,用来存储按照指定顺序排列的 Sobel算子的值。
使用乘加指令进行计算 A=A+B*C;
将A向量低384位卸载入数组中,进行其他部分计算;
S4、根据S3中主核和从核阵列完成的协同并行计算结果,输出检测后的图像结果,完成对图像边缘检测并行的优化。
本实施例中,每个从核在私有LDM中申请(pre_tile_width+2)*3*sizeof(int)字节大小的数组,用于存放子图像每计算完一行后的图像输出数据,每个从核计算结束一行之后,通过athread_put()接口,利用DMA将检测后的图像输出数据传输至主存,其中,athread_put()表示athread库中的一个函数接口,DMA表示直接存储器存储模式。
本实施例中,通过在从核阵列与主核上分配不同区域的计算任务和利用从核阵列SIMD指令集,充分利用了单个核组的算力;通过对LDM空间的划分与利用,显著降低了从核阵列访问数据的延迟,提高了访存效率。
实施例2
如图2所示,本发明提供了一种执行实施例1所述的图像边缘检测并行优化方法的图像边缘检测并行优化系统,包括:
任务调度模块,用于将所需处理的图像组织为一个任务池,并由每个核组从图像处理任务池中调度图像;
图像分块模块,用于利用主核按预设分块pre_tile对图像进行分块,并将划分结果分别存储于tile_list和little_tile_list,其中,tile_list表示存储与预设分块pre_tile大小相同的图像块的位置信息的列表,little_tile_list表示存储小于预设分块pre_tile的图像块的位置信息的列表;
主从协同并行计算模块,用于利用主核和从核列阵,对划分结果进行协同并行计算;
数据拷贝模块,用于将边缘拓展的子图像通过DMA方式传输至从核连续共享LDM;
数据回传模块,用于由每个从核将处理后的图像通过DMA的方式回传至主存,完成对图像边缘检测并行的优化。
如图2所示实施例提供的图像边缘检测并行优化配准系统可以执行上述方法实施例图像边缘检测并行优化配准方法所示的技术方案,其实现原理与有益效果类似,此处不再赘述。
本实施例中,本申请可以根据图像边缘检测并行优化配准方法进行功能单元的划分,例如可以将各个功能划分为各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成单元即可以采用硬件的形式来实现,也可以采用软件功能单元的形式来实现。需要说明的是,本发明中对单元的划分是示意性的,仅仅为一种逻辑划分,实际实现时可以有另外的划分方式。
本实施例中,图像边缘检测并行优化配准系统为了实现图像边缘检测并行优化配准方法的原理与有益效果,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本发明所公开的实施例描述的各示意单元及算法步骤,本发明能够以硬件和/或硬件和计算机软件结合的形式来实现,某个功能以硬件还是计算机软件驱动的方式来执行,取决于技术方案的特定应用和设计约束条件,可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本实施例中,本发明通过在从核阵列与主核上分配不同区域的计算任务和利用从核阵列SIMD指令集,充分利用了单个核组的算力;通过对LDM空间的划分与利用,显著降低了从核阵列访问数据的延迟,提高了访存效率。
Claims (7)
1.一种图像边缘检测并行优化方法,其特征在于,包括以下步骤:
S1、将所需处理的图像组织为一个任务池,并由每个核组从图像处理任务池中调度图像;
S2、利用主核按预设分块pre_tile对图像进行分块,并将划分结果分别存储于tile_list和little_tile_list,其中,tile_list表示存储与预设分块pre_tile大小相同的图像块的位置信息的列表,little_tile_list表示存储小于预设分块pre_tile的图像块的位置信息的列表;
S3、利用主核和从核阵列,对划分结果进行协同并行计算;所述S3包括以下步骤:
S301、由主核初始化从核阵列,并调用从核阵列执行从核函数且向从核阵列传递参数;
S302、由主核从little_tile_list中依次获取little_tile的位置信息,对图像进行边缘检测处理;同时,利用从核依次获取tile位置信息,并将该tile边界拓展数据传输至从核阵列共享LDM,由从核阵列按行并行对图像进行边缘检测处理,并将从核检测结果通过DMA传输至主存,其中,little_tile表示小于预设分块pre_tile的图像块的位置信息,tile表示tile_list中的图像块的位置信息,即大小与预设分块pre_tile大小相同的子图像;
S303、判断是否遍历完little_tile_list中所有的little_tile位置信息,若是,则进入S4,否则,返回S302;同时,
判断tile_list中的单元项是否遍历完毕,若是,则进入S4,否则,返回S302;
S4、根据S3中主核和从核阵列完成的协同并行计算结果,输出边缘检测后的图像结果,完成对图像边缘检测并行的优化。
2.根据权利要求1所述的图像边缘检测并行优化方法,其特征在于,所述S1包括以下步骤:
S101、将所需处理的图像组织为一个任务池;
S102、由每个核组的主核依次从图像处理任务池中调度一个图像任务。
3.根据权利要求1所述的图像边缘检测并行优化方法,其特征在于,所述S2包括以下步骤:
S201、按从核连续共享 LDM的大小对预设分块pre_tile进行设置,其中,从核连续共享LDM的大小在提交任务脚本中通过参数ldm_share_size设置,且满足下式:
其中,ldm_share_size表示每个从核连续共享LDM空间中负责配置从核连续共享LDM的大小参数,pre_tile.width表示预设分块pre_tile的水平宽度,pre_tile.height表示预设分块pre_tile的垂直高度,sizeof(int)表示一个类型为整形数据所占的字节数,3表示一个图像像素需要储存三个通信的信息,nums_cpe表示参与配置从核连续共享LDM的从核数量;
S202、初始化tile_list和little_tile_list;
S203、选定图像的左上角端点作为起点,从起点开始,以预设分块pre_tile的尺寸为步长,遍历图像;
S204、对于每个步长的位置,判断是否能截取一个大小等于预设分块pre_tile的区域,若是,则将该区域的左上角坐标储存至tile_list中,否则,将该区域的左上角坐标、宽度和长度存储至little_tile_list中;
S205、判断整个图像是否遍历完,若是,则进入S3,否则,返回S203。
4.根据权利要求1所述的图像边缘检测并行优化方法,其特征在于,所述S302中利用从核依次获取tile位置信息,并将该tile边界拓展数据传输至从核阵列共享LDM,由从核按行并行对图像进行边缘检测处理,并将从核检测结果通过DMA传输至主存,其具体为:
A1、利用每个从核获取需要处理tile的左上角坐标,分别记录起始行号begin_row和起始列号begin_col,并获取从核编号id,以及预设分块pre_tile中的pre_tile_width和pre_tile_height,其中,pre_tile_width表示预设分块pre_tile的宽度,pre_tile_height表示预设分块pre_tile的高度;
A2、根据记录结果,在从核阵列中,通过循环遍历pre_tile_height+2,由所有从核调用通信接口,将图像边缘拓展的子图像的每一行图像色彩数据依次存放至从核连续共享LDM;
A3、由从核阵列按行并行对图像进行边缘检测;
A4、针对每个从核计算结束一行后,由每个从核通过数据通信函数将从核私有LDM中的数据,通过DMA传输至主存。
5.根据权利要求4所述的图像边缘检测并行优化方法,其特征在于,所述A3包括以下步骤:
A31、针对每个从核,计算得到每个从核的处理范围:
A32、根据每个从核的处理范围,针对每个从核进行图像边缘检测时,采用从核512位的单指令多数据流SIMD指令集进行向量化加速;
A33、由每个从核在私有LDM中申请(pre_tile_width+2)*3*sizeof(int)字节大小的数组,并利用申请的数组存放子图像每计算完一行后的图像输出数据,其中,sizeof(int)表示一个类型为整形数据所占的字节数,3表示一个图像像素需要储存三个通信的信息。
6.根据权利要求5所述的图像边缘检测并行优化方法,其特征在于,所述每个从核的处理范围的表达式如下:
lines_per_slave = floor((pre_tile_height + 2) / 64)
其中,lines_per_slave表示每个从核的处理范围,floor()表示向下取整函数,64表示从核阵列中的从核数量为64。
7.一种执行如权利要求1-6任一所述的图像边缘检测并行优化方法的图像边缘检测并行优化系统,其特征在于,包括:
任务调度模块,用于将所需处理的图像组织为一个任务池,并由每个核组从图像处理任务池中调度图像;
图像分块模块,用于利用主核按预设分块pre_tile对图像进行分块,并将划分结果分别存储于tile_list和little_tile_list,其中,tile_list表示存储与预设分块pre_tile大小相同的图像块的位置信息的列表,little_tile_list表示存储小于预设分块pre_tile的图像块的位置信息的列表;
主从协同并行计算模块,用于利用主核和从核阵列,对划分结果进行协同并行计算,其具体为:
B1、由主核初始化从核阵列,并调用从核阵列执行从核函数且向从核阵列传递参数;
B2、由主核从little_tile_list中依次获取little_tile的位置信息,对图像进行边缘检测处理;同时,利用从核依次获取tile位置信息,并将该tile边界拓展数据传输至从核阵列共享LDM,由从核阵列按行并行对图像进行边缘检测处理,并将从核检测结果通过DMA传输至主存,其中,little_tile表示小于预设分块pre_tile的图像块的位置信息,tile表示tile_list中的图像块的位置信息,即大小与预设分块pre_tile大小相同的子图像;
B3、判断是否遍历完little_tile_list中所有的little_tile位置信息,若是,则执行数据拷贝模块的操作,否则,返回B2;同时,
判断tile_list中的单元项是否遍历完毕,若是,则执行数据拷贝模块的操作,否则,返回B2;
数据拷贝模块,用于将边缘拓展的子图像通过DMA方式传输至从核连续共享LDM;
数据回传模块,用于由每个从核将处理后的图像通过DMA的方式回传至主存,完成对图像边缘检测并行的优化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410332148.9A CN117934532B (zh) | 2024-03-22 | 2024-03-22 | 一种图像边缘检测并行优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410332148.9A CN117934532B (zh) | 2024-03-22 | 2024-03-22 | 一种图像边缘检测并行优化方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117934532A CN117934532A (zh) | 2024-04-26 |
CN117934532B true CN117934532B (zh) | 2024-06-04 |
Family
ID=90754298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410332148.9A Active CN117934532B (zh) | 2024-03-22 | 2024-03-22 | 一种图像边缘检测并行优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117934532B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011128909A (ja) * | 2009-12-17 | 2011-06-30 | Toshiba Corp | 画像処理装置及び画像処理方法 |
CN102591759A (zh) * | 2011-12-29 | 2012-07-18 | 中国科学技术大学苏州研究院 | 片上众核处理器时钟精确并行仿真系统 |
CN102622723A (zh) * | 2011-05-25 | 2012-08-01 | 上海大学 | 基于cuda及边缘检测的图像插值 |
CN103716644A (zh) * | 2013-12-05 | 2014-04-09 | 南京肯麦思智能技术有限公司 | 一种h264多粒度并行的处理方法 |
JP6284172B1 (ja) * | 2017-12-06 | 2018-02-28 | 株式会社Nexpoint | 画面画像転送方法、画像復元方法、画面画像転送システム、画像復元システム、画面画像転送プログラム、画像復元プログラム、画像圧縮方法、画像圧縮システム、画像圧縮プログラム |
CN109445850A (zh) * | 2018-09-19 | 2019-03-08 | 成都申威科技有限责任公司 | 一种基于申威26010处理器的矩阵转置方法及系统 |
CN110490803A (zh) * | 2018-10-25 | 2019-11-22 | 北京连心医疗科技有限公司 | 一种图像语义分割分块预测的拼接方法、设备和存储介质 |
CN114009036A (zh) * | 2019-06-21 | 2022-02-01 | 佳能株式会社 | 图像编码设备、图像解码设备、图像编码方法和图像解码方法 |
CN114266899A (zh) * | 2021-11-08 | 2022-04-01 | 西安电子科技大学 | 一种基于多核dsp的图像目标并行检测方法 |
CN115100227A (zh) * | 2022-06-29 | 2022-09-23 | 南京大学 | 一种cpu-gpu协同的遥感影像边缘检测并行计算方法 |
CN116485691A (zh) * | 2023-04-25 | 2023-07-25 | 西南石油大学 | 一种基于直方图均衡优化算法的图像处理方法及系统 |
CN117472448A (zh) * | 2023-12-28 | 2024-01-30 | 山东省计算中心(国家超级计算济南中心) | 一种申威众核处理器从核簇加速并行方法、设备及介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5213486B2 (ja) * | 2008-03-14 | 2013-06-19 | 株式会社ソニー・コンピュータエンタテインメント | 対象物追跡装置および対象物追跡方法 |
EP2648107B1 (en) * | 2012-04-05 | 2016-09-28 | Siemens Healthcare GmbH | Volume rendering on shared memory systems with multiple processors by optimizing cache reuse |
KR101904203B1 (ko) * | 2012-06-20 | 2018-10-05 | 삼성전자주식회사 | 시프트 알고리즘을 이용하여 대용량 소스 이미지의 특징점 정보를 추출하는 장치 및 방법 |
US10360263B2 (en) * | 2017-07-25 | 2019-07-23 | Sap Se | Parallel edge scan for single-source earliest-arrival in temporal graphs |
US10510148B2 (en) * | 2017-12-18 | 2019-12-17 | Hong Kong Applied Science And Technology Research Institute Co., Ltd. | Systems and methods for block based edgel detection with false edge elimination |
CN113377981B (zh) * | 2021-06-29 | 2022-05-27 | 山东建筑大学 | 基于多任务深度哈希学习的大规模物流商品图像检索方法 |
-
2024
- 2024-03-22 CN CN202410332148.9A patent/CN117934532B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011128909A (ja) * | 2009-12-17 | 2011-06-30 | Toshiba Corp | 画像処理装置及び画像処理方法 |
CN102622723A (zh) * | 2011-05-25 | 2012-08-01 | 上海大学 | 基于cuda及边缘检测的图像插值 |
CN102591759A (zh) * | 2011-12-29 | 2012-07-18 | 中国科学技术大学苏州研究院 | 片上众核处理器时钟精确并行仿真系统 |
CN103716644A (zh) * | 2013-12-05 | 2014-04-09 | 南京肯麦思智能技术有限公司 | 一种h264多粒度并行的处理方法 |
JP6284172B1 (ja) * | 2017-12-06 | 2018-02-28 | 株式会社Nexpoint | 画面画像転送方法、画像復元方法、画面画像転送システム、画像復元システム、画面画像転送プログラム、画像復元プログラム、画像圧縮方法、画像圧縮システム、画像圧縮プログラム |
CN109445850A (zh) * | 2018-09-19 | 2019-03-08 | 成都申威科技有限责任公司 | 一种基于申威26010处理器的矩阵转置方法及系统 |
CN110490803A (zh) * | 2018-10-25 | 2019-11-22 | 北京连心医疗科技有限公司 | 一种图像语义分割分块预测的拼接方法、设备和存储介质 |
CN114009036A (zh) * | 2019-06-21 | 2022-02-01 | 佳能株式会社 | 图像编码设备、图像解码设备、图像编码方法和图像解码方法 |
CN114266899A (zh) * | 2021-11-08 | 2022-04-01 | 西安电子科技大学 | 一种基于多核dsp的图像目标并行检测方法 |
CN115100227A (zh) * | 2022-06-29 | 2022-09-23 | 南京大学 | 一种cpu-gpu协同的遥感影像边缘检测并行计算方法 |
CN116485691A (zh) * | 2023-04-25 | 2023-07-25 | 西南石油大学 | 一种基于直方图均衡优化算法的图像处理方法及系统 |
CN117472448A (zh) * | 2023-12-28 | 2024-01-30 | 山东省计算中心(国家超级计算济南中心) | 一种申威众核处理器从核簇加速并行方法、设备及介质 |
Non-Patent Citations (5)
Title |
---|
"运动目标检测算法的优化及并行加速研究";王月兴;《硕士电子期刊》;20190915;全文 * |
"CUDA下地质图像边缘检测算法并行优化";张晗等;《计算机工程与设计》;20190531;全文 * |
"基于CUDA的拉普拉斯边缘检测算法";孟小华等;孟小华等;20121119;第4.2节第(2)部分 * |
一种自适应Canny边缘检测算法的并行设计与TBB实现;孙陆鹏;肖汉;;数字技术与应用;20160615(第06期);全文 * |
孙陆鹏 ; 肖汉 ; .一种自适应Canny边缘检测算法的并行设计与TBB实现.数字技术与应用.2016,(第06期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN117934532A (zh) | 2024-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI748151B (zh) | 神經網絡計算加速器及其執行的方法 | |
JP5020393B2 (ja) | 処理装置 | |
CA3069185C (en) | Operation accelerator | |
CN109146072B (zh) | 基于卷积神经网络加速器的数据重用方法 | |
CN1272705C (zh) | 包括纯量算术逻辑单元的单指令多数据处理机 | |
CN110458280B (zh) | 一种适用于移动端的卷积神经网络加速方法及系统 | |
US7310098B2 (en) | Method and apparatus for rendering three-dimensional object groups | |
CN102147722A (zh) | 实现中央处理器和图形处理器功能的多线程处理器及方法 | |
CN103999051A (zh) | 用于着色器核心中着色器资源分配的策略 | |
CN103262002A (zh) | 优化系统调用请求通信 | |
CN112633490B (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
JPH05225153A (ja) | 高レベル命令の並列処理装置及び並列処理方法 | |
CN1132121C (zh) | 图形处理器和应用该处理器的数据处理系统 | |
WO2023160236A1 (zh) | 多输出神经网络的切片方法、装置、芯片及存储介质 | |
CN117934532B (zh) | 一种图像边缘检测并行优化方法及系统 | |
KR20180100362A (ko) | 이미지 프로세서에 대한 매크로 i/o 유닛 | |
US6771271B2 (en) | Apparatus and method of processing image data | |
US8564601B2 (en) | Parallel and vectored Gilbert-Johnson-Keerthi graphics processing | |
EP0486194A2 (en) | Memory system | |
CN114912596A (zh) | 面向稀疏卷积神经网络的多chiplet系统及其方法 | |
Campeanu et al. | A GPU-aware component model extension for heterogeneous embedded systems | |
JP5968497B2 (ja) | 制御方法、システム及びプログラム | |
US20230376562A1 (en) | Integrated circuit apparatus for matrix multiplication operation, computing device, system, and method | |
Raju et al. | Performance enhancement of CUDA applications by overlapping data transfer and Kernel execution | |
CN117422608A (zh) | 图像引导滤波方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |