DOCUMENTATION
Plus d'informations concernant ce logicuel ici : https://fr.mathworks.com/.
Pour utiliser ce logiciel, il faut charger le module correspondant à la version désirée :
module load matlab/r2021a
Calcul parallèle sur 1 nœud
L'exemple qui suit n'est valable que pour un calcul sur 1 seul nœud, en utilisant tous les cœurs du nœuds.
Voici un exemple de script montecarlo_par.m Matlab qui utilise la fonction parpool pour faire un calcul parallèle :
% local indique qu'on utilise la pool locale de processeur
% Peu importe le chiffre que vous allez mettre, on le modifiera dynamiquement avec le script SLURM
parpool('local',24);
% MonteCarlo simulations
disp('Starting ...')
tic;
iter = 100000;
sz = 55;
a = zeros(1, iter);
parfor (simNum = 1:iter, 6)
a(simNum)=max(svd(rand(sz)))
end
toc;
% Ferme la pool locale de processeur
% Les processeurs resteront alloués sans rien faire si ce n'est pas fait
delete(gcp)
% Quitte Matlab
quit
Voici le script de soumission associé :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Calcul parallèle sur plusieurs nœuds
Cluster profile
La première chose à faire avant de lancer des calculs sur plusieurs nœuds est de créer un cluster profile dans Matlab. Ce profil permettra à Matlab de soumettre des jobs SLURM.
Pour se faire, dans l'onglet HOME de Matlab, cliquez sur Parallel puis Create and Manage Clusters
Une nouvelle fenêtre va s'ouvrir. CLiquez su Add Cluster Profile puis Slurm
Vous pouvez renommer ce profil (vivement conseillé) : Clic droit sur le profil puis Rename. Enfin, vous pouvez modifier les options de ce profil : Clic droit sur le profil, puis Edit. Il n'y a que l'option Ressource arguments for job submission [...] à modifier obligatoirement, voici l'option correcte pour utiliser la partition public :
--ntasks=^N^ --cpus-per-task=^T^ --constraint=matlab
Pour utiliser une partion grant ou pri :
--ntasks=^N^ --cpus-per-task=^T^ --constraint=matlab -A
Vous pouvez également ajouter n'importe quelle option SLURM, notemment l'option -t hh:mm:ss.
Exemple de script Matlab tournant sur plusieurs nœuds
c=parcluster('PublicShort'); % On utilisera le profil nommé 'PublicShort'
% Le chiffre correspond au nombre de processeurs demandés
% Ne pas dépasser la limite imposée par la partition SLURM utilisée
% (96 dans public)
parpool(c,48);
% MonteCarlo simulations
disp('Starting ...')
tic;
iter = 100000;
sz = 55;
a = zeros(1, iter);
parfor (simNum = 1:iter, 6)
a(simNum)=max(svd(rand(sz)))
end
toc;
% Ferme la pool locale de processeur
% Les processeurs resteront alloués sans rien faire si ce n'est pas fait
delete(gcp)
% Quitte Matlab
quit
Lancement du job multi-nœud
Vous pouvez lancer le job directement depuis un terminal avec cette commande :
matlab -nodisplay -nosplash -r "run montecarlo_par.m"
Matlab se chargera de soumettre le job pour SLURM. Attention cependant, il faut rester connecter jusqu'à ce que le job soit terminé. Il est préféable de lancer vos jobs dans un tmux ou un screen afin de pouvoir faire autre chose ou quitter sereinement votre session.
Vous pouvez également lancer vos scripts via la GUI de Matlab, mais la remarque ci-dessus s'applique également et est encore plus contraignante car il n'y a pas de possibilité d'utiliser un tmux ou un screen.
VERSIONS ET SCRIPTS D'INSTALLATION
- r2021a (latest)
- r2020b
- r2016b
- r2013a
- r2010b
TAGS
- software