Spike!  v1.0
A high speed Spiking Neural Network Simulator designed for GPGPUs.
Public Member Functions | Public Attributes
Synapses Class Reference

#include <Synapses.h>

Inheritance diagram for Synapses:
SpikingSynapses ConductanceSpikingSynapses CurrentSpikingSynapses

List of all members.

Public Member Functions

virtual void AddGroup (int presynaptic_group_id, int postsynaptic_group_id, Neurons *neurons, Neurons *input_neurons, float timestep, synapse_parameters_struct *synapse_params)
virtual void allocate_device_pointers ()
virtual void copy_constants_and_initial_efficacies_to_device ()
virtual void set_threads_per_block_and_blocks_per_grid (int threads)
virtual void increment_number_of_synapses (int increment)
virtual void shuffle_synapses ()

Public Attributes

int total_number_of_synapses
int temp_number_of_synapses_in_last_group
int largest_synapse_group_size
bool print_synapse_group_details
int * presynaptic_neuron_indices
int * postsynaptic_neuron_indices
int * original_synapse_indices
int * synapse_postsynaptic_neuron_count_index
float * synaptic_efficacies_or_weights
int * d_presynaptic_neuron_indices
int * d_postsynaptic_neuron_indices
int * d_temp_presynaptic_neuron_indices
int * d_temp_postsynaptic_neuron_indices
int * d_synapse_postsynaptic_neuron_count_index
float * d_synaptic_efficacies_or_weights
float * d_temp_synaptic_efficacies_or_weights
dim3 number_of_synapse_blocks_per_grid
dim3 threads_per_block

Detailed Description

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.


Member Function Documentation

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.

Parameters:
presynaptic_group_idAn int ID of the presynaptic neuron population (ID is < 0 if presynaptic population is an InputSpikingNeuron population)
postsynaptic_group_idAn int ID of the postsynaptic neuron population.
neuronsA pointer to an instance of the Neurons class (or sub-class) which is included in this simulation.
input_neuronsA pointer to an instance of the Neurons class (or sub-class) which is included in this simulation (for population indices < 0, i.e. InputSpikingNeurons).
timestepA float indicating the timestep at which the simulator is running.
synapse_paramsA 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.

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.


Member Data Documentation

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


The documentation for this class was generated from the following file:
 All Classes Files Functions Variables Enumerations