一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种针对CPU-GPU两级并行计算的自动负载均衡方法

2022-04-27 03:55:06 来源:中国专利 TAG:

一种针对cpu-gpu两级并行计算的自动负载均衡方法
技术领域
1.本发明涉及计算机技术领域,尤其涉及一种针对cpu-gpu两级并行计算的自动负载均衡方法。


背景技术:

2.1971年,英特尔推出的全球第一颗通用型微处理器,公司的联合创始人之一戈登摩尔(gordon moore),就提出“摩尔定律”——每过18个月,芯片上可以集成的晶体管数目将增加一倍。在一块芯片上集成的晶体管数目越多,意味着运算速度即主频就更快。但到了2005年,当主频接近4ghz时,英特尔和amd发现,速度也会遇到自己的极限:那就是单纯的主频提升,已经无法明显提升系统整体性能,于是intel/amd开始生产双核、多核cpu。
3.增加核心数目是为了增加线程数,操作系统是通过线程来执行任务的,一般情况下它们是1:1的对应关系,也就是说四核cpu一般拥有四个线程。但intel引入超线程技术后,使核心数与线程数形成1:2的关系,如四核core i7支持八线程(或者八个逻辑核心),大幅提升了其多任务、多线程性能。
4.现有计划中,在处理的任务数量大的时候,多线程cpu可能会遇到性能的瓶颈,gpu也可以对任务并行处理,因此导致计算效率不高。


技术实现要素:

5.本发明提出一种针对cpu-gpu两级并行计算的自动负载均衡方法,用以解决或者至少部分解决现有技术中存在的计算效率不高的技术问题。
6.为了解决上述技术问题,本发明提供了一种针对cpu-gpu两级并行计算的自动负载均衡方法,包括:
7.s1:获取硬件性能参数,硬件性能参数为cpu核数;
8.s2:根据cpu核数获取在cpu中创建的线程数;
9.s3:获取并行计算的总任务数与多线程校正参数,并计算单个任务分别在cpu和gpu上执行所需的时间;
10.s4:在总执行时间最短的情况下,根据在cpu中创建的线程数、并行计算的总任务数、多线程校正参数、单个任务在cpu上执行所需的时间以及单个任务在gpu上执行所需的时间,计算分配给cpu的任务数量和分配给gpu的任务数量,其中,分配给cpu的任务数量与分配给gpu的任务数量之和为总任务数。
11.在一种实施方式中,步骤s4包括:
12.根据公式计算分配给cpu的任务数量,公式为:
[0013][0014]
根据公式计算分配给gpu的任务数量,公式为:
[0015][0016]
其中,s1表示分配给cpu的任务数量,s2表示分配给gpu的任务数量,k表示在cpu中创建的线程数,s表示并行计算的总任务数,α表示多线程校正参数,r
gpu
表示gpu的单个任务的计算加速比,t
cpu
表示单个任务在cpu上执行所需的时间,t
gpu
表示单个任务在gpu上执行所需的时间。
[0017]
本技术实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
[0018]
本发明提供的本发明涉及一种针对cpu-gpu两级并行计算的自动负载均衡方法,首先获取cpu核数,根据cpu核数获取在cpu中创建的线程数;并获取并行计算的总任务数与多线程校正参数,并计算单个任务分别在cpu和gpu上执行所需的时间;在总执行时间最短的情况下计算了cpu和gpu之间的最佳任务分配,以实现确保cpu和gpu同时完成任务,因此提高了计算效率。
附图说明
[0019]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]
图1为本发明实施例提供的一种针对cpu-gpu两级并行计算的自动负载均衡方法流程图;
[0021]
图2为本发明实施例中当总的计算时间最短时,cpu和gpu的计算时间图。
具体实施方式
[0022]
本发明提供一种针对cpu-gpu两级并行计算的自动负载均衡方法。两级并行的平衡受许多因素的影响,例如任务量,计算复杂性,cpu性能,多线程开销和gpu性能。因此,本发明提出了最优的任务分配策略,以实现最短的总执行时间。而对于负载平衡问题,需要计算cpu和gpu之间的最佳任务分配,以实现确保cpu和gpu同时完成任务,并尽可能减少总执行时间。
[0023]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0024]
本发明实施例提供了一种针对cpu-gpu两级并行计算的自动负载均衡方法,包括:
[0025]
s1:获取硬件性能参数,硬件性能参数为cpu核数;
[0026]
s2:根据cpu核数获取在cpu中创建的线程数;
[0027]
s3:获取并行计算的总任务数与多线程校正参数,并计算单个任务分别在cpu和gpu上执行所需的时间;
[0028]
s4:在总执行时间最短的情况下,根据在cpu中创建的线程数、并行计算的总任务数、多线程校正参数、单个任务在cpu上执行所需的时间以及单个任务在gpu上执行所需的时间,计算分配给cpu的任务数量和分配给gpu的任务数量,其中,分配给cpu的任务数量与分配给gpu的任务数量之和为总任务数。
[0029]
本技术发明人通过大量的研究与实践发现:在多线程cpu和gpu两级并行计算的过程中,为了提高运行效率,需要合理地划分任务的分配比例。利用负载均衡的思想,通过任务调度,可以使得多线程cpu和gpu上的任务负载达到均衡状态,两者完成各自任务所需的执行时间相等,这时任务的总执行时间最短,cpu和gpu两级并行计算功效发挥到最大。
[0030]
负载均衡,是一种计算机技术,用来在多个计算机(计算机集群)、网络连接、cpu、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。在cpu-gpu两级并行计算中,将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(多线程cpu和gpu)进行执行。是提升计算机运行效率,实现高性能计算的终极解决方案。
[0031]
请参见图1,为本发明实施例提供的一种针对cpu-gpu两级并行计算的自动负载均衡方法流程图。两级并行的平衡受许多因素的影响,例如任务量,计算复杂性,cpu性能,多线程开销和gpu性能。因此,提出了最优的任务分配策略,以实现最短的总执行时间。对于负载平衡问题,需要计算cpu和gpu之间的最佳任务分配,以实现确保cpu和gpu同时完成任务,并尽可能减少总执行时间。
[0032]
在一种实施方式中,步骤s4包括:
[0033]
根据公式计算分配给cpu的任务数量,公式为:
[0034][0035]
根据公式计算分配给gpu的任务数量,公式为:
[0036][0037]
其中,s1表示分配给cpu的任务数量,k表示在cpu中创建的线程数,s表示并行计算的总任务数,α表示多线程校正参数,r
gpu
表示gpu的单个任务的计算加速比,t
cpu
表示单个任务在cpu上执行所需的时间,t
gpu
表示单个任务在gpu上执行所需的时间。
[0038]
具体来说,对于负载平衡问题,需要计算cpu和gpu之间的最佳任务分配,以实现确保cpu和gpu同时完成任务,并尽可能减少总执行时间。如表1所示,许多因素会影响执行时间,包括数据量(s)、计算复杂度(o)、cpu(h
cpu
)和gpu(h
gpu
)的硬件性能以及cpu多线程开销(a)。
[0039]
表1了影响总执行时间的关键因素
[0040]
[0041][0042]
(s)、(o)在不同的任务中可能会有所不同。硬件性能可能受许多复杂因素的影响,例如cpu频率、cpu内核数、总线频率、gpu的计算能力、带宽以及缓存和内存大小。考虑到测量这些因素的复杂性,使用一个数据块的计算时间来测量硬件性能(如表2所示)。表3列出了以后使用的其他变量。
[0043]
表2衡量关键因素的变量
[0044][0045]
表3其他变量
[0046]
变量含义s1s1 s2=s,分配给cpu的块(任务)的数量s2s1 s2=s,分配给gpu的块的数量kcpu上创建的线程的数量t
mt
cpu多线程在s1上计算的时间t
gpu
gpu在s2上计算的时间t
hybrid
两级并行在数据量s上的总执行时间min{t
hybrid
}t
hybrid
的最小值r
mt
cpu多线程执行的单块的计算的加速比r
gpu
gpu的单块的计算加速比max{r
hybrid
}两级并行的在s块上计算的最大加速比
[0047]
下面具体说明本发明提供的负载均衡的推导和实现过程。
[0048]
本技术的自动负载均衡方法实质上是任务分配,而任务分配是计算三元组,它由分配给cpu的任务数、分配给gpu的任务数以及在cpu上创建的线程数组成。最终目标是使用此三元组的任务分配策略尽可能地缩短总执行时间。定义s1为分配给cpu的任务数,s2为分配给gpu的任务数,k为在cpu中创建的线程数,三元组可以表示为
[0049]
{s1,s2,k}
ꢀꢀꢀꢀꢀ
(1)
[0050]
其中,s1 s2=s并且0≤k≤min{s1,n-1}。
[0051]
然后,在两级并行下,s1任务的cpu多线程计算时间为
[0052]
t
mt
=αs1t
cpu
/k
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0053]
s2任务的gpu计算时间为
[0054]
t
gpu
=s2t
gpu
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0055]
因此,将两级并行的数据s的总执行时间表示为
[0056]
t
hybrid
=max{t
mt
,t
gpu
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0057]
=max{αs1t
cpu
/k,s2t
gpu
}
ꢀꢀ
(5)
[0058]
由此可知,总执行时间为多线程cpu和gpu两者运行时间最长的一个,当且仅当t
mt
=t
gpu
时,即在多线程cpu和gpu上运行时间相等时,总执行时间最短。
[0059]
与串行执行相比,基于cpu多线程执行的一个任务的计算的加速比为
[0060][0061]
而基于gpu执行的一个任务的计算的加速比为
[0062][0063]
最短的时间可以表示为
[0064][0065]
在这种情况下,从而确定分配给cpu和gpu的任务数分别为
[0066][0067][0068]
由以上公式可以得到在总执行时间最短情况下,分配到cpu和gpu上的任务数目,并且可以求出最短的总执行时间。
[0069]
请参见图2,给出了t
mt
和t
gpu
在总计算时间最短时的计算时间图。
[0070]
根据本发明提供的方法,可以得出以下结论:
[0071]
结论1
[0072]
与串行执行相比,基于二级并行的s个任务计算的最大加速比为
[0073][0074]
等式(11)可以由等式(6),(7)和(8)推出。
[0075]
由此公式可以得到两级并行与只使用cpu时串行运行的加速比。
[0076]
结论2
[0077]
s1,s2,s3∈n,当且仅当并且时,t
hybrid
达到最小值。符号表示向下取整,取不大于括号里式子的最近整数。
[0078]
在多核cpu环境中,线程数由分配给cpu的核数和任务数决定。如果cpu线程数超过cpu内核数,则将导致内核上下文切换的额外开销。同时,gpu占用一个cpu线程,负责调度gpu。因此,在cpu上创建的线程数k应小于等于cpu内核数-1。cpu上每一个线程处理一个任务,所以k应小于等于分配在cpu上的任务数目将s1,满足条件
[0079]
0≤k≤min{s1,n-1}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(12)因为s1和k相关,而k≤s1,得到
[0080][0081]
因此
[0082][0083]
由此得到在cpu上创建的线程数。
[0084]
最后,计算方程式(1)的三元组。
[0085]
{s1,s2,k}(14)其中,并且并且
[0086]
最终得到cpu与gpu上的任务分配数目s1和s2,以及cpu划分的线程数k。
[0087]
下面通过一个具体示例说明本发明提供的方法的实现过程,
[0088]
首先根据cpu型号得到cpu核数,核数即为cpu最大并行线程数,其中一个线程作为主线程用于调度任务,其余线程执行任务。
[0089]
根据cpu核数获取在cpu中创建的线程数,例如4核cpu则在cpu中创建的线程数k取3。
[0090]
获取并行计算的总任务数与多线程校正参数,并计算单个任务分别在cpu和gpu上执行所需的时间。例如使用nvidia tesla c2075 gpu,使用高斯滤波算法作为计算任务,输入数据的图片大小为370*670,图片数量即任务总数s取1000,多线程校正参数α可以预先设定,例如取1.15,单个任务在cpu和gpu上试运行,得到t
cpu
为0.079s和t
gpu
为0.005s;
[0091]
再根据公式(9)、(10)得到s1和s2,分别为159和841,其中cpu上线程数为3,则每个线程分配53个任务。
[0092]
有上述方法可知,根据公式(11)得到加速比18.108,根据公式(13)得到任务总计算时间4.412s,此时加速比最大,任务总计算时间最小,分配方案最优。
[0093]
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献