Skip to content

Commit

Permalink
Merge pull request #552 from genn-team/4_8_0_release
Browse files Browse the repository at this point in the history
4.8.0 release
  • Loading branch information
neworderofjamie authored Oct 31, 2022
2 parents 459c220 + 40350e6 commit 5aa20a0
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 7 deletions.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ RUN apt-get update && \
RUN apt-get install -yq --no-install-recommends python3-dev python3-pip swig gosu nano

# Set CUDA environment variable
ENV CUDA_PATH=/usr/local/cuda-11.5
ENV CUDA_PATH=/usr/local/cuda

ENV GENN_PATH=/opt/genn

Expand Down
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,19 +108,23 @@ You can then build the GeNN container yourself or download it from Dockerhub.

### Building the container
The following command can be used from the GeNN source directory to build the GeNN container:

```bash
make docker-build
```

This builds a container tagged as ``genn:latest`` so, to use this container rather than downloading the prebuild one from dockerhub, just replace ``gennteam/genn:latest`` with ``genn:latest`` in the following instructions.
By default, the container image is based off the Ubuntu 20.04 image with CUDA 11.5 provided by NVIDIA but, if you want to use a different base image, for example to use the container on a machine with an older version of CUDA, you can invoke ``docker build`` directly and specify a different tag (listed on https://gitlab.com/nvidia/container-images/cuda/blob/master/doc/supported-tags.md) via the ``BASE`` build argument. For example to build using CUDA 11.3 you could run:
```bash
docker build --build-arg BASE=11.3.0-devel-ubuntu20.04 -t genn:latest_cuda_11_3 .
```

### Interactive mode
If you wish to use GeNN or PyGeNN interactively, you can launch a bash shell in the GeNN container using the following command:
```bash
docker run -it --gpus=all gennteam/genn:latest
```
You can also provide a final argument to launch a different executable e.g. ``/bin/sh`` to launch a dash shell.
**NOTE** PyGeNN is installed in the system Python 3 environment, the interpreter for which is launched with ``python3`` (rather than just ``python``) on Ubuntu 20.04.

### Accessing your files
When using the GeNN container you often want to access files on your host system.
Expand Down
4 changes: 2 additions & 2 deletions doxygen/02_Quickstart.dox
Original file line number Diff line number Diff line change
Expand Up @@ -181,15 +181,15 @@ completed to define a neuronal network model.
\endcode
\note
All provided examples and pre-defined model elements in GeNN work with
units of mV, ms, nF and muS. However, the choice of units is entirely
units of mV, ms, nF and uS. However, the choice of units is entirely
left to the user if custom model elements are used.

`MBody1.cc` shows a typical example of a model definition function. In
its core it contains calls to ModelSpec::addNeuronPopulation and
ModelSpec::addSynapsePopulation to build up the network. For a full range
of options for defining a network, refer to the \link UserManual User
Manual\endlink.

3. The programmer defines their own "simulation" code similar to
the code in `userproject/MBody1_project/model/MBody1Sim.cc`. In this code,

Expand Down
22 changes: 22 additions & 0 deletions doxygen/09_ReleaseNotes.dox
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
/*! \page ReleaseNotes Release Notes

Release Notes for GeNN 4.8.0
====
This release adds a number of significant new features to GeNN as well as including a number of bug fixes that have been identified since the 4.7.1 release.

User Side Changes
----
1. Custom updates extended to work on ``SynapseMatrixWeight::KERNEL`` weight update model variables.
2. Custom updates extended to perform reduction operations across neurons as well as batches (see \ref custom_update_neuron_reduction).
3. PyGeNN can now automatically find Visual Studio build tools using functionality in ``setuptools.msvc.msvc14_get_vc_env``
4. GeNN now comes with a fully-functional Docker image and releases will be distributed via <a href="https://hub.docker.com/repository/docker/gennteam/genn">Dockerhub</a> as well as existing channels. Special thanks to Edward Stevinson, James Turner and Benjamin Evans for their help on this (see the <a href="https://github.com/genn-team/genn/blob/master/README.md">README</a> for more information).

Bug fixes
---------
1. Fixed bug relating to merging of synapse groups which perform presynaptic "revInSyn" updates.
2. Added missing parameter to PyGeNN. pygenn.genn_model.create_custom_postsynaptic_class function so postsynaptic models with extra global parameters can be created.
3. Correctly substitute 0 for \$(batch) when using single-threaded CPU backend.
4. Fixed issues building PyGeNN with Visual Studio 2017.
6. Fixed bug where model might not be rebuilt if sparse connectivity initialisation snippet was changed.
7. Fixed longstanding bug in the ``gen_input_structured`` tool -- used by some userprojects -- where data was written outside of array bounds.
8. Fixed issue with debug mode of ``genn-builmodel.bat`` when used with single-threaded CPU backend.
9. Fixed issue where, if custom update models were the only part of a model that required an RNG for initialisation, one might not be instantiated.

Release Notes for GeNN v4.7.1
====
This release fixes a plethora of issues found in the 4.7.0 release and also includes an optimisation which could be very beneficial for some classes of model.
Expand Down
4 changes: 2 additions & 2 deletions doxygen/10_UserManual.dox
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ For convenience, \add_cpp_python_text{the methods this class should implement ca
referred to by \$(NAME), where NAME is the name of the variable as
defined in the vector varNames. The code may refer to the predefined
primitives `DT` for the
time step size and `$(Isyn)` for the total incoming synaptic current. It can also refer to a unique ID (within the population) using $(id).
time step size and \$(Isyn) for the total incoming synaptic current. It can also refer to a unique ID (within the population) using \$(id).
- \add_cpp_python_text{SET_THRESHOLD_CONDITION_CODE(THRESHOLD_CONDITION_CODE),`threshold_condition_code=THRESHOLD_CONDITION_CODE`} defines the condition for true spike detection.
- \add_cpp_python_text{SET_RESET_CODE(RESET_CODE),`reset_code=RESET_CODE`} defines code to be run after a true spike is emitted.
- \add_cpp_python_text{SET_PARAM_NAMES(),`param_names`} defines the names of the model parameters.
Expand Down Expand Up @@ -494,7 +494,7 @@ SET_SIM_CODE(
\add_toggle_code_python
sim_code="$(addToInSynDelay, $(inc), $(delay));"
\end_toggle_code
where, once again, `inc` is the magnitude of the input step to apply and `delay` is the length of the dendritic delay in timesteps. By implementing `delay` as a weight update model variable, heterogeneous synaptic delays can be implemented. For an example, see WeightUpdateModels::StaticPulseDendriticDelay for a simple synapse update model with heterogeneous dendritic delays.
where, once again, \$(inc) is the magnitude of the input step to apply and `delay` is the length of the dendritic delay in timesteps. By implementing `delay` as a weight update model variable, heterogeneous synaptic delays can be implemented. For an example, see WeightUpdateModels::StaticPulseDendriticDelay for a simple synapse update model with heterogeneous dendritic delays.
\note
When using dendritic delays, the <b>maximum</b> dendritic delay for a synapse populations must be specified using the `SynapseGroup::setMaxDendriticDelayTimesteps()` function.

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

0 comments on commit 5aa20a0

Please sign in to comment.