@@ -46,8 +46,8 @@ EventDeliveryManager::EventDeliveryManager()
46
46
: off_grid_spiking_( false )
47
47
, moduli_()
48
48
, slice_moduli_()
49
- , spike_register_ ()
50
- , off_grid_spike_register_ ()
49
+ , emitted_spikes_register_ ()
50
+ , off_grid_emitted_spike_register_ ()
51
51
, send_buffer_secondary_events_()
52
52
, recv_buffer_secondary_events_()
53
53
, local_spike_counter_()
@@ -78,8 +78,8 @@ EventDeliveryManager::initialize()
78
78
reset_counters ();
79
79
reset_timers_for_preparation ();
80
80
reset_timers_for_dynamics ();
81
- spike_register_ .resize ( num_threads );
82
- off_grid_spike_register_ .resize ( num_threads );
81
+ emitted_spikes_register_ .resize ( num_threads );
82
+ off_grid_emitted_spike_register_ .resize ( num_threads );
83
83
gather_completed_checker_.initialize ( num_threads, false );
84
84
// Ensures that ResetKernel resets off_grid_spiking_
85
85
off_grid_spiking_ = false ;
@@ -90,10 +90,10 @@ EventDeliveryManager::initialize()
90
90
#pragma omp parallel
91
91
{
92
92
const thread tid = kernel ().vp_manager .get_thread_id ();
93
- spike_register_ [ tid ].resize ( num_threads,
93
+ emitted_spikes_register_ [ tid ].resize ( num_threads,
94
94
std::vector< std::vector< Target > >( kernel ().connection_manager .get_min_delay (), std::vector< Target >() ) );
95
95
96
- off_grid_spike_register_ [ tid ].resize ( num_threads,
96
+ off_grid_emitted_spike_register_ [ tid ].resize ( num_threads,
97
97
std::vector< std::vector< OffGridTarget > >(
98
98
kernel ().connection_manager .get_min_delay (), std::vector< OffGridTarget >() ) );
99
99
} // of omp parallel
103
103
EventDeliveryManager::finalize ()
104
104
{
105
105
// clear the spike buffers
106
- std::vector< std::vector< std::vector< std::vector< Target > > > >().swap ( spike_register_ );
107
- std::vector< std::vector< std::vector< std::vector< OffGridTarget > > > >().swap ( off_grid_spike_register_ );
106
+ std::vector< std::vector< std::vector< std::vector< Target > > > >().swap ( emitted_spikes_register_ );
107
+ std::vector< std::vector< std::vector< std::vector< OffGridTarget > > > >().swap ( off_grid_emitted_spike_register_ );
108
108
109
109
send_buffer_secondary_events_.clear ();
110
110
recv_buffer_secondary_events_.clear ();
@@ -265,10 +265,9 @@ EventDeliveryManager::update_moduli()
265
265
void
266
266
EventDeliveryManager::reset_counters ()
267
267
{
268
- for ( std::vector< unsigned long >::iterator it = local_spike_counter_.begin (); it != local_spike_counter_.end ();
269
- ++it )
268
+ for ( auto & spike_counter : local_spike_counter_ )
270
269
{
271
- ( *it ) = 0 ;
270
+ spike_counter = 0 ;
272
271
}
273
272
}
274
273
@@ -374,13 +373,13 @@ EventDeliveryManager::gather_spike_data_( const thread tid,
374
373
375
374
// Collocate spikes to send buffer
376
375
const bool collocate_completed =
377
- collocate_spike_data_buffers_ ( tid, assigned_ranks, send_buffer_position, spike_register_ , send_buffer );
376
+ collocate_spike_data_buffers_ ( tid, assigned_ranks, send_buffer_position, emitted_spikes_register_ , send_buffer );
378
377
gather_completed_checker_[ tid ].logical_and ( collocate_completed );
379
378
380
379
if ( off_grid_spiking_ )
381
380
{
382
381
const bool collocate_completed_off_grid = collocate_spike_data_buffers_ (
383
- tid, assigned_ranks, send_buffer_position, off_grid_spike_register_ , send_buffer );
382
+ tid, assigned_ranks, send_buffer_position, off_grid_emitted_spike_register_ , send_buffer );
384
383
gather_completed_checker_[ tid ].logical_and ( collocate_completed_off_grid );
385
384
}
386
385
467
466
EventDeliveryManager::collocate_spike_data_buffers_ ( const thread tid,
468
467
const AssignedRanks& assigned_ranks,
469
468
SendBufferPosition& send_buffer_position,
470
- std::vector< std::vector< std::vector< std::vector< TargetT > > > >& spike_register ,
469
+ std::vector< std::vector< std::vector< std::vector< TargetT > > > >& emitted_spikes_register ,
471
470
std::vector< SpikeDataT >& send_buffer )
472
471
{
473
472
reset_complete_marker_spike_data_ ( assigned_ranks, send_buffer_position, send_buffer );
@@ -477,24 +476,19 @@ EventDeliveryManager::collocate_spike_data_buffers_( const thread tid,
477
476
bool is_spike_register_empty = true ;
478
477
479
478
// First dimension: loop over writing thread
480
- for ( typename std::vector< std::vector< std::vector< std::vector< TargetT > > > >::iterator it =
481
- spike_register.begin ();
482
- it != spike_register.end ();
483
- ++it )
479
+ for ( auto & emitted_spikes_per_thread : emitted_spikes_register )
484
480
{
485
- // Second dimension: fixed reading thread
481
+ // Second dimension: Set the reading thread to the current running thread
486
482
487
483
// Third dimension: loop over lags
488
- for ( unsigned int lag = 0 ; lag < ( *it )[ tid ].size (); ++lag )
484
+ for ( unsigned int lag = 0 ; lag < ( emitted_spikes_per_thread )[ tid ].size (); ++lag )
489
485
{
490
486
// Fourth dimension: loop over entries
491
- for ( typename std::vector< TargetT >::iterator iiit = ( *it )[ tid ][ lag ].begin ();
492
- iiit < ( *it )[ tid ][ lag ].end ();
493
- ++iiit )
487
+ for ( auto & emitted_spike : ( emitted_spikes_per_thread )[ tid ][ lag ] )
494
488
{
495
- assert ( not iiit-> is_processed () );
489
+ assert ( not emitted_spike. is_processed () );
496
490
497
- const thread rank = iiit-> get_rank ();
491
+ const thread rank = emitted_spike. get_rank ();
498
492
499
493
if ( send_buffer_position.is_chunk_filled ( rank ) )
500
494
{
@@ -503,16 +497,11 @@ EventDeliveryManager::collocate_spike_data_buffers_( const thread tid,
503
497
{
504
498
return is_spike_register_empty;
505
499
}
506
- else
507
- {
508
- continue ;
509
- }
510
500
}
511
501
else
512
502
{
513
- send_buffer[ send_buffer_position.idx ( rank ) ].set (
514
- ( *iiit ).get_tid (), ( *iiit ).get_syn_id (), ( *iiit ).get_lcid (), lag, ( *iiit ).get_offset () );
515
- ( *iiit ).set_status ( TARGET_ID_PROCESSED ); // mark entry for removal
503
+ send_buffer[ send_buffer_position.idx ( rank ) ].set ( emitted_spike, lag );
504
+ emitted_spike.mark_for_removal ();
516
505
send_buffer_position.increase ( rank );
517
506
}
518
507
}
@@ -597,7 +586,7 @@ EventDeliveryManager::deliver_events_( const thread tid, const std::vector< Spik
597
586
598
587
// prepare Time objects for every possible time stamp within min_delay_
599
588
std::vector< Time > prepared_timestamps ( kernel ().connection_manager .get_min_delay () );
600
- for ( size_t lag = 0 ; lag < ( size_t ) kernel ().connection_manager .get_min_delay (); ++lag )
589
+ for ( size_t lag = 0 ; lag < static_cast < size_t >( kernel ().connection_manager .get_min_delay () ); ++lag )
601
590
{
602
591
prepared_timestamps[ lag ] = kernel ().simulation_manager .get_clock () + Time::step ( lag + 1 );
603
592
}
@@ -876,19 +865,15 @@ nest::EventDeliveryManager::distribute_target_data_buffers_( const thread tid )
876
865
void
877
866
EventDeliveryManager::resize_spike_register_ ( const thread tid )
878
867
{
879
- for ( std::vector< std::vector< std::vector< Target > > >::iterator it = spike_register_[ tid ].begin ();
880
- it != spike_register_[ tid ].end ();
881
- ++it )
868
+ for ( auto & emitted_spikes_for_current_thread : emitted_spikes_register_[ tid ] )
882
869
{
883
- it-> resize ( kernel ().connection_manager .get_min_delay (), std::vector< Target >() );
870
+ emitted_spikes_for_current_thread. resize ( kernel ().connection_manager .get_min_delay (), std::vector< Target >() );
884
871
}
885
872
886
- for ( std::vector< std::vector< std::vector< OffGridTarget > > >::iterator it =
887
- off_grid_spike_register_[ tid ].begin ();
888
- it != off_grid_spike_register_[ tid ].end ();
889
- ++it )
873
+ for ( auto & off_grid_emitted_spike_for_current_thread : off_grid_emitted_spike_register_[ tid ] )
890
874
{
891
- it->resize ( kernel ().connection_manager .get_min_delay (), std::vector< OffGridTarget >() );
875
+ off_grid_emitted_spike_for_current_thread.resize (
876
+ kernel ().connection_manager .get_min_delay (), std::vector< OffGridTarget >() );
892
877
}
893
878
}
894
879
0 commit comments