-
Notifications
You must be signed in to change notification settings - Fork 0
Description
The GPU version of OpenMC uses OpenMP target offloading. This is a high level, pragma-based programming model that is implemented at the compiler level. While newer versions of the standard in theory support many advanced C++ features (e.g., virtual functions and polymorphism, STL support, custom data mappers, etc), different compilers may have different levels of support. As the original GPU porting effort for OpenMC started when OpenMP offloading was very new, very few advanced features were supported, so the GPU version of OpenMC currently has a number of areas that are lower level than is ideal for long term maintenance. For instance, we have refactored away from polymorphism, leading to lots of boilerplate code in several areas.
In this task, we create a small testing suite that excercises all the most advanced OpenMP features we'd like to use to make the GPU version of OpenMC higher level than it is now. This will allow us to determine which compilers and architectures support which features. Critically, this will allow us to upgrade the GPU port to a higher-level implementation that will be easier to maintain in the long term and will greatly reduce the code divergence between the GPU version and the main CPU-only branch. Lowering the code delta will make it much easier to merge these two branches.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status