CN116401502A - 一种基于NUMA系统特性优化Winograd卷积的方法及装置 - Google Patents
一种基于NUMA系统特性优化Winograd卷积的方法及装置 Download PDFInfo
- Publication number
- CN116401502A CN116401502A CN202310680737.1A CN202310680737A CN116401502A CN 116401502 A CN116401502 A CN 116401502A CN 202310680737 A CN202310680737 A CN 202310680737A CN 116401502 A CN116401502 A CN 116401502A
- Authority
- CN
- China
- Prior art keywords
- data
- convolution
- parameters
- winograd convolution
- block
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000004364 calculation method Methods 0.000 claims abstract description 52
- 238000006243 chemical reaction Methods 0.000 claims abstract description 33
- 239000011159 matrix material Substances 0.000 claims abstract description 22
- 239000000872 buffer Substances 0.000 claims description 74
- 239000010410 layer Substances 0.000 claims description 57
- 238000005192 partition Methods 0.000 claims description 21
- 238000010276 construction Methods 0.000 claims description 9
- 230000003139 buffering effect Effects 0.000 claims description 8
- 239000012792 core layer Substances 0.000 claims description 6
- 238000000638 solvent extraction Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 14
- 238000013461 design Methods 0.000 description 11
- 238000013135 deep learning Methods 0.000 description 9
- 238000003062 neural network model Methods 0.000 description 8
- 230000000903 blocking effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 238000011160 research Methods 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Computer Hardware Design (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于NUMA系统特性优化Winograd卷积的方法及装置,该方法首先根据输入参数构建内存数据布局;采用缓存分块搜索方法确定数据分块大小;利用CPU的多核心执行Winograd卷积计算:将数据分块读取到CPU高速缓存,依次执行输入转换、矩阵乘法和输出转换,再将数据分块写回内存。进一步优化Winograd卷积的内存访问从而提升其在NUMA系统上的性能表现。
Description
技术领域
本发明属于面向深度学习应用的运行支撑系统领域,具体涉及一种基于NUMA系统特性优化Winograd卷积的方法及装置。
背景技术
近几年来,人工智能相关研究日趋火热,落地应用层出不穷。深度学习作为人工智能的核心技术,凭借深度神经网络模型在学术研究和现实应用中发挥着越来越重要的作用。在深度学习的训练和推理两类任务中,训练任务使用训练数据集在深度神经网络模型上迭代计算,并持续更新神经网络模型内部参数,从而使模型逐渐获得完成目标任务(图像识别、语义分割等任务)的能力;而推理任务则将标签未知的数据项在训练后的神经网络模型上执行一轮计算,从而得到该数据项的预测结果。训练和推理两类深度学习任务都需要大量计算资源以支撑神经网络模型计算,然而随着深度学习研究的深入,神经网络的层数不断增加,从AlexNet的8层,到VGG的19层和GooLeNet的22层,甚至ResNet更是深达152层,深度学习面临所需计算资源急剧增加的问题。因此,高效地利用有限的计算资源以尽可能地加速神经网络的计算有着非常重要的意义。
神经网络模型的计算加速已成为目前深度学习支撑系统领域最重要的研究方向之一。深度神经网络模型通常由多个网络层组成,其中卷积层是计算密度最大、使用最为频繁的层类型,占据了模型计算的大部分耗时,是优化模型计算性能的关键,因此优化卷积层的性能对深度神经网络模型的计算加速有重要的意义。Winograd卷积是一个著名的卷积加速算法,利用多数硬件平台上乘法运算的开销比加法运算更大的特点,将卷积计算中的一部分乘法运算转变为加法运算,从而降低卷积层的计算复杂度,进而实现高性能的卷积计算。Winograd卷积的基本原理来自一个基础的计算复杂性理论——最小滤波算法,在卷积计算中的应用方式具体表现为将输入数据和卷积核数据转换到Winograd数据域,在此数据域中对转换后的输入数据和卷积核数据执行高维矩阵乘法运算,然后再将结果从该数据域转换回原始数据域,得到最终的输出数据,即卷积计算的结果。
Winograd卷积在多CPU系统上面临着潜在的内存瓶颈问题。目前主流服务器大多含有多个物理CPU,各CPU间具有非一致内存访问(Non-Uniform Memory Access,NUMA)的特性,这一特性对Winograd卷积分成多个步骤计算的特点有显著的影响。由于多CPU系统的每个CPU均含有独立的内存控制器,整个系统的物理内存因此被切割成分属多个NUMA结点的不同部分,CPU访问远程NUMA结点的内存带宽要显著低于本地NUMA结点。Winograd卷积由于其多步骤分开执行的特点,在执行过程中会产生密集的内存访问,对内存带宽有很高的需求,因此会受到NUMA特性的不利影响。这一内存带宽问题使得Winograd卷积在具备NUMA特性的多CPU系统上扩展性较差,导致其性能不理想。
因此,针对NUMA特性导致的内存带宽方面的问题,设计了一种既能利用现有存量庞大的服务器系统加速深度学习计算任务,又能进一步与GPU等硬件加速器一起构建高效的异构深度学习系统,是亟需解决的。
发明内容
针对现有技术的不足,本发明提供一种基于NUMA系统特性优化Winograd卷积的方法,该方法提升了多CPU系统上Winograd卷积的可扩展性以及加速深度神经网络卷积层的计算。
本发明是通过以下技术方案来实现的:
本发明第一个方面:一种基于NUMA系统特性优化Winograd卷积的方法,该方法步骤如下:
(1)输入参数:输入卷积层的参数和CPU硬件参数,根据两者的参数进行配置Winograd卷积的实现,得到完成配置参数的Winograd卷积;
(2)构建内存数据布局:当步骤(1)完成配置参数的Winograd卷积后,进行构建内部缓冲的内存数据布局,所述内存数据布局的设置包括原始数据和内部缓冲的内存数据布局,其中原始数据对向量化维度分块,将分块安排在原始数据内存数据布局的最内层;内部缓冲内存数据布局由内部到外部依次为CPU核心层的向量分块和寄存器分块,将CPU一级数据缓存层的一级缓存分块、CPU二级缓存层的二级缓存分块和内部缓冲数据划分成二级缓存分块的分块数;
(3)确定数据分块大小:步骤(2)完成数据布局的构建,其中内部缓冲的数据布局决定Winograd卷积计算的各层数据分块,进而进行数据分块大小的确定;
(4)执行Winograd卷积计算:根据步骤(2)确定的内存数据布局和步骤(3)确定的数据分块大小,执行步骤(1)所配置参数的Winograd卷积的计算。
进一步地,所述步骤(1)中输入参数为输入卷积层的参数和CPU硬件参数。
进一步地,所述步骤(1)中卷积层的参数包含输入、输出和卷积核的大小。
具体地,所述步骤(1)中CPU硬件参数包含CPU数量、可用向量寄存器个数、向量指令宽度和各级缓存大小。
进一步地,所述步骤(2)具体为,原始数据包括输入数据MB*K*IH*IW,卷积核数据M*K*KH*KW,输出数据MB*M*OH*OW,从各数据的共有维度中挑选向量化维度以及对向量化后的各数据进行布局,确保向量化维度在内存地址上连续;对于内部缓冲,根据存储层次结构将各维度输出通道M、输入通道K、Winograd卷积块数N和Winograd卷积块大小alpha*alpha分别划分成多种分块,这些分块构成内部缓冲对应存储层次结构的数据分块,所述存储层次结构与内部缓冲的数据布局一一对应,其中每一层都是下层的子集,每一层是内部缓冲在对应存储层次中的数据分块;所述数据分块为内部缓冲,其包括转换后输入和未转换输出,即输出转换之后和输出转换之前。
进一步地,所述步骤(3)具体为,为利用CPU的多个可并行物理核心,每个数据分块在CPU各物理核心上独立地执行计算,其大小根据CPU内部高速缓存的容量确定,将每个数据分块都确定为二级缓存分块,根据CPU二级缓存大小确定二级缓存分块的大小,也就是数据分块的大小;通过缓存分块搜索的方式,以二级缓存的容量为基础确定维度N的二级缓存分块的大小,其在数据布局中用Nblock表示。
具体地,所述缓存分块搜索,具体为,采用小范围参数空间搜索的方法,根据二级缓存容量确定二级缓存分块大小的上限MAX_SIZE,遍历1到MAX_SIZE之间对Winograd卷积性能最优的Nblock的取值并记录下来,作为步骤(1)所配置参数的Winograd卷积的最佳数据分块的大小,保存在本地数据库中;在后续执行中匹配到步骤(1)所配置参数的Winograd卷积时直接采用这一数据分块大小,避免重复搜索。
进一步地,所述步骤(3)中将Winograd卷积执行中的每个数据分块都确定为二级缓存分块,具体地,输入数据的每个二级缓存分块被读取到CPU硬件内部高速缓存,执行步骤(1)所配置参数的Winograd卷积的输入转换步骤,得到转换后输入的一个二级缓存分块;然后进行转换后输入的二级缓存分块与转换后卷积核执行步骤(1)所配置参数的Winograd卷积的矩阵乘法步骤,得到未转换输出的一个二级缓存分块;最后未转换输出的二级缓存分块执行步骤(1)所配置参数的Winograd卷积的输出转换步骤,并将得到的输出数据的二级缓存分块写回到内存中。
进一步地,所述步骤(4)具体为,将输入数据进行分块,每个数据分块读取到CPU硬件内部高速缓存中,依次执行输入转换步骤、矩阵乘法步骤和输出转换步骤,然后再将数据分块写回到相对应的输出数据中。
本发明第二个方面,一种基于NUMA系统特性优化Winograd卷积装置,该装置包括以下模块:
输入参数模块:输入卷积层的参数和CPU硬件参数,根据两者的参数进行配置Winograd卷积的实现,得到完成配置参数的Winograd卷积;
构建内存数据布局模块:当完成配置参数的Winograd卷积后,进行构建内部缓冲的内存数据布局,所述内存数据布局的设置包括原始数据和内部缓冲的内存数据布局,其中原始数据对向量化维度分块,将分块安排在原始数据内存数据布局的最内层;内部缓冲内存数据布局由内部到外部依次为CPU核心层的向量分块和寄存器分块,CPU一级数据缓存的一级缓存分块、CPU二级缓存层的二级缓存分块和内部缓冲数据划分成二级缓存分块的分块数;
确定数据分块大小模块:完成数据布局的构建,其中内部缓冲的数据布局决定Winograd卷积计算的各层数据分块,进而进行数据分块大小的确定;
执行Winograd卷积计算模块:根据确定的内存数据布局和确定的数据分块大小,执行所配置参数的Winograd卷积的计算。
本发明的有益效果如下:
(1)针对NUMA系统的内存带宽瓶颈进行优化
本发明通过采取数据分块内执行Winograd卷积各步骤的计算模式替代原本多步骤分开执行的模式,能够减少不必要的内存访问,减轻内存系统的带宽压力,从而避免多CPU系统因远程内存访问带宽低于本地内存访问的NUMA特性导致的内存瓶颈问题的影响,优化Winograd卷积的扩展性。
(2)基于CPU微架构特征的优化
本发明在新设计的计算模式的基础上,对Winograd卷积采取了多种针对CPU微架构特征的优化措施,以发挥出优化后的计算模式在多CPU系统上的优势。本发明提出的这些优化手段是Winograd卷积利用CPU核心计算能力的保障,具体地,通过内存数据布局的设计和矩阵乘法步骤的设计优化数据分块的访存和计算,以及利用cache分块搜索技术确定数据分块的大小以适配CPU硬件内部缓存。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例的基于NUMA特性优化的Winograd卷积的计算方法图;
图2为本发明实施例的主要流程图;
图3为本发明实施例的数据布局层次示意图;
图4为本发明实施例的数据分块计算过程示意图;
图5为本发明实施例的矩阵乘法步骤示意图;
图6为本发明的系统流程图。
具体实施方式
下面结合附图及具体实施例对本发明进行详细说明。
如图1和图2所示,一种基于NUMA系统特性优化Winograd卷积的方法,该方法步骤如下:
(1)输入参数:输入卷积层的参数和CPU硬件参数,根据两者的参数进行配置Winograd卷积的实现,得到完成配置参数的Winograd卷积;
(2)构建内存数据布局:当步骤(1)完成配置参数的Winograd卷积后,进行构建内部缓冲的内存数据布局,所述内存数据布局的设置包括原始数据和内部缓冲的内存数据布局,其中原始数据对向量化维度分块,将分块安排在原始数据内存数据布局的最内层;内部缓冲内存数据布局由内部到外部依次为CPU核心层的向量分块和寄存器分块,将CPU一级数据缓存层的一级缓存分块、CPU二级缓存层的二级缓存分块和内部缓冲数据划分成二级缓存分块的分块数;
(3)确定数据分块大小:步骤(2)完成数据布局的构建,其中内部缓冲的数据布局决定Winograd卷积计算的各层数据分块,进而进行数据分块大小的确定;
(4)执行Winograd卷积计算:根据步骤(2)确定的内存数据布局和步骤(3)确定的数据分块大小,执行步骤(1)所配置参数的Winograd卷积的计算。
本发明实施方式的主要流程如图3所示。首先输入卷积层的参数和CPU硬件参数,包括输入、输出和卷积核的大小,CPU数量,可用向量寄存器个数、向量指令宽度以及各级cache大小等,根据这些参数配置Winograd卷积实现的细节。然后构建内部缓冲的内存数据布局、执行cache分块搜索以确定数据分块的大小。最后在CPU核心内对各个数据分块执行Winograd卷积计算,包括输入转换、矩阵乘法和输出转换,逐个数据分块进行直到完成全部数据分块的卷积计算。
本发明的实施关键在于内存数据布局的构建、cache分块搜索的执行和数据分块的计算三个主要过程,下面分别阐述这三个过程的实施方式。
(1)内存数据布局的构建
本发明分别为原始数据和内部缓冲数据设计相应的内存数据布局,详细的构建过程如下。如图2所示,原始数据为输入数据、输出数据和卷积核数据,内部缓冲为虚线框内的数据分块,包括转换后输入(输出转换之后)、未转换输出(输出转换之前)。
本发明为Winograd卷积设计的内存数据布局具体如下表所示:
表1
表中所用符号的含义如下表所示:
表2
在原始数据中,输入数据、卷积核数据和输出数据的内存数据布局根据各转换步骤的执行过程进行设计,其重点在于对向量化维度进行向量化分块,然后将向量分块作为数据布局的最内层维度。在Winograd数据域即内部缓冲中,本发明在三种内部缓冲的内存数据布局设计中都将alpha*alpha维度置于紧靠向量分块之外的位置,而非与原Winograd卷积实现一样将该维度作为并行计算维度并置于数据布局的最外层,使得数据分块各步骤的计算都以alpha*alpha维度为单位,便于维持数据分块执行各步骤时访存的一致性。
原始数据的各维度分别为,输入数据MB*K*IH*IW,卷积核数据M*K*KH*KW,输出数据MB*M*OH*OW,为适应Winograd卷积各步骤的向量化计算,需要选择向量化维度并将确保该维度在内存地址上连续。向量化维度从各数据的共有维度中挑选,因此输入数据的向量化维度为K,向量化后的数据布局为MB*[K/VLEN]*IH*IW*VLEN,输出数据的向量化维度为M,向量化后的数据布局为MB*[M/VLEN]*OH*OW*VLEN,卷积核数据的向量化维度与其他二者保持一致为维度M与维度K,向量化后的数据布局为[M/VLEN]*[K/VLEN]*KH*KW*VLEN*VLEN。其中VLEN作为向量指令宽度,也是向量分块的大小,在内存数据布局中安排在最内层。
内部缓冲的内存数据布局则针对CPU的存储层次结构和计算过程的访存局部性需求,将各维度的向量分块、寄存器分块、cache分块等进行组合,以取得理想的性能。维度输出通道M、输入通道K和Winograd卷积分块数N分别划分成多种分块,通过这些分块对内部缓冲的数据进行切割,使得被频繁使用的数据驻留在更靠近CPU核心计算单元的缓存之中。本发明基于针对多CPU系统NUMA特性而设计的Winograd卷积的新计算模式,构建内部缓冲的内存数据布局,最内层是向量分块KsimdBlock和MsimdBlock,然后是寄存器分块alpha*alpha(NregBlock和MregBlock取值恒为1,寄存器分块的功能被取代),接下来是cache分块Kblock、Mblock和Nblock,最后是分块数MnbBlock 、NnbBlock和KnbBlock。
内部缓冲的内存数据布局完成构建之后,各维度的分块的组合在逻辑上于存储层次结构一一对应,如图4所示。其中,高速缓存L2 cache以上的存储层次对应的内存数据布局所定义的数据分块,即为图2虚线框内的数据分块,也就是本发明所设计Winograd卷积执行的数据分块。由于本发明采用读取数据分块、执行计算、写回数据分块的计算模式,内部缓冲的数据并不需要保存到物理内存,因此图中虚线框内的内存数据并非实际存在于物理内存中,只是与这一层次的内存数据布局在逻辑上相对应。数据分块保存在L2 cache中,因此相应的内存数据布局在逻辑上与L2 cache对应;同样地,L1数据cache、CPU核心(寄存器)分别对应不同层次的数据布局。
(2)确定数据分块大小
数据分块是本发明基于NUMA特性设计的Winograd卷积执行计算的基本单位,其大小对应用整体性能有着非常关键的影响。数据分块是图2所示本发明新设计的Winograd卷积的计算模式中位于虚线框(表示CPU内部高速缓存)内计算的数据载体,在计算过程中数据分块被保存在图4左侧所示的存储层次结构L2cache以上的部分中,其内部的数据排列与图4右侧的内存数据布局对应。
为了利用CPU的多个可并行的物理核心,每个数据分块在CPU各物理核心上独立地执行计算,其大小根据CPU内部高速缓存的容量确定。在多数的x86架构CPU中,存在三个层次的高速缓存cache,其中L1数据cache和L2 cache是每个核心独占的高速缓存,而L3cache则是全部物理核心共享的;因此L2cache通常是多核心并行计算的基本单位。
本发明采用数据分块内执行Winograd卷积各步骤的计算模式,通过cache分块搜索的方式,以L2 cache的容量为基础确定数据分块的大小。维度N的L2 cache分块Nblock决定了数据分块的大小,本发明对其采用小范围参数空间搜索的方法,以取得一个对Winograd卷积整体最优的值。Cache分块搜索的具体实施方式如下:
根据L2 cache容量,确定分块大小的上限MAX_SIZE,该数值通常为L2 cache所能容纳的L1 cache分块数的两到三倍;然后对维度N的cache分块Nblock进行搜索,遍历1到MAX_SIZE之间的取值所能取得的Winograd卷积的性能,将性能最优的那一个对应的Nblock的取值记录下来,作为当前卷积参数的最佳数据分块的大小,并保存在本地数据库当中,在后续的执行中若匹配到该卷积参数可以直接采用这一数据分块大小,避免重复的搜索。
(3)执行Winograd卷积计算
本发明基于多CPU系统的NUMA特性设计Winograd卷积,采用了不同于以往的计算模式,即图1虚线框内所示过程。图4更具体地描述了这个过程,输入数据根据之前步骤确定的内存数据布局和数据分块的大小进行分块,每个数据分块读取到CPU硬件内部高速缓存中,依次执行输入转骤、矩阵乘法步骤和输出转换步骤,然后再将数据分块写回到相对应的输出数据中。所有的数据分块都经历这一过程后即完成Winograd卷积计算。
在数据分块执行的三个步骤中,矩阵乘法对整体性能有很关键的影响,因此本发明对矩阵乘法步骤进行精心的设计和调优。矩阵乘法步骤将经过输入转换的数据分块和转换后的卷积核相乘,由于所涉及的数据都驻留在CPU硬件内部高速缓存中,因此其计算过程的大多数访存都会落在CPU内部。
本发明所设计的Winograd卷积的矩阵乘法步骤的具体过程如下所示:
表3
内存数据布局的NnbBlock作为数据分块的总块数,在矩阵乘法步骤中充当多线程并行计算的任务数,以利用CPU的多个物理核心,因此没有出现在上述算法所示的数据分块的计算过程中。
最内层的计算采用向量指令执行,通过VFMA指令(Vector Fused Multiply Add)对加载到512位向量寄存器中的数据执行乘加融合操作。维度M和N的寄存器分块MregBlock和NregBlock取值恒为1,其作为寄存器分块的功能性被alpha*alpha维度取代。由于alpha*alpha维度的大小通常会超过多数服务器CPU的可用向量寄存器数量,因此采用alpha*alpha/2作为寄存器分块大小。Mblock和Kblock分别是M维度和K维度的L1 cache分块,Mblock采用其取值空间中的最大值,而Kblock则恒取值为1。Nblock是N维度的L2 cache分块,通过前述的cache分块搜索的方式确定其大小。
矩阵乘法步骤的循环顺序是基于CPU各层次并行计算能力和存储层次结构的综合考量而设计的,该步骤的设计与内存数据布局的设计相辅相成,共同优化访存局部性,从而改进Winograd卷积数据分块的计算性能。各数据分块在CPU的多个物理核心上并行地执行,将本发明设计的计算模式在内存带宽方面的优势落实到具体实现中,避免了多CPU系统NUMA特性导致的内存瓶颈问题的影响,最终实现高效的卷积计算。
图5更具体地描述了图4中的矩阵乘法步骤。矩阵乘法步骤将经过输入转换的数据分块和转换后的卷积核数据相乘,得到未经过输出转换的数据分块。最内层的操作采用向量计算,通过VFMA指令对加载到512位的zmm向量寄存器中的数据执行乘加融合运算。在矩阵乘法中,向量分块为M维度的MsimdBlock,该分块同时也作为输出转换步骤的向量分块;而输入转换步骤的向量分块KsimdBlock在矩阵乘法步骤中由于所处维度K为矩阵乘法的内部维度,因此被安排在寄存器分块之外的位置,大致相当于L1 cache分块需要考虑的一个内部附加的固定参数。
alpha*alpha维度采取了寄存器分块,取代了原本维度M和N的寄存器分块MregBlock和NregBlock,因此MregBlock和NregBlock取值衡为1。由于本发明所采用的Winograd卷积中alpha取值为6,维度alpha*alpha值即为36,超出了多数服务器CPU的可用向量寄存器的数量32,因此采用36除以2的数值即18作为寄存器分块的大小。矩阵乘法的循环层次从内到外依次是alpha*alpha/2、NregBlock、KsimdBlock、Kblock、2、Nblock、MregBlock、Mblock、KnbBlock和MnbBlock,而NnbBlock则为数据分块的块数,作为多线程处理众多数据分块的并行维度。
如图6所示,本发明还提供了一种基于NUMA系统特性优化Winograd卷积装置,该装置包括以下模块:
输入参数模块:输入卷积层的参数和CPU硬件参数,根据两者的参数进行配置Winograd卷积的实现,得到完成配置参数的Winograd卷积;
构建内存数据布局模块:当完成配置参数的Winograd卷积后,进行构建内部缓冲的内存数据布局,所述内存数据布局的设置包括原始数据和内部缓冲的内存数据布局,其中原始数据对向量化维度分块,将分块安排在原始数据内存数据布局的最内层;内部缓冲内存数据布局由内部到外部依次为CPU核心层的向量分块和寄存器分块,CPU一级数据缓存的一级缓存分块、CPU二级缓存层的二级缓存分块和内部缓冲数据划分成二级缓存分块的分块数;
确定数据分块大小模块:完成数据布局的构建,其中内部缓冲的数据布局决定Winograd卷积计算的各层数据分块,进而进行数据分块大小的确定;
执行Winograd卷积计算模块:根据确定的内存数据布局和确定的数据分块大小,执行所配置参数的Winograd卷积的计算。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于NUMA系统特性优化Winograd卷积的方法,其特征在于,包括如下步骤:
(1)输入参数:输入卷积层的参数和CPU硬件参数,根据两者的参数进行配置Winograd卷积的实现,得到完成配置参数的Winograd卷积;
(2)构建内存数据布局:当步骤(1)完成配置参数的Winograd卷积后,进行构建内部缓冲的内存数据布局,所述内存数据布局的设置包括原始数据和内部缓冲的内存数据布局,其中原始数据对向量化维度分块,将分块安排在原始数据内存数据布局的最内层;内部缓冲内存数据布局由内部到外部依次为CPU核心层的向量分块和寄存器分块,将CPU一级数据缓存层的一级缓存分块、CPU二级缓存层的二级缓存分块和内部缓冲数据划分成二级缓存分块的分块数;
(3)确定数据分块大小:步骤(2)完成数据布局的构建,其中内部缓冲的数据布局决定Winograd卷积计算的各层数据分块,进而进行数据分块大小的确定;
(4)执行Winograd卷积计算:根据步骤(2)确定的内存数据布局和步骤(3)确定的数据分块大小,执行步骤(1)所配置参数的Winograd卷积的计算。
2.根据权利要求1所述的一种基于NUMA系统特性优化Winograd卷积的方法,其特征在于,所述步骤(1)中输入参数为输入卷积层的参数和CPU硬件参数。
3.根据权利要求1所述的一种基于NUMA系统特性优化Winograd卷积的方法,其特征在于,所述步骤(1)中卷积层的参数包含输入、输出和卷积核的大小。
4.根据权利要求1所述的一种基于NUMA系统特性优化Winograd卷积的方法,其特征在于,所述步骤(1)中CPU硬件参数包含CPU数量、可用向量寄存器个数、向量指令宽度和各级缓存大小。
5.根据权利要求1所述的一种基于NUMA系统特性优化Winograd卷积的方法,其特征在于,所述步骤(2)具体为,原始数据包括输入数据MB*K*IH*IW,卷积核数据M*K*KH*KW,输出数据MB*M*OH*OW,从各数据的共有维度中挑选向量化维度以及对向量化后的各数据进行布局,确保向量化维度在内存地址上连续;对于内部缓冲,根据存储层次结构将各维度输出通道M、输入通道K、Winograd卷积块数N和Winograd卷积块大小alpha*alpha分别划分成多种分块,这些分块构成内部缓冲对应存储层次结构的数据分块,所述存储层次结构与内部缓冲的数据布局一一对应,其中每一层都是下层的子集,每一层是内部缓冲在对应存储层次中的数据分块;所述数据分块为内部缓冲,其包括转换后输入和未转换输出,即输出转换之后和输出转换之前。
6.根据权利要求1所述的一种基于NUMA系统特性优化Winograd卷积的方法,其特征在于,所述步骤(3)具体为,为利用CPU的多个可并行物理核心,每个数据分块在CPU各物理核心上独立地执行计算,其大小根据CPU内部高速缓存的容量确定,将每个数据分块都确定为二级缓存分块,根据CPU二级缓存大小确定二级缓存分块的大小,也就是数据分块的大小;通过缓存分块搜索的方式,以二级缓存的容量为基础确定维度N的二级缓存分块的大小,其在数据布局中用Nblock表示。
7.根据权利要求6所述的一种基于NUMA系统特性优化Winograd卷积的方法,其特征在于,所述缓存分块搜索,具体为,采用小范围参数空间搜索的方法,根据二级缓存容量确定二级缓存分块大小的上限MAX_SIZE,遍历1到MAX_SIZE之间对Winograd卷积性能最优的Nblock的取值并记录下来,作为步骤(1)所配置参数的Winograd卷积的最佳数据分块的大小,保存在本地数据库中;在后续执行中匹配到步骤(1)所配置参数的Winograd卷积时直接采用这一数据分块大小,避免重复搜索。
8.根据权利要求1所述的一种基于NUMA系统特性优化Winograd卷积的方法,其特征在于,所述步骤(3)中将Winograd卷积执行中的每个数据分块都确定为二级缓存分块,具体地,输入数据的每个二级缓存分块被读取到CPU硬件内部高速缓存,执行步骤(1)所配置参数的Winograd卷积的输入转换步骤,得到转换后输入的一个二级缓存分块;然后进行转换后输入的二级缓存分块与转换后卷积核执行步骤(1)所配置参数的Winograd卷积的矩阵乘法步骤,得到未转换输出的一个二级缓存分块;最后未转换输出的二级缓存分块执行步骤(1)所配置参数的Winograd卷积的输出转换步骤,并将得到的输出数据的二级缓存分块写回到内存中。
9.根据权利要求1所述的一种基于NUMA系统特性优化Winograd卷积的方法,其特征在于,所述步骤(4)具体为,将输入数据进行分块,每个数据分块读取到CPU硬件内部高速缓存中,依次执行输入转换步骤、矩阵乘法步骤和输出转换步骤,然后再将数据分块写回到相对应的输出数据中。
10.一种基于NUMA系统特性优化Winograd卷积装置,其特征在于,该装置包括以下模块:
输入参数模块:输入卷积层的参数和CPU硬件参数,根据两者的参数进行配置Winograd卷积的实现,得到完成配置参数的Winograd卷积;
构建内存数据布局模块:当完成配置参数的Winograd卷积后,进行构建内部缓冲的内存数据布局,所述内存数据布局的设置包括原始数据和内部缓冲的内存数据布局,其中原始数据对向量化维度分块,将分块安排在原始数据内存数据布局的最内层;内部缓冲内存数据布局由内部到外部依次为CPU核心层的向量分块和寄存器分块,CPU一级数据缓存的一级缓存分块、CPU二级缓存层的二级缓存分块和内部缓冲数据划分成二级缓存分块的分块数;
确定数据分块大小模块:完成数据布局的构建,其中内部缓冲的数据布局决定Winograd卷积计算的各层数据分块,进而进行数据分块大小的确定;
执行Winograd卷积计算模块:根据确定的内存数据布局和确定的数据分块大小,执行所配置参数的Winograd卷积的计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310680737.1A CN116401502B (zh) | 2023-06-09 | 2023-06-09 | 一种基于NUMA系统特性优化Winograd卷积的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310680737.1A CN116401502B (zh) | 2023-06-09 | 2023-06-09 | 一种基于NUMA系统特性优化Winograd卷积的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116401502A true CN116401502A (zh) | 2023-07-07 |
CN116401502B CN116401502B (zh) | 2023-11-03 |
Family
ID=87008064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310680737.1A Active CN116401502B (zh) | 2023-06-09 | 2023-06-09 | 一种基于NUMA系统特性优化Winograd卷积的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116401502B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116861149A (zh) * | 2023-09-05 | 2023-10-10 | 之江实验室 | 卷积运算的优化方法、装置及处理器 |
CN116881618A (zh) * | 2023-08-25 | 2023-10-13 | 之江实验室 | 通用矩阵乘计算优化方法、装置及处理器 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250350A (zh) * | 2016-07-28 | 2016-12-21 | 浪潮(北京)电子信息产业有限公司 | 一种基于numa架构的页缓存读取方法及系统 |
CN107993186A (zh) * | 2017-12-14 | 2018-05-04 | 中国人民解放军国防科技大学 | 一种基于Winograd算法的3D CNN加速方法及系统 |
CN109388777A (zh) * | 2017-08-07 | 2019-02-26 | 英特尔公司 | 一种用于经优化的Winograd卷积加速器的系统和方法 |
CN112199636A (zh) * | 2020-10-15 | 2021-01-08 | 清华大学 | 适用于微处理器的快速卷积方法及装置 |
CN112506523A (zh) * | 2020-12-21 | 2021-03-16 | 上海携旅信息技术有限公司 | Bert模型的优化方法及系统、电子设备及存储介质 |
CN112950656A (zh) * | 2021-03-09 | 2021-06-11 | 北京工业大学 | 一种基于fpga平台的按通道进行预读取数据的分块卷积方法 |
CN113627592A (zh) * | 2021-08-02 | 2021-11-09 | 西安交通大学 | 面向Winograd参数可调的卷积张量优化方法及系统 |
CN113655986A (zh) * | 2021-08-27 | 2021-11-16 | 中国人民解放军国防科技大学 | 一种基于numa亲和性的fft卷积算法并行实现方法及系统 |
CN113835758A (zh) * | 2021-11-25 | 2021-12-24 | 之江实验室 | 基于向量指令加速计算的Winograd卷积实现方法 |
US20220019441A1 (en) * | 2020-07-14 | 2022-01-20 | The Regents Of The University Of California | Circuits, methods, and articles of manufacture for hyper-dimensional computing systems and related applications |
CN115081600A (zh) * | 2021-03-11 | 2022-09-20 | 安徽寒武纪信息科技有限公司 | 执行Winograd卷积的变换单元、集成电路装置及板卡 |
CN115081603A (zh) * | 2021-03-11 | 2022-09-20 | 安徽寒武纪信息科技有限公司 | 执行Winograd卷积的计算装置、集成电路装置及板卡 |
CN115204373A (zh) * | 2022-08-05 | 2022-10-18 | 广东工业大学 | 一种卷积神经网络的快速卷积及缓存模式的设计方法 |
US20230066626A1 (en) * | 2021-08-19 | 2023-03-02 | Intel Corporation | Temporally amortized supersampling using a mixed precision convolutional neural network |
-
2023
- 2023-06-09 CN CN202310680737.1A patent/CN116401502B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250350A (zh) * | 2016-07-28 | 2016-12-21 | 浪潮(北京)电子信息产业有限公司 | 一种基于numa架构的页缓存读取方法及系统 |
CN109388777A (zh) * | 2017-08-07 | 2019-02-26 | 英特尔公司 | 一种用于经优化的Winograd卷积加速器的系统和方法 |
CN107993186A (zh) * | 2017-12-14 | 2018-05-04 | 中国人民解放军国防科技大学 | 一种基于Winograd算法的3D CNN加速方法及系统 |
US20220019441A1 (en) * | 2020-07-14 | 2022-01-20 | The Regents Of The University Of California | Circuits, methods, and articles of manufacture for hyper-dimensional computing systems and related applications |
CN112199636A (zh) * | 2020-10-15 | 2021-01-08 | 清华大学 | 适用于微处理器的快速卷积方法及装置 |
CN112506523A (zh) * | 2020-12-21 | 2021-03-16 | 上海携旅信息技术有限公司 | Bert模型的优化方法及系统、电子设备及存储介质 |
CN112950656A (zh) * | 2021-03-09 | 2021-06-11 | 北京工业大学 | 一种基于fpga平台的按通道进行预读取数据的分块卷积方法 |
CN115081600A (zh) * | 2021-03-11 | 2022-09-20 | 安徽寒武纪信息科技有限公司 | 执行Winograd卷积的变换单元、集成电路装置及板卡 |
CN115081603A (zh) * | 2021-03-11 | 2022-09-20 | 安徽寒武纪信息科技有限公司 | 执行Winograd卷积的计算装置、集成电路装置及板卡 |
CN113627592A (zh) * | 2021-08-02 | 2021-11-09 | 西安交通大学 | 面向Winograd参数可调的卷积张量优化方法及系统 |
US20230066626A1 (en) * | 2021-08-19 | 2023-03-02 | Intel Corporation | Temporally amortized supersampling using a mixed precision convolutional neural network |
CN113655986A (zh) * | 2021-08-27 | 2021-11-16 | 中国人民解放军国防科技大学 | 一种基于numa亲和性的fft卷积算法并行实现方法及系统 |
CN113835758A (zh) * | 2021-11-25 | 2021-12-24 | 之江实验室 | 基于向量指令加速计算的Winograd卷积实现方法 |
CN115204373A (zh) * | 2022-08-05 | 2022-10-18 | 广东工业大学 | 一种卷积神经网络的快速卷积及缓存模式的设计方法 |
Non-Patent Citations (2)
Title |
---|
YUK WONG: "Low_Bitwidth_CNN_Accelerator_on_FPGA_Using_Winograd_and_Block_Floating_Point_Arithmetic", 《2021 IEEE COMPUTER SOCIETY ANNUAL SYMPOSIUM ON VLSI》, pages 218 - 223 * |
王庆林;李东升;梅松竹;赖志权;窦勇;: "面向飞腾多核处理器的Winograd快速卷积算法优化", 计算机研究与发展, no. 06 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116881618A (zh) * | 2023-08-25 | 2023-10-13 | 之江实验室 | 通用矩阵乘计算优化方法、装置及处理器 |
CN116881618B (zh) * | 2023-08-25 | 2024-06-04 | 之江实验室 | 通用矩阵乘计算优化方法、装置及处理器 |
CN116861149A (zh) * | 2023-09-05 | 2023-10-10 | 之江实验室 | 卷积运算的优化方法、装置及处理器 |
CN116861149B (zh) * | 2023-09-05 | 2024-01-09 | 之江实验室 | 卷积运算的优化方法、装置及处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN116401502B (zh) | 2023-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112579063B (zh) | 一种用于深度学习编译器中探索优化空间的加速方法 | |
CN116401502B (zh) | 一种基于NUMA系统特性优化Winograd卷积的方法及装置 | |
EP4036803A1 (en) | Neural network model processing method and apparatus, computer device, and storage medium | |
EP4036810A1 (en) | Neural network processing method and apparatus, computer device and storage medium | |
Jankov et al. | Declarative recursive computation on an rdbms, or, why you should use a database for distributed machine learning | |
Groh et al. | Ggnn: Graph-based gpu nearest neighbor search | |
US20160342888A1 (en) | Memory efficiency for convolutional neural networks operating on graphics processing units | |
US11763156B2 (en) | Neural network compression based on bank-balanced sparsity | |
CN110895715A (zh) | 存储高效的神经网络 | |
KR20200060302A (ko) | 처리방법 및 장치 | |
CN112835627B (zh) | 用于单指令多线程或单指令多数据类型处理器的近似最近邻域搜索 | |
US11783200B2 (en) | Artificial neural network implementation in field-programmable gate arrays | |
JP7196542B2 (ja) | 学習装置および学習方法 | |
Jankov et al. | Declarative recursive computation on an RDBMS: or, why you should use a database for distributed machine learning | |
CN118246413B (zh) | 基于注意力机制的文本生成方法、装置和模型 | |
Andri et al. | Going further with winograd convolutions: Tap-wise quantization for efficient inference on 4x4 tiles | |
Kim et al. | Accelerating large-scale graph-based nearest neighbor search on a computational storage platform | |
Peroni et al. | ARGA: Approximate reuse for GPGPU acceleration | |
US11704562B1 (en) | Architecture for virtual instructions | |
CN112200310B (zh) | 智能处理器、数据处理方法及存储介质 | |
Wang et al. | Cta: Hardware-software co-design for compressed token attention mechanism | |
Zhan et al. | Field programmable gate array‐based all‐layer accelerator with quantization neural networks for sustainable cyber‐physical systems | |
Bai et al. | Gtco: Graph and tensor co-design for transformer-based image recognition on tensor cores | |
Wei et al. | Structured network pruning via adversarial multi-indicator architecture selection | |
Zong et al. | STR: Hybrid Tensor Re-Generation to Break Memory Wall for DNN Training |
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 |