0

我试图为我的小程序计时,它使用 MPI,我希望在文件中输出。

我正在尝试的命令:time --output=rt.txt mpirun -np 2 a.out. 但标志timempirun似乎发生冲突。

任何想法这可能如何工作?

4

2 回答 2

1

你确定吗 ?来自二进制文件的手册页 time

时间选项必须出现在 COMMAND 之前的命令行中。COMMAND 之后命令行上的任何内容都作为参数传递给 COMMAND

time你用的是哪个?请注意,有一个内置的 shelltime和一个单独的二进制文件。我怀疑您需要使用单独的二进制文件而不是内置的。只需将其指定为/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 回答