Pyccel

Pyccel: a Python-to-X transpiler for scientific high-performance computing - Published in JOSS (2023)

https://github.com/pyccel/pyccel

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    4 of 56 committers (7.1%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

dsl fortran hpc mpi openacc openmp python python3 sympy transpiler
Last synced: 4 months ago · JSON representation ·

Repository

Python extension language using accelerators

Basic Info
Statistics
  • Stars: 375
  • Watchers: 13
  • Forks: 62
  • Open Issues: 216
  • Releases: 54
Topics
dsl fortran hpc mpi openacc openmp python python3 sympy transpiler
Created over 8 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog Contributing License Citation Support Authors

README.md

Pyccel : write Python code, get Fortran speed

Linux unit tests MacOSX unit tests Windows unit tests Anaconda-Linux Anaconda-Windows Intel unit tests codacy DOI

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 or C code.
  2. Accelerate Python functions by converting them to Fortran or C functions.

Pyccel can be viewed as:

  • Python-to-Fortran/C 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/C. The following packages will be (partially) covered:

  • numpy
  • scipy

Pyccel's acceleration capabilities lead to much faster code. Comparisons of Python vs Pyccel or other tools can be found in the benchmarks repository. The results for the devel branch currently show the following performance on Python 3.10: Pyccel execution times for devel branch

If you are eager to try Pyccel out, we recommend reading our quick-start guide.

Citing Pyccel

If Pyccel has been significant in your research, and you would like to acknowledge the project in your academic publication, we would ask that you cite the following paper:

Bourne, Güçlü, Hadjout and Ratnani (2023). Pyccel: a Python-to-X transpiler for scientific high-performance computing. Journal of Open Source Software, 8(83), 4991, https://doi.org/10.21105/joss.04991

The associated bibtex can be found here.

Installation

Pyccel has a few system requirements to ensure that the system where it is installed is capable of compiling Fortran code. These requirements are detailed in the documentation. Once all requirements are satisfied, we recommend installing Pyccel into a Python virtual environment, which can be created with venv. Once the Python virtual environment is ready and activated, Pyccel can be easily installed using pip, the Python package installer. The simple command

sh pip install pyccel

will download the latest release of Pyccel from PyPI, the Python package index. Alternative installation methods such as installing from source, or installing with a docker, are described in the documentation.

Testing

It is good practice to test that Pyccel works as intended on the machine where it is installed. To this end Pyccel provides an extended test suite which can be downloaded from the official repository. Assuming the Python virtual environment is in the directory <ENV-PATH>, we activate it with

sh source <ENV-PATH>/bin/activate

and install the test component of the Pyccel package:

sh pip install "pyccel[test]"

This installs a few additional Python packages which are necessary for running the unit tests and getting a coverage report.

The recommended way of running the unit tests is simply using the command line tool pyccel-test which is installed with Pyccel. This runs all unit tests using Pytest under the hood.

Alternatively, if more fine-grained control over which tests are run is desired, e.g. for debugging local modifications to Pyccel, Pytest can be called directly using the commands provided in the documentation.

Contributing

We welcome any and all contributions.

There are many ways to help with the Pyccel project which are more or less involved. A summary can be found in the documentation.

We can also be contacted via the Pyccel Discord Server.

Owner

  • Name: Pyccel
  • Login: pyccel
  • Kind: organization

JOSS Publication

Pyccel: a Python-to-X transpiler for scientific high-performance computing
Published
March 09, 2023
Volume 8, Issue 83, Page 4991
Authors
Emily Bourne ORCID
CEA, IRFM, F-13108 Saint-Paul-lez-Durance, France
Yaman Güçlü ORCID
NMPP division, Max-Planck-Institut für Plasmaphysik, Garching bei München, Germany
Said Hadjout ORCID
NMPP division, Max-Planck-Institut für Plasmaphysik, Garching bei München, Germany, Dept. of Mathematics, Technische Universität München, Garching bei München, Germany
Ahmed Ratnani ORCID
Lab. MSDA, Mohammed VI Polytechnic University, Benguerir, Morocco
Editor
Daniel S. Katz ORCID
Tags
transpiler C language HPC scientific computing

Citation (CITATION.cff)

cff-version: 1.2.0
title: Pyccel
message: 'If you use this software, please cite the JOSS article.'
type: software
authors:
  - given-names: Ahmed
    family-names: Ratnani
    orcid: 'https://orcid.org/0000-0001-9035-1231'
    affiliation: University Mohammed VI Polytechnic (UM6P), Morocco
  - given-names: Yaman
    family-names: Güçlü
    orcid: 'https://orcid.org/0000-0003-2619-5152'
    affiliation: >-
      NMPP division, Max Planck Institute for Plasma Physics,
      Garching bei München, Germany
  - given-names: Emily
    family-names: Bourne
    orcid: 'https://orcid.org/0000-0002-3469-2338'
    affiliation: >-
      SCITAS, École polytechnique fédérale de Lausanne
      (EPFL), Switzerland
  - given-names: Said
    family-names: Hadjout
    orcid: 'https://orcid.org/0000-0003-3878-3146'
  - given-names: Mohamed Jalal
    family-names: Maaouni
    affiliation: University Mohammed VI Polytechnic (UM6P), Morocco
  - name: Pyccel team
repository-code: 'https://github.com/pyccel/pyccel'
url: 'https://github.com/pyccel/pyccel'
license: MIT
preferred-citation:
  type: article
  authors:
    - family-names: Bourne
      given-names: Emily
    - family-names: Güçlü
      given-names: Yaman
    - family-names: Hadjout
      given-names: Said
    - family-names: Ratnani
      given-names: Ahmed
  title: 'Pyccel: a Python-to-X transpiler for scientific high-performance computing'
  doi: 10.21105/joss.04991
  url: https://doi.org/10.21105/joss.04991
  pages: '4991'
  year: '2023'
  journal: 'Journal of Open Source Software'
  publisher:
    name: The Open Journal

GitHub Events

Total
  • Create event: 182
  • Commit comment event: 2
  • Release event: 1
  • Issues event: 341
  • Watch event: 22
  • Delete event: 182
  • Issue comment event: 2,101
  • Push event: 2,218
  • Pull request review event: 2,117
  • Pull request review comment event: 1,669
  • Pull request event: 375
  • Fork event: 16
Last Year
  • Create event: 182
  • Commit comment event: 2
  • Release event: 1
  • Issues event: 341
  • Watch event: 22
  • Delete event: 182
  • Issue comment event: 2,101
  • Push event: 2,218
  • Pull request review event: 2,117
  • Pull request review comment event: 1,669
  • Pull request event: 375
  • Fork event: 16

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 3,023
  • Total Committers: 56
  • Avg Commits per committer: 53.982
  • Development Distribution Score (DDS): 0.716
Past Year
  • Commits: 248
  • Committers: 16
  • Avg Commits per committer: 15.5
  • Development Distribution Score (DDS): 0.19
Top Committers
Name Email Commits
ratnania r****d@g****m 860
EmilyBourne l****e@g****m 675
saidhadjout s****b@l****r 529
ratnania a****r@i****e 301
Ratnani, Ahmed (ahr) a****i@i****e 278
Yaman Güçlü y****u@g****m 120
jalalium 5****m 26
mostafa 3****i 25
MenoIy 5****y 19
Mustapha Belbiad 6****d 18
saniQQ 4****Q 16
Christopher Albert a****t@a****t 14
ouhaddou nouredine o****e@g****m 13
Sboof 5****1 12
Noureddine Hamid n****d@s****a 10
Farouk ECH-CHAREF 6****f 10
Noureddine Hamid h****a@h****r 8
rmahjoubi 5****i 8
MostafaMamouni 3****i 7
Emmanuel Ferdman e****n@g****m 7
Abdechahid Ihya 5****a 7
Aymane Benaissa 4****i 5
Mohammed Kaddani l****i@g****m 5
Abdenouri Khaoula k****i@g****m 4
bauom 4****m 4
Youness Farini f****k@g****m 3
Priyabrata Mondal 9****o 3
shoaib-moeen 1****n 3
Max m****t@i****e 2
Mohammed Ayaz a****e@g****m 2
and 26 more...
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 534
  • Total pull requests: 909
  • Average time to close issues: 6 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 39
  • Total pull request authors: 47
  • Average comments per issue: 0.93
  • Average comments per pull request: 10.18
  • Merged pull requests: 709
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 187
  • Pull requests: 442
  • Average time to close issues: 21 days
  • Average time to close pull requests: 8 days
  • Issue authors: 9
  • Pull request authors: 11
  • Average comments per issue: 0.51
  • Average comments per pull request: 8.09
  • Merged pull requests: 361
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • EmilyBourne (335)
  • yguclu (40)
  • jalalium (31)
  • mustapha-belbiad (25)
  • Farouk-Echaref (11)
  • saidctb (10)
  • sboof911 (9)
  • max-models (8)
  • said-hadjout (6)
  • vadter (5)
  • EniddeallA (4)
  • Beliavsky (4)
  • rakati (3)
  • smazouz42 (3)
  • rmahjoubi (3)
Pull Request Authors
  • EmilyBourne (665)
  • jalalium (36)
  • mustapha-belbiad (30)
  • Farouk-Echaref (24)
  • yguclu (19)
  • smazouz42 (15)
  • emmanuel-ferdman (14)
  • sboof911 (10)
  • bauom (9)
  • shoaib-moeen (6)
  • mkaddani (6)
  • PriyabrataMo (6)
  • max-models (4)
  • Pinkyboi (4)
  • ohachim (3)
Top Labels
Issue Labels
bug (223) enhancement (205) Containers (97) good-first-issue (73) Language:C (62) Language:Fortran (60) internals (37) Classes (37) Language:Python (32) Type specification (21) documentation (16) Epic (14) urgent (13) blocked (10) Bot (10) Lists (8) regression bug (6) next release (6) Feature (6) help wanted (6) duplicate (3) good-second-issue (3) discussion_needed (2) Ready_to_merge (1)
Pull Request Labels
Ready_to_merge (477) Ready_for_review (199) urgent (55) next release (49) Containers (48) Bot (39) Classes (32) internals (26) bug (24) blocked (21) Feature (19) documentation (19) needs_initial_review (18) enhancement (12) Language:C (11) Lists (10) Type specification (10) Language:Ccuda (9) Language:Python (9) Language:Fortran (6) stale (5) discussion_needed (4) duplicate (3)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 3,010 last-month
  • Total dependent packages: 3
  • Total dependent repositories: 4
  • Total versions: 53
  • Total maintainers: 2
pypi.org: pyccel
  • Versions: 53
  • Dependent Packages: 3
  • Dependent Repositories: 4
  • Downloads: 3,010 Last month
Rankings
Stargazers count: 3.7%
Average: 6.6%
Downloads: 7.0%
Forks count: 7.2%
Dependent packages count: 7.4%
Dependent repos count: 7.7%
Maintainers (2)
Last synced: 4 months ago

Dependencies

.github/actions/check_for_pickled/action.yml actions
.github/actions/conda_installation/action.yml actions
.github/actions/coverage_collection/action.yml actions
.github/actions/coverage_install/action.yml actions
.github/actions/generate_bot_token/action.yml actions
.github/actions/linux_install/action.yml actions
.github/actions/macos_install/action.yml actions
.github/actions/post_completed/action.yml actions
.github/actions/post_triggered/action.yml actions
.github/actions/pytest_parallel/action.yml actions
.github/actions/pytest_run/action.yml actions
.github/actions/pytest_run_python/action.yml actions
.github/actions/valgrind_run/action.yml actions
.github/actions/windows_install/action.yml actions
.github/workflows/anaconda_linux.yml actions
  • ./.github/actions/conda_installation * composite
  • ./.github/actions/coverage_collection * composite
  • ./.github/actions/coverage_install * composite
  • ./.github/actions/linux_install * composite
  • ./.github/actions/pytest_parallel * composite
  • ./.github/actions/pytest_run * composite
  • ./.github/actions/pytest_run_python * composite
  • actions/checkout v3 composite
  • actions/upload-artifact v3 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/anaconda_windows.yml actions
  • ./.github/actions/conda_installation * composite
  • ./.github/actions/pytest_run * composite
  • ./.github/actions/pytest_run_python * composite
  • ./.github/actions/windows_install * composite
  • actions/checkout v3 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/bench.yml actions
  • webfactory/ssh-agent v0.7.0 composite
.github/workflows/clean_up.yml actions
  • actions/checkout v3 composite
.github/workflows/comment_bot.yml actions
  • ./.github/actions/generate_bot_token * composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/coverage.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • codacy/codacy-coverage-reporter-action master composite
.github/workflows/docs.yml actions
  • ./compare/.github/actions/linux_install * composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/linux.yml actions
  • ./.github/actions/coverage_collection * composite
  • ./.github/actions/coverage_install * composite
  • ./.github/actions/linux_install * composite
  • ./.github/actions/pytest_parallel * composite
  • ./.github/actions/pytest_run * composite
  • ./.github/actions/pytest_run_python * composite
  • ./.github/actions/valgrind_run * composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
.github/workflows/macosx.yml actions
  • ./.github/actions/macos_install * composite
  • ./.github/actions/pytest_parallel * composite
  • ./.github/actions/pytest_run * composite
  • ./.github/actions/pytest_run_python * composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/pickle.yml actions
  • ./.github/actions/check_for_pickled * composite
  • ./.github/actions/linux_install * composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/pickle_wheel.yml actions
  • ./.github/actions/check_for_pickled * composite
  • ./.github/actions/linux_install * composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/prepare_review_stage.yml actions
  • ./.github/actions/generate_bot_token * composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/pyccel_lint.yml actions
  • ./.github/actions/linux_install * composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/pylint.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/review_bot.yml actions
  • ./.github/actions/generate_bot_token * composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/spelling.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/welcome.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/windows.yml actions
  • ./.github/actions/pytest_parallel * composite
  • ./.github/actions/pytest_run * composite
  • ./.github/actions/pytest_run_python * composite
  • ./.github/actions/windows_install * composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
pyproject.toml pypi
setup.py pypi
.github/actions/add_remote/action.yml actions
.github/actions/intel_install/action.yml actions
  • actions/cache/restore v3 composite
  • actions/cache/save v3 composite
.github/workflows/intel.yml actions
  • ./.github/actions/coverage_collection * composite
  • ./.github/actions/coverage_install * composite
  • ./.github/actions/intel_install * composite
  • ./.github/actions/pytest_parallel * composite
  • ./.github/actions/pytest_run * composite
  • ./.github/actions/pytest_run_python * composite
  • ./.github/actions/valgrind_run * composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite