CN108549935B - 一种实现神经网络模型的装置及方法 - Google Patents

一种实现神经网络模型的装置及方法 Download PDF

Info

Publication number
CN108549935B
CN108549935B CN201810414432.5A CN201810414432A CN108549935B CN 108549935 B CN108549935 B CN 108549935B CN 201810414432 A CN201810414432 A CN 201810414432A CN 108549935 B CN108549935 B CN 108549935B
Authority
CN
China
Prior art keywords
network model
kernel
neural network
fpga
arm
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
CN201810414432.5A
Other languages
English (en)
Other versions
CN108549935A (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.)
Shandong Inspur Scientific Research Institute Co Ltd
Original Assignee
Shandong Inspur Scientific Research Institute 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 Shandong Inspur Scientific Research Institute Co Ltd filed Critical Shandong Inspur Scientific Research Institute Co Ltd
Priority to CN201810414432.5A priority Critical patent/CN108549935B/zh
Publication of CN108549935A publication Critical patent/CN108549935A/zh
Application granted granted Critical
Publication of CN108549935B publication Critical patent/CN108549935B/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

Landscapes

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

Abstract

本发明实施例提供了一种实现神经网络模型的装置及方法,该装置,包括:存储单元、ARM和FPGA;所述存储单元,用于存储用于实现神经网络模型的至少一个Kernel;所述ARM,用于对所述至少一个Kernel进行调度,将所述至少一个Kernel逐个加载到所述FPGA中;所述FPGA,用于执行加载的所述至少一个Kernel,实现所述神经网络模型。本发明提供了一种实现神经网络模型的装置及方法,能够降低实现神经网络模型的功耗。

Description

