Skip to content

Commit

Permalink
Merge pull request #434 from genn-team/4_5_0_release
Browse files Browse the repository at this point in the history
4.5.0 release
  • Loading branch information
neworderofjamie authored Jul 15, 2021
2 parents 4fc5df8 + a0e2862 commit 1d46a69
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 2 deletions.
28 changes: 28 additions & 0 deletions doxygen/09_ReleaseNotes.dox
Original file line number Diff line number Diff line change
@@ -1,4 +1,32 @@
/*! \page ReleaseNotes Release Notes
Release Notes for GeNN v4.5.0 (PyGeNN 0.4.5)
====
This release adds a number of significant new features to GeNN as well as several usability improvements for PyGeNN.
It also includes a number of bug fixes that have been identified since the 4.4.0 release.

User Side Changes
----
1. When performing inference on datasets, batching helps fill the GPU and improve performance. This could be previously achieved using "master" and "slave" synapse populations but this didn't scale well. Models can now be automatically batched using ``ModelSpec::setBatchSize`` or ``pygenn.genn_model.GeNNModel.batch_size``.
2. As well as more typical neuron, weight update, postsynaptic and current source models, you can now define custom update models which define a process which can be applied to any variable in the model. These can be used for e.g. resetting state variables or implementing optimisers for gradient-based learning (see \ref defining_custom_updates).
3. Model compilation and CUDA block size optimisation could be rather slow in previous versions. More work is still required in this area but, code will now only be re-generated if the model has actually changed and block sizes will only be re-optimised for modules which have changed. Rebuilding can be forced with the ``-f`` flag to ``genn-buildmodel`` or the ``force_rebuild`` flag to ``pygenn.GeNNModel.build``.
4. Binary PyGeNN wheels are now always built with Python 3.
5. To aid debugging, debug versions of PyGeNN can now be built (see \ref Debugging).
6. OpenCL performance on AMD devices is improved - this has only been tested on a Radeon RX 5700 XT so any feedback from users with other devices would be much appreciated.
7. Exceptions raised by GeNN are now correctly passed through PyGeNN to Python.
8. Spike times (and spike-like event times) can now be accessed, pushed and pulled from PyGeNN (see ``pygenn.genn_groups.NeuronGroup.spike_times``, ``pygenn.genn_groups.NeuronGroup.push_spike_times_to_device`` and ``pygenn.genn_groups.NeuronGroup.pull_spike_times_from_device`` )
9. On models where postsynaptic merging isn't enabled, the postsynaptic input current from a synapse group can now be accessed from PyGeNN via ``pygenn.genn_groups.SynapseGroup.in_syn``; and pushed and pulled with ``pygenn.genn_groups.SynapseGroup.push_in_syn_to_device`` and ``pygenn.genn_groups.SynapseGroup.pull_in_syn_from_device`` respectively.
10. Accessing extra global parameters from PyGeNN was previously rather cumbersome. Now, you don't need to manually pass a size to e.g. ``pygenn.genn_groups.NeuronGroup.pull_extra_global_param_from_device`` and, if you are using non-pointer extra global parameters, you no longer need to call e.g. ``pygenn.genn_groups.NeuronGroup.set_extra_global_param`` before loading your model.

Bug fixes:
----
1. ``cudaFree`` was incorrectly called twice on zero-copy variables, causing crashes on exit
2. Build in Izhikevich neurons incorrectly used auto-refractory mechanism, limiting their maximum firing rate
3. On Windows, 64-bit version of compiler is now always used
4. Fixed issues with CUDA 9.0 and 9.1 introduced in v4.4.0 release
5. Fixed race condition relating to accessing previous spike times
6. Fixed bug in column-wise connectivity initialisation
7. Fixed issue with ``binomialInverseCDF`` function (used for calculating the maximum row length of probabilistic connectivity) which could fail when using some parameter combinations

Release Notes for GeNN v4.4.0 (PyGeNN 0.4.4)
====
This release adds a number of significant new features to GeNN and expands the documentation to cover using GeNN from Python with PyGeNN.
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@
**backend_extension_kwargs))

setup(name = "pygenn",
version = "0.4.4",
version = "0.4.5",
packages = find_packages(),
package_data={"pygenn": package_data},

Expand Down
2 changes: 1 addition & 1 deletion version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.4.0
4.5.0

0 comments on commit 1d46a69

Please sign in to comment.