CN113254391B - 一种神经网络加速器卷积计算和数据载入并行方法及装置 - Google Patents

一种神经网络加速器卷积计算和数据载入并行方法及装置 Download PDF

Info

Publication number
CN113254391B
CN113254391B CN202110707419.0A CN202110707419A CN113254391B CN 113254391 B CN113254391 B CN 113254391B CN 202110707419 A CN202110707419 A CN 202110707419A CN 113254391 B CN113254391 B CN 113254391B
Authority
CN
China
Prior art keywords
convolution
cache
convolution kernel
calculation
characteristic diagram
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.)
Active
Application number
CN202110707419.0A
Other languages
English (en)
Other versions
CN113254391A (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.)
Zhejiang University ZJU
Zhejiang Lab
Original Assignee
Zhejiang University ZJU
Zhejiang Lab
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 Zhejiang University ZJU, Zhejiang Lab filed Critical Zhejiang University ZJU
Priority to CN202110707419.0A priority Critical patent/CN113254391B/zh
Publication of CN113254391A publication Critical patent/CN113254391A/zh
Application granted granted Critical
Publication of CN113254391B publication Critical patent/CN113254391B/zh
Priority to US17/745,830 priority patent/US20220414423A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/781On-chip cache; Off-chip memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7817Specially adapted for signal processing, e.g. Harvard architectures
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Neurology (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种神经网络加速器卷积计算和数据载入并行方法及装置,该并行方式各需要两块输入特征图和卷积核缓存块,将输入特征图和64个卷积核根据载入长度依次存入各个缓存子块中,一边高效的执行卷积计算,一边实现下一组64卷积核的数据载入。一般的神经网络需要成百上千的卷积核,将其全部存储在片上需要大量的存储空间,这样会使芯片面积较大,相应制造成本增加。本发明在保证卷积高效计算的同时显著降低片上存储空间,其减小了芯片面积,进而降低芯片成本,其实现方式简单,灵活可控,且与具体的神经网络层数无关。

Description

一种神经网络加速器卷积计算和数据载入并行方法及装置
技术领域
本发明涉及神经网络计算领域,尤其是涉及一种神经网络加速器卷积计算和数据载入并行方法及装置。
背景技术
神经网络一经出现就成为了学术界和工业界的研究热点,随着研究的不断深入,各种各样的神经网络被提出,其中就包括深度达到几百层,参数成千上万的大型网络。目前主要的研究工作使用图形处理器(GPU)完成,GPU操作简单,编程方便,对于训练一个神经网络具有先天优势,但同时也存在缺点,在执行一些推理应用方面,尤其是大批量的终端部署,耗电量巨大,成本较高。
2016年3月,谷歌AlphaGo击败围棋世界冠军、职业九段棋手李世石,此后对于神经网络加速器的研究如雨后春笋,各种新型架构的神经网络加速器应运而生。
总体而言,神经网络加速器的构成主要包括数据输入输出缓存单元、卷积计算单元、量化单元、矢量计算单元、池化单元等。各个模块相对独立而又相互关联。现有技术一般是提前准备好输入特征图和卷积核权重,根据卷积指令计算卷积,输出结果,然后继续输入特征图和卷积核权重,计算卷积等。现有技术原理简单直接,容易理解,但没有充分考虑各种操作之间的并行性,使得大型神经网络推理时间过长,特别对于实时性要求比较高的目标检测类神经网络,实时性变差会引起网络的漏检,继而严重影响性能。同时,由于现有技术缺乏并行性,而为了保证计算的正常进行大量的卷积核需要存放在片上,因此使得片上卷积核缓存较大,继而芯片面积增加,成本增加。
因此,需要一种神经网络加速器卷积计算和数据载入的并行方式。
发明内容
为解决现有技术的不足,实现提高神经网络计算效率,降低成本的目的,本发明采用如下的技术方案:
一种神经网络加速器卷积计算和数据载入并行方法,包括如下步骤:
S1,按照输入特征图存放要求,将一帧输入特征图全部存入输入特征图缓存,按输入特征图的通道,分散存储在64块输入特征图子缓存中;
S2,按照卷积核存放要求,将一组64个卷积核依次送入第一卷积核缓存中对应的64个卷积核缓存子块中;
S3,载入输入特征图缓存和第一卷积核缓存,执行卷积计算,将结果放入输出特征图缓存,同时将下一组64个卷积核存入第二卷积核缓存中对应的64个卷积核缓存子块中;
S4,本层卷积计算完成后,将输入、输出特征图缓存互换,将存有有效权重的卷积核缓存作为第一卷积核缓存,执行S3;两个计算使用握手协议,当同时结束之后才可进行下一层卷积计算;
S5,等待本网络所有卷积计算完成后,根据指令寄存器的设定载入下一帧输入特征图。
进一步地,所述S3包括如下步骤:
S31,载入输入特征图指令参数锁存,载入卷积核指令参数锁存,启动神经网络加速器,从指令模块中依次读取指令,如果当前指令是输入特征图载入指令,则锁存片外输入特征图存放地址以及载入输入特征图长度;如果当前指令是卷积核载入指令,则锁存当前载入卷积核数目、载入卷积核长度、卷积核缓存起始地址以及片外卷积核存放地址;
S32,卷积核数目比较,根据卷积计算指令中总的卷积核数目,与载入卷积核数目锁存值进行比较,如果卷积计算指令中,总的卷积核数目大于载入卷积核数目锁存值,且是载入的卷积核数目大于1的整数倍时,则边计算卷积边载入的卷积核,卷积核通道数为载入的卷积核数目;如果卷积计算指令中,总的卷积核数目大于载入卷积核数目锁存值,且是载入的卷积核数目的1倍时,则边计算卷积边载入的卷积核,卷积核通道数为总的卷积核数目与载入卷积核数目锁存值的差值;如果卷积计算指令中,总的卷积核数目等于载入卷积核数目锁存值,则根据卷积计算指令中,载入下层卷积核参数的设定来决定是否载入下层卷积核;
S33,根据卷积核数目比较结果,设置载入标志,所述载入标志表示具体向哪块卷积核缓存载入数据,同时,设置卷积计算开始标志;
S34,同步进行相互独立的卷积计算和数据载入;
S35,卷积计算和数据载入完成后,计算剩余卷积核数目,同时,锁存S34的各项卷积核数据载入参数,返回S32继续执行,直至本次卷积计算完成。
进一步地,所述S35中,当卷积计算完成标志和数据载入完成标志同时有效后,计算剩余卷积核数目。
进一步地,所述S4中,卷积核缓存存有有效权重,根据每一卷积层的卷积核数目以及初始卷积核存放位置进行判断,包括如下步骤:
S41,若S2中卷积核初始存放位置为第一卷积核缓存;
S42,如果总的卷积核数目在卷积计算阵列的列数以内,即64以内,则下一次卷积计算,使用第二卷积核缓存;
S43,如果总的卷积核数目是卷积计算阵列的列数的偶数倍,即64的偶数倍,则下一次卷积计算使用第一卷积核缓存;
S44,如果总的卷积核数目是卷积计算阵列的列数的奇数倍,即64的奇数倍,则下一次卷积计算使用第二卷积核缓存;
S45,如果总的卷积核数目既不是卷积计算阵列的列数64的偶数倍,也不是奇数倍,则按除以卷积计算阵列的列数64,向上取整为准;
初始存放位置为第二卷积核缓存时,步骤同上,结果相反,当卷积计算阵列为128×128时,以上64需替换为128。
进一步地,所述S4中,卷积核缓存存有有效权重,直接通过卷积计算指令中的字段给出。
进一步地,所述S1中,将输入特征图的通道,按顺序依次循环存入子缓存对应的序列中。
进一步地,所述S1中,当单块特征图子缓存不足以存放单个通道的特征图时,对子缓存进行扩展,使多块子缓存存放一个通道。
进一步地,所述S2中,卷积核缓存子块的长度为W×H×C,其中W表示卷积核的宽、H表示卷积核的高、C表示输入特征图的通道数。
进一步地,所述S5中,等待本网络所有卷积计算完成后,根据指令寄存器的设定载入下一帧输入特征图,和/或载入下一层卷积所需的64个卷积核。
一种神经网络加速器卷积计算和数据载入并行装置,包括:卷积计算阵列及分别与其连接的输入特征图缓存、输出特征图缓存和卷积核缓存,所述卷积核缓存包括第一卷积核缓存和第二卷积核缓存;
输入特征图缓存和输出特征图缓存结构一致,按照输入特征图存放要求,将一帧输入特征图全部存入输入特征图缓存,按输入特征图的通道,分散存储在64块输入特征图子缓存中;
第一卷积核缓存和第二卷积核缓存结构一致,按照卷积核存放要求,将一组64个卷积核依次送入第一卷积核缓存中对应的64个卷积核缓存子块中;
卷积计算阵列由64×64的二维阵列构成,权重向下传输,输入特征图向右传输,载入输入特征图缓存和第一卷积核缓存,执行卷积计算,将结果放入输出特征图缓存,同时将下一组64个卷积核存入第二卷积核缓存中对应的64个卷积核缓存子块中;本层卷积计算完成后,将输入、输出特征图缓存互换,将存有有效权重的卷积核缓存作为第一卷积核缓存,继续卷积计算,直至本网络所有卷积计算完成。
本发明的优势和有益效果在于:
本发明提供的一种神经网络加速器卷积计算和数据载入的并行方式及装置,使得卷积计算和数据载入完全并行,隐藏了部分卷积核以及下一帧输入特征图的载入时间,进而大大减小总的神经网络加速器推理时间,进而提升神经网络加速器的效率以及实时性;该并行方式可以显著减少片上卷积核缓存空间,进而减小芯片面积,降低芯片制造成本;同时,该并行方式实现简单,可以匹配大部分现有的神经网络,且与神经网络具体层数无关。
附图说明
图1是本发明的方案原理图。
图2是本发明的方法流程图。
图3是本发明中输入和输出特征图在输入和输出特征图缓存中的存放格式图。
图4是本发明中神经网络加速器卷积计算和卷积核数据载入并行框图。
图5是本发明中神经网络加速器卷积计算框图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
如图1所示,一种神经网络加速器卷积计算和数据载入并行方案,包括输入特征图载入、64个卷积核载入、64个卷积核载入和卷积计算、下一层64个卷积核载入和卷积计算。
输入特征图载入包括用于卷积计算的所有输入特征图通道;64个卷积核载入不仅包括载入64个卷积核的情形,还包括载入总的卷积核数目少于64个的情形;64个卷积核载入和卷积计算包括64个卷积核载入和卷积计算的并行操作,一般形况下64个卷积核载入的时间略长于卷积计算的时间,也有可能相反,跟具体网络结构以及每层卷积参数有关;下一层64个卷积核载入和卷积计算不仅包括下一层64个卷积核载入和卷积计算的情形,也包括下一张输入特征图载入和卷积计算的情形。如图2所示,并行方法包括以下步骤:
步骤一:按照输入特征图存放要求,将一帧输入特征图全部存入输入特征图缓存;
如图3所示,输入特征图缓存和输出特征图缓存均分为64块,包括左侧的输入输出不扩展情形和右侧的输入输出扩展情形。
对于输入输出不扩展情形,若输入特征图为52×52×128,52、52、128分别对应输入特征图长、输入特征图宽和输入特征图通道数,则第1个通道存放在缓存子块0的通道0,第2个通道存放在缓存子块1的通道1,直到第64个通道存放在缓存子块63的通道63,然后第65个通道存放在缓存子块0的通道64,直到第128个通道存放在缓存子块63的通道127。
对于输入输出扩展情形,若输入特征图为416×416×32,416、416、32分别对应输入特征图长、输入特征图宽和输入特征图通道数,当单块缓存不足以存放416×416的特征图时,要对输入特征图缓存进行扩展,即第1个通道存入缓存子块0和缓存子块1,第2个通道存入缓存子块2和缓存子块3,直到第32个通道存入缓存子块62和缓存子块63。
步骤二:按照卷积核存放要求,将64个卷积核依次送入卷积核缓存中;
卷积核权重缓存同样均分为64个缓存子块。若输入特征图为208×208×64,208、208、64分别对应输入特征图长、输入特征图宽和输入特征图通道数,卷积核为3×3×64×128,3、3、64、128分别对应卷积核长、卷积核宽、卷积核通道数和卷积核总数,则每个缓存子块应存入576(3×3×64)个值。
步骤三:执行卷积计算,结果放入输出特征图缓存,同时将下一组64个卷积核存入另一块卷积核缓存;
此步骤是是本发明的核心,如图4所示,分为以下子步骤:
1)载入输入特征图指令参数锁存和载入卷积核指令参数锁存。当启动神经网络加速器,从指令模块中依次读取指令,如果当前指令是输入特征图载入指令,则要锁存片外输入特征图存放地址以及载入输入特征图长度;如果当前指令是卷积核载入指令,则要锁存当前载入卷积核数目、载入卷积核长度、卷积核缓存起始地址以及片外卷积核存放地址等。
2)卷积核数目比较。根据卷积计算指令中总的卷积核数目,和载入卷积核数目锁存值进行比较,如果卷积计算指令中总的卷积核数目大于载入卷积核指令参数锁存值且是64整倍数(大于1)时,则边计算卷积边载入的卷积核通道数为64,如果卷积计算指令中总的卷积核数目大于载入卷积核指令参数锁存值且是64的1倍时,则边计算卷积边载入的卷积核通道数为他们的差值;如果卷积计算指令中总的卷积核数目等于载入卷积核指令参数锁存值,则要根据卷积计算指令中载入下层卷积核参数的设定来决定是否载入下层卷积核。
3)设置载入标志,同时设置卷积计算开始标志。根据卷积核数目比较结果,设置载入标志,该标志信号表示具体向哪块卷积核缓存载入数据。同时,设置卷积计算开始标志。
4)卷积计算和数据载入。这两种操作相互完全独立,并行同步进行。
如图5所示,卷积计算的各部分组成包括输入特征图缓存、输出特征图缓存、第一卷积核权重缓存、第二卷积核权重缓存与卷积计算阵列。
输入特征图缓存和输出特征图缓存结构一致,是把特征图按通道进行存放,64个通道存放在不同的缓存子块中。第一卷积核权重缓存和第二卷积核权重缓存结构一致,将所需的卷积核权重按顺序依次存入卷积核缓存子块中。在本发明的一个实施例中,卷积计算阵列由64×64的二维阵列构成,权重向下传输,输入特征图向右传输。
5)等卷积计算和数据载入完成,计算剩余卷积核数目。当卷积计算完成标志和数据载入完成标志同时有效后,计算剩余卷积核数目。同时,锁存子步骤4的各项卷积核数据载入参数,返回到子步骤2继续执行,直至本次卷积计算完成。
步骤四:等待本层卷积计算完成,输入输出特征图缓存互换,另一块卷积核缓存作为权重输入,继续计算卷积;
具体哪块卷积核缓存存有有效权重,要根据每一卷积层的卷积核数目以及初始卷积核存放位置进行推算,也可直接通过卷积计算指令中的字段给出。若步骤二中卷积核初始存放位置为卷积核缓存模块一,如果总的卷积核数目在64以内,则下一次卷积计算使用卷积核缓存模块二,如果卷积核数目是64的偶数倍,则下一次卷积计算使用卷积核缓存模块一,如果卷积核数目是64的奇数倍,则下一次卷积计算使用卷积核缓存模块二。如果卷积核数目既不是64的偶数倍,也不是64的奇数倍,则按除以64向上取整为准。
步骤五:等待所有卷积计算完成,根据指令寄存器的设定载入下一帧输入特征图;
当执行到最后一次卷积计算时,根据指令寄存器的设定载入下一帧输入特征图。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。

