SMP集群上的混合并行计算
50
万方数据 I计算机教育2007.4|
环/球/IT 进行通信和计算。MPI+OpenMP混合模型可以选择 主线程或指定一个线程进行通信,而其他线程执行计 算,从而实现了通信与计算的重叠。
=…@)_等
4.4性能测试
本文采用不同的进程数对平板流动进行了测试, 该算例中采用多块网格结构,本文下面的所有的计算 负载和通讯负载都是都是平衡的,图4给出了四组不 同计算规模下的加速比。其中,图中标出的是一块网 格的网格点数(共128块),另外,在本测试中,由于 迭代步较少,I/O占用会影响统计时间的准确度,因 此,下面测试中未计人流场计算结束后的文件输出。 对于纯MPI的测试,本文给每个处理核分配一个进 程,而MPI+OpenMP混合并行的测试,本文对每个 Socket分配一个进程,同时,每个Socket上又分配2 个线程。 图中可以看到,当处理核总数较少的时候,与 MPI+OpenMP}昆合并行模型相比,由于MPI的并行 粒度相对较大,因此性能明显占优,进程数小于32的 时候,除了Grid 97.13.25之外,其余的并行效率都 超过了95%,前者性能较低是由于单进程上的计算量 相对其他的计算较小,因此通信占用就比较大,因此 效率较低。随着处理核的增加,MPI并行模式的通信 量也增加,图4中可以看到,当通信量达到一定规模 之后,不管是Share Socket还是Different Socket的 通信带宽都大大减小,因此在128个处理核的测试中, MPI并行模式下的并行效率也明显降低,相对来说, 而混合并行模型由于减少了通信的进程数,从而减少 了计算中的通信占用比,因此性能较好。
丁
5结束语
OpenMP+MPI这种混合并行模型相比单纯的 MPI消息传递更能充分利用SMP集群系统,在某些 情况下可以改善性能。本文首先对两种不同情况下的 节点内的通讯进行了测试,表明基于Share Socket的 通信性能较好,然后采用MPI+OpenMP混合并行模 型对NAPA软件进行了改进和测试,结果表明,就 NAPA软件本身而言,采用MPI并行模型在小规模节 点情况下性能较好,而采用混合并行模型在多节点情 况下可以大大减少通信,从而获得更好的性能。团
2.2
OpenMP并行模型
OpenMP使用Fork-Join的并行执行模式。开始
时由一个主线程执行程序,该线程一直串行地执行, 直到遇到第一个并行化制导语句后才开始并行执行。 过程如下:①ForK.主线程创建一队线程并行执行并 行域中的代码;②Join:当各线程执行完毕后被同步 或中断,最后又只有主线程在执行。
the
High Performance Computing Applications,2005,I F Cappello,D Etiemble.MPI Verbs MPI+OpenMP
on
7(I).
IBM SP foP
on
[2】Charles
D H.Two--dimensional aerodynamic characteristics of
A P
A软件进行了
MPI+OpenMP的?昆合并行改进和并行优化,并在大 规模节点上对比了混合并行和纯MPI的性能。
4.2测试平台介绍
本文的计算平台节点包括2个Socket(x86平台, 主频2.6 G双核)和8G内存,计算节点共32个, 千兆交换机,操作系统为Red
Intel Compiler Hat
∽
j
1.2 1 O.8 0.6 0.4 0.2 0 0 l 2 4 8 16 32 64 128
3混合并行方法 3.1混合并行的实现方法
图2不同模式下的通信延迟比较
Bandwi dth
l+WDC |士wDc
Share
Socket Socket
Different
为了充分利用SMP集群层次存储结构的特点,可 以考虑将上述两种编程模型相结合,实现M P I/ OpenMP的混合编程模型。该模型同样具有层次结 构:上层的MP I表示节点间的并行;下层的OpenMP 表示节点内的多线程并行:首先对问题进行区域分 解,将任务划分成通信不密集的几个部分,每个部分 分配到一个SMP节点上,节点间通过MPI消息传递 进行通信;然后在每个进程内采用OpenMP编译制导 语句再次分解,并分配到SMP的不同处理器上由多 个线程并行执行,节点内通过共享存储进行通信。图 1描述了SMP集群上MPI/OpenMP混合编程模型的 实现机制。 MPI和OpenMP的混合编程模型提供了节点间和 节点内的两级并行机制,综合了进程间各个区域的粗 粒度并行和进程内部循环级的细粒度并行。实践证明, 在很多情况下其执行效率高于纯MPI和OpenMP的 程序,混合并行模型解决了一些它们无法解决的问题, 比如: (1)负载平衡问题【l・1。混合并行模型很好解决了
图1混合并行模型
加∞∞∞∞加加 ∞\重∞ ∞ ∞0
零§毒§零毋§◇弩≮≮≮整黼、
ka<;—r一1一 图3不同模式下的通信带宽比较
./厂
.◆—◆√
/
/
,一一—弋
\ \
‘▲—●r一1|—I
....\ 一
一I—-卜j卜▲ Message Si.ze.(B)
3.3混合并行的优点
单纯MPI程序不容易实现负载平衡的问题,从而提高 了并行程序的性能和可扩展性。 (2)通信带宽和延迟问题[nl。MPI并行程序进程 间的通信带宽和延迟问题可能会严重影响程序的执行 性能。混合模型的程序将减少通信的次数,并且 OpenMP的线程级并行具有较小的延迟。 (3)通信与计算的重叠【121。大多数MPI实现都是 使用单线程实现的。这种单线程的实现可以避免同步 和上下文切换的开销,但是它不能将通信和计算分开, 因此,对于多处理系统上,单个的MPI进程不能同时
P。abenseifner,G Wellein.Communication
and
Optimization
Parallel
programming Models
on
Hybrid Architecture.Interpace
Applications心唱the NASA Columbia Supercon∞uter,2005
MPI and ACM
Programming Style
on
Shared Memory M¨ltlDrocessors.In
[4]朱国林,李树民,王开春.维低速Ns方程的并行计算
SPAA,San Diego,USA,Jun.2005
[1 1]单莹,吴建平,王正华.基于SMP集群的多层次并行
编程模型与并行优化技术[J].计算机应用研究,2006.
MPI和OpenMP并行模型 在并行计算领域,MPI和OpenMP是最为流行的
万方数据
计算机教育2007.4
l
49
环/球/IT OpenMP的编程相对简单,充分利用了共享存储 体系结构的特点,避免了消息传递的开销。虽然它也 支持粗粒度的并行,但主要还是针对细粒度的循环级 并行。OpenMP的另一个特点在于将串行程序转换为 并行程序时无须对代码作大的改动。其不足之处有只 能在共享存储结构的机器上运行;数据的放置策略不 当可能会引发其他问题;并行化的循环粒度过小会增 加系统开销等。
Speedup(p)=}
』p
Effici绷钞(p):—Speed—up(p)
万方数据
计算机教育2007.4
l
5"1
环/球/iT
参考文献:
[1]Dimitri
J.Mavdplis,Michael J.Aftosmis,Marsha
『81
Berger,Hi曲
Aspects of Journal of
R
9.0,编译器为
1.2.7。
9.0,消息传递库为Mpich
4.3性能评价方法
并行计算中,我们把并行程序分成两部分:即串 行部分和并行部分,如果用Ts表示串行部分串行执行 所需的时间,Tcomp表示并行部分串行执行所需的时 间,Tcomm表示P个进程并行计算中通讯部分占用 的时间,使用P个进程执行的时间为Tp,那么单进程 串行执行的时间为:Tl=Ts+Tcomp,P个进程并行 执行的加速比(Speedup)、并行效率(Efficiency)、 通信占用比(”。。。)分别是:
3.2节点内并行的性能测试
本文首先测试了节点内并行的性能,测试在Intel
Xeon
Woodcrest
2.6G
(双核)的平台上进行,结
果如图2和图3所示。 其中,Share Socket表示Socket中不同处理核之 间的消息传递,而Different Socket表示不同Socket 之间的消息传递。可见Share Sock:et间的通信性能明 显好于不同Socket间的通信性能。
[5]吕晓斌,兰黔章,朱自强.二维跨音速Euler方程分区并 行算'法[J].北京航空航天大学学报,2000,26(2):1
[J]。空气动力学学报,2002. [5]冯云,周淑秋天.MPI+OpenMP混合并行编程模型应用研
94—1 97
f 1 0]G
Three OpenMP
Krawezik,F CappeIIo.Performance Comparison of
环/球/IT
SMP集群上的混合并行计算
INTEL中国软件中心 金君 乔楠/文
1引言 并行计算机体系结构的一个发展趋势是SMP (Symmetric Multiprocessor)集群系统。它们是由 拥有多个处理器的SMP节点和连接各节点间的快速 网络构成的多级体系结构。理想的并行编程方案可使 应用程序设计者能以最有效的方法使用这个混合的硬 件结构,获得理想的性能而不会引起由其导致的任何 开销。 在分布式内存的系统上,使用MPI的消息传递已 经被广泛的应用[1-4】,但是,大多数情况下,特别是在 大规模节点下,采用纯的MPI并行模型并不能取得理 想的性能巧1。此外,OpenMP已经成为共享存储系统编 程的工业标准。由于SMP集群同时具有共享存储和分 布存储两极存储结构,因此节点内采用OpenMP进行 多线程化、节点间采用消息传递的混合并行模式可以 更好的利用SMP集群的特性[61。 近几年来,多极混合并行计算已经被应用于许多 应用中【7】,并且取得了较大的成功[8-iol,本文首先介绍 了OpenMP和MPI并行模型和混合并行方法,以Napa 软件为例,进行了MPI+OpenMP混合并行改进,最 后在大规模节点上对比了混合并行和纯MPI的性能。