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

#include <Neurons.h>

Inheritance diagram for Neurons:
SpikingNeurons AdExSpikingNeurons InputSpikingNeurons IzhikevichSpikingNeurons LIFSpikingNeurons GeneratorInputSpikingNeurons PoissonInputSpikingNeurons ImagePoissonInputSpikingNeurons

List of all members.

Public Member Functions

 Neurons ()
virtual int AddGroup (neuron_parameters_struct *group_params)
virtual void allocate_device_pointers (int maximum_axonal_delay_in_timesteps, bool high_fidelity_spike_storage)
virtual void copy_constants_to_device ()
virtual void reset_neuron_activities ()
void reset_current_injections ()
void set_threads_per_block_and_blocks_per_grid (int threads)

Public Attributes

int total_number_of_neurons
int total_number_of_groups
int number_of_neurons_in_new_group
int * start_neuron_indices_for_each_group
int * last_neuron_indices_for_each_group
int * per_neuron_afferent_synapse_count
int ** group_shapes
int * d_per_neuron_afferent_synapse_count
float * d_current_injections
dim3 number_of_neuron_blocks_per_grid
dim3 threads_per_block

Detailed Description

This is the parent class for SpikingNeurons. It provides a set of default methods which are primarily used to add groups of neurons to the total population.


Constructor & Destructor Documentation

Initializes pointers and variables.


Member Function Documentation

virtual int Neurons::AddGroup ( neuron_parameters_struct group_params) [virtual]

Determines the total number of neurons by which the simulation should increase. This is a virtual function to allow polymorphism in the methods of various SpikingNeuron implementations. Allocates memory as necessary for group size and indices storage.

Parameters:
group_paramsA neuron_parameters_struct instance describing a 2D neuron population size.
Returns:
The unique ID for the population which was requested for creation.

Reimplemented in InputSpikingNeurons, AdExSpikingNeurons, SpikingNeurons, GeneratorInputSpikingNeurons, IzhikevichSpikingNeurons, LIFSpikingNeurons, PoissonInputSpikingNeurons, and ImagePoissonInputSpikingNeurons.

virtual void Neurons::allocate_device_pointers ( int  maximum_axonal_delay_in_timesteps,
bool  high_fidelity_spike_storage 
) [virtual]

Exclusively for the allocation of device memory. This class requires allocation of d_current_injections only.

Parameters:
maximum_axonal_delay_in_timestepsThe length (in timesteps) of the largest axonal delay in the simulation. Unused in this class.
high_fidelity_spike_storageA flag determining whether a bit mask based method is used to store spike times of neurons (ensure no spike transmission failure).

Reimplemented in AdExSpikingNeurons, SpikingNeurons, GeneratorInputSpikingNeurons, IzhikevichSpikingNeurons, LIFSpikingNeurons, and PoissonInputSpikingNeurons.

virtual void Neurons::copy_constants_to_device ( ) [virtual]

Unused in this class. Allows copying of static data related to neuron dynamics to the device.

Reimplemented in AdExSpikingNeurons, SpikingNeurons, IzhikevichSpikingNeurons, LIFSpikingNeurons, and PoissonInputSpikingNeurons.

A local, non-polymorphic function called by Neurons::reset_neuron_activities to reset Neurons::d_current_injections.

virtual void Neurons::reset_neuron_activities ( ) [virtual]

Resets any undesired device based data which is dynamically reassigned during a simulation. In this case, the current to be injected at the next time step.

Reimplemented in AdExSpikingNeurons, SpikingNeurons, IzhikevichSpikingNeurons, GeneratorInputSpikingNeurons, and PoissonInputSpikingNeurons.

A local, non-polymorphic function called in to determine the CUDA Device thread (Neurons::threads_per_block) and block dimensions (Neurons::number_of_neuron_blocks_per_grid).

Reimplemented in GeneratorInputSpikingNeurons, and PoissonInputSpikingNeurons.


Member Data Documentation

Device array for the storage of current to be injected into each neuron on each timestep.

A (device-side) count of the number of afferent synapses for each neuron

The 2D shape of each group.

Indices of the final neuron in each group.

CUDA Device number of blocks

Stores number of neurons in most recently added group

A (host-side) count of the number of afferent synapses for each neuron

Indices of the beginnings of each group in the total population.

CUDA Device number of threads

Tracks the number of groups (the total neuron population is split into groups e.g. layers or excitatory/inh).

Tracks the total neuron population size.


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