diff --git a/nestkernel/nest_names.cpp b/nestkernel/nest_names.cpp index b821cf5d58..b0364f2584 100644 --- a/nestkernel/nest_names.cpp +++ b/nestkernel/nest_names.cpp @@ -566,7 +566,9 @@ const Name time_communicate_spike_data( "time_communicate_spike_data" ); const Name time_communicate_target_data( "time_communicate_target_data" ); const Name time_construction_connect( "time_construction_connect" ); const Name time_construction_create( "time_construction_create" ); +const Name time_deliver_secondary_data( "time_deliver_secondary_data" ); const Name time_deliver_spike_data( "time_deliver_spike_data" ); +const Name time_gather_secondary_data( "time_gather_secondary_data" ); const Name time_gather_spike_data( "time_gather_spike_data" ); const Name time_gather_target_data( "time_gather_target_data" ); const Name time_in_steps( "time_in_steps" ); diff --git a/nestkernel/nest_names.h b/nestkernel/nest_names.h index b34745b2b1..81b31a6056 100644 --- a/nestkernel/nest_names.h +++ b/nestkernel/nest_names.h @@ -592,7 +592,9 @@ extern const Name time_communicate_spike_data; extern const Name time_communicate_target_data; extern const Name time_construction_connect; extern const Name time_construction_create; +extern const Name time_deliver_secondary_data; extern const Name time_deliver_spike_data; +extern const Name time_gather_secondary_data; extern const Name time_gather_spike_data; extern const Name time_gather_target_data; extern const Name time_in_steps; diff --git a/nestkernel/simulation_manager.cpp b/nestkernel/simulation_manager.cpp index c301344ba4..d072e27beb 100644 --- a/nestkernel/simulation_manager.cpp +++ b/nestkernel/simulation_manager.cpp @@ -125,8 +125,10 @@ nest::SimulationManager::reset_timers_for_dynamics() sw_simulate_.reset(); #ifdef TIMER_DETAILED sw_gather_spike_data_.reset(); + sw_gather_secondary_data_.reset(); sw_update_.reset(); sw_deliver_spike_data_.reset(); + sw_deliver_secondary_data_.reset(); #endif } @@ -443,9 +445,11 @@ nest::SimulationManager::get_status( DictionaryDatum& d ) def< double >( d, names::time_communicate_prepare, sw_communicate_prepare_.elapsed() ); #ifdef TIMER_DETAILED def< double >( d, names::time_gather_spike_data, sw_gather_spike_data_.elapsed() ); + def< double >( d, names::time_gather_secondary_data, sw_gather_secondary_data_.elapsed() ); def< double >( d, names::time_update, sw_update_.elapsed() ); def< double >( d, names::time_gather_target_data, sw_gather_target_data_.elapsed() ); def< double >( d, names::time_deliver_spike_data, sw_deliver_spike_data_.elapsed() ); + def< double >( d, names::time_deliver_secondary_data, sw_deliver_secondary_data_.elapsed() ); #endif } @@ -841,7 +845,19 @@ nest::SimulationManager::update_() } if ( kernel().connection_manager.secondary_connections_exist() ) { +#ifdef TIMER_DETAILED + if ( tid == 0 ) + { + sw_deliver_secondary_data_.start(); + } +#endif kernel().event_delivery_manager.deliver_secondary_events( tid, false ); +#ifdef TIMER_DETAILED + if ( tid == 0 ) + { + sw_deliver_secondary_data_.stop(); + } +#endif } @@ -1044,8 +1060,14 @@ nest::SimulationManager::update_() } if ( kernel().connection_manager.secondary_connections_exist() ) { +#ifdef TIMER_DETAILED + sw_gather_secondary_data_.start(); +#endif kernel().event_delivery_manager.gather_secondary_events( true ); } +#ifdef TIMER_DETAILED + sw_gather_secondary_data_.stop(); +#endif } diff --git a/nestkernel/simulation_manager.h b/nestkernel/simulation_manager.h index 7b0b03e53e..b71a4767b8 100644 --- a/nestkernel/simulation_manager.h +++ b/nestkernel/simulation_manager.h @@ -229,9 +229,11 @@ class SimulationManager : public ManagerInterface #ifdef TIMER_DETAILED // intended for internal core developers, not for use in the public API Stopwatch sw_gather_spike_data_; + Stopwatch sw_gather_secondary_data_; Stopwatch sw_update_; Stopwatch sw_gather_target_data_; Stopwatch sw_deliver_spike_data_; + Stopwatch sw_deliver_secondary_data_; #endif };