发布日期:2026-03-28 浏览次数:
导航:X技术最新专利计算;推算;计数设备的制造及其应用技术
1.本发明涉及一种异构众核架构上基于膨胀取数的卷积运算方法,属于深度学习技术领域。
2.卷积是深度学习中最重要的概念之一,整个卷积神经网络的训练和推理过程中,卷积操作占据了绝大部份的计算量,高性能计算平台通常要针对这类核心运算提供专门的解决方案。对于计算密集型的函数,比如深度学习中的卷积,如何及时地为强大的计算内核提供足够多的数据,并提高数据的复用性,是需要解决的问题。
3.卷积运算是人工智能cnn网络的核心运算,卷积运算每k次的数据有交叠但不重复,运算时取数规律不强(k为卷积运算核大小),这导致卷积运算取数频繁,如果不能巧妙利用卷积本身的特点,依照传统算法在异构众核处理器实例化,不仅不能充分发挥处理器的计算资源,还会对访存造成很大的压力。因此,卷积运算在充分利用异构众核处理器计算资源的同时,如何减小对系统访存的压力,也是需要解决的问题。
4.目前存在一些优化的卷积运算方法,例如im2col,是将卷积运算转化为矩阵乘,利用优化后的矩阵乘对卷积运算进行优化,但此方法需要将输入扩充为原来的k*k倍,会对系统内存造成额外的压力。异构众核处理器包含数量众多的从核,计算能力强大,访存带宽是系统的瓶颈,对于这种计算密集型的运算,这样的方法不仅不能发挥处理器的计算资源,反而会给系统带宽造成巨大的压力,优化效果不佳,因此,如何高效利用访存带宽并减小访存压力是充分发挥处理器性能的关键。
5.本发明的目的是提供一种异构众核架构上基于膨胀取数的卷积运算方法,其。
6.为达到上述目的,本发明采用的技术方案是:提供一种异构众核架构上基于膨胀取数的卷积运算方法,包括以下步骤:s1、输入input、权重weight、跨步stride,其中input为hi*wi,weight为k*k,根据input和weight的形状计算输出output的形状,得到ho*wo;s2、根据output的形状,在ho、wo维度上,根据每个核的逻辑编号,将卷积计算任务平均分配给众核,每个核处理大小为ho_block*wo_block的计算任务;s3、每个核根据自己任务大小,计算所需的输入大小hi_block* wo_block,hi_block=ho_block*stride+k-1,wi_block= wo_block*stride+k-1;s4、每个核通过得到的input(hi_block* wo_block)和weight,进行卷积计算;s5、重复步骤s3和s4,直到每个核自身分配到的任务计算完毕,输出output。
7.由于上述技术方案的运用,本发明与现有技术相比具有下列优点:本发明一种异构众核架构上基于膨胀取数的卷积运算方法,在不增加额外系统内存占用的前提下,通过膨胀取数,不但减小了系统的访存压力,而且提高了数据的复用性,
显著降低卷积计算在异构众核处理器上的内存访存需求,节约了内存带宽资源,同时能够充分运用众核的计算资源,充分发挥系统性能,切合了卷积计算密集型的特点,显著提高了卷积运算的性能。
8.附图1为二维卷积示意图;附图2为卷积输出所需数据来源示意图;附图3为三维卷积示意图;附图4为膨胀取数示意图;附图5为运算原理框图。
9.实施例:本发明提供一种异构众核架构上基于膨胀取数的卷积运算方法,具体包括以下步骤:s1、输入input、权重wePG电子平台网站ight、跨步stride,其中input为hi*wi,weight为k*k,根据input和weight的形状计算输出output的形状,得到ho*wo;s2、根据output的形状,在ho、wo维度上,根据每个核的逻辑编号,将卷积计算任务平均分配给众核,每个核处理大小为ho_block*wo_block的计算任务;s3、每个核根据自己任务大小,计算所需的输入大小hi_block* wo_block,hi_block=ho_block*stride+k-1,wi_block= wo_block*stride+k-1;s4、每个核通过得到的input(hi_block* wo_block)和weight,进行卷积计算;s5、重复步骤s3和s4,直到每个核自身分配到的任务计算完毕,输出output。
10.对上述实施例的进一步解释如下:卷积运算如图1所示:cpu通过输入数据块a和权重数据块b,完成输出数据块c的计算,c=axb,其中x表示卷积操作。
11.各个输出元素所需的输入数据来源如图2所示:卷积计算的输出有四个元素,分别用不同的颜色来表示,这四个元素分别由输入矩阵对应相同颜色区域的元素和权重计算而来,输出的元素由输入矩阵对应颜色区域的元素和权重计算得出,其他三色同理。
12.如图3所示:卷积运算的输入input:n*hi*wi*ci,权重weight:k*k*ci*co,输出output:n*ho*wo*co;nhwc格式的卷积运算,是以hi、wi二维卷积为基础,在ci维度上进行累加求和的过程。
13.本发明结合异构众核处理器的系统架构和卷积运算本身的特点,在不增加额外内存占用的前提下,通过冗余读取k个数据,一次访存,可进行k次计算,实现了将k次访存降低为1次访存,同时计算结果从1个增加为多个,提高了数据的复用性,大大减小卷积运算对系统的访存压力,同时充分发挥了处理器的计算资源,提高了卷积运算在异构众核处理器上的性能。
14.具体说明如下:1、膨胀取数:通常一个(ho_block=1且wo_block=1)计算结果需要取得k*k个输入数据(hi_block=wi_block=k),为了同时计算多个输出结果,令hi和wi维度分别多取1个数,此时hi_block=wi_block=k+1,这样就可以通过一次访存,得到2*2=4个计算结果,此时ho_block=wo_block=2;一般地,令hi和wi维度分别多取k-1个数,此时hi_block=wi_block=2k-1,这样就可以通过一次访存,得到k*k个计算结果,此时ho_block=wo_block=k;可见,只要增大hi_block和wi_block,就可以保证一次访存,得到更多的计算结果。
15.因此,本发明在保证内存空间够用的前提下,通过冗余获取数据,从而得到更大的hi_block和wi_block,来确保一次访存能够计算出更多的结果。
16.由图2可知,通过两次访存获取数据块1和数据块2,分别计算出两个结果,两个数据块之间存在6个数据的交叠,两次访存重复读取了6个相同的元素,对有限的带宽资源造成了浪费,如果能够一次性读取两个数据块(比读取一个数据块只多了3个元素),则减少了一次访存。
17.基于此种思想,本发明提出了膨胀取数的思想,膨胀取数示意图如下图4所示,将图2中两次访存获取的数据块1和数据块2合并为1次访存操作,数据块3和数据块4同理,这样,一次访存就可以计算出两个结果,原来需要四次访存,现在只需要两次访存,相比于之前一次访存计算一个结果,大大提升了计算的性能。
18.2、数据复用性:每个cpu取得的输入数据块hi_block*wi_block都具有如下特性:hi_block》k且wi_block》k,由于k*k个输入数据得到一个输出结果,此次计算所需要的数据有(k-1)*(k-1)个与前一次计算所需要的数据相同,因此,理论上hi_block和wi_block只要分别多取1个数,就能多得到多个计算输出。
19.因此,本发明在保证内存空间充足的情况下,尽可能多的保证hi_block*wi_block趋于更大,这样数据复用性就会更高,从而为卷积计算提供充分的数据,提高卷积运算的效率。
20.3、卷积运算:每个cpu根据自身取得的输入数据块a,权重数据块b,进行卷积计算,得到输出数据块c,并将数据块c写回主存。
22.上述步骤1和步骤2是本发明的核心思想,通过膨胀取数和最大化数据的复用性这两种策略,来减小卷积运算对访存的现实需求,减少访存次数并缓解了访存压力,同时又保证卷积运算能够得到充足的数据进行计算,充分发挥了众核的计算能力,提高卷积运算的效率。
23.采用上述一种异构众核架构上基于膨胀取数的卷积运算方法时,其在不增加额外系统内存占用的前提下,通过膨胀取数,不但减小了系统的访存压力,而且提高了数据的复用性,显著降低卷积计算在异构众核处理器上的内存访存需求,节约了内存带宽资源,同时能够充分运用众核的计算资源,充分发挥系统性能,切合了卷积计算密集型的特点,显著提高了卷积运算的性能。
24.为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:卷积:数学上,两个变量在某范围内相乘后求和的结果;在深度学习中,则指输入
30.上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
技术研发人员:袁欣辉 尹万旺 林蓉芬 魏迪 郑岩 王飞 孙浩男 孙强 史俊达 王丹云
1.计算机网络安全 2.计算机仿线.网络安全;物联网安全 、大数据安全 2.安全态势感知、舆情分析和控制 3.区块链及应用