pro-viz to nowa usługa dla użytkowników klastrów Ares oraz Prometheus umożliwiająca pracę w trybie graficznym na węzłach obliczeniowych. Usługa oparta jest o rozwiązanie TurboVNC, które jest jednym z najszybszych klientów VNC pozwalających na wygodną pracę nawet przy używaniu sieci o słabej przepustowości.

Więcej o TurboVNC można znaleźć na stronie programu TurboVNC

Założenia usługi

Usługa ma pozwalać na wygodną pracę z oprogramowaniem naukowym (Matlab, Mathematica, Maple, Ansys Workbench/Mechanical/Fluent/Electronic Desktop itp.) poprzez udostępnienie trybu graficznego tych aplikacji bezpośrednio na węźle obliczeniowym.

Wymagania

Użytkownik musi posiadać aktywny grant obliczeniowy na jednym z klastrów oraz aktywną usługę dostępu do danego klastra.

Nowe wersje usługi nie wymagają od użytkownika instalacji żadnych dodatkowych pakietów - dostęp realizowany jest poprzez interfejs WWW HTML5 przeglądarki internetowej.

Możliwe jest również połączenie z użyciem dedykowanego klienta  TurboVNC - wtedy wymagana jest jego instalacja na komputerze klienckim.

TurboVNC w systemach Linux (Ubuntu, Fedora, Mint, etc.) instalowany jest zwykle do katalogu /opt/TurboVNC/bin zalecamy więc dodanie tego katalogu do zmiennej PATH.

TurboVNC do działania wymaga instalacji Java JRE x86 - https://www.java.com/pl/download/manual.jsp.

W wersjach niższych niż 2.1.2 należy również rozwiązać problem z brakiem plików serwera (rozwiązanie podane na przykładzie Java JRE 8):

  1. Po instalacji Java JRE x86 należy pobrać plik Java Server JRE ze strony http://www.oracle.com/technetwork/java/javase/downloads/server-jre8-downloads-2133154.html
  2. Rozpakować archiwum, aby otrzymać katalog jdkWERSJA, np. jdk1.8.0_121
  3. Następnie przejść do katalogu instalacyjnego (w przykładzie będzie to C:/Program files/java/jre1.8.0_121)
  4. Skopiować zawartość rozpakowanego katalogu do katalogu instalacyjnego Javy i zezwolić na nadpisanie plików.

