From bf34f98b9df3f0c15ed46089c3014ceaa03d4674 Mon Sep 17 00:00:00 2001 From: neworderofjamie Date: Mon, 24 Oct 2022 21:28:54 +0100 Subject: [PATCH 01/10] release notes --- doxygen/09_ReleaseNotes.dox | 22 ++++++++++++++++++++++ version.txt | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/doxygen/09_ReleaseNotes.dox b/doxygen/09_ReleaseNotes.dox index d4949cabab..0f981e70da 100644 --- a/doxygen/09_ReleaseNotes.dox +++ b/doxygen/09_ReleaseNotes.dox @@ -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::KERNELG`` 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 ``setuptools.msvc.msvc14_get_vc_env`` + + +Bug fixes +--------- +1. Fixed bug relating to merging of synapse groups which perform presynaptic 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 using Visual Studio 2017. +6. Fixed bug where model might not be rebuild if sparse connectivity initialisation snippet was changed. +7. Fixed longstanding bug in 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 using single-threaded CPU backend. +9. Fixed issue where, if only custom update models 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. diff --git a/version.txt b/version.txt index 7c66fca579..88f181192c 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -4.7.1 +4.8.0 From eb04d1ac6c90b2b2d8dfdf3bbec443d835625541 Mon Sep 17 00:00:00 2001 From: neworderofjamie Date: Mon, 24 Oct 2022 21:35:07 +0100 Subject: [PATCH 02/10] readme updates --- doxygen/02_Quickstart.dox | 4 ++-- doxygen/09_ReleaseNotes.dox | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doxygen/02_Quickstart.dox b/doxygen/02_Quickstart.dox index 9cecd52dc2..381d2ea368 100644 --- a/doxygen/02_Quickstart.dox +++ b/doxygen/02_Quickstart.dox @@ -181,7 +181,7 @@ 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 @@ -189,7 +189,7 @@ completed to define a neuronal network model. 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, diff --git a/doxygen/09_ReleaseNotes.dox b/doxygen/09_ReleaseNotes.dox index 0f981e70da..68512c3c25 100644 --- a/doxygen/09_ReleaseNotes.dox +++ b/doxygen/09_ReleaseNotes.dox @@ -6,7 +6,7 @@ This release adds a number of significant new features to GeNN as well as includ User Side Changes ---- -1. Custom updates extended to work on ``SynapseMatrixWeight::KERNELG`` weight update model variables. +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 ``setuptools.msvc.msvc14_get_vc_env`` @@ -18,8 +18,8 @@ Bug fixes 3. Correctly substitute 0 for \$(batch) when using single-threaded CPU backend. 4. Fixed issues building PyGeNN using Visual Studio 2017. 6. Fixed bug where model might not be rebuild if sparse connectivity initialisation snippet was changed. -7. Fixed longstanding bug in 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 using single-threaded CPU backend. +7. Fixed longstanding bug in ``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 using single-threaded CPU backend. 9. Fixed issue where, if only custom update models required an RNG for initialisation, one might not be instantiated. Release Notes for GeNN v4.7.1 From 25f4df4313d41ba5c6b2e0208ed241819ca5ecff Mon Sep 17 00:00:00 2001 From: neworderofjamie Date: Mon, 24 Oct 2022 21:38:21 +0100 Subject: [PATCH 03/10] tweaks --- doxygen/09_ReleaseNotes.dox | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doxygen/09_ReleaseNotes.dox b/doxygen/09_ReleaseNotes.dox index 68512c3c25..aae27933de 100644 --- a/doxygen/09_ReleaseNotes.dox +++ b/doxygen/09_ReleaseNotes.dox @@ -8,19 +8,19 @@ 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 ``setuptools.msvc.msvc14_get_vc_env`` +3. PyGeNN can now automatically find Visual Studio build tools using functionality in ``setuptools.msvc.msvc14_get_vc_env`` Bug fixes --------- -1. Fixed bug relating to merging of synapse groups which perform presynaptic updates. +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 using Visual Studio 2017. -6. Fixed bug where model might not be rebuild if sparse connectivity initialisation snippet was changed. -7. Fixed longstanding bug in ``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 using single-threaded CPU backend. -9. Fixed issue where, if only custom update models required an RNG for initialisation, one might not be instantiated. +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 ==== From 63dd59630609dc8d007d06743c3aa5ca354ed84d Mon Sep 17 00:00:00 2001 From: neworderofjamie Date: Thu, 27 Oct 2022 09:14:54 +0100 Subject: [PATCH 04/10] fixed instances of incorrectly escaped $(XX) syntax in user manual --- doxygen/10_UserManual.dox | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doxygen/10_UserManual.dox b/doxygen/10_UserManual.dox index e9d61bf880..3d82aee9d2 100644 --- a/doxygen/10_UserManual.dox +++ b/doxygen/10_UserManual.dox @@ -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. @@ -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 maximum dendritic delay for a synapse populations must be specified using the `SynapseGroup::setMaxDendriticDelayTimesteps()` function. From 75f2f0b515435b107fd51d49bf1be3bdaaaa5c53 Mon Sep 17 00:00:00 2001 From: neworderofjamie Date: Thu, 27 Oct 2022 17:48:11 +0100 Subject: [PATCH 05/10] release note updates --- doxygen/09_ReleaseNotes.dox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doxygen/09_ReleaseNotes.dox b/doxygen/09_ReleaseNotes.dox index aae27933de..e6ae3622ee 100644 --- a/doxygen/09_ReleaseNotes.dox +++ b/doxygen/09_ReleaseNotes.dox @@ -9,7 +9,7 @@ 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 Dockerhub as well as existing channels. Special thanks to Edward Stevinson, James Turner and Benjamin Evans for their help on this (see the README for more information). Bug fixes --------- From e932bab5232c0d70e8471c76df495706e48c4215 Mon Sep 17 00:00:00 2001 From: neworderofjamie Date: Fri, 28 Oct 2022 15:53:44 +0100 Subject: [PATCH 06/10] use symlink'd path to CUDA rather than versioned one --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 96953c017d..4299226826 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 From 92bd906492b61a78d7d5f874ffe199c9a6613dfa Mon Sep 17 00:00:00 2001 From: neworderofjamie Date: Fri, 28 Oct 2022 16:04:54 +0100 Subject: [PATCH 07/10] other CUDA versions --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 87dc22ed05..a485c4b1a3 100644 --- a/README.md +++ b/README.md @@ -108,12 +108,15 @@ 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 with an alternative tag (listed on https://gitlab.com/nvidia/container-images/cuda/blob/master/doc/supported-tags.md) specified via the ``BASE`` build argument: +```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: From a456ef6de15235da947170acec348489e64ffe39 Mon Sep 17 00:00:00 2001 From: neworderofjamie Date: Fri, 28 Oct 2022 16:08:09 +0100 Subject: [PATCH 08/10] words --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a485c4b1a3..a56f9da243 100644 --- a/README.md +++ b/README.md @@ -113,7 +113,7 @@ 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 with an alternative tag (listed on https://gitlab.com/nvidia/container-images/cuda/blob/master/doc/supported-tags.md) specified via the ``BASE`` build argument: +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: ```bash docker build --build-arg BASE=11.3.0-devel-ubuntu20.04 -t genn:latest_cuda_11_3 . ``` From 9721fac7424b73653afb6a04dab6ab8f91647ea9 Mon Sep 17 00:00:00 2001 From: neworderofjamie Date: Fri, 28 Oct 2022 16:08:39 +0100 Subject: [PATCH 09/10] words --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a56f9da243..1177f51ccb 100644 --- a/README.md +++ b/README.md @@ -113,7 +113,7 @@ 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: +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 . ``` From 40350e64acccd070bbd1d5ed8f15902fd8a5e6ea Mon Sep 17 00:00:00 2001 From: neworderofjamie Date: Mon, 31 Oct 2022 12:06:17 +0000 Subject: [PATCH 10/10] python note --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1177f51ccb..3d218ce2ea 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,7 @@ If you wish to use GeNN or PyGeNN interactively, you can launch a bash shell in 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.