一种基于OPENCL的异构共同计算均衡方法.pdf

上传人:小** 文档编号:1665163 上传时间:2018-07-03 格式:PDF 页数:10 大小:833.05KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510093877.4

申请日:

2015.03.02

公开号:

CN104714850A

公开日:

2015.06.17

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/50申请日:20150302|||公开

IPC分类号:

G06F9/50; G06F9/38

主分类号:

G06F9/50

申请人:

心医国际数字医疗系统(大连)有限公司

发明人:

邰从越

地址:

116023辽宁省大连市大连高新技术产业园区软件园东路5号3号楼403-404A

优先权:

专利代理机构:

北京科亿知识产权代理事务所(普通合伙)11350

代理人:

汤东凤; 张波涛

PDF下载: PDF下载
内容摘要

本发明公开了一种基于OPENCL的异构共同计算均衡方法,该方法应用于CPU+GPU混合异构共同计算系统中,所述CPU+GPU混合异构共同计算系统划分成三个并行层次:节点间并行、节点内CPU与GPU异构并行、设备内并行;负载均衡性需要在上述3个层次上分别设计;在该方法中,对计算任务进行划分时按照输入数据划分,划分时使任务块的计算时间与其它GPU的一次数据传输的时间相等。采用本发明公开的技术方案,较好地实现了CPU+GPU混合异构计算机系统的负载均衡。

权利要求书

权利要求书
1.  一种基于OPENCL的异构共同计算均衡方法,该方法应用于CPU+GPU混合异构共同计算系统中,
所述CPU+GPU混合异构共同计算系统划分成三个并行层次:节点间并行、节点内CPU与GPU异构并行、设备内并行,所述设备是指CPU或GPU;CPU+GPU异构共同计算模式为:节点间分布式,节点内异构式,设备内共享式;所述节点间分布式是指节点间采用了分布式的计算方式,所述节点内异构式是指每个节点内部包含一个多核CPU、一个或多个GPU,节点内部采用主从式编程模型,即每个GPU需要由CPU进程或线程调用;所述设备内并行是指每个节点内的所有多核CPU采用了共享存储模型,这些CPU核并行计算,GPU设备内有自己独立的DRAM存储,GPU设备也是共享存储模型,在GPU上采用OpenCL编程控制GPU众核的并行计算;在该系统中,由一个CPU进程/线程负责复杂逻辑和事务处理,其它CPU进程/线程负责小部分并行计算,GPU负责大部分并行计算;
在该方法中,节点内和节点间均采用MPI进程,设计负载均衡时,只需做到进程间或设备之间的负载均衡和CPU设备内OpenMP线程负载均衡、GPU设备内CUDA线程负载均衡即可;对于设备内,GPU设备上只要保证同一warp内的线程负载均衡即可;
在该方法中,采用动态负载均衡方式,即在任务执行过程中,根据各GPU的运行情况重新调整负载分配,动态分配任务;对计算任务进行划分时按照输入数据划分,对于矩阵A×B=C问题而言,按输入数据划分可以分解为

矩阵A与矩阵B分别按行与列划分为若干数据块,每个数据块的计算为一个任务,每次传输矩阵A与矩阵B的一个数据块至GPU,计算完成之后将数据传回,然后分配下一个任务。

2.  根据权利要求1所述的方法,其特征在于,优选的,对输入数据划分时,使任务块的计算时间与其它GPU的一次数据传输的时间相等。

3.  根据权利要求1或2所述的方法,其特征在于,对计算任务进行划分时,以“按照输出数据划分”替代“按照输入数据划分”,让不同的GPU做不同位置的结果计算,计算结果完全独立,没有依赖性,对于矩阵A×B=C问题而言,按输出数据划分可以分解为

将矩阵C分块,将不同块的位置传递给各GPU,当GPU计算完当前块之后可立即分配下一个任务,这样可以做到负载均衡。

4.  根据权利要求1-3中任一项所述的方法,其特征在于,采用输入和输出同时划分的方式进行数据划分。

5.  根据权利要求1-4中任一项所述的方法,其特征在于,CPU+GPU混合异构共同计算系统采用主从式MPI通信机制,在节点0上多起一个进程作为主进程,控制其它所有进程。

