You are here

Connecting Desktop ParaView to a ParaView server on a GPU node

Paraview is a powerful, general purpose, open source visualization tool. It is installed on most WestGrid systems. It is possible to connect a ParaView client, running on your local desktop, to a ParaView server running on a GPU node on parallel.westgrid.ca. Using ParaView in this manner is similar to using ParaView in a remote visualization form but in this mode of operation Paraview (rather than VNC) takes care of communicating the user interacion and visualization data between the client (on your local computer) and the server (running on a GPU node on parallel.westgrid.ca).

If you are interested in a general discussion about your Visualization options within WestGrid, please refer to the Visualization Quickstart guide. If you want to see a summary of all related visualization resource in WestGrid, please refer to the main Visualization page.

Requesting a visualization node

To request a visualization node on which to work, log in to Parallel (parallel.westgrid.ca) with your SSH terminal client, then, use qsub to submit an interactive job with the following parameters:

qsub -q interactive -I -l nodes=1:ppn=1:gpus=1,walltime=1:00:00

You may add additional options or modify the ones above, such as the walltime limit, memory, ppn, or number of gpus, using the qsub -l argument (as explained on the Running Jobs page).

As with other batch jobs, qsub will return a JOBID number that you can use to monitor the job, however this qsub will wait for the job to start and will return a prompt on the compute node assigned.  If one of the interactive GPU nodes has sufficient resources, your job should start within 30 sec. When "qsub: job xxxxx.paralle-admin ready" appears, then continue.  If your job does not start right away, you can check on the job by logging in again via another terminal window.  You can use showq to check the status of your job.  If the job has not started within a minute or so, you might like to use showstart JOBID to get an estimate of when it might start.

Starting the ParaView server

Once the job has started, you can start the ParaView server on the GPU node. This is done via the pvserver command as follows:

[username@cn0553 ~]$ /global/software/ParaView/ParaView-4.3.1-Linux-64bit/bin/pvserver
Waiting for client...
Connection URL: cs://cn0553:11111
Accepting connection(s): cn0553:11111

By default pvserver uses port 11111. If this port is in use (someone else might be using a ParaView server), you will get an error message. If this occurs, simply pick another port in that range (e.g. 11112). This can be done using the --server-port=11112 command line option.

Once this is running correctly, there is only one more step to perform to connect to the pvserver from your desktop.

Port forwarding the pvserver port

In order for the ParaView client on your desktop to communicate with the ParaView server on the rendering node, it is necessary to "port forward" the network ports that the client and server will use to communicate. To do this, start a new ssh session from your desktop, connecting to parallel.westgrid.ca, forwarding the port as given below:

ssh parallel.westgrid.ca -L 11111:cn0553:11111

There are two things that need to match here. The first is the port number, it should match the port on which pvserver is listenting (from the previous step). The second is the node name. In this case, our qsub command gave us node cn0553. Thus we need to port forward to that node (putting the same port number before and after the node name).

Please note that an ssh command like this typically works only from Linux/MAC computers.  In other operating systems, you will have to find a similar option in your SSH client.

Connecting to the pvserver from your desktop

You are now ready to connect the ParaView client on your desktop to the pvserver on the GPU node on parallel.westgrid.ca. The first step is to start ParaView. It is important that the same version of ParaView be run on the client and the server. In this case, we are running ParaView 4.01 on the server so we need to run ParaView 4.01 on the desktop as well.

Once ParaView is running, go to the File menu and click on the Connect menu item. This will open a connection dialog box. Choose "Add Server" and enter a name for the connection (e.g. parallel.westgrid.ca), choose the "Client/Server" server type, type "localhost" as the host, and enter the port number (e.g. 11111) used to start the pvserver. Then click "Configure". You will then be asked the type of startup. We have already performend a manual start up of the server, so choose "Manual" and click Save.

You should then end up with a Server Configuration window that looks like the image shown here. You can then choose a server and click on the "Connect" button.

 ParaView Connection Dialog

Once connected to the server the client on your desktop should show the server connection in the Pipeline Browser window as shown below.

Paraview Connected

Using the ParaView client

Once you are connected to the Paraview client you can load Paraview data files as you might expect. In these cases, the rendering is being done by the pvserver on the GPUs on parallel.westgrid.ca and the images are being displayed on your local computer. Most interactions with the ParaView client will be identical to the interactions you would have if running Paraview on your local computer.

Some caveats

There are some oddities when using the Paraview Client/Server model for connecting to the GPUs on parallel.westgrid.ca.

  1. When opening files, access to state files and data files are handled differently. This can be confusing! When opening a data file (with the File -> Open menu) , the file browser that opens will provide access to the files on the remote machine on which the pvserver is running. In general, this is a good thing, because the data you are visualizing remains on the WestGrid machine (parallel.westgrid.ca). The potential confusion comes from how state files (.pvsm files) are treated. When opening a state file (the file that contains the pipeline you want to use) the file system browser opens on your local workstation. This means that when opening a state file you can load in a Paraview pipeline but and data files referenced will have to be remapped to use data files on the remote machine. Alternately, if you are always working from a remote machine with a pvserver, then you can save the ParaView state file locally with the remote path to the data set on the pvserver machine. It is difficult and confusing to try and maintain ParaView state files across multiple machines, in particular when using a combination of pvserver, running with remote VNC, and/or running Paraview locally on a workstation. I would recommend choosing one mechanism (Remote VNC, ParaView Client/Server) and stick to using that one method for remote visualization.
  2. In many situations, especially when running with complex pipelines, using a remote client/server connection to the pvserver on parallel.westgrid.ca can cause the  ParaView client to hang. In general, it has been observed that the hang is caused by the pvserver crashing with a segmentation fault after an X Window/OpenGL error. If this occurs, it is recommended that you use the Remote VNC visualizaiton method. Running ParaView in a single client/server model appears to be more robust.