bugfix: DIV_BY_ZERO in MatchingFunctionSpacePartitionerLonLatPolygon #244
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.
What happened
FE_DIV_BY_ZERO reported by @cducher with following reproducer:
Environment
This was run on our HPC2020 system with relevant modules intel/2021.4, hpcx-openmpi/2.9.0
The reproducer is run on e.g. ecinteractive queue with
mpirun -np 2 --use-hwthread-cpus
.This seems to be equivalent to MPI_SIZE=2 and OMP_NUM_THREADS=2!
Reason
When using the MatchingFunctionSpacePartitionerLonLatPolygon for small grids with OpenMP,
we encounter a DIV_BY_ZERO.
This is due to the integer
chunk_size = grid.size() / (1000 * num_threads)
is computed as zero.In that case really it needs to be
chunk_size = grid.size()
.