ParaView 6.2.0 complains about not having any points for plot over line on an MPI distributed dataset

Hello,

I am getting these warning since I updated from ParaView 6.2.0 RC1 to 6.2.0:

(   1.403s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7cd01787c980): No points read!
(   1.403s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7cd01787ae80): No points read!
(   1.404s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7cd01787ba80): No points read!
(   1.404s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7cd017884480): No points read!
(   1.404s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7cd017882f80): No points read!
(   1.404s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7cd017880b80): No points read!
(   1.452s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7cd017cb1080): No points read!
(   1.452s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7cd017cb2580): No points read!
(   1.452s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7cd017cb3a80): No points read!
(   1.453s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7cd017cb4f80): No points read!
(   1.453s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7cd017cb6480): No points read!
(   1.453s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7cd017cb7980): No points read!
(   1.453s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7cd017cb8e80): No points read!

These warning are thrown when using the PlotOverLine filter on an MPI distributed dataset (CFD code + ParaView Catalyst).

I suspect this is thrown by the filter on ranks that do not have data that intersects with the line.

This may not seem like a big deal, but in a ParaView Catalyst context, we are talking about hundreds of ranks throwing warnings to the screen log everytime Catalyst is called, which is potentially often. This renders the screen log almost unreadable.

If you confirm what I am saying, then I would consider this a regression and would appreciate a quick resolution. I do not think we can use ParaView 6.2 in this state.

Many thanks,
Alexandre

Is that catalyst or can this be reproduced by just opening a specific file and adding PlotOverLine ?
If that is so, please share that file.

I have not tried to reproduce it in ParaView, as I am not well versed in creating distributed datasets in ParaView.

@Alexandre_Minot is it convenient for you to try reverting https://gitlab.kitware.com/vtk/vtk/-/commit/a78669d689337d262ceac319a36878c8dedc3668 locally and see if the warning messages disappear?

By the way, IMO reading zero points is fine and should not produce a warning in any case, so we should remove that message.

Yes, reverting to the following commit removes the warning:

VTK$ git status
HEAD detached at 848cd66c88
nothing to commit, working tree clean

Note that the released code seems fine functionally, it’s just the warnings that are an issue.

What is the path forward? Can I expect a 6.2.1 soon? Thanks

Look for a ParaView 6.2.1 in early November. We’ll address the warnings by then.

Great, thanks

Do you need me to open an issue?

No, I’ve got it on my todo list. Thanks for the offer, though.

I can reproduce and filed an issue: https://gitlab.kitware.com/paraview/paraview/-/work_items/23441

This will be fixed in the upcoming VTK 9.7.2 by https://gitlab.kitware.com/vtk/vtk/-/merge_requests/13904

I’m getting this now with VTK 9.7.2:

( 112.218s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7d46955a1580): No points read!
( 112.219s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7d46946fd080): No points read!
( 112.219s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7d4694c86280): No points read!
( 112.220s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7d4694ca8a80): No points read!
( 112.220s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7d4694ca8480): No points read!
( 112.221s) [pvbatch.0       ]  vtkPolyDataReader.cxx:267   WARN| vtkPolyDataReader (0x7d4694cc7c80): No points read!

Again, that’s one log to the screen per core, which makes VTK 9.7.2 unusable in MPI.

This commit which is in VTK 9.7.2 should prevent that.

I guessed at how to reproduce what you were were doing in Catalyst to see it, so perhaps I guessed wrong. Please share all settings of your Plot Over Line proxy.

Also, do you have a debug build that you can use to set a breakpoint at vtkPolyDataReader.cxx:267 and share the relevant portion of the call stack? I don’t need anything that exposes anything proprietary, just the ParaView and VTK calls. I’d prefer not to guess wrong again.

Right, I thought it was a new issue, didn’t even read my own previous post. Thanks for trying a fix. Yes, let me get you a stack trace.

Is this enough? There doesn’t seem to be much in here:

#1 0x7b882b51b75c in vtkPolyDataReader::ReadMeshSimple(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, vtkDataObject*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkIOLegacy-pv6.2.so.1+0x8f75c)
    #2 0x7b882b4d02f2 in vtkDataReader::ReadMesh(int, int, int, int, vtkDataObject*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkIOLegacy-pv6.2.so.1+0x442f2)
    #3 0x7b88316eb3e6 in vtkReaderAlgorithm::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x843e6)
    #4 0x7b88316d7673 in vtkExecutive::CallAlgorithm(vtkInformation*, int, vtkInformationVector**, vtkInformationVector*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x70673)
    #5 0x7b88316cf427 in vtkDemandDrivenPipeline::ExecuteData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x68427)
    #6 0x7b88316ceb31 in vtkDemandDrivenPipeline::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x67b31)
    #7 0x7b8831702b0c in vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x9bb0c)
    #8 0x7b883170310f in vtkStreamingDemandDrivenPipeline::Update(int, vtkInformationVector*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x9c10f)
    #9 0x7b88316c59dd in vtkAlgorithm::Update(int) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x5e9dd)
    #10 0x7b882b4f76a3 in void vtkGenericDataObjectReader::ReadData<vtkPolyDataReader, vtkPolyData>(char const*, char const*, vtkDataObject*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkIOLegacy-pv6.2.so.1+0x6b6a3)
    #11 0x7b882b4f5cda in vtkGenericDataObjectReader::ReadMeshSimple(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, vtkDataObject*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkIOLegacy-pv6.2.so.1+0x69cda)
    #12 0x7b882b4d02f2 in vtkDataReader::ReadMesh(int, int, int, int, vtkDataObject*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkIOLegacy-pv6.2.so.1+0x442f2)
    #13 0x7b88316eb3e6 in vtkReaderAlgorithm::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x843e6)
    #14 0x7b88316d7673 in vtkExecutive::CallAlgorithm(vtkInformation*, int, vtkInformationVector**, vtkInformationVector*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x70673)
    #15 0x7b88316cf427 in vtkDemandDrivenPipeline::ExecuteData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x68427)
    #16 0x7b88316ceb31 in vtkDemandDrivenPipeline::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x67b31)
    #17 0x7b8831702b0c in vtkStreamingDemandDrivenPipeline::ProcessRequest(vtkInformation*, vtkInformationVector**, vtkInformationVector*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x9bb0c)
    #18 0x7b883170310f in vtkStreamingDemandDrivenPipeline::Update(int, vtkInformationVector*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x9c10f)
    #19 0x7b88316c59dd in vtkAlgorithm::Update(int) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x5e9dd)
    #20 0x7b8832777410 in vtkCommunicator::UnMarshalDataObject(vtkCharArray*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkParallelCore-pv6.2.so.1+0x17410)
    #21 0x7b8832778afc in vtkCommunicator::Gather(vtkDataObject*, std::vector<vtkSmartPointer<vtkDataObject>, std::allocator<vtkSmartPointer<vtkDataObject>>>&, int) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkParallelCore-pv6.2.so.1+0x18afc)
    #22 0x7b882a2cd59d in vtkReductionFilter::Reduce(vtkDataObject*, vtkDataObject*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkPVVTKExtensionsMisc-pv6.2.so.1+0x3659d)
    #23 0x7b882a2cc68d in vtkReductionFilter::RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkPVVTKExtensionsMisc-pv6.2.so.1+0x3568d)
    #24 0x7b88316d7673 in vtkExecutive::CallAlgorithm(vtkInformation*, int, vtkInformationVector**, vtkInformationVector*) (/usr/people/shared/tools/rocky/8/paraview//HPCX/6.2.1/lib64/libvtkCommonExecutionModel-pv6.2.so.1+0x70673)

My code looks something like this:

        extract_along_line = PVS.PlotOverLine(registrationName=f'Plot', Input=mesh)
        extract_along_line.Point1 = p0
        extract_along_line.Point2 = p1
        extract_along_line.SamplingPattern = "sample_uniformly"
        extract_along_line.Resolution = 100

Same warning which ever sampling pattern is used. I’m building debug now to see whether I get a better trace.

Thanks, that is helpful. Looks like these warnings issue stem from vtkReductionFilter sending empty geometry. I’ll investigate more tomorrow.

Thanks. But also, shouldn’t this warning be behind a debug flag? What is a ParaView user supposed to do when they see this warning? Looks to me like information for ParaView or VTK developers rather than users.

While that sounds reasonable, the message is from vtkPolyDataReader, and if you are using that to read a VTK legacy file, it could be helpful to know that there were zero points read. I’m reluctant to change that warning and many others in the legacy file readers that have been there a long time to debug.

The reason you are seeing it in this context frequently is because VTK datasets use vtkPolyDataReader/Writer and other VTK legacy file IO to de/serialize datasets when communicating over MPI. For this use, it’s appropriate to avoid the send if any of the warning-producing dataset characteristics are encountered.