ParaView can hang in a distributed context when there is no data on at least one of the processes
Steps to reproduce
- start a distributed server on 2 procs:
mpirun -np 2 pvserver
- connect a paraview client to the server
- open
disk_out_ref.ex2
from the test data - run
GhostCellsGenerator
- ParaView should hang on the ghost cell generation
Probable cause
I believe that the executive for each algorithm takes the decision to execute without communicating with executives on other processes. This means that an executive may decline to execute a filter that necessitates distributed communication on a process where no data exists. If the filter does not take this into account, then on the first global communication, the execution will hang on all processes executing the filter waiting for the processes that decided to not execute the filter.
It is either:
- the responsibility of the executive to ensure that a filter gets executed on all ranks if executed on any rank,
- the responsibility of all filters to take into account that all processes might not enter into their request data,
- or, the responsibility of the controller to create sub communicators for each algorithmic execution that are coherent
As of the time of writing of this issue, this responsibility is not clearly stated or I have not found where in the documentation it is.