一种资源调度方法、设备及存储介质与流程

专利2022-06-30  50


本发明实施例涉及高性能计算技术领域,尤其涉及一种资源调度方法、设备及存储介质。



背景技术:

随着高性能计算技术的发展,计算设备除了中央处理器(centralprocessingunit,cpu)外,还出现了越来越多的协处理器,如图形处理器(graphicsprocessingunit,gpu)、现场可编程逻辑门阵列(fieldprogrammablegatearray,fpga)、嵌入式加速卡等,这些协处理器可以对传统的基于cpu计算的程序进行加速,提高业务系统整体的计算性能。

理想情况下,使用gpu加速,无论是对单机计算还是多机分布式计算都可以实现加速。但是,对于分布式集群环境下,算法从cpu迁移至gpu时,实际的计算情况非常复杂,在典型的分布式异构计算过程中,通常分布式集群中的工作节点计算后,需要将结果进行聚合,有时甚至是多次聚合。因此,存在多种细粒度因素对gpu的加速效果产生影响,比如:cpu或者gpu中的数据输入输出(inputoutput,io)时长、节点间网络传输速度、gpu压缩与解压缩性能等。

现有技术中,分布式异构计算环境下gpu是否具备加速效果,通常是根据人工经验结合代码迁移后的计算执行后的结果进行测量及评估,因而无法在计算前对gpu的加速效果进行有效评估,确定计算算子的运行硬件,从而无法高效地调度资源。



技术实现要素:

本发明实施例提供了一种资源调度方法、设备及存储介质,可以在算法计算前快速、自动地评估gpu的加速效果,确定计算算子的运行硬件,高效地调度资源。

第一方面,本发明实施例提供了一种资源调度方法,该方法包括:

获取分布式计算集群中待运行的计算算子;

根据与分布式计算集群匹配的cpu集群特征参数、预设单机输入输出数据量和所述计算算子的计算类别,计算与所述计算算子匹配的分布式cpu计算总耗时;

根据与分布式计算集群匹配的gpu单机特征参数、gpu集群特征参数、所述单机输入输出数据量和所述计算类别,计算与所述计算算子匹配的分布式gpu计算总耗时;

根据所述分布式异构cpu计算总耗时和所述分布式异构gpu计算总耗时,计算与所述计算算子对应的gpu加速比;

若所述gpu加速比大于预设值,确定在gpu中运行所述计算算子;否则,确定在cpu中运行所述计算算子。

第二方面,本发明实施例还提供了一种计算机设备,包括处理器和存储器,所述存储器用于存储指令,当所述指令执行时使得所述处理器执行以下操作:

获取分布式计算集群中待运行的计算算子;

根据与分布式计算集群匹配的cpu集群特征参数、预设单机输入输出数据量和所述计算算子的计算类别,计算与所述计算算子匹配的分布式cpu计算总耗时;

根据与分布式计算集群匹配的gpu单机特征参数、gpu集群特征参数、所述单机输入输出数据量和所述计算类别,计算与所述计算算子匹配的分布式gpu计算总耗时;

根据所述分布式异构cpu计算总耗时和所述分布式异构gpu计算总耗时,计算与所述计算算子对应的gpu加速比;

若所述gpu加速比大于预设值,确定在gpu中运行所述计算算子;否则,确定在cpu中运行所述计算算子。

第三方面,本发明实施例还提供了一种存储介质,存储介质用于存储指令,所述指令用于执行:

获取分布式计算集群中待运行的计算算子;

根据与分布式计算集群匹配的cpu集群特征参数、预设单机输入输出数据量和所述计算算子的计算类别,计算与所述计算算子匹配的分布式cpu计算总耗时;

根据与分布式计算集群匹配的gpu单机特征参数、gpu集群特征参数、所述单机输入输出数据量和所述计算类别,计算与所述计算算子匹配的分布式gpu计算总耗时;

根据所述分布式异构cpu计算总耗时和所述分布式异构gpu计算总耗时,计算与所述计算算子对应的gpu加速比;

若所述gpu加速比大于预设值,确定在gpu中运行所述计算算子;否则,确定在cpu中运行所述计算算子。

本发明实施例的技术方案,通过获取分布式计算集群中待运行的计算算子;根据与分布式计算集群匹配的cpu集群特征参数、预设单机输入输出数据量和计算算子的计算类别,计算与计算算子匹配的分布式cpu计算总耗时;根据与分布式计算集群匹配的gpu单机特征参数、gpu集群特征参数、单机输入输出数据量和计算类别,计算与计算算子匹配的分布式gpu计算总耗时;根据分布式异构cpu计算总耗时和分布式异构gpu计算总耗时,计算与计算算子对应的gpu加速比;若gpu加速比大于预设值,确定在gpu中运行计算算子;否则,确定在cpu中运行计算算子,解决了无法在计算前对gpu的加速效果进行有效评估,确定计算算子的运行硬件,从而无法高效地调度资源的问题,实现了快速、自动地对gpu的加速效果进行有效评估,通过量化的加速比可以确定计算算子的运行硬件,高效地调度资源,提升计算性能。

附图说明

图1是本发明实施例一提供的一种资源调度方法的流程图;

图2a为gpu加速比与百兆数据计算耗时的关系示意图;

图2b为gpu加速比与百兆数据计算耗时的关系示意图;

图2c为gpu加速比与百兆数据计算耗时的关系示意图;

图2d为gpu加速比与百兆数据计算耗时的关系示意图;

图2e为gpu加速比与百兆数据计算耗时的关系示意图;

