Installation

April 30, 2026 ยท View on GitHub

PSyclone logo

DOI Build Status codecov

PSyclone is a source-to-source Fortran compiler designed to programmatically optimise, parallelise and instrument HPC applications via user-provided transformation scripts. By encapsulating the performance-portability aspects (e.g. whether to parallelise with OpenMP or OpenACC), these scripts enable a separation of concerns between the scientific implementation and the optimisation choices. This allows each aspect to be explored and developed largely independently. Additionally, PSyclone supports the development of kernel-based Fortran-embedded DSLs following the PSyKAl model developed in the GungHo project.

PSyclone is currently used to support the LFRic mixed finite-element PSyKAl DSL for the UK MetOffice's next generation modelling system and the GOcean finite-difference PSyKAl DSL for a prototype 2D ocean modelling system. It is also used to insert GPU offloading directives into existing directly-addressed MPI applications such as the NEMO ocean model.

For more detailed information see the PSyclone Documentation.

Installation

You can install the latest release of psyclone from PyPI by using:

$ pip install psyclone

or, if you want an isolated installation in a python virtual environment:

$ python -m venv <virtual_env_name>
$ source <virtual_env_name>/bin/activate
$ pip install psyclone

Alternatively, you can install the latest upstream version of psyclone by cloning this repository and using:

$ pip install .

or in developer (editable) mode using

$ pip install -e .

PSyclone is also available in the Conda and Spack package managers.

For more information about the installation process see the Getting Going. section of the User Guide.

Structure

PathDescription
bin/Top-level driver scripts for PSyclone and the PSyclone kernel tool
changelogInformation on changes between releases
doc/Documentation source using Sphinx
examples/Simple examples
README.mdThis file
src/psycloneThe Python source code
src/psyclone/tests/Unit and functional tests using pytest
tutorial/practicalsHands-on exercises using a local installation of PSyclone