Spike!
v1.0
A high speed Spiking Neural Network Simulator designed for GPGPUs.
|
#include <Synapses.h>
This is the parent class for SpikingSpiking. It provides a set of default methods which are primarily used to add groups of synapses to the connectivity.
virtual void Synapses::AddGroup | ( | int | presynaptic_group_id, |
int | postsynaptic_group_id, | ||
Neurons * | neurons, | ||
Neurons * | input_neurons, | ||
float | timestep, | ||
synapse_parameters_struct * | synapse_params | ||
) | [virtual] |
Determines the synaptic connections to add to the simulation connectivity. This is a virtual function to allow polymorphism in the methods of various sub-class implementations. Allocates memory as necessary for group size and indices storage.
presynaptic_group_id | An int ID of the presynaptic neuron population (ID is < 0 if presynaptic population is an InputSpikingNeuron population) |
postsynaptic_group_id | An int ID of the postsynaptic neuron population. |
neurons | A pointer to an instance of the Neurons class (or sub-class) which is included in this simulation. |
input_neurons | A pointer to an instance of the Neurons class (or sub-class) which is included in this simulation (for population indices < 0, i.e. InputSpikingNeurons). |
timestep | A float indicating the timestep at which the simulator is running. |
synapse_params | A synapse_parameters_struct pointer describing the connectivity arrangement to be added between the pre and postsynaptic neuron populations. |
Reimplemented in SpikingSynapses, ConductanceSpikingSynapses, and CurrentSpikingSynapses.
virtual void Synapses::allocate_device_pointers | ( | ) | [virtual] |
Exclusively for the allocation of device memory. This class allocates device pointers for presynaptic and postsynaptic neuron ids, synaptic efficacies/weights, and the number of synaptic connections to the postsynaptic neuron.
Reimplemented in SpikingSynapses, and ConductanceSpikingSynapses.
virtual void Synapses::copy_constants_and_initial_efficacies_to_device | ( | ) | [virtual] |
Allows copying of static data related to neuron dynamics to the device. Copies synapse pre/post ids, efficies/weights, and number of postsynaptic contacts on postsynaptic neuron.
Reimplemented in SpikingSynapses, and ConductanceSpikingSynapses.
virtual void Synapses::increment_number_of_synapses | ( | int | increment | ) | [virtual] |
A function called in to reallocate memory for a given number more synapses. /param increment The number of synapses for which allocated memory must be expanded.
Reimplemented in SpikingSynapses, and ConductanceSpikingSynapses.
virtual void Synapses::set_threads_per_block_and_blocks_per_grid | ( | int | threads | ) | [virtual] |
A local, function called in to determine the CUDA Device thread (Synapses::threads_per_block) and block dimensions (Synapses::number_of_synapse_blocks_per_grid).
Reimplemented in SpikingSynapses, and ConductanceSpikingSynapses.
virtual void Synapses::shuffle_synapses | ( | ) | [virtual] |
A function to shuffle the order of synapse array storage for increased GPU memory write speeds. Currently Unused.
Reimplemented in SpikingSynapses, and ConductanceSpikingSynapses.
A (device-side) pointer to store indices of the postsynaptic neuron IDs
A (device-side) pointer to store indices of the presynaptic neuron IDs
A (device-side) pointer to store the number of incoming synapses to each neuron
A (device-side) pointer to store synaptic efficaces/weights accompanying pre/postsynaptic neuron indices
Tracks the size of the largest synaptic group.
A CUDA type, storing the number of blocks per grid for synapse GPU operations
Indices by which to order the presynaptic and postsynaptic neuron IDs if a shuffle is carried out
Indices of postsynaptic neuron IDs
Indices of presynaptic neuron IDs
A flag used to indicate whether group details should be printed
An array of the number of incoming synapses to each postsynaptic neuron
An array of synaptic efficacies/weights accompanying the pre/postsynaptic_neuron_indices
Tracks the number of synapses in the last added group.
A CUDA type, storing the number of threads per block for synapse GPU operations
Tracks the total number of synapses in the connectivity