31 : eventThresholdCode(e), supportCode(s), synapseStateInThresholdCode(egp), synapseGroup(sg)
59 if(synapseStateInThresholdCode) {
113 void setVarLocation(
const std::string &varName,
VarLocation loc);
118 void setExtraGlobalParamLocation(
const std::string ¶mName,
VarLocation loc);
129 const std::string &
getName()
const{
return m_Name; }
137 const std::vector<double> &
getParams()
const{
return m_Params; }
140 bool isSpikeTimeRequired()
const;
141 bool isPrevSpikeTimeRequired()
const;
142 bool isSpikeEventTimeRequired()
const;
143 bool isPrevSpikeEventTimeRequired()
const;
144 bool isTrueSpikeRequired()
const;
145 bool isSpikeEventRequired()
const;
149 bool isZeroCopyEnabled()
const;
170 VarLocation getVarLocation(
const std::string &varName)
const;
177 VarLocation getExtraGlobalParamLocation(
const std::string ¶mName)
const;
190 bool isSimRNGRequired()
const;
193 bool isInitRNGRequired()
const;
196 bool isRecordingEnabled()
const;
200 const std::vector<double> ¶ms,
const std::vector<Models::VarInit> &varInitialisers,
207 void checkNumDelaySlots(
unsigned int requiredDelay);
210 void updatePreVarQueues(
const std::string &code);
213 void updatePostVarQueues(
const std::string &code);
220 void initDerivedParams(
double dt);
223 void fusePrePostSynapses(
bool fusePSM,
bool fusePrePostWUM);
232 const std::vector<SynapseGroupInternal*> &
getInSyn()
const{
return m_InSyn; }
233 const std::vector<SynapseGroupInternal*> &
getFusedPSMInSyn()
const{
return m_FusedPSMInSyn; }
237 const std::vector<SynapseGroupInternal*> &
getOutSyn()
const{
return m_OutSyn; }
243 const std::vector<CurrentSourceInternal*> &
getCurrentSources()
const {
return m_CurrentSources; }
250 std::vector<SynapseGroupInternal*> getFusedInSynWithPostCode()
const;
253 std::vector<SynapseGroupInternal*> getFusedOutSynWithPreCode()
const;
256 std::vector<SynapseGroupInternal *> getFusedInSynWithPostVars()
const;
259 std::vector<SynapseGroupInternal *> getFusedOutSynWithPreVars()
const;
261 bool isVarQueueRequired(
const std::string &var)
const;
266 boost::uuids::detail::sha1::digest_type getHashDigest()
const;
270 boost::uuids::detail::sha1::digest_type getInitHashDigest()
const;
272 boost::uuids::detail::sha1::digest_type getSpikeQueueUpdateHashDigest()
const;
274 boost::uuids::detail::sha1::digest_type getPrevSpikeTimeUpdateHashDigest()
const;
276 boost::uuids::detail::sha1::digest_type getVarLocationHashDigest()
const;
283 void updateVarQueues(
const std::string &code,
const std::string &suffix);
288 const std::string m_Name;
290 const unsigned int m_NumNeurons;
293 const std::vector<double> m_Params;
294 std::vector<double> m_DerivedParams;
295 std::vector<Models::VarInit> m_VarInitialisers;
296 std::vector<SynapseGroupInternal*> m_InSyn;
297 std::vector<SynapseGroupInternal*> m_OutSyn;
298 std::vector<SynapseGroupInternal*> m_FusedPSMInSyn;
299 std::vector<SynapseGroupInternal *> m_FusedWUPostInSyn;
300 std::vector<SynapseGroupInternal *> m_FusedWUPreOutSyn;
301 std::vector<SynapseGroupInternal *> m_FusedPreOutputOutSyn;
302 std::set<SpikeEventThreshold> m_SpikeEventCondition;
303 unsigned int m_NumDelaySlots;
304 std::vector<CurrentSourceInternal*> m_CurrentSources;
307 std::vector<bool> m_VarQueueRequired;
328 std::vector<VarLocation> m_VarLocation;
331 std::vector<VarLocation> m_ExtraGlobalParamLocation;
334 bool m_SpikeRecordingEnabled;
337 bool m_SpikeEventRecordingEnabled;
Definition: neuronGroup.h:21
const std::vector< SynapseGroupInternal * > & getFusedWUPreOutSyn() const
Definition: neuronGroup.h:238
SpikeEventThreshold(const std::string &e, const std::string &s, bool egp, SynapseGroupInternal *sg)
Definition: neuronGroup.h:30
const bool synapseStateInThresholdCode
Definition: neuronGroup.h:37
bool isDelayRequired() const
Definition: neuronGroup.h:148
VarLocation
< Flags defining which memory space variables should be allocated in
Definition: variableMode.h:10
bool isSpikeRecordingEnabled() const
Is spike recording enabled for this population?
Definition: neuronGroup.h:184
unsigned int getNumNeurons() const
Gets number of neurons in group.
Definition: neuronGroup.h:132
void setSpikeLocation(VarLocation loc)
Set location of this neuron group's output spikes.
Definition: neuronGroup.h:89
const std::vector< SynapseGroupInternal * > & getFusedPreOutputOutSyn() const
Definition: neuronGroup.h:240
const std::vector< CurrentSourceInternal * > & getCurrentSources() const
Gets pointers to all current sources which provide input to this neuron group.
Definition: neuronGroup.h:243
#define GENN_EXPORT
Definition: gennExport.h:13
unsigned int getNumDelaySlots() const
Definition: neuronGroup.h:147
VarLocation getPrevSpikeEventTimeLocation() const
Get location of this neuron group's previous output spike-like-event times.
Definition: neuronGroup.h:167
VarLocation getExtraGlobalParamLocation(size_t index) const
Get location of neuron model extra global parameter by omdex.
Definition: neuronGroup.h:181
VarLocation getSpikeLocation() const
Get location of this neuron group's output spikes.
Definition: neuronGroup.h:152
void setSpikeTimeLocation(VarLocation loc)
Set location of this neuron group's output spike times.
Definition: neuronGroup.h:97
Structure used for storing spike event data.
Definition: neuronGroup.h:28
Definition: synapseGroupInternal.h:9
bool isVarQueueRequired(size_t index) const
Definition: neuronGroup.h:262
void setSpikeEventRecordingEnabled(bool enabled)
Enables and disable spike event recording for this population.
Definition: neuronGroup.h:124
const NeuronModels::Base * getNeuronModel() const
Gets the neuron model used by this group.
Definition: neuronGroup.h:135
SynapseGroupInternal * synapseGroup
Definition: neuronGroup.h:38
const std::vector< SynapseGroupInternal * > & getOutSyn() const
Gets pointers to all synapse groups emanating from this neuron group.
Definition: neuronGroup.h:237
void setSpikeRecordingEnabled(bool enabled)
Enables and disable spike recording for this population.
Definition: neuronGroup.h:121
const std::vector< SynapseGroupInternal * > & getFusedPSMInSyn() const
Definition: neuronGroup.h:233
const std::vector< double > & getParams() const
Definition: neuronGroup.h:137
bool isSpikeEventRecordingEnabled() const
Is spike event recording enabled for this population?
Definition: neuronGroup.h:187
const std::string supportCode
Definition: neuronGroup.h:36
const std::vector< SynapseGroupInternal * > & getFusedWUPostInSyn() const
Definition: neuronGroup.h:234
VarLocation getVarLocation(size_t index) const
Get location of neuron model state variable by index.
Definition: neuronGroup.h:173
VarLocation getSpikeTimeLocation() const
Get location of this neuron group's output spike times.
Definition: neuronGroup.h:158
void addOutSyn(SynapseGroupInternal *synapseGroup)
Definition: neuronGroup.h:218
VarLocation getPrevSpikeTimeLocation() const
Get location of this neuron group's previous output spike times.
Definition: neuronGroup.h:161
const std::string eventThresholdCode
Definition: neuronGroup.h:35
void setPrevSpikeTimeLocation(VarLocation loc)
Set location of this neuron group's previous output spike times.
Definition: neuronGroup.h:101
const std::vector< Models::VarInit > & getVarInitialisers() const
Definition: neuronGroup.h:138
const std::string & getName() const
Definition: neuronGroup.h:129
const std::vector< double > & getDerivedParams() const
Definition: neuronGroup.h:245
Base class for all neuron models.
Definition: neuronModels.h:32
const std::set< SpikeEventThreshold > & getSpikeEventCondition() const
Definition: neuronGroup.h:247
const std::vector< SynapseGroupInternal * > & getInSyn() const
Gets pointers to all synapse groups which provide input to this neuron group.
Definition: neuronGroup.h:232
void setSpikeEventLocation(VarLocation loc)
Set location of this neuron group's output spike events.
Definition: neuronGroup.h:93
void setSpikeEventTimeLocation(VarLocation loc)
Set location of this neuron group's output spike-like-event times.
Definition: neuronGroup.h:105
void addInSyn(SynapseGroupInternal *synapseGroup)
Definition: neuronGroup.h:217
VarLocation getSpikeEventTimeLocation() const
Get location of this neuron group's output spike-like-event times.
Definition: neuronGroup.h:164
VarLocation getSpikeEventLocation() const
Get location of this neuron group's output spike events.
Definition: neuronGroup.h:155
Definition: currentSourceInternal.h:9
void setPrevSpikeEventTimeLocation(VarLocation loc)
Set location of this neuron group's previous output spike-like-event times.
Definition: neuronGroup.h:109