[Paraview] PV 3.12.0 coprocessing problem when using multiple filters

Takuya OSHIMA oshima at eng.niigata-u.ac.jp
Tue Dec 20 22:58:38 EST 2011


Thanks for the fix Andy. I'll test as soon as I can.

Takuya

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

From: Andy Bauer <andy.bauer at kitware.com>
Subject: Re: [Paraview] PV 3.12.0 coprocessing problem when using multiple filters
Date: Tue, 20 Dec 2011 15:45:10 -0500

> Hi Takuya,
> 
> This issue has been fixed.  We did a slightly different fix than yours so
> that we could avoid the MPI communication.  The commit SHA is
> 135ed11151e547ff54fbb373d686898e40cc3dec.
> 
> Thanks for the bug report.
> 
> Andy
> 
> On Tue, Dec 6, 2011 at 4:05 PM, Andy Bauer <andy.bauer at kitware.com> wrote:
> 
>> Hi Takuya,
>>
>> Sorry for the slow response but I finally did verify this problem.  Your
>> change also fixes it.  I'm not that familiar with vtkPVSessionCore so I'll
>> need to talk to some other people to make sure that it's the proper fix and
>> if not, what is the proper fix.  I'll email again when it's been fixed.
>>
>> Thanks,
>> Andy
>>
>>
>> On Mon, Nov 14, 2011 at 9:32 AM, Takuya OSHIMA <oshima at eng.niigata-u.ac.jp
>> > wrote:
>>
>>> 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