全文预览

并行程序设计实验报告(wave,jacobi)

上传者:梦&殇 |  格式:docx  |  页数:55 |  大小:216KB

文档介绍
wave程序OpenMpР主要对for循环进行并行化,下面是主要计算部分的代码,除了计算部分,初始化部分的for循环也是可以并行执行的。Р//迭代之间存在数据相关,不能并行化Рfor (i=1;i<=nsteps;i++)Р {Р //每次迭代内部可以并行化,将for循环分布到各个进程中去Р #pragma omp parallel forР for (j = 1; j <= tpoints; j++)Р {Р /* global endpoints */Р if ((j == 1) || (j == tpoints))Р newval[j] = 0.0;Р elseР do_math(j);Р }Р for (j = 1; j <= tpoints; j++)Р {Р oldval[j] = values[j];Р values[j] = newval[j];Р }Р }Р4.3 jacobi程序MPI主要代码Р 基本原理与wave程序相同,在消息传递方面主要的不同之处是可以选择二维块分布,消息传递代码如下Р//偶数号进程的操作?Рif(my_rank%2==0)Р?{Р//与左方通信Р if (my_rank%(pro_num/ROW)!=0) Р { Р Р for(i=0;i<y_point;i++)Р {Р MPI_Send(&u[i+1][1] ,1, MPI_DOUBLE, my_rank-1, 1, M_WORLD);Р MPI_Recv(&u[i+1][0] , 1, MPI_DOUBLE, my_rank-1, 1, M_WORLD, &status);Р }Р }Р//与右方通信Р if ((my_rank+1)%(pro_num/ROW)!=0) Р {Р ……Р }Р//与上方通信Р if (my_rank/(pro_num/ROW)!=0)Р {

收藏

分享

举报
下载此文档