CN111767986A - 一种基于神经网络的运算方法及装置 - Google Patents

一种基于神经网络的运算方法及装置 Download PDF

Info

Publication number
CN111767986A
CN111767986A CN202010590865.3A CN202010590865A CN111767986A CN 111767986 A CN111767986 A CN 111767986A CN 202010590865 A CN202010590865 A CN 202010590865A CN 111767986 A CN111767986 A CN 111767986A
Authority
CN
China
Prior art keywords
calculation
convolution
hybrid
type
data
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.)
Pending
Application number
CN202010590865.3A
Other languages
English (en)
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.)
Shenlan Intelligent Technology (Shanghai) Co.,Ltd.
Original Assignee
DeepBlue AI Chips Research Institute Jiangsu Co Ltd
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 DeepBlue AI Chips Research Institute Jiangsu Co Ltd filed Critical DeepBlue AI Chips Research Institute Jiangsu Co Ltd
Priority to CN202010590865.3A priority Critical patent/CN111767986A/zh
Publication of CN111767986A publication Critical patent/CN111767986A/zh
Pending legal-status Critical Current

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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

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

Abstract

本发明所提供的一种基于神经网络的运算方法和装置,获取神经网络模型的计算类型,其中,包括当前层的所述计算类型和下一层计算类型;判断所述计算类型是否满足预设条件,获得判断结果;如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,获得混合计算结果;将所述混合计算结果写入到内存,所述计算类型至少包括:卷积计算类型和混合计算类型,在卷积或者混合计算过程中,每行的所有通道的数据都缓存在buffer空间,卷积窗口从左至右滑动直至一行结束后,避免了同一行数据被不卷积窗口用时反复从DDR中读取,在数据加载过程大大节省了DDR带宽的同时提升了每行数据的复用率。

Description

