/nengo_ocl

OpenCL-based simulator for Nengo neural models

Primary LanguagePythonOtherNOASSERTION

OpenCL-based Nengo Simulator

This project is an OpenCL-based simulator for brain models built using Nengo. It can be orders of magnitude faster than the reference simulator in nengo for large models.

Usage

To use the nengo_ocl project's OpenCL simulator, build a Nengo model as usual, but use nengo_ocl.Simulator when creating a simulator for your model:

import numpy as np
import matplotlib.pyplot as plt
import nengo
import nengo_ocl

# define the model
with nengo.Network() as model:
    stim = nengo.Node(np.sin)
    a = nengo.Ensemble(100, 1)
    b = nengo.Ensemble(100, 1)
    nengo.Connection(stim, a)
    nengo.Connection(a, b, function=lambda x: x**2)

    probe_a = nengo.Probe(a, synapse=0.01)
    probe_b = nengo.Probe(b, synapse=0.01)

# build and run the model
with nengo_ocl.Simulator(model) as sim:
    sim.run(10)

# plot the results
plt.plot(sim.trange(), sim.data[probe_a])
plt.plot(sim.trange(), sim.data[probe_b])
plt.show()

Dependencies and Installation

The requirements are the same as Nengo, with the additional Python packages mako and pyopencl (where the latter requires installing OpenCL).

General: * Python 2.7+ or Python 3.3+ (same as Nengo) * One or more OpenCL implementations (test with e.g. PyOpenCl)

A working installation of OpenCL is the most difficult part of installing Nengo OCL. See below for more details on how to install OpenCL.

Python packages: * NumPy * nengo * mako * PyOpenCL

In the ideal case, all of the Python dependencies will be automatically installed when installing nengo_ocl with

pip install nengo_ocl

If that doesn't work, then do a developer install to figure out what's going wrong.

Developer Installation

First, pip install nengo. For best performance, make sure a fast version of Numpy is installed by following the instructions in the Nengo README. Currently, nengo_ocl is compatible with Nengo 2.0.x, supporting most features.

Once Nengo is installed, install the remaining dependencies:

pip install networkx mako pyopencl

This repository can then be installed with:

git clone https://github.com/nengo/nengo_ocl.git
cd nengo_ocl
python setup.py develop --user

If you’re using a virtualenv (recommended!) then you can omit the --user flag.

Installing OpenCL

How you install OpenCL is dependent on your hardware and operating system. A good resource for various cases is found in the PyOpenCL documentation:

Below are instructions that have worked for the Nengo OCL developers at one point in time.

AMD OCL on Debian Unstable

On Debian unstable (sid) there are packages in non-free and contrib to install AMD's OCL implementation easily. Actually, the easiest thing would be to apt-get install python-pyopencl. But if you're using a virtual environment, you can sudo apt-get install opencl-headers libboost-python-dev amd-opencl-icd amd-libopencl1 and then pip install pyopencl.

Nvidia OCL on Debian/Ubuntu Linux

On Debian unstable (sid) there are packages for installing the Nvidia OpenCL implementation as well.

sudo apt-get install nvidia-opencl-common nvidia-libopencl1

Ensure that the Nvidia driver version matches the OpenCL library version. You can check the Nvidia driver version by running nvidia-smi in the command line. You can find the OpenCL library version by looking at the libnvidia-opencl.so.XXX.XX file in the /usr/lib/x86_64-linux-gnu/ folder.

Intel OCL on Debian/Ubuntu Linux

The Intel SDK for OpenCL is no longer available. Intel OpenCL drivers can be found on Intel's website. See the PyOpenCL wiki for instructions.