并行计算环境介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
并行计算环境介绍
计算机系04 级研究生 武志鹏
1 MPI简介
目前两种最重要的并行编程模型是数据并行和消息传递。 数据并 行编程模型的编程级别比较高,编程相对简单,但它仅适用于数据并 行问题;消息传递编程模型的编程级别相对较低,但消息传递编程模 型可以有更广泛的应用范围。
MPI就是一种消息传递编程模型,并成为这种编程模型的代表和 事实上的标准。
1.1什么是 MPI
对MPI的定义是多种多样的,但不外乎下面三个方面:
(1) MPI是一个库,而不是一门语言;
(2) MPI是一种标准或规范的代表,而不特指某一个对它的实现;
(3) MPI是一种消息传递编程模型,MPI虽然很庞大,但是它的最
终目的是服务于进程间通信这一目标的。
1.2 MPI的历史
MPI的标准化开始于1992年4月在威吉尼亚的威廉姆斯堡召开的分 布存储环境中消息传递标准的讨论会,由Dongarra,Hempel,Hey和 Walker建议的初始草案,于1992年11月推出并在1993年2月完成了修
订版,这就是MPI 1.0。
1995年6月推出了MPI的新版本MPI1.1,对原来的MPI作了进一步 的修改完善和扩充。
在1997年7月在对原来的MPI作了重大扩充的基础上又推出了MPI 的扩充部分MPI2,而把原来的MPI各种版本称为MPI1。 MPI2的扩 充很多但主要是三个方面:并行I/O、远程存储访问和动态进程管理。
1.3 MPI的语言绑定
在MPI1中明确提出了MPI和FORTRAN 77与C语言的绑定,并且 给出了通用接口和针对FORTRAN 77与C的专用接口说明。在MPI2
中除了和原来的FORTRAN 77和C语言实现绑定之外,进一步与 Fortran90和C++结合起来。
1.4 MPI的实现版本
MPICH是一种最重要的MPI实现, 它是与MPI-1规范同步发展的版 本,每当MPI推出新的版本,就会有相应的MPICH的实现版本,另外 它还支持部分MPI-2的特征。
LAM-MPI也是一种MPI实现, 主要用于异构的计算机网络计算系统。
以上2种版本的MPI实现可以分别从以下网址下载:
MPICH(最新版本1.2.7):
/mpi/mpich/
LAM-MPI(最新版本7.1.2):
/download/
2 机房环境以及集群介绍
中心机房现有2套集群,分别是由4个HP刀片、4个IBM刀片构建 而成的。
2.1 软硬件环境
(1)软件部分
操作系统:RedHat Enterprise Linux AS4
Mpi 实现:MPICH-1.2.7
(2)硬件部分
每个集群系统 4 个刀片(每片主要参数):
2CPU,2GB RAM,2(4)个千兆网卡,2 个 SCSI 硬盘
2.2 机房集群介绍
机房的每套集群分别设置一个主节点以及三个从节点,每个刀片 即为一个节点:
(1) 主节点
启用双网卡,设置内/外网 IP 地址,用于用户登陆、提交调 试程序、管理员管理集群等。主节点开启 SSH、Telnet、Ftp 服务。
(2) 从节点
用于从主节点接受计算任务并执行计算(返回结果)。从节点 开启 SSH 服务。
主从节点之间的通信通过 SSH 协议来实现。
2.3 机房集群的使用
(1) 登陆
用户可以使用 Telnet 或者 SSH 远程登陆,推荐使用工具 secureCTR 或者 Putty。
(2)数据提交
用户提交数据使用 Ftp 上传,推荐使用工具 cuteFtp。为方 便管理,需要客户端使用主动 ftp 进行连接。
(3) MPI 程序的编译
用户登陆之后,可以对提交的程序进行调试,调试命令为(括 号里面表示的是语言种类):
(c )mpicc –o yourproc yourproc.c
(c++)mpiCC –o yourproc yourproc.cpp
(f77)mpif77 –o yourproc yourproc.f
(f90)mpif90 –o yourproc yourproc.f90
具体的选项,可以使用 mpicc –help 得到帮助
(4) MPI 程序的运行
编译好之后,会生成可执行程序 yourproc,运行命令为:
mpirun –np NUM yourproc
其中 NUM 表示用户需要开启的进程数
具体选项,可以用 mpirun –help 得到帮助
(5) 例子演示――计算 Pi 的值
3 共享存储编程 OpenMP
OpenMP 应用编程接口 API 是在共享存储体系结构上(如 SMP) 的一个编程模型。它包含编译制导(Compiler Directive)、运行 库例程(Runtime Library)和环境变量(Environment Variables)。 此外,OpenMP 也是和 c/c++/fortran 语言绑定的。
OpenMP 是:
(1)基于线程的并行编程模型
(2)使用 Fork-Join 并行执行模型:
Ø
主线程根据需要创建一组子线程进行工作分担. Ø 可对串行程序进行逐步并行化.
å å ò = = - = - » + = N i N i N i f N N N i f N dx x Pi 1 1 1
0 2 ) 5 . 0 ( 1 ) 2 1 ( 1 1 4 F O R
K J O I N F O R K J O I N
主线程 并行域 并行域