Proxy to provide Nodes on remote machines. More...
#include <proxynode.h>
Public Member Functions | |
| proxynode () | |
| proxynode (size_t, size_t, size_t) | |
| Construct proxy node for internal use from. | |
| size_t | send_test_event (Node &, size_t, synindex, bool) override |
| Send an event to the receiving_node passed as an argument. | |
| void | sends_secondary_event (GapJunctionEvent &) override |
| Required to check, if source neuron may send a SecondaryEvent. | |
| SignalType | sends_signal () const override |
| This function returns the type of signal this node produces. | |
| void | sends_secondary_event (InstantaneousRateConnectionEvent &) override |
| Required to check, if source neuron may send a SecondaryEvent. | |
| void | sends_secondary_event (DiffusionConnectionEvent &) override |
| Required to check, if source neuron may send a SecondaryEvent. | |
| void | sends_secondary_event (DelayedRateConnectionEvent &) override |
| Required to check, if source neuron may send a SecondaryEvent. | |
| void | sends_secondary_event (LearningSignalConnectionEvent &) override |
| Required to check if source node may send a LearningSignalConnectionEvent. | |
| void | sends_secondary_event (SICEvent &) override |
| Required to check if source node may send a SICEvent. | |
| void | handle (SpikeEvent &) override |
| Handle incoming spike events. | |
| void | get_status (Dictionary &) const override |
| Export properties of the node by setting entries in the status dictionary. | |
| void | set_status (const Dictionary &) override |
| Proxy nodes have no properties. | |
| bool | is_proxy () const override |
| Returns true if the node is a proxy node. | |
| virtual void | handle (SpikeEvent &e) |
| Import sets of overloaded virtual functions. | |
| virtual void | handle (WeightRecorderEvent &e) |
| Import sets of overloaded virtual functions. | |
| virtual void | handle (RateEvent &e) |
| Import sets of overloaded virtual functions. | |
| virtual void | handle (DataLoggingRequest &e) |
| Import sets of overloaded virtual functions. | |
| virtual void | handle (DataLoggingReply &e) |
| Import sets of overloaded virtual functions. | |
| virtual void | handle (CurrentEvent &e) |
| Import sets of overloaded virtual functions. | |
| virtual void | handle (ConductanceEvent &e) |
| Import sets of overloaded virtual functions. | |
| virtual void | handle (DoubleDataEvent &e) |
| Import sets of overloaded virtual functions. | |
| virtual void | handle (GapJunctionEvent &e) |
| Import sets of overloaded virtual functions. | |
| virtual void | handle (InstantaneousRateConnectionEvent &e) |
| Import sets of overloaded virtual functions. | |
| virtual void | handle (DiffusionConnectionEvent &e) |
| Import sets of overloaded virtual functions. | |
| virtual void | handle (DelayedRateConnectionEvent &e) |
| Import sets of overloaded virtual functions. | |
| virtual void | handle (LearningSignalConnectionEvent &e) |
| Import sets of overloaded virtual functions. | |
| virtual void | handle (SICEvent &e) |
| Import sets of overloaded virtual functions. | |
| virtual SignalType | sends_signal () const |
Public Member Functions inherited from nest::Node | |
| Node () | |
| Node (Node const &) | |
| virtual | ~Node () |
| virtual Node * | clone () const |
| This function creates a new object by calling the derived class' copy constructor and returning its pointer. | |
| virtual bool | has_proxies () const |
| Returns true if the node has proxies on remote threads. | |
| virtual bool | supports_urbanczik_archiving () const |
| Returns true if the node supports the Urbanczik-Senn plasticity rule. | |
| virtual bool | local_receiver () const |
| Returns true if the node only receives events from nodes/devices on the same thread. | |
| virtual bool | one_node_per_process () const |
| Returns true if the node exists only once per process, but does not have proxies on remote threads. | |
| virtual bool | is_off_grid () const |
| Returns true if the node sends/receives off-grid events. | |
| std::string | get_name () const |
| Return class name. | |
| virtual std::string | get_element_type () const |
| Return the element type of the node. | |
| size_t | get_node_id () const |
| Return global Network ID. | |
| int | get_model_id () const |
| Return model ID of the node. | |
| bool | is_frozen () const |
| Returns true if node is frozen, i.e., shall not be updated. | |
| bool | node_uses_wfr () const |
| Returns true if the node uses the waveform relaxation method. | |
| void | set_node_uses_wfr (const bool) |
| Sets node_uses_wfr_ member variable (to be able to set it to "true" for any class derived from Node) | |
| void | init () |
| Initialize node prior to first simulation after node has been created. | |
| virtual void | calibrate_time (const TimeConverter &) |
| Re-calculate time-based properties of the node. | |
| virtual void | post_run_cleanup () |
| Cleanup node after Run. | |
| virtual void | finalize () |
| Finalize node. | |
| virtual bool | wfr_update (Time const &, const long, const long) |
| Advance the state of the node in time through the given interval (see Node::update() for more details). | |
| virtual size_t | handles_test_event (SpikeEvent &, size_t receptor_type) |
| Check if the node can handle a particular event and receptor type. | |
| virtual size_t | handles_test_event (WeightRecorderEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (RateEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (DataLoggingRequest &, size_t receptor_type) |
| virtual size_t | handles_test_event (CurrentEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (ConductanceEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (DoubleDataEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (DSSpikeEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (DSCurrentEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (GapJunctionEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (InstantaneousRateConnectionEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (DiffusionConnectionEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (DelayedRateConnectionEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (LearningSignalConnectionEvent &, size_t receptor_type) |
| virtual size_t | handles_test_event (SICEvent &, size_t receptor_type) |
| virtual void | register_stdp_connection (double, double) |
| Register a STDP connection. | |
| virtual void | register_eprop_connection () |
| Registers an eprop connection. | |
| virtual void | initialize_update_history () |
| Initializes the update history. | |
| virtual long | get_shift () const |
| Retrieves the temporal shift of the signal. | |
| virtual void | write_update_to_history (const long t_previous_update, const long t_current_update, const bool is_flush_event, const bool previous_was_flush_event) |
| Registers the current update in the update history and deregisters the previous update. | |
| virtual void | erase_used_eprop_history () |
| Erases used e-prop history for bsshslm_2020 models. | |
| virtual void | erase_used_eprop_history (const long t_spike, const long t_spike_previous) |
| Erases used e-prop history based on inter-spike interval. | |
| virtual bool | is_eprop_recurrent_node () const |
| Checks if the node is part of the recurrent network and thus not a readout neuron. | |
| virtual double | get_Ca_minus () const |
| Return the Ca_minus value at time Ca_t which corresponds to the time of the last update in Calcium concentration which is performed each time a Node spikes. | |
| virtual double | get_synaptic_elements (std::string) const |
| Get the number of synaptic element for the current Node at Ca_t which corresponds to the time of the last spike. | |
| virtual int | get_synaptic_elements_vacant (std::string) const |
| Get the number of vacant synaptic element for the current Node Return 0 if not overridden. | |
| virtual int | get_synaptic_elements_connected (std::string) const |
| Get the number of connected synaptic element for the current Node. | |
| virtual std::map< std::string, double > | get_synaptic_elements () const |
| Get the number of all synaptic elements for the current Node at time t. | |
| virtual void | update_synaptic_elements (double) |
| Triggers the update of all SynapticElements stored in the synaptic_element_map_. | |
| virtual void | decay_synaptic_elements_vacant () |
| Is used to reduce the number of synaptic elements in the node through time. | |
| virtual void | connect_synaptic_element (std::string, int) |
| Is used to update the number of connected synaptic elements (SynapticElement::z_connected_) when a synapse is formed or deleted. | |
| virtual double | get_K_value (double t) |
| return the Kminus value at t (in ms). | |
| virtual double | get_LTD_value (double t) |
| virtual void | get_K_values (double t, double &Kminus, double &nearest_neighbor_Kminus, double &Kminus_triplet) |
| write the Kminus, nearest_neighbor_Kminus, and Kminus_triplet values at t (in ms) to the provided locations. | |
| virtual void | get_history (double t1, double t2, std::deque< histentry >::iterator *start, std::deque< histentry >::iterator *finish) |
| return the spike history for (t1,t2]. | |
| virtual void | get_LTP_history (double t1, double t2, std::deque< histentry_extended >::iterator *start, std::deque< histentry_extended >::iterator *finish) |
| virtual void | get_urbanczik_history (double t1, double t2, std::deque< histentry_extended >::iterator *start, std::deque< histentry_extended >::iterator *finish, int) |
| virtual double | get_C_m (int comp) |
| virtual double | get_g_L (int comp) |
| virtual double | get_tau_L (int comp) |
| virtual double | get_tau_s (int comp) |
| virtual double | get_tau_syn_ex (int comp) |
| virtual double | get_tau_syn_in (int comp) |
| virtual void | compute_gradient (const long t_spike, const long t_spike_previous, double &z_previous_buffer, double &z_bar, double &e_bar, double &e_bar_reg, double &epsilon, double &weight, const CommonSynapseProperties &cp, WeightOptimizer *optimizer, bool is_flush_event, bool previous_was_flush_event, double &sum_grad, long &remaining_steps_until_cutoff, long &decay_steps) |
| Compute gradient change for eprop synapses. | |
| virtual double | compute_gradient (std::vector< long > &presyn_isis, const long t_previous_update, const long t_previous_trigger_spike, const double kappa, const bool average_gradient) |
| Compute gradient change for eprop synapses. | |
| virtual void | event_hook (DSSpikeEvent &) |
| Modify Event object parameters during event delivery. | |
| virtual void | event_hook (DSCurrentEvent &) |
| void | set_thread (size_t) |
| Store the number of the thread to which the node is assigned. | |
| size_t | get_thread () const |
| Retrieve the number of the thread to which the node is assigned. | |
| void | set_vp (size_t) |
| Store the number of the virtual process to which the node is assigned. | |
| size_t | get_vp () const |
| Retrieve the number of the virtual process to which the node is assigned. | |
| void | set_model_id (int) |
| Set the model id. | |
| void | set_initialized () |
| Execute post-initialization actions in node models. | |
| virtual SignalType | receives_signal () const |
| Dictionary | get_status_base () |
| Return a dictionary with the node's properties. | |
| void | set_status_base (const Dictionary &) |
| Set status dictionary of a node. | |
| bool | is_model_prototype () const |
| Returns true if node is model prototype. | |
| void | set_thread_lid (const size_t) |
| set thread local index | |
| size_t | get_thread_lid () const |
| get thread local index | |
| virtual void | set_local_device_id (const size_t lsdid) |
| Sets the local device id. | |
| virtual size_t | get_local_device_id () const |
| Gets the local device id. | |
| void | set_tmp_nc_index (size_t index) |
| Set index in node collection; required by ThirdOutBuilder. | |
| size_t | get_tmp_nc_index () |
| Return and invalidate index in node collection; required by ThirdOutBuilder. | |
Private Member Functions | |
| void | init_state_ () override |
| Configure state variables depending on runtime information. | |
| void | init_buffers_ () override |
| Configure persistent internal data structures. | |
| void | pre_run_hook () override |
| Re-calculate dependent parameters of the node. | |
| void | update (Time const &, const long, const long) override |
| Advance the state of the node in time through the given interval. | |
Additional Inherited Members | |
Public Attributes inherited from nest::Node | |
| DeprecationWarning | deprecation_warning |
| Member of DeprecationWarning class to be used by models if parameters are deprecated. | |
Protected Member Functions inherited from nest::Node | |
| virtual void | set_initialized_ () |
| Model & | get_model_ () const |
| void | set_frozen_ (bool frozen) |
| Mark node as frozen. | |
| template<typename ConcreteNode > | |
| const ConcreteNode & | downcast (const Node &) |
| Auxiliary function to downcast a Node to a concrete class derived from Node. | |
Proxy to provide Nodes on remote machines.
Proxy Node to provide Nodes where there aren't real Nodes to be.
|
inline |
| nest::proxynode::proxynode | ( | size_t | node_id, |
| size_t | model_id, | ||
| size_t | vp | ||
| ) |
Construct proxy node for internal use from.
| node_id | of represented node |
| model | id of represented node |
| vp | of represented node |
References nest::Node::set_frozen_(), nest::Node::set_model_id(), nest::Node::set_node_id_(), and nest::Node::set_vp().
|
overridevirtual |
Export properties of the node by setting entries in the status dictionary.
| d | Dictionary. |
Implements nest::Node.
References nest::names::element_type(), nest::ModelManager::get_node_model(), nest::kernel(), nest::Node::model_id_, and nest::KernelManager::model_manager.
|
virtual |
Import sets of overloaded virtual functions.
We need to explicitly include sets of overloaded virtual functions into the current scope. According to the SUN C++ FAQ, this is the correct way of doing things, although all other compilers happily live without.
Reimplemented from nest::Node.
|
virtual |
Import sets of overloaded virtual functions.
We need to explicitly include sets of overloaded virtual functions into the current scope. According to the SUN C++ FAQ, this is the correct way of doing things, although all other compilers happily live without.
Reimplemented from nest::Node.
|
virtual |
Import sets of overloaded virtual functions.
We need to explicitly include sets of overloaded virtual functions into the current scope. According to the SUN C++ FAQ, this is the correct way of doing things, although all other compilers happily live without.
Reimplemented from nest::Node.
|
virtual |
Import sets of overloaded virtual functions.
We need to explicitly include sets of overloaded virtual functions into the current scope. According to the SUN C++ FAQ, this is the correct way of doing things, although all other compilers happily live without.
Reimplemented from nest::Node.
|
virtual |
Import sets of overloaded virtual functions.
We need to explicitly include sets of overloaded virtual functions into the current scope. According to the SUN C++ FAQ, this is the correct way of doing things, although all other compilers happily live without.
Reimplemented from nest::Node.
|
virtual |
Import sets of overloaded virtual functions.
We need to explicitly include sets of overloaded virtual functions into the current scope. According to the SUN C++ FAQ, this is the correct way of doing things, although all other compilers happily live without.
Reimplemented from nest::Node.
|
virtual |
Import sets of overloaded virtual functions.
We need to explicitly include sets of overloaded virtual functions into the current scope. According to the SUN C++ FAQ, this is the correct way of doing things, although all other compilers happily live without.
Reimplemented from nest::Node.
|
virtual |
Import sets of overloaded virtual functions.
We need to explicitly include sets of overloaded virtual functions into the current scope. According to the SUN C++ FAQ, this is the correct way of doing things, although all other compilers happily live without.
Reimplemented from nest::Node.
|
virtual |
Import sets of overloaded virtual functions.
We need to explicitly include sets of overloaded virtual functions into the current scope. According to the SUN C++ FAQ, this is the correct way of doing things, although all other compilers happily live without.
Reimplemented from nest::Node.
|
virtual |
Import sets of overloaded virtual functions.
We need to explicitly include sets of overloaded virtual functions into the current scope. According to the SUN C++ FAQ, this is the correct way of doing things, although all other compilers happily live without.
Reimplemented from nest::Node.
|
virtual |
Import sets of overloaded virtual functions.
We need to explicitly include sets of overloaded virtual functions into the current scope. According to the SUN C++ FAQ, this is the correct way of doing things, although all other compilers happily live without.
Reimplemented from nest::Node.
|
virtual |
Import sets of overloaded virtual functions.
We need to explicitly include sets of overloaded virtual functions into the current scope. According to the SUN C++ FAQ, this is the correct way of doing things, although all other compilers happily live without.
Reimplemented from nest::Node.
|
inlineoverridevirtual |
Handle incoming spike events.
Default implementation of event handlers just throws an UnexpectedEvent exception.
| thrd | Id of the calling thread. |
| e | Event object. |
This handler has to be implemented if a Node should accept spike events.
| UnexpectedEvent | This is the default event to throw. |
Reimplemented from nest::Node.
|
virtual |
Import sets of overloaded virtual functions.
We need to explicitly include sets of overloaded virtual functions into the current scope. According to the SUN C++ FAQ, this is the correct way of doing things, although all other compilers happily live without.
Reimplemented from nest::Node.
|
virtual |
Import sets of overloaded virtual functions.
We need to explicitly include sets of overloaded virtual functions into the current scope. According to the SUN C++ FAQ, this is the correct way of doing things, although all other compilers happily live without.
Reimplemented from nest::Node.
|
inlineoverrideprivatevirtual |
Configure persistent internal data structures.
Let node configure persistent internal data structures, such as input buffers or ODE solvers, to runtime information prior to first simulation.
Reimplemented from nest::Node.
|
inlineoverrideprivatevirtual |
Configure state variables depending on runtime information.
Overload this method if the node needs to adapt state variables prior to first simulation to runtime information, e.g., the number of incoming connections.
Reimplemented from nest::Node.
|
inlineoverridevirtual |
Returns true if the node is a proxy node.
This is implemented because the use of RTTI is rather expensive.
Reimplemented from nest::Node.
|
inlineoverrideprivatevirtual |
Re-calculate dependent parameters of the node.
This function is called each time a simulation is begun/resumed. It must re-calculate all internal Variables of the node required for spike handling or updating the node.
Implements nest::Node.
|
overridevirtual |
Send an event to the receiving_node passed as an argument.
Default implementation of check_connection just throws IllegalConnection.
This is required during the connection handshaking to test, if the receiving_node can handle the event type and receptor_type sent by the source node.
If dummy_target is true, this indicates that receiving_node is derived from ConnTestDummyNodeBase and used in the first call to send_test_event(). This can be ignored in most cases, but Nodes sending DS*Events to their own event hooks and then *Events to their proper targets must send DS*Events when called with the dummy target, and *Events when called with the real target, see #478.
Reimplemented from nest::Node.
References nest::Node::get_model_id(), nest::ModelManager::get_node_model(), nest::kernel(), and nest::KernelManager::model_manager.
|
overridevirtual |
Required to check, if source neuron may send a SecondaryEvent.
This base class implementation throws IllegalConnection and needs to be overwritten in the derived class.
| IllegalConnection |
Reimplemented from nest::Node.
References nest::Node::get_model_id(), nest::ModelManager::get_node_model(), nest::kernel(), nest::KernelManager::model_manager, and nest::Model::sends_secondary_event().
|
overridevirtual |
Required to check, if source neuron may send a SecondaryEvent.
This base class implementation throws IllegalConnection and needs to be overwritten in the derived class.
| IllegalConnection |
Reimplemented from nest::Node.
References nest::Node::get_model_id(), nest::ModelManager::get_node_model(), nest::kernel(), nest::KernelManager::model_manager, and nest::Model::sends_secondary_event().
|
overridevirtual |
Required to check, if source neuron may send a SecondaryEvent.
This base class implementation throws IllegalConnection and needs to be overwritten in the derived class.
| IllegalConnection |
Reimplemented from nest::Node.
References nest::Node::get_model_id(), nest::ModelManager::get_node_model(), nest::kernel(), nest::KernelManager::model_manager, and nest::Model::sends_secondary_event().
|
overridevirtual |
Required to check, if source neuron may send a SecondaryEvent.
This base class implementation throws IllegalConnection and needs to be overwritten in the derived class.
| IllegalConnection |
Reimplemented from nest::Node.
References nest::Node::get_model_id(), nest::ModelManager::get_node_model(), nest::kernel(), nest::KernelManager::model_manager, and nest::Model::sends_secondary_event().
|
overridevirtual |
Required to check if source node may send a LearningSignalConnectionEvent.
This base class implementation throws IllegalConnection and needs to be overwritten in the derived class.
| IllegalConnection |
Reimplemented from nest::Node.
References nest::Node::get_model_id(), nest::ModelManager::get_node_model(), nest::kernel(), nest::KernelManager::model_manager, and nest::Model::sends_secondary_event().
|
overridevirtual |
Required to check if source node may send a SICEvent.
This base class implementation throws IllegalConnection and needs to be overwritten in the derived class.
| IllegalConnection |
Reimplemented from nest::Node.
References nest::Node::get_model_id(), nest::ModelManager::get_node_model(), nest::kernel(), nest::KernelManager::model_manager, and nest::Model::sends_secondary_event().
|
inlinevirtual |
Reimplemented from nest::Node.
|
overridevirtual |
This function returns the type of signal this node produces.
It is used in check_connection to only connect neurons which send / receive compatible information. This function delgates to the underlying model
Reimplemented from nest::Node.
References nest::Node::get_model_id(), nest::ModelManager::get_node_model(), nest::kernel(), nest::KernelManager::model_manager, and nest::Model::sends_signal().
|
inlineoverridevirtual |
Proxy nodes have no properties.
If set_status() gets called for a proxy node, this is and error; we must prevent this from happening, since the user might otherwise thaw a proxy node. It also causes problems with dictionary entry checking
Implements nest::Node.
|
inlineoverrideprivatevirtual |
Advance the state of the node in time through the given interval.
This method advances the state of the node through the interval (origin+from, origin+to], which is at most min_delay long.
origin+from.origin+to.Each step between from and to corresponds to one simulation timestep (nest.resolution).
If events are emitted, they have time stamps in the interval T+from+1 .. T+to.
| origin | network time at beginning of time slice |
| from | initial step inside time slice |
| to | post-final step inside time slice |
Implements nest::Node.