并行计算学习笔记(MPI)
2017-03-29 08:35
375 查看
/* MPI点到点阻塞式通信C语言版 */ #include "mpi.h" /*MPI头函数,提供了MPI函数和数据类型定义*/ #include <stdio.h> int main( int argc, char** argv ) { int rank; /*进程标识*/ int size; /*总进程数目*/ int senddata,recvdata; /*数据缓存*/ MPI_Status status; /*mpi状态变量(结构体)*/ MPI_Init(&argc, &argv); /*MPI的初始化函数*/ MPI_Comm_rank(MPI_COMM_WORLD, &rank); /*返回调用进程在给定通信域中的进程标识*/ MPI_Comm_size(MPI_COMM_WORLD, &size); /*返回通信域包含的进程数*/ /*如果是0号进程,进行消息发送动作*/ if (rank==0){ senddata=9999; /*MPI_Send([发送]数据缓存地址,发送的数据个数,数据类型,目标进程标识,消息标志,通信域)*/ MPI_Send( &senddata, 1, MPI_INT, 2, 0, MPI_COMM_WORLD); //向2号进程发送消息 printf("send 9999 rank=%d\n",rank); senddata=1111; MPI_Send( &senddata, 1, MPI_INT, 1, 1, MPI_COMM_WORLD); //向1号进程发送消息 printf("send 1111 rank=%d\n",rank); } /*如果是1、2 号进程则接收消息*/ if(rank==2 || rank==1) { /*MPI_Recv([接收]数据缓存地址,接收的数据个数,数据类型,消息发送源,消息标识,通信域,消息发送进程的状态)*/ MPI_Recv(&recvdata, 1, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status); printf("process %d receive message from source %d,tag = %d and data = %d\n", rank, status.MPI_SOURCE, status.MPI_TAG, recvdata); } MPI_Finalize(); /*MPI的结束函数*/ return (0); }
相关文章推荐
- CP学习笔记(10) - 并行计算
- MPI学习笔记之并行程序概述
- 【MPI学习笔记】5:传统形式的方阵向量并行乘法及性能测试
- 【MPI学习笔记】4:并行化方阵和向量的乘积(按列分配)
- 并行计算-学习笔记1
- MPI学习笔记之并行程序概述
- MPI学习笔记之并行程序概述
- CUDA C 编程权威指南 学习笔记:第一章 基于CUDA的异构并行计算
- MPI学习笔记之并行程序概述
- MPI学习笔记之并行程序概述
- MPI学习笔记之并行程序概述
- MPI学习笔记之并行程序概述
- 【MPI学习笔记】1:并行化向量和矩阵的乘积
- MPI 学习 -- 高性能计算之并行编程技术 --- MPI并行程序设计 都志辉编著
- MPI学习笔记之并行程序概述
- MPI学习笔记之并行程序概述
- Akka学习笔记02--PI值计算,采用多核处理器并行计算
- 【MPI学习笔记】3:快速并行方阵和向量乘积+多机测试
- 分布式、并行计算语言Erlang 学习笔记(第三部分)
- MPI学习笔记之并行程序概述