All Projects → stfc → PSyclone

stfc / PSyclone

Licence: other
Domain-specific compiler for Finite Difference/Volume/Element Earth-system models in Fortran

Programming Languages

python
139335 projects - #7 most used programming language
fortran
972 projects
Makefile
30231 projects
Jinja
831 projects
Jupyter Notebook
11667 projects
shell
77523 projects

Projects that are alternatives of or similar to PSyclone

Feelpp
💎 Feel++: Finite Element Embedded Language and Library in C++
Stars: ✭ 229 (+241.79%)
Mutual labels:  parallel-computing, high-performance-computing, finite-elements
Mfem
Lightweight, general, scalable C++ library for finite element methods
Stars: ✭ 667 (+895.52%)
Mutual labels:  parallel-computing, high-performance-computing, finite-elements
Pyhpc Benchmarks
A suite of benchmarks to test the sequential CPU and GPU performance of most popular high-performance libraries for Python.
Stars: ✭ 119 (+77.61%)
Mutual labels:  parallel-computing, high-performance-computing
Core
parallel finite element unstructured meshes
Stars: ✭ 124 (+85.07%)
Mutual labels:  parallel-computing, finite-elements
Opencoarrays
A parallel application binary interface for Fortran 2018 compilers.
Stars: ✭ 151 (+125.37%)
Mutual labels:  parallel-computing, high-performance-computing
Kokkos
Kokkos C++ Performance Portability Programming EcoSystem: The Programming Model - Parallel Execution and Memory Abstraction
Stars: ✭ 744 (+1010.45%)
Mutual labels:  parallel-computing, high-performance-computing
Arraymancer
A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends
Stars: ✭ 793 (+1083.58%)
Mutual labels:  parallel-computing, high-performance-computing
Dash
DASH, the C++ Template Library for Distributed Data Structures with Support for Hierarchical Locality for HPC and Data-Driven Science
Stars: ✭ 134 (+100%)
Mutual labels:  parallel-computing, high-performance-computing
Graphit
GraphIt - A High-Performance Domain Specific Language for Graph Analytics
Stars: ✭ 254 (+279.1%)
Mutual labels:  parallel-computing, high-performance-computing
Ngsolve
Netgen/NGSolve is a high performance multiphysics finite element software. It is widely used to analyze models from solid mechanics, fluid dynamics and electromagnetics. Due to its flexible Python interface new physical equations and solution algorithms can be implemented easily.
Stars: ✭ 171 (+155.22%)
Mutual labels:  parallel-computing, finite-elements
Sundials
SUNDIALS is a SUite of Nonlinear and DIfferential/ALgebraic equation Solvers. This is a mirror of current releases, and development will move here eventually. Pull requests are welcome for bug fixes and minor changes.
Stars: ✭ 194 (+189.55%)
Mutual labels:  parallel-computing, high-performance-computing
raccoon
Massively parallel FEM code for phase-field for fracture by Dolbow Lab at Duke University
Stars: ✭ 21 (-68.66%)
Mutual labels:  parallel-computing, finite-elements
Taskflow
A General-purpose Parallel and Heterogeneous Task Programming System
Stars: ✭ 6,128 (+9046.27%)
Mutual labels:  parallel-computing, high-performance-computing
ParallelUtilities.jl
Fast and easy parallel mapreduce on HPC clusters
Stars: ✭ 28 (-58.21%)
Mutual labels:  parallel-computing, high-performance-computing
Elmerfem
Official git repository of Elmer FEM software
Stars: ✭ 523 (+680.6%)
Mutual labels:  parallel-computing, finite-elements
Batchtools
Tools for computation on batch systems
Stars: ✭ 127 (+89.55%)
Mutual labels:  parallel-computing, high-performance-computing
PyMFEM
Python wrapper for MFEM
Stars: ✭ 91 (+35.82%)
Mutual labels:  parallel-computing, finite-elements
MOT
Multi-threaded Optimization Toolbox
Stars: ✭ 28 (-58.21%)
Mutual labels:  parallel-computing, high-performance-computing
Geni
A Clojure dataframe library that runs on Spark
Stars: ✭ 152 (+126.87%)
Mutual labels:  parallel-computing, high-performance-computing
opensbli
A framework for the automated derivation and parallel execution of finite difference solvers on a range of computer architectures.
Stars: ✭ 56 (-16.42%)
Mutual labels:  parallel-computing, high-performance-computing

Introduction

Welcome to PSyclone. PSyclone is a code generation and transformation system that generates appropriate code for the PSyKAl code structure developed in the GungHo project. It is also capable of working with existing Fortran code.

Please see psyclone.pdf in this directory (or on ReadTheDocs) for more information. If you would prefer to build the documentation, please see the README file in the "doc" directory.

Try it on Binder

Some of the examples are available as Jupyter notebooks. These may be launched using Binder from the links below. (Note that the first time this is done, Binder has to construct a Container and install the necessary software. This can take several minutes. You can track its progress by clicking the 'show' link next to the 'Build logs' heading.)

  • Binder Uses PSyclone's NEMO API to process some simple Fortran code, display the resulting PSyIR and then re-generate Fortran.

  • Binder Uses PSyclone's GOcean API to process example code that conforms to the PSyKAl separation of concerns. Transformations are applied in order to fuse various loops before parallelising the result with OpenMP.

  • Binder demonstrates the generation of a DAG for the PSy layer of the previous example.

Tutorial

The PSyclone tutorial may be found in the tutorial directory. Since part of this takes the form of a series of Jupyter notebooks, it too may be launched on Binder.

Installation

If you are reading this then you have presumably not already installed PSyclone from the Python Package Index (https://pypi.python.org/pypi). That being so, you can install this copy of PSyclone by doing:

$ python setup.py install

or, if you do not have root access:

$ python setup.py install --prefix /my/install/path

Alternatively, if you have pip:

$ pip install .

For a user-local installation simply add the --user flag:

$ pip install --user .

This installs the PSyclone modules in ~/.local/lib/pythonX.Y/site-packages (where X.Y is the version of Python that you are using) and the 'psyclone' script in ~/.local/bin. Depending on your linux distribution, you may need to add the latter location to your PATH.

Structure

Path Description
bin/ Top-level driver scripts for PSyclone and the PSyclone kernel tool
changelog Information on changes between releases
doc/ Documentation source using Sphinx
examples/ Simple examples
psyclone.pdf Generated documentation
README.md This file
README.gource Information on how to generate a gource video from the repository
README.uml Information on how to create UML class diagrams from the source using pyreverse
src/psyclone The Python source code
src/psyclone/tests/ Unit and functional tests using pytest
tutorial/notebooks Tutorial using Jupyter notebooks
tutorial/practicals Hands-on exercises using a local installation of PSyclone

Status

Build Status

codecov

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].