1

すべてのプロセスの入力を個別に受け取るscanfを使用してMPIコードを記述しようとしていますが、ユーザーからの入力を受け取るプロセスは1つだけで、他のプロセスはその変数にガベージ値を割り当てます。プログラムは以下の通り

#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);
}
4

2 に答える 2

1

stdio は並列用に設計されていません。問題を実行するたびに、異なる出力が得られることに気付くかもしれません。通常、node0 に入力してから、他のすべてに bcast します。

于 2013-09-15T13:32:10.553 に答える
1

stdin はランク 0 にのみ転送されます。いずれにせよ、stdin からの読み取りは、大文字の VERY を使用した悪い考えであり、標準ではサポートされていません。

于 2013-09-15T14:05:08.073 に答える