CN111666150A - 存储空间的分配方法、装置、终端及计算机可读存储介质 - Google Patents

存储空间的分配方法、装置、终端及计算机可读存储介质 Download PDF

Info

Publication number
CN111666150A
CN111666150A CN202010390297.2A CN202010390297A CN111666150A CN 111666150 A CN111666150 A CN 111666150A CN 202010390297 A CN202010390297 A CN 202010390297A CN 111666150 A CN111666150 A CN 111666150A
Authority
CN
China
Prior art keywords
storage space
layer combination
target
combination
size
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.)
Granted
Application number
CN202010390297.2A
Other languages
English (en)
Other versions
CN111666150B (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.)
Shenzhen Intellifusion Technologies Co Ltd
Original Assignee
Shenzhen Intellifusion Technologies 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 Shenzhen Intellifusion Technologies Co Ltd filed Critical Shenzhen Intellifusion Technologies Co Ltd
Priority to CN202010390297.2A priority Critical patent/CN111666150B/zh
Publication of CN111666150A publication Critical patent/CN111666150A/zh
Priority to PCT/CN2021/088444 priority patent/WO2021227789A1/zh
Application granted granted Critical
Publication of CN111666150B publication Critical patent/CN111666150B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5022Mechanisms to release resources
    • 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

Landscapes

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

Abstract

本申请属于数据存储技术领域,尤其涉及一种存储空间的分配方法、装置、终端及计算机可读存储介质,其中,所述方法包括:遍历卷积神经网络每个层组合的输入层组合和输出层组合,得到第一目标层组合;判断所述第一目标层组合的输出层组合包含的多个输入层组合中是否存在已分配存储空间的第一目标输入层组合;若所述第一目标层组合的输出层组合包含的多个输入层组合中存在已分配存储空间的第一目标输入层组合,则在存储空间映射表中记录所述第一目标输入层组合的存储空间被同时分配给所述第一目标层组合,简化卷积神经网络处理器的软件编程复杂度。

Description

