v0.9.0
v0.9.0
** 2023 08 09 **
After much more delay than anticipated, we are very happy to present a new Arbor release. Nearly 8 months of work is in it, much of which focussed on speed, optimisation, fixes and build system changes. This release includes Python 3.12 wheels as probably one of the first packages on PyPI 😄.
Major new features
- External Connectivity: Arbor can now interface with other simulators or processes through MPI. Contexts now accept a second MPI communicator and Recipes can implement a
external_connections_on
method to specify how simulations might be interacting. See documentation for more. - Arbor now supports checkpointing and resume from a previously stored checkpoint. Useful when a certain point in time needs to be explored in multiple directions, when you want to rewind to a previous state, etc. See documentation for more.
- More painted parameters are now scalable through
iexpr
: temperature, capacitance, resistivity, membrane potential and the following ionic parameters: internal and external concentration, diffusivity, and reversal potential. See documentation. - A set of ANN activation functions for NMODL have been added:
sigmoid(x)
,relu(x)
andtanh(x)
. Control volumearea
is exposed through NMODL. - A revamped backend for ARM CPU's that support Scalable Vector Extension (SVE). Arbor and modcc are now fully compatible, so users who have access to A64FX-based HPC can take full advantage of that hardware.
Breaking changes since v0.8.1
- It is no longer possible to set binning and sampling policies, due to Arbor now having a fixed timestep. Removing exact delivery increases the speed of the simulation due to elimination of small steps, makes the numerics independent of presence of sampling, and also leads to a number of code simplifications.
- Contexts are now constructed kwargs-only. So,
arbor.context(12, None)
is nowarb.context(threads=12, gpu=None)
. In the case no arguments are supplied, the context initialized todefault_allocation
, which means it will use the total number of threads and first GPU that are locally available.arbor.simulation
constructed without an explicitarbor.context
also initializes adefault_allocation
. - Version bumps:
- CUDA 11 or higher is required for GPU builds.
Full commit log
Neuroscience, documentation
- Emit better warning. by @thorstenhater in #2071
- ANN activation functions for NMODL:
sigmoid(x)
,relu(x)
andtanh(x)
by @llandsmeer in #2052 - 📊 Make profiler output a bit nicer. by @thorstenhater in #2078
- Merge GUI tutorial by @brenthuisman in #2088
- Busyring example by @boeschf in #2100
- Feature: External Connectivity by @thorstenhater in #2001
- FEATURE: fixed dt by @boeschf in #2053
- mention Matrix, GUI, Playground in docs by @brenthuisman in #2113
- Document presets by @thorstenhater in #2126
- Doc updates by @brenthuisman in #2119
- CV area exposed to NMODL. by @thorstenhater in #2110
- Fix enumeration in docs by @thorstenhater in #2140
- Docs: corrections. by @brenthuisman in #2135
- Fix documentation by @boeschf in #2152
- Address missing logo on all but front page by @brenthuisman in #2155
- Document features by @brenthuisman in #2158
- Make (most) painted parameters scalable. by @thorstenhater in #2141
- Add better (helpful?) errors on mechanism semantic misuse. by @thorstenhater in #2171
- Checkpoint/Resume by @thorstenhater in #2081
Core
- Better handling of powers in modcc. by @thorstenhater in #2061
- Silence spurious unused variable warnings in generated code by @bcumming in #2073
- BluePyOpt API updates by @lukasgd in #2045
- Add some missing #include directives by @musicinmybrain in #2080
- Remove redundant sample events structure. by @thorstenhater in #2079
- 🧹 Re-factor FVM lowered cell implementation and shared state by @thorstenhater in #2082
- Take less locks for shorter times when sampling. by @thorstenhater in #2093
- Fix LIF oversampling. by @thorstenhater in #2091
- 📊 Pin threads by @thorstenhater in #2094
- Add zero'ing by @thorstenhater in #2107
- Add an error on NET_RECEIVE w/ > 1 args. by @thorstenhater in #2127
- Update busyring to generate rings by @bcumming in #2144
- Apply some polish to model construction. by @thorstenhater in #2134
- SVE backend by @boeschf in #2148
- Exit
sup::path
stage left; enterstd::filesystem::path
stage right by @thorstenhater in #2165 - gtest dependency by @boeschf in #2163
Build, testing, CI
- v0.8.1 by @brenthuisman in #2072
- v0.8.1 postrelease by @brenthuisman in #2074
- Enable Spack tests by @brenthuisman in #2098
- Python/pip strikes again: execute
pip install
in venvs by @brenthuisman in #2111 - Scikit build core by @brenthuisman in #2121
- Spack: add dev version by @brenthuisman in #2150
- Break out pip and doc tests, exclude doc-change from eating up precious runner cycles by @brenthuisman in #2160
- rename test-pip.yml by @boeschf in #2166
- cscs-ci by @boeschf in #2149
- gtest in CI containers by @boeschf in #2170
- Spack-solvable versions, add tests to Spack workflow by @brenthuisman in #2156
- Fudge version in pyproject.toml for ci by @brenthuisman in #2200
- enable remote example by @boeschf in #2173
Fixes, optimization
- [BUGFIX] a-b-c: actually set compiler, improved default by @brenthuisman in #2051
- 🐙 Optimise PPACK by @thorstenhater in #2067
- Silence flake8 and appease black. by @thorstenhater in #2086
- BUGFIX: add missing functions to sve backend by @boeschf in #2096
- BUGFIX gpu ppack declarations by @boeschf in #2087
- BUGFIX: gpu mechanism init by @boeschf in #2095
- The Initialisation Optimisation by @thorstenhater in #2097
- Fix crash in FindId Visitor. by @thorstenhater in #2115
- Add LTO and M1 arch to CMake by @thorstenhater in #2106
- Fix crash on probing non-existent mechanism state. by @thorstenhater in #2112
- Python/concurrency defaults by @brenthuisman in #1979
- Add faster merge events. by @thorstenhater in #2108
- Fix a typo in python bindings. by @thorstenhater in #2125
- Fix incorrect mention of attribute
catalogue
insingle_cell_model
by @Helveg in #2122 - Avoid crash when integrating over empty branch. by @thorstenhater in #2124
- fix lint pipleine by @boeschf in #2151
- Ward against probing the void. by @thorstenhater in #2139
- Fix GPU/NVC problems by @thorstenhater in #2143
- fix ODR violation by @boeschf in #2154
New Contributors
- @musicinmybrain made their first contribution in #2080
Full Changelog: v0.8.1...v0.9.0