23#ifndef RANDOM_MANAGER_H
24#define RANDOM_MANAGER_H
59 void finalize(
const bool )
override;
109 template <
typename RNG_TYPE >
114 std::map< std::string, BaseRandomGeneratorFactory* >
rng_types_;
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
Base class for RNG engine wrappers.
Definition random_generators.h:67
Interface for kernel manager classes.
Definition manager_interface.h:46
Manage the kernel's random number generators.
Definition random_manager.h:50
std::map< std::string, BaseRandomGeneratorFactory * > rng_types_
Available RNG types.
Definition random_manager.h:114
void get_status(Dictionary &) override
Retrieve the status of the manager.
Definition random_manager.cpp:132
std::vector< RngPtr > vp_synced_rngs_
Random number generators synchronized across VPs.
Definition random_manager.h:126
void finalize(const bool) override
Take down manager after operation.
Definition random_manager.cpp:104
RandomManager()
Definition random_manager.cpp:55
static const std::uint32_t DEFAULT_BASE_SEED_
Base seed used by default.
Definition random_manager.h:135
void initialize(const bool) override
Register available RNG types, set default RNG type and create RNGs.
Definition random_manager.cpp:67
RngPtr rank_synced_rng_
Random number generator synchronized across ranks.
Definition random_manager.h:123
std::uint32_t base_seed_
Base seed used when RNGs were last created.
Definition random_manager.h:120
RngPtr get_vp_synced_rng(size_t tid) const
Get VP-synchronized random number generator.
Definition random_manager.h:154
static const std::string DEFAULT_RNG_TYPE_
RNG type used by default.
Definition random_manager.h:132
~RandomManager() override
Definition random_manager.cpp:62
static const std::uint32_t THREAD_SYNCED_SEEDER_
Thread-synchronized seed-sequence initializer component.
Definition random_manager.h:141
void check_rng_synchrony() const
Confirm that rank- and thread-synchronized RNGs are in sync.
Definition random_manager.cpp:184
RngPtr get_rank_synced_rng() const
Get rank-synchronized random number generator.
Definition random_manager.h:148
static const std::uint32_t THREAD_SPECIFIC_SEEDER_
Thread-specific seed-sequence initializer component.
Definition random_manager.h:144
std::string current_rng_type_
Name of currently used RNG type.
Definition random_manager.h:117
void set_status(const Dictionary &) override
Set the status of the manager.
Definition random_manager.cpp:146
void register_rng_type(const std::string &name)
Register new random number generator type with manager.
Definition random_manager.cpp:227
std::vector< RngPtr > vp_specific_rngs_
Random number generators specific to VPs.
Definition random_manager.h:129
RngPtr get_vp_specific_rng(size_t tid) const
Get VP-specific random number generator.
Definition random_manager.h:161
static const std::uint32_t RANK_SYNCED_SEEDER_
Rank-synchronized seed-sequence initializer component.
Definition random_manager.h:138
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33