Introduction

Overview

OPS (Oxford Parallel library for Structured mesh solvers) is a high-level embedded domain specific language (eDSL) for writing multi-block structured mesh algorithms, and the corresponding software library and code translation tools to enable automatic parallelization on multi-core and many-core architectures. Multi-block structured meshes consist of an unstructured collection of structured meshes. The OPS API is embedded in C/C++ and Fortran.

The current OPS eDSL supports generating code targeting multi-core/multi-threaded CPUs, many-core GPUs and clusters of CPUs and GPUs using a range of parallelization models including SIMD vectorization, OpenMP, CUDA, HIP, SYCL, OpenMP offload and their combinations with MPI. Various optimizations for each parallelization can be generated automatically, including cache blocking tiling to improve locality. The OPS API and library can also be used to solve multi-dimensional tridiagonal systems using an optimized tridsolver library.

These pages provide detailed documentation on using OPS, including an installation guide, developing and running OPS applications, the OPS API, developer documentation and performance tuning.

Applicability

What Kind of Codes Suit OPS-DSL?

OPS is designed specifically for applications operating on multi-block structured grids and using explicit solvers. It provides a clean abstraction for stencil-based computations over structured domains, allowing automatic parallelization and performance portability across CPUs, GPUs, and distributed systems.

Suitable Application Types

OPS-DSL is best suited for:

  • Multi-block structured mesh codes with regular grid topology

  • Explicit time-stepping solvers

  • Algorithms based on stencil computations

  • Applications with static data dependencies and regular iteration patterns

Typical domains:

  • Computational Fluid Dynamics (CFD)

  • Finite Difference Time Domain (FDTD) methods

  • Heat transfer

  • Shallow water models

Limitations / Unsuitable Use Cases

OPS is not suitable for:

  • Unstructured grid-based applications
    → For these, the OP2 DSL is a more appropriate framework.

  • Implicit solvers, where the global data dependencies and sparse matrix assembly patterns are generally not well-suited to OPS’s local update model.

    • However, OPS does support certain classes of implicit problems—specifically tridiagonal systems—through integration with a third-party tridiagonal solver library.

    • Example applications such as adi, adi_burger, and adi_burger_3D in the OPS/apps/c directory demonstrate the use of the tridiagonal solver via the OPS API and can serve as useful references for users interested in implementing similar methods.

  • Adaptive Mesh Refinement (AMR) techniques, where the grid structure is dynamic and hierarchical, breaking the assumptions of regular, structured block iteration used in OPS.

Licensing

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

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

Full list of publications from the OPS project can be found in the Publications section.

Support

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 OP-DSL team.

Funding

The development of OPS was in part supported by the UK Engineering and Physical Sciences Research Council (EPSRC) grants EP/K038494/1 (“Future-proof massively-parallel execution of multi-block applications”), EP/J010553/1 (“Software for Emerging Architectures - ASEArch”), The UK Turbulence Consortium grant EP/T026170/1, The Janos Bolyai Research Scholarship of the Hungarian Academy of Sciences, the Royal Society through their Industry Fellowship Scheme (INF/R1/180012), and the Thematic Research Cooperation Establishing Innovative Informatic and Info-communication Solutions Project, which has been supported by the European Union and co-financed by the European Social Fund under grant number EFOP-3.6.2-16-2017-00013. Research funding support was also provided by the UK AWE under grants CDK0660 (“The Production of Predictive Models for Future Computing Requirements”), CDK0724 (“AWE Technical Outreach Programme”), AWE grant for “High-level Abstractions for Performance, Portability and Continuity of Scientific Software on Future Computing Systems” and the Numerical Algorithms Group NAG.

Hardware resources for development and testing provided by the Oak Ridge Leadership Computing Facility at the Oak Ridge National Laboratory, which is supported by the Office of Science of the U.S. Department of Energy under Contract No. DE-AC05-00OR22725, the ARCHER and ARCHER2 UK National Supercomputing Service, University of Oxford Advanced Research Computing (ARC) facility and through hardware donations and access provided by NVIDIA