OPS (Oxford Parallel library for Structured mesh solvers) is a high-level embedded domain specific language for writing multi-block structured mesh algorithms, and the corresponding software library and code translation tools to enable automatic parallelisation on multi-core and many-core architectures. Multi-block structured meshes. The OPS API is embedded in C/C++ and Fortran.
This repository contains the implementation of the back-end library and the code-generator, and is structured as follows:
ops
: Implementation of the user and run-time OPS C/C++ APIsapps
: Application examples in C. These are examples of user application code and also include the target parallel code generated by the OPS code generato r.ops_translator
: Python/Clang/Fparser/jinja2 based OPS code generator for C/C++/Fortran API (New code generation engine). Note: Please refer to the instructions provided on Read the Docs. for details on Python dependencies required to utilize this code generation.ops_translator_legacy
: Python OPS code generator for C/C++/Fortran API (Old code generation engine)scripts
: example scripts for setting environmental variables and testing applicationscmake
: cmake installation filesmakefiles
: makefile based installation filesdoc
: Documentation
OPS documentation can be viewed on Read the Docs.
To cite OPS, please reference the following paper:
@ARTICLE{Reguly_et_al_2018,
author={Reguly, István Z. and Mudalige, Gihan R. and Giles, Michael B.},
journal={IEEE Transactions on Parallel and Distributed Systems},
title={Loop Tiling in Large-Scale Stencil Codes at Run-Time with OPS},
year={2018},
volume={29},
number={4},
pages={873-886},
doi={10.1109/TPDS.2017.2778161}}
The preferred method of reporting bugs and issues with OPS is to submit an issue via the repository’s issue tracker. Users can also email the authors directly by contacting the the OP-DSL team.
To contribute to OPS please use the following steps :
- Clone this repository (on your local system)
- Create a new branch in your cloned repository
- Make changes / contributions in your new branch
- Submit your changes by creating a Pull Request to the
develop
branch of the OPS repository
The contributions in the develop
branch will be merged into the master branch as we create a new release.
OPS is released as an open-source project under the BSD 3-Clause License. See the file called LICENSE for more information.