动态数据加载减少内存开销的方法、系统、计算机设备及存储介质与流程

文档序号:24543214发布日期:2021-04-02 10:27阅读:92来源:国知局
动态数据加载减少内存开销的方法、系统、计算机设备及存储介质与流程

本申请涉及深度相机数据处理技术领域,特别是涉及一种动态数据加载减少内存开销的方法、系统、计算机设备及存储介质。



背景技术:

现如今,在计算机信息技术高速发展的时代背景下,计算机设备所具有的功能也越来越多,性能也越来越稳定,这也就意味着cpu的数据运算量可能也越来越大。当计算机设备运行中需要用到大量模型对数据进行处理时,早期的计算机程序中,为了加快设备的运行效率,大多采用以空间换时间的理念,即不论模型是否时刻在使用,都加载到cpu的ram中。

但是,当设备被要求的做到更多的功能时,需要加载使用的模型也会越来越多,按照传统的以空间换时间的理念,则需要更多的内存空间,那就需要更换内存更大的cpu来解决需求。这就意味需要更多的资金更新设备,不论是从消费者的角度看还是生产者的角度看,这种成本的增加都不是他们能接受的。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种动态数据加载减少内存开销的方法、系统、计算机设备及存储介质。

一种动态数据加载减少内存开销的方法,包括以下步骤:

在ram中设定固定模型地址、当前模型地址及下一步模型地址;

通过cpu按序依次从flash加载模型m1~mn;

通过dma将模型m1加载到固定模型地址中,同时,也通过dma将除模型m1以外的其它模型按序加载到当前模型地址和下一步模型地址中;

除初始化步骤通过cpu运行模型m1处理数据外,剩余步骤均通过当前模型地址加载的模型处理数据,数据处理后释放其内存,直到所有模型处理完成。

作为一种实施方式,还包括以下步骤:

当某一模型处理失败,释放当前模型地址和下一步模型地址的内存,下一步重新开始处理模型m1。

作为一种实施方式,所述通过cpu按序依次从flash加载模型m1~mn,具体包括以下步骤:

指定cpu按序依次从flash加载模型m1到mn的包头,获取并记录各模型大小到对应的size1到sizen中;

根据模型动态分配size大小的内存,并记录内存地址到相应模型地址中。

一种动态数据加载减少内存开销的方法系统,包括:

地址单元,用于在ram中设定固定模型地址、当前模型地址及下一步模型地址;

cpu单元,用于通过cpu按序依次从flash加载模型m1~mn;

dma单元,用于通过dma将模型m1加载到固定模型地址中,同时,也通过dma将除模型m1以外的其它模型按序加载到当前模型地址和下一步模型地址中;

数据处理单元,用于除初始化步骤通过cpu运行模型m1处理数据外,剩余步骤均通过当前模型地址加载的模型处理数据,数据处理后释放其内存,直到所有模型处理完成。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现动态数据加载减少内存开销的方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现动态数据加载减少内存开销的方法的步骤。

上述动态数据加载减少内存开销的方法、系统、计算机设备及存储介质,通过动态加载模型的方法,释放出大量运行近期不需要使用的模型空间,通过dma协同加载模型的方法,减少频繁加载对cpu的时间消耗,最终通过此方法,解决为保障算法正常运行而需要更换cpu的问题。

附图说明

图1为一个实施例中动态数据加载减少内存开销的方法的应用环境图;

图2为一个实施例中动态数据加载减少内存开销的方法的流程示意图;

图3为一个实施例中动态数据加载减少内存开销的系统的结构框图;

图4为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的动态数据加载减少内存开销的方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑等,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图2所示,提供了一种动态数据加载减少内存开销的方法。接下来以该方法应用于图1中的终端为例进行说明,该方法包括以下步骤:

s100:在ram中设定固定模型地址、当前模型地址及下一步模型地址;

s200:通过cpu按序依次从flash加载模型m1~mn;

s300:通过dma将模型m1加载到固定模型地址中,同时,也通过dma将除模型m1以外的其它模型按序加载到当前模型地址和下一步模型地址中;

s400:除初始化步骤通过cpu运行模型m1处理数据外,剩余步骤均通过当前模型地址加载的模型处理数据,数据处理后释放其内存,直到所有模型处理完成。

步骤s200具体包括以下内容:

指定cpu按序依次从flash加载模型m1到mn的包头,获取并记录各模型大小到对应的size1到sizen中;

根据模型动态分配size大小的内存,并记录内存地址到相应模型地址中。

除上述的步骤外,还包括以下步骤:

当某一模型处理失败,释放当前模型地址和下一步模型地址的内存,下一步重新开始处理模型m1。

在一实施例中,本发明的动态数据加载减少内存开销的方法详细流程如下:

步骤一、设定模型为m1到mn,在ram中设定固定模型地址addra、当前模型地址addrb及下一步模型地址addrc用于保存3个模型,除了在m1处理数据时使用固定模型地址addra的内存空间外,其它模型都是使用addrb的内存空间。同时,置前步骤变量step=0;

步骤二、指定cpu按序依次从flash加载模型m1到mn的包头,获取并记录各模型大小到对应的size1到sizen中;

步骤三、动态分配size1大小的内存,并记录内存地址到固定模型地址addra后,使用dma加载模型m1到固定模型地址addra;

步骤四、当需要使用模型m1来处理数据时,置step=1;

步骤五、动态分配size2大小的内存,记录内存地址到下一步模型地址addrc,使用dma加载模型m2到下一步模型地址addrc,并用固定模型地址addra中的模型m1处理数据;

步骤六,若m1处理数据失败,释放下一步模型地址addrc的空间。下一步需模型m1处理,回到步骤五;

步骤七、在模型m1处理完数据成功后,使用dma加载m2到当前模型地址addr

b,同时,动态分配size3大小的内存,记录内存地址到下一步模型地址addr

c,置step=step+1;下一轮通过模型m2处理数据,同理,后续步骤按序通过其他模型处理数据,在后续的步骤中,当前处理数据的模型用mstep表述;

步骤八、若模型mstep处理成功,需要模型mstep+1处理数据时,先将当前模型地址addrb和下一步模型地址addrc的地址互换,置step=step+1;

步骤九、动态分配sizestep+1大小的内存,记录内存地址addrc,使用dma加载模型mstep+1到下一步模型地址addrc,并用当前模型地址addrb中的模型mstep处理数据;

步骤十、若模型mstep处理数据失败,下一步需步骤m1处理,先释放当前模型地址addrb和下一步模型地址addrc的内存空间,回到步骤四;

步骤十一、若模型mstep处理成功,且step<n-1,释放当前模型地址addrb后,回到步骤八;

步骤十二、若模型mstep处理成功,且step=n-1,释放当前模型地址addrb后,置step=n;

步骤十三、将当前模型地址addrb和下一步模型地址addrc的地址互换,模型mn处理完后,不论处理成功还是失败,下一步都是模型m1处理,释放当前模型地址addrb,回到步骤四。

在一个实施例中,如图3所示,一种动态数据加载减少内存开销的方法系统,包括地址单元1、cpu单元2、dma单元3及数据处理单元4,地址单元1用于在ram中设定固定模型地址、当前模型地址及下一步模型地址;cpu单元2用于通过cpu按序依次从flash加载模型m1~mn;dma单元3用于通过dma将模型m1加载到固定模型地址中,同时,也通过dma将除模型m1以外的其它模型按序加载到当前模型地址和下一步模型地址中;数据处理单元4用于除初始化步骤通过cpu运行模型m1处理数据外,剩余步骤均通过当前模型地址加载的模型处理数据,数据处理后释放其内存,直到所有模型处理完成。

关于上述系统的具体限定可以参见上文中对方法的限定,在此不再赘述。上述装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储上述基于红外图像的人脸活体检测方法的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于红外图像的人脸活体检测方法。

本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

s100:在ram中设定固定模型地址、当前模型地址及下一步模型地址;

s200:通过cpu按序依次从flash加载模型m1~mn;

s300:通过dma将模型m1加载到固定模型地址中,同时,也通过dma将除模型m1以外的其它模型按序加载到当前模型地址和下一步模型地址中;

s400:除初始化步骤通过cpu运行模型m1处理数据外,剩余步骤均通过当前模型地址加载的模型处理数据,数据处理后释放其内存,直到所有模型处理完成。

步骤s200具体包括以下内容:

指定cpu按序依次从flash加载模型m1到mn的包头,获取并记录各模型大小到对应的size1到sizen中;

根据模型动态分配size大小的内存,并记录内存地址到相应模型地址中。

除上述的步骤外,还包括以下步骤:

当某一模型处理失败,释放当前模型地址和下一步模型地址的内存,下一步重新开始处理模型m1。

在一实施例中,本发明的动态数据加载减少内存开销的方法详细流程如下:

步骤一、设定模型为m1到mn,在ram中设定固定模型地址addra、当前模型地址addrb及下一步模型地址addrc用于保存3个模型,除了在m1处理数据时使用固定模型地址addra的内存空间外,其它模型都是使用addrb的内存空间。同时,置前步骤变量step=0;

步骤二、指定cpu按序依次从flash加载模型m1到mn的包头,获取并记录各模型大小到对应的size1到sizen中;

步骤三、动态分配size1大小的内存,并记录内存地址到固定模型地址addra后,使用dma加载模型m1到固定模型地址addra;

步骤四、当需要使用模型m1来处理数据时,置step=1;

步骤五、动态分配size2大小的内存,记录内存地址到下一步模型地址addrc,使用dma加载模型m2到下一步模型地址addrc,并用固定模型地址addra中的模型m1处理数据;

步骤六,若m1处理数据失败,释放下一步模型地址addrc的空间。下一步需模型m1处理,回到步骤五;

步骤七、在模型m1处理完数据成功后,使用dma加载m2到当前模型地址addr

b,同时,动态分配size3大小的内存,记录内存地址到下一步模型地址addr

c,置step=step+1;下一轮通过模型m2处理数据,同理,后续步骤按序通过其他模型处理数据,在后续的步骤中,当前处理数据的模型用mstep表述;

步骤八、若模型mstep处理成功,需要模型mstep+1处理数据时,先将当前模型地址addrb和下一步模型地址addrc的地址互换,置step=step+1;

步骤九、动态分配sizestep+1大小的内存,记录内存地址addrc,使用dma加载模型mstep+1到下一步模型地址addrc,并用当前模型地址addrb中的模型mstep处理数据;

步骤十、若模型mstep处理数据失败,下一步需步骤m1处理,先释放当前模型地址addrb和下一步模型地址addrc的内存空间,回到步骤四;

步骤十一、若模型mstep处理成功,且step<n-1,释放当前模型地址addrb后,回到步骤八;

步骤十二、若模型mstep处理成功,且step=n-1,释放当前模型地址addrb后,置step=n;

步骤十三、将当前模型地址addrb和下一步模型地址addrc的地址互换,模型mn处理完后,不论处理成功还是失败,下一步都是模型m1处理,释放当前模型地址addrb,回到步骤四。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

s100:在ram中设定固定模型地址、当前模型地址及下一步模型地址;

s200:通过cpu按序依次从flash加载模型m1~mn;

s300:通过dma将模型m1加载到固定模型地址中,同时,也通过dma将除模型m1以外的其它模型按序加载到当前模型地址和下一步模型地址中;

s400:除初始化步骤通过cpu运行模型m1处理数据外,剩余步骤均通过当前模型地址加载的模型处理数据,数据处理后释放其内存,直到所有模型处理完成。

步骤s200具体包括以下内容:

指定cpu按序依次从flash加载模型m1到mn的包头,获取并记录各模型大小到对应的size1到sizen中;

根据模型动态分配size大小的内存,并记录内存地址到相应模型地址中。

除上述的步骤外,还包括以下步骤:

当某一模型处理失败,释放当前模型地址和下一步模型地址的内存,下一步重新开始处理模型m1。

在一实施例中,本发明的动态数据加载减少内存开销的方法详细流程如下:

步骤一、设定模型为m1到mn,在ram中设定固定模型地址addra、当前模型地址addrb及下一步模型地址addrc用于保存3个模型,除了在m1处理数据时使用固定模型地址addra的内存空间外,其它模型都是使用addrb的内存空间。同时,置前步骤变量step=0;

步骤二、指定cpu按序依次从flash加载模型m1到mn的包头,获取并记录各模型大小到对应的size1到sizen中;

步骤三、动态分配size1大小的内存,并记录内存地址到固定模型地址addra后,使用dma加载模型m1到固定模型地址addra;

步骤四、当需要使用模型m1来处理数据时,置step=1;

步骤五、动态分配size2大小的内存,记录内存地址到下一步模型地址addrc,使用dma加载模型m2到下一步模型地址addrc,并用固定模型地址addra中的模型m1处理数据;

步骤六,若m1处理数据失败,释放下一步模型地址addrc的空间。下一步需模型m1处理,回到步骤五;

步骤七、在模型m1处理完数据成功后,使用dma加载m2到当前模型地址addr

b,同时,动态分配size3大小的内存,记录内存地址到下一步模型地址addr

c,置step=step+1;下一轮通过模型m2处理数据,同理,后续步骤按序通过其他模型处理数据,在后续的步骤中,当前处理数据的模型用mstep表述;

步骤八、若模型mstep处理成功,需要模型mstep+1处理数据时,先将当前模型地址addrb和下一步模型地址addrc的地址互换,置step=step+1;

步骤九、动态分配sizestep+1大小的内存,记录内存地址addrc,使用dma加载模型mstep+1到下一步模型地址addrc,并用当前模型地址addrb中的模型mstep处理数据;

步骤十、若模型mstep处理数据失败,下一步需步骤m1处理,先释放当前模型地址addrb和下一步模型地址addrc的内存空间,回到步骤四;

步骤十一、若模型mstep处理成功,且step<n-1,释放当前模型地址addrb后,回到步骤八;

步骤十二、若模型mstep处理成功,且step=n-1,释放当前模型地址addrb后,置step=n;

步骤十三、将当前模型地址addrb和下一步模型地址addrc的地址互换,模型mn处理完后,不论处理成功还是失败,下一步都是模型m1处理,释放当前模型地址addrb,回到步骤四。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)

dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1