CN111461311A - 基于众核处理器的卷积神经网络运算加速方法及装置 - Google Patents

基于众核处理器的卷积神经网络运算加速方法及装置 Download PDF

Info

Publication number
CN111461311A
CN111461311A CN202010223385.3A CN202010223385A CN111461311A CN 111461311 A CN111461311 A CN 111461311A CN 202010223385 A CN202010223385 A CN 202010223385A CN 111461311 A CN111461311 A CN 111461311A
Authority
CN
China
Prior art keywords
tensor
core
convolution
matrix
input
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
CN202010223385.3A
Other languages
English (en)
Other versions
CN111461311B (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.)
University of Science and Technology of China USTC
Original Assignee
University of Science and Technology of China USTC
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 University of Science and Technology of China USTC filed Critical University of Science and Technology of China USTC
Priority to CN202010223385.3A priority Critical patent/CN111461311B/zh
Publication of CN111461311A publication Critical patent/CN111461311A/zh
Application granted granted Critical
Publication of CN111461311B publication Critical patent/CN111461311B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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

Abstract

本发明公开了一种基于众核处理器的卷积神经网络运算加速方法,预先将卷积运算的输入图片处理得到输入张量,及卷积滤波器张量;并进行转置,得到转置输入张量
Figure DEST_PATH_IMAGE002
和转置卷积滤波器张量
Figure DEST_PATH_IMAGE004
;获取
Figure DEST_PATH_IMAGE006
的子矩阵d,
Figure DEST_PATH_IMAGE008
的子矩阵f,并传输至众核处理器的从核阵列中进行矩阵相乘运算;将相乘得到的子矩阵o从从核阵列传输回主核,更新转置输出张量
Figure DEST_PATH_IMAGE010
;基于卷积滤波器复用思想的数据换入换出策略,根据卷积运算的算法公式重复上述步骤,对
Figure 280804DEST_PATH_IMAGE010
进行更新;得到最终的输出张量
Figure DEST_PATH_IMAGE012
。使用基于卷积滤波器复用的思想重排卷积循环,在循环内采用DMA混合模式传输,提升带宽,减少访存开销,平衡访存与计算时间,加速卷积神经网络运算过程,优化性能。

Description

