23#ifndef EVENT_DELIVERY_MANAGER_IMPL_H
24#define EVENT_DELIVERY_MANAGER_IMPL_H
35template <
class EventT >
39 assert( not source.has_proxies() );
40 e.set_stamp(
kernel().simulation_manager.get_slice_origin() +
Time::step( lag + 1 ) );
41 e.set_sender( source );
42 const size_t t = source.get_thread();
43 const size_t ldid = source.get_local_device_id();
50 assert( not source.has_proxies() );
51 e.set_stamp(
kernel().simulation_manager.get_slice_origin() +
Time::step( 1 ) );
52 e.set_sender( source );
53 const size_t t = source.get_thread();
54 const size_t ldid = source.get_local_device_id();
58template <
class EventT >
67EventDeliveryManager::send< SpikeEvent >(
Node& source,
SpikeEvent& e,
const long lag )
69 const size_t tid = source.get_thread();
70 const size_t source_node_id = source.get_node_id();
71 e.set_sender_node_id( source_node_id );
72 if ( source.has_proxies() )
76 e.set_stamp(
kernel().simulation_manager.get_slice_origin() +
Time::step( lag + 1 ) );
77 e.set_sender( source );
79 if ( source.is_off_grid() )
97EventDeliveryManager::send< DSSpikeEvent >(
Node& source,
DSSpikeEvent& e,
const long lag )
99 e.set_sender_node_id( source.get_node_id() );
110 for (
const auto& target : targets )
113 for (
size_t i = 0; i < e.get_multiplicity(); ++i )
127 for (
const auto& target : targets )
130 for (
size_t i = 0; i < e.get_multiplicity(); ++i )
141 const size_t source_node_id = source.get_node_id();
144 if ( source.has_proxies() )
150 const std::set< synindex >& supported_syn_ids = e.get_supported_syn_ids();
151 for (
const auto& syn_id : supported_syn_ids )
153 const std::vector< size_t >& positions =
156 for (
size_t i = 0; i < positions.size(); ++i )
void send_from_device(const size_t tid, const size_t ldid, Event &e)
Send event e to all targets of source device ldid (local device id)
Definition connection_manager_impl.h:79
void send_to_devices(const size_t tid, const size_t source_node_id, Event &e)
Send event e to all device targets of source source_node_id.
Definition connection_manager_impl.h:67
const std::vector< Target > & get_remote_targets_of_local_node(const size_t tid, const size_t lid) const
Definition connection_manager.h:818
const std::vector< size_t > & get_secondary_send_buffer_positions(const size_t tid, const size_t lid, const synindex syn_id) const
Definition connection_manager.h:846
"Callback request event" for use in Device.
Definition event.h:521
void send_remote(size_t tid, SpikeEvent &, const long lag=0)
Add node ID of event sender to the spike_register.
Definition event_delivery_manager_impl.h:104
std::vector< std::vector< SpikeDataWithRank > * > emitted_spikes_register_
Register of emitted spikes.
Definition event_delivery_manager.h:423
std::vector< unsigned int > send_buffer_secondary_events_
Buffer to collect the secondary events after serialization.
Definition event_delivery_manager.h:441
std::vector< unsigned long > local_spike_counter_
Number of generated spike events (both off- and on-grid) during the last call to simulate.
Definition event_delivery_manager.h:447
std::vector< std::vector< OffGridSpikeDataWithRank > * > off_grid_emitted_spikes_register_
Register of emitted off-grid spikes.
Definition event_delivery_manager.h:436
void send_secondary(Node &source, SecondaryEvent &e)
Send a secondary event remote.
Definition event_delivery_manager_impl.h:138
size_t write_toggle() const
Return 0 for even, 1 for odd time slices.
Definition event_delivery_manager_impl.h:173
void send(Node &source, EventT &e, const long lag=0)
Standard routine for sending events.
Definition event_delivery_manager_impl.h:60
void send_off_grid_remote(size_t tid, SpikeEvent &e, const long lag=0)
Add node ID of event sender to the spike_register.
Definition event_delivery_manager_impl.h:121
void send_local_(Node &source, EventT &e, const long lag)
Sends event e to all targets of node source.
Definition event_delivery_manager_impl.h:37
Base class for all NEST network objects.
Definition node.h:99
Base class of secondary events.
Definition secondary_event.h:50
size_t get_slice() const
Get slice number.
Definition simulation_manager.h:275
Event for spike information.
Definition event.h:418
size_t get_thread_id() const
Gets ID of local thread.
Definition vp_manager.h:176
size_t node_id_to_lid(const size_t node_id) const
Returns thread local index of a given global node.
Definition vp_manager_impl.h:79
ConnectionManager connection_manager
Definition kernel_manager.h:239
SimulationManager simulation_manager
Definition kernel_manager.h:237
VPManager vp_manager
Definition kernel_manager.h:234
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
KernelManager & kernel()
Definition kernel_manager.h:311
Definition nest_time.h:246