一种实现神经网络模型的装置及方法
技术领域
本发明涉及神经网络技术领域,特别涉及一种实现神经网络模型的装置及方法。
背景技术
随着人工智能的发展,各种神经网络模型得到了充分利用,例如:卷积神经网络。现有技术中,一般通过CPU加GPU(Graphics Processing Unit,图形处理器)的架构来实现神经网络模型。将GPU作为加速核心,通过GPU来实现卷积层的计算。但是,通过CPU加GPU的架构来实现神经网络模型时,功耗较大。
发明内容
本发明实施例提供了一种实现神经网络模型的装置及方法,能够降低实现神经网络模型的功耗。
第一方面,本发明实施例提供了一种实现神经网络模型的装置,包括:
存储单元、ARM和FPGA(Field-Programmable Gate Array,现场可编程门阵列);
所述存储单元,用于存储用于实现神经网络模型的至少一个Kernel;
所述ARM,用于对所述至少一个Kernel进行调度,将所述至少一个Kernel逐个加载到所述FPGA中;
所述FPGA,用于执行加载的所述至少一个Kernel,实现所述神经网络模型。
进一步地,
进一步包括:第一输出缓存;
当所述至少一个Kernel为一个Kernel时,
所述FPGA,进一步用于将加载的Kernel的执行结果作为所述神经网络模型的最终输出,将所述神经网络模型的最终输出保存到所述第一输出缓存中,向所述ARM发送第一中断信号;
所述ARM,进一步用于当接收到所述FPGA发来的所述第一中断信号时,从所述第一输出缓存中获取所述神经网络模型的最终输出。
进一步地,
该装置进一步:中间结果缓存和第二输出缓存;
当所述至少一个Kernel为至少两个Kernel时,
所述ARM,用于按照实现所述神经网络模型的加载顺序,逐个将所述至少两个Kernel加载到FPGA中,当接收到所述FPGA发来的第二中断信号时,从所述第二输出缓存中获取所述神经网络模型的最终输出;
所述FPGA,用于执行当前加载的Kernel,在当前加载的Kernel不是所述加载顺序中的最后一个Kernel时,将当前加载的Kernel的执行结果作为中间结果保存到所述中间结果缓存中,在当前加载的Kernel是所述加载顺序中的最后一个Kernel时,将当前加载的Kernel的执行结果作为所述神经网络模型的最终输出,将所述神经网络模型的最终输出保存到所述第二输出缓存中,向所述ARM发送所述第二中断信号,在当前加载的Kernel不是所述加载顺序中的第一个Kernel时,从所述中间结果缓存中获取所述中间结果,将获取的所述中间结果作为当前加载的Kernel的输入。
进一步地,
该装置进一步包括:网络模型构建单元;
所述网络模型构建单元,用于确定所述FPGA的可利用资源,根据所述FPGA的可利用资源,确定实现所述神经网络模型所需要的Kernel的目标数量,生成用于实现神经网络模型的所述目标数量个所述Kernel,将所述目标数量个所述Kernel保存到所述存储单元中。
进一步地,
所述网络模型构建单元,进一步用于生成用于实现所述神经网络模型的调度程序,将所述调度程序保存到所述存储单元中;
所述ARM,进一步用于从所述存储单元加载所述调度程序,运行所述调度程序实现所述对所述至少一个Kernel进行调度,将所述至少一个Kernel逐个加载到所述FPGA中。
进一步地,
所述存储单元,进一步用于存储所述神经网络模型的模型参数;
所述ARM,进一步用于将所述模型参数加载到所述FPGA中;
所述FPGA,用于根据所述模型参数执行加载的所述至少一个Kernel。
进一步地,
所述FPGA,用于执行加载的所述至少一个Kernel,实现所述神经网络模型的卷积计算、池化计算以及激活函数。
进一步地,
所述FPGA包括:可重构的FPGA。
第二方面,本发明实施例提供了一种基于第一方面中任一所述的实现神经网络模型的装置实现神经网络模型的方法,包括:
存储单元存储用于实现神经网络模型的至少一个Kernel;
ARM对所述至少一个Kernel进行调度,将所述至少一个Kernel逐个加载到所述FPGA中;
FPGA执行加载的所述至少一个Kernel,实现所述神经网络模型。
进一步地,
在所述实现神经网络模型的装置中包括网络模型构建单元时;
在所述存储单元存储用于实现神经网络模型的至少一个Kernel之前,进一步包括:
所述网络模型构建单元确定所述FPGA的可利用资源;
所述网络模型构建单元根据所述FPGA的可利用资源,确定实现所述神经网络模型所需要的Kernel的目标数量;
所述网络模型构建单元生成用于实现神经网络模型的所述目标数量个所述Kernel,将所述目标数量个所述Kernel保存到所述存储单元中。
进一步地,
在所述实现神经网络模型的装置中包括第一输出缓存时;
当所述至少一个Kernel为一个Kernel时,
在所述FPGA执行加载的所述至少一个Kernel之后,进一步包括:
所述FPGA将加载的Kernel的执行结果所述神经网络模型的最终输出;
所述FPGA将所述神经网络模型的最终输出保存到所述第一输出缓存中,向所述ARM发送第一中断信号;
所述ARM当接收到所述FPGA发来的所述第一中断信号时,从所述第一输出缓存中获取所述神经网络模型的最终输出。
在本发明实施例中,通过ARM来对用于实现神经网络模型的Kernel进行调度,通过FPGA来执行Kernel,也就是说,通过ARM和FPGA即可实现神经网络模型,而ARM和FPGA的功耗大大小于CPU加GPU的架构,因此,本发明实施例能够降低实现神经网络模型的功耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种实现神经网络模型的装置的示意图;
图2是本发明一实施例提供的另一种实现神经网络模型的装置的示意图;
图3是本发明一实施例提供的一种实现神经网络模型的方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种实现神经网络模型的装置,包括:
存储单元101、ARM 102和FPGA 103;
所述存储单元101,用于存储用于实现神经网络模型的至少一个Kernel;
所述ARM 102,用于对所述至少一个Kernel进行调度,将所述至少一个Kernel逐个加载到所述FPGA 103中;
所述FPGA 103,用于执行加载的所述至少一个Kernel,实现所述神经网络模型。
在本发明实施例中,通过ARM来对用于实现神经网络模型的Kernel进行调度,通过FPGA来执行Kernel,也就是说,通过ARM和FPGA即可实现神经网络模型,而ARM和FPGA的功耗大大小于CPU加GPU的架构,因此,本发明实施例能够降低实现神经网络模型的功耗。
在本发明一实施例中,该装置进一步包括:第一输出缓存;
当所述至少一个Kernel为一个Kernel时,
所述FPGA,进一步用于将加载的Kernel的执行结果作为所述神经网络模型的最终输出,将所述神经网络模型的最终输出保存到所述第一输出缓存中,向所述ARM发送第一中断信号;
所述ARM,进一步用于当接收到所述FPGA发来的所述第一中断信号时,从所述第一输出缓存中获取所述神经网络模型的最终输出。
在本发明实施例中,神经网络模型可以通过一个Kernel来实现。FPGA在执行完该Kernel之后即可输出神经网络模型的最终输出,这时,通过第一中断信号来通知ARM获取该最终输出。
在本发明一实施例中,该装置进一步:中间结果缓存和第二输出缓存;
当所述至少一个Kernel为至少两个Kernel时,
所述ARM,用于按照实现所述神经网络模型的加载顺序,逐个将所述至少两个Kernel加载到FPGA中,当接收到所述FPGA发来的第二中断信号时,从所述第二输出缓存中获取所述神经网络模型的最终输出;
所述FPGA,用于执行当前加载的Kernel,在当前加载的Kernel不是所述加载顺序中的最后一个Kernel时,将当前加载的Kernel的执行结果作为中间结果保存到所述中间结果缓存中,在当前加载的Kernel是所述加载顺序中的最后一个Kernel时,将当前加载的Kernel的执行结果作为所述神经网络模型的最终输出,将所述神经网络模型的最终输出保存到所述第二输出缓存中,向所述ARM发送所述第二中断信号,在当前加载的Kernel不是所述加载顺序中的第一个Kernel时,从所述中间结果缓存中获取所述中间结果,将获取的所述中间结果作为当前加载的Kernel的输入。
在本发明实施例中,神经网络模型通过至少两个Kernel来实现。这时,ARM就需要按照加载顺序来逐个向FPGA加载Kernel,以保障神经网络模型能够顺利实现,当FPGA执行完一个Kernel之后,ARM向FPGA加载下一个Kernel,直到加载完最后一个Kernel。FPGA会根据ARM的调度,执行当前加载的Kernel,利用当前加载的Kernel来进行运算。在当前加载的Kernel不是最后一个时,当前加载的Kernel的执行结果需要作为后续加载的Kernel的输入,后续加载的Kernel在之前的Kernel的运算的基础上继续向后处理,直到最后一个Kernel输出神经网络模型的最终输出,并利用第二中断信号来通知ARM获取该最终输出。对应第一个Kernel来说,该Kernel的输入可以是来自于外部提供的,例如:与FPGA相连的存储设备,或者与FPGA相连的I/O设备,或者通过ARM输入等。
在本发明一实施例中,该装置进一步包括:网络模型构建单元;
所述网络模型构建单元,用于确定所述FPGA的可利用资源,根据所述FPGA的可利用资源,确定实现所述神经网络模型所需要的Kernel的目标数量,生成用于实现神经网络模型的所述目标数量个所述Kernel,将所述目标数量个所述Kernel保存到所述存储单元中。
在本发明实施例中,通过网络模型构建单元来生成Kernel。在生成Kernel时,如果网络模型构建单元确定出FPGA的可利用资源充足,能够支持通过一个Kernel来实现神经网络模型,这时,将神经网络模型封装为一个Kernel。如果网络模型构建单元确定出FPGA的可利用资源不充足,不能够支持通过一个Kernel来实现神经网络模型,这时,将神经网络模型分解为通过至少两个Kernel来实现,甚至将神经网络模型某一网络层分解为多个Kernel来执行,Kernel的具体数量根据FPGA的可利用资源以及神经网络模型所需要的资源来确定。
在本发明一实施例中,所述网络模型构建单元,进一步用于生成用于实现所述神经网络模型的调度程序,将所述调度程序保存到所述存储单元中;
所述ARM,进一步用于从所述存储单元加载所述调度程序,运行所述调度程序实现所述对所述至少一个Kernel进行调度,将所述至少一个Kernel逐个加载到所述FPGA中。
在本发明实施例中,调度程序也是实现神经网络模型的一部分,ARM的调度功能通过该调度程序来实现。调度程序可以通过C语言编程实现。ARM可以通过调度程序实现调度功能和数据加载。调度程序可以通过GCC编译器编译。
在本发明一实施例中,所述存储单元,进一步用于存储所述神经网络模型的模型参数;
所述ARM,进一步用于将所述模型参数加载到所述FPGA中;
所述FPGA,用于根据所述模型参数执行加载的所述至少一个Kernel。
在本发明实施例中,FPGA在执行加载的Kernel时,基于神经网络模型的模型参数来实现。
在本发明一实施例中,所述FPGA,用于执行加载的所述至少一个Kernel,实现所述神经网络模型的卷积计算、池化计算以及激活函数。
在本发明实施例中,FPGA在执行Kernel时,主要是要实现神经网络模型的卷积计算、池化计算以及激活函数。
在本发明一实施例中,所述FPGA包括:可重构的FPGA。
在本发明实施例中,通过可重构的FPGA可以使得该装置能够适用于实现各种不同的神经网络模型。
举例来说,在通过FPGA实现了神经网络模型A后,基于ARM的调度,可以直接在FPGA上加载神经网络模型B的Kernel,进而实现神经网络模型B,实现过程非常方便。
如图2所示,本发明实施例提供了一种实现神经网络模型的装置,包括:
存储单元201、ARM 202、FPGA 203、第一输出缓存204、中间结果缓存205、第二输出缓存206、网络模型构建单元207;
网络模型构建单元207,用于确定FPGA的可利用资源,根据FPGA的可利用资源,确定实现神经网络模型所需要的Kernel的目标数量,生成用于实现神经网络模型的目标数量个Kernel,将目标数量个Kernel保存到存储单元中。
存储单元201,用于存储用于实现神经网络模型的至少一个Kernel;
ARM 202,用于当该至少一个Kernel为一个Kernel时,对该一个Kernel进行调度,将该Kernel逐个加载到FPGA中,当接收到FPGA发来的第一中断信号时,从第一输出缓存中获取神经网络模型的最终输出;当该至少一个Kernel为至少两个Kernel时,按照实现神经网络模型的加载顺序,逐个将至少两个Kernel加载到FPGA中,当接收到FPGA发来的第二中断信号时,从第二输出缓存中获取神经网络模型的最终输出;
FPGA 203,用于执行加载的该至少一个Kernel,实现神经网络模型,当该至少一个Kernel为一个Kernel时,将加载的Kernel的执行结果作为神经网络模型的最终输出,将神经网络模型的最终输出保存到第一输出缓存中,向ARM发送第一中断信号;当该至少一个Kernel为至少两个Kernel时,执行当前加载的Kernel,在当前加载的Kernel不是加载顺序中的最后一个Kernel时,将当前加载的Kernel的执行结果作为中间结果保存到中间结果缓存中,在当前加载的Kernel是加载顺序中的最后一个Kernel时,将当前加载的Kernel的执行结果作为神经网络模型的最终输出,将神经网络模型的最终输出保存到第二输出缓存中,向ARM发送所述第二中断信号,在当前加载的Kernel不是加载顺序中的第一个Kernel时,从中间结果缓存中获取中间结果,将获取的中间结果作为当前加载的Kernel的输入。
在本发明实施例中,ARM能够根据神经网络模型的模型参数对FPGA计算资源和存储资源进行动态调度以适应不同神经网络模型的计算。
在本发明实施例中,存储单元、第一输出缓存、中间结果缓存和第二输出缓存可以通过一个存储设备来实现,例如:DDR存储资源;其中的一个或多个可以通过FPGA的内部寄存器或RAM来实现。存储单元可以通过SD卡来实现。
在本发明实施例中,网络模型构建单元可以支持Caffe、TensorFlow等平台构建的神经网络模型,如SSD、Faster-RCNN等。
在本发明实施例中,Kernel可以通过由OpenCL编程实现。
在本发明实施例中,FPGA的静态资源(主要包括I/O资源和电源等)可以在系统初始化时从FLASH自动加载。
在本发明实施例中,ARM与网络模型构建单元通信可以通过PCIE总线来实现,ARM与FPGA通信可以通过并行总线来实现。
在本发明实施例中,存储单元、第一输出缓存、中间结果缓存和第二输出缓存等可以存储网络模型权重、偏置、滑动步长、卷积核、计算中间结果以及输入输出等信息。
本发明实施例适用于实现卷积神经网络模型。
本发明实施例可有效的适应不同网络模型的实现,解除不同功能模型与硬件电路紧耦合的关系,在可利用资源充足的情况下,可将整个模型做一次重构实现,在可利用资源紧张的情况下也可将整个模型分解成多个任务分别进行计算,并通过多级存储模块缓存中间结算结果,最后将结果合并,大大提高了实现神经网络模型的硬件电路的通用性。
如图3所示,本发明实施例提供了一种基于本发明实施例中任一所述的实现神经网络模型的装置实现神经网络模型的方法,包括:
步骤301:存储单元存储用于实现神经网络模型的至少一个Kernel;
步骤302:ARM对所述至少一个Kernel进行调度,将所述至少一个Kernel逐个加载到所述FPGA中;
步骤303:FPGA执行加载的所述至少一个Kernel,实现所述神经网络模型。
在本发明一实施例中,在所述实现神经网络模型的装置中包括网络模型构建单元时;
在所述存储单元存储用于实现神经网络模型的至少一个Kernel之前,进一步包括:
所述网络模型构建单元确定所述FPGA的可利用资源;
所述网络模型构建单元根据所述FPGA的可利用资源,确定实现所述神经网络模型所需要的Kernel的目标数量;
所述网络模型构建单元生成用于实现神经网络模型的所述目标数量个所述Kernel,将所述目标数量个所述Kernel保存到所述存储单元中。
在本发明一实施例中,在所述实现神经网络模型的装置中包括第一输出缓存时;
当所述至少一个Kernel为一个Kernel时,
在所述FPGA执行加载的所述至少一个Kernel之后,进一步包括:
所述FPGA将加载的Kernel的执行结果所述神经网络模型的最终输出;
所述FPGA将所述神经网络模型的最终输出保存到所述第一输出缓存中,向所述ARM发送第一中断信号;
所述ARM当接收到所述FPGA发来的所述第一中断信号时,从所述第一输出缓存中获取所述神经网络模型的最终输出。
本发明各个实施例至少具有如下有益效果:
1、在本发明实施例中,通过ARM来对用于实现神经网络模型的Kernel进行调度,通过FPGA来执行Kernel,也就是说,通过ARM和FPGA即可实现神经网络模型,而ARM和FPGA的功耗大大小于CPU加GPU的架构,因此,本发明实施例能够降低实现神经网络模型的功耗。
2、本发明实施例可有效的适应不同网络模型的实现,解除不同功能模型与硬件电路紧耦合的关系,在可利用资源充足的情况下,可将整个模型做一次重构实现,在可利用资源紧张的情况下也可将整个模型分解成多个任务分别进行计算,并通过多级存储模块缓存中间结算结果,最后将结果合并,大大提高了实现神经网络模型的硬件电路的通用性。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (7)

1.一种实现神经网络模型的装置,其特征在于,包括:
存储单元、ARM和现场可编程门阵列FPGA;
所述存储单元,用于存储用于实现神经网络模型的至少一个Kernel;
所述ARM,用于对所述至少一个Kernel进行调度,将所述至少一个Kernel逐个加载到所述FPGA中;
所述FPGA,用于执行加载的所述至少一个Kernel,实现所述神经网络模型;
进一步包括:第一输出缓存;
当所述至少一个Kernel为一个Kernel时,
所述FPGA,进一步用于将加载的Kernel的执行结果作为所述神经网络模型的最终输出,将所述神经网络模型的最终输出保存到所述第一输出缓存中,向所述ARM发送第一中断信号;
所述ARM,进一步用于当接收到所述FPGA发来的所述第一中断信号时,从所述第一输出缓存中获取所述神经网络模型的最终输出;
进一步:中间结果缓存和第二输出缓存;
当所述至少一个Kernel为至少两个Kernel时,
所述ARM,用于按照实现所述神经网络模型的加载顺序,逐个将所述至少两个Kernel加载到FPGA中,当接收到所述FPGA发来的第二中断信号时,从所述第二输出缓存中获取所述神经网络模型的最终输出;
所述FPGA,用于执行当前加载的Kernel,在当前加载的Kernel不是所述加载顺序中的最后一个Kernel时,将当前加载的Kernel的执行结果作为中间结果保存到所述中间结果缓存中,在当前加载的Kernel是所述加载顺序中的最后一个Kernel时,将当前加载的Kernel的执行结果作为所述神经网络模型的最终输出,将所述神经网络模型的最终输出保存到所述第二输出缓存中,向所述ARM发送所述第二中断信号,在当前加载的Kernel不是所述加载顺序中的第一个Kernel时,从所述中间结果缓存中获取所述中间结果,将获取的所述中间结果作为当前加载的Kernel的输入。
2.根据权利要求1所述的装置,其特征在于,
进一步包括:网络模型构建单元;
所述网络模型构建单元,用于确定所述FPGA的可利用资源,根据所述FPGA的可利用资源,确定实现所述神经网络模型所需要的Kernel的目标数量,生成用于实现神经网络模型的所述目标数量个所述Kernel,将所述目标数量个所述Kernel保存到所述存储单元中。
3.根据权利要求2所述的装置,其特征在于,
所述网络模型构建单元,进一步用于生成用于实现所述神经网络模型的调度程序,将所述调度程序保存到所述存储单元中;
所述ARM,进一步用于从所述存储单元加载所述调度程序,运行所述调度程序实现所述对所述至少一个Kernel进行调度,将所述至少一个Kernel逐个加载到所述FPGA中。
4.根据权利要求1所述的装置,其特征在于,
所述存储单元,进一步用于存储所述神经网络模型的模型参数;
所述ARM,进一步用于将所述模型参数加载到所述FPGA中;
所述FPGA,用于根据所述模型参数执行加载的所述至少一个Kernel。
5.根据权利要求1所述的装置,其特征在于,
所述FPGA,用于执行加载的所述至少一个Kernel,实现所述神经网络模型的卷积计算、池化计算以及激活函数;
和/或,
所述FPGA包括:可重构的FPGA。
6.一种基于权利要求1-5中任一所述的实现神经网络模型的装置实现神经网络模型的方法,其特征在于,包括:
存储单元存储用于实现神经网络模型的至少一个Kernel;
ARM对所述至少一个Kernel进行调度,将所述至少一个Kernel逐个加载到所述FPGA中;
FPGA执行加载的所述至少一个Kernel,实现所述神经网络模型
在实现神经网络模型的装置中包括网络模型构建单元时;
在所述存储单元存储用于实现神经网络模型的至少一个Kernel之前,进一步包括:
所述网络模型构建单元确定所述FPGA的可利用资源;
所述网络模型构建单元根据所述FPGA的可利用资源,确定实现所述神经网络模型所需要的Kernel的目标数量;
所述网络模型构建单元生成用于实现神经网络模型的所述目标数量个所述Kernel,将所述目标数量个所述Kernel保存到所述存储单元中。
7.根据权利要求6所述的方法,其特征在于,
在所述实现神经网络模型的装置中包括第一输出缓存时;
当所述至少一个Kernel为一个Kernel时,
在所述FPGA执行加载的所述至少一个Kernel之后,进一步包括:
所述FPGA将加载的Kernel的执行结果所述神经网络模型的最终输出;
所述FPGA将所述神经网络模型的最终输出保存到所述第一输出缓存中,向所述ARM发送第一中断信号;
所述ARM当接收到所述FPGA发来的所述第一中断信号时,从所述第一输出缓存中获取所述神经网络模型的最终输出。
CN201810414432.5A 2018-05-03 2018-05-03 一种实现神经网络模型的装置及方法 Active CN108549935B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810414432.5A CN108549935B (zh) 2018-05-03 2018-05-03 一种实现神经网络模型的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810414432.5A CN108549935B (zh) 2018-05-03 2018-05-03 一种实现神经网络模型的装置及方法

Publications (2)

Publication Number Publication Date
CN108549935A CN108549935A (zh) 2018-09-18
CN108549935B true CN108549935B (zh) 2021-09-10

Family

ID=63513423

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810414432.5A Active CN108549935B (zh) 2018-05-03 2018-05-03 一种实现神经网络模型的装置及方法

Country Status (1)

Country Link
CN (1) CN108549935B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109359732B (zh) 2018-09-30 2020-06-09 阿里巴巴集团控股有限公司 一种芯片及基于其的数据处理方法
CN109871939B (zh) * 2019-01-29 2021-06-15 深兰人工智能芯片研究院(江苏)有限公司 一种图像处理方法及图像处理装置
CN113298259B (zh) * 2021-06-10 2024-04-26 中国电子科技集团公司第十四研究所 支持嵌入式平台多核并行的cnn网络推理框架设计方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9384168B2 (en) * 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration
CN103714044A (zh) * 2013-12-30 2014-04-09 南京大学 一种基于片上网络的高效率矩阵转置簇以及转置方法
CN106228240B (zh) * 2016-07-30 2020-09-01 复旦大学 基于fpga的深度卷积神经网络实现方法
US10698657B2 (en) * 2016-08-12 2020-06-30 Xilinx, Inc. Hardware accelerator for compressed RNN on FPGA
US10656962B2 (en) * 2016-10-21 2020-05-19 International Business Machines Corporation Accelerate deep neural network in an FPGA
CN107862379A (zh) * 2017-07-21 2018-03-30 电子科技大学 神经网络fpga
CN107392309A (zh) * 2017-09-11 2017-11-24 东南大学—无锡集成电路技术研究所 一种基于fpga的通用定点数神经网络卷积加速器硬件结构

