concept of visualizing large datasets (no ParaView)

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

concept of visualizing large datasets (no ParaView)

Trevour Spencer
Dear VTK experts,
I'd like to solve a problem with visualizing datasets that are too large to be rendered fluently on a single node.
We have datasets that have been distributed with PT-Scotch across ~10-100 nodes of a MPI cluster (each node has a GPU, but for now we are rendering CPU only.). A vtkUnstructuredGrid has been created on each process to visualize the respective fraction of the data that is stored in this process. So far, we have been successful.

How would I create a composite image that combines all data from all processes? Apparently http://www.vtk.org/Wiki/VTK/MultiPass_Rendering#Parallel_rendering gives some ideas, and the example http://www.vtk.org/gitweb?p=VTK.git;a=blob;f=Filters/Parallel/Testing/Cxx/DistributedDataRenderPass.cxx is perfect for distributing the points of a small dataset across 2 processes and rendering the combined image.

What I cannot find out with these examples is:
How do I proceed, if the data *are* already distributed across the processes? I cannot gather all data on process id #0 (too large) to pass them to a vtkDistributedDataFilter as in the example above. How should the DistributedDataRenderPass.cxx be modified to run with initially distributed data?

I appreciate your thoughts
Trevour

ps: Finding a solution without ParaView is a requirement from our IT side. We can't argue with them :(



Virenfrei. www.avast.com

_______________________________________________
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 VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: concept of visualizing large datasets (no ParaView)

David E DeMarle
On Tue, Jun 6, 2017 at 3:19 PM, Trevour Spencer <[hidden email]> wrote:
Dear VTK experts,
I'd like to solve a problem with visualizing datasets that are too large to be rendered fluently on a single node.
We have datasets that have been distributed with PT-Scotch across ~10-100 nodes of a MPI cluster (each node has a GPU, but for now we are rendering CPU only.). A vtkUnstructuredGrid has been created on each process to visualize the respective fraction of the data that is stored in this process. So far, we have been successful.

How would I create a composite image that combines all data from all processes? Apparently http://www.vtk.org/Wiki/VTK/MultiPass_Rendering#Parallel_rendering gives some ideas, and the example http://www.vtk.org/gitweb?p=VTK.git;a=blob;f=Filters/Parallel/Testing/Cxx/DistributedDataRenderPass.cxx is perfect for distributing the points of a small dataset across 2 processes and rendering the combined image.

What I cannot find out with these examples is:
How do I proceed, if the data *are* already distributed across the processes? I cannot gather all data on process id #0 (too large) to pass them to a vtkDistributedDataFilter as in the example above. How should the DistributedDataRenderPass.cxx be modified to run with initially distributed data?

I appreciate your thoughts
Trevour

ps: Finding a solution without ParaView is a requirement from our IT side. We can't argue with them :(


boo! ;)

See tests and examples reachable under doxygen for :
http://www.vtk.org/doc/nightly/html/classvtkCompositeRenderManager.html
and
http://www.vtk.org/doc/nightly/html/classvtkCompositer.html
for orchestrating the synchronous independent pipelines and depth compositing respectively.

Pretty soon you will want to swap out any VTK native compositor for IceT since that is better optimized and tested.
For ideas on how to go about that see:
http://www.vtk.org/Wiki/VTK/MultiPass_Rendering_With_IceT

Bit of advice - although it can be a chore to compile/install ParaView it can also be a chore to develop something from scratch.

good luck with either path.
cheers

David E DeMarle
Kitware, Inc.
Principal Engineer
21 Corporate Drive
Clifton Park, NY 12065-8662
Phone: 518-881-4909

_______________________________________________
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 VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: concept of visualizing large datasets (no ParaView)

Trevour Spencer
After running and studying the tests/examples for vtkCompositeRenderManager, I realized that none of them performs the depth buffer composite operation. All of them show some sort of data parallelism. But each process either renders its own data or all data are sent to process 0, where they are rendered. And for the vtkCompositer I see no examples or tests at all.

I also ran all tests for vtkCompositeZPass (http://www.vtk.org/doc/nightly/html/c2_vtk_t_3.html#c2_vtk_t_vtkCompositeZPass), but although I expect them to show the geometry of all processes in the render window of process 0 (unless the geometry is hidden in some process using SetVisible(0)), each process's render window only shows its own geometry.

I may have some misunderstanding of the vtkCompositeZPass. But do you have any example for the vtkCompositeRenderManager that shows a result like http://www.vtk.org/Wiki/VTK/MultiPass_Rendering_With_IceT, namely combine partial geometry on a few processes into a single render window? With vtkCompositeZPass or whatever, but without IceT (because the vtk-IceT-classes are still missing in VTK)?

Cheers
Trevour

2017-06-06 21:41 GMT+02:00 David E DeMarle <[hidden email]>:
On Tue, Jun 6, 2017 at 3:19 PM, Trevour Spencer <[hidden email]> wrote:
Dear VTK experts,
I'd like to solve a problem with visualizing datasets that are too large to be rendered fluently on a single node.
We have datasets that have been distributed with PT-Scotch across ~10-100 nodes of a MPI cluster (each node has a GPU, but for now we are rendering CPU only.). A vtkUnstructuredGrid has been created on each process to visualize the respective fraction of the data that is stored in this process. So far, we have been successful.

How would I create a composite image that combines all data from all processes? Apparently http://www.vtk.org/Wiki/VTK/MultiPass_Rendering#Parallel_rendering gives some ideas, and the example http://www.vtk.org/gitweb?p=VTK.git;a=blob;f=Filters/Parallel/Testing/Cxx/DistributedDataRenderPass.cxx is perfect for distributing the points of a small dataset across 2 processes and rendering the combined image.

What I cannot find out with these examples is:
How do I proceed, if the data *are* already distributed across the processes? I cannot gather all data on process id #0 (too large) to pass them to a vtkDistributedDataFilter as in the example above. How should the DistributedDataRenderPass.cxx be modified to run with initially distributed data?

I appreciate your thoughts
Trevour

ps: Finding a solution without ParaView is a requirement from our IT side. We can't argue with them :(


boo! ;)

See tests and examples reachable under doxygen for :
http://www.vtk.org/doc/nightly/html/classvtkCompositeRenderManager.html
and
http://www.vtk.org/doc/nightly/html/classvtkCompositer.html
for orchestrating the synchronous independent pipelines and depth compositing respectively.

Pretty soon you will want to swap out any VTK native compositor for IceT since that is better optimized and tested.
For ideas on how to go about that see:
http://www.vtk.org/Wiki/VTK/MultiPass_Rendering_With_IceT

Bit of advice - although it can be a chore to compile/install ParaView it can also be a chore to develop something from scratch.

good luck with either path.
cheers

David E DeMarle
Kitware, Inc.
Principal Engineer
21 Corporate Drive
Clifton Park, NY 12065-8662
Phone: <a href="tel:(518)%20881-4909" value="+15188814909" target="_blank">518-881-4909


_______________________________________________
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 VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: concept of visualizing large datasets (no ParaView)

David E DeMarle
Try this one then. Rendering/Parallel/Testing/Cxx/TestParallelRendering.cxx
Like all tests grep "Command" in the log file to show the command line used to run it. Like most tests, this one can take a "-I" argument to make it start the interaction loop rather than rendering once and finishing.

See in the test how each process uses the MPI rank to tell the polydatamapper what piece it and the pipeline behind it are responsible for. In this case the sphere source just makes its local section of the sphere mesh, but in the same way parallel aware readers know what files or data portions they are responsible for. Regardless of the pipeline, in the end the vtkCompositedSynchronizedRenderer and Window make sure that all ranks run at the same time and that, unlike in the other examples you found, the compositer depth composites the results and gathers them to rank 0 for display.




_______________________________________________
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 VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: concept of visualizing large datasets (no ParaView)

Trevour Spencer
Thank you for another suggestion. Have you run it, and does it work for you?

I wonder, If I don't understand what you are recommending, or if my setup is broken and doesn't work as expected, or if the composite renderer just isn't supposed to work as I think it should.

I can show you the result from Rendering/Parallel/Testing/Cxx/TestParallelRendering.cxx in the attachment. I started it as "mpirun -n 3 ./TestParallelRendering -I" and took a screenshot of the three windows. What I need is a full sphere in the first window (process 0), made of the red, blue and green segments. But again, only the red part appears in the first window, as in the previous examples that I have tested.

Please confirm, whether you have the same result.

Cheers
Trevour

2017-06-09 15:19 GMT+02:00 David E DeMarle <[hidden email]>:
Try this one then. Rendering/Parallel/Testing/Cxx/TestParallelRendering.cxx
Like all tests grep "Command" in the log file to show the command line used to run it. Like most tests, this one can take a "-I" argument to make it start the interaction loop rather than rendering once and finishing.

See in the test how each process uses the MPI rank to tell the polydatamapper what piece it and the pipeline behind it are responsible for. In this case the sphere source just makes its local section of the sphere mesh, but in the same way parallel aware readers know what files or data portions they are responsible for. Regardless of the pipeline, in the end the vtkCompositedSynchronizedRenderer and Window make sure that all ranks run at the same time and that, unlike in the other examples you found, the compositer depth composites the results and gathers them to rank 0 for display.





_______________________________________________
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 VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers

sphere-3pieces.png (111K) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: concept of visualizing large datasets (no ParaView)

David E DeMarle

David E DeMarle
Kitware, Inc.
Principal Engineer
21 Corporate Drive
Clifton Park, NY 12065-8662
Phone: 518-881-4909

On Fri, Jun 9, 2017 at 12:01 PM, Trevour Spencer <[hidden email]> wrote:
Thank you for another suggestion. Have you run it, and does it work for you?

I wonder, If I don't understand what you are recommending, or if my setup is broken and doesn't work as expected, or if the composite renderer just isn't supposed to work as I think it should.