图2f为gpu加速比与百兆数据计算耗时的关系示意图;

图3是本发明实施例二提供的一种资源调度装置的结构示意图;

图4是本发明实施例三提供的一种计算机设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

本文使用的术语“分布式计算集群”可以是分布式异构硬件环境下的集群计算;可以是批式计算场景,即对于批量式数据的计算;其中,数据的底层算子可以支持cpu以及gpu运行,可以根据本发明实施例计算的加速比确定是使用cpu还是gpu计算,效果更好。在分布式计算集群中,集群中的工作节点计算后,结果需要汇聚,再进行计算,即聚合运算。

本文使用的术语“计算算子”可以是高性能计算中的算法拆分成的一个个算子,例如,元素过滤(filter)算子和内连接(join)算子等。

本文使用的术语“计算类别”可以是由人工根据计算算子的计算特点,即数据量与计算量之间的关系,而提前设定的,一般数据量与计算量之间的关系成线性关系或者指数关系。如filter算子是线性算子类别,join算子是指数算子类别。不同计算类别对于相同数据量数据进行计算的计算时间长度影响不同。

本文使用的术语“预设单机输入输出数据量”可以是单机运行计算算子的单机输入数据量和单机输出数据量的总称。

本文使用的术语“cpu集群特征参数”可以包括单核cpu与单核gpu性能比、集群节点间网络传输速度、集群中机器总数和每个聚合运算中的机器总数等,可以通过用户配置,也可以通过程序获取。

本文使用的术语“gpu单机特征参数”可以包括总线传输效率和gpu并行度等,可以通过用户配置,也可以通过程序获取。

本文使用的术语“gpu集群特征参数”可以包括单核cpu与单核gpu性能比、集群节点间网络传输速度、集群中机器总数、每个聚合运算中的机器总数、gpu并行度、gpu数据压缩率和gpu压缩与解压缩速度等,可以通过用户配置,也可以通过程序获取。

本文使用的术语“分布式cpu计算总耗时”可以是计算算子在一定数据量下在分布式计算集群中在cpu运行所需要消耗的时间长度。

本文使用的术语“分布式gpu计算总耗时”可以是计算算子在一定数据量下在分布式计算集群中在gpu运行所需要消耗的时间长度。

本文使用的术语“单机cpu计算耗时”可以是计算算子在一定数据量下在单个机器中在cpu运行所需要消耗的时间长度。

本文使用的术语“单机gpu计算耗时”可以是计算算子在一定数据量下在单个机器中在gpu运行所需要消耗的时间长度。

本文使用的术语“gpu加速比”可以是计算算子在gpu运行与在cpu运行对应的加速效果的量化。

实施例一

图1是本发明实施例一提供的一种资源调度方法的流程图,本实施例可适用于高性能计算中确定计算算子在cpu或者gpu运行的情况,该方法可以由资源调度装置来执行,该装置可以通过软件,和/或硬件的方式实现,装置可以集成在处理器中,如图1所示,该方法具体包括:

步骤110、获取分布式计算集群中待运行的计算算子。

在本发明实施例中,以分布式计算集群中,高性能计算服务器采用cpu的规格为intere52600,gpu的规格为nvidiagtx1080ti,主板采用pci-e3.0规范,gpu使用pcie8x插槽为例,进行gpu加速比的计算实例说明,但本发明实施例不限于上述参数场景下的资源调度。

其中,在本发明实施例中,可以是确定一种算法中的各计算算子的运行硬件以实现资源调度,最大化地利用分布式异构硬件的计算能力,实现最佳性能。当数据库系统接收到结构化查询语言(structuredquerylanguage,sql)语句时,解析并分解为sql物理执行计划,物理执行计划由sql算子组成,sql算子可以作为待运行的计算算子。例如,执行where比较操作,数据库系统接收到sql语句1:select*fromdata_100gwhereid_int<10,sql语句1解析后的主要计算算子为filter算子,filter算子可以作为待运行的计算算子,sql语句1的计算量与数据量是线性关系,是线性算子类别;再如,执行join操作,数据库系统接收到sql语句2:selecta.id_intfromdata_100mbona.id_int=bid,sql语句2解析后的主要计算算子为join算子,join算子可以作为待运行的计算算子,sql语句2的计算量与数据量是指数关系,是指数算子类别。以计算算子为filter算子和join算子为例进行资源调度示例说明,但本发明实施例不限于确定上述计算算子的运行硬件。

步骤120、根据与分布式计算集群匹配的cpu集群特征参数、预设单机输入输出数据量和计算算子的计算类别,计算与计算算子匹配的分布式cpu计算总耗时。

在本发明实施例的一个实施方式中,可选的,根据cpu集群特征参数、预设单机输入输出数据量和计算算子的计算类别,计算与计算算子匹配的分布式cpu计算总耗时,包括:根据单机输入数据量以及计算类别,计算与计算算子匹配的单机cpu计算耗时;根据单机cpu计算耗时、单机输出数据量以及cpu集群特征参数,计算与计算算子匹配的分布式cpu计算总耗时。

其中,假定每100兆(mbyte,m)数据在cpu上的耗时为t(t的取值范围为0.001秒~10秒),单机输入数据量为d吉字节(gigabyte,gb)。那么,计算算子为线性算子类别时,与计算算子匹配的单机cpu计算耗时t=t/0.1*d=10t*d;计算算子为指数算子类别时(如平方关系),与计算算子匹配的单机cpu计算耗时t=(t/0.1)*(t/0.1)*d=100t*t*d。

在本发明实施例的一个实施方式中,可选的,根据单机cpu计算耗时、单机输出数据量以及cpu集群特征参数,计算与计算算子匹配的分布式cpu计算总耗时,包括:根据分布式计算集群中的机器总数以及每个聚合运算中的机器总数,确定聚合次数和聚合节点数;根据聚合次数、聚合节点数、单机cpu计算耗时、单机输出数据量和集群节点间网络传输速度,计算分布式cpu计算总耗时。

其中,分布式cpu计算总耗时t(cpu)可以通过公式t(cpu)=t(cal) t(poly) t(trans)计算获得。式中,t(cal)是指单机cpu计算耗时t,t(poly)是指计算算子在cpu上做聚合操作时的计算总时长,可以通过公式t(poly)=t(cal)*聚合次数获取的;聚合次数可以是logk(n),n为分布式计算集群中的机器总数,k为每个聚合运算中的机器总数,即在分布式计算集群中,存在n台机器,每k台机器进行聚合计算,本发明实施例可以以k为10为例进行说明,聚合次数为lg(n);t(trans)是指计算算子聚合操作期间在网络节点间的传输时间,可以通过公式t(trans)=单机输出数据量*聚合节点数/集群节点间网络传输速度获取;其中,单机输出数据量可以假定为单机输入数据量的10%,即假定为0.1*d;聚合节点数可以通过公式n(1 1/k 1/(k*k) 1/(k*k*k) …)获得,其中,聚合操作需要将聚合结果聚合至一台机器,因此聚合节点数的求解公式中的最后一项为1。

在本发明的一个具体实施方式中,集群间网络可以采用10吉比特(gigabit,gb)以太网卡或者100gb的无限带宽(infiniband,ib)卡。当采用10gb以太网卡时,实际的集群节点间网络传输速度为1千兆每秒(gigabitpersecond,gbps);分布式cpu计算总耗时t(cpu)=t t*lg(n) (d*n/9)/(1/8)=t*(1 lg(n)) 8d*n/9。其中,(d*n/9)/(1/8)表示t(trans),d*n/9表示聚合数据总量,聚合数据总量可以通过公式单机输出数据量*聚合节点数=0.1*d*n(1 1/k 1/(k*k) 1/(k*k*k) …)计算,以k为10例,结果近似为d*n/9;1代表集群节点间网络传输速度为1gbps,除以8是为了满足实际传输速度单位由gbps到吉位每秒(gigabitspersecond,gbps)的转换。采用100gb的ib卡时,实际的集群节点间网络传输速度为80gbps;分布式cpu计算总耗时t(cpu)=t t*lg(n) (d*n/9)/(80/8)=t*(1 lg(n)) d*n/90。其中,t为计算算子在单机cpu上的计算耗时,即单机cpu计算耗时t(cal)。

步骤130、根据与分布式计算集群匹配的gpu单机特征参数、gpu集群特征参数、单机输入输出数据量和计算类别,计算与计算算子匹配的分布式gpu计算总耗时。

在本发明实施例的一个实施方式中,可选的,根据与分布式计算集群匹配的gpu单机特征参数、gpu集群特征参数、单机输入输出数据量和计算类别,计算与计算算子匹配的分布式gpu计算总耗时,包括:根据计算类别、gpu单机特征参数、和单机输入输出数据量,计算单机gpu计算耗时;根据单机gpu计算耗时、gpu集群特征参数以及单机输入数据量,计算与计算算子匹配的分布式gpu计算总耗时。

在本发明实施例的一个实施方式中,可选的,根据计算类别、gpu单机特征参数、和单机输入输出数据量,计算单机gpu计算耗时,包括:根据计算类别、总线传输效率、gpu并行度、以及单机输入输出数据量,计算单机gpu计算耗时。

在本发明实施例的一个具体实施方式中,总线采用pcie3.0总线,理论总线传输效率为16吉位每秒(gigabitspersecond,gb/s),实际测试速度为12.8gb/s。单核cpu与单核gpu性能比假定为1,单机gpu计算耗时t’(cal),即计算算子在单机gpu上的计算耗时t’可以通过公式t’=单机的输入输出数据总量/总线传输效率 t(cal)/m获取。其中,t(cal)可以通过计算类别和单机输入数据量计算获取。假定每100m数据在cpu上的耗时为t(t的取值范围为0.001秒~10秒),单机输入数据量为d,那么计算算子为线性算子类别时,t(cal)=t/0.1*d=10t*d;计算算子为指数算子类别时(如平方关系),t(cal)=(t/0.1)*(t/0.1)*d=100t*t*d。假定单机输出数据量为单机输入数据量的10%,即0.1*d。m为gpu并行度,取值范围为64~1024。在本发明实施例的示例中,单机gpu计算耗时t’=(1 0.1)*d/12.8 t/m。

在本发明实施例的一个实施方式中,可选的,根据单机gpu计算耗时、gpu集群特征参数以及单机输入数据量,计算与计算算子匹配的分布式gpu计算总耗时,包括:根据分布式计算集群中的机器总数以及每个聚合运算中的机器总数,确定聚合次数和聚合节点数;根据聚合次数、聚合节点数、单机gpu计算耗时、单机输出数据量和集群节点间网络传输速度,计算分布式gpu计算总耗时;或者,根据聚合次数、聚合节点数、单机gpu计算耗时、单机输出数据量、集群节点间网络传输速度、gpu数据压缩率、和gpu压缩与解压缩速度,计算分布式gpu计算总耗时。

其中,分布式gpu计算总耗时可以分为考虑gpu压缩与解压缩功能和不考虑gpu压缩与解压缩功能时的分布式gpu计算总耗时。在不考虑gpu压缩与解压缩功能时,分布式gpu计算总耗时t(gpu)可以通过公式t(gpu)=t’(cal) t’(poly) t(trans)计算获得。式中,t’(poly)是指计算算子在gpu上做聚合操作时的计算总时长,可以通过公式t’(poly)=t’(cal)*聚合次数获取的;聚合次数以及t(trans)的确定方法与步骤120中的解释一致。

在考虑gpu压缩与解压缩功能时,分布式gpu计算总耗时t(gpu cp/up)可以通过公式t(gpu cp/up)=d/v 0.1*d/v t’(cal) t’(poly) t(trans)*c计算获得。式中,d是指单机输入数据量,0.1*d是指单机输出数据量,v是指gpu压缩与解压缩速度,d/v是指单机的输入数据解压时间,0.1*d/v是指单机的输出数据压缩时间,c是指gpu数据压缩率。

在本发明的一个具体实施方式中,集群间网络采用10gb以太网卡时,不考虑gpu压缩与解压缩功能,分布式gpu计算总耗时t(gpu)=t’ t’*lg(n) (d*n/9)/(1/8)=(11d/128 t/m)*(1 lg(n)) 8d*n/9。集群间网络采用100gb的ib卡时,不考虑gpu压缩与解压缩功能,分布式gpu计算总耗时t(gpu)=t’ t’*lg(n) (d*n/9)/(80/8)=(11d/128 t/m)*(1 lg(n)) d*n/90。集群间网络采用10gb以太网卡时,考虑gpu压缩与解压缩功能,分布式gpu计算总耗时t(gpu cp/up)=d/v 0.1*d/v t’ t’*lg(n) (d*n/9)*c/(1/8)=1.1*d/v (11d/128 t/m)*(1 lg(n)) 8d*n*c/9。集群间网络采用100gb的ib卡时,考虑gpu压缩与解压缩功能,分布式gpu计算总耗时t(gpu cp/up)=d/v 0.1*d/v t’ t’*lg(n) (d*n/9)*c/(80/8)=1.1*d/v (11d/128 t/m)*(1 lg(n)) d*n*c/90。

步骤140、根据分布式异构cpu计算总耗时和分布式异构gpu计算总耗时,计算与计算算子对应的gpu加速比。

其中,计算算子对应的gpu加速比可以通过同等计算复杂度的计算算子的分布式异构gpu计算总耗时,与分布式异构cpu计算总耗时的比值计算获得。

在本发明的一个具体实施方式中,集群间网络采用10gb以太网卡时,不考虑gpu压缩与解压缩功能,计算算子对应的gpu加速比n=t(cpu)/t(gpu)=[t t*lg(n) (d*n/9)/(1/8)]/[t’ t’*lg(n) (d*n/9)/(1/8)]=[t*(1 lg(n)) 8d*n/9]/[(11d/128 t/m)*(1 lg(n)) 8d*n/9]。假定n为1000时,n=(4t 8000d/9)/(44d/128 4t/m 8000d/9)=(t 2000d/9)/(11d/128 t/m 2000d/9)。

其中,图2a为gpu加速比与百兆数据计算耗时的关系示意图,如图2a所示,集群间网络采用10gb以太网卡时,不考虑gpu压缩与解压缩功能,计算算子为线性算子类别(t=10t*d)时,gpu加速比n与百兆数据计算耗时t的关系为n=(40t*d 8000d/9)/(44d/128 40t*d/m 8000d/9)=(t 200/9)/(t/m 256099/11520)。gpu并行度m为64时,n=(t 200/9)/(t/64 256099/11520)。

其中,图2b为gpu加速比与百兆数据计算耗时的关系示意图,如图2b所示,集群间网络采用10gb以太网卡时,不考虑gpu压缩与解压缩功能,计算算子为指数算子类别(t=100t*t*d)时,gpu加速比n与百兆数据计算耗时t的关系为n=(t*t 20/9)/(t*t/m 256099/115200)。其中,gpu并行度m为64时,n=(t*t 20/9)/(t*t/64 256099/115200)。

在本发明的一个具体实施方式中,集群间网络采用100gb的ib卡时,不考虑gpu压缩与解压缩功能,计算算子对应的gpu加速比n=t(cpu)/t(gpu)=[t t*lg(n) (d*n/9)/(80/8)]/[t’ t’*lg(n) (d*n/9)/(80/8)]=[t*(1 lg(n)) d*n/90]/[(11d/128 t/m)*(1 lg(n)) d*n/90]=(4t 100d/9)/(44d/128 4t/m 100d/9)=(t 25d/9)/(11d/128 t/m 25d/9)。

图2c为gpu加速比与百兆数据计算耗时的关系示意图,如图2c所示,集群间网络采用100gb的ib卡时,不考虑gpu压缩与解压缩功能,计算算子为线性算子类别(t=10t*d)时,gpu加速比n与百兆数据计算耗时t的关系为n=(t 5/18)/(t/m 3299/11520)。gpu并行度m为64时,n=(t 5/18)/(t/64 3299/11520)。

其中,图2d为gpu加速比与百兆数据计算耗时的关系示意图,如图2d所示,集群间网络采用100gb的ib卡时,不考虑gpu压缩与解压缩功能,计算算子为指数算子类别(t=100t*t*d)时,gpu加速比n与百兆数据计算耗时t的关系为n=(t*t 1/36)/(t*t/m 3299/115200)。其中,gpu并行度m为64时,n=(t*t 1/36)/(t*t/64 3299/115200)。

