cuBNM logo

The cuBNM toolbox is designed for efficient biophysical network modeling of the brain on GPUs.

Overview

The toolbox simulates neuronal activity of network nodes based on biophysical network modeling. Currently two types of reduced Wong-Wang model based on Deco et al. 2014 and Deco et al. 2013 are implemented, but the modular design of the code makes it possible to include additional models in the future. The simulated activity of model neurons is fed into the Balloon-Windkessel model to calculate simulated BOLD signal. GPU code is equipped with functions to calculate the functional connectivity (FC) and functional connectivity dynamics (FCD) from the simulated BOLD signal, which can be compared to FC and FCD matrices derived from empirical BOLD signals to assess similarity (goodness-of-fit) of the simulated to empirical BOLD signal. The models may include global or regional free parameters which are fit to the empirical data. Regional parameters can be set to be homogeneous or can vary across nodes based on a parameterized combination of fixed maps or using independent free parameters for each node / group of nodes.

Parameter optimization of the model can be performed via various optimization algorithms, including grid (brute-force) search and evolutionary optimizers provided by the pymoo package. Indepdendent simulations (i.e., within the grid or each iteration of the evolutionary optimizers) are parallelized across the GPU “blocks” (one block per simualtion) and “threads” (one thread per node).

The toolbox also supports running the simulations on single- or multi-core CPUs, which will be used if no GPUs are detected or when requested by the user. However, the primary focus of the toolbox is on GPU usage.

Below is a simplified flowchart of the different components of the program, which is written in Python, C/C++, and CUDA:

Flowchart of the cuBNM program

Indices and tables