OPS gpu programming

A summary comparison from yesterday’s discussion

OPS Kokkos
Domain-specific language for structured grids & particle/grid interactions Higher level abstraction (Programming modeling that enables performance portability)
Features: Features:

- Automatic memory management
- Built-in MPI support
- Functions for handling iterations
- Performance is tuned
- Automatic support of multiple GPUs
- Performance updates can benefit the whole community

- User-defined memory layout
- No built-in MPI support; user must provide MPI support
- Parallel patterns (“directives”) to handle iterations
- User can tune parallel performance
- Multiple GPUs not automatically supported (??)
- Performance updates may not be passed to the whole community

This summary may need to be updated in the future.

Here’s an overview / hierarchy of the various methods of adding parallelism from the EXCALIBUR project

And some of the details on the relevant sections:

And for DSLs:

The template based kokkos uses modern C++, much like MercuryDPM so could be a good match for the current architecture and may be easier to integrate. Several other particle based DSLs mentioned here - would these not be much more appropriate than OP-DSLs?

I’m struggling to understand the OPS suggestion, when there appears to be an whole other set of particle-method specifc DSLs that we should perhaps be considering? I don’t know much about these but they seem like interesting starting points?

2 Likes