CN103617085A - 一种cpu+gpu协同计算并行框架 - Google Patents

一种cpu+gpu协同计算并行框架 Download PDF

Info

Publication number
CN103617085A
CN103617085A CN201310579257.2A CN201310579257A CN103617085A CN 103617085 A CN103617085 A CN 103617085A CN 201310579257 A CN201310579257 A CN 201310579257A CN 103617085 A CN103617085 A CN 103617085A
Authority
CN
China
Prior art keywords
gpu
cpu
thread
parallel
control
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.)
Pending
Application number
CN201310579257.2A
Other languages
English (en)
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.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry 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 Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN201310579257.2A priority Critical patent/CN103617085A/zh
Publication of CN103617085A publication Critical patent/CN103617085A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了一种CPU+GPU协同计算并行框架,涉及多线程并行计算技术及基于互斥锁实现线程间通信的技术,其包括:在单节点内,主线程处理输入参数并完成相应初始化操作,然后创建1+N个计算控制线程,分别控制节点内CPU设备和N个GPU设备,CPU控制线程再根据节点内计算核数创建若干并行计算线程。启用的GPU计算设备数和CPU计算线程数目可根据用户需要手动配置。本发明中,并行框架兼容纯CPU架构平台和CPU+GPU混合架构平台,并行框架内的各CPU/GPU设备控制线程读数据、计算、写数据操作均完全并行,大大提高了软件的平台适应性、并行效率和整体运行性能。

Description

一种CPU+GPU协同计算并行框架
技术领域   
    本发明涉及计算机高性能计算领域、科学计算领域,具体地说是一种CPU+GPU协同计算并行框架。
背景技术
硬件系统在新技术的推动下进行着快速演进,表现出更好的性能、更低的价格,如传统CPU从单核向多核直至众核发展。随着多核体系结构处理器的普及,应用软件多线程并行处理方式将逐渐成为主流。
另外,GPU除了传统的应用(图形显示,多用于游戏)以外,由于其超强的浮点计算能力,越来越多地应用在数学计算上,并且逐渐开始进入计算的主流。面向GPU编程的高级语言和开发工具也开始大量涌现。
那么,在多核CPU架构基础上扩展GPU架构设备的混合架构计算平台,将越来越多地被应用于密集计算领域,如高性能计算领域。
如何实现CPU+GPU协同计算,并且将CPU+GPU混合架构平台的计算性能发挥到极致,成为软件工程师面临的挑战。
发明内容
本发明就是针对这一挑战,在石油勘探行业所作的创新探索和实践。
本发明实现CPU多核架构处理器+GPU众核架构处理器的协同并行计算,大大提升了软件的计算效能。
    本发明提供了一种CPU+GPU协同计算并行框架,实现CPU多核架构处理器+GPU众核架构处理器的协同并行计算。本发明涉及多线程并行计算技术及基于互斥锁实现线程间通信的技术,包括:在单节点内,主线程处理输入参数并完成相应初始化操作,然后创建1+N个计算控制线程,分别控制节点内CPU设备和N个GPU设备,CPU控制线程再根据节点内计算核数创建若干并行计算线程,主线程根据总体计算进度计数变量更新进度条,各控制线程完成各自计算任务后自行退出,主线程等待所有控制线程退出后,完成后续操作,如对多个输出的数据体进行拼接等,主线程退出。
     协同计算并行框架,主线程初始化操作包括:扫描节点内GPU计算设备数和型号、节点内CPU计算核数,并为每个GPU设备创建一个GPU属性数据结构对象。
     协同计算并行框架,主线程为各控制线程分别创建一个输出数据体控制句柄。
    协同计算并行框架,CPU控制线程再创建M=SYSCORE_NUM-N个细粒度并行计算线程,SYSCORE_NUM为启用的系统核数,默认为自动检测的系统核数,N为启动的GPU设备数。 
    协同计算并行框架,各控制线程分别控制对应的设备进行计算,各控制线程完成一个单位的计算任务就更新一次总体计算进度计数变量的值;
       a)CPU控制线程根据启用的节点内计算核数创建若干更细粒度的并行计算线程;CPU端各细粒度并行计算线程采用互斥锁的方式通信,并依此竟争计算任务,实现动态负载均衡;
   b)GPU控制线程控制一个GPU计算设备,负责读数据、管理该GPU计算、输出结果数据;
   c)各控制线程采用动态负载均衡方式,即CPU控制线程和N个GPU控制线程根据计算能力强弱,通过互斥锁竟争计算任务;
   d)各控制线程使用线程化读、写接口,分别输出至一个独立的数据体,每个数据体都对应一个独立的头文件,头文件描述了数据体的基本属性;
    e)各控制线程完成各自的计算任务后自行退出。
     协同计算并行框架,总体计算进度计数变量为各控制线程共享的变量,且通过互斥锁加以保护。
     协同计算并行框架,主线程等待所有控制线程退出后,完成的后续操作包括:对多个输出的数据体进行拼接、销毁控制线程、销毁进度条、关闭数据体控制句柄、输出作业日志等。
     协同计算并行框架,对多个输出数据体进行拼接,并没有生成真正的数据体,而只是创建了一个最终输出数据体的头文件,该头文件描述了数据体的名字及基本属性,并指向其包含的多个数据体的头文件。
