Skip to content

OP-DSL/OPS

Repository files navigation

OPS

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.

Build Status Documentation Status

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++ APIs
  • apps: 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 applications
  • cmake : cmake installation files
  • makefiles : makefile based installation files
  • doc: Documentation

Documentation

OPS documentation can be viewed on Read the Docs.

Citing

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}}

Support and Contact

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.

Contributing

To contribute to OPS please use the following steps :

  1. Clone this repository (on your local system)
  2. Create a new branch in your cloned repository
  3. Make changes / contributions in your new branch
  4. 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.

License

OPS is released as an open-source project under the BSD 3-Clause License. See the file called LICENSE for more information.

About

OPS is an API with associated libraries and preprocessors to generate parallel executables for applications on mulit-block structured meshes.

Resources

License

Stars

Watchers

Forks

Packages

No packages published