首页 / 更多教程 / 用MPI进行分布式内存编程(1)
用MPI进行分布式内存编程(1)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用MPI进行分布式内存编程(1),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1970字,纯文字阅读大概需要3分钟。
内容图文
![用MPI进行分布式内存编程(1)](/upload/InfoBanner/zyjiaocheng/938/401c429a6522420a866b0225bc2f3b53.jpg)
《并行程序设计导论》第三章部分程序
程序3.1运行实例
#include<stdio.h> #include<string.h> #include<mpi.h> const int MAX_STRING=100; int main() { char greet[MAX_STRING]; int comm_sz; //进程数 int my_rank; //进程号 MPI_Init(NULL,NULL); //初始化 MPI_Comm_size(MPI_COMM_WORLD,&comm_sz); //返回进程数 MPI_Comm_rank(MPI_COMM_WORLD,&my_rank); //返回进程号 if(my_rank!=0) { sprintf(greet,"Greeting from process %d of %d",my_rank,comm_sz); MPI_Send(greet,strlen(greet)+1,MPI_CHAR,0,0,MPI_COMM_WORLD); //通信,发送 } else { printf("Greeting from process %d of %d",my_rank,comm_sz); int q; for( q=1;q<comm_sz;q++) { MPI_Recv(greet,MAX_STRING,MPI_CHAR,q,0,MPI_COMM_WORLD,MPI_STATUS_IGNORE);//通信,接收 printf("%s\n",greet); } } MPI_Finalize(); //告知系统MPI已使用完毕 return 0; }
在天河平台运行结果
自己虚拟机运行结果
3.2运行实例
#include<stdio.h> #include<string.h> #include<mpi.h> double f(double x) { return x*x+x*x*x+5; } double Trap(double left_endpt,double right_endpt,int trap_count,double base_len) { double estimate,x; int i; estimate=(f(left_endpt)+f(right_endpt))/2.0; //梯形面积 for(i =1;i<=trap_count-1;++i) { x=left_endpt+i*base_len; estimate+=f(x); } estimate=estimate*base_len; return estimate; } int main() { int my_rank,comm_sz,n=1024,local_n; double a=0.0,b=3.0,h,local_a,local_b; double local_int,total_int; int source; MPI_Init(NULL,NULL); //初始化 MPI_Comm_size(MPI_COMM_WORLD,&comm_sz); //返回进程数 MPI_Comm_rank(MPI_COMM_WORLD,&my_rank); //返回进程号 h=(b-a)/n; local_n=n/comm_sz; local_a=a+my_rank*local_n*h; local_b=local_a+local_n*h; local_int=Trap(local_a,local_b,local_n,h); if(my_rank!=0) { MPI_Send(&local_int,1,MPI_DOUBLE,0,0,MPI_COMM_WORLD); } else { total_int=local_int; for(source=1;source<comm_sz;source++) { MPI_Recv(&local_int,1,MPI_DOUBLE,source,0,MPI_COMM_WORLD,MPI_STATUS_IGNORE); //接受其他节点信息 total_int+=local_int; } } if(my_rank==0) { printf("With n=%d trapezoids,our estimated\n",n); printf("of the intergral from %f to %f=%.15e\n",a,b,total_int); } MPI_Finalize(); return 0; }
天河运行结果
内容总结
以上是互联网集市为您收集整理的用MPI进行分布式内存编程(1)全部内容,希望文章能够帮你解决用MPI进行分布式内存编程(1)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。