Outils pour utilisateurs

Outils du site


logiciels:matlab

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
logiciels:matlab [2014/10/02 14:20]
montap01 créée
logiciels:matlab [2023/10/16 12:21] (Version actuelle)
montap01
Ligne 1: Ligne 1:
 ====== Matlab ====== ====== Matlab ======
 +{{description>Matlab est un langage de haut niveau et un environnement interactif pour le calcul numérique, la visualisation et la programmation.}}
 +
 +MATLAB® est un logiciel commercial développé par la société Mathworks. Matlab est un langage de haut niveau et un environnement interactif pour le calcul numérique, la visualisation et la programmation.
  
-MATLAB® est un logiciel commercial développé par la société Mathworks. Matlab un langage de haut niveau et un environnement interactif pour le calcul numérique, la visualisation et la programmation. 
   * Site web : http://www.mathworks.fr/products/matlab/   * Site web : http://www.mathworks.fr/products/matlab/
   * Versions installées :   * Versions installées :
     * 2007b     * 2007b
     * 2008a     * 2008a
 +    * R2014a
 +    * R2017b
 +    * R2019b
  
 +<note warning>
 +CALI ne dispose pas de licences Matlab. Vous devrez donc utiliser des licences flottantes de votre laboratoire pour pouvoir exécuter ce logiciel.
 +</note>
 +
 +===== Utilisation =====
 +==== Sélection de la version ====
 Pour sélectionner la version voulue : utiliser les [[..:modules]] Pour sélectionner la version voulue : utiliser les [[..:modules]]
 +
 +Par exemple : 
 +  module load matlab/R2014a
 +  
 +==== Indiquer votre gestionnaire de licences ====
 +Pré-requis : 
 +  - Votre laboratoire doit disposer d'un //gestionnaire de licences flottantes//
 +  - Vous devez connaître le //nom DNS// de ce gestionnaire de licences, et le //numéro de port// utilisé
 +  - L'accès réseau au gestionnaire doit être ouvert depuis CALI
 +
 +Une fois ces conditions remplies, positionnez une variable d'environnement dans votre terminal connecté à CALI : 
 +<file bash>
 +export MLM_LICENSE_FILE <PORT>@<NOM_SERVEUR_LICENCES>
 +</file>
 +en remplaçant ''<PORT>'' par le numéro de port réseau, et ''<NOM_SERVEUR_LICENCES>'' par le nom DNS (ou l'adresse IP) de votre serveur de licences.
 +
 +
 +==== Travailler avec slurm en mode séquentiel ====
 +
 +Le principe consiste à préparer un fichier de commande matlab, puis à lancer dans le job slurm le logiciel matlab en lui demandant d'exécuter ce fichier de commandes.
 +
 +
 +Ci-dessous un exemple qui calcule la produit de deux matrices et sauve la résultat dans un fichier de sortie au format matlab ''out.mat''
 +
 +  - Préparation du script matlab, dans le fichier ''matmul.m''<file>
 +% Creation de deux matrices aleatoires 100x100
 +A=rand(100);
 +B=rand(100);
 +
 +% Produit matriciel
 +AB=A*B;
 +
 +disp(sprintf('Somme de tous les elements de AB : %12.5f', sum(AB(:))));
 +
 +% Sauvegarde du resultat dans "out.mat"
 +save out.mat AB;
 +</file>
 +  - Préparation du job slurm (fichier ''matmul.sbatch'') <file>
 +#!/bin/bash 
 +#
 +#SBATCH --partition=rapide
 +#SBATCH --ntasks=1
 +#SBATCH --mem-per-cpu=1000
 +#SBATCH --time=00:30:00
 +
 +module load matlab
 +matlab -nojvm -nosplash -nodisplay -singleCompThread -r "matmul, exit"
 +</file>
 +  - Soumission du travail <code>
 +sbatch matmul.sbatch
 +</code>
 +
 +:!: Notez que : 
 +  * l'option ''-singleCompThread'' demande à matlab de n'utiliser qu'un seul //thread//, car nous avons demandé dans les réservation slurm une seule CPU
 +  * la commande ''exit'' est nécessaire dans les commandes matlab pour quitter le logiciel à la fin de l'exécution de matmul. En l'absence de cette commande, matlab resterait  en attente de commande, sans "rendre la main"
 +  * la quantité de mémoire demandée, et le temps prévisionnel d'exécution, sont à adapter pour votre script. N'oubliez pas que slurm tuera le job si la consommation de mémoire ou la durée excédent ce qui est demandé
 +  * vous devez choisir la partition en fonction de vos besoins (voir l'article sur [[:slurm:les-bases | les base de slurm]])
 +
 +==== Execution sous slurm en multi-threadé ====
 +Sans l'option ''-singleCompThread'', matlab utilisera tous les coeurs disponibles sur la machine. On peut également utiliser la commande (**obsolète**) ''maxNumCompThreads'' pour limiter le nombre de threads matlab.
 +
 +Il faut alors que votre réservation //slurm// corresponde au nombre de threads utilisés par matlab.
 +
 +  * Solution 1 : vous réservez un noeud entier et vous laissez matlab utiliser tous les threads
 +  * Solution 2 : vous indiquez dans slurm une réservation de N coeurs et vous faites appel à la fonction matlab ''maxNumCompThreads'' pour limiter le nombre de thread matlab
 +
 +Pour reprendre l'exemple précédent : 
 +  - Script ''matmul.m'' <file>
 +cpus=str2num(getenv('SLURM_CPUS_PER_TASK'))
 +maxNumCompThreads(cpus);
 +disp(sprintf('Max number of threads : %d', maxNumCompThreads));
 +
 +% Creation de deux matrices aleatoires 100x100
 +A=rand(100);
 +B=rand(100);
 +
 +% Produit matriciel
 +AB=A*B;
 +
 +disp(sprintf('Somme de tous les elements de AB : %12.5f', sum(AB(:))));
 +
 +% Sauvegarde du resultat dans "out.mat"
 +save out.mat AB;
 +</file>
 +  - Script ''matmul.sbatch'' <file>
 +#!/bin/bash 
 +#SBATCH --partition=rapide
 +#SBATCH --ntasks=1
 +#SBATCH --cpus-per-task=4
 +#SBATCH --mem-per-cpu=1000
 +#SBATCH --time=00:30:00
 +
 +module load matlab
 +echo "Nombre de cpu : $SLURM_CPUS_PER_TASK" 
 +matlab -nojvm -nosplash -nodisplay -r "matmul, exit"
 +</file>
logiciels/matlab.1412252418.txt.gz · Dernière modification: 2014/10/02 14:20 de montap01