[Paraview] PV 3.12.0 coprocessing problem when using multiple filters

Takuya OSHIMA oshima at eng.niigata-u.ac.jp
Mon Nov 14 09:32:54 EST 2011


Hi Andy,

I may be wrong but I have a feeling that the collected data
information in process 0 should be redistributed to other processes
since adding a print statement for
Slice1.GetDataInformation().GetNumberOfPoints() prints for each
process the number of points expected from the hierarchical collection
mechanism of vtkPVSessionCore::CollectInformation().

I am not sure if this is the right place and thing but if I add the
following code to vtkPVSessionCore::CollectInformation() the slice
filter works exactly as you stated ("it just needs to go through one
of the process's grid domain such that the global number of points and
cells is greater than 0").

Takuya OSHIMA, Ph.D.
Faculty of Engineering, Niigata University
8050 Ikarashi-Ninocho, Nishi-ku, Niigata, 950-2181, JAPAN

--- ParaView-3.12.0/ParaViewCore/ServerImplementation/vtkPVSessionCore.cxx	2011-11-09 05:56:18.000000000 +0900
+++ ParaView-3.12.0.new/ParaViewCore/ServerImplementation/vtkPVSessionCore.cxx	2011-11-14 23:17:32.000000000 +0900
@@ -825,6 +825,33 @@
       controller->Send(&len, 1, parent, ROOT_SATELLITE_INFO_TAG);
       }
     }
+
+  if (this->SymmetricMPIMode)
+    {
+    if (myid == 0)
+      {
+      vtkClientServerStream css;
+      info->CopyToStream(&css);
+      const unsigned char* data;
+      size_t length;
+      css.GetData(&data, &length);
+      int len = static_cast<int>(length);
+      controller->Broadcast(&len, 1, 0);
+      controller->Broadcast(const_cast<unsigned char *>(data), len, 0);
+      }
+    else
+      {
+      int len;
+      controller->Broadcast(&len, 1, 0);
+      unsigned char *data = new unsigned char[len];
+      controller->Broadcast(data, len, 0);
+      vtkClientServerStream stream;
+      stream.SetData(data, len);
+      info->CopyFromStream(&stream);
+      delete [] data;
+      }
+    }
+
   return true;
 }
 //----------------------------------------------------------------------------

From: Andy Bauer <andy.bauer at kitware.com>
Subject: Re: [Paraview] PV 3.12.0 coprocessing problem when using multiple filters
Date: Sun, 13 Nov 2011 14:18:14 -0500

