- Feb 23, 2023
-
-
Brent Huisman authored
- Merge GUI tutorial. - Advertise GUI in docs. - Reduce sidebar clutter by simplying contrib section.
-
- Feb 08, 2023
-
-
Thorsten Hater authored
This is a clean-up operation on `fvm_lowered_cell_impl.hpp` and `{cpu, gpu}/shared_state.{hpp, cpp}`. - Get rid of `shared_state` specifics in `fvm_lowered_cell_impl` and push these down to `shared_state` - Present more of an interface layer towards `fvm_lowered_cell` from `shared_state` - De-duplicate methods across CPU/GPU implementations by adding `shared_state_base` - Align interfaces of GPU/CPU solvers.
-
- Feb 07, 2023
-
-
boeschf authored
A couple of declarations in `PPACK_IFACE_BLOCK` are fixed for the GPU backend.
-
- Feb 02, 2023
-
-
Thorsten Hater authored
New versions, new warnings. Begone.
-
Thorsten Hater authored
- pointers in `PPACK_IFACE_BLOCK` will be `__restrict__` - this is expected to produce better binary code for the _scalar_ case - for GPU we expect this to better utilise data caches as per CUDA docs - `ved_di` is not used anymore, gone and ABI bumped - GPU code never used the indexing structs, so remove from `PPACK_IFACE_BLOCK`
-
- Jan 26, 2023
-
-
Thorsten Hater authored
`mc_cell_group::sample_events_` was never used (except clearing it).
-
- Jan 25, 2023
-
-
Ben Beasley authored
Fixes failure to compile with GCC 13.
-
- Jan 17, 2023
-
-
lukasgd authored
This is a small PR to track updates in the BluePyOpt API (cf. https://github.com/BlueBrain/BluePyOpt/pull/393) compared to the v0.8 release.
-
- Jan 12, 2023
-
-
Thorsten Hater authored
- Profiler output is now correctly aligned regardless of widths. - Python (and C++) can now actually set a limit on the nodes printed. After (with a >=4% filter): ``` REGION CALLS WALL THREAD % root - 9.401 75.205 100.0 advance - 9.401 75.205 100.0 integrate - 9.400 75.201 100.0 current - 2.001 16.007 21.3 zero 29120728 0.518 4.142 5.5 Granule_98_3D__all 24000600 0.459 3.675 4.9 Granule_98_3D__soma_group 24000600 0.456 3.649 4.9 Gran_CaPool_98 24000600 0.410 3.282 4.4 state - 1.861 14.888 19.8 Granule_98_3D__soma_group 24000600 0.778 6.223 8.3 Gran_CaPool_98 24000600 0.498 3.981 5.3 Granule_98_3D__all 24000600 0.410 3.283 4.4 events 58241456 1.017 8.138 10.8 voltage 29120728 0.954 7.629 10.1 ionupdate 29120728 0.526 4.205 5.6 threshold 29120728 0.514 4.116 5.5 samples 29120728 0.513 4.103 5.5 stimuli 29120728 0.512 4.092 5.4 post 29120728 0.509 4.072 5.4 stepsupdate 29120728 0.500 4.003 5.3 diffusion 29120728 0.494 3.950 5.3 ``` Before: ``` _p_ REGION CALLS THREAD WALL % _p_ root - 56.635 7.079 100.0 _p_ advance - 56.635 7.079 100.0 _p_ integrate - 56.633 7.079 100.0 _p_ current - 11.836 1.480 20.9 _p_ zero 29120728 3.133 0.392 5.5 _p_ Granule_98_3D__soma_group 24000600 2.816 0.352 5 _p_ Granule_98_3D__all 24000600 2.650 0.331 4.7 _p_ Gran_CaPool_98 24000600 2.291 0.286 4.0 _p_ MossyFiber_all 3840096 0.501 0.063 0.9 _p_ Golgi_98_3D_all 1280032 0.123 0.015 0.2 _p_ Golgi_98_3D_soma_group 1280032 0.120 0.015 0.2 _p_ Golgi_CaPool_CML 1280032 0.103 0.013 0.2 _p_ nernst 1280032 0.100 0.013 0.2 _p_ state - 11.343 1.418 20.0 _p_ Granule_98_3D__soma_group 24000600 4.918 0.615 8 _p_ Gran_CaPool_98 24000600 3.086 0.386 5.4 _p_ Granule_98_3D__all 24000600 2.288 0.286 4.0 _p_ MossyFiber_all 3840096 0.479 0.060 0.8 _p_ Golgi_98_3D_all 1280032 0.252 0.031 0.4 _p_ Golgi_98_3D_soma_group 1280032 0.180 0.023 0.3 _p_ Golgi_CaPool_CML 1280032 0.139 0.017 0.2 _p_ voltage 29120728 7.124 0.891 12.6 _p_ events 58241456 6.003 0.750 10.6 _p_ threshold 29120728 3.015 0.377 5.3 _p_ samples 29120728 2.976 0.372 5.3 _p_ ionupdate 29120728 2.961 0.370 5.2 _p_ stimuli 29120728 2.890 0.361 5.1 _p_ stepsupdate 29120728 2.868 0.358 5.1 _p_ post 29120728 2.820 0.353 5.0 _p_ diffusion 29120728 2.794 0.349 4.9 _p_ setup 728 0.001 0.000 0.0 _p_ samplesetup 728 0.001 0.000 0.0 _p_ spikes 728 0.000 0.000 0.0 _p_ eventsetup 728 0.000 0.000 0.0 _p_ sampledeliver 728 0.000 0.000 0.0 _p_ communication - 0.000 0.000 0.0 _p_ enqueue - 0.000 0.000 0.0 _p_ sort 728 0.000 0.000 0.0 _p_ merge 728 0.000 0.000 0.0 _p_ setup 728 0.000 0.000 0.0 _p_ walkspikes 1 0.000 0.000 0.0 _p_ spikeio 1 0.000 0.000 0.0 _p_ exchange - 0.000 0.000 0.0 _p_ gather 1 0.000 0.000 0.0 _p_ sort 1 0.000 0.000 0.0 _p_ gatherlocal 1 0.000 0.000 0.0 ```
-
- Jan 05, 2023
-
-
Lennart Landsmeer authored
I have been playing around a bit with getting Neural ODE's working (and in general ANN's as black-box homeostatic mechanisms) and found arbor lacking in ANN activation functions. Now not everybody might agree that this is actually needed in Arbor, so I don't expect this PR to be merged directly. But if people like the idea, here it is :) The PR contains 3 common unary functions used in ANN's as nonlinear activations: `sigmoid(x)`, `relu(x)` and `tanh(x)` Here is a very minimal example of a 'neural ode': ``` NEURON { SUFFIX node } PARAMETER { A1 = -0.662 A2 = 0.282 A3 = 0.957 A4 = -0.189 A5 = -1.794 A6 = 1.094 A7 = -1.133 A8 = 0.625 A9 = 0.074 b1 = -1.434 b2 = -0.358 b3 = -0.093 } STATE { x y z } INITIAL { x = 0 y = 1 z = 1 } DERIVATIVE dstate { x' = tanh(A1 * x + A2 * y + A3 * z + b1) y' = tanh(A4 * x + A5 * y + A6 * z + b2) z' = tanh(A7 * x + A8 * y + A9 * z + b3) } BREAKPOINT { SOLVE dstate METHOD sparse } ```
-
Thorsten Hater authored
Before ``` ✦2 ❯ modcc -t cpu jnml-arbor/SKv3_1.mod Warnings: * jnml-arbor/SKv3_1.mod:(line 1,col 1) Assignments to local variable containing state variables will not be integrated in time ``` After ``` ✦2 ❯ modcc -t cpu jnml-arbor/SKv3_1.mod Warnings: * jnml-arbor/SKv3_1.mod:(line 172,col 14) Assignments to local variable containing state variables will not be integrated in time: (rate_m_q = ((m_inf - m_q) / m_tau)) ```
-
Brent Huisman authored
-
- Dec 22, 2022
-
-
Brent Huisman authored
Co-authored-by:
boeschf <48126478+boeschf@users.noreply.github.com>
-
- Dec 21, 2022
-
-
Benjamin Cumming authored
`[[maybe_unused]]` in generated code to silence warnings for mechanisms with `net_receive` methods that do not use the connection weight.
-
Thorsten Hater authored
- $x^{-1} \Rightarrow 1/x\quad \forall x$ - $x^n \Rightarrow x\cdot \dots \cdot x \quad x\in N; |x| < 5$ - $x^n \Rightarrow 1/(x\cdot \dots \cdot x) \quad x\in N; |x| < 5; x < 0$ - $b^e \Rightarrow \exp(\log(b) e)\quad \forall b, e$ The last point introduces potential errors when `pow(b, e)` is allowed, but `log(b)` is undefined. These occur exactly when all of the following is true - $b < 0$ - $e\in N$ - $e$, $b$ not known at compile time (since we cover these cases before)
-
- Dec 15, 2022
-
-
Brent Huisman authored
* Python Wheel workflow uses `ubuntu-20.04` to fix the build * In #2058 I forgot to update `ciwheel.yml` * Why this is necessarily: still have not figured it out. `cibuildwheel` builds and tests in it's own container... * [x] https://github.com/brenthuisman/arbor/actions/runs/3704419712 * Small change to make `musllinux` wheels build. They don't pass testing yet, so I don't add them to the workflow but that can be solved/added [later](https://github.com/pypa/cibuildwheel/issues/1376) * The reason for using `ubuntu-20.04` in the Spack workflow should [no longer exist](https://github.com/actions/runner-images/issues/6724).
-
- Dec 14, 2022
-
-
Thorsten Hater authored
Allow `__` in profiler names, now that we split on `:`.
-
Thorsten Hater authored
`exprelr` was described all wrong, fixed.
-
boeschf authored
Mechanism ids are assigned by iterating through an unordered map within `fvm_mechanism_data`. This changes the container in question to an ordered `std::map`.
-
- Dec 12, 2022
-
-
Brent Huisman authored
See the same jobs fail, which turn out to execute using different Python versions: - https://github.com/arbor-sim/arbor/actions/runs/3618204857/jobs/6097794385 - https://github.com/arbor-sim/arbor/actions/runs/3630819640/jobs/6141257441
-
boeschf authored
Implementation of stochastic calcium plasticity curves, originally authored by Sebastian Schmitt @schmitts, and adapted here for Arbor inclusion. - python example plasticity_stdp.py - stochastic mechanism calcium_based_synapse.mod - tutorial Closes #1987
-
- Dec 06, 2022
-
-
Brent Huisman authored
* Actually set the compiler to the user provided `--cxx` or the scripts default. * Have a fallback to `c++` in case `arbor.config()['CXX']` does not exist (typically true for pip installed wheels). * Verbose mode for `a-b-c`
-
- Nov 28, 2022
-
-
Thorsten Hater authored
Switch XML parser to pugixml; one less runtime dependency and one less blocker to WASM via emscripten.
-
- Nov 23, 2022
-
-
Brent Huisman authored
-
Brent Huisman authored
required for making an emscripten build of the arbor python library * make ARB_MODCC functional again * move add_subdir * no modcc/CMakeLists.txt is needed also when external modcc is used. * review
-
Thorsten Hater authored
* Remove deprecated spike_detector.
-
- Nov 22, 2022
-
-
boeschf authored
added conditional variant for cuda builds to enable GPU-based random number generation
-
boeschf authored
- unit tests and some examples build their own mechanism catalogue - repeated logic for detecting GPUs, passing compile time flags - leverage the cmake variables and targets which are already there since these catalogues are internal to arbor - build a static library with mechanisms, which links to arbor-private-deps
-
- Nov 21, 2022
-
-
Thorsten Hater authored
Add the VOLTAGE_PROCESS mechanism kind to modcc, allowing for direct writing to the membrane voltage Obviously these are extremely sharp tools and can break the cable model, so we add some constraints to their use (see docs). Still, user discretion is required. As a sneak peek for what this might be useful for * implementing voltage clamps * limiting membrane voltage (irritatingly also a kind of clamping) * faking ABSTRACT_CELL like behaviour (although that might require a bit more work) Closes #1343
-
- Nov 18, 2022
-
-
Thorsten Hater authored
Throw an informative error instead of `bad_optional_access` when we do not find a global or cell default for an ion's diffusivity.
-
- Nov 17, 2022
-
-
boeschf authored
Added common math functions which I came across in the wild quite frequently. Implementations may be more optimized than hand-rolled versions. - sqrt: usual square root - step_right: right-continuous heaviside step function - step_left: left-continuous heaviside step function - step: heaviside step function with half step at 0 - signum: sign bit function - extended iexpr with the step_left, step_right variants
-
boeschf authored
fix ornstein_uhlenbeck example on gpu: - use make_catalogue instead of make_catalogue_standalone - link to arbor-private-deps - mark all files as c++ sources when using cuda-clang or hip-clang
-
- Nov 15, 2022
-
-
Brent Huisman authored
-
Brent Huisman authored
- Correct `.gitmodules` - Update all git submodules to latest released versions, except google-benchmark - Have CHANGELOG - Breaking changes since v0.7: - A change in API: `arbor.cable_cell` has the labels and decor arguments swapped. I.e.: `(tree, labels, decor)` -> `(tree, decor, label)`. Labels are now optional. - Mechanism ABI version is bumped to 0.3.1. https://github.com/arbor-sim/arbor/pull/1884 - Remove the `generate-catalogue` script. `modcc` accepts now a list of NMODL files and is able to spit out a catalogue.cpp file - Rename spike detector -> threshold detector - Remove access to time `t` in NMODL. - Major dependency version bumps: - GCC: 9 and up - CUDA: 11 and up - Clang: 10 and up
-
boeschf authored
Addresses #1987 * reproducibility test for random number generator * C++ example demonstrating Ornstein-Uhlenbeck process * Python example featuring stochastic mechanism * stochastic mechanism catalogue The Python example is contributed by Jannik Luboeinski's (@jlubo): https://github.com/jlubo/arbor_ou_lif_example and adapted to fit into Arbor.
-
- Nov 10, 2022
-
-
boeschf authored
* fix compiler warnings * fix some more warnings
-
- Nov 08, 2022
-
-
boeschf authored
-
- Nov 03, 2022
-
-
boeschf authored
Co-authored-by:
Brent Huisman <brenthuisman@users.noreply.github.com>
-
Thorsten Hater authored
- Add (again) a reset voltage E_R that for V_m = E_R in the refractory period. - Make V_m decay towards resting potential E_L instead of 0. - Adjust docs and tests accordingly. - Double check this against literature. - Explain weight, add C++ API.
-
- Nov 02, 2022
-
-
Robin De Schepper authored
* Added fixture dev docs. Made fixtures more robust. Co-authored-by:
Brent Huisman <brenthuisman@users.noreply.github.com>
-