Attached is a patch that fixes the problem.  I'm cc'ing Ken because he is
the one who originally introduced the mpi broadcast in commit e9096f4 (then
I moved the routine to vtkSMUtilities in commit 514322c)  I want to make
sure this new patch continues to work for his use case.

Pat

On Thu, Aug 19, 2010 at 5:24 PM, pat marion <[email protected]> wrote:

> In the meantime, you can fix it by replacing the body of
> vtkSMUtilities::SaveImageOnProcessZero with:
>
>   return SaveImage(image, filename, writerName);
>
> Pat
>
>
> On Thu, Aug 19, 2010 at 5:22 PM, pat marion <[email protected]>wrote:
>
>> I think it may have been buggy ever since the mpi broadcast was added, but
>> a month and a half ago Utkarsh added a debugging call to Barrier to expose
>> to help expose these issues.  I'll fix.
>>
>> Pat
>>
>>
>> On Thu, Aug 19, 2010 at 5:12 PM, pat marion <[email protected]>wrote:
>>
>>> I can repeat this.  Believe it or not, WriteImage does an mpi broadcast.
>>> In the 3.8 release and some time afterward it worked fine, but it doesn't
>>> seem to work now.
>>>
>>> Pat
>>>
>>>
>>> On Thu, Aug 19, 2010 at 5:09 PM, Eric E. Monson <[email protected]>wrote:
>>>
>>>> Hey Jean,
>>>>
>>>> I am getting the same behavior on my Mac OS X 10.6 compiled with OpenMPI
>>>> (but no OSMesa). I can run scripts like yours from the ParaView Python 
>>>> shell
>>>> when connected to a four-process pvserver just fine, and it works from the
>>>> same build of pvbatch run in serial (without mpirun), but when I try to run
>>>> pvbatch with
>>>>
>>>> mpirun -np 4 ./pvbatch coloredSphere.0.py
>>>>
>>>> it hangs after writing the first image and giving me this output:
>>>>
>>>> vtkSphereSource : [ ...........]
>>>> vtkSphereSource(3) : [ ...........]
>>>> vtkSphereSource(1) : [ ...........]
>>>> vtkSphereSource(2) : [ ...........]
>>>> vtkPVGeometryFilter : [ ...........]
>>>> vtkPVGeometryFilter(1) : [ ...........]
>>>> vtkPainterPolyDataMapper : [ ...........]
>>>> vtkPainterPolyDataMapper : [ ...........]
>>>> Process id: 2 >> ERROR: In
>>>> /Users/emonson/Programming/ParaView_git/ParaView/VTK/Parallel/vtkParallelRenderManager.cxx,
>>>> line 1869
>>>> vtkIceTRenderManager (0x10b104a90): Failed to read window information
>>>>
>>>> Process id: 3 >> ERROR: In
>>>> /Users/emonson/Programming/ParaView_git/ParaView/VTK/Parallel/vtkParallelRenderManager.cxx,
>>>> line 1869
>>>> vtkIceTRenderManager (0x10be0ec40): Failed to read window information
>>>>
>>>> Process id: 1 >> ERROR: In
>>>> /Users/emonson/Programming/ParaView_git/ParaView/VTK/Parallel/vtkParallelRenderManager.cxx,
>>>> line 1869
>>>> vtkIceTRenderManager (0x10b604a10): Failed to read window information
>>>>
>>>>
>>>> Even a simple example like this hangs in the same way:
>>>>
>>>> from paraview.simple import *
>>>>
>>>> view = CreateRenderView()
>>>>
>>>> sphere = Sphere()
>>>> Show()
>>>> Render()
>>>>
>>>> WriteImage("sphere.0.png")
>>>> WriteImage("sphere.1.png")
>>>>
>>>> Sorry I don't have any solution, but hopefully this will help someone
>>>> who knows more figure it out. :)
>>>> -Eric
>>>>
>>>> ------------------------------------------------------
>>>> Eric E Monson
>>>> Duke Visualization Technology Group
>>>>
>>>>
>>>> On Aug 19, 2010, at 3:49 PM, Favre Jean wrote:
>>>>
>>>> >
>>>> > i am having difficulty with pvbatch - compiled with Mesa 7.6 - running
>>>> in parallel and hanging after the first WriteImage in my python scripts.
>>>> >
>>>> > I have tested several compilations on different clusters, several MPI
>>>> (mvapich and openmpi) and still cannot make this work.  It writes the first
>>>> image and then deadlocks or dies somewhere.
>>>> >
>>>> > I have no error messages to give me a clue. The pvserver from the same
>>>> compilation works fine when connected to a client.
>>>> >
>>>> > This would be a test line:
>>>> >
>>>> > mpirun -np 12 --use-offscreen-rendering -display :0.0 pvbatch
>>>> coloredSphere.0.py
>>>> >
>>>> > are there problems with my syntax, or something I overlooked in this
>>>> simple example?
>>>> >
>>>> > thanks for any tip.
>>>> >
>>>> > -----------------
>>>> > Jean M. Favre
>>>> > Swiss National Supercomputing Center
>>>> >
>>>> > <coloredSphere.0.py>_______________________________________________
>>>> > Powered by www.kitware.com
>>>> >
>>>> > Visit other Kitware open-source projects at
>>>> http://www.kitware.com/opensource/opensource.html
>>>> >
>>>> > Please keep messages on-topic and check the ParaView Wiki at:
>>>> http://paraview.org/Wiki/ParaView
>>>> >
>>>> > Follow this link to subscribe/unsubscribe:
>>>> > http://www.paraview.org/mailman/listinfo/paraview
>>>>
>>>> _______________________________________________
>>>> Powered by www.kitware.com
>>>>
>>>> Visit other Kitware open-source projects at
>>>> http://www.kitware.com/opensource/opensource.html
>>>>
>>>> Please keep messages on-topic and check the ParaView Wiki at:
>>>> http://paraview.org/Wiki/ParaView
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.paraview.org/mailman/listinfo/paraview
>>>>
>>>
>>>
>>
>
diff --git a/Servers/ServerManager/vtkSMRenderViewProxy.cxx b/Servers/ServerManager/vtkSMRenderViewProxy.cxx
index 113c989..80aa6cc 100644
--- a/Servers/ServerManager/vtkSMRenderViewProxy.cxx
+++ b/Servers/ServerManager/vtkSMRenderViewProxy.cxx
@@ -1195,7 +1195,15 @@ int vtkSMRenderViewProxy::WriteImage(const char* filename,
 
   vtkSmartPointer<vtkImageData> shot;
   shot.TakeReference(this->CaptureWindow(magnification));
-  return vtkSMUtilities::SaveImageOnProcessZero(shot, filename, writerName);
+
+  if (vtkProcessModule::GetProcessModule()->GetOptions()->GetSymmetricMPIMode())
+    {
+    return vtkSMUtilities::SaveImageOnProcessZero(shot, filename, writerName);
+    }
+  else
+    {
+    return vtkSMUtilities::SaveImage(shot, filename, writerName);
+    }
 }
 
 //-----------------------------------------------------------------------------
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at: 
http://paraview.org/Wiki/ParaView

Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview

Reply via email to