一种基于神经网络的运算方法及装置
技术领域
本发明涉及一种算法技术,尤其涉及一种基于神经网络的运算方法及装置。
背景技术
关于神经网络算法,传统方法,只能运行特定神经网络模型的特定计算算子,在设计之初针对特定的神经网络模型输入输出数据结构特点按最大化原则将所有所有数据全部或者部分分块缓存起来再分时分批调用,在分批调用时数据等待时间增加,并且不能任意支持其他的计算算子,通用性比较差。不能够兼容算法的多样性,从而导致计算其他神经网络模型效率低下或者不能执行,灵活性也比较差。
发明内容
为达到上述目的,本发明实施例的技术方案是这样实现的:根据本发明实施例的一方面,提供一种基于神经网络的运算方法及装置,所述方法包括:获取神经网络模型的计算类型,其中,包括当前层的所述计算类型和下一层计算类型;判断所述计算类型是否满足预设条件,获得判断结果;如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,获得混合计算结果;将所述混合计算结果写入到内存,从而缩短运算时间;其中,所述计算类型至少包括:卷积计算类型和混合计算类型。
上述方案中,判断所述计算类型是否满足预设条件,获得判断结果后,包括:如果所述判断结果为不满足,则将当前层的卷积计算结果写回所述内存,启动下一个循环的计算任务时再进行计算。
上述方案中,如果所述判断结果为不满足,包括:当前层为卷积计算类型,下一层仍然为卷积计算类型。
上述方案中,如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,包括:当前层为卷积计算类型,下一层为混合计算类型;在卷积计算结果的缓存区域取出所述下一层混合计算所需的输入数据进行混合计算。
上述方案中,将所述混合计算结果写入到内存后,还包括:输入数据流在pipeline结构中进行处理。
上述方案中,获取神经网络模型的计算类型前,包括:按卷积尺寸和strides取出数据,进行卷积计算。
上述方案中,通过卷积尺寸和strides取出数据,进行卷积计算前,还包括:获取数据,按卷积规则缓存块存储。
根据本发明实施例的另一方面,提供一种基于神经网络的运算装置,所述装置包括:获取单元,用于获取神经网络模型的计算类型,其中,包括当前层的所述计算类型和下一层计算类型;判断单元,用于判断所述计算类型是否满足预设条件,获得判断结果;运算单元,用于如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,获得混合计算结果;将所述混合计算结果写入到内存;其中,所述计算类型至少包括:卷积计算类型和混合计算类型。
根据本发明实施例的另一方面,提供一种基于神经网络的运算装置,所述装置包括:存储器、处理器以及存储在存储器被处理器运行的可响应程序,所述处理器运行所述可响应程序时响应上述任一项所述的运算方法的步骤。
本发明所提供的一种基于神经网络的运算方法和装置,获取神经网络模型的计算类型,其中,包括当前层的所述计算类型和下一层计算类型;判断所述计算类型是否满足预设条件,获得判断结果;如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,获得混合计算结果;将所述混合计算结果写入到内存;其中,所述计算类型至少包括:卷积计算类型和混合计算类型,在卷积或者混合计算过程中,每行的所有通道的数据都缓存在buffer空间,卷积窗口从左至右滑动直至一行结束后,无需用到的行数据才被后面行的数据覆盖,避免了同一行数据被不卷积窗口用时反复从DDR中读取,在数据加载过程大大节省了DDR带宽的同时提升了每行数据的复用率。
附图说明
图1为本发明实施例提供的一种基于神经网络的运算方法的实现流程示意图;
图2为本发明实施例提供的发明***框图;
图3为本发明实施例提供的计算并行度示意图;
图4为本发明实施例提供的另一实现流程示意图;
图5为本发明实施例运算装置的结构组成示意图一;
图6为本发明实施例提供的数据输入输出流向图;
图7为本发明实施例提供的卷积计算过程;
图8为本发明实施例提供的混合计算过程;
图9为本发明实施例提供的各功能缓存空间设置参数;
图10为本发明实施例提供的image buffer ram空间示意图;
图11为本发明实施例提供的image DDR存储示意图;
图12为本发明实施例提供的Weight buffer ram空间示意图;
图13为本发明实施例提供的Weight DDR存储示意图;
图14为本发明实施例提供的Misc buffer ram空间示意图;
图15为本发明实施例提供的middle buffer ram空间示意图;
图16为本发明实施例提供的output buffer ram空间示意图。
具体实施方式
为了能够更加详尽地了解本发明的特点与技术内容,下面结合附图对本发明的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明。
图1为本发明实施例提供的一种基于神经网络的运算方法的实现流程示意图,如图1所示,所述方法包括:
步骤S101,获取神经网络模型的计算类型,其中,包括当前层的所述计算类型和下一层计算类型;
步骤S102,判断所述计算类型是否满足预设条件,获得判断结果;
步骤S103,如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,获得混合计算结果;将所述混合计算结果写入到内存,从而缩短运算时间;其中,所述计算类型至少包括:卷积计算类型和混合计算类型。
在另一实施例中,判断所述计算类型是否满足预设条件,获得判断结果后,包括:如果所述判断结果为不满足,则将当前层的卷积计算结果写回所述内存,启动下一个循环的计算任务时再进行计算。
在另一实施例中,如果所述判断结果为不满足,包括:当前层为卷积计算类型,下一层仍然为卷积计算类型。
在另一实施例中,如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,包括:当前层为卷积计算类型,下一层为混合计算类型;在卷积计算结果的缓存区域取出所述下一层混合计算所需的输入数据进行混合计算。
在另一实施例中,将所述混合计算结果写入到内存后,还包括:输入数据流在pipeline结构中进行处理。
在另一个实施例中,获取神经网络模型的计算类型前,包括:按卷积尺寸和strides取出数据,进行卷积计算。
在另一个实施例中,通过卷积尺寸和strides取出数据,进行卷积计算前,还包括:获取数据,按卷积规则缓存块存储。
在另一个实施例中,图2是本发明***框图,推理计算平台是FPGA芯片,在FPGA内部设计一种通用的缓存存储机制来支持不同神经网络模型的的推理计算。神经网络模型的推理计算过程实际上就是针对神经网络模型每一层的具体计算算子的实现过程,具体的计算算子有常规的卷积类:包括常规卷积、分离卷积、反卷积计算,和混合计算类:包括pooling池化下采样、upsample上采样,route通道对应点相加、concat通道对应连接等计算算子。
其中B4096代表计算并行度,计算并行度示意图如图3所示,表示输入图像中深度方向同时处理16个像素点为一组代表输入通道并行度Input Channel Parallelism(简称ICP),权重滤波器同时处理16个为一组代表输出通道并行度Output Channel Parallelism(简称OCP),对应于输出特征图上深度方向上的16个像素点,输入图像中列方向上同时处理8个像素为一组代表像素并行度Pixel Parallelism(简称PP),对应于输出特征图上列方向上的8个像素点。计算并行度=PP*ICP*OCP*2,乘2代表乘法、加法各代表一次运算。B4096=8*16*16*2,在该计算并行度下进行卷积运算每个时钟周期clk内可完成了4096次乘累加运算过程。在本发明***中运行的时钟周期为300MHZ,一个计算单元对应的运行算力可以达到4096*300M=1.2TOP/S,如果运行多个这种计算单元,***的算力可以成倍增加。
总体设计框图分为PS***和PL子***,其中PS内嵌有ARM处理器核和内存控制器,负责对神经网络结构模型的参数转换成指令集和下发,并对PL加速完成的结果进行后续处理。PL子***功能划分如下:
1、指令集功能&状态反馈功能模块,该子功能需要对PS写入DDR空间的指令集进行获取并解析,转换成控制信号和配置参数传递到读写控制器、PE阵列卷积计算模块、混合计算模块和缓存块管理模块。并收集各执行模块的执行状态和反馈参数通过AXI4-lite通知PS及时获取计算结果。
2、卷积计算功能模块:接收指令后启动卷积、分离卷积、反卷积计算过程,并将中间计算结果写入缓存块。并在计算过程中根据输入通道、输出通道、像素并行度将数据进行拆分或者打包处理,配合缓存池管理功能模块进行数据的获取和写入。
3、缓存池管理功能模块:在卷积计算模式:接收指令启动数据传输读写控制,包括启动从DDR读取数据写入对应的缓存块,并根据每层数据结构及卷积核的特性从相应的缓存块存储空间读取输入图像数据和卷积核数据及参数传至PE阵列进行计算,计算完成将卷积计算结果写入缓存块并启动DDR写传输控制。在混合计算模式,同上卷积计算模式获取数据,进行混合结算,计算完成写入DDR。
4、混合计算功能模块:接收指令后根据算子类型调用对应混合算子模块,启动计算,配合缓存池管理功能模块进行数据的获取和写入。
5、总线传输控制功能模块:接收指令后,配合缓存管理模块从DDR读取或者回写数据,完成DDR数据控制和仲裁功能。
上述各功能的执行顺序按照图4执行流程进行,在执行过程中PL根据获取的神经网络模型上下两层的计算类型判断,如果当前层为卷积计算类型,下一层为混合计算类型,则按照图4在卷积计算结果的缓存区域取出下一层混合计算所需的输入数据进行混合计算,最后把混合计算结果写入DDR中,输入数据流在这种pipeline结构中进行处理,可以缩短整体运算的时间,大大提升执行效率。如果当前层为卷积计算类型,下一层仍然为卷积计算类型,而此时的卷积运算单元一直运算着当前层卷积计算任务,没有时间运行下一层的卷积计算任务,所以需要将当前层的卷积计算结果写回DDR,启动下一个循环的计算任务时再进行计算。
大部分的计算过程围绕卷积计算和混合计算过程展开,其中在卷积计算过程中,数据处理对象有输入图像image,权重weight、偏置bias等参数,输出特征图像。图6为计算过程中数据输入输出流向图,从图中可知在卷积计算时,需要先从外部DDR存储器中指定的存储空间导入输入图像image,权重weight、偏置bias等misc参数至各自对应buffer缓存空间中,再从buffer缓存空间按照计算并行度、卷积窗口、卷积数据格式同时并行读出这几个部分的输入数据进行卷积运算并激活输出。以神经网络结构模型YOLOv3为实例,具体每一个卷积核的卷积计算过程如图7所示。当卷积层结果计算完成后,判断下一层计算类型仍然是卷积计算类型,则将完成的卷积结果输出存储在output1 buffer缓存空间,并启动DDR突发回写过程,将存储在output1buffer中的输出结果突发写回外部的DDR存储器中,并启动下一个循环的计算任务。若判断下一层计算类型是混合计算类型,将部分卷积结果存储在output1 buffer缓存空间后,并启动混合计算过程。在混合计算过程中,输入的数据对象为卷积计算输出的特征图像,需要从output1 buffer缓存空间中读出上一层的卷积计算结果传递至混合计算阵列进行混合计算,常见的混合计算过程有pooling、upsample、route、concat等过程如图8所示。经过混合计算后输出规整后的特征图像,存储在output2 buffer缓存空间,并启动DDR回写过程,再将存储在output2 buffer中的输出结果突发写回外部的DDR存储器中。对于神经网络模型每一层的推理实现,可以重复卷积计算和混合计算的过程。从上述分析可知,在卷积计算和混合计算中,需要使用到逻辑缓存空间的有imagebuffer、weight buffer、misc buffer、output1 buffer、output2 buffer等存储空间。在FPGA器件中,由于BRAM片上存储空间有限,image buffer等容量有限不能存下所有输入通道图像的卷积窗口,在卷积计算过程中还需要设置一个存储中间部分卷积结果的middlebuffer缓存空间来缓存。
在本发明***中,同样时钟频率下计算并行度越大对应的运行算力越高,执行的效率越高,但是消耗的硬件资源BRAM、DSP、寄存器和布线资源也越多,布线器布线的难度也越大。依据神经网络模型浅层输入数据多、中间结果多、输出结果多、权重数据少,而深层输入数据少、中间结果少、输出结果少、权重数据多的特点以及FPGA器件中硬件资源的特性,设计输入通道、输出通道并行度为16,像素并行度为8。在FPGA设计过程中确定了一种计算并行度结构,对应的峰值算力也确定下来。在该种计算并行度下每次计算的数据量和格式都是输入图像列方向上8个像素点、深度方向上16个像素点以及16个权重滤波器的深度方向16个权重参数数据。而神经网络结构模型中每一层的输入图像深度、宽度、高度以及权重滤波器的个数、尺寸等都不相同,设计出一种基于计算并行度的片上缓存及调度机制来适应不同的神经网络结构模型的不同数据量及格式的计算显得尤为重要。对于量化的权重参数为INT8,计算单元输入输出数据总线位宽设计为16*8=128bit与DDR总线位宽和通道并行度相互匹配,在数据流入流出过程中不需要消耗额外的缓存存储器对计算数据进行位宽转换,既节约了存储空间,也方便了设计。
上述Image buffer等总共7个逻辑功能缓存空间在FPGA器件中用的是嵌入式BRAM片上存储器,BRAM的特点是同时只有一组有效的读写端口,缓存空间大小由位宽和深度共同决定。在同时实现多个通道、多个像素点的卷积计算或者混合计算时,对于各个逻辑功能缓存空间的设计既要满足多组端口并行度的读写需求,又要有足够的空间保证数据在前后级的流入流出过程中的连续性。如图9是本***各功能缓存空间的设置参数。Image buffer用来存储神经网络模型每一层卷积计算的输入图像,由于每一层输入图像数据深度方向D、列方向W以及行方向H数量都是变化的,D随着每层卷积核个数的增加而增加,W和H方向随着卷积窗口及步幅变化而变动,在不考虑padding时输入和输出尺寸之间的关系表达式为o=(i-k)/s+1,其中i是输入图像尺寸,代表宽度或者高度,k是卷积窗口大小,s是卷积窗口滑动的步幅,o是卷积之后输出的尺寸。依据神经网络模型的特点,并统计了大部分常规神经网络模型的参数,得知输入图像深度D逐渐增加,而宽度、高度尺寸逐渐减小,并且列方向尺寸W与深度方向尺寸D的乘积W*D不会超过2048*16=32768,对于INT8定点量化方法每个像素占用8bit。一行图像数据按照深度方向与列方向组成的面尺寸为32768个像素点*8bit,在卷积窗口读出时同时支持8个像素并行度和16个输入通道并行度的数据的输出,将输入并行度16像素点*8bit=128bit设计为image buffer ram的数据位宽,同时设置8个ram支持8个像素并行度的输出,则一行数据最大占用ram深度=32768*8bit/8*16*8bit=256,若要支持窗口尺寸为7*7甚至更大尺寸的卷积运算,至少存储7行数据,另外为支持pipeline流水结构,加1行的机动调整空间,设计8行*256=2048个像素为image buffer ram的深度。如图10是image buffer ram空间示意图,image buffer设置了8个BRAM,每个BRAM位宽128bit,深度2048,深度方向用来区分输入图像数据行的边界。其中输入图像image在DDR中的存储顺序参照图11所示。从DDR中依次加载1行数据按输入通道、卷积核步幅S、列方向顺序写入image buffer的8个BRAM中。该种方法可以将一行的所有通道数据全部缓存起来,在计算过程中不用在通道方向方向反复从DDR读取数据,既节约了DDR带宽,又提高了每一行数据的复用率,同时还可以灵活的支持不同窗口尺寸K*K=3*3,5*5,7*7等和Stride不固定的卷积运算。并且每个BRAM都有一组读写端口,在地址空间里数据被读出时,同时也可以写入新的数据。比如卷积窗口在滑动时,一行数据被用完后,该地址空间可以被后面行的数据覆盖,地址空间循环使用,大大提高了缓存空间的利用率,同时也缩短甚至避免了图像数据加载的时间。
Weight buffer缓存空间存储了weight权重参数,在神经网络模型推理过程中,随着网络层数增加,权重滤波器的个数逐渐增加,对应于卷积计算输出的特征图像的深度方向D也是逐渐增加的,在统计大部分常规神经网络模型的参数时,得知权重滤波器的尺寸K*K*CH<=1024*16=16384,所以Weightbuffer设计16个ram同时支持16个输出通道数据的读出,每个ram数据位宽设计16*8bit=128bit支持16个输入通道数据的读和写操作。每个ram的深度=16384/16=1024。如图12是Weight buffer ram空间示意图,图13是Weight权重参数在DDR中的存储示意图,从DDR中依次加载16个权重滤波器参数按照输入通道、列方向、输出通道个数顺序写入16个ram中。由于weight buffer ram深度方向为1024大多数情况下是不会用满的,比如某一层的权重滤波器参数为K*K=3*3,通道数CH=256,此时ram深度方向存储了一组16个权重滤波器只用到了3*3*256/1024*16=1/8的存储空间,说明此时ram空间可以同时存储8组16个共计128个权重滤波器参数。同理weight buffer ram的读写端口和空余空间也能支持pipeline流水操作,比如卷积计算在读出前面1-4组weight权重滤波器参数的同时从片外DDR获取后面5-8组的权重滤波器参数写入另外的weight buffer ram空余空间,同时也支持前面组的权重滤波器参数用完后被覆盖,地址空间循环使用,大大提高了缓存空间的利用率,同时也缩短甚至避免了权重滤波器数据多次加载的时间。
Misc buffer用来缓存bias和scale等参数,本发明***图7中卷积计算过程中bias是在卷积窗口乘加计算后累加的一个偏置参数,scale是全部累加完成后再乘的一个系数,bias与scale参数在每一层中的个数与权重滤波器的个数相同,一个bias参数位宽为32bit,一个scale参数为16bit,bias和scale数据量相对较小。结合DDR总线位宽128bit和输出通道并行度16的特点,设置4个BRAM每个ram的数据位宽128bit,ram深度为512。如图14是Misc buffer ram空间示意图。在使用时,bias参数每4个32bit拼接成一组,scale参数,在16bit前面补16bit的0,然后再将4个补0后的scale参数拼接成一组,每组数据均是128bit包含4个参数,依次读取4组bias写入ram,再读取4组scale参数写入ram,交替的写入,在卷积计算时交替读出。既满足了输出并行度,又充分利用存储空间,还简化了bias和scale参数的读写操作。
在FPGA计算平台,由于在卷积计算过程中,卷积核尺寸较大或者通道数较大导致一次不能完成一个卷积核内所有像素的乘积累加,只能根据计算并行度在一个时钟周期内分别从image buffer ram和weight buffer ram读取数据出来进行卷积计算,计算完后产生了部分的中间结果,需要暂时缓存在middle1 buffer缓存空间中,等待卷积核中下一个像素乘积时再读出来进行累加,依此循环将卷积核尺寸、通道内的数据全部累加完成后产生最终输出结果才写入output1 buffer。所以middle1 buffer的位宽和深度依据计算并行度和卷积核尺寸、通道数而定。图15是middle buffer ram空间示意图中,middle1 bufferram设计为PP*OCP*D@32bit双端口,卷积计算image每个像素8bit*weight每个参数8bit=16bit,若卷积核尺寸最大为K*K*CH=8*8*1024,则卷积窗口内所有通道像素乘积的累加结果位宽不会超过16bit+10bit+6bit=32bit。所以每个卷积窗口产生的中间结果位宽为32bit,对应计算并行度,每个时钟周期内输出像素并行度8*输出并行度16个中间结果。如图在操作过程中将输出通道并行度16*32bit=512bit拼成一组,设计8个middle1 bufferram,每个ram位宽为512bit,在卷积计算过程中,卷积窗口从左至右滑动直至一行结束,产生一行中间结果,本***中一行的列方向W最大为1024,则ram深度为W/8=128。其读写端口,支持一组中间结果的写入同时支持另一组中间结果的读出。在混合计算过程中,输入数据为卷积结果输出的特征图像,数据位宽为8bit,混合计算过程不同于卷积窗口的乘、累加计算,多数情况下是在窗口内求最大值、平均值等计算过程,若窗口最大尺寸为K*K=8*8,则混合计算过程中产生的中间结果位宽为8+8=16bit,所以设计middle2 buffer ram设计为PP*OCP*D@16bit双端口,对应计算并行度,每个时钟周期内输出像素并行度8*输出并行度16个中间结果,同理将输出通道并行度16*16bit=256bit拼成一组,设计8个middle2buffer ram,每个ram位宽为256bit,则ram深度为W/8=128。其读写端口支持pipeline流水结构,保证数据不间断的读出计算。
在卷积计算最终结果输出缓存时,同时输出8像素并行度和16个输出通道并行度,并且每个像素为8bit,设置16个输出通道*8bit=128bit为output1buffer ram的数据位宽,8个ram的读端口同时支持8个像素的输出,图16是output buffer ram空间示意图。输出特征图像每一行的数据量为D*W=16*1024,则一行数据最大占用ram深度=16*1024*8bit/8*16*8bit=128,若混合计算过程支持窗口尺寸为7*7甚至更大尺寸的卷积运算,至少存储7行数据,另外为支持pipeline流水结构,再加1行的机动调整空间,设计8*128=1024个像素为output1 buffer ram的深度。在output1 buffer ram存储了部分卷积结果后作为混合计算类型的输入数据缓存空间,启动混合结算过程,混合计算从output1 buffer中取数据过程类似于卷积计算从image buffer中的取数过程,对应于计算并行度在混合计算窗口内输出混合计算过程中比较或者累加的中间结果,最后求得最大值和平均值,将该最终计算结果存入output2buffer。设置16个输出通道*8bit=128bit为output2 buffer ram的数据位宽,8个ram的写端口同时支持8个像素的写入。规整后的输出特征图像每一行的最大数据量为D*W=16*1024,则一行数据最大占用ram深度=16*1024*8bit/8*16*8bit=128,output2 buffer存入一定数量的计算结果后启动DDR回写过程,基于DDR的突发特性和pipeline流水缓存空间的需要,设置8*128=1024为每个ram的深度。在output2 bufferram中存入一定数量的特征结果后,数据量满足DDR突发长度时启动DDR传输,依次将8个ram中的数据读出写入DDR,保持混合计算的结果边写入output2 buffer ram边被读出写入DDR,这种pipeline流水结构保证数据连续的在流入流出,不存在等待数据加载或者间断的时间过程,大大提升了数据的计算和调度的效率。
在另一个实施例中,所述装置包括:获取单元,用于获取神经网络模型的计算类型,其中,包括当前层的所述计算类型和下一层计算类型;判断单元,用于判断所述计算类型是否满足预设条件,获得判断结果;运算单元,用于如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,获得混合计算结果;将所述混合计算结果写入到内存,从而缩短运算时间;其中,所述计算类型至少包括:卷积计算类型和混合计算类型。
在另一个实施例中,所述装置包括:存储器、处理器以及存储在存储器被处理器运行的可响应程序,其特征在于,所述处理器运行所述可响应程序时响应所述的运算方法的步骤。
需要说明的是:上述实施例提供的数据处理装置在进行程序开发时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将数据处理装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的数据处理装置与上述数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图5为本发明实施例中数据处理装置的结构示意图一,如图5所示,数据处理装置500可以是手柄、鼠标、轨迹球、手机、智能笔、智能手表、智能戒指、智能手环、智能手套等。图5所示的数据处理装置500包括:至少一个处理器501、存储器502、至少一个网络接口504和用户接口503。数据处理装置500中的各个组件通过总线***505耦合在一起。可理解,总线***505用于实现这些组件之间的连接通信。总线***505除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线***505。
其中,用户接口503可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。
可以理解,存储器502可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本发明实施例描述的存储器302旨在包括但不限于这些和任意其它适合类型的存储器。
本发明实施例中的存储器502用于存储各种类型的数据以支持数据处理装置500的操作。这些数据的示例包括:用于在数据处理装置500上操作的任何计算机程序,如操作***5021和应用程序5022;音乐数据;动漫数据;图书信息;视频、绘图信息等。其中,操作***5021包含各种***程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序5022可以包含各种应用程序,例如媒体播放器(MediaPlayer)、浏览器(Browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序5022中。
上述本发明实施例揭示的方法可以应用于处理器501中,或者由处理器501实现。处理器501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器501可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器501可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器502,处理器501读取存储器302中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,数据处理装置500可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable LogicDevice)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)、通用处理器、控制器、微控制器(MCU,Micro Controller Unit)、微处理器(Microprocessor)、或其他电子元件实现,用于执行前述方法。
具体所述处理器501运行所述计算机程序时,执行:获取神经网络模型的计算类型,其中,包括当前层的所述计算类型和下一层计算类型;判断所述计算类型是否满足预设条件,获得判断结果;如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,获得混合计算结果;将所述混合计算结果写入到内存;其中,所述计算类型至少包括:卷积计算类型和混合计算类型。
所述处理器501运行所述计算机程序时,还执行:判断所述计算类型是否满足预设条件,获得判断结果后,包括:如果所述判断结果为不满足,则将当前层的卷积计算结果写回所述内存,启动下一个循环的计算任务时再进行计算。
所述处理器501运行所述计算机程序时,还执行:如果所述判断结果为不满足,包括:当前层为卷积计算类型,下一层仍然为卷积计算类型。
所述处理器501运行所述计算机程序时,还执行:如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,包括:当前层为卷积计算类型,下一层为混合计算类型;在卷积计算结果的缓存区域取出所述下一层混合计算所需的输入数据进行混合计算。
所述处理器501运行所述计算机程序时,还执行:将所述混合计算结果写入到内存后,还包括:输入数据流在pipeline结构中进行处理。
所述处理器501运行所述计算机程序时,还执行:获取神经网络模型的计算类型前,包括:按卷积尺寸和strides取出数据,进行卷积计算。
所述处理器501运行所述计算机程序时,还执行:通过卷积尺寸和strides取出数据,进行卷积计算前,还包括:获取数据,按卷积规则缓存块存储。
在示例性实施例中,本发明实施例还提供了一种计算机可读存储介质,例如包括计算机程序的存储器502,上述计算机程序可由数据处理装置500的处理器501执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、FlashMemory、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备,如移动电话、计算机、平板设备、个人数字助理等。
一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器运行时,执行:获取神经网络模型的计算类型,其中,包括当前层的所述计算类型和下一层计算类型;判断所述计算类型是否满足预设条件,获得判断结果;如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,获得混合计算结果;将所述混合计算结果写入到内存;其中,所述计算类型至少包括:卷积计算类型和混合计算类型。
该计算机程序被处理器运行时,还执行:判断所述计算类型是否满足预设条件,获得判断结果后,包括:如果所述判断结果为不满足,则将当前层的卷积计算结果写回所述内存,启动下一个循环的计算任务时再进行计算。
该计算机程序被处理器运行时,还执行:如果所述判断结果为不满足,包括:当前层为卷积计算类型,下一层仍然为卷积计算类型。
该计算机程序被处理器运行时,还执行:如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,包括:当前层为卷积计算类型,下一层为混合计算类型;在卷积计算结果的缓存区域取出所述下一层混合计算所需的输入数据进行混合计算。
该计算机程序被处理器运行时,还执行:将所述混合计算结果写入到内存后,还包括:输入数据流在pipeline结构中进行处理。
该计算机程序被处理器运行时,还执行:获取神经网络模型的计算类型前,包括:按卷积尺寸和strides取出数据,进行卷积计算。
该计算机程序被处理器运行时,还执行:通过卷积尺寸和strides取出数据,进行卷积计算前,还包括:获取数据,按卷积规则缓存块存储。
上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (9)

