什么是 MPI? MPI(Message Passing Interface ) MPI 是一个库,而不是一门语言; MPI 是一个库,而不是一门语言; MPI 是一种标准或规范的代表,而不特 指某一个对它的具体实现; MPI 是一种标准或规范的代表,而不特 指某一个对它的具体实现; MPI 是一种消息传递编程模型,并成为 这种编程模型的代表和事实上的标准; MPI 是一种消息传递编程模型,并成为 这种编程模型的代表和事实上的标准;
MPI 的历史 MPI 初稿 : 美国并行计算中心工作会议( 92 年 4 月) MPI-1 公布:第一届 MPI 大会( 93 年 1 月) MPI 标准正式发布: 1994 年 5 月 MPI-1.1 发布: 1995 年 6 月 MPI-2 发布: ( 以前的版本统称 MPI-1) 1997 年 7 月
MPI 的实现 MPICH :最重要的 MPI 实现 与 MPI-1 规范同步发展的版本 支持部分 MPI-2 的特征 ( 如动态生成进程等 ) LAM(Local Area Multicomputer) Ohio State University 开发 它主要用于异构的计算机网络计算系统
下载地址 MPICH( 最新版本 1.2.7) MPICH( 最新版本 1.2.7) LAM-MPI( 最新版本 7.1.2) LAM-MPI( 最新版本 7.1.2)
机房环境 软件部分 软件部分 操作系统: RedHat Enterprise Linux AS4 操作系统: RedHat Enterprise Linux AS4 Mpi 实现: MPICH Mpi 实现: MPICH 硬件部分 硬件部分 每个集群系统 4 个刀片 ( 每片主要参数 ) : 每个集群系统 4 个刀片 ( 每片主要参数 ) : 2CPU (Xeon3.2GHZ) , 2GB RAM , 2(4) 个千兆网 卡,2 个 SCSI 硬盘 2CPU (Xeon3.2GHZ) , 2GB RAM , 2(4) 个千兆网 卡,2 个 SCSI 硬盘
机房集群简介 一个主节点 ( 一个刀片 ) 一个主节点 ( 一个刀片 ) 启用双网卡,设置内 / 外网 IP 地址,用于用 户登陆、提交调试程序、管理员管理集群 等。主节点开启 SSH 、 Ftp 等服务。 启用双网卡,设置内 / 外网 IP 地址,用于用 户登陆、提交调试程序、管理员管理集群 等。主节点开启 SSH 、 Ftp 等服务。 三个从节点 三个从节点 用于从主节点接受计算任务并执行计算 ( 返 回结果 ) 。从节点开启 SSH 服务。 用于从主节点接受计算任务并执行计算 ( 返 回结果 ) 。从节点开启 SSH 服务。 节点之间的通信通过 SSH 协议来实现 节点之间的通信通过 SSH 协议来实现
集群使用简介 用户可以使用 SSH 远程登陆主节点,推荐 使用工具 secureCTR 或者 Putty. 用户可以使用 SSH 远程登陆主节点,推荐 使用工具 secureCTR 或者 Putty. 用户提交数据使用 Ftp 上传,推荐使用工具 cuteFtp. 用户提交数据使用 Ftp 上传,推荐使用工具 cuteFtp.
MPI 程序的编译 用户登陆之后,可以对提交的程序进行调试, 调试命令为 : 用户登陆之后,可以对提交的程序进行调试, 调试命令为 : (c )mpicc – o yourproc yourproc.c (c )mpicc – o yourproc yourproc.c (c++)mpiCC – o yourproc yourproc.cpp (c++)mpiCC – o yourproc yourproc.cpp (f77)mpif77 – o yourproc yourproc.f (f77)mpif77 – o yourproc yourproc.f (f90)mpif90 – o yourproc yourproc.f90 (f90)mpif90 – o yourproc yourproc.f90 更多的参数选项,请使用 – help 得到帮助 更多的参数选项,请使用 – help 得到帮助
MPI 程序的运行 mpirun – np NUM yourproc mpirun – np NUM yourproc 其中 NUM 表示用户需要开启的进程数 yourproc 是编译后的可执行程序名,默认是 a.out 更多的参数选项,请使用 – help 得到帮助
例子演示 计算 Pi 的值 计算 Pi 的值
共享存储编程 OpenMP 应用编程接口 API 是在共享存储体 系结构上 ( 如 SMP) 的一个编程模型. OpenMP 应用编程接口 API 是在共享存储体 系结构上 ( 如 SMP) 的一个编程模型. OpenMP 包含编译制导 (Compiler Directive) 、运行库例程 (Runtime Library) 和环境变量 (Environment Variables) OpenMP 包含编译制导 (Compiler Directive) 、运行库例程 (Runtime Library) 和环境变量 (Environment Variables) OPenMP 也和 c/c++/fortran 语言绑定 OPenMP 也和 c/c++/fortran 语言绑定
OpenMP 并行编程模型 基于线程的并行编程模型 基于线程的并行编程模型 使用 Fork-Join 并行执行模型 : 使用 Fork-Join 并行执行模型 : 主线程根据需要创建一组子线程进行工作分担. 可对串行程序进行逐步并行化.