CN112488293B - 运行深度学习网络的方法及装置 - Google Patents

运行深度学习网络的方法及装置 Download PDF

Info

Publication number
CN112488293B
CN112488293B CN202011303530.5A CN202011303530A CN112488293B CN 112488293 B CN112488293 B CN 112488293B CN 202011303530 A CN202011303530 A CN 202011303530A CN 112488293 B CN112488293 B CN 112488293B
Authority
CN
China
Prior art keywords
firmware
dma
dma instruction
deep learning
learning network
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
CN202011303530.5A
Other languages
English (en)
Other versions
CN112488293A (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 Industry Research Kunyun Artificial Intelligence Research Institute Co ltd
Original Assignee
Shandong Industry Research Kunyun Artificial Intelligence 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 Industry Research Kunyun Artificial Intelligence Research Institute Co ltd filed Critical Shandong Industry Research Kunyun Artificial Intelligence Research Institute Co ltd
Priority to CN202011303530.5A priority Critical patent/CN112488293B/zh
Publication of CN112488293A publication Critical patent/CN112488293A/zh
Application granted granted Critical
Publication of CN112488293B publication Critical patent/CN112488293B/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/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/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)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Stored Programmes (AREA)

Abstract

本申请适用于计算机技术领域,提供了一种运行深度学习网络的方法及装置,其中该方法包括:基于固件准备请求,调用内存空间中的各个空闲空间地址分别生成相应的第一DMA指令固件,所述内存空间包括空闲空间和非空闲空间;当生成各个所述第一DMA指令固件时,获取针对深度学习网络的DMA操作请求;基于所述DMA操作请求为所述深度学习网络分配相应的目标DMA指令固件集,并将所述目标DMA指令固件集发送给处理器,以使得所述处理器基于所述目标DMA指令固件集运行所述深度学习网络。由此,可以提高深度学习网络的加载效率。

Description

