Skip to content

GeNN 5.0.0

Compare
Choose a tag to compare
@neworderofjamie neworderofjamie released this 22 Apr 13:06
· 125 commits to master since this release

Release Notes for GeNN 5.0.0

This is a very large update to GeNN that has fixed a large number of longstanding bugs and we hope will make GeNN easier to use and enable various exciting new features in the near future. The licence has also been switched from GPL to LGPL making it mildly more liberal by allowing PyGeNN to be used as a component in closed-source systems.

This release breaks backward compatibility so all models are likely to require updating but the documentation has also been completely re-done and the pre-release version is at https://genn-team.github.io/genn/documentation/5/. This includes a guide to updating existing models

New features

  • GeNN has a whole new code generator. This gives much better quality error messages to the user about syntax/typing errors in code strings and will enable use to do smarter optimisations in future but it does restrict user code to a well-defined subset of C99 (#595)**
  • As well as simulation kernels, GeNN 4.x generated large amounts of boilerpalte for allocating memory and copying from device to host. This resulted in very long compile times with large models. In GeNN 5 we have replaced this with a new runtime which reduces compilation time by around 10x on very large models (#602)
  • In GeNN 4.X, parameters were always "scalar" type. This resulted in poor code generation when these are used to store integers. Parameters now have types and can also be made dynamic to allow them to be changed at runtime (#607)
  • Weight update models now have postsynaptic spike-like events, allowing a wider class of learning rules to be implemented (#609)

Bug fixes

  • PyGeNN only really works with precision set to float (#289)
  • Refine global - register -global transfers (#55)
  • Avoiding creating unused variables enhancement (#47)
  • PyGeNN doesn't correctly handle neuron variables with delay slots (#393)
  • assign_external_pointer overrides should use explicitly sized integer types (#288)
  • Repeat of spike-like-event conditions in synapse code flawed (#379)
  • Dangerous conflict potential of user and system code (#385)
  • Accessing queued pre and postsynaptic weight update model variables (#402)
  • Linker-imposed model complexity limit on Windows (#408)
  • Got 'error: duplicate parameter name' when ./generate_run test in userproject/Izh_sparse_project bug (#416)
  • Issues with merging synapse groups where pre or postsynaptic neuron parameters are referenced (#566)
  • Presynaptic Synapse Variable undefined in Event Threshold Condition (#594)