$ mpirun ./main 5 its/0.xml | grep -i GSL
[GSL Random Number Generator] generator type: mt19937
[GSL Random Number Generator] seed = 1515443941
[GSL Random Number Generator] first value = 4052102787
[GSL Random Number Generator] generator type: mt19937
[GSL Random Number Generator] seed = 1515443941
[GSL Random Number Generator] first value = 4052102787
[GSL Random Number Generator] generator type: mt19937
[GSL Random Number Generator] seed = 1515443941
[GSL Random Number Generator] first value = 4052102787
[GSL Random Number Generator] generator type: mt19937
[GSL Random Number Generator] seed = 1515443941
[GSL Random Number Generator] first value = 4052102787
(using xparser commit ef57674)
Do people think it makes sense to have independent RNG streams per MPI rank?
If so, how about instead of the following (from the xparser-generated main.c):
gsl_seed = gsl_rng_default_seed;
gsl_seed = (unsigned long int) FLAME_environment_variable_GSL_RNG_SEED;
if(gsl_seed == 0) gsl_seed = gsl_rng_default_seed;
if(gsl_seed == 0) gsl_seed = (unsigned long int)time(NULL);
gsl_rng_set(FLAME_GSL_RNG, gsl_seed);
having something like
masterSeed = gsl_rng_default_seed;
masterSeed = (unsigned long int) FLAME_environment_variable_GSL_RNG_SEED;
if(gsl_seed == 0) {
masterSeed = gsl_rng_default_seed;
if(gsl_seed == 0) {
masterSeed = (unsigned long int)time(NULL);
}
#ifdef MPI_VERSION
/* Determine a rank-specific seed */
int rank;
unsigned int rankSeed;
err = MPI_Comm_rank(MPI_COMM_WORLD, &rank);
rankSeed = masterSeed + (unsigned int) rank
gsl_rng_set(FLAME_GSL_RNG, rankSeed);
#else
gsl_rng_set(FLAME_GSL_RNG, masterSeed);
#endif
I would stick this the above in start_simulation() in the C source file containing my transition functions but FLAME_GSL_RNG is not in scope there.
(using xparser commit ef57674)
Do people think it makes sense to have independent RNG streams per MPI rank?
If so, how about instead of the following (from the xparser-generated
main.c):having something like
I would stick this the above in
start_simulation()in the C source file containing my transition functions butFLAME_GSL_RNGis not in scope there.