Visualisation

From CC Doc
Jump to: navigation, search
This page is a translated version of the page Visualization and the translation is 100% complete.

Other languages:
English • ‎français

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 CanadaThe French name for Compute Canada

Mode client-serveur ParaView avec GPU sur Cedar et Graham

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=xwp-462-aa
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 MPIMessage Passing Interface 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=xwp-462-aa
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
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 CPUs, 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=xwp-462-aa

Démarrez ParaView avec srun.

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

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 CCDBCompute Canada Data Base.

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.

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_MPIMessage Passing Interface=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

  • 2018-01-24 : Advanced Techniques for Visualization of Very Large Datasets, Université de la Colombie-Britannique, campus Okanagan (Kelowna)
  • 2018-01-31 : séminaire web Novel visualization techniques from the Visualize This competition
  • 2018-05-16 : Scientific visualization with ParaView, Université de Northern British Columbia, Prince George

Documentation de Calcul CanadaThe French name for Compute 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 CanadaThe French name for Compute Canada.

Dépannage

Contactez le soutien technique.