我运行一个每个进程都进入的函数。进行了一些计算,然后所有进程从该函数退出,但只有等级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
}
可能是什么问题?