[Paraview] PythonScriptCoProcessingExample mpirun Problem

peacemaker peacemaker1 at web.de
Wed Dec 7 15:39:57 EST 2011


Hi Andy,

thanks for the quick answer. I've downloaded Paraview from: http://www.paraview.org/files/v3.12/ParaView-3.12.0.tar.gz and compiled it with coprocessing. When I run "ctest -V -R CoProcessing" in my Paraview-bin directory there seem to be just 2 Tests running and I get the following output:
orschews at Lap:~/projects/ParaView-bin$ ctest -V -R CoProcessing
UpdateCTestConfiguration  from :/home/orschews/projects/ParaView-bin/DartConfiguration.tcl
Parse Config file:/home/orschews/projects/ParaView-bin/DartConfiguration.tcl
 Add coverage exclude regular expressions.
 Add coverage exclude: Common.KWCommon.*
 Add coverage exclude: vtk.*CSInit.cxx
 Add coverage exclude: vtkKWParaViewInit.cxx
 Add coverage exclude: vtk[^\.]+ClientServer.cxx
 Add coverage exclude: vtk[^\.]+Python.cxx
 Add coverage exclude: vtkSNL
 Add coverage exclude: GUI/Widgets
 Add coverage exclude: moc_[^\.]+.cxx
 Add coverage exclude: ui_[^\.]+.h
 Add coverage exclude: qrc_[^\.]+.cxx
 Add coverage exclude: Utilities.Xdmf2.libsrc.*
 Add coverage exclude: Utilities.VisItBridge.avt
 Add coverage exclude: Utilities.VisItBridge.CMake
 Add coverage exclude: Utilities.VisItBridge.common
 Add coverage exclude: Utilities.VisItBridge.databases
 Add coverage exclude: Utilities.VisItBridge.include
 Add coverage exclude: Utilities.VisItBridge.visit_vtk
 Add coverage exclude: Utilities.protobuf
 Add coverage exclude: vtk.*TCLInit.cxx
 Add coverage exclude: vtk[^\.]+(Java|Python|Tcl).cxx
 Add coverage exclude: Utilities.kwsys
 Add coverage exclude: Utilities.vtksys
 Add coverage exclude: Utilities.vtkmetaio
 Add coverage exclude: Utilities.vtklibproj4
 Add coverage exclude: Utilities.vtkalglib
 Add coverage exclude: Utilities.octree
 Add coverage exclude: .*vtkOpenGLState.*
 Add coverage exclude: .*Testing.Cxx.*cxx
 Add coverage exclude: .*Testing.Cxx.*h
 Add coverage exclude: .*moc_.*cxx
UpdateCTestConfiguration  from :/home/orschews/projects/ParaView-bin/DartConfiguration.tcl
Parse Config file:/home/orschews/projects/ParaView-bin/DartConfiguration.tcl
Test project /home/orschews/projects/ParaView-bin
Constructing a list of tests
Done constructing a list of tests
Checking test dependency graph...
Checking test dependency graph end
test 372
    Start 372: CoProcessingTestPythonScript

372: Test command: /home/orschews/projects/ParaView-bin/bin/CoProcessingPythonScriptExample "/home/orschews/projects/ParaView3/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest.py"
372: Test timeout computed to be: 1500
372: Initializing MPI.
372: Finished run with 0 errors.
1/2 Test #372: CoProcessingTestPythonScript .......   Passed    7.41 sec
test 373
    Start 373: PCoProcessingPythonScriptExample

373: Test command: /usr/bin/mpiexec "-np" "2" "/home/orschews/projects/ParaView-bin/bin/CoProcessingPythonScriptExample" "/home/orschews/projects/ParaView3/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest2.py"
373: Test timeout computed to be: 1500
373: Initializing MPI.
373: Initializing MPI.
373: Finished run with 0 errors.
373: Finished run with 0 errors.
2/2 Test #373: PCoProcessingPythonScriptExample ...   Passed    1.99 sec

The following tests passed:
 CoProcessingTestPythonScript
 PCoProcessingPythonScriptExample

100% tests passed, 0 tests failed out of 2

Total Test time (real) =  11.18 sec
orschews at Lap:~/projects/ParaView-bin$ 





From: Andy Bauer 
Sent: Tuesday, December 06, 2011 8:53 PM
To: peacemaker 
Cc: paraview at paraview.org 
Subject: Re: [Paraview] PythonScriptCoProcessingExample mpirun Problem


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/20111207/296a718d/attachment.htm>


More information about the ParaView mailing list