6.  根据权利要求1-5中任一项所述的方法,其特征在于,每个节点上启动3个计算进程,其中两个控制GPU设备,一个控制其余所有CPU核的并行。

7.  根据权利要求1-6中任一项所述的方法,其特征在于,把节点内的所有多核CPU看作一个设备,采用MPI进程或OpenMP线程、pThread线程控制这些CPU核的并行计算。

8.  根据权利要求1-7中任一项所述的方法,其特征在于,CPU+GPU混合异构共同计算系统中各个节点之间通过网络进行连接,节点间采用了分布式的计算方式,采用MPI消息通信的并行编程语言。

9.  根据权利要求1-8中任一项所述的方法,其特征在于,CPU+GPU混合异构共同计算系统中所述CPU只负责复杂逻辑和事务处理,GPU进行大规模并行计算。

10.  根据权利要求1-9中任一项所述的方法,其特征在于,采用静态负载均衡方式,即在任务执行之前,按各GPU的计算能力比例将任务均匀划分到各GPU上。

说明书

说明书一种基于OPENCL的异构共同计算均衡方法
技术领域
本发明涉及计算机计算领域,具体涉及一种基于OPENCL的异构共同计算均衡方法。
背景技术
OpenCL(全称Open Computing Language,开放运算语言)是面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器。
近年来,基于CPU+GPU的混合异构计算系统开始逐渐成为国内外高性能计算领域的热点研究方向。在实际应用中,许多基于CPU+GPU的混合异构计算机系统表现出了良好的性能。但是,由于各种历史和现实原因的制约,异构计算仍然面临着诸多方面的问题,其中最突出的问题是程序开发困难,尤其是扩展到集群规模级别时这个问题更为突出,主要表现在扩展性、负载均衡等方面。
发明内容
本发明为解决上述问题,提供了一种基于OPENCL的异构共同计算均衡方法,该方法应用于CPU+GPU混合异构共同计算系统中,所述CPU+GPU混合异构共同计算系统划分成三个并行层次:节点间并行、节点内CPU与GPU异构并行、设备内并行,所述设备是指CPU或GPU;CPU+GPU异构共同计算模式为:节点间分布式,节点内异构式,设备内共享式;所述节点间分布式是指节点间采用了分布式的计算方式,所述节点内异构式是指每个节点内部包含一个多核CPU、一个或多个GPU,节点内部采用主从式编程模型,即每个GPU需要由CPU进程或线程调用;所述设备内并行是指每个节点内的所有多核CPU采用了共享存储模型,这些CPU核并行计算,GPU设备内有自己独立的DRAM存储,GPU设备也是共享存储模型,在GPU上采用OpenCL编程控制GPU众核的并行计算;在该系统中,由一个CPU进程/线程负责复杂逻辑和事务处理,其它CPU进程/线程负责小部分并行计算,GPU负责大部分并行计算;
在该方法中,节点内和节点间均采用MPI进程,设计负载均衡时,只需做到进程间或设备之间的负载均衡和CPU设备内OpenMP线程负载均衡、GPU设备内CUDA线程负载均衡即可;对于设备内,GPU设备上只要保证同一warp内的线程负载均衡即可;
在该方法中,采用动态负载均衡方式,即在任务执行过程中,根据各GPU的运行情况重新调整负载分配,动态分配任务;对计算任务进行划分时按照输入数据划分,对于矩阵A×B=C问题而言,按输入数据划分可以分解为

矩阵A与矩阵B分别按行与列划分为若干数据块,每个数据块的计算为一个任务,每次传输矩阵A与矩阵B的一个数据块至GPU,计算完成之后将数据传回,然后分配下一个任务。
优选地,对输入数据划分时,使任务块的计算时间与其它GPU的一次数据传输的时间相等。
可替代地,对计算任务进行划分时,以“按照输出数据划分”替代“按照输入数据划分”,让不同的GPU做不同位置的结果计算,计算结果完全独立,没有依赖性,对于矩阵A×B=C问题而言,按输出数据划分可以分解为

将矩阵C分块,将不同块的位置传递给各GPU,当GPU计算完当前块之后可立即分配下一个任务,这样可以做到负载均衡。
可替代地,采用输入和输出同时划分的方式进行数据划分。
优选地,CPU+GPU混合异构共同计算系统采用主从式MPI通信机制,在节点0上多起一个进程作为主进程,控制其它所有进程。
优选地,每个节点上启动3个计算进程,其中两个控制GPU设备,一个控制其余所有CPU核的并行。
优选地,把节点内的所有多核CPU看作一个设备,采用MPI进程或OpenMP 线程、pThread线程控制这些CPU核的并行计算。
优选地,CPU+GPU混合异构共同计算系统中各个节点之间通过网络进行连接,节点间采用了分布式的计算方式,采用MPI消息通信的并行编程语言。
可替代地,CPU+GPU混合异构共同计算系统中所述CPU只负责复杂逻辑和事务处理,GPU进行大规模并行计算。
可替代地,采用静态负载均衡方式,即在任务执行之前,按各GPU的计算能力比例将任务均匀划分到各GPU上。
本发明相较于现有技术较好地实现了CPU+GPU的混合异构计算机系统的负载均衡。
附图说明
图1为CPU+GPU异构共同计算集群架构;
图2为基于多GPU的OpenCL程序结构示意图;
图3为CPU+GPU共同计算示意图(以每个节点2个GPU为例)。
具体实施方式
下文将详细参考附图1至3描述本发明的优选实施例,借此对本发明如何应用技术手段来解决技术问题,并达到技术效果的实现过程能充分理解并据以实施。为了全面理解本发明,在以下详细描述中提到了诸多细节,但本领域技术人员应该理解,本发明可以无需这些具体细节而实现。
在科研计算领域,通常使用计算机集群来实现高性能计算,一个超级计算机通常包含数万个节点,每个节点一般部署多个CPU以及多个GPU,在节点之间、节点内部等有多种编程模型可实现多设备、多节点的协同计算,即CPU+GPU异构共同计算模式。CPU+GPU异构共同计算集群如图1所示,CPU+GPU异构集群可以划分成三个并行层次:节点间并行、节点内CPU与GPU异构并行、设备(CPU或GPU)内并行。根据这三个层次我们可以得到CPU+GPU异构共同计算模式为:节点间分布式+节点内异构式+设备内共享式。
1、节点间分布式
CPU+GPU异构共同计算集群与传统的CPU集群一样,各个节点之间通过网络进行连接,因此,节点间采用了分布式的计算方式,可以采用MPI消息通信的并 行编程语言。
2、节点内异构式
CPU+GPU异构共同计算集群中,每个节点内部包含一个多核CPU和一个或多个GPU,节点内部采用主从式编程模型,即每个GPU需要由CPU进程或线程调用。
由于多核CPU计算能力也很强,因此,在多数情况下,CPU也会参与部分并行计算,即CPU+GPU共同计算:由一个CPU进程/线程负责复杂逻辑和事务处理等串行计算,其它CPU进程/线程负责小部分并行计算,GPU负责大部分并行计算。
在CPU+GPU共同计算模式下,我们把所有的CPU统称为一个设备(device),如双路8核CPU共有16个核,我们把这16个核统称成一个设备;每个GPU卡成为一个设备。根据这种划分方式,我们可以采用MPI进程或OpenMP线程控制节点内的各设备之间的通信和数据划分。
3、设备内共享式
1)CPU设备:每个节点内的所有多核CPU采用了共享存储模型,因此,把节点内的所有多核CPU看作一个设备,可以采用MPI进程或OpenMP线程、pThread线程控制这些CPU核的并行计算。
2)GPU设备:GPU设备内有自己独立的DRAM存储,GPU设备也是共享存储模型,在GPU上采用OpenCL编程控制GPU众核的并行计算。
基于OpenCL编写跨平台的应用编程分多个步骤,首先是查找支持OpenCL的硬件设备并探查这些设备的参数,然后选择一个平台创建上下文(context),OpenCL规定,一个上下文可以包含多个计算设备(device),但是必须在一个平台(platform)之内,不同的设备生产厂商对应着不同的平台,因此,要充分利用一个异构计算系统内由多个厂商生产的设备时,必须为多个平台建立多个上下文,从而调动全部的OpenCL设备。基于多GPU的OpenCL程序结构如图2所示。
下面以介绍多节点CPU+GPU共同计算任务划分和负载均衡,进程和线程与CPU核和GPU设备对应关系如图3所示。若采用主从式MPI通信机制,我们在节点0上多起一个进程(0号进程)作为主进程,控制其它所有进程。每个节点上启动3个计算进程,其中两个控制GPU设备,一个控制其余所有CPU核的并行,在GPU内采用OpenCL并行,在CPU设备内采用OpenMP多线程并行。
由于CPU+GPU共同计算模式分为3个层次,那么负载均衡性也需要在这3个层次上分别设计。在模式2的编程方式下,节点内和节点间均采用MPI进程,合二为一,设计负载均衡时,只需要做到进程间(设备之间)的负载均衡和CPU设备内OpenMP线程负载均衡、GPU设备内CUDA线程负载均衡即可。
对于设备内,采用的是共享存储器模型,CPU设备上的OpenMP线程可以采用schedule(static/dynamic/guided)方式;GPU设备上只要保证同一warp内的线程负载均衡即可。
对于CPU+GPU共同计算,由于CPU和GPU计算能力相差很大,因此,在对任务和数据划分时不能给CPU设备和GPU设备划分相同的任务/数据量,这就增加了CPU与GPU设备间负载均衡的难度。负载均衡有静态和动态两种方式,静态方式是在任务执行之前,按各GPU的计算能力比例将任务均匀划分到各GPU上,动态方式是在任务执行过程中,根据各GPU的运行情况重新调整负载分配,动态分配任务,良好的静态划分能减少任务执行过程中动态调整的开销,但动态调整是保证多GPU平衡执行任务的必要手段。
异构计算中很多操作都是异步的,如内存拷贝操作、kernel执行操作等,从这些命令的发出到在GPU上的执行,往往会有较大的延迟,因此,细粒度的任务划分虽然可以避免负载不均衡,但主线程太多的任务调度会降低GPU的利用率。如果是粗粒度划分,由于主存被各个GPU共享,同一时刻只允许主处理器向某一个GPU传输数据,过大的数据传输会造成其它GPU多长时间的等待。
计算任务的划分可以按照输入数据划分和按输出数据划分,以矩阵A×B=C问题为例,按输入数据划分,可以分解为

矩阵A与矩阵B分别按行与列划分为若干数据块,每个数据块的计算为一个任务,每次传输矩阵A与矩阵B的一个数据块至GPU,计算完成之后将数据传回,然后分配下一个任务。在这种情况下,理想的划分因子是使任务块的计算时间与其它GPU的一次数据传输的时间相等。
另外,还可以将任务按输出数据划分,让不同的GPU做不同位置的结果计算, 计算结果完全独立,没有依赖性。以矩阵A×B=C问题为例,按输出数据划分,可以分解为

将矩阵C分块,将不同块的位置传递给各GPU,当GPU计算完当前块之后可立即分配下一个任务,这样可以做到负载均衡,但是按输出数据划分存在一个问题,那就是对输入数据的需求不确定而需要将矩阵A、B全部拷贝至GPU,这将会造成初始时GPU的等待,使IO或显存容量成为瓶颈。
由于按输入或按输出划分都存在不同的缺点,我们可以采用输入和输出同时划分的方式进行数据划分。
以上所述仅为本发明的较佳实施例,并不用于限制本发明,凡在本发明精神和原则之内所做的任何修改、等同替换和改进等,均包含于本发明的保护范围之内。

一种基于OPENCL的异构共同计算均衡方法.pdf_第1页
第1页 / 共10页
一种基于OPENCL的异构共同计算均衡方法.pdf_第2页
第2页 / 共10页
一种基于OPENCL的异构共同计算均衡方法.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《一种基于OPENCL的异构共同计算均衡方法.pdf》由会员分享,可在线阅读,更多相关《一种基于OPENCL的异构共同计算均衡方法.pdf(10页珍藏版)》请在专利查询网上搜索。

本发明公开了一种基于OPENCL的异构共同计算均衡方法,该方法应用于CPU+GPU混合异构共同计算系统中,所述CPU+GPU混合异构共同计算系统划分成三个并行层次:节点间并行、节点内CPU与GPU异构并行、设备内并行;负载均衡性需要在上述3个层次上分别设计;在该方法中,对计算任务进行划分时按照输入数据划分,划分时使任务块的计算时间与其它GPU的一次数据传输的时间相等。采用本发明公开的技术方案,较好。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1