版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MPI并行程序设计教师:彭四伟教师:彭四伟MPICH2的下载和安装n官方下载地址:官方下载地址:n/research/projects/mpich2/downloads/index.php?s=downloadsn安装条件安装条件n.Net Frame 1.1/2.0nVisual C+ 2005 SP1 Redistributable Package (x86)n管理员权限管理员权限MPICH2服务(守护进程)nMPICH2的守护进程的守护进程smpdn服务的安装服务的安装nSmpd -installn服务的卸载服务的卸载nSmpd -removen
2、服务的开启服务的开启nSmpd -startn服务的停止服务的停止nSmpd -stopMPICH2的配置n设设置置工工作作账账号号MPICH2的配置n设设置置环环境境参参数数MPICH2编程环境设置n在编译器选项下设置在编译器选项下设置include路径路径n加入加入includen在编译器选项下设置在编译器选项下设置lib路径路径n加入加入libn在编译器选项下加入链接库在编译器选项下加入链接库nmpi.libMPICH2程序的布置和运行n程序的布署程序的布署n程序要求分布在各结点的相同路径中。程序要求分布在各结点的相同路径中。n通过通过mpiexec运行运行nmpiexec n 4 he
3、llonmpiexec hosts 4 pc1 pc2 pc3 pc4 hellonmpiexec hosts 2 pc1 2 pc2 3 hellonmpiexec localonly 4 helloMPI并行程序设计nMPI程序的一般模式程序的一般模式#include int main(int argc, char *argv) int size, rank; MPI_Init(&argc, &argv); /* initialize MPI */ MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COM
4、M_WORLD, &rank); if (rank = 0) master(); else slave(); MPI_Finalize(); /* cleanup MPI */ return 0;#include int main(int argc, char *argv) int size, rank; MPI_Init(&argc, &argv); /* initialize MPI */ MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); switc
5、h (rank) case 0: . case 1: . . default: . MPI_Finalize(); /* cleanup MPI */ return 0;#include “mpi.h”int foo(int i) . int main( int argc, char *argv )int i, tmp, sum=0, group_size, my_rank, N; MPI_Status status;MPI_Init( &argc, &argv );MPI_Comm_size( MPI_COMM_WORLD, &group_size );MPI_Com
6、m_rank( MPI_COMM_WORLD, &my_rank );if (my_rank=0)printf( “N=“ ); scanf( “%d”, &N );for (i=1; igroup_size; i+)S1:MPI_Send( &N, 1, MPI_INT, i, i, MPI_COMM_WORLD; );for (i=my_rank; iN; i+=group_size)sum += foo(i);for (i=1; igroup_size; i+)S2:MPI_Recv( &tmp, 1, MPI_INT, i, i, MPI_COMM_WO
7、RLD, &status );sum += tmp;printf (“nThe result=%dn”, sum );elseS3:MPI_Recv( &N, 1, MPI_INT, 0, my_rank, MPI_COMM_WORLD, &status );for (i=my_rank; iN; i+=group_size)sum += foo(i);S4:MPI_Send( &sum, 1, MPI_INT, 0, i, MPI_COMM_WORLD );MPI_Finalize();return 0;10)(niifoo#include #include
8、#define N 1000000main()double sum=0, local, mypi, pi, dx;long i, taskid, numtask;A:dx = 1.0/N;MPI_Init( &argc, &argv );MPI_Comm_rank( MPI_COMM_WORLD, &taskid );MPI_COMM_size( MPI_COMM_WORLD, &numtask );B:for (i=taskid; iN; i+=numtask)P:local = (i+0.5)*dx;Q:sum += 4.0/(1.0+local*local
9、);mypi = sum*dx;C:MPI_Reduce( &mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD );D:if (taskid=0) printf( “pi is %lfn”, pi );MPI_Finalize();4)(1110102xarctgdxx#include #include using namespace std;int main(int argc, char *argv)int size, rank, x=-1;MPI_Status status;MPI_Init(&argc, &a
10、mp;argv);MPI_Comm_size(MPI_COMM_WORLD, &size);MPI_Comm_rank(MPI_COMM_WORLD, &rank);while (x!=0)if (rank=0)cout x;cout Read x from rank rank endl;elseMPI_Recv(&x, 1, MPI_INT, rank-1, 0, MPI_COMM_WORLD, &status);cout Recevied x from rank rank-1 endl;if (ranksize-1)MPI_Send(&x, 1, M
11、PI_INT, rank+1, 0, MPI_COMM_WORLD);cout Send x to rank rank+1 endl;MPI_Barrier(MPI_COMM_WORLD);MPI_Finalize();return 0;MPI的通信模式分类分类发送发送接收接收阻塞通信MPI_SendMPI_RecvMPI_IrecvMPI_BsendMPI_RsendMPI_Ssend非阻塞通信MPI_IsendMPI_IbsendMPI_IrsendMPI_IssendB:Buffer R:Ready S:SynchonousI:Immediately#include #include u
12、sing namespace std;int main(int argc, char *argv) int rank; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); char msg17, msg317; double msg22; int s1, s2, s3; MPI_Status status; MPI_Pack_size(7, MPI_CHAR, MPI_COMM_WORLD, &s1); MPI_Pack_size(2, MPI_DOUBLE, MPI_COMM_WORLD,
13、 &s2); MPI_Pack_size(17, MPI_CHAR, MPI_COMM_WORLD, &s3); int bufsize = 3*MPI_BSEND_OVERHEAD + s1 + s2 + s3; char *buf = new charbufsize; MPI_Buffer_attach(buf, bufsize); if (rank = 0) MPI_Bsend(msg1, 7, MPI_CHAR, 1, 0, MPI_COMM_WORLD); MPI_Bsend(msg2, 2, MPI_DOUBLE, 1, 0, MPI_COMM_WORLD); MP
14、I_Bsend(msg3, 17, MPI_CHAR, 1, 0, MPI_COMM_WORLD); else if (rank = 1) MPI_Recv(msg1, 7, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); MPI_Recv(msg2, 2, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD, &status); MPI_Recv(msg3, 17, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); MPI_Buffer_detach(&buf, &bu
15、fsize); delete buf; MPI_Finalize(); return 0;缓冲模式if (rank = 0) MPI_Recv(buffer, n, MPI_INT, 1, 1, MPI_COMM_WORLD, &status); MPI_Barrier(MPI_COMM_WORLD);else if (rank = 1) MPI_Barrier(MPI_COMM_WORLD); MPI_Rsend(buffer, n, MPI_INT, 0, 1, MPI_COMM_WORLD);就绪模式MPI中的通信安全问题n例程:例程:rank传递传递01230123#inclu
16、de main(int argc, char *argv ) int rank, size, x; MPI_Status status; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); MPI_Send(&rank,1,MPI_INT, (rank+1)%size, 1,MPI_COMM_WORLD); MPI_Recv(&x, 1, MPI_INT, (rank+size-1)%si
17、ze, 1, MPI_COMM_WORLD, &status); MPI_Finalize(); return 0;MPI中的通信安全问题MPI中的通信安全问题MPI中的通信安全问题MPI中的通信安全问题n例程:避免死锁的例程:避免死锁的rank传递传递#include main(int argc, char *argv ) . if (rank%2=0) MPI_Send(&rank,1,MPI_INT, (rank+1)%size, 1,MPI_COMM_WORLD); MPI_Recv(&x, 1, MPI_INT, (rank+size-1)%size, 1,
18、MPI_COMM_WORLD, &status); else MPI_Recv(&x, 1, MPI_INT, (rank+size-1)%size, 1, MPI_COMM_WORLD, &status); MPI_Send(&rank,1,MPI_INT, (rank+1)%size, 1,MPI_COMM_WORLD); MPI_Finalize(); return 0;MPI中的通信安全问题n捆绑接收发送:捆绑接收发送:MPI_Sendrecvnint MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Data
19、type sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status)MPI的数据类型nMPI的数据类型是用于保障消息传递过程中的数据类型是用于保障消息传递过程中的数据能够被正确的解释,而不是为了用的数据能够被正确的解释,而不是为了用于计算。于计算。n消息传递中的类型匹配消息传递中的类型匹配n有类型数据的通信,发送方和接收方均使用相同的数据类型有类型数据的通信,发送方和接收方均使用相同的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 运输代理合同
- 2024年公交车体广告投放与租赁合同
- 垃圾处理设备租用合同
- 2024年工地轻工业施工承包合同
- 2024年企业互借资金合同
- 2024年国际贸易货物买卖合同
- 2024年学校水电暖安装合同
- 2024年个人购房信用借款合同
- 2024年医疗场所监控系统施工合同
- 2024年外贸业务代理合同
- 文化中心运营方案
- 小区挡土墙监测方案
- 大象版-六年级省情、礼仪、心理健康、综合知识教案(全册)
- 外科(整形外科方向)住院医师规范化培训内容与标准
- 登高作业 施工方案
- 学助产的职业生涯规划书
- 苏教版六下数学《正比例的意义》教学设计(区级公开课)
- 【S】幼儿绘本故事《三只小猪》课件
- 社团组织结构图
- 2023年超星《军事理论》考试题库(通用题型)
- 2023年学习兴税(纳税服务条线)知识考试题库(含答案)
评论
0/150
提交评论