Disable ParaView's MPI features when running in MPI Environment

Hello,

Sorry for the confusing title, but I have the following situation going on. I have a MPI-enabled ParaView, which my own library makes use of (e.g. implemented a pipeline to generate visualization output). Now I am trying to run applications making use of my library in parallel processes using MPI, and let each process output its own visualization results. Unfortunately, this triggers some MPI-related features inside ParaView as well, and seems to end up in some kind of deadlock:

#0  0x00007fb7586fbdac in __GI___pthread_mutex_lock (mutex=0x7fb75a6a4bd0 <ompi_comm_request_mutex+16>)
    at ../nptl/pthread_mutex_lock.c:80
#1  0x00007fb75a3e7328 in ompi_comm_request_progress () from /home/ahmad/openmpi-3.0.2/lib/libmpi.so.40
#2  0x00007fb7570147fc in opal_progress () from /home/ahmad/openmpi-3.0.2/lib/libopen-pal.so.40
#3  0x00007fb75a3e6be5 in ompi_comm_nextcid () from /home/ahmad/openmpi-3.0.2/lib/libmpi.so.40
#4  0x00007fb75a3e1d08 in ompi_comm_dup_with_info () from /home/ahmad/openmpi-3.0.2/lib/libmpi.so.40
#5  0x00007fb75a419412 in PMPI_Comm_dup () from /home/ahmad/openmpi-3.0.2/lib/libmpi.so.40
#6  0x00007fb74d992f67 in vtkMPICommunicator::Duplicate(vtkMPICommunicator*) ()
   from /home/ahmad/biodynamo/build/third_party/paraview/lib/libvtkParallelMPI-pv5.6.so.1
#7  0x00007fb74d99ca1f in vtkMPIController::Initialize(int*, char***, int) ()
   from /home/ahmad/biodynamo/build/third_party/paraview/lib/libvtkParallelMPI-pv5.6.so.1
#8  0x00007fb751497fa7 in vtkProcessModule::Initialize(vtkProcessModule::ProcessTypes, int&, char**&) ()
   from /home/ahmad/biodynamo/build/third_party/paraview/lib/libvtkPVClientServerCoreCore-pv5.6.so.1
#9  0x00007fb74e4e1e0a in vtkInitializationHelper::Initialize(int, char**, int, vtkPVOptions*) ()
   from /home/ahmad/biodynamo/build/third_party/paraview/lib/libvtkPVServerManagerApplication-pv5.6.so.1
#10 0x00007fb75627f5df in vtkCPCxxHelper::New() ()
   from /home/ahmad/biodynamo/build/third_party/paraview/lib/libvtkPVCatalyst-pv5.6.so.1
#11 0x00007fb756284e2f in vtkCPProcessor::Initialize(char const*) ()
   from /home/ahmad/biodynamo/build/third_party/paraview/lib/libvtkPVCatalyst-pv5.6.so.1
#12 0x00007fb759ee8040 in bdm::CatalystAdaptor::Initialize (this=this@entry=0x2baa8c0)
...

Is there a way to disable MPI-related calls in ParaView?

Best,
Ahmad

How do you run ParaView here ?

Looking at your backtrace, it looks like a Catalyst issue.

Ah, it seems like there was a misunderstanding on my side. Like you rightfully pointed out, I was making calls into Catalyst, which were not intended. Our library makes use of both Catalyst (live visualization) and exporting (through VTK writers). For the latter, we were unnecessarily invoking Catalyst-related calls…

A few if statements around those seemed to do the trick!

Thanks for having a look and pointing this out!

Best,
Ahmad

1 Like