计算流体力学课程教学课件第十三讲mi并行程序设计初步.ppt

计算流体力学课程教学课件第十三讲mi并行程序设计初步.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算流体力学课程教学课件第十三讲mi并行程序设计初步

服务器/前端机 计算节点 a.exe a.exe a.exe 回顾 MPI 程序的运行原理: 服务器(前端机)编译 可执行代码复制 N 份,每个节点运行一份 调用MPI库函数 得到每个节点号 myid 根据myid 不同,程序不同 调用MPI 库函数进行通讯 MPI 编程的基本思想: 主从式,对等式 推荐采用对等式编程思想 基本的MPI函数(6个) MPI初始化 MPI_Init(ierr) ; 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) * 作业 13.1 熟悉MPI环境及基本编程 1) 建立MPI运行环境 (有并行机账户或在微机上安装MPI环境)。 2) 编制如下基本的MPI程序 计算S=1+2+3……+1000 要求程序可以实现N个进程的并行运行且负载尽量均衡。 N可变,程序中使用MPI_Comm_Size()函数读入N。由0号进程打印计算结果。 3)在并行环境上运行,输出结果。 要求: 提交源程序及运行情况的屏幕截图 * 13.2 实现矩阵相乘的并行计算 矩阵A, B 均为N*N的方阵,试计算矩阵C=AB; 使用P个进程并行计算(N可以被P整除); 矩阵A,B及C均采用分布式存储; A, C按行分割, B按列分割存储(见本稿 47页)。 要求编写计算C矩阵的MPI程序,并进行计算。 实际计算时,矩阵A, B请采用如下值, N设为100 计算出C矩阵后,请计算 ,并由根节点打印出来。 将S值与串行程序的结果进行对比,校验程序的正确性; 使用1,2,4,10个进程进行计算,并利用MPI_Wtime( )函数计算程序的运行时间;考核加速比及计算效率。 要求: 1)提交计算程序; 2)使用1,2,4,10个进程计算,提交计算结果(S值及计算时间)、计算效率及加速比。 * * * * 基本概念: 通信域(通信子) 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 0 1 2 3 4 5 MPI_COMM_WORLD MPI_Comm_1 MPI_Comm_2 * 把全班分成几个组,执行任务更方便 “班名”, 包含全班同学 MPI 预定义 my_id “学号” 组的名字(编号) 组内编号 通信子 例如: 把一个班分成若干组 MPI 消息传递函数 消息发送 MPI_Send(buf,count,datatype,dest,tag,comm, ierr) MPI消息:数据描述+信封 数据描述:<起始地址,数据个数,数据类型> 信封: <源/目,标签,通信域> * buf: 数据起始地址 (Fortran : 变量名, C: 变量地址/指针) count: 数据数目 (以datatype为单位,必须连续) MPI_Send(buf,count,datatype,dest,tag,comm,ierr) * Datatype: 数据类型 MPI_INTEGER, MPI_REAL, MPI_DOUBLE_PRECISION, MPI_COMPLEX, MPI_LOGICAL, MPI_CHARACTER, MPI_BYTE, MPI_PACKED Real*8 x(10) …… (给x 赋值) Call MPI_send( x(1), 10, MPI_double_precision, …..) 数据的首地址 (不是变量的值) 10 个数据(不是10个字节) Fortran : 按地址传送 : x(1) 或 x C: 按值传送: (x[0]) 或x dest: 发送目标的ID (integer) Tag: 消息标签 (integer) Co

您可能关注的文档

文档评论(0)

sunshaoying + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档