CN104360941A - 采用MPI与OpenMP编译提高计算集群的STREAM Benchmark测试性能的方法 - Google Patents

采用MPI与OpenMP编译提高计算集群的STREAM Benchmark测试性能的方法 Download PDF

Info

Publication number
CN104360941A
CN104360941A CN201410619036.8A CN201410619036A CN104360941A CN 104360941 A CN104360941 A CN 104360941A CN 201410619036 A CN201410619036 A CN 201410619036A CN 104360941 A CN104360941 A CN 104360941A
Authority
CN
China
Prior art keywords
mpi
openmp
compiling
computing cluster
stream benchmark
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
CN201410619036.8A
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 CN201410619036.8A priority Critical patent/CN104360941A/zh
Publication of CN104360941A publication Critical patent/CN104360941A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开一种采用MPI与OpenMP编译提高计算集群的STREAM Benchmark测试性能的方法,属于多线程应用技术领域,在计算集群中部署MPI环境,将OpenMP部署于各个计算机节点,运行计算集群;STREAMBenchmark运行之前对源代码进行编译,OpenMP实现计算机节点的不同线程间通信,MPI实现不同计算机节点间的传递数据,实现同步,并将STREAMBenchmark自动迁至闲置计算节点;本发明综合使用MPI与OpenMP编译,使STREAMBenchmark测试性能比单独应用于MPI环境时更精确。

Description

