Skip to content

OMPI interfering with rand/random series #1877

@rhc54

Description

@rhc54

Per mail to devel, from @matcabral

Doing quick test with rand()/srand() I found that MPI_Init() seems to be calling a function in their family that is affecting the values in the user application. Please see below my simple test and the results. Yes, moving the second call to srand() after MPI_init() solves the problem. However, I’m confused since this was supposedly addressed in version 1.7.5. From release notes:

1.7.5 20 Mar 2014:

  • OMPI now uses its own internal random number generator and will not perturb srand() and friends.

I tested on OMPI 1.10.2 and 1.10.3. The result is deterministic.

Any ideas?

Thanks,
Regards,

#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
int main(int argc, char *argv[])
{
    int rand1;
    int rand2;
  int name_len;
    srand(100000);
    rand1 = rand();
    srand(100000);
    MPI_Init(&argc, &argv);
    rand2 = rand();
    if (rand1 != rand2) {
        printf("%d != %d\n", rand1, rand2);
        fflush(stdout);
    }
    else {
        printf("%d == %d\n", rand1, rand2);
        fflush(stdout);
    }
    MPI_Finalize();
    return 0;
}
host1:/tmp> mpirun -np 1 -host host1 -mca pml ob1 -mca btl tcp,self ./rand1
964940668 != 865007240

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions