【发布时间】:2021-07-03 11:04:01
【问题描述】:
我正在尝试使用 2 个进程更新数组 int arr[2],其中第一个索引将由进程 1 填充,第二个索引将由进程 2 填充。我为此编写了以下代码
#include<stdio.h>
#include"mpi.h"
int main( int argc, char *argv[])
{
int arr[2];
MPI_Init(&argc, &argv);
int myrank, size; //size will take care of number of processes
MPI_Comm_rank(MPI_COMM_WORLD, &myrank) ;
MPI_Comm_size(MPI_COMM_WORLD, &size);
if(myrank==0)
arr[0]=1;
if(myrank==1)
arr[1]=2;
MPI_Finalize();
printf("%d %d\n",arr[0],arr[1]);
return 0;
}
正如预期的那样,输出是
0 2
1 0
或者有时(当进程1首先到达打印语句时)
1 0
0 2
我的问题是,我已经在MPI_Init 之外声明了数组,并且我在MPI_Finalize() 之后打印了数组,那么为什么这两个进程都在打印?有没有办法存储输出
1 2
在数组中没有实际将数据从一个进程发送到另一个进程?
【问题讨论】:
标签: c performance parallel-processing mpi hpc