运行深度学习网络的方法及装置
技术领域
本申请属于计算机技术领域,尤其涉及一种运行深度学习网络的方法及装置。
背景技术
在深度学习网络工作的过程中,主要是针对各种数据进行处理,包括输入数据、coefficient数据、bias数据和输出数据等。因此,在大部分的深度学习推理引擎的设计中,不可避免的会存在大量的在DDR与推理引擎之间的数据搬运操作,而这些搬运操作一般是由DMA(Direct Memory Access,直接存储器访问)控制器来完成。
由于现有的深度学习网络一般包括很多不同的层,每一层需要使用的输入、coefficient、bias、输出等数据都不一样,故需要频繁的利用DMA控制器来进行数据搬运。针对一个深度学习网络一般会对应一组DMA操作序列,并且一组DMA操作序列中的某个DMA操作负责从源地址搬运一定量的某种类型的数据到目的地址,其中源地址、目的地址可以是DDR中的某一段区域,也可能是推理引擎中的某个片上cache。
在目前相关技术中,在对深度学习网络所需求的数据进行搬运时,需要在基于深度学习网络的软件应用层请求硬件可用地址,后再以该地址生成固件,这样生成的固件代码是位置相关的,这样每次都必需动态生成固件,导致处理效率较低。示例性地,当DDR不够用时需要将旧的深度学习网络的数据部分换出去,然后将新的深度学习网络数据部分加载到DDR时,每次能够使用的DDR地址是变化的,这样需要重新依据更新后的DDR地址生成对应网络的固件,会使处理器浪费很多时间,处理效率明显下降。
针对上述问题,目前业界仍无较佳的解决方案。
发明内容
有鉴于此,本申请实施例提供了一种运行深度学习网络的方法及装置,以至少解决现有技术中深度学习网络加载效率低下的问题。
本申请实施例的第一方面提供了一种运行深度学习网络的方法,包括:基于固件准备请求,调用内存空间中的各个空闲空间地址分别生成相应的第一DMA指令固件,所述内存空间包括空闲空间和非空闲空间;当生成各个所述第一DMA指令固件时,获取针对深度学习网络的DMA操作请求;基于所述DMA操作请求为所述深度学习网络分配相应的目标DMA指令固件集,并将所述目标DMA指令固件集发送给处理器,以使得所述处理器基于所述目标DMA指令固件集运行所述深度学习网络。
本申请实施例的第二方面提供了一种运行深度学习网络的装置,包括:第一DMA指令固件生成单元,被配置为基于固件准备请求,调用内存空间中的各个空闲空间地址分别生成相应的第一DMA指令固件,所述内存空间包括空闲空间和非空闲空间;DMA操作请求获取单元,被配置为当生成各个所述第一DMA指令固件时,获取针对深度学习网络的DMA操作请求;DMA指令固件处理单元,被配置为基于所述DMA操作请求为所述深度学习网络分配相应的目标DMA指令固件集,并将所述目标DMA指令固件集发送给处理器,以使得所述处理器基于所述目标DMA指令固件集运行所述深度学习网络。
本申请实施例的第三方面提供了一种移动终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述方法的步骤。
本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述方法的步骤。
本申请实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端实现如上述方法的步骤。
本申请实施例与现有技术相比存在的有益效果是:
通过本申请实施例,在对深度学习网络进行DMA操作之前,预先利用内存空间中的空闲空间地址生成能够被DMA处理器识别的DMA指令固件,并在请求对深度学习网络进行DMA操作时,可以直接利用已生成的DMA指令固件集进行分配,而无需在DMA处理的过程中动态生成DMA指令固件,可以加速深度学习网络的DMA处理效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本申请实施例的运行深度学习网络的方法的一示例的流程图;
图2示出了根据本申请实施例的运行深度学习网络的方法的一示例的流程图;
图3示出了根据本申请实施例的生成DMA指令固件的一示例的流程图;
图4示出了根据目前相关技术的运行深度学习网络的系统的一示例的架构示意图;
图5示出了根据本申请实施例的运行深度学习网络的系统的一示例的架构示意图;
图6示出了根据本申请实施例的基于图5中系统运行深度学习网络的方法的一示例的流程图;
图7示出了根据本申请实施例的运行深度学习网络的装置的一示例的结构框图;
图8是本申请实施例的移动终端的一示例的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
具体实现中,本申请实施例中描述的移动终端包括但不限于诸如具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的移动电话、膝上型计算机或平板计算机之类的其它便携式设备。还应当理解的是,在某些实施例中,上述设备并非便携式通信设备,而是具有触摸敏感表面(例如,触摸屏显示器)的计算机。
在接下来的讨论中,描述了包括显示器和触摸敏感表面的移动终端。然而,应当理解的是,移动终端可以包括诸如物理键盘、鼠标和/或控制杆的一个或多个其它物理用户接口设备。
可以在移动终端上执行的各种应用程序可以使用诸如触摸敏感表面的至少一个公共物理用户接口设备。可以在应用程序之间和/或相应应用程序内调整和/或改变触摸敏感表面的一个或多个功能以及终端上显示的相应信息。这样,终端的公共物理架构(例如,触摸敏感表面)可以支持具有对用户而言直观且透明的用户界面的各种应用程序。
图1示出了根据本申请实施例的运行深度学习网络的方法的一示例的流程图。关于本申请实施例的执行主体,其可以是各种处理器,例如在移动终端中所设置的控制器。
如图1所示,在步骤110中,基于固件准备请求,调用内存空间中的各个空闲空间地址分别生成相应的第一DMA指令固件。这里,可以是基于移动终端接收用户操作,例如用户基于软件发出操作指令,并生成相应的固件准备请求。此外,内存空间包括空闲空间和非空闲空间,空闲空间表示可被分配来运行深度学习网络的内存空间部分,以及非空闲空间表示已被其他数据占用或不能被分配来运行深度学习网络的内存空间部分。
应理解的是,术语“内存空间”可以表示一个或多个内存设备(例如,DDR)中的存储空间,也可以表示一个内存设备中部分的存储空间。
在步骤120中,当生成各个第一DMA指令固件时,获取针对深度学习网络的DMA操作请求。示例性地,当所有或设定数量的空闲空间地址均已被利用而生成相应的第一DMA指令固件时,可以进行针对深度学习网络的编译操作,例如用户可以通过移动终端选定一个或多个深度学习网络,以对其进行相应的DMA操作。
在步骤130中,基于DMA操作请求为深度学习网络分配相应的目标DMA指令固件集,并将目标DMA指令固件集发送给处理器,以使得处理器基于目标DMA指令固件集运行深度学习网络。
在本申请实施例中,在对深度学习网络进行DMA操作之前,提前根据内存空间中的空闲空间的地址生成DMA指令固件,而不是在对深度学习网络DMA操作的过程中动态生成DMA指令固件,可以加速深度学习网络的DMA处理效率。
在一些应用场景下,深度学习网络所需要的DMA指令固件所对应的地址可能超过了当前空闲空间所对应的地址范围。然而,在目前相关技术中,由于是在编译过程中动态生成固件,导致在发现空闲空间地址不足时刷新内存空间,会针对之前已处理的深度网络数据再次生成相应的DMA指令固件,重复操作而导致较大的加载时间。
鉴于此,图2示出了根据本申请实施例的运行深度学习网络的方法的一示例的流程图。
如图2所示,在步骤210中,基于固件准备请求,调用内存空间中的各个空闲空间地址分别生成相应的第一DMA指令固件。
在步骤220中,当生成各个第一DMA指令固件时,获取针对深度学习网络的DMA操作请求。
关于步骤210和步骤220的实施细节,可以参照上文中结合步骤110和120中的描述。
在步骤230中,确定运行深度学习网络所需求的目标DMA指令固件的期望数量。
在步骤240中,确定所生成的第一DMA指令固件的数量是否大于或等于期望数量。
如果所生成的第一DMA指令固件的数量小于期望数量,则跳转至步骤250。如果所生成的第一DMA指令固件的数量大于或等于期望数量,则跳转至步骤260。
在步骤250中,释放内存空间中的非空闲空间,并调用所释放的地址生成相应的第二DMA指令固件,以使得所生成的第一DMA指令固件和第二DMA指令固件的数量总和大于或等于期望数量。示例性地,将非空闲空间中的数据清空,以转化为相应的空闲空间,并利用所转化的空闲空间的地址来生成DMA指令固件。
在步骤260中,为深度学习网络分配相应的目标DMA指令固件集,并将目标DMA指令固件集发送给处理器。这里,处理器可以表示用于识别或执行DMA指令集的处理器(例如,DMA处理器)。
在本申请实施例中,针对待进行DMA处理的深度学习网络,在发送至处理器进行DMA操作之前,预先将深度学习网络所需要的DMA指令固件的期望数量与根据当前空闲空间而生成的固件的数量进行对比,并在固件数量不足时扩充固件,可以保证在处理器执行DMA操作时的固件数量充分,也不会出现因固件数量缺失而刷新内存,导致针对同一地址重复生成固件的情况,可以保障针对较大尺寸的深度学习网络的加载效率。此外,在内存空间不够用时,可以提高多个深度学习网络直接切换的灵活性。
图3示出了根据本申请实施例的生成DMA指令固件的一示例的流程图。
如图3所示,在步骤310中,获取固件准备请求。
在步骤320中,基于固件准备请求,确定内存空间中的空闲空间地址。在本申请实施例的一个示例中,可以通过遍历查询的方式来得到空闲空间,以区分内存空间中的空闲空间和非空闲空间。在本申请实施例的另一示例中,控制器可以负责管理内存空间中的可用地址,并可以记录所有向它申请的地址以及未使用的地址,等等。
示例性地,基于固件准备请求,获取内存空间中未被分配的地址。然后,根据内存空间中未被分配的地址,确定内存空间中的空闲空间地址。
在步骤330中,根据内存空间中的各个空闲空间地址,依次生成相应的DMA指令固件。由此,DMA指令固件可以有序生成,并能够保障DMA指令固件能够被用来执行相应的针对深度学习网络的DMA操作。
图4示出了根据目前相关技术的运行深度学习网络的系统的一示例的架构示意图。
如图4所示,系统包括第一软件模块410、第二软件模块420、第一硬件模块430和第二硬件模块440。
具体地,第一软件模块410(例如,asm_gen)可以根据上层需求以及支持的指令生成asm指令,第二软件模块420(例如,as)可以将一个深度学习网络对应的一组DMA操作对应的asm指令生成二进制(binary)的DMA指令固件。此外,第一硬件模块430(例如,UC)可以是微处理器,其用于负责解析DMA指令固件并控制DMA进行对应的操作,第一硬件模块430中包含一个用于存储固件的缓存区域(cache)以及若干寄存器,第一硬件模块430中的部分寄存器可以与DMA模块中寄存器直连,故通过第一硬件模块430可以支持控制DMA模块。第二硬件模块440可以是与DMA功能相关的硬件模块,其可以负责在内存空间(DDR)与推理引擎之间直接进行数据搬运,第二硬件模块440中可以包含若干控制寄存器,如address、length、control和channel等,这些寄存器可以被调用而实现相应的DMA操作。
这样,在软件模块运行时,可以解析深度学习网络模型并根据模型以及当前可用的DDR地址调用asm_gen生成对应的汇编指令,然后调用as生成对应的DMA指令固件,然后运行时将生成的固件加载到UC的cache中并触发UC开始运行,使得UC可以根据固件中的指令控制DMA模块进行数据搬运。
需说明的是,一个深度学习网络一般会对应一组DMA操作序列,而一组DMA中的某个DMA操作负责从源地址搬运一定量的某种类型的数据到目的地址,其中源地址、目的地址可以是DDR中的某一段区域,也可能是推理引擎中的某个片上cache。
因此,在目前相关技术中,需要软件请求硬件可用地址后再以该地址生成固件,这样生成的固件代码是位置相关的,这样每次都必需动态生成固件,导致较长的处理时间。尤其是,当DDR不够用时需要将旧的深度学习网络的数据部分换出去,然后将新的深度学习网络数据部分加载到DDR时,每次能够使用的DDR地址是变化的,这样需要重新生成对应网络的固件,会浪费很多时间。例如,针对每一组新的DMA请求,都需要动态生成asm指令并编译成对应的二进制的DMA指令固件,导致编译过程中的延迟。
图5示出了根据本申请实施例的运行深度学习网络的系统的一示例的架构示意图。
如图5所示,系统包括交互指令生成模块510、指令固件生成模块520、网络运行请求模块530、第一硬件模块540和第二硬件模块550。因此,将autoDMA需要的固件生成步骤提前,而不需要在运行加载深度学习网络时动态生成,只需事先生成一次,可以多次使用,减少了运行时动态生成固件引入的延迟,提高整个系统的响应速度。
具体地,系统可以由多个软件模块(例如,510~530)和硬件模块(例如,540和540)组成,通过软件控制硬件进行不同的运算,而通过硬件执行软件指定的运算。关于第一硬件模块540和第二硬件模块550的操作,可以分别参照上文中关于410和420的描述,在此便不赘述,例如,微控制器可以接受应用程序生成的DMA指令固件,并按照顺序执行这些指令,完成指令编码的DMA操作。
交互指令生成模块510和指令固件生成模块520组成了固件准备单元(Application Tool),可以动态地将上层应用的需求转换成硬件能够执行的DMA指令固件,并保存在文件中。网络运行请求模块530可以根据深度学习网络的需要而加载相应的DMA指令固件,以与相应的硬件模块进行交互等。
此外,在DMA模块的硬件上可以进行调整,例如在address、length、control和channel等控制寄存器的基础上还可以新增base_address寄存器。具体地,base_address寄存器可以是由网络运行请求模块530(Application Runtime)动态配置,配置的值可以是由Application Runtime动态申请而得到的。由此,可以生成以0地址为起始地址的DMA固件。而通过运行时配置基地址,就可以实现DDR中任意地址处数据与硬件片上cache之间的数据相互搬运。
图6示出了根据本申请实施例的基于图5中系统运行深度学习网络的方法的一示例的流程图。
如图6所示,在步骤610中,Application Tool可以收到其他软件模块互相关联的一组DMA请求,并以0地址开始生成DMA指令固件并保存固件。
在步骤620中,Application Runtime加载对应应用的DMA指令固件。
在步骤630中,Application Runtime请求一个当前情况下可用的DDR首地址。
在步骤640中,Application Runtime将请求得到的DDR首地址配置到DMA的基地址寄存器中。
在步骤650中,Application Runtime将dma指令固件交给微控制器(UC)并触发DMA模块执行相应的DMA操作。
在本申请实施例中,所生成的DMA指令是可以一次生成,并多次使用;此外,无需动态生成固件指令,可以直接加载并运行之前生成好的固件指令。由于不需要在运行网络时动态生成指令固件,消除了动态生成指令所引入的时间开销,可以提高系统的响应速度。另外,当DDR不够用时,只需根据新的DDR可用地址重新生成指令固件,并重新加载到DDR就可以了,并且在DDR不够用时,提高了在多个深度学习网络之间切换执行的灵活性。
图7示出了根据本申请实施例的运行深度学习网络的装置的一示例的结构框图。
如图7所示,运行深度学习网络的装置700包括第一DMA指令固件生成单元710、DMA操作请求获取单元720和DMA指令固件处理单元730。
第一DMA指令固件生成单元710被配置为基于固件准备请求,调用内存空间中的各个空闲空间地址分别生成相应的第一DMA指令固件,所述内存空间包括空闲空间和非空闲空间。
DMA操作请求获取单元720被配置为当生成各个所述第一DMA指令固件时,获取针对深度学习网络的DMA操作请求。
DMA指令固件处理单元730被配置为基于所述DMA操作请求为所述深度学习网络分配相应的目标DMA指令固件集,并将所述目标DMA指令固件集发送给处理器,以使得所述处理器基于所述目标DMA指令固件集运行所述深度学习网络。
在一些实施方式中,第一DMA指令固件生成单元710包括固件准备请求获取模块(未示出)、空闲空间地址确定模块(未示出)和DMA指令固件生成模块(未示出)。固件准备请求获取模块被配置为获取固件准备请求。空闲空间地址确定模块被配置为基于所述固件准备请求,确定所述内存空间中的空闲空间地址。DMA指令固件生成模块被配置为根据所述内存空间中的各个空闲空间地址,依次生成相应的DMA指令固件。
在本申请实施例的一些示例中,装置700还包括期望数量确定单元740和固件数量比较单元750。期望数量确定单元740被配置为在获取针对深度学习网络的DMA操作请求之后,确定运行所述深度学习网络所需求的目标DMA指令固件的期望数量。固件数量比较单元750被配置为确定所生成的第一DMA指令固件的数量是否大于或等于所述期望数量。相应地,DMA指令固件处理单元730还被配置为如果所生成的第一DMA指令固件的数量小于所述期望数量,则释放所述内存空间中的所述非空闲空间,并调用所释放的地址生成相应的第二DMA指令固件,以使得所生成的第一DMA指令固件和第二DMA指令固件的数量总和大于或等于所述期望数量;如果所生成的第一DMA指令固件的数量大于或等于所述期望数量,则为所述深度学习网络分配相应的目标DMA指令固件集,并将所述目标DMA指令固件集发送给处理器。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
图8是本申请实施例的移动终端的一示例的示意图。如图8所示,该实施例的移动终端800包括:处理器810、存储器820以及存储在所述存储器820中并可在所述处理器810上运行的计算机程序830。所述处理器810执行所述计算机程序830时实现上述运行深度学习网络的方法实施例中的步骤,例如图1所示的步骤110至130。或者,所述处理器810执行所述计算机程序830时实现上述各装置实施例中各模块/单元的功能,例如图7所示单元710至750的功能。
示例性的,所述计算机程序830可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器820中,并由所述处理器810执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序830在所述移动终端800中的执行过程。例如,所述计算机程序830可以被分割成第一DMA指令固件生成程序模块、DMA操作请求获取程序模块和DMA指令固件处理程序模块,各程序模块具体功能如下:
第一DMA指令固件生成程序模块被配置为基于固件准备请求,调用内存空间中的各个空闲空间地址分别生成相应的第一DMA指令固件,所述内存空间包括空闲空间和非空闲空间;
DMA操作请求获取程序模块被配置为当生成各个所述第一DMA指令固件时,获取针对深度学习网络的DMA操作请求;
DMA指令固件处理程序模块被配置为基于所述DMA操作请求为所述深度学习网络分配相应的目标DMA指令固件集,并将所述目标DMA指令固件集发送给处理器,以使得所述处理器基于所述目标DMA指令固件集运行所述深度学习网络。
所述移动终端800可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述移动终端可包括,但不仅限于,处理器810、存储器820。本领域技术人员可以理解,图8仅是移动终端800的示例,并不构成对移动终端800的限定,可以包括比图示更多或少的部件,或组合某些部件,或不同的部件,例如所述移动终端还可以包括输入输出设备、网络接入设备、总线等。
所称处理器810可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器820可以是所述移动终端800的内部存储单元,例如移动终端800的硬盘或内存。所述存储器820也可以是所述移动终端800的外部存储设备,例如所述移动终端800上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器820还可以既包括所述移动终端800的内部存储单元也包括外部存储设备。所述存储器820用于存储所述计算机程序以及所述移动终端所需的其他程序和数据。所述存储器820还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/移动终端和方法,可以通过其它的方式实现。例如,以上所描述的装置/移动终端实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述单元既可以采用硬件的形式实现,也可以采用软件的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (8)

