NEST main@caf0ae8
 
Loading...
Searching...
No Matches
kernel_manager.h
Go to the documentation of this file.
1/*
2 * kernel_manager.h
3 *
4 * This file is part of NEST.
5 *
6 * Copyright (C) 2004 The NEST Initiative
7 *
8 * NEST is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * NEST is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with NEST. If not, see <http://www.gnu.org/licenses/>.
20 *
21 */
22
23#ifndef KERNEL_MANAGER_H
24#define KERNEL_MANAGER_H
25
26// Includes from libnestutil
27#include "config.h"
28
29// Includes from nestkernel:
30#include "connection_manager.h"
32#include "io_manager.h"
33#include "logging_manager.h"
34#include "model_manager.h"
35#include "modelrange_manager.h"
36#include "module_manager.h"
37#include "mpi_manager.h"
38#include "music_manager.h"
39#include "node_manager.h"
40#include "random_manager.h"
41#include "simulation_manager.h"
42#include "sp_manager.h"
43#include "vp_manager.h"
44
45#include "compose.hpp"
46#include <fstream>
47
51#ifdef ENABLE_FULL_LOGGING
52#define FULL_LOGGING_ONLY( code ) code
53#else
54#define FULL_LOGGING_ONLY( code )
55#endif
56
57namespace nest
58{
59
148{
149private:
152
153 unsigned long fingerprint_;
154
156
157 KernelManager( KernelManager const& ); // do not implement
158 void operator=( KernelManager const& ); // do not implement
159
161
162public:
166 static void create_kernel_manager();
168
177 void initialize();
178
187 void finalize();
188
196 void reset();
197
204 void change_number_of_threads( size_t new_num_threads );
205
206 void set_status( const Dictionary& );
207 void get_status( Dictionary& );
208
209 void prepare();
210 void cleanup();
211
213 bool is_initialized() const;
214
215 unsigned long get_fingerprint() const;
216
222 void write_to_dump( const std::string& msg );
223
254
261
267
268private:
269 size_t get_memsize_linux_() const;
270 size_t get_memsize_darwin_() const;
271
273 std::vector< ManagerInterface* > managers;
274
276 std::ofstream dump_;
277
281};
282
284
285inline RngPtr
290
291inline RngPtr
292get_vp_synced_rng( size_t tid )
293{
295}
296
297inline RngPtr
299{
301}
302
303inline KernelManager&
309
310inline KernelManager&
315
316inline bool
318{
319 return initialized_;
320}
321
322inline unsigned long
324{
325 return fingerprint_;
326}
327
328} // namespace nest
329
330#endif /* KERNEL_MANAGER_H */
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
Base class for RNG engine wrappers.
Definition random_generators.h:67
Definition connection_manager.h:62
Definition event_delivery_manager.h:59
Manager to handle everything related to input and output.
Definition io_manager.h:49
Global properties of the simulation kernel.
Definition kernel_manager.h:148
KernelManager(KernelManager const &)
static KernelManager & get_kernel_manager()
Definition kernel_manager.h:304
Stopwatch< StopwatchGranularity::Detailed, StopwatchParallelism::Threaded > & get_omp_synchronization_construction_stopwatch()
Get the stopwatch to measure the time each thread is idle during network construction.
Definition kernel_manager.h:250
Stopwatch< StopwatchGranularity::Detailed, StopwatchParallelism::MasterOnly > sw_mpi_synchronization_
Definition kernel_manager.h:280
Stopwatch< StopwatchGranularity::Detailed, StopwatchParallelism::Threaded > & get_omp_synchronization_simulation_stopwatch()
Get the stopwatch to measure the time each thread is idle during simulation.
Definition kernel_manager.h:257
size_t get_memsize_linux_() const
return VmSize in kB
Definition kernel_manager.cpp:390
void cleanup()
Definition kernel_manager.cpp:232
void set_status(const Dictionary &)
Definition kernel_manager.cpp:300
~KernelManager()
Definition kernel_manager.cpp:197
Stopwatch< StopwatchGranularity::Detailed, StopwatchParallelism::Threaded > sw_omp_synchronization_construction_
Definition kernel_manager.h:278
static void create_kernel_manager()
Create/destroy and access the KernelManager singleton.
Definition kernel_manager.cpp:150
KernelManager()
Definition kernel_manager.cpp:163
unsigned long get_fingerprint() const
Definition kernel_manager.h:323
bool initialized_
true if the kernel is initialized
Definition kernel_manager.h:275
void finalize()
Take down kernel after operation.
Definition kernel_manager.cpp:241
void prepare()
Definition kernel_manager.cpp:220
size_t get_memsize_darwin_() const
return resident_size in kB
Definition kernel_manager.cpp:418
void initialize()
Prepare kernel for operation.
Definition kernel_manager.cpp:202
void reset()
Reset kernel.
Definition kernel_manager.cpp:253
Stopwatch< StopwatchGranularity::Detailed, StopwatchParallelism::Threaded > sw_omp_synchronization_simulation_
Definition kernel_manager.h:279
static KernelManager * kernel_manager_instance_
Definition kernel_manager.h:155
bool is_initialized() const
Returns true if kernel is initialized.
Definition kernel_manager.h:317
void operator=(KernelManager const &)
void get_status(Dictionary &)
Definition kernel_manager.cpp:311
std::ofstream dump_
for FULL_LOGGING output
Definition kernel_manager.h:276
unsigned long fingerprint_
Definition kernel_manager.h:153
Stopwatch< StopwatchGranularity::Detailed, StopwatchParallelism::MasterOnly > & get_mpi_synchronization_stopwatch()
Definition kernel_manager.h:263
void write_to_dump(const std::string &msg)
Write data to file per rank and thread.
Definition kernel_manager.cpp:343
Dictionary get_build_info_()
Definition kernel_manager.cpp:42
void change_number_of_threads(size_t new_num_threads)
Change number of threads.
Definition kernel_manager.cpp:260
std::vector< ManagerInterface * > managers
All managers, order determines initialization and finalization order (latter backwards)
Definition kernel_manager.h:273
Definition logging_manager.h:45
Definition mpi_manager.h:57
Encapsulate all calls to MUSIC.
Definition music_manager.h:49
Definition model_manager.h:45
Definition modelrange_manager.h:41
Definition module_manager.h:88
Definition node_manager.h:47
Manage the kernel's random number generators.
Definition random_manager.h:50
RngPtr get_vp_synced_rng(size_t tid) const
Get VP-synchronized random number generator.
Definition random_manager.h:154
RngPtr get_rank_synced_rng() const
Get rank-synchronized random number generator.
Definition random_manager.h:148
RngPtr get_vp_specific_rng(size_t tid) const
Get VP-specific random number generator.
Definition random_manager.h:161
The SPManager class is in charge of managing the dynamic creation and deletion of synapses in the sim...
Definition sp_manager.h:53
Definition simulation_manager.h:47
Definition vp_manager.h:50
ConnectionManager connection_manager
Definition kernel_manager.h:239
SPManager sp_manager
Definition kernel_manager.h:240
MUSICManager music_manager
Definition kernel_manager.h:244
LoggingManager logging_manager
Definition kernel_manager.h:232
NodeManager node_manager
Definition kernel_manager.h:245
ModelManager model_manager
Definition kernel_manager.h:243
ModuleManager module_manager
Definition kernel_manager.h:235
EventDeliveryManager event_delivery_manager
Definition kernel_manager.h:241
SimulationManager simulation_manager
Definition kernel_manager.h:237
ModelRangeManager modelrange_manager
Definition kernel_manager.h:238
RandomManager random_manager
Definition kernel_manager.h:236
IOManager io_manager
Definition kernel_manager.h:242
MPIManager mpi_manager
Definition kernel_manager.h:233
VPManager vp_manager
Definition kernel_manager.h:234
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
RngPtr get_vp_specific_rng(size_t tid)
Definition kernel_manager.h:298
RngPtr get_vp_synced_rng(size_t tid)
Definition kernel_manager.h:292
RngPtr get_rank_synced_rng()
Definition kernel_manager.h:286
BaseRandomGenerator * RngPtr
Definition random_generators.h:50
KernelManager & kernel()
Definition kernel_manager.h:311