Jeżeli to rozwiązanie nie wystarczy, proszę zastosować się do rozwiązania poniższego (zaczerpnięte z https://stackoverflow.com/questions/18123144/missing-server-jvm-java-jre7-bin-server-jvm-dll):

  1. Przejść do katalogu instalacyjnego (w przykładzie będzie to C:/Program files x86/java/jre1.8.0_121), do podkatalogu bin
  2. Utworzyć katalog 'Server'
  3. Skopiować zawartość katalogu client do katalogu Server

Uruchomienie usługi na klastrze

W pierwszym kroku użytkownik musi uruchomić zadanie na klastrze Ares lub Prometheus, które będzie pozwalało na przekazywanie trybu graficznego (informacje jak zalogować się na klaster znajdują się na stronie dokumentacji Sposoby dostępu i przesyłania danych). Do tego celu służy aplikacja, której moduł należy załadować na maszynie dostępowej odpowiedniego klastra za pomocą systemu Lmod. Najpierw należy sprawdzić, jak dokładnie nazywa się moduł usługi na klastrze poleceniem module avail pro-viz, a następnie załadować odpowiedni moduł poleceniem module load ..., np. na klastrze Prometheus będzie to module load  tools/pro-viz, na klastrze Ares - module load pro-viz.

Dzięki temu program pro-viz stanie się dostępny w terminalu. Jego składnia jest następująca:

pro-viz --help
Usage: pro-viz
  start [-n CORES | -N NODES | -p PARTITION | -t TIME | -A ACCOUNT | -r RESERVATION | -g GPUS | -C constraints | -m EMAIL-ADDRESS ] - start a new batch session
  interactive [ -p PARTITION | -t TIME | -A ACCOUNT | -r RESERVATION | -g GPUS | -C constraints  ] - start a new interactive session
  list - list all sessions
  attach JOBID - attach session to a working job with JOBID
  password JOBID - generate access token for session JOBID
  stop JOBID - terminate session JOBID
  killall - terminate all sessions
  help - duh

W instrukcji przedstawione zostanie uruchomienie jednego zadania batchowego na jednym pełnym węźle obliczeniowym na klastrze Prometheus. Do tego celu należy wykonać np. polecenie:

module load tools/pro-viz
pro-viz start -N 1 -n 24 -p plgrid -A provizgrant -t 03:00:00
Gdzie provizgrant to nazwa odpowiedniego grantu na klastrze, w ramach którego ma zostać uruchomione zadanie. Należy teraz poczekać, aż zadanie wystartuje. Status zadania można sprawdzić korzystając z polecenia pro-viz list, którego wynik przedstawiono poniżej:

JOBID                   HOST    DISPLAY
------                  -----   -------
4201152                 p1788     1

Wynik ten oznacza, że zadanie o JOBID 4201152 zostało uruchomiona na hoście p1788 na wyświetlaczu 1. Dane te będą potrzebne do zestawienia sesji dla klienta TurboVNC.

Połączenie z usługą za pomocą klienta www - zalecane

Niektóre z modułów pro-viz pozwalają na połączenie z GUI klastra bezpośrednio poprzez przeglądarkę internetową wspierającą HTML5. Przykładem może być moduł pro-viz/1.8.4-gua na klastrze Ares. Przy użyciu tego modułu w momencie, gdy zadanie pro-viz już zostało uruchomione, można wykonać polecenie pro-viz password JOBID, gdzie JOBID to id zadania zwracane w komendzie pro-viz list, w naszym przypadku komenda będzie wyglądała następująco: pro-viz password 4201152. Hasło można wygenerować wyłącznie dla zadań już działających (zadania posiadające skonfigurowany DISPLAY).

Jako wynik polecenia zostanie zwrócony m.in  adres www, który należy kliknąć lub skopiować do przeglądarki. Link na następującą postać:

Session link:
 https://gui01.ares.cyfronet.pl/screen/#/client/alamakotakotmaale

Po kliknięciu/skopiowaniu należy zalogować się poprzez panel logowania PLGrid aby uzyskać dostęp do trybu graficznego bezpośrednio w przeglądarce www.

Całość zwracanej informacji zawiera instrukcję połączenia z użyciem interfejsu WWW, klienta Java TurboVNC oraz innych klientów z użyciem tunelowania:

------- Web client ------------------------------------------------------

Session link:
 https://gui01.ares.cyfronet.pl/screen/#/client/alamakotakotmaale 

Web interface link:
 https://gui01.ares.cyfronet.pl/screen/# 
-------------------------------------------------------------------------

------- TurboVNC client -------------------------------------------------
Session password (for external client): 000000
Full command (for external client): vncviewer -SecurityTypes=VNC,UnixLogin,None -via plguser@ares.cyfronet.pl -password=000000 ac0078:1
-------------------------------------------------------------------------

------- Other VNC clients -----------------------------------------------
Use the following command to forward VNC port to your local computer:
 ssh plguser@ares.cyfronet.pl -L5901:ac0078:5901

Start your VNC client and connect to the forwarded port:
 i.e: gvncviewer localhost:1

Session password: 000000
-------------------------------------------------------------------------

Połączenie z usługą za pomocą klienta Java TurboVNC Viewer

Aby połączyć się z usługą należy uruchomić na swoim komputerze klienta Java TurboVNC Viewer, a następnie skonfigurować połączenie z wcześniej uruchomionym zadaniem. Aby połączenie mogło zostać zestawione, wymagane jest skonfigurowanie tunelu do maszyny dostępowej klastra. Funkcjonalność ta jest wbudowana w klienta TurboVNC (Java TurboVNC Viewer).



Najpierw należy skonfigurować tunel. W tym celu przechodzimy do panelu opcji: Options... -> Security -> Gateway (SSH server or UltraVNC repeater). Odznaczamy opcję Extended encryption and authentication (VeNCrypt)  a w polu 'SSH user' wpisujemy swój login PLGrid: plg... (np. plguser), a jako 'Host' podajemy adres maszyny dostępowej klastra:

  • pro.cyfronet.pl dla Prometheusa
  • ares.cyfronet.pl dla Aresa

Dla nowszych wersji TurboVNC zaznaczamy wyłącznie opcję Standard VNC.


Jeżeli uruchomili Państwo klienta TurboVNC i nie posiada on zakładki Security opisanej powyżej, proszę zamknąć uruchomionego klienta TurboVNC Viewer i uruchomić klienta Java TurboVNC Viewer opisanego w dokumentacji.

Po kliknięciu 'OK' powracamy do okna głównego i tam wpisujemy jako 'VNC server' adres hosta oraz wyświetlacza zwracany w poleceniu pro-viz list w notacji HOST:DISPLAY, np. p1788:1:

Po kliknięciu 'Connect' pojawi się kolejne okno, które pozwoli na zestawienie tunelu do serwera VNC. Jako 'User name' wpisany będzie użytkownik podany wcześniej w konfiguracji 'Gateway ...', jako hasło należy wpisać hasło danego użytkownika PLGrid:

Po poprawnym wpisaniu hasła dla klastra Prometheus zostanie wyświetlona wiadomość SSH Message o treści:

Należy ją potwierdzić klikając w przycisk 'OK'. Pojawi się okno, w którym należy wpisać hasło połączeniowe do serwera VNC.

Aby wygenerować hasło, musimy będąc zalogowanym na klastrze wydać polecenie pro-viz password JOBID, gdzie JOBID to id zadania zwracane w komendzie pro-viz list, w naszym przypadku komenda będzie wyglądała następująco: pro-viz password 4201152. Hasło można wygenerować wyłącznie dla zadań już działających (zadania posiadające skonfigurowany DISPLAY).

Jako komunikat zwrotny otrzymamy m.in. one-time password (for external client), który kopiujemy i wpisujemy w otwartym oknie TurboVNC. W dalszych rozważaniach zakładamy, że zwrócone hasło to 000000.

Dodatkowo, jeśli ktoś woli korzystać z klienta TurboVNC w terminalu może wykonać polecenie, które również wyświetla komenda pro-viz password JOBID, np.:

vncviewer -via plg...@pro.cyfronet.pl -password=000000 p1788:1

Po połączeniu ukaże się połączenie z zadaniem w trybie GUI. Można w tym momencie już uruchomić terminal, którego ikona znajduje się na dolnym pasku:

i po załadowaniu odpowiedniego modułu aplikacji, korzystać z przydzielonych zasobów.

Pierwszym ładowanym w terminalu modułem powinien być moduł tools/pro-viz, który doda odpowiednie ścieżki do środowiska użytkownika.


Poniżej przykład z uruchomieniem aplikacji Matlab. Widać, że użytkownik uruchomił w trybie GUI przykładowy benchmark Parallel Computing Toolbox używając 24 rdzeni na maszynie.

Rozłączenie z sesją

Ponieważ zadanie TurboVNC może działać bez otwartego klienta, możliwe jest po zleceniu obliczeń zamknięcie okna klienta TurboVNC przyciskiem zamknij/zakończ lub rozłącz. W tym przypadku obliczenia wykonują się nadal, jednak bez podglądu.

Aby ponownie zalogować się do rozłączonej sesji, należy ponownie wygenerować hasło poleceniem pro-viz password 4201152, a następnie podać podczas logowania wygenerowane tak hasło.

Kończenie sesji

Po zakończeniu obliczeń należy zamknąć okno TurboVNC oraz wydać w konsoli Prometheusa polecenie:

pro-viz stop 4201152

Zamiast tego można również kliknąć w nazwę użytkownika widoczną w prawym górnym roku ekranu TurboVNC na panelu, następnie wybrać wyloguj. To automatycznie zakończy sesję na klastrze.