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