Claims (9)

1.一种神经网络加速器卷积计算和数据载入并行方法,其特征在于包括如下步骤:
S1,将一帧输入特征图存入输入特征图缓存,按输入特征图的通道,分散存储在输入特征图子缓存中;
S2,将一组卷积核依次送入第一卷积核缓存中对应的卷积核缓存子块中;
S3,载入输入特征图缓存和第一卷积核缓存,执行卷积计算,将结果放入输出特征图缓存,同时将下一组卷积核存入第二卷积核缓存中对应的卷积核缓存子块中,包括如下步骤:
S31,载入输入特征图指令参数锁存,载入卷积核指令参数锁存,如果当前指令是输入特征图载入指令,则锁存片外输入特征图存放地址以及载入输入特征图长度;如果当前指令是卷积核载入指令,则锁存当前载入卷积核数目、载入卷积核长度、卷积核缓存起始地址以及片外卷积核存放地址;
S32,卷积核数目比较,如果卷积计算指令中,总的卷积核数目大于载入卷积核数目锁存值,且是载入的卷积核数目大于1的整数倍时,则边计算卷积边载入的卷积核,卷积核通道数为载入的卷积核数目;如果卷积计算指令中,总的卷积核数目大于载入卷积核数目锁存值,且是载入的卷积核数目的1倍时,则边计算卷积边载入的卷积核,卷积核通道数为总的卷积核数目与载入卷积核数目锁存值的差值;如果卷积计算指令中,总的卷积核数目等于载入卷积核数目锁存值,则根据卷积计算指令中的设定来决定是否载入下层卷积核;
S33,根据卷积核数目比较结果,设置载入标志,所述载入标志表示具体向哪块卷积核缓存载入数据,同时,设置卷积计算开始标志;
S34,同步进行相互独立的卷积计算和数据载入;
S35,卷积计算和数据载入完成后,计算剩余卷积核数目,同时,锁存S34的各项卷积核数据载入参数,返回S32继续执行,直至本次卷积计算完成;
S4,本层卷积计算完成后,将输入、输出特征图缓存互换,将存有有效权重的卷积核缓存作为第一卷积核缓存,执行S3;
S5,直至所有卷积计算完成。
2.根据权利要求1所述的一种神经网络加速器卷积计算和数据载入并行方法,其特征在于所述S35中,当卷积计算完成标志和数据载入完成标志同时有效后,计算剩余卷积核数目。
3.根据权利要求1所述的一种神经网络加速器卷积计算和数据载入并行方法,其特征在于所述S4中,卷积核缓存存有有效权重,根据每一卷积层的卷积核数目以及初始卷积核存放位置进行判断,包括如下步骤:
S41,若S2中卷积核初始存放位置为第一卷积核缓存;
S42,如果总的卷积核数目在卷积计算阵列的列数以内,则下一次卷积计算,使用第二卷积核缓存;
S43,如果总的卷积核数目是卷积计算阵列的列数的偶数倍,则下一次卷积计算使用第一卷积核缓存;
S44,如果总的卷积核数目是卷积计算阵列的列数的奇数倍,则下一次卷积计算使用第二卷积核缓存;
S45,如果总的卷积核数目既不是卷积计算阵列的列数的偶数倍,也不是奇数倍,则按除以卷积计算阵列的列数,向上取整为准;
初始存放位置为第二卷积核缓存时,步骤同上,结果相反。
4.根据权利要求1所述的一种神经网络加速器卷积计算和数据载入并行方法,其特征在于所述S4中,卷积核缓存存有有效权重,直接通过卷积计算指令中的字段给出。
5.根据权利要求1所述的一种神经网络加速器卷积计算和数据载入并行方法,其特征在于所述S1中,将输入特征图的通道,按顺序依次循环存入子缓存对应的序列中。
6.根据权利要求1所述的一种神经网络加速器卷积计算和数据载入并行方法,其特征在于所述S1中,当单块特征图子缓存不足以存放单个通道的特征图时,对子缓存进行扩展,使多块子缓存存放一个通道。
7.根据权利要求1所述的一种神经网络加速器卷积计算和数据载入并行方法,其特征在于所述S2中,卷积核缓存子块的长度为W×H×C,其中W表示卷积核的宽、H表示卷积核的高、C表示输入特征图的通道数。
8.根据权利要求1所述的一种神经网络加速器卷积计算和数据载入并行方法,其特征在于所述S5中,所有卷积计算完成后,载入下一帧输入特征图,和/或载入下一层卷积核。
9.根据权利要求1-8之一所述方法的神经网络加速器卷积计算和数据载入并行装置,包括:卷积计算阵列及分别与其连接的输入特征图缓存、输出特征图缓存和卷积核缓存,其特征在于所述卷积核缓存包括第一卷积核缓存和第二卷积核缓存;
输入特征图缓存和输出特征图缓存结构一致,将一帧输入特征图存入输入特征图缓存,按输入特征图的通道,分散存储在输入特征图子缓存中;
第一卷积核缓存和第二卷积核缓存结构一致,将一组卷积核依次送入第一卷积核缓存中对应的卷积核缓存子块中;
卷积计算阵列由二维阵列构成,载入输入特征图缓存和第一卷积核缓存,执行卷积计算,将结果放入输出特征图缓存,同时将下一组卷积核存入第二卷积核缓存中对应的卷积核缓存子块中;本层卷积计算完成后,将输入、输出特征图缓存互换,将存有有效权重的卷积核缓存作为第一卷积核缓存,继续卷积计算,直至所有卷积计算完成。
CN202110707419.0A 2021-06-25 2021-06-25 一种神经网络加速器卷积计算和数据载入并行方法及装置 Active CN113254391B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110707419.0A CN113254391B (zh) 2021-06-25 2021-06-25 一种神经网络加速器卷积计算和数据载入并行方法及装置
US17/745,830 US20220414423A1 (en) 2021-06-25 2022-05-16 Parallel method and device for convolution computation and data loading of neural network accelerator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110707419.0A CN113254391B (zh) 2021-06-25 2021-06-25 一种神经网络加速器卷积计算和数据载入并行方法及装置

