All Projects → genn-team → Genn

genn-team / Genn

Licence: gpl-2.0
GeNN is a GPU-enhanced Neuronal Network simulation environment based on code generation for Nvidia CUDA.

Projects that are alternatives of or similar to Genn

Webgl Fluid Simulation
Play with fluids in your browser (works even on mobile)
Stars: ✭ 11,621 (+7495.42%)
Mutual labels:  simulation
Mss
Marine Systems Simulator (MSS)
Stars: ✭ 142 (-7.19%)
Mutual labels:  simulation
Godot 2d Builder
A simulation game demo made in Godot and inspired by Factorio.
Stars: ✭ 149 (-2.61%)
Mutual labels:  simulation
Pydy Tutorial Human Standing
PyDy tutorial materials for MASB 2014, PYCON 2014, and SciPy 2014/2015.
Stars: ✭ 135 (-11.76%)
Mutual labels:  simulation
Osvvm
OSVVM Utility Library: AlertLogPkg, CoveragePkg, RandomPkg, ScoreboardGenericPkg, MemoryPkg, TbUtilPkg, TranscriptPkg, ...
Stars: ✭ 140 (-8.5%)
Mutual labels:  simulation
Articulations Robot Demo
Stars: ✭ 145 (-5.23%)
Mutual labels:  simulation
Abce
Agent-based computational Economics, the Python library that makes AB modelling easier
Stars: ✭ 130 (-15.03%)
Mutual labels:  simulation
Physac
2D physics header-only library for videogames developed in C using raylib library.
Stars: ✭ 151 (-1.31%)
Mutual labels:  simulation
Nrn
NEURON Simulator
Stars: ✭ 140 (-8.5%)
Mutual labels:  simulation
Bluesky
The open source air traffic simulator
Stars: ✭ 146 (-4.58%)
Mutual labels:  simulation
Galsim
The modular galaxy image simulation toolkit. Documentation:
Stars: ✭ 138 (-9.8%)
Mutual labels:  simulation
Mpc ros
Nonlinear Model Predictive Control on Differential Wheeled Mobile Robot using ROS
Stars: ✭ 140 (-8.5%)
Mutual labels:  simulation
Sparselizard
C++ FEM library | user-friendly | multi-physics | hp-adaptive
Stars: ✭ 145 (-5.23%)
Mutual labels:  simulation
Phy Net
compressing physics with neural networks
Stars: ✭ 133 (-13.07%)
Mutual labels:  simulation
Autonomousdrivingcookbook
Scenarios, tutorials and demos for Autonomous Driving
Stars: ✭ 1,939 (+1167.32%)
Mutual labels:  simulation
Cam2bev
TensorFlow Implementation for Computing a Semantically Segmented Bird's Eye View (BEV) Image Given the Images of Multiple Vehicle-Mounted Cameras.
Stars: ✭ 129 (-15.69%)
Mutual labels:  simulation
Hoomd Blue
Molecular dynamics and Monte Carlo soft matter simulation on GPUs.
Stars: ✭ 143 (-6.54%)
Mutual labels:  simulation
Pyiron
pyiron - an integrated development environment (IDE) for computational materials science.
Stars: ✭ 153 (+0%)
Mutual labels:  simulation
Assistive Gym
Assistive Gym, a physics-based simulation framework for physical human-robot interaction and robotic assistance.
Stars: ✭ 150 (-1.96%)
Mutual labels:  simulation
Polyfem
A polyvalent C++ FEM library
Stars: ✭ 147 (-3.92%)
Mutual labels:  simulation

Build Status codecov.io DOI

GPU-enhanced Neuronal Networks (GeNN)

GeNN is a GPU-enhanced Neuronal Network simulation environment based on code generation for Nvidia CUDA.

INSTALLING GeNN

These instructions are for installing the release obtained from https://github.com/genn-team/genn/releases. For full instructions and cloning git branches of the project, see the documentation available at http://genn-team.github.io/genn/

WINDOWS INSTALL

  1. Download and unpack GeNN.zip to a convenient location, then download and install the Microsoft Visual C++ compiler and IDE from: http://www.visualstudio.com/en-us/downloads. Be sure to select the 'Desktop development with C++' configuration' and the 'Windows 8.1 SDK' and 'Windows Universal CRT' individual components. If your machine has an NVIDIA GPU, then download and install a compatible version of the Nvidia CUDA toolkit from: https://developer.nvidia.com/cuda-downloads. Note that the latest version of Visual Studio is not necessarily compatible with the latest version of the CUDA toolkit.

  2. Ensure that the CUDA_PATH environment variable is defined and points to the location of the Nvidia CUDA toolkit installation; and that the CUDA bin directory is included in the path. These can be checked by using: ECHO %CUDA_PATH% and ECHO %PATH% respectively (although they are usully set automatically by the CUDA installer on Windows systems). If not, correct this using: SETX CUDA_PATH "[drive]\Program Files\NVIDIA GPU Computing Toolkit\CUDA[version]" and SETX PATH "%PATH%;%CUDA_PATH%.

  3. Add the bin sub-directory of the directory in which GeNN is located to your PATH variable. For example, if you extracted GeNN to c:\Users\me\GeNN, use: SETX PATH "c:\Users\me\GeNN\bin;%PATH%".

  4. To access a developer command prompt, use the shortcut link in: start menu -> all programs -> Microsoft Visual Studio -> Visual Studio Tools -> x64 Native Tools Command Prompt which will launch an instance of cmd.exe with a build environment already set up. Alternatively, from any cmd console window, run the vscvsrsall.bat script under the Visual C++ directory before compiling any projects.

This completes the installation. Note that the command window must be restarted to initialise the variables set using the SETX command.

LINUX / MAC INSTALL

  1. Unpack GeNN.zip in a convenient location, then download and install a compatible version of the Nvidia CUDA toolkit from: https://developer.nvidia.com/cuda-downloads and the GNU GCC compiler collection and GNU Make build environment if it is not already present on the system. Note that the latest versions of GCC / Clang / Linux are not necessarily compatible with the latest version of the CUDA toolkit.

  2. Ensure that the environment variable CUDA_PATH is set to the location of your Nvidia CUDA toolkit installation and that the CUDA binary directory is in your path. For example, if your CUDA toolkit was installed to /usr/local/cuda, you can use:

    echo "export CUDA_PATH=/usr/local/cuda" >> ~/.bash_profile
    echo "export PATH=$PATH:$CUDA_PATH/bin" >> ~/.bash_profile
    
  3. Add GeNN's bin directory to your $PATH variable. For example, if you extracted GeNN to /home/me/genn, you can use: echo "export PATH=$PATH:/home/me/genn/bin" >> ~/.bash_profile

This completes the installation. Note that you must either logout and in again or run source ~/.bash_profile for the changes to .bash_profile to take effect.

ARCH LINUX INSTALL

For Arch Linux there are GeNN packages available from the AUR.

Install with your AUR helper of choice, like so:

yay -S genn

If you do not want CUDA support (i.e. if you don't have an NVIDIA GPU), there is a CPU-only version of the package:

yay -S genn_cpu_only

USING GeNN

SAMPLE PROJECTS

At the moment, the following example projects are provided with GeNN:

  • Self-organisation with STDP in the locust olfactory system (Nowotny et al. 2005):

    • with all-to-all connectivity, using built-in neuron and synapse models (for benchmarks see Yavuz et al. 2016)
    • with sparse connectivity for some synapses, using user-defined neuron-and synapse models (for benchmarks see Yavuz et al. 2016)
    • using INDIVIDUALID scheme
    • using delayed synapses
  • Pulse-coupled network of Izhikevich neurons (Izhikevich 2003) (for benchmarks see Yavuz et al. 2016)

  • Genetic algorithm for tracking parameters in a Hodgkin-Huxley model cell

  • Classifier based on an abstraction of the insect olfactory system (Schmuker et al. 2014)

  • Toy examples:

    • Single neuron population of Izhikevich neuron(s) receiving Poisson spike trains as input
    • Single neuron population of Izhikevich neuron(s) with no synapses
    • Network of Izhikevich neurons with delayed synapses

In order to get a quick start and run one of the the provided example models, navigate to one of the example project directories in the userproject sub-directory, and then follow the instructions in the README file contained within.

SIMULATING A NEW MODEL

The sample projects listed above are already quite highly integrated examples. If one was to use the library for GPU code generation of their own model, the following would be done:

  1. The model in question is defined in a file, say Model1.cc.

  2. This file needs to

    • include modelSpec.h
    • contains the model's definition in the form of a function void modelDefinition(NNmodel &model) (MBody1.cc) shows a typical example)
  3. The programmer defines their own modeling code along similar lines as MBody1Sim.cc, etcetera. In this code,

    • they define input patterns (e.g. for Poisson neurons like in the example)
    • they use stepTime(); to run one time step on whatever backend the model was built using.
    • they use functions like copyStateFromDevice(); etcetera to obtain results from GPU calculations.
    • the simulation code is then produced in the following two steps: genn-buildmodel.[sh|bat] ./modelFile.cc and make clean && make

For more details on how to use GeNN, please see documentation.

If you use GeNN in your work, please cite "Yavuz, E., Turner, J. and Nowotny, T. GeNN: a code generation framework for accelerated brain simulations. Scientific Reports, 6. (2016)"

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].