版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、并行计算课程设计班级:12级计科一班 姓名:郭慧敏 学号:121013040一、实验内容:使用MPI并行程序设计方法设计矩阵加法的并行程序。随机产生所需的矩阵元素尽量设计较高的加速比二、程序段:1、方法一:利用MPI.Send和MPI_Recv实现多进程并行#define MPICH_SKIP_MPICXX#iiiclude #iiiclude #iiicludehitarg,chat * arv)mta1010;mt b1010;mtc1010;mt myraiiksize.b l,cl jjjows,offset;double end_tmie,stait_time;MPI_Status
2、status;MPI_Iiut(&arg.&aiv);MPI_Comm_iank(MPI_COMM_WORLD,&niyrank);MPI_Comm_size(MPI_COMM_WORLD,&size);if(myraiik=O)prmtf(H 当前进程数是:dn,size);pnntf(”进程号:dmyraiik);if(myrai = 0)(/生成三个随机数组a、b、cfor (1=0; i10; i+)(for(j=0;j10;j+)aiJj = rand() % 10;biIj = randQ % 10;cij = 0;)/输出a数组的各元素pnntf(”aiT);fbr(i=O; i
3、10; i+)(for(j=0;j10;j+)(prmtfC%d 侦亚);pnntf(”n”);输出a数组的各元素pnntf(”biT);fbr(i=O; i10; i+)for(j=0;j10;j+)(pnntf(”d ”,bij);)pnntf(”n”);bl=10/(size-l);cl=10%(size-l);offset = 0;fbr(i=l; isize; i+)rows = (i =cl) ? bl+1: biy/ffi二维数组按行平均分配给进程prmtf(nsendmg %d rows to process %dn”, rows, i);MPI_Send(&offset, 1
4、MPI_COMM_WORLD);发送行偏移量MPI_Send(&rows, 1 .MPI_INT,i,0, MPI_COMM_WORLD);发送行数MPI_SEd(&aoffset0,rows*10,MPI_INT,iQMPI_COMM_WORLD);/ 把数组a元素发送给其他进程MPI_Send(&boffset0,rows*10,MPI_INT,iQMPI_COMM_WORLD); 把数组b元素发送给其他进程offset += rows;)else(MPI_Recv(&offset, LMPI_INT,OQMPI_COMM_WORLD.&status);MPI_Recv(&iows, 1
5、MPI_INT.OQMPI_COMM_WORLD&status);MPI_Recv(&a,iows* 10,MPI_INT,OQMPI_COMM_WORLD,&status);MPI_Recv(&b,iows* 10,MPI_INT,OQMPI_COMM_VORLD.&status);矩阵加法fbr(i=O; irows; i+)(for(j=0;j10;j+)(cij = aij+bij;)if(myrai != 0) (MPI_Send(&offset, 1 ,MPI_INT,0,0,MPI_COMM_WORLD);MPI_Send(&rows,LMPI_INT.O, 0, MPI.COM
6、M.WORLD);/ MPI_Send(&a,iows* 10,MPI_UNSIGNED_LONG_LONG,0,0,MPI_COMM_WORLD);MPI_Send(&c,rows*0,MPI_UNSIGNED_LONG_LONG0,0,MPI_COMM_WORLD);else(staivtiine = MPI_WtimeQ;fbr(i=l; isize; i+)(MPI_Recv(&offset, 1. MPI_INT,0, MPI_COMM_WORLD. &status); 接收行偏移量MPI_Recv(&iows,LMPI_INT.i,0, MPI_COMM_WORLD, &statu
7、s); 接收行数MPI_Recv(&coffset0, rows* 10, MPI_UNSIGNED_LONG_LONG, i, 0, MPI_COMM_WORLD, &status); Z/C接收从进程发回的结果end_time = MPI_Wtiine();prmtf(Hprocess cost %f secondsii, end_timestart_time);fbr(i=O; i10; i+)for(j=0;j10;j+)pnntf(”-3d M,cij);pnntf(”n”);MPI_Fmalize();return 0;运行结果截图:(!)进程数是7:(2)进程数是4:exeSB
8、C:Window5Sy5tem32cmcL进程号:2当前诳程数是屈程号:0a14 9 825115 7(12 2 18719T 5p 2 3 137273 9SOSO4600& 39 4 & 614&78 9$ 9 4 731407 76 15 51016T 7T 3 5 912&30 2U 4 S 521468 8|1 3 S 078870 3k04845T12 8k 3 2 858829 4|1 3 4 184T91 85 2 & 285901 8p 4 0 689382 15 8 0 6&5293 2p 6 7 420401 739886081 5p 7 3 106019 4k 9 8
9、873317 4zeniing4rowstoprc-csz 1seniing3rows槌pr c-ess 2seniing3rowspr c-ess 3processcost 0.000096 secondsS 4131&108271355471313911169k 57211 1191&41711214212119071112 86129139151010&174139669109&7129305681414614IT986111T9遂程号1 1诞程号,3111182T47171512166141111877p LZ. io请按任意键继续.2、方法二:利用MPLScatteiv和MPI_Ga
10、tterv实现多进程并行#define MPICH_SKIP_MPICXX#iiiclude #iiiclude #iiicludehit aigc.chai * argv)mta1010;mt b1010;mtC1010;mtA1010;mtB1010;mtD1010;int rank.size,x,y,rc 10,rd 10 ,i,j;double end tune.stan time;MPI_Imt(&argc.&argv);MPLComm_nmk(MPI_COMM_WORLD.&rank);MPI_Comm_size(MPI_COMM_WORLD,&size);if(raiik=O)p
11、iiiitf(当前进程数是:%dii,size);pnntf(”进程号:%d irrank);x=10/size;v=10%size;fdr(i=O;isize;i-H-)rci=x;fbr(i=0;iy;i-H-)rc 国+;fbr(i=0;isize;i-H-) rci=rci*10;id0=0;fbr(i= 1 ;isize;i+)rd i=rd i- l+rc i-1;/主进程if(raiik = 0) (生成三个随机数组a、b、cfor (i=0; i10; i+)(for(j=0;j10;j+)(aij = iand() % 10;bij = iand() % 10:Aij = 0
12、;Bij = 0;Cij = 0;DiQ = 0;)输出A数组的各元素printf(An-);fbr(i=O; i10; i+)for (j=0;j10;j+)(prmtfC%d M,aij);)pnntf(”n”);输出B数组的各元素pnntf(”BW);fbr(i=O; i10; i+)for(j=0;j10;j+)(pnntf(”d bij);)pnntf(”n”);)MPI_ScatteN(&aOO】c,rd,MPI_INT,&AOO,rcmnk,MPI_INT, 0,MPI_COMM_WORLD);MPI_ScatteN(&bOO】c,Ki,MPI_INT,&BOO,rcnink.M
13、PI_INT, 0,MPI_COMM_WORLD);矩阵加法的实现fbr(i=O; iicraiik/10; i+)(for(j=0;j10;j+)(Cij=Aij+Bij;)/*pnntf(HA nn);fbr(i=O ;irc rank/lffor(j=OjviOj+)(pimtfC%d ”.Ai。);)pnntR”n);prmtf(”B W);fbr(i=O ;irc rank/10;i+)ffor(j=OjviOj+)(pnntf(”d Bi|j);)pnntffn”);printf(nC nn);fbr(i=O ;irc rank/lffor(j=OjviOj+)printf(nnn
14、);可输出计算结果pnntf(-C=A+B=n-);MPI_Gatherv(&COO,rcrank,MPI_INT,&DOO,0idMPI_INT.O,MPI_COMM_VORLD);if(raiik=O)(for(i=0: i10; i+) for(j=0;j10;j+)( pnntf(”3d Dij);pnntf(”n”); )MPLFmalizeQ;return 0;国j C:WindowsSystem32md.exe1 4 9 8 2 5 11,12 2 18 7 19(3 2 3 1 3 7 276 0 8 0 4 6 009 4 6 6 1 4 673 9 4 7 3 140& 1 5 5 1 0 16T35912630 4 3 5 2 1461 3 8 0 7 8 873口T 0 4 8 4 5 714 3 2 6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年特殊病房项目资金筹措计划书代可行性研究报告
- 工程力学(下)电子教案第九章
- 2023-2024学年广东省深圳市宝安区八年级(上)期末英语试卷
- 上海市县(2024年-2025年小学五年级语文)人教版小升初模拟(下学期)试卷及答案
- A版二年级下册语文教案(全册)及教学计划
- 空调机组及新风机组技术规格书
- 废弃物资源化利用行业相关项目经营管理报告
- 医用踝部支具产业规划专项研究报告
- 乙烯基塑料制餐具垫产业深度调研及未来发展现状趋势
- 农业起卸机产业深度调研及未来发展现状趋势
- ISO14001:2015环境安全监测与测量控制程序
- 微创冠脉搭桥手术
- 富血小板血浆(PRP)简介
- Abominable《雪人奇缘》电影完整中英文对照剧本
- (正式版)HGT 3655-2024 紫外光(UV)固化木器涂料
- 2.2做出判断的分支第一课时教案20232024学年教科版高中信息技术必修1
- 课题开题报告会方案
- 钢管施工承包合同(完整版合同模板)
- 大学生职业生涯规划无人机林业
- 教师职业生涯发展报告
- 2024年时事新闻及点评【六篇】
评论
0/150
提交评论