Paraview 5.6.0 - distribute volume rendering


(Kmilo D) #1

Hi,

Our system has Paraview installed in a client/server distributed rendering cluster and set it up to do parallel rendering on 69 nodes ( we followed all the instructions in https://www.paraview.org/Wiki/Setting_up_a_ParaView_Server).
It works for isosurfaces. However, we found out that it doesnt render volume data properly.

When Paraview is not connected to the server, it renders the data as showed here:

volume_data

But when it’s connected to the server, we get these outlined transparent voxels:

no_volume_data

Our theory is, there are problems related on how the data is handle on the different nodes. Maybe paraview sends all the data to every node instead of dividing it into chunks and distribute them to all the system.
The data is only 6.8mb, so personally I dont think is related to ram /vram memory. Maybe there is an option we need to enable or an extra library Paraview needs to be built with.
Also, this a Linux environment and every node has a Quadro K5000 card.

Are we missing something?
Is there a best practice manual on how to handle this distribute rendering case?

Thanks.


(Utkarsh Ayachit) #2

Are you getting any dialog boxes that popup when you are connected to the server that indicates that the remote rendering is not possible since display is inaccessible? If remote rendering is not being used, you’ll see only outlines on the client for Volume since we don’t deliver the volume data to client for rendering. To confirm that remote rendering is indeed being used, in the Settings dialog, on the Render View tab, check the Show Annotation box. If remote rendering is being used, you should see Remote/parallel rendering: yes text on the view.

Secondly, are you in CAVE mode, by any chance, or just a regular client-server mode where your server connection is just being named cave. If you’re in CAVE mode, then the visualization shown in the application is only a representative and hence you won’t see the volume rendering in the desktop application.


(Kmilo D) #3

Hello, Thanks for replying.

This is the generated output when the system connects from the desktop to the server:

Generic Warning: In /gpfs/runtime/opt/paraview/5.6.0_OpenGL2/src/Paraview/ParaViewCore/ClientServerCore/Core/vtkPVServerInformation.cxx, line 784

vtkPVServerInformation::GetOGVSupport was deprecated for ParaView 5.5 and will be removed in a future version.

The other nodes dont throw any error messages related to displays and connections.

If you’re in CAVE mode, then the visualization shown in the application is only a representative and hence you won’t see the volume rendering in the desktop application.

I see, that’d explain the outline voxels on the desktop application! In the cave display nodes we see parts of the volume distributed all over the place, and some parts are not even renderer, it’s really hard to take a picture of it to show you.
So it seems the description I gave in the main post is wrong. We are running a CAVE system using paraview immersive. I apologize for the mistake.

I enabled the Show Annotation option, and I noticed two things. When loading vertex data(or just displaying the default empty scene) it prints : Remote/parallel rendering: no. On the other hand, when loading volume data, and switching the data representation from outline to volume, it prints Remote/parallel rendering: yes

vertex_data

volume_data_parallel_rendering_yes

Is there anything we should try?

Additionally, we just realized there is an nvidia plugin for paraview:


By default this plugin is not build with paraview source, Is it a must for cave systems ??

Thanks for the help.


(Utkarsh Ayachit) #4

In CAVE mode, I am afraid volume rendering is not supported currently. CAVE more requires non-distributed rendering which requires all data to be cloned on all ranks. Without going into implementation details, the code that moves data around doesn’t support moving whole volumes between ranks and since CAVE mode requires cloning of data, you’re see the issue where only part of the data is shown on difference screen.


(Kmilo D) #5

Thank you for the info!
Is this ‘move data across the system’ issue at the VTK level ? or just in Paraview?
If the later, then we can write a c++ application and use the VTK library to render volumes, right ?
Do you have any suggestions on how we can approach volume rendering on a cave system?

Again, thank you.