OpenMC is currently targetting OpenMP 4.5 target offload as the main programming model for next generation platforms. The ECP science target is small enough that 1 MPI rank per GPU is doable, but that's not the only thing that OpenMC is aimed at.
More importantly, there is a need for a better API to allocate and transfer data to GPUs, in particular with respect to recursive data structures. We need to focus our work on that and make sure all the features are in place for this use case.
The goal is then to have full support for allocating, maintaining layouts, and moving data on a GPU:
First CUDA support:
- areas: done
- layouts: merge request on the way (!81 (merged))
- dma: still on-going
- layouts for recursive data structures.
Then OpenCL support.
Also important, making sure that we use the CI to maintain the support stable.