
技术摘要:
本申请实施例公开了一种内存管理方法和相关产品,该方法包括:第一处理设备为第一任务分配缓存池的第一缓存块;所述第一处理设备在确定第二处理设备需要按次序执行第二任务和所述第一任务的情况下,为所述第二任务分配所述缓存池的第二缓存块,其中,所述第二缓存块中 全部
背景技术:
在由中央处理器(CentralProcessingUnit,CPU)和加速设备构成的异构加速系统 中,加速设备上的内存管理策略会极大影响整个系统的性能和效率。加速设备是指CPU以外 用于加速计算的设备,例如图形处理器(Graphics Processing Unit,GPU)、网络处理器 (Neural-network Processing Unit,NPU)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)等。由于目前采用的内存管理策略内存利用率较低,因此需要研究内存 利用率更高的内存管理策略。
技术实现要素:
本申请实施例公开了一种内存管理方法和相关产品。 第一方面,本申请实施例提供了一种内存管理方法,该方法包括:第一处理设备为 第一任务分配缓存池的第一缓存块;所述第一处理设备在确定第二处理设备需要按次序执 行第二任务和所述第一任务的情况下,为所述第二任务分配所述缓存池的第二缓存块,其 中,所述第二缓存块中的至少一部分包含于所述第一缓存块。 第一处理设备确定第二处理设备需要按次序执行第二任务和第一任务的情况是 指该第一处理设备确定该第二处理设备不会并行执行该第一任务和该第二任务。也就是 说,第二处理设备不会同时执行该第一任务和该第二任务。应理解,第二处理设备按次序执 行第二任务和第一任务的情况下,该第二处理设备执行该第一任务和该第二任务不可能同 时占用同一缓存块。因此,第一处理设备在为第一任务分配缓存池的第一缓存块,可以为第 二任务分配第二缓存块,即该第一任务和该第二任务可以复用一部分缓存块。 本申请实施例中,第一处理设备在确定第二处理设备需要按次序执行第二任务和 第一任务的情况下,该第一任务和该第二任务可以复用一部分缓存块;能够提高内存利用 率。 在一个可能的实现方式中,所述第一处理设备为第一任务分配缓存池的第一缓存 块之后,所述方法还包括:所述第一处理设备响应于将所述第一任务发送至所述第二处理 设备,将所述第一缓存块重新放入所述缓存池。 所述第一处理设将所述第一任务发送至所述第二处理设备可以是所述第一处理 设调用第二处理设备执行所述第一任务,也可以将所述第一任务提交至第二处理设备处理 的某个任务队列。所述第一处理设在将所述第一任务发送至所述第二处理设备之后,可立 即将所述第一缓存块重新放入所述缓存池。 在该实现方式中,第一处理设备可及时将第一缓存块重新放入缓存池,以便于复 用该第一缓存池。 在一个可能的实现方式中,所述第一处理设备为第一任务分配缓存池的第一缓存 5 CN 111736998 A 说 明 书 2/15 页 块之后,所述方法还包括:所述第一处理设备记录所述第一缓存块对应的所述第一任务位 于的第一操作队列;所述确定第二处理设备需要按次序执行第二任务和所述第一任务的情 况包括:所述第一处理设备基于记录的所述第一任务位于的所述第一操作队列,确定所述 第一任务和所述第二任务位于的操作队列相同。 可选的,所述第一处理设备响应于将所述第一任务发送至所述第二处理设备之 后,记录所述第一缓存块对应的所述第一任务位于的第一操作队列。可选的,所述第一处理 设备将所述第一缓存块重新放入所述缓存池的操作和记录所述第一缓存块对应的所述第 一任务位于的第一操作队列的操作可视为同时执行。也就是说,第一处理设备将第一缓存 块重新放入缓存池的操作和记录该第一缓存块对应的第一任务位于的第一操作队列的操 作可以是绑定到一起的。所述第一处理设备在为所述第二任务分配缓存块之前,已知所述 第二任务位于的操作队列。因此,第一处理设备基于记录的第一任务位于的第一操作队列, 可以确定该第一任务和第二任务位于的操作队列是否相同。 在该实现方式中,第一处理设备基于记录的第一任务位于的第一操作队列,可准 确、快速地确定该第一任务和第二任务位于的操作队列相同。 在一个可能的实现方式中,所述为所述第二任务分配所述缓存池的第二缓存块包 括:所述第一处理设备在所述第二处理设备执行所述第一任务的过程中,为所述第二任务 分配所述缓存池的所述第二缓存块。 在该实现方式中,第一处理设备和第二处理设备并行工作,工作效率高。 在一个可能的实现方式中,所述为所述第二任务分配所述缓存池的第二缓存块之 前,所述方法还包括:所述第一处理设备从所述缓存池中查找当前分配有任务的至少一个 候选缓存块;所述第一处理设备在确定第二处理设备需要按次序执行第二任务和所述第一 任务的情况下,为所述第二任务分配所述缓存池的第二缓存块,包括:所述第一处理设备基 于所述至少一个候选缓存块当前分配的任务与所述第二任务之间的执行顺序关系,为所述 第二任务分配从所述至少一个候选缓存块中确定的所述第二缓存块。 在该实现方式中,第一处理设备基于至少一个候选缓存块当前分配的任务与第二 任务之间的执行顺序关系,为该第二任务分配从该至少一个候选缓存块中确定的第二缓存 块;以便于该第二任务复用已分配的缓存块,能够提高内存利用率。 在一个可能的实现方式中,所述第一处理设备从所述缓存池中查找当前分配有任 务的至少一个候选缓存块,包括:所述第一处理设备从所述缓存池中查找满足所述第二任 务所需缓存大小的多个候选缓存块;所述第一处理设备从所述多个候选缓存块中查找当前 分配有任务的至少一个候选缓存块。所述多个候选缓存块可以均为当前分配有任务的缓存 块;也可以既包括当前分配有任务的缓存块也包括当前未分配有任务的缓存块。 在该实现方式中,优先从多个候选缓存块中查找当前分配有任务的至少一个候选 缓存块,可快速查找到当前分配有任务且满足第二任务所需缓存大小的至少一个候选缓存 块。 在一个可能的实现方式中,所述第一处理设备从所述缓存池中查找当前分配有任 务的至少一个候选缓存块,包括:所述第一处理设备从所述缓存池中的当前分配有任务的 缓存块中查找满足所述第二任务所需缓存大小的所述多个候选缓存块。应理解,每个候选 缓存块为当前分配有任务的缓存块。 6 CN 111736998 A 说 明 书 3/15 页 在该实现方式中,第一处理设备直接从缓存池中的当前分配有任务的缓存块中查 找满足第二任务所需缓存大小的缓存块,进而将当前分配有任务的缓存块再次分配给该第 二任务;可以提高内存利用率。 在一个可能的实现方式中,所述第一处理设备基于所述至少一个候选缓存块当前 分配的任务与所述第二任务之间的执行顺序关系,为所述第二任务分配从所述至少一个候 选缓存块中确定的所述第二缓存块,包括:第一处理设备基于所述至少一个候选缓存块当 前分配的任务与所述第二任务之间的执行顺序关系以及所述至少一个候选缓存块的大小, 为所述第二任务分配从所述至少一个候选缓存块中确定的所述第二缓存块。 第一处理设备基于所述至少一个候选缓存块当前分配的任务与所述第二任务之 间的执行顺序关系以及所述至少一个候选缓存块的大小,为所述第二任务分配从所述至少 一个候选缓存块中确定的所述第二缓存块可以是:所述第一处理设备确定所述至少一个候 选缓存块当前分配的任务与所述第二任务按次序执行的情况下,基于所述至少一个候选缓 存块的大小为所述第二任务分配从所述至少一个候选缓存块中确定的所述第二缓存块。 在该实现方式中,为第二任务分配从当前分配有任务的至少一个候选缓存块中确 定的第二缓存块,可以复用当前分配有任务的缓存块,提高内存复用率。 在一个可能的实现方式中,所述方法还包括:所述第一处理设备确定所述至少一 个候选缓存块中不包括满足所述第二任务需求的缓存块的情况下,从所述缓存池中包括的 当前未分配有任务的至少一个缓存块中确定分配给所述第二任务的目标缓存块。 在该实现方式中,通过从缓存池中包括的当前未分配有任务的至少一个缓存块中 确定分配给第二任务的目标缓存块,以便于该第二任务能够成功被执行。 在一个可能的实现方式中,所述方法还包括:所述第一处理设备在所述缓存池中 未查找到满足所述第二任务需求的缓存块的情况下,扩充所述缓存池;所述第一处理设备 从扩充后的所述缓存池中查找分配给所述第二任务的目标缓存块。 在该实现方式中,从扩充后的缓存池中查找满足第二任务需求的缓存块,能够快 速地满足为第二任务分配满足其需求的缓存块。 第二方面,本申请实施例提供了一种数据处理装置,该数据处理装置包括:内存分 配单元,用于为第一任务分配缓存池的第一缓存块;处理单元,用于确定第二处理设备需要 按次序执行第二任务和所述第一任务的情况;所述内存分配单元,还用于在所述处理单元 确定所述第二处理设备需要按次序执行所述第二任务和所述第一任务的情况下,为所述第 二任务分配所述缓存池的第二缓存块,其中,所述第二缓存块中的至少一部分包含于所述 第一缓存块。 所述处理单元和所述内存分配单元可以是同一个单元,也可以是两个独立的单 元。在一些可能的实施方式中,处理单元为处理器,例如CPU,内存分配单元为一个硬件。在 一些可能的实施方式中,处理单元为处理器,例如CPU,内存分配单元的功能由处理器运行 的软件或程序实现。也就是说,处理单元的功能和内存分配单元的功能均由处理器实现。 在一个可能的实现方式中,所述处理单元,还用于将所述第一任务发送至所述第 二处理设备;所述内存分配单元,还用于响应于将所述第一任务发送至所述第二处理设备, 将所述第一缓存块重新放入所述缓存池。 在一个可能的实现方式中,所述处理单元,还用于记录所述第一缓存块对应的所 7 CN 111736998 A 说 明 书 4/15 页 述第一任务位于的第一操作队列;所述处理单元,具体用于基于记录的所述第一任务位于 的所述第一操作队列,确定所述第一任务和所述第二任务位于的操作队列相同。 在一个可能的实现方式中,所述内存分配单元,还用于在所述第二处理设备执行 所述第一任务的过程中,为所述第二任务分配所述缓存池的所述第二缓存块。 在一个可能的实现方式中,所述内存分配单元,还用于从所述缓存池中查找当前 分配有任务的至少一个候选缓存块;所述内存分配单元,具体用于在处理单元基于所述至 少一个候选缓存块当前分配的任务与所述第二任务之间的执行顺序关系确定所述第二处 理设备需要按次序执行所述第二任务和所述第一任务情况下,为所述第二任务分配从所述 至少一个候选缓存块中确定的所述第二缓存块。 在一个可能的实现方式中,所述内存分配单元,具体用于从所述缓存池中的当前 分配有任务的缓存块中查找满足所述第二任务所需缓存大小的所述多个候选缓存块。 在一个可能的实现方式中,所述内存分配单元,具体用于从所述缓存池中查找满 足所述第二任务所需缓存大小的多个候选缓存块;从所述多个候选缓存块中查找当前分配 有任务的至少一个候选缓存块。 在一个可能的实现方式中,所述内存分配单元,具体用于在所述处理单元基于所 述至少一个候选缓存块当前分配的任务与所述第二任务之间的执行顺序关系确定所述第 二处理设备需要按次序执行所述第二任务和所述第一任务情况下,基于所述至少一个候选 缓存块的大小为所述第二任务分配从所述至少一个候选缓存块中确定的所述第二缓存块。 在一个可能的实现方式中,所述内存处理单元,还用于在处理单元确定所述至少 一个候选缓存块中不包括满足所述第二任务需求的缓存块的情况下,从所述缓存池中包括 的当前未分配有任务的至少一个缓存块中确定分配给所述第二任务的目标缓存块。 在一个可能的实现方式中,所述内存处理单元,还用于在所述缓存池中未查找到 满足所述第二任务需求的缓存块的情况下,扩充所述缓存池;从扩充后的所述缓存池中查 找分配给所述第二任务的目标缓存块。 关于第二方面或各种可能的实现方式所带来的技术效果,可参考对于第一方面或 相应的实现方式的技术效果的介绍。 第三方面,本申请实施例提供了一种电子设备,该电子设备包括:存储器和第一处 理器,其中,所述存储器用于存储指令,所述第一处理器用于执行所述存储器存储的指令, 使得所述第一处理器执行如第一方面以及任一种可能的实现方式的方法。 在一个可能的实现方式中,所述电子设备还包括第二处理器,所述第二处理器用 于利用所述第一处理器分配的缓存块执行所述第一处理器发送的任务。示例性的,第一处 理器为CPU,第二处理器为GPU。 第四方面,本申请实施例提供了一种电子设备,该电子设备包括:第一处理设备、 存储器以及第二处理设备,其中,所述存储器用于存储指令和数据,所述第一处理器用于执 行所述存储器存储的指令,使得所述第一处理器执行如第一方面以及任一种可能的实现方 式的方法,所述第二处理设备用于利用所述第一处理设备分配的缓存块执行所述第一处理 器发送的任务。示例性的,第一处理设备为CPU,第二处理设备为GPU。 第五方面,本申请实施例提供了一种芯片,该芯片包括数据接口和第一方面所述 的第一处理设备,其中,所述第一处理设备用于执行第一方面或第一方面的任意可能实现 8 CN 111736998 A 说 明 书 5/15 页 方式中的方法。 第六方面,本申请实施例提供了一种计算机可读存储介质,该计算机存储介质存 储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器 执行第一方面以及任一种可选的实现方式的方法。 第七方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括程 序指令,所述程序指令当被处理器执行时使所述处理器执行第一方面以及任一种可选的实 现方式的方法。 附图说明 为了更清楚地说明本申请实施例或