Publications (2)

Publication Number Publication Date
CN113254391A CN113254391A (zh) 2021-08-13
CN113254391B true CN113254391B (zh) 2021-11-02

Family

ID=77189593

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110707419.0A Active CN113254391B (zh) 2021-06-25 2021-06-25 一种神经网络加速器卷积计算和数据载入并行方法及装置

Country Status (2)

Country Link
US (1) US20220414423A1 (zh)
CN (1) CN113254391B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114330656B (zh) * 2021-12-24 2024-07-23 杭州菲数科技有限公司 一种卷积运算硬件加速器及数据处理方法
CN114723034B (zh) * 2022-06-10 2022-10-04 之江实验室 一种可分离的图像处理神经网络加速器及加速方法
CN115393174B (zh) * 2022-10-27 2023-03-24 之江实验室 一种粗粒度的图像神经网络加速器指令集架构方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110390382B (zh) * 2019-06-20 2023-08-04 东南大学 一种带新型特征图缓存模块的卷积神经网络硬件加速器
CN110516801B (zh) * 2019-08-05 2022-04-22 西安交通大学 一种高吞吐率的动态可重构卷积神经网络加速器
CN111062472B (zh) * 2019-12-11 2023-05-12 浙江大学 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法
CN112860320A (zh) * 2021-02-09 2021-05-28 山东英信计算机技术有限公司 基于risc-v指令集进行数据处理的方法、系统、设备及介质

