User Tools

Site Tools


howto:remote_viz

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
howto:remote_viz [2019/05/16 10:09]
ccrosby [Getting a Virtual Desktop on a compute node]
howto:remote_viz [2020/07/06 14:51] (current)
ccrosby [How to Videos]
Line 1: Line 1:
 ====== Visualisation servers ====== ====== Visualisation servers ======
 The visualization servers are intended for single-process pre- and post-processing only, as well as GUI monitoring of running jobs.  These servers are NOT intended for parallel processing or running compute tasks. ​ **The system administrators will terminate processes that do not fit the above description without warning.** ​ However, it is now possible to get a [[http://​wiki.chpc.ac.za/​howto:​remote_viz#​getting_a_virtual_desktop_on_a_compute_node|Virtual Desktop on a compute node]], where you can use the full capabilities of the compute node without restriction. The visualization servers are intended for single-process pre- and post-processing only, as well as GUI monitoring of running jobs.  These servers are NOT intended for parallel processing or running compute tasks. ​ **The system administrators will terminate processes that do not fit the above description without warning.** ​ However, it is now possible to get a [[http://​wiki.chpc.ac.za/​howto:​remote_viz#​getting_a_virtual_desktop_on_a_compute_node|Virtual Desktop on a compute node]], where you can use the full capabilities of the compute node without restriction.
 +
 +====== How to Videos ======
 +  - Basic ssh login : [[https://​youtu.be/​XEPZLtDf1Bw|ssh login to Lengau]]
 +  - Setting up ssh keys : [[https://​youtu.be/​AfXtM7t4MGs|ssh keys]]
 +  - Getting a VNC session on a visualization node : [[https://​youtu.be/​t3-Vc7zjxfQ|VizNode VNC session]]
 +  - Getting a VNC session on a compute node : [[https://​youtu.be/​EDpB-pB08Vo|Compute Node VNC session]]
 +
  
 ====== Remote Visualization ====== ====== Remote Visualization ======
Line 15: Line 22:
 There is a default VNC server installed on chpcviz. ​ Do not use it. Use TurboVNC, which can be started with a command like this: There is a default VNC server installed on chpcviz. ​ Do not use it. Use TurboVNC, which can be started with a command like this:
  
-/opt/​TurboVNC/​bin/​vncserver :3 -geometry 1920x1080 -depth 24+/apps/​chpc/​compmech/TurboVNC-2.2.3/​bin/​vncserver :3 -geometry 1920x1080 -depth 24
  
  
 === First time instructions === === First time instructions ===
-However, the default startup script that TurboVNC ​supplies for your X-Windows session is faulty. ​ We are working on providing a better ​default, but in the meantime, please use the following interim work-around:​ +TurboVNC ​by default ​sets up a startup file that selects ​the lightweight window ​manager Fluxbox.  ​If you are running TurboVNC ​on chpcviz1 ​or chpclic1 ​you can also use the friendlier window managers Mate or XFCE4.
-  * When starting ​up a VNC session for the first time on this system, start the default VNC server rather than TurboVNC. +
-  * As with TurboVNC, the vncserver will ask you to specify a password if this is a first usage. +
-  * You can immediately kill the vncserver, you only need its XWindows ​startup ​script as a template. +
-  * Change directory into $HOME/​.vnc +
-  * ''​cp xstartup xstartup.turbovnc''​ +
-  * Open xstartup.turbovnc in your favourite editor, and change the file so that it looks like the example below. +
-  * The reason for going through the above process is to make sure that xstart.turbovnc has the right permissions. ​ You can also just create the file in a text editor, and afterwards correct the permissions:​ ''​chmod 0700 xstartup.turbovnc''​ +
-  * **A word on Window managers**: Mate and Xfce4 provide desktops, with menus, etc. Fluxbox is a minimalist Window ​manager.  ​Fluxbox ​will start with a featureless black screen.  ​Click the right mouse button to get a menu from which you can start an Xterm. ​ You can resize windows with alt-right button. +
-  * It is not strictly speaking necessary to start your desktop session with the vglrun wrapper, but doing so makes it unnecessary to use it when running ​OpenGL applications in the desktop session. +
-  * Now start a TurboVNC ​session as per the usual manner. +
-  * If you have trouble with your configuration, ​or you have forgotten your VNC password, simply delete ​the $HOME/.vnc directory and start over.+
  
 Your xstartup.turbovnc file should look like this: Your xstartup.turbovnc file should look like this:
Line 52: Line 48:
 The vncserver will continue running even after logging out. If you are no longer going to use it, please kill the server as follows: The vncserver will continue running even after logging out. If you are no longer going to use it, please kill the server as follows:
  
-/opt/​TurboVNC/​bin/​vncserver -kill :3+/apps/​chpc/​compmech/TurboVNC-2.2.3/​bin/​vncserver -kill :3
  
 where :3 should be changed to whichever display the server has been running on. where :3 should be changed to whichever display the server has been running on.
Line 134: Line 130:
 ===== Shut down the TurboVNC session when done ===== ===== Shut down the TurboVNC session when done =====
  
-/opt/​TurboVNC/​bin/​vncserver -kill :3 +/apps/​chpc/​compmech/TurboVNC-2.2.3/​bin/​vncserver -kill :3 
  
 will shut down the VNC server for display 3, freeing up resources for other users. will shut down the VNC server for display 3, freeing up resources for other users.
Line 164: Line 160:
 Now launch the VNC server: Now launch the VNC server:
 <​code>​ <​code>​
-/​apps/​chpc/​compmech/​TurboVNC-2.1.2/​bin/​vncserver :1 -depth 24 -geometry 1800x1000 ​+/​apps/​chpc/​compmech/​TurboVNC-2.2.3/​bin/​vncserver :1 -depth 24 -geometry 1800x1000 ​
 </​code>​ </​code>​
 Use a resolution that fits your display. ​ Make note of the compute node hostname. Use a resolution that fits your display. ​ Make note of the compute node hostname.
 +
 +
 +=== Launching the VNC server without an interactive node ===
 +The process described above has an important vulnerability. ​ If you lose the interactive ssh session because of a network glitch, you will also lose the VNC session. ​ A better approach is to launch the VNC session from a normal PBS job script, which could look like this:
 +
 +<file bash runVNC.qsub>​
 +#!/bin/bash
 +#PBS -l select=1:​ncpus=4
 +#PBS -q serial
 +#PBS -l walltime=2:​00:​00
 +#PBS -P MECH1234
 +#PBS -o $HOME/​vncsession.out
 +#PBS -e $HOME/​vncsession.err
 +#PBS -m abe
 +#PBS -M justsomeuser@gmail.com
 +/​apps/​chpc/​compmech/​TurboVNC-2.2.3/​bin/​vncserver :1 -depth 24 -geometry 1600x900
 +sleep 2h
 +/​apps/​chpc/​compmech/​TurboVNC-2.2.3/​bin/​vncserver -kill :1
 +</​file>​
 +
 +Obviously customise this script to suit your own circumstances. ​ The above script will provide 4 cores for two hours. ​ DO NOT use more than 4 cores in the VNC session. ​ If you intend using a full compute node, use the smp queue and request 24 cores. ​ If you need more than 2 hours, specify the walltime as well as the sleep time accordingly. ​ Get the compute node hostname by querying PBS: ''​qstat -awu username''​ will give you the jobnumbers of all your jobs (please substitute "​username"​ with your OWN username). ​ ''​qstat -n1 jobnumber''​ will give you the hostname of the compute node(s) that you are using for that job.
 +
  
 === Build an ssh tunnel to the compute node === === Build an ssh tunnel to the compute node ===
Line 173: Line 191:
 ssh -f jblogs@lengau.chpc.ac.za -L 5901:​cnode1234:​5901 -N ssh -f jblogs@lengau.chpc.ac.za -L 5901:​cnode1234:​5901 -N
 </​code>​ </​code>​
-As usual, use **your** username and compute ​number, not jblogs and cnode1234!+As usual, use **your** username and compute ​node, not jblogs and cnode1234! 
 + 
 + 
 + 
  
 === Connect your VNC client === === Connect your VNC client ===
-Now, as before, fire up your VNC client, preferably TurboVNC, and connect to port 5901 (or 1 in VNC shorthand) on localhost. ​ Once connected, you will be confronted with a blank black screen. ​ Click your right mouse button to pop up a small menu, and select xterm, which will give you a small terminal. ​ You can resize the window by holding down the alt key and the right mouse button, and dragging the mouse. ​ Refer to the [[http://​fluxbox.org|Fluxbox homepage]] ​of you need help with other operations.+Now, as before, fire up your VNC client, preferably TurboVNC, and connect to port 5901 (or 1 in VNC shorthand) on localhost. ​ Once connected, you will be confronted with a blank black screen. ​ Click your right mouse button to pop up a small menu, and select xterm, which will give you a small terminal. ​ You can resize the window by holding down the alt key and the right mouse button, and dragging the mouse. ​ Refer to the [[http://​fluxbox.org|Fluxbox homepage]] ​if you need help with other operations.
  
 === Running Interactive Software === === Running Interactive Software ===
 Up to this point, the process has been basically identical to using a visualization node.  However, **the compute nodes do not support VirtualGL**,​ as they do not have dedicated graphics cards. ​ All is not lost however: Up to this point, the process has been basically identical to using a visualization node.  However, **the compute nodes do not support VirtualGL**,​ as they do not have dedicated graphics cards. ​ All is not lost however:
   - Software GUIs with menus, etc. will generally just work.   - Software GUIs with menus, etc. will generally just work.
-  - Software linking dynamically to OpenGL libraries will probably work well with the chpc/​compmech/​mesa/​19.0.4_swr module. ​ The currently installed Mesa-19.0.supports ​up to OpenGL-2.1 only.  ​We are working on improving ​this installation to support up to at least OpenGL-3.2.  Older programs, such as Paraview-4.3 ''/​apps/​chpc/​compmech/​CFD/​ParaView-4.3.1-Linux-64bit/​bin/​paraview''​ work very well with the Mesa-19.0.implementation.+  - Software linking dynamically to OpenGL libraries will probably work well with the chpc/​compmech/​mesa/​19.1.2_swr module. ​ The currently installed Mesa-19.1.supports ​software rendering using either LLVMpipe or Intel'​s swr.  ​By default the module activates the LLVMpipe method, but this is easily changed: ''​export GALLIUM_DRIVER=swr''​ or ''​export GALLIUM_DRIVER=llvmpipe''​. ​ The advantage of the LLVMpipe implementation is that it supports a more recent version of OpenGL. 
 +  Older programs, such as Paraview-4.3 ''/​apps/​chpc/​compmech/​CFD/​ParaView-4.3.1-Linux-64bit/​bin/​paraview''​ work very well with the Mesa-19.1.implementation.  More recent ParaView versions are built with --mesa-swr and --mesa-llvm support. ​ Although these work well with X-forwarding,​ they don't work in the VNC environment. ​ We are not sure why, but we are working on it.
   - Some software vendors provide binaries that are statically linked to a Mesa library. ​ These will generally work, but may be a bit slow.    - Some software vendors provide binaries that are statically linked to a Mesa library. ​ These will generally work, but may be a bit slow. 
   - STARCCM+ has its own version of Mesa-SWR. ​ Use the command line options ''​-mesa -rr -rrthreads N''​ , where N is the number of cores that should be used for graphics rendering. ​ In this implementation,​ you can use up to 16 threads.   - STARCCM+ has its own version of Mesa-SWR. ​ Use the command line options ''​-mesa -rr -rrthreads N''​ , where N is the number of cores that should be used for graphics rendering. ​ In this implementation,​ you can use up to 16 threads.
  
 === Notes on OpenSWR ===  === Notes on OpenSWR === 
-Historically,​ Mesa software rendering has been a way of getting OpenGL-enabled software to work, albeit very slowly, on hardware without dedicated graphics-processing capabilities. ​ However, the [[http://​www.openswr.org|OpenSWR]] framework makes full use of the sse and avx capabilities of modern CPUs to produce ​excellent ​rendering performance. ​  +Historically,​ Mesa software rendering has been a way of getting OpenGL-enabled software to work, albeit very slowly, on hardware without dedicated graphics-processing capabilities. ​ However, the [[http://​www.openswr.org|OpenSWR]] framework makes full use of the sse and avx capabilities of modern CPUs to produce ​good rendering performance. ​  Recent versions of the alternative [[https://​www.mesa3d.org/​llvmpipe.html|LLVMpipe]] implementation have similar performance,​ and the ''​apps/​chpc/​compmech/​mesa/​19.1.2_swr''​ module defaults to LLVMpipe, because it supports more recent OpenGL features.
  
/var/www/wiki/data/attic/howto/remote_viz.1557994183.txt.gz · Last modified: 2019/05/16 10:09 by ccrosby