CN115952388A - 基于图像数据处理的卷积运算方法、装置、处理器及介质 - Google Patents

基于图像数据处理的卷积运算方法、装置、处理器及介质 Download PDF

Info

Publication number
CN115952388A
CN115952388A CN202310232308.8A CN202310232308A CN115952388A CN 115952388 A CN115952388 A CN 115952388A CN 202310232308 A CN202310232308 A CN 202310232308A CN 115952388 A CN115952388 A CN 115952388A
Authority
CN
China
Prior art keywords
data
execution
convolution
operation data
execution point
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.)
Granted
Application number
CN202310232308.8A
Other languages
English (en)
Other versions
CN115952388B (zh
Inventor
阙恒
王斐
商秋
王�锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Li Computing Technology Shanghai Co ltd
Nanjing Lisuan Technology Co ltd
Original Assignee
Li Computing Technology Shanghai Co ltd
Nanjing Lisuan Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Li Computing Technology Shanghai Co ltd, Nanjing Lisuan Technology Co ltd filed Critical Li Computing Technology Shanghai Co ltd
Priority to CN202310232308.8A priority Critical patent/CN115952388B/zh
Publication of CN115952388A publication Critical patent/CN115952388A/zh
Application granted granted Critical
Publication of CN115952388B publication Critical patent/CN115952388B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Image Processing (AREA)

Abstract

本发明实施例公开了一种基于图像数据处理的卷积运算方法、装置、处理器及介质,包括:获取待运算的输入图像矩阵,并根据执行并行度,确定对输入图像矩阵进行卷积运算时的执行区域;根据执行区域,以及卷积运算中的卷积核大小,确定与执行区域对应的运算数据的数据坐标;根据数据坐标,在缓存区中检测是否存在缓存命中数据;若是,则在缓存区中获取运算数据;若否,则在内存中加载运算数据;将运算数据与卷积核进行卷积运算,得到卷积结果。该方法根据执行并行度确定输入图像矩阵的加载规则并加载运算数据,有效缩短卷积运算数据加载时间,节省存储空间;并且优先在缓存命中运算数据,避免重复数据多次由内存加载,提高数据利用率及加载效率。

Description

基于图像数据处理的卷积运算方法、装置、处理器及介质
技术领域
本发明涉及人工智能技术领域,尤其涉及一种基于图像数据处理的卷积运算方法、装置、处理器及介质。
背景技术
在人工智能、神经网络等领域中,卷积运算是一种有效筛选图片特征的方式,例如通过卷积运算实现特征提取、特征选择或者信息过滤等。卷积的一般场景是采用正方形的卷积核,遍历图像中的各个点,卷积核与覆盖区域的点进行内积运算。
现有技术中,通常是按照卷积核大小以及遍历轨迹,将原始图像在内存中进行完全展开,并加载输入图像展开矩阵,与卷积核展开矩阵进行卷积运算。例如,原始图像矩阵大小为M×N×Cin,M和N为原始图像大小,Cin为输入特征层数;卷积核矩阵阵列大小为Kw×Kh×Cout,Kw×Kh为卷积核大小,Cout为卷积的输出特征层数;如在边界填充(padding)和步长(step)均取1时,原始图像矩阵进行卷积计算时,展开后的输入展开矩阵大小为M×N×Cin×Kw×Kh;卷积核矩阵阵列进行卷积计算时,展开后的卷积核展开矩阵大小为Kw×Kh×Cin×Cout。之后,可以加载输入展开矩阵与卷积核展开矩阵对应的数据到处理器进行点积运算,得到卷积结果。
在上述过程中,输入展开矩阵是原始数据量的Kw×Kh倍。随着图像越来越高的清晰度需求,输入展开矩阵的数据量将越来越大。如4K高清图像的展开矩阵数据量可达303兆字节(MB)。即原始图像矩阵的展开会导致数据膨胀,增加存储压力,并在进行数据加载时会消耗数据带宽,从而影响卷积运算的效率。
发明内容
本发明提供了一种基于图像数据处理的卷积运算方法、装置、处理器及介质,以节省内存存储空间并提高数据加载速率,降低数据加载时的带宽消耗。
根据本发明的一方面,提供了一种基于图像数据处理的卷积运算方法,该方法包括:
获取待运算的输入图像矩阵,并根据执行并行度,确定对所述输入图像矩阵进行卷积运算时的执行区域;
根据所述执行区域,以及卷积运算中的卷积核大小,确定与所述执行区域对应的运算数据的数据坐标;
根据所述数据坐标,在缓存区中检测是否存在缓存命中数据;若是,则在缓存区中获取所述运算数据;若否,则在内存中加载所述运算数据;
将所述运算数据与卷积核进行卷积运算,得到卷积结果。
根据本发明的另一方面,提供了一种基于图像数据处理的卷积运算装置,该装置包括:
执行区域确定模块,用于获取待运算的输入图像矩阵,并根据执行并行度,确定对所述输入图像矩阵进行卷积运算时的执行区域;
数据坐标确定模块,用于根据所述执行区域,以及卷积运算中的卷积核大小,确定与所述执行区域对应的运算数据的数据坐标;
运算数据加载模块,用于根据所述数据坐标,在缓存区中检测是否存在缓存命中数据;若是,则在缓存区中获取所述运算数据;若否,则在内存中加载所述运算数据;
卷积运算模块,用于将所述运算数据与卷积核进行卷积运算,得到卷积结果。
根据本发明的另一方面,提供了一种图形处理器,所述图形处理器包括:
所述图形处理器通过计算机程序执行本发明任一实施例所述的基于图像数据处理的卷积运算方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的基于图像数据处理的卷积运算方法。
本发明实施例的技术方案,通过获取待运算的输入图像矩阵,并根据执行并行度,确定对输入图像矩阵进行卷积运算时的执行区域;根据执行区域,以及卷积运算中的卷积核大小,确定与执行区域对应的运算数据的数据坐标;根据数据坐标,在缓存区中检测是否存在缓存命中数据;若是,则在缓存区中获取运算数据;若否,则在内存中加载运算数据;将运算数据与卷积核进行卷积运算,得到卷积结果,解决了卷积运算中的数据加载问题,该方法可以根据处理器的执行并行度确定输入图像矩阵的加载规则并加载对应的运算数据,可以有效缩短卷积数据加载时间,避免直接对输入图像矩阵进行全量展开、加载,节省内存存储空间;并且,可以优先在缓存中命中运算数据,避免重复数据多次由内存进行加载,提高数据的利用率以及加载效率,降低数据加载时的带宽占用率,从而提高卷积运算效率。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种基于图像数据处理的卷积运算方法的流程图;
图2是根据本发明实施例一提供的一种深度优先存储方式的示意图;
图3是根据本发明实施例一提供的一种执行区域的示意图;
图4是根据本发明实施例一提供的一种卷积核展开矩阵的示意图;
图5是根据本发明实施例一提供的一种执行区域所对应运算数据的示意图;
图6是根据本发明实施例二提供的一种基于图像数据处理的卷积运算方法的流程图;
图7是根据本发明实施例三提供的一种基于图像数据处理的卷积运算装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1是根据本发明实施例一提供的一种基于图像数据处理的卷积运算方法的流程图,本实施例可适用于对卷积运算进行加速的情况,该方法可以由基于图像数据处理的卷积运算装置来执行,该基于图像数据处理的卷积运算装置可以采用硬件和/或软件的形式实现,该基于图像数据处理的卷积运算装置可配置于电子设备如计算机中。如图1所示,该方法包括:
步骤110、获取待运算的输入图像矩阵,并根据执行并行度,确定对输入图像矩阵进行卷积运算时的执行区域。
其中,输入图像矩阵可以是需要进行卷积运算的图像对应的矩阵。例如,输入图像矩阵可以是未经卷积运算的原始图像、经一次或多次卷积运算得到的卷积图像等对应的矩阵。具体地,输入图像矩阵可以是M×N×Cin。示例性地,Cin可以取32。为了加快输入图像矩阵对应的输入图像展开矩阵在卷积运算中的加载,在本发明实施例中输入图像矩阵在内存中的存储顺序可以是符合预设存储方式的。例如,输入图像矩阵在内存中的存储顺序可以是符合下述条件:连续输入特征层对应的同一位置的像素点在内存中是连续存储的。具体地,输入图像矩阵在内存中的存储顺序可以是深度优先存储方式。
示例性地,图2是根据本发明实施例一提供的一种深度优先存储方式的示意图。以执行点e为例,e在输入图像中的坐标为(X,Y),X为图像横轴坐标,Y为图像纵轴坐标。在内存中根据深度优先存储方式存储时,如图2所示,沿Cin方向所有的e点在内存中是紧凑排列的。进一步地,以e为中心的3×3的数据块中,相同字母分别沿Cin连续存储。例如,以e为中心的3×3的数据块中各字母的坐标分别如下:a对应的坐标依次为:(X-1,Y-1,Cin 0),(X-1,Y-1,Cin 1)…(X-1,Y-1,Cin 31);b对应的坐标依次为:(X,Y-1,Cin 0),(X,Y-1,Cin1)…(X,Y-1,Cin 31);c对应的坐标依次为:(X+1,Y-1,Cin 0),(X+1,Y-1,Cin 1)…(X+1,Y-1,Cin 31);d对应的坐标依次为:(X-1,Y,Cin 0),(X-1,Y,Cin 1)…(X-1,Y,Cin 31);e对应的坐标依次为:(X,Y,Cin 0),(X,Y,Cin 1)…(X,Y,Cin 31);f对应的坐标依次为:(X+1,Y,Cin 0),(X+1,Y, Cin 1)…(X+1,Y,Cin 31);g对应的坐标依次为:(X-1,Y+1, Cin 0),(X-1,Y+1, Cin 1)…(X-1,Y+1,Cin 31);h对应的坐标依次为:(X,Y+1, Cin 0),(X,Y+1, Cin1)…(X,Y+1,Cin 31);k对应的坐标依次为:(X+1,Y+1, Cin 0),(X+1,Y+1, Cin 1)…(X+1,Y+1,Cin 31)。在进行数据读取时,可以根据字母的起点坐标,连续读取内存。
其中,执行点可以是图像中的像素点。像素点的单位可以是float(浮点数)或者int(整数)等,可以根据输入图像格式确定。
在本实施例中,执行并行度可以是由电子设备的处理器所对应处理器核的并行运算模式确定的。例如,图形处理器(Graphics Processing Unit, GPU)的处理器核可以支持单指令多数据流(Single Instruction Multiple Data,SIMD)16、SIMD32、以及SIMD64等并行运算模式。单个处理器核上满负荷时,每个周期(Cycle)可以有SIMD个硬件核心计算单元(Alu)进行点积运算。因此,执行并行度可以是每个Cycle可以进行运算的SIMD数量。以SIMD32为例,执行并行度为32。
执行并行度也表明单个处理器核在各Cycle内可以进行卷积运算时的执行区域。例如,执行并行度为32,执行区域可以包括32个执行点。具体地,执行区域可以是由8×4、4×8、2×16、16×2、1×32、或者32×1等构成区域。示例性地,图3是根据本发明实施例一提供的一种执行区域的示意图。在图3中,执行区域为8×4。
以图3为例,单个处理器核在各Cycle内可以加载8×4个执行点对应的数据,即图3中的32个数据条。在图3中,也提供了各数据条在输入图像矩阵中所对应的具体数据示意位置。即在对如图3所示的执行区域进行卷积运算时,可以根据输入图像矩阵加载如图3中所示意位置的数据,作为与该执行区域对应的部分运算数据进行卷积运算。下述以图3所示的执行区域为例,具体说明如何加载该执行区域对应的全部运算数据,以提高卷积运算速度。
步骤120、根据执行区域,以及卷积运算中的卷积核大小,确定与执行区域对应的运算数据的数据坐标。
其中,卷积核大小为Kw×Kh×Cout。示例性地,Kw取3,Kh取3。基于卷积核在卷积运算中是共用数据(图像中的每个像素点都需要与卷积核进行运算),因此在本实施例中,可以对卷积核进行全量加载,即可以直接根据卷积核确定卷积核展开矩阵。
示例性地,图4是根据本发明实施例一提供的一种卷积核展开矩阵的示意图。卷积核展开矩阵大小为3×3×Cin×Cout。将卷积核按照Cin和Cout展开如图4中左半部分所示,得到卷积核展开矩阵。卷积核展开矩阵以Cout依次展开到内存的排列情况如图4中的右半部分所示。卷积核展开矩阵在内存中的存储方式也为深度优先存储。
在本实施例中,卷积核大小为3×3×Cout。因此,对如图3所示的执行区域进行运算数据加载时,该执行区域对应的输入图像展开矩阵中的运算数据需要覆盖9个(3×3)大小为32×32(执行点个数×Cin)的数据块。
具体地,图5是根据本发明实施例一提供的一种执行区域所对应运算数据的示意图。如图5所示,根据执行区域以及卷积核大小,可以确定Kw×Kh个与执行区域大小相同的数据块,作为与执行区域对应的运算数据。示例性地,与执行区域对应的运算数据为:图5中的数据块Matrix-0,Matrix-1,Matrix-2,Matrix-3,Matrix-4,Matrix-5,Matrix-6,Matrix-7,以及Matrix-8。其中,Matrix-1,Matrix-2,Matrix-3,Matrix-4,Matrix-5,Matrix-6,Matrix-7,以及Matrix-8是在Matrix-0的基础上按照横向或者纵向方向进行平移得到的。
在确定执行区域对应的运算数据后,可以寻址该运算数据。在本实施例中,基于输入图像矩阵以及卷积核展开矩阵的存储方式,可以简化并运算数据的加载。例如,可以在确定各数据块的起始坐标(X,Y)时,根据起始坐标连续地确定各运算数据的坐标。
示例性地,表1是根据本发明实施例一提供的一种执行区域所对应运算数据的加载公式表。如图5所示的各数据块,可以按照表1中所示的公式,确定运算数据的数据坐标,并根据该数据坐标加载运算数据。
表1
数据块 加载公式
Matrix-0 For(i=0; i<8; i++){ For(j=0; j<4; j++){load(X+i, Y+j,Cin 0)~(X+i, Y+j, Cin 31)}}
Matrix-1 For(i=1; i<9; i++){ For(j=0; j<4; j++){load(X+i, Y+j,Cin 0)~(X+i, Y+j, Cin 31)}}
Matrix-2 For(i=2; i<10; i++){ For(j=0; j<4; j++){load(X+i, Y+j,Cin 0)~(X+i, Y+j, Cin 31)}}
Matrix-3 For(i=0; i<8; i++){ For(j=1; j<5; j++){load(X+i, Y+j,Cin 0)~(X+i, Y+j, Cin 31)}}
Matrix-4 For(i=; i<9; i++){ For(j=1; j<5; j++){load(X+i, Y+j,Cin 0)~(X+i, Y+j, Cin 31)}}
Matrix-5 For(i=2; i<10; i++){ For(j=1; j<5; j++){load(X+i, Y+j,Cin 0)~(X+i, Y+j, Cin 31)}}
Matrix-6 For(i=0; i<8; i++){ For(j=2; j<6; j++){load(X+i, Y+j,Cin 0)~(X+i, Y+j, Cin 31)}}
Matrix-7 For(i=; i<9; i++){ For(j=2; j<6; j++){load(X+i, Y+j,Cin 0)~(X+i, Y+j, Cin 31)}}
Matrix-8 For(i=2; i<10; i++){ For(j=2; j<6; j++){load(X+i, Y+j,Cin 0)~(X+i, Y+j, Cin 31)}}
其中,“load(X+i, Y+j,Cin 0)~(X+i, Y+j, Cin 31)”表示依次按照坐标(X+i, Y+j,Cin 0)至(X+i, Y+j, Cin 31)寻址,在内存中读取对应的数据。load操作可以是由着色器如GPU纹理单元执行,进行数据加载。
在上述示例性的例子中,每次load可以加载内存中连续存储的32×1数据;每次load加载并展开的运算数据是与SIMD32工作量需求匹配的。在切换SIMD工作模式时,只需要调整load中,每个load连续加载的数据条尺寸,即可满足不同SIMD的计算需求。通过在输入图像矩阵中,根据执行并行度以及已经加载的执行区域,即可按照一定顺序确定新的执行区域,从而可以实现输入图像矩阵对应的输入展开矩阵加载。
在本实施例中,按照上述的方式根据执行并行度确定执行区域、以及与执行区域对应的运算数据的数据坐标,从而根据数据坐标进行运算数据加载,可以将输入图像矩阵对应的输入展开矩阵进行分步加载。即适应GPU硬件的SIMD模式,根据硬件算力,调节加载矩阵区域,使加载后的数据直接参与运算。上述方式,可以避免输入图像矩阵直接在内存中膨胀展开为输入展开矩阵,再全量加载输入展开矩阵,造成重复数据加载,并且加载量大影响运算效率。
步骤130、根据数据坐标,在缓存区中检测是否存在缓存命中数据;若是,则在缓存区中获取运算数据;若否,则在内存中加载运算数据。
在按照如表1所示的加载公式进行数据加载时,仍然存在重复数据的加载。示例性地,在图5中,对于编号为9的数据条(32×1),在加载Matrix-0、Matrix-1、Matrix-3以及Matrix-4时,均需要加载编号为9的数据条。
因此,为了进一步节省从内存加载的时间周期以及读取带宽,可以在加载数据块后,保持数据缓存命中;并在下一次加载时,先根据数据坐标检测缓存区中是否存在相同数据坐标的缓存命中数据。如果存在,则在缓存区中获取该数据坐标对应的运算数据;否则在内存中加载该数据坐标对应的运算数据。
步骤140、将运算数据与卷积核进行卷积运算,得到卷积结果。
本实施例的技术方案,通过获取待运算的输入图像矩阵,并根据执行并行度,确定对输入图像矩阵进行卷积运算时的执行区域;根据执行区域,以及卷积运算中的卷积核大小,确定与执行区域对应的运算数据的数据坐标;根据数据坐标,在缓存区中检测是否存在缓存命中数据;若是,则在缓存区中获取运算数据;若否,则在内存中加载运算数据,解决了卷积运算中的数据加载问题,该方法可以根据处理器的执行并行度确定输入图像矩阵的加载规则并加载对应的运算数据,可以有效缩短卷积数据加载时间,避免直接对输入图像矩阵进行全量展开、加载,节省内存存储空间;并且,可以优先在缓存中命中运算数据,避免重复数据多次由内存进行加载,提高数据的利用率以及加载效率,降低数据加载时的带宽占用率,从而提高卷积运算效率。
实施例二
图6是根据本发明实施例二提供的一种基于图像数据处理的卷积运算方法的流程图,本实施例是对上述技术方案的进一步细化,本实施例中的技术方案可以与上述一个或者多个实施例中的各个可选方案结合。如图6所示,该方法包括:
步骤210、获取待运算的输入图像矩阵,并根据执行并行度,确定对输入图像矩阵进行卷积运算时的执行区域。
在本发明实施例的一个可选实施方式中,获取待运算的输入图像矩阵,包括:获取原始图像矩阵,并将原始图像矩阵在内存中的存储顺序调整为深度优先存储方式,生成待运算的输入图像矩阵。
其中,原始图像矩阵可以是与原始图像对应的矩阵。根据原始图像矩阵的输入特征层调整原始图像矩阵在内存中的存储方式可以是根据原始图像矩阵的输入特征层将原始图像矩阵的存储方式调整为连续Cin对应的同一位置的执行点在内存中连续摆放,即按照深度优先存储方式存储原始图像矩阵,生成待运算的输入图像矩阵。
在本发明实施例的一个可选实施方式中,获取待运算的输入图像矩阵,包括:获取与各执行区域对应的卷积结果,并将各卷积结果作为待运算的输入图像矩阵。
其中,采用本发明任意实施例所提供的基于图像数据处理的卷积运算方法,加载运算数据与卷积核进行卷积运算后,得到的卷积结果仍然满足深度优先的存储模式。因此,卷积结果可以直接作为下一次卷积运算的待运算的输入图像矩阵。从而,采用本发明实施例的技术方案,仅需要对最原始图像对应的原始图像矩阵进行存储方式调整,在后续的卷积运算中无需再对输入进行数据排布方式调整。在多层卷积运算中,可以显著提升卷积运算速度。
步骤220、在执行区域中,确定各执行点的坐标信息。
其中,运算数据的加载可以有多种方式。例如,可以根据执行区域确定与执行区域对应的各数据块,进行确定各数据块的坐标,加载各数据块对应的数据。或者,可以在执行区域中确定各执行点,根据各执行点确定与执行点对应的运算数据的数据坐标,并进行数据加载。
在根据执行区域中的执行点加载运算数据时,可以先确定执行区域中各执行点的坐标信息,再确定与各执行点对应的运算数据的数据坐标。其中,确定各执行点的坐标信息可以是确定执行区域中各执行点在图像中的横纵坐标以及输入特征层数。例如,在图3中可以确定编号为0的执行点对应的坐标信息。示例性地,编号为0的执行点对应的坐标信息为(X, Y,Cin 0)~(X, Y, Cin 31)。
步骤230、根据各坐标信息以及卷积运算中的卷积核大小,确定执行区域中各执行点对应的运算数据的数据坐标。
其中,根据卷积核大小,可以确定在进行卷积计算时,需要加载的与执行点相对应的运算数据的数据坐标。例如,卷积核大小为3×3时,与编号为0的执行点对应的运算数据的数据坐标,可以是以执行点0为中心的3×3的数据块对应的数据坐标。具体地,在确定执行点0对应的运算数据的数据坐标时,可以参照图2中确定执行点e对应的3×3数据块中各字母坐标的方式。
在本发明实施例的一个可选实施方式中,根据各坐标信息以及卷积运算中的卷积核大小,确定执行区域中各执行点对应的运算数据的数据坐标,包括:在执行区域中,确定至少一个目标执行点,以及与目标执行点对应的目标坐标信息;根据目标坐标信息、目标执行点与执行区域中其他执行点之间的位置关系、以及卷积运算中的卷积核大小,确定执行区域中各执行点对应的运算数据的数据坐标。
其中,在确定执行区域中执行点的坐标信息时,可以是先选择其中一个执行点作为目标执行点,并确定目标执行点的目标坐标信息。该目标执行点可以按照如图2中执行点e的方式读取对应的运算数据的数据坐标,从而根据数据坐标加载对应的运算数据。之后,可以根据执行区域中各执行点与目标执行点的位置关系,确定各执行点的坐标信息。各执行点均可以参照图2中执行点e的方式读取对应的运算数据的数据坐标,从而根据数据坐标加载对应的运算数据。
在本发明实施例的一个可选实施方式中,根据目标坐标信息、目标执行点与执行区域中其他执行点之间的位置关系、以及卷积运算中的卷积核大小,确定执行区域中各执行点对应的运算数据的数据坐标,包括:根据目标执行点的坐标信息,在输入图像矩阵中以目标执行点为中心,确定与卷积核大小相同的区域对应的第一执行点展开矩阵坐标;根据目标执行点的坐标信息、以及目标执行点与执行区域中其他执行点之间的位置关系,依次以各其他执行点为中心,确定与卷积核大小相同的区域对应的第二执行点展开矩阵坐标;将第一执行点展开矩阵坐标和各第二执行点展开矩阵坐标,作为运算数据的数据坐标。
其中,第一执行点展开矩阵坐标以及第二执行点展开矩阵坐标的确定方式均可以参照图2中执行点e的方式读取与卷积核大小相同的区域对应的数据块的数据坐标。通过上述方式确定与执行区域对应的运算数据的数据坐标,可以充分利用数据局部性,匹配SIMD工作量需求对输入图像矩阵进行展开,从而提高卷积运算执行效率。
步骤240、当检测到当前执行点为执行区域中首个获取运算数据的首执行点时,根据与首执行点对应的数据坐标,在内存中加载与首执行点对应的运算数据,并缓存首执行点对应的运算数据。
以图5中编号为9(执行点9)的数据条为例,在加载Matrix-0、Matrix-1、Matrix-3以及Matrix-4时,均需要加载执行点9的数据条。为了进一步降低输入图像展开矩阵中重复数据的加载,示例性地,执行点9为首执行点时,即先加载执行点9对应的运算数据时,可以根据对应的数据坐标将执行点9对应的运算数据从内存中进行加载,并保持缓存命中(cache hit),从而在再次需要加载与执行点9对应的运算数据时,无需从内存加载,节省数据加载时间周期和读取带宽。
步骤250、当检测到当前执行点为执行区域中非首个获取运算数据的次执行点时,根据与次执行点对应的数据坐标,在缓存区中命中与次执行点对应的第一运算数据,并在内存中加载与次执行点对应的第二运算数据,缓存第二运算数据。
其中,第一运算数据与第二运算数据共同构成与次执行点对应的全部运算数据,且第一运算数据与第二运算数据对应的数据坐标不重复。
在本实施例中,对于已经从内存加载的运算数据,可以直接通过保持cache hit节省数据加载时间,而对于未加载的数据需要从内存加载到显存。因此,在本实施例中,只有数据第一次使用时需要从内存加载到显存,考虑到大多数数据条在卷积运算中需要重复使用9次(与卷积核大小有关),因此纹理单元的命中率(hit ratio)接近90%,从而可以极大地提升卷积运算效率。
步骤260、将运算数据与卷积核进行卷积运算,得到卷积结果。
本发明实施例的技术方案中,通过获取待运算的输入图像矩阵,并根据执行并行度,确定对输入图像矩阵进行卷积运算时的执行区域;在执行区域中,确定各执行点的坐标信息;根据各坐标信息以及卷积运算中的卷积核大小,确定执行区域中各执行点对应的运算数据的数据坐标;当检测到当前执行点为执行区域中首个获取运算数据的首执行点时,根据与首执行点对应的数据坐标,在内存中加载与首执行点对应的运算数据,并缓存首执行点对应的运算数据;当检测到当前执行点为执行区域中非首个获取运算数据的次执行点时,根据与次执行点对应的数据坐标,在缓存区中命中与次执行点对应的第一运算数据,并在内存中加载与次执行点对应的第二运算数据,缓存第二运算数据;将运算数据与卷积核进行卷积运算,得到卷积结果,解决了卷积运算中的数据加载问题,该方法可以根据处理器的执行并行度确定输入图像矩阵的加载规则并加载对应的运算数据,可以有效缩短卷积数据加载时间,避免直接对输入图像矩阵进行全量展开、加载,节省内存存储空间;并且,可以优先在缓存中命中运算数据,避免重复数据多次由内存进行加载,提高数据的利用率以及加载效率,降低数据加载时的带宽占用率,从而提高卷积运算效率。
实施例三
图7是根据本发明实施例三提供的一种基于图像数据处理的卷积运算装置的结构示意图。如图7所示,该装置包括:执行区域确定模块310,数据坐标确定模块320,运算数据加载模块330和卷积运算模块340。其中:
执行区域确定模块310,用于获取待运算的输入图像矩阵,并根据执行并行度,确定对输入图像矩阵进行卷积运算时的执行区域;
数据坐标确定模块320,用于根据执行区域,以及卷积运算中的卷积核大小,确定与执行区域对应的运算数据的数据坐标;
运算数据加载模块330,用于根据数据坐标,在缓存区中检测是否存在缓存命中数据;若是,则在缓存区中获取运算数据;若否,则在内存中加载运算数据;
卷积运算模块340,用于将运算数据与卷积核进行卷积运算,得到卷积结果。
可选的,数据坐标确定模块320,包括:
执行点坐标信息确定单元,用于在执行区域中,确定各执行点的坐标信息;
数据坐标确定单元,用于根据各坐标信息以及卷积运算中的卷积核大小,确定执行区域中各执行点对应的运算数据的数据坐标。
可选的,数据坐标确定单元,包括:
目标坐标信息确定子单元,用于在执行区域中,确定至少一个目标执行点,以及与目标执行点对应的目标坐标信息;
数据坐标确定子单元,用于根据目标坐标信息、目标执行点与执行区域中其他执行点之间的位置关系、以及卷积运算中的卷积核大小,确定执行区域中各执行点对应的运算数据的数据坐标。
可选的,数据坐标确定子单元,具体用于:
根据目标执行点的坐标信息,在输入图像矩阵中以目标执行点为中心,确定与卷积核大小相同的区域对应的第一执行点展开矩阵坐标;
根据目标执行点的坐标信息、以及目标执行点与执行区域中其他执行点之间的位置关系,依次以各其他执行点为中心,确定与卷积核大小相同的区域对应的第二执行点展开矩阵坐标;
将第一执行点展开矩阵坐标和各第二执行点展开矩阵坐标,作为运算数据的数据坐标。
可选的,运算数据加载模块330,具体用于:
当检测到当前执行点为执行区域中首个获取运算数据的首执行点时,根据与首执行点对应的数据坐标,在内存中加载与首执行点对应的运算数据,并缓存首执行点对应的运算数据;
当检测到当前执行点为执行区域中非首个获取运算数据的次执行点时,根据与次执行点对应的数据坐标,在缓存区中命中与次执行点对应的第一运算数据,并在内存中加载与次执行点对应的第二运算数据,缓存第二运算数据;
其中,第一运算数据与第二运算数据共同构成与次执行点对应的全部运算数据,且第一运算数据与第二运算数据对应的数据坐标不重复。
可选的,执行区域确定模块310,包括:
第一输入图像矩阵生成单元,用于获取原始图像矩阵,并将原始图像矩阵在内存中的存储顺序调整为深度优先存储方式,生成待运算的输入图像矩阵。
可选的,执行区域确定模块310,包括:
第二输入图像矩阵生成单元,用于获取与各执行区域对应的卷积结果,并将各卷积结果作为待运算的输入图像矩阵。
本发明实施例所提供的基于图像数据处理的卷积运算装置可执行本发明任一实施例所提供的基于图像数据处理的卷积运算方法,具备执行方法相应的功能模块和有益效果。
实施例四
图形处理器通过计算机程序执行本发明任一实施例所提供的基于图像数据处理的卷积运算方法。
在一些实施例中,基于图像数据处理的卷积运算方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质。在一些实施例中,计算机程序的部分或者全部可以经由ROM和/或通信单元而被载入和/或安装到图形处理器上。当计算机程序加载到RAM并由图形处理器执行时,可以执行上文描述的基于图像数据处理的卷积运算方法的一个或多个步骤。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的图形处理器,使得计算机程序当由图形处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种基于图像数据处理的卷积运算方法,其特征在于,包括:
获取待运算的输入图像矩阵,并根据执行并行度,确定对所述输入图像矩阵进行卷积运算时的执行区域;
根据所述执行区域,以及卷积运算中的卷积核大小,确定与所述执行区域对应的运算数据的数据坐标;
根据所述数据坐标,在缓存区中检测是否存在缓存命中数据;若是,则在缓存区中获取所述运算数据;若否,则在内存中加载所述运算数据;
将所述运算数据与卷积核进行卷积运算,得到卷积结果。
2.根据权利要求1所述的方法,其特征在于,根据所述执行区域,以及卷积运算中的卷积核大小,确定与所述执行区域对应的运算数据的数据坐标,包括:
在所述执行区域中,确定各执行点的坐标信息;
根据各所述坐标信息以及卷积运算中的卷积核大小,确定所述执行区域中各执行点对应的运算数据的数据坐标。
3.根据权利要求2所述的方法,其特征在于,根据各所述坐标信息以及卷积运算中的卷积核大小,确定所述执行区域中各执行点对应的运算数据的数据坐标,包括:
在所述执行区域中,确定至少一个目标执行点,以及与所述目标执行点对应的目标坐标信息;
根据所述目标坐标信息、所述目标执行点与所述执行区域中其他执行点之间的位置关系、以及卷积运算中的卷积核大小,确定所述执行区域中各执行点对应的运算数据的数据坐标。
4.根据权利要求3所述的方法,其特征在于,根据所述目标坐标信息、所述目标执行点与所述执行区域中其他执行点之间的位置关系、以及卷积运算中的卷积核大小,确定所述执行区域中各执行点对应的运算数据的数据坐标,包括:
根据所述目标执行点的坐标信息,在所述输入图像矩阵中以所述目标执行点为中心,确定与所述卷积核大小相同的区域对应的第一执行点展开矩阵坐标;
根据所述目标执行点的坐标信息、以及所述目标执行点与所述执行区域中其他执行点之间的位置关系,依次以各所述其他执行点为中心,确定与所述卷积核大小相同的区域对应的第二执行点展开矩阵坐标;
将所述第一执行点展开矩阵坐标和各所述第二执行点展开矩阵坐标,作为所述运算数据的数据坐标。
5.根据权利要求2所述的方法,其特征在于,根据所述数据坐标,在缓存区中检测是否存在缓存命中数据;若是,则在缓存区中获取所述运算数据;若否,则在内存中加载所述运算数据,包括:
当检测到当前执行点为所述执行区域中首个获取运算数据的首执行点时,根据与所述首执行点对应的数据坐标,在内存中加载与所述首执行点对应的运算数据,并缓存所述首执行点对应的运算数据;
当检测到当前执行点为所述执行区域中非首个获取运算数据的次执行点时,根据与所述次执行点对应的数据坐标,在缓存区中命中与所述次执行点对应的第一运算数据,并在内存中加载与所述次执行点对应的第二运算数据,缓存所述第二运算数据;
其中,所述第一运算数据与所述第二运算数据共同构成与所述次执行点对应的全部运算数据,且所述第一运算数据与所述第二运算数据对应的数据坐标不重复。
6.根据权利要求1所述的方法,其特征在于,获取待运算的输入图像矩阵,包括:
获取原始图像矩阵,并将所述原始图像矩阵在内存中的存储顺序调整为深度优先存储方式,生成待运算的输入图像矩阵。
7.根据权利要求6所述的方法,其特征在于,获取待运算的输入图像矩阵,包括:
获取与各所述执行区域对应的卷积结果,并将各所述卷积结果作为待运算的输入图像矩阵。
8.一种基于图像数据处理的卷积运算装置,其特征在于,包括:
执行区域确定模块,用于获取待运算的输入图像矩阵,并根据执行并行度,确定对所述输入图像矩阵进行卷积运算时的执行区域;
数据坐标确定模块,用于根据所述执行区域,以及卷积运算中的卷积核大小,确定与所述执行区域对应的运算数据的数据坐标;
运算数据加载模块,用于根据所述数据坐标,在缓存区中检测是否存在缓存命中数据;若是,则在缓存区中获取所述运算数据;若否,则在内存中加载所述运算数据;
卷积运算模块,用于将所述运算数据与卷积核进行卷积运算,得到卷积结果。
9.一种图形处理器,其特征在于,包括:
所述图形处理器通过计算机程序执行如权利要求1-7中任一项所述的基于图像数据处理的卷积运算方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任一项所述的基于图像数据处理的卷积运算方法。
CN202310232308.8A 2023-03-13 2023-03-13 基于图像数据处理的卷积运算方法、装置、处理器及介质 Active CN115952388B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310232308.8A CN115952388B (zh) 2023-03-13 2023-03-13 基于图像数据处理的卷积运算方法、装置、处理器及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310232308.8A CN115952388B (zh) 2023-03-13 2023-03-13 基于图像数据处理的卷积运算方法、装置、处理器及介质

Publications (2)

Publication Number Publication Date
CN115952388A true CN115952388A (zh) 2023-04-11
CN115952388B CN115952388B (zh) 2023-05-30

Family

ID=85896287

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310232308.8A Active CN115952388B (zh) 2023-03-13 2023-03-13 基于图像数据处理的卷积运算方法、装置、处理器及介质

Country Status (1)

Country Link
CN (1) CN115952388B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116861149A (zh) * 2023-09-05 2023-10-10 之江实验室 卷积运算的优化方法、装置及处理器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111199273A (zh) * 2019-12-31 2020-05-26 深圳云天励飞技术有限公司 卷积计算方法、装置、设备及存储介质
CN113344768A (zh) * 2021-08-02 2021-09-03 成都统信软件技术有限公司 一种图像矩阵卷积的实现方法、计算设备及储存介质
CN115035317A (zh) * 2022-07-01 2022-09-09 格兰菲智能科技有限公司 卷积运算方法、装置、矩阵展开装置和图形处理器
CN115481732A (zh) * 2022-09-21 2022-12-16 北京地平线信息技术有限公司 通过人工智能加速器处理特征图的方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111199273A (zh) * 2019-12-31 2020-05-26 深圳云天励飞技术有限公司 卷积计算方法、装置、设备及存储介质
CN113344768A (zh) * 2021-08-02 2021-09-03 成都统信软件技术有限公司 一种图像矩阵卷积的实现方法、计算设备及储存介质
CN115035317A (zh) * 2022-07-01 2022-09-09 格兰菲智能科技有限公司 卷积运算方法、装置、矩阵展开装置和图形处理器
CN115481732A (zh) * 2022-09-21 2022-12-16 北京地平线信息技术有限公司 通过人工智能加速器处理特征图的方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116861149A (zh) * 2023-09-05 2023-10-10 之江实验室 卷积运算的优化方法、装置及处理器
CN116861149B (zh) * 2023-09-05 2024-01-09 之江实验室 卷积运算的优化方法、装置及处理器

Also Published As

Publication number Publication date
CN115952388B (zh) 2023-05-30

Similar Documents

Publication Publication Date Title
CN106203619B (zh) 数据优化的神经网络遍历
US8970580B2 (en) Method, apparatus and computer-readable medium rendering three-dimensional (3D) graphics
US20180137414A1 (en) Convolution operation device and convolution operation method
US6630933B1 (en) Method and apparatus for compression and decompression of Z data
CN109597647B (zh) 数据处理方法及设备
US7898551B2 (en) Systems and methods for performing a bank swizzle operation to reduce bank collisions
CN104572845B (zh) 文件分发方法、装置、设备及系统
CN115952388A (zh) 基于图像数据处理的卷积运算方法、装置、处理器及介质
CN111279384B (zh) 图形流水线中的索引的压缩和解压缩
GB2521170A (en) Method of and apparatus for displaying an output surface in data processing systems
CN107092655A (zh) 用于Android宽屏设备中组图的循环展示方法及系统
CN104660951A (zh) 一种高清转超高清视频图像的超分辨率放大方法
JP2012242855A (ja) データ処理装置及びデータ処理方法
US11694367B2 (en) Compressing texture data on a per-channel basis
KR101635309B1 (ko) 패치 쉬프트를 이용한 텍스처 필터링 방법 및 장치
JP6210953B2 (ja) 画像処理装置および画像処理方法
Wu et al. A hybrid image retargeting approach via combining seam carving and grid warping
US10565677B2 (en) System and method for adaptive z-buffer compression in low power GPUS and improved memory operations with performance tracking
CN108564637B (zh) 几何模型排布方法及装置
CN114048847A (zh) 一种图神经网络数据缓存方法、装置、设备及存储介质
US20160371857A1 (en) Image compression and decompression
CN116152422A (zh) 一种光照数据的处理方法、装置及电子设备
US20220343146A1 (en) Method and system for temporal graph neural network acceleration
KR101688435B1 (ko) 블록 구조를 이용한 적분 영상 생성 장치 및 그 방법
CN114117274A (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