mardi 7 mars 2017

Openmp for in a loop, where to seed random number generator?

I've read that, in order to ensure thread safety, its convenient to seed the rng inside the parallel region, like this:

  int seedbase = 392872

 #pragma omp parallel 
 {
  srand(omp_get_thread_id * seedbase)
  #pragma omp for
  ....
  }

But what if my parallelized section is inside another loop? If I had a situation like this:

 int seedbase = 392872
 for(int i=0; i<100; ++i)
 {
   #pragma omp parallel 
   {
    srand(omp_get_thread_id * seedbase)
    #pragma omp for
     ....
   }
 }

Where should I initialize my rng?

Aucun commentaire:

Enregistrer un commentaire