C MPI_Wtime()正在返回0

C MPI_Wtime()正在返回0,c,mpi,openmpi,C,Mpi,Openmpi,我在linux上使用openMPI 4.0.1版编译以下代码,MPI\u Wtime()返回0。我正在使用mpicc-o测试代码myfile.c进行编译 #include <stdio.h> #include <time.h> #include <mpi.h> int main(int argc, char* argv[]) { // Initialize MPI MPI_Init(&argc, &argv); /

我在linux上使用openMPI 4.0.1版编译以下代码,
MPI\u Wtime()
返回0。我正在使用mpicc-o测试代码myfile.c进行编译

#include <stdio.h>
#include <time.h>
#include <mpi.h>

int main(int argc, char* argv[])
{

    // Initialize MPI
    MPI_Init(&argc, &argv);

    // printf("%d\n",MPI_UNIVERSE_SIZE);

    // Get the clock precision and start the clock.
    double precision = MPI_Wtick();
    double starttime = MPI_Wtime();

    // Get this processor's rank and the size of the world.
    int rank, size;
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);

    if (rank ==0)
        printf("start time = %g\n", starttime);

    MPI_Finalize();

    return 0;
}
#包括
#包括
#包括
int main(int argc,char*argv[])
{
//初始化MPI
MPI_Init(&argc,&argv);
//printf(“%d\n”,MPI大小);
//获取时钟精度并启动时钟。
双精度=MPI_Wtick();
双起始时间=MPI_Wtime();
//获取此处理器的级别和世界的大小。
int等级、大小;
MPI通信等级(MPI通信世界和等级);
MPI_通信大小(MPI_通信世界和大小);
如果(秩==0)
printf(“开始时间=%g\n”,开始时间);
MPI_Finalize();
返回0;
}

MPI\u Wtime
不是当前时间,它是自任意“开始时间”以来经过的时间,很可能是第一次调用的时间。您唯一能保证的是,如果您多次调用它,各种调用将使用相同的基本时间。所以只调用一次没有多大意义。但是任意的开始时间总是一样的吗?我被告知这是一种为随机模拟生成初始种子的“体面”方法是模拟的一个不错的初始种子。“这真的取决于你期望什么样的随机性。”祖兰我不同意。我会提供给自己,通过使用时间/时钟之类的东西,随机性在程序中完成,而无需我指定初始种子。
MPI_Wtime
不是当前时间,它是自任意“开始时间”以来经过的时间,很可能是第一次调用的时间。您唯一能保证的是,如果您多次调用它,各种调用将使用相同的基本时间。所以只调用一次没有多大意义。但是任意的开始时间总是一样的吗?我被告知这是一种为随机模拟生成初始种子的“体面”方法是模拟的一个不错的初始种子。“这真的取决于你期望什么样的随机性。”祖兰我不同意。我会提供给自己,通过使用时间/时钟之类的东西,随机性在程序中完成,而无需我指定初始种子。