Skip to content

shaunren/nengo_ocl

 
 

Repository files navigation

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, first make sure a fast version of Numpy is installed by following the instructions in the Nengo README.

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. Check the output to make sure everything installed correctly. Some dependencies (e.g. pyopencl) may require manual installation.

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.

About

OpenCL-based simulator for Nengo neural models

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.9%
  • Shell 0.1%