GhostCellsGenerator slowdown and error for fields that are float
Prior to !10830 (merged), we were using GhostCellsGenerator in vtkFidesReader, it's being removed but there are some issues we found that should probably be looked into.
- It caused a large slowdown on unstructured data. I don't have the exact timing breakdown for large scale data, but the vtkFidesReader was taking 30 minutes to load data. When they used ADIOS directly to read the file, it only takes about 15 seconds to read the full file. I was given a much smaller version of the dataset that still showed the issue and executing the GhostCellsGenerator caused about a 5x slowdown. @berkgeveci says the slowdown is more than should be expected and should be investigated.
- There was an issue with fields that are
float
. Two datasets were generated where the only change is the type of a field. If it'sdouble
, there was no issue, but withfloat
, we'd get the following error:
vtkGenericDataArray.txx:564 ERR| . 23vtkAOSDataArrayTemplateIfE (0x291a11390): Source array too small, requested tuple at index 14929, but there are only 14645 tuples in the array.
I pulled it up in a debugger and here is the backtrace to it, but I don't know much about this filter so I haven't looked any deeper than this:
#0 vtkGenericDataArray<vtkAOSDataArrayTemplate<float>, float>::InsertTuples(vtkIdList*, vtkIdList*, vtkAbstractArray*)
(this=0x5555b01b1f10, dstIds=0x5555ba623cd0, srcIds=0x5555bec9c6f0, source=0x5555f7bf9a30)
at /home/local/KHQ/caitlin.ross/dev/paraview/master/VTK/Common/Core/vtkGenericDataArray.txx:562
#1 0x00007fffee5f54da in vtkAOSDataArrayTemplate<float>::InsertTuples(vtkIdList*, vtkIdList*, vtkAbstractArray*)
(this=0x5555b01b1f10, dstIds=0x5555ba623cd0, srcIds=0x5555bec9c6f0, source=0x5555f7bf9a30)
at /home/local/KHQ/caitlin.ross/dev/paraview/master/VTK/Common/Core/vtkAOSDataArrayTemplate.h:254
#2 0x00007fff640debdd in (anonymous namespace)::FillReceivedGhostFieldData(vtkFieldData*, vtkFieldData*, vtkIdList*, vtkIdList*) (sourceFD=0x5555c56a54c0, destFD=0x5555b01b5920, sourceIds=0x5555bec9c6f0, destIds=0x5555ba623cd0)
at /home/local/KHQ/caitlin.ross/dev/paraview/master/VTK/Parallel/DIY/vtkDIYGhostUtilities.cxx:5114
#3 0x00007fff640eb2ef in (anonymous namespace)::FillReceivedPointBuffersForUnstructuredData<vtkUnstructuredGrid>(vtkDIYGhostUtilities::DataSetTypeToBlockTypeConverter<vtkUnstructuredGrid>::BlockType*, int, int, vtkUnstructuredGrid*)
(block=0x555596aeed00, myGid=2, gid=1, output=0x5555b019bcd0)
at /home/local/KHQ/caitlin.ross/dev/paraview/master/VTK/Parallel/DIY/vtkDIYGhostUtilities.cxx:5420
#4 0x00007fff640df5e9 in (anonymous namespace)::FillReceivedGhosts((anonymous namespace)::UnstructuredGridBlock*, int, int, vtkUnstructuredGrid*, int) (block=0x555596aeed00, myGid=2, gid=1, output=0x5555b019bcd0, outputGhostLevels=0)
at /home/local/KHQ/caitlin.ross/dev/paraview/master/VTK/Parallel/DIY/vtkDIYGhostUtilities.cxx:5436
#5 0x00007fff640f5992 in (anonymous namespace)::FillReceivedGhosts<vtkUnstructuredGrid>(vtkdiy2::Master const&, std::vector<vtkUnstructuredGrid*, std::allocator<vtkUnstructuredGrid*> >&, int) (master=..., outputs=..., outputGhostLevels=0)
at /home/local/KHQ/caitlin.ross/dev/paraview/master/VTK/Parallel/DIY/vtkDIYGhostUtilities.cxx:5601
#6 0x00007fff640e581b in vtkDIYGhostUtilities::FillGhostArrays(vtkdiy2::Master const&, std::vector<vtkUnstructuredGrid*, std::allocator<vtkUnstructuredGrid*> >&, int) (master=..., outputs=..., outputGhostLevels=0)
at /home/local/KHQ/caitlin.ross/dev/paraview/master/VTK/Parallel/DIY/vtkDIYGhostUtilities.cxx:6689
#7 0x00007fff64146cc6 in vtkDIYGhostUtilities::GenerateGhostCells<vtkUnstructuredGrid>(std::vector<vtkUnstructuredGrid*, std::allocator<vtkUnstructuredGrid*> >&, std::vector<vtkUnstructuredGrid*, std::allocator<vtkUnstructuredGrid*> >&, int, vtkMultiProcessController*) (inputs=..., outputs=..., outputGhostLevels=0, controller=0x5555901d1ac0)
at /home/local/KHQ/caitlin.ross/dev/paraview/master/VTK/Parallel/DIY/vtkDIYGhostUtilities.txx:717
#8 0x00007fff640e5950 in vtkDIYGhostUtilities::GenerateGhostCellsUnstructuredGrid(std::vector<vtkUnstructuredGrid*, std::allocator<vtkUnstructuredGrid*> >&, std::vector<vtkUnstructuredGrid*, std::allocator<vtkUnstructuredGrid*> >&, int, vtkMultiProcessController*) (inputs=..., outputs=..., outputGhostLevels=0, controller=0x5555901d1ac0)
at /home/local/KHQ/caitlin.ross/dev/paraview/master/VTK/Parallel/DIY/vtkDIYGhostUtilities.cxx:6736
#9 0x00007fff65d29cde in vtkGhostCellsGenerator::RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*)
(this=0x555594604960, inputVector=0x5555b01b5090, outputVector=0x5555b01af650)
at /home/local/KHQ/caitlin.ross/dev/paraview/master/VTK/Filters/ParallelDIY2/vtkGhostCellsGenerator.cxx:234