HPC-Cluster

Visualisierung

Zur Visualisierung größerer Datensätze ist es meist unpraktisch, diese auf einen lokalen Rechner herunterzuladen, die Größe der Datensätze und die verfügbare Bandbreite setzen dem oftmals Grenzen. Um Visualisierungen vor Ort (d.h. in der Nähe der Daten) durchzuführen, steht, speziell für aufwändigere 3D-Graphik,  ein Visualisierungs-Server zur Verfügung und es besteht auch die Möglichkeit, GPU-Nodes über interaktive Jobs dafür zu nutzen.

Für einfachere Darstellungen (2D-Graphik, einfache 3D-Darstellung) genügt meist schon eine X2Go-Verbindung.

Konzept:  Bei VirtualGL werden die 3D-Anteile einer Applikation auf einer serverseitigen GPU gerendert und als komprimierte 2D-Graphik an den Client geschickt:

 

A) Auf dem Visualisierungsserver

Voraussetzung

Der Visualisierungsserver ist  cluster-v.math.tu-berlin.de.

Nutzer, die VirtualGL benutzen wollen, sollten Mitglied in der vglusers-Gruppe sein.

Benutzung

Grundsätzlich gibt es drei Möglichkeiten, VirtualGL zu benutzen:

  1. In einer X2Go-Sitzung

    Hier genügt es, die Applikation mittels vglrun zu starten, also z.B.

    cluster-v% vglrun paraview

     
  2. Mit einem VNC-Proxy

    Hier wird über einen Ssh-Tunnel auf dem Visualisierungs-Server ein VNC-Server gestartet. 

    client% ssh -L 5909:localhost:5909 cluster-v.math.tu-berlin.de -l <username>
    cluster-v%  module add turbovnc/3.0.2
    cluster-v%  vncserver :9 -noxstartup
    cluster-v%  DISPLAY=:9 vglrun paraview
    client% vncviewer :9

    Im obigen Beispiel wird sowohl auf dem Client wie auf cluster-v das X11-Display '9' benutzt (woraus sich für VNC die Portnummer 5909 (= 5900+9) ergibt). Statt '9' kann eine beliebige unbenutzte Display-Nummer verwendet werden. 
  3. Mit einem lokalen VirtualGL-Client

    Wenn der lokale Rechner über eine VirtualGL-Installation verfügt, kann eine Verbindung zum Visualisierungs-Server
    mit vglconnect aufgebaut werden:

    client%  vglconnect -s cluster-v.math.tu-berlin.de -l <username>

    und die Applikation mit vglrun gestartet werden:

    cluster-v%  vglrun paraview

Pro und Contra der verschiedenen Methoden

  • Bei hohem Anteil von 2D-Elementen (Menus, Schaltleisten) ist Methode 3) über langsamere Verbindungen (DSL) nicht zu empfehlen.
  • Die wohl performanteste Variante ist 2), sollte aber wegen der Komplexität des Verbindungsaufbaus außer in speziellen Fällen zugunsten von 1) vermieden werden.

B) In einem interaktiven Job

In speziellen Fällen kann es sinnvoll sein, ein GUI innerhalb eines interaktiven Jobs zu starten, z.B. in Verbindung mit einer nebenher laufenden Rechnung, zum Debuggen oder wegen spezieller Hardware-Anforderungen.

Für solche Fälle sollte der interaktive Job am besten aus einer X2Go-Sitzung gestartet werden (der Login-Server ist hier beliebig) und er benötigt eine zusätzliche Environment-Variable.
Beispiel:

  cluster-i%  USE_VGL=1 qrsh -l gpus=1  bash --login
  node733%  display=$(/afs/math/software/gpu/sbin/start_private_xserver)
  node733%  module load paraview
  node733%  vglrun -d $display -c rgb  paraview