![]() |
GeNN
4.0.0
GPU enhanced Neuronal Networks (GeNN)
|
Object used for specifying a neuronal network model. More...
#include <modelSpec.h>
Public Types | |
typedef std::map< std::string, NeuronGroupInternal >::value_type | NeuronGroupValueType |
typedef std::map< std::string, SynapseGroupInternal >::value_type | SynapseGroupValueType |
Public Member Functions | |
ModelSpec () | |
ModelSpec (const ModelSpec &)=delete | |
ModelSpec & | operator= (const ModelSpec &)=delete |
~ModelSpec () | |
void | setName (const std::string &name) |
Method to set the neuronal network model name. More... | |
void | setPrecision (FloatType) |
Set numerical precision for floating point. More... | |
void | setTimePrecision (TimePrecision timePrecision) |
Set numerical precision for time. More... | |
void | setDT (double dt) |
Set the integration step size of the model. More... | |
void | setTiming (bool timingEnabled) |
Set whether timers and timing commands are to be included. More... | |
void | setSeed (unsigned int rngSeed) |
Set the random seed (disables automatic seeding if argument not 0). More... | |
void | setDefaultVarLocation (VarLocation loc) |
What is the default location for model state variables? More... | |
void | setDefaultExtraGlobalParamLocation (VarLocation loc) |
What is the default location for model extra global parameters? More... | |
void | setDefaultSparseConnectivityLocation (VarLocation loc) |
What is the default location for sparse synaptic connectivity? More... | |
void | setMergePostsynapticModels (bool merge) |
Should compatible postsynaptic models and dendritic delay buffers be merged? More... | |
const std::string & | getName () const |
Gets the name of the neuronal network model. More... | |
const std::string & | getPrecision () const |
Gets the floating point numerical precision. More... | |
std::string | getTimePrecision () const |
Gets the floating point numerical precision used to represent time. More... | |
double | getDT () const |
Gets the model integration step size. More... | |
unsigned int | getSeed () const |
Get the random seed. More... | |
bool | isTimingEnabled () const |
Are timers and timing commands enabled. More... | |
unsigned int | getNumLocalNeurons () const |
How many neurons are simulated locally in this model. More... | |
unsigned int | getNumRemoteNeurons () const |
How many neurons are simulated remotely in this model. More... | |
unsigned int | getNumNeurons () const |
How many neurons make up the entire model. More... | |
NeuronGroup * | findNeuronGroup (const std::string &name) |
Find a neuron group by name. More... | |
template<typename NeuronModel > | |
NeuronGroup * | addNeuronPopulation (const std::string &name, unsigned int size, const NeuronModel *model, const typename NeuronModel::ParamValues ¶mValues, const typename NeuronModel::VarValues &varInitialisers, int hostID=0) |
Adds a new neuron group to the model using a neuron model managed by the user. More... | |
template<typename NeuronModel > | |
NeuronGroup * | addNeuronPopulation (const std::string &name, unsigned int size, const typename NeuronModel::ParamValues ¶mValues, const typename NeuronModel::VarValues &varInitialisers, int hostID=0) |
Adds a new neuron group to the model using a singleton neuron model created using standard DECLARE_MODEL and IMPLEMENT_MODEL macros. More... | |
SynapseGroup * | findSynapseGroup (const std::string &name) |
Find a synapse group by name. More... | |
template<typename WeightUpdateModel , typename PostsynapticModel > | |
SynapseGroup * | addSynapsePopulation (const std::string &name, SynapseMatrixType mtype, unsigned int delaySteps, const std::string &src, const std::string &trg, const WeightUpdateModel *wum, const typename WeightUpdateModel::ParamValues &weightParamValues, const typename WeightUpdateModel::VarValues &weightVarInitialisers, const typename WeightUpdateModel::PreVarValues &weightPreVarInitialisers, const typename WeightUpdateModel::PostVarValues &weightPostVarInitialisers, const PostsynapticModel *psm, const typename PostsynapticModel::ParamValues &postsynapticParamValues, const typename PostsynapticModel::VarValues &postsynapticVarInitialisers, const InitSparseConnectivitySnippet::Init &connectivityInitialiser=uninitialisedConnectivity()) |
Adds a synapse population to the model using weight update and postsynaptic models managed by the user. More... | |
template<typename WeightUpdateModel , typename PostsynapticModel > | |
SynapseGroup * | addSynapsePopulation (const std::string &name, SynapseMatrixType mtype, unsigned int delaySteps, const std::string &src, const std::string &trg, const typename WeightUpdateModel::ParamValues &weightParamValues, const typename WeightUpdateModel::VarValues &weightVarInitialisers, const typename PostsynapticModel::ParamValues &postsynapticParamValues, const typename PostsynapticModel::VarValues &postsynapticVarInitialisers, const InitSparseConnectivitySnippet::Init &connectivityInitialiser=uninitialisedConnectivity()) |
Adds a synapse population to the model using singleton weight update and postsynaptic models created using standard DECLARE_MODEL and IMPLEMENT_MODEL macros. More... | |
template<typename WeightUpdateModel , typename PostsynapticModel > | |
SynapseGroup * | addSynapsePopulation (const std::string &name, SynapseMatrixType mtype, unsigned int delaySteps, const std::string &src, const std::string &trg, const typename WeightUpdateModel::ParamValues &weightParamValues, const typename WeightUpdateModel::VarValues &weightVarInitialisers, const typename WeightUpdateModel::PreVarValues &weightPreVarInitialisers, const typename WeightUpdateModel::PostVarValues &weightPostVarInitialisers, const typename PostsynapticModel::ParamValues &postsynapticParamValues, const typename PostsynapticModel::VarValues &postsynapticVarInitialisers, const InitSparseConnectivitySnippet::Init &connectivityInitialiser=uninitialisedConnectivity()) |
Adds a synapse population to the model using singleton weight update and postsynaptic models created using standard DECLARE_MODEL and IMPLEMENT_MODEL macros. More... | |
CurrentSource * | findCurrentSource (const std::string &name) |
Find a current source by name. More... | |
template<typename CurrentSourceModel > | |
CurrentSource * | addCurrentSource (const std::string ¤tSourceName, const CurrentSourceModel *model, const std::string &targetNeuronGroupName, const typename CurrentSourceModel::ParamValues ¶mValues, const typename CurrentSourceModel::VarValues &varInitialisers) |
Adds a new current source to the model using a current source model managed by the user. More... | |
template<typename CurrentSourceModel > | |
CurrentSource * | addCurrentSource (const std::string ¤tSourceName, const std::string &targetNeuronGroupName, const typename CurrentSourceModel::ParamValues ¶mValues, const typename CurrentSourceModel::VarValues &varInitialisers) |
Adds a new current source to the model using a singleton current source model created using standard DECLARE_MODEL and IMPLEMENT_MODEL macros. More... | |
Protected Member Functions | |
void | finalize () |
Finalise model. More... | |
std::string | scalarExpr (double) const |
Get the string literal that should be used to represent a value in the model's floating-point type. More... | |
bool | zeroCopyInUse () const |
Are any variables in any populations in this model using zero-copy memory? More... | |
const std::map< std::string, NeuronGroupInternal > & | getLocalNeuronGroups () const |
Get std::map containing local named NeuronGroup objects in model. More... | |
const std::map< std::string, NeuronGroupInternal > & | getRemoteNeuronGroups () const |
Get std::map containing remote named NeuronGroup objects in model. More... | |
const std::map< std::string, SynapseGroupInternal > & | getLocalSynapseGroups () const |
Get std::map containing local named SynapseGroup objects in model. More... | |
const std::map< std::string, SynapseGroupInternal > & | getRemoteSynapseGroups () const |
Get std::map containing remote named SynapseGroup objects in model. More... | |
const std::map< std::string, CurrentSourceInternal > & | getLocalCurrentSources () const |
Get std::map containing local named CurrentSource objects in model. More... | |
const std::map< std::string, CurrentSourceInternal > & | getRemoteCurrentSources () const |
Get std::map containing remote named CurrentSource objects in model. More... | |
Object used for specifying a neuronal network model.
typedef std::map<std::string, NeuronGroupInternal>::value_type ModelSpec::NeuronGroupValueType |
typedef std::map<std::string, SynapseGroupInternal>::value_type ModelSpec::SynapseGroupValueType |
ModelSpec::ModelSpec | ( | ) |
|
delete |
ModelSpec::~ModelSpec | ( | ) |
|
inline |
Adds a new current source to the model using a current source model managed by the user.
CurrentSourceModel | type of current source model (derived from CurrentSourceModels::Base). |
currentSourceName | string containing unique name of current source. |
model | current source model to use for current source. |
targetNeuronGroupName | string name of the target neuron group |
paramValues | parameters for model wrapped in CurrentSourceModel::ParamValues object. |
varInitialisers | state variable initialiser snippets and parameters wrapped in CurrentSource::VarValues object. |
|
inline |
Adds a new current source to the model using a singleton current source model created using standard DECLARE_MODEL and IMPLEMENT_MODEL macros.
CurrentSourceModel | type of neuron model (derived from CurrentSourceModel::Base). |
currentSourceName | string containing unique name of current source. |
targetNeuronGroupName | string name of the target neuron group |
paramValues | parameters for model wrapped in CurrentSourceModel::ParamValues object. |
varInitialisers | state variable initialiser snippets and parameters wrapped in CurrentSourceModel::VarValues object. |
|
inline |
Adds a new neuron group to the model using a neuron model managed by the user.
NeuronModel | type of neuron model (derived from NeuronModels::Base). |
name | string containing unique name of neuron population. |
size | integer specifying how many neurons are in the population. |
model | neuron model to use for neuron group. |
paramValues | parameters for model wrapped in NeuronModel::ParamValues object. |
varInitialisers | state variable initialiser snippets and parameters wrapped in NeuronModel::VarValues object. |
hostID | if using MPI, the ID of the node to simulate this population on. |
|
inline |
Adds a new neuron group to the model using a singleton neuron model created using standard DECLARE_MODEL and IMPLEMENT_MODEL macros.
NeuronModel | type of neuron model (derived from NeuronModels::Base). |
name | string containing unique name of neuron population. |
size | integer specifying how many neurons are in the population. |
paramValues | parameters for model wrapped in NeuronModel::ParamValues object. |
varInitialisers | state variable initialiser snippets and parameters wrapped in NeuronModel::VarValues object. |
hostID | if using MPI, the ID of the node to simulate this population on. |
|
inline |
Adds a synapse population to the model using weight update and postsynaptic models managed by the user.
WeightUpdateModel | type of weight update model (derived from WeightUpdateModels::Base). |
PostsynapticModel | type of postsynaptic model (derived from PostsynapticModels::Base). |
name | string containing unique name of neuron population. |
mtype | how the synaptic matrix associated with this synapse population should be represented. |
delaySteps | integer specifying number of timesteps delay this synaptic connection should incur (or NO_DELAY for none) |
src | string specifying name of presynaptic (source) population |
trg | string specifying name of postsynaptic (target) population |
wum | weight update model to use for synapse group. |
weightParamValues | parameters for weight update model wrapped in WeightUpdateModel::ParamValues object. |
weightVarInitialisers | weight update model state variable initialiser snippets and parameters wrapped in WeightUpdateModel::VarValues object. |
weightPreVarInitialisers | weight update model presynaptic state variable initialiser snippets and parameters wrapped in WeightUpdateModel::VarValues object. |
weightPostVarInitialisers | weight update model postsynaptic state variable initialiser snippets and parameters wrapped in WeightUpdateModel::VarValues object. |
psm | postsynaptic model to use for synapse group. |
postsynapticParamValues | parameters for postsynaptic model wrapped in PostsynapticModel::ParamValues object. |
postsynapticVarInitialisers | postsynaptic model state variable initialiser snippets and parameters wrapped in NeuronModel::VarValues object. |
connectivityInitialiser | sparse connectivity initialisation snippet used to initialise connectivity for SynapseMatrixConnectivity::SPARSE or SynapseMatrixConnectivity::BITMASK. Typically wrapped with it's parameters using initConnectivity function |
|
inline |
Adds a synapse population to the model using singleton weight update and postsynaptic models created using standard DECLARE_MODEL and IMPLEMENT_MODEL macros.
WeightUpdateModel | type of weight update model (derived from WeightUpdateModels::Base). |
PostsynapticModel | type of postsynaptic model (derived from PostsynapticModels::Base). |
name | string containing unique name of neuron population. |
mtype | how the synaptic matrix associated with this synapse population should be represented. |
delaySteps | integer specifying number of timesteps delay this synaptic connection should incur (or NO_DELAY for none) |
src | string specifying name of presynaptic (source) population |
trg | string specifying name of postsynaptic (target) population |
weightParamValues | parameters for weight update model wrapped in WeightUpdateModel::ParamValues object. |
weightVarInitialisers | weight update model state variable initialiser snippets and parameters wrapped in WeightUpdateModel::VarValues object. |
postsynapticParamValues | parameters for postsynaptic model wrapped in PostsynapticModel::ParamValues object. |
postsynapticVarInitialisers | postsynaptic model state variable initialiser snippets and parameters wrapped in NeuronModel::VarValues object. |
connectivityInitialiser | sparse connectivity initialisation snippet used to initialise connectivity for SynapseMatrixConnectivity::SPARSE or SynapseMatrixConnectivity::BITMASK. Typically wrapped with it's parameters using initConnectivity function |
|
inline |
Adds a synapse population to the model using singleton weight update and postsynaptic models created using standard DECLARE_MODEL and IMPLEMENT_MODEL macros.
WeightUpdateModel | type of weight update model (derived from WeightUpdateModels::Base). |
PostsynapticModel | type of postsynaptic model (derived from PostsynapticModels::Base). |
name | string containing unique name of neuron population. |
mtype | how the synaptic matrix associated with this synapse population should be represented. |
delaySteps | integer specifying number of timesteps delay this synaptic connection should incur (or NO_DELAY for none) |
src | string specifying name of presynaptic (source) population |
trg | string specifying name of postsynaptic (target) population |
weightParamValues | parameters for weight update model wrapped in WeightUpdateModel::ParamValues object. |
weightVarInitialisers | weight update model per-synapse state variable initialiser snippets and parameters wrapped in WeightUpdateModel::VarValues object. |
weightPreVarInitialisers | weight update model presynaptic state variable initialiser snippets and parameters wrapped in WeightUpdateModel::VarValues object. |
weightPostVarInitialisers | weight update model postsynaptic state variable initialiser snippets and parameters wrapped in WeightUpdateModel::VarValues object. |
postsynapticParamValues | parameters for postsynaptic model wrapped in PostsynapticModel::ParamValues object. |
postsynapticVarInitialisers | postsynaptic model state variable initialiser snippets and parameters wrapped in NeuronModel::VarValues object. |
connectivityInitialiser | sparse connectivity initialisation snippet used to initialise connectivity for SynapseMatrixConnectivity::SPARSE or SynapseMatrixConnectivity::BITMASK. Typically wrapped with it's parameters using initConnectivity function |
|
protected |
Finalise model.
CurrentSource * ModelSpec::findCurrentSource | ( | const std::string & | name | ) |
Find a current source by name.
This function attempts to find an existing current source.
|
inline |
Find a neuron group by name.
SynapseGroup * ModelSpec::findSynapseGroup | ( | const std::string & | name | ) |
Find a synapse group by name.
|
inline |
Gets the model integration step size.
|
inlineprotected |
Get std::map containing local named CurrentSource objects in model.
|
inlineprotected |
Get std::map containing local named NeuronGroup objects in model.
|
inlineprotected |
Get std::map containing local named SynapseGroup objects in model.
|
inline |
Gets the name of the neuronal network model.
unsigned int ModelSpec::getNumLocalNeurons | ( | ) | const |
How many neurons are simulated locally in this model.
|
inline |
How many neurons make up the entire model.
unsigned int ModelSpec::getNumRemoteNeurons | ( | ) | const |
How many neurons are simulated remotely in this model.
|
inline |
Gets the floating point numerical precision.
|
inlineprotected |
Get std::map containing remote named CurrentSource objects in model.
|
inlineprotected |
Get std::map containing remote named NeuronGroup objects in model.
|
inlineprotected |
Get std::map containing remote named SynapseGroup objects in model.
|
inline |
Get the random seed.
std::string ModelSpec::getTimePrecision | ( | ) | const |
Gets the floating point numerical precision used to represent time.
|
inline |
Are timers and timing commands enabled.
|
protected |
Get the string literal that should be used to represent a value in the model's floating-point type.
|
inline |
What is the default location for model extra global parameters?
Historically, this was just left up to the user to handle
|
inline |
What is the default location for sparse synaptic connectivity?
Historically, everything was allocated on both the host AND device
|
inline |
What is the default location for model state variables?
Historically, everything was allocated on both the host AND device
|
inline |
Set the integration step size of the model.
|
inline |
Should compatible postsynaptic models and dendritic delay buffers be merged?
This can significantly reduce the cost of updating neuron population but means that per-synapse group inSyn arrays can not be retrieved
|
inline |
Method to set the neuronal network model name.
void ModelSpec::setPrecision | ( | FloatType | floattype | ) |
Set numerical precision for floating point.
This function sets the numerical precision of floating type variables. By default, it is GENN_GENN_FLOAT.
|
inline |
Set the random seed (disables automatic seeding if argument not 0).
|
inline |
Set numerical precision for time.
|
inline |
Set whether timers and timing commands are to be included.
|
protected |
Are any variables in any populations in this model using zero-copy memory?