本发明涉及工业设备状态数据分析领域,具体涉及到一种基于cpu/gpu异构环境的协同并行化机制。
背景技术:
基于cpu/gpu异构环境的协同并行化机制,cpu一方面管理gpu的工作,另一方面参与部分的计算任务,根据节点的负载情况,进行cpu-gpu灵活的选择。能够最大限度地加快运算和处理数据的速度。
最接近本发明的技术有:
(1)、基于cpu+gpu的协同计算模式:cpu仅负责管理gpu的工作,为gpu提供数据并接收gpu传回的数据,由gpu承担整个计算任务。cpu和cpu分工明确,但浪费了宝贵的cpu计算资源。
(2)、基于cpu+gpu的协同计算负载均衡性设计:cpu单独承担一部分的计算任务,但是此时的负载均衡很难做到。
由于各种历史和现实原因的制约,异构计算仍然面临着诸多方面的问题,其中最突出的问题是程序开发困难,尤其是扩展到集群规模级别时这个问题更为突出。主要表现在扩展性、负载均衡、自适应性、通信、内存等方面。
技术实现要素:
为解决现有技术中的缺点和不足,本发明提出了基于cpu/gpu异构环境的协同并行化机制,大大提高了计算和处理数据的速度。
本发明的技术方案为:
一种基于cpu/gpu异构环境的协同并行化机制,cpu不仅管理gpu的工作,还参与部分的计算任务,根据节点的负载情况适当灵活的选择cpu或gpu,包括以下步骤:
步骤(1)、算法在拓扑作业提交之前统计云环境中每一个计算节点的计算资源;
步骤(2)、当此拓扑提交后,获取拓扑每一个worker的资源请求,将此请求与每一个云节点的可用资源比较,当某云节点的可用资源大于此worker的请求时,将此worker规划到此节点;
步骤(3)、通过比较此worker对cpu和gpu资源的不同请求,分别计算出在使用cpu和使用gpu的情况下此worker能被容纳个数,选择出能容纳最多个数的处理器。
本发明的有益效果:
(1)通过cpu对gpu工作的管理,为gpu提供数据并接收gpu传回的数据,将gpu的运算效率在原始基础上得到了很大的提升;
(2)cpu和gpu协同运算,将cpu的计算能力充分的利用起来,对数据的处理更加灵活;
(3)通过运算时各个节点的负载情况,比较资源对cpu和gpu的不同请求,选择出能容纳最多个数的处理器,解决了负载不均衡的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于cpu/gpu异构环境下的协同并行处理流程图:
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明的基于cpu/gpu异构环境下的协同并行化机制的核心在于对cpu和gpu的合理选择,通过设置两个阈值:cpu使用率α和ram使用率β,根据节点的负载情况,进行cpu-gpu的灵活选择。
下面结合图,对基于cpu/gpu异构环境下的协同并行化机制的具体流程进行详细说明:
步骤(1)、算法在拓扑作业提交之前统计云环境中每一个计算节点的计算资源;
步骤(2)、当此拓扑提交后,获取拓扑每一个worker的资源请求,将此请求与每一个云节点的可用资源比较,当某云节点的可用资源大于此worker的请求时,将此worker规划到此节点;
步骤(3)、通过比较此worker对cpu和gpu资源的不同请求,分别计算出在使用cpu和使用gpu的情况下此worker能被容纳个数,选择出能容纳最多个数的处理器。
本发明的基于cpu/gpu异构环境下的协同并行化机制,一方面cpu向gpu提供数据并接受gpu传回的数据,另一方面cpu和gpu协同并行完成计算任务,通过设置阈值的方式,根据节点的负载情况合理选择cpu或者gpu,将目前大数据的计算和处理速度大大提高。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。