1.一种运行深度学习网络的方法,其特征在于,包括:
基于固件准备请求,调用内存空间中的各个空闲空间地址分别生成相应的第一DMA指令固件,所述内存空间包括空闲空间和非空闲空间;
当生成各个所述第一DMA指令固件时,获取针对深度学习网络的DMA操作请求;
基于所述DMA操作请求为所述深度学习网络分配相应的目标DMA指令固件集,并将所述目标DMA指令固件集发送给处理器,以使得所述处理器基于所述目标DMA指令固件集运行所述深度学习网络;
其中,在获取针对深度学习网络的DMA操作请求之后,所述方法还包括:
确定运行所述深度学习网络所需求的目标DMA指令固件的期望数量;
确定所生成的第一DMA指令固件的数量是否大于或等于所述期望数量;
相应地,所述基于所述DMA操作请求为所述深度学习网络分配相应的目标DMA指令固件集,并将所述目标DMA指令固件集发送给处理器,包括:
如果所生成的第一DMA指令固件的数量小于所述期望数量,则释放所述内存空间中的所述非空闲空间,并调用所释放的地址生成相应的第二DMA指令固件,以使得所生成的第一DMA指令固件和第二DMA 指令固件的数量总和大于或等于所述期望数量;
如果所生成的第一DMA指令固件的数量大于或等于所述期望数量,则为所述深度学习网络分配相应的目标DMA指令固件集,并将所述目标DMA指令固件集发送给处理器。
2.如权利要求1所述的方法,其特征在于,所述基于固件准备请求,调用内存空间中的各个空闲空间地址分别生成相应的第一DMA指令固件,包括:
获取固件准备请求;
基于所述固件准备请求,确定所述内存空间中的空闲空间地址;
根据所述内存空间中的各个空闲空间地址,依次生成相应的DMA指令固件。
3.如权利要求2所述的方法,其特征在于,所述基于所述固件准备请求,确定所述内存空间中的空闲空间地址,包括:
基于所述固件准备请求,获取所述内存空间中未被分配的地址;
根据所述内存空间中未被分配的地址,确定所述内存空间中的空闲空间地址。
4.如权利要求1所述的方法,其特征在于,所述DMA指令固件包括DMA二进制固件。
5.一种运行深度学习网络的装置,其特征在于,包括:
第一DMA指令固件生成单元,被配置为基于固件准备请求,调用内存空间中的各个空闲空间地址分别生成相应的第一DMA指令固件,所述内存空间包括空闲空间和非空闲空间;
DMA操作请求获取单元,被配置为当生成各个所述第一DMA指令固件时,获取针对深度学习网络的DMA操作请求;
DMA指令固件处理单元,被配置为基于所述DMA操作请求为所述深度学习网络分配相应的目标DMA指令固件集,并将所述目标DMA指令固件集发送给处理器,以使得所述处理器基于所述目标DMA指令固件集运行所述深度学习网络;
其中,所述装置还包括:
期望数量确定单元,被配置为在获取针对深度学习网络的DMA操作请求之后,确定运行所述深度学习网络所需求的目标DMA指令固件的期望数量;
固件数量比较单元,被配置为确定所生成的第一DMA指令固件的数量是否大于或等于所述期望数量;
相应地,所述DMA指令固件处理单元还被配置为:
如果所生成的第一DMA指令固件的数量小于所述期望数量,则释放所述内存空间中的所述非空闲空间,并调用所释放的地址生成相应的第二DMA指令固件,以使得所生成的第一DMA指令固件和第二DMA指令固件的数量总和大于或等于所述期望数量;
如果所生成的第一DMA指令固件的数量大于或等于所述期望数量,则为所述深度学习网络分配相应的目标DMA指令固件集,并将所述目标DMA指令固件集发送给处理器。
6.如权利要求5所述的装置,其特征在于,所述第一DMA指令固件生成单元包括:
固件准备请求获取模块,被配置为获取固件准备请求;
空闲空间地址确定模块,被配置为基于所述固件准备请求,确定所述内存空间中的空闲空间地址;
DMA指令固件生成模块,被配置为根据所述内存空间中的各个空闲空间地址,依次生成相应的DMA指令固件。
7.一种移动终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-4中任一项所述的运行深度学习网络的方法的步骤。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-4中任一项所述的运行深度学习网络的方法的步骤。
CN202011303530.5A 2020-11-19 2020-11-19 运行深度学习网络的方法及装置 Active CN112488293B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011303530.5A CN112488293B (zh) 2020-11-19 2020-11-19 运行深度学习网络的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011303530.5A CN112488293B (zh) 2020-11-19 2020-11-19 运行深度学习网络的方法及装置

Publications (2)

Publication Number Publication Date
CN112488293A CN112488293A (zh) 2021-03-12
CN112488293B true CN112488293B (zh) 2022-12-09

Family

ID=74932068

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011303530.5A Active CN112488293B (zh) 2020-11-19 2020-11-19 运行深度学习网络的方法及装置

Country Status (1)

Country Link
CN (1) CN112488293B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106951388A (zh) * 2017-03-16 2017-07-14 湖南博匠信息科技有限公司 一种基于PCIe的DMA数据传输方法及系统
CN107679621A (zh) * 2017-04-19 2018-02-09 北京深鉴科技有限公司 人工神经网络处理装置
CN110471618A (zh) * 2018-05-10 2019-11-19 阿里巴巴集团控股有限公司 快速侧通道访问存储设备
CN110516800A (zh) * 2019-07-08 2019-11-29 山东师范大学 深度学习网络应用分布自组装指令处理器核、处理器、电路和处理方法
CN111797034A (zh) * 2020-06-24 2020-10-20 深圳云天励飞技术有限公司 一种数据管理方法、神经网络处理器和终端设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2016203619A1 (en) * 2016-05-31 2017-12-14 Canon Kabushiki Kaisha Layer-based operations scheduling to optimise memory for CNN applications
US10872290B2 (en) * 2017-09-21 2020-12-22 Raytheon Company Neural network processor with direct memory access and hardware acceleration circuits
US11861484B2 (en) * 2018-09-28 2024-01-02 Qualcomm Incorporated Neural processing unit (NPU) direct memory access (NDMA) hardware pre-processing and post-processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106951388A (zh) * 2017-03-16 2017-07-14 湖南博匠信息科技有限公司 一种基于PCIe的DMA数据传输方法及系统
CN107679621A (zh) * 2017-04-19 2018-02-09 北京深鉴科技有限公司 人工神经网络处理装置
CN110471618A (zh) * 2018-05-10 2019-11-19 阿里巴巴集团控股有限公司 快速侧通道访问存储设备
CN110516800A (zh) * 2019-07-08 2019-11-29 山东师范大学 深度学习网络应用分布自组装指令处理器核、处理器、电路和处理方法
CN111797034A (zh) * 2020-06-24 2020-10-20 深圳云天励飞技术有限公司 一种数据管理方法、神经网络处理器和终端设备

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
A Resources-Efficient Configurable Accelerator for Deep Convolutional Neural Networks;Xianghong Hu等;《IEEE Access》;20190528;全文 *
Optimizing Temporal Convolutional Network Inference on FPGA-Based Accelerators;Marco Carreras等;《IEEE Journal on Emerging and Selected Topics in Circuits and Systems》;20200805;全文 *
基于FPGA嵌入式平台的高能效CNN应用系统;谢文遨;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20200415;全文 *
基于Zynq的卷积神经网络嵌入式加速系统设计;匡鑫;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20200615;全文 *

Also Published As

Publication number Publication date
CN112488293A (zh) 2021-03-12

Similar Documents

Publication Publication Date Title
WO2013192236A1 (en) Profiling application code to identify code portions for fpga implementation
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
US9063805B2 (en) Method and system for enabling access to functionality provided by resources outside of an operating system environment
CN111737564B (zh) 一种信息查询方法、装置、设备及介质
US9389997B2 (en) Heap management using dynamic memory allocation
US10229044B2 (en) Conditional stack frame allocation
US8910136B2 (en) Generating code that calls functions based on types of memory
CN111183411A (zh) 用于虚拟机的动态地址转换
KR102326280B1 (ko) 데이터 처리 방법, 장치, 기기 및 매체
US9760282B2 (en) Assigning home memory addresses to function call parameters
CN116841623A (zh) 访存指令的调度方法、装置、电子设备和存储介质
US11385927B2 (en) Interrupt servicing in userspace
CN112488293B (zh) 运行深度学习网络的方法及装置
JP2021034017A (ja) メモリ割り当てを管理するための方法、システム、製品、および装置
US9405470B2 (en) Data processing system and data processing method
CN116820579A (zh) 访存指令的调度方法、装置、电子设备和存储介质
CN110543351B (zh) 数据处理方法以及计算机设备
CN114237769A (zh) 一种程序的执行方法、装置、设备及存储介质
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
CN116450055B (zh) 一种多处理卡间的存储区域分配方法和系统
US20230214196A1 (en) Method of rebinding computing unit in heterogeneous computing clouds and apparatus thereof
CN117707641A (zh) 一种线程级动态库的链接方法、装置、操作系统及设备
CN117075988A (zh) 一种程序运行方法、系统、设备及介质、一种车辆
CN118708244A (zh) 指令预取方法、装置、电子设备及存储介质
CN115220668A (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