すべてのプロセスが入る関数を実行します。いくつかの計算が行われ、すべてのプロセスがその関数から終了しますが、ランク 0 のプロセスのみが何かを返します。問題は、return ステートメントでは値が正しいのに、関数の結果を代入する main では戻り値が 0 であることです。ここにいくつかのコードがあります。
MPI_Barrier(MPI_COMM_WORLD);
CCI = TestKNN (tlist, data, true, mode, false, false);
MPI_Barrier(MPI_COMM_WORLD);
.......
TestKNN(....)
{
int res;
if (rank == 0)
{
res = 0;
send data to each process and receive result
receive result from every process
res += return_value
}
else
{
receive data
work on data
send result to rank 0
}
if (rank == 0)
return res
}
何が問題なのですか?