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
: DocumentationOPS documentation can be viewed on Read the Docs.
To cite OPS, please reference the following paper:
I. Z. Reguly, G. R. Mudalige and M. B. Giles, Loop Tiling in Large-Scale Stencil Codes at Run-Time with OPS, in IEEE Transactions on Parallel and Distributed Systems, vol. 29, no. 4, pp. 873-886, 1 April 2018, doi: 10.1109/TPDS.2017.2778161.
@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 :
develop
branch of the OPS repositoryThe 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.