> I hope that's not the case that the slice has to go through each process's
> grid domain.  I think it just needs to go through one of the process's grid
> domain such that the global number of points and cells is greater than 0.
> I will check on this though.
> 
> Andy
> 
> On Sat, Nov 12, 2011 at 3:57 AM, Takuya OSHIMA
> <oshima at eng.niigata-u.ac.jp>wrote:
> 
>> Thanks for all the input guys. Indeed Pat's tip did the trick, in my case:
>>
>>    if Slice1.GetDataInformation().GetNumberOfPoints():
>>        DataRepresentation2.ColorArrayName = 'p'
>>
>> I am still new to coprocessing so I am not getting things right but
>> here is my deduction: I am running my simulation code in parallel with
>> 8 processes with one cell thickness of ghost layers. Slice1 does
>> intersect the domain, but not all of parallel decomposed
>> subdomains. Hence the error is issued for the processes that have no
>> slice data.
>>
>> Meanwhile I noticed that the slice in oneSlice.py just have happened
>> to locate exactly on interprocessor boundaries and intersected all of
>> parallel decomposed subdomains at the ghost layers. That explains why
>> the script worked without error.
>>
>> Takuya OSHIMA, Ph.D.
>> Faculty of Engineering, Niigata University
>> 8050 Ikarashi-Ninocho, Nishi-ku, Niigata, 950-2181, JAPAN
>>
>> From: pat marion <pat.marion at kitware.com>
>> Subject: Re: [Paraview] PV 3.12.0 coprocessing problem when using multiple
>> filters
>> Date: Fri, 11 Nov 2011 20:08:54 -0500
>>
>> > That's right, if the output has no point or cell data, then assigning the
>> > ColorArrayName property will throw an exception.  It's kind of an
>> annoying
>> > behavior.  So I'll work around this by writing code such as:
>> >
>> > if mySlice.GetDataInformation().GetNumberOfPoints():
>> >     rep.ColorArrayName='p'
>> >
>> >
>> > Pat
>> >
>> > On Fri, Nov 11, 2011 at 12:39 PM, Andy Bauer <andy.bauer at kitware.com>
>> wrote:
>> >
>> >> Another thing to check is if there are any cells in the output from the
>> >> second slice filter.  In the ParaView GUI, i started with the mandelbrot
>> >> source and then created a slice filter that didn't intersect the domain.
>> >> After that there wasn't any point or cell data in the output.
>> >>
>> >> Andy
>> >>
>> >>
>> >> 2011/11/11 Takuya OSHIMA <oshima at eng.niigata-u.ac.jp>
>> >>
>> >>> I'm not in a place where I can test the line 323 modification right
>> >>> now but the cell array p is present. Please note that oneSlice.py
>> >>> which also colors by cell p works.
>> >>>
>> >>> Takuya OSHIMA, Ph.D.
>> >>> Faculty of Engineering, Niigata University
>> >>> 8050 Ikarashi-Ninocho, Nishi-ku, Niigata, 950-2181, JAPAN
>> >>>
>> >>> From: Utkarsh Ayachit <utkarsh.ayachit at kitware.com>
>> >>> Subject: Re: [Paraview] PV 3.12.0 coprocessing problem when using
>> >>> multiple filters
>> >>> Date: Fri, 11 Nov 2011 09:16:18 -0500
>> >>>
>> >>> > Is the array "p" not present when you're coprocessnig? Try taking out
>> >>> > line 323 which sets the array "p" as the array to color with.
>> >>> >
>> >>> > Utkarsh
>> >>> >
>> >>> > On Fri, Nov 11, 2011 at 9:08 AM, Takuya OSHIMA
>> >>> > <oshima at eng.niigata-u.ac.jp> wrote:
>> >>> > > Hi,
>> >>> > >
>> >>> > > I am trying to explore the coprocessing capability of PV 3.12.0.
>> When
>> >>> > > I create a pipeline with a single slice filter within the PV GUI,
>> >>> > > export the Python state file by the coprocessing plugin and run the
>> >>> > > script as the coprocessing pipleline in my simulation code, it
>> works
>> >>> > > fine.
>> >>> > >
>> >>> > > However if I create a pipeline with two or more filters my
>> simulation
>> >>> > > code issues an error from the coprocessing library (the error
>> message
>> >>> > > is for the case of two slice filters):
>> >>> > >
>> >>> > > Traceback (most recent call last):
>> >>> > >  File "<string>", line 2, in <module>
>> >>> > >  File "/Users/ohshima/shindoriTest/twoSlices.py", line 323, in
>> >>> DoCoProcessing
>> >>> > >    DataRepresentation2.ColorArrayName = 'p'
>> >>> > >  File
>> >>>
>> "/Volumes/RAID0data/paraview/3.12/build/Utilities/VTKPythonWrapping/site-packages/paraview/servermanager.py",
>> >>> line 212, in __setattr__
>> >>> > >    setter(self, value)
>> >>> > >  File
>> >>>
>> "/Volumes/RAID0data/paraview/3.12/build/Utilities/VTKPythonWrapping/site-packages/paraview/servermanager.py",
>> >>> line 2276, in setProperty
>> >>> > >    return self.SetPropertyWithName(propName, value)
>> >>> > >  File
>> >>>
>> "/Volumes/RAID0data/paraview/3.12/build/Utilities/VTKPythonWrapping/site-packages/paraview/servermanager.py",
>> >>> line 267, in SetPropertyWithName
>> >>> > >    prop.SetData(arg)
>> >>> > >  File
>> >>>
>> "/Volumes/RAID0data/paraview/3.12/build/Utilities/VTKPythonWrapping/site-packages/paraview/servermanager.py",
>> >>> line 695, in SetData
>> >>> > >    raise ValueError("Could not locate array %s in the input." %
>> arr)
>> >>> > > ValueError: Could not locate array p in the input.
>> >>> > >
>> >>> > > The problem is same for Mac OS X 10.6 and RHEL 5.1 64bit. I attach
>> the
>> >>> > > scripts oneSlice.py (which works) and twoSlices.py (which does not
>> >>> > > work). Can anybody shed light on the problem?
>> >>> > >
>> >>> > > Takuya
>> >>> > >
>> >>> > > Takuya OSHIMA, Ph.D.
>> >>> > > Faculty of Engineering, Niigata University
>> >>> > > 8050 Ikarashi-Ninocho, Nishi-ku, Niigata, 950-2181, JAPAN
>> >>> > >
>> >>> > > _______________________________________________
>> >>> > > 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
>> >>>
>> >>
>> >>
>> >> _______________________________________________
>> >> 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
>>


More information about the ParaView mailing list