Remote visualization service

Introduction

The goal of this service is to provide the users a GPU accelerated use of OpenGL applications, especially for pre- and post- processing work, where not only the GPU performance is needed but also fast access to the shared file systems of the cluster and a reasonable amount of RAM.

The service is based on integration of open source tools VirtualGL and TurboVNC together with the cluster's job scheduler PBS Professional.

Currently two compute nodes are dedicated for this service with following configuration for each node:

Visualization node configuration
CPU 2 x Intel Sandy Bridge E5-2670, 2.6 GHz
Processor cores 16 (2 x 8 cores)
RAM 64 GB, min. 4 GB per core
GPU NVIDIA Quadro 4000, 2 GB RAM
Local disk drive yes - 500 GB
Compute network InfiniBand QDR

Schematic Overview

rem_vis_scheme

rem_vis_legend

How to Use the Service

Setup and Start Your Own TurboVNC Server

TurboVNC is designed and implemented for cooperation with VirtualGL and available for free for all major platforms. For more information and download, please refer to: http://sourceforge.net/projects/turbovnc/

Always use TurboVNC on both sides (server and client) don't mix TurboVNC and other VNC implementations (TightVNC, TigerVNC, ...) as the VNC protocol implementation may slightly differ and diminish your user experience by introducing picture artifacts, etc.

The procedure is:

1. Connect to a Login Node

Please follow the documentation.

2. Run Your Own Instance of TurboVNC Server

To have the OpenGL acceleration, 24 bit color depth must be used. Otherwise only the geometry (desktop size) definition is needed.

Hint

At first VNC server run you need to define a password.

This example defines desktop with dimensions 1200x700 pixels and 24 bit color depth.

$ module load turbovnc/1.2.2
$ vncserver -geometry 1200x700 -depth 24

Desktop 'TurboVNC: login2:1 (username)' started on display login2:1

Starting applications specified in /home/username/.vnc/xstartup.turbovnc
Log file is /home/username/.vnc/login2:1.log

3. Remember Which Display Number Your VNC Server Runs (You Will Need It in the Future to Stop the Server)

$ vncserver -list

TurboVNC server sessions:

X DISPLAY # PROCESS ID
:1 23269

In this example the VNC server runs on display :1.

4. Remember the Exact Login Node, Where Your VNC Server Runs

$ uname -n
login2

In this example the VNC server runs on login2.

5. Remember on Which TCP Port Your Own VNC Server Is Running

To get the port you have to look to the log file of your VNC server.

$ grep -E "VNC.*port" /home/username/.vnc/login2:1.log
20/02/2015 14:46:41 Listening for VNC connections on TCP port 5901

In this example the VNC server listens on TCP port 5901.

6. Connect to the Login Node Where Your VNC Server Runs With SSH to Tunnel Your VNC Session

Tunnel the TCP port on which your VNC server is listenning.

$ ssh login2.anselm.it4i.cz -L 5901:localhost:5901

x-window-system/ If you use Windows and Putty, please refer to port forwarding setup in the documentation: x-window-and-vnc#section-12

7. If You Don't Have Turbo VNC Installed on Your Workstation

Get it from: http://sourceforge.net/projects/turbovnc/

8. Run TurboVNC Viewer From Your Workstation

Mind that you should connect through the SSH tunneled port. In this example it is 5901 on your workstation (localhost).

$ vncviewer localhost:5901

If you use Windows version of TurboVNC Viewer, just run the Viewer and use address localhost:5901.

9. Proceed to the Chapter "Access the Visualization Node"

Now you should have working TurboVNC session connected to your workstation.

10. After You End Your Visualization Session

Don't forget to correctly shutdown your own VNC server on the login node!

$ vncserver -kill :1

Access the Visualization Node

To access the node use a dedicated PBS Professional scheduler queue qviz. The queue has following properties:

queue active project project resources nodes min ncpus priority authorization walltime
qviz Visualization queue yes none required 2 4 150 no 1 hour / 8 hours

Currently when accessing the node, each user gets 4 cores of a CPU allocated, thus approximately 16 GB of RAM and 1/4 of the GPU capacity.

Note

If more GPU power or RAM is required, it is recommended to allocate one whole node per user, so that all 16 cores, whole RAM and whole GPU is exclusive. This is currently also the maximum allowed allocation per one user. One hour of work is allocated by default, the user may ask for 2 hours maximum.

To access the visualization node, follow these steps:

1. In Your VNC Session, Open a Terminal and Allocate a Node Using PBSPro qsub Command

This step is necessary to allow you to proceed with next steps.

$ qsub -I -q qviz -A PROJECT_ID

In this example the default values for CPU cores and usage time are used.

$ qsub -I -q qviz -A PROJECT_ID -l select=1:ncpus=16 -l walltime=02:00:00

Substitute PROJECT_ID with the assigned project identification string.

In this example a whole node for 2 hours is requested.

If there are free resources for your request, you will have a shell unning on an assigned node. Please remember the name of the node.

$ uname -n
srv8

In this example the visualization session was assigned to node srv8.

2. In Your VNC Session Open Another Terminal (Keep the One With Interactive PBSPro Job Open)

Setup the VirtualGL connection to the node, which PBSPro allocated for our job.

$ vglconnect srv8

You will be connected with created VirtualGL tunnel to the visualization ode, where you will have a shell.

3. Load the VirtualGL Module

$ module load virtualgl/2.4

4. Run Your Desired OpenGL Accelerated Application Using VirtualGL Script "Vglrun"

$ vglrun glxgears

If you want to run an OpenGL application which is vailable through modules, you need at first load the respective module. E.g. to run the Mentat OpenGL application from MARC software ackage use:

$ module load marc/2013.1
$ vglrun mentat

5. After You End Your Work With the OpenGL Application

Just logout from the visualization node and exit both opened terminals nd end your VNC server session as described above.

Tips and Tricks

If you want to increase the responsibility of the visualization, please adjust your TurboVNC client settings in this way:

rem_vis_settings

To have an idea how the settings are affecting the resulting picture utility three levels of "JPEG image quality" are demonstrated:

JPEG image quality = 30

rem_vis_q3

JPEG image quality = 15

rem_vis_q2

JPEG image quality = 10

rem_vis_q1