【技术实现步骤摘要】
预先分配内存的方法与设备、电路、电子设备及介质
本公开涉及内存管理领域,特别涉及一种用于为神经网络前向计算预先分配内存的方法与设备、电子电路、电子设备及计算机可读存储介质。
技术介绍
近年来,神经网络技术在各领域得到了广泛的应用,但是对于内存资源非常有限的设备而言,可供神经网络利用的内存较少,大大限制了神经网络在这种设备上的应用及其性能。在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。
技术实现思路
根据本公开的一方面,提供一种用于为神经网络前向计算预先分配内存的方法,包括:从神经网络第一层开始,针对依次排列的神经网络的每一层,执行以下的计算步骤:针对当前层的每个输出,尝试从用于记录空闲内存块标识符的空闲内存块标识符表获取内存块标识符,如果获取到,则将该输出的标识符与所获取的内存块标识符作为一对映射关系,存入输出与内存块标识符 ...
【技术保护点】
1.一种用于为神经网络前向计算预先分配内存的方法,包括:/n从神经网络第一层开始,针对依次排列的神经网络的每一层,执行以下的计算步骤:/n针对当前层的每个输出,尝试从用于记录空闲内存块标识符的空闲内存块标识符表获取内存块标识符;/n如果获取到,则将该输出的标识符与所获取的内存块标识符作为一对映射关系,存入输出与内存块标识符映射表,并从空闲内存块标识符表中删除该内存块标识符,其中,所述输出与内存块标识符映射表用于记录该层的每个输出的标识符与对应的内存块标识符;/n而如果未获取到,则新建一个内存块标识符并将该输出的标识符与新建的该内存块标识符作为一对映射关系,存入所述输出与内存 ...
【技术特征摘要】
1.一种用于为神经网络前向计算预先分配内存的方法,包括:
从神经网络第一层开始,针对依次排列的神经网络的每一层,执行以下的计算步骤:
针对当前层的每个输出,尝试从用于记录空闲内存块标识符的空闲内存块标识符表获取内存块标识符;
如果获取到,则将该输出的标识符与所获取的内存块标识符作为一对映射关系,存入输出与内存块标识符映射表,并从空闲内存块标识符表中删除该内存块标识符,其中,所述输出与内存块标识符映射表用于记录该层的每个输出的标识符与对应的内存块标识符;
而如果未获取到,则新建一个内存块标识符并将该输出的标识符与新建的该内存块标识符作为一对映射关系,存入所述输出与内存块标识符映射表,并且,将新建的该内存块标识符放入用于记录所有新建的内存块标识符的内存块标识符总表中,以便在执行神经网络前向计算时,依照该内存块标识符总表来创建神经网络前向计算所需的内存块;以及
针对当前层的每个输入,如果作为该输入的前面层的输出未作为该当前层的后续层的输入,则将与作为该输入的前面层的输出所对应的内存块标识符放入空闲内存块标识符表。
2.根据权利要求1所述的方法,其中,每个内存块标识符对应一个内存块容量,
如果从空闲内存块标识符表获取的内存块标识符对应的内存块容量小于该输出所需的容量,则扩大该内存块标识符对应的内存块容量。
3.根据权利要求1或2所述的方法,还包括:
在所述计算步骤之前,分别为神经网络的每一层构建该层的输入集合和输出集合,
其中,每一层的所述输入集合中的每个元素包括该层的每个输入的标识符、数据量、以及指向用于存储该输入的内存块地址的内存块指针,每一层的所述输出集合的每个元素包括该层的每个输出的标识符、数据量、以及指向用于存储该输出的内存块地址的内存块指针。
4.根据权利要求1或2所述的方法,还包括:
在执行所述计算步骤之前,统计神经网络中每个输出作为该输出的后续层的输入的次数,作为该输出的被引次数,并生成用于记录每个输出与该输出的被引次数的映射关系的输出与被引次数对应表,以及
其中,针对每一层,执行所述计算步骤还包括:
通过将作为当前层的输入的前面层的输出的被引次数减去单位数量,更新所述输出与被引次数对应表。
5.根据权利要求2所述的方法,其中,所获取或创建的内存块标识符与对应的内存...
【专利技术属性】
技术研发人员:庞骏,蔡海蛟,冯歆鹏,周骥,
申请(专利权)人:上海肇观电子科技有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。