CN103617085A - 一种cpu+gpu协同计算并行框架 - Google Patents
一种cpu+gpu协同计算并行框架 Download PDFInfo
- 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
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除了传统的应用(图形显示,多用于游戏)以外,由于其超强的浮点计算能力,越来越多地应用在数学计算上,并且逐渐开始进入计算的主流。面向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所述的并行框架,其特征在于,对多个输出数据体进行拼接,并没有生成真正的数据体,而只是创建了一个最终输出数据体的头文件,该头文件描述了数据体的名字及基本属性,并指向其包含的多个数据体的头文件。
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)
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)
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并行解析方法 |
-
2013
- 2013-11-19 CN CN201310579257.2A patent/CN103617085A/zh active Pending
Patent Citations (4)
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)
Title |
---|
ZHANG0311: "浅谈多节点CPU+GPU协同计算负载均衡性设计", 《HTTP://BLOG.CSDN.NET/ZHANG0311/ARTICLE/DETAILS/8224093》 * |
Cited By (9)
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 |