1

ソート時間を計算する MPI プログラムがあります。で実行しmpirun -np 2 mpiSortます。したがって、これにより、2つのプロセスでソート時間が得られます。

それらを平均するために5回のソート時間を取得したい。どうすれば自動的にそれを行うことができますか?

mpiSortプログラムでループを実行すると。実際には 5(回) x 2(プロセス) = 10 回実行されます。

編集:mpiSort並べ替えを並行して行います。mpirun -np 2 mpiSort基本的には5回も打たずにやろうとしています。4コアでも8コアでも同じことをしたいからです。

4

2 に答える 2

0

ループに入れる方法です。の 10 個の値を取得したため、混乱endTime = MPI_Wtime()しました。ルート プロセスからは 5 個しか使用しませんでした。@EdSmith と彼のMPI_Reduceコードのおかげで、正しい計算時間は、 を使用した 2 つのプロセスの平均ですMPI_Reduce

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &nProcs);

for (int run=0; run<5; run++) {
  ...
  endTime = MPI_Wtime();
  totalTime = endTime - startTime;
  MPI_Reduce (&totalTime, &workTime, 1, MPI_DOUBLE_PRECISION, MPI_SUM, root, MPI_COMM_WORLD);
  if (rank == root) {
    paraTime = workTime/nProcs;
  }
  ...
}

MPI_Finalize();
于 2016-11-09T05:19:44.913 に答える