Also Published As

Publication number Publication date
CN113254391A (zh) 2021-08-13
US20220414423A1 (en) 2022-12-29

Similar Documents

Publication Publication Date Title
CN113254391B (zh) 一种神经网络加速器卷积计算和数据载入并行方法及装置
CN110390385B (zh) 一种基于bnrp的可配置并行通用卷积神经网络加速器
CN107169560B (zh) 一种自适应可重构的深度卷积神经网络计算方法和装置
CN104636273B (zh) 一种带多级Cache的SIMD众核处理器上的稀疏矩阵存储方法
CN110390383A (zh) 一种基于幂指数量化的深度神经网络硬件加速器
CN108108809B (zh) 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法
CN107993186A (zh) 一种基于Winograd算法的3D CNN加速方法及系统
CN109948774A (zh) 基于网络层捆绑运算的神经网络加速器及其实现方法
CN106846235B (zh) 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统
CN108629406B (zh) 用于卷积神经网络的运算装置
CN109840585B (zh) 一种面向稀疏二维卷积的运算方法和系统
CN112668708B (zh) 一种提高数据利用率的卷积运算装置
CN107633297A (zh) 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器
CN109446996B (zh) 基于fpga的人脸识别数据处理装置及处理方法
CN110837483B (zh) 张量维度变换的方法以及装置
CN115983348A (zh) 支持卷积神经网络扩展指令的risc-v加速器系统
CN115221102A (zh) 用于优化片上系统的卷积运算操作的方法和相关产品
KR20230081697A (ko) 팽창 컨볼루션 계산 가속화 방법 및 장치
Shahshahani et al. Memory optimization techniques for fpga based cnn implementations
CN110414672B (zh) 卷积运算方法、装置及系统
CN117973443B (zh) 神经网络加速方法及装置、加速器、存储介质
Niu et al. SPEC2: Spectral sparse CNN accelerator on FPGAs
CN114003201A (zh) 矩阵变换方法、装置及卷积神经网络加速器
Sakr et al. Memory-efficient CMSIS-NN with replacement strategy
CN113536228A (zh) 一种矩阵奇异值分解的fpga加速实现方法

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