在多进程的 MPI 中 scanf 仅接受一次输入并将垃圾值分配给其他进程?

问题描述 投票:0回答:2

我正在尝试使用 scanf 编写 MPI 代码,该代码将单独获取所有进程的输入,但只有一个进程获取用户的输入,其他进程将垃圾值分配给该变量。程序如下

#include <stdlib.h>
#include <stdio.h>
#include "mpi.h"
#include<string.h>

int main(int argc, char* argv[]) 
{
int i, size, rank;
int arr;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
printf("Enter the number\n");
scanf("%d",&i);

printf("%d\n",i);
MPI_Finalize();
exit(0);
}
c gcc mpi
2个回答
1
投票

stdin 仅转发到排名 0。无论如何,从 stdin 读取大写 VERY 都是一个坏主意,并且不受标准支持。


1
投票

stdio 不是为并行设计的。您可能会注意到,每次运行该问题时,它都可能给出不同的输出。 一般来说,我们在node0输入,然后bcast到所有其他

© www.soinside.com 2019 - 2024. All rights reserved.