启用的GPU计算设备数和CPU计算线程数目可根据用户需要手动配置。本发明中,并行框架兼容纯CPU架构平台和CPU+GPU混合架构平台,并行框架内的各CPU/GPU控制线程读数据、计算、写数据操作均完全并行,大大提高了软件的平台适应性、并行效率和整体运行性能。
本发明的有益效果是:本发明实现了CPU多核架构计算设备和GPU众核架构计算设备的协同并行计算,并行框架兼容纯CPU架构平台和CPU+GPU混合架构平台,并行框架内的各CPU/GPU设备控制线程读数据、计算、写数据操作均完全并行,大大提高了软件的平台适应性、并行效率和整体运行性能。
附图说明
   附图1是CPU和GPU设备协同并行计算的示意图;
    附图2是CPU和N个GPU计算设备的任务划分示意图。
具体实施方式
   本发明实现CPU多核架构处理器+GPU众核架构处理器的协同并行计算。
本发明的目的在于提供一种CPU+GPU协同计算并行框架,利用当前主流的多核CPU计算设备和GPU架构设备协同并行计算,最大化提升硬件计算资源利用率,提升软件运行效能的方法。
为了使本发明的目的、技术方案和优点更加清晰,下面结合文字描述和实施例,对本发明作以下详细说明。
软件功能及运行流程概述:
1.      主线程参数预处理;
2.      主线程扫描GPU设备型号和数量,并为每个GPU设备创建结构化设备属性(Handle);
3.      主线程进行其它初始化操作,如创建进度条、创建输出数据体控制句柄等;
4.      主线程根据输入参数,确定启用的GPU设备数N、CPU计算核数M;
5.      主线程初始化控制线程参数数组;
6.      主线程为CPU设备创建1个控制线程,为各GPU设备分别创建一个GPU控制线程;
7.      各控制线程分别控制对应的设备进行计算,各控制线程完成一个单位的计算任务就更新一次总体计算进度计数变量的值;
a)      CPU控制线程管理CPU设备,根据启用的CPU计算核数(默认为自动检测的系统核数)创建更细粒度的并行计算线程,这些细粒度并行计算线程通过互斥锁竟争计算任务;
b)      一个GPU控制线程管理一个GPU设备,负责源数据由内存拷贝至GPU显存、启动GPU计算Kernel函数、结果数据由GPU显存拷贝至内存等操作;
c)      各控制线程通过共享的互斥锁竟争计算任务,实现动态负载均衡;
d)      各控制线程均独自进行读取源数据、源数据预处理、计算、输出结果数据等操作,各控制线程完全并行,分别输出独立的结果文件;
e)      各控制线程完成各自的计算任务后自行退出;
8.      主线程依据总体计算进度计数变量的值更新进度条;
9.      主线程待所有控制线程退出后,完成后继操作;
a)      对各控制线程输出的数据体进行拼接;
b)      销毁控制线程、销毁进度条、关闭数据体控制句柄、输出作业日志等;
10.  主线程退出,程序退出;
性能测试及分析
将该方法应用于某个典型的石油行业应用软件模块CPU+GPU协同计算并行程序开发项目,并利用真实数据进行性能测试。
1)        测试环境及测试数据
测试环境包括硬件环境、软件环境
测试机器 浪潮倚天桌面超算工作站
操作系统 Red Hat Enterprise Linux Server release 5.4 (Tikanga)
应用系统 GeoEast V2.4
CPU Intel(R) Xeon(R) CPU,  E5630  2.53GHz,双路4核,共8线程
内存 24G
磁盘类型 本地磁盘
编译器 Inter icpc, Version 11.0
数据库 oracle 10.3
多线程测试线程数 8
测试数据:
工区名称 青西
数据类型 叠后数据
线范围 2500 ~ 2800
道范围 3000 ~ 3390
时间范围 1000~4000ms
采样间隔 2ms
总样点数 12324711
数据大小 673.88M
2)       性能测试结果
版本 job_time(min) speedup
CPU 多线程(基准) 23.06 1.000
2GPU(C2070) 4.839 4.765
2CPU+2GPU(C2070) 4.21 5.477
2CPU+4GPU(C2070) 2.554 9.029
2GPU(K20M) 3.392 6.798
2CPU+2GPU(K20M) 3.3436 6.897
3)        性能测试结果分析
利用该方法对该软件模块进行CPU+GPU协同并行模式改造后,使该模块在兼容纯CPU架构平台的基础上,扩展了对GPU计算设备的支持,显著地提升了该软件模块的计算性能。

Claims (8)

1.一种CPU+GPU协同计算并行框架,其特征在于,包括:
主线程处理输入参数并完成相应初始化操作;
主线程创建1+N个并行的控制线程,分别控制节点内CPU设备和N个GPU设备;
主线程根据总体计算进度计数变量更新进度条;
各控制线程完成各自计算任务后自行退出;
主线程等待所有控制线程退出后,完成后续操作,如对多个输出的数据体进行拼接等;
主线程退出。
2.根据权利要求1所述的并行框架,其特征在于,主线程初始化操作包括:扫描节点内GPU计算设备数和型号、节点内CPU计算核数,并为每个GPU设备创建一个GPU属性数据结构对象。
3.根据权利要求1所述的并行框架,其特征在于,主线程为各控制线程分别创建一个输出数据体控制句柄。
4.根据权利要求3所述的并行框架,其特征在于,CPU控制线程再创建M=SYSCORE_NUM-N个细粒度并行计算线程,SYSCORE_NUM为启用的系统核数,默认为自动检测的系统核数,N为启动的GPU设备数。
5. 根据权利要求1所述的并行框架,其特征在于,各控制线程分别控制对应的设备进行计算,各控制线程完成一个单位的计算任务就更新一次总体计算进度计数变量的值;
       a)CPU控制线程根据启用的节点内计算核数创建若干更细粒度的并行计算线程;CPU端各细粒度并行计算线程采用互斥锁的方式通信,并依此竟争计算任务,实现动态负载均衡;
   b)GPU控制线程控制一个GPU计算设备,负责读数据、管理该GPU计算、输出结果数据;
   c)各控制线程采用动态负载均衡方式,即CPU控制线程和N个GPU控制线程根据计算能力强弱,通过互斥锁竟争计算任务;
   d)各控制线程使用线程化读、写接口,分别输出至一个独立的数据体,每个数据体都对应一个独立的头文件,头文件描述了数据体的基本属性;
    e)各控制线程完成各自的计算任务后自行退出。
6.根据权利要求1所述的并行框架,其特征在于,总体计算进度计数变量为各控制线程共享的变量,且通过互斥锁加以保护。
7.根据权利要求1所述的并行框架,其特征在于,主线程等待所有控制线程退出后,完成的后续操作包括:对多个输出的数据体进行拼接、销毁控制线程、销毁进度条、关闭数据体控制句柄、输出作业日志等。
8. 根据权利要求7所述的并行框架,其特征在于,对多个输出数据体进行拼接,并没有生成真正的数据体,而只是创建了一个最终输出数据体的头文件,该头文件描述了数据体的名字及基本属性,并指向其包含的多个数据体的头文件。
CN201310579257.2A 2013-11-19 2013-11-19 一种cpu+gpu协同计算并行框架 Pending CN103617085A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310579257.2A CN103617085A (zh) 2013-11-19 2013-11-19 一种cpu+gpu协同计算并行框架

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310579257.2A CN103617085A (zh) 2013-11-19 2013-11-19 一种cpu+gpu协同计算并行框架

Publications (1)

Publication Number Publication Date
CN103617085A true CN103617085A (zh) 2014-03-05

Family

ID=50167788

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310579257.2A Pending CN103617085A (zh) 2013-11-19 2013-11-19 一种cpu+gpu协同计算并行框架

Country Status (1)

