基于神经工程框架的opencl神经模拟
nengo-ocl的Python项目详细描述
基于opencl的nengo模拟器
这个项目是一个基于opencl的模拟器 使用nengo构建大脑模型。 它可以比参考模拟器快几个数量级 对于大型车型,请输入 nengo 。
用法
使用项目的opencl模拟器, 像往常一样建立一个Nengo模型, 但是,在为您的模型创建模拟器时,请使用 nengo ocl.simulator 。
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()
如果您在 nengo_gui中运行,请确保 pyopencl_ctx 已设置环境变量。如果未设置此变量,它将打开 一个交互式提示,它将导致 Nengo_gui 在构建过程中卡住。
依赖项和安装
这些要求与nengo相同,附加了python包 mako 和 pyopencl (后者需要安装opencl)。
概述:
- python 2.7+或python 3.3+(与nengo相同)
- 一个或多个opencl实现(使用pyopencl进行测试)
opencl的工作安装是最困难的 安装Nengo OCL的一部分。详情见下文 关于如何安装opencl。
python包:
- 努比
- 涅戈
- Mako
- pyopencl
在理想情况下,所有python依赖项 将在使用
安装 nengo_ocl 时自动安装pip install nengo-ocl
如果这不起作用,那么就让开发人员安装 找出问题所在。
开发人员安装
首先, pip安装nengo 。 为了获得最佳性能,首先确保安装了快速版本的numpy 按照 nengo自述文件
然后可以使用以下命令安装此存储库:
git clone https://github.com/nengo/nengo-ocl.git
cd nengo-ocl
python setup.py develop --user
如果您使用的是virtualenv(推荐!) 然后,您可以省略 --用户标志。 检查输出以确保所有设备安装正确。 某些依赖项(例如 pyopencl )可能需要手动安装。
安装opencl
如何安装opencl取决于您的硬件和操作系统。 pyopencl文档中提供了各种情况下的良好资源:
以下是为 Nengo OCL开发人员在一个时间点。
Debian上的AMD OCL不稳定
在debian unstable(sid)上,有非free和contrib格式的包 轻松安装AMD的OCL实现。 实际上,最简单的事情就是安装 python pyopencl 。 但是如果你使用虚拟环境,你可以 sudo apt get安装opencl头文件 然后 pip安装pyopencl
debian/ubuntu linux上的nvidia ocl
在Debian不稳定(SID)上有包 用于安装nvidia opencl实现。
sudo apt-get install nvidia-opencl-common nvidia-libopencl1
确保nvidia驱动程序版本与opencl库版本匹配。 您可以通过在 命令行。您可以通过查看 libnvidia-opencl.so.xxx.xx文件,位于 /usr/lib/x86_64-linux-gnu/ 文件夹中。
运行测试
从 nengo ocl 源目录中,运行:
py.test nengo_ocl/tests --pyargs nengo -v
这将使用默认上下文运行测试。如果你想用另一个 上下文,用 pyopencl_ctx 环境变量配置它 (运行python命令 pyopencl.create_some_context() 获取更多信息)。