首页> 中国专利> 一种协处理器、协处理器数据处理方法、设备及介质

一种协处理器、协处理器数据处理方法、设备及介质

摘要

本发明属于计算机领域,具体涉及一种协处理器、数据处理方法、设备及介质。其中,协处理器包括:挂载在主处理器上接收主处理器的自定义扩展指令的译码模块,并根据自定义扩展指令向协处理器中的预定模块发送控制预定模块功能的控制指令;输入数据控制模块基于译码模块的控制指令从数据缓存模块中获取待计算数据和/或权重数据,并将数据输入到计算模块;数据缓存模块获取待计算数据并缓存和/或缓存计算模块输出的中间数据;计算模块基于输入数据控制模块输入的数据按照译码模块的控制指令进行计算,并将计算结果发送到数据缓存模块。由协处理器处理GoogleNet网络中耗时的卷积运算,减少了神经网络中计算对外部存储器的访问,实现了对神经网络的推理加速。

著录项

  • 公开/公告号CN117151165A

    专利类型发明专利

  • 公开/公告日2023-12-01

    原文格式PDF

  • 申请/专利号CN202310900087.7

  • 发明设计人

    申请日2023-07-21

  • 分类号G06N3/0464;G06N3/08;G06T1/20;

  • 代理机构北京连和连知识产权代理有限公司;

  • 代理人黄艳南;刘小峰

  • 地址 250000 山东省济南市中国(山东)自由贸易试验区济南片区浪潮路1036号浪潮科技园S01楼35层

  • 入库时间 2024-04-18 19:58:26

说明书

技术领域

本发明属于计算机领域,具体涉及一种协处理器、数据处理方法、设备及介质。

背景技术

神经网络是人工智能发展的主要领域,近年来随着深度神经网络不断发展,在模型准确率不断提高的同时,模型的复杂度、计算量也不断增加。现在大多数研究人员使用GPU进行网络训练和推理,但GPU不仅价格高昂功耗消耗也十分巨大。ASIC设计出的加速器性能优异、能效比高,但灵活性差、开发周期长、设计成本高。CPU作为通用处理器更为常见,但很难满足复杂神经网络模型,特别是深度神经网络大规模的计算需求。

以上种种解决方案都无法以低成本、高效能地解决日益增加的神经网络模型的训练及推理问题。

因此,亟需一种有效的方案来应对上述问题。

发明内容

为解决上述问题,本发明提出一种协处理器,包括译码模块、计算模块、输入数据控制模块、数据缓存模块,其中:

所述译码模块挂载在主处理器上配置用于接收所述主处理器的自定义扩展指令,并根据所述自定义扩展指令向所述协处理器中的预定模块发送控制预定模块功能的控制指令;

所述输入数据控制模块配置用于基于所述译码模块的控制指令从数据缓存模块中获取待计算数据和/或权重数据,并将所述待计算数据和/或权重数据输入到计算模块;

所述数据缓存模块配置用于获取待计算数据并缓存和/或保存所述计算模块输出的中间数据;

所述计算模块配置用于基于输入数据控制模块输入的数据按照所述译码模块的控制指令进行计算,并将计算结果发送到数据缓存模块。

在本发明的一些实施方式中,数据缓存模块包括:

中间缓存模块,所述中间缓存模块配置接收所述计算模块输出的中间数据,并根据译码模块的控制指令对所述控制指令指定的数据进行缓存;

输出缓存模块,所述输出缓存模块配置用于接收所述计算模块的输出数据并根据译码模块的控制指令将所述输出数据发送到存储器中。

在本发明的一些实施方式中,输入数据控制模块进一步配置用于:

根据所述译码模块的控制指令从所述中间缓存模块中获取所述控制指令指定的中间数据,并将所述中间数据发送到计算模块。

在本发明的一些实施方式中,数据缓存模块还包括:

权重缓存模块,所述权重缓存模块配置用于预加载并缓存计算模块使用的权重数据;

计算数据缓存模块,所述计算数据缓存模块配置用于预加载并缓存所述计算模块使用的图像输入数据。

在本发明的一些实施方式中,计算模块包括卷积运算模块、激活模块、池化模块:

所述卷积运算模块配置用于根据所述译码模块的控制指令对输入数据控制模块输入的待计算数据或中间数据按照所述控制指令指定大小的卷积核进行卷积运算,以及根据卷积运算结果更新权重数据并根据译码模块的控制指令将所述更新的权重数据发送到数据缓存模块或激活模块;

所述激活模块配置用于根据所述译码模块的控制指令对输入的数据按照预定的激活方式进行激活运算,并根据所述译码模块的控制指令将所述激活运算的结构发送到数据缓存模块或计算模块中的池化模块或卷积运算模块;

所述池化模块配置用于根据所述译码模块的控制指令对输入数据进行池化计算,并将池化运算的结果根据所述译码模块的控制指令发送到数据缓存模块或激活模块。

在本发明的一些实施方式中,还包括:

存储控制模块,所述存储控制模块配置用于根据译码模块的控制指令将从对应的存储器中读取对应的待计算数据和/或权重数据并将所述待计算数据和/或权重数据发送到数据缓存模块。

在本发明的一些实施方式中,存储控制模块进一步配置用于:

根据译码模块的控制指令将数据缓存模块对应的输出数据发送到对应的存储器中。

本发明的另一方面还提出一种协处理器的数据处理方法,包括:

通过协处理器的译码模块接收主处理器的自定义扩展指令,并根据所述自定义扩展指令向协处理器中的预定模块发送控制所述预定模块功能的控制指令;

通过协处理器的输入数据控制模块对接收到对应的控制指令向从协处理器的数据缓存模块中获取待计算数据和/或权重数据,并将所述待计算数据和/或权重数据输入到协处理器的计算模块;

通过协处理器的数据缓存模块获取待计算数据并缓存和/或缓存所述计算模块输出的中间数据;

通过协处理器的计算模块基于输入数据控制模块输入的数据按照所述译码模块的控制指令进行计算,并将计算结果发送到数据缓存模块。

本发明的又一方面还提出一种计算机设备,包括:

至少一个处理器;以及

存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现上述实施方式中任意一项所述方法的步骤。

本发明的再一方面还提出一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述实施方式中任意一项所述方法的步骤。

本发明提出的一种协处理器具有以下有益效果:

1、由协处理器处理神经网络中耗时的卷积运算,通过设置中间缓存模块,减少了神经网络中对应的计算流模块中时对外部存储器的访问,实现了对神经网络的推理加速。

2、通过自定义指令可实现不同尺寸卷积核、不同卷积步长、池化步长、边缘补零的配置,可满足神经网络不同卷积层的配置要求。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种协处理器的结构示意图;

图2为本发明实施例提供的一种协处理器的数据处理方法的流程示意图;

图3为本发明实施例提供的一种计算机设备的结构示意图;

图4为本发明实施例提供的一种计算机可读存储介质的结构示意图;

图5为本发明实施例提供的一种协处理器的详细结构示意图;

图6为本发明实施例提供的一种协处理器的数据缓存模块的结构示意图;

图7为本发明实施例提供的一种协处理器的计算模块的结构示意图;

图8为本发明实施例提供的一种协处理器的自定义扩展指令的指令内容示意图;

图9为本发明另一实施例提供的一种协处理器的执行流程示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

本发明旨在解决传统的对神经网络模型的训练及推理等应用时实现目标效果所消耗的成本较高的问题。传统的对神经网络模型的训练及推理大都使用的是GPU、TPU或CPU等通用计算设备作为训练及推理设备,上述方式要么是成本过高,要么是对于深层的神经网络模型的处理能力不足,难以以低成本、高效能的满足对深度神经网络的应用。