Country Link
CN (1) CN103617085A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902387A (zh) * 2014-04-29 2014-07-02 浪潮电子信息产业股份有限公司 一种cpu+gpu协同并行计算动态负载均衡方法
CN103986722A (zh) * 2014-05-28 2014-08-13 浪潮电子信息产业股份有限公司 一种使用反弹攻击技术攻击Grostl加密算法的处理方法
WO2015192806A1 (en) * 2014-06-20 2015-12-23 Tencent Technology (Shenzhen) Company Limited Model parallel processing method and apparatus based on multiple graphic processing units
CN106991011A (zh) * 2017-03-30 2017-07-28 武汉大学 一种针对大数据任务处理的基于cpu多线程与gpu多粒度并行及协同优化的方法
CN107548490A (zh) * 2014-12-26 2018-01-05 英特尔公司 并行计算中的进度计
CN111124920A (zh) * 2019-12-24 2020-05-08 北京金山安全软件有限公司 设备性能测试方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102135949A (zh) * 2011-03-01 2011-07-27 浪潮(北京)电子信息产业有限公司 基于图形处理器的计算网络系统、方法及装置
DE102010044407A1 (de) * 2010-09-04 2012-03-08 Lawo Ag Vorrichtung und Verfahren zur Verarbeitung von digitalisierten Audiodaten
CN102411658A (zh) * 2011-11-25 2012-04-11 中国人民解放军国防科学技术大学 一种基于cpu和gpu协作的分子动力学加速方法
CN102495722A (zh) * 2011-10-18 2012-06-13 成都康赛电子科大信息技术有限责任公司 多核分片xml并行解析方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010044407A1 (de) * 2010-09-04 2012-03-08 Lawo Ag Vorrichtung und Verfahren zur Verarbeitung von digitalisierten Audiodaten
CN102135949A (zh) * 2011-03-01 2011-07-27 浪潮(北京)电子信息产业有限公司 基于图形处理器的计算网络系统、方法及装置
CN102495722A (zh) * 2011-10-18 2012-06-13 成都康赛电子科大信息技术有限责任公司 多核分片xml并行解析方法
CN102411658A (zh) * 2011-11-25 2012-04-11 中国人民解放军国防科学技术大学 一种基于cpu和gpu协作的分子动力学加速方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ZHANG0311: "浅谈多节点CPU+GPU协同计算负载均衡性设计", 《HTTP://BLOG.CSDN.NET/ZHANG0311/ARTICLE/DETAILS/8224093》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902387A (zh) * 2014-04-29 2014-07-02 浪潮电子信息产业股份有限公司 一种cpu+gpu协同并行计算动态负载均衡方法
CN103986722A (zh) * 2014-05-28 2014-08-13 浪潮电子信息产业股份有限公司 一种使用反弹攻击技术攻击Grostl加密算法的处理方法
WO2015192806A1 (en) * 2014-06-20 2015-12-23 Tencent Technology (Shenzhen) Company Limited Model parallel processing method and apparatus based on multiple graphic processing units
US9607355B2 (en) 2014-06-20 2017-03-28 Tencent Technology (Shenzhen) Company Limited Model parallel processing method and apparatus based on multiple graphic processing units
CN107548490A (zh) * 2014-12-26 2018-01-05 英特尔公司 并行计算中的进度计
CN107548490B (zh) * 2014-12-26 2021-10-15 英特尔公司 并行计算中的进度计
CN106991011A (zh) * 2017-03-30 2017-07-28 武汉大学 一种针对大数据任务处理的基于cpu多线程与gpu多粒度并行及协同优化的方法
CN106991011B (zh) * 2017-03-30 2020-07-24 武汉大学 基于cpu多线程与gpu多粒度并行及协同优化的方法
CN111124920A (zh) * 2019-12-24 2020-05-08 北京金山安全软件有限公司 设备性能测试方法、装置及电子设备

Similar Documents

Publication Publication Date Title
CN103902387A (zh) 一种cpu+gpu协同并行计算动态负载均衡方法
CN103049245B (zh) 一种基于中央处理器cpu多核平台的软件性能优化方法
CN102902512B (zh) 一种基于多线程编程及消息队列的多线程并行处理方法
CN103617085A (zh) 一种cpu+gpu协同计算并行框架
Boyd et al. The OpenMOC method of characteristics neutral particle transport code
Juve et al. Characterizing and profiling scientific workflows
US8589929B2 (en) System to provide regular and green computing services
CN104239529A (zh) 防止Hive数据倾斜的方法和装置
Lacoste et al. Sparse direct solvers with accelerators over DAG runtimes
Rockenbach et al. stream processing on multi-cores with GPUs: parallel programming models' challenges
Wang et al. CHCF: A cloud-based heterogeneous computing framework for large-scale image retrieval
Jiang et al. Optimizing scientific workflows in the cloud: A montage example
Kumbhar et al. Leveraging a cluster-booster architecture for brain-scale simulations
Vijayalakshmi et al. The survey on MapReduce
Zheng et al. Performance model for OpenMP parallelized loops
CN102163319B (zh) 一种实现迭代重构图像的方法及系统
CN104793922B (zh) 一种大整数乘法Comba算法基于OpenMP的并行实现方法
Machado et al. On the scalability of constraint programming on hierarchical multiprocessor systems
Hopfer et al. Solving the ghost–gluon system of Yang–Mills theory on GPUs
CN102981805B (zh) 串行软件的响应方法和系统
Wozniak et al. Toward computational experiment management via multi-language applications
Ginjupalli et al. High-precision numerical simulations of rotating black holes accelerated by CUDA
de Sousa Reis et al. Archadia: An architecture for big data as a service in private cloud
Zhang et al. Implementation of stereo matching using a high level compiler for parallel computing acceleration
Zhang et al. Multi-GPU parallel computing and task scheduling under virtualization

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140305

WD01 Invention patent application deemed withdrawn after publication