内存分配方法及装置、电子设备、计算机可读介质制造方法及图纸

技术编号:38095122 阅读:9 留言:0更新日期:2023-07-06 09:09
本公开提供了一种内存分配方法,该内存分配方法应用于众核芯片,众核芯片包括多个计算核,每个计算核具有一个可用内存,该内存分配方法包括:确定神经网络计算图中与当前计算核对应的至少一个算子的算子属性信息;根据算子属性信息,依次对当前计算核对应的各算子进行内存分配操作;依次对当前计算核对应的各算子进行内存分配操作,包括:基于当前算子的算子属性信息及上下文信息,对当前算子进行可用内存的内存分配;当前算子对应的上下文信息包括内存分配时间排在当前算子之后的其他算子的算子属性信息。本公开还提供了一种内存分配装置、电子设备及计算机可读介质。电子设备及计算机可读介质。电子设备及计算机可读介质。

【技术实现步骤摘要】
内存分配方法及装置、电子设备、计算机可读介质


[0001]本公开涉及计算机
,特别涉及一种内存分配方法及装置、电子设备、计算机可读介质。

技术介绍

[0002]深度学习框架(例如TensorFlow或ONNX)通常使用计算图来表达深度学习模型(神经网络)的计算。针对特定的加速硬件,神经网络计算图需要经过编译器进行编译,以生成可以在硬件上运行的指令流。其中,硬件可以是存算一体的众核架构芯片,众核架构芯片通常包括多个计算核(CORE)。
[0003]在神经网络计算图的编译阶段,计算图进入编译器后,会进行任务分配。例如,根据计算图的不同算子的计算量、访存需求以及算子间的同步信息,将不同的算子分配到不同的计算核上进行执行。
[0004]然而,计算核上的内存有限,而计算图的算子较多,如果内存分配不合理,容易产生外部碎片。

技术实现思路

[0005]本公开提供一种内存分配方法及装置、电子设备、计算机可读介质。
[0006]根据本公开的第一方面,本公开实施例提供了一种内存分配方法,该内存分配方法应用于众核芯片,所述众核芯片包括多个计算核,每个所述计算核对应配置有独立内存,该内存分配方法包括:
[0007]确定神经网络计算图中与当前计算核对应的至少一个算子的算子属性信息;
[0008]根据当前计算核对应的各所述算子的所述算子属性信息,依次对当前计算核对应的各算子进行内存分配操作;
[0009]所述依次对当前计算核对应的各算子进行内存分配操作,包括:基于当前算子的算子属性信息以及当前算子对应的上下文信息,对当前算子进行所述可用内存的内存分配;
[0010]其中,当前算子对应的上下文信息包括内存分配时间排在当前算子之后的其他算子的算子属性信息。
[0011]根据本公开的第二方面,本公开实施例提供了一种内存分配装置,该内存分配装置应用于众核芯片,所述众核芯片包括多个计算核,每个所述计算核对应配置有一个可用内存空间,该内存分配装置包括:
[0012]确定模块,用于确定神经网络计算图中与当前计算核对应的至少一个算子的算子属性信息;
[0013]分配模块,用于根据当前计算核对应的各所述算子的所述算子属性信息,依次对当前计算核对应的各算子进行内存分配操作;
[0014]所述依次对当前计算核对应的各算子进行内存分配操作,包括:基于当前算子的
算子属性信息以及当前算子对应的上下文信息,对当前算子进行所述可用内存空间的内存分配;
[0015]其中,当前算子对应的上下文信息包括内存分配时间排在当前算子之后的其他算子的算子属性信息。
[0016]根据本公开的第三方面,本公开实施例提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述任一实施例提供的内存分配方法。
[0017]根据本公开的第四方面,本公开实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现上述任一实施例提供的内存分配方法。
[0018]本公开实施例所提供的内存分配方法、内存分配装置、电子设备及计算机可读介质的技术方案中,在对神经网络计算图的算子进行内存分配时,通过结合每个算子的上下文信息可以实现合理地进行算子的内存分配,能够最大限度减少外部碎片的产生,提高计算核的内存利用率和计算核的计算效率。
[0019]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0020]附图用来提供对本公开的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开,并不构成对本公开的限制。通过参考附图对详细示例实施例进行描述,以上和其他特征和优点对本领域技术人员将变得更加显而易见,在附图中:
[0021]图1为本公开实施例提供的一种内存分配方法的流程示意图;
[0022]图2为图1中步骤S12的一种具体实施方式的流程示意图;
[0023]图3为本公开实施例提供的一种内存分配装置的结构示意图;
[0024]图4为本公开实施例提供的另一种内存分配装置的结构示意图;
[0025]图5为本公开实施例提供的一种电子设备的组成框图。
具体实施方式
[0026]为使本领域的技术人员更好地理解本公开的技术方案,以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0027]在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
[0028]如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
[0029]本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由
……
制成”时,指定存在所述特征、整体、步骤、
操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
[0030]除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
[0031]本公开实施例提供一种内存分配方法,该内存分配方法基于内存分配装置实现,该内存分配装置可以通过软件和/或硬件的方式实现,该内存分配装置可以集成于电子设备中,示例性的,该电子设备的类型可以是笔记本电脑、计算机、服务器、手机、平板电脑(PAD)等,在本公开实施例中不作特别限定。
[0032]在本公开实施例中,该内存分配方法应用于基于众核架构的众核芯片,众核芯片可以包括多个计算核(CORE),每个计算核均对应配置有独立内存。
[0033]在本公开实施例中,该内存分配方法用于神经网络计算图的内存分配,具体用于对分配给计算核的算子进行该计算核的内存分配。其中,神经网络计算图可以包括多个算子,算子是构成神经网络的基本计算单元,在神经网络计算图中通过节点进行表示,算子例如可以是卷积、池化等。一个算子可以包括一个本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存分配方法,应用于众核芯片,所述众核芯片包括多个计算核,每个所述计算核对应配置有独立内存,所述方法包括:确定神经网络计算图中与当前计算核对应的至少一个算子的算子属性信息;根据当前计算核对应的各所述算子的所述算子属性信息,依次对当前计算核对应的各算子进行内存分配操作;所述依次对当前计算核对应的各算子进行内存分配操作,包括:基于当前算子的算子属性信息以及当前算子对应的上下文信息,对当前算子进行内存分配;其中,当前算子对应的上下文信息包括内存分配时间排在当前算子之后的其他算子的算子属性信息。2.根据权利要求1所述的内存分配方法,其中所述算子属性信息包括算子的内存分配时间、内存释放时间、算子大小、算子类型和算子标识。3.根据权利要求1所述的内存分配方法,其中所述基于当前算子的算子属性信息以及当前算子对应的上下文信息,对当前算子进行内存分配,包括:基于当前算子的算子属性信息以及当前算子对应的上下文信息,利用目标算法对当前算子进行内存分配。4.根据权利要求3所述的内存分配方法,其中所述目标算法包括以下至少一项:强化学习算法、基于资源池的内存分配算法、进化学习算法、启发式算法。5.根据权利要求1所述的内存分配方法,其中所述基于当前算子的算子属性信息以及当前算子对应的上下文信息,对当前算子进行内存分配,包括:根据当前算子的算子属性信息以及当前算子对应的上下文信息,确定当前算子对应的可分配内存区域;从当前算子对应的可分配内存区域中,确定出当前算子对应的目标内存区域;基于所述目标内存区域对当前算子进行内存分配。6.根据权利要求5所述的内存分配方法,其中所述算子属性信息包括算子的内存分配时间、内存释放时间和算子大小;所述根据当前算子的算子属性信息以及当前算子对应的上下文信息,确定当前算子对应的可分配内存区域,包括:根据当前算子的算子大小、内存分配时间、内存释放时间,以及所述上下文信息中其他算子的算子大小、内存分配时间、内存释放时间,对当前算子和其他算子进行内存分配组合,每一内存分配组合对应一种当前算子和其他算子的内存区域分配情况;在进行内存分配组合中,当任意两个算子满足内存复用条件时,将该两个算子相邻设置,且该两个算子中先释放内存的一个算子的内存区域设置为在释放后分配给另一个算子使用;针对每一个内存分配组合,当该内存分配组合所需的内存大小小于或等于当前计算核的可用内存大小时,将该内存分配组合中当前算子对应的内存区域确定为当前算子对应的可分配内存区域。7.根据权利要求1所述的内存分配...

【专利技术属性】
技术研发人员:徐茂轩张士权柯健
申请(专利权)人:无锡灵汐类脑科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1