Also Published As

Publication number Publication date
CN108549935A (zh) 2018-09-18

Similar Documents

Publication Publication Date Title
US11775810B2 (en) Methods and apparatus for thread-based scheduling in multicore neural networks
US11609792B2 (en) Maximizing resource utilization of neural network computing system
EP3407182B1 (en) Vector computing device
CN108549935B (zh) 一种实现神经网络模型的装置及方法
KR102684511B1 (ko) 작업부하의 정적 매핑의 비순차적 파이프라이닝된 실행을 가능하게 하기 위한 방법들 및 장치
US11556756B2 (en) Computation graph mapping in heterogeneous computer system
CN111078287B (zh) 一种向量运算协处理方法与装置
CN110717584A (zh) 神经网络编译方法、编译器、计算机设备及可读存储介质
CN111399911B (zh) 一种基于多核异构计算的人工智能开发方法及装置
CN111190741A (zh) 基于深度学习节点计算的调度方法、设备及存储介质
KR20210021261A (ko) 가속기에서 이종 컴포넌트들을 구성하기 위한 방법들 및 장치
CN114510339A (zh) 一种计算任务调度方法、装置、电子设备及可读存储介质
CN110825514B (zh) 人工智能芯片以及用于人工智能芯片的指令执行方法
CN114217966A (zh) 基于资源调整的深度学习模型动态批处理调度方法和系统
EP3779778A1 (en) Methods and apparatus to enable dynamic processing of a predefined workload
Grimaldi et al. Optimality assessment of memory-bounded convnets deployed on resource-constrained risc cores
CN114897133A (zh) 一种通用可配置的Transformer硬件加速器及其实现方法
US20230342211A1 (en) Method and device for controlling hardware accelerator by using sw framework structure homogeneous multi-core accelerator for supporting acceleration of time-critical task
CN115222028A (zh) 基于fpga的一维cnn-lstm加速平台及实现方法
CN113704687B (zh) 一种张量计算运行方法、装置及运算系统
CN116069485A (zh) 用于处理任务的方法、装置、电子设备和介质
CN114127681A (zh) 用于实现数据流ai应用的自主加速的方法和装置
US20240201960A1 (en) Code execution method and data processing device and system
CN118296084B (zh) 数据处理设备、指令同步方法、电子设备和存储介质
Leinweber et al. Enabling Cross-Event Optimization in Discrete-Event Simulation Through Compile-Time Event Batching

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

Effective date of registration: 20210825

Address after: 250100 building S02, No. 1036, Langchao Road, high tech Zone, Jinan City, Shandong Province

Applicant after: Shandong Inspur Scientific Research Institute Co.,Ltd.

Address before: 250100 First Floor of R&D Building 2877 Kehang Road, Sun Village Town, Jinan High-tech Zone, Shandong Province

Applicant before: JINAN INSPUR HIGH-TECH TECHNOLOGY DEVELOPMENT Co.,Ltd.

GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20180918

Assignee: INSPUR SOFTWARE Co.,Ltd.

Assignor: Shandong Inspur Scientific Research Institute Co.,Ltd.

Contract record no.: X2023980030294

Denomination of invention: A device and method for realizing neural network model

Granted publication date: 20210910

License type: Exclusive License

Record date: 20230110