Introduction
CARLsim5 is an efficient, easy-to-use, GPU-accelerated library for simulating large-scale spiking neural network (SNN) models with a high degree of biological detail. It allows execution of networks of Izhikevich spiking neurons with realistic synaptic dynamics using multiple off-the-shelf GPUs and x86 CPUs. The simulator provides a PyNN-like programming interface in C/C++, which allows for details and parameters to be specified at the synapse, neuron, and network level.
The present release, CARLsim 5, builds on the efficiency and scalability of earlier releases (Nageswaran et al., 2009; Richert et al., 2011, and Beyeler et al., 2015; Chou et al., 2018). The functionality of the simulator has been greatly expanded by the addition of a number of features that enable and simplify the creation, tuning, and simulation of complex networks with spatial structure.
New Features
1. PyNN Compatibility
pyCARL is a interface between the simulator-independent language PyNN and a CARLsim5 based back-end. In other words, you can write the code for a SNN model once, using the PyNN API and the Python programming language, and then run it without modification on the CARLsim5 simulator that PyNN supports.
Principal APIs supported:
- Neuron Models: pyCARL currently supports Izhikevich spiking neurons with either current-based or conductance-based synapses. Support for LIF neurons is planned for the future. Different groups of neurons can be created from a one-dimensional array to a three-dimensional grid.
- Synapse: pyCARL supports the following synapse models
- Static Synapse - A fixed weight and delay synapse.
- Spike-timing-dependent plasticity - STDP mechanisms can be constructed using weight-dependence and timing-dependent models.
- Connector Types: The pyCARL interface currently supports the following connectors:
- AllToAllConnector - Each neuron in the pre-synaptic population is connected to every neuron in the post-synaptic population.
- OneToOneConnector - The neuron with index i in the pre-synaptic population is then connected to the neuron with index i in the post-synaptic population.
- FixedProbabilityConnector - Each possible connection between all pre-synaptic neurons and all post-synaptic neurons is created with probability p.
- Spike sources: pyCARL currently supports a poisson source (SpikeSourcePoisson) and array-based spike source (SpikeSourceArray).
- Monitoring: Currently, pyCARL support spike and connection monitoring. CARLsim SpikeMonitors and ConnectionMonitors are internally defined for every group (Population) and connection (projection) in an application.
- Homeostasis: Homeostatic synaptic scaling has been observed experimentally and may serve to stabilize plasticity mechanisms that can otherwise undergo run-away behaviors. CARLsim implements a version of homeostatic synaptic scaling that helps stabilize STDP.
pyCARL is a work in progress and newer APIs and features will continue to be supported via the interface. Its sources and installation instructions are now available as a part of CARLsim5’s software release. Please refer to the CARLsim5 documentation https://uci-carl.github.io/CARLsim5/ch14_pyCARL.html for the pyCARL installation instructions.
2. Neuron monitor
Neuron monitor now supports observing the voltage and current traces of individual neurons. This provides a useful tool for users to analyze the network dynamics during the simulation.
3. Docker images for Windows users and computer cluster users
It was not convenient for windows users to use CARLsim for the requirement of installing of Microsoft Visual Studio 2015 and the update of Visual Studio. As a result, we release docker images in which CARLsim5 has been installed in an ubuntu system and ready for use immediately.
4. Saving and Loading
CARLsim5 now supports saving the network during the run time. The saved network could be loaded again via reading the saved file when setting up the network in a new simulation. All information regarding to the connections including weights, delays, source and target neurons will be saved. For more information, see https://uci-carl.github.io/CARLsim5/ch8_saving_loading.html
5. Improved ECJ Interface (Coming soon)
CARLsim5 supports ECJ-23 for evolutionary parameter tuning for now. The new ECJ-28 will released and integrated into CARLsim5 soon.