Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/serge-sans-paille/pythran
Ahead of Time compiler for numeric kernels
https://github.com/serge-sans-paille/pythran
Last synced: 5 days ago
JSON representation
Ahead of Time compiler for numeric kernels
- Host: GitHub
- URL: https://github.com/serge-sans-paille/pythran
- Owner: serge-sans-paille
- License: bsd-3-clause
- Created: 2012-05-29T08:02:14.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2025-01-11T21:49:20.000Z (14 days ago)
- Last Synced: 2025-01-14T00:04:21.874Z (12 days ago)
- Language: C++
- Homepage: https://pythran.readthedocs.io
- Size: 35.1 MB
- Stars: 2,015
- Watchers: 49
- Forks: 193
- Open Issues: 138
-
Metadata Files:
- Readme: README.rst
- Changelog: Changelog
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
- awesome-mojo - Pythran
- awesome-list - Pythran - An ahead of time compiler for a subset of the Python language, with a focus on scientific computing. (Linear Algebra / Statistics Toolkit / General Purpose Tensor Library)
- starred-awesome - pythran - a claimless python to c++ converter (Python)
- awesome-python-machine-learning-resources - GitHub - 14% open · ⏱️ 19.07.2022): (Others)
- StarryDivineSky - serge-sans-paille/pythran - Of-Time - 预先编译) 编译器,大幅度提升性能。 (其他_机器学习与深度学习)
README
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**.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-numpy2. 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' > ~/.pythranrcDepending on your setup, you may need to add the following to your ``~/.pythranrc`` file::
[compiler]
CXX=g++-4.9
CC=gcc-4.9ArchLinux
=========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 browserExamples
--------See the ``pythran/tests/cases/`` directory from the sources.
Contact
-------Praise, flame and cookies:
- [email protected] -- register at https://www.freelists.org/list/pythran first!
- #pythran on OFTC, https://oftc.net
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.