Singleton class that generate a thread-safe random generator number for openMP
As singleton, it can be called from any class requiring RNGs.
More...
#include <sRandomNumberGenerator.hh>
|
int | Initialize (int a_nbThreads, int a_nbExtra) |
| Instantiate pseudo random number generators, one per thread by default, and additional extra ones if requested. More...
|
|
int | Initialize (int64_t a_seed, int a_nbThreads, int a_nbExtra) |
| Instantiate pseudo random number generators, one per thread by default, and additional extra ones if requested, starting from the user-provided seed. More...
|
|
HPFLTNB | GenerateRdmNber () |
| Generate a random number for the thread which index is recovered from the OpenMP function. More...
|
|
HPFLTNB | GenerateExtraRdmNber (int a_nb=0) |
| Generate a random number using the specified additional not thread safe random generator, for use in sequential parts of an otherwise multithreaded code. More...
|
|
Engine & | GetExtraGenerator (int a_nb=0) |
| Get the not thread safe additional random generator, for use various sequential parts of an otherwise multithreaded code. More...
|
|
Engine & | GetGenerator () |
| Get the random generator for the current thread. More...
|
|
void | SetVerbose (int a_verboseLevel) |
| Set verbosity level. More...
|
|
int | Initialize (int a_nbThreads, int a_nbExtra) |
|
int | Initialize (int64_t a_seed, int a_nbThreads, int a_nbExtra) |
|
HPFLTNB | GenerateRdmNber () |
|
HPFLTNB | GenerateExtraRdmNber (int a_nb=0) |
|
Engine & | GetExtraGenerator (int a_nb=0) |
|
Engine & | GetGenerator () |
|
void | SetVerbose (int a_verboseLevel) |
|
Singleton class that generate a thread-safe random generator number for openMP
As singleton, it can be called from any class requiring RNGs.
Definition at line 19 of file code/include/management/sRandomNumberGenerator.hh.
◆ Distribution [1/2]
◆ Distribution [2/2]
◆ Engine [1/2]
◆ Engine [2/2]
◆ sRandomNumberGenerator() [1/4]
sRandomNumberGenerator::sRandomNumberGenerator |
( |
| ) |
|
|
private |
◆ ~sRandomNumberGenerator() [1/2]
sRandomNumberGenerator::~sRandomNumberGenerator |
( |
| ) |
|
|
private |
◆ sRandomNumberGenerator() [2/4]
◆ sRandomNumberGenerator() [3/4]
sRandomNumberGenerator::sRandomNumberGenerator |
( |
| ) |
|
|
private |
◆ ~sRandomNumberGenerator() [2/2]
sRandomNumberGenerator::~sRandomNumberGenerator |
( |
| ) |
|
|
private |
◆ sRandomNumberGenerator() [4/4]
◆ GenerateExtraRdmNber() [1/2]
HPFLTNB sRandomNumberGenerator::GenerateExtraRdmNber |
( |
int |
a_nb = 0 | ) |
|
Generate a random number using the specified additional not thread safe random generator, for use in sequential parts of an otherwise multithreaded code.
- Parameters
-
a_nb | index of the extra non threaded rng |
- Returns
- HPFLTNB random number
Definition at line 230 of file code/src/management/sRandomNumberGenerator.cc.
◆ GenerateExtraRdmNber() [2/2]
HPFLTNB sRandomNumberGenerator::GenerateExtraRdmNber |
( |
int |
a_nb = 0 | ) |
|
◆ GenerateRdmNber() [1/2]
HPFLTNB sRandomNumberGenerator::GenerateRdmNber |
( |
| ) |
|
Generate a random number for the thread which index is recovered from the OpenMP function.
- Returns
- a random generated number in [0. ; 1.)
- Returns
- a random generated number in [0. ; 1.)
Definition at line 210 of file code/src/management/sRandomNumberGenerator.cc.
◆ GenerateRdmNber() [2/2]
HPFLTNB sRandomNumberGenerator::GenerateRdmNber |
( |
| ) |
|
◆ GetExtraGenerator() [1/2]
Get the not thread safe additional random generator, for use various sequential parts of an otherwise multithreaded code.
- Parameters
-
a_nb | index of the extra non threaded rng |
- Returns
- HPFLTNB random number
Definition at line 245 of file code/src/management/sRandomNumberGenerator.cc.
◆ GetExtraGenerator() [2/2]
Engine& sRandomNumberGenerator::GetExtraGenerator |
( |
int |
a_nb = 0 | ) |
|
◆ GetGenerator() [1/2]
Engine& sRandomNumberGenerator::GetGenerator |
( |
| ) |
|
◆ GetGenerator() [2/2]
◆ GetInstance() [1/2]
◆ GetInstance() [2/2]
◆ Initialize() [1/4]
int sRandomNumberGenerator::Initialize |
( |
int |
a_nbThreads, |
|
|
int |
a_nbExtra |
|
) |
| |
Instantiate pseudo random number generators, one per thread by default, and additional extra ones if requested.
- Parameters
-
a_nbThreads | : number of generators intended for usage in threads (one per thread) |
a_nbExtra | : number of additional generators intended for other usage (not thread safe) |
The generators for each thread and each MPI instance should be independent. The initial seed is generated by the true random generator and used to seed a temporary PRNG, which generates seeds for all final PRNGs. If MPI is used, an additional level of temporary generators is inserted, to ensure randomness.
- Returns
- 0 if success, positive value otherwise
Definition at line 50 of file code/src/management/sRandomNumberGenerator.cc.
◆ Initialize() [2/4]
int sRandomNumberGenerator::Initialize |
( |
int |
a_nbThreads, |
|
|
int |
a_nbExtra |
|
) |
| |
◆ Initialize() [3/4]
int sRandomNumberGenerator::Initialize |
( |
int64_t |
a_seed, |
|
|
int |
a_nbThreads, |
|
|
int |
a_nbExtra |
|
) |
| |
Instantiate pseudo random number generators, one per thread by default, and additional extra ones if requested, starting from the user-provided seed.
- Parameters
-
a_seed | : initial seed |
a_nbThreads | : number of generators intended for usage in threads (one per thread) |
a_nbExtra | : number of additional generators intended for other usage (not thread safe) |
The generators for each thread and each MPI instance should be independent. The user-provided seed is fed to a temporary PRNG, which generates seeds for all final PRNGs. If MPI is used, an additional level of temporary generators is inserted, to ensure randomness.
- Returns
- 0 if success, positive value otherwise
Definition at line 129 of file code/src/management/sRandomNumberGenerator.cc.
◆ Initialize() [4/4]
int sRandomNumberGenerator::Initialize |
( |
int64_t |
a_seed, |
|
|
int |
a_nbThreads, |
|
|
int |
a_nbExtra |
|
) |
| |
◆ operator=() [1/2]
◆ operator=() [2/2]
◆ SetVerbose() [1/2]
void sRandomNumberGenerator::SetVerbose |
( |
int |
a_verboseLevel | ) |
|
|
inline |
◆ SetVerbose() [2/2]
void sRandomNumberGenerator::SetVerbose |
( |
int |
a_verboseLevel | ) |
|
|
inline |
◆ m_seed
int64_t sRandomNumberGenerator::m_seed |
|
private |
◆ m_verbose
int sRandomNumberGenerator::m_verbose |
|
private |
◆ mp_Distribution
◆ mp_Engines
vector< Engine > sRandomNumberGenerator::mp_Engines |
|
private |
◆ mp_extraEngines
vector< Engine > sRandomNumberGenerator::mp_extraEngines |
|
private |
◆ mp_Instance
The documentation for this class was generated from the following files: