Visualisation
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 :
Dans cette fenêtre, cliquez sur Launch Profiles; login et slurm devraient être disponibles.
- 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.
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.
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:
- ssh into niagara.scinet.utoronto.ca with the -X/-Y flag for x-forwarding
- request an interactive job, ie. debugjob this will connect you to a node, let's say for the argument "niaXYZW"
- run your favourite visualization program, eg. VisIt/ParaView module load visit visit module load paraview paraview --mesa-swr
- 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!
Now on the top of the window click on 'Launch Profiles' tab.
You will have to create two profiles:
-
login
: for connecting through the login nodes and accessing data -
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:
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:
- Launch an interactive job (debugjob) on Niagara, debugjob
- After getting a compute node, let's say niaXYZW, load the ParaView module and start a ParaView server, module load paraview pvserver --mesa-swr-ax2 The
- Now, you have to wait a few seconds for the server to be ready to accept client connections. Waiting for client... Connection URL: cs://niaXYZW.scinet.local:11111 Accepting connection(s): niaXYZW.scinet.local:11111
- Open a new terminal without closing your debugjob, and ssh into Niagara using the following command, ssh YOURusername@niagara.scinet.utoronto.ca -L11111:niaXYZW:11111 -N this will establish a tunnel mapping the port 11111 in your computer (
- 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
name = niagara
server type = Client/Server
host = localhost
port = 11111
then click Configure, select - 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 readClient connected
. - Open a file in ParaView (it will point you to the remote filesystem) and visualize it as usual.
--mesa-swr-avx2
flag has been reported to offer faster software rendering using the OpenSWR library.
localhost
) to the port 11111 on the Niagara's compute node, niaXYZW
, where the ParaView server will be waiting for connections.
Manual
and click Save.
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
- VisIt workshop, HPCS 2016 à Edmonton, Marcelo Ponce et Alex Razoumov
- ParaView workshop, juillet 2017, Alex Razoumov
- Gnuplot, xmgrace, remote visualization tools (X-forwarding and VNC), python's matplotlib , école d'été 2016 en Ontario, Marcelo Ponce (SciNet, Université de Toronto)
- Brief overview of ParaView & VisIt école d'été 2016 en Ontario, Marcelo Ponce (SciNet, Université de Toronto)
Séminaires Web et autres brèves présentations
Lorsque possible, les liens suivants conduisent à un enregistrement vidéo et des diapositives.
- Data visualizaton on Cedar and Graham, octobre 2017, Alex Razoumov; comprend des recettes et des démos de l'exécution de scripts ParaView en client-serveur et en lot sur des partitions CPU et GPU de Cedar et Graham
- Visualization support in WestGrid / Compute Canada, janvier 2017, Alex Razoumov; comprend des démonstrations de comment opérer ParaView et VisIt localement sur un poste de travail (introduction à la visualisation 3D)
- Using ParaViewWeb for 3D visualization and data analysis in a browser, mars 2017, Alex Razoumov
- VisIt scripting, novembre 2016, Alex Razoumov
- Batch visualization webinar, mars 2015, Alex Razoumov
- CPU-based rendering with OSPRay, septembre 2016, Alex Razoumov
- Graph Visualization with Gephi, mars 201, Alex Razoumov
- 3D graphs with NetworkX, VTK, and ParaView, mai 2016, Alex Razoumov
- Remote Graphics on SciNet's GPC system (Client-Server and VNC), rencontre du SciNet User Group d'octobre 2015, Ramses van Zon (SciNet, Université de Toronto)
- VisIt Basics, rencontre du SciNet User Group de février 2016, Marcelo Ponce (SciNet, Université de Toronto)
- Intro to Complex Networks Visualization, with Python, Marcelo Ponce (SciNet, Université de Toronto)
- Introduction to GUI Programming with Tkinter, septembre 2014, Erik Spence (SciNet, Université de Toronto)
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
- Overview
- Running Pre-/Post-Processing Graphical Applications
- Supported Software (see Visualization section at bottom)
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.