[WIP] Use singleton to store warpx profiler parameter "do_device_synchronize" #4880
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Right now
Source/Utils/WarpXProfilerWrapper.H
includes the huge headerWarpX.H
, just because we need to passWarpX::do_device_synchronize
toABLASTR_PROFILE
.This PR avoids this issue by introducing a new singleton class
warpx::profiler::ProfileSettings
(singletons make sense for loggers and profilers in my opinion) that stores this parameter (it might store additional parameters in the future). So, during the initialization, the WarpX class simply calls the functionwarpx::profiler::ProfileSettings::InitProfileSettings(do_device_synchronize);
, and the parameterdo_device_synchronize
is stored insideProfileSettings
. This allows us to avoid the transitive inclusion ofWarpX.H
every time the profiler is used.In some cases, including
WarpX.H
(or other headers included byWarpX.H
) is now required becauseUtils/WarpXProfilerWrapper.H"
no longer includes such libraries.