CarpetX: only multi-thread MFIter if AMReX supports it #176
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.
This adds a couple of
#ifdef AMP_USE_OPENMP
aroundpragma omp parallel
to avoid calling AMReX functions from within OpenMP parallel sections if AMReX itself is not compiled with OpenMP support (and thus eg fails to check for nested MFIter instantiations only on a single thread).The code that would trigger this is in AMReX
Src/Base/AMReX_MFIter.cpp
:and AMReX user code like this:
will trigger the error since the
parallel
section causes aMFIter
object to be created in each thread and withoutAMREX_USE_OMP
AMReX will trigger thedepth == 1
test on all threads instead of just the master thread.