Skip to main content

Runtime compiler for numerical Python.

Project description

Parakeet
====

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:

```python
import numpy as np
from parakeet import jit

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

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

@jit
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

@jit
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)

```



Install
====
You should be able to install Parakeet from its [PyPI package](https://pypi.python.org/pypi/parakeet/) by running:

pip install parakeet


Dependencies
====

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

* [treelike](https://github.com/iskandr/treelike)
* [nose](https://nose.readthedocs.org/en/latest/) for unit tests
* [NumPy and SciPy](http://www.scipy.org/install.html)

Optional (if using the LLVM backend):

* [llvmpy](http://www.llvmpy.org/#quickstart)



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](http://www.parakeetpython.com)
* Ask questions on the [discussion group](http://groups.google.com/forum/#!forum/parakeet-python)
* Watch the [Parakeet presentation](https://vimeo.com/73895275) from this year's [PyData Boston](http://pydata.org/bos2013), look at the [HotPar slides](https://www.usenix.org/conference/hotpar12/parakeet-just-time-parallel-accelerator-python) from last year
* Contact the [main developer](http://www.rubinsteyn.com) 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.map, parakeet.reduce)

Backends
===
Parakeet currently supports compilation to C or LLVM. To switch between these options change `parakeet.config.default_backend` to either "c" or "llvm".

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

parakeet-0.18.tar.gz (216.8 kB view details)

Uploaded Source

File details

Details for the file parakeet-0.18.tar.gz.

File metadata

  • Download URL: parakeet-0.18.tar.gz
  • Upload date:
  • Size: 216.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for parakeet-0.18.tar.gz
Algorithm Hash digest
SHA256 0890cc776797e9842bb7cf946bfdbda3a71ae0f956d14d80b13ad95afa92019c
MD5 2429f110076bacdfd0906d80ec6cd571
BLAKE2b-256 fbf3b1c6dc5464cffb17fecf1c4df4ed4379c5e2bb5f6cd3c9c5dd3e14ec7eda

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page