- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CFD2011第13讲MPI并行程序设计初步1,mpi并行程序设计,mpi并行程序设计pdf,mpi并行程序,mpi并行,mpi并行计算,mpi并行编程,linuxmpi并行环境,mpi并行编程入门,mpi并行环境
服务器/前端机 计算节点 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) Copyright by Li Xinliang * 作业 13.1 熟悉MPI环境及基本编程 1) 建立MPI运行环境 (有并行机账户或在微机上安装MPI环境)。 2) 编制如下基本的MPI程序 计算S=1+2+3……+1000 要求程序可以实现N个进程的并行运行且负载尽量均衡。 N可变,程序中使用MPI_Comm_Size()函数读入N。由0号进程打印计算结果。 3)在并行环境上运行,输出结果。 要求: 提交源程序及运行情况的屏幕截图 Copyright by Li Xinliang * 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 * Copyright by Li Xinliang 把全班分成几个组,执行任务更方便 “班名”, 包含全班同学 MPI 预定义 my_id “学号” 组的名字(编号) 组内编号 通信子
例如: 把一个班分成若干组 MPI 消息传递函数 消息发送 MPI_Send(buf,count,datatype,dest,tag,comm, ierr) MPI消息:数据描述+信封 数据描述:<起始地址,数据个数,数据类型> 信封: <源/目,标签,通信域> * Copyright by Li Xinliang buf: 数据起始地址 (Fortran : 变量名, C: 变量地址/指针) count: 数据数目 (以datatype为单位,必须连续) MPI_Send(buf,count,datatype,dest,tag,comm,ierr) * Copyright by Li Xinliang 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 个数据(不
文档评论(0)