计算组件的存储管理方法和装置

阅读: 评论:0

著录项
  • CN201510514510.5
  • 20150820
  • CN105138289A
  • 20151209
  • 上海联影医疗科技有限公司
  • 滕万里;韩业成;齐季;朱江源;马艳歌
  • G06F3/06
  • G06F3/06

  • 上海市嘉定区城北路2258号
  • 上海(31)
  • 上海专利商标事务所有限公司
  • 骆希聪
摘要
本发明提供了一种计算组件的存储管理方法和装置,用于在使用该计算组件进行计算时管理该计算组件的存储器。该方法包括以下步骤:确定由至少两个子计算任务组成的计算任务所需的总存储容量;根据该总存储容量申请该存储器的一存储空间;确定进行一子计算任务所需的单次存储容量;根据该单次存储容量申请该存储空间中的子存储空间,该子存储空间供该子计算任务计算时占用;当该子计算任务计算完毕后释放该子存储空间,直到该计算任务计算完毕。本发明可以更加有效地利用计算组件的存储器,尤其是存储容量有限的存储器。
权利要求

1.一种计算组件的存储管理方法,用于在使用该计算组件进行计算时管理该 计算组件的存储器,该方法包括以下步骤:

确定由至少两个子计算任务组成的计算任务所需的总存储容量;

根据该总存储容量申请该存储器的一存储空间;

确定进行一子计算任务所需的单次存储容量;

根据该单次存储容量申请该存储空间中的子存储空间,该子存储空间供该子 计算任务计算时占用;

当该子计算任务计算完毕后释放该子存储空间,直到该计算任务计算完毕。

2.如权利要求1所述的存储管理方法,其特征在于,还包括在该计算任务计 算完毕后释放该存储空间。

3.如权利要求1所述的存储管理方法,其特征在于,由一存储空间管理器向 该计算组件的一存储器管理单元申请该存储器的存储空间。

4.如权利要求3所述的存储管理方法,其特征在于,该子存储空间是向该存 储空间管理器申请。

5.如权利要求3所述的存储管理方法,其特征在于,还包括创建并维持该存 储空间管理器。

6.如权利要求3所述的存储管理方法,其特征在于,该存储空间管理器为存 储管理池。

7.如权利要求3所述的存储管理方法,其特征在于,该计算组件的存储器管 理单元为操作系统。

8.如权利要求1所述的存储管理方法,其特征在于,该至少两个子计算任务 基本上是顺序执行。

9.如权利要求8所述的存储管理方法,其特征在于,该计算任务所需的总存 储容量为该至少两个子计算任务各自所需单次存储容量的最大值。

10.如权利要求1所述的存储管理方法,其特征在于,是在执行该计算任务的 程序中实施。

11.如权利要求10所述的存储管理方法,其特征在于,各子计算任务是由该 程序中的各计算模块执行,且各计算模块分别对应各子计算任务。

12.如权利要求1所述的存储管理方法,其特征在于,该计算组件是显卡、专 用高性能计算卡或者现场可编程门阵列。

13.一种计算组件的存储管理装置,包括:

第一模块,用于确定由至少两个子计算任务组成的计算任务所需的总存储容 量;

第二模块,用于根据该总存储容量申请该存储器的一存储空间;

第三模块,用于确定进行一子计算任务所需的单次存储容量;

第四模块,用于根据该单次存储容量申请该存储空间中的子存储空间,该子 存储空间供该子计算任务计算时占用;以及

第五模块,用于当该子计算任务计算完毕后释放该子存储空间,直到该计算 任务计算完毕。

说明书
技术领域

本发明主要涉及计算组件,尤其涉及一种计算组件的存储管理方法和装置。

随着通用并行计算架构(ComputeUnifiedDeviceArchitecture,CUDA)的普及,显卡上的图形处理器(GraphicProcessingUnit,GPU)已经被用来解决复杂的计算问题。GPU所擅长应对的是计算密集型(Compute-Intensive)问题,因为GPU内部大量分布着算术逻辑单元(arithmeticandlogicunit,ALU)阵列,这种单元应对并行度高运算密度大的问题比中央处理器(CentralProcessingUnit,CPU)获取的加速比要高很多倍。

除了显卡之外,还存在使用专用高性能计算卡、现场可编程门阵列(Field-ProgrammableGateArray,FPGA)等进行复杂技术的计算组件。

这些显卡、专用高性能计算卡、现场可编程门阵列等计算组件都会配备一定容量的存储器以供计算的过程中存储。由于成本的限制,存储器容量通常是受限的,难以应对一些应用场合的计算过程中所需的庞大存储量。为了克服这一问题,一种方法是每次计算完毕后将计算组件的存储器(后文称为内部存储器)的数据复制到外部存储器上,当计算组件需要时再将外部存储器上的数据复制到内部存储器。然而内、外部存储器间的数据复制局限于计算组件的接口的传输速度,会导致计算速度下降。

因此如何在受限的存储容量下进行大存储量的计算是上述计算组件和其他计算组件面临的挑战。

本发明要解决的技术问题是提供一种计算组件的存储管理方法和装置,以更加有效地利用计算组件的存储器。

为解决上述技术问题,本发明提供了一种计算组件的存储管理方法,用于在使用该计算组件进行计算时管理该计算组件的存储器,该方法包括以下步骤:确定由至少两个子计算任务组成的计算任务所需的总存储容量;根据该总存储容量申请该存储器的一存储空间;确定进行一子计算任务所需的单次存储容量;根据该单次存储容量申请该存储空间中的子存储空间,该子存储空间供该子计算任务计算时占用;当该子计算任务计算完毕后释放该子存储空间,直到该计算任务计算完毕。

可选地,上述方法还包括在该计算任务计算完毕后释放该存储空间。

可选地,由该存储空间管理器向一计算组件的存储器管理单元申请该存储器的存储空间。

可选地,该子存储空间是向该存储空间管理器申请。

可选地,上述方法还包括创建并维持该存储空间管理器。

可选地,该存储空间管理器为存储管理池。

可选地,该存储器管理单元为操作系统。

可选地,该至少两个子计算任务基本上是顺序执行。

可选地,该计算任务所需的总存储容量为该至少两个子计算任务各自所需单次存储容量的最大值。

可选地,上述方法是在执行该计算任务的程序中实施。

可选地,各子计算任务是由该程序中的各计算模块执行,且各计算模块分别对应各子计算任务。

可选地,该计算组件是显卡、专用高性能计算卡或者现场可编程门阵列。

本发明还提出一种计算组件的存储管理装置,包括:

第一模块,用于确定由至少两个子计算任务组成的计算任务所需的总存储容量;

第二模块,用于根据该总存储容量申请该存储器的一存储空间;

第三模块,用于确定进行一子计算任务所需的单次存储容量;

第四模块,用于根据该单次存储容量申请该存储空间中的子存储空间,该子存储空间供该子计算任务计算时占用;

第五模块,用于当该子计算任务计算完毕后释放该子存储空间,直到该计算任务计算完毕。

与现有技术相比,本发明的存储管理技术通过进行存储的逻辑申请和释放,有效的解决了存储容量有限性的问题,对每个计算单位来说,就像全部的存储容量都归该计算单位使用一样,有效地提高了存储的使用率;而且在从存储器管理单元处申请到存储空间后,每次计算时只需向存储空间管理器申请子存储空间,比起直接向存储器管理单元申请存储的速度要快得多,也不会产生碎片。

图1是本发明一实施例的计算组件的存储管理方法流程图;

图2是根据本发明一实施例的计算程序的逻辑结构;

图3是根据本发明另一实施例的计算程序的逻辑结构;

图4是根据本发明一实施例的存储管理示意图。

为让本发明的上述目的、特征和优点能更明显易懂,以下结合附图对本发明的具体实施方式作详细说明。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其它不同于在此描述的其它方式来实施,因此本发明不受下面公开的具体实施例的限制。

计算组件,例如显卡、专用高性能计算卡和现场可编程门阵列(FPAG)通常包括计算器件和存储器。举例来说,显卡包括图形处理器(GPU)和显存。像显存这样的计算组件内部存储器的有限容量,是制约计算组件计算速度的关键因素之一。一个大规模的计算任务所需的存储量往往会显著超过计算组件内部存储器的容量。计算组件外部的存储器,例如计算机的内存通常会有明显更大的容量,但是其响应速度不及计算组件内部的存储器。因此,在利用计算组件进行大量运算时仍然期望在计算过程中主要依赖于计算组件内部的存储器。这样,如何有效地管理和使用计算组件内部的存储器,对加快计算速度起到了关键作用。

本发明的实施例提出计算组件的存储管理方法,它可以更充分地利用计算机组件的存储器,且更加快速地获得计算所需的存储。

图1示出本发明一实施例的计算组件的存储管理方法流程图。参考图1所示,本实施例的方法用于在使用该计算组件进行计算时管理该计算组件的存储器。该方法包括以下步骤:

在步骤101,确定一计算任务所需的总存储容量。此计算任务由至少两个子计算任务组成。

举例来说,一个计算任务可以是医学影像重建。这是在医疗设备通过扫描人体部位获得断层图像后,在计算机中重建人体部位影像的过程。作为举例,医学影像重建可包括投影图像预处理、滤波反投影、伪影校正等多个子计算任务。

通常而言,一个计算任务的多个子计算任务基本上是按顺序执行。这样,计算任务所需的总存储容量就可确定为这些子计算任务所需的存储容量中,存储容量最大的那一个。

当然可以理解,在计算过程的某些时段,存在两个或更多个子计算任务并行执行的实例。这时计算任务所需的总存储容量可能是两个或多个并行的子计算任务所需存储容量的和。不过,当不希望出现并行执行的情况时,可通过重新分解子计算任务来实现多个子计算任务的严格顺序执行。

分解计算任务,尤其是将其分解为顺序执行的子计算任务,可降低计算任务所需的总存储容量。举例来说,完整执行一个计算任务所需的存储容量是3GB,而通过分解,其子计算任务在同一时段可能只需2GB的总存储容量。

在步骤102,根据总存储容量申请存储器的一存储空间。

具体来说,在确定了计算任务的总存储容量后,可一次性申请计算过程所需的所有存储容量。仍然假设所需总存储容量是2GB,则此时可一次性申请2GB的存储空间。

通常而言申请是向计算组件的存储器管理单元提出。在一个实例中,计算组件的存储器管理单元是操作系统。

在步骤101-102申请到存储空间后,将会开始计算任务的计算过程。在计算过程中,进行各子计算任务时会分别申请从存储空间中使用一子存储空间,作为存储之用。

在步骤103,确定进行一子计算任务所需的单次存储容量。

举例来说,现在要进行投影图像预处理这一子计算任务,则确定进行这一任务所需的单次存储容量。假设这一单次存储容量为500MB。

在步骤104,根据单次存储容量申请使用存储空间中的子存储空间。

例如,向存储空间管理器申请使用存储空间中500MB的子存储空间。

在此,存储空间管理器是被赋予管理从存储器管理单元处申请到的存储空间的实体。存储空间管理器与存储器管理单元不同,且与本实施例的方法更为紧密地关联。例如存储空间管理器在本实施例的方法实施过程中创建和维持。举例来说,存储空间管理器可以实施为一个程序,更具体地是一个存储管理池(MemoryPool)。

存储管理池可以统一管理存储空间。在方法开始时,存储管理池可确定计算所需要的总存储容量,并向存储器管理单元申请。此后,每个子计算任务的子存储空间只需向存储管理池申请。向存储管理池申请存储比直接向操作系统这样的存储器管理单元申请存储的速度要快的多,也不会产生碎片。

在步骤105,在子计算任务完成后将子存储空间释放,直到计算任务执行完毕。

举例来说,在投影图像预处理这一子计算任务完成后,将500MB的子存储空间释放给存储空间管理器,例如前述的存储管理池。这样,存储管理池所管理的存储空间恢复到2GB。

接下来,可执行下一子计算任务,确定其所需的单次存储容量,向存储空间管理器申请对应的子存储空间用于计算,且在子计算任务完成后将子存储空间释放给存储空间管理器,以此类推,直到计算任务执行完毕。

在步骤106,在计算任务完成后释放存储空间。

举例来说,整个医学影像重建的计算任务完成后,存储空间管理器,例如存储管理池将2GB的存储空间释放给存储器管理单元,例如操作系统。可以理解,对于计算组件的存储管理来说,这一步骤并不是必须的。

以下描述存储管理池的示例性实现机制。存储管理池会保存当前正在使用的存储区块列表和空闲的存储区块列表。存储管理池向存储器管理单元申请到存储空间后,当前正在使用的列表为空,空闲的列表为申请的全部存储空间。当存储管理池被申请子存储空间时,存储管理池会检查空闲的存储容量是否够用,如果够用则将该区块从空闲列表中删除,放到正在使用的存储区块中;如果不够用,则考虑细化计算粒度以向存储管理池申请更小块的存储。

较佳地,确定合适的计算单位向存储管理池进行子存储空间的申请和释放。如果计算单位过小,会频繁的向存储管理池申请子存储空间,这样会影响本方案的整体性能。如果计算单位过大,则计算过程中使用的存储容量就会超过系统的最大存储使用量。举例来说,本实施例的存储管理方法是在执行计算任务的程序中实施。相应地,计算单位是程序中的一计算模块。

图2示出根据本发明一实施例的计算程序的逻辑结构。参考图2所示,计算程序200包括4个示例性计算单位210、220、230和240。这些计算单位的粒度大小可参考上述的因素来考虑。仍以医学影像重建为例,其计算程序可包括投影图像预处理、滤波反投影、伪影校正这些计算模块,每个计算模块执行一个对应的子计算任务。如图2所示的那样,这些计算单位210、220、230和240顺序地执行各自的子计算任务。

图3示出根据本发明另一实施例的计算程序的逻辑结构。参考图3所示,计算程序300包括5个示例性计算单位310、320、330、340和350。这些计算单位的粒度大小同样可参考上述的因素来考虑。与图2相比,这些计算单位中,计算单位310、320、330和340顺序地执行各自的子计算任务,而计算单位350与计算单位320基本上并行执行其子计算任务。

图4示出根据本发明一实施例的存储管理示意图。参考图4所示,在阶段401,从存储器管理单元处申请到存储空间A;在阶段402,计算模块1申请了子存储空间A1,存储空间A还剩余存储空间A2;在阶段403,计算模块1计算过程中使用子存储空间A1;在阶段404,计算模块1释放子存储空间A1。在阶段405,计算模块2申请了子存储空间A3,存储空间A还剩余存储空间A4;在阶段406,计算模块2计算过程中使用子存储空间A3;在阶段407,计算模块2释放子存储空间A3。依次类推,计算完成后释放存储空间A。

本发明的另一实施例提出一种计算组件的存储管理装置,包括第一至第五模块。第一模块用于确定由至少两个子计算任务组成的计算任务所需的总存储容量。第二模块用于根据该总存储容量申请该存储器的一存储空间。第三模块用于确定进行一子计算任务所需的单次存储容量。第四模块根据该单次存储容量申请该存储空间中的子存储空间,该子存储空间供该子计算任务计算时占用。第五模块用于当该子计算任务计算完毕后释放该子存储空间,直到该计算任务计算完毕。

本发明上述实施例的方法和装置相比已知技术具有以下优点:

1、通过进行存储的逻辑申请和释放,有效地解决了存储容量有限性的问题,对每个计算单位来说,就像全部的存储容量都归该计算单位使用一样,有效的提高了存储的使用率;

2、在从存储器管理单元处申请到存储空间后,每次计算时只需向存储空间管理器申请子存储空间,比起直接向存储器管理单元申请存储的速度要快得多,也不会产生碎片;

3、在每次子计算任务计算前向存储空间管理器申请本次计算所需要的存储空间,计算后进行释放,以保证下次计算时存储容量的可用性。

虽然本发明已参照当前的具体实施例来描述,但是本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,在没有脱离本发明精神的情况下还可作出各种等效的变化或替换,因此,只要在本发明的实质精神范围内对上述实施例的变化、变型都将落在本申请的权利要求书的范围内。

本文发布于:2023-04-15 03:28:16,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/1/87547.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图