MPI_Send和MPI_Recv(初识1)
来源:互联网 发布:php如何加密源码软件 编辑:程序博客网 时间:2024/06/05 17:43
/** * <Parallel programming technology for high performance computing> * * @Copyright Du Zhihui :edited * Li Sanli :review * Chen Yu Liu Peng :proofreading * * Rong Tao study note: 2017.10 * *//** * mpicc -o outfile Demo.c * mpirun -n 2 ./outfile > out.txt * */#include "mpi.h"#include <stdio.h>#include <math.h>int main(int argc,char *argv[]){ int myid, numprocs; char message[20]; MPI_Status status; MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD,&myid); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); if(myid == 0) { strcpy(message, "hello, process I"); MPI_Send(message, 20, MPI_CHAR, 1, 999, MPI_COMM_WORLD); } else if(myid == 1) { MPI_Recv(message, 20, MPI_CHAR, 0, 999, MPI_COMM_WORLD, &status); printf("received : %s\n",message); } MPI_Finalize();}/**MPI_INTEGER MPI_REAL MPI_DOUBLE_PRECISION MPI_COMPLEX MPI_LOGICAL MPI_CHARACTER MPI_BYTE MPI_PACKED */
编译与运行:
-bash-4.1$ mpicc -o a Demo_02_MPI_Send_MPI_Recv_01.c-bash-4.1$ mpirun -n 2 ./areceived : hello, process I-bash-4.1$
再一个例子:
这个例子展示了所有节点互相通信,直至到rank号最大的节点终止
#include "mpi.h"#include <stdio.h>#include <math.h>int main(int argc,char *argv[]){ int myid, numprocs; int value; MPI_Status status; MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD,&myid); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); do{ if(myid == 0) { scanf("%d",&value); if(numprocs > 1) { MPI_Send(&value, 1, MPI_INT, myid+1, 0, MPI_COMM_WORLD); fprintf(stderr,"%d send (%d) to %d\n",myid, value, myid+1); } } else { MPI_Recv(&value, 1, MPI_INT, myid-1, 0, MPI_COMM_WORLD, &status); fprintf(stderr,"%d receive (%d) to %d\n",myid, value, myid+1); if(myid < numprocs-1) { MPI_Send(&value, 1, MPI_INT, myid+1, 0, MPI_COMM_WORLD); fprintf(stderr,"%d send (%d) to %d\n",myid, value, myid+1); } } MPI_Barrier(MPI_COMM_WORLD); }while(value >= 0); MPI_Barrier(MPI_COMM_WORLD); MPI_Finalize();}
编译与运行:
-bash-4.1$ mpicc -o a Demo_02_MPI_Send_MPI_Recv_02.c-bash-4.1$ mpirun -n 3 ./a10 send (1) to 11 receive (1) to 21 send (1) to 22 receive (1) to 320 send (2) to 11 receive (2) to 21 send (2) to 22 receive (2) to 3-10 send (-1) to 11 receive (-1) to 21 send (-1) to 22 receive (-1) to 3-bash-4.1$
阅读全文
0 0
- MPI_Send和MPI_Recv(初识1)
- 我的并行计算之路(二)MPI点对点通信MPI_Send和MPI_Recv
- 用MPI_Send和MPI_Recv实现简单集群通信函数
- Example-2-MPI_Scatterv,MPI_Send,MPI_Recv
- 关于MPI_Send与MPI_Recv语义
- 采用 MPI_Send 和 MPI_Recv 编写代码来实现 MPI_Allgather 的功能
- MPI_Send和MPI_Recv影响下程序的执行顺序是怎样的?
- 采用MPI_Send 和MPI_Recv 编写代码来实现包括MPI_Bcast、MPI_Alltoall、MPI_Gather、MPI_Scatter 等MPI 群集通信函数的功能
- MPI用MPI_Send, MPI_Recv实现MPI_Alltoall的块方法
- MPI_Recv
- MPI程序例子 test_8_1_2.c -- 对等模式的MPI程序,Jacobi迭代 (MPI_Send、MPI_Recv)
- MPI程序例子:对等模式的MPI程序,Jacobi迭代 (MPI_Send、MPI_Recv)
- 就MPI_Send和MPI_Isend谈 阻塞通信与非阻塞通信
- AMD和RequireJS初识 -- 模块加载系列(1)
- 初识Remoting(1)
- 初识Erlang(1)
- 初识Hadoop(1)
- 初识DOJO(1)
- 替换空格:
- 设置mongoDB dos窗口数据库命令格式
- MyBatis的级联查询(association 进行分布查询)
- textarea高度自适应增高;chrome下clientHeight,offsetHeight和scrollHeight
- 租了一个月的腾讯云服务, 玩ubuntu爽爽哒
- MPI_Send和MPI_Recv(初识1)
- JDBC学习06-DBUtils下载和使用
- Python(四)
- Android 多语言支持
- uva116
- vue 路由组件
- [Oracle] CPU/PSU补丁安装详细教程
- 葡萄城ComponentOne全功能开发控件套包发布2017V3 新版本
- 图