|
| Backend (const std::string &scalarType, const Preferences &preferences) |
|
virtual void | genNeuronUpdate (CodeStream &os, const ModelSpecMerged &modelMerged, HostHandler preambleHandler, HostHandler pushEGPHandler) const override |
| Generate platform-specific function to update the state of all neurons. More...
|
|
virtual void | genSynapseUpdate (CodeStream &os, const ModelSpecMerged &modelMerged, HostHandler preambleHandler, HostHandler pushEGPHandler) const override |
| Generate platform-specific function to update the state of all synapses. More...
|
|
virtual void | genCustomUpdate (CodeStream &os, const ModelSpecMerged &modelMerged, HostHandler preambleHandler, HostHandler pushEGPHandler) const override |
| Generate platform-specific functions to perform custom updates. More...
|
|
virtual void | genInit (CodeStream &os, const ModelSpecMerged &modelMerged, HostHandler preambleHandler, HostHandler initPushEGPHandler, HostHandler initSparsePushEGPHandler) const override |
| Generate platform-specific function to initialise model. More...
|
|
virtual size_t | getSynapticMatrixRowStride (const SynapseGroupInternal &sg) const override |
| Gets the stride used to access synaptic matrix rows, taking into account sparse data structure, padding etc. More...
|
|
virtual void | genDefinitionsPreamble (CodeStream &os, const ModelSpecMerged &modelMerged) const override |
| Definitions is the usercode-facing header file for the generated code. This function generates a 'preamble' to this header file. More...
|
|
virtual void | genDefinitionsInternalPreamble (CodeStream &os, const ModelSpecMerged &modelMerged) const override |
| Definitions internal is the internal header file for the generated code. This function generates a 'preamble' to this header file. More...
|
|
virtual void | genRunnerPreamble (CodeStream &os, const ModelSpecMerged &modelMerged, const MemAlloc &memAlloc) const override |
|
virtual void | genAllocateMemPreamble (CodeStream &os, const ModelSpecMerged &modelMerged, const MemAlloc &memAlloc) const override |
|
virtual void | genFreeMemPreamble (CodeStream &os, const ModelSpecMerged &modelMerged) const override |
|
virtual void | genStepTimeFinalisePreamble (CodeStream &os, const ModelSpecMerged &modelMerged) const override |
| After all timestep logic is complete. More...
|
|
virtual void | genVariableDefinition (CodeStream &definitions, CodeStream &definitionsInternal, const std::string &type, const std::string &name, VarLocation loc) const override |
|
virtual void | genVariableImplementation (CodeStream &os, const std::string &type, const std::string &name, VarLocation loc) const override |
|
virtual void | genVariableAllocation (CodeStream &os, const std::string &type, const std::string &name, VarLocation loc, size_t count, MemAlloc &memAlloc) const override |
|
virtual void | genVariableFree (CodeStream &os, const std::string &name, VarLocation loc) const override |
|
virtual void | genExtraGlobalParamDefinition (CodeStream &definitions, CodeStream &definitionsInternal, const std::string &type, const std::string &name, VarLocation loc) const override |
|
virtual void | genExtraGlobalParamImplementation (CodeStream &os, const std::string &type, const std::string &name, VarLocation loc) const override |
|
virtual void | genExtraGlobalParamAllocation (CodeStream &os, const std::string &type, const std::string &name, VarLocation loc, const std::string &countVarName="count", const std::string &prefix="") const override |
|
virtual void | genExtraGlobalParamPush (CodeStream &os, const std::string &type, const std::string &name, VarLocation loc, const std::string &countVarName="count", const std::string &prefix="") const override |
|
virtual void | genExtraGlobalParamPull (CodeStream &os, const std::string &type, const std::string &name, VarLocation loc, const std::string &countVarName="count", const std::string &prefix="") const override |
|
virtual void | genMergedExtraGlobalParamPush (CodeStream &os, const std::string &suffix, size_t mergedGroupIdx, const std::string &groupIdx, const std::string &fieldName, const std::string &egpName) const override |
| ! Generate code for pushing an updated EGP value into the merged group structure on 'device' More...
|
|
virtual std::string | getMergedGroupFieldHostType (const std::string &type) const override |
| When generating function calls to push to merged groups, backend without equivalent of Unified Virtual Addressing e.g. OpenCL 1.2 may use different types on host. More...
|
|
virtual std::string | getMergedGroupSimRNGType () const override |
| When generating merged structures what type to use for simulation RNGs. More...
|
|
virtual void | genPopVariableInit (CodeStream &os, const Substitutions &kernelSubs, Handler handler) const override |
|
virtual void | genVariableInit (CodeStream &os, const std::string &count, const std::string &indexVarName, const Substitutions &kernelSubs, Handler handler) const override |
|
virtual void | genSparseSynapseVariableRowInit (CodeStream &os, const Substitutions &kernelSubs, Handler handler) const override |
|
virtual void | genDenseSynapseVariableRowInit (CodeStream &os, const Substitutions &kernelSubs, Handler handler) const override |
|
virtual void | genKernelSynapseVariableInit (CodeStream &os, const SynapseInitGroupMerged &sg, const Substitutions &kernelSubs, Handler handler) const final |
|
virtual void | genKernelCustomUpdateVariableInit (CodeStream &os, const CustomWUUpdateInitGroupMerged &cu, const Substitutions &kernelSubs, Handler handler) const final |
|
virtual void | genVariablePush (CodeStream &os, const std::string &type, const std::string &name, VarLocation loc, bool autoInitialized, size_t count) const override |
| Generate code for pushing a variable to the 'device'. More...
|
|
virtual void | genVariablePull (CodeStream &os, const std::string &type, const std::string &name, VarLocation loc, size_t count) const override |
| Generate code for pulling a variable from the 'device'. More...
|
|
virtual void | genCurrentVariablePush (CodeStream &os, const NeuronGroupInternal &ng, const std::string &type, const std::string &name, VarLocation loc, unsigned int batchSize) const override |
| Generate code for pushing a variable's value in the current timestep to the 'device'. More...
|
|
virtual void | genCurrentVariablePull (CodeStream &os, const NeuronGroupInternal &ng, const std::string &type, const std::string &name, VarLocation loc, unsigned int batchSize) const override |
| Generate code for pulling a variable's value in the current timestep from the 'device'. More...
|
|
virtual void | genCurrentTrueSpikePush (CodeStream &os, const NeuronGroupInternal &ng, unsigned int batchSize) const override |
| Generate code for pushing true spikes emitted by a neuron group in the current timestep to the 'device'. More...
|
|
virtual void | genCurrentTrueSpikePull (CodeStream &os, const NeuronGroupInternal &ng, unsigned int batchSize) const override |
| Generate code for pulling true spikes emitted by a neuron group in the current timestep from the 'device'. More...
|
|
virtual void | genCurrentSpikeLikeEventPush (CodeStream &os, const NeuronGroupInternal &ng, unsigned int batchSize) const override |
| Generate code for pushing spike-like events emitted by a neuron group in the current timestep to the 'device'. More...
|
|
virtual void | genCurrentSpikeLikeEventPull (CodeStream &os, const NeuronGroupInternal &ng, unsigned int batchSize) const override |
| Generate code for pulling spike-like events emitted by a neuron group in the current timestep from the 'device'. More...
|
|
virtual void | genGlobalDeviceRNG (CodeStream &definitions, CodeStream &definitionsInternal, CodeStream &runner, CodeStream &allocations, CodeStream &free, MemAlloc &memAlloc) const override |
| Generate a single RNG instance. More...
|
|
virtual void | genPopulationRNG (CodeStream &definitions, CodeStream &definitionsInternal, CodeStream &runner, CodeStream &allocations, CodeStream &free, const std::string &name, size_t count, MemAlloc &memAlloc) const override |
| Generate an RNG with a state per population member. More...
|
|
virtual void | genTimer (CodeStream &definitions, CodeStream &definitionsInternal, CodeStream &runner, CodeStream &allocations, CodeStream &free, CodeStream &stepTimeFinalise, const std::string &name, bool updateInStepTime) const override |
|
virtual void | genReturnFreeDeviceMemoryBytes (CodeStream &os) const override |
| Generate code to return amount of free 'device' memory in bytes. More...
|
|
virtual void | genMakefilePreamble (std::ostream &os) const override |
| This function can be used to generate a preamble for the GNU makefile used to build. More...
|
|
virtual void | genMakefileLinkRule (std::ostream &os) const override |
|
virtual void | genMakefileCompileRule (std::ostream &os) const override |
|
virtual void | genMSBuildConfigProperties (std::ostream &os) const override |
|
virtual void | genMSBuildImportProps (std::ostream &os) const override |
|
virtual void | genMSBuildItemDefinitions (std::ostream &os) const override |
|
virtual void | genMSBuildCompileModule (const std::string &moduleName, std::ostream &os) const override |
|
virtual void | genMSBuildImportTarget (std::ostream &os) const override |
|
virtual std::string | getDeviceVarPrefix () const override |
|
virtual bool | isDeviceScalarRequired () const override |
| Should 'scalar' variables be implemented on device or can host variables be used directly? More...
|
|
virtual bool | isGlobalHostRNGRequired (const ModelSpecMerged &modelMerged) const override |
| Different backends use different RNGs for different things. Does this one require a global host RNG for the specified model? More...
|
|
virtual bool | isGlobalDeviceRNGRequired (const ModelSpecMerged &modelMerged) const override |
| Different backends use different RNGs for different things. Does this one require a global device RNG for the specified model? More...
|
|
virtual bool | isPopulationRNGRequired () const override |
| Different backends use different RNGs for different things. Does this one require population RNGs? More...
|
|
virtual bool | isPopulationRNGInitialisedOnDevice () const override |
| Different backends seed RNGs in different ways. Does this one initialise population RNGS on device? More...
|
|
virtual bool | isPostsynapticRemapRequired () const override |
| Different backends may implement synaptic plasticity differently. Does this one require a postsynaptic remapping data structure? More...
|
|
virtual bool | isHostReductionRequired () const override |
| Backends which support batch-parallelism might require an additional host reduction phase after reduction kernels. More...
|
|
virtual size_t | getDeviceMemoryBytes () const override |
| How many bytes of memory does 'device' have. More...
|
|
virtual MemorySpaces | getMergedGroupMemorySpaces (const ModelSpecMerged &modelMerged) const override |
|
virtual bool | supportsNamespace () const override |
| Does this backend support namespaces i.e. can C++ implementation of support functions be used. More...
|
|
virtual boost::uuids::detail::sha1::digest_type | getHashDigest () const override |
| Get hash digest of this backends identification and the preferences it has been configured with. More...
|
|
| BackendBase (const std::string &scalarType, const PreferencesBase &preferences) |
|
virtual | ~BackendBase () |
|
virtual std::string | getAllocateMemParams (const ModelSpecMerged &) const |
| Get backend-specific allocate memory parameters. More...
|
|
virtual std::vector< filesystem::path > | getFilesToCopy (const ModelSpecMerged &) const |
| Get list of files to copy into generated code. More...
|
|
virtual std::string | getHostVarPrefix () const |
|
virtual std::string | getPointerPrefix () const |
| Different backends may have different or no pointer prefix (e.g. __global for OpenCL) More...
|
|
void | genVariablePushPull (CodeStream &push, CodeStream &pull, const std::string &type, const std::string &name, VarLocation loc, bool autoInitialized, size_t count) const |
| Helper function to generate matching push and pull functions for a variable. More...
|
|
void | genCurrentVariablePushPull (CodeStream &push, CodeStream &pull, const NeuronGroupInternal &ng, const std::string &type, const std::string &name, VarLocation loc, unsigned int batchSize) const |
| Helper function to generate matching push and pull functions for the current state of a variable. More...
|
|
void | genArray (CodeStream &definitions, CodeStream &definitionsInternal, CodeStream &runner, CodeStream &allocations, CodeStream &free, const std::string &type, const std::string &name, VarLocation loc, size_t count, MemAlloc &memAlloc) const |
| Helper function to generate matching definition, declaration, allocation and free code for an array. More...
|
|
size_t | getSize (const std::string &type) const |
| Get the size of the type. More...
|
|
std::string | getLowestValue (const std::string &type) const |
| Get the lowest value of a type. More...
|
|
std::string | getScalarAddressPrefix () const |
| Get the prefix for accessing the address of 'scalar' variables. More...
|
|
bool | areSixtyFourBitSynapseIndicesRequired (const SynapseGroupMergedBase &sg) const |
|
const PreferencesBase & | getPreferences () const |
|
template<typename T > |
const T & | getPreferences () const |
|