Différences entre les versions de « Simulations »

Ligne 1 : Ligne 1 :
 
<!-- 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 -->
 
<!-- 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 -->
Sur cette page, vous trouverez la procédure générale vous permettant de démarrer des simulations numériques ainsi que les consignes à respecter.
+
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.
  
Les instructions qui suivent font appel à des [[Commandes_élémentaires|commandes UNIX]]&nbsp;: consultez la section [[Commandes_élémentaires#Commandes_de_base|Commandes de bases]] de la page [[Commandes_élémentaires|Commandes élémentaires]] pour les commandes nécessaires.
+
Cette page contient des renseignements quant aux ressources disponibles, indique quelques procédures standards et offrent quelques conseils généraux.
  
Si vous travaillez à 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 [[Simulations#Travail_à_distance|Travail à distance]].
+
__TOC__
  
 +
== Présentation des ressources ==
  
__TOC__
+
=== Les différentes machines ===
  
== Démarrer une simulation ==
+
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.
  
=== Choix des machines ===
+
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;:
Avant de démarrer vos simulations, vous devez d'abord choisir des machines du Département sur lesquelles les exécuter. Pour ce faire, la façon la plus simple est d'utiliser la commande [[La_commande_simulation|<tt>simulation</tt>]], qu'il suffit d'entrer dans un terminal (icône [[Image:TerminalIcone.png]])&nbsp;:
 
 
<pre>
 
<pre>
 
simulation
 
simulation
 
</pre>
 
</pre>
Cette commande renvoie l'utilisation des machines disponibles&nbsp;: plus le rapport associé à une machine est grand, plus celle-ci est occupée. (Consultez la page dédiée à [[La_commande_simulation|<tt>simulation</tt>]] pour plus d'informations.) Évidemment, les machines les moins utilisées devraient être priorisées pour vos simulations.
+
Cette commande renvoie l'utilisation de la mémoire vive des machines disponibles&nbsp;: plus le rapport associé à une machine est grand, plus celle-ci est occupée. Évidemment, les machines les moins utilisées devraient être priorisées pour 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 [[http://www.dms.umontreal.ca/wiki/index.php/Logiciels|logiciels]] sont installés sur toutes les machines.
 +
 
 +
Également, afin d'éviter les erreurs suite à une mise à niveau, les [[Anciennes_versions|anciennes versions]] des logiciels sont toujours disponibles.
 +
 
 +
=== Consignes à respecter ===
  
=== Exécution en arrière-plan ===
+
Par courtoisie pour les autres usagers, un maximum de 3 simulations (processus) par machine par usager est autorisé. De plus, l'utilisation moyenne d'une machine ne devrait jamais dépasser sa « capacité moins 1 ». Autrement dit, la machine devrait pouvoir exécuter au moins 1 nouveau processus indépendant.
Une fois que vous avez établi une liste de machines à utiliser, vous devrez vous brancher sur ces machines à tour de rôle afin de démarrer vos simulations. La commande permettant de se connecter à une machine est [[La_commande_ssh|<tt>ssh</tt>]]. Par exemple, pour vous connecter à <tt>loup</tt>, entrez
+
 
 +
Par exemple, supposons que vous ayez choisi, pour lancer vos simulations, les machines <tt>uranus</tt>, <tt>jupiter</tt> et <tt>cougar</tt>. Supposons également que leur utilisation moyenne, telle que renvoyée par la commande [[La_commande_simulation|<tt>simulation</tt>]], soit donnée par
 
<pre>
 
<pre>
ssh loup
+
Machine        Utilisation
 +
--------------------------
 +
uranus        5.05 / 8.00
 +
jupiter        2.04 / 8.00
 +
cougar        0.51 / 2.00
 
</pre>
 
</pre>
 +
Dans le respect des consignes, vous pouvez démarrer un maximum de 2 simulations sur <tt>uranus</tt>, 3 sur <tt>jupiter</tt> et 1 seule sur <tt>cougar</tt>.
 +
 +
== Quelques procédures ==
  
Une fois branché à une machine de votre liste, 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é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'')&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
 
<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]], 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 PID. Si vous souhaitez [[Simulations#Arrêter_une_simulation|stopper votre simulation]], c'est ce numéro que vous devez passer à la commande [[Commandes_élémentaires#kill|<tt>kill</tt>]].
+
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.
  
 
Par exemple, pour démarrer le script [[R|R]] nommé <tt>prog.R</tt>, il suffit de taper
 
Par exemple, pour démarrer le script [[R|R]] nommé <tt>prog.R</tt>, il suffit de taper
Ligne 34 : Ligne 52 :
 
R CMD BATCH prog.R &
 
R CMD BATCH prog.R &
 
</pre>
 
</pre>
Le système vous retourne ensuite un PID&nbsp;:
+
Le système vous retourne ensuite le PID associé&nbsp;:
 
<pre>
 
<pre>
 
[1] 10369
 
[1] 10369
</pre>
 
Pour [[Simulations#Arrêter_une_simulation|arrêter cette simulation]], vous n'avez qu'à entrer
 
<pre>
 
kill 10369
 
 
</pre>
 
</pre>
  
Une fois que votre simulation est lancée, vous pouvez&nbsp;:
+
==== Mise en garde ====
  
* Continuer d'utiliser la même machine pour démarrer une [[Simulations#Consignes_à_respecter|nouvelle simulation]] (ou pour d'autres activités);
+
[[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]].
* Vous débrancher de la machine (commande [[Commandes_élémentaires#exit|<tt>exit</tt>]]).
 
  
Si vos simulations sont toutes démarrées, vous pouvez même quitter votre session de travail (''Log out'') sans risquer d'interrompre vos simulations.
+
[[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>.
  
==== Remarques importantes ====
+
=== Retrouver le PID d'un processus ===
* 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 sont perdus&nbsp;: vous devez donc prendre soin d'enregistrer les résultats de votre simulation dans un fichier, sur votre compte. 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>.
 
  
* 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.
+
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>]].
  
=== Consignes à respecter ===
 
Par courtoisie pour les autres usagers, un maximum de 3 simulations (processus) par machine par usager est autorisé. De plus, l'utilisation moyenne d'une machine ne devrait jamais dépasser sa « capacité moins 1 ». Autrement dit, la machine devrait pouvoir exécuter au moins 1 nouveau processus indépendant.
 
 
Par exemple, supposons que vous ayez choisi, pour lancer vos simulations, les machines <tt>uranus</tt>, <tt>jupiter</tt> et <tt>cougar</tt>. Supposons également que leur utilisation moyenne, telle que renvoyée par la commande [[La_commande_simulation|<tt>simulation</tt>]], soit donnée par
 
 
<pre>
 
<pre>
Machine        Utilisation
+
ps
--------------------------
 
uranus        5.05 / 8.00
 
jupiter        2.04 / 8.00
 
cougar        0.51 / 2.00
 
 
</pre>
 
</pre>
Dans le respect des consignes, vous pouvez démarrer un maximum de 2 simulations sur <tt>uranus</tt>, 3 sur <tt>jupiter</tt> et 1 seule sur <tt>cougar</tt>.
 
  
=== Calculs en parallèle ===
+
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.
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 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]]. Consultez les pages dédiées à ces logiciels pour plus de détails.
+
=== Arrêter une 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 une simulation, vous devez utiliser la commande [[Commandes_élémentaires#kill|<tt>kill</tt>]] suivie du numéro de processus (PID) de votre simulation&nbsp;:
+
Pour arrêter le processus ayant pour PID 10369, vous n'avez qu'à entrer
 
<pre>
 
<pre>
kill 452
+
kill 10369
 
</pre>
 
</pre>
  
Si vous ne connaissez pas le PID de votre simulation, entrez la commande [[Commandes_élémentaires#top|<tt>top</tt>]] dans un terminal&nbsp;:
+
== Astuces et conseils ==
<pre>                                                                                                       
 
top - 10:00:02 up 14 days, 11:22,  4 users,  load average: 0.37, 0.24, 0.18
 
Tasks: 239 total,  2 running, 237 sleeping,  0 stopped,  0 zombie
 
Cpu(s):  0.3%us,  0.2%sy,  0.0%ni, 99.3%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st
 
Mem:  2036352k total,  1959528k used,    76824k free,    51480k buffers
 
Swap:  3071992k total,    21940k used,  3050052k free,  1202944k cached
 
  
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
+
=== L'espace disque ===
10558 fedora    20  0  172m  29m 2960 R 24.2  1.5  0:00.29 R
 
10567 fedora    20  0 19380 1340  928 R  3.5  0.1  0:00.07 top
 
1880 root      20  0  272m 1008  804 S  1.7  0.0  0:07.39 ypbind
 
    1 root      20  0 23556  848  636 S  0.0  0.0  0:14.94 init
 
    2 root      20  0    0    0    0 S  0.0  0.0  0:01.63 kthreadd
 
    3 root      RT  0    0    0    0 S  0.0  0.0  0:00.14 migration/0
 
</pre>
 
Appuyez sur &laquo;&nbsp;<tt>q</tt>&nbsp;&raquo; pour quitter. Pour arrêter la simulation [[R|R]] de PID 10558 qui s'exécute, il suffit d'entrer
 
<pre>
 
kill 10558
 
</pre>
 
  
'''N.B.&nbsp;:''' Seul l'usager ayant démarré le processus peut le terminer. Dans l'exemple précédent, seul <tt>fedora</tt> peut tuer 10558.
+
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.
  
== Travail à distance ==
+
[[File:Attention.png|20px]] Comme son nom l'indique, '''aucune [[Copie_de_sauvegarde|copie de sauvegarde]] n'est effectuée''' pour ce répertoire.
  
=== Windows ===
+
=== Améliorer les performances de son algorithme ===
Si votre ordinateur personnel utilise Windows, vous devrez d'abord télécharger [[PuTTY|PuTTY]] ainsi que [[FileZilla|FileZilla]] ou [[NetDrive|NetDrive]]. Le logiciel [[PuTTY|PuTTY]] sert à vous connecter au réseau du DMS et à émuler le terminal de commandes Linux. Les logiciels [[FileZilla|FileZilla]] et [[NetDrive]] sont deux logiciels vous permettant de transférer des fichiers de votre ordinateur personnel vers votre compte au DMS, et vice-versa.
 
  
En combinant ces programmes, vous pouvez ainsi travailler à distance sur votre script de simulation, télécharger celui-ci sur votre compte au DMS, le démarrer sur une (ou plusieurs) machine(s) du Département et ensuite télécharger les résultats de la simulation sur votre ordinateur personnel.
+
[[Image:Jacket_Logo.png|thumb|[[Jacket]] est un ''toolbox'' propriétaire pour [[MATLAB|MATLAB]] qui permet l'exécution de code sur GPUs. Similaire à [[GPUmat|GPUmat]], son cousin gratuit, pour sa syntaxe, Jacket comprend cependant davantage de fonctions implémentées et accélère également l'affichage des graphismes 2d ou 3d, en faisant usage du GPU.]]
  
Consultez les pages [[PuTTY|PuTTY]] et [[FileZilla|FileZilla]] (ou [[NetDrive|NetDrive]]) pour les instructions de téléchargement, de configuration et d'utilisation.
+
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]].
  
Une fois branché au réseau, vous êtes prêt à [[Simulations#Démarrer_une_simulation|démarrer une 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. Si cette approche ne fourni pas de meilleurs résultats, il faut revoir l'implémentation.
  
=== Mac OS ou Linux ===
+
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]].
Si votre ordinateur personnel fonctionne sous Mac OS ou Linux, vous pouvez vous brancher au réseau grâce à la commande [[La_commande_ssh|<tt>ssh</tt>]]&nbsp;:
 
<pre>
 
ssh usager@ssh.dms.umontreal.ca
 
</pre>
 
où <tt>usager</tt> est votre identifiant au DMS. Pour télécharger vos fichiers, vous pouvez employer une version Mac ou Linux de [[FileZilla|FileZilla]] ou encore utiliser la commande [[Commandes_élémentaires#scp|<tt>scp</tt>]].
 
  
Une fois branché au réseau, vous êtes prêt à [[Simulations#Démarrer_une_simulation|démarrer une simulation]].
+
É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).
  
== Plus d'espace ==
+
[[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.
  
Si vous avez un grand besoin d'espace pour vos données, vous pouvez les placer dans le répertoire [[NOBACKUP|NOBACKUP]] où vous avez droit à une limite inférieure ([[Information_sur_les_quotas|quota]]) de 10 Go et une limite supérieure de 15 Go.
+
=== Les nombres aléatoires ===
  
[[File:Attention.png|40px]] Comme son nom l'indique, '''aucune [[Copie_de_sauvegarde|copie de sauvegarde]] n'est effectuée''' pour ce répertoire.
+
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 ==
 +
 +
=== 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 [http://www.dms.umontreal.ca/repertoire-departement/portrait/lafaye Pierre Lafaye de Micheaux]
  
 
=== Articles connexes ===
 
=== Articles connexes ===
* [http://www.dms.umontreal.ca/wiki/images/6/68/Expose-simulations.pdf ''Faire des simulations au DMS (lorsque l’on est statisticien)''], par [http://www.dms.umontreal.ca/repertoire-departement/portrait/lafaye Pierre Lafaye de Micheaux]
+
 
 
* [[Commandes_élémentaires|Commandes élémentaires]]
 
* [[Commandes_élémentaires|Commandes élémentaires]]
 
* [[Commandes_élémentaires#exit|<tt>exit</tt>]]
 
* [[Commandes_élémentaires#exit|<tt>exit</tt>]]

Version du 25 février 2014 à 10:58

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 de la mémoire vive des machines disponibles : plus le rapport associé à une machine est grand, plus celle-ci est occupée. Évidemment, les machines les moins utilisées devraient être priorisées pour 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 [[1]] 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.

Consignes à respecter

Par courtoisie pour les autres usagers, un maximum de 3 simulations (processus) par machine par usager est autorisé. De plus, l'utilisation moyenne d'une machine ne devrait jamais dépasser sa « capacité moins 1 ». Autrement dit, la machine devrait pouvoir exécuter au moins 1 nouveau processus indépendant.

Par exemple, supposons que vous ayez choisi, pour lancer vos simulations, les machines uranus, jupiter et cougar. Supposons également que leur utilisation moyenne, telle que renvoyée par la commande simulation, soit donnée par

Machine        Utilisation
--------------------------
uranus         5.05 / 8.00
jupiter        2.04 / 8.00
cougar         0.51 / 2.00

Dans le respect des consignes, vous pouvez démarrer un maximum de 2 simulations sur uranus, 3 sur jupiter et 1 seule sur cougar.

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

Jacket est un toolbox propriétaire pour MATLAB qui permet l'exécution de code sur GPUs. Similaire à GPUmat, son cousin gratuit, pour sa syntaxe, Jacket comprend cependant davantage de fonctions implémentées et accélère également l'affichage des graphismes 2d ou 3d, en faisant usage du GPU.

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. 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

Ressources externes

Articles connexes


La dernière modification de cette page a été faite le 25 février 2014 à 10:58.