[Paraview] PythonScriptCoProcessingExample mpirun Problem

Andy Bauer andy.bauer at kitware.com
Tue Dec 6 14:53:52 EST 2011


Hi Marek,

I'm a bit confused.  Where are you getting your CoProcessing executable
from?  If I run the coprocessing library tests I don't see any failures on
my machine and they're running in parallel.  Could you send me the results
of doing "ctest -V -R CoProcessing" on your machine?  There should be 6
tests that run.  The PCoProcessingPythonScriptExampleOne tests the
coprocessing tools with a 2 process run.  You may need to check out
ParaViewData (http://www.paraview.org/paraview/resources/software.html) and
add that option in the cmake configuration.

Andy

On Tue, Dec 6, 2011 at 3:31 AM, peacemaker <peacemaker1 at web.de> wrote:

> **
> Hi,
>
> Im trying to run the PythonScriptCoProcessingExample(.cxx) included in
> ParaView sourcecode - this is my first "getting in touch" with MPI
> + ParaView (and Coprocessing of course) so maybe it`s just a very simple
> problem. I already succesfully compiled Paraview with Coprocessing and
> python (Ubuntu 11.10) and I`m running the source with COPROCESSOR_USE_MPI.
> When I run it like:
> mpirun -n 1 ./CoProcessing ./PythonScriptTest.py
> then I get as result CPGrid0_mpirun1.png and CPPressure0_mpirun1.png -
> looks good.
> If I try:
> mpirun -n 2  ./CoProcessing ./PythonScriptTest.py
> then I get as result CPGrid0_mpirun2.png and CPPressure0_mpirun2.png -
> these pictures seem to be incorrect.
> In vtkPVCustomTestDriver.cxx there are source lines like:
> ...
> #ifdef COPROCESSOR_USE_MPI
>   myid = vtkMPICommunicator::GetWorldCommunicator()->GetLocalProcessId();
> #endif
> ....
> gridBuilder->SetSpacing(spacing);
>   double origin[3] = {myid*49*.2,20,300};
> .....
> If I understand it correctly there should be just a shift on the x-axis
> between the grids? The pictures get more and more messy, when I increase
> the numer of processes.
> After little messing around with the pyton-script needed to run this
> example (see bottom of this Mail) I got the following output when running
> it with mpirun -n 3: CPPressure0_changedscript_mpirun3.png. The halfs of
> the 2nd and 3rd grid are missing.
>
> What am I doing wrong? Is this example not supposed to be run with MPI?
> How does Coprocessing merge the data from different processes and how does
> the picture get built?
>
> I already tested this on a different PC with the same result. I hope you
> can help me.
>
> Best wishes
>
> Marek
>
>
> changed Python Script:
> def DoCoProcessing(datadescription):
>   timestep = datadescription.GetTimeStep()
>
>   grid = datadescription.GetInputDescriptionByName("input").GetGrid()
>   pressure = grid.GetPointData().GetArray('Pressure')
>
> #  print grid
>
>   #grid.GetPointData().SetScalars(pressure)
>   obj.SetOutput(grid)
> #  print obj
>
>   # get global range of Pressure
>   di = trivialproducer.GetDataInformation(0)
>   trivialproducer.UpdatePipeline()
>   di.Update()
>   pdi = di.GetPointDataInformation()
> #  print pdi
>   ai = pdi.GetArrayInformation('Pressure')
>   pressurerange = ai.GetComponentRange(0)
>
>   contour.Isosurfaces = .5*(pressurerange[0]+pressurerange[1])
>
>   # now output the results to the screen as well as taking
>   # a screen shot of the view
>   #setup a window
>   #rep = Show(contour)
>   #ren = Render()
>
>   #set the background color
>   #ren.Background=[1,1,1]  #white
>
>   #set image size
>   #ren.ViewSize = [1000, 1000] #[width, height]
>
>   #set representation
>   #rep.Representation="Surface"
>
>   #save screenshot
>   #gridimagefilename = 'CPGrid'+str(timestep) + '.png'
>   #WriteImage(gridimagefilename)
>
>   rep = Show(trivialproducer)
>   #rep.LookupTable = MakeBlueToRedLT(pressurerange[0], pressurerange[1])
>   #rep.ColorArrayName = 'Pressure'
>   #rep.ColorAttributeType = 'POINT_DATA'
>   #set representation
>   rep.Representation="Wireframe"
>   #rep = Show(contour)
>   #set the background color
>   ren = Render()
>   ren.Background=[0,0,0]  #white
>   ren.ViewSize = [1000, 1000] #[width, height]
>
>   pressureimagefilename = 'CPPressure'+str(timestep) + '.png'
>   WriteImage(pressureimagefilename)
>   return
>
> def RequestDataDescription(datadescription):
>   time = datadescription.GetTime()
>   timestep = datadescription.GetTimeStep()
>   print timestep
>   if timestep % 20 == 0:
>     # add in some fields
>     #print 'added Pressure and wanting to do coprocessing'
>
> datadescription.GetInputDescriptionByName("input").AddPointField("Pressure")
>     datadescription.GetInputDescriptionByName('input').GenerateMeshOn()
>   return
>
> # the code below is needed to import objects from paraview.simple
> # plus the definition of vtkTrivialProducer into this python script.
> try: paraview.simple
> except: from paraview.simple import *
>
> trivialproducer = TrivialProducer()
> contour = Contour(Input=trivialproducer)
>
> obj = trivialproducer.GetClientSideObject()
>
> _______________________________________________
> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20111206/d67b851c/attachment.htm>


More information about the ParaView mailing list