MATLAB
Utiliser MATLAB sur les grappes de Calcul Canada
Vous pouvez utiliser MATLAB
- avec votre licence, habituellement détenue par votre institution, faculté, département ou laboratoire, ou
- en compilant votre code en un binaire pouvant être exécuté sur les bibliothèques MATLAB Compiler Runtime (MCR).
Votre licence
Calcul Canada est fournisseur d'hébergement pour MATLAB. Dans ce contexte, MATLAB est installé sur nos grappes, mais nous n'avons pas une licence générique fournissant l'accès à tous nos utilisateurs. Cependant, plusieurs institutions, facultés et départements possèdent des licences qui peuvent être utilisées sur nos grappes. De façon générale, toute licence émise à des fins de recherche peut être utilisée sur nos grappes; plus précisément, toute licence Total Academic Headcount de MATLAB peut être utilisée avec notre infrastructure, comme en fait foi une confirmation écrite de MathWorks. Le libellé de la licence n'est pas clair à cet effet et il peut sembler que votre licence ne puisse pas être utilisée hors de votre campus. Nous vous suggérons de demander au responsable de la gestion des licences pour votre établissement de communiquer avec un représentant MathWorks.
En ce qui a trait à l'aspect technique, nos nœuds de calcul doivent pouvoir communiquer avec votre serveur de licence. Si ce n'est déjà fait, notre équipe technique coordonnera ceci avec votre gestionnaire de licence. Quand tout sera en place, vous pourrez charger le module MATLAB qui localisera de lui-même la licence. En cas de difficulté, contactez le soutien technique.
Important : Comme pour toutes les tâches aux exigences élevées, le code MATLAB doit toujours être inclus dans une tâche soumise à l'ordonnanceur; consultez Exécuter des tâches.
Voici un script simple pour l'ordonnanceur qui soumet le script cosplot.m montré plus bas.
#!/bin/bash -l
#SBATCH --job-name=matlab_test
#SBATCH --account=def-bmoa #adjust this to match the accounting group you are using to submit jobs
#SBATCH --time=0-03:00 #adjust this to match the walltime of your job
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1 #adjust this if you are using PCT
#SBATCH --mem=4000 #adjust this according to your the memory requirement per node you need
#SBATCH --mail-user=bmoa@uvic.ca #adjust this to match your email address
#SBATCH --mail-type=ALL
#Chargez le module matlab.
module load matlab/2018a
#Omettez -singleCompThread si vous utilisez PCT.
matlab -nodisplay -nosplash -singleCompThread -r "cosplot"
Vous pouvez maintenant soumettre la tâche avec la commande sbatch habituelle.
[name@server ~]$ sbatch matlab_slurm.sl
Utiliser les bibliothèques MCR
Comme la licence de Calcul Canada ne nous permet pas de l'installer, vous devez avoir accès au compilateur MATLAB sous la plateforme Linux. Consultez la documentation MATLAB Compiler. Voici un exemple d'un fichier fonction ː
function cosplot()
% MATLAB file example to approximate a sawtooth
% with a truncated Fourier expansion.
nterms=5;
fourbypi=4.0/pi;
np=100;
y(1:np)=pi/2.0;
x(1:np)=linspace(-2.0*pi,2*pi,np);
for k=1:nterms
twokm=2*k-1;
y=y-fourbypi*cos(twokm*x)/twokm^2;
end
%(The following commands for generating graphics output work
% with MATLAB 7 on glacier but produce empty plots with MATLAB 6
% on some other clusters.)
plot(x,y)
print -dpsc matlab_test_plot.ps
quit
end
Compilez avec la commande
[name@yourserver ~]$ mcc -m -R -nodisplay cosplot.m
Ceci produit le binaire cosplot et le script enveloppant run_cosplot.sh. Ce script ne fonctionnera pas tel quel sur les serveurs de Calcul Canada puisque MATLAB veut que certaines bibliothèques se trouvent à des endroits spécifiques. Utilisez plutôt le script enveloppant run_mcr_binary.sh qui définit les bons chemins.
Chargez le module MCR correspondant à la version que vous utilisez pour créer l'exécutable
[name@server ~]$ module load mcr/R2018a
Lancez la commande
[nom@serveur ~]$ run_mcr_binary.sh cosplot
puis utilisez le binaire comme suit :
[nom@serveur ~]$ setrpaths.sh --path cosplot
La commande setrpaths.sh ne doit être exécutée qu'une seule fois pour chacun des binaires compilés; run_mcr_binary.sh vous demandera de l'exécuter si ce n'est pas fait.
Important : Comme pour toutes les tâches aux exigences élevées, le code MCR doit toujours être inclus dans une tâche soumise à l'ordonnanceur; consultez Exécuter des tâches.