Spike!
v1.0
A high speed Spiking Neural Network Simulator designed for GPGPUs.
|
#include <Neurons.h>
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 |
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.
Neurons::Neurons | ( | ) |
Initializes pointers and variables.
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.
group_params | A neuron_parameters_struct instance describing a 2D neuron population size. |
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.
maximum_axonal_delay_in_timesteps | The length (in timesteps) of the largest axonal delay in the simulation. Unused in this class. |
high_fidelity_spike_storage | A 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.
void Neurons::reset_current_injections | ( | ) |
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.
void Neurons::set_threads_per_block_and_blocks_per_grid | ( | int | threads | ) |
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.
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
int** Neurons::group_shapes |
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.