11std::mutex parameter_runtime_snapshot_mutex;
15 std::lock_guard<std::mutex> lock(parameter_runtime_snapshot_mutex);
17 const auto& cache = mm->getMemoryCache();
18 parameter_types_ = cache.parameter_types;
19 local_input_cache_ = mm->clone_input_cache_deep();
24 for (
auto type : parameter_types_) {
30 for (
const auto& block_name : global_params->get_blocks_list()) {
31 if (global_params->is_dependent_block(block_name)) {
35 auto global_blocks = global_params->get_block_accessor();
36 if (!global_blocks || !global_blocks->contains(block_name)) {
40 auto cloned_block = global_blocks->at(block_name)->deep_clone_plain();
41 local_input_cache_->emplace(block_name, cloned_block);
47 auto it = local_instances_.find(
id);
48 if (it != local_instances_.end()) {
62 [
this,
id](
const std::shared_ptr<Parameters>& params) {
63 local_instances_[id] = params;
67 local_instances_.erase(
id);
73 const std::unordered_set<BlockName>& block_names
75 return (*local_input_cache_)[block_names];
79 return local_input_cache_->get_block_names();
83 return parameter_types_;
92 ParameterRuntimeContext::current_ = &ctx;
96 ParameterRuntimeContext::current_ = previous_;
Manages memory caching, parameter blocks, and LHA reader instances.
Model-dependent parameter repository and initialization strategies.
static MemoryManager * GetInstance()
Retrieves the singleton instance of MemoryManager.
Per-thread parameter runtime used to isolate Monte-Carlo workers.
std::shared_ptr< Parameters > get_parameters(ParameterType id)
std::unordered_set< BlockName > available_input_blocks() const
const std::vector< ParameterType > & parameter_types() const
ParameterRuntimeContext()
static ParameterRuntimeContext * current()
std::shared_ptr< BlockAccessor > extract_blocks(const std::unordered_set< BlockName > &block_names) const
static std::shared_ptr< Parameters > CreateUncachedRegistered(ParameterType id, const std::function< void(const std::shared_ptr< Parameters > &)> ®ister_before_postinit)
Creates a fresh uncached repository and registers it before post-initialization.
static std::shared_ptr< Parameters > GetParameters(ParameterType id)
Returns the cached repository for one parameter type.
~ScopedParameterRuntimeContext()
ScopedParameterRuntimeContext(ParameterRuntimeContext &ctx)