在本发明的一个具体实施方式中,集群间网络采用10gb以太网卡时,考虑gpu压缩与解压缩功能,计算算子对应的gpu加速比n=t(cpu)/t(gpu cp/up)=[t*(1 lg(n)) 8d*n/9]/[1.1d/v (11d/128 t/m)*(1 lg(n)) 8d*n*c/9]=(4t 8000d/9)/(1.1d/v 11d/32 4t/m 8000d*c/9)=(t 2000d/9)/(11d/40v 11d/128 t/m 2000d*c/9)。取c=30%,v=100mb/s=0.1gb/s时,n=(t 2000d/9)/(363d/128 t/m 200d/3)。

其中,集群间网络采用10gb以太网卡时,考虑gpu压缩与解压缩功能,计算算子为线性算子类别(t=10t*d)时,gpu加速比n与百兆数据计算耗时t的关系为n=(t 200/9)/(t/m 26689/3840)。gpu并行度m为64时,n=(t 200/9)/(t/64 26689/3840)。

其中,集群间网络采用10gb以太网卡时,考虑gpu压缩与解压缩功能,计算算子为指数算子类别(t=100t*t*d)时,gpu加速比n与百兆数据计算耗时t的关系为n=(t*t 20/9)/(t*t/m 26689/38400)。其中,gpu并行度m为64时,n=(t*t 20/9)/(t*t/64 26689/38400)。

在本发明的一个具体实施方式中,集群间网络采用100gb的ib卡时,考虑gpu压缩与解压缩功能,计算算子对应的gpu加速比n=t(cpu)/t(gpu cp/up)=[t*(1 lg(n)) d*n/90]/[1.1d/v (11d/128 t/m)*(1 lg(n)) d*n*c/90]=(4t 100d/9)/(1.1d/v 11d/32 4t/m 100d*c/9)=(t 25d/9)/(11d/40v t/m 5d/6)。

图2e为gpu加速比与百兆数据计算耗时的关系示意图,如图2e所示,集群间网络采用100gb的ib卡时,考虑gpu压缩与解压缩功能,计算算子为线性算子类别(t=10t*d)时,gpu加速比n与百兆数据计算耗时t的关系为n=(t 5/18)/(t/m 1409/3840)。gpu并行度m为64时,n=(t 5/18)/(t/64 1409/3840)。

其中,图2f为gpu加速比与百兆数据计算耗时的关系示意图,如图2f所示,集群间网络采用100gb的ib卡时,考虑gpu压缩与解压缩功能,计算算子为指数算子类别(t=100t*t*d)时,gpu加速比n与百兆数据计算耗时t的关系为n=(t*t 1/36)/(t*t/m 1409/38400)。其中,gpu并行度m为64时,n=(t*t 1/36)/(t*t/64 1409/38400)。

步骤150、若gpu加速比大于预设值,确定在gpu中运行计算算子;否则,确定在cpu中运行计算算子。

其中,预设值可以是1或者大于1的值,当gpu加速比大于1时,认为gpu具有加速效果,计算算子可以在gpu运行,能够提高计算性能。当gpu加速比小于等于1时,认为gpu不具有加速效果,计算算子可以继续在cpu运行,可以在资源调度前评估gpu的加速性能,确定计算算子的运行硬件,高效地调度资源。

在本发明的一个具体实施例中,当数据库系统接收到sql语句时,解析并分解为sql物理执行计划,物理执行计划由sql算子组成,例如,本发明实施例的示例中,sql语句1解析后的主要计算算子为filter算子,sql语句2解析后的主要计算算子为join算子。其中,根据统计结果,百兆数据在cpu中的计算耗时,filter算子为5毫秒,join算子为200毫秒。filter算子为线性算子类别,处理sql语句1时,可以采用计算算子为线性算子类别时的加速比计算公式;join算子为指数算子类别,处理sql语句2时,可以采用计算算子为指数算子类别时的加速比计算公式。

示例性的,集群间网络采用10gb以太网卡,不考虑gpu压缩与解压缩功能,gpu并行度为64时,如图2a所示,当百兆数据在cpu中的计算耗时t值较小时,加速效果不明显,加速比在1至2之间。本发明实施例运行filter算子时的加速比n=1,说明此时,gpu没有加速效果,数据库系统可以继续采用cpu运行filter算子,完成计算,能够最大化地利用分布式异构硬件的计算能力,使分布式异构集群计算系统实现最佳性能。如图2b所示,本发明实施例运行join算子时的加速比n=1,说明此时,gpu没有加速效果,数据库系统可以继续采用cpu运行join算子,完成计算,能够最大化地利用分布式异构硬件的计算能力,使分布式异构集群计算系统实现最佳性能。

示例性的,网络的速度对集群加速的作用至关重要,为说明集群节点间网络传输速度对加速比的影响,本发明实施例将图2a和图2b中所用的10gb以太网卡,改为100gb的ib卡,结果分别如图2c和图2d所示。如图2c所示,本发明实施例运行filter算子时的加速比n=0.97,加速比小于1,说明此时,gpu没有加速效果,数据库系统可以继续采用cpu运行filter算子,完成计算,能够最大化地利用分布式异构硬件的计算能力,使分布式异构集群计算系统实现最佳性能。如图2d所示,本发明实施例运行join算子时的加速比n=2.3,加速比大于1,说明此时,gpu的加速效果比较好,数据库系统可以采用gpu运行join算子,完成计算,能够最大化地利用分布式异构硬件的计算能力,使分布式异构集群计算系统实现最佳性能。

