Slow selection of large multi-block datasets

I find that ParaView is very slow to select multi-block datasets in the pipeline browser when the datasets have a large number of blocks. The dataset linked below has a bit over 900 structured blocks, but the total size is still small, only about 70 MB

Dataset

Try the following:

  • Read the dataset
  • Create another source, like a sphere
  • Click the multi-block dataset in the pipeline browser to make it the active source. On my machine, this takes a good 5 seconds.

The number of blocks seems to be the deciding factor. I can select sources with only one block instantaneously, regardless of how large that block is. If I take a slice through the attached dataset, the data size is smaller, but there are still just as many blocks, so the selection takes just as long as with the full dataset.

This is a small dataset. My typical datasets have closer to 30,000 blocks, so it can take closer to a minute to select one of those.

I’m running ParaView 5.13.0-RC1 on Linux. I’ve seen this in older versions, too, going back to 5.10, if not farther.

Is there anything I can do in ParaView to make working with these datasets less painful? In addition, this is an AMR dataset. Would converting the data to one of VTK’s AMR types eliminate the slow selection issue? If so, which type should I use?

I agree that the UI can be slowed by big multiblock datastructures.

In your specific case, switching to the actual ARM dataset may be indeed a solution.

Hi Eric,

Yes, unfortunately this has historically been the case in ParaView with datasets with hundreds to thousands of blocks in a multiblock dataset. I believe at least part of the slowness comes from updating the user interface in the GUI - we have ParaView use cases that do not use the GUI that handle 15-30 thousand blocks with much less pronounced slow down.

So yes, its on us developers to identify bottlenecks in the GUI and other places and use smarter strategies to update it. I expect that to take time, but as the number of blocks in datasets that we continue to see increases, we’ll have to make those optimizations.

Which AMR type should I use? The blocks all have uniform size in all three directions. So should I convert this to vtkUniformGridAMR? They also overlap, so would vtkOverlappingAMR be more appropriate?

I don’t have any control over the way the data is written out from the simulation, so my plan is to write a ParaView reader plugin that reads the data in its native PLOT3D format and presents it to PV as an AMR dataset rather than a general multi-block dataset. I’ve written reader plugins for various unstructured formats. Is there anything special I need to be aware of in generating an AMR dataset?