Différences entre les versions de « Simulations2 »
(Page créée avec « <!-- Simulations, simulations, Simulations Numériques, simulations numériques, Simulation, simulation, Numérique, numérique, Numerical Simulation, numerical simulation... ») |
(ajout d'un redirect vers la vrai page) Balise : Nouvelle redirection |
||
(16 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | #REDIRECT [[Simulations]] | ||
+ | |||
<!-- 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 --> | ||
− | 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 | + | 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. | Cette page contient des renseignements quant aux ressources disponibles, indique quelques procédures standards et offrent quelques conseils généraux. | ||
Ligne 8 : | Ligne 10 : | ||
== Présentation des ressources == | == 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 [[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. | |
+ | 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]]) : | ||
+ | <pre> | ||
+ | simulation | ||
+ | </pre> | ||
+ | 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 [[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 === | ||
+ | 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 | |
+ | -------------------------- | ||
+ | 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 == |
− | + | ||
− | + | === Exécuter un processus en arrière-plan === | |
− | |||
− | |||
− | Une fois branché à une machine | + | 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 <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 (« & ») 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 | + | 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 (« & ») 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 [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 47 : | Ligne 54 : | ||
R CMD BATCH prog.R & | R CMD BATCH prog.R & | ||
</pre> | </pre> | ||
− | Le système vous retourne ensuite | + | Le système vous retourne ensuite le PID associé : |
<pre> | <pre> | ||
[1] 10369 | [1] 10369 | ||
</pre> | </pre> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ==== Mise en garde ==== | |
− | |||
− | + | [[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 : 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]]. | |
− | + | [[File:Attention.png|20px]] 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 <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>. | |
− | |||
− | + | === 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 [[Commandes_élémentaires#ps|<code>ps</code>]]. | |
− | |||
− | |||
<pre> | <pre> | ||
− | + | ps | |
− | |||
− | |||
− | |||
− | |||
</pre> | </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 | + | Pour arrêter le processus ayant pour PID 10369, vous n'avez qu'à entrer |
<pre> | <pre> | ||
− | kill | + | kill 10369 |
</pre> | </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. 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 == |
Version actuelle datée du 27 mai 2020 à 15:35
Rediriger vers :
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 ) :
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> &
où <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
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.
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.
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. 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).
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.