NiC (Neurons in CUDA)

Main goal of NiC is to simulate and visualise the persistent sodium and potassium neuron model (Na-K) on irregular meshes with cable equation. Since that kind of computation requires high-performance workstations we are using NVIDIA CUDA technology.


NiC contains the visual editor in which we can construct our neural network. We have two basic building blocks: spheres and cylinders. Somas are represented as spheres and dendrites as cylinders. After modeling a network we can build mesh from it. That process uses the Marching Cubes algorithm.


If we have a model of single neuron or neural network in one of the most popular graphic formats (*.dae, *.3ds, *.ase, *.ply, etc.) then we can skip the previous step and load mesh directly from the file. After loading we can subdivide and rescale our object. We may also add some noise to it. To keep the visualisation interactive we should not significantly exceed one million faces in our mesh.


In the simulation phase we can inject some current to our model. We are able to set voltage and if we like, we can to send only one impulse or continuous current. We can transfer computations between CPU and GPU. For large models on graphics card the simulations are from 9 (GeForce 8800 GT) to 30 (GeForce GTX 480) times faster.

This project has been developed during Mathematical Foundations of Neuroscience classes in the winter semester 2009/2010.

Recommended minimum requirements:

  • Graphic card with support for OpenGL 2.1
  • CUDA capable GPU is highly suggested, when using NVIDIA CUDA you need:
    • driver supporting CUDA 3.0 (driver version 195.39 or newer)
    • CUDA Toolkit 3.0 (optional)
  • Microsoft Windows XP/Vista or 7
  • XBOX 360 controller (optional)

Source code is written in D, kernels are in C for CUDA. Graphical User Interface is using Hybrid.

Screenshots: www
Stable build: [exe] [zip]
Source code: [hg] [zip]