Introduction to Neuromorphic Computing

Alternative forms of computing have gained relevance in the last decade as traditional CPU and GPU architectures reach fabrication and physical limits, and the power consumption of compute clusters sharply increased with the rise of ML/AI algorithms. New computing paradigms such as quantum and analog computing, as well as dedicated hardware architectures offer paths to sidestep the limitations of classical computing. Neuromorphic computing is another paradigm competing in this area: based on replicating the behavior of biological neurons, it combines the advantages of analog and digital computing, resulting in computations that are inherently low power and well suited for solving a large number of problems and implementing a wide variety of algorithms including optimization algorithms, AI/ML, and more. Working in neuromorphic computing requires new ways of thinking and of approaching algorithm design.

This module is intended as a light introduction to neuromorphic computing, its basic concepts, advantages and applicability domains. Following this theoretical introduction, we will look in depth at the basic leaky integrate and fire neuron model and implement our own version in Python. Then, we have a look at PyNN, a Python API for setting up and running spiking neuron network simulations, which also helps to introduce some concepts in neuromorphic computing. Finally, to put it all together, we implement our own neuromorphic code to solve the classic map coloring problem.

and finally a couple of hands-on practical simulations based on Python code.

Prerequisites

  • Basic Python knowledge

  • Knowledge of the basic behavior of biological neurons is of advantage

  • Knowledge of optimization methods, constraint problems, and graph theory also of advantage

Module content

Learning outcomes

This material is intended for those interested in neuromorphic computing in particular, as well as alternative forms of computing such as analog and quantum computing.

By the end of this module, learners should be able to:

  • Explain the basic elements of neuromorphic computing

  • Enumerate and justify the advantages of neuromorphic computing as a computing paradigm, its possible applications, and some of the software and hardware options available for running neuromorphic calculations

  • Implement their own simple LIF neuron model

  • Understand the basics of the PyNN Python library for constructing spiking neuron networks

  • Solve simple constraint optimization problems with a neuromorphic algorithm, as exemplified by the map coloring problem

See also

Credit

  • Author: Martin Paleico (Gesellschaft für wissenschaftliche Datenverarbeitung mbH Göttingen)

  • License: CC BY-SA 4.0 and MIT (also known as Expat)

  • Contributing and error reporting: Please send an email to hpc-support@gwdg.de

License

Note

To module authors: For code you may use any OSI-approved license as mentioned in https://spdx.org/licenses/, such as Apache License 2.0, GNU GPLv3, MIT. Please make sure to update the deed above and LICENSE.code file accordingly.