如图1所示,为解决上述问题,本发明提出一种协处理器,包括译码模块1、计算模块4、输入数据控制模块2、数据缓存模块3,其中:

所述译码模块1挂载在主处理器上配置用于接收所述主处理器的自定义扩展指令,并根据所述自定义扩展指令向所述协处理器中的预定模块发送控制预定模块功能的控制指令;

所述输入数据控制模块2配置用于基于所述译码模块1的控制指令向从数据缓存模块中获取待计算数据和/或权重数据,并将所述待计算数据和/或权重数据输入到计算模块;

所述数据缓存模块3配置用于获取待计算数据并缓存和/或缓存所述计算模块输出的中间数据;

所述计算模块4配置用于基于输入数据控制模块输入的数据按照所述译码模块的控制指令进行计算,并将计算结果发送到数据缓存模块。

在本实施例中,本发明提出用于深度神经网络的协处理器,包括用于和主处理器进行交互的译码模块1,译码模块1挂载在主处理器之上,主要接收主处理器发送的自定义的扩展指令,自定义扩展指令是指由协处理器执行的指令,主处理器无法执行。进一步,译码模块1对自定义扩展指令进行解析得到控制协处理器上各个模块的控制指令,并将控制指令分别发送到对应的模块。

具体地,如图8所示,译码模块接收到的自定义扩展指令共分为两种,一种是操作指令,一种是配置指令,操作类指令和配置类指令均为32位的指令数据,32位的指令数据中对应的内容如图8所示,25:31中的第31位表示指令类型,如果该位置为1表示该指令是操作指令,如果为0则表示是配置指令。第27到第30位表示卷积尺寸/图像尺寸的大小,对应大小的卷积数据到计算模块4。在本发明的一些实施例中所述配置类指令,第25位为1表示加载权重请求,第7至11位用于配置卷积通道数,第27至30位用于配置卷积核尺寸;第26位为1表示加载图像请求,第7至11位用于配置图像尺寸。

所述操作类指令,第7位为1时表示执行卷积运算,第8位为1时表示执行激活运算,激活函数为Relu,第9至11位用于配置执行池化运算,第25至26位用于配置边缘补零,第27至28位用于配置卷积与池化步长,第29至30位用于配置池化层大小。

进一步,如图5所示,图5示出的是一个以RISC-V处理器架构平台的协处理器实现方案,本发明设计的协处理器挂载到RISC-V处理器上,RISC-V处理器作为主处理器。图5中协处理中的译码模块1向协处理器中的各个模块发送对应的控制指令。

进一步,本发明提出的协处理器中还包括输入数据控制模块2,输入数据控制模块2的执行的操作由译码模块1发出的控制指令激活或者说是受控与译码模块1。输入数据控制模块2主要的功能是根据译码模块1发出的控制指令,将数据缓存模块3中的待计算数据以及模型权重数据发送到计算模块4中计算。

另外,在输入数据控制模块2中设置了多个FIFO(First Input First Output)队列,用来实现将数据缓存模块3中的数据以多通道的方式输入到计算单元。

在一些实施例中,输入数据控制模块2中的FIFO数量的设置根据计算模块中计算能力而定,例如可以根据卷积计算时最大的卷积核尺寸进行设计,设计为满足或超过最大卷积核尺寸。

进一步,本发明提出的协处理中还包括计算模块4,计算模块4中包含多种类型的计算单元,用于实现将输入数据控制模块2输入的数据按照所述译码模块1的控制指令进行计算,并将计算结果发送到数据缓存模块3。

在本发明的一些实施方式中,数据缓存模块3包括:

中间缓存模块31,所述中间缓存模块31配置接收所述计算模块4输出的中间数据,并根据译码模块1的控制指令对所述控制指令指定的数据进行缓存;

输出缓存模块32,所述输出缓存模块32配置用于接收所述计算模块4的输出数据并根据译码模块1的控制指令将所述输出数据发送到存储器中。

在本实施例中,如图6所示,数据缓存模块3中还设有中间缓存模块31输出缓存模块32,其中中间缓存模块31用于存储计算模块4输出的计算结果,但并不是说将计算模块4所有的计算结果都缓存。计算模块4的计算结果要缓存到中间缓存模块31的行为是由译码模块1的控制指令实现,译码模块的控制指令指示了将对应的计算结果缓存到中间缓存模块31时,该控制指令可分两部分,一部分指示计算模块4将计算结果发送到中间缓存模块31,该指令的另一部分是指示中间缓存模块31将对应的数据接收。

此外,中间缓存模块31缓存的对应的数据称为中间数据,中间缓存模块31只有在收到译码模块1对具体的中间数据的控制指令后,根据该控制指令的目标点(即协处理对应的模块或外部存储器)而将该中间数据发送到对应的目标点。

进一步,输出缓存模块32用于缓存计算模块4计算的结果,计算模块4中是由多个并行单元执行,一些数据计算任务被拆分成多个计算任务被并行执行,通过输出缓存模块32可将拆分的计算任务的结果进行缓存,当满足运算整体需要时进行组装发出。

进一步,如图5所示,中间缓存模块31可以将中间数据发送到输入数据控制模块2和存储控制模块5,存储控制模块5是与外部的内存或存储器进行数据DMA交互的模块。即通过存储控制模块5可以将数据写入到内存或其他存储器中。同样输出缓存模块32也通过存储控制模块5实现将对应的数据发送到协处理器之外的存储器。

在本发明的一些实施方式中,输入数据控制模2块进一步配置用于:

根据所述译码模块1的控制指令从所述中间缓存模块31中获取所述控制指令指定的中间数据,并将所述中间数据发送到计算模块4。

在本实施例中,输入数据控制模块2可从中间缓存模块31中获取对应的中间数据,获取中间缓存模块31的数据有译码模块1给出的控制指令实现,具体获取哪些数据,在什么时间获取数据是由上层的编译软件对神经网络的运行过程进行编译,将神经网络的数据计算流编译成对应的在协处理器上控制协处理器各个模块工作的指令。

在本发明的一些实施方式中,数据缓存模块3还包括:

权重缓存模块33,所述权重缓存模块33配置用于预加载并缓存计算模块使用的权重数据;

计算数据缓存模块34,所述计算数据缓存33模块配置用于预加载并缓存所述计算模块使用的图像输入数据。

参考图5和图6,在本实施例中,数据缓存模块3还包括权重缓存模块33和计算数据缓存模块34。其中权重缓存模块33用来缓存从外部存储器7中加载而来的具体的神经网络模型的权重数据,计算数据缓存模块34则用于缓存从外部存储器7中加载而来的计算数据,计算数据根据神经网络模型的输入数据有不同的数据类型。例如是图像数据、文本数据或者是预处理后的其他类型的输入数据。

在本发明的一些实施方式中,计算模块包括卷积运算模块41、激活模块42、池化模块43:

所述卷积运算模块41配置用于根据所述译码模块1的控制指令对输入数据控制模块2输入的待计算数据或中间数据按照所述控制指令指定大小的卷积核进行卷积运算,以及根据卷积运算结果更新权重数据并根据译码模块的控制指令将所述更新的权重数据发送到数据缓存模块或激活模块;

所述激活模块配置用于根据所述译码模块的控制指令对输入的数据进行按照预定的激活方式进行激活运算,并根据所述译码模块的控制指令将所述激活运算的结构发送到数据缓存模块或计算模块中的池化模块或卷积运算模块;

所述池化模块配置用于根据所述译码模块的控制指令对输入数据进行池化计算,并将池化运算的结果根据所述译码模块的控制指令发送到数据缓存模块或激活模块。

在本实施例中,如图7所示,计算模块4主要包括卷积运算模块41、激活模块42、池化模块43。其中卷积运算模块41中是由预定尺寸大小的PE矩阵组成,在本实施例中是由10行10列共100个PE阵列组成,最大可直接进行10×10的卷积运算。因此,卷积运算模块41的卷积计算可通过译码模块1的控制指令进行控制,如果神经网络中对应的计算流中的卷积计算的卷积核为3×3,则卷积计算模块41计算的卷积运算可同时并行执行10个3×3的卷积运算。在进行卷积运算时需要有译码模块发出对应的控制指令到输入数据控制模块2,通过输入数据控制模块2从权重缓存模块33和计算数据缓存模块34中获取对应的权重数据和计算数据输入到卷积运算模块41,或者是从中间缓存模块31中获取对应的中间数据输入到卷积运算模块41中进行计算。或者是在译码模块1控制下将激活模块42输出的计算数据输入到卷积运算模块41中进行计算。

此外,卷积运算模块41输出的计算结果由译码模块1的控制指令来控制以实现将计算结构发送到输出缓存模块32、中间缓存模块31和/或激活模块42中。

类似地,激活模块41和池化模块42同样受制于译码模块1的控制指令有输入数据控制模块2输入数据或者是从其他的计算模块获取数据,在译码模块1的控制指令下执行神经网络对应的计算流的计算任务,并将计算结果发送到控制指令指示的地方。

在本发明的一些实施方式中,还包括:

存储控制模块5,所述存储控制模块配置用于根据译码模块的控制指令将从对应的存储器中读取对应的待计算数据和/或权重数据并将所述待计算数据和/或权重数据发送到数据缓存模块。

在本发明的一些实施方式中,存储控制模块5进一步配置用于:

根据译码模块的控制指令将数据缓存模块对应的输出数据发送到对应的存储器中。

在本实施例中,本发明提供的协处理器还设有与外部存储器7进行数据交互的存储控制模块5,存储控制模块5受制于译码模块的对应的控制指令将外部存储器7中的数据写入到数据缓存模块3,或者是将数据缓存模块3中的数据写入到存储器7中,存储器7不限于内存、磁盘等数据媒介。

实施例:

在本实施例中,本发明以GoogLeNet神经网络的作为协处理器的运行实例,即该协处理器适配GoogLeNet网络实现以GoogLeNet网络的计算流的运行过程,具体地:

具体地,如图5所示,本发明提出基于RISC-V架构的GoogLeNet网络加速器,包括存储器、RISC-V主处理器和协处理器。存储器用于存储数据,包括图像数据和权重数据。RISC-V主处理器用于发送自定义扩展指令。协处理器用于执行自定义扩展指令,根据接收的扩展指令,从存储器或缓存中读取输入数据,对输入数据进行运算处理得到输出数据,根据指令内容将输出数据存入存储器或缓存中。

协处理器包括译码模块1、权重缓存模块33、图像缓存模块(相当于计算数据缓存模块,由于GoogLeNet网络是图像处理网络,因此计算数据为图像数据)34、输入数据控制模块2、卷积运算模块41、激活模块42、池化模块43、中间缓存模块31、输出缓存模块32:

译码模块1用于接收主处理器发送的扩展指令并向协处理器作出响应,对扩展指令进行解码,得到配置信息,根据配置信息配置其他模块;

图像缓存模块34和权重缓存模块33属于数据缓存模块3,用于存储从存储器7或输出缓存模块32中读取的输入数据,并输入到输入数据控制模块2;

输入数据控制模块2,接收来自数据缓存模块3的数据,根据译码模块1发出的控制指令得到的配置信息,如输入图像尺寸、卷积核尺寸、边缘补零信息进行配置,配置完成后并行输入卷积模块或池化模块;

卷积运算模块41,用于执行卷积神经网络的卷积运算,由10行10列共100个PE阵列组成;

激活模块42,用于执行卷积神经网络的激活运算,激活函数为Relu;

池化模块43,根据指令内容执行卷积神经网络的池化运算,即可执行最大池化也可执行平均池化;

输出缓存模块32,用于存储卷积模块、激活模块或池化模块的计算结果,根据译码模块1的控制指令内容将计算结果发送至数据缓存模块3或存储器7;

中间缓存模块31,用于缓存GoogLeNet网络中Inception模块中的结算结果,根据相应的控制指令信息将中间计算结果缓存,作为下一次计算的输入数据;

在协处理器接收到自定义指令时,根据指令内容,配置各个模块,分别加载图像数据和权重数据到图像缓存模块34和权重缓存模块。所述输入数据控制模块2,可根据指令信息配置边缘补零、输入图像尺寸、卷积核尺寸、步长。中间缓存模块31可以缓存Inception块中连续运算过程中的中间计算结果。输出缓存模块32,用于缓存卷积、激活或池化操作后的计算结果,再根据下一条指令内容将结果发送至输入缓存或存储器。

本发明用于加速的扩展指令分为设置类指令和操作类指令两类;

所述设置类指令,包括加载图像和加载权重两种指令;

所述加载图像指令,包含输入特征图尺寸信息;

所述加载权重指令,包含卷积核尺寸和通道数信息;

所述操作类指令,包括卷积指令、激活指令、池化指令、边缘补零、卷积/激活/池化步长、池化尺寸。

进一步,本发明提出的协处理的执行流程如图9所示,具体地:

在所述RISC-V主处理器接收到自定义扩展指令后,根据指令操作码判断其属于自定义扩展指令,若属于自定义扩展指令,将指令发送到协处理器进行进一步译码。协处理器的工作流程图如图9所示,当协处理器接收到扩展指令为加载图像和加载权重时,协处理器会根据指令的内容将数据从存储器7加载到图像缓存模块34和权重缓存模块33中。当协处理器接收到卷积指令时,数据缓存模块3将数据发送至输入数据控制模块2,输入数据控制模块2根据指令内容配置完成后将缓存的数据并行输入卷积模块41或池化模43块进行运算。所述卷积运算模块41由10行10列共100个PE阵列组成,根据获得的卷积核尺寸信息,卷积核尺寸为1x1时,可并行执行100通道卷积;卷积核尺寸为3x3,可并行执行9通道卷积运算;卷积核尺寸为5x5时,可并行执行4通道卷积运算;卷积核尺寸为7x7时,仅可单通道进行卷积运算。当卷积或池化运算结束后接收到激活指令,则进行激活运算。最后根据指令内容将计算结果输入至输出缓存、中间缓存或存储器中。

所述协处理器的译码模块1在接收到池化指令时,会根据配置信息和指令内容进行相应运算操作,可对池化尺寸、池化步长、边缘补零、池化方式进行配置。

协处理器可根据指令内容可组合多个运算模块来实现不同运算需要。所述输入数据控制模块可根据指令内容对输入数据进行处理,包括图像尺寸,边缘补零、步长进行配置以满足复杂灵活的计算要求。

所述中间缓存模块31可用于缓存GoogLeNet网络Inception块中连续运算过程中的中间计算结果,减少对存储器的读写,提升运算效率。同样,数据缓存模块3的权重缓存模块33和图像缓存模块34与输出缓存模块32的作用均为减少对存储器7的读写,提升效率。

本发明所述扩展指令为32位自定义指令,如图8所示,可分为配置类指令和操作类指令,根据指令最高位判断指令类型,最高位1时为操作类指令,为0时为配置类指令。

所述配置类指令,第25位为1表示加载权重请求,第7至11位用于配置卷积通道数,第27至30位用于配置卷积核尺寸;第26位为1表示加载图像请求,第7至11位用于配置图像尺寸。

所述操作类指令,第7位为1时表示执行卷积运算,第8位为1时表示执行激活运算,激活函数为Relu,第9至11位用于配置执行池化运算,第25至26位用于配置边缘补零,第27至28位用于配置卷积与池化步长,第29至30位用于配置池化层大小。

以GoogLeNet神经网络中的Inception 3a层为例,执行步骤如下:

步骤一:从存储器7中加载权重数据对权重缓存模块33进行更新,对输入数据控制模块2进行重新配置。

步骤二:加载输出缓存模块32中的数据至图像缓存模块34。

步骤三:进行卷积运算。

步骤四:进行激活运算,将输出数据存入存储器。

步骤五:从存储器7中加载权重数据对权重缓存模块33进行更新,对输入数据控制模块2进行重新配置。

步骤六:进行1×1×96的卷积。

步骤七:进行激活运算,将输出数据存入中间缓存模块31。

步骤八:从存储器7中加载权重数据对权重缓存模块33进行更新,对输入数据控制模2块进行重新配置。

步骤九:从中间缓存模块31中加载图像数据(中间图像数据)。

步骤十:进行3×3×128的卷积运算,将输出数据存入存储器7。

步骤十一:从存储器7中加载权重数据对权重缓存模块33进行更新,对输入数据控制模块2进行重新配置。

步骤十二:进行1×1×16的卷积运算。

步骤十三:进行激活运算,将输出数据存入中间缓存模块31。

步骤十四:从存储器7中加载权重数据对权重缓存模块33进行更新,对输入数据控制模块2进行重新配置。

步骤十五:从中间缓存模块31中加载图像数据。

步骤十六:进行5×5×32的卷积运算后,将输出数据存入存储器7。

步骤十七:从图像缓存模块34加载图像数据进行池化运算,将输出数据存入中间缓存模块31。

步骤十八:从存储器7中加载权重数据对权重缓存模块33进行更新,对输入数据控制模块2进行重新配置。

步骤十九:进行1×1×32的卷积运算,将输出数据存入存储器7。

本发明技术方案带来的有益效果:

1、本发明通过设置协处理器,由协处理器处理GoogLeNet网络中耗时的卷积运算,通过设置中间缓存模块,减少了GoogLeNet网络中计算Inception模块中时对外部存储器的访问,实现了对GoogLeNet神经网络的推理加速。

2、通过自定义指令可实现不同尺寸卷积核、不同卷积步长、池化步长、边缘补零的配置,可满足GoogLeNet网络不同卷积层的配置要求。

如图2所示,本发明的另一方面还提出一种协处理器的数据处理方法,包括:

步骤S1、通过协处理器的译码模块接收主处理器的自定义扩展指令,并根据所述自定义扩展指令向协处理器中的预定模块发送控制所述预定模块功能的控制指令;

步骤S2、通过协处理器的输入数据控制模块对接收到对应的控制指令向从协处理器的数据缓存模块中获取待计算数据和/或权重数据,并将所述待计算数据和/或权重数据输入到协处理器的计算模块;

步骤S3、通过协处理器的数据缓存模块获取待计算数据并缓存和/或缓存所述计算模块输出的中间数据;

步骤S4、通过协处理器的计算模块基于输入数据控制模块输入的数据按照所述译码模块的控制指令进行计算,并将计算结果发送到数据缓存模块。

如图3所示,本发明的又一方面还提出一种计算机设备,包括:

至少一个处理器2001;以及

存储器2002,所述存储器2002存储有可在所述处理器2001上运行的计算机指令2003,所述指令2003由所述处理器2001执行时实现上述实施方式中任意一项所述方法的步骤。

如图4所示,本发明的再一方面还提出一种计算机可读存储介质401,所述计算机可读存储介质401存储有计算机程序402,所述计算机程序402被处理器执行时实现上述实施方式中任意一项所述方法的步骤。

以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。

应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。

上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号