Skip to main content

SuperNeuroABM

SuperNeuroABM is a GPU-based multi-agent simulation framework for neuromorphic computing. Built on top of SAGESim, it enables fast and scalable simulation of spiking neural networks on both NVIDIA and AMD GPUs.

Key Features

  • GPU Acceleration: Leverages CUDA (NVIDIA) or ROCm (AMD) for high-performance simulation
  • Scalable: From single GPU to multi-GPU HPC clusters via MPI
  • Flexible Neuron Models: LIF, adaptive-threshold LIF, higher-order LIF, and Izhikevich somas; single-exponential and weighted synapses
  • STDP Support: Built-in pair-wise, bounded, quantized and memristive spike-timing-dependent plasticity, plus user-registered learning rules
  • Train/Eval Switch: model.train() / model.eval() and set_learning_enabled() toggle plasticity globally or per synapse
  • Named Parameters: get_hyperparameters() / set_hyperparameters() (and their learning counterparts) address parameters by name rather than by position
  • Bulk and Distributed Construction: build a whole network in one call with create_from_lists(), or have each MPI rank build only its own partition with load_post_owned() / load_from_adjacency() — no global graph is ever materialized
  • Network Generation: Brunel balanced random networks via brunel_partition() with topology="global" | "bounded" | "torus2d" | "torus3d", plus a spatially embedded economical small-world variant in spatial_smallworld_partition() (superneuroabm/brunel.py)

Requirements

  • Python 3.11+
  • NVIDIA GPU with CUDA drivers or AMD GPU with ROCm
  • MPI implementation (OpenMPI, MPICH, Cray MPICH, ...) for multi-GPU execution

Validated stack: ROCm 7.2.0 with CuPy 14.0.1 on AMD MI250X (see SAGESim's docs/frontier_setup_rocm720_cupy1401.md).

Installation

Your system might require specific steps to install mpi4py and/or cupy depending on your hardware. In that case, use your system's recommended instructions to install these dependencies first.

pip install superneuroabm

This pulls in sagesim==0.7.0.

Quick Start

from superneuroabm.model import NeuromorphicModel

model = NeuromorphicModel()

# Two LIF somas
pre = model.create_soma(breed="lif_soma", config_name="config_0")
post = model.create_soma(breed="lif_soma", config_name="config_0")

# External drive into `pre` (pre_soma_id=-1 means "external input"), and pre -> post
drive = model.create_synapse(
    breed="single_exp_synapse", pre_soma_id=-1, post_soma_id=pre, config_name="config_0"
)
model.create_synapse(
    breed="single_exp_synapse", pre_soma_id=pre, post_soma_id=post, config_name="config_0"
)

# Compile step functions and allocate GPU buffers
model.setup()

for tick in (2, 20, 40):
    model.add_spike(synapse_id=drive, tick=tick, value=1)

model.simulate(ticks=200)

print("pre  spikes:", model.get_spike_times(soma_id=pre))
print("post spikes:", model.get_spike_times(soma_id=post))

Breed and config names come from superneuroabm/component_base_config.yaml; pass your own YAML with NeuromorphicModel(user_config=...) to override or add parameter sets.

Tutorials

notebook what it covers
tutorials/00_simple_heterogenous_network.ipynb building a heterogeneous network by hand, injecting spikes, reading spike times and internal state histories
tutorials/01_superneuroabm_digits.ipynb a two-layer feedforward SNN on the sklearn 8x8 digits, trained with semi-supervised bounded STDP and evaluated with spike-count readout

Tutorial 01 brings its own components — tutorials/user_customized_lif.py and tutorials/user_customized_stdp.py — registered on the model at runtime, with no changes to the installed package. See docs/CUSTOM_COMPONENTS.md for the full pattern.

Runnable scripts live in examples/, including a Brunel network generator and a Masquelier 2008 STDP replication.

Unit Tests

python -m pytest tests/

The MPI consistency test compares multi-rank spike times against the single-rank baseline and needs more than one GPU:

srun -A <account> -q debug -N1 -n2 -c7 --gpu-bind=closest \
     python -m pytest tests/test_mpi_comparison.py

Performance

Measured on Frontier (OLCF), one MPI rank per MI250X GCD, using a Brunel network on a periodic 3D lattice with a bounded connection radius:

  • Weak scaling — at 12,500 neurons per GPU held constant, per-step parallel efficiency stays within 99–100 % from 64 to 2048 GPUs (a 32x span) at in-degrees K = 1000, 2000 and 4000. The largest point is 25.6 M neurons on 2048 GPUs.
  • Strong scaling — a fixed 204,800-neuron problem reaches 13.4x speedup in wall time on 64x the GPUs (16 to 2048).

Methodology, the complete measured record, and the caveats are in scaling_analysis/paper_figures/README.md; the design discussion behind the wiring convention is in docs/BRUNEL_SCALING.md. Reproduce with scaling_analysis/weak_3d_chunk.sh and scaling_analysis/strong_3d_chunk.sh.

Documentation

docs/FUNCTIONALITY_GUIDE.md the API surface, end to end
docs/CUSTOM_COMPONENTS.md bringing your own soma, synapse and learning rule
docs/DATA_FORMAT.md how agent properties are laid out
docs/DISTRIBUTED_SIMULATION.md running across ranks
docs/PARTITION_LOADING.md distributed construction from partition files
docs/SINGLE_GPU_NETWORK_CONSTRUCTION.md bulk construction on one GPU
docs/BRUNEL_SCALING.md Brunel network generation and the scaling study
docs/SPIKE_RECORDING_NOTES.md what is recorded, and when
docs/CPU_GPU_DATA_FLOW.md, docs/CPU_GPU_SYNC_DESIGN_NOTES.md host/device transfer and synchronization design

Publications

Date, Prasanna, Chathika Gunaratne, Shruti R. Kulkarni, Robert Patton, Mark Coletti, and Thomas Potok. "SuperNeuro: A fast and scalable simulator for neuromorphic computing." In Proceedings of the 2023 International Conference on Neuromorphic Systems, pp. 1-4. 2023.

License

BSD-3-Clause License - Oak Ridge National Laboratory

Metadata

Release files for superneuroabm 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for superneuroabm 1.1.0
File Size Uploaded
superneuroabm-1.1.0.tar.gz 104.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for superneuroabm 1.1.0
File Interpreter ABI Platform
superneuroabm-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 173.5 kB

Release files / superneuroabm-1.1.0.tar.gz

Download URL superneuroabm-1.1.0.tar.gz
Size 104.7 kB
Tags Source
SHA-256 checksum
How to use checksums
968908ca0f22d13c62608db4bda9ca7ed65d0d00a71c0f85f3f45b423494c8d2
BLAKE2b-256 checksum
How to use checksums
2420816fc463eea6a237a4c7d1c120aec0d73674e0e2e9be4e234e770051496f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release files / superneuroabm-1.1.0-py3-none-any.whl

Download URL superneuroabm-1.1.0-py3-none-any.whl
Size 68.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
46b647503779a8b757291ae49938b09f13421b26684bf13d6832a4894f082433
BLAKE2b-256 checksum
How to use checksums
94dedc2df4df053c7a4d7f215cec4cb0340b5cf2b44fb14cb7a537a38981477c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page