View Issue Details

IDProjectCategoryView StatusLast Update
0002428OpenFOAM[All Projects] Bugpublic2017-01-20 10:52
ReporterhannesAssigned Tohenry 
PrioritynormalSeveritymajorReproducibilityalways
Status resolvedResolutionfixed 
Platformx86_64OSUbuntuOS Version16.04
Product Versiondev 
Fixed in Version 
Summary0002428: sampling using cloudSet hangs in parallel run
DescriptionWhen using a cloudSet in a parallel run, the program hangs in meshSearch.findCell

I have noticed this in a customized function object which uses a lot of cloudSets. But the issue also appears in the postProcess utility.
Steps To Reproduce* Download and unpack attached case "sample_test.tgz"
* Execute Allrun script
* postProcess hangs in parallel
TagsNo tags attached.

Activities

hannes

2017-01-11 11:56

reporter  

sample_test.tgz (1,413,868 bytes)

wyldckat

2017-01-16 00:56

updater   ~0007640

I've gotten deeper into the debugging. We can reproduce the issue with using only 8 processors instead of 48.

What happens is that when using 8 processors:
 - the 'processor3' ends the search early in 'cloudSet::calcSamples', because 'queryMesh.findCell' returned early;
 - all other processors kept trying to search and got stuck in the first sync in 'polyMeshTetDecomposition::findFaceBasePts', namely with:

    syncTools::swapBoundaryFacePositions(mesh, neighbourCellCentres);

My preliminary assessment is that the method 'polyMesh::tetBasePtIs()' should somehow be called earlier, so that the sync always happens.


Going back to why 'processor3' completed the search early, it was because within 'indexedOctree<Type>::findInside', the line:

    if (isContent(contentIndex))

considered that the 'contentIndex=1' is not 'content'.


And this is where I managed to get to with the time I had.

MattijsJ

2017-01-19 11:49

reporter   ~0007653

Try and replace the call to

    queryMesh.findCell(sampleCoords_[sampleI]);

with something like

    mesh.findCell(sampleCoords_[sampleI]);

since the octree is already on the polyMesh. The polyMesh::findCell should have provision for calling findFaceBasePts() before doing actual searching.

henry

2017-01-20 10:52

manager   ~0007655

Resolved in OpenFOAM-dev by commit 77bd21177b50d7f548dc2abeb6845f200d30001f

Resolved in OpenFOAM-4.x by commit 8ff56d46b9c581a4e58752d251b034b4f9fc0028

Issue History

Date Modified Username Field Change
2017-01-11 11:56 hannes New Issue
2017-01-11 11:56 hannes File Added: sample_test.tgz
2017-01-16 00:56 wyldckat Note Added: 0007640
2017-01-19 11:49 MattijsJ Note Added: 0007653
2017-01-20 10:52 henry Assigned To => henry
2017-01-20 10:52 henry Status new => resolved
2017-01-20 10:52 henry Resolution open => fixed
2017-01-20 10:52 henry Fixed in Version => 4.x
2017-01-20 10:52 henry Note Added: 0007655