存储空间的分配方法、装置、终端及计算机可读存储介质
技术领域
本申请属于数据存储技术领域,尤其涉及一种存储空间的分配方法、装置、终端及计算机可读存储介质。
背景技术
卷积神经网络(CNN)由最基本的层(Layer)组成,每个Layer对应一个操作,并且,该操作的操作类型可以包括卷积操作(Convolution)、池化操作(Pooling)、按元素操作(Element-Wise)、连接操作(Concatenate)、全连接操作(Fully-Connected)、批处理归一化操作(Bath-Normalization)等。
神经网络处理器(NNP)是专门用来执行卷积神经网络计算任务的处理器。然而,目前的卷积神经网络处理器的软件编程复杂度普遍较高。
发明内容
本申请实施例提供一种存储空间的分配方法、装置、终端及计算机可读存储介质,可以简化卷积神经网络处理器的软件编程复杂度。
本申请实施例第一方面提供一种存储空间的分配方法,包括:
遍历卷积神经网络每个层组合的输入层组合和输出层组合,得到第一目标层组合;所述第一目标层组合的输出层组合包含多个输入层组合;
为每个所述第一目标层组合分配存储空间;
其中,在为每个所述第一目标层组合分配存储空间时包括:
判断所述第一目标层组合的输出层组合包含的多个输入层组合中是否存在已分配存储空间的第一目标输入层组合;
若所述第一目标层组合的输出层组合包含的多个输入层组合中存在已分配存储空间的第一目标输入层组合,则在存储空间映射表中记录所述第一目标输入层组合的存储空间被同时分配给所述第一目标层组合,并将所述第一目标输入层组合的存储空间被使用一次时所需的空间大小记录为size1+size2,将所述第一目标输入层组合的存储空间被重复使用时所需的空间大小记录为size1+size2与size_max1之间的较大值;其中,size1为所述第一目标输入层组合的存储空间历史记录的被使用一次时所需的存储空间大小,size2为所述第一目标层组合的计算结果需要占用的存储空间大小,size_max1为所述第一目标输入层组合的存储空间历史记录的被重复使用时所需的存储空间大小。
本申请实施例第二方面提供一种存储空间的分配装置,包括:
遍历单元,用于遍历卷积神经网络每个层组合的输入层组合和输出层组合,得到第一目标层组合;所述第一目标层组合的输出层组合包含多个输入层组合;
分配单元,用于为每个所述第一目标层组合分配存储空间;
所述分配单元在为每个所述第一目标层组合分配存储空间时,还用于:
判断所述第一目标层组合的输出层组合包含的多个输入层组合中是否存在已分配存储空间的第一目标输入层组合;
若所述第一目标层组合的输出层组合包含的多个输入层组合中存在已分配存储空间的第一目标输入层组合,则在存储空间映射表中记录所述第一目标输入层组合的存储空间被同时分配给所述第一目标层组合,并将所述第一目标输入层组合的存储空间被使用一次时所需的空间大小记录为size1+size2,将所述第一目标输入层组合的存储空间被重复使用时所需的空间大小记录为size1+size2与size_max1之间的较大值;其中,size1为所述第一目标输入层组合的存储空间历史记录的被使用一次时所需的存储空间大小,size2为所述第一目标层组合的计算结果需要占用的存储空间大小,size_max1为所述第一目标输入层组合的存储空间历史记录的被重复使用时所需的存储空间大小。
本申请实施例第三方面提供一种终端,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述方法的步骤。
本申请实施例第四方面提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述方法的步骤。
本申请实施例,通过遍历卷积神经网络每个层组合的输入层组合和输出层组合,得到输出层组合包含多个输入层组合的第一目标层组合,并在为每个所述第一目标层组合分配存储空间时,对每个第一目标层组合均执行判断该第一目标层组合的输出层组合包含的多个输入层组合中是否存在已分配存储空间的第一目标输入层组合的步骤,在第一目标层组合的输出层组合包含的多个输入层组合中存在已分配存储空间的第一目标输入层组合时,在存储空间映射表中记录该第一目标输入层组合的存储空间被同时分配给该第一目标层组合,即,将该第一目标输入层组合的存储空间同时分配给该第一目标层组合,使得该存储空间可以同时存储第一目标层组合的输出层组合包含的多个输入层组合的计算结果,使得卷积神经网络处理器在执行包含多个输入层组合的操作时,可以从同一片存储空间中读取数据,而不需要从多片存储空间中读取数据,进而简化了卷积神经网络处理器的软件编程复杂度。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本申请实施例提供的卷积神经网络层组合之间的数据输入输出关系的第一结构示意图;
图2是采用现有的存储空间的分配方法分配存储空间的第一结果示意图;
图3是本申请实施例提供的一种存储空间的分配方法的实现流程示意图;
图4是本申请实施例提供的一种存储空间的分配方法步骤302的具体实现流程示意图;
图5是本申请实施例提供的一种存储空间的分配方法步骤403的具体实现流程示意图;
图6是本申请实施例提供的释放存储空间的具体实现流程示意图;
图7是采用本申请的存储空间的分配方法分配存储空间的第一结果示意图;
图8是本申请实施例提供的卷积神经网络层组合之间的数据输入输出关系的第二结构示意图;
图9是采用现有的存储空间的分配方法分配存储空间的第二结果示意图;
图10是采用本申请的存储空间的分配方法分配存储空间的第二结果示意图;
图11是本申请实施例提供的存储空间的分配装置的结构示意图;
图12是本申请实施例提供的终端的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。
卷积神经网络(CNN)由最基本的层(Layer)组成,每个Layer对应一个操作,并且,该操作的操作类型可以包括卷积操作(Convolution)、池化操作(Pooling)、按元素操作(Element-Wise)、连接操作(Concatenate)、全连接操作(Fully-Connected)、批处理归一化操作(Bath-Normalization)等。
神经网络处理器(NNP)是专门用来执行卷积神经网络计算任务的处理器。与神经网络处理器配套的编译器,用于对卷积神经网络模型进行编译,产生可以在神经网络处理器上执行计算任务的机器码。为了减少神经网络处理器对除神经网络处理器的本地存储器以外的存储器的带宽需求,编译器在对卷积神经网络进行切割时尽量让每个Layer的结果存储在神经网络处理器的本地存储器。多个连续Layer组成一个层组合(Layer-Group),Layer-Group之间通过除神经网络处理器的本地存储器以外的存储器进行数据交换,Layer-Group内部的Layer通过神经网络处理器的本地存储器进行数据交换。如何给每个Layer-Group分配除神经网络处理器的本地存储器以外的存储器中的存储空间是编译器内存管理需要做的工作。
由于在这些卷积神经网络的操作中,有一些操作只包含一个输入,而有一些操作则包含多个输入。例如,Element-Wise通常包含两个输入,而Concatenate则包含两个输入或两个以上的输入。因此,在将多个连续Layer组成一个层组合(Layer-Group)时,当Layer-Group的第一层的操作类型为Element-Wise或Concatenate等存在多个输入的操作类型时,则该Layer-Group将存在多个输入层组合,并且,该Layer-Group即为该多个输入层组合分别对应的一个输出层组合。
例如,图1所示,图1中Layer-Group n+1的第一层的操作为Element-Wise,并且,Element-Wise的两个输入分别来自Layer-Group n-1和Layer-Group n,则Layer-Group n+1包含Layer-Group n-1和Layer-Group n这两个输入层组合,并且,Layer-Group n+1为Layer-Group n-1和Layer-Group n这两个输入层组合的输出层组合。
在实际应用中,若将Layer-Group n-1和Layer-Group n的计算结果分别存放到不同的存储空间,例如,如图2所示的存储空间BUF0和存储空间BUF1,则Element-Wise计算时需要分别读取BUF0和BUF1的数据,并将Layer-Group n+1的计算结果放到没有被占用的存储空间BUF2。然而,当Element-Wise需要进行多个round的计算时,这种数据存储方式使得进行Element-Wise计算时,需要在BUF0和BUF1这两片不同的存储空间之间交替读取数据,造成神经网络处理器的软件编码存在较高的复杂度。
基于此,本申请实施例提供了一种存储空间的分配方法、装置、终端及计算机可读存储介质,可以简化卷积神经网络处理器的软件编程复杂度。
为了说明本申请的技术方案,下面通过具体实施例来进行说明。
如图3示出了本申请实施例提供的一种存储空间的分配方法的实现流程示意图,该方法应用于终端,可以由终端上配置的存储空间的分配装置执行,适用于需简化卷积神经网络处理器的软件编程复杂度的情形。其中,上述终端可以为电脑、服务器等智能终端。上述存储空间的分配方法可以包括步骤301至步骤302。
步骤301,遍历卷积神经网络每个层组合的输入层组合和输出层组合,得到第一目标层组合。所述第一目标层组合的输出层组合包含多个输入层组合。
在实际应用中,上述遍历卷积神经网络每个层组合的输入层组合和输出层组合的过程中,可以包括:遍历卷积神经网络每个层组合中每个层的输入数据来自哪些层组合,进而得到卷积神经网络每个层组合的输入层组合和输出层组合,以及输出层组合包含多个输入层组合的第一目标层组合,输出层组合只包含一个输入层组合的第二目标层组合。
本申请通过遍历卷积神经网络每个层组合的输入层组合和输出层组合,得到输出层组合包含多个输入层组合的第一目标层组合,以及输出层组合只包含一个输入层组合的第二目标层组合,以便在为第一目标层组合分配存储空间时,可以将第一目标层组合对应的输出层组合包含的其他输入层组合的存储空间分配给该第一目标层组合的存储空间,实现将第一目标层组合对应的输出层组合包含的多个输入层组合的计算结果存储至同一片存储空间,使得卷积神经网络处理器在执行包含多个输入层组合的操作时,可以从同一片存储空间中读取数据,进而简化了卷积神经网络处理器的软件编程复杂度。
需要说明的是,在本申请实施例中,为第一目标层组合分配存储空间是指为第一目标层组合分配除神经网络处理器的本地存储器以外的存储器中的存储空间,并且,除神经网络处理器的本地存储器以外的存储器的类型可以包括双倍速率同步动态随机存储器(DDR SDRAM)、同步动态随机存取存储器(SDRAM)或总线式随机存取存储器(RDRAM),本申请对此不做限制。
步骤302,为每个所述第一目标层组合分配存储空间。
本申请实施例中,在为每个第一目标层组合分配存储空间分配存储空间时,需要将每个第一目标层组合对应的输出层组合包含的多个输入层组合的计算结果分别存储至同一片存储空间。具体的,如图4所示,在为每个所述第一目标层组合分配存储空间时,可以分别执行步骤401至步骤402。
步骤401,判断所述第一目标层组合的输出层组合包含的多个输入层组合中是否存在已分配存储空间的第一目标输入层组合。
本申请实施例中,通过判断所述第一目标层组合的输出层组合包含的多个输入层组合中是否存在已分配存储空间的第一目标输入层组合,以确定该多个输入层组合中是否已经有部分输入层组合已完成存储空间的分配。
步骤402,若所述第一目标层组合的输出层组合包含的多个输入层组合中存在已分配存储空间的第一目标输入层组合,则在存储空间映射表中记录所述第一目标输入层组合的存储空间被同时分配给所述第一目标层组合,并将所述第一目标输入层组合的存储空间被使用一次时所需的空间大小记录为size1+size2,将所述第一目标输入层组合的存储空间被重复使用时所需的空间大小记录为size1+size2与size_max1之间的较大值。
其中,size1为所述第一目标输入层组合的存储空间历史记录的被使用一次时所需的存储空间大小,size2为所述第一目标层组合的计算结果需要占用的存储空间大小,size_max1为所述第一目标输入层组合的存储空间历史记录的被重复使用时所需的存储空间大小。
由于第一目标层组合的输出层组合包含的多个输入层组合中存在已分配存储空间的第一目标输入层组合时,表示该多个输入层组合中是否已经有部分输入层组合已完成存储空间的分配,因此,为了保证同一输出层组合包含的多个输入层组合的计算结果可以被存储在同一片存储空间,需要在存储空间映射表中记录所述第一目标输入层组合的存储空间被同时分配给所述第一目标层组合。并且,需要将所述第一目标输入层组合的存储空间被使用一次时所需的空间大小记录为size1+size2,将所述第一目标输入层组合的存储空间被重复使用时所需的空间大小记录为size1+size2与size_max1之间的较大值,以便在划分每片存储空间时,可以根据存储空间映射表中记录的存储空间被重复使用时所需的空间大小进行划分,而每片存储空间内部的数据存储位置的划分则可以根据每次新增的空间大小size2进行划分。
可选的,在本申请的一些实施方式中,如图4所示,在上述步骤401之后,还可以包括步骤403:若所述第一目标层组合的输出层组合包含的多个输入层组合中不存在已分配存储空间的第一目标输入层组合,则将未被占用的存储空间分配给所述第一目标层组合。
由于第一目标层组合的输出层组合包含的多个输入层组合中不存在已分配存储空间的第一目标输入层组合时,表示该多个输入层组合中各个输入层组合均未进行存储空间的分配,因此,可以将任意一片未被占用的存储空间分配给该第一目标层组合,完成该第一目标层组合存储空间的分配。
例如,如图1所示,Layer-Group n-1对应的输出层组合Layer-Group n+1包含Layer-Group n-1与Layer-Group n这两个输入层组合;当第一目标层组合为Layer-Groupn-1,并为该第一目标层组合Layer-Group n-1分配存储空间时,其对应的输出层组合Layer-Group n+1包含的Layer-Group n-1与Layer-Group n这两个输入层组合中,不存在已分配存储空间的第一目标输入层组合,所以可以将任意一片未被占用的存储空间BUF m分配给所述第一目标层组合Layer-Group n-1。
而当第一目标层组合为Layer-Group n,并为该第一目标层组合Layer-Group n分配存储空间时,其对应的输出层组合Layer-Group n+1包含的Layer-Group n-1与Layer-Group n这两个输入层组合中,存在已分配存储空间的第一目标输入层组合Layer-Groupn-1,所以需要将已分配给Layer-Group n-1的存储空间BUF m同时分配给Layer-Group n。即,在存储空间映射表中记录BUF m被同时分配给Layer-Group n,以保证同一输出层组合Layer-Group n+1包含的两个输入层组合(Layer-Group n-1与Layer-Group n)的计算结果可以被存储在同一片存储空间BUF m,使得卷积神经网络处理器在执行包含多个输入层组合Layer-Group n+1的操作时,可以从同一片存储空间BUF m中读取Layer-Group n-1和Layer-Group n的计算结果,而不需要从两片存储空间进行数据读取,进而简化了卷积神经网络处理器的软件编程复杂度。
具体的,在存储空间映射表中记录BUF m被同时分配给Layer-Group n时,还需要将所述第一目标输入层组合的存储空间被使用一次时所需的空间大小记录为size1+size2,将所述第一目标输入层组合的存储空间被重复使用时所需的空间大小记录为size1+size2与size_max1之间的较大值。
其中,size1为所述第一目标输入层组合Layer-Group n-1的存储空间历史记录的被使用一次时所需的存储空间大小,即Layer-Group n-1的计算结果需要占用的存储空间大小;size2为所述第一目标层组合Layer-Group n的计算结果需要占用的存储空间大小,size_max1为所述第一目标输入层组合的存储空间历史记录的被重复使用时所需的存储空间大小,以便在划分每片存储空间时,可以根据计算得到的存储空间被重复使用时所需的空间大小进行划分,而每片存储空间内部的数据存储位置的划分则可以根据每次新增的空间大小size2进行划分。
例如,根据上述存储空间映射表中记录的存储空间的分配信息,可以得到BUF m的空间大小为size1+size2与size_max1之间的较大值;Layer-Group n-1被存放在地址空间可以为基地址+BUF m的相对地址偏移;Layer-Group n被存放在地址空间可以为基地址+BUF m的相对地址偏移+size1。其中,基地址是指存储层组合的计算结果的起始硬件地址。BUF m的相对地址偏移是指BUF m的地址相对于基地址的地址偏移。
本申请实施例,通过在为每个所述第一目标层组合分配存储空间时,将该第一目标层组合对应的输出层组合包含的多个输入层组合的计算结果存储于同一片存储空间,使得卷积神经网络处理器在执行包含多个输入层组合的操作时,可以从同一片存储空间中读取数据,而不需要从多片存储空间中读取数据,进而简化了卷积神经网络处理器的软件编程复杂度。
在本申请的一些实施方式中,为了减少存储空间的内存碎片,如图5所示,上述步骤403中,将未被占用的存储空间分配给所述第一目标层组合,可以包括步骤501至步骤502。
步骤501,查找所述存储空间映射表,判断所述存储空间映射表是否为空。
步骤502,若所述存储空间映射表为空,则在所述存储空间映射表中记录相对地址偏移为0的存储空间已分配给所述第一目标层组合;并将所述相对地址偏移为0的存储空间被使用一次时所需的空间大小记录为size2,将所述相对地址偏移为0的存储空间被重复使用时所需的空间大小记录为size2与size_max2之间的较大值;其中,size_max2为所述相对地址偏移为0的存储空间历史记录的被重复使用时所需的存储空间大小。
本申请实施例中,为了减少存储空间的内存碎片,在为每个所述第一目标层组合以及每个所述第二目标层组合分别分配存储空间时,采用依序分配新的存储空间的方式进行分配。即,从相对地址偏移为0的第一片存储空间开始分配,然后,将相对地址偏移为0+A、的第二片存储空间分配给相应的层组合,接着,将相对地址偏移为0+A+B的第三片存储空间分配给相应的层组合,其中,A为第一片存储空间的大小,B为第二片存储空间的大小,依次类推,使得上一片存储空间与下一片存储空间之间不会存在被浪费的存储空间,进而减少存储空间的内存碎片。其中,相对地址偏移为0的存储空间是指相对于基地址的地址偏移为0的存储空间。
具体的,本申请通过判断所述存储空间映射表是否为空,来确定相对地址偏移为0的存储空间是否已被分配给某个或多个层组合,以便在存储空间映射表为空时,将相对地址偏移为0的存储空间分配给所述第一目标层组合。即,在所述存储空间映射表中记录相对地址偏移为0的存储空间已分配给所述第一目标层组合;并将所述相对地址偏移为0的存储空间被使用一次时所需的空间大小记录为size2,将所述相对地址偏移为0的存储空间被重复使用时所需的空间大小记录为size2与size_max2之间的较大值。
在本申请的一些实施方式中,如图5所示,在上述步骤501之后,还可以包括步骤503至步骤504。
步骤503,若所述存储空间映射表不为空,则根据所述存储空间映射表判断是否存在已释放的存储空间。
步骤504,若存在已释放的存储空间,则在存储空间映射表中记录所述已释放的存储空间已分配给所述第一目标层组合,并将所述已释放的存储空间被使用一次时所需的空间大小记录为size2,将所述已释放的存储空间被重复使用时所需的空间大小记录为size2与size_max3之间的较大值;所述size_max3为所述已释放的存储空间历史记录的被重复使用时所需的存储空间大小。
由于存储空间映射表不为空时,表示相对地址偏移为0的存储空间已被分配给某个或多个层组合,因此,需要寻找其他未被占用的存储空间,并将寻找到的未被占用的存储空间分配给所述第一目标层组合。
然而,为了进一步地减少存储空间的内存碎片,在寻找其他未被占用的存储空间时,可以先根据所述存储空间映射表判断是否存在已释放的存储空间,以便在存在已释放的存储空间时,将该已释放的存储空间分配给所述第一目标层组合。即,在存储空间映射表中记录所述已释放的存储空间已分配给所述第一目标层组合,并将所述已释放的存储空间被使用一次时所需的空间大小记录为size2,将所述已释放的存储空间被重复使用时所需的空间大小记录为size2与size_max3之间的较大值;所述size_max3为所述已释放的存储空间历史记录的被重复使用时所需的存储空间大小。
需要说明的是,由于已释放的存储空间历史记录的被重复使用时所需的存储空间大小有可能大于size2,也有可能小于size2,而当已释放的存储空间历史记录的被重复使用时所需的存储空间大小小于size2时,若未将所述已释放的存储空间被重复使用时所需的空间大小记录为size2与size_max3之间的较大值,则将使得在根据存储空间映射表记录的存储空间被重复使用时所需的存储空间大小划分每片内存的存储空间时,将导致该已释放的存储空间的空间大小无法满足释放前的层组合的空间需求,因此,在将该已释放的存储空间分配给所述第一目标层组合时,需要将已释放的存储空间被重复使用时所需的空间大小记录为size2与size_max3之间的较大值;并且,同理,上述步骤402中,在存储空间映射表中记录所述第一目标输入层组合的存储空间被同时分配给所述第一目标层组合时,也需要将所述第一目标输入层组合的存储空间被重复使用时所需的空间大小记录为size1+size2与size_max1之间的较大值。
可选的,为了在将未被占用的存储空间分配给所述第一目标层组合时,可以实现将已释放的存储空间分配给所述第一目标层组合,如图6所示,在采用上述描述的各个存储空间的分配方法实现第一目标层组合存储空间的分配的过程中,在每完成一个所述第一目标层组合存储空间的分配之后,可以包括:步骤601至步骤602。
步骤601,判断所述第一目标层组合的输入层组合的输出层组合中是否存在未分配存储空间的第一目标输出层组合。
本申请实施例中,通过判断所述第一目标层组合的输入层组合的输出层组合中是否存在未分配存储空间的第一目标输出层组合,以确定第一目标层组合的输入层组合的计算结果是否已经被其输出层组合读取。
步骤602,若所述第一目标层组合的输入层组合的输出层组合中不存在未分配存储空间的第一目标输出层组合,则在存储空间映射表中标记所述第一目标层组合的输入层组合占用的存储空间已释放。
当所述第一目标层组合的输入层组合的输出层组合中不存在未分配存储空间的第一目标输出层组合时,表示第一目标层组合的输入层组合的计算结果已经被其输出层组合读取,并且第一目标层组合的输入层组合的输出层组合已经使用该计算结果完成计算,即,第一目标层组合的输入层组合占用的存储空间存储的数据已经被第一目标层组合的输入层组合的输出层组合使用,因此,可以将第一目标层组合的输入层组合占用的存储空间标记为已释放,以便该存储空间可以被重新分配给卷积神经网络的其他还未分配存储空间的层组合。
在本申请的一些实施方式中,当所述第一目标层组合的输入层组合的输出层组合中存在未分配存储空间的第一目标输出层组合时,则表示第一目标层组合的输入层组合的计算结果还将被该第一目标输出层组合读取,因此,第一目标层组合的输入层组合占用的存储空间还不能被标记为已释放。
需要说明的是,在本申请的一些实施方式中,在确定存储空间映射表不为空时,还可以将相对地址偏移最小的未被占用的存储空间分配给所述第一目标层组合。同样的,在确定不存在已释放的存储空间时,也可以将相对地址偏移最小的未被占用的存储空间分配给所述第一目标层组合。
在上述描述的各个实施方式中,所述存储空间的分配方法还可以包括:遍历卷积神经网络每个层组合的输入层组合和输出层组合,得到第二目标层组合;所述第二目标层组合的输出层组合只包含一个输入层组合;相应的,所述存储空间的分配方法还可以包括:在为每个第二目标层组合分配存储空间时,将未被占用的存储空间分配给所述第二目标层组合。
具体的,为了减少存储空间的内存碎片,上述将未被占用的存储空间分配给所述第二目标层组合时,可以包括:查找所述存储空间映射表,判断所述存储空间映射表是否为空;若所述存储空间映射表为空,则在所述存储空间映射表中记录相对地址偏移为0的存储空间已分配给所述第二目标层组合;并将所述相对地址偏移为0的存储空间被使用一次时所需的空间大小记录为size3,将所述相对地址偏移为0的存储空间被重复使用时所需的空间大小记录为size3与size_max2之间的较大值;其中,size3为所述第二目标层组合的计算结果需要占用的存储空间大小。
同样的,在本申请的一些实施方式中,在为每个所述第二目标层组合分配存储空间时,若所述存储空间映射表不为空,还可以根据所述存储空间映射表判断是否存在已释放的存储空间;若存在已释放的存储空间,则在存储空间映射表中记录所述已释放的存储空间已分配给所述第二目标层组合,并将所述已释放的存储空间被使用一次时所需的空间大小记录为size3,将所述已释放的存储空间被重复使用时所需的空间大小记录为size3与size_max3之间的较大值;所述size_max3为所述已释放的存储空间历史记录的被重复使用时所需的存储空间大小。并且,在将所述未被占用的存储空间分配给所述第二目标层组合之后,还可以包括:判断所述第二目标层组合的输入层组合的输出层组合中是否存在未分配存储空间的第二目标输出层组合;若所述第二目标层组合的输入层组合的输出层组合中不存在未分配存储空间的第二目标输出层组合,则在存储空间映射表中标记所述第二目标层组合的输入层组合占用的存储空间已释放。
本申请实施例中,在利用上述各实施方式描述的存储空间的分配方法为卷积神经网络的每个层组合进行内存分配之后,即可根据存储空间映射表中记录的各个存储空间被使用一次时所需的存储空间大小,以及被重复使用时所需的存储空间大小划分每片存储空间以及每片存储空间内部的数据存储位置。所述卷积神经网络处理器在执行包含多个输入层组合的操作时,可以从同一片存储空间中读取该操作对应的多个输入层组合的计算结果,简化卷积神经网络处理器的软件编程复杂度,并且当该操作为Concatenate时,还可以直接跳过该操作,从而提高了数据的存取效率,以及占用的存储空间。
例如,如图7所示,存储空间映射表中记录的2个存储空间分别为BUF 0、BUF 1,BUF0被同时分配给如图1所示的Layer-Group n-1和Layer-Group n,并且存储空间映射表中记录的BUF 0被使用一次时所需的存储空间大小为size4+size5,存储空间映射表中记录的BUF 0被重复使用时所需的空间大小记录为size_max4;BUF 1被分配给如图1所示的Layer-Group n+1,并且存储空间映射表中记录的BUF 1被使用一次时所需的存储空间大小为size6,存储空间映射表中记录的BUF 1被重复使用时所需的空间大小记录为size_max5。因此,在根据存储空间映射表中记录的各个存储空间被使用一次时所需的存储空间大小,以及被重复使用时所需的存储空间大小划分每片存储空间以及每片存储空间内部的数据存储位置时,BUF 0被划分得到的空间大小为size_max4,BUF 1被划分得到的空间大小为size_max5,并且,Layer-Group n-1的计算结果的存储地址为基地址+BUF 0的相对地址偏移;Layer-Group n的计算结果的存储地址为基地址+BUF 0的相对地址偏移+size4;Layer-Group n+1的计算结果的存储地址为基地址+BUF 1的相对地址偏移。卷积神经网络处理器在执行Layer-Group n+1第一层的操作Element-Wise时,只需要读取BUF 0中存储的数据即可,不需要分别从两片不同的存储空间读取数据,因而,可以简化卷积神经网络处理器的软件编程复杂度。
又例如,如图8所示,Layer-Group n+1的第一层的操作为Concatenate,并且,Concatenate的两个输入分别来自Layer-Group n-1和Layer-Group n,Concatenate的计算结果输出给Layer-Group n+2。若将Layer-Group n-1和Layer-Group n的计算结果分别存放到不同的存储空间,例如,如图9所示的存储空间BUF0和存储空间BUF1,则卷积神经网络的处理器在进行Concatenate计算时,需要分别读取BUF0和BUF1的数据,并将Layer-Groupn+1的计算结果放到没有被占用的存储空间BUF2,同时,在执行Layer-Group n+2的操作时,需要从BUF2中读取Concatenate的计算结果,并将Concatenate的计算结果存储至已释放的存储空间BUF0。
而采用本申请实施例提供的存储空间的分配方法进行内存分配时,由于Layer-Group n-1和Layer-Group n的输出层组合为包含两个输入层组合的Layer-Group n+1,因此,在为Layer-Group n-1和Layer-Group n分配存储空间时,会为Layer-Group n-1和Layer-Group n分配同一片存储空间。例如,如图10所示,Layer-Group n-1和Layer-Groupn的计算结果会被存储至同一片存储空间BUF0,卷积神经网络处理器在执行Layer-Group n+2的操作时,可以直接连续读取BUF0中的计算结果,并将BUF0中的计算结果存储至未被占用的存储空间BUF1,节省了Concatenate的搬运步骤以及占用的存储空间,提高了数据的存取效率,同时,简化了卷积神经网络处理器的软件编程复杂度。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为根据本发明,某些步骤可以采用其它顺序进行。
图11示出了本申请实施例提供的一种存储空间的分配装置1100的结构示意图,包括遍历单元1101和分配单元1102。
遍历单元1101,用于遍历卷积神经网络每个层组合的输入层组合和输出层组合,得到第一目标层组合;所述第一目标层组合的输出层组合包含多个输入层组合;
分配单元1102,用于为每个所述第一目标层组合分配存储空间;
所述分配单元在为每个所述第一目标层组合分配存储空间时,还用于:
判断所述第一目标层组合的输出层组合包含的多个输入层组合中是否存在已分配存储空间的第一目标输入层组合;
若所述第一目标层组合的输出层组合包含的多个输入层组合中存在已分配存储空间的第一目标输入层组合,则在存储空间映射表中记录所述第一目标输入层组合的存储空间被同时分配给所述第一目标层组合,并将所述第一目标输入层组合的存储空间被使用一次时所需的空间大小记录为size1+size2,将所述第一目标输入层组合的存储空间被重复使用时所需的空间大小记录为size1+size2与size_max1之间的较大值;其中,size1为所述第一目标输入层组合的存储空间历史记录的被使用一次时所需的存储空间大小,size2为所述第一目标层组合的计算结果需要占用的存储空间大小,size_max1为所述第一目标输入层组合的存储空间历史记录的被重复使用时所需的存储空间大小。
在本申请的一些实施方式中,上述分配单元1102,还用于在所述判断所述第一目标层组合的输出层组合包含的多个输入层组合中是否存在已分配存储空间的第一目标输入层组合之后,若所述第一目标层组合的输出层组合包含的多个输入层组合中不存在已分配存储空间的第一目标输入层组合,则将未被占用的存储空间分配给所述第一目标层组合。
在本申请的一些实施方式中,上述分配单元1102,还用于查找所述存储空间映射表,判断所述存储空间映射表是否为空;若所述存储空间映射表为空,则在所述存储空间映射表中记录相对地址偏移为0的存储空间已分配给所述第一目标层组合;并将所述相对地址偏移为0的存储空间被使用一次时所需的空间大小记录为size2,将所述相对地址偏移为0的存储空间被重复使用时所需的空间大小记录为size2与size_max2之间的较大值;其中,size_max2为所述相对地址偏移为0的存储空间历史记录的被重复使用时所需的存储空间大小。
在本申请的一些实施方式中,上述分配单元1102,还用于在所述判断所述存储空间映射表是否为空之后,若所述存储空间映射表不为空,则根据所述存储空间映射表判断是否存在已释放的存储空间;若存在已释放的存储空间,则在存储空间映射表中记录所述已释放的存储空间已分配给所述第一目标层组合,并将所述已释放的存储空间被使用一次时所需的空间大小记录为size2,将所述已释放的存储空间被重复使用时所需的空间大小记录为size2与size_max3之间的较大值;所述size_max3为所述已释放的存储空间历史记录的被重复使用时所需的存储空间大小。
在本申请的一些实施方式中,上述分配单元1102,还用于在每完成一个所述第一目标层组合存储空间的分配之后,判断所述第一目标层组合的输入层组合的输出层组合中是否存在未分配存储空间的第一目标输出层组合;若所述第一目标层组合的输入层组合的输出层组合中不存在未分配存储空间的第一目标输出层组合,则在存储空间映射表中标记所述第一目标层组合的输入层组合占用的存储空间已释放。
在本申请的一些实施方式中,上述分配单元1102,还用于将未被占用的存储空间分配给所述第二目标层组合。
在本申请的一些实施方式中,上述分配单元1102,还用于在所述将未被占用的存储空间分配给所述第二目标层组合之后,判断所述第二目标层组合的输入层组合的输出层组合中是否存在未分配存储空间的第二目标输出层组合;若所述第二目标层组合的输入层组合的输出层组合中不存在未分配存储空间的第二目标输出层组合,则在存储空间映射表中标记所述第二目标层组合的输入层组合占用的存储空间已释放。
需要说明的是,为描述的方便和简洁,上述描述的存储空间的分配装置1100的具体工作过程,可以参考上述图1至图10中描述的方法的对应过程,在此不再赘述。
如图12所示,本申请提供一种用于实现上述存储空间的分配方法的终端,该终端12可以包括:处理器120、存储器121以及存储在所述存储器121中并可在所述处理器120上运行的计算机程序122,例如内存分配程序。所述处理器120执行所述计算机程序122时实现上述各个存储空间的分配方法实施例中的步骤,例如图3所示的步骤301至302。或者,所述处理器120执行所述计算机程序122时实现上各装置实施例中各模块/单元的功能,例如图11所示单元1101至1102的功能。
所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器121中,并由所述处理器120执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述终端中的执行过程。例如,所述计算机程序可以被分割成遍历单元和分配单元,各单元具体功能如下:
遍历单元,用于遍历卷积神经网络每个层组合的输入层组合和输出层组合,得到第一目标层组合;所述第一目标层组合的输出层组合包含多个输入层组合;
分配单元,用于为每个所述第一目标层组合分配存储空间;
所述分配单元在为每个所述第一目标层组合分配存储空间时,还用于:
判断所述第一目标层组合的输出层组合包含的多个输入层组合中是否存在已分配存储空间的第一目标输入层组合;
若所述第一目标层组合的输出层组合包含的多个输入层组合中存在已分配存储空间的第一目标输入层组合,则在存储空间映射表中记录所述第一目标输入层组合的存储空间被同时分配给所述第一目标层组合,并将所述第一目标输入层组合的存储空间被使用一次时所需的空间大小记录为size1+size2,将所述第一目标输入层组合的存储空间被重复使用时所需的空间大小记录为size1+size2与size_max1之间的较大值;其中,size1为所述第一目标输入层组合的存储空间历史记录的被使用一次时所需的存储空间大小,size2为所述第一目标层组合的计算结果需要占用的存储空间大小,size_max1为所述第一目标输入层组合的存储空间历史记录的被重复使用时所需的存储空间大小。
所述终端可以是电脑、服务器等计算设备。所述终端可包括,但不仅限于,处理器120、存储器121。本领域技术人员可以理解,图12仅仅是终端的示例,并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端还可以包括输入输出设备、网络接入设备、总线等。
所称处理器120可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字内存分配器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器121可以是所述终端的内部存储单元,例如终端的硬盘或内存。所述存储器121也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器121还可以既包括所述终端的内部存储单元也包括外部存储设备。所述存储器121用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述存储器121还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种存储空间的分配方法,其特征在于,包括:
遍历卷积神经网络每个层组合的输入层组合和输出层组合,得到第一目标层组合;所述第一目标层组合的输出层组合包含多个输入层组合;
为每个所述第一目标层组合分配存储空间;
其中,在为每个所述第一目标层组合分配存储空间时包括:
判断所述第一目标层组合的输出层组合包含的多个输入层组合中是否存在已分配存储空间的第一目标输入层组合;
若所述第一目标层组合的输出层组合包含的多个输入层组合中存在已分配存储空间的第一目标输入层组合,则在存储空间映射表中记录所述第一目标输入层组合的存储空间被同时分配给所述第一目标层组合,并将所述第一目标输入层组合的存储空间被使用一次时所需的空间大小记录为size1+size2,将所述第一目标输入层组合的存储空间被重复使用时所需的空间大小记录为size1+size2与size_max1之间的较大值;其中,size1为所述第一目标输入层组合的存储空间历史记录的被使用一次时所需的存储空间大小,size2为所述第一目标层组合的计算结果需要占用的存储空间大小,size_max1为所述第一目标输入层组合的存储空间历史记录的被重复使用时所需的存储空间大小。
2.如权利要求1所述的存储空间的分配方法,其特征在于,在所述判断所述第一目标层组合的输出层组合包含的多个输入层组合中是否存在已分配存储空间的第一目标输入层组合之后,包括:
若所述第一目标层组合的输出层组合包含的多个输入层组合中不存在已分配存储空间的第一目标输入层组合,则将未被占用的存储空间分配给所述第一目标层组合。
3.如权利要求2所述的存储空间的分配方法,其特征在于,所述将未被占用的存储空间分配给所述第一目标层组合,包括:
查找所述存储空间映射表,判断所述存储空间映射表是否为空;
若所述存储空间映射表为空,则在所述存储空间映射表中记录相对地址偏移为0的存储空间已分配给所述第一目标层组合;并将所述相对地址偏移为0的存储空间被使用一次时所需的空间大小记录为size2,将所述相对地址偏移为0的存储空间被重复使用时所需的空间大小记录为size2与size_max2之间的较大值;其中,size_max2为所述相对地址偏移为0的存储空间历史记录的被重复使用时所需的存储空间大小。
4.如权利要求3所述的存储空间的分配方法,其特征在于,在所述判断所述存储空间映射表是否为空之后,还包括:
若所述存储空间映射表不为空,则根据所述存储空间映射表判断是否存在已释放的存储空间;
若存在已释放的存储空间,则在存储空间映射表中记录所述已释放的存储空间已分配给所述第一目标层组合,并将所述已释放的存储空间被使用一次时所需的空间大小记录为size2,将所述已释放的存储空间被重复使用时所需的空间大小记录为size2与size_max3之间的较大值;所述size_max3为所述已释放的存储空间历史记录的被重复使用时所需的存储空间大小。
5.如权利要求1-4任意一项所述的存储空间的分配方法,其特征在于,在每完成一个所述第一目标层组合存储空间的分配之后,包括:
判断所述第一目标层组合的输入层组合的输出层组合中是否存在未分配存储空间的第一目标输出层组合;
若所述第一目标层组合的输入层组合的输出层组合中不存在未分配存储空间的第一目标输出层组合,则在存储空间映射表中标记所述第一目标层组合的输入层组合占用的存储空间已释放。
6.如权利要求1所述的存储空间的分配方法,其特征在于,所述存储空间的分配方法还包括:遍历卷积神经网络每个层组合的输入层组合和输出层组合,得到第二目标层组合;所述第二目标层组合的输出层组合只包含一个输入层组合;
在为每个所述第二目标层组合分配存储空间时,将未被占用的存储空间分配给所述第二目标层组合。
7.如权利要求6所述的存储空间的分配方法,其特征在于,在所述将未被占用的存储空间分配给所述第二目标层组合之后,包括:
判断所述第二目标层组合的输入层组合的输出层组合中是否存在未分配存储空间的第二目标输出层组合;
若所述第二目标层组合的输入层组合的输出层组合中不存在未分配存储空间的第二目标输出层组合,则在存储空间映射表中标记所述第二目标层组合的输入层组合占用的存储空间已释放。
8.一种存储空间的分配装置,其特征在于,包括:
遍历单元,用于遍历卷积神经网络每个层组合的输入层组合和输出层组合,得到第一目标层组合;所述第一目标层组合的输出层组合包含多个输入层组合;
分配单元,用于为每个所述第一目标层组合分配存储空间;
所述分配单元在为每个所述第一目标层组合分配存储空间时,还用于:
判断所述第一目标层组合的输出层组合包含的多个输入层组合中是否存在已分配存储空间的第一目标输入层组合;
若所述第一目标层组合的输出层组合包含的多个输入层组合中存在已分配存储空间的第一目标输入层组合,则在存储空间映射表中记录所述第一目标输入层组合的存储空间被同时分配给所述第一目标层组合,并将所述第一目标输入层组合的存储空间被使用一次时所需的空间大小记录为size1+size2,将所述第一目标输入层组合的存储空间被重复使用时所需的空间大小记录为size1+size2与size_max1之间的较大值;其中,size1为所述第一目标输入层组合的存储空间历史记录的被使用一次时所需的存储空间大小,size2为所述第一目标层组合的计算结果需要占用的存储空间大小,size_max1为所述第一目标输入层组合的存储空间历史记录的被重复使用时所需的存储空间大小。
9.一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任意一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任意一项所述方法的步骤。
CN202010390297.2A 2020-05-09 2020-05-09 存储空间的分配方法、装置、终端及计算机可读存储介质 Active CN111666150B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010390297.2A CN111666150B (zh) 2020-05-09 2020-05-09 存储空间的分配方法、装置、终端及计算机可读存储介质
PCT/CN2021/088444 WO2021227789A1 (zh) 2020-05-09 2021-04-20 存储空间的分配方法、装置、终端及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010390297.2A CN111666150B (zh) 2020-05-09 2020-05-09 存储空间的分配方法、装置、终端及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN111666150A true CN111666150A (zh) 2020-09-15
CN111666150B CN111666150B (zh) 2022-01-11

Family

ID=72383508

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010390297.2A Active CN111666150B (zh) 2020-05-09 2020-05-09 存储空间的分配方法、装置、终端及计算机可读存储介质

Country Status (2)

Country Link
CN (1) CN111666150B (zh)
WO (1) WO2021227789A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112256440A (zh) * 2020-12-23 2021-01-22 上海齐感电子信息科技有限公司 神经网络推理的内存管理方法及装置
WO2021227789A1 (zh) * 2020-05-09 2021-11-18 深圳云天励飞技术股份有限公司 存储空间的分配方法、装置、终端及计算机可读存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5941961A (en) * 1996-08-16 1999-08-24 Nec Corporation Data buffering system including buffer memory shared between channel data groups whereas buffer memory is divided into memory areas for storing different types of channel data groups
US20110283361A1 (en) * 2010-01-19 2011-11-17 Damballa, Inc. Method and system for network-based detecting of malware from behavioral clustering
CN106919918A (zh) * 2017-02-27 2017-07-04 腾讯科技(上海)有限公司 一种人脸跟踪方法和装置
CN109886390A (zh) * 2019-01-10 2019-06-14 平安科技(深圳)有限公司 卷积神经网络模型优化方法、装置、计算机设备及存储介质
CN109976903A (zh) * 2019-02-22 2019-07-05 华中科技大学 一种基于层宽内存分配的深度学习异构计算方法和系统
CN110245748A (zh) * 2018-03-09 2019-09-17 北京深鉴智能科技有限公司 卷积神经网络实现方法、装置、硬件加速器、存储介质
CN110597616A (zh) * 2018-06-13 2019-12-20 华为技术有限公司 一种神经网络的内存分配方法及装置
CN110750351A (zh) * 2019-12-20 2020-02-04 中科寒武纪科技股份有限公司 多核任务调度器、多核任务调度方法、装置及相关产品

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108615077B (zh) * 2016-12-09 2021-08-24 杭州海康威视数字技术股份有限公司 一种应用于深度学习网络的缓存优化方法及装置
CN106874219B (zh) * 2016-12-23 2018-11-02 深圳云天励飞技术有限公司 一种卷积神经网络的数据调度方法、系统及计算机设备
CN110866589B (zh) * 2018-08-10 2023-06-30 阿里巴巴(中国)有限公司 深度神经网络模型的运行方法、装置及框架
CN111666150B (zh) * 2020-05-09 2022-01-11 深圳云天励飞技术股份有限公司 存储空间的分配方法、装置、终端及计算机可读存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5941961A (en) * 1996-08-16 1999-08-24 Nec Corporation Data buffering system including buffer memory shared between channel data groups whereas buffer memory is divided into memory areas for storing different types of channel data groups
US20110283361A1 (en) * 2010-01-19 2011-11-17 Damballa, Inc. Method and system for network-based detecting of malware from behavioral clustering
CN106919918A (zh) * 2017-02-27 2017-07-04 腾讯科技(上海)有限公司 一种人脸跟踪方法和装置
CN110245748A (zh) * 2018-03-09 2019-09-17 北京深鉴智能科技有限公司 卷积神经网络实现方法、装置、硬件加速器、存储介质
CN110597616A (zh) * 2018-06-13 2019-12-20 华为技术有限公司 一种神经网络的内存分配方法及装置
CN109886390A (zh) * 2019-01-10 2019-06-14 平安科技(深圳)有限公司 卷积神经网络模型优化方法、装置、计算机设备及存储介质
CN109976903A (zh) * 2019-02-22 2019-07-05 华中科技大学 一种基于层宽内存分配的深度学习异构计算方法和系统
CN110750351A (zh) * 2019-12-20 2020-02-04 中科寒武纪科技股份有限公司 多核任务调度器、多核任务调度方法、装置及相关产品

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ADITYA ARDIYA: "基于多深度特征表达和稳定中心损失的目标检测算法研究", 《万方》 *
王桢宁: "混沌神经网络组合优化计算", 《万方》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021227789A1 (zh) * 2020-05-09 2021-11-18 深圳云天励飞技术股份有限公司 存储空间的分配方法、装置、终端及计算机可读存储介质
CN112256440A (zh) * 2020-12-23 2021-01-22 上海齐感电子信息科技有限公司 神经网络推理的内存管理方法及装置
CN112256440B (zh) * 2020-12-23 2021-03-09 上海齐感电子信息科技有限公司 神经网络推理的内存管理方法及装置

Also Published As

Publication number Publication date
CN111666150B (zh) 2022-01-11
WO2021227789A1 (zh) 2021-11-18

Similar Documents

Publication Publication Date Title
CN110149803B (zh) 数据存储方法、系统及终端设备
CN106407207B (zh) 一种实时新增数据更新方法和装置
CN111666150B (zh) 存储空间的分配方法、装置、终端及计算机可读存储介质
CN112287182A (zh) 图数据存储、处理方法、装置及计算机存储介质
CN109240607B (zh) 一种文件读取方法和装置
CN112667405B (zh) 信息处理方法、装置、设备及存储介质
CN112269661B (zh) 基于Kafka集群的分区迁移方法和装置
CN111324427A (zh) 一种基于dsp的任务调度方法及装置
CN111061752A (zh) 数据处理方法、装置及电子设备
CN113867644A (zh) 磁盘阵列优化方法、装置、计算机设备及存储介质
CN111897493A (zh) 存储空间管理方法、装置及电子设备、存储介质
CN109977074B (zh) 一种基于hdfs的lob数据处理方法及装置
CN111143092A (zh) 故障录波数据处理方法、系统及终端设备
CN115374232A (zh) 张量分配方法、介质、电子设备和程序产品
CN113077344B (zh) 基于区块链的交易方法、装置、电子设备及存储介质
CN111708715B (zh) 内存分配方法、内存分配装置及终端设备
CN110866127A (zh) 建立索引的方法以及相关装置
CN111352868B (zh) 串口访问方法、装置、终端设备及存储介质
CN112817526A (zh) 一种数据存储方法、装置及介质
JP4668562B2 (ja) メモリマネジメントプログラムおよびメモリマネジメント方法
CN117033002B (zh) 一种内存管理方法、装置、设备及存储介质
CN115037799B (zh) 限流方法、装置、设备及介质
CN111158605B (zh) 用于优化操作系统磁盘存储策略的方法、装置和智能设备
CN116991595B (zh) 一种基于Bitmap的内存分配方法、装置、设备及介质
WO2019041826A1 (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
CB02 Change of applicant information

Address after: 518000 1/F, 17 Building, Shenzhen Dayun Software Town, 8288 Longgang Avenue, Henggang Street, Longgang District, Shenzhen City, Guangdong Province

Applicant after: Shenzhen Yuntian lifeI Technology Co., Ltd

Address before: 518000 1/F, 17 Building, Shenzhen Dayun Software Town, 8288 Longgang Avenue, Henggang Street, Longgang District, Shenzhen City, Guangdong Province

Applicant before: SHENZHEN INTELLIFUSION TECHNOLOGIES Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant