AnimatLab  2
Test
CpuSNN Class Reference

Contains all of CARLsim's core functionality. More...

#include <snn.h>

+ Collaboration diagram for CpuSNN:

Public Member Functions

 CpuSNN (const string &_name, int _numConfig=1, int randomize=0, int mode=CPU_MODE)
 
int connect (int gIDpre, int gIDpost, const string &_type, float initWt, float maxWt, float _C, uint8_t minDelay, uint8_t maxDelay, bool synWtType=SYN_FIXED, const string &wtType=" ")
 make from each neuron in grpId1 to 'numPostSynapses' neurons in grpId2
 
int connect (int gIDpre, int gIDpost, ConnectionGenerator *conn, bool synWtType=SYN_FIXED, int maxM=0, int maxPreM=0)
 
void copyGrpInfo_GPU ()
 
void copyUpdateVariables_GPU ()
 
void CpuSNNInit (unsigned int _numN, unsigned int _numPostSynapses, unsigned int _numPreSynapses, unsigned int _D)
 
int createGroup (const string &_name, unsigned int _numN, int _nType, int configId=ALL)
 creates a group of Izhikevich spiking neurons
 
int createSpikeGeneratorGroup (const string &_name, int unsigned size_n, int stype, int configId=ALL)
 creates a spike generator group (dummy-neurons, not Izhikevich spiking neurons).
 
grpConnectInfo_tgetConnectInfo (int connectId, int configId=0)
 
int getConnectionId (int connId, int configId)
 
uint8_t * getDelays (int gIDpre, int gIDpost, int &Npre, int &Npost, uint8_t *delays=NULL)
 
int getGroupId (int groupId, int configId)
 
group_info_t getGroupInfo (int groupId, int configId=0)
 
group_info2_t getGroupInfo2 (int groupId, int configId=0)
 
int getNextGroupId (int)
 
int getNumConfigurations ()
 
int getNumConnections (int connectionId)
 Input: connectionID. Output: the number of connections associated with that connection ID.
 
void getPopWeights (int gIDpre, int gIDpost, float *&weights, int &size, int configId=0)
 Writes weights from synaptic connections from gIDpre to gIDpost. Returns a pointer to the weights and the size of the 1D array in size. gIDpre(post) is the group ID for the pre(post)synaptic group, weights is a pointer to a single dimensional array of floats, size is the size of that array which is returned to the user, and configID is the configuration ID of the SNN. NOTE: user must free memory from weights to avoid a memory leak.
 
uint64_t getSimTime ()
 
uint32_t getSimTimeMs ()
 
uint32_t getSimTimeSec ()
 
unsigned int * getSpikeCntPtr (int grpId=-1, int simType=CPU_MODE)
 Returns pointer to nSpikeCnt, which is a 1D array of the number of spikes every neuron in the group has fired. Takes the grpID and the simulation mode (CPU_MODE or GPU_MODE) as arguments. More...
 
float * getWeightChanges (int gIDpre, int gIDpost, int &Npre, int &Npost, float *weightChanges=NULL)
 
float * getWeights (int gIDpre, int gIDpost, int &Npre, int &Npost, float *weights=NULL)
 
int grpEndNeuronId (int g)
 
int grpNumNeurons (int g)
 
int grpStartNeuronId (int g)
 
void plotProbes ()
 
void printConnection (const string &fname)
 
void printConnection (FILE *fp=stdout)
 
void printConnection (int grpId, FILE *fp=stdout)
 print the connection info of grpId
 
void printConnectionInfo (FILE *fp)
 
void printConnectionInfo2 (FILE *fpg)
 
void printDotty ()
 prints a network graph using Dotty (GraphViz)
 
void printFiringRate (char *fname=NULL)
 
void printGroupInfo (FILE *fp)
 
void printGroupInfo (string &strName)
 
void printGroupInfo2 (FILE *fpg)
 
void printMemoryInfo (FILE *fp=stdout)
 prints memory info to file
 
void printNetworkInfo ()
 
void printNeuronState (int grpId, FILE *fp=stderr)
 
void printNeuronStateBinary (string fname, int grpId, int configId=0, int count=-1)
 Debugging function that outputs regular neuron state variables to a binary file at every timestep. Warning: drastically reduces speed of simulation. Only use for debugging purposes.
 
void printParameters (FILE *fp)
 
void printPostConnection (FILE *fp=stdout)
 print all the connections...
 
void printPostConnection (int grpId, FILE *fp=stdout)
 
int printPostConnection2 (int grpId, FILE *fpg)
 
void printPreConnection (FILE *fp=stdout)
 
void printPreConnection (int grpId, FILE *fp=stdout)
 
int printPreConnection2 (int grpId, FILE *fpg)
 
void printSimSummary (FILE *fp=stdout)
 prints a simulation summary to file
 
void printState (const char *str="")
 
void printTuningLog ()
 
void printWeight (int grpId, const char *str="")
 
void readNetwork (FILE *fid)
 reads the network state from file
 
int readNetwork_internal (bool onlyPlastic)
 
void reassignFixedWeights (int connectId, float weightMatrix[], int matrixSize, int configId=ALL)
 Reassigns fixed weights to values passed into the function in a single 1D float matrix called weightMatrix. The user passes the connection ID (connectID), the weightMatrix, the matrixSize, and configuration ID (configID). This function only works for fixed synapses.
 
void resetSpikeCnt (int grpId=-1)
 Resets the spike count for a particular group.
 
void resetSpikeCnt_GPU (int _startGrp, int _endGrp)
 Utility function to clear spike counts in the GPU code.
 
void resetSpikeCntUtil (int grpId=-1)
 Resets the spike count for a particular neuron group. Input: group ID variable named grpID. Output: none.
 
int runNetwork (int _nsec, int _tstep=0, int simType=CPU_MODE, int ithGPU=0, bool enablePrint=false, int copyState=false)
 run the simulation for n sec simType can either be CPU_MODE or GPU_MODE ithGPU: specify on which CUDA device to establish a context
 
void setBaseFiring (int groupId, int configId, float _baseFiring, float _baseFiringSD)
 Sets the homeostatic target firing rate. Neurons will try to attain this firing rate using homeostatic synaptic scaling.
 
void setConductances (int g, bool enable, int configId=ALL)
 
void setConductances (int g, bool enable, float tAMPA, float tNMDA, float tGABAa, float tGABAb, int configId=ALL)
 
void setCopyFiringStateFromGPU (bool _enableGPUSpikeCntPtr)
 Sets enableGpuSpikeCntPtr to true or false. True allows getSpikeCntPtr_GPU to copy firing state information from GPU kernel to cpuNetPtrs. Warning: setting this flag to true will slow down the simulation significantly.
 
void setGroupInfo (int groupId, group_info_t info, int configId=ALL)
 
void setHomeostasis (int g, bool enable, int configId=0)
 Sets the homeostasis parameters. g is the grpID, enable=true(false) enables(disables) homeostasis, and configId is the configuration ID that homeostasis will be enabled/disabled.
 
void setHomeostasis (int g, bool enable, float homeostasisScale, float avgTimeScale, int configId=0)
 Sets the homeostasis parameters. g is the grpID, enable=true(false) enables(disables) homeostasis, configId is the configuration ID that homeostasis will be enabled/disabled, homeostasisScale is strength of homeostasis compared to the strength of normal LTP/LTD from STDP (which is 1), and avgTimeScale is the time frame over which the average firing rate is averaged (it should be larger in scale than STDP timescales).
 
void setLogCycle (unsigned int _cnt, int mode=0, FILE *fp=NULL)
 sets the update cycle for log messages
 
void setNeuronParameters (int groupId, float _a, float a_sd, float _b, float b_sd, float _c, float c_sd, float _d, float d_sd, int configId=ALL)
 Sets the Izhikevich parameters a, b, c, and d of a neuron group. More...
 
void setNeuronParameters (int groupId, float _a, float _b, float _c, float _d, int configId=ALL)
 Sets the Izhikevich parameters a, b, c, and d of a neuron group.
 
void setNeuronParameters (int groupId, IzhGenerator *IzhGen, int configId=ALL)
 
void setPrintState (int grpId, bool _status, int neuronId=-1)
 
void setProbe (int g, const string &type, int startId=0, int cnt=1, uint32_t _printProbe=0)
 
void setSimLogs (bool enable, string logDirName="")
 
void setSpikeGenerator (int grpId, SpikeGenerator *spikeGen, int configId=ALL)
 
