atomic-hedgehog: A Python-based orchestration framework for OpenCL-accelerated simulation and data analysis, with applications to neurobiology

Cyrus Omar, Carnegie Mellon University

Neurobiological circuits operate in highly nonlinear and nonequilibrium regimes. Such dynamics have proven difficult to deconstruct with purely analytical treatments, which often must abstract away the features increasingly believed to be essential for neural processing. For example, our recent work demonstrates that a transient sensory-induced shift in the shape of the input-output transfer function of a cortical circuit changes the way in which correlated variability is modulated by that circuit. This quantity has been shown to have important implications for neural coding.

To explore systems such as these, simulations are increasingly being utilized. However, for the questions we hope to address, thousands of realizations of a circuit, each governed by tens of thousands of coupled differential equations, must be simulated. Moreover, these circuits produce a large volume of data to analyze, often interleaved with the progress of the simulation. Recent advances, leading to the recently finalized OpenCL standard, have promised to accelerate such tasks using a heterogeneous set of hardware, including GPUs, desktop CPUs and Cell processors. However, the tools remain difficult to approach.

I will present a Python-based orchestration framework intended to reduce inessential complexity and promote code reuse. A simulation is organized as a tree of lightweight, composable components, each of which autonomously manages its own code generation and memory management needs. Most aspects of the underlying OpenCL implementation are intentionally exposed to each component, which I will argue is a necessary and indeed useful feature of any abstraction layer due to OpenCL's distinct data-parallel computing model. Thus, utilizing Python enables rapid prototyping and console-based post hoc data analysis without sacrificing the efficiency of pure OpenCL main loops. I will illustrate this approach with examples drawn from my recent work.

The library is being developed publicly as an open source project:

Abstract Author(s): Cyrus Omar