CN109388496A - 一种基于多gpu卡的图像并发处理方法、装置及系统 - Google Patents

一种基于多gpu卡的图像并发处理方法、装置及系统 Download PDF

Info

Publication number
CN109388496A
CN109388496A CN201811296754.0A CN201811296754A CN109388496A CN 109388496 A CN109388496 A CN 109388496A CN 201811296754 A CN201811296754 A CN 201811296754A CN 109388496 A CN109388496 A CN 109388496A
Authority
CN
China
Prior art keywords
thread
gpu
mission
task
gpu card
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201811296754.0A
Other languages
English (en)
Inventor
安玉山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Shizhen Intelligent Technology Co Ltd
Original Assignee
Beijing Shizhen Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Shizhen Intelligent Technology Co Ltd filed Critical Beijing Shizhen Intelligent Technology Co Ltd
Priority to CN201811296754.0A priority Critical patent/CN109388496A/zh
Publication of CN109388496A publication Critical patent/CN109388496A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明实施例公开了一种基于多GPU卡的图像并发处理方法、装置及系统,该方法包括:接收用户提交的任务;将任务加入到任务队列,并为任务配置与之对应的任务线程,设定任务线程编号;将配置好的任务线程按序加入到线程池中,线程池中包含至少两个任务线程;根据任务线程的编号,从多个图形处理器GPU卡中匹配执行任务线程的GPU卡;根据第一GPU卡的内存和与之匹配的每一个任务线程执行时占用的内存,合理的从线程池中选取一个或多个与第一GPU卡匹配的任务线程提交至第一GPU卡。通过上述方式,可以保证GPU的资源能够充分利用,避免资源浪费,有效增加了系统的吞吐能力。此外,多个任务线程同时处理,服务器的计算能力得到进一步的提升。

Description

一种基于多GPU卡的图像并发处理方法、装置及系统
技术领域
本发明涉及图像处理技术领域,具体涉及一种基于多GPU卡的图像并发处理方法、装置及系统。
背景技术
深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。
目前,深度学习应用最主要的计算方式是前向传播。在现如今大量应用场景需求下,对于深度学习计算性能的要求越来越高。而其中最常用的提高计算性能的方法是使用图形处理器(Graphics Processing Unit,简称GPU)加速计算,以达到更高的系统吞吐量。经典的GPU加速计算注重于发挥GPU加速硬件的性能潜力,将深度学习前向传播过程中计算密集部分使用GPU进行计算,并进行深入优化来达到更高的加速效果。
而多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卡对一个或多个任务线程并行处理,其中,一个或多个任务线程与第一GPU卡相匹配,第一GPU卡为多个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所示。该方法由任务管理器执行,在本实施例中,任务管理器可以是CPU,该方法包括:
步骤110,接收用户提交的任务。
具体的,用户提交的任务是根据自身的处理需求和待处理的对象建立的。例如,用户需要对人脸图像进行识别,那么提交的任务可以包括检测人脸对象、提取人脸特征,以及判断活体检测等3个任务。处理需求实际可以理解为任务类型,待处理的对象则是任务数据。此外,用户还可以在提交任务时,定义前向依赖任务。比如,检测人脸对象就是提取人脸特征的前向依赖任务,提取人脸特征就是判断活体检测的前向依赖任务。而在后的任务只有在前向依赖任务完成后才能够被调度执行。
步骤120,将任务加入到任务队列,并为任务配置与之对应的任务线程,设定任务线程编号。
具体的,将包含任务类型和任务数据的任务加入到任务队列中。任务的调度执行策略上可以使用先进先服务(First In First Serve,简称FIFS)原则。在执行任务之前,需要为其配置与之对应的任务线程。而任务线程是在系统初始化时就创建出所有线程,也即是方便后续根据具体调度分配线程去执行相应任务,且每一个任务线程设定任务线程编号,该步骤将会下文中详细说明。
步骤130,将配置好的任务线程按序加入到线程池中,线程池中包含至少两个任务线程。
具体的,由于用户可能不止一个,那么系统会将每个用户提交的任务都按照步骤110-步骤130的方式加入到线程池中,因此线程池中包含了至少两个任务线程。
步骤140,根据任务线程的编号,从多个图形处理器GPU卡中匹配执行任务线程的GPU卡。
具体的,因为GPU卡包含多个,而任务线程同样包含多个。那么,每一个任务线程具体应该分配给哪个GPU卡则需要根据如下规则确定。
首先,为多个GPU卡中每一个GPU卡设定ID号,根据GPU卡的数量、每一个GPU卡设定的ID号以及任务线程的编号,从多个GPU卡中匹配执行任务线程的GPU卡。
其计算公式可以如下式表示:
IDGPU=IDthreadmodNgpu (公式1)
其中,IDGPU为GPU卡的ID号,IDthread为任务线程的编号,Ngpu为GPU卡的数量。
例如,当前线任务线程编号为13,而GPU卡数量为3个,ID号分别为0,1和2。根据公式1可以计算出,线程编号为13的任务线程将会分配给ID号为1的GPU。如果当前任务线程编号为15,那么该任务线程将被分配给ID号为0的GPU卡。
步骤150,根据第一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个任务线程。而这里说的依序执行任务线程,是说在为每一个GPU卡分配线程之后,即将线程池中的所有任务线程均已匹配好GPU卡之后,每一个GPU卡只执行与自己匹配的任务线程。
可选的,在执行步骤140之前,该方法还包括:分别确定一个或多个任务线程中第一任务线程是否存在前向依赖任务线程。如果存在前向依赖任务线程,则还需要判断前向依赖任务线程是否已经执行完毕,如果没有执行完毕,则需要将第一任务线程加入到线程池中任务线程队尾。然后从线程池中按序提取与第一GPU卡对应的任务线程,提交至第一GPU卡。而后续当按序又需要将第一任务线程提交至第一GPU卡之前,再次判断与之对应的前向依赖任务线程是否执行完毕。如果已经执行完毕,则将第一任务线程提交至第一GPU卡中。
而第一任务线程是否存在前向依赖任务线程,是在用户提交任务时就已经确定了的。已在上文中做了说明。并且,第一任务线程对应的任务会绑定前向依赖任务指针,如此,后续就可以在提交第一任务线程至第一GPU卡之前时,通过前向依赖任务指针查询到前向依赖任务,进而确定前向依赖任务是否执行完毕。如果完毕,则可以将第一任务线程提交至第一GPU卡。
可选的,在执行步骤140之后,也即是已经将任务线程提交到第一GPU卡之后,第一GPU卡在接收到任务管理器为自身分配的任务线程后,会自动为每一个任务线程分配一个序列号。通过这个序列号可以查询到该任务线程在第一GPU卡中的处理进程。而这个序列号将会通过第一GPU卡响应信息的形式反馈给用户。以便于用户可以根据该响应信息中的序列号在后续查询任务线程的进度,这里的第一GPU卡为多个GPU卡中的任一个GPU卡。
因此,该方法还包括:接收第一GPU卡反馈的分别与一个或多个任务线程中每一个任务线程对应的响应信息,以便根据响应信息查询第一GPU卡处理一个或多个任务线程的进度。
进一步可选的,当根据响应信息确定第一GPU卡对一个或多个任务线程中的第一任务线程处理完成时,从第一GPU卡中读取处理结果,并删除与第一任务线程对应的任务,其中,第一任务线程为一个或多个任务线程中的任一个任务线程。
也即是,如果用户根据响应信息确定自身提交的任务已经在第一GPU卡中执行完成,会通过任务管理器从第一GPU卡中读取结果,在读取结果后,如果不再使用该任务,则可以通过任务管理器将其删除。不过,由于提交任务是异步的,所以任务管理器需要在使用任务结果数据之前,进行同步等待操作,等当前第一GPU卡执行的所有任务线程均完成后才可以去除结果数据。
本发明实施例提供的一种基于多GPU卡的图像并发处理方法,接收用户提交的任务后,将任务加入队列后配置与之对应的任务线程,每一个任务线程设定编号。然后为每一个任务线程匹配执行该线程的GPU卡。后续可以根据每一个GPU卡的内存和已经为该GPU卡分配好的线程中每一个线程占用的内存,确定该GPU卡可以并行处理的线程。然后提交任务,便于GPU卡进行处理。通过上述方式,可以保证每一个GPU卡的资源都能够得到充分利用,避免资源浪费,使其空闲、空余占比大大减少,有效增加了系统的吞吐能力。此外,多个任务线程同时处理,多个GPU卡同时工作,可以具备更好的加速比,进一步提升处理效率,也即是服务器的计算能力得到进一步的提升。
实施例2
与上述实施例相对应的,本发明实施例2提供了一种基于多GPU卡的图像并发处理装置结构示意图,具体如图2所示。该装置包括:接收单元201、配置单元202和处理单元203。
接收单元201,用于接收用户提交的任务,其中任务为用户根据待处理的对象和处理需求建立的任务;
配置单元202,用于将任务加入到任务队列,并为任务配置与之对应的任务线程,并确定任务线程的设定任务线程编号;
处理单元203,用于将配置好的任务线程按序加入到线程池中,线程池中包含至少两个任务线程;
根据任务线程的编号,从多个图形处理器GPU卡中匹配执行任务线程的GPU卡;
根据第一GPU卡的内存和与之匹配的每一个任务线程执行时占用的内存,合理的从线程池中选取一个或多个任务线程提交至第一GPU卡,以便第一GPU卡对一个或多个任务线程并行处理,其中,一个或多个任务线程与第一GPU卡相匹配,第一GPU卡为多个GPU卡中的任一个GPU卡。
可选的,处理单元具体用于,为多个GPU卡中每一个GPU卡设定ID号;
根据GPU卡的数量、每一个GPU卡设定的ID号以及任务线程的编号,从多个GPU卡中匹配执行任务线程的GPU卡。
可选的,处理单元根据GPU卡的数量、每一个GPU卡设定的ID号以及任务线程的编号,从多个GPU卡中匹配执行任务线程的GPU卡,由下式表示:
IDGPU=IDthreadmodNgpu (公式2)
其中,IDGPU为GPU卡的ID号,IDthread为任务线程的编号,Ngpu为GPU卡的数量。
可选的,用户提交的任务包括至少一个。
可选的,接收单元201还用于,接收第一GPU卡反馈的分别与一个或多个任务线程中每一个任务线程对应的响应信息,以便根据响应信息查询第一GPU卡处理一个或多个任务线程的进度。
可选的,处理单元203还用于,当根据响应信息确定第一GPU卡对一个或多个任务线程中的第一任务线程处理完成时,从第一GPU卡中读取处理结果,并删除与第一任务线程对应的任务,其中,第一任务线程为一个或多个任务线程中的任一个任务线程。
可选的,接收单元201还用于,接收GPU卡发送的部分任务线程无法执行的通知消息。
处理单元203还用于,当确定一个或多个任务线程中第一任务线程存在前向依赖任务线程时,检测前向依赖线程是否执行完毕;
若前向依赖线程未执行完毕时,将第一任务线程加入到线程池的尾部排队,直至确定前向依赖任务线程执行完毕后,再按序将第一任务线程提交至第一GPU卡;
并且,重新从线程池中按序再次选取一个与第一GPU卡匹配的任务线程提交至第一GPU卡,第一任务线程为一个或多个任务线程中任一个任务线程。
本发明实施例提供的一种基于多GPU卡的图像并发处理装置中各部件所执行的功能均已在实施例1中做了详细介绍,这里不再赘述。
本发明实施例提供的一种基于多GPU卡的图像并发处理装置,接收用户提交的任务后,将任务加入队列后配置与之对应的任务线程,每一个任务线程设定编号。然后为每一个任务线程匹配执行该线程的GPU卡。后续可以根据每一个GPU卡的内存和已经为该GPU卡分配好的线程中每一个线程占用的内存,确定该GPU卡可以并行处理的线程。然后提交任务,便于GPU卡进行处理。通过上述方式,可以保证每一个GPU卡的资源都能够得到充分利用,避免资源浪费,使其空闲、空余占比大大减少,有效增加了系统的吞吐能力。此外,多个任务线程同时处理,多个GPU卡同时工作,可以具备更好的加速比,进一步提升处理效率,也即是服务器的计算能力得到进一步的提升。
实施例3
与上述实施例相对应的,本发明实施例还提供了一种基于多GPU卡的图像并发处理系统,具体如图3所示,该系统包括任务管理器301和多个GPU卡30i,i为大于或者等于2的正整数,例如302、303、304等。
任务管理器301用于执行如上述实施例1的方法步骤,多个GPU卡中每一个GPU卡30i用于在接收到任务管理器301提交的一个或多个任务线程后,反馈与一个或多个任务线程对应的响应信息至任务管理器301;对任务管理器301提交的一个或多个任务线程并行处理。
此实施例中各部件所执行的方法步骤也已经在上述实施例1中做了详细介绍,这里不做过多赘述。
本发明实施例提供的一种基于多GPU卡的图像并发处理系统,接收用户提交的任务后,将任务加入队列后配置与之对应的任务线程,每一个任务线程设定编号。然后为每一个任务线程匹配执行该线程的GPU卡。后续可以根据每一个GPU卡的内存和已经为该GPU卡分配好的线程中每一个线程占用的内存,确定该GPU卡可以并行处理的线程。然后提交任务,便于GPU卡进行处理。通过上述方式,可以保证每一个GPU卡的资源都能够得到充分利用,避免资源浪费,使其空闲、空余占比大大减少,有效增加了系统的吞吐能力。此外,多个任务线程同时处理,多个GPU卡同时工作,可以具备更好的加速比,进一步提升处理效率,也即是服务器的计算能力得到进一步的提升。
实施例4
本发明实施例4提供了一种计算机存储介质,该计算机存储介质包括计算机程序指令,该计算机程序指令用于被基于多GPU卡的图像并发处理装置执行如实施例1所介绍的一种基于多GPU卡的图像并发处理方法流程。
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。

Claims (10)

1.一种基于多GPU卡的图像并发处理方法,其特征在于,所述方法包括:
接收用户提交的任务,其中所述任务为用户根据待处理的对象和处理需求建立的任务;
将所述任务加入到任务队列,并为所述任务配置与之对应的任务线程,设定任务线程编号;
将配置好的任务线程按序加入到线程池中,所述线程池中包含至少两个任务线程;
根据所述任务线程的编号,从多个图形处理器GPU卡中匹配执行所述任务线程的GPU卡;
根据第一GPU卡的内存和与之匹配的每一个任务线程执行时占用的内存,合理的从所述线程池中选取一个或多个任务线程提交至所述第一GPU卡,以便所述第一GPU卡对一个或多个任务线程并行处理,其中,所述一个或多个任务线程与所述第一GPU卡相匹配,所述第一GPU卡为所述多个GPU卡中的任一个GPU卡。
2.根据权利要求1所述的方法,其特征在于,所述根据所述任务线程的编号,从多个图形处理器GPU卡中匹配执行所述任务线程的GPU卡,具体包括:
为所述多个GPU卡中每一个GPU卡设定ID号;
根据所述多个GPU卡的数量、每一个GPU卡设定的ID号以及所述任务线程的编号,从所述多个GPU卡中匹配执行所述任务线程的GPU卡。
3.根据权利要求2所述的方法,其特征在于,所述根据所述GPU卡的数量、每一个GPU卡设定的ID号以及所述任务线程的编号,从所述多个GPU卡中匹配执行所述任务线程的GPU卡,由下式表示:
IDGPU=IDthreadmodNgpu
其中,IDGPU为GPU卡的ID号,IDthread为任务线程的编号,Ngpu为GPU卡的数量。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述根据第一GPU卡的内存和与之匹配的每一个任务线程执行时占用的内存,合理的从所述线程池中选取一个或多个任务线程提交至所述第一GPU卡之前,所述方法还包括:当确定所述一个或多个任务线程中第一任务线程存在前向依赖任务线程时,检测所述前向依赖线程是否执行完毕;
若所述前向依赖线程未执行完毕时,将所述第一任务线程加入到所述线程池的尾部排队,直至确定所述前向依赖任务线程执行完毕后,再按序将所述第一任务线程提交至所述第一GPU卡;
并且,重新从所述线程池中按序再次选取一个与所述第一GPU卡匹配的任务线程提交至所述第一GPU卡,所述第一任务线程为所述一个或多个任务线程中任一个任务线程。
5.根据权利要求1所述的方法,其特征在于,所述根据第一GPU卡的内存和与之匹配的每一个任务线程执行时占用的内存,合理的从所述线程池中选取一个或多个任务线程提交至所述第一GPU卡之后,所述方法还包括:
接收所述第一GPU卡反馈的分别与所述一个或多个任务线程中每一个任务线程对应的响应信息,以便根据所述响应信息查询所述第一GPU卡处理所述一个或多个任务线程的进度。
6.根据权利要求5所述的方法,其特征在于,当根据所述响应信息确定所述第一GPU卡对所述一个或多个任务线程中的第一任务线程处理完成时,从所述第一GPU卡中读取处理结果,并删除与所述第一任务线程对应的任务,其中,所述第一任务线程为所述一个或多个任务线程中的任一个任务线程。
7.一种基于多GPU卡的图像并发处理装置,其特征在于,所述装置包括:
接收单元,用于接收用户提交的任务,其中所述任务为用户根据待处理的对象和处理需求建立的任务;
配置单元,用于将所述任务加入到任务队列,并为所述任务配置与之对应的任务线程,设定任务线程编号;
处理单元,用于将配置好的任务线程按序加入到线程池中,所述线程池中包含至少两个任务线程;
根据所述任务线程的编号,从多个图形处理器GPU卡中匹配执行所述任务线程的GPU卡;
根据第一GPU卡的内存和与之匹配的每一个任务线程执行时占用的内存,合理的从所述线程池中选取一个或多个任务线程提交至所述第一GPU卡,以便所述第一GPU卡对一个或多个任务线程并行处理,其中,所述一个或多个任务线程与所述第一GPU卡相匹配,所述第一GPU卡为所述多个GPU卡中的任一个GPU卡。
8.根据权利要求7所述的装置,其特征在于,所述处理单元具体用于:
为所述多个GPU卡中每一个GPU卡设定ID号;
根据所述GPU卡的数量、每一个GPU卡设定的ID号以及所述任务线程的编号,从所述多个GPU卡中匹配执行所述任务线程的GPU卡。
9.一种基于多GPU卡的图像并发处理系统,其特征在于,所述系统包括:任务管理器和多个图形处理器GPU卡;
所述任务管理器用于执行如权利要求1-6任一项所述的方法,所述多个GPU卡中每一个GPU卡用于在接收到所述任务管理器提交的一个或多个任务线程后,反馈与所述一个或多个任务线程对应的响应信息至所述任务管理器;对所述任务管理器提交的一个或多个任务线程并行处理。
10.一种计算机存储介质,其特征在于,所述计算机存储介质包括计算机程序指令,所述计算机程序指令用于如权利要求9所述的基于多GPU卡的图像并发处理系统中任务管理器和每一个GPU卡分别执行与自身对应的方法步骤。
CN201811296754.0A 2018-11-01 2018-11-01 一种基于多gpu卡的图像并发处理方法、装置及系统 Pending CN109388496A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811296754.0A CN109388496A (zh) 2018-11-01 2018-11-01 一种基于多gpu卡的图像并发处理方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811296754.0A CN109388496A (zh) 2018-11-01 2018-11-01 一种基于多gpu卡的图像并发处理方法、装置及系统

Publications (1)

Publication Number Publication Date
CN109388496A true CN109388496A (zh) 2019-02-26

Family

ID=65428227

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811296754.0A Pending CN109388496A (zh) 2018-11-01 2018-11-01 一种基于多gpu卡的图像并发处理方法、装置及系统

Country Status (1)

Country Link
CN (1) CN109388496A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021072860A1 (zh) * 2019-10-15 2021-04-22 平安科技(深圳)有限公司 视频解码方法、装置、设备及计算机可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102650950A (zh) * 2012-04-10 2012-08-29 南京航空航天大学 一种支持多gpu虚拟化的平台架构及其工作方法
CN104035751A (zh) * 2014-06-20 2014-09-10 深圳市腾讯计算机系统有限公司 基于多图形处理器的数据并行处理方法及装置
CN104036451A (zh) * 2014-06-20 2014-09-10 深圳市腾讯计算机系统有限公司 基于多图形处理器的模型并行处理方法及装置
CN104182210A (zh) * 2014-09-02 2014-12-03 重庆大学 一种基于cuda的多gpu数据并行比对方法
CN106228628A (zh) * 2016-07-15 2016-12-14 腾讯科技(深圳)有限公司 基于人脸识别的签到系统、方法和装置
CN106874113A (zh) * 2017-01-19 2017-06-20 国电南瑞科技股份有限公司 一种cpu+多gpu异构模式静态安全分析计算方法
CN106919449A (zh) * 2017-03-21 2017-07-04 联想(北京)有限公司 一种计算任务的调度控制方法及电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102650950A (zh) * 2012-04-10 2012-08-29 南京航空航天大学 一种支持多gpu虚拟化的平台架构及其工作方法
CN104035751A (zh) * 2014-06-20 2014-09-10 深圳市腾讯计算机系统有限公司 基于多图形处理器的数据并行处理方法及装置
CN104036451A (zh) * 2014-06-20 2014-09-10 深圳市腾讯计算机系统有限公司 基于多图形处理器的模型并行处理方法及装置
CN104182210A (zh) * 2014-09-02 2014-12-03 重庆大学 一种基于cuda的多gpu数据并行比对方法
CN106228628A (zh) * 2016-07-15 2016-12-14 腾讯科技(深圳)有限公司 基于人脸识别的签到系统、方法和装置
CN106874113A (zh) * 2017-01-19 2017-06-20 国电南瑞科技股份有限公司 一种cpu+多gpu异构模式静态安全分析计算方法
CN106919449A (zh) * 2017-03-21 2017-07-04 联想(北京)有限公司 一种计算任务的调度控制方法及电子设备

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
李涛 等: "基于线程池的GPU任务并行计算模式研究", 《计算机学报》 *
苗玉杰: "软件雷达信号处理的多GPU并行技术分析", 《中国科技投资》 *
陆娟娟 等: "基于GPU并行的静态安全分析设计与应用", 《2016智能电网发展研讨会论文集》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021072860A1 (zh) * 2019-10-15 2021-04-22 平安科技(深圳)有限公司 视频解码方法、装置、设备及计算机可读存储介质

Similar Documents

Publication Publication Date Title
Liu et al. Plda+ parallel latent dirichlet allocation with data placement and pipeline processing
CN105579959B (zh) 硬件加速器虚拟化
US8898172B2 (en) Parallel generation of topics from documents
CN107590002A (zh) 任务分配方法、装置、存储介质、设备及分布式任务系统
CN107657530A (zh) 一种业务流程的处理方法及系统
CN112416585B (zh) 面向深度学习的gpu资源管理与智能化调度方法
CN109343941A (zh) 任务处理方法、装置、电子设备及计算机可读存储介质
CN107370667A (zh) 多线程并行处理方法和装置、可读介质和存储控制器
CN115237581B (zh) 一种面向异构算力的多策略智能调度方法和装置
CN114610474B (zh) 一种异构超算环境下多策略的作业调度方法及系统
CN108228349A (zh) 用于处理任务的方法、系统和存储介质
CN109240825A (zh) 弹性任务调度方法、装置、设备及计算机可读存储介质
TWI747092B (zh) 資源調度方法、設備、系統及中心伺服器
CN103336672B (zh) 数据读取方法、装置及计算设备
CN111506434B (zh) 一种任务处理方法、装置及计算机可读存储介质
CN113946431B (zh) 一种资源调度方法、系统、介质及计算设备
CN109840149B (zh) 任务调度方法、装置、设备及存储介质
CN106815254A (zh) 一种数据处理方法和装置
CN109408229A (zh) 一种调度方法及装置
CN112150023A (zh) 任务分配方法、装置及存储介质
CN109343972A (zh) 任务处理方法及终端设备
CN110806928A (zh) 一种作业提交方法及系统
CN110780991B (zh) 一种基于优先级的深度学习任务调度方法及装置
CN115495222A (zh) 基于深度学习和大数据的云计算系统
CN111193802A (zh) 基于用户组的资源动态分配方法、系统、终端及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190226