我试图为我的小程序计时,它使用 MPI,我希望在文件中输出。
我正在尝试的命令:time --output=rt.txt mpirun -np 2 a.out
. 但标志time
和 mpirun
似乎发生冲突。
任何想法这可能如何工作?
我试图为我的小程序计时,它使用 MPI,我希望在文件中输出。
我正在尝试的命令:time --output=rt.txt mpirun -np 2 a.out
. 但标志time
和 mpirun
似乎发生冲突。
任何想法这可能如何工作?
你确定吗 ?来自二进制文件的手册页 time
时间选项必须出现在 COMMAND 之前的命令行中。COMMAND 之后命令行上的任何内容都作为参数传递给 COMMAND
time
你用的是哪个?请注意,有一个内置的 shelltime
和一个单独的二进制文件。我怀疑您需要使用单独的二进制文件而不是内置的。只需将其指定为/usr/bin/time
(或安装位置)
你听说过这个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