资源描述:
《中科院计算流体力学讲义CFD2011-第14讲-MPI并行程序设计初步》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算流体力学讲义第六讲MPI并行程序设计(2)李新亮lixl@imech.ac.cn;力学所主楼219;82543801知识点:阻塞通信与非阻塞通信非连续数据的发送与接收OpenMP并行程序设计初步1CopyrightbyLiXinliang讲义、课件上传至www.cfluid.com(流体中文网)->“流体论坛”->“CFD基础理论”也可到如下网址下载:http://cid-1cc0dcbff560c149.office.live.com/browse.aspx/.Public服务器/前端机计算节点a.exea.exea.exeMPI
2、程序的运行原理:服务器(前端机)编译可执行代码复制N份,每个节点运行一份调用MPI库函数得到每个节点号my_id根据my_id不同,程序执行情况不同调用MPI库函数进行通讯MPI编程的基本思想:主从式,对等式2CopyrightbyLiXinliang重点:对等式程序设计知识回顾CopyrightbyLiXinliang3计算节点a.exea.exea.exea.exe对等式设计“对等式”程序设计思想如果我是其中一个进程;我应当做……完成我需要完成的任务站在其中一个进程的角度思考基本的MPI函数(6个)MPI初始化MPI_Init(ie
3、rr);MPI结束MPI_Finalize(ierr)得到当前进程标识MPI_Comm_rank(MPI_COMM_WORLD,myid,ierr)得到通信域包含的进程数MPI_Comm_size(MPI_COMM_WORLD,numprocs,ierr)消息发送MPI_Send(buf,count,datatype,dest,tag,comm,ierr)消息接收MPI_Recv(buf,count,datatype,source,tag,comm,status,ierr)4CopyrightbyLiXinliangMPI的消息发送机制
4、——两步进行MPI_Send(A,…)发送MPI_Recv(B,…)接收发送变量A接收到变量B配合使用5CopyrightbyLiXinliang阻塞发送开始结束消息成功发出缓冲区可释放阻塞接收开始结束消息成功接收缓冲区数据可使用一、阻塞式通信与非阻塞式通信阻塞式发送与接收MPI_Send(A,…)MPI_Recv(B,…)6CopyrightbyLiXinliangMPI_Send()返回后缓冲区可释放sum=……callMPI_Send(sum,……)sum=……变量可重复利用MPI_Recv()返回后缓冲区数据可使用CallMPI
5、_Recv(sum1,……)Sum=sum0+sum1……7CopyrightbyLiXinliang非阻塞发送启动发送立即返回计算通信完成释放发送缓冲区发送消息非阻塞接收启动接收立即返回计算通信完成引用接收数据接收消息计算与通信重叠非阻塞消息发送与接收8CopyrightbyLiXinliang非阻塞消息发送MPI_ISend(buf,count,datatype,dest,tag,comm,request,ierr)Inbuf,count,datatype,dest,tag,commOutrequest,ierrRequest(返回
6、的非阻塞通信对象,整数)非阻塞消息接收MPI_IRecv(buf,count,datatype,source,tag,comm,request,ierr)Inbuf,count,datatype,source,tag,commOutrequest,ierr非阻塞通信的完成MPI_Wait(request,status,ierr)等待消息收发完成MPI_Test(request,flag,stutus,ierr)MPI_Waitall(const,request_array,status,ierr)等待多个消息完成InrequestOut
7、status,flag(logical型)9CopyrightbyLiXinliang非阻塞通信调用后立即返回,缓冲区不能立即使用Sum=……计算某变量MPI_Isend(sum….)发送该变量sum=……不能给变量重新赋值(发送可能尚未完成)MPI_Irecv(sum1,……)sum=sum0+sum1数据不能立即使用(接收可能未完成)MPI_Isend(sum,…,request,…)……CallMPI_Wait(request,status,ierr)Sum=……√MPI_Irecv(sum1,……,request,…)……Cal
8、lMPI_Wait(request,status,ierr)Sum=sum0+sum1√10CopyrightbyLiXinliang利用通信与计算重叠技术提高效率例:计算差分串行程序realA(N,N),