1 of 17

NEURON Developer’s Meeting

October 17th 2021

2 of 17

Agenda

  • Introduction from "new" members
  • NEURON News / Announcements
  • Dynamic MPI Support in CoreNEURON
  • Status of GPU support in Python wheel
  • WSL and Python wheels
  • Inclusion of nrntest and external test repos
  • Paper results / Hippocampus model
  • Upcoming SFN Poster
  • Ongoing NEURON work
  • Next Meeting

3 of 17

Introduction From New Members

  • ...

4 of 17

NEURON News / Announcements

  • ...

5 of 17

Dynamic MPI support in CoreNEURON

  • What is dynamic MPI?
    • Choice of which MPI implementation to use, if any, made at runtime
    • Improves wheel portability. MPI not shipped with NEURON
  • Why is that needed?
    • MPI is an API, not ABI, specification

User machine

[Core]NEURON

OpenMPI libmpi.so

MPICH libmpi.so

(not present on this

user’s machine)

libnrnmpi_mpich.so

(attempting to load

this would fail)

libnrnmpi_openmpi.so

“openmpi”

--mpi Do we want MPI?

Load at runtime

6 of 17

Current NEURON Implementation

  • Relies on legacy scripts to generate headers: mkdynam.sh
    • grep through the existing files and extract function names�
  • Uses macros to switch between function calls or pointers�
  • Not robust and not easy to extend

7 of 17

New Implementation in CoreNEURON

  • More modern C++ approach
  • All coreneuron::nrnmpi_xyz(a, b, c) methods are instances of the same helper template
  • Depending on compile/runtime options, this despatches to a function pointer that was linked either at compile time or run time.
  • Give us the chance to nicely split code related to mpi. Before if --mpi was not given but MPI was available some mpi code were run.

8 of 17

GPU Support in Python Wheel

  • First working draft of python wheel with GPU support
    • can run with/without MPI and with/without GPU�
  • Primary/first target is to run simulations
    • i.e. Jupyter based, interactive usage won’t be possible right away
    • need to use special executable created from `nrnivmodl mod`
      • nrnivmodl -coreneuron <mod>
      • ./x86_64/special -python or ./x86_64/special -python test.py
  • Ongoing PRs, target to mergy early next week
  • If want to try pre-alpha version to provide feedback, ping us on Slack

9 of 17

WSL and Python Wheels

  • Documentation here
  • Thanks to Robin!

10 of 17

Inclusion of nrntest

  • Standalone repository containing number of tests
    • HOC, Python, NMODL, CVODE�
  • Was executed manually sporadically / during releases�
  • Now integrated into neuron: make test�
    • cleanup of old scripts
    • fixes for difference compilers - ascii result files & floating point discrepancies

11 of 17

Inclusion of other external tests

  • Move away from using git submodules for external test/model repositories
  • Can add extra tests without forcing everyone to download them all the time
  • Benefit from NEURON’s CMake/CTest helpers, less need for ad-hoc scripts
  • Example: nrn#1439 integrates some tests of Blue Brain Project mechanisms, these are now tested in the CI [currently only of CoreNEURON]

12 of 17

Hippocampus model benchmarks

  • Performance results for inclusion in the Frontiers paper
  • All results on two compute nodes; zero, two or four GPUs per node
  • Aside: now --forwardskip works on GPU!

13 of 17

SfN - poster

  • Online Conference Nov 8-11�
  • Summarising work around NEURON Toolchain
    • including topics being discussed for the paper�
  • Will begin prototyping content soon�
  • Let me know if any specific aspects should be highlighted

14 of 17

Ongoing NEURON work

  • Current Kanban Board

15 of 17

Summary of infrastructure improvements

16 of 17

Google Groups - NEURON Dev Meeting

  • NEURON Dev Meeting

  • Shared Google Drive for NEURON Dev Meeting presentations, recordings ...
    • NEURON dev shared folder

17 of 17

Next meeting

November 19th 2021, 16:00 CEST; 10:00 EDT

�Please suggest agenda items on the wiki:

https://github.com/neuronsimulator/nrn/wiki