Skip to content

Commit 83cca4a

Browse files
authored
Merge branch 'master' into nest-server-reqs
2 parents d994ac6 + f495b3e commit 83cca4a

File tree

89 files changed

+423
-372
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+423
-372
lines changed

README.md

Lines changed: 57 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
[![Ubuntu version](https://img.shields.io/badge/ubuntu-(PPA)-blue?logo=debian)](https://nest-simulator.readthedocs.io/en/latest/installation/)
1414
[![Fedora package](https://img.shields.io/fedora/v/nest?logo=fedora)](https://src.fedoraproject.org/rpms/nest)
15-
[![Conda version](https://img.shields.io/conda/vn/conda-forge/nest-simulator.svg?logo=conda-forge&logoColor=white)](https://anaconda.org/conda-forge/nest-simulator)
15+
[![conda-forge version](https://img.shields.io/conda/vn/conda-forge/nest-simulator.svg?logo=conda-forge&logoColor=white)](https://anaconda.org/conda-forge/nest-simulator)
1616
[![Homebrew version](https://img.shields.io/homebrew/v/nest.svg?logo=apple)](https://formulae.brew.sh/formula/nest)
1717
[![Docker Image Version](https://img.shields.io/docker/v/nest/nest-simulator?color=blue&label=docker&logo=docker&logoColor=white&sort=semver)](https://hub.docker.com/r/nest/nest-simulator)
1818
[![Virtual applicance](https://img.shields.io/badge/VM-v3.7-blue?logo=CodeSandbox)](https://nest-simulator.readthedocs.io/en/latest/installation/livemedia.html#live-media)
@@ -22,110 +22,81 @@
2222

2323
NEST is a simulator for spiking neural network models that focuses on the
2424
dynamics, size and structure of neural systems rather than on the exact
25-
morphology of individual neurons. The development of NEST is coordinated by the
26-
NEST Initiative. General information on the NEST Initiative can be found at
27-
its homepage at https://www.nest-initiative.org.
25+
morphology of individual neurons.
26+
27+
A NEST simulation tries to follow the logic of an electrophysiological
28+
experiment that takes place inside a computer with the difference that the
29+
neural system to be investigated must be defined by the experimenter.
2830

2931
NEST is ideal for networks of spiking neurons of any size, for example:
3032

31-
- Models of information processing e.g. in the visual or auditory cortex of
33+
- Models of information processing, e.g., in the visual or auditory cortex of
3234
mammals,
33-
- Models of network activity dynamics, e.g. laminar cortical networks or
35+
- Models of network activity dynamics, e.g., laminar cortical networks or
3436
balanced random networks,
3537
- Models of learning and plasticity.
3638

37-
For copyright information please refer to the `LICENSE` file and to the
38-
information header in the source files.
39+
## Key features of NEST
3940

40-
## How do I use NEST?
41+
* NEST provides a Python interface or a stand-alone application
42+
* NEST provides a large collection of [neurons and synapse models](https://nest-simulator.org/documentation/models/index.html)
43+
* NEST provides numerous [example network scripts](https://nest-simulator.org/documentation/examples/index.html) along with
44+
[tutorials and guides](https://nest-simulator.org/documentation/get-started_index.html) to help you develop your simulation
45+
* NEST has a large community of experienced developers and users; NEST was first released in 1994 under the name SYNOD, and has been extended and improved ever since
46+
* NEST is extensible: you can extend NEST by adding your own modules
47+
* NEST is scalable: Use NEST on your laptop or the largest supercomputers
48+
* NEST is memory efficient: It makes the best use of your multi-core computer and compute clusters with minimal user intervention
49+
* NEST is an open source project and is licensed under the GNU General Public License v2 or later
50+
* NEST employs continuous integration workflows in order to maintain high code quality standards for correct and reproducible simulations
4151

42-
You can use NEST either via Python (PyNEST) or as a stand-alone application
43-
(nest). PyNEST provides a set of commands to the Python interpreter which give
44-
you access to NEST's simulation kernel. With these commands, you describe and
45-
run your network simulation. You can also complement PyNEST with PyNN, a
46-
simulator-independent set of Python commands to formulate and run neural
47-
simulations. While you define your simulations in Python, the actual simulation
48-
is executed within NEST's highly optimized simulation kernel which is written
49-
in C++.
5052

51-
A NEST simulation tries to follow the logic of an electrophysiological
52-
experiment that takes place inside a computer with the difference, that the
53-
neural system to be investigated must be defined by the experimenter.
53+
## Documentation
5454

55-
The neural system is defined by a possibly large number of neurons and their
56-
connections. In a NEST network, different neuron and synapse models can
57-
coexist. Any two neurons can have multiple connections with different
58-
properties. Thus, the connectivity can in general not be described by a weight
59-
or connectivity matrix but rather as an adjacency list.
60-
61-
To manipulate or observe the network dynamics, the experimenter can define
62-
so-called devices which represent the various instruments (for measuring and
63-
stimulation) found in an experiment. These devices write their data either to
64-
memory or to file.
65-
66-
NEST is extensible and new models for neurons, synapses, and devices can be
67-
added.
68-
69-
To get started with NEST, please see the [Documentation Page for
70-
Tutorials](https://www.nest-simulator.org/documentation/).
71-
72-
## Why should I use NEST?
73-
74-
To learn more about the capabilities of NEST, please read the complete [feature
75-
summary](https://www.nest-simulator.org/features/).
76-
77-
- NEST provides over 50 neuron models many of which have been published. Choose
78-
from simple integrate-and-fire neurons with current or conductance based
79-
synapses, over the Izhikevich or AdEx models, to Hodgkin-Huxley models.
80-
- NEST provides over 10 synapse models, including short-term plasticity
81-
(Tsodyks & Markram) and different variants of spike-timing dependent
82-
plasticity (STDP).
83-
- NEST provides many examples that help you getting started with your own
84-
simulation project.
85-
- NEST offers convenient and efficient commands to define and connect large
86-
networks, ranging from algorithmically determined connections to data-driven
87-
connectivity.
88-
- NEST lets you inspect and modify the state of each neuron and each connection
89-
at any time during a simulation.
90-
- NEST is fast and memory efficient. It makes best use of your multi-core
91-
computer and compute clusters with minimal user intervention.
92-
- NEST runs on a wide range of UNIX-like systems, from MacBooks to
93-
supercomputers.
94-
- NEST has minimal dependencies. All it really needs is a C++ compiler.
95-
Everything else is optional.
96-
- NEST developers are using agile continuous integration-based workflows in
97-
order to maintain high code quality standards for correct and reproducible
98-
simulations.
99-
- NEST has one of the largest and most experienced developer communities of all
100-
neural simulators. NEST was first released in 1994 under the name SYNOD and
101-
has been extended and improved ever since.
55+
Please visit our [online documentation](https://nest-simulator.org/documentation) for details on installing and using NEST.
10256

103-
## License
10457

105-
NEST is open source software and is licensed under the [GNU General Public
106-
License v2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) or
107-
later.
58+
## Cite NEST
59+
60+
If you use NEST as part of your research, please cite the *version* of NEST you used.
61+
The full citation for each release can be found on [Zenodo](https://zenodo.org/search?q=title%3ANEST%20AND%20-description%3Agraphical%20AND%20simulator&l=list&p=1&s=10&sort=publication-desc)
62+
63+
For general citations, please use
64+
65+
`Gewaltig M-O & Diesmann M (2007) NEST (Neural Simulation Tool) Scholarpedia 2(4):1430.`
66+
67+
## Contact
10868

109-
## Installing NEST
11069

111-
Please see the online [NEST Installation Instructions](http://www.nest-simulator.org/installation)
112-
to find out how to install NEST.
70+
If you need help or would like to discuss an idea or issue,
71+
join our [maling list](https://nest-simulator.org/documentation/developer_space/guidelines/mailing_list_guidelines.html),
72+
where we encourage active participation from our developers and users to share their knowledge and experience with NEST.
11373

114-
## Getting help
11574

116-
- You can run the `help` command in the NEST interpreter to find documentation
117-
and learn more about available commands.
118-
- For queries regarding NEST usage, please use the [NEST users mailing
119-
list](https://www.nest-initiative.org/mailinglist/).
120-
- Information on the Python bindings to NEST can be found in
121-
`${prefix}/share/doc/nest/README.md`.
122-
- For those looking to extend NEST, developer documentation on [Contributing to
123-
NEST](https://nest-simulator.readthedocs.io/en/latest/contribute/index.html) is available.
75+
You can find other [ways to get in touch here](https://nest-simulator.org/documentation/community.html).
12476

125-
## Citing NEST
12677

127-
Please cite NEST if you use it in your work.
78+
## Contribute
12879

129-
- You can find all the information for [citing NEST here](https://nest-simulator.readthedocs.io/en/latest/citing-nest.html)
80+
NEST is built on an active community and we welcome contributions to our code and documentation.
13081

13182

83+
For bug reports, feature requests, documentation improvements, or other issues,
84+
you can create a [GitHub issue](https://github.com/nest/nest-simulator/issues/new/choose),
85+
86+
For working with NEST code and documentation, you can find guidelines for contributions
87+
[in our documentation](https://nest-simulator.org/documentation/developer_space/index.html#contribute-to-nest)
88+
89+
90+
## Publications
91+
92+
You can find a list of NEST [related publications here](https://www.nest-simulator.org/publications/).
93+
94+
## License
95+
96+
97+
NEST is open source software and is licensed under the [GNU General Public
98+
License v2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) or
99+
later.
100+
101+
General information on the NEST Initiative can be found at
102+
its homepage at https://www.nest-initiative.org.

bin/nest-server-mpi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,4 @@ else:
7373
continue
7474

7575
log(call_name, f"sending reponse gather, data={response}")
76-
comm.gather(nest.serializable(response), root=0)
76+
comm.gather(nest.serialize_data(response), root=0)

doc/htmldoc/benchmark_results.rst

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,13 @@ Strong scaling experiment of the Multi-area-model [5]_
4444
:class: sd-align-major-center
4545
:columns: 10
4646

47-
.. image:: /static/img/mam_benchmark.png
47+
Dynamical regime: Ground state
48+
49+
.. image:: /static/img/mam_ground-state_benchmark.png
50+
51+
Dynamical regime: Metastable state
52+
53+
.. image:: /static/img/mam_metastable-state_benchmark.png
4854

4955

5056
.. grid:: 1 1 1 1
@@ -54,6 +60,7 @@ Strong scaling experiment of the Multi-area-model [5]_
5460
:class: sd-align-minor-center
5561

5662
* The model has ~4.1 million neurons and ~24 billion synapses, minimal delay 0.1 ms
63+
* It can be run in two different dynamical regimes: the ground state and the metastable state [5]_.
5764
* 2 MPI processes per node, 64 threads per MPI process
5865
* Steady decrease of run time with additional compute resources
5966
* Data averaged over 3 runs with different seeds, error bars indicate standard deviation

doc/htmldoc/developer_space/guidelines/mailing_list_guidelines.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ please follow the guidelines below:
3030

3131
* the steps you took that lead to the problem.
3232
* the specific error messages you get.
33-
* relevant system and version information (e.g., Ubuntu 22.04/ NEST 3.5 installed using the Conda package).
33+
* relevant system and version information (e.g., Ubuntu 22.04/ NEST 3.8 installed using the conda-forge package).
3434

3535
#. Keep topics separate.
3636

doc/htmldoc/developer_space/workflows/documentation_workflow/user_documentation_workflow.rst

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,30 +84,38 @@ If you have not done so alrealdy first
8484
Set up your environment
8585
~~~~~~~~~~~~~~~~~~~~~~~
8686

87-
Using the Conda package (includes everything to build NEST, including documentation)
88-
````````````````````````````````````````````````````````````````````````````````````
87+
Using the conda-forge package (includes everything to build NEST, including documentation)
88+
```````````````````````````````````````````````````````````````````````````````````````````
8989

90-
For details on Conda, see :ref:`conda_tips`
90+
For details on installation see :ref:`conda_forge_install`
9191

9292
.. code-block:: bash
9393
9494
cd <nest_source_dir>/
95-
conda env create -p conda/
96-
conda activate conda/
95+
mamba env create -p mamba/
96+
mamba activate mamba/
9797
9898
If you later on want to deactivate or delete the build environment:
9999

100100
.. code-block:: bash
101101
102-
conda deactivate
103-
rm -rf conda/
102+
mamba deactivate
103+
rm -rf mamba/
104104
105105
Using pip (includes packages for documentation only)
106106
````````````````````````````````````````````````````
107107

108108
If you want to install only a minimal set of packages for building the
109109
documentation and avoid using Conda, you can use pip:
110110

111+
Create and activate a Python virtual environment:
112+
113+
.. code-block:: bash
114+
115+
python -m venv <myvenv>
116+
117+
source <myvenv>/bin/activate
118+
111119
.. code-block:: bash
112120
113121
pip3 install -r <nest_source_dir>/doc/requirements.txt

doc/htmldoc/developer_space/workflows/nest_with_ides.rst

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Requirements and limitations
2525
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2626

2727
* Focus on single build configuration
28-
* Assumes all dependencies (OpenMPI, GSL, etc) installed in a Conda environment
28+
* Assumes all dependencies (OpenMPI, GSL, etc) installed in a Mamba environment
2929
* Does not support debugging on macOS (because Eclipse does not support lldb)
3030
* Does not read the NEST `.clang-format` file, so code formatting may
3131
be incorrect
@@ -62,25 +62,25 @@ Setting up the project
6262
#. Right click the project and choose ``Properties`` from the context
6363
menu
6464

65-
a. Under ``C/C++ Build/Build Variables``, define ``BUILD_DIR`` and ``CONDA_ENV``,
65+
a. Under ``C/C++ Build/Build Variables``, define ``BUILD_DIR`` and ``MAMBA_ENV``,
6666
both of type ``Path``. The first should contain the full path to the build
67-
directory you created above, the second the full path to your conda
68-
environment, usually something like ``.../miniconda3/envs/nest-dev``.
67+
directory you created above, the second the full path to your mamba
68+
environment, usually something like ``.../mamba/envs/nest-dev``.
6969
#. Under ``C/C++ Build – [Tab] Builder Settings``,
7070

7171
#. uncheck ``Use default build command``
7272
#. set ``Build Command`` to ``make -k -j4 all install`` (adjust
7373
number of processes to your situation)
7474
#. set ``Build Directory`` to ``${BUILD_DIR}``
7575
#. Under ``C/C++ Build > Environment``, prepend
76-
``${CONDA_ENV}/bin`` to ``PATH``
76+
``${MAMBA_ENV}/bin`` to ``PATH``
7777
#. Under ``C/C++ General > Paths and Symbols – [Tab] Includes``, add the
7878
following two direcories
7979

8080
* ``${BUILD_DIR}/libnestutil`` (contains ``config.h``)
81-
* ``${CONDA_ENV}/include`` (all headers from packages provided in conda environment)
81+
* ``${mamba_env}/include`` (all headers from packages provided in Mamba environment)
8282
#. Under ``PyDev - Interpreter/Grammar``, choose the interpreter from
83-
your Conda environment (you may need to add it by following the
83+
your Mamba environment (you may need to add it by following the
8484
``Click here to configure an interpreter not listed`` link and
8585
then ``Browse for python/pypy exe`` (this temporarily takes you
8686
to the global Eclipse preferences in a separate window).
@@ -261,7 +261,7 @@ We need several packages installed, before we can become productive with NEST:
261261
* gsl
262262
* cmake
263263
* libtool
264-
* ipython, python, cython, ... The best way to install all the python requirements is to use `Anaconda <https://store.continuum.io/cshop/anaconda/>`_.
264+
* ipython, python, cython, ... The best way to install all the python requirements is to use `Mamba <https://mamba.readthedocs.io/en/latest/index.html/>`_.
265265

266266
We present two ways to install the rest: MacPorts and Homebrew. For both versions you need to have Xcode and Xcode command line tools installed:
267267

doc/htmldoc/faqs/qa-precise-spike-times.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ Questions and answers about precise neurons
140140
13. Q: **What is the rate at which spikes are missed in a typical
141141
large-scale neuronal network simulation of integrate-and-fire model
142142
neurons with linear subthreshold dynamics in the balanced state and
143-
a spike rate of around 10 Hz**?
143+
a spike rate of around 10 spks/s**?
144144

145145
A: At a typical parameter setting for a simulation with around 10,000
146146
neurons and 15 million synapses, the total rate at which spikes are

doc/htmldoc/get-started_index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ More topics
226226
Simulation behavior <nest_behavior/running_simulations>
227227
Randomness in NEST <nest_behavior/random_numbers>
228228
Built-in timers <nest_behavior/built-in_timers>
229-
Connect NEST with other tools <connect_nest/index>
229+
Connect NEST with other tools <interface_nest/index>
230230
From NEST 2.x to 3.x <whats_new/v3.0/refguide_nest2_nest3>
231231

232232
.. toctree::

doc/htmldoc/hpc/slurm_script.rst

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ In this example, we are using 1 node, which contains 2 sockets and 64 cores per
4242
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
4343
export OMP_PROC_BIND=TRUE
4444
45+
# Optional
46+
python -c "import nest, subprocess as s, os; s.check_call(['/usr/bin/pldd', str(os.getpid())])" 2>&1 | tee -a "pldd-nest.out"
4547
4648
# On some systems, MPI is run by SLURM
4749
srun --exclusive python3 my_nest_simulation.py
@@ -174,6 +176,21 @@ will prevent the threads from moving around.
174176

175177
|
176178
179+
::
180+
181+
python -c "import nest, subprocess as s, os; s.check_call(['/usr/bin/pldd', str(os.getpid())])" 2>&1 | tee -a "pldd-nest.out"
182+
183+
Prints out the linked libraries into a file with name ``pldd-nest.out``.
184+
In this way, you can check whether dynamically linked librariries for
185+
the execution of ``nest`` is indeed used. For example, you can check if ``jemalloc`` is used for the network construction
186+
in highly parallel simulations.
187+
188+
.. note::
189+
190+
The above command uses ``pldd`` which is commonly available in Linux distributions. However, you might need to change
191+
the path, which you can find with the command ``which pldd``.
192+
193+
|
177194
178195
You can then tell the job script to schedule your simulation.
179196
Setting the ``exclusive`` option prevents other processes or jobs from doing work on the same node.
@@ -222,11 +239,3 @@ It should match the number of ``cpus-per-task``.
222239
.. seealso::
223240

224241
:ref:`parallel_computing`
225-
226-
227-
228-
229-
230-
231-
232-

0 commit comments

Comments
 (0)