void setSpikeMonitor (int gid, SpikeMonitor *spikeMon=NULL, int configId=ALL)
 
void setSpikeMonitor (int gid, const string &fname, int configId=0)
 a simple wrapper that uses a predetermined callback to save the data to a file
 
void setSpikeRate (int grpId, PoissonRate *spikeRate, int refPeriod=1, int configId=ALL)
 
void setSpikeRateUpdated ()
 
void setSTDP (int grpId, bool enable, int configId=ALL)
 
void setSTDP (int grpId, bool enable, float _ALPHA_LTP, float _TAU_LTP, float _ALPHA_LTD, float _TAU_LTD, int configId=ALL)
 
void setStepFeedback (StepFeedback *feedback)
 
void setSTP (int g, bool enable, int configId=ALL)
 
void setSTP (int g, bool enable, float STP_U, float STP_tD, float STP_tF, int configId=ALL)
 
void setTuningLog (string fname)
 
void showDottyViewer (int _f)
 
void showGroupStatus (int _f)
 
void updateNetwork (bool resetFiringInfo, bool resetWeights)
 Resets either the neuronal firing rate information by setting resetFiringRate = true and/or the weight values back to their default values by setting resetWeights = true.
 
void updateNetwork ()
 Original updateNetwork() function used by JMN.
 
void updateNetwork_GPU (bool resetFiringInfo)
 
bool updateTime ()
 returns true when a new second is started
 
void writeNetwork (FILE *fid)
 stores the pre and post synaptic neuron ids with the weight and delay
 
void writePopWeights (string fname, int gIDpre, int gIDpost, int configId=0)
 function writes population weights from gIDpre to gIDpost to file fname in binary.
 

Static Public Attributes

static const unsigned int MAJOR_VERSION = 2
 major release version, as in CARLsim X
 
static const unsigned int MINOR_VERSION = 3
 minor release version, as in CARLsim 2.X
 

Detailed Description

Contains all of CARLsim's core functionality.

This is a more elaborate description of our main class.

Definition at line 619 of file snn.h.

Member Function Documentation

void CpuSNN::copyUpdateVariables_GPU ( )

Copies synaptic weight information, neuronal state information, and STP state information from the host to the device (GPU).

Referenced by reassignFixedWeights().

+ Here is the caller graph for this function:

void CpuSNN::CpuSNNInit ( unsigned int  _numN,
unsigned int  _numPostSynapses,
unsigned int  _numPreSynapses,
unsigned int  _D 
)

homeostasis variables

< Temporary array to store the delays of each connection

< Possible delay values are 0....D (inclusive of D)

Temporary array to hold pre-syn connections. will be deleted later if necessary

Definition at line 159 of file snn_cpu.cpp.

unsigned int* CpuSNN::getSpikeCntPtr ( int  grpId = -1,
int  simType = CPU_MODE 
)
inline

Returns pointer to nSpikeCnt, which is a 1D array of the number of spikes every neuron in the group has fired. Takes the grpID and the simulation mode (CPU_MODE or GPU_MODE) as arguments.

do check to make sure appropriate flag is set

Definition at line 879 of file snn.h.

void CpuSNN::setNeuronParameters ( int  groupId,
float  _a,
float  a_sd,
float  _b,
float  b_sd,
float  _c,
float  c_sd,
float  _d,
float  d_sd,
int  configId = ALL 
)

Sets the Izhikevich parameters a, b, c, and d of a neuron group.

Parameter values for each neuron are given by a normal distribution with mean _a, _b, _c, _d standard deviation a_sd, b_sd, c_sd, and d_sd, respectively.

Definition at line 923 of file snn_cpu.cpp.

Referenced by setNeuronParameters().

+ Here is the caller graph for this function:

void CpuSNN::setSpikeMonitor ( int  gid,
SpikeMonitor spikeMon = NULL,
int  configId = ALL 
)

sets up a spike monitor registered with a callback to process the spikes, there can only be one SpikeMonitor per group

Definition at line 3981 of file snn_cpu.cpp.

Referenced by setSpikeMonitor().

+ Here is the caller graph for this function:

void CpuSNN::updateNetwork_GPU ( bool  resetFiringInfo)

Allows parameters to be reset in the middle of the simulation. This component is required for the GPU version.

Referenced by updateNetwork().

+ Here is the caller graph for this function:


The documentation for this class was generated from the following files: