GeNN  1.1
GPU enhanced Neuronal Networks (GeNN)
 All Classes Files Functions Variables Typedefs Macros Pages
TODO list

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
    exp(-(DT) / 0.01)
    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