Guys, thanks for all the responses, the tracker entry and applying the patch.
I'm afraid I'm not sure if I can provide a good test dataset since the bug does not affect small cases (the point insertion should take O(n^2) of time where n is the number of points, when the hasing is not working) and relies on indeterminate values (there's always a possibility that the problem doesn't reproduce), which is why I did all the tracking down by myself. But I'll see if I can do something. Takuya Takuya OSHIMA, Ph.D. Faculty of Engineering, Niigata University 8050 Ikarashi-Ninocho, Nishi-ku, Niigata, 950-2181, JAPAN From: Zhanping Liu <[email protected]> Subject: Re: [Paraview] Ridiculously slow D3 (a bug in vtkMergeCells) Date: Wed, 30 Sep 2009 12:39:15 -0400 > * > Takuya: > > The problem was reflected on Mantis (issue #009626) and the suggested fix > was applied. If you have any test (and shareable datasets), please feel free > to submit it via Mantis. > > Thanks for the report and the fix. > > -Zhanping > -- > Zhanping Liu, PhD > Kitware, Inc. > 28 Corporate Drive > Clifton Park, NY 12065-8662 > Phone: 518-371-3971 x 138 > http://www.zhanpingliu.org > On Wed, Sep 30, 2009 at 3:51 AM, Takuya OSHIMA <[email protected]> > wrote: > > Hi, > > I have had a problem of ridiculously slow D3 of PV 3.6.1/3.7-cvs under > some conditions. Most of the time the problem occurs when I have more > pvserver processes than the number of data pieces, in which case D3 > takes two orders of magnitude more time than usual, despite that the > resulting repartitioned dataset looks fine. > > Attaching a performance analyzer (Apple's Shark) to the pvserver > processes revealed that, in one of the pvserver processes > vtkMergePoints::InsertUniquePoint() took up virtually all of the > processor time, as attached sharkOutput.jpg. > > It further turned out that this is because the instance of > vtkMergePoints is given indeterminate bounds by its caller > vtkMergeCells::MapPointsToIdsUsingLocator() and hence hashing based on > relative point coordinates in the bounds is not working. Here is a > proposed fix to the problem (the comment "points0->GetNumberOfPoints() > is equal to..." was taken from about 50 lines below the patched lines > in the same function. I believe it explains everything.). > > Index: vtkMergeCells.cxx > =================================================================== > RCS file: /cvsroot/ParaView3/ParaView3/VTK/Graphics/vtkMergeCells.cxx,v > retrieving revision 1.9 > diff -u -r1.9 vtkMergeCells.cxx > --- vtkMergeCells.cxx 23 Jan 2009 03:25:07 -0000 1.9 > +++ vtkMergeCells.cxx 30 Sep 2009 06:47:09 -0000 > @@ -723,7 +723,12 @@ > if (npoints0 > 0) > { > double tmpbounds[6]; > + // points0->GetNumberOfPoints() is equal to the upper bound > + // on the points in the final merged grid. We need to temporarily > + // set it to the number of points added to the merged grid so far. > + points0->GetData()->SetNumberOfTuples(npoints0); > grid->GetBounds(tmpbounds); > + points0->GetData()->SetNumberOfTuples(this->TotalNumberOfPoints); > > bounds[0] = ((tmpbounds[0] < bounds[0]) ? tmpbounds[0] : bounds[0]); > bounds[2] = ((tmpbounds[2] < bounds[2]) ? tmpbounds[2] : bounds[2]); > > Regards, > 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
