标准通信模式--阻塞方式
//mpitest.c
#include "mpi.h"
#include <stdio.h>
#include <math.h>
#define buf_size 10
int main(int argc, char *argv[])
{
int myid, numprocs, other, sb[buf_size], rb[buf_size];
MPI_Status status;
/*这三句为初使化MPI环境*/
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myid); //myid保存进程号
MPI_Comm_size(MPI_COMM_WORLD, &numprocs); //numprocs保存一共运行的进程数量
int i;
for(i = 0; i < buf_size; i++)
{
sb[i] = myid + i;
}
if(myid == 0) other = 1;
if(myid == 1) other = 0;
if(myid == 0)
/*进程0*/
{
fprintf(stdout, "process : %d of %d trying sending...\n", myid, numprocs);
MPI_Send(sb, buf_size, MPI_INT, other, 1, MPI_COMM_WORLD);
/*其中sb为发送缓冲区首地址,
buf_size为发送数据量,
MPI_INT 为发送数据的类型,

本文介绍了MPI并行编程的一个基本示例,包括标准通信模式中的阻塞方式。通过一个简单的代码结构展示了MPI_Status结构体的使用。在运行过程中,详细说明了如何生成可执行文件以及如何使用mpirun进行执行,特别指出 `-n` 参数用于指定进程数量。通过修改程序,可以观察到数据传输的效果。
最低0.47元/天 解锁文章
5202

被折叠的 条评论
为什么被折叠?



