Skip to content

Create OpenMP Offloading Compiler Feature Test Suite #12

@jtramm

Description

@jtramm

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

No labels
No labels

Type

No type

Projects

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions