Neurokernel: Emulating the Fruit Fly Brain

Project Descriptions

The fruit fly is an exceedingly useful model organism for studying the causal links between neural circuits and behavior due to the numerical tractability of its brain and its powerful neurogenetic toolkit. Recent progress made in identifying the connectome of the fruit fly and in characterizing the input and output functions of its sensory neural circuits raise the possibility of creating and emulating a functional model of the entire fly brain using the increasingly powerful commodity parallel computing technology available to computational neuroscientists. To this end, we are developing an open software architecture called Neurokernel for emulating neural circuit modules in the fly brain and their responses to recorded or simulated input stimuli on a massively parallel cluster of Graphics Processing Units (GPUs). A key feature of this architecture is its support for integrating instances of different neural circuit models potentially developed by independent researchers by requiring that the models’ implementations provide interoperable interfaces that adhere to the specification prescribed by the architecture. The Neurokernel software is open-source and freely available at

Students will utilize the power of GPUs to implement massively parallel simulations of neural circuits and architectures of the fruit fly brain. This effort comprises several new or ongoing projects that address problems such as the design and implementation of an asynchronous kernel for neural circuit model execution, dynamic GPU resource allocation, efficient GPU-to-GPU data transfer, scaling of computationally demanding models over multiple GPUs, and real-time task execution on GPU clusters. All projects provide students with a hands-on opportunity to experiment with and run code on a major supercomputer cluster built with Fermi and/or Kepler GPUs from NVIDIA. Descriptions of currently available individual projects appear below:


These neuroinformatics projects require introductory background (undergraduate/graduate level) in computer engineering, computer science, and computational neuroscience.

Students with extensive software engineering experience (systems software, parallel programming or computer graphics) are strongly encouraged to apply.

Qualified students should have completed the following Columbia coursework (or the equivalent).


All applicants must have taken (or be simultaneously registered in)

  • BMEB W4020 - Circuits in the Brain.

Applicants must also have taken at least two courses from the following list:

  • COMS W4118 - Operating Systems I or equivalent.
  • CSEE W4119 - Computer Networks or equivalent.
  • COMS W4130 - Parallel Programming or equivalent.
  • COMS W4156 - Advanced Software Engineering or equivalent.
  • COMS W4160 - Computer Graphics or equivalent.
  • COMS W4167 - Computer Animation or equivalent.

Programming Languages and Skills

  • Knowledge of Python is required.
  • Knowledge of C/C++ is strongly recommended.
  • Knowledge of NVIDIA's CUDA and/or OpenCL parallel programming environments is a plus.
  • Familiarity with command line usage in Linux or MacOSX is strongly recommended.
  • Familiarity with a distributed version control system (e.g., git or mercurial) is strongly recommended.