Top Banner
Helmholtz Portfolio Theme Supercomputing and Modeling for the Human Brain
19

COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

Aug 17, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

Helmholtz Portfolio Theme

Supercomputing and Modeling for theHuman Brain

Page 2: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

WP 4: Supporting Software

T 4.6: Methods & Infrastructurefor software development

21 March 2014 Abigail MorrisonAlexander PeyserJochen Eppler

Page 3: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

Methods & Infrastructurefor software development

M18Reduce complexity and increase maintainability with Cython

M24Prototype software documentation siteContinuous Integration as a Service for Neuroinformatics

M36NEST packaging for critical distributions

M48Prototype of code review platform & distributed version control

21 March 2014 Alexander Peyser Folie 3

Page 4: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

Methods & Infrastructurefor software developmentOrganization

WP 4.6

M18: Cython

Zaytsev

Morrison

M24:Documentation

Graber

Eppler

M24: CIaaSZaytsev

Deepu

M36: NESTPackaging

M48: CodeReview & DVC

Morrison

Eppler

Peyser

Deepu

Ippen

Zito

21 March 2014 Alexander Peyser Folie 4

Page 5: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

M18: Cython

Milestone

Completed study on the use of Cython to reduce complexityand error likelihood and increase maintainability of interfaces toneural network simulators (see also T3.4 milestone 2)

Status

PyNEST bindings for NEST (Neural Simulation Tool)rewritten in Cython supporting both Python 2 & 3

Paper written documenting maintainabilityand performance issues [Zaytsev and Morrison, 2014]

21 March 2014 Alexander Peyser Folie 5

Page 6: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

M18: Cython

ORIGINAL RESEARCH ARTICLEpublished: 14March 2014

doi: 10.3389/fninf.2014.00023

CyNEST: amaintainable Cython-based interface for theNEST simulatorYuryV.Zaytsev1,2* andAbigail Morrison1,3,4

1 Simulation LaboratoryNeuroscience – Bernstein Facility for Simulation andDatabase Technology, Institute for Advanced Simulation, J ülich Aachen ResearchAlliance, J ülich Research Center, J ülich, Germany

2 Faculty of Biology, Albert-Ludwig University of Freiburg, Freiburg imBreisgau, Germany3 Institute for Advanced Simulation (IAS-6), Theoretical Neuroscience and Institute of Neuroscience andMedicine (INM-6), Computational and SystemsNeuroscience, J ülich Research Center and JARA, J ülich, Germany

4 Institute of Cognitive Neuroscience, Faculty of Psychology, Ruhr-University Bochum, Bochum, Germany

Editedby:YaroslavO. Halchenko, DartmouthCollege, USA

Reviewedby:Mikael Djurfeldt, KTH Royal Instituteof Technology, SwedenLaurent U. Perrinet, Centre Nationalde laRecherche Scientif que, France

*Correspondence:Yury V. Zaytsev, SimulationLaboratoryNeuroscience -Bernstein Facility for Simulation andDatabase Technology, Institute forAdvanced Simulation, J ülich AachenResearch Alliance, J ülich ResearchCenter, J ülich SupercomputingCentre, Forschungszentrum J ülichGmbH, 52425 J ülich, Germanye-mail: [email protected]

NEST is a simulator for large-scale networks of spiking point neuron models (GewaltigandDiesmann, 2007). Originally, simulations were controlled via the Simulation LanguageInterpreter (SLI), a built-in scripting facility implementing a language derived fromPostScript (Adobe Systems, Inc., 1999). The introduction of PyNEST (Eppler et al.,2008), the Python interface for NEST, enabled users to control simulations using Python.As the majority of NEST users found PyNEST easier to use and to combine withother applications, it immediately displaced SLI as the default NEST interface. However,developing and maintaining PyNEST has become increasingly diff cult over time. This ispartly because adding new features requires writing low-level C++ code intermixed withcalls to the Python/C API, which is unrewarding. Moreover, the Python/C API evolveswith each new version of Python, which results in a proliferation of version-dependentcode branches. In this contribution we present the re-implementation of PyNEST inthe Cython language, a superset of Python that additionally supports the declarationof C/C++ types for variables and class attributes, and provides a convenient foreignfunction interface (FFI) for invoking C/C++ routines (Behnel et al., 2011). Code generationvia Cython allows the production of smaller and more maintainable bindings, includingincreased compatibility with all supported Python releases without additional burden forNEST developers. Furthermore, this novel approach opens up the possibility to supportalternative implementations of the Python language at no cost given a functional Cythonback-end for the corresponding implementation, and also enables cross-compilation ofPython bindings for embedded systems and supercomputers alike.

Keywords:Python language,neural simulator,maintainability, technical debt,HPC

NEUROINFORMATICS

21 March 2014 Alexander Peyser Folie 5

Page 7: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

M18: Cython

FIGURE1|Diagramdepicting thedesignofPyNEST, thePythonbindings for theNEST simulator.

Table3| Theruntimeandmemoryconsumptionmeasurements

performedontheuntracedversionof thesimplif edHill-Tononi

model usingsingle-threadedsimulationon thehardware/software

setupdescribed in themain text.

Median Minimum Maximum

RUNTIMEOFTHEMODEL [s]

PyNEST 64.8 63.8 66.9

CyNEST 66.1 65.5 71.6

PEAKMEMORYUSAGE [MiB]

PyNEST 327 327 328

CyNEST 329 329 329

The runtime (which includes the collection of the results and the production of

the graphics) was obtained using the shell TIME command and the memory

usagewas recordedusingMassif. Eachexperimentwas repeatedn= 15 times,

alternating themeasurements for PyNEST and CyNEST.

21 March 2014 Alexander Peyser Folie 5

Page 8: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

M24: Software documentation siteExample documentation, cont

Milestone

Prototype implementation of a software documentation site

Status

Automated documentation engine developed by Steffen Graberusing Sphinx + other tools to scrape code toproduce website

Website prototyped ashttp://nestwwwdev.inm.kfa-juelich.de/

nest-simulator

21 March 2014 Alexander Peyser Folie 6

Page 9: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

M24: Software documentation siteExample documentation, cont

21 March 2014 Alexander Peyser Folie 6

Page 10: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

M24: Software documentation siteExample documentation, cont

21 March 2014 Alexander Peyser Folie 6

Page 11: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

M24: Software documentation siteExample documentation, cont

21 March 2014 Alexander Peyser Folie 6

Page 12: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

M24: Continuous Integration as a ServiceAutomated Jenkins builds

Milestone

Continuous Integration as a Service (CIaaS) available forneuroinformatics applications

Status

CIaaS has been implemented for

NEST Neural Simulation Tool

PyNN Simulator-independent language for buildingneuronal network models

MUSIC C++ library for exchanging data during runtimefor large scale neuronal network simulators

Topographica Computational modeling of neural maps

21 March 2014 Alexander Peyser Folie 7

Page 13: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

M24: Continuous Integration as a ServiceAutomated Jenkins builds

Milestone

Continuous Integration as a Service (CIaaS) available forneuroinformatics applications

Status

Infrastructure is available athttps://qa.nest-initiative.org

Developers Yury Zaytsev, Lekshmi Deepu

21 March 2014 Alexander Peyser Folie 7

Page 14: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

M24: Continuous Integration as a ServiceAutomated Jenkins builds

21 March 2014 Alexander Peyser Folie 7

Page 15: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

M36: NEST packaging

Milestone

NEST packaged and queued for inclusion in critical distributions

Status

Exchanged with M48:Prototype of code review platform & distributed version control

This exchange prioritizes developer access and quality control

21 March 2014 Alexander Peyser Folie 8

Page 16: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

M48: Code review & DVC platformLeverage public infrastructure

Milestone

Prototype implementation of a code review based developmentplatform integrated with distributed version control

Status

Solution: We do as Google does, and use GitHub

Prototype site is being worked on asINM-6/nest-git-migration

Code Review process is being developed using GitHub tools

Cont Int is through a GitHub–Travis bridge

Documentation of use cases and processes are being developedto facilitate reuse

21 March 2014 Alexander Peyser Folie 9

Page 17: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

M48: Code review & DVC platformLeverage public infrastructure

21 March 2014 Alexander Peyser Folie 9

Page 18: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

Methods & Infrastructurefor software developmentOrganization

WP 4.6

M18: Cython

Zaytsev

Morrison

M24:Documentation

Graber

Eppler

M24: CIaaSZaytsev

Deepu

M36: NESTPackaging

M48: CodeReview & DVC

Morrison

Eppler

Peyser

Deepu

Ippen

Zito

21 March 2014 Alexander Peyser Folie 10

Page 19: COnnecting REpositoriesPrototype software documentation site Continuous Integration as a Service for Neuroinformatics M36 ... using Sphinx + other tools to scrape code to produce website

References

Yury V. Zaytsev and Abigail Morrison.CyNEST: a maintainable Cython-based interface for the NEST simulator.Frontiers in Neuroinformatics, 8(23), 2014.doi: 10.3389/fninf.2014.00023.

21 March 2014 Alexander Peyser Folie 11