示例性的,gpu的压缩与解压缩功能对集群加速的作用也会存在影响,为说明gpu的压缩与解压缩功能对加速比的影响,本发明实施例在图2c和图2d的基础上,引入gpu的压缩与解压缩功能,结果分别如图2e和图2f所示。如图2e所示,本发明实施例运行filter算子时的加速比n=3.2,加速比大于1,说明此时,gpu的加速效果很好,数据库系统可以采用gpu运行filter算子,完成计算,能够最大化地利用分布式异构硬件的计算能力,使分布式异构集群计算系统实现最佳性能。如图2f所示,本发明实施例运行join算子时的加速比n=1.82,加速比大于1,说明此时,gpu的加速效果比较好,数据库系统可以采用gpu运行join算子,完成计算,能够最大化地利用分布式异构硬件的计算能力,使分布式异构集群计算系统实现最佳性能。

本发明实施例提供的技术方案可以在算法计算前,评估gpu的加速效果,可以考虑分布式计算集群中的机器总数、每个聚合运算中的机器总数、总线传输效率、gpu并行度、集群节点间网络传输速度、gpu数据压缩率、和gpu压缩与解压缩速度等多种细粒度因素对gpu加速效果的影响,可以避免每次先计算再度量的开销,对比于现有技术更准确、更高效,可以根据加速比动态调度分布式批式计算,最大化硬件的计算能力,实现硬件的最佳性能。需要说明的是本发明实施例的技术实现形式不仅仅局限于单独的算法或者单独的计算算子,可以嵌入到硬件系统中实现,具体实现原理是一致的,本发明实施例可以应用到大数据处理系统中或者ai混合计算执行场景中。

本发明实施例的技术方案,通过获取分布式计算集群中待运行的计算算子;根据与分布式计算集群匹配的cpu集群特征参数、预设单机输入输出数据量和计算算子的计算类别,计算与计算算子匹配的分布式cpu计算总耗时;根据与分布式计算集群匹配的gpu单机特征参数、gpu集群特征参数、单机输入输出数据量和计算类别,计算与计算算子匹配的分布式gpu计算总耗时;根据分布式异构cpu计算总耗时和分布式异构gpu计算总耗时,计算与计算算子对应的gpu加速比;若gpu加速比大于预设值,确定在gpu中运行计算算子;否则,确定在cpu中运行计算算子,解决了无法在计算前对gpu的加速效果进行有效评估,确定计算算子的运行硬件,从而无法高效地调度资源的问题,实现了快速、自动地对gpu的加速效果进行有效评估,通过量化的加速比可以确定计算算子的运行硬件,高效地调度资源,提升计算性能。

实施例二

图3是本发明实施例二提供的一种资源调度装置的结构示意图。结合图3,该装置包括:计算算子获取模块310,分布式cpu计算总耗时计算模块320,分布式gpu计算总耗时计算模块330、gpu加速比计算模块340和计算算子运行硬件确定模块350。

其中,计算算子获取模块310,用于获取分布式计算集群中待运行的计算算子;

分布式cpu计算总耗时计算模块320,用于根据与分布式计算集群匹配的cpu集群特征参数、预设单机输入输出数据量和计算算子的计算类别,计算与计算算子匹配的分布式cpu计算总耗时;

分布式gpu计算总耗时计算模块330,用于根据与分布式计算集群匹配的gpu单机特征参数、gpu集群特征参数、单机输入输出数据量和计算类别,计算与计算算子匹配的分布式gpu计算总耗时;

gpu加速比计算模块340,用于根据分布式异构cpu计算总耗时和分布式异构gpu计算总耗时,计算与计算算子对应的gpu加速比。

计算算子运行硬件确定模块350,用于若gpu加速比大于预设值,确定在gpu中运行计算算子;否则,确定在cpu中运行计算算子。

在上述各实施例的基础上,可选的,分布式cpu计算总耗时计算模块320,包括:单机cpu计算耗时计算单元,用于根据单机输入数据量以及计算类别,计算与计算算子匹配的单机cpu计算耗时;分布式cpu计算总耗时计算单元,用于根据单机cpu计算耗时、单机输出数据量以及cpu集群特征参数,计算与计算算子匹配的分布式cpu计算总耗时。

在上述各实施例的基础上,可选的,分布式cpu计算总耗时计算单元,包括:聚合次数和聚合节点数确定子单元,用于根据分布式计算集群中的机器总数以及每个聚合运算中的机器总数,确定聚合次数和聚合节点数;分布式cpu计算总耗时计算子单元,用于根据聚合次数、聚合节点数、单机cpu计算耗时、单机输出数据量和集群节点间网络传输速度,计算分布式cpu计算总耗时。

在上述各实施例的基础上,可选的,分布式gpu计算总耗时计算模块330,包括:单机gpu计算耗时计算单元,用于根据计算类别、gpu单机特征参数、和单机输入输出数据量,计算单机gpu计算耗时;分布式gpu计算总耗时计算单元,用于根据单机gpu计算耗时、gpu集群特征参数以及单机输入数据量,计算与计算算子匹配的分布式gpu计算总耗时。

在上述各实施例的基础上,可选的,单机gpu计算耗时计算单元,包括:单机gpu计算耗时子单元,用于根据计算类别、总线传输效率、gpu并行度、以及单机输入输出数据量,计算单机gpu计算耗时。

在上述各实施例的基础上,可选的,分布式gpu计算总耗时计算单元,包括:聚合次数和聚合节点数确定子单元,用于根据分布式计算集群中的机器总数以及每个聚合运算中的机器总数,确定聚合次数和聚合节点数;分布式gpu计算总耗时第一计算子单元,用于根据聚合次数、聚合节点数、单机gpu计算耗时、单机输出数据量和集群节点间网络传输速度,计算分布式gpu计算总耗时;或者,分布式gpu计算总耗时第二计算子单元,用于根据聚合次数、聚合节点数、单机gpu计算耗时、单机输出数据量、集群节点间网络传输速度、gpu数据压缩率、和gpu压缩与解压缩速度,计算分布式gpu计算总耗时。

本发明实施例所提供的资源调度装置可执行本发明任意实施例所提供的资源调度方法,具备执行方法相应的功能模块和有益效果。

实施例三

图4是本发明实施例三提供的一种计算机设备的结构示意图,如图4所示,该设备包括:

一个或多个处理器410,图4中以一个处理器410为例;

存储器420;

设备还可以包括:输入装置430和输出装置440。

设备中的处理器410、存储器420、输入装置430和输出装置440可以通过总线或者其他方式连接,图4中以通过总线连接为例。

存储器420作为一种非暂态计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的一种资源调度方法对应的程序指令/模块(例如,附图3所示的计算算子获取模块310,分布式cpu计算总耗时计算模块320,分布式gpu计算总耗时计算模块330、gpu加速比计算模块340和计算算子运行硬件确定模块350)。处理器410通过运行存储在存储器420中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述方法实施例的一种资源调度方法,即:

获取分布式计算集群中待运行的计算算子;

根据与分布式计算集群匹配的cpu集群特征参数、预设单机输入输出数据量和计算算子的计算类别,计算与计算算子匹配的分布式cpu计算总耗时;

根据与分布式计算集群匹配的gpu单机特征参数、gpu集群特征参数、单机输入输出数据量和计算类别,计算与计算算子匹配的分布式gpu计算总耗时;

根据分布式异构cpu计算总耗时和分布式异构gpu计算总耗时,计算与计算算子对应的gpu加速比;

若所述gpu加速比大于预设值,确定在gpu中运行所述计算算子;否则,确定在cpu中运行所述计算算子。

存储器420可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非暂态性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态性固态存储器件。在一些实施例中,存储器420可选包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至终端设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置430可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置440可包括显示屏等显示设备。

实施例四

本发明实施例四提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的一种资源调度方法:

获取分布式计算集群中待运行的计算算子;

根据与分布式计算集群匹配的cpu集群特征参数、预设单机输入输出数据量和所述计算算子的计算类别,计算与所述计算算子匹配的分布式cpu计算总耗时;

根据与分布式计算集群匹配的gpu单机特征参数、gpu集群特征参数、所述单机输入输出数据量和所述计算类别,计算与所述计算算子匹配的分布式gpu计算总耗时;

根据所述分布式异构cpu计算总耗时和所述分布式异构gpu计算总耗时,计算与所述计算算子对应的gpu加速比;

若所述gpu加速比大于预设值,确定在gpu中运行所述计算算子;否则,确定在cpu中运行所述计算算子。

可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如”c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。


技术特征:

1.一种资源调度方法,其特征在于,包括:

获取分布式计算集群中待运行的计算算子;

根据与分布式计算集群匹配的cpu集群特征参数、预设单机输入输出数据量和所述计算算子的计算类别,计算与所述计算算子匹配的分布式cpu计算总耗时;

根据与分布式计算集群匹配的gpu单机特征参数、gpu集群特征参数、所述单机输入输出数据量和所述计算类别,计算与所述计算算子匹配的分布式gpu计算总耗时;

根据所述分布式异构cpu计算总耗时和所述分布式异构gpu计算总耗时,计算与所述计算算子对应的gpu加速比;

若所述gpu加速比大于预设值,确定在gpu中运行所述计算算子;否则,确定在cpu中运行所述计算算子。

2.根据权利要求1所述的方法,其特征在于,根据与分布式计算集群匹配的cpu集群特征参数、预设单机输入输出数据量和所述计算算子的计算类别,计算与所述计算算子匹配的分布式cpu计算总耗时,包括:

根据单机输入数据量以及所述计算类别,计算与所述计算算子匹配的单机cpu计算耗时;

根据所述单机cpu计算耗时、单机输出数据量以及所述cpu集群特征参数,计算与所述计算算子匹配的分布式cpu计算总耗时。

3.根据权利要求2所述的方法,其特征在于,根据所述单机cpu计算耗时、单机输出数据量以及所述cpu集群特征参数,计算与所述计算算子匹配的分布式cpu计算总耗时,包括:

根据所述分布式计算集群中的机器总数以及每个聚合运算中的机器总数,确定聚合次数和聚合节点数;

根据所述聚合次数、所述聚合节点数、所述单机cpu计算耗时、单机输出数据量和集群节点间网络传输速度,计算所述分布式cpu计算总耗时。

4.根据权利要求1所述的方法,其特征在于,根据与分布式计算集群匹配的gpu单机特征参数、gpu集群特征参数、所述单机输入输出数据量和所述计算类别,计算与所述计算算子匹配的分布式gpu计算总耗时,包括:

根据所述计算类别、所述gpu单机特征参数、和所述单机输入输出数据量,计算单机gpu计算耗时;

根据所述单机gpu计算耗时、所述gpu集群特征参数以及所述单机输入数据量,计算与计算算子匹配的分布式gpu计算总耗时。

5.根据权利要求4所述的方法,其特征在于,根据所述计算类别、所述gpu单机特征参数、和所述单机输入输出数据量,计算单机gpu计算耗时,包括:

根据所述计算类别、总线传输效率、gpu并行度、以及所述单机输入输出数据量,计算所述单机gpu计算耗时。

6.根据权利要求4所述的方法,其特征在于,根据所述单机gpu计算耗时、所述gpu集群特征参数以及所述单机输入数据量,计算与计算算子匹配的分布式gpu计算总耗时,包括:

根据所述分布式计算集群中的机器总数以及每个聚合运算中的机器总数,确定聚合次数和聚合节点数;

根据所述聚合次数、所述聚合节点数、所述单机gpu计算耗时、单机输出数据量和集群节点间网络传输速度,计算所述分布式gpu计算总耗时;或者,

根据所述聚合次数、所述聚合节点数、所述单机gpu计算耗时、单机输出数据量、集群节点间网络传输速度、gpu数据压缩率、和gpu压缩与解压缩速度,计算所述分布式gpu计算总耗时。

7.一种计算机设备,包括处理器和存储器,所述存储器用于存储指令,当所述指令执行时使得所述处理器执行以下操作:

获取分布式计算集群中待运行的计算算子;

根据与分布式计算集群匹配的cpu集群特征参数、预设单机输入输出数据量和所述计算算子的计算类别,计算与所述计算算子匹配的分布式cpu计算总耗时;

根据与分布式计算集群匹配的gpu单机特征参数、gpu集群特征参数、所述单机输入输出数据量和所述计算类别,计算与所述计算算子匹配的分布式gpu计算总耗时;

根据所述分布式异构cpu计算总耗时和所述分布式异构gpu计算总耗时,计算与所述计算算子对应的gpu加速比;

若所述gpu加速比大于预设值,确定在gpu中运行所述计算算子;否则,确定在cpu中运行所述计算算子。

8.根据权利要求7所述的计算机设备,其特征在于,所述处理器是设置为通过以下方式计算与计算算子匹配的分布式cpu计算总耗时:

根据单机输入数据量以及所述计算类别,计算与所述计算算子匹配的单机cpu计算耗时;

根据所述单机cpu计算耗时、单机输出数据量以及所述cpu集群特征参数,计算与所述计算算子匹配的分布式cpu计算总耗时。

9.根据权利要求8所述的计算机设备,其特征在于,所述处理器是设置为通过以下方式计算与计算算子匹配的分布式cpu计算总耗时:

根据所述分布式计算集群中的机器总数以及每个聚合运算中的机器总数,确定聚合次数和聚合节点数;

根据所述聚合次数、所述聚合节点数、所述单机cpu计算耗时、单机输出数据量和集群节点间网络传输速度,计算所述分布式cpu计算总耗时。

10.根据权利要求8所述的计算机设备,其特征在于,所述处理器是设置为通过以下方式计算与计算算子匹配的分布式gpu计算总耗时:

根据所述计算类别、所述gpu单机特征参数、和所述单机输入输出数据量,计算单机gpu计算耗时;

根据所述单机gpu计算耗时、所述gpu集群特征参数以及所述单机输入数据量,计算与计算算子匹配的分布式gpu计算总耗时。

11.根据权利要求10所述的计算机设备,其特征在于,所述处理器是设置为通过以下方式计算单机gpu计算耗时:

根据所述计算类别、总线传输效率、gpu并行度、以及所述单机输入输出数据量,计算所述单机gpu计算耗时。

12.根据权利要求10所述的计算机设备,其特征在于,所述处理器是设置为通过以下方式计算与计算算子匹配的分布式gpu计算总耗时:

根据所述分布式计算集群中的机器总数以及每个聚合运算中的机器总数,确定聚合次数和聚合节点数;

根据所述聚合次数、所述聚合节点数、所述单机gpu计算耗时、单机输出数据量和集群节点间网络传输速度,计算所述分布式gpu计算总耗时;或者,

根据所述聚合次数、所述聚合节点数、所述单机gpu计算耗时、单机输出数据量、集群节点间网络传输速度、gpu数据压缩率、和gpu压缩与解压缩速度,计算所述分布式gpu计算总耗时。

13.一种存储介质,所述存储介质用于存储指令,所述指令用于执行如权利要求1-6中任一所述的资源调度方法。

技术总结
本发明实施例公开了一种资源调度方法、设备及存储介质。该方法包括:获取分布式计算集群中待运行的计算算子;根据与分布式计算集群匹配的CPU集群特征参数、预设单机输入输出数据量和计算算子的计算类别,计算分布式CPU计算总耗时;根据与分布式计算集群匹配的GPU单机特征参数、GPU集群特征参数、单机输入输出数据量和计算类别,计算分布式GPU计算总耗时;根据分布式异构CPU计算总耗时和分布式异构GPU计算总耗时,计算GPU加速比;若GPU加速比大于预设值,确定在GPU中运行计算算子;否则,确定在CPU中运行计算算子。可以在算法计算前快速、自动地评估GPU的加速效果,确定计算算子的运行硬件,高效地调度资源。

技术研发人员:张燕;夏正勋
受保护的技术使用者:星环信息科技(上海)有限公司
技术研发日:2020.01.13
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-59520.html

最新回复(0)