1.一种基于神经网络的运算方法,其特征在于,所述方法包括:
获取神经网络模型的计算类型,其中,包括当前层的所述计算类型和下一层计算类型;
判断所述计算类型是否满足预设条件,获得判断结果;
如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,获得混合计算结果;
将所述混合计算结果写入到内存,
其中,所述计算类型至少包括:卷积计算类型和混合计算类型。
2.根据权利要求1所述的方法,其特征在于,判断所述计算类型是否满足预设条件,获得判断结果后,包括:
如果所述判断结果为不满足,则将当前层的卷积计算结果写回所述内存,启动下一个循环的计算任务时再进行计算。
3.根据权利要求2所述的方法,其特征在于,如果所述判断结果为不满足,包括:
当前层为卷积计算类型,下一层仍然为卷积计算类型。
4.根据权利要求1所述的方法,其特征在于,如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,包括:
当前层为卷积计算类型,下一层为混合计算类型;
在卷积计算结果的缓存区域取出所述下一层混合计算所需的输入数据进行混合计算。
5.根据权利要求4所述的方法,其特征在于,将所述混合计算结果写入到内存后,还包括:
输入数据流在pipeline结构中进行处理。
6.根据权利要求3所述的方法,其特征在于,获取神经网络模型的计算类型前,包括:
按卷积尺寸和strides取出数据,进行卷积计算。
7.根据权利要求6所述的方法,其特征在于,通过卷积尺寸和strides取出数据,进行卷积计算前,还包括:
获取数据,按卷积规则缓存块存储。
8.一种基于神经网络的运算装置,其特征在于,所述装置包括:
获取单元,用于获取神经网络模型的计算类型,其中,包括当前层的所述计算类型和下一层计算类型;
判断单元,用于判断所述计算类型是否满足预设条件,获得判断结果;
运算单元,用于如果所述判断结果为满足,则取出下一层混合计算所需的输入数据进行混合计算,获得混合计算结果;将所述混合计算结果写入到内存,从而缩短运算时间,其中,所述计算类型至少包括:卷积计算类型和混合计算类型。
9.一种基于神经网络的运算装置,其特征在于,所述装置包括:存储器、处理器以及存储在存储器被处理器运行的可响应程序,其特征在于,所述处理器运行所述可响应程序时响应如权利要求1至7任一项所述的运算方法的步骤。
CN202010590865.3A 2020-06-24 2020-06-24 一种基于神经网络的运算方法及装置 Pending CN111767986A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010590865.3A CN111767986A (zh) 2020-06-24 2020-06-24 一种基于神经网络的运算方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010590865.3A CN111767986A (zh) 2020-06-24 2020-06-24 一种基于神经网络的运算方法及装置

