一种基于单GPU卡的图像并发处理方法、装置及系统与流程

文档序号:16971916发布日期:2019-02-26 18:37阅读:129来源:国知局
一种基于单GPU卡的图像并发处理方法、装置及系统与流程

本发明涉及图像处理技术领域,具体涉及一种基于单gpu卡的图像并发处理方法、装置及系统。



背景技术:

深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。

目前,深度学习应用最主要的计算方式是前向传播。在现如今大量应用场景需求下,对于深度学习计算性能的要求越来越高。而其中最常用的提高计算性能的方法是使用图形处理器(graphicsprocessingunit,简称gpu)加速计算,以达到更高的系统吞吐量。经典的gpu加速计算注重于发挥gpu加速硬件的性能潜力,将深度学习前向传播过程中计算密集部分使用gpu进行计算,并进行深入优化来达到更高的加速效果。

即便如此,gpu硬件的实际利用率仍然没有达到理想的效果,造成了gpu资源的浪费。



技术实现要素:

本发明实施例的目的在于提供一种基于单gpu卡的图像并发处理方法、装置及系统,用以解决在进行深度学习应用时,cpu硬件的实际利用率不高,造成资源浪费的问题。

为实现上述目的,本发明实施例提供一种基于单gpu卡的图像并发处理方法,该方法包括:

接收用户提交的任务,其中任务为用户根据待处理的对象和处理需求建立的任务;

将任务加入到任务队列,并为任务配置与之对应的任务线程;

将配置好的任务线程按序加入到线程池中,线程池中包含至少两个任务线程;

根据图形处理器gpu卡的内存和线程池中每一个任务线程执行时占用的内存,合理的从线程池中选取一个或多个任务线程提交至gpu卡,以便gpu卡对一个或多个任务线程并行处理。

本发明实施例具有如下优点:接收用户提交的任务后,将任务加入队列后配置与之对应的任务线程。然后根据gpu内存和每一个任务线程占用的内存,确定gpu可以同时处理的任务线程。通过上述方式,可以保证gpu的资源能够充分利用,避免资源浪费,使其空闲、空余占比大大减少,有效增加了系统的吞吐能力。此外,多个任务线程同时处理,可以具备更好的加速比,进一步提升处理效率。

为实现上述目的,本发明实施例提供一种基于单gpu卡的图像并发处理装置,该装置包括:

接收单元,用于接收用户提交的任务,其中任务为用户根据待处理的对象和处理需求建立的任务;

配置单元,用于将任务加入到任务队列,并为任务配置与之对应的任务线程;

处理单元,用于将配置好的任务线程按序加入到线程池中,线程池中包含至少两个任务线程;

根据图形处理器gpu卡的内存和线程池中每一个任务线程执行时占用的内存,合理的从线程池中选取一个或多个任务线程提交至gpu卡,以便gpu卡对一个或多个任务线程并行处理。

本发明实施例具有如下优点:接收用户提交的任务后,将任务加入队列后配置与之对应的任务线程。然后根据gpu内存和每一个任务线程占用的内存,确定gpu可以同时处理的任务线程。通过上述方式,可以保证gpu的资源能够充分利用,避免资源浪费,使其空闲、空余占比大大减少,有效增加了系统的吞吐能力。此外,多个任务线程同时处理,可以具备更好的加速比,进一步提升处理效率。

为实现上述目的,本发明实施例提供一种基于单gpu卡的图像并发处理系统,该系统包括:

任务管理器和gpu卡;

任务管理器用于执行如上所介绍的一种基于单gpu卡的图像并发处理的方法,gpu卡用于在接收到任务管理器提交的一个或多个任务线程后,反馈与一个或多个任务线程对应的响应信息至任务管理器;对任务管理器提交的一个或多个任务线程并行;以及,当确定一个或多个任务线程中部分任务线程无法执行时,向任务管理器发送通知消息。

本发明实施例具有如下优点:接收用户提交的任务后,将任务加入队列后配置与之对应的任务线程。然后根据gpu内存和每一个任务线程占用的内存,确定gpu可以同时处理的任务线程。通过上述方式,可以保证gpu的资源能够充分利用,避免资源浪费,使其空闲、空余占比大大减少,有效增加了系统的吞吐能力。此外,多个任务线程同时处理,可以具备更好的加速比,进一步提升处理效率。

为实现上述目的,本发明实施例提供一种计算机存储介质,该计算机存储介质包括:计算机程序指令。计算机程序指令用于如上的基于单gpu卡的图像并发处理系统中任务管理器和gpu卡分别执行与自身对应的方法步骤。

附图说明

图1为本发明实施例1提供的基于单gpu卡的图像并发处理方法流程示意图。

图2为本发明实施例2提供的基于单gpu卡的图像并发处理装置结构示意图;

图3为本发明实施例3提供的基于单gpu卡的图像并发处理系统结构示意图。

具体实施方式

以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效。

须知,本说明书所附图式所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。同时,本说明书中所引用的如“上”、“下”、“左”、右”、“中间”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。

实施例1

本发明实施例1提供了一种基于单gpu卡的图像并发处理方法流程示意图,具体如图1所示。该方法由任务管理器执行,该方法包括:

步骤110,接收用户提交的任务。

具体的,用户提交的任务是根据自身的处理需求和待处理的对象建立的。例如,用户需要对人脸图像进行识别,那么提交的任务可以包括检测人脸对象、提取人脸特征,以及判断活体检测等3个任务。处理需求实际可以理解为任务类型,待处理的对象则是任务数据。此外,用户还可以在提交任务时,定义前向依赖任务。比如,检测人脸对象就是提取人脸特征的前向依赖任务,提取人脸特征就是判断活体检测的前向依赖任务。而在后的任务只有在前向依赖任务完成后才能够被调度执行。

步骤120,将任务加入到任务队列,并为任务配置与之对应的任务线程。

具体的,将包含任务类型和任务数据的任务加入到任务队列中。任务的调度执行策略上可以使用先进先服务(firstinfirstserve,简称fifs)原则。在执行任务之前,需要为其配置与之对应的任务线程。而任务线程是在系统初始化时就创建出所有线程,也即是方便后续根据具体调度分配线程去执行相应任务。

步骤130,将配置好的任务线程按序加入到线程池中,线程池中包含至少两个任务线程。

具体的,由于用户可能不止一个,那么系统会将每个用户提交的任务都按照步骤110-步骤130的方式加入到线程池中,因此线程池中包含了至少两个任务线程。

步骤140,根据gpu卡的内存和线程池中每一个任务线程执行时占用的内存,合理的从线程池中选取一个或多个任务线程提交至gpu卡,以便gpu卡对一个或多个任务线程并行处理。

具体的,为了保证gpu卡能够将自己的资源充分利用,但是不超过其所能够处理的负荷状态,就需要事先确定gpu卡的内存和线程池中每一个任务线程执行时所占用的内存,gpu卡的内存可以通过系统自动查询获取。而每一个任务线程所占用的内存可以是通过用户自己提交任务后填写大约占用的内存。又或者,由系统自身查询获知。该方式主要是在gpu执行任务之后,可以获知某一个任务类型所需要占用的内存,然后记录。后续如果仍然有该类型任务时,可以就匹配到该类型任务所占用的内存。在实际应用过程中,一般以用户输入的为准,只有用户不清楚的情况下,可以采用后一种方式大约确定用户提交任务所占用的内存。具体的方式可根据实际情况设定,这里不做过多限定。具体的方式可根据实际情况设定,这里不做过多限定。

在获知后,可以计算出gpu卡可以同时处理多少个任务线程。那么,则将已经计算好数量的任务线程提交到gpu卡中。这里需要注意的是,选取任务线程时,优选的方案是依顺序选取。也即是上文所说的先进先服务原则。比如,显卡内存为100m,前3个任务线程所占用内存为98m,第二个任务线程为4m,那么,则可以优先处理前3个任务线程。则将前3个任务线程提交到gpu卡中。不过将任务线程提交至gpu卡中时需要串行提交。gpu等待任务管理器告知所有待提交的线程都提交完成后,再执行并行处理。当然,也可以在依序执行任务线程的前提下,适应体征任务线程执行顺序,尽量保证gpu卡的资源能够得到充分利用。例如,如果gpu卡内存有100m,而前3个任务线程占用内存总和为98m,第4个任务线程占用内存4m,第5个任务线程占用内存为2m。此时,就可以将前3个任务线程和第5个任务线程串行提交到gpu卡中,便于gpu卡能够同时处理这4个任务线程。

可选的,在执行步骤130之后,也即是已经将任务线程提交到gpu卡之后,gpu卡在接收到任务线程后,会自动为每一个任务线程分配一个序列号。通过这个序列号可以查询到该任务线程在gpu卡中的处理进程。而这个序列号将会通过gpu卡响应信息的形式反馈给用户。以便于用户可以根据该响应信息中的序列号在后续查询任务线程的进度。

因此,该方法还包括:接收gpu卡反馈的分别与一个或多个任务线程中每一个任务线程对应的响应信息,以便根据响应信息查询gpu卡处理一个或多个任务线程的进度。

进一步可选的,当根据响应信息确定gpu卡对一个或多个任务线程中的第一任务线程处理完成时,从gpu卡中读取处理结果,并删除与第一任务线程对应的任务,其中,第一任务线程为一个或多个任务线程中的任一个任务线程。

也即是,如果用户根据响应信息确定自身提交的任务已经在gpu卡中执行完成,会通过任务管理器从gpu卡中读取结果,在读取结果后,如果不再使用该任务,则可以通过任务管理器将其删除。不过,由于提交任务是异步的,所以任务管理器需要在使用任务结果数据之前,进行同步等待操作,等当前gpu卡执行的所有任务线程均完成后才可以去除结果数据。

可选的,在执行步骤140之前,该方法还可以包括:

分别确定一个或多个任务线程中第一任务线程是否存在前向依赖任务线程。如果存在前向依赖任务线程,则还需要判断前向依赖任务线程是否已经执行完毕,如果没有执行完毕,则需要将第一任务线程加入到线程池中任务线程队尾。然后从线程池中按序提取与gpu卡对应的任务线程,提交至gpu卡。而后续当按序又需要将第一任务线程提交至gpu卡之前,再次判断与之对应的前向依赖任务线程是否执行完毕。如果已经执行完毕,则将第一任务线程提交至gpu卡中。

而第一任务线程是否存在前向依赖任务线程,是在用户提交任务时就已经确定了的。已在上文中做了说明。并且,第一任务线程对应的任务会绑定前向依赖任务指针,如此,后续就可以在提交第一任务线程至gpu卡之前时,通过前向依赖任务指针查询到前向依赖任务,进而确定前向依赖任务是否执行完毕。如果完毕,则可以将第一任务线程提交至gpu卡。。

本发明实施例提供的一种基于单gpu卡的图像并发处理方法,接收用户提交的任务后,将任务加入队列后配置与之对应的任务线程。然后根据gpu内存和每一个任务线程占用的内存,确定gpu可以同时处理的任务线程。通过上述方式,可以保证gpu的资源能够充分利用,避免资源浪费,使其空闲、空余占比大大减少,有效增加了系统的吞吐能力。此外,多个任务线程同时处理,可以具备更好的加速比,进一步提升处理效率。

实施例2

与上述实施例相对应的,本发明实施例2提供了一种基于单gpu卡的图像并发处理装置结构示意图,具体如图2所示。该装置包括:接收单元201、配置单元202和处理单元203。

接收单元201,用于接收用户提交的任务,其中任务为用户根据待处理的对象和处理需求建立的任务;

配置单元202,用于将任务加入到任务队列,并为任务配置与之对应的任务线程;

处理单元203,用于将配置好的任务线程按序加入到线程池中,线程池中包含至少两个任务线程;

根据图形处理器gpu卡的内存和线程池中每一个任务线程执行时占用的内存,合理的从线程池中选取一个或多个任务线程提交至gpu卡,以便gpu卡对一个或多个任务线程并行处理。

可选的,用户提交的任务包括至少一个。

可选的,接收单元201还用于,接收gpu卡反馈的分别与一个或多个任务线程中每一个任务线程对应的响应信息,以便根据响应信息查询gpu卡处理一个或多个任务线程的进度;

处理单元203还用于,当根据响应信息确定gpu卡对一个或多个任务线程中的第一任务线程处理完成时,从gpu卡中读取处理结果,并删除与第一任务线程对应的任务,其中,第一任务线程为一个或多个任务线程中的任一个任务线程。

可选的,处理单元203还用于,当确定所述一个或多个任务线程中第一任务线程存在前向依赖任务线程时,检测所述前向依赖线程是否执行完毕;

若所述前向依赖线程未执行完毕时,将所述第一任务线程加入到所述线程池的尾部排队,直至确定所述前向依赖任务线程执行完毕后,再按序将所述第一任务线程提交至所述gpu卡;

并且,重新从所述线程池中按序再次选取一个任务线程提交至所述gpu卡,所述第一任务线程为所述一个或多个任务线程中任一个任务线程。

本发明实施例提供的一种基于单gpu卡的图像并发处理装置中各部件所执行的功能均已在实施例1中做了详细介绍,这里不再赘述。

本发明实施例提供的一种基于单gpu卡的图像并发处理装置,接收用户提交的任务后,将任务加入队列后配置与之对应的任务线程。然后根据gpu内存和每一个任务线程占用的内存,确定gpu可以同时处理的任务线程。通过上述方式,可以保证gpu的资源能够充分利用,避免资源浪费,使其空闲、空余占比大大减少,有效增加了系统的吞吐能力。此外,多个任务线程同时处理,可以具备更好的加速比,进一步提升处理效率。

实施例3

与上述实施例相对应的,本发明实施例还提供了一种基于单gpu卡的图像并发处理系统,具体如图3所示,该系统包括任务管理器301和gpu卡302。

任务管理器301用于执行如上述实施例1的方法步骤,gpu卡302用于在接收到任务管理器301提交的一个或多个任务线程后,反馈与一个或多个任务线程对应的响应信息至任务管理器301;对任务管理器301提交的一个或多个任务线程并行处理。此实施例中各部件所执行的方法步骤也已经在上述实施例1中做了详细介绍,这里不做过多赘述。

本发明实施例提供的一种基于单gpu卡的图像并发处理系统,接收用户提交的任务后,将任务加入队列后配置与之对应的任务线程。然后根据gpu内存和每一个任务线程占用的内存,确定gpu可以同时处理的任务线程。通过上述方式,可以保证gpu的资源能够充分利用,避免资源浪费,使其空闲、空余占比大大减少,有效增加了系统的吞吐能力。此外,多个任务线程同时处理,可以具备更好的加速比,进一步提升处理效率。

实施例4

本发明实施例4提供了一种计算机存储介质,该计算机存储介质包括计算机程序指令,该计算机程序指令用于被基于单gpu卡的图像并发处理装置执行如实施例1所介绍的一种基于单gpu卡的图像并发处理方法流程。

虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。

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