0

すべてのプロセスが入る関数を実行します。いくつかの計算が行われ、すべてのプロセスがその関数から終了しますが、ランク 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
 }

何が問題なのですか?

4

0 に答える 0