「奇偶」ソートを実装するために MPICH2 を使用しています。私は実装を行いましたが、各プロセスの値をランダム化すると、同じ数がすべてのプロセスにランダム化されます。
各プロセスのコードは次のとおりです。各プロセスは値をランダム化しています。
int main(int argc,char *argv[])
{
int nameLen, numProcs, myID;
char processorName[MPI_MAX_PROCESSOR_NAME];
int myValue;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myID);
MPI_Comm_size(MPI_COMM_WORLD,&numProcs);
MPI_Get_processor_name(processorName,&nameLen);
MPI_Status status;
srand((unsigned)time(NULL));
myValue = rand()%30+1;
cout << "myID: " << myID << " value: " << myValue<<endl;
MPI_Finalize();
return 0;
}
各プロセスが同じ値を取得するのはなぜですか?
編集:答えてくれてありがとう:)
ラインを変えました
srand((unsigned)time(NULL));
に
srand((unsigned)time(NULL)+myID*numProcs + nameLen);
そして、プロセスごとに異なる値を与えます:)