Visualisation

Revision as of 14:40, 25 October 2018 by Stubbsda (talk | contribs)
Other languages:

Outils recommandés

ParaView

ParaView est un outil d'usage général de visualisation tridimensionnelle pour les domaines scientifiques. Ce logiciel libre fonctionne sous Linux, Windows et Mac; traite la plupart des formats de données; offre plusieurs modes de rendu; utilise les scripts Python; et peut gérer des dizaines de milliers de processeurs pour produire des rendus à partir de grands ensembles de données.

VisIt

Semblable à ParaView, le logiciel libre d'usage général VisIt est un outil d'analyse et de visualisation tridimensionnelle, capable d'opérer sur un poste de travail ou dans un environnement CHP avec des dizaines de milliers de processeurs.

VMD

VMD est un logiciel libre pour visualiser, animer et analyser les grands systèmes moléculaires en mode tridimensionnel. C'est un outil multiplateforme (MacOS X, Linux, Windows) qui accepte les scripts Tcl et Python. Capable d'intégrer un grand nombre de plugiciels (plugins), l'application permet de travailler avec plusieurs formats de données moléculaires.

VTK

VTK (Visualization Toolkit) est un boîte à outils logiciels 3D ouverts pour le traitement des images et la visualisation. Comprenant une bibliothèque de classes C++ et d'interfaces pour plusieurs langages interprétés dont Tcl/Tk, Java et Python, VTK a servi de base à plusieurs excellents logiciels de visualisation comme ParaView et VisIt.

Nouvelles grappes de Calcul Canada

Start a remote desktop via VNC

Frequently, it may be useful to start up graphical user interfaces for various software packages like Matlab. Doing so over X-forwarding can result in a very slow connection to the server, one useful alternative to X-forwarding is using VNC to start and connect to a remote desktop.

For more information, please see the article on VNC.

Mode client-serveur ParaView avec GPU sur Cedar et Graham

Il y a présentement un problème avec cette fonctionnalité sur Graham; dans l'attente de la solution, veuillez utiliser le mode client-serveur avec CPU.

Cedar et Graham offrent plusieurs nœuds interactifs avec GPU pour travailler avec ParaView en mode client-serveur.

1. Sur votre poste de travail, installez la même version de ParaView que celle présente sur la grappe que vous utiliserez; connectez-vous à la grappe et lancez une tâche interactive en série sur un GPU.

 salloc --time=1:00:0 --ntasks=1 --gres=gpu:1 --account=def-someprof
La tâche devrait commencer automatiquement sur un des nœuds interactif GPU.

2. À l'invite dans votre tâche, chargez le module GPU+EGL; modifiez la variable d'affichage pour éviter que ParaView utilise le contexte de rendu X11; démarrez le serveur ParaView.

 module load paraview-offscreen-gpu/5.4.0
 unset DISPLAY
 pvserver
Attendez que le serveur soit prêt à accepter la connexion client.
 Waiting for client...
 Connection URL: cs://cdr347.int.cedar.computecanada.ca:11111
 Accepting connection(s): cdr347.int.cedar.computecanada.ca:11111

3. Prenez note du nœud (ici cdr347) et du port (habituellement 11111); dans un autre terminal sur votre poste de travail Mac/Linux (sous Windows, utilisez un émulateur de terminal), liez le port 11111 à votre poste de travail et le même port au nœud de calcul (assurez-vous d'utiliser le bon nœud de calcul).

 ssh <username>@cedar.computecanada.ca -L 11111:cdr347:11111

4. Sur votre poste de travail, démarrez ParaView; allez à File -> Connect (ou cliquez sur le bouton vert Connect dans la barre d'outils); cliquez sur Add Server. Pointez ParaView à votre port local 11111 pour avoir des paramètres semblables à ceci name = cedar, server type = Client/Server, host = localhost, port = 11111; cliquez sur Configure; cliquez sur Save.

Une fois que la connexion est ajoutée à la configuration, sélectionnez le serveur dans la liste affichée et cliquez sur Connect. Dans la première fenêtre de terminal, le message Accepting connection ... se lit maintenant Client connected.

5. Ouvrez un fichier ParaView (qui vous a dirigé vers le système de fichiers distant) pour le visualiser.

NOTE : Parmi les préférences ParaView, le paramètre Render View -> Remote/Parallel Rendering Options -> Remote Render Threshold est à considérer. Fixé à environ 20Mo, le GPU de votre poste de travail peut afficher le rendu de petits fichiers et la rotation effectuée avec la souris est rapide; par contre, des travaux avec de moindres exigences (moins de 20Mo) seront pris en charge par le poste de travail et la vitesse de la visualisation dépendra beaucoup de la connexion. Avec ce paramètre fixé à 0Mo, toutes les opérations se font à distance et le GPU de la grappe fait tout le travail, ce qui est bien pour le traitement de grandes quantités de données, mais moins intéressant pour ce qui de l'interactivité. Faites l'essai de plusieurs valeurs différentes pour obtenir le résultat qui vous convient.

Mode client-serveur ParaView avec CPU sur Cedar et Graham

ParaView peut aussi être utilisé sur le CPU d'une grappe. Dans certains cas, les librairies pour CPU modernes, par exemple OSPray ou OpenSWR, offrent une performance comparable à celle obtenue avec un GPU. Aussi, étant donné que le serveur ParaView utilise MPI en mémoire distribuée, les très grands jeux de données peuvent être traités en parallèle avec plusieurs cœurs CPU sur un seul nœud ou sur plusieurs nœuds distribués.

1. Sur votre poste de travail, installez la même version de ParaView que celle présente sur la grappe que vous utiliserez; connectez-vous à la grappe et lancez une tâche interactive en série avec un CPU.

 salloc --time=1:00:0 --ntasks=1 --account=def-someprof
La tâche devrait commencer automatiquement sur un des nœuds interactif CPU.

2. À l'invite dans votre tâche, chargez le module de rendu hors écran de ParaView; démarrez le serveur.

 module load paraview-offscreen/5.3.0
 pvserver --mesa-swr-avx2 --force-offscreen-rendering
Avec la librairie OpenSWR, l'indicateur --mesa-swr-avx2 est important pour obtenir un rendu plus rapide.
Attendez que le serveur soit prêt à accepter la connexion client.
 Waiting for client...
 Connection URL: cs://cdr774.int.cedar.computecanada.ca:11111
 Accepting connection(s): cdr774.int.cedar.computecanada.ca:11111

3. Prenez note du nœud (ici cdr774) et du port (habituellement 11111); dans un autre terminal sur votre poste de travail Mac/Linux (sous Windows, utilisez un émulateur de terminal), liez le port 11111 à votre poste de travail et le même port au nœud de calcul (assurez-vous d'utiliser le bon nœud de calcul).

 ssh <username>@cedar.computecanada.ca -L 11111:cdr774:11111

4. Sur votre poste de travail, démarrez ParaView; allez à File -> Connect (ou cliquez sur le bouton vert Connect dans la barre d'outils); cliquez sur Add Server. Pointez ParaView à votre port local 11111 pour avoir des paramètres semblables à ceci name = cedar, server type = Client/Server, host = localhost, port = 11111; cliquez sur Configure; cliquez sur Save.

Une fois que la connexion est ajoutée à la configuration, sélectionnez le serveur dans la liste affichée et cliquez sur Connect. Dans la première fenêtre de terminal, le message Accepting connection ... se lit maintenant Client connected.

5. Ouvrez un fichier ParaView (qui vous a dirigé vers le système de fichiers distant) pour le visualiser.

NOTE : Parmi les préférences ParaView, le paramètre Render View -> Remote/Parallel Rendering Options -> Remote Render Threshold est à considérer. Fixé à environ 20Mo, le CPU de votre poste de travail peut afficher le rendu de petits fichiers et la rotation effectuée avec la souris est rapide; par contre, des travaux avec de moindres exigences (moins de 20Mo) seront pris en charge par le poste de travail et la vitesse de la visualisation dépendra beaucoup de la connexion. Avec ce paramètre fixé à 0Mo, toutes les opérations se font à distance et le CPU de la grappe fait tout le travail, ce qui est bien pour le traitement de grandes quantités de données, mais moins intéressant pour ce qui de l'interactivité. Faites l'essai de plusieurs valeurs différentes pour obtenir le résultat qui vous convient.

Pour effectuer le rendu sur plusieurs CPU, démarrez une tâche en parallèle sans oublier de spécifier la limite correcte en temps réel.

 salloc --time=0:30:0 --ntasks=8 --account=def-someprof

Démarrez ParaView avec srun.

 module load paraview-offscreen/5.3.0
 srun pvserver --mesa --force-offscreen-rendering

Comme l'indicateur --mesa-swr-avx2 ne semble pas avoir d'effet en parallèle, nous l'avons remplacé par --mesa qui, nous l'espérons, permet la détection automatique de la meilleure option logicielle.

Pour vérifier que le rendu s'effectue en parallèle, utilisez le filtre Process Id Scalars et appliquez la couleur avec process id.

Mode client-serveur VisIt avec CPU sur Cedar et Graham

Les deux versions sont visit/2.12.3 et visit/2.13.0. Pour utiliser VisIt à distance en mode client-serveur, une version majeure correspondante (2.12.x ou 2.13.x) doit être installée sur votre poste de travail. Avant de lancer l'application, téléchargez le fichier host_cedar.xml. Sous Linux, copiez le fichier dans ~/.visit/hosts/; sous Windows, copiez le fichier dans My Documents\VisIt 2.13.0\hosts\"~/.visit/hosts/. Démarrez VisIt sur votre poste de travail; dans le menu principal, sous Options -> Host profiles vous devriez voir un profil nommé cedar. Pour travailler avec Graham, utilisez

Host nickname = graham
Remote host name = graham.computecanada.ca

Indiquez votre nom d'utilisateur CCDB.

Username = yourOwwUserName

Les paramètres autres que le nom d'utilisateur devraient être semblables à ceci :

HostSetting.png

Dans cette fenêtre, cliquez sur Launch Profiles; login et slurm devraient être disponibles.

LaunchProfiles.png

  • Le profil login est pour utiliser le moteur VisIt avec le nœud frontal d'une grappe, ce qui n'est pas recommandé pour les visualisations intensives.
  • Le profil slurm utilise le moteur VisIt dans une tâche interactive avec un nœud de calcul; cliquez sur Parallel puis sur Advanced et entrez --account=def-someuser dans le champ Launcher arguments.

LauncherArguments.png

Sauvegardez les paramètres avec Option -> Save Settings et redémarrez VisIt sur votre poste de travail. Dans le dialogue d'ouverture de fichiers, entrez cedar ou graham dans le champ Host, en remplacement de localhost. En principe, la connexion s'établit, le Component Launcher démarre dans le nœud frontal et vous devriez pouvoir naviguer dans le système de fichiers de la grappe pour sélectionner un fichier. À l'invite, sélectionnez login (rendu avec le nœud frontal) ou slurm (rendu dans une tâche interactive dans un nœud de calcul). Dans le cas de slurm, vous devez aussi indiquer le nombre de nœuds, le nombre de processeurs et le temps d'exécution maximal.

SelectProfile.png

Cliquez sur OK et attendez que le moteur VisIt soit en opération. Si le rendu doit s'effectuer sur un nœud de calcul, le temps d'attente peut être plus long. Une fois que le jeu de données est affiché dans Active source de VisIt, le moteur fonctionne et vous pouvez commencer à travailler sur votre graphe.

Visualization on Niagara

Software Available

We have installed the latest versions of the open source visualization suites: VMD, VisIt and ParaView.

Notice that for using ParaView you need to explicitly specify one of the mesa flags in order to avoid trying to use openGL, i.e., after loading the paraview module, use the following command:

 paraview --mesa-swr

Notice that Niagara does not have specialized nodes nor specially designated hardware for visualization, so if you want to perform interactive visualization or exploration of your data you will need to submit an interactive job (debug job, see [[1]]). For the same reason you won't be able to request or use GPUs for rendering as there are none!

Interactive Visualization

Runtime is limited on the login nodes, so you will need to request a testing job in order to have more time for exploring and visualizing your data. Additionally by doing so, you will have access to the 40 cores of each of the nodes requested. For performing an interactive visualization session in this way please follow these steps:

  1. ssh into niagara.scinet.utoronto.ca with the -X/-Y flag for x-forwarding
  2. request an interactive job, ie.
  3. debugjob this will connect you to a node, let's say for the argument "niaXYZW"
  4. run your favourite visualization program, eg. VisIt/ParaView
  5. module load visit visit module load paraview paraview --mesa-swr
  6. exit the debug session.

Remote Visualization -- Client-Server Mode

You can use any of the remote visualization protocols supported for both VisIt and ParaView.

Both, VisIt and ParaView, support "remote visualization" protocols. This includes:

  • accessing data remotely, ie. stored on the cluster
  • rendering visualizations using the compute nodes as rendering engines
  • or both

VisIt Client-Server Configuration

For allowing VisIt connect to the Niagara cluster you need to set up a "Host Configuration".

Utilisez *une* des méthodes suivantes :

Niagara Host Configuration File

You can just download the Niagara host file, right click on the following link host_niagara.xml and select save as... Depending on the OS you are using on your local machine:

  • on a Linux/Mac OS place this file in ~/.visit/hosts/
  • on a Windows machine, place the file in My Documents\VisIt 2.13.0\hosts\

Restart VisIt and check that the niagara profile should be available in your hosts.

Manual Niagara Host Configuration

If you prefer to set up the verser yourself, instead of the configuration file from the previous section, just follow along these steps. Open VisIt in your computer, go to the 'Options' menu, and click on "Host profiles..." Then click on 'New Host' and select:

Host nickname = niagara
Remote host name = niagara.scinet.utoronto.ca
Username = Enter_Your_OWN_username_HERE
Path to VisIt installation = /scinet/niagara/software/2018a/opt/base/visit/2.13.1

Click on the "Tunnel data connections through SSH", and then hit Apply!

Visit niagara-01.png


Now on the top of the window click on 'Launch Profiles' tab. You will have to create two profiles:

  1. login: for connecting through the login nodes and accessing data
  2. slurm: for using compute nodes as rendering engines

For doing so, click on 'New Profile', set the corresponding profile name, ie. login/slurm. Then click on the Parallel tab and set the "Launch parallel engine"

For the slurm profile, you will need to set the parameters as seen below:


Visit niagara-02.png Visit niagara-03.png


Finally, after you are done with these changes, go to the "Options" menu and select "Save settings", so that your changes are saved and available next time you relaunch VisIt.

ParaView Client-Server Configuration

Similarly to VisIt you will need to start a debugjob in order to use a compute node to files and compute resources. Here are the steps to follow:

  1. Launch an interactive job (debugjob) on Niagara,
  2. debugjob
  3. After getting a compute node, let's say niaXYZW, load the ParaView module and start a ParaView server,
  4. module load paraview pvserver --mesa-swr-ax2 The --mesa-swr-avx2 flag has been reported to offer faster software rendering using the OpenSWR library.
  5. Now, you have to wait a few seconds for the server to be ready to accept client connections.
  6. Waiting for client... Connection URL: cs://niaXYZW.scinet.local:11111 Accepting connection(s): niaXYZW.scinet.local:11111
  7. Open a new terminal without closing your debugjob, and ssh into Niagara using the following command,
  8. ssh YOURusername@niagara.scinet.utoronto.ca -L11111:niaXYZW:11111 -N this will establish a tunnel mapping the port 11111 in your computer (localhost) to the port 11111 on the Niagara's compute node, niaXYZW, where the ParaView server will be waiting for connections.
  9. Start ParaView on your local computer, go to "File -> Connect" and click on 'Add Server'. You will need to point ParaView to your local port 11111, so you can do something like
  10. name = niagara server type = Client/Server host = localhost port = 11111 then click Configure, select Manual and click Save.
  11. Once the remote server is added to the configuration, simply select the server from the list and click Connect. The first terminal window that read Accepting connection... will now read Client connected.
  12. Open a file in ParaView (it will point you to the remote filesystem) and visualize it as usual.

Multiple CPUs

For performing parallel rendering using multiple CPUs, pvserver should be run using srun, ie. either submit a job script or request a job using

 salloc --ntasks=N*40 --nodes=N --time=1:00:00
 module load paraview
 srun pvserver --mesa

Final Considerations

Usually both VisIt and ParaView require to use the same version between the local client and the remote host, please try to stick to that to avoid having incompatibility issues, which might result in potential problems during the connections.

Other Versions

Alternatively you can try to use the visualization modules available on the CCEnv stack, for doing so just load the CCEnv module and select your favourite visualization module.

Mode client-serveur sur une instance infonuagique

Prérequis

La page Lancement de votre première instance vous apprend comment vous connecter. Une fois la connexion établie, vous devrez installer quelques logiciels afin de pouvoir compiler ParaView ou VisIt. Par exemple, sur une instance CentOS, entrez

 sudo yum install xauth wget gcc gcc-c++ ncurses-devel python-devel libxcb-devel
 sudo yum install patch imake libxml2-python mesa-libGL mesa-libGL-devel
 sudo yum install mesa-libGLU mesa-libGLU-devel bzip2 bzip2-libs libXt-devel zlib-devel flex byacc
 sudo ln -s /usr/include/GL/glx.h /usr/local/include/GL/glx.h

Si vous avez votre propre paire de clés publique-privée SSH (plutôt qu'une clé cloud), vous pouvez copier la clé publique sur l'instance pour faciliter les connexions futures en entrant sur votre poste de travail la commande

 cat ~/.ssh/id_rsa.pub | ssh -i ~/.ssh/cloudwestkey.pem centos@vm.ip.address 'cat >>.ssh/authorized_keys'

Client-serveur ParaView

Compiler avec OSMesa

Comme la plupart des instances sur le West Cloud n'ont pas accès à un processeur graphique (GPU), il faut compiler ParaView avec OSMesa pour obtenir un rendu hors écran (offscreen rendering). La configuration par défaut de OSMesa active OpenSWR, la librairie logicielle de tramage (rasterization) d'Intel qui permet d'opérer OpenGL. Le résultat sera un serveur ParaView qui utilise OSMesa pour construire un rendu sans X hors écran avec un processeur, mais avec les pilotes llvmpipe et SWR, ce dernier étant plus récent et plus rapide. Nous recommandons SWR.

Sur l'instance, compilez cmake

wget https://cmake.org/files/v3.7/cmake-3.7.0.tar.gz
unpack and cd there
./bootstrap
make
sudo make install

Ensuite, compilez llvm

cd
wget http://releases.llvm.org/3.9.1/llvm-3.9.1.src.tar.xz
unpack and cd there
mkdir -p build && cd build
cmake \
 -DCMAKE_BUILD_TYPE=Release \
 -DLLVM_BUILD_LLVM_DYLIB=ON \
 -DLLVM_ENABLE_RTTI=ON \
 -DLLVM_INSTALL_UTILS=ON \
 -DLLVM_TARGETS_TO_BUILD:STRING=X86 \
 ..
make
sudo make install

Ensuite, compilez Mesa avec OSMesa

cd
wget ftp://ftp.freedesktop.org/pub/mesa/mesa-17.0.0.tar.gz
unpack and cd there
./configure \
 --enable-opengl --disable-gles1 --disable-gles2 \
 --disable-va --disable-xvmc --disable-vdpau \
 --enable-shared-glapi \
 --disable-texture-float \
 --enable-gallium-llvm --enable-llvm-shared-libs \
 --with-gallium-drivers=swrast,swr \
 --disable-dri \
 --disable-egl --disable-gbm \
 --disable-glx \
 --disable-osmesa --enable-gallium-osmesa
make
sudo make install

Ensuite, compilez le serveur ParaView

cd
wget http://www.paraview.org/files/v5.2/ParaView-v5.2.0.tar.gz
unpack and cd there
mkdir -p build && cd build
cmake \
     -DCMAKE_BUILD_TYPE=Release \
     -DCMAKE_INSTALL_PREFIX=/home/centos/paraview \
     -DPARAVIEW_USE_MPI=OFF \
     -DPARAVIEW_ENABLE_PYTHON=ON \
     -DPARAVIEW_BUILD_QT_GUI=OFF \
     -DVTK_OPENGL_HAS_OSMESA=ON \
     -DVTK_USE_OFFSCREEN=ON \
     -DVTK_USE_X=OFF \
     ..
make
make install

Opérer en mode client-serveur

Vous pouvez maintenant démarrer le serveur ParaView sur l'instance pour un rendu SWR.

./paraview/bin/pvserver --mesa-swr-avx2

Sur votre poste de travail, établissez un lien SSH à partir du port local 11111 vers le port 11111 de l'instance.

ssh centos@vm.ip.address -L 11111:localhost:11111

Démarrez le client ParaView sur le poste de travail et connectez-vous à localhost:11111, ce qui devrait vous permettre d'ouvrir des fichiers situés sur l'instance. Pendant le calcul du rendu, le message SWR detected AVX2 est affiché sur la console.

Client-serveur VisIt

Compiler avec OSMesa

Avec VisIt, un seul script est nécessaire pour activer le rendu hors écran.

wget http://portal.nersc.gov/project/visit/releases/2.12.1/build_visit2_12_1
chmod u+x build_visit2_12_1
./build_visit2_12_1 --prefix /home/centos/visit --mesa --system-python \
   --hdf4 --hdf5 --netcdf --silo --szip --xdmf --zlib

Le script peut prendre quelques heures à s'exécuter; lorsqu'il est terminé, testez l'installation avec la commande

~/visit/bin/visit -cli -nowin

L'interpréteur (shell) Python devrait être activé.

Opérer en mode client-serveur

Sur votre poste de travail, démarrez VisIt. Sous Options -> Host profiles..., modifiez les paramètres suivants : le nom de la connexion (Cloud West par exemple), le nom de l'instance hôte (host name), le chemin vers VisIt (/home/centos/visit), le nom de l'utilisateur de l'instance. Activez enfin le lien SSH. N’oubliez pas de sauvegarder les paramètres avec ‘’ Options -> Save Settings’’. En ouvrant un fichier (File -> Open file... -> Host = Cloud West), vous devriez voir le système de fichiers de l’instance. Chargez et visualisez un fichier. Le traitement des données et le rendu devraient s’effectuer sur l’instance alors que le résultat et les contrôles de l’interface utilisateur seront affichés sur le poste de travail.

Formation

à confirmer

Please let us know if you would like to see a visualization workshop at your institution.

Documentation de Calcul Canada

Ateliers d'une journée ou demi-journée

Séminaires Web et autres brèves présentations

Lorsque possible, les liens suivants conduisent à un enregistrement vidéo et des diapositives.

Trucs et astuces

Vous pouvez ajouter ici vos propres scripts et autres renseignements qui ne se trouvent pas dans la documentation signalée sur cette page. Ils pourraient s'avérer intéressants pour d'autres utilisateurs.

Partenaires régionaux

WestGrid

SciNet, le CHP à l'Université de Toronto

SHARCNET

Galerie

Parcourez la galerie de visualisations réalisées à partir de modèles traités par les systèmes de Calcul Canada.

Dépannage

Contactez le soutien technique.