CN104714850B - 一种基于opencl的异构共同计算均衡方法 - Google Patents

一种基于opencl的异构共同计算均衡方法 Download PDF

Info

Publication number
CN104714850B
CN104714850B CN201510093877.4A CN201510093877A CN104714850B CN 104714850 B CN104714850 B CN 104714850B CN 201510093877 A CN201510093877 A CN 201510093877A CN 104714850 B CN104714850 B CN 104714850B
Authority
CN
China
Prior art keywords
gpu
cpu
node
equipment
isomery
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510093877.4A
Other languages
English (en)
Other versions
CN104714850A (zh
Inventor
邰从越
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DALIAN SENYINT DIGITAL MEDICAL SYSTEM Co Ltd
Original Assignee
DALIAN SENYINT DIGITAL MEDICAL SYSTEM Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by DALIAN SENYINT DIGITAL MEDICAL SYSTEM Co Ltd filed Critical DALIAN SENYINT DIGITAL MEDICAL SYSTEM Co Ltd
Priority to CN201510093877.4A priority Critical patent/CN104714850B/zh
Publication of CN104714850A publication Critical patent/CN104714850A/zh
Application granted granted Critical
Publication of CN104714850B publication Critical patent/CN104714850B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

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

Description

一种基于OPENCL的异构共同计算均衡方法
技术领域
本发明涉及计算机计算领域,具体涉及一种基于OPENCL的异构共同计算均衡方法。
背景技术
OpenCL(全称OpenComputingLanguage,开放运算语言)是面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(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或显存容量成为瓶颈。
由于按输入或按输出划分都存在不同的缺点,我们可以采用输入和输出同时划分的方式进行数据划分。
以上所述仅为本发明的较佳实施例,并不用于限制本发明,凡在本发明精神和原则之内所做的任何修改、等同替换和改进等,均包含于本发明的保护范围之内。

Claims (10)

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进程/线程负责复杂逻辑和事务处理;
在该方法中,节点内和节点间均采用MPI进程;
在该方法中,采用动态负载均衡方式,即在任务执行过程中,根据各GPU的运行情况重新调整负载分配,动态分配任务;对计算任务进行划分时按照输入数据划分,对于矩阵A×B=C问题而言,按输入数据划分可以分解为
矩阵A与矩阵B分别按行与列划分为若干数据块,每个数据块的计算为一个任务,每次传输矩阵A与矩阵B的一个数据块至GPU,计算完成之后将数据传回,然后分配下一个任务。
2.根据权利要求1所述的方法,其特征在于,对输入数据划分时,使任务块的计算时间与其它GPU的一次数据传输的时间相等。
3.根据权利要求1或2所述的方法,其特征在于,对计算任务进行划分时,以“按照输出数据划分”替代“按照输入数据划分”,让不同的GPU做不同位置的结果计算,计算结果完全独立,没有依赖性,对于矩阵A×B=C问题而言,按输出数据划分可以分解为
将矩阵C分块,将不同块的位置传递给各GPU,当GPU计算完当前块之后可立即分配下一个任务。
4.根据权利要求1或2的方法,其特征在于,采用输入和输出同时划分的方式进行数据划分。
5.根据权利要求1或2所述的方法,其特征在于,CPU+GPU混合异构共同计算系统采用主从式MPI通信机制,在节点0上多起一个进程作为主进程,控制其它所有进程。
6.根据权利要求1或2所述的方法,其特征在于,每个节点上启动3个计算进程,其中两个控制GPU设备,一个控制其余所有CPU核的并行。
7.根据权利要求1或2所述的方法,其特征在于,把节点内的所有多核CPU看作一个设备,采用MPI进程或OpenMP线程、pThread线程控制这些CPU核的并行计算。
8.根据权利要求1或2所述的方法,其特征在于,CPU+GPU混合异构共同计算系统中各个节点之间通过网络进行连接,节点间采用了分布式的计算方式,采用MPI消息通信的并行编程语言。
9.根据权利要求1或2所述的方法,其特征在于,CPU+GPU混合异构共同计算系统中所述CPU只负责复杂逻辑和事务处理,GPU进行大规模并行计算。
10.根据权利要求1或2所述的方法,其特征在于,采用静态负载均衡方式,即在任务执行之前,按各GPU的计算能力比例将任务均匀划分到各GPU上。
CN201510093877.4A 2015-03-02 2015-03-02 一种基于opencl的异构共同计算均衡方法 Active CN104714850B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510093877.4A CN104714850B (zh) 2015-03-02 2015-03-02 一种基于opencl的异构共同计算均衡方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510093877.4A CN104714850B (zh) 2015-03-02 2015-03-02 一种基于opencl的异构共同计算均衡方法

Publications (2)

Publication Number Publication Date
CN104714850A CN104714850A (zh) 2015-06-17
CN104714850B true CN104714850B (zh) 2016-03-30

Family

ID=53414215

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510093877.4A Active CN104714850B (zh) 2015-03-02 2015-03-02 一种基于opencl的异构共同计算均衡方法

Country Status (1)

Country Link
CN (1) CN104714850B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107193657A (zh) * 2017-05-18 2017-09-22 安徽磐众信息科技有限公司 基于solaflare网卡的低延迟服务器
CN107273333A (zh) * 2017-06-16 2017-10-20 恒达新创(北京)地球物理技术有限公司 基于gpu+cpu异构平台的三维大地电磁反演并行方法
CN107301155A (zh) * 2017-06-27 2017-10-27 郑州云海信息技术有限公司 一种数据处理方法及处理装置
CN107888697B (zh) * 2017-11-24 2020-07-14 北京航天自动控制研究所 一种负载均衡算法中的节点锁定方法
CN108153593A (zh) * 2017-12-22 2018-06-12 合肥寰景信息技术有限公司 一种高并发的gpu集群架构及其负载均衡方法
CN108710536B (zh) * 2018-04-02 2021-08-06 上海交通大学 一种多层次细粒度的虚拟化gpu调度优化方法
CN110502331A (zh) * 2018-05-16 2019-11-26 北京理工大学 一种临床医疗数据的异构计算方法
CN109542596B (zh) * 2018-10-22 2023-09-12 西安交通大学 一种基于OpenCL内核任务的调度方法
CN109857543A (zh) * 2018-12-21 2019-06-07 中国地质大学(北京) 一种基于多节点多gpu计算的流线模拟加速方法
CN109885406B (zh) * 2019-02-27 2020-01-24 上海燧原智能科技有限公司 算子计算优化方法、装置、设备及存储介质
CN111651208B (zh) * 2020-05-08 2023-06-20 上海交通大学 面向异构众核并行计算机的模态并行计算方法及系统
CN112148504A (zh) * 2020-09-15 2020-12-29 海尔优家智能科技(北京)有限公司 目标消息的处理方法及装置、存储介质及电子装置
CN112306718B (zh) * 2020-11-18 2023-02-28 山东云海国创云计算装备产业创新中心有限公司 一种本地设备与异构设备之间的通信方法、系统及相关装置
CN112734583A (zh) * 2021-01-15 2021-04-30 深轻(上海)科技有限公司 一种寿险精算模型多线程并行计算方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011146197A1 (en) * 2010-05-20 2011-11-24 Apple Inc. Subbuffer objects
CN103064657A (zh) * 2012-12-26 2013-04-24 深圳中微电科技有限公司 单个处理器上实现多应用并行处理的方法及装置
CN103888771A (zh) * 2013-12-30 2014-06-25 中山大学深圳研究院 基于gpgpu技术的并行视频图像处理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011146197A1 (en) * 2010-05-20 2011-11-24 Apple Inc. Subbuffer objects
CN103064657A (zh) * 2012-12-26 2013-04-24 深圳中微电科技有限公司 单个处理器上实现多应用并行处理的方法及装置
CN103888771A (zh) * 2013-12-30 2014-06-25 中山大学深圳研究院 基于gpgpu技术的并行视频图像处理方法

Also Published As

Publication number Publication date
CN104714850A (zh) 2015-06-17

Similar Documents

Publication Publication Date Title
CN104714850B (zh) 一种基于opencl的异构共同计算均衡方法
Chen et al. Flinkcl: An opencl-based in-memory computing architecture on heterogeneous cpu-gpu clusters for big data
Pérache et al. MPC: A unified parallel runtime for clusters of NUMA machines
Agullo et al. Task‐based FMM for heterogeneous architectures
EP2657842B1 (en) Workload optimization in a multi-processor system executing sparse-matrix vector multiplication
Marowka Parallel computing on any desktop
CN107463442B (zh) 一种星载多核SoC任务级负载均衡并行调度方法
CN111368484B (zh) 基于神威架构的宇宙n体数值模拟优化方法及系统
Augonnet et al. A hierarchical fast direct solver for distributed memory machines with manycore nodes
Ashraf et al. Toward exascale computing systems: An energy efficient massive parallel computational model
Mohanamuraly et al. Hardware locality-aware partitioning and dynamic load-balancing of unstructured meshes for large-scale scientific applications
Nomizu et al. Implementation of xcalablemp device acceleration extention with opencl
Kistler et al. Petascale computing with accelerators
Yang et al. Performance‐based parallel loop self‐scheduling using hybrid OpenMP and MPI programming on multicore SMP clusters
Odajima et al. GPU/CPU work sharing with parallel language XcalableMP-dev for parallelized accelerated computing
Cao et al. Evaluating data redistribution in parsec
Woodward Perspectives on supercomputing: Three decades of change
Huang et al. A novel multi-CPU/GPU collaborative computing framework for SGD-based matrix factorization
Zhang et al. An effective 2-dimension graph partitioning for work stealing assisted graph processing on multi-FPGAs
Huang et al. Performance optimization of High-Performance LINPACK based on GPU-centric model on heterogeneous systems
CN117311948B (zh) Cpu与gpu异构并行的自动多重子结构数据处理方法
CN112148361B (zh) 一种用于处理器加密算法移植的方法及系统
US20230289189A1 (en) Distributed Shared Memory
Li et al. The Evolution of Supercomputer Architecture: A Historical Perspective
US20170132003A1 (en) System and Method for Hardware Multithreading to Improve VLIW DSP Performance and Efficiency

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A heterogeneous common computing equalization method based on OpenCL

Effective date of registration: 20201214

Granted publication date: 20160330

Pledgee: Guangfa Bank Co.,Ltd. Dalian Branch

Pledgor: SENYINT INTERNATIONAL DIGITAL MEDICAL SYSTEM (DALIAN) Co.,Ltd.

Registration number: Y2020980009225