[发明专利]运算方法、装置及相关产品有效
申请号: | 201910471382.9 | 申请日: | 2019-05-31 |
公开(公告)号: | CN110162338B | 公开(公告)日: | 2020-08-04 |
发明(设计)人: | 不公告发明人 | 申请(专利权)人: | 中科寒武纪科技股份有限公司 |
主分类号: | G06F9/345 | 分类号: | G06F9/345;G06F12/02;G06N3/063 |
代理公司: | 北京林达刘知识产权代理事务所(普通合伙) 11277 | 代理人: | 刘新宇 |
地址: | 100190 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 运算 方法 装置 相关 产品 | ||
1.一种内存复用的方法,其特征在于,所述方法包括:
根据神经网络对应的计算图的拓扑序为计算图中的节点进行编号,根据生成操作数的节点的编号以及使用操作数的节点的编号确定所述神经网络的每层对应的操作数的活跃时间;
根据所述操作数的活跃时间,对所述操作数进行划分,获得一个或多个组,其中,每组中包含的操作数的活跃时间不重叠;
根据每组中包含的操作数的尺寸大小确定每组操作数的分配内存空间。
2.根据权利要求1所述的方法,其特征在于,根据神经网络对应的计算图的拓扑序为计算图中的节点进行编号,根据生成操作数的节点的编号以及使用操作数的节点的编号确定所述神经网络的每层对应的操作数的活跃时间,包括:
根据所述拓扑序为计算图中的每个节点以递增形式进行编号;
针对每个操作数,根据使用该操作数的节点的最大编号与生成该操作数的节点的编号的差值确定该操作数的活跃时间。
3.根据权利要求1所述的方法,其特征在于,根据所述操作数的活跃时间,对所述操作数进行划分,获得一个或多个组,其中,每组中包含的操作数的活跃时间不重叠,包括:
根据拓扑序以及所述操作数的活跃时间,对所述操作数进行划分,获得一个或多个组,其中,每组中包含的操作数的活跃时间不重叠。
4.根据权利要求3所述的方法,其特征在于,根据拓扑序以及所述操作数的活跃时间,对所述操作数进行划分,获得一个或多个组,其中,每组中包含的操作数的活跃时间不重叠,包括:
创建一个或多个数组,根据拓扑序遍历神经网络的每层对应的操作数,根据所述操作数的活跃时间将操作数记录在所述一个或多个数组中,每个数组中包含的操作数的活跃时间不重叠。
5.根据权利要求3或4所述的方法,其特征在于,根据拓扑序以及所述操作数的活跃时间,对所述操作数进行划分,获得一个或多个组,其中,每组中包含的操作数的活跃时间不重叠,包括:
在按照拓扑序遍历完神经网络的每层对应的操作数之前,针对当前遍历的操作数,在已创建的数组记录的操作数中查找是否存在与当前遍历的操作数的活跃时间重叠的操作数;
若在已创建的数组中,存在第一数组记录的操作数的活跃时间与当前遍历的操作数的活跃时间都不重叠,则将当前遍历的操作数记录在该第一数组中;
若在所有已创建的数组中,都存在操作数的活跃时间与当前遍历的操作数的活跃时间重叠,则创建新的数组,并将当前遍历的操作数记录在新的数组中。
6.根据权利要求1所述的方法,其特征在于,根据每组中包含的操作数的尺寸大小确定每组操作数的分配内存空间,包括:
确定每组操作数中尺寸最大的操作数;
根据所述尺寸最大的操作数的尺寸确定该组操作数需要的内存空间的大小;
根据每组操作数需要的内存空间的大小为每组操作数分配内存空间。
7.根据权利要求1或6所述的方法,其特征在于,操作数的尺寸包括操作数对应的张量的各维度的乘积。
8.根据权利要求1或6所述的方法,其特征在于,为每组操作数分配的内存空间被该组操作数分时复用。
9.一种内存复用的装置,其特征在于,所述装置包括:
确定模块,用于根据神经网络对应的计算图的拓扑序为计算图中的节点进行编号,根据生成操作数的节点的编号以及使用操作数的节点的编号确定所述神经网络的每层对应的操作数的活跃时间;
划分模块,用于根据所述操作数的活跃时间,对所述操作数进行划分,获得一个或多个组,其中,每组中包含的操作数的活跃时间不重叠;
内存分配模块,用于根据每组中包含的操作数的尺寸大小确定每组操作数的分配内存空间。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中科寒武纪科技股份有限公司,未经中科寒武纪科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910471382.9/1.html,转载请声明来源钻瓜专利网。