Différences entre les versions de « Simulations »

 
(111 versions intermédiaires par 7 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
Sur cette page, vous trouverez la procédure générale vous permettant de démarrer des simulations numériques ainsi que certaines consignes à respecter.
+
<!-- Simulations, simulations, Simulations Numériques, simulations numériques, Simulation, simulation, Numérique, numérique, Numerical Simulation, numerical simulation, Numerical Simulations, numerical simulations, Machines Disponibles, machines disponibles, Available Machines, available machines, Procédure, procédure, règles à respecter, Règles, Consignes, consignes, Calculs, calculs, Parallèle, parallèle, Parallèles, parallèles, Parallel, parallel, Computation, computation, Computations, computations, Procedure, procedure -->
 +
Depuis l'avènement de l'informatique, les simulations numériques sont couramment utilisées en sciences, tant pour tester des hypothèses, qu'effectuer une analyse numérique ou pour mettre un modèle à l'épreuve et l'environnement informatique du Département est conçu de façon à faciliter la mise en place de telles simulations.
  
Si vous travailler à partir d'une machine qui ne fait pas partie des machines du Département (ordinateur portable, ordinateur de la maison, etc.), lisez d'abord la section &laquo;&nbsp;[[Simulations#Travail_à_distance|Travail à distance]]&nbsp;&raquo;.
+
Cette page contient des renseignements quant aux ressources disponibles, indique quelques procédures standards et offrent quelques conseils généraux.
 +
__TOC__
  
Les instructions qui suivent font appel à des [[Commandes_élémentaires|commandes UNIX]]; si vous n'êtes pas à l'aise...
+
== Présentation des ressources ==
  
 +
=== Les différentes machines ===
  
__TOC__
+
Le Département fourni plusieurs machines permettant d'effectuer d'imposants calculs qui sont partagées entre les usagers. Ces machines sont dispersées en 4 différents endroits&nbsp;: [[labomat]], [[labodms]], [[labostat]] et la salle des serveurs. Bien que l'on retrouve ces machines en des lieux différents, elles sont toutes connectées entres elles grâce à un réseau et l'on peut se connecter à chacune d'entre elles à l'aide de la commande [[La_commande_ssh|<code>ssh</code>]]. Veuillez prendre note qu'une [[Politique_d'utilisation_du_réseau|politique d'utilisation]] régit l'utilisation du réseau.
 
 
== Choisir des machines ==
 
  
Avant de démarrer vos simulations, vous devez d'abord choisir des machines sur lesquelles exécuter vos scripts. La manière la plus simple d'effectuer votre choix est d'utiliser la commande
+
Afin d'éviter de surcharger les machines et de ralentir vos calculs, vous devez choisir votre machine à l'aide de la commande [[La_commande_simulation|<code>simulation</code>]]. Il suffit d'entrer dans un terminal (icône [[Image:TerminalIcone.png]])&nbsp;:
 
<pre>
 
<pre>
 
simulation
 
simulation
 
</pre>
 
</pre>
dans un terminal, suivie de la touche <tt>Entrée</tt> (''Enter''). Cette commande questionne les machines disponibles à propos de leur charge de travail&nbsp;: plus la valeur associée à une machine est grande, plus la charge actuelle de la machine est importante. Pour plus de détails, consultez la page dédiée à [[La_commande_simulation|<tt>simulation</tt>]].
+
Cette commande renvoie l'utilisation des CPUs, de la mémoire vive et des cartes graphiques (s'il y a lieu) des machines disponibles.  Voici un exemple du résultat qui peut en sortir:
 +
<pre>
 +
$ simulation
 +
Host        Cpus  C.L.  Mem Mem L  GPU    G. Nom  CPU S  CPU M
 +
============================================================================
 +
simulation7  24    10  251  133    -        -  13030  312720
 +
simulation8  24    12  251  111    -        -  13030  312720
 +
saturne        8    5  11    9    -        -  5200  41600
 +
mars          8    5  11    9    -        -  5200  41600
 +
uranus        8    5  11    9    -        -  5200  41600
 +
neptune        8    5  11    9    -        -  5200  41600
 +
lune          8    5  11    8    -        -  5200  41600
 +
mercury        8    5  11    8    -        -  5200  41600
 +
venice        12    8  15    8    0  GTX 1050  15971  191652
 +
venus          8    5  11    8    -        -  5200  41600
 +
jupiter        8    5  11    6    -        -  5200  41600
 +
borrelly      8    4  11    6    -        -  5200  41600
 +
fox          12    7  15    5    0  GTX 1050  15971  191652
 +
soleil        8    4  11    4    -        -  5200  41600
 +
athenes        8    8    7    3    -        -  10085  80680
 +
pluto          8    4  11    3    -        -  5200  41600
 +
acapulco      12    3  15    2    0  GTX 1050  15971  191652
 +
panthere      12    8  15    2    0  GTX 1050  15971  191652
 +
lionceau      8    5    5    2    -        -  5809  46472
 +
leopard        8    5    5    2    -        -  5200  41600
 +
loup          8    5    5    2    -        -  5809  46472
 +
lion          12    0  15    1    0  GTX 1050  15971  191652
 +
puma          8    5    5    1    -        -  5809  46472
 +
cougar        8    5  11    1    -        -  5200  41600
 +
jaguar        12    7  15    1    0  GTX 1050  15971  191652
 +
ocelot        2    2    1    0    -        -  5200  10400
 +
lynx          8    5  11    0    -        -  5200  41600
 +
 
 +
============================================================================
 +
Cpus => Cores C.L. => Cpu libres
 +
Mem => Memoire totale Mem L => Memoire disponible
 +
GPU => GPUs Utilisés G. Nom => GPU model
 +
CPU S => Cpu Mark single thread CPU M => Cpu Mark total multi threads
 +
 
 +
*** ATTENTION: ASSUREZ-VOUS DE TOUJOURS LAISSER 2 CPU (CORES) DE LIBRE ***
 +
Voir https://dms.umontreal.ca/wiki/index.php/Simulations pour détails
 +
</pre>
 +
 
 +
Pour chaque machine vous pouvez voir le nombre de coeurs de processeur total ainsi le nombre de coeurs libres, la mémoire vive totale et libre (en Gigabytes), le nombre de cartes graphiques utilisées et leur modèle (s'il y a lieu, seulement certaines machines possèdent une carte graphique) et finalement la cote CPUMark single-thread/multi-threads des CPUs de la machine.
 +
 
 +
'''Évidemment, les machines les moins utilisées devraient être priorisées pour vos simulations.'''
 +
 
 +
=== Consignes à respecter ===
 +
 
 +
<span style="color:#FF0000">'''Résumé des consignes:'''</span>
 +
* <span style="color:#FF0000">maximum de 3 simulations par machine par usager</span>
 +
* <span style="color:#FF0000">toujours laisser 2 coeurs de libre</span>
 +
* <span style="color:#FF0000">toujours laisser 1gb de mémoire de libre, de préférence 2gb</span>
 +
 
 +
Par courtoisie pour les autres usagers, un maximum de 3 simulations par machine par usager est autorisé. De plus, il faut s'assurer que l'utilisation d'une machine ne dépasse pas sa capacité en CPU et en mémoire, en plus de laisser un peu de capacité pour que la machine puisse continuer à fonctionner sans problèmes. Comme l'indique le message au bas de l'exemple de la commande simulation dans la section précédente, il faut s'assurer de toujours laisser 2 coeurs libres sur chaque machines afin de ne pas l'étouffer.  Il faut aussi faire attention à la mémoire vive disponible, essayez de toujours laisser au moins 1gb de libre, de préférence 2gb si possible.
  
 +
Par exemple, supposons que vous devez lancer 2 simulations.  Vous aurez alors besoin de 2 coeurs de CPU au minimum, possiblement de 4 coeurs (ou même plus) si votre logiciel est multi-thread et d'une certaine quantité de mémoire vive.  Si on reprend l'exemple de la commande simulation plus haut, on peut voir dans la 5e colonne que plusieurs des machines ont 3gb ou moins de mémoire de libre, donc on va les mettre de côté afin de ne pas les surcharger.  On peut ensuite voir dans la 3e colonne que plusieurs des machines n'ont que 4 ou 5 coeurs de CPU de libres.  Si vos simulations sont single-thread ils pourraient faire l'affaire, mais assumons que vos simulations sont multi-thread, donc nous allons aussi les mettre de côté afin de ne pas les surcharger (et laisser 2 coeurs libre en tout temps comme indiqué).  Ils nous reste donc ces machines de disponibles qui conviendrait à votre tâche:
 +
 +
<pre>
 +
Host        Cpus  C.L.  Mem Mem L  GPU    G. Nom  CPU S  CPU M
 +
============================================================================
 +
simulation7  24    10  251  133    -        -  13030  312720
 +
simulation8  24    12  251  111    -        -  13030  312720
 +
venice        12    8  15    8    0  GTX 1050  15971  191652
 +
fox          12    7  15    5    0  GTX 1050  15971  191652
 +
</pre>
  
La liste des machines de chaque laboratoire se trouve sur les pages [[labostat|labostat]], [[labomat|labomat]] et [[labodms|labodms]].
+
Vous pouvez donc vous brancher via [[La_commande_ssh|ssh]] ou autre à une de ces machines et lancer vos simulations.
  
 +
=== Les différents logiciels ===
  
 +
En plus de plusieurs logiciels libres, le Département détient certaines licences de logiciels de haute performance. La plupart de ces [[Logiciels|logiciels]] sont installés sur toutes les machines.
  
Vous pouvez également choisir de démarrer plusieurs scripts sur la même machine, en autant que vous respectiez les [[Simulations#Consignes|consignes]].
+
Également, afin d'éviter les erreurs suite à une mise à niveau, les [[Anciennes_versions|anciennes versions]] des logiciels sont toujours disponibles.
  
ssh, top... voir pages des labos pour choix d'une machine, commande simulation...
+
=== Pour plus de ressources ===
  
== Démarrer une simulation en arrière-plan ==
+
Si les ressources à votre disposition au Département sont insuffisantes, il est possible de faire une demande à [[Calcul_Québec|Calcul Québec]] pour avoir accès aux super ordinateurs.
  
Les simulations lancées sur les machines du DMS doivent fonctionner en ''arrière-plan'', ou ''batch'' en anglais. Ceci signifie que votre programme continuera de fonctionner même lorsque vous aurez quitté votre session de travail (''Log out'').
+
== Quelques procédures ==
  
Voici les étapes à suivre pour démarrer votre script en arrière-plan.
+
=== Exécuter un processus en arrière-plan ===
  
* Lancer un terminal de commandes (icône [[Image:TerminalIcone.png]]). À partir d'ici, vous devrez vous débrouiller avec les [[Commandes_élémentaires|commandes UNIX]]&nbsp;: consultez la section [[Commandes_élémentaires#Commandes_de_base|&laquo;&nbsp;Commandes de base&nbsp;&raquo;]] pour l'ensemble minimal des commandes à maîtriser;
+
Une fois branché à une machine, vous pouvez démarrer une simulation sur celle-ci en arrière-plan (''batch'')&nbsp;: de cette façon, votre programme continuera de fonctionner même lorsque vous serez débranché de la machine ou lorsque vous aurez quitté votre session de travail (''Log out''). Pour lancer votre simulation <tt><script></tt> en arrière-plan, entrez
* Exécutez votre script avec la ligne suivante, suivie d'un ''Enter''&nbsp;:
 
 
<pre>
 
<pre>
 
<programme> [options] <script> &
 
<programme> [options] <script> &
 
</pre>
 
</pre>
où <tt><programme></tt> est le programme exécutant votre script ([[R|R]], [[MATLAB|MATLAB]], [[Mathematica|Mathematica]], etc.), <tt>[options]</tt> sont les paramètres à passer au programme, <tt><script</tt> est votre script de simulation. À la toute fin, l'esperluette (&laquo;&nbsp;&&nbsp;&raquo;) indique à Linux d'exécuter le tout en arrière-plan.
+
où <tt><programme></tt> est le programme exécutant votre script ([[R|R]], [[MATLAB|MATLAB]], etc.) et <tt>[options]</tt> sont les paramètres à passer au programme. À la toute fin, l'esperluette (&laquo;&nbsp;&&nbsp;&raquo;) indique à Linux d'exécuter le tout en arrière-plan. Lorsque la commande est entrée, un numéro d'identification correspondant à votre simulation est retourné&nbsp;: il s'agit du [http://fr.wikipedia.org/wiki/Identifiant_de_processus PID]. Si vous souhaitez arrêter votre simulation, vous aurez besoin de ce numéro.
* Vous pouvez maintenant quitter le terminal ([[Commandes_élémentaires#exit|<tt>exit</tt>]]), démarrer une nouvelle simulation sur la [[Simulations#Consignes|même machine]],  
 
ou encore continuer de l'utiliser pour d'autres opérations, sans interrompre votre simulation. Vous pouvez même quiter votre session de travail (''Log out'').
 
  
== Consignes ==
+
Par exemple, pour démarrer le script [[R|R]] nommé <tt>prog.R</tt>, il suffit de taper
 +
<pre>
 +
R CMD BATCH prog.R &
 +
</pre>
 +
Le système vous retourne ensuite le PID associé&nbsp;:
 +
<pre>
 +
[1] 10369
 +
</pre>
  
 +
==== Mise en garde ====
  
2 proc. / machine / usager
+
[[File:Attention.png|20px]] Après vous être déconnecté d'une machine où vous venez de démarrer une simulation, les messages que cette dernière pourrait afficher à l'écran seront perdus&nbsp;: vous devez donc prendre soin d'enregistrer les résultats de votre simulation dans un fichier grâce à une [[Pipelining_et_redirection|redirection du canal de sortie]].
  
== Travail à distance ==
+
[[File:Attention.png|20px]] De plus, si vous lancez plusieurs simulations à la fois, assurez-vous que chacune utilise un ensemble '''distinct''' de fichiers&nbsp;: ceci évitera de potentiels problèmes d'accès et de perte de données. Par exemple, la simulation <tt>script1</tt> pourrait utiliser <tt>res_1.csv</tt> et <tt>dat_1.csv</tt> pour enregistrer ses résultats, alors que <tt>simul2</tt> pourrait utiliser <tt>res_2.csv</tt> et <tt>dat_2.csv</tt>.
  
=== Téléchargement des logiciels requis ===
+
=== Retrouver le PID d'un processus ===
  
Si vous souhaitez démarrer vos simulations depuis la maison, vous devez d'abord télécharger les programmes [[PuTTY|PuTTY]] et [[FileZilla|FileZilla]].
+
Si vous avez perdu le PID associé à un processus s'exécutant en arrière-plan, vous pouvez toujours le récupérer à l'aide de la commande [[Commandes_élémentaires#ps|<code>ps</code>]].
  
=== Connexion au réseau DMS ===
+
<pre>
 +
ps
 +
</pre>
 +
 
 +
Cette commande vous retourne tous les processus en cours d'exécution et leur PID. Il vous suffit alors d'identifier le processus associé à votre simulation.
 +
 
 +
=== Arrêter une simulation ===
 +
 
 +
Si vous connaissez le PID d'un processus en cours d'exécution, vous pouvez toujours l'arrêter à l'aide de la commande [[Commandes_élémentaires#kill|<code>kill</code>]].
 +
 
 +
Pour arrêter le processus ayant pour PID 10369, vous n'avez qu'à entrer
 +
<pre>
 +
kill 10369
 +
</pre>
 +
 
 +
== Astuces et conseils ==
 +
 
 +
=== L'espace disque ===
 +
 
 +
Les règlements sur les [[Information_sur_les_quotas|quotas]] s'applique aussi si vous effectuez une simulation. Si vous avez besoin de plus d'espace pour vos données, vous pouvez utiliser le répertoire [[NOBACKUP|NOBACKUP]] qui est soumis à d'autres règles.
 +
 
 +
[[File:Attention.png|20px]] Comme son nom l'indique, '''aucune [[Copie_de_sauvegarde|copie de sauvegarde]] n'est effectuée''' pour ce répertoire.
 +
 
 +
=== Améliorer les performances de son algorithme ===
 +
 
 +
Dans le cas où un calcul prend trop de temps à être réalisé, plusieurs options peuvent être considérées selon le cas. La première option consiste évidemment à vérifier si la machine exécutant le calcul n'est pas déjà saturé par d'autres calculs grâce à la commande [[La_commande_simulation|simulation]].
 +
 
 +
Si le problème ne vient pas de la machine, il va falloir s'attaquer à l'algorithme de la simulation et à son implémentation. Une relecture de l'algorithme peut souvent mettre en lumière quelques optimisations qui accéléreraient le calcul. Par exemple, on peut accélérer le traitement de l'information si l'on minimise les entrés et sorties du programme. Si cette approche ne fourni pas de meilleurs résultats, il faut revoir l'implémentation.
 +
 
 +
Lorsque vos calculs s'y prêtent (opérations sur matrices et vecteurs, boucle avec itérations indépendantes, etc.), l'exécution de votre script en parallèle peut être une solution très avantageuse. Plusieurs des logiciels les plus utilisés au Département pour les simulations comportent des extensions qui permettent la parallélisation, notamment [[R|R]] et [[MATLAB|MATLAB]].
 +
 
 +
Également, une méthode qui est généralement très efficace, mais qui demande plus de temps et d'efforts, consiste à implémenter l'algorithme à l'aide d'un langage de bas niveau (langage compilé) tel que le [[GCC|C]] ou le [[G95|Fortran]] qui sont plus rapide que les langages de haut niveaux (langage interprétés).
 +
 
 +
[[File:Attention.png|20px]] Avant d'envisager de reprogrammer votre algorithme dans un langage de bas niveau, il est important de s'assurer que votre algorithme est optimal et que vous êtes assez maître du langage en question pour espérer faire mieux que vos précédentes implémentations.
 +
 
 +
=== Les nombres aléatoires ===
 +
 
 +
Si vos calculs font appel à des nombres aléatoires, assurez-vous que chacune de vos simulations utilise des [http://fr.wikipedia.org/wiki/Graine_al%C3%A9atoire graines] (''seeds'') différentes pour le générateur de nombre aléatoires, sinon vous obtiendrez des résultats '''identiques''' pour toutes vos simulations.
  
 
== Voir aussi ==
 
== Voir aussi ==
Un exposé donné par Pierre Lafaye de Micheaux sur «Faire des simulations au DMS (lorsque l’on est statisticien)»&nbsp;: http://www.dms.umontreal.ca/wiki/images/6/68/Expose-simulations.pdf
 
  
=== '''Articles connexes''' ===
+
=== Présentation ===
* [[La_commande_simulation|La commande simulation]]
+
 
 +
L'équipe informatique offre, selon les besoins, une présentation pour introduire l'environnement du Département. Les fichiers suivants sont présentés pendant la présentation&nbsp;:
 +
* [http://www.dms.umontreal.ca/downloads/presentation-informatique/Presentation-Informatique.zip Presentation-Informatique (2014)] et seulement les [http://www.dms.umontreal.ca/downloads/presentation-informatique/Presentation-Informatique-Diapositives.pdf diapositives]
 +
* [http://www.dms.umontreal.ca/downloads/presentation-informatique/informatique_au_DMS_2017.pdf Diapositives de la présentation (2017)]
 +
 
 +
=== Ressources externes ===
 +
 
 +
* [http://www.dms.umontreal.ca/wiki/images/6/68/Expose-simulations.pdf ''Faire des simulations au DMS (lorsque l’on est statisticien)''], par Pierre Lafaye de Micheaux
 +
 
 +
=== Articles connexes ===
 +
<div class="inline">
 +
* [[Commandes_élémentaires|Commandes élémentaires]]
 +
* [[Commandes_élémentaires#exit|exit]]
 +
* [[FileZilla|FileZilla]]
 +
* [[PuTTY|PuTTY]]
 +
* [[La_commande_simulation|simulation]]
 +
* [[La_commande_ssh|ssh]]
 +
* [[NOBACKUP|NOBACKUP]]
 +
* [[Calcul_Québec|Calcul Québec]]
 +
</div>

Version actuelle datée du 3 décembre 2020 à 20:57

Depuis l'avènement de l'informatique, les simulations numériques sont couramment utilisées en sciences, tant pour tester des hypothèses, qu'effectuer une analyse numérique ou pour mettre un modèle à l'épreuve et l'environnement informatique du Département est conçu de façon à faciliter la mise en place de telles simulations.

Cette page contient des renseignements quant aux ressources disponibles, indique quelques procédures standards et offrent quelques conseils généraux.

Présentation des ressources

Les différentes machines

Le Département fourni plusieurs machines permettant d'effectuer d'imposants calculs qui sont partagées entre les usagers. Ces machines sont dispersées en 4 différents endroits : labomat, labodms, labostat et la salle des serveurs. Bien que l'on retrouve ces machines en des lieux différents, elles sont toutes connectées entres elles grâce à un réseau et l'on peut se connecter à chacune d'entre elles à l'aide de la commande ssh. Veuillez prendre note qu'une politique d'utilisation régit l'utilisation du réseau.

Afin d'éviter de surcharger les machines et de ralentir vos calculs, vous devez choisir votre machine à l'aide de la commande simulation. Il suffit d'entrer dans un terminal (icône TerminalIcone.png) :

simulation

Cette commande renvoie l'utilisation des CPUs, de la mémoire vive et des cartes graphiques (s'il y a lieu) des machines disponibles. Voici un exemple du résultat qui peut en sortir:

$ simulation 
Host        Cpus  C.L.  Mem Mem L  GPU    G. Nom  CPU S   CPU M
============================================================================
simulation7   24    10  251   133    -         -  13030  312720
simulation8   24    12  251   111    -         -  13030  312720
saturne        8     5   11     9    -         -   5200   41600
mars           8     5   11     9    -         -   5200   41600
uranus         8     5   11     9    -         -   5200   41600
neptune        8     5   11     9    -         -   5200   41600
lune           8     5   11     8    -         -   5200   41600
mercury        8     5   11     8    -         -   5200   41600
venice        12     8   15     8    0  GTX 1050  15971  191652
venus          8     5   11     8    -         -   5200   41600
jupiter        8     5   11     6    -         -   5200   41600
borrelly       8     4   11     6    -         -   5200   41600
fox           12     7   15     5    0  GTX 1050  15971  191652
soleil         8     4   11     4    -         -   5200   41600
athenes        8     8    7     3    -         -  10085   80680
pluto          8     4   11     3    -         -   5200   41600
acapulco      12     3   15     2    0  GTX 1050  15971  191652
panthere      12     8   15     2    0  GTX 1050  15971  191652
lionceau       8     5    5     2    -         -   5809   46472
leopard        8     5    5     2    -         -   5200   41600
loup           8     5    5     2    -         -   5809   46472
lion          12     0   15     1    0  GTX 1050  15971  191652
puma           8     5    5     1    -         -   5809   46472
cougar         8     5   11     1    -         -   5200   41600
jaguar        12     7   15     1    0  GTX 1050  15971  191652
ocelot         2     2    1     0    -         -   5200   10400
lynx           8     5   11     0    -         -   5200   41600

============================================================================
Cpus	=> Cores			C.L.	=> Cpu libres
Mem	=> Memoire totale		Mem L	=> Memoire disponible
GPU	=> GPUs Utilisés		G. Nom	=> GPU model
CPU S	=> Cpu Mark single thread	CPU M 	=> Cpu Mark total multi threads

*** ATTENTION: ASSUREZ-VOUS DE TOUJOURS LAISSER 2 CPU (CORES) DE LIBRE ***
Voir https://dms.umontreal.ca/wiki/index.php/Simulations pour détails

Pour chaque machine vous pouvez voir le nombre de coeurs de processeur total ainsi le nombre de coeurs libres, la mémoire vive totale et libre (en Gigabytes), le nombre de cartes graphiques utilisées et leur modèle (s'il y a lieu, seulement certaines machines possèdent une carte graphique) et finalement la cote CPUMark single-thread/multi-threads des CPUs de la machine.

Évidemment, les machines les moins utilisées devraient être priorisées pour vos simulations.

Consignes à respecter

Résumé des consignes:

  • maximum de 3 simulations par machine par usager
  • toujours laisser 2 coeurs de libre
  • toujours laisser 1gb de mémoire de libre, de préférence 2gb

Par courtoisie pour les autres usagers, un maximum de 3 simulations par machine par usager est autorisé. De plus, il faut s'assurer que l'utilisation d'une machine ne dépasse pas sa capacité en CPU et en mémoire, en plus de laisser un peu de capacité pour que la machine puisse continuer à fonctionner sans problèmes. Comme l'indique le message au bas de l'exemple de la commande simulation dans la section précédente, il faut s'assurer de toujours laisser 2 coeurs libres sur chaque machines afin de ne pas l'étouffer. Il faut aussi faire attention à la mémoire vive disponible, essayez de toujours laisser au moins 1gb de libre, de préférence 2gb si possible.

Par exemple, supposons que vous devez lancer 2 simulations. Vous aurez alors besoin de 2 coeurs de CPU au minimum, possiblement de 4 coeurs (ou même plus) si votre logiciel est multi-thread et d'une certaine quantité de mémoire vive. Si on reprend l'exemple de la commande simulation plus haut, on peut voir dans la 5e colonne que plusieurs des machines ont 3gb ou moins de mémoire de libre, donc on va les mettre de côté afin de ne pas les surcharger. On peut ensuite voir dans la 3e colonne que plusieurs des machines n'ont que 4 ou 5 coeurs de CPU de libres. Si vos simulations sont single-thread ils pourraient faire l'affaire, mais assumons que vos simulations sont multi-thread, donc nous allons aussi les mettre de côté afin de ne pas les surcharger (et laisser 2 coeurs libre en tout temps comme indiqué). Ils nous reste donc ces machines de disponibles qui conviendrait à votre tâche:

Host        Cpus  C.L.  Mem Mem L  GPU    G. Nom  CPU S   CPU M
============================================================================
simulation7   24    10  251   133    -         -  13030  312720
simulation8   24    12  251   111    -         -  13030  312720
venice        12     8   15     8    0  GTX 1050  15971  191652
fox           12     7   15     5    0  GTX 1050  15971  191652

Vous pouvez donc vous brancher via ssh ou autre à une de ces machines et lancer vos simulations.

Les différents logiciels

En plus de plusieurs logiciels libres, le Département détient certaines licences de logiciels de haute performance. La plupart de ces logiciels sont installés sur toutes les machines.

Également, afin d'éviter les erreurs suite à une mise à niveau, les anciennes versions des logiciels sont toujours disponibles.

Pour plus de ressources

Si les ressources à votre disposition au Département sont insuffisantes, il est possible de faire une demande à Calcul Québec pour avoir accès aux super ordinateurs.

Quelques procédures

Exécuter un processus en arrière-plan

Une fois branché à une machine, vous pouvez démarrer une simulation sur celle-ci en arrière-plan (batch) : de cette façon, votre programme continuera de fonctionner même lorsque vous serez débranché de la machine ou lorsque vous aurez quitté votre session de travail (Log out). Pour lancer votre simulation <script> en arrière-plan, entrez

<programme> [options] <script> &

<programme> est le programme exécutant votre script (R, MATLAB, etc.) et [options] sont les paramètres à passer au programme. À la toute fin, l'esperluette (« & ») indique à Linux d'exécuter le tout en arrière-plan. Lorsque la commande est entrée, un numéro d'identification correspondant à votre simulation est retourné : il s'agit du PID. Si vous souhaitez arrêter votre simulation, vous aurez besoin de ce numéro.

Par exemple, pour démarrer le script R nommé prog.R, il suffit de taper

R CMD BATCH prog.R &

Le système vous retourne ensuite le PID associé :

[1] 10369

Mise en garde

Attention.png Après vous être déconnecté d'une machine où vous venez de démarrer une simulation, les messages que cette dernière pourrait afficher à l'écran seront perdus : vous devez donc prendre soin d'enregistrer les résultats de votre simulation dans un fichier grâce à une redirection du canal de sortie.

Attention.png De plus, si vous lancez plusieurs simulations à la fois, assurez-vous que chacune utilise un ensemble distinct de fichiers : ceci évitera de potentiels problèmes d'accès et de perte de données. Par exemple, la simulation script1 pourrait utiliser res_1.csv et dat_1.csv pour enregistrer ses résultats, alors que simul2 pourrait utiliser res_2.csv et dat_2.csv.

Retrouver le PID d'un processus

Si vous avez perdu le PID associé à un processus s'exécutant en arrière-plan, vous pouvez toujours le récupérer à l'aide de la commande ps.

ps

Cette commande vous retourne tous les processus en cours d'exécution et leur PID. Il vous suffit alors d'identifier le processus associé à votre simulation.

Arrêter une simulation

Si vous connaissez le PID d'un processus en cours d'exécution, vous pouvez toujours l'arrêter à l'aide de la commande kill.

Pour arrêter le processus ayant pour PID 10369, vous n'avez qu'à entrer

kill 10369

Astuces et conseils

L'espace disque

Les règlements sur les quotas s'applique aussi si vous effectuez une simulation. Si vous avez besoin de plus d'espace pour vos données, vous pouvez utiliser le répertoire NOBACKUP qui est soumis à d'autres règles.

Attention.png Comme son nom l'indique, aucune copie de sauvegarde n'est effectuée pour ce répertoire.

Améliorer les performances de son algorithme

Dans le cas où un calcul prend trop de temps à être réalisé, plusieurs options peuvent être considérées selon le cas. La première option consiste évidemment à vérifier si la machine exécutant le calcul n'est pas déjà saturé par d'autres calculs grâce à la commande simulation.

Si le problème ne vient pas de la machine, il va falloir s'attaquer à l'algorithme de la simulation et à son implémentation. Une relecture de l'algorithme peut souvent mettre en lumière quelques optimisations qui accéléreraient le calcul. Par exemple, on peut accélérer le traitement de l'information si l'on minimise les entrés et sorties du programme. Si cette approche ne fourni pas de meilleurs résultats, il faut revoir l'implémentation.

Lorsque vos calculs s'y prêtent (opérations sur matrices et vecteurs, boucle avec itérations indépendantes, etc.), l'exécution de votre script en parallèle peut être une solution très avantageuse. Plusieurs des logiciels les plus utilisés au Département pour les simulations comportent des extensions qui permettent la parallélisation, notamment R et MATLAB.

Également, une méthode qui est généralement très efficace, mais qui demande plus de temps et d'efforts, consiste à implémenter l'algorithme à l'aide d'un langage de bas niveau (langage compilé) tel que le C ou le Fortran qui sont plus rapide que les langages de haut niveaux (langage interprétés).

Attention.png Avant d'envisager de reprogrammer votre algorithme dans un langage de bas niveau, il est important de s'assurer que votre algorithme est optimal et que vous êtes assez maître du langage en question pour espérer faire mieux que vos précédentes implémentations.

Les nombres aléatoires

Si vos calculs font appel à des nombres aléatoires, assurez-vous que chacune de vos simulations utilise des graines (seeds) différentes pour le générateur de nombre aléatoires, sinon vous obtiendrez des résultats identiques pour toutes vos simulations.

Voir aussi

Présentation

L'équipe informatique offre, selon les besoins, une présentation pour introduire l'environnement du Département. Les fichiers suivants sont présentés pendant la présentation :

Ressources externes

Articles connexes


La dernière modification de cette page a été faite le 3 décembre 2020 à 20:57.