CN112286694B - 基于深度学习计算网络的硬件加速器内存分配方法及*** - Google Patents
基于深度学习计算网络的硬件加速器内存分配方法及*** Download PDFInfo
- Publication number
- CN112286694B CN112286694B CN202011543332.6A CN202011543332A CN112286694B CN 112286694 B CN112286694 B CN 112286694B CN 202011543332 A CN202011543332 A CN 202011543332A CN 112286694 B CN112286694 B CN 112286694B
- Authority
- CN
- China
- Prior art keywords
- layer
- memory
- deep learning
- memory space
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Memory System (AREA)
Abstract
本申请提供一种基于深度学习计算网络的硬件加速器内存分配方法及***,所述方法及***可以逐层为深度学习计算网络中的运算层输入信息及输出运算结果分配内存空间,确定所述深度学习计算网络需要的内存空间总数量;识别出所述深度学习计算网络中包括的第一运算层信息,并对所述第一运算层的多个输入对应分配的内存空间设置第一标记;将所述分配的内存空间分配至多个物理内存上,其中将所述第一标记信息的多个输入对应的内存空间中至少2个分配在不同的物理内存上;从而在执行具有多个输入的第一运算层,可以同时从不同的物理内存上读取所述多个输入,这样降低了运算时间,提高了运算效率。
Description
技术领域
本申请涉及深度学习***优化领域,尤其涉及一种基于深度学习计算网络的硬件加速器内存分配技术。
背景技术
近几年来,人工智能研究十分热门,深度学习是其中的一种核心技术,其基本模型是深度神经网络。随着深度学习研究的日趋深入,人工神经网络的层数不断增加,从AlexNet的8层,到VGG的19层和GoogLeNet的22层,甚至ResNet更是深达152层。更深的网络意味着训练网络模型需要用到更大的内存。
由于总体上更深更广的网络对深度学习的精度提高有显著的作用,深度神经网络有朝着更深更广的方向发展,其面临的一个问题便是内存的不足。一般计算机的内存大小非常有限,因此如何利用有限的内存构建更深更广的网络便成为一个迫切的问题。
发明内容
本申请的一个目的是提供一种基于深度学习计算网络的硬件加速器内存分配方法及***,主要通过优化深度学习计算网络中有多个输入的运算层的输入/输出信息内存分配方案,提高深度学习计算网络的运算效率、性能等。
根据本申请的一个方面,提供了一种基于深度学习计算网络的硬件加速器内存分配方法,该方法包括:
逐层为深度学习计算网络中的运算层输入信息及输出运算结果分配内存空间,并确定所述深度学习计算网络需要的内存空间总数量;
识别出所述深度学习计算网络中包括的第一运算层信息,并对所述第一运算层的多个输入对应分配的内存空间设置第一标记,其中所述第一运算层为需输入多个运算信息进行运算的运算层;
将所述分配的内存空间分配至多个物理内存上,其中设置有所述第一标记信息的多个输入对应的内存空间中至少2个分配在不同的物理内存上。
根据本申请的另一个方面,提供一种基于深度学习计算网络的硬件加速器内存分配***,所述***至少包括:
决策器,其用于基于深度学习计算网络包括的运算层信息制定内存管理决策,其中,所述决策器被配置为:
逐层为深度学习计算网络中的运算层输入信息及输出运算结果分配内存空间,并确定所述深度学习计算网络需要的内存空间总数量;
识别出所述深度学习计算网络中包括的第一运算层信息,并对所述第一运算层的多个输入对应分配的内存空间设置第一标记,其中所述第一运算层为需输入多个运算信息进行运算的运算层;
内存分配器,其用于基于所述决策器制定的内存管理决策,将所述深度学习计算网络所需的内存空间分配至不同的物理内存,其中,所述内存分配器被配置为:
将所述分配的内存空间分配至多个物理内存上,其中将所述第一标记信息的多个输入对应的内存空间中至少2个分配在不同的物理内存上。
与现有技术相比,本申请所述的方法及***可以逐层为深度学习计算网络中的运算层输入信息及输出运算结果分配内存空间,确定所述深度学习计算网络需要的内存空间总数量;识别出所述深度学习计算网络中包括的第一运算层信息,并对所述第一运算层的多个输入对应分配的内存空间设置第一标记;将所述分配的内存空间分配至多个物理内存上,其中将所述第一标记信息的多个输入对应的内存空间中至少2个分配在不同的物理内存上;从而在执行具有多个输入的第一运算层,可以同时从不同的物理内存上读取所述多个输入,这样降低了运算时间,提高了运算效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是根据本申请一个实施例的基于深度学习计算网络的硬件加速器内存分配方法流程图;
图2是根据本申请一个实施例的一种深度学习计算网络的运算层示意图;
图3是上述图2中深度学习计算网络运算结果的内存分配示意图;
图4示出图3中深度学习计算网络运算结果的内存分配至两块物理内存的一种方案的示意图;
图5示出图3中深度学习计算网络运算结果的内存分配至两块物理内存的另一种方案的示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
为了使本技术领域的人员更好地理解本申请的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请提供的基于深度学习计算网络的硬件加速器内存分配方法及***,适用于卷积运算、矩阵/向量/标量/张量等的运算,同时也适用于具有多个输入的各种运算类型,例如,加/减/乘/除等,只要该层运算需要多个输入即可,本申请的方案适用于深度学习计算网络运算处理器设置的编译或运行阶段,根据深度学习计算网络运算层的属性和特点,为所述深度学习计算网络进行内存分配方案的设置,也即将所述多个输入中的至少两个输入分别存储在不同的物理内存上,从而可以在执行该运算层时,可以同时读取所述存储在不同物理内存上的多个输入,降低运算所需时间,也降低内存读/写带宽,优化了内存分配、提高了整个深度学习网络的运算效率。尤其是随着科技的发展,深度学习计算网络的深度越来越深,对内存资源要求越来越高,本申请可以有效解决该问题。
根据本申请的一个方面,提供了一种基于卷积神经网络的图像处理方法。参图1所示,展示了一种基于深度学习计算网络的硬件加速器内存分配方法,所述深度学习计算网络包括若干运算层,其中,该方法包括:
S1逐层为深度学习计算网络中的运算层输入信息及输出运算结果分配内存空间,并确定所述深度学习计算网络需要的内存空间总数量。
S2识别出所述深度学习计算网络中包括的第一运算层信息,并对所述第一运算层的多个输入对应分配的内存空间设置第一标记,其中所述第一运算层为需输入多个运算信息进行运算的运算层。
S3将所述分配的内存空间分配至多个物理内存上,其中将所述第一标记信息的多个输入对应的内存空间中至少2个分配在不同的物理内存上。
具体地,在所述步骤S1中,所述深度学习计算网络包括多个运算层,上一运算层的输出为下一运算层的输入,所述运算层的输入及输出信息均存储在内存空间中,如图2所示即为深度学习计算网络的部分运算层,深度学习计算网络运算层的每个输入信息及每个输出信息均分别存储在内存空间中,从input开始为其分配内存空间,由input计算C1,需要为C1分配内存空间,由C1计算C2,需要为C2分配内存空间,由C2计算C3,需要为C3分配内存空间,依次类推逐层进行内存空间的分配。进一步,根据为所述深度学习计算网络的所有运算层的输入及输出信息分配的内存空间数量,确定所述深度学习计算网络需要的内存空间总数量。
具体地,在所述步骤S2中,所述第一运算层为深度学习计算网络中具有多个输入的运算层,参图2所示,C2和U2共同作为一个第一运算层的输入,二者相加后计算得P3为输出,此处,第一运算层多个输入的运算方式不做限制,可以为加/减/乘/除以及其他运算方式,只要满足输入信息为两个或者两个以上即可。所述多个输入信息将同时作为一个运算层的输入,需对所述多个输入对应分配的内存空间设置第一标记,以便后续将内存空间分配至物理内存上时,将所述多个输入信息分配至不同的物理内存上,从而可以在执行所述第一运算层时,同时读取所述多个输入信息,加快运算速度,提高运算效率。其中,第一标记的具体形式不做限制,可以通过内存的地址信息代替,可以为数字编号信息,例如,1,2,3,4...,也可以为字母编号,例如,a.b.c.d...,但是当所述深度学习计算网络中包括多个第一运算层时,还要附加该编号对应的输入信息与另外哪些编号对应的输入信息为同一个第一运算层的多个输入信息,例如,编号为1及3的内存空间存储的为同一个第一运算层的输入信息,编号1与3的内存空间需设置在不同的物理内存上。
具体地,在步骤S3中,物理内存上设置有若干内存空间,深度学习计算网络运算过程中的输入、输出信息均存储在物理内存的内存空间中,并通过写入/读取的方式更新物理内存中存储的数据信息,所述步骤S1中确定的对应数量的所需内存空间根据所述步骤2中的标记信息分配至具体的物理内存中,以便后续深度学习计算网络的顺利/高效执行。进一步地,当物理内存的个数大于等于所述第一运算层的输入个数时,将所述第一运算层的多个输入信息分配的内存空间分别设置在不同的物理内存上,但当物理内存的个数小于所述第一运算层的输入个数时,将所述第一运算层的多个输入信息中的至少两个分配至不同的物理内存上,从而在执行所述第一运算层时,同时读取所述存储在不同物理内存上的多个输入信息,加快数据读取速度,进一步提高运算的效率,更合理、高效使用了有限的内存资源。
在其中一个优选的实施例中,所述S1包括:
S11(未示出)逐层为深度学习计算网络中的运算层输入信息及输出运算结果分配内存空间,并对所述内存空间分别设置第二标记。
具体地,在为深度学习计算网络逐层分配内存空间时,根据实际需要分配的内存空间数量等情况,对其进行第二标记,参图3所示,input作为一个运算层的输入其分配的内存空间为1号内存,C1作为通过输入为input运算获得的结果,其分配的内存空间为2号内存等,进一步地,所述第二标记的具体形式不做限制,可以通过内存的地址信息代替,可以为数字编号信息,例如,1,2,3,4...,也可以为字母编号,例如,a.b.c.d...。
S12(未示出)根据所述第二标记信息确定需要的内存空间总数量。
具体地,所述深度学习计算网络的运算层输入/输出信息需要的内存空间通过第二标记进行标记后,便可通过标记情况确定所述深度学习计算网络需要的内存空间总数量,以便后续设置物理内存的相关参数,例如,物理内存的大小,每个物理内存设置内存空间的个数等。
在其中一个优选的实施例中,所述方法还包括:
S4(未示出)执行当前运算层后,判断所述当前运算层的输入信息是否还需要作为后续运算层的输入信息;
S5(未示出)若否,释放所述当前运算层的输入信息的内存空间。
具体地,在编译阶段,在一个运算层的输入数据被读取参与运算执行后,还需要判断该数据是否还会作为其他运算层的输入,也即是否还会被后续运算所需要,以此判断是否保留该数据,若是,该数据应保留,并仍然存储在当前读取的内存空间内;若否,则删除该数据,并释放所述输入信息对应的内存空间,被后续运算使用,从而更加高效、合理使用内存资源,增加深度学习计算网络的运算效率。
进一步地,参图3所示,input作为运算层的输入为其分配内存空间,设为1号内存;由input计算获得运算层的输出结果C1,为C1分配内存空间,设为2号内存;由C1计算C2时,识别出1号内存空间中存储的input数据信息因不再作为后续运算使用,input数据已被删除,释放1号内存空间,此时C2可以重复使用1号内存,将其存入1号内存中;由C2计算C3,同样地,因C1数据已被删除,2号内存空间被释放,C3可以重复使用2号内存空间,将其存入其中。由C3计算C4时,因计算P2时仍需要存储在1号内存空间中的C2,所以在P2计算前,1号内存中的C2不可删除,也即1号不可重复使用,此时只能分配新的内存空间,标记为3号内存。
在其中一个优选的实施例中,所述S1还包括:
S13(未示出)检测待分配内存空间中是否存在被释放的内存空间;
若是,其中所述S1还包括:
S14(未示出)为深度学习计算网络中的运算层输入信息及输出运算结果优先分配被释放的内存空间中,并确定所述深度学习计算网络需要的内存空间总数量。
具体地,在为深度学习计算网络的运算数据分配每一个内存空间时,均检测是否存在被释放的内存空间,若存在,则将当前需要分配内存空间的数据存入其中,并根据实际需要对该内存空间进行标记,根据实际使用内存空间的标记信息,统计确定所需内存空间的总数量。
具体地,作为举例而非限定,参图3所示,由C4计算C5时,因计算P3时仍需要存储在2号内存空间中的C3,所以在P3计算前,2号内存空间中的C3不能删除,2号内存空间不可释放重用;计算P4时仍需要存储在3号内存空间中的C4,所以在P4计算前,3号内存空间中的C4不能删除,3号内存空间不可释放重用,只能分配新的内存空间,标记为4号内存。
由C5计算P5时,因计算P4时仍需要存储在3号内存空间的C4,所以在P4计算前,3号内存不可释放重用,又因此时P2、P3仍未计算,只能分配新的内存空间,标记为5号内存。
由P5计算U4时,存储在4号内存空间中的C5不再被后续运算使用,U4可被删除,并释放4号内存空间被U4重复存储使用,即U4存入4号内存空间中。
在其中一个优选的实施例中,所述S3包括:
S31(未示出)将设置第一标记信息的内存空间分配在至少两个不同的物理内存上。
S32(未示出)将未设置第一标记的内存空间分配至任一物理内存上。
具体地,所述第一标记信息为标记第一运算层多个运算输入的标记信息,根据所述第一标记信息可将所述第一运算层的多个输入分别分配至不同的物理内存上,从而可以在执行所述第一运算层时,可以从不同的物理内存上同时读取多个输入信息,提高运算效率。其它不需要互斥分配至不同物理内存的内存空间可以随意分配物理内存上,具体根据每个物理内存的大小,总的内存空间个数,已经被分配的内存空间个数等决定。
具体地,继续参图3所示,由C4+U4计算P4,此时需标记存储C4的3号内存空间与存储U4的4号内存空间分配到不同的物理内存中。因仍有其他运算层需要存储在5号内存空间中的数据P5,此处只能为P4分配新的内存空间,设为6号内存。同时,此处C4与U4运算数据被删除,3号及4号内存空间均被释放。
由P4计算U3,此时3号内存与4号内存都被释放可重复使用,顺序选择将U3存入3号内存空间中。
由C3+U3计算P3,此时需标记存储运算数据C3的2号内存与存储数据U3的3号内存分配到不同的物理内存中。因4号内存已被释放可以重复使用,P3可以存入4号内存空间中。同时,此处C3与U3运算数据被删除,2号及3号内存空间均被释放。
由P3计算U2,此时2号内存与3号内存均被释放可重复使用,顺序选择将U2存入2号内存空间中。
由C2+U2计算P2,此时需标记存储运算数据C2的1号内存与存储运算数据U2的2号内存分配到不同的物理内存块中。因3号内存已被释放可以重复使用,P2可以存入3号内存空间中。同时,此处C2与U2运算数据被删除,1号及2号内存空间均被释放。
进一步地,参图3所示,该图中展示的深度学习计算网络运算过程若不考虑内存空间的释放重复使用,共需要13个内存空间,考虑内存空间的释放和重复使用共需要6个内存空间,在编译阶段通过内存规划算法即可确定分配方案,在运行阶段提前静态按方案分配内存即可。从而确保深度学习计算网络动态执行过程中按照预设的内存分配方案使用内存资源,使得内存资源可以高效、合理利用,进一步提高深度学习计算网络的运算效率。
进一步地,根据前述分析,其中的6个内存空间中2号内存与3号内存、1号内存空间与2号内存空间、3号内存空间与、4号内存空间分别分配到不同的物理内存中5号内存空间与6号内存空间分配物理内存的方式不做限制,参图4及图5所示,两块物理内存10及20,其中2号与3号、1号与2号、3号与4号需要分别设置在不同的物理内存上,5号与6号可以设置相同的物理内存10上,也可分别设置物理内存10和20上。
在其中一个优选的实施例中,所述方法还包括:
S6(未示出)根据识别出的所述第一运算层的输入运算信息的个数,确定设置物理内存的个数。
当所述深度学习计算网络包括多个第一运算层时,所述S6包括:
根据识别出的所述多个第一运算层中输入信息最多的第一运算层对应的输入信息的个数,确定设置物理内存的个数。
具体地,如何确定物理内存的个数,实际上,深度学习计算网络会越来越庞大,无论从起深度还是宽度上均会越来越复杂,其中包括多个输入信息的第一运算层的数量也会比较多,而且其中第一运算层的输入数量也会非常多,当然,理论上,物理内存个数越多越可以满足更加丰富的深度学习计算网络,但同时也要考虑深度学习计算网络硬件加速器内整体内存的分布、设置情况。
作为本领域内的普通技术人员应当可以理解,此处物理内存设置的个数并不做限制,只要确保设置2个以上的物理内存,并且其中包括多个输入信息的第一运算层的多个输入信息有2及以上设置在不同的物理内存上即可。
在其中一个优选的实施例中,所述方法还包括:
S7(未示出)执行所述第一运算层时,同时从不同的物理内存上读取所述运算层的输入数据。
具体地,该实施例体现了本申请所述内存分配方案可以提高运算效率所在,对所述第一运算层的多个输入同时从不同的物理内存上读取,可以避免一个一个的读取浪费时间,从而提高运算效率。
在一个优选的实施例中,一种基于深度学习计算网络的硬件加速器内存管理***,其中,所述***至少包括:
决策器,其用于基于深度学习计算网络包括的运算层信息制定内存管理决策,其中,所述决策器被配置为:
逐层为深度学习计算网络中的运算层输入信息及输出运算结果分配内存空间,并确定所述深度学习计算网络需要的内存空间总数量。
具体地,所述深度学习计算网络包括多个运算层,上一运算层的输出为下一运算层的输入,所述运算层的输入及输出信息均存储在内存空间中,如图2所示即为深度学习计算网络的部分运算层,深度学习计算网络运算层的每个输入信息及每个输出信息均分别存储在内存空间中,从input开始为其分配内存空间,由input计算C1,需要为C1分配内存空间,由C1计算C2,需要为C2分配内存空间,由C2计算C3,需要为C3分配内存空间,依次类推逐层进行内存空间的分配。进一步,根据为所述深度学习计算网络的所有运算层的输入及输出信息分配的内存空间数量,确定所述深度学习计算网络需要的内存空间总数量。
识别出所述深度学习计算网络中包括的第一运算层信息,并对所述第一运算层的多个输入对应分配的内存空间设置第一标记,其中所述第一运算层为需输入多个运算信息进行运算的运算层。
具体地,所述第一运算层为深度学习计算网络中具有多个输入的运算层,参图2所示,C2和U2共同作为一个第一运算层的输入,二者相加后计算得P3为输出,此处,第一运算层多个输入的运算方式不做限制,可以为加/减/乘/除以及其他运算方式,只要满足输入信息为两个或者两个以上即可。所述多个输入信息将同时作为一个运算层的输入,需对所述多个输入对应分配的内存空间设置第一标记,以便后续将内存空间分配至物理内存上时,将所述多个输入信息分配至不同的物理内存上,从而可以在执行所述第一运算层时,同时读取所述多个输入信息,加快运算速度,提高运算效率。其中,第一标记的具体形式不做限制,可以通过内存的地址信息代替,可以为数字编号信息,例如,1,2,3,4...,也可以为字母编号,例如,a.b.c.d...,但是当所述深度学习计算网络中包括多个第一运算层时,还要附加该编号对应的输入信息与另外哪些编号对应的输入信息为同一个第一运算层的多个输入信息,例如,编号为1及3的内存空间存储的为同一个第一运算层的输入信息,编号1与3的内存空间需设置在不同的物理内存上。
内存分配器,其用于基于所述决策器制定的内存管理决策,将所述深度学习计算网络所需的内存空间分配至不同的物理内存,其中,所述内存分配器被配置为:
将所述分配的内存空间分配至多个物理内存上,其中设置有所述第一标记信息的多个输入对应的内存空间中至少2个分配在不同的物理内存上。
具体地,物理内存上设置有若干内存空间,深度学习计算网络运算过程中的输入、输出信息均存储在物理内存的内存空间中,并通过写入/读取的方式更新物理内存中存储的数据信息,所述步骤S1中确定的对应数量的所需内存空间根据所述步骤2中的标记信息分配至具体的物理内存中,以便后续深度学习计算网络的顺利/高效执行。进一步地,当物理内存的个数大于等于所述第一运算层的输入个数时,将所述第一运算层的多个输入信息分配的内存空间分别设置在不同的物理内存上,但当物理内存的个数小于所述第一运算层的输入个数时,将所述第一运算层的多个输入信息中的至少两个分配至不同的物理内存上,从而在执行所述第一运算层时,同时读取所述存储在不同物理内存上的多个输入信息,加快数据读取速度,进一步提高运算的效率,更合理、高效使用了有限的内存资源。
与现有技术相比,本申请所述的方法及***可以逐层为深度学习计算网络中的运算层输入信息及输出运算结果分配内存空间,确定所述深度学习计算网络需要的内存空间总数量;识别出所述深度学习计算网络中包括的第一运算层信息,并对所述第一运算层的多个输入对应分配的内存空间设置第一标记;将所述分配的内存空间分配至多个物理内存上,其中将所述第一标记信息的多个输入对应的内存空间中至少2个分配在不同的物理内存上;从而在执行具有多个输入的第一运算层,可以同时从不同的物理内存上读取所述多个输入,这样降低了运算时间,提高了运算效率。
本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如前任一项所述的方法被执行。
本申请还提供了一种计算机程序产品,当所述计算机程序产品被计算机设备执行时,如前任一项所述的方法被执行。
本申请还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如前任一项所述的方法。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。本领域技术人员应能理解,计算机程序指令在计算机可读介质中的存在形式包括但不限于源文件、可执行文件、安装包文件等,相应地,计算机程序指令被计算机执行的方式包括但不限于:该计算机直接执行该指令,或者该计算机编译该指令后再执行对应的编译后程序,或者该计算机读取并执行该指令,或者该计算机读取并安装该指令后再执行对应的安装后程序。在此,计算机可读介质可以是可供计算机访问的任意可用的计算机可读存储介质或通信介质。
通信介质包括藉此包含例如计算机可读指令、数据结构、程序模块或其他数据的通信信号被从一个***传送到另一***的介质。通信介质可包括有导的传输介质(诸如电缆和线(例如,光纤、同轴等))和能传播能量波的无线(未有导的传输)介质,诸如声音、电磁、RF、微波和红外。计算机可读指令、数据结构、程序模块或其他数据可被体现为例如无线介质(诸如载波或诸如被体现为扩展频谱技术的一部分的类似机制)中的已调制数据信号。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被更改或设定的信号。调制可以是模拟的、数字的或混合调制技术。
作为示例而非限制,计算机可读存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质。例如,计算机可读存储介质包括,但不限于,易失性存储器,诸如随机存储器(RAM, DRAM, SRAM);以及非易失性存储器,诸如闪存、各种只读存储器(ROM,PROM, EPROM, EEPROM)、磁性和铁磁/铁电存储器(MRAM, FeRAM);以及磁性和光学存储设备(硬盘、磁带、CD、DVD);或其它现在已知的介质或今后开发的能够存储供计算机***使用的计算机可读信息/数据。
在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (11)
1.一种基于深度学习计算网络的硬件加速器内存分配方法,所述深度学习计算网络包括若干运算层,其中,该方法包括:
逐层为深度学习计算网络中的运算层输入信息及输出运算结果分配内存空间,并确定所述深度学习计算网络需要的内存空间总数量;
识别出所述深度学习计算网络中包括的第一运算层信息,并对所述第一运算层的多个输入对应分配的内存空间设置第一标记,其中所述第一运算层为需输入多个运算信息进行运算的运算层;
将所述分配的内存空间分配至多个物理内存上,其中将第一标记信息的多个输入对应的内存空间中至少2个分配在不同的物理内存上。
2.根据权利要求1所述的方法,其中,所述逐层为深度学习计算网络中的运算层输入信息及输出运算结果分配内存空间,并确定所述深度学习计算网络需要的内存空间总数量包括:
逐层为深度学习计算网络中的运算层输入信息及输出运算结果分配内存空间,并对所述内存空间分别设置第二标记;
根据第二标记信息确定需要的内存空间总数量。
3.根据权利要求2所述的方法,其中,所述方法还包括:
执行当前运算层后,判断所述当前运算层的输入信息是否还需要作为后续运算层的输入信息;
若否,释放所述当前运算层的输入信息的内存空间。
4.根据权利要求3所述的方法,其中,所述逐层为深度学习计算网络中的运算层输入信息及输出运算结果分配内存空间,并确定所述深度学习计算网络需要的内存空间总数量还包括:
检测待分配内存空间中是否存在被释放的内存空间;
若是,所述逐层为深度学习计算网络中的运算层输入信息及输出运算结果分配内存空间还包括:
为深度学习计算网络中的运算层输入信息及输出运算结果优先分配被释放的内存空间中。
5.根据权利要求1所述的方法,其中,所述将所述分配的内存空间分配至多个物理内存上包括:
将设置第一标记信息的内存空间分配在至少两个不同的物理内存上;
将未设置第一标记的内存空间分配至任一物理内存上。
6.根据权利要求1所述的方法,其中,所述方法还包括:
根据识别出的所述第一运算层的输入运算信息的个数,确定设置物理内存的个数。
7.根据权利要求6所述的方法,其中,当所述深度学习计算网络包括多个第一运算层时,所述根据识别出的所述第一运算层的输入运算信息的个数,确定设置物理内存的个数包括:
根据识别出的所述多个第一运算层中输入信息最多的第一运算层对应的输入信息的个数,确定设置物理内存的个数。
8.根据权利要求1至7中任一项所述的方法,其中,所述方法还包括:
g.执行所述第一运算层时,同时从不同的物理内存上读取所述运算层的输入数据。
9.一种基于深度学习计算网络的硬件加速器内存管理***,其中,所述***至少包括:
决策器,其用于基于深度学习计算网络包括的运算层信息制定内存管理决策,其中,所述决策器被配置为:
逐层为深度学习计算网络中的运算层输入信息及输出运算结果分配内存空间,并确定所述深度学习计算网络需要的内存空间总数量;
识别出所述深度学习计算网络中包括的第一运算层信息,并对所述第一运算层的多个输入对应分配的内存空间设置第一标记,其中所述第一运算层为需输入多个运算信息进行运算的运算层;
内存分配器,其用于基于所述决策器制定的内存管理决策,将所述深度学习计算网络所需的内存空间分配至不同的物理内存,其中,所述内存分配器被配置为:
将所述分配的内存空间分配至多个物理内存上,其中设置有第一标记信息的多个输入对应的内存空间中至少2个分配在不同的物理内存上。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,所述计算机程序被执行时能够实现权利要求1-8中任一项所述的深度学习计算网络的内存分配方法。
11.一种电子设备,其特征在于,所述电子设备至少包括:
一个或多个处理器;
存储器,其用于存储可执行指令;
所述一个或多个处理器被配置为经由所述可执行指令来实现权利要求1-8中任一项所述的深度学习计算网络的内存分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011543332.6A CN112286694B (zh) | 2020-12-24 | 2020-12-24 | 基于深度学习计算网络的硬件加速器内存分配方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011543332.6A CN112286694B (zh) | 2020-12-24 | 2020-12-24 | 基于深度学习计算网络的硬件加速器内存分配方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112286694A CN112286694A (zh) | 2021-01-29 |
CN112286694B true CN112286694B (zh) | 2021-04-02 |
Family
ID=74425095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011543332.6A Active CN112286694B (zh) | 2020-12-24 | 2020-12-24 | 基于深度学习计算网络的硬件加速器内存分配方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112286694B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113806078A (zh) * | 2021-08-27 | 2021-12-17 | 南京中科逆熵科技有限公司 | 一种用于边缘ai推理框架的内存调度方法 |
CN114298294B (zh) * | 2021-12-28 | 2022-11-01 | 杭州雄迈集成电路技术股份有限公司 | 一种基于硬件加速器的神经网络内存优化方法和装置 |
CN115357212B (zh) * | 2022-10-20 | 2023-01-13 | 瀚博半导体(上海)有限公司 | 用于环形缓冲器的参数生成方法、装置和人工智能芯片 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766932A (zh) * | 2017-10-19 | 2018-03-06 | 珠海格力电器股份有限公司 | 基于神经网络的图像处理方法及装置 |
CN108304265A (zh) * | 2018-01-23 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018084473A1 (ko) * | 2016-11-07 | 2018-05-11 | 삼성전자 주식회사 | 신경망 학습에 기반한 입력 처리 방법 및 이를 위한 장치 |
CN106919918B (zh) * | 2017-02-27 | 2022-11-29 | 腾讯科技(上海)有限公司 | 一种人脸跟踪方法和装置 |
CN109976903B (zh) * | 2019-02-22 | 2021-06-29 | 华中科技大学 | 一种基于层宽内存分配的深度学习异构计算方法和*** |
CN110413539B (zh) * | 2019-06-19 | 2021-09-14 | 深圳云天励飞技术有限公司 | 一种数据处理方法及装置 |
CN112099943B (zh) * | 2020-08-13 | 2024-05-03 | 深圳云天励飞技术股份有限公司 | 内存分配方法及相关设备 |
-
2020
- 2020-12-24 CN CN202011543332.6A patent/CN112286694B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766932A (zh) * | 2017-10-19 | 2018-03-06 | 珠海格力电器股份有限公司 | 基于神经网络的图像处理方法及装置 |
CN108304265A (zh) * | 2018-01-23 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112286694A (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112286694B (zh) | 基于深度学习计算网络的硬件加速器内存分配方法及*** | |
CN110597616B (zh) | 一种神经网络的内存分配方法及装置 | |
WO2022222839A1 (zh) | 一种面向神经网络模型计算的中间表示方法和装置 | |
CN110728578A (zh) | 区块链交易的并行执行方法、***及存储介质 | |
US8918783B2 (en) | Managing virtual computers simultaneously with static and dynamic dependencies | |
CN106709503B (zh) | 一种基于密度的大型空间数据聚类算法k-dbscan | |
US6925639B2 (en) | Method and system for register allocation | |
US20090106730A1 (en) | Predictive cost based scheduling in a distributed software build | |
CN112041859A (zh) | 使用分层存储在计算机上仿真量子电路 | |
CN104123184A (zh) | 一种用于为构建过程中的任务分配资源的方法和*** | |
CN113485836B (zh) | 一种基于张量切分的张量处理方法和张量处理*** | |
CN110019174A (zh) | 数据质量确定方法、装置、电子设备及存储介质 | |
CN108959359A (zh) | 一种统一资源定位符语义去重方法、装置、设备和介质 | |
CN109033365B (zh) | 一种数据处理方法及相关设备 | |
CN108885579A (zh) | 用于根据核追踪进行数据挖掘的方法和设备 | |
CN116302461A (zh) | 深度学习内存分配优化方法和*** | |
CN113867983A (zh) | 图数据挖掘方法、装置、电子设备及机器可读存储介质 | |
CN112346877B (zh) | 一种有效加速深度学习计算的内存分配方法及*** | |
CN109388568B (zh) | 代码测试方法和装置 | |
CN109976905A (zh) | 内存管理方法、装置和电子设备 | |
CN110955380B (zh) | 访存数据生成方法、存储介质、计算机设备和装置 | |
CN115952008A (zh) | 一种服务器集群资源的统一调度方法和装置 | |
CN116127932A (zh) | 一种业务报表生成方法、设备及介质 | |
CN115543809A (zh) | 自动驾驶功能的测试场景库构建方法及装置 | |
CN115470264A (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 |