Publications (1)

Publication Number Publication Date
CN111767986A true CN111767986A (zh) 2020-10-13

Family

ID=72721868

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010590865.3A Pending CN111767986A (zh) 2020-06-24 2020-06-24 一种基于神经网络的运算方法及装置

Country Status (1)

Country Link
CN (1) CN111767986A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112183732A (zh) * 2020-10-22 2021-01-05 中国人民解放军国防科技大学 卷积神经网络加速方法、装置和计算机设备
CN112862074A (zh) * 2021-02-07 2021-05-28 Oppo广东移动通信有限公司 模型运行方法、装置、电子设备及存储介质
CN113094118A (zh) * 2021-04-26 2021-07-09 深圳思谋信息科技有限公司 数据处理***、方法、装置、计算机设备和存储介质
CN113673701A (zh) * 2021-08-24 2021-11-19 安谋科技(中国)有限公司 神经网络模型的运行方法、可读介质和电子设备
WO2022160310A1 (zh) * 2021-01-30 2022-08-04 华为技术有限公司 一种数据处理方法和处理器
CN116756472A (zh) * 2023-08-17 2023-09-15 深圳云天励飞技术股份有限公司 卷积算子计算装置及方法
CN117391149A (zh) * 2023-11-30 2024-01-12 爱芯元智半导体(宁波)有限公司 神经网络输出数据的处理方法、装置及芯片
WO2024114505A1 (zh) * 2022-11-29 2024-06-06 中国科学院深圳先进技术研究院 一种通用、可配置的图像滤波计算多行输出***和方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112183732A (zh) * 2020-10-22 2021-01-05 中国人民解放军国防科技大学 卷积神经网络加速方法、装置和计算机设备
WO2022160310A1 (zh) * 2021-01-30 2022-08-04 华为技术有限公司 一种数据处理方法和处理器
CN112862074A (zh) * 2021-02-07 2021-05-28 Oppo广东移动通信有限公司 模型运行方法、装置、电子设备及存储介质
CN113094118A (zh) * 2021-04-26 2021-07-09 深圳思谋信息科技有限公司 数据处理***、方法、装置、计算机设备和存储介质
CN113673701A (zh) * 2021-08-24 2021-11-19 安谋科技(中国)有限公司 神经网络模型的运行方法、可读介质和电子设备
WO2024114505A1 (zh) * 2022-11-29 2024-06-06 中国科学院深圳先进技术研究院 一种通用、可配置的图像滤波计算多行输出***和方法
CN116756472A (zh) * 2023-08-17 2023-09-15 深圳云天励飞技术股份有限公司 卷积算子计算装置及方法
CN116756472B (zh) * 2023-08-17 2024-03-29 深圳云天励飞技术股份有限公司 卷积算子计算装置及方法
CN117391149A (zh) * 2023-11-30 2024-01-12 爱芯元智半导体(宁波)有限公司 神经网络输出数据的处理方法、装置及芯片
CN117391149B (zh) * 2023-11-30 2024-03-26 爱芯元智半导体(宁波)有限公司 神经网络输出数据的处理方法、装置及芯片

