0

MPI を使用する私の小さなプログラムの時間を計ろうとしていて、出力をファイルに入れたいと思っています。

私が試しているコマンド: time --output=rt.txt mpirun -np 2 a.out. しかし、 と のフラグは衝突しtimeて いるようです。mpirun

これがどのように機能するかについてのアイデアはありますか?

4

2 に答える 2

1

これ本気か ?バイナリのマニュアルページから time

時間のオプションは、コマンドラインのコマンドラインの前に表示する必要があります。COMMANDがCOMMANDに引数として渡された後のコマンドライン上のすべて

どちらtimeを使用していますか?組み込みのシェルtimeと別のバイナリがあることに注意してください。組み込みではなく、別のバイナリを使用する必要があると思います。として指定するだけです/usr/bin/time(またはインストールされている場所)

于 2012-11-28T10:58:13.127 に答える
1

MPI_Wtimeタイムバイナリを使用する代わりに、関数について聞いたことがありますか?アプリケーションのタイミングを調整するとMPI_Wtime、並列ジョブ全体の実行時間のより正確な結果を生成できます。MPI_Wtime次のように使用できます。

#include <stdio.h>
#include <mpi.h>
int main(void) {
    MPI_Init(NULL, NULL);
    MPI_Barrier(MPI_COMM_WORLD);
    // Get the program start time after all processes have initialized and synchronized
    double start_time = MPI_Wtime();

    // Do parallel processing here...
    sleep(1);

    // Synchronize all the processes again and find out the total execution time
    MPI_Barrier(MPI_COMM_WORLD);
    double execution_time = MPI_Wtime() - start_time;

    // Print the execution time from the root process
    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
    if (world_rank == 0) {
        printf("Execution time %lf\n", execution_time);
    }

    MPI_Finalize();
    return 0;
}

このプログラムは、これに近いものを出力する必要があります->実行時間1.0

于 2012-11-28T16:05:00.127 に答える