TODO list
- add error checking in addNeuronPopulations:
- maximum number of neuron populations? Or estimating resources beyound what is done at code generation stage?
- check for missing minimal 1 neuron population?
- check for name equality of neuron populations and throw error message?
- add error checking for addSynapsePopulations:
- maximal number / resource checking?
- minimal number check - revisit, should 0 be allowed?
- check whether neuron populations exist.
- check for unique name
- There is a global flag int optimiseBlockSize= 1; this should be passed through to users or replaced by some approriate logic. This goes together with improving block size optimisation in my mind. (global.h)
- Is the macro for the number of predefined neuron types (NTYPENO in modelSpec.h) really necessary?
- #define SPK_THRESH 0.0f (in modelSpec.h) is this really the way to do it? User control? global settings somewhere?
- in modelSpec.cc: void NNmodel::initDerivedNeuronPara(unsigned int i)
- error checking for if it is called twice OR allowing multiple
- calls but setting DNP values by index instead of simply appending.
- GeNN currently only supports parameter-homogeneous populations of neurons. An interesting extension could be individual parameters (this is a major change though, as parameters would need to become variables in the CUDA angle of things (and stored in device memory?).
- Omissions in code documentation: ModelSpec.cc (does it need more details?)
- transition synapses from explicit standard models supported during code generation to more generic type that would allo user additions similar to the nModels vector for neurons
- If synapses are defined in a nSynapses vector, remove the explicit parameter numbers etc from modelSpec.h.
- If used through the BRIAN interface there is a lot of unnecessary computation that the compiler might not pick up in its own optimisations. E.g. when using exponential Euler, BRIAN produces something like:
lV * exp(-(
DT) / 0.01) - 40.0 * 0.001 + 40.0 * 0.001 * exp(-(
DT) / 0.01);
Here, DT is known at compile time, and hence could be a dependent parameter and fully explicit, as could be the entire- 40.0 * 0.001 + 40.0 * 0.001 * exp(-(
DT) / 0.01)
. We need to make an additional optimising step that identifies dependent parameters automatically. This could be a part of the genn device.py in the interface. Direct users of GeNN are responsible for their own designs.
-Make use of CURAND possible for Poisson neurons