CN112241324A - 内存管理方法及装置 - Google Patents
内存管理方法及装置 Download PDFInfo
- Publication number
- CN112241324A CN112241324A CN202011466212.0A CN202011466212A CN112241324A CN 112241324 A CN112241324 A CN 112241324A CN 202011466212 A CN202011466212 A CN 202011466212A CN 112241324 A CN112241324 A CN 112241324A
- Authority
- CN
- China
- Prior art keywords
- memory
- tensors
- resource
- resource class
- class
- 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
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
Abstract
本说明书实施例中提供了一种内存管理方法及装置。方法包括:响应于内存分配请求,从若干特定资源类中确定目标资源类。其中每个特定资源类均继承组合资源类,组合资源类继承原始资源类;原始资源类定义单个张量的内存地址的地址指针和长度描述信息;组合资源类定义内存分配方法函数和若干原子资源组合方式;若干特定资源类对应若干特定资源组合方式,特定资源组合方式是基于一个或多个原子资源组合方式得到的。接着通过目标资源类定义的内存确定方法函数,确定按照与目标资源类相对应的目标资源组合方式为若干张量分配内存时,待分配给若干张量的内存地址。最后通过目标资源类继承自组合资源类的内存分配方法函数为若干张量分配内存。
Description
技术领域
本说明书一个或多个实施例涉及计算机领域,尤其涉及一种内存管理方法及装置。
背景技术
深度学习技术已得到广泛的应用。例如,可以通过经训练的深度学习模型,实现语音识别任务、计算机视觉任务以及自然语言处理任务等。
随着深度学习技术被更加深入的研究,用于训练深度学习模型的优化器/深度学习框架,所涉及的内存管理方案可能会日益增多,新增的内存管理方案往往会更加复杂,且新增的内存管理方案还可能对既有的内存管理方案造成影响,为内存管理方案的持续优化和维护带来了客观的困难。
希望有一种新的技术方案,以期有利于对内存管理方案进行优化和维护。
发明内容
本说明书一个或多个实施例中提供了一种内存管理方法及装置。
第一方面,提供了一种内存管理方法,包括:首先接收内存分配请求,该内存分配请求包括相关于深度学习模型的若干张量。然后从预先部署的若干特定资源类中确定出目标资源类,其中每个特定资源类均继承组合资源类,组合资源类继承原始资源类;原始资源类定义了待分配给单个张量的内存地址的地址指针和长度描述信息;组合资源类利用长度描述信息和地址指针,定义内存分配方法函数以及若干原子资源组合方式;若干特定资源类对应若干特定资源组合方式,特定资源组合方式是基于若干原子资源组合方式中的一个或多个得到的。接着通过目标资源类定义的内存确定方法函数,确定待分配给若干张量的内存地址,其中,内存确定方法函数用于按照若干特定资源组合方式中与目标资源类对应的目标资源组合方式,确定待分配给若干张量的内存地址。然后按照所确定的待分配给各个张量的内存地址,通过目标资源类继承自组合资源类的内存分配方法函数为若干张量分配内存。
在一种可能的实施方式中,所述若干张量中的任一当前张量包括:输入深度学习模型的数据、深度学习模型的超参数、由深度学习模型的多个权重参数组成的向量或矩阵。
在一种可能的实施方式中,所述长度描述信息包括预定的字节长度和/或单个张量的数据类型。
在一种可能的实施方式中,所述若干原子资源组合方式包括以下各种原子资源组合方式中的至少一种:为单个张量分配专用的内存地址、为多个张量分配连续的内存地址、为多个张量分配共享的内存地址,以及按照指定字节对齐为多个张量分配连续的内存地址。
在一种可能的实施方式中,所述若干资源组合方式包括以下各种特定资源组合方式中的一种:
待分配给所述若干张量的内存地址连续;
待分配给所述若干张量的内存地址相同;
所述若干张量包括第一部分张量和第二部分张量,待分配给所述第一部分张量的内存地址组成连续内存区域,待分配给所述第二部分张量中的任一张量的内存地址包含于所述连续内存区域。
在一种可能的实施方式中,所述组合资源类还定义了资源列表和资源添加方法函数。所述方法还包括:通过所述目标资源类继承自所述组合资源类的资源添加方法函数,向所述资源列表添加所述若干张量。相应的,所述通过目标资源类定义的内存确定方法函数,确定待分配给所述若干张量的内存地址,具体包括:通过目标资源类定义的内存确定方法函数确定,按照所述若干特定资源组合方式中与所述目标资源类对应的目标资源组合方式为所述资源列表中的所述若干张量分配内存时,待分配给所述若干张量的内存地址。
在一种可能的实施方式中,所述组合资源类还定义了单个张量的生命周期和内存更新方法函数。所述方法还包括:对于所述若干张量中的任一当前张量,根据所述当前张量的生命周期,通过目标资源类继承自所述组合资源类的内存更新方法函数,将分配给所述当前张量的内存地址上的数据更新为所述当前张量。
在一种可能的实施方式中,所述组合资源类还定义了内存释放方法函数。所述方法还包括:接收内存释放请求;其中,所述内存释放请求用于请求释放为所述若干张量分配的内存地址。以及,根据所述目标资源类继承自所述组合资源类的内存释放方法函数,释放为所述若干张量分配的内存地址。
在一种可能的实施方式中,所述原始资源类还定义了执行所述内存管理方法的处理器的设备信息,所述设备信息包括所述处理器的设备标识和/或设备类型。所述方法还包括:根据所述设备信息,从至少一个内存分配器中确定出与所述处理器相对应的目标内存分配器。所述通过所述目标资源类继承自所述组合资源类的内存分配方法函数,为所述若干张量分配内存,包括:通过所述目标资源类继承自所述组合资源类的内存分配方法函数调用所述目标内存分配器,使所述目标内存分配器为所述若干张量分配内存。
在一种可能的实施方式中,所述内存分配请求还包括用于指示所述目标资源类的指示信息。所述从预先部署的若干特定资源类中确定出目标资源类,具体包括:根据所述指示信息从若干特定资源类中确定出目标资源类。
第二方面,提供了一种内存管理装置,包括:
接口单元,用于接收内存分配请求;其中,所述内存分配请求包括相关于深度学习模型的若干张量;以及,用于从预先部署的若干特定资源类中确定出目标资源类,其中每个所述特定资源类均继承组合资源类,所述组合资源类继承原始资源类;所述原始资源类定义了待分配给单个张量的内存地址的地址指针和长度描述信息;所述组合资源类利用所述长度描述信息和所述地址指针,定义内存分配方法函数以及若干原子资源组合方式;所述若干特定资源类对应若干特定资源组合方式,所述特定资源组合方式是基于所述若干原子资源组合方式中的一个或多个得到的;
地址确定单元,用于通过所述目标资源类定义的内存确定方法函数,确定待分配给所述若干张量的内存地址,其中,所述内存确定方法函数用于按照所述若干特定资源组合方式中与所述目标资源类对应的目标资源组合方式,确定待分配给所述若干张量的内存地址;
内存分配单元,用于按照所确定的待分配给所述若干张量的内存地址,通过所述目标资源类继承自所述组合资源类的内存分配方法函数,为所述若干张量分配内存。
在一种可能的实施方式中,所述若干张量中的任一当前张量包括:输入深度学习模型的数据、深度学习模型的超参数、由深度学习模型的多个权重参数组成的向量或矩阵。
在一种可能的实施方式中,所述长度描述信息包括预定的字节长度和/或单个张量的数据类型。
在一种可能的实施方式中,所述若干原子资源组合方式包括以下各种原子资源组合方式中的至少一种:为单个张量分配专用的内存地址、为多个张量分配连续的内存地址、为多个张量分配共享的内存地址,以及按照指定字节对齐为多个张量分配连续的内存地址。
在一种可能的实施方式中,所述若干特定资源组合方式包括以下各种特定资源组合方式中的一种:
待分配给所述若干张量的内存地址连续;
待分配给所述若干张量的内存地址相同;
所述若干张量包括第一部分张量和第二部分张量,待分配给所述第一部分张量的内存地址组成连续内存区域,待分配给所述第二部分张量中的任一张量的内存地址包含于所述连续内存区域。
在一种可能的实施方式中,所述组合资源类还定义了资源列表和资源添加方法函数;
所述装置还包括:资源管理单元,用于通过所述目标资源类继承自所述组合资源类的资源添加方法函数,向所述资源列表添加所述若干张量;
所述地址确定单元,具体用于通过所述目标资源类定义的内存确定方法函数确定,按照所述若干特定资源组合方式中与所述目标资源类对应的目标资源组合方式为所述资源列表中的所述若干张量分配内存时,待分配给所述若干张量的内存地址。
在一种可能的实施方式中,所述组合资源类还定义了单个张量的生命周期和内存更新方法函数;
所述装置还包括:内存释放单元,用于对于所述若干张量中的任一当前张量,根据所述当前张量的生命周期,通过目标资源类继承自所述组合资源类的内存更新方法函数,将分配给所述当前张量的内存地址上的数据更新为所述当前张量。
在一种可能的实施方式中,所述组合资源类还定义了内存释放方法函数;
所述接口单元,还用于接收内存释放请求;其中,所述内存释放请求用于请求释放为所述若干张量分配的内存地址;
所述装置还包括:内存释放单元,用于根据所述目标资源类继承自所述组合资源类的内存释放方法函数,释放为所述若干张量分配的内存地址。
在一种可能的实施方式中,所述原始资源类还定义了执行所述内存管理方法的处理器的设备信息,所述设备信息包括所述处理器的设备标识和/或设备类型;
所述装置还包括:分配器确定单元,用于根据所述设备信息,从至少一个内存分配器中确定出与所述处理器相对应的目标内存分配器;
所述内存分配单元,具体用于通过所述目标资源类继承自所述组合资源类的内存分配方法函数调用所述目标内存分配器,使所述目标内存分配器为所述若干张量分配内存。
在一种可能的实施方式中,所述内存分配请求还包括用于指示所述目标资源类的指示信息;
所述接口单元,具体用于根据所述指示信息从若干特定资源类中确定出目标资源类。
第三方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机指令/代码,所述处理器执行所述计算机指令/代码时,实现如第一方面中任一项所述的方法。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机指令/代码,当所述计算机指令/代码被计算设备的处理器执行时,所述计算设备实现如第一方面中任一项所述的方法。
通过本说明书一个或多个实施例中提供的内存管理方法及装置,根据不同内存管理方案的共有特征,抽象出原始资源类以及继承该原始资源类的组合资源类。当需要按照新的特定资源组合方式为若干张量分配内存时,即需要新增内存管理方案时,可以基于既有的原始资源类和组合资源类,新增一个继承该组合资源类并且与新的特定资源组合方式相对应的特定资源类,通过新增的特定资源类来实现新的内存管理方案,减少不同内存管理方案的耦合度,新增的内存管理方案不会对既有的内存管理方案造成冲击和影响,有利于对内存管理方案进行优化和维护。
附图说明
图1为本说明书实施例中提供的技术方案的系统框架示意图;
图2为本说明书实施例中提供的一种内存管理方法的流程示意图;
图3为向多个示例性的张量分配内存的示意图;
图4为本说明书实施例中提供的一种计算设备的结构示意图;
图5为本说明书实施例中提供的一种内存管理装置的结构示意图。
具体实施方式
随着深度学习技术被更加深入的研究,用于训练深度学习模型的深度学习框架(或者称为优化器),比如TensorFlow、PyTorch以及Woodpecker等,可能涉及多种内存管理方案。举例来说,Woodpecker涉及的内存管理方案可以包括:针对相关于深度学习模型的若干张量,为若干张量中的部分张量分配专用的内存地址、为若干张量中的部分张量分配共享的内存地址、为若干张量中的部分张量分配连续的内存地址。
深度学习框架涉及的内存管理方案日益增多,新增的内存管理方案往往更加复杂。举例来说,为Woodpecker新增的更为复杂的内存管理方案可以包括:针对相关于深度学习模型的若干张量,为若干张量中的第一部分张量分配连续的内存地址(即分配给该第一部分张量的内存地址组成连续内存区域),以及,为若干张量中的第二部分张量分配的内存地址相同或者包含于前述的连续内存区域(即第一部分张量和第二部分张量共享相同的连续内存区域)。
内存管理方案数量的增加以及复杂度的提高,通常会导致内存管理方案之间的耦合度随之增高,新增的内存管理方案还可能对既有的内存管理方案造成冲击和影响,为内存管理方案的持续优化和维护带来了客观的困难。
对于以上问题,经发明人研究发现,可基于不同内存管理方案的共有特征,抽象出多个存在继承关系的资源类,减少不同内存管理方案的耦合度,从而有利于更加方便的对内存管理方案的持续优化和维护。
图1为本说明书实施例中提供的技术方案的系统框架示意图。
请参考图1,单个张量的内存地址的地址指针和长度描述信息,可以作为不同内存管理方案的共有特征,由原始资源类C1对其进行定义。如此,由原始资源类C1来解决原始内存资源(内存地址)的配置问题;通过对原始资源类C1进行优化或维护,即可实现对不同内存管理方案的该部分共有特征进行维护。
对于任一种内存管理方案,其实质上对应一种特定的资源组合方式(以下称为特定资源组合方式),特定资源组合方式可以根据一种或多种细分的资源组合方式(以下称为原子资源组合方式)得到。原子资源组合方式可以作为不同内存管理方案可能具有的共有特征;组合资源类C2利用其继承自原始资源类C1的共有特征,对若干原子资源组合方式进行定义。
此外,在已确定待分配给若干张量的内存地址的情况下,按照所确定的内存地址为若干张量分配内存,也可以作为不同内存管理方案均可具有的共有特征,由组合资源类C2利用其继承自原始资源类的共有特征进行定义。
请参考图1,假设组合资源类C2定义了原子资源组合方式Shared{},Shared{}表征“多个张量共享相同的内存地址”。假设深度学习框架涉及的既有的内存管理方案X1包括,针对相关于深度学习模型的两个张量Tensor 1和Tensor 2,为Tensor 1和Tensor 2分配共享的内存地址。
基于以上假设,X1对应的特定资源组合方式可以包括“Tensor 1和Tensor 2共享相同的内存地址(或者表述为待分配给Tensor 1和Tensor 2的内存地址相同)”。此种情况下,X1对应的特定资源组合方式可以基于Shared{}得到,具体如将Tensor 1和Tensor 2作为Shared{}的输入,利用Shared{Tensor 1,Tensor 2}表征X1对应的特定资源组合方式。
为此,可部署特定资源类C31。具体而言,特定资源类C31可以利用组合资源类C2定义的Shared{},定义一个内存确定方法函数,该内存确定方法函数用于确定按照Shared{Tensor 1,Tensor 2}为Tensor 1、Tensor 2分配内存时,待分配给Tensor 1、Tensor 2的内存地址。当深度学习框架期望按照Shared{Tensor 1,Tensor 2}为Tensor 1、Tensor 2分配内存时,Shared{Tensor 1,Tensor 2}作为目标资源组合方式,特定资源类C31作为目标资源类;通过特定资源类C31定义的内存确定方法函数,确定待分配给Tensor 1、Tensor 2的内存地址,并且通过特定资源类C31继承自组合资源类C2的内存分配方法函数,按照待分配给Tensor 1、Tensor 2的内存地址,为Tensor 1、Tensor 2分配内存。
继续参考图1,假设新增的内存管理方案X2包括,针对相关于深度学习模型的三个张量Tensor 3、Tensor 4、Tensor 5,为Tensor 3和Tensor 4分配连续的内存地址(即为Tensor 3和Tensor 4分配的内存地址组成连续内存区域),为Tensor 5分配的内存地址包含于前述的连续内存区域。
基于该假设,X2对应的特定资源组合方式可以包括“为Tensor 3和Tensor 4分配的内存地址组成连续内存区域,由Tensor 3和Tensor 4构成的组合与Tensor 5共享前述的连续内存区域”。此种情况下,可以在组合资源类C2中新增原子资源组合方式Consecutive{}的定义,Consecutive{}表征“为多个张量分配连续的内存地址”,X2对应特定资源组合方式可以基于组合资源类C2定义的Shared{}和Consecutive{}得到,具体如将Tensor 3和Tensor 4作为Consecutive{}的输入得到Consecutive{Tensor 3,Tensor 4},然后进一步将Consecutive{Tensor 3,Tensor 4}和Tensor 5作为Shared{}的输入,利用Shared{Consecutive{Tensor 3,Tensor 4},Tensor 5}表征X2对应的特定资源组合方式。
为此,可部署特定资源类C32。具体而言,特定资源类C32可以利用组合资源类C2定义的Shared{}和Consecutive{},定义一个内存确定方法函数,该内存确定方法函数具体用于确定,按照Shared{Consecutive{Tensor 3,Tensor 4},Tensor 5}为Tensor 3、Tensor4、Tensor 5分配内存时,待分配给Tensor 3、Tensor 4、Tensor 5的内存地址。当深度学习框架期望按照Shared{Consecutive{Tensor 3,Tensor 4},Tensor 5}为Tensor 3、Tensor4、Tensor 5分配内存时,Shared{Consecutive{Tensor 3,Tensor 4},Tensor 5}作为目标资源组合方式,特定资源类C32作为目标资源类;通过特定资源类C32定义的内存确定方法函数,确定待分配给Tensor 3、Tensor 4、Tensor 5的内存地址,并且通过特定资源类C32继承自组合资源类C2的内存分配方法函数,按照待分配给Tensor 3、Tensor 4、Tensor 5的内存地址,为Tensor 3、Tensor 4、Tensor 5分配内存。
需要说明的是,图1仅用于辅助描述本说明书实施例中提供的技术方案。实际业务场景中,还可以通过部署更多的特定资源类,从而支持更多的内存管理方案。还可以通过原始资源类C1定义更多的共有特征,比如定义计算设备中用于执行内存管理方法的处理器的设备信息。还可以通过组合资源类C2定义若干内存管理方案可能具有的更多的共有特征,比如定义单个张量的生命周期、定义用于管理若干张量的资源列表、定义更多的原子资源组合方式以及定义用于更多的并且用于实现其它功能的方法函数。
结合以上对如图1所示系统框架的描述可见,根据不同内存管理方案的共有特征,抽象出原始资源类以及继承原始资源类的组合资源类。当需要新增内存管理方案时,可以基于既有的原始资源类和组合资源类,新增继承该组合资源类的特定资源类。通过新增的特定资源类来支持新的内存管理方案,减少了新增的内存管理方案和既有的内存管理方案的耦合度,新增的内存管理方案不会对既有的内存管理方案造成冲击和影响,有利于对内存管理方案进行持续优化和维护。
此外,原始资源类和组合资源类可以由机器学习框架按需提供,用户无需感知。特定资源类作为面向用户的类,用户可以通过调用统一的接口来使用各个特定资源类,从而按需实现各种内存管理方案。
相应的,本说明书实施例中具体提供了一种内存管理方法及装置。针对相关于深度学习模型的若干张量,当需要按照目标资源组合方式(若干特定资源组合方式中的一种)为若干张量分配内存时,可以通过目标资源类(与目标资源组合方式相对应的特定资源类)定义的内存确定方法函数,确定待分配给若干张量的内存地址,进而通过目标资源类继承自组合资源类的内存分配方法函数,按照所确定的内存地址为若干张量分配内存。
下面结合图1,对本说明书实施例中提供的非限制性实施例进行详细描述。
图2为本说明书实施例中提供的一种内存管理方法的流程图。该方法的执行主体可以为计算设备。该计算设备中可以部署本说明书任意一个实施例中提供的内存管理装置。该计算设备中可以部署和/或运行用于训练深度学习模型的深度学习框架。该计算设备包括但不限于服务器或一般计算机。
如图2所示,内存管理方法包括如下步骤21~步骤25中的部分或全部。
首先,在步骤21,接收内存分配请求。
其中,内存分配请求包括相关于深度学习模型的若干张量。
若干张量中的任一当前张量可以包括:输入深度学习模型的数据、深度学习模型的超参数、由深度学习模型的多个权重参数组成的向量或矩阵。其中,输入深度学习模型的数据可以是向量或矩阵,具体如表征词语或句子的向量、表征图像的矩阵等。
通过深度学习框架训练深度学习模型的过程中,深度学习框架将会使用相关于深度学习模型的若干张量执行计算任务。此时,深度学习框架所在的进程(Process),或者计算设备中与深度学习框架相协作的其它系统服务,可以发起内存分配请求。
接着,在步骤23,从预先部署的若干特定资源类中确定出目标资源类。
其中,每个特定资源类均继承组合资源类,组合资源类继承原始资源类。原始资源类定义了待分配给单个张量的内存地址的地址指针和长度描述信息。组合资源类利用长度描述信息和地址指针,定义内存分配方法函数以及若干原子资源组合方式。若干特定资源类对应若干特定资源组合方式,特定资源组合方式是基于若干原子资源组合方式中的一个或多个得到的。
当深度学习框架涉及一种内存管理方案的情况下,能够用于为若干张量分配内存的特定资源类唯一,该特定资源类可以被确定为目标资源类。
当深度学习框架涉及多种内存管理方案的情况下,能够用于为若干张量分配内存的特定资源类的数量为多个。相应的,为了实现按照深度学习框架期望使用的内存管理方案为若干张量分配内存,在一些实施例中,内存分配请求还可以包括用于指示目标资源类的指示信息。当内存分配请求包括指示信息的情况下,步骤23具体可以包括,根据指示信息从预先部署的若干特定资源类中确定出目标资源类。
在一些实施例中,长度描述信息可以包括单个张量的数据类型,数据类型可以指示单个张量在内存中所需占用的内存地址的长度。举例来说,原始资源类定义单个张量的数据类型为float。如果一个张量(比如,Tensor 1)是由深度学习模型的多个权重参数组成的向量,则Tensor 1可以被表示为包含多个权重参数的数组,多个权重参数的数据类型均为float。以计算设备采用32位或者64位编译器为例,Tensor 1中的单个权重参数所需占用的内存地址的长度是4字节。相应的,可以根据Tensor 1包含的权重参数的数量n以及单个权重参数所需占用的内存地址的长度,计算得到Tensor 1所需占用的内存地址的长度包括n*4字节。
在一些实施例中,长度描述信息可以包括预定的字节长度,即原始资源类可以定义单个张量所需占用的内存地址的长度为预定的字节长度。
若干原子资源组合方式包括以下各种原子资源组合方式中的一种或多种:为单个张量分配专用的内存地址、为多个张量分配连续的内存地址、为多个张量分配共享的内存地址、按照指定字节对齐为多个张量分配连续的内存地址。
若干特定资源组合方式包括以下各种特定资源组合方式中的一种或多种:
待分配给若干张量的内存地址连续;
待分配给若干张量的内存地址相同;
若干张量包括第一部分张量和第二部分张量,待分配给该第一部分张量的内存地址组成连续内存区域,待分配给该第二部分张量中的任一张量的内存地址包含于前述的连续内存区域。
示例性的,组合资源类C2利用Consecutive{}定义“为多个张量分配连续的内存地址”,一个特定资源类可以根据Consecutive{}得到Consecutive{Tensor 3、Tensor 4},Consecutive{Tensor 3、Tensor 4}表征待分配给Tensor 3和Tensor 4的内存地址连续。又如,组合资源类C2利用shared{}定义“为多个张量分配共享的内存地址”,另一个特定资源类可以根据shared{}得到Shared{Tensor 1、Tensor 2},Shared{Tensor 1、Tensor 2}表征待分配给Tensor 1、Tensor 2的内存地址相同。再如,组合资源类C2利用Consecutive{}定义“为多个张量分配连续的内存地址”,并且利用shared{}定义“为多个张量分配共享的内存地址”;再一个特定资源类可以根据Consecutive{}、shared{}得到shared{Consecutive{Tensor 3、Tensor 4},Tensor 5},shared{Consecutive{Tensor 3、Tensor 4},Tensor 5}表征Tensor 3、Tensor 4、Tensor 5中的Tensor 3和Tensor 4作为第一部分张量,Tensor 5作为第二部分张量,待分配给Tensor 3、Tensor 4的内存地址组成连续内存区域,待分配给Tensor 5的内存地址包含于前述的连续内存区域(即由Tensor 3、Tensor 4的组合与Tensor 5共享相同的内存地址)。
进一步假设待分配给单个张量的内存地址的长度是4字节;特定资源类C32定义的内存确定方法函数,用于确定按照shared{Consecutive{Tensor 3、Tensor 4},Tensor 5}为Tensor 3、Tensor 4、Tensor 5分配内存时,待分配给Tensor 3、Tensor 4、Tensor 5的内存地址;空闲内存区域的起始地址是0X0000。
请参考图3,基于以上假设,可以通过内存确定方法函数确定出,Tensor 3的地址指针所指向的内存地址,包括0X0000至0X0003的4个字节空间;Tensor 4的地址指针所指向的内存地址,包括0X0004至0X0007的4个字节空间;Tensor 5的地址指针所指向的内存地址,包括0X0000至0X0007的8个字节空间。即内存确定方法函数可以确定出待分配给Tensor3的内存地址是0X0000至0X0003的字节空间,待分配给Tensor 4的内存地址是0X0004至0X0007的字节空间,待分配给Tensor 5的内存地址是0X0000至0X0007的字节空间/连续内存区域。
在一些实施例中,为了方便对多个张量进行组织和管理,组合资源类还可以定义资源列表,通过资源列表来组织和管理待分配内存的若干张量。
在一些实施例中,组合资源类还可以定义单个张量的生命周期,以及利用单个张量的内存地址的地址指针和长度描述信息,定义如下各个方法函数中的一个或多个:
内存分配方法函数,用于按照内存确定方法函数所确定的待分配给若干张量的内存地址,为若干张量分配内存;
资源添加方法函数,用于将若干张量添加到资源列表,以便通过资源列表统一的组织和管理待分配内存的若干张量;
内存更新方法函数,用于对若干张量中的任一当前张量,根据当前张量的生命周期,将分配给当前张量的内存地址上的数据更新为当前张量;
内存释放方法函数,用于对相关于若干张量的内存释放请求进行响应,释放为若干张量分配的内存地址。
内存分配方法、资源添加方法函数、内存更新方法函数以及内存释放方法函数,由组合资源类C2进行定义。一方面,特定资源类中无需完整编辑这些方法函数各自对应的计算机程序代码;另一方面,内存管理方案所需的不同功能在不同的方法函数的支持下实现,有利于以方法函数为需要优化或维护的单元,更加高效的实施对内存管理方案进行持续优化和维护。
回到图2,在步骤25,通过目标资源类定义的内存确定方法函数,确定待分配给若干张量的内存地址。
其中,内存确定方法函数,用于按照若干特定资源组合方式中与目标资源类对应的目标资源组合方式,确定待分配给若干张量的内存地址。或者说,用于确定按照若干特定资源组合方式中与目标资源类对应的目标资源组合方式为若干张量分配内存时,待分配给若干张量的内存地址。
当组合资源类定义了资源列表和资源添加方法函数的情况下,在执行步骤25之前,还可以通过目标资源类继承自组合资源类的资源添加方法函数,向资源列表添加若干张量。相应的,步骤25具体可以包括,通过目标资源类定义的内存确定方法函数确定,按照若干特定资源组合方式中与目标资源类对应的目标资源组合方式为资源列表中的若干张量分配内存时,待分配给若干张量的内存地址。
接着,在步骤27,按照所确定的待分配给若干张量的内存地址,通过目标资源类继承自组合资源类的内存分配方法函数,为若干张量分配内存。
当计算设备包括单个处理器的情况下,该计算设备可能配置一个与该处理器相对应的内存分配器。相应的,步骤27具体可以包括:通过目标资源类继承自组合资源类的内存分配方法函数对内存分配器进行调用,使内存分配器按照所确定的待分配给若干张量的内存地址,为若干张量分配内存。
当计算设备包括多个处理器的情况下,该计算设备可以配置多个内存分配器,多个内存分配器与多个处理器一一对应。计算设备中用于执行内存管理方法的处理器,需要通过与其对应的内存分配器来具体实现为若干张量分配内存。此种情况下,原始资源类可以定义执行内存管理方法的处理器的设备信息,设备信息包括处理器的设备标识和/或设备类型。
当原始资源类定义了执行内存管理方法的处理器的设备信息的情况下,在执行步骤27之前还可以执行,根据设备信息从若干内存分配器中确定目标内存分配器。相应的,步骤27具体可以包括,通过目标资源类继承自组合资源类的内存分配方法函数,对目标内存分配器进行调用,使目标内存分配器执行按照所确定的待分配给若干张量的内存地址,为若干张量分配内存。
举例来说,请参考图4,执行内存管理方法的计算设备包括CPU、GPU和FPGA等三个处理器。就计算机指令或代码层面而言,计算设备10中可以部署或者说计算设备10的存储器中可以存储,与CPU相对应的内存分配器Allocator 1、与GPU相对应的内存分配器Allocator 2、与FPGA相对应的内存分配器Allocator 3。此种情况下,由于计算设备10中CPU、GPU、FPGA的数量均为1,原始资源类可以定义计算设备10中用于执行内存管理方法的处理器的设备类型,以便根据已定义的设备类型,识别出具体用于执行内存管理方法的处理器所对应的目标内存分配器。
举例来说,执行内存管理方法的计算设备包括CPU、GPU 1和GPU 2等三个处理器。就计算机指令或代码层面而言,计算设备10中可以部署或者说计算设备10的存储器中可以存储,CPU、GPU 1和GPU 2各自对应的内存分配器。此种情况下,由于计算设备10中包括多个GPU,原始资源类可以定义计算设备10中用于执行内存管理方法的处理器的设备标识,以便确定具体用于执行内存管理方法的处理器所对应的目标内存分配器。
当组合资源类定义了单个张量的生命周期的情况下,在步骤27之后,还可以执行:对于若干张量中的任一当前张量,根据当前张量的生命周期,通过目标资源类继承自组合资源类的内存更新方法函数,将分配给当前张量的内存地址上的数据更新为当前张量。举例来说,继续参考图3,在已知单个张量的生命周期为时长t的情况下,假设Tensor 3和Tensor 4的在第T个时长t内占用了0X0000至0X0007的字节空间/连续内存区域,则在当前时刻达到了第T+1个时长t时,将0X0000至0X0007的字节空间上的数据更新为Tensor 5,即Tensor 5在第T+1个时长t内占用0X0000至0X0007的字节空间。
当组合资源类定义了内存释放方法函数的情况下,在步骤27之后,还可以执行:接收内存释放请求,该内存释放请求用于请求释放为若干张量分配的内存地址。以及执行,根据目标资源类继承自组合资源类的内存释放方法函数,释放为若干张量分配的内存。
在一些实施例中,内存确定方法函数、内存分配方法函数、内存更新方法函数以及内存释放方法函数中的部分或全部,可以定义在每个特定资源类中。此外,还可以定义更少的方法函数,为各种内存管理方案的实现提供支持;比如,在特定资源类中定义一个方法函数,该方法函数具有内存确定方法函数和内存分配方法函数的功能。
基于与前述各个方法实施例相同的构思,如图5示,本说明书实施例中还提供了一种内存管理装置,该装置可以部署在计算设备中,该装置至少可以包括:
接口单元51,用于接收内存分配请求;其中,所述内存分配请求包括相关于深度学习模型的若干张量;以及,用于从预先部署的若干特定资源类中确定出目标资源类,其中每个所述特定资源类均继承组合资源类,所述组合资源类继承原始资源类;所述原始资源类定义了待分配给单个张量的内存地址的地址指针和长度描述信息;所述组合资源类利用所述长度描述信息和所述地址指针,定义内存分配方法函数以及若干原子资源组合方式;所述若干特定资源类对应若干特定资源组合方式,所述特定资源组合方式是基于所述若干原子资源组合方式中的一个或多个得到的;
地址确定单元53,用于通过所述目标资源类定义的内存确定方法函数,确定待分配给所述若干张量的内存地址,其中,所述内存确定方法函数用于按照所述若干特定资源组合方式中与所述目标资源类对应的目标资源组合方式,确定待分配给所述若干张量的内存地址;
内存分配单元55,用于按照所确定的待分配给所述若干张量的内存地址,通过所述目标资源类继承自所述组合资源类的内存分配方法函数,为所述若干张量分配内存。
在一种可能的实施方式中,所述若干张量中的任一当前张量包括:输入深度学习模型的数据、深度学习模型的超参数、由深度学习模型的多个权重参数组成的向量或矩阵。
在一种可能的实施方式中,所述长度描述信息包括预定的字节长度和/或单个张量的数据类型。
在一种可能的实施方式中,所述若干原子资源组合方式包括以下各种原子资源组合方式中的至少一种:为单个张量分配专用的内存地址、为多个张量分配连续的内存地址、为多个张量分配共享的内存地址,以及按照指定字节对齐为多个张量分配连续的内存地址。
在一种可能的实施方式中,所述若干特定资源组合方式包括以下各种特定资源组合方式中的一种:
待分配给所述若干张量的内存地址连续;
待分配给所述若干张量的内存地址相同;
所述若干张量包括第一部分张量和第二部分张量,待分配给所述第一部分张量的内存地址组成连续内存区域,待分配给所述第二部分张量中的任一张量的内存地址包含于所述连续内存区域。
在一种可能的实施方式中,所述组合资源类还定义了资源列表和资源添加方法函数。所述装置还包括:资源管理单元,用于通过所述目标资源类继承自所述组合资源类的资源添加方法函数,向所述资源列表添加所述若干张量。所述地址确定单元53,具体用于通过所述目标资源类定义的内存确定方法函数确定,按照所述若干特定资源组合方式中与所述目标资源类对应的目标资源组合方式为所述资源列表中的所述若干张量分配内存时,待分配给所述若干张量的内存地址。
在一种可能的实施方式中,所述组合资源类还定义了单个张量的生命周期和内存更新方法函数。所述装置还包括:内存释放单元,用于对于所述若干张量中的任一当前张量,根据所述当前张量的生命周期,通过目标资源类继承自所述组合资源类的内存更新方法函数,将分配给所述当前张量的内存地址上的数据更新为所述当前张量。
在一种可能的实施方式中,所述组合资源类还定义了内存释放方法函数。所述接口单元,还用于接收内存释放请求;其中,所述内存释放请求用于请求释放为所述若干张量分配的内存地址。所述装置还包括:内存释放单元,用于根据所述目标资源类继承自所述组合资源类的内存释放方法函数,释放为所述若干张量分配的内存地址。
在一种可能的实施方式中,所述原始资源类还定义了执行所述内存管理方法的处理器的设备信息,所述设备信息包括所述处理器的设备标识和/或设备类型。所述装置还包括:分配器确定单元,用于根据所述设备信息,从至少一个内存分配器中确定出与所述处理器相对应的目标内存分配器。所述内存分配单元,具体用于通过所述目标资源类继承自所述组合资源类的内存分配方法函数调用所述目标内存分配器,使所述目标内存分配器为所述若干张量分配内存。
在一种可能的实施方式中,所述内存分配请求还包括用于指示所述目标资源类的指示信息。所述接口单元,具体用于根据所述指示信息从若干特定资源类中确定出目标资源类。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能所对应的计算机程序存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令/代码进行传输,以便这些功能所对应的计算机程序被计算机执行时,通过计算机实现本发明任意一个实施例中所述的方法。
相应的,本说明书实施例中还提供了一种计算机可读存储介质,其上存储有计算机指令/代码,当所述计算机指令/代码在计算设备中执行时,计算设备执行本说明书任意一个实施例中提供的内存管理方法。
本说明书实施例中还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机指令/代码,所述处理器执行所述可执行代码时,实现本说明书任意一个实施例中提供的内存管理方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例中相同、相似的部分互相参见即可,每个实施例中重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (22)
1.一种内存管理方法,包括:
接收内存分配请求;其中,所述内存分配请求包括相关于深度学习模型的若干张量;
从预先部署的若干特定资源类中确定出目标资源类;其中,每个所述特定资源类均继承组合资源类,所述组合资源类继承原始资源类;所述原始资源类定义了待分配给单个张量的内存地址的地址指针和长度描述信息;所述组合资源类利用所述长度描述信息和所述地址指针,定义内存分配方法函数以及若干原子资源组合方式;所述若干特定资源类对应若干特定资源组合方式,所述特定资源组合方式是基于所述若干原子资源组合方式中的一个或多个得到的;
通过所述目标资源类定义的内存确定方法函数,确定待分配给所述若干张量的内存地址;其中,所述内存确定方法函数用于按照所述若干特定资源组合方式中与所述目标资源类对应的目标资源组合方式,确定待分配给所述若干张量的内存地址;
按照所确定待分配给所述若干张量的内存地址,通过所述目标资源类继承自所述组合资源类的内存分配方法函数,为所述若干张量分配内存。
2.根据权利要求1所述的方法,其中,所述若干张量中的任一当前张量包括:输入深度学习模型的数据、深度学习模型的超参数、由深度学习模型的多个权重参数组成的向量或矩阵。
3.根据权利要求1所述的方法,其中,所述长度描述信息包括预定的字节长度和/或单个张量的数据类型。
4.根据权利要求1所述的方法,其中,所述若干原子资源组合方式包括以下各种原子资源组合方式中的至少一种:为单个张量分配专用的内存地址、为多个张量分配连续的内存地址、为多个张量分配共享的内存地址,以及按照指定字节对齐为多个张量分配连续的内存地址。
5.根据权利要求1所述的方法,其中,所述若干特定资源组合方式包括以下各种特定资源组合方式中的一种:
待分配给所述若干张量的内存地址连续;
待分配给所述若干张量的内存地址相同;
所述若干张量包括第一部分张量和第二部分张量,待分配给所述第一部分张量的内存地址组成连续内存区域,待分配给所述第二部分张量中的任一张量的内存地址包含于所述连续内存区域。
6.根据权利要求1所述的方法,其中,所述组合资源类还定义了资源列表和资源添加方法函数;
所述方法还包括:通过所述目标资源类继承自所述组合资源类的资源添加方法函数,向所述资源列表添加所述若干张量;
所述通过所述目标资源类定义的内存确定方法函数,确定待分配给所述若干张量的内存地址,具体包括:通过所述目标资源类定义的内存确定方法函数确定,按照所述若干特定资源组合方式中与所述目标资源类对应的目标资源组合方式为所述资源列表中的所述若干张量分配内存时,待分配给所述若干张量的内存地址。
7.根据权利要求1所述的方法,其中,所述组合资源类还定义了单个张量的生命周期和内存更新方法函数;
所述方法还包括:对于所述若干张量中的任一当前张量,根据所述当前张量的生命周期,通过所述目标资源类继承自所述组合资源类的内存更新方法函数,将分配给所述当前张量的内存地址上的数据更新为所述当前张量。
8.根据权利要求1所述的方法,其中,所述组合资源类还定义了内存释放方法函数;
所述方法还包括:
接收内存释放请求;其中,所述内存释放请求用于请求释放为所述若干张量分配的内存地址;
根据所述目标资源类继承自所述组合资源类的内存释放方法函数,释放为所述若干张量分配的内存地址。
9.根据权利要求1至8中任一所述的方法,其中,所述原始资源类还定义了执行所述内存管理方法的处理器的设备信息,所述设备信息包括所述处理器的设备标识和/或设备类型;
所述方法还包括:根据所述设备信息,从至少一个内存分配器中确定出与所述处理器相对应的目标内存分配器;
所述通过所述目标资源类继承自所述组合资源类的内存分配方法函数,为所述若干张量分配内存,包括:通过所述目标资源类继承自所述组合资源类的内存分配方法函数调用所述目标内存分配器,使所述目标内存分配器为所述若干张量分配内存。
10.根据权利要求1至8中任一所述的方法,其中,所述内存分配请求还包括用于指示所述目标资源类的指示信息;
所述从预先部署的若干特定资源类中确定出目标资源类,具体包括:根据所述指示信息从预先部署的若干特定资源类中确定出目标资源类。
11.一种内存管理装置,所述装置包括:
接口单元,用于接收内存分配请求;其中,所述内存分配请求包括相关于深度学习模型的若干张量;以及,用于从预先部署的若干特定资源类中确定出目标资源类,其中每个所述特定资源类均继承组合资源类,所述组合资源类继承原始资源类;所述原始资源类定义了待分配给单个张量的内存地址的地址指针和长度描述信息;所述组合资源类利用所述长度描述信息和所述地址指针,定义内存分配方法函数以及若干原子资源组合方式;所述若干特定资源类对应若干特定资源组合方式,所述特定资源组合方式是基于所述若干原子资源组合方式中的一个或多个得到的;
地址确定单元,用于通过所述目标资源类定义的内存确定方法函数,确定待分配给所述若干张量的内存地址,其中,所述内存确定方法函数用于按照所述若干特定资源组合方式中与所述目标资源类对应的目标资源组合方式,确定待分配给所述若干张量的内存地址;
内存分配单元,用于按照所确定的待分配给所述若干张量的内存地址,通过所述目标资源类继承自所述组合资源类的内存分配方法函数,为所述若干张量分配内存。
12.根据权利要求11所述的装置,其中,所述若干张量中的任一当前张量包括:输入深度学习模型的数据、深度学习模型的超参数、由深度学习模型的多个权重参数组成的向量或矩阵。
13.根据权利要求11所述的装置,其中,所述长度描述信息包括预定的字节长度和/或单个张量的数据类型。
14.根据权利要求11所述的装置,其中,所述若干原子资源组合方式包括以下各种原子资源组合方式中的至少一种:为单个张量分配专用的内存地址、为多个张量分配连续的内存地址、为多个张量分配共享的内存地址,以及按照指定字节对齐为多个张量分配连续的内存地址。
15.根据权利要求11所述的装置,其中,所述若干特定资源组合方式包括以下各种特定资源组合方式中的一种:
待分配给所述若干张量的内存地址连续;
待分配给所述若干张量的内存地址相同;
所述若干张量包括第一部分张量和第二部分张量,待分配给所述第一部分张量的内存地址组成连续内存区域,待分配给所述第二部分张量中的任一张量的内存地址包含于所述连续内存区域。
16.根据权利要求11所述的装置,其中,所述组合资源类还定义了资源列表和资源添加方法函数;
所述装置还包括:资源管理单元,用于通过所述目标资源类继承自所述组合资源类的资源添加方法函数,向所述资源列表添加所述若干张量;
所述地址确定单元,具体用于通过所述目标资源类定义的内存确定方法函数确定,按照所述若干特定资源组合方式中与所述目标资源类对应的目标资源组合方式为所述资源列表中的所述若干张量分配内存时,待分配给所述若干张量的内存地址。
17.根据权利要求11所述的装置,其中,所述组合资源类还定义了单个张量的生命周期和内存更新方法函数;
所述装置还包括:内存释放单元,用于对于所述若干张量中的任一当前张量,根据所述当前张量的生命周期,通过目标资源类继承自所述组合资源类的内存更新方法函数,将分配给所述当前张量的内存地址上的数据更新为所述当前张量。
18.根据权利要求11所述的装置,其中,所述组合资源类还定义了内存释放方法函数;
所述接口单元,还用于接收内存释放请求;其中,所述内存释放请求用于请求释放为所述若干张量分配的内存地址;
所述装置还包括:内存释放单元,用于根据所述目标资源类继承自所述组合资源类的内存释放方法函数,释放为所述若干张量分配的内存地址。
19.根据权利要求11至18中任一所述的装置,其中,所述原始资源类还定义了执行所述内存管理方法的处理器的设备信息,所述设备信息包括所述处理器的设备标识和/或设备类型;
所述装置还包括:分配器确定单元,用于根据所述设备信息,从至少一个内存分配器中确定出与所述处理器相对应的目标内存分配器;
所述内存分配单元,具体用于通过所述目标资源类继承自所述组合资源类的内存分配方法函数调用所述目标内存分配器,使所述目标内存分配器为所述若干张量分配内存。
20.根据权利要求11至18中任一所述的装置,其中,所述内存分配请求还包括用于指示所述目标资源类的指示信息;
所述接口单元,具体用于根据所述指示信息从预先部署的若干特定资源类中确定出目标资源类。
21.一种计算设备,包括存储器和处理器,所述存储器中存储计算机指令/代码,所述处理器执行所述计算机指令/代码时,实现权利要求1-10中任一项所述的方法。
22.一种计算机可读存储介质,用于存储计算机指令/代码,当所述计算机指令/代码被计算设备的处理器执行时,所述计算设备实现权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011466212.0A CN112241324B (zh) | 2020-12-14 | 2020-12-14 | 内存管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011466212.0A CN112241324B (zh) | 2020-12-14 | 2020-12-14 | 内存管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112241324A true CN112241324A (zh) | 2021-01-19 |
CN112241324B CN112241324B (zh) | 2021-03-19 |
Family
ID=74175495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011466212.0A Active CN112241324B (zh) | 2020-12-14 | 2020-12-14 | 内存管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112241324B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115080240A (zh) * | 2022-06-29 | 2022-09-20 | 美的集团(上海)有限公司 | 语音处理模型的部署方法、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108062246A (zh) * | 2018-01-25 | 2018-05-22 | 北京百度网讯科技有限公司 | 用于深度学习框架的资源调度方法和装置 |
CN109711539A (zh) * | 2018-12-17 | 2019-05-03 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
US10499857B1 (en) * | 2017-09-19 | 2019-12-10 | Deepradiology Inc. | Medical protocol change in real-time imaging |
CN110650347A (zh) * | 2019-10-24 | 2020-01-03 | 腾讯云计算(北京)有限责任公司 | 多媒体数据的处理方法及装置 |
-
2020
- 2020-12-14 CN CN202011466212.0A patent/CN112241324B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10499857B1 (en) * | 2017-09-19 | 2019-12-10 | Deepradiology Inc. | Medical protocol change in real-time imaging |
CN108062246A (zh) * | 2018-01-25 | 2018-05-22 | 北京百度网讯科技有限公司 | 用于深度学习框架的资源调度方法和装置 |
CN109711539A (zh) * | 2018-12-17 | 2019-05-03 | 北京中科寒武纪科技有限公司 | 运算方法、装置及相关产品 |
CN110650347A (zh) * | 2019-10-24 | 2020-01-03 | 腾讯云计算(北京)有限责任公司 | 多媒体数据的处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
李双峰: "TensorFlow Lite:端侧机器学习框架", 《计算机研究与发展》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115080240A (zh) * | 2022-06-29 | 2022-09-20 | 美的集团(上海)有限公司 | 语音处理模型的部署方法、电子设备及存储介质 |
CN115080240B (zh) * | 2022-06-29 | 2023-10-10 | 美的集团(上海)有限公司 | 语音处理模型的部署方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112241324B (zh) | 2021-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9727338B2 (en) | System and method for translating program functions for correct handling of local-scope variables and computing system incorporating the same | |
JP2018026114A (ja) | アプリケーション・プロファイリング・ジョブ管理システム、プログラム、及び方法 | |
US9875139B2 (en) | Graphics processing unit controller, host system, and methods | |
CN109408590B (zh) | 分布式数据库的扩容方法、装置、设备及存储介质 | |
BR102013033064A2 (pt) | sistema para computação distribuída | |
CN108205469B (zh) | 一种基于MapReduce的资源分配方法及服务器 | |
US20190146847A1 (en) | Dynamic distributed resource management | |
US9158588B2 (en) | Flexible task and thread binding with preferred processors based on thread layout | |
US11900601B2 (en) | Loading deep learning network models for processing medical images | |
US11556468B2 (en) | Multi-ring shared, traversable, and dynamic advanced database | |
CN112241324B (zh) | 内存管理方法及装置 | |
KR20200038038A (ko) | 다중 클라우드 상에서의 애플리케이션 관리 장치 및 방법 | |
KR20210021261A (ko) | 가속기에서 이종 컴포넌트들을 구성하기 위한 방법들 및 장치 | |
CN116467061A (zh) | 一种任务执行的方法、装置、存储介质及电子设备 | |
CN114816777A (zh) | 命令处理装置、方法、电子设备以及计算机可读存储介质 | |
CN112463376A (zh) | 一种资源分配方法及装置 | |
US10379973B2 (en) | Allocating storage in a distributed storage system | |
CN116010093A (zh) | 数据处理方法、装置、计算机设备和可读存储介质 | |
CN114675954A (zh) | 任务调度方法及装置 | |
US20210182041A1 (en) | Method and apparatus for enabling autonomous acceleration of dataflow ai applications | |
CN110231983B (zh) | 数据并发处理方法、装置及系统、计算机设备及可读介质 | |
CN114020414A (zh) | Android系统与底层Linux共生方法、装置、电子设备及存储介质 | |
CN114327856A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN114283929A (zh) | 医学任务分配方法、装置、计算机设备及介质 | |
CN113886086A (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 |