Matlab

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Cette page est une traduction de la page Matlab et la traduction est complétée à 87 % et à jour.

Autres langues :anglais 100% • ‎français 87%

Sommaire

À propos des licences

Généralement, les serveurs de Calcul Québec ne fournissent aucune licence pour l'exécution autonome de Matlab. Cependant, il peut y avoir des installations permettant l'usage de licences fournies par des individus, par des groupes d'individus ou par des institutions. Par exemple, la licence Matlab MDCS de Guillimin permet à un utilisateur de lancer des tâches Matlab, et ce, à la condition qu'il ait une licence Matlab valide sur son poste de travail.

Soumettre une tâche Matlab

Soumettre une tâche séquentielle

Toute tâche Matlab moindrement lourde doit être soumise au système de files d'attente. Ne pas utiliser les nœuds de connexion pour exécuter des programmes utilisant beaucoup de mémoire ou de temps de calcul. Avant de soumettre votre tâche, assurez-vous que le chemin d'accès vers l'installation de Matlab est dans votre fichier .bashrc.

Voici un exemple de script pour soumettre une tâche Matlab séquentielle :

Fichier : un_seul_coeur.pbs
#!/bin/bash
#PBS -l nodes=1:ppn=1
#PBS -V
#PBS -N tache_matlab
 
cd votre_repertoire_de_projet_matlab
 
matlab -nodisplay < votre_code_matlab.m > output


Après cela, vous soumettez votre script au système de files d'attente (voir la soumission d'une tâche et la documentation spécifique de chaque site)

Soumettre une tâche parallèle

Lorsque le Matlab Parallel Toolbox est disponible pour un usage autonome (sans MDCS), chaque tâche parallèle s'exécute en mémoire partagée sur un et un seul nœud. Par conséquent, dans une tâche, le nombre maximum de « workers » (ou processus) est limité par le nombre de processeurs réservés dans un même nœud. Ainsi, cela fonctionne comme sur votre poste de travail, à l'exception que vous devez soumettre votre tâche via un script que vous fournissez à l'ordonnanceur. Par comparaison, une soumission de ce type ressemble à celle d'une tâche OpenMP. Voici un exemple de script réservant 12 processeurs sur un et un seul nœud :

Fichier : multicoeurs.pbs
#!/bin/bash
#PBS -l nodes=1:ppn=12
#PBS -V
#PBS -N tache_matlab_parallele
 
cd votre_repertoire_de_projet_matlab
 
matlab -nodisplay < votre_code_matlab.m > output


Dans ce script, on y réserve 12 processeurs sur un nœud. On peut donc créer 12 « workers » à partir d'un code Matlab. Si jamais vous utilisez un nombre de « workers » différent, n'oubliez pas de changer l'option « ppn » dans le script de soumission. De plus, n'oubliez pas que vous ne pouvez PAS réserver plus d'un nœud pour votre tâche Matlab, et ce, même si vous utilisez le Parallel Toolbox.

Quelques conseils

Quelques suggestions pour un usage optimal de Matlab sur une grande grappe :

  • Utilisez la grappe seulement pour des tâches de calcul vraiment grandes. Par exemple, si votre tâche prend une quinzaine de minutes à s'exécuter sur un seul processeur, pourquoi ne pas la lancer directement sur votre poste de travail?
  • Rappelez-vous que la tâche que vous lancez sur un nœud de calcul sera isolée. Cela veut dire que vous ne pourrez pas vous connecter au nœud pour y générer des graphes interactivement. Habituellement, les gens effectuent les calculs lourds sur la grappe et, par la suite, ils rapatrient les résultats sur leur poste de travail pour ensuite générer tous les graphes voulus. Si vous devez absolument générer des graphes pendant les calculs, vous devrez les générer et les sauvegarder sans l'aide d'une interface graphique.
  • Une tâche Matlab est traitée par l'ordonnanceur comme n'importe quelle tâche séquentielle ou à plusieurs fils d'exécution (threads). Tel que mentionné précédemment, vous pouvez réserver un et un seul nœud par tâche. Sur un nœud, le nombre de processeurs que vous aurez réservés sera le nombre de « workers » que vous pourrez créer. Pour plus d'information sur la réservation des ressources, veuillez consulter la page Exécuter_une_tâche.
  • Les tâches Matlab tombent dans la catégorie des tâches séquentielles ou OpenMP, selon que vous utilisez le Parallel Toolbox ou non.

Documentation additionnelle spécifique aux serveurs

Compiling Matlab Scripts

Introduction

While Briarée does not have a Matlab license, it does have the (freely distributed) Matlab Compiler Runtime, a set of libraries that allows users to run Matlab scripts that have been compiled into a binary using the mcc program that comes with Matlab. This compilation must be performed on a computer with Matlab and running the same operating system, i.e. a Windows installation of Matlab will create a Windows binary which naturally will not run on Briarée. You must compile your Matlab script using a Matlab installation running under Linux. Note that the only Matlab compiler runtimes installed on Briarée at this time (7.17, 8.0 and 8.3) correspond to the R2012a (7.17), R2012b (8.0) and R2014a (8.3) versions of Matlab and naturally the Matlab compiler runtime must match the version of the Matlab compiler used to build the binary.

Compiling Your Script

The Matlab compiler mcc should normally be in the same directory as the Matlab binary itself and you will need to execute it from the command line, i.e. using a terminal interface. The compiler has a help page which can be access by the command mcc -help and which lists all the options that can be used with the compiler. For running a compiled Matlab script on Briarée, you need to choose the "standalone program" option, which is -m. When you run the command it will generate two output files: the first of these is the actual binary file (akin to an .exe file in Windows) while the second is a wrapper script, with a filename ending in .sh. When you run your Matlab program on Briarée, you will call this script which will configure your environment and then call the binary file that has been created. The command below should work for a workstation managed by Concordia's Faculty of Engineering and Computer Science, where we compile a script called foo.m using the R2014a version of Matlab.

[name@server $] /encs/pkg/matlab-R2014a/root/bin/mcc -m foo.m


Running the Binary on Briarée

You will need to copy the two files (e.g. foo and run_foo.sh) from your workstation to your account on Briarée using one of the standard techniques like scp or sftp. If your Matlab script also depends on various data files in order to run correctly, then you will also need to copy these to Briarée as well of course and to arrange their directory structure in a manner identical to that on your workstation. If you have a lot of data in your files or you foresee doing a lot of I/O, then all of your files should go in $SCRATCH on Briarée. Once this has been accomplished, you can finally submit a Matlab job to the scheduler. A sample script is included below, which assumes you are using the R2014a version of Matlab and that you have placed the files in the directory $SCRATCH/matlab_jobs.

Job Submission Script for Briarée

File : submit_matlab_briaree.pbs
#!/bin/bash
#PBS -N NameOfTheJob
#PBS -A abc-123-aa
#PBS -l nodes=1:ppn=12
#PBS -l walltime=12:00:00
 
cd $SCRATCH/matlab_jobs
 
module load Matlab-compiler-runtimes/8.3
./run_foo.sh /home/apps/Logiciels/MATLAB/MATLAB_Compiler_Runtime/v8.3/v83/

Documentation du MDCS

Introduction

IMPORTANT: la version de Matlab parallèle qui est installée sur Guillimin est compatible avec les clients Matlab 2012a, 2012b et 2013a. Les autres versions ne sont pas supportées. Au besoin, veuillez mettre à jour votre installation locale de Matlab.

Le calcul parallèle avec Matlab fonctionne grâce au « Parallel Computing Toolbox ». Pour la communauté de l'Université McGill, ce toolbox peut être activé avec la licence du campus McGill. Par contre, si votre client Matlab est activé avec une licence différente, assurez-vous que le Parallel Toolbox fait partie de ceux qui sont activés.

Un des rôles du Parallel Toolbox est de communiquer avec un Matlab Distributed Computing Server (MDCS) que vous devrez spécifier à votre client Matlab. Le MDCS est responsable de distribuer votre tâche Matlab sur les nœuds d'une grappe de calcul. Une version de production de MDCS est présentement installée sur Guillimin.

Avant de commencer à paralléliser votre code Matlab, nous vous suggérons d'aller lire la documentation du Parallel Computing Toolbox (ainsi que les références qui s'y trouvent). Cette documentation contient du matériel d'introduction montrant ce qu'est le Parallel Toolbox, comment l'utiliser et comment du code Matlab séquentiel peut être facilement et efficacement parallélisé.

IMPORTANT: Veuillez ne pas essayer de lancer l'exécutable matlab (c'est-à-dire /software/applications/matlab-2013a-para/bin/matlab) directement sur Guillimin : vous obtiendrez un message d'erreur concernant la licence. Le MDCS sur Guillimin n'est pas un Matlab régulier comme celui sur votre poste de travail. Le MDCS sert uniquement à « transférer » la tâche de votre poste de travail vers un ensemble de nœuds dans la grappe. Finalement, MDCS vous permet d'utiliser n'importe quel toolbox sur Guillimin, à la condition que vous ayez activé, au moyen d'une licence, les toolbox correspondants dans votre installation de Matlab sur votre poste de travail.

Configurer votre environnement Matlab parallèle

Tel que mentionné, l'usage de Matlab parallèle sur la grappe Guillimin fonctionne uniquement à partir d'une session Matlab ouverte sur votre poste de travail local. À cause de cela, certains changements de configuration devront être faits dans votre installation locale de Matlab et dans votre répertoire personnel sur Guillimin.

Veuillez suivre les étapes suivantes afin de configurer correctement votre environnement Matlab parallèle :

  1. Téléchargez l'archive appropriée pour votre version de Matlab (2012a, 2012b, ou 2013a) et extrayez son contenu sur votre poste de travail. L'archive contient les répertoires « config » et « examples ». Placez le répertoire « examples » à quelque part dans votre répertoire de projet Matlab : vous utiliserez ces quelques exemples à des fins de test et de référence.
  2. Le répertoire « config » contient tous les fichiers de configuration nécessaires.
    • Premièrement, copiez tous les fichiers « config/toolbox-local/* » dans le répertoire « <installation_matlab>/toolbox/local » sur votre poste de travail.
    • Deuxièmement, vous devez importer une configuration spécifique pour Guillimin se trouvant dans le fichier Guillimin.settings. Pour ce faire, allez à Parallel --> Import Cluster Profile à partir de la fenêtre principale de Matlab, sélectionnez le fichier Guillimin.settings et cliquez « Open ». Vous verrez alors le profil « Guillimin » qui s'est ajouté dans la colonne de gauche du « Cluster Profile Manager ». C'est tout! Vous pouvez fermer la fenêtre du « Cluster Profile Manager ».
    • IMPORTANT : Veuillez NE PAS appuyer sur le bouton « validate » dans le Cluster Profile Manager : certains tests vont échouer à cause de la configuration particulière de MDCS sur Guillimin. Malgré cela, vous devriez pouvoir utiliser sans problème Matlab parallèle sur Guillimin.
  3. Vous devez maintenant créer deux répertoires « jobs » dans lequel Matlab stockera temporairement des données pour la soumission des tâches :
    1. Connectez-vous à Guillimin et créez le répertoire « $HOME/.matlab/jobs ». Si vous aviez déjà exécuté Matlab sur Guillimin, le répertoire « .matlab » devrait déjà être là. Sinon, vous devez d'abord le créer.
    2. Sur votre poste de travail, l'emplacement du répertoire « jobs » dépend de votre système d'exploitation :
      • Linux: créez « $HOME/.matlab/jobs ». C'est tout, aucune autre étape n'est nécessaire.
      • Mac OS X: créez « $HOME/.matlab/jobs ». C'est tout, aucune autre étape n'est nécessaire.
      • Windows: dans Matlab, obtenez votre chemin Matlab par défaut avec la commande « userpath » (vous devriez obtenir quelque chose comme C:\Users\<votre_répertoire_home>\Documents\MATLAB). Allez à votre chemin Matlab par défaut et créez le répertoire « jobs » à cet endroit (selon le précédent exemple, vous obtiendriez C:\Users\<votre_répertoire_home>\Documents\MATLAB\jobs). Maintenant, ouvrez le Cluster Profile Manager à partir de la fenêtre principale de Matlab (Parallel --> Manage Cluster Profiles) et choisissez « Guillimin » à gauche. Ensuite, appuyez sur le bouton « Edit » dans le coin en bas à droite et éditez le champ JobStorageLocation (le deuxième à partir du haut). Vous devez y inscrire le chemin complet vers votre répertoire « jobs » (dans notre exemple, ce serait C:\Users\<votre_répertoire_home>\Documents\MATLAB\jobs). Appuyez sur « Done » et fermez le Cluster Profile Manager.
  4. Veuillez redémarrer Matlab sur votre poste de travail.

Soumettre une tâche Matlab parallèle

Les tâches parallèles sont soumises à partir d'une session locale de Matlab (c'est-à-dire sur votre poste de travail) en utilisant la commande batch avec quelques paramètres (le nom du profil de Guillimin, votre script Matlab, le nombre de « workers » dans le matlabpool, etc.). Avant de soumettre la moindre tâche, veuillez lire la rubrique d'aide de Matlab concernant la commande batch.

IMPORTANT:

  • Vous devez toujours avoir un fichier « moab.m » dans le même répertoire que le script que vous allez soumettre pour une exécution (voir moab.m dans le répertoire examples). Dans ce fichier, vous devez y inscrire le nombre de nœuds et le nombre de processeurs par nœud (ppn) souhaités. Vous devez aussi y inscrire le temps réel demandé. L'ordonnanceur s'occupera de réserver ces ressources pour votre tâche. Au besoin, ajustez ce fichier pour chaque soumission de tâche.
  • Dans le modèle d'exécution du MDCS, il y a un processus maître n'est pas compté dans le « matlabpool ». Par conséquent, vous devez toujours réserver ¦matlabpool¦+1 processeurs sur la grappe (voir examples/moab.m).

Voici un exemple de commandes à entrer pour soumettre l'exécution du script TestParfor.m qui se trouve dans le répertoire « examples » :
(vous devez entrer ces commandes dans votre session Matlab locale)

>> myCluster = parcluster('Guillimin')

>> j = batch(myCluster,'TestParfor', 'matlabpool', 2, 'CurrentDirectory', '.')

La première commande sert à charger le profil de configuration « Guillimin » dans la variable myCluster. La seconde commande soumet le script « TestParfor.m » à « myCluster », et ce, en demandant un matlabpool de deux processus. Ceci implique qu'il faut demander trois processeurs dans le fichier « moab.m ». Enfin, pour lancer ce test, assurez-vous que « TestParfor.m » et « moab.m » sont bien présents dans le répertoire courant de Matlab.

Lors du processus de soumission, le système vous demandera votre nom d'utilisateur (username) pour Guillimin. Il y aura aussi une fenêtre qui s'affichera pour vous demander si vous utilisez un « identity file » pour la connexion. Vous devriez répondre « No » à cette question et le système vous demandera votre mot de passe pour Guillimin.

Vous pouvez vérifier le statut de votre tâche à partir de la fenêtre principale de Matlab : Parallel --> Monitor Jobs.

NOTE: Vous ne pouvez pas suivre la progression de vos tâches à partir de votre Matlab local, car le canal STDOUT de tous les processus est redirigé par l'ordonnanceur vers un fichier de sortie qui n'apparaît qu'à la fin de l'exécution du script. Ainsi, la seule façon de suivre la progression de vos calculs, c'est de l'écrire périodiquement dans un fichier texte à l'aide de la fonction fprintf (voir dans examples). Ensuite, vous pouvez vous connecter directement à Guillimin et lire le contenu de ce fichier.

IMPORTANT: Lors de la soumission de votre tâche, il est possible de transférer quelques fichiers de données et quelques scripts additionnels (ou tout un répertoire) de votre poste de travail vers la grappe. Cela peut se faire à l'aide d'options spéciales de la commande batch (voir dans examples et la rubrique d'aide de la commande batch). Cependant, n'utilisez PAS ce mécanisme pour des gros fichiers de données. À la place, copiez manuellement vos données sur Guillimin avant de soumettre votre tâche. De même, pour les longs résultats (outputs), sauvegardez-les sur le système de fichiers de Guillimin et, par la suite, importez-les localement sur votre poste de travail.
Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager