vtkDataObject::ThreadedDeepCopy() ?


Does there exist such a thing as a threaded version of vtkDataObject::DeepCopy()?

It turns out that the DeepCopy that happens inside of vtkTemporalDataSetCache when using extended memory is quite a bottleneck. We should be able to make better use of available memory bandwidth if we did not do the copy of at least large arrays sequentially.

I’ve done a minimum amount of snooping around inside of vtkSMPTools and in @AllisonVacanti’s c++11 modernization posts and I can see how it might be done, but as always I was hoping that someone else had already done it.

thanks for your ideas.

I think that all that will be required is to thread the deepcopy of vtkDataArray. I started on that here. The results from the test case in the commit are very promising - the imagedata copy goes from 9.5 sec down to 1.8 on my machine.

Implementation of the important thing - threaded array deepcopies - was merged here: https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7252