【技术实现步骤摘要】
一种内存共享方法、装置、设备及可读存储介质
[0001]本申请涉及计算机应用
,特别是涉及一种内存共享方法、装置、设备及可读存储介质。
技术介绍
[0002]神经网络模型在硬件设备(如AI芯片)上执行的过程中会涉及到内存管理。具体来说,神经网络模型中算子的输入输出会占据一定的存储空间,这种对内存的占据具有时效性,当后续计算不会再用到这部分存储的数据时,该内存块即可重用,该部分存储的数据即可被后面计算数据所覆盖。
[0003]为了提高模型的推理速度,计算单元通常被设计成读取内存空间中的数据,执行相应的计算指令,会减少推理过程中的判断,动态管理内存等操作。因此需要深度学习编译器在编译神经网络模型的过程中安排好各个算子的内存使用情况,也就是每个算子所占用的内存空间大小,它在内存空间中的位移(即内存块编号)。
[0004]但是,目前的算子内存的管理存在明显缺陷。举例说明:TVM作为深度学习编译器的典型代表,它支持多种设备运行时的内存管理。它将整个模型进行剖分,得到分配到各个设备上运行的函数(func),在host端(编译器运行端)内存空间管理各个func的输入输出。但是,若在模型中添加伪量化算子,则会导致TVM的深度学习模型中携带的数据类型(dtype)与计算单元运行时的真实dtype不一致,这种情况下,TVM自身提供的内存管理方法存在问题。另外,TVM支持host端的内存空间管理,但对于函数内部算子的内存管理,它依赖于设备自身的软件栈(编译器),若设备的软件栈不支持内存管理,则需要对该设备内部及其输入 ...
【技术保护点】
【技术特征摘要】
1.一种内存共享方法,其特征在于,包括:获取深度学习模型中各个计算表达式所需的内存大小;结合所述内存大小,创建所述计算表达式的内存标记;基于所述内存标记,确定所述深度学习模型中异构计算单元间共享内存设置;完成内存设置后,进行内存排布,得到内存排布方案,并按照所述内存排布方案实施内存共享。2.根据权利要求1所述的内存共享方法,其特征在于,所述获取深度学习模型中各个计算表达式所需的内存大小,包括:将所述深度学习模型分为:模型层、函数层和算子层;所述函数层中的函数对应所述异构计算单元;从所述模型层、函数层和算子层中获取各个所述计算表达式的数据维度;对所述深度学习模型的输入和各个所述计算表达式进行遍历,得到各个所述计算表达式的数据类型和对齐方式;利用所述数据维度、所述数据类型和所述对齐方式,确定各个计算表达式所需的内存大小。3.根据权利要求2所述的内存共享方法,其特征在于,对所述深度学习模型的输入和各个所述计算表达式进行遍历,得到各个所述计算表达式的数据类型和对齐方式,包括:在所述函数层,对各个函数进行遍历,若函数与专用计算单元对应,则按照所述专用计算单元的要求计算数据类型和对齐方式,若函数未与专用计算单元对应,则按照所述深度学习模型的信息计算数据类型和对齐方式;在所述算子层,对各个算子进行遍历,算子初始的数据类型和对齐方式按照所述深度学习模型的信息计算,与函数输入相对应的算子输入的数据类型和对齐方式更改为与该函数输入的数据类型和对齐方式相同;与函数输出相对应的算子输出的数据类型和对齐方式更改为与该函数输出的数据类型和对齐方式相同;若算子的后续算子为伪量化算子,则该算子输出的数据类型更改为按伪量化的要求计算;在所述模型层,深度学习模型输入的数据类型和对齐方式确定为与对应函数输入的数据类型和对齐方式相同;深度学习模型输出的数据类型和对齐方式确定为与对应函数输出的数据类型和对齐方式相同。4.根据权利要求1所述的内存共享方法,其特征在于,结合所述内存大小,创建所述计算表达式的内存标记,包括:结合所述内存大小,为各个所述计算表达式创建一个所述内存标记,并初始化所述内存标记。5.根据权利要求4所述的内存共享方法,其特征在于,为各个所述计算表达式创建一个所述内存标记,包括:若所述计算表达式为张量类型节点,则为所述计算表达式创建包括一个张量内存标记的所述内存标记;若所述计算表达式为元组类型节点,则为所述计算表达式创建包括多个张量内存标记的所述内存标记;其中,所述张量内存标记包括:内存编号、内存复用标识、张量占用内存大小和内存分
配大小;其中,内存复用标识初始值为0。6.根据权利要求5所述的内存共享方法,其特征在于,初始化所述内存标记,包括:利用所述内存大小对所述内存标记中的张量占用内存大小进行赋值;以节点类型进入分支,并为所述内存标记中的内存复用标识进行初始化。7.根据权利要求6所述的内存共享方法,其特征在于,所述以节点类型进入分支,并为所述内存标记中的内存复用标识进行初始化,包括:对于输入型节点、常数节点或输出型节点,将所述计算表达式的所述内存复用标识值加1。8.根据权利要求6所述的内存共享方法,其特征在于,所述以节点类型进入分支,并为所述内存标记中的内存复用标识进行初始化,包括:对于普通计算节点,获取所述计算表达式的输入的内存标记,并将所述内存复用标识值加1。9.根据权利要求6所述的内存共享方法,其特征在于,所述以节点类型进入分支,并为所述内存标记中的内存复用标识进行初始化,包括:对于元组节点,将所述计算表达式对应的若干个普通分支节点的内存标记进行合并,得到合并结果;利用所述合并结果,为所述内存标记中的内存复用标识进行初始化。10.根据权利要求6所述的内存共享方法,其特征在于,所述以节点类型进入分支,并为所述内存标记中的内存复用标识进行初始化,包括:对于元组分支节点,获取与所述计算表达式相对应的元组节点类型中普通分支节点的内存标记;利用所述普通分支节点的内存标记为所述计算表达式的所述内存复用标识进行初始化。11.根据权利要求1所述的内存共享方法,其特征在于,基于所述内存标记,确定所述深度学习模型中异构计算单元间共享内存设置,包括:将所述深度学习模型分为:模型层、函数层和算子层;所述函数层中的函数对...
【专利技术属性】
技术研发人员:袁悦,
申请(专利权)人:苏州浪潮智能科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。