|
sPyNNaker neural_modelling 7.4.2
|
STDP-with-neuromodulation implementation. More...
#include "post_events_with_da.h"#include "synapse_dynamics_stdp_common.h"#include "stdp_typedefs.h"Go to the source code of this file.
Data Structures | |
| struct | neuromodulation_data_t |
| struct | neuromodulated_synapse_t |
| struct | nm_update_state_t |
| struct | nm_final_state_t |
| struct | synapse_row_plastic_data_t |
| The format of the plastic data region of a synaptic row. More... | |
| struct | nm_params_t |
| union | synapse_row_plastic_data_t.__unnamed10__ |
| struct | synapse_row_plastic_data_t.__unnamed10__.__unnamed12__ |
Macros | |
| #define | DECAY_LOOKUP_TAU_C(time) maths_lut_exponential_decay(time, tau_c_lookup) |
| #define | DECAY_LOOKUP_TAU_D(time) maths_lut_exponential_decay(time, tau_d_lookup) |
Functions | |
| static nm_update_state_t | get_nm_update_state (neuromodulated_synapse_t synapse, index_t synapse_type) |
| static nm_final_state_t | get_nm_final_state (nm_update_state_t update_state) |
| static neuromodulated_synapse_t | get_nm_final_synaptic_word (nm_final_state_t final_state) |
| static post_event_window_t | get_post_event_window (const post_event_history_t *post_event_history, const uint32_t delayed_pre_time, const uint32_t delayed_last_pre_time, const uint32_t delay_dendritic) |
| static accum | get_weight_update (int16_t decay_eligibility_trace, int16_t decay_dopamine_trace, int16_t last_dopamine_trace, accum eligibility_weight) |
| static nm_final_state_t | izhikevich_neuromodulation_plasticity_update_synapse (const uint32_t time, const uint32_t last_pre_time, const pre_trace_t last_pre_trace, const pre_trace_t new_pre_trace, const uint32_t delay_dendritic, const uint32_t delay_axonal, nm_update_state_t current_state, const post_event_history_t *post_event_history) |
| Synapse update loop core. | |
| bool | synapse_dynamics_initialise (address_t address, uint32_t n_neurons, uint32_t n_synapse_types, uint32_t *ring_buffer_to_input_buffer_left_shifts) |
| Initialise the synapse dynamics. | |
| void | synapse_dynamics_print_plastic_synapses (synapse_row_plastic_data_t *plastic_region_data, synapse_row_fixed_part_t *fixed_region, uint32_t *ring_buffer_to_input_buffer_left_shifts) |
| Print the synapse dynamics. | |
| static index_t | sparse_axonal_delay (uint32_t x) |
| Get the axonal delay. | |
| void | synapse_dynamics_process_post_synaptic_event (uint32_t time, index_t neuron_index) |
| Inform the synapses that the neuron fired. | |
| static neuromodulated_synapse_t | process_plastic_synapse (uint32_t control_word, uint32_t last_pre_time, pre_trace_t last_pre_trace, pre_trace_t new_pre_trace, weight_t *ring_buffers, uint32_t time, uint32_t colour_delay, neuromodulated_synapse_t synapse) |
| static void | process_neuromodulation (synapse_row_plastic_data_t *plastic_region_address, synapse_row_fixed_part_t *fixed_region, uint32_t time) |
| bool | synapse_dynamics_process_plastic_synapses (synapse_row_plastic_data_t *plastic_region_address, synapse_row_fixed_part_t *fixed_region, weight_t *ring_buffers, uint32_t time, uint32_t colour_delay, bool *write_back) |
| Process the dynamics of the synapses. | |
| static neuromodulated_synapse_t * | get_plastic_synapses (synaptic_row_t row) |
| bool | synapse_dynamics_find_neuron (uint32_t id, synaptic_row_t row, weight_t *weight, uint16_t *delay, uint32_t *offset, uint32_t *synapse_type) |
| Search the synaptic row for the the connection with the specified post-synaptic ID. | |
| bool | synapse_dynamics_remove_neuron (uint32_t offset, synaptic_row_t row) |
| Remove the entry at the specified offset in the synaptic row. | |
| bool | synapse_dynamics_add_neuron (uint32_t id, synaptic_row_t row, weight_t weight, uint32_t delay, uint32_t type) |
| Add an entry in the synaptic row. | |
Variables | |
| static nm_params_t | nm_params |
| static int16_lut * | tau_c_lookup |
| static int16_lut * | tau_d_lookup |
| static uint32_t * | nm_weight_shift |
| uint32_t | skipped_synapses |
STDP-with-neuromodulation implementation.
Definition in file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| struct neuromodulation_data_t |
Definition at line 23 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| Data Fields | ||
|---|---|---|
| uint32_t | synapse_type:30 | |
| uint32_t | is_reward:1 | |
| uint32_t | is_neuromodulation: 1 | |
| struct neuromodulated_synapse_t |
Definition at line 29 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| Data Fields | ||
|---|---|---|
| weight_t | weight | |
| plastic_synapse_t | eligibility_synapse | |
| struct nm_update_state_t |
Definition at line 34 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| Data Fields | ||
|---|---|---|
| accum | weight | |
| uint32_t | weight_shift | |
| update_state_t | eligibility_state | |
| struct nm_final_state_t |
Definition at line 40 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| Data Fields | ||
|---|---|---|
| weight_t | weight | |
| final_state_t | final_state | |
| struct synapse_row_plastic_data_t |
The format of the plastic data region of a synaptic row.
Definition at line 45 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| Data Fields | ||
|---|---|---|
| union synapse_row_plastic_data_t.__unnamed10__ | __unnamed__ | |
| pre_event_history_t | history | The pre-event history. |
| plastic_synapse_t | synapses[] | The per-synapse information. |
| uint32_t | pre_spike: 31 | |
| uint32_t | is_update: 1 | |
| updatable_synapse_t | synapses[] | |
| struct nm_params_t |
Definition at line 58 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| Data Fields | ||
|---|---|---|
| accum | weight_update_constant_component | Constant part of weight update. |
| accum | max_weight | Maximum of weight after update. |
| accum | min_weight | Minimum of weight after update (must be >= 0) |
| union synapse_row_plastic_data_t.__unnamed10__ |
Definition at line 46 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| Data Fields | ||
|---|---|---|
| struct synapse_row_plastic_data_t.__unnamed10__.__unnamed12__ | __unnamed__ | |
| neuromodulation_data_t | neuromodulation | Neuromodulation data. |
| struct synapse_row_plastic_data_t.__unnamed10__.__unnamed12__ |
Definition at line 47 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| Data Fields | ||
|---|---|---|
| pre_event_history_t | history | The pre-event history. |
| neuromodulated_synapse_t | synapses[] | The per-synapse information. |
| #define DECAY_LOOKUP_TAU_C | ( | time | ) | maths_lut_exponential_decay(time, tau_c_lookup) |
Definition at line 81 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| #define DECAY_LOOKUP_TAU_D | ( | time | ) | maths_lut_exponential_decay(time, tau_d_lookup) |
Definition at line 83 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 86 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 98 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 112 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 122 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 148 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Synapse update loop core.
| [in] | time | The current time |
| [in] | last_pre_time | The time of the last previous pre-event |
| [in] | last_pre_trace | The last previous pre-trace |
| [in] | new_pre_trace | The new pre-trace |
| [in] | delay_dendritic | The dendritic delay for the synapse |
| [in] | delay_axonal | The axonal delay for the synapse |
| [in] | current_state | The current state |
| [in] | post_event_history | The history |
Definition at line 177 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| bool synapse_dynamics_initialise | ( | address_t | address, |
| uint32_t | n_neurons, | ||
| uint32_t | n_synapse_types, | ||
| uint32_t * | ring_buffer_to_input_buffer_left_shifts | ||
| ) |
Initialise the synapse dynamics.
| [in] | address | Where the configuration data is |
| [in] | n_neurons | Number of neurons |
| [in] | n_synapse_types | Number of synapse types |
| [in] | ring_buffer_to_input_buffer_left_shifts | How to interpret the values from the ring buffers |
Definition at line 276 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| void synapse_dynamics_print_plastic_synapses | ( | synapse_row_plastic_data_t * | plastic_region_data, |
| synapse_row_fixed_part_t * | fixed_region, | ||
| uint32_t * | ring_buffer_to_input_buffer_left_shifts | ||
| ) |
Print the synapse dynamics.
| [in] | plastic_region_data | Where the plastic data is |
| [in] | fixed_region | Where the fixed data is |
| [in] | ring_buffer_to_input_buffer_left_shifts | How to interpret the values from the ring buffers |
Definition at line 315 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Get the axonal delay.
| [in] | x | The packed plastic synapse control word |
Definition at line 361 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| void synapse_dynamics_process_post_synaptic_event | ( | uint32_t | time, |
| index_t | neuron_index | ||
| ) |
Inform the synapses that the neuron fired.
| [in] | time | The current simulation time |
| [in] | neuron_index | Which neuron are we processing |
Definition at line 372 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 391 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 423 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| bool synapse_dynamics_process_plastic_synapses | ( | synapse_row_plastic_data_t * | plastic_region_data, |
| synapse_row_fixed_part_t * | fixed_region, | ||
| weight_t * | ring_buffers, | ||
| uint32_t | time, | ||
| uint32_t | colour_delay, | ||
| bool * | write_back | ||
| ) |
Process the dynamics of the synapses.
| [in,out] | plastic_region_data | Where the plastic data is |
| [in] | fixed_region | Where the fixed data is |
| [in,out] | ring_buffers | The ring buffers |
| [in] | time | The current simulation time |
| [out] | Whether | to write back anything |
Definition at line 460 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
inlinestatic |
Definition at line 506 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| bool synapse_dynamics_find_neuron | ( | uint32_t | id, |
| synaptic_row_t | row, | ||
| weight_t * | weight, | ||
| uint16_t * | delay, | ||
| uint32_t * | offset, | ||
| uint32_t * | synapse_type | ||
| ) |
Search the synaptic row for the the connection with the specified post-synaptic ID.
| [in] | id | the (core-local) ID of the neuron to search for in the synaptic row |
| [in] | row | the core-local address of the synaptic row |
| [out] | weight | address to contain the weight of the connection |
| [out] | delay | address to contain the delay of the connection |
| [out] | offset | address to contain the offset of the connection |
| [out] | synapse_type | the synapse type of the connection |
Definition at line 512 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| bool synapse_dynamics_remove_neuron | ( | uint32_t | offset, |
| synaptic_row_t | row | ||
| ) |
Remove the entry at the specified offset in the synaptic row.
| [in] | offset | the offset in the row at which to remove the entry |
| [in] | row | the core-local address of the synaptic row |
Definition at line 542 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
| bool synapse_dynamics_add_neuron | ( | uint32_t | id, |
| synaptic_row_t | row, | ||
| weight_t | weight, | ||
| uint32_t | delay, | ||
| uint32_t | type | ||
| ) |
Add an entry in the synaptic row.
| [in] | id | the (core-local) ID of the post-synaptic neuron to be added |
| [in] | row | the core-local address of the synaptic row |
| [in] | weight | the initial weight associated with the connection |
| [in] | delay | the delay associated with the connection |
| [in] | type | the type of the connection (e.g. inhibitory) |
Definition at line 560 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
static |
Definition at line 71 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
static |
Definition at line 73 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
static |
Definition at line 75 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
static |
Definition at line 77 of file synapse_dynamics_stdp_izhikevich_neuromodulation.c.
|
extern |
Count of the synapses that have been skipped because the delay wasn't big enough given how long the spike took to arrive
Definition at line 84 of file synapses.c.