This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
howto:remote_viz [2019/05/14 11:00] ccrosby [Getting a Virtual Desktop on a compute node] |
howto:remote_viz [2020/11/11 15:03] (current) ccrosby [Getting a Virtual Desktop on a compute node] |
||
---|---|---|---|
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 150: | Line 146: | ||
=== Launch the VNC server === | === Launch the VNC server === | ||
- | Make sure that you have a suitable $HOME/.vnc/xstartup.turbovnc file: | + | Make sure that you have a suitable $HOME/.vnc/xstartup.turbovnc file. The TurboVNC installation has been customized to generate a suitable version of this file be default when it is run for the first time, but if you have difficulties, ensure that it looks like this: |
<code> | <code> | ||
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 | ||
+ | ### This following line will write the hostname of your compute node to the file hostname.txt | ||
+ | hostname > hostname.txt | ||
+ | /apps/chpc/compmech/TurboVNC-2.2.5/bin/vncserver :1 -depth 24 -geometry 1600x900 | ||
+ | sleep 2h | ||
+ | /apps/chpc/compmech/TurboVNC-2.2.5/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 either by looking in the file hostname.txt or by 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 193: | ||
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 grey 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.3_swr module. The currently installed Mesa-19.0.3 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.3 implementation. | + | - Software linking dynamically to OpenGL libraries will probably work well with the chpc/compmech/mesa/20.2.2_swr or chpc/compmech/mesa/19.1.2_swr modules. The currently installed Mesa-20.2.2 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''. |
+ | - 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-20.2.2 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 Mesa Software Rendering === |
- | 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/20.2.2_swr'' module defaults to LLVMpipe. |