530MPI并行程序设计.ppt

上传人:sccc 文档编号:5612255 上传时间:2023-08-02 格式:PPT 页数:25 大小:342.01KB
返回 下载 相关 举报
530MPI并行程序设计.ppt_第1页
第1页 / 共25页
530MPI并行程序设计.ppt_第2页
第2页 / 共25页
530MPI并行程序设计.ppt_第3页
第3页 / 共25页
530MPI并行程序设计.ppt_第4页
第4页 / 共25页
530MPI并行程序设计.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《530MPI并行程序设计.ppt》由会员分享,可在线阅读,更多相关《530MPI并行程序设计.ppt(25页珍藏版)》请在三一办公上搜索。

1、1,MPI并行程序设计,2,提纲,1.MPI的定义2.系统配置3.MPI编程解析4.MPI实例,3,提纲,1.MPI的定义2.系统配置3.MPI编程解析4.MPI实例,4,MPI的定义,关于MPI三个不同侧面的定义对MPI的定义是多种多样的,但不外乎下面三个方面,它们限定了MPI的内涵和外延。(1)MPI是一个库,而不是一门语言。许多人认为MPI就是一种并行语言,这是不准确的。但是按照并行语言的分类,可以把FORTRAN+MPI或C+MPI,看作是一种在原来串行语言基础之上扩展后得到的并行语言。MPI库可以被FORTRAN77/C/Fortran90/C+调用,从语法上说,它遵守所有对库函数/

2、过程的调用规则,和一般的函数/过程没有什么区别。,5,MPI的定义,(2)MPI是一种标准或规范的代表,而不特指某一个对它的具体实现。迄今为止,所有的并行计算机制造商都提供对MPI的支持,可以在网上免费得到MPI在不同并行计算机上的实现(mpich/chimp/lam),一个正确的MPI程序,可以不加修改地在所有的并行机上运行。(3)MPI是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准。MPI虽然很庞大,但是它的最终目的是服务于进程间通信。,6,提纲,1.MPI的定义2.系统配置3.MPI编程解析4.MPI实例,7,系统配置,必须的软件包mpich2-*.*.tar.gz(ft

3、p:/ftp.mcs.anl.gov/pub/mpi/)binutils(autoconf,automake)C compiler如果你需要用Fortran-77、Fortran-90、C+编写MPI程序,则必须安装相应的编译器Python 2.2 or later,8,系统配置,安装./configure-prefix=/usr/local/mpich2-enable-sharedlibs=gccmakemake install设置环境变量vim$HOME/.bashrcexport PATH=/usr/local/mpich2/bin:$PATHrootnode01 bin#which m

4、pd/usr/local/mpich2/bin/mpd,9,系统配置,MPICH密令配置mpd是mpi的进程管理器,欲启动mpi作业需首先对mpd进行配置,设置好mpd环相互通信的密令vim/etc/mpd.conf MPD_SECRETWORD=yourwordchmod 600/etc/mpd.conf,10,系统配置,本地运行程序测试rootnode01 bin#mpd&1 2969rootnode01 bin#mpdtrace-l node01_38927(192.168.226.171)rootnode01 bin#mpiexec-n 1/bin/hostname node01roo

5、tnode01 bin#mpdallexit rootnode01 bin#,11,系统配置,在一组结点上建立mpd环配置vim$HOME/mpd.hostsvim/etc/hosts交换密钥,使得登录结点无需输入密码ssh-keygen t rsascp cat$HOME/.ssh/id_rsa.pub$HOME/.ssh/authorized_keysscp/etc/mpd.conf启动mpdboot-n-f mpd.hosts,12,系统配置,查看mpd环的信息rootnode01#mpdboot-n 10-f mpd.hosts rootnode01#mpdtrace-lnode01_

6、52737(192.168.226.171)node05_57874(192.168.226.175)node10_46474(192.168.226.180)node04_44059(192.168.226.174)node03_39268(192.168.226.173)node02_41483(192.168.226.172)node08_57202(192.168.226.178)node09_45880(192.168.226.179)node07_54456(192.168.226.177)node06_37627(192.168.226.176),13,系统配置,运行及调试MPI

7、作业mpiexec n process_num host host_name executablempiexec gdbmpiexec-helpmpdlistjobs,14,提纲,1.MPI的定义2.系统配置3.MPI编程解析4.MPI实例,C语言MPI程序的典型结构:#include“mpi.h”int main(int argc,char*argv)int myrank,size;int namelen;char processor_nameMPI_MAX_PROCESSOR_NAME;MPI_Init(,15,MPI编程解析,头文件,变量声明,MPI程序初始化,MPI程序执行部分,MPI

8、程序结束,MPI点对点消息传递MPI_Send(void*buf,int count,MPI_Datatype datatype,int dest,int tag,MPI_Comm comm)MPI_Recv(void*buf,int count,MPI_Datatype datatype,int source,int tag,MPI_Comm comm,MPI_Status status),MPI编程解析,进程0,进程1,MPI_Send,MPI_Recv,17,MPI群体通信广播(Broadcast):Int MPI_Bcast(void*buffer,int count,MPI_Data

9、type datatype,int root,MPI_Comm comm)MPI_Bcast 是从一个序号为 root 的进程将一条消息广播发送到进程组内的所有进程。,MPI编程解析,18,例:进程 0 向组内其他进程广播发送100个整型数。MPI_Comm comm;int array 100;int root=0;.MPI_Bcast(array,100,MPI_INT,root,comm);,MPI编程解析,19,MPI群体通信归约(Reduce):int MPI_Reduce(void*sendbuf,void*recvbuf,int count,MPI_Datatype dataty

10、pe,MPI_Op op,int root,MPI_Comm comm)MPI_Reduce将组内每个进程输入缓冲区中的数据按 op 操作组合起来,并将其结果返回到序号为 root 的进程的输出缓冲区中。,MPI编程解析,20,reduce操作:,进程0,进程1,进程n-1,:reduce();:,:reduce();:,:reduce();:,MPI编程解析,21,提纲,1.MPI的定义2.系统配置3.MPI编程解析4.MPI实例,22,点对点消息传递例:数据接力传送,MPI实例,23,群体通信例:求PI求PI值的近似计算方法具有很好的并行性,用到了广播和归约两种操作PI值怎么近似求?,MPI实例,24,群体通信例:求PI,MPI实例,0 1 2 3 0 0 1 2,1/n,25,群体通信例:求PI,MPI实例,reduce,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号