Skip to main content

Python extension language using accelerators.

Project description

Welcome to Pyccel

build status Documentation Status

Pyccel stands for Python extension language using accelerators.

The aim of Pyccel is to provide a simple way to generate automatically, parallel low level code. The main uses would be:

  1. Convert a Python code (or project) into a Fortran

  2. Accelerate Python functions by converting them to Fortran then calling f2py. For the moment, only f2py is available, but we are working on other solutions too (f2x and fffi)

Pyccel can be viewed as:

  • Python-to-Fortran converter

  • a compiler for a Domain Specific Language with Python syntax

Pyccel comes with a selection of extensions allowing you to convert calls to some specific python packages to Fortran. The following packages will be covered (partially):

  • numpy

  • scipy

  • mpi4py

  • h5py (not available yet)

Requirements

First of all, Pyccel requires a working Fortran compiler; it supports

In order to perform fast linear algebra calculations, Pyccel uses the following libraries:

Finally, Pyccel supports distributed-memory parallel programming through the Message Passing Interface (MPI) standard; hence it requires an MPI library like

We recommend using GFortran and Open-MPI.

Pyccel also depends on several Python3 packages, which are automatically downloaded by pip, the Python Package Installer, during the installation process. In addition to these, building the documentation requires Sphinx <http://www.sphinx-doc.org/>.

Linux Debian/Ubuntu/Mint

To install all requirements on a Linux Ubuntu machine, just use APT, the Advanced Package Tool:

sudo apt update
sudo apt install gfortran
sudo apt install libblas-dev liblapack-dev
sudo apt install libopenmpi-dev openmpi-bin

Linux Fedora/CentOS/RHEL

Install all requirements using the DNF software package manager:

su
dnf check-update
dnf install gfortran
dnf install blas-devel lapack-devel
dnf install openmpi-devel
exit

Similar commands work on Linux openSUSE, just replace dnf with zypper.

Mac OS X

On an Apple Macintosh machine we recommend using Homebrew <https://brew.sh/>:

brew update
brew install gcc
brew install openblas
brew install lapack
brew install open-mpi

This requires that the Command Line Tools (CLT) for Xcode are installed.

Windows

Support for Windows is experimental: <https://github.com/pyccel/pyccel/issues/194>.

Installation

From PyPi

Simply run, for a user-specific installation:

pip3 install --user pyccel

or:

sudo pip3 install pyccel

for a system-wide installation.

From sources

  • Standard mode:

    pip3 install --user .
  • Development mode:

    pip3 install --user -e .

this will install a python library pyccel and a binary called pyccel. Any required Python packages will be installed automatically from PyPI.

Reading the docs

You can read them online at <http://pyccel.readthedocs.io/>.

Alternatively, the documentation can be built automatically using Sphinx. First you will need to install a few additional Python packages:

pip3 install --user sphinx
pip3 install --user sphinxcontrib.bibtex
pip3 install --user git+git://github.com/saidctb/sphinx-execute-code

Then build the documentation with:

cd doc
make html

Then, direct your browser to _build/html/index.html.

Testing

Depending on the Python version, you can run tests/run_tests_py2.sh or tests/run_tests_py3.sh.

Continuous testing runs on travis: <https://travis-ci.org/ratnania/pyccel>

Known bugs

We are trying to maintain a list of known bugs, see bugs/README.rst

Contributing

TODO

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

pyccel-0.9.5.tar.gz (343.4 kB view hashes)

Uploaded Source

Built Distribution

pyccel-0.9.5-py3-none-any.whl (248.0 kB view hashes)

Uploaded Python 3

Supported by

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