skip to navigation
skip to content

Not Logged In

parakeet 0.19

Runtime compiler for numerical Python.

Latest Version: 0.23.2


Parakeet is a runtime accelerator for an array-oriented subset of Python.
If you're doing a lot of number crunching in Python,
Parakeet may be able to significantly speed up your code.

To accelerate a function, wrap it with Parakeet's **@jit** decorator:

import numpy as np
from parakeet import jit

x = np.array([1,2,3])
y = np.tanh(x * alpha) + beta

def fast(x, alpha = 0.5, beta = 0.3):
return np.tanh(x * alpha) + beta

def loopy(x, alpha = 0.5, beta = 0.3):
y = np.empty_like(x, dtype = float)
for i in xrange(len(x)):
y[i] = np.tanh(x[i] * alpha) + beta
return y

def comprehension(x, alpha = 0.5, beta = 0.3):
return np.array([np.tanh(xi*alpha) + beta for xi in x])

assert np.allclose(fast(x), y)
assert np.allclose(loopy(x), y)
assert np.allclose(comprehension(x), y)


You should be able to install Parakeet from its [PyPI package] by running:

pip install parakeet


Parakeet is written for Python 2.7 (sorry internet) and depends on:

* [treelike]
* [nose] for unit tests
* [NumPy and SciPy]

Optional (if using the LLVM backend):

* [llvmpy]

How does it work?
Your untyped function gets used as a template from which multiple *type specializations* are generated
(for each distinct set of input types).
These typed functions are then churned through many optimizations before finally getting translated into native code.

More information

* Read more about Parakeet on the [project website]
* Ask questions on the [discussion group]!forum/parakeet-python
* Watch the [Parakeet presentation] from this year's [PyData Boston] look at the [HotPar slides] from last year
* Contact the [main developer] directly

Supported language features

Parakeet cannot accelerate arbitrary Python code, it only supports a limited subset of the language:

* Scalar operations (i.e. "x + 3 * y")
* Control flow (if-statements, loops, etc...)
* Nested functions and lambdas
* Tuples
* Slices
* NumPy array expressions (i.e. "x[1:, :] + 2 * y[:-1, ::2]")
* NumPy array constructors (i.e. np.ones, np.empty, etc..)
* NumPy ufuncs (i.e. np.sin, np.exp, etc..)
* List literals (interpreted as array construction)
* List comprehensions (interpreted as array comprehensions)
* Parakeet's "adverbs" (higher order array operations like, parakeet.reduce)

Parakeet currently supports compilation to sequential C, multi-core C with OpenMP (default), or LLVM (deprecated). To switch between these options change `parakeet.config.backend` to one of:
* "c": lowers all parallel operators to loops, compile sequential code with gcc
* "openmp": also compiles with gcc, but parallel operators run across multiple cores (default)
* "cuda": launch parallel operations on the GPU (experimental)
* "llvm": older backend, has fallen behind and some programs may not work  
File Type Py Version Uploaded on Size
parakeet-0.19.tar.gz (md5) Source 2013-11-05 220KB
  • Downloads (All Versions):
  • 5 downloads in the last day
  • 193 downloads in the last week
  • 1204 downloads in the last month