基于众核处理器的卷积神经网络运算加速方法及装置
技术领域
本发明属于数据处理技术领域,具体地涉及一种基于众核处理器的卷积神经网络运算加速方法及装置。
背景技术
卷积神经网络是深度神经网络的一种常见形式,由一个输入层,一个输出层和多个隐藏层组成,这些隐藏层包括卷积层,RELU层,激活函数层,池化层,全连接层与归一化层等。在卷积神经网络中,卷积层与池化层一般会取若干个,卷积层与池化层交替设置,生成输入数据的高级抽象,称为特征图(featur map),最后通过分类相关层如全连接层等对特征图进行处理完成输入数据的分类。卷积神经网络可以通过采用非常深的层次结构来实现卓越的性能,但深层的卷积神经网络需求极大的计算能力。
在大多数的卷积神经网络中,卷积层的运算占据了总计算量的最大部分(占比90%以上)。卷积层的主要运算为高维卷积,卷积运算的输入是两个四维的张量:
Figure BDA0002426853210000011
代表输入数据,
Figure BDA0002426853210000012
代表卷积滤波器。输出也是一个四维的张量:
Figure BDA0002426853210000013
N代表一个批次(mini-batch)输入的图片数量,C代表输入的特征图个数,H与W分别代表输入图片的高度与宽度,K代表输出的特征图个数,R与S分别代表卷积核的高度与宽度,P与Q分别代表输出图片的高度与宽度。卷积运算的算法公式可以表示如下:
Figure BDA0002426853210000014
当前在不同硬件平台上对卷积神经网络进行高效处理有两种不同的策略:
一种是基于时域的方法,通过对数据进行变换,将卷积运算映射到矩阵乘法,然后使用较为成熟的矩阵运算加速库(如OPEN-BLAS,cuDNN)进行运算加速。
另一种是基于频域的方法,利用空间域的卷积等于频率域的乘积的卷积原理,对卷积核与输入特征矩阵进行类傅里叶变换,然后在频率域中进行乘法运算,最后对所产生的结果应用逆傅里叶变换恢复空间域中的输出特征映射。
众核处理器,比如SW26010异构众核处理器,其是由上海高性能集成电路设计中心通过自主技术研制,集成了4个运算核组共260个运算核心,核组间支持Cache一致性,通过片上网络互联。每个核组包含1个运算控制核心(主核),1个8x8的运算核心阵列(从核阵列),一个内存控制器(MC)。4个核组的物理空间统一编址,运算控制核心和运算核心均可以通过内存控制器访问芯片上的所有主存空间。SW26010的主核(MPE)是一个64位的RISC核心,拥有一个32kb的L1指令Cache、一个32kb的L1数据Cache和一个256kb的L2cache,同时支持256位的向量运算。它的从核也是一个64位的RISC核心,设计目标是实现计算能力的凝集,同时最小化微架构的复杂性。从核阵列按照8x8的结构排列,采用网络互连、支持低延迟的寄存器通信,每个从核拥有16kb的L1指令Cache和一个64kb的便笺式存储器(SPM),并且同样支持256位的向量运算。从核对主存有两种模式的访问:DMA连续传输访存模式,用于细粒度的数据访问的全局读入/读出(gld/gst),带宽极低;DMA跨步传输访存模式,用于粗粒度数据访问的DMA方式,将主存中的连续数据块有效的传输到SPM,带宽较高,也是SPM与主存间的主要通信方式。在8x8的从核阵列上,同行或者同列的两个从核间可以通过寄存器通信的方式高速传输数据。寄存器通信不仅支持同行同列从核之间点对点的通信,同时支持一对多的行列广播通信,寄存器通信的延迟极小,利用寄存器通信可以实现从核之间高效的数据共享。
SW26010作为新兴的硬件平台,在卷积神经网络的高效处理方面的工作较少,清华大学开发了基于SW26010的深度学习框架swCaffe与深度学习加速库swDNN。但是对于卷积神经网络的高效处理,仍然有可继续优化的空间,探索卷积神经网络与SW26010的结合,进一步加速卷积神经网络在SW26010上的处理过程是有价值的工作。
发明内容
针对上述存在的技术问题,本发明提出了一种基于众核处理器的卷积神经网络运算加速方法,使用基于卷积滤波器复用的思想重排卷积循环,在循环内采用DMA混合模式传输,提升带宽,减少访存开销,平衡访存与计算时间,同时使用寄存器通信,异步DMA传输双缓冲方案,指令流水线重排等优化方案,加速卷积神经网络运算过程,优化性能。
本发明的技术方案是:
一种基于众核处理器的卷积神经网络运算加速方法,包括以下步骤:
S01:预先将卷积运算的输入图片处理得到输入张量
Figure BDA0002426853210000031
及卷积滤波器张量
Figure BDA0002426853210000032
其中,N为一个批次输入的图片数量,C为输入的特征图个数,H与W分别为输入图片的高度与宽度,K为输出的特征图个数,R与S分别为卷积核的高度与宽度;
S02:对输入张量和卷积滤波器张量分别进行转置,得到转置输入张量
Figure BDA0002426853210000033
和转置卷积滤波器张量
Figure BDA0002426853210000034
S03:获取转置输入张量Dt的N*C大小的子矩阵d,转置卷积滤波器张量Ft的K*C大小的子矩阵f,并传输至众核处理器的从核阵列中进行矩阵相乘运算;
S04:将f与d相乘得到的N*K子矩阵o从从核阵列传输回众核处理器的主核,更新输出张量
Figure BDA0002426853210000035
的转置输出张量
Figure BDA0002426853210000036
其中P与Q分别为输出图片的高度与宽度;
S05:基于卷积滤波器复用思想的数据换入换出策略,根据卷积运算的算法公式重复步骤S03与S04,对Ot进行更新;
S06:将得到的Ot进行转置,得到最终的输出张量
Figure BDA0002426853210000037
优选的技术方案中,所述步骤S03中,在进行数据传输时,使用主从核间异步DMA数据传输机制以及计算与访存重叠的双缓冲策略,所述双缓冲策略包括:
S31:当进行多轮次的DMA读写操作时,在从核阵列的局部存储空间上申请2倍于通信数据大小的存储空间,所述存储空间用于存储两份同样大小且互为对方缓冲的数据;
S32:从核阵列在子矩阵f与d进行相乘运算的同时,从主核预取下次计算所需的子矩阵f与d,同时将上一次运算所得的子矩阵o写回主核。
优选的技术方案中,所述步骤S03中进行矩阵相乘运算时,对输入输出数据按8x8的阵列结构进行分块,采用矩阵分块乘法,同时从核间数据传输通信使用寄存器进行通信。
优选的技术方案中,所述步骤S05中基于卷积滤波器复用思想的数据换入换出策略,包括以下步骤:
根据卷积运算的算法公式转换得到循环次序,将卷积滤波器张量的子矩阵f始终保持在SPM中,使用DMA连续传输访存模式,完成对输出张量的子矩阵o分次读入读出,将矩阵相乘运算完成后的子矩阵o的最后一次传输使用DMA跨步传输访存模式将数据传回主存。
本发明还公开了一种基于众核处理器的卷积神经网络运算加速装置,包括:
第一处理模块,预先将卷积运算的输入图片处理得到输入张量
Figure BDA0002426853210000041
及卷积滤波器张量
Figure BDA0002426853210000042
其中,N为一个批次输入的图片数量,C为输入的特征图个数,H与W分别为输入图片的高度与宽度,K为输出的特征图个数,R与S分别为卷积核的高度与宽度;
第二处理模块,对输入张量和卷积滤波器张量分别进行转置,得到转置输入张量
Figure BDA0002426853210000043
和转置卷积滤波器张量
Figure BDA0002426853210000044
数据传输运算模块,获取转置输入张量Dt的N*C大小的子矩阵d,转置卷积滤波器张量Ft的K*C大小的子矩阵f,并传输至众核处理器的从核阵列中进行矩阵相乘运算;
数据传输更新模块,将f与d相乘得到的N*K子矩阵o从从核阵列传输回众核处理器的主核,更新输出张量
Figure BDA0002426853210000045
的转置输出张量
Figure BDA0002426853210000046
其中P与Q分别为输出图片的高度与宽度;
循环运算模块,基于卷积滤波器复用思想的数据换入换出策略,根据卷积运算的算法公式重复步骤S03与S04,对Ot进行更新;
转置模块,将得到的Ot进行转置,得到最终的输出张量
Figure BDA0002426853210000047
优选的技术方案中,所述数据传输运算模块中,在进行数据传输时,使用主从核间异步DMA数据传输机制以及计算与访存重叠的双缓冲策略,所述双缓冲策略包括:
S31:当进行多轮次的DMA读写操作时,在从核阵列的局部存储空间上申请2倍于通信数据大小的存储空间,所述存储空间用于存储两份同样大小且互为对方缓冲的数据;
S32:从核阵列在子矩阵f与d进行相乘运算的同时,从主核预取下次计算所需的子矩阵f与d,同时将上一次运算所得的子矩阵o写回主核。
优选的技术方案中,所述数据传输运算模块中进行矩阵相乘运算时,对输入输出数据按8x8的阵列结构进行分块,采用矩阵分块乘法,同时从核间数据传输通信使用寄存器进行通信。
优选的技术方案中,所述循环运算模块中基于卷积滤波器复用思想的数据换入换出策略,包括以下步骤:
根据卷积运算的算法公式转换得到循环次序,将卷积滤波器张量的子矩阵f始终保持在SPM中,使用DMA连续传输访存模式,完成对输出张量的子矩阵o分次读入读出,将矩阵相乘运算完成后的子矩阵o的最后一次传输使用DMA跨步传输访存模式将数据传回主存。
与现有技术相比,本发明的优点是:
本发明对不同的卷积计算方法进行了分析,结合众核处理器的阵列架构,使用基于卷积滤波器复用的思想重排卷积循环,在循环内采用DMA混合模式传输,相比于众核处理器上已有的卷积神经网络加速库swDNN,有效提升了程序带宽,减少访存开销,平衡访存与计算时间。同时使用寄存器通信,异步DMA传输双缓冲方案,指令流水线重排等方案进行优化。最终,实现了超过2.4Tflops的双精度卷积运算性能,达到处理器峰值性能的81%,并在多个参数下双精度性能相比于使用cudnnv7的Tesla K80 GPU实现了2.4-4.0倍的加速。
附图说明
下面结合附图及实施例对本发明作进一步描述:
图1为本发明基于众核处理器的卷积神经网络运算加速方法的流程图;
图2为本发明在不同卷积核(R,S)大小下与K80 GPU双精度卷积性能的对比示意图;
图3为本发明在不同K,C参数下与K80 GPU双精度卷积性能的对比示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
实施例:
下面结合附图,对本发明的较佳实施例作进一步说明。
本发明以申威26010众核处理器为例进行说明,本发明受限于申威26010众核处理器有限的存储容量与存储传输带宽,基于原始的直接卷积算法来进行SW26010上的卷积算法设计,原始的直接卷积算法公式在背景技术中已经描述过。在原始公式的基础上,通过将外层循环转换顺序,可以将高维卷积转换为多个矩阵的乘加,在此基础上将卷积算法映射到处理器上。
一种基于众核处理器的卷积神经网络运算加速方法,如图1所示,具体步骤如下:
第一步,将卷积运算的两个输入张量:输入数据
Figure BDA0002426853210000061
与卷积滤波器
Figure BDA0002426853210000062
进行转置处理,转置
Figure BDA0002426853210000063
的两个张量。
第二步,从Dt张量中取出N*C大小的子矩阵d,Ft张量中取出K*C大小的子矩阵f,传输进从核阵列中进行矩阵相乘运算。在进行数据传输时,使用主从核间异步DMA数据传输机制以及计算与访存重叠的双缓冲策略,提高传输效率。
第三步,将f与d相乘得到的N*K大小的矩阵o从从核传输回主核,更新输出张量O的转置张量
Figure BDA0002426853210000064
在从核中对f与d进行相乘运算时,使用了矩阵分块并行算法,同时使用寄存器通信来进行从核间数据传输通信。
第四步,按卷积运算的算法公式重复第二步与第三步,对Ot进行更新。由于从核私有存储器64kb的大小限制,在第二步与第三步进行数据传输时,不能将所有子矩阵一次性传输到从核中进行运算,需要频繁的进行矩阵数据的换入换出。申威26010众核处理器上已有的卷积神经网络加速库swDNN(Fang,J.,Fu,H.,Zhao,W.,Chen,B.,Zheng,W.,Yang,G.:swdnn:A libraryfor accelerating deep learning applications onsunwaytaihulight.In:2017 IEEEInternational Parallel and DistributedProcessing Symposium(IPDPS).pp.615–624.IEEE(2017))使用了基于输出数据复用思想的数据换入换出策略,即将输出张量的子矩阵o始终保持在SPM中,当与子矩阵o相关的矩阵乘加运算完成后,再将子矩阵o写回主存。在这里,本发明与其不同,创新的提出了使用了基于卷积滤波器复用思想的数据换入换出策略,该策略可以提高程序整体带宽,优化程序性能。
第五步,将Ot张量进行转置,得到最终的输出
Figure BDA0002426853210000065
其中,第二步中双缓冲是一种有效的掩藏DMA通信开销的优化方法。采用双缓冲模式,就是当需要多轮次的DMA读写操作时,在从核的局部存储空间上申请2倍于通信数据大小的存储空间,以便存放两份同样大小且互为对方缓冲的数据。双缓冲通信通过编程来控制和实现,除了第一轮次(最后一轮次)读入(写回)数据的通信过程之外,当从核进行本轮次数据计算的同时,进行下一轮次(上一轮次)读入(写回)数据的通信。在本发明中,即从核在子矩阵f与d进行相乘运算的同时,从主核预取下次计算所需的子矩阵f与d,同时将上一次运算所得的子矩阵o写回主核,实现运算时间与访存时间的相互掩盖。
第三步中在进行从核内的矩阵相乘运算时,使用了申威26010众核处理器上已有的矩阵运算库swGEMM(https://github.com/feifeibear/swGEMM),该库使用了寄存器通信与指令流水线重排等优化方法,加速矩阵相乘运算。使用该库对运算矩阵的尺寸大小具有限制,具体限制体现在该发明中为N必须为128的倍数,K与C必须为32的倍数。
第四步中基于卷积滤波器复用思想的数据换入换出策略,具体表现为:
根据卷积算法,转换循环次序,将卷积滤波器张量的子矩阵f始终保持在SPM中,对输出张量的子矩阵o分次读入读出,完成运算。在映射矩阵乘法到处理器阵列上时,采用了矩阵分块乘法,对输入输出数据按8x8的阵列结构进行分块,这样就造成了从核访存的不连续性,如从核(0,0)上的输入图片矩阵d(0,0),是大小为pn*pc(pn=N/8,pc=C/8)的矩阵块,在主存上存储的形式为pc个长度为pn的连续数据区。SW26010的DMA数据传输只支持连续的数据块的传输,要将d(0,0)从主存通过DMA传输到从核的SPM中,就必须进行DMA跨步传输,DMA传输速率较低。通过对卷积算法进行分析,可以发现,对输出图片矩阵o的传输除了矩阵乘加完成后的最后一次传输需要使用DMA跨步传输访存模式将数据传回主存,其余由于o的计算尚未完成,可以使用DMA连续传输访存模式来完成对o的读入读出。因此,本发明对输出图片矩阵o采用跨步传输与连续传输相混合的DMA访存模式,此举可以有效改善程序的访存带宽,减少访存时间,结合第二步所述的双缓冲策略,使计算时间与访存时间掩盖的更加充分。
第一步与第五步的张量转置过程,当将该方法应用于完整的卷积神经网络结构时,由于卷积神经网络层间运算的连续性,运算张量在神经网络层间传输时,可以忽略该过程。
本发明具体实现步骤为:
1、获取卷积运算的输入数据张量D与卷积滤波器张量F,根据他们的尺寸大小判断是否符合该发明的参数限定条件,若不符合则程序返回错误警告并结束。
2、从D与F中取出子矩阵d与f传输到从核私有存储器SPM中准备运算。
3、f与d进行矩阵相乘运算得到矩阵o,将矩阵o传输回主核更新输出数据张量O。f与d的计算使用了swGEMM库,通过寄存器通信与指令流水线重排等优化方法,加速矩阵相乘运算。
4、根据卷积算法的相关循环条件,循环进行2,3两步,直到循环结束。在2,3两步的循环中,使用了双缓冲策略来进行优化,即从核在子矩阵f与d进行相乘运算的同时,从主核预取下次计算所需的子矩阵f与d,同时将上一次运算所得的子矩阵o写回主核,实现运算时间与访存时间的相互掩盖。同时,使用了基于卷积滤波器复用思想的数据换入换出策略,转换循环次序,将卷积滤波器张量的子矩阵f始终保持在SPM中,对输出张量的子矩阵o分次读入读出,完成运算。
本实现在申威26010众核处理器平台上进行测试,与使用cudnnv7的英伟达K80进行性能对比。图2是在N=128,C=256,K=128,P=Q=64的参数下不同R,S参数的双精度卷积性能对比,图3是在N=128,H=W=66,R=S=3的参数下不同K,C参数的双精度卷积性能对比。最终,本发明实现了超过2.4Tflops的双精度卷积运算性能,达到处理器峰值性能的81%,并在多个参数下双精度性能相比于使用cudnnv7的Tesla K80 GPU实现了2.4-4.0倍的加速。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

Claims (8)

1.一种基于众核处理器的卷积神经网络运算加速方法,其特征在于,包括以下步骤:
S01:预先将卷积运算的输入图片处理得到输入张量
Figure FDA0002426853200000011
及卷积滤波器张量
Figure FDA0002426853200000012
其中,N为一个批次输入的图片数量,C为输入的特征图个数,H与W分别为输入图片的高度与宽度,K为输出的特征图个数,R与S分别为卷积核的高度与宽度;
S02:对输入张量和卷积滤波器张量分别进行转置,得到转置输入张量
Figure FDA0002426853200000013
和转置卷积滤波器张量
Figure FDA0002426853200000014
S03:获取转置输入张量Dt的N*C大小的子矩阵d,转置卷积滤波器张量Ft的K*C大小的子矩阵f,并传输至众核处理器的从核阵列中进行矩阵相乘运算;
S04:将f与d相乘得到的N*K子矩阵o从从核阵列传输回众核处理器的主核,更新输出张量
Figure FDA0002426853200000015
的转置输出张量
Figure FDA0002426853200000016
其中P与Q分别为输出图片的高度与宽度;
S05:基于卷积滤波器复用思想的数据换入换出策略,根据卷积运算的算法公式重复步骤S03与S04,对Ot进行更新;
S06:将得到的Ot进行转置,得到最终的输出张量
Figure FDA0002426853200000017
2.根据权利要求1所述的基于众核处理器的卷积神经网络运算加速方法,其特征在于,所述步骤S03中,在进行数据传输时,使用主从核间异步DMA数据传输机制以及计算与访存重叠的双缓冲策略,所述双缓冲策略包括:
S31:当进行多轮次的DMA读写操作时,在从核阵列的局部存储空间上申请2倍于通信数据大小的存储空间,所述存储空间用于存储两份同样大小且互为对方缓冲的数据;
S32:从核阵列在子矩阵f与d进行相乘运算的同时,从主核预取下次计算所需的子矩阵f与d,同时将上一次运算所得的子矩阵o写回主核。
3.根据权利要求1所述的基于众核处理器的卷积神经网络运算加速方法,其特征在于,所述步骤S03中进行矩阵相乘运算时,对输入输出数据按8x8的阵列结构进行分块,采用矩阵分块乘法,同时从核间数据传输通信使用寄存器进行通信。
4.根据权利要求1所述的基于众核处理器的卷积神经网络运算加速方法,其特征在于,所述步骤S05中基于卷积滤波器复用思想的数据换入换出策略,包括以下步骤:
根据卷积运算的算法公式转换得到循环次序,将卷积滤波器张量的子矩阵f始终保持在SPM中,使用DMA连续传输访存模式,完成对输出张量的子矩阵o分次读入读出,将矩阵相乘运算完成后的子矩阵o的最后一次传输使用DMA跨步传输访存模式将数据传回主存。
5.一种基于众核处理器的卷积神经网络运算加速装置,其特征在于,包括:
第一处理模块,预先将卷积运算的输入图片处理得到输入张量
Figure FDA0002426853200000021
及卷积滤波器张量
Figure FDA0002426853200000022
其中,N为一个批次输入的图片数量,C为输入的特征图个数,H与W分别为输入图片的高度与宽度,K为输出的特征图个数,R与S分别为卷积核的高度与宽度;
第二处理模块,对输入张量和卷积滤波器张量分别进行转置,得到转置输入张量
Figure FDA0002426853200000023
和转置卷积滤波器张量
Figure FDA0002426853200000024
数据传输运算模块,获取转置输入张量Dt的N*C大小的子矩阵d,转置卷积滤波器张量Ft的K*C大小的子矩阵f,并传输至众核处理器的从核阵列中进行矩阵相乘运算;
数据传输更新模块,将f与d相乘得到的N*K子矩阵o从从核阵列传输回众核处理器的主核,更新输出张量
Figure FDA0002426853200000025
的转置输出张量
Figure FDA0002426853200000026
其中P与Q分别为输出图片的高度与宽度;
循环运算模块,基于卷积滤波器复用思想的数据换入换出策略,根据卷积运算的算法公式重复步骤S03与S04,对Ot进行更新;
转置模块,将得到的Ot进行转置,得到最终的输出张量
Figure FDA0002426853200000027
6.根据权利要求5所述的基于众核处理器的卷积神经网络运算加速装置,其特征在于,所述数据传输运算模块中,在进行数据传输时,使用主从核间异步DMA数据传输机制以及计算与访存重叠的双缓冲策略,所述双缓冲策略包括:
S31:当进行多轮次的DMA读写操作时,在从核阵列的局部存储空间上申请2倍于通信数据大小的存储空间,所述存储空间用于存储两份同样大小且互为对方缓冲的数据;
S32:从核阵列在子矩阵f与d进行相乘运算的同时,从主核预取下次计算所需的子矩阵f与d,同时将上一次运算所得的子矩阵o写回主核。
7.根据权利要求5所述的基于众核处理器的卷积神经网络运算加速装置,其特征在于,所述数据传输运算模块中进行矩阵相乘运算时,对输入输出数据按8x8的阵列结构进行分块,采用矩阵分块乘法,同时从核间数据传输通信使用寄存器进行通信。
8.根据权利要求5所述的基于众核处理器的卷积神经网络运算加速装置,其特征在于,所述循环运算模块中基于卷积滤波器复用思想的数据换入换出策略,包括以下步骤:
根据卷积运算的算法公式转换得到循环次序,将卷积滤波器张量的子矩阵f始终保持在SPM中,使用DMA连续传输访存模式,完成对输出张量的子矩阵o分次读入读出,将矩阵相乘运算完成后的子矩阵o的最后一次传输使用DMA跨步传输访存模式将数据传回主存。
CN202010223385.3A 2020-03-26 2020-03-26 基于众核处理器的卷积神经网络运算加速方法及装置 Active CN111461311B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010223385.3A CN111461311B (zh) 2020-03-26 2020-03-26 基于众核处理器的卷积神经网络运算加速方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010223385.3A CN111461311B (zh) 2020-03-26 2020-03-26 基于众核处理器的卷积神经网络运算加速方法及装置

Publications (2)

Publication Number Publication Date
CN111461311A true CN111461311A (zh) 2020-07-28
CN111461311B CN111461311B (zh) 2023-04-07

Family

ID=71679176

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010223385.3A Active CN111461311B (zh) 2020-03-26 2020-03-26 基于众核处理器的卷积神经网络运算加速方法及装置

Country Status (1)

Country Link
CN (1) CN111461311B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112215345A (zh) * 2020-10-15 2021-01-12 苏州浪潮智能科技有限公司 一种基于Tensorcore的卷积神经网络运转方法和装置
CN112348173A (zh) * 2020-11-13 2021-02-09 南开大学 一种移动平台上cnn流水线优化方法
CN113204372A (zh) * 2021-04-28 2021-08-03 浙江大学 存储受限型哈希算法的加速装置及方法
CN113298236A (zh) * 2021-06-18 2021-08-24 中国科学院计算技术研究所 基于数据流结构的低精度神经网络计算装置及加速方法
CN113543045A (zh) * 2021-05-28 2021-10-22 平头哥(上海)半导体技术有限公司 处理单元、相关装置和张量运算方法
CN113722269A (zh) * 2021-08-26 2021-11-30 北京大学 一种基于昇腾ai处理器的跨步切片算子处理方法及装置
CN114936633A (zh) * 2022-06-15 2022-08-23 北京爱芯科技有限公司 用于转置运算的数据处理单元及图像转置运算方法
CN115146780A (zh) * 2022-08-30 2022-10-04 之江实验室 一种量子张量网络转置和收缩协同的方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107168683A (zh) * 2017-05-05 2017-09-15 中国科学院软件研究所 国产申威26010众核cpu上gemm稠密矩阵乘高性能实现方法
CN109388777A (zh) * 2017-08-07 2019-02-26 英特尔公司 一种用于经优化的Winograd卷积加速器的系统和方法
GB201903849D0 (en) * 2019-03-20 2019-05-01 Imagination Tech Ltd Methods and systems for implementing a convolution transpose layer of a neural network

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107168683A (zh) * 2017-05-05 2017-09-15 中国科学院软件研究所 国产申威26010众核cpu上gemm稠密矩阵乘高性能实现方法
CN109388777A (zh) * 2017-08-07 2019-02-26 英特尔公司 一种用于经优化的Winograd卷积加速器的系统和方法
GB201903849D0 (en) * 2019-03-20 2019-05-01 Imagination Tech Ltd Methods and systems for implementing a convolution transpose layer of a neural network

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
姚庆等: "SOM算法在申威众核上的实现和优化", 《计算机科学》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112215345A (zh) * 2020-10-15 2021-01-12 苏州浪潮智能科技有限公司 一种基于Tensorcore的卷积神经网络运转方法和装置
CN112215345B (zh) * 2020-10-15 2022-12-20 苏州浪潮智能科技有限公司 一种基于Tensorcore的卷积神经网络运转方法和装置
CN112348173A (zh) * 2020-11-13 2021-02-09 南开大学 一种移动平台上cnn流水线优化方法
CN113204372A (zh) * 2021-04-28 2021-08-03 浙江大学 存储受限型哈希算法的加速装置及方法
CN113204372B (zh) * 2021-04-28 2022-07-01 浙江大学 存储受限型哈希算法的加速装置及方法
CN113543045A (zh) * 2021-05-28 2021-10-22 平头哥(上海)半导体技术有限公司 处理单元、相关装置和张量运算方法
CN113543045B (zh) * 2021-05-28 2022-04-26 平头哥(上海)半导体技术有限公司 处理单元、相关装置和张量运算方法
CN113298236A (zh) * 2021-06-18 2021-08-24 中国科学院计算技术研究所 基于数据流结构的低精度神经网络计算装置及加速方法
CN113722269A (zh) * 2021-08-26 2021-11-30 北京大学 一种基于昇腾ai处理器的跨步切片算子处理方法及装置
CN114936633A (zh) * 2022-06-15 2022-08-23 北京爱芯科技有限公司 用于转置运算的数据处理单元及图像转置运算方法
CN115146780A (zh) * 2022-08-30 2022-10-04 之江实验室 一种量子张量网络转置和收缩协同的方法和装置

Also Published As

Publication number Publication date
CN111461311B (zh) 2023-04-07

Similar Documents

Publication Publication Date Title
CN111461311B (zh) 基于众核处理器的卷积神经网络运算加速方法及装置
CN108241890B (zh) 一种可重构神经网络加速方法及架构
KR102492477B1 (ko) 행렬 곱셈기
US11847550B2 (en) Sparse convolutional neural network accelerator
US11003985B2 (en) Convolutional neural network system and operation method thereof
US10997496B2 (en) Sparse convolutional neural network accelerator
Ma et al. End-to-end scalable FPGA accelerator for deep residual networks
CN107451652A (zh) 高效的稀疏并行的基于威诺格拉德的卷积方案
CN111667051A (zh) 适用边缘设备的神经网络加速器及神经网络加速计算方法
JP6905573B2 (ja) 計算装置と計算方法
CN108170640B (zh) 神经网络运算装置及应用其进行运算的方法
KR20180052063A (ko) 컨볼루션 신경망 시스템 및 그것의 동작 방법
CN112703511B (zh) 运算加速器和数据处理方法
CN109993275B (zh) 一种信号处理方法及装置
CN108509270A (zh) 一种国产申威26010众核处理器上K-means算法的高性能并行实现方法
CN113313247B (zh) 基于数据流架构的稀疏神经网络的运算方法
CN114003201A (zh) 矩阵变换方法、装置及卷积神经网络加速器
CN109993293A (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
CN112559952B (zh) 基于序列分层的异构众核快速傅里叶变换方法
CN110414672B (zh) 卷积运算方法、装置及系统
CN110490308B (zh) 加速库的设计方法、终端设备及存储介质
CN110766136B (zh) 一种稀疏矩阵与向量的压缩方法
CN113128688B (zh) 通用型ai并行推理加速结构以及推理设备
JP7387017B2 (ja) アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム
US20220188613A1 (en) Sgcnax: a scalable graph convolutional neural network accelerator with workload balancing

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