Similar Documents

Publication Publication Date Title
CN111767986A (zh) 一种基于神经网络的运算方法及装置
CN109213962B (zh) 运算加速器
KR102562715B1 (ko) 다수의 프로세서들 및 뉴럴 네트워크 가속기를 갖는 뉴럴 네트워크 프로세싱 시스템
US10929746B2 (en) Low-power hardware acceleration method and system for convolution neural network computation
CN107729989B (zh) 一种用于执行人工神经网络正向运算的装置及方法
CN112840356B (zh) 运算加速器、处理方法及相关设备
US9384168B2 (en) Vector matrix product accelerator for microprocessor integration
CN109871936B (zh) 用于处理神经网络中的卷积运算的方法和装置
US9411726B2 (en) Low power computation architecture
CN111915001B (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
JP2019109896A (ja) ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス
KR20190073302A (ko) 신경망의 컨볼루션 계산을 위한 방법 및 전자 디바이스
JP2020537785A (ja) ホスト通信されるマージされた重みと層単位命令のパッケージとを使用するニューラルネットワークアクセラレータによる多層ニューラルネットワーク処理
US11593628B2 (en) Dynamic variable bit width neural processor
JP2020107338A (ja) ニューラルネットワークのコンボルーション演算を処理する方法及びその装置
CN112950656A (zh) 一种基于fpga平台的按通道进行预读取数据的分块卷积方法
CN113673701A (zh) 神经网络模型的运行方法、可读介质和电子设备
CN113743599A (zh) 一种卷积神经网络的运算装置及服务器
CN113313247B (zh) 基于数据流架构的稀疏神经网络的运算方法
KR20190140841A (ko) 확률 적응적 자원 할당을 통한 신경망 하드웨어 가속
US11500962B1 (en) Emulating fine-grained sparsity in a systolic array
CN116611476A (zh) 性能数据预测方法、性能数据预测装置、电子设备及介质
US11803736B1 (en) Fine-grained sparsity computations in systolic array
CN113591031A (zh) 低功耗矩阵运算方法及装置
WO2021120036A1 (zh) 数据处理装置和数据处理方法

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
TA01 Transfer of patent application right

Effective date of registration: 20220402

Address after: Building C, No.888, Huanhu West 2nd Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai

Applicant after: Shenlan Intelligent Technology (Shanghai) Co.,Ltd.

Address before: 213000 No.103, building 4, Chuangyan port, Changzhou science and Education City, No.18, middle Changwu Road, Wujin District, Changzhou City, Jiangsu Province

Applicant before: SHENLAN ARTIFICIAL INTELLIGENCE CHIP RESEARCH INSTITUTE (JIANGSU) Co.,Ltd.

TA01 Transfer of patent application right
RJ01 Rejection of invention patent application after publication

Application publication date: 20201013

RJ01 Rejection of invention patent application after publication