关于mpi三个不同侧面的定义

上传人:小** 文档编号:57648108 上传时间:2018-10-23 格式:PPT 页数:25 大小:344KB
返回 下载 相关 举报
关于mpi三个不同侧面的定义_第1页
第1页 / 共25页
关于mpi三个不同侧面的定义_第2页
第2页 / 共25页
关于mpi三个不同侧面的定义_第3页
第3页 / 共25页
关于mpi三个不同侧面的定义_第4页
第4页 / 共25页
关于mpi三个不同侧面的定义_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《关于mpi三个不同侧面的定义》由会员分享,可在线阅读,更多相关《关于mpi三个不同侧面的定义(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,系统配置,

3、必须的软件包 mpich2-*.*.tar.gz (ftp:/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=gcc make make install 设置环境变量 vim $HOME/.bashrc export PATH=/usr/l

4、ocal/mpich2/bin:$PATHrootnode01 bin# which mpd /usr/local/mpich2/bin/mpd,9,系统配置,MPICH密令配置 mpd是mpi的进程管理器,欲启动mpi作业需首先对mpd进行配置,设置好mpd环相互通信的密令 vim /etc/mpd.confMPD_SECRETWORD=yourword chmod 600 /etc/mpd.conf,10,系统配置,本地运行程序测试 rootnode01 bin# mpd &1 2969 rootnode01 bin# mpdtrace -lnode01_38927 (192.168.22

5、6.171) rootnode01 bin# mpiexec -n 1 /bin/hostnamenode01 rootnode01 bin# mpdallexitrootnode01 bin#,11,系统配置,在一组结点上建立mpd环 配置 vim $HOME/mpd.hosts vim /etc/hosts 交换密钥,使得登录结点无需输入密码 ssh-keygen t rsa scp cat $HOME/.ssh/id_rsa.pub $HOME/.ssh/authorized_keys scp /etc/mpd.conf 启动 mpdboot -n -f mpd.hosts,12,系统配

6、置,查看mpd环的信息rootnode01 # mpdboot -n 10 -f mpd.hosts rootnode01 # mpdtrace -lnode01_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 (1

7、92.168.226.179)node07_54456 (192.168.226.177)node06_37627 (192.168.226.176),13,系统配置,运行及调试MPI作业 mpiexec n process_num host host_name executable mpiexec gdb mpiexec -help mpdlistjobs,14,提纲,1. MPI的定义 2. 系统配置 3. MPI编程解析 4. MPI实例,C语言MPI程序的典型结构:#include “mpi.h” int main(int argc, char *argv)int myrank, si

8、ze;int namelen;char processor_nameMPI_MAX_PROCESSOR_NAME; MPI_Init( ,15,MPI编程解析,头文件,变量声明,MPI程序初始化,MPI程序执行部分,MPI程序结束,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 com

9、m,MPI_Status status),MPI编程解析,进程0,进程1,MPI_Send,MPI_Recv,17,MPI群体通信 广播 (Broadcast) : Int MPI_Bcast ( void *buffer, int count,MPI_Datatype datatype,int root, MPI_Comm comm ) MPI_Bcast 是从一个序号为 root 的进程将一条消息广播发送到进程组内的所有进程。,MPI编程解析,18,例:进程 0 向组内其他进程广播发送100个整型数。 MPI_Comm comm; int array 100; int root = 0;M

10、PI_Bcast ( array , 100 , MPI_INT , root , comm );,MPI编程解析,19,MPI群体通信 归约(Reduce) : int MPI_Reduce (void *sendbuf, void *recvbuf, int count,MPI_Datatype datatype, 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,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 经营企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号