ParaView Distributed Data-Distributed Render Mode
The least commonly used mode of ParaView is when the data servers and the render servers are both run on separate clusters in parallel, and routed back to the client. In this mode the data servers are responsible for loading the data and doing all computations, then piping the geometry and rendering data to the render servers. From there the data is rendered and composited, and the result sent back to the client.
In most situations it is faster and easier to simply run both the data and render server combined on the one cluster, as this removes the extra time and communication needed to shuffle the data around. Running ParaView with Mesa is frequently more efficient than this method.
Setting up for this operation is significantly more complicated than other modes. I have only been able to get this to work in reverse connection mode, so that's what this demonstration shall show. In this setup we will have a single node for the data server, and a single node for the render server.
In this example we will be running in "Connect Render to Data" (r2d) mode, meaning the render server will start first and the data server will connect to it.
- First step is construction of a "PVX" file. For
starters our file will look like this:
<?xml version="1.0" ?> <pvx> <Option Name="connect-render-to-data" /> <Process Type="client" /> <Process Type="data-server"> <Machine Name="dataserver" /> </Process> <Process Type="render-server"> <Machine Name="renderserver" /> </Process></pvx>Of course you need to replace the "dataserver" and "renderserver" with your actual machine names. Take this file and place it on the dataserver machine.
- Since we're running in reverse connection mode, first
you must start the client like this:
pvclient -rc -r2d
- Once the client is running and waiting, connect to
the data server and run the following:
pvdataserver -rc -ch=<client> file.pvx
- Once the dataserver is running, connect to the render
server and run the following:
pvrenderserver -rc -ch=<client>
- At this point, ParaView should start on the client.
If ParaView does not start, then there are several things that could be wrong.
- Perhaps a firewall issue has blocked your local ports. By default, ports 22221 (for the render server) and 11111 (for the data server) will need to be available on the client.
- Perhaps a firewall issue has blocked connection between the render
and data server. Check the output, and you should see something like
$ ./pvrenderserver -rc -ch=client Connect to client:22221 WaitForConnection: id :0 Port:33248 Received Hello from process 0
That Port is the port that must be open, and it is randomly assigned. If it is blocked on your system, then you can try using "Connect Data To Render" (d2r) mode.
- Starting the client with "-d2r" instead of "-r2d".
- Modify the PVX file to read "connect-data-to-render".
- Start the render server first and specify the PVX file on the command line.
This will force the two systems to reverse the connection between them (The render server will connect to the data server).
At this point, Usage to the client should be identical to the ParaView Client-Server Mode. At the start the data server will be sending geometry directly to the client so that it can be rendered locally. Once the size of the geometry has exceeded the Composite Threshold (specified in the General options tab), the data will be visualized on the render node and imagery will be sent to you.