Python extension language using accelerators.
Welcome to Pyccel
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:
- Convert a Python code (or project) into a Fortran
- 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):
- h5py (not available yet)
First of all, Pyccel requires a working Fortran compiler; it supports
- GFortran <https://gcc.gnu.org/fortran/>
- Intel® Fortran Compiler <https://software.intel.com/en-us/fortran-compilers>
- PGI Fortran <https://www.pgroup.com/index.htm>
In order to perform fast linear algebra calculations, Pyccel uses the following libraries:
- BLAS (Basic Linear Algebra Subprograms) <http://www.netlib.org/blas/>
- LAPACK (Linear Algebra PACKage) <http://www.netlib.org/lapack/>
Finally, Pyccel supports distributed-memory parallel programming through the Message Passing Interface (MPI) standard; hence it requires an MPI library like
- Open-MPI <https://www.open-mpi.org/>
- MPICH <https://www.mpich.org/>
- Intel® MPI Library <https://software.intel.com/en-us/mpi-library>
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/>.
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
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.
Support for Windows is experimental: <https://github.com/pyccel/pyccel/issues/194>.
Simply run, for a user-specific installation:
pip3 install --user pyccel
sudo pip3 install pyccel
for a system-wide installation.
pip3 install --user .
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.
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>
We are trying to maintain a list of known bugs, see bugs/README.rst
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size pyccel-0.9.6-py3-none-any.whl (248.0 kB)||File type Wheel||Python version py3||Upload date||Hashes View|
|Filename, size pyccel-0.9.6.tar.gz (343.5 kB)||File type Source||Python version None||Upload date||Hashes View|