[Paraview] vtkTransmitImageDataPiece question

Jeff Becker jeffrey.c.becker at nasa.gov
Fri Aug 7 13:47:04 EDT 2015


Hi Berk,

On 08/07/2015 10:08 AM, Berk Geveci wrote:
> Hey Jeff,
>
> Can you clarify a bit? What kind of wrong is the output?

I have an updated report in the mail I sent to the list on Wednesday. I 
will forward you that directly.  Please see updated code in that mail. 
Right now, if I run my script on two processors, it looks like both 
processors get the same half of the data.

In the meantime, I will try to incorporate your suggestion below. Thanks.

-jeff
>
> Also, I would probably do this a bit differently, assuming you use a 
> newer ParaView (>= 4.2). The issue is that vtkTransmitImageDataPiece 
> is not a "CAN_PRODUCE_SUB_EXTENT()" filter. Rather it is a 
> "CAN_HANDLE_PIECE_REQUEST()" filter. Meaning that it wants to 
> determine the extents of the output based on the piece request it 
> receives. So some changes:
>
> * Swap CAN_PRODUCE_SUB_EXTENT() with CAN_HANDLE_PIECE_REQUEST() in 
> request info.
> * In the main script, do something like this:
>
> executive = self.GetExecutive()
> outInfo = executive.GetOutputInformation(0)
> #updateExtent = [executive.UPDATE_EXTENT().Get(outInfo, i) for i in 
> xrange(6)]
> #imageData = self.GetOutput()
> #imageData.SetExtent(updateExtent)
> # >> this probably needs to happen on rank 0 only
> myout = ns.numpy_to_vtk(bmag.ravel(),1,vtk.VTK_FLOAT)
> myout.SetName("B field magnitude")
> imageData.GetPointData().SetScalars(myout)
> tp = vtk.vtkTrivialProducer()
> tp.SetOutput(imageData)
> tp.SetWholeExtent(0, mesh.MX-1, 0, mesh.MY-1, 0, mesh.MZ-1)
> xmit = vtk.vtkTransmitImageDataPiece()
> xmit.SetInputConnection(tp.GetOutputPort())
> xmit.UpdateInformation()
> xmit.SetUpdateExtent(rank, nranks, 0)
> xmit.Update()
> self.GetOutput().ShallowCopy(xmit,GetOutput())
>
> I didn't verify the code so it may need tweaking.
>
> Best,
> -berk
>
>
> On Tue, Aug 4, 2015 at 2:14 PM, Jeff Becker <jeffrey.c.becker at nasa.gov 
> <mailto:jeffrey.c.becker at nasa.gov>> wrote:
>
>     Hi. I'm trying to run a Python Programmable source across four
>     nodes (started with mpirun -np 4 pvserver). My script contains the
>     following code, but the output looks wrong, so I'm not sure if the
>     extents are right.  The partitioning among nodes is correct (using
>     processId filter). Also I'm careful to set Output Data Set Type to
>     vtkImageData.
>
>     import vtk
>     import vtk.util.numpy_support as ns
>     contr = vtk.vtkMultiProcessController.GetGlobalController()
>     nranks = contr.GetNumberOfProcesses()
>     rank = contr.GetLocalProcessId()
>
>     ...
>     executive = self.GetExecutive()
>     outInfo = executive.GetOutputInformation(0)
>     updateExtent = [executive.UPDATE_EXTENT().Get(outInfo, i) for i in
>     xrange(6)]
>     imageData = self.GetOutput()
>     imageData.SetExtent(updateExtent)
>     myout = ns.numpy_to_vtk(bmag.ravel(),1,vtk.VTK_FLOAT)
>     myout.SetName("B field magnitude")
>     imageData.GetPointData().SetScalars(myout)
>     tp = vtk.vtkTrivialProducer()
>     tp.SetOutput(imageData)
>     tp.SetWholeExtent(0, mesh.MX-1, 0, mesh.MY-1, 0, mesh.MZ-1)
>     xmit = vtk.vtkTransmitImageDataPiece()
>     xmit.SetInputConnection(tp.GetOutputPort())
>     xmit.UpdateInformation()
>     xmit.SetUpdateExtent(rank, nranks, 0)
>     xmit.Update()
>
>     For completeness, here is my requestInformation script (mesh has
>     dimensions, and coordinate arrays for each of X,Y,Z)
>
>     executive = self.GetExecutive()
>     outInfo = executive.GetOutputInformation(0)
>     outInfo.Set(vtk.vtkAlgorithm.CAN_PRODUCE_SUB_EXTENT(), 1)
>     outInfo.Set(executive.WHOLE_EXTENT(), 0, mesh.MX-1, 0, mesh.MY-1,
>     0, mesh.MZ-1)
>     xspacing = (mesh.xcoords[-1] - mesh.xcoords[0])/mesh.MX
>     yspacing = (mesh.ycoords[-1] - mesh.ycoords[0])/mesh.MY
>     zspacing = (mesh.zcoords[-1] - mesh.zcoords[0])/mesh.MZ
>     outInfo.Set(vtk.vtkDataObject.SPACING(), xspacing, yspacing, zspacing)
>
>     This is what I've been able to come up with after spending much
>     time reading documentation and examples, but I've obviously missed
>     something. Please advise. Thanks.
>
>     -jeff
>
>     _______________________________________________
>     Powered by www.kitware.com <http://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
>
>     Search the list archives at: http://markmail.org/search/?q=ParaView
>
>     Follow this link to subscribe/unsubscribe:
>     http://public.kitware.com/mailman/listinfo/paraview
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview/attachments/20150807/179bc782/attachment.html>


More information about the ParaView mailing list