采用MPI与OpenMP编译提高计算集群的STREAM Benchmark测试性能的方法
技术领域
本发明公开一种提高计算集群的STREAM  Benchmark测试性能的方法,属于多线程应用技术领域,具体地说是一种采用MPI与OpenMP编译提高计算集群的STREAM  Benchmark测试性能的方法。 
背景技术
OpenMP是共享存储系统编程的工业标准,为 SMP 系统提供可移植、可扩展的开发接口。编译制导是对程序设计语言的扩展,进一步提供对并行区域、工作共享、同步构造的支持,并且支持数据的共享和私有化。运行库和环境变量使得用户可以调整并行程序的执行环境。作为一种轻量化的多线程实现工具,由于使用线程间共享内存的方式协调并行计算,它在多核/多CPU结构上的效率很高、内存开销小、编程语句简洁直观,因此编程容易、编译器的实现也容易;但由于其有着共享存储、隐式数据分配、线程级并行粒度等特点,OpenMP只适用于单台计算机共享内存结构上的并行计算,不能用于多台主机间的并行计算。 
而MPI是由学术界、政府和工业协会共同开发的一个消息传递编程模型的实现标准,是目前分布式存储系统上的主流编程模型。它不是一门独立的编程语言,而是一个库,提供了与FORTRAN和C/C++语言的绑定。MPI适用于共享和分布式存储的并行计算环境,用它编写的程序可以直接在SMP集群上运行。MPI具有可移植性好、功能强大、效率高等优点,特别适用于粗粒度的并行,几乎被所有多线程操作系统(包括UNIX,Windows NT等)支持,是目前超大规模并行计算最可信赖的平台。MPI是目前主流的用于多主机联网协作进行并行计算的工具,能协调多台主机间的并行计算,因此并行规模上的可伸缩性很强,具有很高的可扩展性;但由于其运行级别为进程级,使用进程间通信的方式协调并行计算,所以导致并行效率较低、运行时系统资源开销大、运行效果不直观、编译麻烦。 
由于STREAM Benchmark主要应用于单一计算平台的测试,对于OpenMP有着良好的兼容性,其源代码通过简单的编译即可运行。但是当应用于MPI环境时,其效率远低于OpenMP环境,本发明通过综合使用以上两种环境,使得STREAM Benchmark在多个计算机组成的并行计算平台上的测试性能比单独应用于MPI环境时得到大幅提高,而且简单易行,应用性强,适合各种主流计算平台。 
发明内容
本发明针对现有技术存在的不足和问题,提供一种采用MPI与OpenMP编译提高计算集群的STREAM  Benchmark测试性能的方法,提出的具体方案是: 
采用MPI与OpenMP编译提高计算集群的STREAM  Benchmark测试性能的方法,具体步骤为:
在计算集群中部署MPI环境,将OpenMP分别部署于计算集群中的各个计算机节点,运行计算集群,在MPI环境中可多线程并发运行程序,线程分配由人为操作来决定每个计算机节点上运行的线程数;
STREAM Benchmark以源代码的方式发行,运行之前对源代码进行编译,引入编译器编译的程序同时应用于MPI及OpenMP,添加 OpenMP 和 MPI 的相关语句和函数,同时满足MPI和OpenMP的要求;
在MPI与OpenMP混合编译的条件下运行STREAM Benchmark,OpenMP实现计算机节点的不同线程间通信,MPI实现不同计算机节点间的传递数据,实现同步,并将STREAM Benchmark自动迁至闲置计算节点。
所述的计算集群由多个独立运行的计算机系统所组成的,并且是非共享内存的,每个计算机节点都拥有独立使用的系统资源。 
所述的引入的编译器是计算集群中计算系统的编辑器及MPI本身的编译器。 
所述的多线程运行程序采用分类算法,使各计算机节点间使用 MPI 编程进行通信,传递数据,实现同步。 
所述的计算系统是unix、linux、windowsNT。 
本发明的有益之处是:本发明提供一种采用MPI与OpenMP编译提高计算集群的STREAM  Benchmark测试性能的方法,综合使用MPI与OpenMP编译,在各个节点上添加OpenMP编译,使其运行,利用MPI协调各个节点间的通信,弥补了OpenMP只能用于单一计算机的缺点,不仅使系统资源占用率低,STREAM Benchmark测试性能比单独应用于MPI环境时更精确,而且使得STREAM Benchmark能够较好的应用于大型计算集群中,简单易行,应用性强,适合各种主流计算平台。 
附图说明
图1计算集群中MPI与OpenMP编译部署的示意图。 
具体实施方式
MPI是基于消息传递机制的。通过在各个并行执行的部分之间传递消息来交换信息、协调步伐、控制执行。在通信域中发送和接受消息进行并行。 
OpenMP 采用 Fork-Join 编程模型,执行模式在开始执行的时候,只有主线程存在。主线程在运行过程中,当遇到需要进行并行计算的时候,派生出Fork线程来执行并行任务。在并行执行的时候,主线程和派生线程共同工作。在并行代码结束执行后,派生线程退出或者挂起,不再工作,控制流程回到单独的主线程中Join。通过编译制导语句和运行时库函数实现并行。 
采用MPI与OpenMP编译:为了充分利用两种编程模型,实现 MPI/OpenMP 的混合编译模型,可知上层的 MPI 表示计算机节点间的并行;下层的OpenMP表示计算机节点内的并行。 
采用MPI与OpenMP编译提高计算集群的STREAM  Benchmark测试性能的方法,具体步骤为: 
在计算集群中部署MPI环境,将OpenMP分别部署于计算集群中的各个计算机节点,运行计算集群,在MPI环境中可多线程并发运行程序,线程分配由人为操作来决定每个计算机节点上运行的线程数,计算集群由多个独立运行的计算机系统所组成的,并且是非共享内存的,每个计算机节点都拥有独立使用的系统资源;
STREAM Benchmark以源代码的方式发行,运行之前对源代码进行编译,引入编译器是计算集群中计算系统的编辑器及MPI本身的编译器,编译器编译的程序同时应用于MPI及OpenMP,添加 OpenMP 和 MPI 的相关语句和函数,同时满足MPI和OpenMP的要求;
在MPI与OpenMP混合编译的条件下运行STREAM Benchmark,OpenMP实现计算机节点的不同线程间通信,采用分类算法,使各计算机节点间使用 MPI编程进行通信,传递数据,实现同步,并将STREAM Benchmark自动迁至闲置计算节点。
具体实施为:将OpenMP分别部署于集群中的各个计算机参见图1,并在集群中部署MPI环境,以MPICH环境为例。 
程序的编译: 
以Linux系统为例,STREAM Benchmark以源代码的方式发行,所以在运行之前需要对源代码进行编译。编译中需要注意的是,对源代码的编译要同时满足MPI和OpenMP的要求,所以我们需要引入Linux中的GNU编译器及MPI本身的编译器。为了使编译的程序能同时应用于MPI及OpenMP,需要在编译中加入-fopenmp参数,以C++语言编译STREAM源代码,编译命令应为:
[rootlocalhost home]# mpicc-o stream stream.c-fopenmp_
编译完成后,在所有节点上运行4个进程,用以下命令运行:
[rootlocalhost home]# mpirun-np 4./stream_。

Claims (5)

1.采用MPI与OpenMP编译提高计算集群的STREAM  Benchmark测试性能的方法,其特征是具体步骤为:
在计算集群中部署MPI环境,将OpenMP分别部署于计算集群中的各个计算机节点,运行计算集群,在MPI环境中可多线程并发运行程序,线程分配由人为操作来决定每个计算机节点上运行的线程数;
STREAM Benchmark以源代码的方式发行,运行之前对源代码进行编译,引入编译器编译的程序同时应用于MPI及OpenMP,添加 OpenMP 和 MPI 的相关语句和函数,同时满足MPI和OpenMP的要求;
在MPI与OpenMP混合编译的条件下运行STREAM Benchmark,OpenMP实现计算机节点的不同线程间通信,MPI实现不同计算机节点间的传递数据,实现同步,并将STREAM Benchmark自动迁至闲置计算节点。
2.根据权利要求1所述的采用MPI与OpenMP编译提高计算集群的STREAM  Benchmark测试性能的方法,其特征是所述的计算集群由多个独立运行的计算机系统所组成的,并且是非共享内存的,每个计算机节点都拥有独立使用的系统资源。
3.根据权利要求2所述的采用MPI与OpenMP编译提高计算集群的STREAM  Benchmark测试性能的方法,其特征是所述的引入的编译器是计算集群中计算系统的编辑器及MPI本身的编译器。
4.根据权利要求1-3任一项所述的采用MPI与OpenMP编译提高计算集群的STREAM  Benchmark测试性能的方法,其特征是所述的多线程运行程序采用分类算法,使各计算机节点间使用 MPI 编程进行通信,传递数据,实现同步。
5.根据权利要求4所述的采用MPI与OpenMP编译提高计算集群的STREAM  Benchmark测试性能的方法,其特征是所述的计算系统是unix、linux、windowsNT。
CN201410619036.8A 2014-11-06 2014-11-06 采用MPI与OpenMP编译提高计算集群的STREAM Benchmark测试性能的方法 Pending CN104360941A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410619036.8A CN104360941A (zh) 2014-11-06 2014-11-06 采用MPI与OpenMP编译提高计算集群的STREAM Benchmark测试性能的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410619036.8A CN104360941A (zh) 2014-11-06 2014-11-06 采用MPI与OpenMP编译提高计算集群的STREAM Benchmark测试性能的方法

Publications (1)

Publication Number Publication Date
CN104360941A true CN104360941A (zh) 2015-02-18

Family

ID=52528205

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410619036.8A Pending CN104360941A (zh) 2014-11-06 2014-11-06 采用MPI与OpenMP编译提高计算集群的STREAM Benchmark测试性能的方法

Country Status (1)

Country Link
CN (1) CN104360941A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105095084A (zh) * 2015-08-25 2015-11-25 浪潮(北京)电子信息产业有限公司 一种服务器虚拟化平台的虚拟机内存性能测试系统及方法
CN108932172A (zh) * 2018-06-27 2018-12-04 西安交通大学 一种基于OpenMP/MPI混合并行CFD计算的细粒度共享内存通信同步方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275956B1 (en) * 1997-10-28 2001-08-14 Electronics And Telecommunications Research Institute Integrated dynamic-visual parallel debugging apparatus and method thereof
CN102707955A (zh) * 2012-05-18 2012-10-03 天津大学 采用MPI和OpenMP编程实现支持向量机方法
CN103699449A (zh) * 2013-12-20 2014-04-02 北京遥测技术研究所 一种适用于监控mpi并行软件的通信方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275956B1 (en) * 1997-10-28 2001-08-14 Electronics And Telecommunications Research Institute Integrated dynamic-visual parallel debugging apparatus and method thereof
CN102707955A (zh) * 2012-05-18 2012-10-03 天津大学 采用MPI和OpenMP编程实现支持向量机方法
CN103699449A (zh) * 2013-12-20 2014-04-02 北京遥测技术研究所 一种适用于监控mpi并行软件的通信方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王堃: "基于多核的并行程序设计及优化", 《中国优秀硕士学位论文全文数据库》 *
王杰: "基于多核机群环境的并行程序设计方法研究", 《中国优秀硕士学位论文全文数据库》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105095084A (zh) * 2015-08-25 2015-11-25 浪潮(北京)电子信息产业有限公司 一种服务器虚拟化平台的虚拟机内存性能测试系统及方法
CN105095084B (zh) * 2015-08-25 2018-02-09 浪潮(北京)电子信息产业有限公司 一种服务器虚拟化平台的虚拟机内存性能测试系统及方法
CN108932172A (zh) * 2018-06-27 2018-12-04 西安交通大学 一种基于OpenMP/MPI混合并行CFD计算的细粒度共享内存通信同步方法
CN108932172B (zh) * 2018-06-27 2021-01-19 西安交通大学 一种基于OpenMP/MPI混合并行CFD计算的细粒度共享内存通信同步方法

Similar Documents

Publication Publication Date Title
CN104035781A (zh) 一种快速开发异构并行程序的方法
CN102708088A (zh) 面向海量数据高性能计算的cpu/gpu协同处理方法
CN102880474B (zh) 并行源代码生成、编译及驱动执行的测试方法
CN104536937A (zh) 基于cpu-gpu异构集群的大数据一体机实现方法
CN103699432A (zh) 一种异构环境下的多任务运行时协同调度系统
KR20140054948A (ko) 임베디드 시스템을 위한 오픈씨엘 응용 소프트웨어 개발 지원 도구 구성 및 방법
CN110968320A (zh) 针对异构硬件架构的联合编译方法和编译系统
CN103699365A (zh) 一种众核处理器结构上避免无关依赖的线程划分方法
CN103473072A (zh) 一种移动云计算应用程序开发方法
CN104360941A (zh) 采用MPI与OpenMP编译提高计算集群的STREAM Benchmark测试性能的方法
CN105808346A (zh) 一种任务调度方法与装置
CN104750533A (zh) C程序编译方法及编译器
CN107340995A (zh) 一种牵引控制应用软件开发系统
Khaldi et al. SPIRE: A methodology for sequential to parallel intermediate representation extension
CN103631585A (zh) 一种用于开发应用程序的方法及系统
Liao et al. OpenMC: Towards simplifying programming for TianHe supercomputers
Aldinucci et al. Targeting heterogeneous architectures via macro data flow
Khaldi et al. Spire: A sequential to parallel intermediate representation extension
Kjeldsberg et al. Readex: Linking two ends of the computing continuum to improve energy-efficiency in dynamic applications
Malik et al. Executing synchronous data flow graphs on heterogeneous execution architectures using integer linear programming
Cheung et al. Speeding up database applications with pyxis
Nakao et al. Multi-accelerator extension in openmp based on pgas model
Dümmler et al. Programming support and scheduling for communicating parallel tasks
Bueno et al. Poster: programming clusters of gpus with ompss
Woodard Introduction to Parallel Programming

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20150218