[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