并行计算技术综述_王磊

  • 格式:pdf
  • 大小:984.75 KB
  • 文档页数:5

使用。PVM 支持用户采用消息传递方式编写并行
程序。PVM 支持用户采用消息传递方式编写并行
程序,计算以任务为单位,一个任务就是一个 UNIX
进程,每个任务都有一个 taskid 来标识( 不同于进程
号) 。
PVM 支持在虚拟机中自动加载任务运行,任务
间可以相互通讯以及同步,在 PVM 系统中,一个任
衡。静态负载均衡适用于计算前可以准确估算总的
负载,且这些负载容易平均划分给各个进程的情况。
对于事先不知道负载总数,或者总负载不易平均划
分的情况,需要动态负载均衡策略来解决。 2. 2 PVM 简介[5]
PVM 是一个在网络上的虚拟并行机系统的软
件包,它允许将网络上基于 UNIX 操作系统的并行
机和单处理机的集合当成一台单一的并行虚拟机来
生线程共同工作。在并行代码结束执行后,派生线
— 113 —
程退出ห้องสมุดไป่ตู้者挂起,不再工作,控制流程回到单独的主 线程中。
图 1 是共享内存多线程应用程序的 Fork - Join 模型。主线程在运行时遇到并行编译指导语句,根 据环境变量派生出 4 个子线程,4 个子线程与主线 程同时运行。在运行的过程中,某一个派生线程遇 到了另外一个编译指导语句时,也派生出另外一组 子线程。新的线程组共同完成一项任务,但对于原 有的线程来说,新线程组的工作类似于一块串行程 序,对原来的线程不会产生影响。新线程组在通过 一个隐含的同步屏障后,汇合成原有的线程。最后, 原有的线程组汇合成主线程,执行完最后的程序代 码并退出。
过编译指导语句来显示地指导并行化,为编程人员
提供了并行化的完整控制。OpenMP 的执行模型采
用 Fork - Join 形式,Fork - Join 执行模式在开始执
行的时候,只有一个主线程存在。主线程在运行过
程,当遇到需要进行并行计算的时候,派生出子线程
来执行并行任务。在并行执行的时候,主线程和派
为通信固定延迟,Bi 为第 i 次通信的容量,ω 为网络
带宽,Ti 为负载不平衡造成的时间消耗,TCi 为群集
通信耗时。
( 3) 解决负载均衡问题
在并行计算中,若各个处理器上的执行时间不
同,因同步会使先完成的处理器等待未完成的处理
器,此时应该考虑负载均衡问题,使得资源得到合理
利用。负载均衡分为: 静态负载均衡及动态负载均
句,可以将串行的程序逐步改造成一个并行程序,同 时也可以将串行程序和并行程序保持在一个源代码 档中,减少了维护的负担。OpenMP 也提供了运行 时库函数来支持运行时对并行环境的改变和优化, 给编程人员足够的灵活性来控制运行时的程序运行 状况。 2. 4 Intel TBB ( Threading Building Block ) 简 介[7 - 8]
TTotal = Tcomm + Tserial 其中,TTotal 、Tcomm 、Tserial 分别表示程序总用时、通信用 时和串行 部 分 用 时。而 通 信 用 时 一 般 可 作 如 下
分解:
n
m
∑ ∑ Tcomm = nts ÷ Bi / ω ÷ Ti ÷ TCi
i =1
i =1
其中,n 为点对点通信次数,m 为群集通信次数,ts
Parallel computing technology review
WANG Lei
( Department of Computer and Information Management,Shanxi Radio and TV University,Xi’an 710119,China)
Abstract: This paper introduces parallel computing technology for current parallel computing technology development status. It analyses general parallel architecture,including SMP,NUMA,MPP and CLUSTERS,describes parallel programming models,including MPI,PVM,OpenMP,TBB and Cilk ++ models,presents parallel computing technology,cloud computing technology,grid computing technology and distributed computing technology,describes their technology,development feasibility,commercial value,developing efficiency and market utilization prospects. Key words: parallel computing; cloud computing technology; grid computing; distributed computing
务被加载到哪个结点上去运行,PVM 就允许用户指
定任务被加载的结点,这样就方便了用户编写并行
程序。 2. 3 OpenMP 简介[3,6]
OpenMP 是一种面向共享内存及分布式共享内
存的多处理器多线程并行编程语言,它也是一种能
够用于显示指导多线程、共享内存并行的应用程序
编程接口。OpenMP 的编程模型以线程为基础,通
— 112 —
1 并行架构[1 - 2]
常用的 并 行 架 构 分 为 SMP ( 对 称 多 处 理 器 结 构) 、NUMA( 非统一内存存取) 、MPP ( 巨型并行处 理) 、CLUSTERS( 集群) 。
SMP 系统中每个计算机中有多个对称 CPU 处 理核,无主次或从属关系,它们共享内存空间和 I / O 设备,每个 CPU 访问内存中的任何地址所需时间是 相同的,因此 SMP 也被称为一致存储器访问结构 ( UMA: Uniform Memory Access) 。由操作系统调度 算法将任务进行分解并分配在不同的 CPU 处理核 上运行。SMP 服务器的主要特征是共享,系统中所 有资源都是共享的。
0 引言
近年来多核处理器的快速发展,使得当前软件 技术面临着极大挑战。无论 CPU 在主频率上还是 处理器核数上都在飞速发展。硬件技术在不断发展 的同时,要求软件技术也须同时进步。常用的并行 计算技术有调用系统函数启动多线程以及利用多种 并行编程语言开发并行程序,常用的并行编程模型 有 MPI、PVM、OpenMP、TBB、Cilk + + 等。利用这些 并行技术可以充分利用多核资源,适应目前快速发 展的社会需求。并行技术不仅要提高并行效率,也 要在一定程度上减轻软件开发人员负担,如近年来 的 TBB、Cilk + + 并行模型就在一定程度上减少了开 发难度,提高了开发效率,使得并行软件开发人员把 更多精力专注于如何提高算法本身效率,而非把时 间和精力放在如何去并行一个算法。
集群系统由独立的计算机组成,由控制管理工 具统一管理,搭建集群的目的是共享和高效地利用 资源,提供海量数据运算功能,提供负载均衡功能及 出现故障时具有保障数据容错功能。
2 并行编程模型
并行编程可以调用系统函数启动多线程,也可 以利用并行编程模型,如常用的并行模型有 MPI、 PVM、OpenMP、TBB 及 Cilk + + 等。 2. 1 MPI 简介[3 - 4]
图 1 OpenMP 应用程序运行时的 Fork - Join 模型
( 1) 编译指导语句 编译指导语句的含义是在编译器编译程序的时 候,会识别特定的注释,而这些特定的注释就包含着 OpenMP 程序的一些语义。如在 C / C + + 程序中,用 #pragma omp parallel 来标识一段并行程序块。在一 个无法识别 OpenMP 语义的普通编译器中,会将这 些特定的注释当作是普通的注释而被忽略。因此, 如 果 仅 仅 使 用 编 译 指 导 语 句 中,编 写 完 成 的 OpenMP 程 序 就 能 够 同 时 被 普 通 编 译 器 与 支 持 OpenMP 的编译器处理。这样就可以用一份代码来 编写串行或者并行程序,或者在把串行程序改编成 并行程序的时候保持串行源代码部分不变,极大方 便了编 写 人 员。常 用 的 编 译 指 导 语 句 以 # pragma omp 开始,具有如下形式: # pragma omp < directive > [clause [[,]clause]…] 其中,directive 部分就包含了具体的编译指导语句, 包括 parallel,for,parallel for,section,single,critical, flush,ordered 和 atomic,这些编译指导语句用来分配 任务或者用来同步。 ( 2) 运行时库函数 OpenMP 运行时函数库用以设置和获取执行环 境相关的信息,它们也包含一系列用以同步的 API, 如 omp_get_thread_num( ) 就是一个运行时函数库中 的函数,用来返回当前线程的标识号。OpenMP 程 序同时结合了两种并行编程方式。通过编译指导语 — 114 —
MPP 提供了另外一种进行系统扩展的方式,它 由多个 SMP 服务器通过一定的节点互联网络进行 连接,协同工作,完成相同的任务。其基本特征是由 多个 SMP 服务器节点通过互联网络连接而成,每个 节点只访问自己的本地资源( 内存、存储等) ,是一 种完全无共享( Share Nothing) 结构,因而扩展能力 最好,理论上其扩展无限制。在 MPP 系统中,每个 SMP 节点也可以运行自己的操作系统、数据库等。 但和 NUMA 不同的是,它不存在异地内存访问的 问题。
收稿日期: 2012 - 05 - 16 作者简介: 王磊( 1984 - ) ,男,助教,硕士研究生,主要研究方向为