私はCの初心者です(C++での経験はほとんどありません)。ユーザー入力変数の値に問題があります。私はMPI_Scatter
とMPI_Gather
というプログラムをC言語で書いて、各ノードの入力された整数の総和を計算しました。C言語のユーザー入力変数値
問題は次のとおりです。変数入力をinput=5;
と定義すると、すべての4
ノード(210
)の合計が計算されます。 scanf
の入力を設定すると、結果は15
になります。変数がその値を変更するようです。私を助けてくれますか? コード:
#include "mpi.h"
#include <stdio.h>
#include <stdlib.h>
#define MASTER 0
int main(int argc, char** argv){
int id, nproc;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &nproc);
MPI_Comm_rank(MPI_COMM_WOLRD, &id);
MPI_Status status;
int input=0; // <- problematic variable
int nodeValue=0;
int size;
int *array;
if(id == MASTER){
printf("How many elements per node? ");
scanf("%d", &input);
nodeValue = input;
}
MPI_Barrier(MPI_COMM_WORLD);
if(id == MASTER){
size = input * nproc;
array = malloc(sizeof(int)*size);
...
}
}
'scanf'の戻り値は何ですか? – Swanand
標準入力から多くのスレッドを読み取っていますか? –
scanfの戻り値はどうですか? @Swanand – ZPA