I can show you the result from Rendering/Parallel/Testing/Cxx/TestParallelRendering.cxx in the attachment. I started it as "mpirun -n 3 ./TestParallelRendering -I" and took a screenshot of the three windows. What I need is a full sphere in the first window (process 0), made of the red, blue and green segments. But again, only the red part appears in the first window, as in the previous examples that I have tested.

Please confirm, whether you have the same result.

Cheers
Trevour

2017-06-09 15:19 GMT+02:00 David E DeMarle <[hidden email]>:
Try this one then. Rendering/Parallel/Testing/Cxx/TestParallelRendering.cxx
Like all tests grep "Command" in the log file to show the command line used to run it. Like most tests, this one can take a "-I" argument to make it start the interaction loop rather than rendering once and finishing.

See in the test how each process uses the MPI rank to tell the polydatamapper what piece it and the pipeline behind it are responsible for. In this case the sphere source just makes its local section of the sphere mesh, but in the same way parallel aware readers know what files or data portions they are responsible for. Regardless of the pipeline, in the end the vtkCompositedSynchronizedRenderer and Window make sure that all ranks run at the same time and that, unlike in the other examples you found, the compositer depth composites the results and gathers them to rank 0 for display.






_______________________________________________
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 VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: concept of visualizing large datasets (no ParaView)

Trevour Spencer
Well, thanks, that also explains my problems with the other examples, I guess.

I have run these on a machine with Mesa 11.2.2 CPU rendering. Are there any known problems with software rendering? I'll test with a different VTK installation next week and try to get an idea where the bug comes from.

The example at http://www.vtk.org/Wiki/VTK/MultiPass_Rendering_With_IceT, compiled against a ParaView 5.3.0 installation with the same Mesa runs fine though (same result as yours).

2017-06-09 18:06 GMT+02:00 David E DeMarle <[hidden email]>:

David E DeMarle
Kitware, Inc.
Principal Engineer
21 Corporate Drive
Clifton Park, NY 12065-8662
Phone: <a href="tel:(518)%20881-4909" value="+15188814909" target="_blank">518-881-4909

On Fri, Jun 9, 2017 at 12:01 PM, Trevour Spencer <[hidden email]> wrote:
Thank you for another suggestion. Have you run it, and does it work for you?

I wonder, If I don't understand what you are recommending, or if my setup is broken and doesn't work as expected, or if the composite renderer just isn't supposed to work as I think it should.

I can show you the result from Rendering/Parallel/Testing/Cxx/TestParallelRendering.cxx in the attachment. I started it as "mpirun -n 3 ./TestParallelRendering -I" and took a screenshot of the three windows. What I need is a full sphere in the first window (process 0), made of the red, blue and green segments. But again, only the red part appears in the first window, as in the previous examples that I have tested.

Please confirm, whether you have the same result.

Cheers
Trevour

2017-06-09 15:19 GMT+02:00 David E DeMarle <[hidden email]>:
Try this one then. Rendering/Parallel/Testing/Cxx/TestParallelRendering.cxx
Like all tests grep "Command" in the log file to show the command line used to run it. Like most tests, this one can take a "-I" argument to make it start the interaction loop rather than rendering once and finishing.

See in the test how each process uses the MPI rank to tell the polydatamapper what piece it and the pipeline behind it are responsible for. In this case the sphere source just makes its local section of the sphere mesh, but in the same way parallel aware readers know what files or data portions they are responsible for. Regardless of the pipeline, in the end the vtkCompositedSynchronizedRenderer and Window make sure that all ranks run at the same time and that, unlike in the other examples you found, the compositer depth composites the results and gathers them to rank 0 for display.







_______________________________________________
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 VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: concept of visualizing large datasets (no ParaView)

David E DeMarle

On Fri, Jun 9, 2017 at 12:45 PM, Trevour Spencer <[hidden email]> wrote:
Well, thanks, that also explains my problems with the other examples, I guess.

I have run these on a machine with Mesa 11.2.2 CPU rendering. Are there any known problems with software rendering? I'll test with a different VTK installation next week and try to get an idea where the bug comes from.


For this test and assuming you are using vtk's OpenGL(old) interface, this 11.2.2 should be more than sufficient. For OpenGL2 (new) then I think Mesa 13 is the minimum required without hacks.



_______________________________________________
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 VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: concept of visualizing large datasets (no ParaView)

Trevour Spencer
Thank you, the TestParallelExample.cxx produces the expected result after I switched to VTK 7.1 with Mesa 17.1.

Trevour

Virenfrei. www.avast.com

2017-06-09 21:08 GMT+02:00 David E DeMarle <[hidden email]>:

On Fri, Jun 9, 2017 at 12:45 PM, Trevour Spencer <[hidden email]> wrote:
Well, thanks, that also explains my problems with the other examples, I guess.

I have run these on a machine with Mesa 11.2.2 CPU rendering. Are there any known problems with software rendering? I'll test with a different VTK installation next week and try to get an idea where the bug comes from.


For this test and assuming you are using vtk's OpenGL(old) interface, this 11.2.2 should be more than sufficient. For OpenGL2 (new) then I think Mesa 13 is the minimum required without hacks.




_______________________________________________
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 VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers
Loading...