计算流体力学李新亮cfdmpi并行程序设计初步学习教案.pptx
上传人:王子****青蛙 上传时间:2024-09-13 格式:PPTX 页数:56 大小:4.1MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

计算流体力学李新亮cfdmpi并行程序设计初步学习教案.pptx

计算流体力学李新亮cfdmpi并行程序设计初步学习教案.pptx

预览

免费试读已结束,剩余 46 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

计算(jìsuàn)流体力学李新亮cfdmpi并行程序设计初步一、基本概念●CFD的计算资源依赖性计算量大——流动(liúdòng)的多尺度性(湍流)大飞机全部流动(liúdòng)细节完全分辨:最小尺度:mm~mm量级;计算网格:1012-1016;需计算量:~1020-30;工程需求:8个小时之内完成计算预计:LES:2045年;DNS:2080年几种我们常见(chánɡjiàn)的并行计算机各系统的性能自行搭建的简易(jiǎnyì)机群782.并行程序设计(shèjì)工具局域网络MPI的编译、运行环境(huánjìng)1)并行计算机(力学所机群、深腾7000,曙光5000A)编译:mpif90/mpif77/mpiccf90/f77-I/usr/local/mpi/include-L/usr/local/mpi/lib-lm-lmpi运行:mpirun/bsub2)MPIforNT(Windows2000,XP)编译环境(huánjìng):VisualFortran/MSDevelopStudio设置:头文件路径、连接路径运行:mpirun1213服务器/前端机15一个简单的MPI程序(chéngxù)hello.f90include‘mpif.h’integermyid,numprocs,ierrcallMPI_Init(ierr)callMPI_Comm_rank(MPI_COMM_WORLD,myid,ierr)callMPI_Comm_size(MPI_COMM_WORLD,numprocs,ierr)Print*,"HelloWorld!myidis:",myid!添加自己的程序(chéngxù)……!callMPI_Finalize(ierr)end运行(yùnxíng)结果:基本(jīběn)MPI函数(MPI子集)1)MPI初始化callMPI_Init(ierr)(out)Integer::ierr2)MPI结束callMPI_Finalize(ierr)(out)Integer::ierr3)得到(dédào)当前进程标识callMPI_Comm_rank(MPI_COMM_WORLD,myid,ierr)(In)Integer::MPI_COMM_WORLD为进程所在的通信域(Out)Integer::myid,ierr4)得到(dédào)通信域包含的进程数CallMPI_Comm_size(MPI_COMM_WORLD,numprocs,ierr)(In)Integer::MPI_COMM_WORLD(Out)Integer::numprocs,ierr基本概念:通信(tōngxìn)域(通信(tōngxìn)子)MPI消息(xiāoxi)传递函数消息(xiāoxi)发送MPI_Send(buf,count,datatype,dest,tag,comm,ierr)MPI消息(xiāoxi):数据描述+信封数据描述:<起始地址,数据个数,数据类型>信封:<源/目,标签,通信域>buf:数据起始地址(Fortran:变量名,C:变量地址/指针)count:数据数目(shùmù)(以datatype为单位,必须连续)dest:发送目标的ID(integer)Tag:消息(xiāoxi)标签(integer)Comm:通信域(integer),例:MPI_COMM_WORLDierr:整数,如果成功返回0例:realA…….if(my_id.eq.0)CallMPI_Send(A,1,MPI_REAL,1,27,MPI_COMM_WORLD,ierr)标签tag的作用:区别不同的消息(xiāoxi)消息接收MPI_Recv(buf,count,datatype,source,tag,comm,status,ierr)参数:数据起始(qǐshǐ)地址,数据,类型,源地址,标签,通信域,返回状态integerstatus(MPI_STATUS_SIZE)MPI接收匹配:数据类型、源地址、标签要一致;否则不接收MPI_Recv(buf,count,datatype,source,tag,comm,status,ierr)源地址,标签(biāoqiān)MPI的消息发送机制(jīzhì)——两步进行MPI_Send(A,…)发送MPI_Recv(B,…)接收!sumfrom1to100!Runonlyfornp=2!!!!include'mpif.h'integermyid,sum_local,sum_local1,sum_global,ierr,sta