Vipera is a compact, efficient and high-performance framework for delivering dynamic languages, such as Python, on micro-core architectures.
The framework includes support for running dynamic languages in a custom virtual machine and compilation to a native code abstract machine, both specifically designed for the tiny amounts of on-chip memory (32 – 64KB) found on micro-core devices. The Olympus native code generation framework includes a compiler toolset, with a plug-in architecture, and a compact runtime that supports dynamic code loading on micro-core accelerators.
The vPython programming language, included with Vipera, leverages the framework to provide an easy to use, productive, parallel version of the Python programming language, specifically designed for micro-cores. vPython programs can either be run standalone on micro-core devices, or functions within CPython applications running on the host can be offloaded as kernels.
The Vipera framework is supported on a number of micro-core architectures, including: RISC-V, Xilinx MicroBlaze and Adapteva Epiphany-III. Written entirely in C99, Vipera can be ported to other architectures that support a standard C compiler such as GCC or Clang.
The Vipera native code abstract machine and virtual machine only require between 4KB and 43KB of code memory and 1-2KB of data memory.
Vipera provides a rich set of support functions and communication primitives (point-to-point, broadcast, reductions, synchronisation etc.) to support parallel programming on micro-core devices. Vipera also provides simple integration between vPython applications and C frameworks e.g. Open MPI.
The Olympus native code abstract machine approaches (>90%) native C performance for scientific kernels, greatly closing the performance gap between kernels written in dynamic languages and those hand-crafted in C.
Free and Open Source
The Vipera framework, including compiler, abstract and virtual machines, and runtime libraries are available for use under the BSD 3-clause license. The BSD Open Source license allows you to use and modify Vipera for personal, commercial and educational use. The Vipera source code is available on GitHub.