Warning
Iceberg was decommissioned on 30th November 2020. Users of Iceberg need to switch to using ShARC and/or Bessemer instead.
Software that requires OpenGL and a graphics card to render complex visualisations cannot be run on all of Iceberg’s nodes as:
Only a limited number of nodes have graphics cards
None of the nodes that do have a monitor attached
To run such software on Iceberg we therefore need:
A means to automate the finding of a node with a graphics card that we can use for visualisation purposes
A way of streaming the images rendered on a node through to the machine the user is sat in front of.
We have set up on Iceberg a system for hardware-accelerated visualisation that uses two main tools: VirtualGL and TigerVNC. See below for simple usage instructions.
Download and install TigerVNC on your machine. TigerVNC is a program that allows you to efficiently view graphical programs on one computer that are actually running on another computer.
Connect to Iceberg. Note that if you are using a VPN connection from off-campus then at present the following instructions will not work for you if your home network uses IP addresses in the range 192.168.0.0 - 192.168.3.255: you should instead a) connect from on-campus or b) use the ShARC cluster’s visualisation nodes or c) change your home network IP range to something different e.g. 192.168.100.0-255.
On the login node (not a worker node) run the command qsh-vis
. The output should look something like the following:
[te1st@iceberg-login1 ~]$ qsh-vis
NOTE: you can only run 1 GPU acclerated session
New 'node000:1 (te1st)' desktop is node000:1
Starting applications specified in /home/te1st/.vnc/xstartup
Log file is /home/te1st/.vnc/node000:1.log
Accelerated VNC graphics session started
*******To connect: *******
Either startup a web-browser and enter the address:
http://node000.sheffield.ac.uk:5800
or
use the TigerVNC application to connect to:
node000.sheffield.ac.uk:5900
Make sure to enter your normal Iceberg username/password when prompted.
To end session : press [enter]
Leave that terminal running.
On your machine start the ‘VNC Viewer’ program that comes with TigerVNC (this is called vncviewer
on Linux). You should then see a dialog box like this:
Enter the connection details for TigerVNC that were issued by the qsh-vis
command e.g. node000.shef.ac.uk:5901
(NB the node name and last four digits may differ when you run qsh-vis
).
Click Connect
You should now see a desktop within a window. This desktop is running on a worker node (in the case of the presented example this is node000`
; see the qsh-vis
output) that is equipped with a graphics card (Optional: run nvidia-smi
to see what type of graphics card). A terminal window is automatically started from which you can load modules and start applications that require hardware-accelerated graphics.
When you are finished, close VNC Viewer then return to the terminal within which you started qsh-vis
and press enter to stop the worker session (and allow someone else to use that graphics-card-equipped node).
Sessions started using qsh-vis
by default have allocated to them:
1 CPU core
1 GPU
You can request additional resources by passing the same parameters to qsh-vis
that can be used with qrsh
/qrshx
/qsh
/qsub
(see Starting interactive jobs and submitting batch jobs).
Research groups who have purchased their own GPU visualisation nodes may have different defaults.
At present only one graphics-card-equipped node is available for use with qsh-vis
so there may be contention for this resource. Some research groups have purchased their own visualisation nodes.
Behind the scenes:
qsh-vis
sets the default resources to be requested for the interactive session (based on whether the user belongs to a research group that has dedicated visualisation nodes)…
…then uses qrsh
to start a script with these resources.
This script then starts a TigerVNC vncserver
on a port that is unique over the range of machines on which hardware-accelerated visualisation sessions can be started.
TigerVNC supports VirtualGL, a means of streaming the images rendered by say a graphics card to a remote machine.
The aforementioned script then kills the created Xvnc
process when Enter is pressed.