Download Latest Version neuranep-0.9_124.tgz (1.8 MB)
Email in envelope

Get an email when there's a new version of neuranep

Home
Name Modified Size InfoDownloads / Week
README 2015-04-09 5.1 kB
neuranep-0.9_124.tgz 2015-04-09 1.8 MB
Totals: 2 Items   1.8 MB 0
NeuraNEP -- Neural Network Engineering Platform

ABOUT

NeuraNEP is a distributed processing system. It provides the infrastructure to run large numbers of microthreads in parallel, managing their initialization, serialization, scheduling (eg, sleep/wake) and message passing. Microthreads are simple and lightweight processes that are too small to justify allocation of a dedicated operating system thread, but yet that require or benefit from parallelization. NeuraNEP was designed to run hundreds of thousands or millions of microthreads at a time by distributing these jobs across available cores in a CPU and across CPUs in a cluster. Parallelism is transparent to microthreads.

NeuraNEP was designed to support research and development of neural networks that have real-world applications. NeuraNEP derives from SpikeOS (sourceforge.net/projects/spikeos). SpikeOS was designed to simulate neural networks of arbitrary size and complexity for use in computational modeling. NeuraNEP has the same functional capabilities as SpikeOS and it can still be used to simulate biological networks. NeuraNEP represents a thorough overhaul of SpikeOS however, addressing several of its weaknesses and annoyances. It provides a more usable platform for engineering research.

NeuraNEP uses a library of precompiled modules (plugins) to generate networks and uses lua scripts to define and initialize these networks. Networks can be saved (serialized) and run again later, continuing from the save point.

The messaging interface in NeuraNEP is much more robust than that typically found in neural network simulators, with messages able to store many arbitrary pieces of data (e.g., compare to NEST or NEURON), enhancing information transfer and making bidirectional information exchange between microthreads possible. Microthreads in NeuraNEP can be designed to perform a much wider variety of tasks than can be achieved in traditional simulators. A microthread can represent an individual neuron or an entire population of neurons, and it can even manage computing hardware and operating system resources (eg, DAQ).

Parallelism is transparent to microthreads. All microthreads advance using a common clock and all are able to communicate directly with one another. Message delivery is guaranteed, with message latency predictable and being no more than two clock cycles -- all messages between jobs within a group are delivered the next clock cycle, and messages between groups are delivered at the beginning of the second clock cycle. This is regardless of whether NNEP is running on a single workstation or across a cluster using MPI. Synchronous and reliable behavior was a design requirement, to remove one element of variability during research and development. Asynchronous behavior can be simulated if this behavior is desired, requiring minor changes to the kernel. Similarly, message passing can also be made unreliable.

-----------------------------------------------------------------------
INSTALLATION

Download the source code, decompress the archive, CD into the head directory, and type:

  make external_libs
  make main

If the compiler complains about SSE3 not being available, type 'make main' again and that should fix it. 

The installation directory is assumed to be where the archive was decompressed and built. The only known limitation for moving NeuraNEP to a more central location (eg, /usr/local) is that the location of the module directory is hard-coded. This can be changed by modifying Makefile.inc to include -DMODULE_DIR=/usr/local/nnep/modules in the compile flags. The location of the main executible (nnep_runtime) and the lua scripts aren't important. Or at least shouldn't be.

When compiling to run on a single computer (workstation, laptop, etc), compiling and running NeuraNEP should only require a standard C/C++ development environment. To run it on a cluster using MPI, the MPI libraries must of course be installed, and Makefile.inc must be modified by uncommenting the line "USE_MPI = 1". NeuraNEP relies on sqlite and lua and the source code for these libraries is included in the NNEP distribution (under external/). They are compiled by typing 'make external_libs'.

There is minimal documentation. At present, the best way to explore and use NeuraNEP is to study the files in 'src/' and the lua scripts in 'runtime/' (see also runtime/test-cases.txt). The test scripts are to check different system components. They should be easy to follow and leverage from to do more interesting things. Scripts in 'test/combinatoric' are part of an active research project and provide a real-world example of neuranep in use.

Some API documentation can be generated using doxygen. To create this, cd to the include directoriy and type 'doxygen oxykernel.cfg' (assuming that you have doxygen installed).

To run a script, cd to the 'runtime/' directory and type

  ./nnep_runtime <script_name> <required params> [optional params]

Several scripts in the 'runtime/combinatoric' and 'test' directories can be run directly, eg, './scriptname.lua <params>'.


Source: README, updated 2015-04-09