530-MPI并行程序设计.ppt

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

《530-MPI并行程序设计.ppt》由会员分享,可在线阅读,更多相关《530-MPI并行程序设计.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,系统

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=/us

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

5、.168.226.171) rootnode01 bin# mpiexec -n 1 /bin/hostname node01 rootnode01 bin# mpdallexit rootnode01 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.hos

6、ts,12,系统配置,查看mpd环的信息 rootnode01 # mpdboot -n 10 -f mpd.hosts rootnode01 # mpdtrace -l node01_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.17

7、8) node09_45880 (192.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

8、 *argv) int myrank, size; 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 s

9、ource, 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_Datatype datatype, int root, MPI_Comm comm ) MPI_Bcast 是从一个序号为 root 的进程将一条消息广播发送到进程组内的所有进程。,MPI编程解析,18,例:进程 0 向组内其他进程广播发送100个整型数。 MPI_Comm comm;

10、 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 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,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1