274 lines
7.7 KiB
Plaintext
274 lines
7.7 KiB
Plaintext
Metadata-Version: 2.4
|
|
Name: pythran
|
|
Version: 0.18.1
|
|
Summary: Ahead of Time compiler for numeric kernels
|
|
Author-email: Serge Guelton <serge.guelton@telecom-bretagne.eu>
|
|
License: Copyright (c) 2012, HPC Project and Serge Guelton
|
|
All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are met:
|
|
|
|
Redistributions of source code must retain the above copyright notice, this
|
|
list of conditions and the following disclaimer.
|
|
|
|
Redistributions in binary form must reproduce the above copyright notice,
|
|
this list of conditions and the following disclaimer in the documentation
|
|
and/or other materials provided with the distribution.
|
|
|
|
Neither the name of HPCProject, Serge Guelton nor the names of its
|
|
contributors may be used to endorse or promote products derived from this
|
|
software without specific prior written permission.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
|
|
|
Project-URL: Homepage, https://github.com/serge-sans-paille/pythran
|
|
Project-URL: Documentation, https://pythran.readthedocs.io
|
|
Project-URL: Changelog, https://pythran.readthedocs.io/en/latest/Changelog.html
|
|
Classifier: Development Status :: 4 - Beta
|
|
Classifier: Environment :: Console
|
|
Classifier: Intended Audience :: Developers
|
|
Classifier: Natural Language :: English
|
|
Classifier: Operating System :: POSIX :: Linux
|
|
Classifier: Operating System :: MacOS
|
|
Classifier: Programming Language :: Python :: 3
|
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
Classifier: Programming Language :: C++
|
|
Classifier: Topic :: Software Development :: Compilers
|
|
Classifier: Topic :: Software Development :: Code Generators
|
|
Requires-Python: >=3.7
|
|
Description-Content-Type: text/x-rst
|
|
License-File: LICENSE
|
|
License-File: AUTHORS
|
|
Requires-Dist: ply>=3.4
|
|
Requires-Dist: setuptools
|
|
Requires-Dist: gast~=0.6.0
|
|
Requires-Dist: numpy
|
|
Requires-Dist: beniget~=0.4.0
|
|
Provides-Extra: doc
|
|
Requires-Dist: numpy; extra == "doc"
|
|
Requires-Dist: nbsphinx; extra == "doc"
|
|
Requires-Dist: scipy; extra == "doc"
|
|
Requires-Dist: guzzle_sphinx_theme; extra == "doc"
|
|
Provides-Extra: test
|
|
Requires-Dist: ipython; extra == "test"
|
|
Requires-Dist: nbval; extra == "test"
|
|
Requires-Dist: cython; extra == "test"
|
|
Requires-Dist: wheel; extra == "test"
|
|
Requires-Dist: packaging; extra == "test"
|
|
Requires-Dist: ninja; extra == "test"
|
|
Requires-Dist: meson; extra == "test"
|
|
Dynamic: license-file
|
|
|
|
Pythran
|
|
#######
|
|
|
|
https://pythran.readthedocs.io
|
|
|
|
What is it?
|
|
-----------
|
|
|
|
Pythran is an ahead of time compiler for a subset of the Python language, with a
|
|
focus on scientific computing. It takes a Python module annotated with a few
|
|
interface descriptions and turns it into a native Python module with the same
|
|
interface, but (hopefully) faster.
|
|
|
|
It is meant to efficiently compile **scientific programs**, and takes advantage
|
|
of multi-cores and SIMD instruction units.
|
|
|
|
Until 0.9.5 (included), Pythran was supporting Python 3 and Python 2.7.
|
|
It now only supports Python **3.7** and upward.
|
|
|
|
Installation
|
|
------------
|
|
|
|
Pythran sources are hosted on https://github.com/serge-sans-paille/pythran.
|
|
|
|
Pythran releases are hosted on https://pypi.python.org/pypi/pythran.
|
|
|
|
Pythran is available on conda-forge on https://anaconda.org/conda-forge/pythran.
|
|
|
|
Debian/Ubuntu
|
|
=============
|
|
|
|
Using ``pip``
|
|
*************
|
|
|
|
1. Gather dependencies:
|
|
|
|
Pythran depends on a few Python modules and several C++ libraries. On a debian-like platform, run::
|
|
|
|
$> sudo apt-get install libatlas-base-dev
|
|
$> sudo apt-get install python-dev python-ply python-numpy
|
|
|
|
2. Install with ``pip``::
|
|
|
|
$> pip install pythran
|
|
|
|
Using ``mamba`` or ``conda``
|
|
****************************
|
|
|
|
1. Using ``mamba`` (https://github.com/conda-forge/miniforge) or ``conda`` (https://github.com/conda-forge/miniforge)
|
|
|
|
2. Run::
|
|
|
|
$> mamba install -c conda-forge pythran
|
|
|
|
or::
|
|
|
|
$> conda install -c conda-forge pythran
|
|
|
|
Mac OSX
|
|
=======
|
|
|
|
Using brew (https://brew.sh/)::
|
|
|
|
$> pip install pythran
|
|
$> brew install openblas
|
|
$> printf '[compiler]\nblas=openblas\ninclude_dirs=/usr/local/opt/openblas/include\nlibrary_dirs=/usr/local/opt/openblas/lib' > ~/.pythranrc
|
|
|
|
Depending on your setup, you may need to add the following to your ``~/.pythranrc`` file::
|
|
|
|
[compiler]
|
|
CXX=g++-4.9
|
|
CC=gcc-4.9
|
|
|
|
ArchLinux
|
|
=========
|
|
|
|
Using ``pacman``::
|
|
|
|
$> pacman -S python-pythran
|
|
|
|
|
|
Fedora
|
|
======
|
|
|
|
Using ``dnf``::
|
|
|
|
$> dnf install pythran
|
|
|
|
Windows
|
|
=======
|
|
|
|
Windows support is on going and only targets Python 3.5+ with either Visual Studio 2017 or, better, clang-cl::
|
|
|
|
$> pip install pythran
|
|
|
|
Note that using ``clang-cl.exe`` is the default setting. It can be changed
|
|
through the ``CXX`` and ``CC`` environment variables.
|
|
|
|
|
|
Other Platform
|
|
==============
|
|
|
|
See MANUAL file.
|
|
|
|
|
|
Basic Usage
|
|
-----------
|
|
|
|
A simple pythran input could be ``dprod.py``
|
|
|
|
.. code-block:: python
|
|
|
|
"""
|
|
Naive dotproduct! Pythran supports numpy.dot
|
|
"""
|
|
#pythran export dprod(int list, int list)
|
|
def dprod(l0,l1):
|
|
"""WoW, generator expression, zip and sum."""
|
|
return sum(x * y for x, y in zip(l0, l1))
|
|
|
|
|
|
To turn it into a native module, run::
|
|
|
|
$> pythran dprod.py
|
|
|
|
That will generate a native dprod.so that can be imported just like the former
|
|
module::
|
|
|
|
$> python -c 'import dprod' # this imports the native module instead
|
|
|
|
|
|
Documentation
|
|
-------------
|
|
|
|
The user documentation is available in the MANUAL file from the doc directory.
|
|
|
|
The developer documentation is available in the DEVGUIDE file from the doc
|
|
directory. There is also a TUTORIAL file for those who don't like reading
|
|
documentation.
|
|
|
|
The CLI documentation is available from the pythran help command::
|
|
|
|
$> pythran --help
|
|
|
|
Some extra developer documentation is also available using pydoc. Beware, this
|
|
is the computer science incarnation for the famous Where's Waldo? game::
|
|
|
|
$> pydoc pythran
|
|
$> pydoc pythran.typing
|
|
$> pydoc -b # in the browser
|
|
|
|
|
|
Examples
|
|
--------
|
|
|
|
See the ``pythran/tests/cases/`` directory from the sources.
|
|
|
|
|
|
Contact
|
|
-------
|
|
|
|
Praise, flame and cookies:
|
|
|
|
- pythran@freelists.org -- register at https://www.freelists.org/list/pythran first!
|
|
|
|
- #pythran on OFTC, https://oftc.net
|
|
|
|
- serge.guelton@telecom-bretagne.eu
|
|
|
|
The mailing list archive is available at https://www.freelists.org/archive/pythran/.
|
|
|
|
Citing
|
|
------
|
|
|
|
If you need to cite a Pythran paper, feel free to use
|
|
|
|
.. code-block:: bibtex
|
|
|
|
@article{guelton2015pythran,
|
|
title={Pythran: Enabling static optimization of scientific python programs},
|
|
author={Guelton, Serge and Brunet, Pierrick and Amini, Mehdi and Merlini,
|
|
Adrien and Corbillon, Xavier and Raynaud, Alan},
|
|
journal={Computational Science \& Discovery},
|
|
volume={8},
|
|
number={1},
|
|
pages={014001},
|
|
year={2015},
|
|
publisher={IOP Publishing}
|
|
}
|
|
|
|
|
|
Authors
|
|
-------
|
|
|
|
See AUTHORS file.
|
|
|
|
License
|
|
-------
|
|
|
|
See LICENSE file.
|