利索能及
我要发布
收藏
专利号: 202310883730X
申请人: 首都师范大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-10-22
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于急切内存重用算法的内存优化方法,其特征在于,包括以下步骤:构建GPU运行时的计算图,获得所述计算图中所有张量的生命周期与所有的三层张量结构;

确定所述三层张量结构的执行顺序;

基于所述执行顺序,执行Eager Reuse算法,为每一个张量分配内存;

依照所述Eager Reuse算法的分配结果,在所述每一个张量的生命周期的起始点申请内存,生命周期的结束点释放内存;

其中,所述构建GPU运行时的计算图,获得所述计算图中所有张量的生命周期与所有的三层张量结构,包括:遍历计算图的所有节点,将找到的节点视为fork节点,记作第一层节点Node_i;

遍历Node_i的所有邻接节点,将找到的节点视为middle节点,记作中间层节点Node_j;

遍历Node_j的所有邻接节点,将找到的节点视为join节点,记作第三层节点Node_k;

根据节点与张量一一匹配的规则,将查找到的[ Node_i,Node_j,Node_k ]三层节点均存在的结构变换为形如[FT, MT, JT]的三层张量结构,将找到的三层张量结构以链表形式存储,其中FT表示第一层张量,MT表示中间层张量,JT表示第三层张量。

2.根据权利要求1所述的方法,其特征在于,所述获得所述计算图中所有张量的生命周期,包括:通过遍历时间段的方式,构造以时间段为行,以当前时间段为执行节点,产生于当前时间段的张量,结束于当前时间段的张量为列的生命周期信息表,从而获取所有张量的生命周期。

3.根据权利要求1所述的方法,其特征在于,所述确定所述三层张量结构的执行顺序,包括:S401: 初始化一个索引idx=0,其中idx表示当符合条件时,将未处理的三层张量结构链表中第idx个三层张量结构移到链表首位;判断计算图中所有张量是否均已处理,包括当三层张量结构被标志为已处理时,将所述三层张量结构包含的FT、MT、JT同时标志为已处理;如果所有三层张量结构均已处理,将算法内进行的对链表的修改、对入度的修改、对标志位的修改均重置为算法执行前,仅将第idx个三层张量结构移至未执行三层张量结构链表首位,并相应判断所述第idx个三层张量结构FT、MT、JT是否已处理,如果均已处理,则算法结束;否则,前往S402;

S402:将未排序的三层张量结构链表首位的三层张量结构中每一节点的所有邻接节点的入度减一;

S403:判断此时该三层张量结构的三个节点的入度是否均小于等于0,是则修改标志位,即将该三层张量结构标志为已处理,同时将该三层张量结构中的FT、MT、JT标志为已处理,回到S401;否则,前往S404;

S404:索引idx=idx+1,将当前未执行的三层张量结构链表中第idx个三层张量结构移至未执行的三层张量结构链表的首位,前往S402。

4.根据权利要求3所述的方法,其特征在于,所述基于所述执行顺序,执行Eager Reuse算法,包括:S501:对于输入的三层张量结构,给每层张量定义一个标志位tag,用以表示张量放置的相对位置,值可为‑1、0、1三种,其中0为初始值,1表示相对于当前张量,将其相邻的张量放在其内存地址的高地址处,‑1表示相对于当前张量,将其相邻的张量放在其内存地址的低地址处,如果三层张量的tag均为0,设FT的tag为1;首个三层张量结构的FT的基址为0,为其分配内存,再按照相邻张量的tag互为相反数的原则更新FT,MT,JT的tag;依次将FT,MT,JT输入S502中执行;

S502:判断前一分配张量的tag值:如果tag值为1,前往S503;如果tag值为‑1,前往S504;

S503:遍历目前已分配的张量,找到已分配的基址加张量大小的值最大的张量作为当前张量的基址,当前张量内存预分配结束;

S504:判断已分配张量的低地址处是否有空余空间;如果没有,前往S505;如果有,前往S506;

S505:遍历目前已分配的张量,找到已分配的张量中最小的基址减去当前张量的大小后得到的值作为当前张量的基址,当前张量内存预分配结束;

S506:将前一张量基址减去当前待分配张量的张量大小后得到的值作为当前张量的基址,进行内存预分配;前往S507;

S507:检查当前张量是否与其他已分配张量产生冲突,如果没有冲突,当前张量内存预分配结束;如果有冲突,前往S508;

S508:对产生冲突的张量基址向更高地址位进行偏移,直到所有冲突被解决,当前张量内存预分配结束。

5.一种基于 EagerReuse内存重用算法的内存优化装置,其特征在于,包括以下模块:获取模块,用于构建GPU运行时的计算图,获得所述计算图中所有张量的生命周期与所有的三层张量结构;

排序模块,用于确定所述三层张量结构的执行顺序;

执行模块,用于基于所述执行顺序,执行Eager Reuse算法,为每一个张量分配内存;

分配模块,用于依照所述Eager Reuse算法的分配结果,在所述每一个张量的生命周期的起始点申请内存,生命周期的结束点释放内存;

其中,所述获取模块,还用于:

遍历计算图的所有节点,将找到的节点视为fork节点,记作第一层节点Node_i;

遍历Node_i的所有邻接节点,将找到的节点视为middle节点,记作中间层节点Node_j;

遍历Node_j的所有邻接节点,将找到的节点视为join节点,记作第三层节点Node_k;

根据节点与张量一一匹配的规则,将查找到的[ Node_i,Node_j,Node_k ]三层节点均存在的结构变换为形如[FT, MT, JT]的三层张量结构,将找到的三层张量结构以链表形式存储,其中FT表示第一层张量,MT表示中间层张量,JT表示第三层张量。

6.根据权利要求5所述的装置,其特征在于,所述获取模块,还用于:

通过遍历时间段的方式,构造以时间段为行,以当前时间段为执行节点,产生于当前时间段的张量,结束于当前时间段的张量为列的生命周期信息表;从而获取所有张量的生命周期。

7.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1‑4中任一所述的基于急切内存重用算法的内存优化方法。

8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1‑4任意一项所述的基于急切内存重用算法的内存优化方法。