CN111563579B - 基于数据流的cnn加速方法、装置、设备及存储介质 - Google Patents
基于数据流的cnn加速方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111563579B CN111563579B CN202010351174.8A CN202010351174A CN111563579B CN 111563579 B CN111563579 B CN 111563579B CN 202010351174 A CN202010351174 A CN 202010351174A CN 111563579 B CN111563579 B CN 111563579B
- Authority
- CN
- China
- Prior art keywords
- acceleration
- cnn
- accelerated
- mode
- layer
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computer And Data Communications (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于数据流的CNN加速方法、装置、设备及存储介质,所述方法包括:基于待加速CNN网络的加速需求确定加速模式以及工作状态,而后获取所述待加速CNN网络中各层的特征数据,并基于各层的特征数据以及所述加速模式,确定所述待加速CNN网络中各层各自对应的最优加速拆分方式,接下来基于所述待加速CNN网络中各层的特征数据选择加速单元粒度,最后基于所述加速模式、工作状态、最优加速拆分方式以及加速单元粒度,对所述待加速CNN网络进行加速。通过确定最优加速拆分方式,提升了硬件加速器在对所述待加速CNN网络进行加速时的运算效率和通用性。
Description
技术领域
本发明涉及机器学习技术领域,尤其涉及一种基于数据流的CNN加速方法、装置、设备及存储介质。
背景技术
随着人工智能技术的深入发展,对人工智能芯片的算力提出了更高的要求,算力成为决定算法落地的重中之重,但摩尔定律的放缓甚至失效让芯片靠先进半导体工艺来提高芯片的性能和能效难度越来越大,CNN通用硬件加速器作为人工智能芯片的核心部件,它的运算效率及适应性直接关系着人工智能芯片的性能及竞争力。
目前,用于实现AI算法的主要硬件载体是GPU、CPU和专用硬件加速器,其中,GPU和CPU有通用性强的优势,但运算效率低;而专用硬件加速器可以针对某特定算法实现高效处理,但在通用性方面则存在明显不足。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种基于数据流的CNN加速方法、装置、设备及存储介质,旨在解决现有专用硬件加速器计算效率和通用性不高的技术问题。
为实现上述目的,本发明提供一种基于数据流的CNN加速方法,所述的基于数据流的CNN加速方法包括以下步骤:
基于待加速CNN网络的加速需求确定加速模式以及工作状态;
获取所述待加速CNN网络中各层的特征数据,并基于各层的特征数据以及所述加速模式,确定所述待加速CNN网络中各层各自对应的最优加速拆分方式;
基于所述待加速CNN网络中各层的特征数据选择加速单元粒度;
基于所述加速模式、工作状态、最优加速拆分方式以及加速单元粒度,对所述待加速CNN网络进行加速。
进一步地,在一实施方式中,所述基于待加速CNN网络的加速需求确定加速模式的步骤包括:
获取待加速CNN网络包括的CNN网络数量,以及所述硬件加速器包括的子加速单元数量;
基于所述加速需求、所述CNN网络数量以及所述子加速单元数量,确定所述待加速CNN网络对应的加速模式。
进一步地,在一实施方式中,所述基于所述加速需求、所述CNN网络数量以及所述子加速单元数量,确定所述待加速CNN网络对应的加速模式的步骤包括:
当所述CNN网络数量小于所述子加速单元数量时,基于所述加速需求确定所述加速模式为一对多模式;
当所述CNN网络数量等于所述子加速单元数量时,基于所述加速需求确定所述加速模式为一对一模式。
进一步地,在一实施方式中,所述获取所述待加速CNN网络中各层的特征数据,并基于各层的特征数据以及所述加速模式,确定所述待加速CNN网络中各层各自对应的最优加速拆分方式的步骤包括:
获取所述待加速CNN网络中各层对应的输入数据准备时间;
基于所述各层的特征数据、所述加速模式,计算得到各层对应的加速阵列运算时间;
基于所述输入数据准备时间以及所述加速阵列运算时间,确定所述待加速CNN网络中各层对应的最优加速拆分方式。
进一步地,在一实施方式中,所述基于所述输入数据准备时间以及所述加速阵列运算时间,确定所述待加速CNN网络中各层对应的最优加速拆分方式的步骤包括:
当所述输入数据准备时间小于或等于所述加速阵列运算时间时,确定最优加速拆分方式为按通道拆分方式;
当所述输入数据准备时间大于所述加速阵列运算时间时,确定最优加速拆分方式为按行拆分方式。
进一步地,在一实施方式中,所述基于所述待加速CNN网络中各层的特征数据选择加速单元粒度的步骤包括:
在预设粒度类型中,基于所述待加速CNN网络中各层的特征数据选择所述待加速CNN网络中各层各自对应的加速单元粒度。
进一步地,在一实施方式中,所述基于待加速CNN网络的加速需求确定工作状态的步骤包括:所述工作状态包括手动模式和自动模式。
进一步地,在一实施方式中,所述基于数据流的CNN加速装置包括:
确定模块,用于基于待加速CNN网络的加速需求确定加速模式以及工作状态;
处理模块,用于获取所述待加速CNN网络中各层的特征数据,并基于各层的特征数据以及所述加速模式,确定所述待加速CNN网络中各层各自对应的最优加速拆分方式;
选择模块,用于基于所述待加速CNN网络中各层的特征数据选择加速单元粒度;
加速模块,用于基于所述加速模式、工作状态、最优加速拆分方式以及加速单元粒度,对所述待加速CNN网络进行加速。
此外,为实现上述目的,本发明还提供一种设备,所述设备是硬件加速器,所述硬件加速器包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于数据流的CNN加速程序,所述基于数据流的CNN加速程序被所述处理器执行时实现上述任一项所述的基于数据流的CNN加速方法的步骤。
此外,为实现上述目的,本发明还提供一种存储介质,所述存储介质上存储有基于数据流的CNN加速程序,所述基于数据流的CNN加速程序被处理器执行时实现上述任一项所述的基于数据流的CNN加速方法的步骤。
本发明基于待加速CNN网络的加速需求确定加速模式以及工作状态,而后获取所述待加速CNN网络中各层的特征数据,并基于各层的特征数据以及所述加速模式,确定所述待加速CNN网络中各层各自对应的最优加速拆分方式,接下来基于所述待加速CNN网络中各层的特征数据选择加速单元粒度,最后基于所述加速模式、工作状态、最优加速拆分方式以及加速单元粒度,对所述待加速CNN网络进行加速。通过确定最优加速拆分方式,提升了硬件加速器在对所述待加速CNN网络进行加速时的运算效率和通用性,而且硬件加速器包括多个子加速单元,从而可以支持多个CNN网络网络并行独立加速的,扩展了硬件加速的使用范围。
附图说明
图1是本发明实施例方案涉及的硬件运行环境中硬件加速器的结构示意图;
图2为本发明基于数据流的CNN加速方法第一实施例的流程示意图;
图3为本发明基于数据流的CNN加速方法第二实施例的流程示意图;
图4为本发明基于数据流的CNN加速装置实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境中硬件加速器的结构示意图。
如图1所示,该硬件加速器可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的目标检测系统结构并不构成对硬件加速器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于数据流的CNN加速程序。
在图1所示的硬件加速器中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接用户端,与用户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的基于数据流的CNN加速程序。
在本实施例中,硬件加速器包括:存储器1005、处理器1001及存储在所述存储器1005上并可在所述处理器1001上运行的基于数据流的CNN加速程序,其中,处理器1001调用存储器1005中存储的基于数据流的CNN加速程序时,执行本申请各个实施例提供的基于数据流的CNN加速方法的步骤。
本发明还提供一种基于数据流的CNN加速方法,参照图2,图2为本发明基于数据流的CNN加速方法第一实施例的流程示意图。
本发明实施例提供了基于数据流的CNN加速方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中,该基于数据流的CNN加速方法包括:
步骤S100,基于待加速CNN网络的加速需求确定加速模式以及工作状态;
具体地,步骤S100包括:
步骤S110,获取待加速CNN网络包括的CNN网络数量,以及所述硬件加速器包括的子加速单元数量;
步骤S120,基于所述加速需求、所述CNN网络数量以及所述子加速单元数量,确定所述待加速CNN网络对应的加速模式。
具体地,步骤S120包括:
步骤S121,当所述CNN网络数量小于所述子加速单元数量时,基于所述加速需求确定所述加速模式为一对多模式;
步骤S122,当所述CNN网络数量等于所述子加速单元数量时,基于所述加速需求确定所述加速模式为一对一模式。
在本实施例中,硬件加速器是专用的定点功能外设,用于实现重复计算复杂的单个任务。它们减轻了主处理器的负担,主处理器可以主要做一些在结构上几乎没有什么规律的通用任务。
在对基于深度学习的AI算法部署时,目前主要采用GPU和专用硬件加速器实现,其中,GPU采用主流计算机架构下大规模并行指令集设计的思路,性能功耗比不高,不适合部署在边缘侧智能设备;专用硬件加速器针对某种特定算法可以实现高效加速,但在场景的适应性方面存在明显不足,切换为新的算法及应用场景后经常出现难以适配的困境,需要重新投入大量人力物力进行迭代开发,造成人工智能应用部署成本高和难以快速落地。本申请提出的基于数据流的CNN加速方法,通过灵活的数据流适配架构突破底层架构的效率瓶颈,最大化发挥底层硬件的利用效率,在同等峰值芯片性能情况下可以为人工智能应用提供更高的算力支撑,同时引入全新的多CNN加速单元共享及拆分配置方式,能够满足对单个或多个CNN网络同时进行硬件加速,大大扩展了硬件加速单元的使用范围,并通过确定最优加速拆分方式,提升了硬件加速器在对CNN网络进行加速时的运算效率和通用性。
具体地,因为硬件加速器设置有多个子加速单元,故硬件加速器的加速模式可以分为一对一模式和一对多模式,其中,硬件加速器中至少内置2个子加速单元。当CNN网络数量小于子加速单元数量时,基于加速需求确定加速模式为一对多模式;当CNN网络数量等于子加速单元数量时,基于加速需求确定加速模式为一对一模式。举例说明,假设硬件加速器中至少内置4个子加速单元,如果是单个CNN网络加速则采用一对多模式;如果是多个CNN网络,比如4个CNN网络加速,则采用一对一模式;如果是多个CNN网络,比如2个,CNN网络数量2小于子加速单元数量4,采用一对多模式,则每个CNN网络分配2个子加速单元;如果是多个CNN网络,比如3个,CNN网络数量3小于子加速单元数量4,采用一对多模式,则有1个CNN网络分配2个子加速单元,另外2个CNN网络分配1个子加速单元。对基于深度学习的多CNN网络进行硬件加速时,逐层分析出最优的数据流结构,选择出当前层是按行拆分还是按通道拆分,在线配置底层运算单元,最大化实现当前层的计算效能,多个CNN加速单元不仅能够全部分配给单个CNN网络进行硬件加速,而且可以通过一对一方式实现多个CNN网络并行加速。
需要说明的是,如果加速模式是一对多模式,则必须考虑不同层间和不同帧间的迁移时各个加速器间的协调一致;如果加速模式是一对一模式,则必须考虑当前网络当前加速器不同层间和不同帧间的衔接关系。
进一步地,硬件加速器工作状态包括手动模式和自动模式,如果是调试模式则可以配置为跳转手动模式,该模式下层间和帧间的跳转迁移均依赖于外部CPU下发触发信号;如果是正常业务模式则可以配置为帧自动模式,该模式下系统在上电且配置完成后,只需外部CPU给定一次触发信号便可实现加速器正常业务运行。
步骤S200,获取所述待加速CNN网络中各层的特征数据,并基于各层的特征数据以及所述加速模式,确定所述待加速CNN网络中各层各自对应的最优加速拆分方式;
具体地,步骤S200包括:
步骤S210,获取所述待加速CNN网络中各层对应的输入数据准备时间;
步骤S220,基于所述各层的特征数据、所述加速模式,计算得到各层对应的加速阵列运算时间;
步骤S230,基于所述输入数据准备时间以及所述加速阵列运算时间,确定所述待加速CNN网络中各层对应的最优加速拆分方式。
在本实施例中,根据待加速CNN网络中各层的特征数据以及当前的加速模式,进一步确定待加速CNN网络中各层各自对应的最优加速拆分方式,其中,拆分方式包括按行拆分或按通道拆分,需要说明的是,拆分方式均为基于CNN网络中各层的输出特征图的大小进行的拆分。
举例说明,某层的输出特征图为256(行)x 512(列)x 64(通道),单个CNN网络加速,当前的加速模式为一对多模式,硬件加速器中内置4个CNN子加速单元,如果是按行拆分,即4个CNN加速单元分别计算64(行)x 512(列)x 64(通道);按通道拆分,即是4个CNN加速单元分别计算256(行)x 512(列)x 16(通道)。
进一步地,输入特征图的数据准备时间由片外DDR(Double Data Rate,双倍速率)输入数据带宽和单行输入特征图数据的数据量经过相应计算得到;加速阵列运算时间由执行的卷积算子类型、输入输出特征图分辨率及通道数以及硬件加速器的芯片峰值算力决定。最优的加速方法就是最大程度的利用芯片本身的固有算力,在DDR带宽和主时钟频率确定的前提下,已有算力的运行调度效率是提高加速性能的关键,而基于此目的采用合适的拆分方式则是最有效的实现途径。
步骤S300,基于所述待加速CNN网络中各层的特征数据选择加速单元粒度;
具体地,步骤S300包括:在预设粒度类型中,基于所述待加速CNN网络中各层的特征数据选择所述待加速CNN网络中各层各自对应的加速单元粒度。
在本实施例中,加速单元粒度是硬件加速器的基本运算单元,加速单元粒度选择主要考虑目前主流深度学习CNN网络的特点、主流计算机视觉应用的图像分辨率和硬件加速器的算力。根据实验数据以及经验值生成预设粒度类型,例如8(并行输入通道数)x 8(并行输出通道数)x 16(并行输出通道列数)的加速单元粒度。进一步地,预设粒度类型预设粒度类型包括多个,在实际应用中,根据CNN网络中各层的特征数据,在预设粒度类型中选择CNN网络中各层各自对应的加速单元粒度。
步骤S400,基于所述加速模式、工作状态、最优加速拆分方式以及加速单元粒度,对所述待加速CNN网络进行加速。
在本实施例中,根据待加速CNN网络对应的加速模式、工作状态、最优加速拆分方式以及加速单元粒度进行关联,并生成配置文件,通过CPU接口写入硬件加速器的片内RAM中。在硬件加速器上电并完成系统配置后,由硬件加速器自动触发片内RAM配置循环自动读取配置文件,根据配置文件实现对待加速CNN网络进行加速。
本实施例提出的基于数据流的CNN加速方法,基于待加速CNN网络的加速需求确定加速模式以及工作状态,而后获取所述待加速CNN网络中各层的特征数据,并基于各层的特征数据以及所述加速模式,确定所述待加速CNN网络中各层各自对应的最优加速拆分方式,接下来基于所述待加速CNN网络中各层的特征数据选择加速单元粒度,最后基于所述加速模式、工作状态、最优加速拆分方式以及加速单元粒度,对所述待加速CNN网络进行加速。通过确定最优加速拆分方式,提升了硬件加速器在对所述待加速CNN网络进行加速时的运算效率和通用性,而且硬件加速器包括多个子加速单元,从而可以支持多个CNN网络网络并行独立加速的,扩展了硬件加速的使用范围。
基于第一实施例,参照图3,提出本发明基于数据流的CNN加速方法的第二实施例,在本实施例中,步骤S230包括:
步骤S231,当所述输入数据准备时间小于或等于所述加速阵列运算时间时,确定最优加速拆分方式为按通道拆分方式;
步骤S232,当所述输入数据准备时间大于所述加速阵列运算时间时,确定最优加速拆分方式为按行拆分方式。
在本实施例中,基于单个CNN网络各层的特征图大小、通道数及需要实现的算子特征,选择最优的加速方法。总体上基于一个原则,即当前层的加速处理采用效率最高的处理机制,选择为按行拆分或按通道拆分,如果输入特征图的数据准备时间大于加速阵列运算时间,则选择为按行拆分方式,即对特征图按行拆分;如果输入特征图的数据准备时间小于加速阵列运算时间,则选择为按通道拆分方式,即对特征图按通道拆分;如果输入特征图的数据准备时间等于加速阵列运算时间,则优选为按通道拆分方式。拆分方式均为基于CNN网络中各层的输出特征图的大小进行的拆分。
具体地,输入数据准备时间由片外DDR输入数据带宽和单行输入特征图数据的数据量经过相应计算得到;加速阵列运算时间由执行的卷积算子类型、输入输出特征图分辨率及通道数以及芯片峰值算力决定。当输入数据准备时间小于或等于加速阵列运算时间时,确定最优加速拆分方式为按通道拆分方式;当输入数据准备时间大于加速阵列运算时间时,确定最优加速拆分方式为按行拆分方式。
举例说明,某层的输出特征图为256(行)x 512(列)x 64(通道),单个CNN网络加速,当前的加速模式为一对多模式,硬件加速器中内置4个CNN子加速单元,当输入数据准备时间大于加速阵列运算时间时,确定最优加速拆分方式为按行拆分方式,即是4个CNN加速单元分别计算64(行)x 512(列)x 64(通道);当输入数据准备时间小于或等于加速阵列运算时间时,确定最优加速拆分方式为按通道拆分方式,即是4个CNN加速单元分别计算256(行)x 512(列)x 16(通道)。
本实施例提出的基于数据流的CNN加速方法,当所述输入数据准备时间小于或等于所述加速阵列运算时间时,确定最优加速拆分方式为按通道拆分方式,而后当所述输入数据准备时间大于所述加速阵列运算时间时,确定最优加速拆分方式为按行拆分方式。通过确定最优加速拆分方式,提升了硬件加速器在对所述待加速CNN网络进行加速时的运算效率和通用性。
本发明进一步提供一种基于数据流的CNN加速装置,参照图4,图4为本发明基于数据流的CNN加速装置实施例的功能模块示意图。
确定模块10,用于基于待加速CNN网络的加速需求确定加速模式以及工作状态;
处理模块20,用于获取所述待加速CNN网络中各层的特征数据,并基于各层的特征数据以及所述加速模式,确定所述待加速CNN网络中各层各自对应的最优加速拆分方式;
选择模块30,用于基于所述待加速CNN网络中各层的特征数据选择加速单元粒度;
加速模块40,用于基于所述加速模式、工作状态、最优加速拆分方式以及加速单元粒度,对所述待加速CNN网络进行加速。
进一步地,所述确定模块10还用于:
获取待加速CNN网络包括的CNN网络数量,以及所述硬件加速器包括的子加速单元数量;
基于所述加速需求、所述CNN网络数量以及所述子加速单元数量,确定所述待加速CNN网络对应的加速模式。
进一步地,所述确定模块10还用于:
当所述CNN网络数量小于所述子加速单元数量时,基于所述加速需求确定所述加速模式为一对多模式;
当所述CNN网络数量等于所述子加速单元数量时,基于所述加速需求确定所述加速模式为一对一模式。
进一步地,所述处理模块20还用于:
获取所述待加速CNN网络中各层对应的输入数据准备时间;
基于所述各层的特征数据、所述加速模式,计算得到各层对应的加速阵列运算时间;
基于所述输入数据准备时间以及所述加速阵列运算时间,确定所述待加速CNN网络中各层对应的最优加速拆分方式。
进一步地,所述处理模块20还用于:
当所述输入数据准备时间小于或等于所述加速阵列运算时间时,确定最优加速拆分方式为按通道拆分方式;
当所述输入数据准备时间大于所述加速阵列运算时间时,确定最优加速拆分方式为按行拆分方式。
进一步地,所述选择模块30还用于:
在预设粒度类型中,基于所述待加速CNN网络中各层的特征数据选择所述待加速CNN网络中各层各自对应的加速单元粒度。
在本实施例中,基于待加速CNN网络的加速需求确定加速模式以及工作状态,而后获取所述待加速CNN网络中各层的特征数据,并基于各层的特征数据以及所述加速模式,确定所述待加速CNN网络中各层各自对应的最优加速拆分方式,接下来基于所述待加速CNN网络中各层的特征数据选择加速单元粒度,最后基于所述加速模式、工作状态、最优加速拆分方式以及加速单元粒度,对所述待加速CNN网络进行加速。通过确定最优加速拆分方式,提升了硬件加速器在对所述待加速CNN网络进行加速时的运算效率和通用性,而且硬件加速器包括多个子加速单元,从而可以支持多个CNN网络网络并行独立加速的,扩展了硬件加速的使用范围。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有基于数据流的CNN加速程序,所述基于数据流的CNN加速程序被处理器执行时实现上述各个实施例中基于数据流的CNN加速方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台系统设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种基于数据流的CNN加速方法,应用于包括多个子加速单元的硬件加速器,其特征在于,所述基于数据流的CNN加速方法包括:
基于待加速CNN网络的加速需求确定加速模式以及工作状态;
获取所述待加速CNN网络中各层的特征数据,并基于各层的特征数据以及所述加速模式,确定所述待加速CNN网络中各层各自对应的最优加速拆分方式;
基于所述待加速CNN网络中各层的特征数据选择加速单元粒度;
基于所述加速模式、工作状态、最优加速拆分方式以及加速单元粒度,对所述待加速CNN网络进行加速;
其中,所述获取所述待加速CNN网络中各层的特征数据,并基于各层的特征数据以及所述加速模式,确定所述待加速CNN网络中各层各自对应的最优加速拆分方式的步骤包括:
根据片外DDR输入数据带宽和单行输入特征图数据的数据量获取所述待加速CNN网络中各层对应的输入数据准备时间;
根据卷积算子类型、输入输出特征图分辨率、通道数和加速器芯片峰值算力对所述各层的特征数据、所述加速模式进行计算,获得到各层对应的加速阵列运算时间;
基于所述输入数据准备时间以及所述加速阵列运算时间,确定所述待加速CNN网络中各层对应的最优加速拆分方式,其中,所述特征数据的输出特征图规格为:X行*Y列*Z通道,根据所述输出特征图规格区分,所述加速拆分方式包括按行拆分方式或按通道拆分方式;
其中,所述基于所述输入数据准备时间以及所述加速阵列运算时间,确定所述待加速CNN网络中各层对应的最优加速拆分方式的步骤包括:
当所述输入数据准备时间小于或等于所述加速阵列运算时间时,确定最优加速拆分方式为按通道拆分方式;
当所述输入数据准备时间大于所述加速阵列运算时间时,确定最优加速拆分方式为按行拆分方式。
2.如权利要求1所述的基于数据流的CNN加速方法,其特征在于,所述基于待加速CNN网络的加速需求确定加速模式的步骤包括:
获取待加速CNN网络包括的CNN网络数量,以及所述硬件加速器包括的子加速单元数量;
基于所述加速需求、所述CNN网络数量以及所述子加速单元数量,确定所述待加速CNN网络对应的加速模式。
3.如权利要求2所述的基于数据流的CNN加速方法,其特征在于,所述基于所述加速需求、所述CNN网络数量以及所述子加速单元数量,确定所述待加速CNN网络对应的加速模式的步骤包括:
当所述CNN网络数量小于所述子加速单元数量时,基于所述加速需求确定所述加速模式为一对多模式;
当所述CNN网络数量等于所述子加速单元数量时,基于所述加速需求确定所述加速模式为一对一模式。
4.如权利要求1至3中任一项所述的基于数据流的CNN加速方法,其特征在于,所述基于所述待加速CNN网络中各层的特征数据选择加速单元粒度的步骤包括:
在预设粒度类型中,基于所述待加速CNN网络中各层的特征数据选择所述待加速CNN网络中各层各自对应的加速单元粒度。
5.如权利要求1所述的基于数据流的CNN加速方法,其特征在于,所述基于待加速CNN网络的加速需求确定工作状态的步骤包括:所述工作状态包括手动模式和自动模式。
6.一种基于数据流的CNN加速装置,其特征在于,所述基于数据流的CNN加速装置包括:
确定模块,用于基于待加速CNN网络的加速需求确定加速模式以及工作状态;
处理模块,用于获取所述待加速CNN网络中各层的特征数据,并基于各层的特征数据以及所述加速模式,确定所述待加速CNN网络中各层各自对应的最优加速拆分方式;
选择模块,用于基于所述待加速CNN网络中各层的特征数据选择加速单元粒度;
加速模块,用于基于所述加速模式、工作状态、最优加速拆分方式以及加速单元粒度,对所述待加速CNN网络进行加速;
其中,所述处理模块,还用于根据片外DDR输入数据带宽和单行输入特征图数据的数据量获取所述待加速CNN网络中各层对应的输入数据准备时间;根据卷积算子类型、输入输出特征图分辨率、通道数和加速器芯片峰值算力对所述各层的特征数据、所述加速模式进行计算,获得到各层对应的加速阵列运算时间;基于所述输入数据准备时间以及所述加速阵列运算时间,确定所述待加速CNN网络中各层对应的最优加速拆分方式,其中,所述特征数据的输出特征图规格为:X行*Y列*Z通道,根据所述输出特征图规格区分,所述加速拆分方式包括按行拆分方式或按通道拆分方式;
其中,所述处理模块,还用于当所述输入数据准备时间小于或等于所述加速阵列运算时间时,确定最优加速拆分方式为按通道拆分方式;当所述输入数据准备时间大于所述加速阵列运算时间时,确定最优加速拆分方式为按行拆分方式。
7.一种硬件加速器,其特征在于,所述硬件加速器包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于数据流的CNN加速程序,所述基于数据流的CNN加速程序被所述处理器执行时实现如权利要求1至5中任一项所述的基于数据流的CNN加速方法的步骤。
8.一种存储介质,其特征在于,所述存储介质上存储有基于数据流的CNN加速程序,所述基于数据流的CNN加速程序被处理器执行时实现如权利要求1至5中任一项所述的基于数据流的CNN加速方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010351174.8A CN111563579B (zh) | 2020-04-28 | 2020-04-28 | 基于数据流的cnn加速方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010351174.8A CN111563579B (zh) | 2020-04-28 | 2020-04-28 | 基于数据流的cnn加速方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111563579A CN111563579A (zh) | 2020-08-21 |
CN111563579B true CN111563579B (zh) | 2023-09-22 |
Family
ID=72070596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010351174.8A Active CN111563579B (zh) | 2020-04-28 | 2020-04-28 | 基于数据流的cnn加速方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111563579B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
CN110058882A (zh) * | 2019-03-14 | 2019-07-26 | 成都恒创新星科技有限公司 | 一种用于cnn加速的opu指令集定义方法 |
CN110633153A (zh) * | 2019-09-24 | 2019-12-31 | 上海寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10614354B2 (en) * | 2015-10-07 | 2020-04-07 | Altera Corporation | Method and apparatus for implementing layers on a convolutional neural network accelerator |
-
2020
- 2020-04-28 CN CN202010351174.8A patent/CN111563579B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
CN110058882A (zh) * | 2019-03-14 | 2019-07-26 | 成都恒创新星科技有限公司 | 一种用于cnn加速的opu指令集定义方法 |
CN110633153A (zh) * | 2019-09-24 | 2019-12-31 | 上海寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN111563579A (zh) | 2020-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yang et al. | Re-thinking CNN frameworks for time-sensitive autonomous-driving applications: Addressing an industrial challenge | |
CN109993299B (zh) | 数据训练方法及装置、存储介质、电子装置 | |
CN110348574B (zh) | 一种基于zynq的通用卷积神经网络加速结构及设计方法 | |
CN110427256A (zh) | 基于优先级的作业调度优化方法、设备、存储介质及装置 | |
CN108012156A (zh) | 一种视频处理方法及控制平台 | |
CN111523652B (zh) | 处理器及其数据处理方法、摄像装置 | |
CN110058882B (zh) | 一种用于cnn加速的opu指令集定义方法 | |
CN113592066B (zh) | 硬件加速方法、装置、设备及存储介质 | |
CN103605500A (zh) | 利用一个或多个约束计算设备的设置的系统、方法 | |
CN108829519A (zh) | 基于云平台的任务调度方法、云平台及计算机可读存储介质 | |
CN115390788A (zh) | 基于fpga的图卷积神经网络稀疏矩阵乘法分配系统 | |
CN114943885A (zh) | 一种基于训练任务的同步缓存加速方法及系统 | |
CN111563579B (zh) | 基于数据流的cnn加速方法、装置、设备及存储介质 | |
JP2007172322A (ja) | 分散処理型マルチプロセッサシステム、制御方法、マルチプロセッサ割り込み制御装置及びプログラム | |
CN116627659B (zh) | 模型检查点文件保存方法、装置、设备及存储介质 | |
KR102455310B1 (ko) | 콘볼루션 신경망 양자화 추론 장치 및 방법 | |
CN115130672B (zh) | 一种软硬件协同优化卷积神经网络计算的方法及装置 | |
CN111736986B (zh) | 一种深度学习模型的fpga加速执行方法及相关装置 | |
US10891254B2 (en) | Switchable topology processor tile and computing machine | |
CN112862079B (zh) | 一种流水式卷积计算架构设计方法及残差网络加速系统 | |
CN114116220A (zh) | 一种gpu共享控制方法、gpu共享控制装置及存储介质 | |
CN114661431A (zh) | 一种任务调度方法、存储介质及终端设备 | |
CN113835852B (zh) | 任务数据的调度方法及装置 | |
CN116980423B (zh) | 模型调度方法、装置、计算系统、设备及可读存储介质 | |
CN117291240B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |