掌桥专利:专业的专利平台
掌桥专利
首页

一种GPU和CPU负载调度方法、装置、设备和介质

文献发布时间:2023-06-19 11:16:08


一种GPU和CPU负载调度方法、装置、设备和介质

技术领域

本申请涉及处理器技术领域,尤其涉及一种GPU和CPU负载调度方法、装置、设备和介质。

背景技术

随着CPU多核架构处理器和GPU众核架构处理器的普及,这种GPU与CPU协作的方式在AI算法中得到了应用。在大型应用场景中,硬件资源的合理利用至关重要,因此,对GPU和CPU的混合负载的均衡化调度提出了更高的要求。

现有技术没有考虑不同时间段下不同场景的目标数量波动情况,在目标数量较多的情况下,每类目标的数量可能极不平衡,例如,某人脸识别和行人识别两者之间待处理的目标数量非常大,在进行目标特征提取时,会造成其中一张显卡满负载运行,而另外一张则几乎处于空闲状态,使得GPU之间的资源极度不平衡。同理,对于CPU的使用,不同类型目标之间相互独立,需要分别进行各自的特征比对任务,使得CPU的调度极不均衡。

发明内容

本申请提供了一种GPU和CPU负载调度方法、装置、设备和介质,用于解决现有技术中GPU和CPU负载之间不均衡的技术问题。

有鉴于此,本申请第一方面提供了一种GPU和CPU负载调度方法,包括:

获取当前待处理队列中的目标数量、目标特征数量和当前资源空闲率;

当对GPU和CPU进行独立调度时,在满足各类目标和目标特征的截止期以及当前资源空闲率的条件下,采用最大吞吐量策略选择若干目标分派到GPU进行特征提取,或采用最大吞吐量策略选择若干目标特征分派到CPU进行特征比对;

当对GPU和CPU进行协同调度时,根据GPU和CPU的数据处理速度,选择GPU和CPU中的一个采用最大吞吐量策略进行目标或目标特征的数量分派,另一个在满足各类型目标的总截止期和当前资源空闲率的条件下采用局部最大吞吐量策略进行目标特征或目标的数量分派。

可选的,当对GPU和CPU进行独立调度时,在满足各类目标和目标特征的截止期以及当前资源空闲率的条件下,采用最大吞吐量策略选择若干目标分派到GPU进行特征提取,或采用最大吞吐量策略选择若干目标特征分派到CPU进行特征比对,包括:

当对GPU和CPU进行独立调度时,在满足各类目标和目标特征的截止期以及当前资源空闲率的条件下,通过GPU查询表查找所有类型目标的最大吞吐量,将该最大吞吐量对应批次大小的目标分派到GPU进行特征提取,或,通过CPU查询表查找所有类型目标特征的最大吞吐量,将该最大吞吐量对应批次大小的目标特征分派到CPU进行特征比对。

可选的,当对GPU和CPU进行协同调度时,根据GPU和CPU的数据处理速度,选择GPU和CPU中的一个采用最大吞吐量策略进行目标或目标特征的数量分派,另一个在满足各类型目标的总截止期和当前资源空闲率的条件下采用局部最大吞吐量策略进行目标特征或目标的数量分派,包括:

当对GPU和CPU进行协同调度时,获取GPU和CPU的数据处理速度;

当CPU的数据处理速度比GPU的数据处理速度快时,在满足各类型目标的总截止期和当前资源空闲率的条件下,通过GPU查询表查找所有类型目标的最大吞吐量,将该最大吞吐量对应批次大小b

通过CPU查询表查找批次大小小于或等于b

当CPU的数据处理速度比GPU的数据处理速度慢时,在满足各类型目标的总截止期和当前资源空闲率的条件下,通过CPU查询表查找所有类型目标特征的最大吞吐量对应的批次大小b

可选的,GPU查询表和CPU查询表的配置过程为:

在各类目标进行特征提取任务时,测量各类目标在GPU上的吞吐量、截止期、资源占用率与批次大小的关系,生成GPU查询表;

在各类目标特征进行特征比对任务时,测量各类目标特征在CPU上的吞吐量、截止期、资源占用率与批次大小的关系,生成CPU查询表。

本申请第二方面提供了一种GPU和CPU负载调度装置,包括:

获取单元,用于获取当前待处理队列中的目标数量、目标特征数量和当前资源空闲率;

第一任务分派单元,用于当对GPU和CPU进行独立调度时,在满足各类目标和目标特征的截止期以及当前资源空闲率的条件下,采用最大吞吐量策略选择若干目标分派到GPU进行特征提取,或采用最大吞吐量策略选择若干目标特征分派到CPU进行特征比对;

第二任务分派单元,用于当对GPU和CPU进行协同调度时,根据GPU和CPU的数据处理速度,选择GPU和CPU中的一个采用最大吞吐量策略进行目标或目标特征的数量分派,另一个在满足各类型目标的总截止期和当前资源空闲率的条件下采用局部最大吞吐量策略进行目标特征或目标的数量分派。

可选的,第一任务分派单元具体用于:

当对GPU和CPU进行独立调度时,在满足各类目标和目标特征的截止期以及当前资源空闲率的条件下,通过GPU查询表查找所有类型目标的最大吞吐量,将该最大吞吐量对应批次大小的目标分派到GPU进行特征提取,或,通过CPU查询表查找所有类型目标特征的最大吞吐量,将该最大吞吐量对应批次大小的目标特征分派到CPU进行特征比对。

可选的,第二任务分派单元具体用于:

当对GPU和CPU进行协同调度时,获取GPU和CPU的数据处理速度;

当CPU的数据处理速度比GPU的数据处理速度快时,在满足各类型目标的总截止期和当前资源空闲率的条件下,通过GPU查询表查找所有类型目标的最大吞吐量,将该最大吞吐量对应批次大小b

通过CPU查询表查找批次大小小于或等于b

当CPU的数据处理速度比GPU的数据处理速度慢时,在满足各类型目标的总截止期和当前资源空闲率的条件下,通过CPU查询表查找所有类型目标特征的最大吞吐量对应的批次大小b

可选的,GPU查询表和CPU查询表的配置过程为:

在各类目标进行特征提取任务时,测量各类目标在GPU上的吞吐量、截止期、资源占用率与批次大小的关系,生成GPU查询表;

在各类目标特征进行特征比对任务时,测量各类目标特征在CPU上的吞吐量、截止期、资源占用率与批次大小的关系,生成CPU查询表。

本申请第三方面提供了一种GPU和CPU负载调度设备,设备包括处理器以及存储器;

存储器用于存储程序代码,并将程序代码传输给处理器;

处理器用于根据程序代码中的指令执行第一方面任一种所述的GPU和CPU负载调度方法。

本申请第四方面提供了一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行第一方面任一种所述的GPU和CPU负载调度方法。

从以上技术方案可以看出,本申请具有以下优点:

本申请提供了一种GPU和CPU负载调度方法,包括:获取当前待处理队列中的目标数量、目标特征数量和当前资源空闲率;当对GPU和CPU进行独立调度时,在满足各类目标和目标特征的截止期以及当前资源空闲率的条件下,采用最大吞吐量策略选择若干目标分派到GPU进行特征提取,或采用最大吞吐量策略选择若干目标特征分派到CPU进行特征比对;当对GPU和CPU进行协同调度时,根据GPU和CPU的数据处理速度,选择GPU和CPU中的一个采用最大吞吐量策略进行目标或目标特征的数量分派,另一个在满足各类型目标的总截止期和当前资源空闲率的条件下采用局部最大吞吐量策略进行目标特征或目标的数量分派。

本申请中,在对GPU和CPU进行独立调度时,在满足各类型目标或各类型目标特征的截止期和当前资源空闲率的条件下,采用最大吞吐量策略对GPU或CPU进行任务分派;并且针对不同数量的目标和目标特征,动态调度所有GPU和CPU的资源,使得GPU和CPU进行协同合作,在保证任务的总截止期和当前资源空闲率的前提下,使得整个任务的吞吐量最大化,不会积压目标特征提取和目标特征比对任务,使得GPU和CPU的处理是均衡的,解决了现有技术中GPU和CPU负载之间不均衡的技术问题。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本申请实施例提供的一种GPU和CPU负载调度方法的一个流程示意图;

图2为本申请实施例提供的一种GPU和CPU上批次大小与截止期的函数关系图;

图3为本申请实施例提供的一种GPU和CPU上批次大小与吞吐量的函数关系图;

图4为本申请实施例提供的一种GPU上批次大小与GPU使用率的函数关系图;

图5为本申请实施例提供的一种GPU和CPU负载调度装置的一个结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在实际应用场景中,通常部署了多种目标类型的算法任务,识别算法与其他算法不同的一点在于,待处理的目标数量是不固定的,这使得不同类型的算法任务之间对GPU和CPU的资源使用情况不一致。本申请实施例将整个识别算法的流程分解为特征提取和特征比对两个部分,实现单个目标类型算法与固定GPU、固定CPU的解耦,将所有类型的目标聚合起来,通过动态分派给多个GPU,批量的进行特征提取,再次聚合当前的目标特征,通过动态分派给多个CPU,批量的进行特征比对。

为了便于理解,请参阅图1,本申请提供的一种GPU和CPU负载调度方法的一个实施例,包括:

步骤101、获取当前待处理队列中的目标数量、目标特征数量和当前资源空闲率。

读取当前待处理队列中的目标数量以及目标特征数量,还可以读取目标类型数,以及获取当前资源空闲率,即当前剩余的硬件资源。

步骤102、当对GPU和CPU进行独立调度时,在满足各类目标和目标特征的截止期以及当前资源空闲率的条件下,采用最大吞吐量策略选择若干目标分派到GPU进行特征提取,或采用最大吞吐量策略选择若干目标特征分派到CPU进行特征比对。

当对GPU和CPU进行独立调度时,以满足吞吐量最大的原则进行任务分派,GPU和CPU的任务分派策略是一样的。当对GPU和CPU进行独立调度时,在满足各类目标和目标特征的截止期以及当前资源空闲率的条件下,通过GPU查询表查找所有类型目标的最大吞吐量,将该最大吞吐量对应批次大小的目标分派到GPU进行特征提取,或,通过CPU查询表查找所有类型目标特征的最大吞吐量,将该最大吞吐量对应批次大小的目标特征分派到CPU进行特征比对。具体过程为:

S1、每次选择时可以获取当前待处理队列的目标类型数量N、每类目标/每类目标特征的数量X

S2、根据查询表进行目标或目标特征选择,添加每类目标或目标特征批次

根据查询表(包括GPU查询表和CPU查询表)进行目标或目标特征选择,添加每类目标或目标特征批次

S3、根据查询表剔除掉资源占用率大于当前资源空闲率的情况,即移除查询表中不满足当前资源空闲率要求的待选情况。

S4、剔除不满足总延迟要求的待选情况,综合GPU和CPU查询表,若T

S5、找出滤除后的查询表的每类目标/目标特征的最大吞吐量所对应的批次b

S6、选择所有目标类型中吞吐量最大的目标/目标特征分派到GPU/CPU,并记录对应的截止期和批次大小。

S7、重复步骤S1至步骤S6,直至查询表中任一待选情况的资源占用率大于当前资源空闲率,则当前的GPU/CPU的任务分派完毕。

S8、从剩余GPU/CPU中选择一个新的GPU/CPU重复步骤S1至步骤S7,直至将当前待处理队列中的所有目标/目标特征分派完毕。

进一步,GPU查询表和CPU查询表的配置过程为:

在各类目标进行特征提取任务时,测量各类目标在GPU上的吞吐量、截止期、资源占用率与批次大小的关系,生成GPU查询表;在各类目标特征进行特征比对任务时,测量各类目标特征在CPU上的吞吐量、截止期、资源占用率与批次大小的关系,生成CPU查询表。

考虑一种最复杂的情形,当部署了多种类型的识别任务时,假设有N种类型的待识别目标。每个类别的特征提取网络是不一样的,因此每类目标在GPU上的吞吐量、截止期、资源占用率与批次大小的函数关系是不同的。因此需要提前测量每类目标在GPU和CPU的关联。具体地,在每类目标特征提取任务,在GPU上测量吞吐量、截止期、GPU资源占用率与批次大小的函数关系;同样的,对于每类目标特征比对任务,在CPU上测量吞吐量、截止期、CPU资源占用率与批次大小的函数关系。两者可参照表1的格式建立查询表。

表1 GPU查询表

其中,B为每类目标在GPU资源占用率为100%时的批次大小,tps为吞吐量,t为截止期,ror为资源占用率。

本申请实施例在单张显卡和单个CPU上对人脸类算法进行实测,其中CPU型号为Intel(R)Xeon(R)Silver4116 CPU@2.10GHz,GPU型号为TeslaV100PCIe 32GB。将0~206之间不同批次的目标分别送至GPU上进行特征提取,然后采用faiss库进行特征的检索,通过测量发现使用不同大小的批次进行检索时CPU的使用率都为100%左右。因此仅测量0~500之间的批次在CPU上进行实测,如图2、图3和图4所示,图2中的上半部分图为CPU上批次大小与截止期的函数关系,下半部分图为GPU上批次大小与截止期的函数关系,图3中上半部分图为CPU上批次大小与吞吐量的函数关系,下半部分图为GPU上批次大小与吞吐量的函数关系,图4为GPU上批次大小与GPU使用率的函数关系。

如图4所示,对于GPU,每次不断增加批次大小时,几乎与GPU使用率呈正相关关系。而在CPU上,经实测,CPU使用率不受批次大小影响,始终保证≤100%的CPU使用率。

本申请实施例中通过建立GPU和CPU查询表,滤除不满足约束条件的所有类型目标的待选情况,并以每次选择最大吞吐量原则将合适的目标分派到GPU或CPU。

步骤103、当对GPU和CPU进行协同调度时,根据GPU和CPU的数据处理速度,选择GPU和CPU中的一个采用最大吞吐量策略进行目标或目标特征的数量分派,另一个在满足各类型目标的总截止期和当前资源空闲率的条件下采用局部最大吞吐量策略进行目标特征或目标的数量分派。

当特征提取任务和特征比对任务需要协同工作时,即需要对GPU和CPU进行协同调度,需要考虑GPU与CPU的负载均衡,确保不会积压特征比对任务,且在保证每个各类型目标的总截止期的前提下,使得整个系统的吞吐量最大。

在步骤102中仅考虑了特征提取任务和特征比对任务单独工作时的情况,当两者共同工作时,在任务分派时采用最大吞吐量策略时会产生矛盾。例如,在特征提取任务时保持高吞吐量,而在后续的目标特征比对任务中,由于受总截止期的约束,目标特征比对任务并不能达到高吞吐量,长此以往会导致多类型目标特征队列累计大量的数据无法及时处理的问题。因此,优化问题可表示为:

Max throughput(X);

T

其中,throughput(X)为所有类型的目标X经特征提取和特征比对后的吞吐量,GPU(x

针对上述问题,本申请实施例根据特征提取任务和特征比对任务的实际处理情况动态协调GPU与CPU的混合负载,通过监控多类型目标特征队列中的数据处理速度,自动切换GPU和CPU两者之一使用最大吞吐量策略进行任务分派,则另外一个在保证总截止期、剩余资源占用的要求下采用局部最大吞吐量策略进行任务分派。

因此,优化问题可以被分为两种情况进行求解,如下所示:

其中,Gobal_Max_tp(x

因此,对GPU和CPU进行协同调度的具体过程为:

当对GPU和CPU进行协同调度时,获取GPU和CPU的数据处理速度;

当CPU的数据处理速度比GPU的数据处理速度快时,在满足各类型目标的总截止期和当前资源空闲率的条件下,通过GPU查询表查找所有类型目标的最大吞吐量,将该最大吞吐量对应批次大小b

通过CPU查询表查找批次大小小于或等于b

当CPU的数据处理速度比GPU的数据处理速度慢时,在满足各类型目标的总截止期和当前资源空闲率的条件下,通过CPU查询表查找所有类型目标特征的最大吞吐量对应的批次大小b

例如,当前选定GPU采用最大吞吐量进行处理时,在满足当前剩余GPU占用率(同前述步骤S3)以及各类型目标的总截止期(同步骤S4)的前提下,假设GPU查询表中可选的N种目标类型中人脸类的吞吐量最大,通过查询可知对应的批次大小为b

本申请实施例中,将所有类型目标聚合在一起,进行集中分派,批量处理,相比于现有技术中将不同类型目标单独进行特征提取和特征比对,本申请实施例通过动态分派所有类型的目标,解除单类型目标与固定GPU、CPU的强耦合;通过持续监控多类型目标特征队列的处理情况,动态切换GPU和CPU两者之一以最大吞吐量策略进行处理,不断的在有限的硬件资源中寻找最优目标分派,持续地保证了系统的最大吞吐量。

本申请实施例中,在对GPU和CPU进行独立调度时,在满足各类型目标或各类型目标特征的截止期和当前资源空闲率的条件下,采用最大吞吐量策略对GPU或CPU进行任务分派;并且针对不同数量的目标和目标特征,动态调度所有GPU和CPU的资源,使得GPU和CPU进行协同合作,在保证任务的总截止期和当前资源空闲率的前提下,使得整个任务的吞吐量最大化,不会积压目标特征提取和目标特征比对任务,使得GPU和CPU的处理是均衡的,解决了现有技术中GPU和CPU负载之间不均衡的技术问题。

以上为本申请提供的一种GPU和CPU负载调度方法的一个实施例,以下为本申请提供的一种GPU和CPU负载调度装置的一个实施例。

请参考图5,本申请实施例提供的一种GPU和CPU负载调度装置,包括:

获取单元,用于获取当前待处理队列中的目标数量、目标特征数量和当前资源空闲率;

第一任务分派单元,用于当对GPU和CPU进行独立调度时,在满足各类目标和目标特征的截止期以及当前资源空闲率的条件下,采用最大吞吐量策略选择若干目标分派到GPU进行特征提取,或采用最大吞吐量策略选择若干目标特征分派到CPU进行特征比对;

第二任务分派单元,用于当对GPU和CPU进行协同调度时,根据GPU和CPU的数据处理速度,选择GPU和CPU中的一个采用最大吞吐量策略进行目标或目标特征的数量分派,另一个在满足各类型目标的总截止期和当前资源空闲率的条件下采用局部最大吞吐量策略进行目标特征或目标的数量分派。

作为进一步地改进,第一任务分派单元具体用于:

当对GPU和CPU进行独立调度时,在满足各类目标和目标特征的截止期以及当前资源空闲率的条件下,通过GPU查询表查找所有类型目标的最大吞吐量,将该最大吞吐量对应批次大小的目标分派到GPU进行特征提取,或,通过CPU查询表查找所有类型目标特征的最大吞吐量,将该最大吞吐量对应批次大小的目标特征分派到CPU进行特征比对。

作为进一步地改进,第二任务分派单元具体用于:

当对GPU和CPU进行协同调度时,获取GPU和CPU的数据处理速度;

当CPU的数据处理速度比GPU的数据处理速度快时,在满足各类型目标的总截止期和当前资源空闲率的条件下,通过GPU查询表查找所有类型目标的最大吞吐量,将该最大吞吐量对应批次大小b

通过CPU查询表查找批次大小小于或等于b

当CPU的数据处理速度比GPU的数据处理速度慢时,在满足各类型目标的总截止期和当前资源空闲率的条件下,通过CPU查询表查找所有类型目标特征的最大吞吐量对应的批次大小b

作为进一步地改进,GPU查询表和CPU查询表的配置过程为:

在各类目标进行特征提取任务时,测量各类目标在GPU上的吞吐量、截止期、资源占用率与批次大小的关系,生成GPU查询表;

在各类目标特征进行特征比对任务时,测量各类目标特征在CPU上的吞吐量、截止期、资源占用率与批次大小的关系,生成CPU查询表。

本申请实施例中,在对GPU和CPU进行独立调度时,在满足各类型目标或各类型目标特征的截止期和当前资源空闲率的条件下,采用最大吞吐量策略对GPU或CPU进行任务分派;并且针对不同数量的目标和目标特征,动态调度所有GPU和CPU的资源,使得GPU和CPU进行协同合作,在保证任务的总截止期和当前资源空闲率的前提下,使得整个任务的吞吐量最大化,不会积压目标特征提取和目标特征比对任务,使得GPU和CPU的处理是均衡的,解决了现有技术中GPU和CPU负载之间不均衡的技术问题。

本申请实施例还提供了一种GPU和CPU负载调度设备,设备包括处理器以及存储器;

存储器用于存储程序代码,并将程序代码传输给处理器;

处理器用于根据程序代码中的指令执行前述方法实施例中的GPU和CPU负载调度方法。

本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行前述方法实施例中的GPU和CPU负载调度方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以通过一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

相关技术
  • 一种GPU和CPU负载调度方法、装置、设备和介质
  • 一种基于实时负载的GPU动态调度方法、装置及电子设备
技术分类

06120112859959