一种基于NUMA系统特性优化Winograd卷积的方法及装置与流程

文档序号:34765589发布日期:2023-07-13 08:09阅读:39来源:国知局
一种基于NUMA系统特性优化Winograd卷积的方法及装置与流程

本发明属于面向深度学习应用的运行支撑系统领域,具体涉及一种基于numa系统特性优化winograd卷积的方法及装置。


背景技术:

1、近几年来,人工智能相关研究日趋火热,落地应用层出不穷。深度学习作为人工智能的核心技术,凭借深度神经网络模型在学术研究和现实应用中发挥着越来越重要的作用。在深度学习的训练和推理两类任务中,训练任务使用训练数据集在深度神经网络模型上迭代计算,并持续更新神经网络模型内部参数,从而使模型逐渐获得完成目标任务(图像识别、语义分割等任务)的能力;而推理任务则将标签未知的数据项在训练后的神经网络模型上执行一轮计算,从而得到该数据项的预测结果。训练和推理两类深度学习任务都需要大量计算资源以支撑神经网络模型计算,然而随着深度学习研究的深入,神经网络的层数不断增加,从alexnet的8层,到vgg的19层和goolenet的22层,甚至resnet更是深达152层,深度学习面临所需计算资源急剧增加的问题。因此,高效地利用有限的计算资源以尽可能地加速神经网络的计算有着非常重要的意义。

2、神经网络模型的计算加速已成为目前深度学习支撑系统领域最重要的研究方向之一。深度神经网络模型通常由多个网络层组成,其中卷积层是计算密度最大、使用最为频繁的层类型,占据了模型计算的大部分耗时,是优化模型计算性能的关键,因此优化卷积层的性能对深度神经网络模型的计算加速有重要的意义。winograd卷积是一个著名的卷积加速算法,利用多数硬件平台上乘法运算的开销比加法运算更大的特点,将卷积计算中的一部分乘法运算转变为加法运算,从而降低卷积层的计算复杂度,进而实现高性能的卷积计算。winograd卷积的基本原理来自一个基础的计算复杂性理论——最小滤波算法,在卷积计算中的应用方式具体表现为将输入数据和卷积核数据转换到winograd数据域,在此数据域中对转换后的输入数据和卷积核数据执行高维矩阵乘法运算,然后再将结果从该数据域转换回原始数据域,得到最终的输出数据,即卷积计算的结果。

3、winograd卷积在多cpu系统上面临着潜在的内存瓶颈问题。目前主流服务器大多含有多个物理cpu,各cpu间具有非一致内存访问(non-uniform memory access,numa)的特性,这一特性对winograd卷积分成多个步骤计算的特点有显著的影响。由于多cpu系统的每个cpu均含有独立的内存控制器,整个系统的物理内存因此被切割成分属多个numa结点的不同部分,cpu访问远程numa结点的内存带宽要显著低于本地numa结点。winograd卷积由于其多步骤分开执行的特点,在执行过程中会产生密集的内存访问,对内存带宽有很高的需求,因此会受到numa特性的不利影响。这一内存带宽问题使得winograd卷积在具备numa特性的多cpu系统上扩展性较差,导致其性能不理想。

4、因此,针对numa特性导致的内存带宽方面的问题,设计了一种既能利用现有存量庞大的服务器系统加速深度学习计算任务,又能进一步与gpu等硬件加速器一起构建高效的异构深度学习系统,是亟需解决的。


技术实现思路

1、针对现有技术的不足,本发明提供一种基于numa系统特性优化winograd卷积的方法,该方法提升了多cpu系统上winograd卷积的可扩展性以及加速深度神经网络卷积层的计算。

2、本发明是通过以下技术方案来实现的:

3、本发明第一个方面:一种基于numa系统特性优化winograd卷积的方法,该方法步骤如下:

4、(1)输入参数:输入卷积层的参数和cpu硬件参数,根据两者的参数进行配置winograd卷积的实现,得到完成配置参数的winograd卷积;

5、(2)构建内存数据布局:当步骤(1)完成配置参数的winograd卷积后,进行构建内部缓冲的内存数据布局,所述内存数据布局的设置包括原始数据和内部缓冲的内存数据布局,其中原始数据对向量化维度分块,将分块安排在原始数据内存数据布局的最内层;内部缓冲内存数据布局由内部到外部依次为cpu核心层的向量分块和寄存器分块,将cpu一级数据缓存层的一级缓存分块、cpu二级缓存层的二级缓存分块和内部缓冲数据划分成二级缓存分块的分块数;

6、(3)确定数据分块大小:步骤(2)完成数据布局的构建,其中内部缓冲的数据布局决定winograd卷积计算的各层数据分块,进而进行数据分块大小的确定;

7、(4)执行winograd卷积计算:根据步骤(2)确定的内存数据布局和步骤(3)确定的数据分块大小,执行步骤(1)所配置参数的winograd卷积的计算。

8、进一步地,所述步骤(1)中输入参数为输入卷积层的参数和cpu硬件参数。

9、进一步地,所述步骤(1)中卷积层的参数包含输入、输出和卷积核的大小。

10、具体地,所述步骤(1)中cpu硬件参数包含cpu数量、可用向量寄存器个数、向量指令宽度和各级缓存大小。

11、进一步地,所述步骤(2)具体为,原始数据包括输入数据mb*k*ih*iw,卷积核数据m*k*kh*kw,输出数据mb*m*oh*ow,从各数据的共有维度中挑选向量化维度以及对向量化后的各数据进行布局,确保向量化维度在内存地址上连续;对于内部缓冲,根据存储层次结构将各维度输出通道m、输入通道k、winograd卷积块数n和winograd卷积块大小alpha*alpha分别划分成多种分块,这些分块构成内部缓冲对应存储层次结构的数据分块,所述存储层次结构与内部缓冲的数据布局一一对应,其中每一层都是下层的子集,每一层是内部缓冲在对应存储层次中的数据分块;所述数据分块为内部缓冲,其包括转换后输入和未转换输出,即输出转换之后和输出转换之前。

12、进一步地,所述步骤(3)具体为,为利用cpu的多个可并行物理核心,每个数据分块在cpu各物理核心上独立地执行计算,其大小根据cpu内部高速缓存的容量确定,将每个数据分块都确定为二级缓存分块,根据cpu二级缓存大小确定二级缓存分块的大小,也就是数据分块的大小;通过缓存分块搜索的方式,以二级缓存的容量为基础确定维度n的二级缓存分块的大小,其在数据布局中用nblock表示。

13、具体地,所述缓存分块搜索,具体为,采用小范围参数空间搜索的方法,根据二级缓存容量确定二级缓存分块大小的上限max_size,遍历1到max_size之间对winograd卷积性能最优的nblock的取值并记录下来,作为步骤(1)所配置参数的winograd卷积的最佳数据分块的大小,保存在本地数据库中;在后续执行中匹配到步骤(1)所配置参数的winograd卷积时直接采用这一数据分块大小,避免重复搜索。

14、进一步地,所述步骤(3)中将winograd卷积执行中的每个数据分块都确定为二级缓存分块,具体地,输入数据的每个二级缓存分块被读取到cpu硬件内部高速缓存,执行步骤(1)所配置参数的winograd卷积的输入转换步骤,得到转换后输入的一个二级缓存分块;然后进行转换后输入的二级缓存分块与转换后卷积核执行步骤(1)所配置参数的winograd卷积的矩阵乘法步骤,得到未转换输出的一个二级缓存分块;最后未转换输出的二级缓存分块执行步骤(1)所配置参数的winograd卷积的输出转换步骤,并将得到的输出数据的二级缓存分块写回到内存中。

15、进一步地,所述步骤(4)具体为,将输入数据进行分块,每个数据分块读取到cpu硬件内部高速缓存中,依次执行输入转换步骤、矩阵乘法步骤和输出转换步骤,然后再将数据分块写回到相对应的输出数据中。

16、本发明第二个方面,一种基于numa系统特性优化winograd卷积装置,该装置包括以下模块:

17、输入参数模块:输入卷积层的参数和cpu硬件参数,根据两者的参数进行配置winograd卷积的实现,得到完成配置参数的winograd卷积;

18、构建内存数据布局模块:当完成配置参数的winograd卷积后,进行构建内部缓冲的内存数据布局,所述内存数据布局的设置包括原始数据和内部缓冲的内存数据布局,其中原始数据对向量化维度分块,将分块安排在原始数据内存数据布局的最内层;内部缓冲内存数据布局由内部到外部依次为cpu核心层的向量分块和寄存器分块,cpu一级数据缓存的一级缓存分块、cpu二级缓存层的二级缓存分块和内部缓冲数据划分成二级缓存分块的分块数;

19、确定数据分块大小模块:完成数据布局的构建,其中内部缓冲的数据布局决定winograd卷积计算的各层数据分块,进而进行数据分块大小的确定;

20、执行winograd卷积计算模块:根据确定的内存数据布局和确定的数据分块大小,执行所配置参数的winograd卷积的计算。

21、本发明的有益效果如下:

22、(1)针对numa系统的内存带宽瓶颈进行优化

23、本发明通过采取数据分块内执行winograd卷积各步骤的计算模式替代原本多步骤分开执行的模式,能够减少不必要的内存访问,减轻内存系统的带宽压力,从而避免多cpu系统因远程内存访问带宽低于本地内存访问的numa特性导致的内存瓶颈问题的影响,优化winograd卷积的扩展性。

24、(2)基于cpu微架构特征的优化

25、本发明在新设计的计算模式的基础上,对winograd卷积采取了多种针对cpu微架构特征的优化措施,以发挥出优化后的计算模式在多cpu系统上的优势。本发明提出的这些优化手段是winograd卷积利用cpu核心计算能力的保障,具体地,通过内存数据布局的设计和矩阵乘法步骤的设计优化数据分块的访存和计算,以及利用cache分块搜索技术确定数据分块的大小以适配cpu硬件内部缓存。

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