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

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
logiciels:matlab [2014/10/02 18:57]
montap01 [Matlab]
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 :
Ligne 7: Ligne 9:
     * 2008a     * 2008a
     * R2014a     * R2014a
 +    * R2017b
 +    * R2019b
  
-==== Toolbox ==== +<note warning> 
-Matlab fonctionne avec des extensions appelées //toolbox//Les toolbox nécessitent des licences additionnelles+CALI ne dispose pas de licences Matlab. Vous devrez donc utiliser des licences flottantes de votre laboratoire pour pouvoir exécuter ce logiciel
- +</note>
-Toolbox disponibles sur CALI :  +
- +
-  MATLAB                                              +
-  Image Processing Toolbox                           +
-  Optimization Toolbox                                 +
-  Partial Differential Equation Toolbox                +
-  Signal Processing Toolbox                           +
-  System Identification Toolbox                      +
  
 ===== Utilisation ===== ===== Utilisation =====
Ligne 25: Ligne 20:
 Pour sélectionner la version voulue : utiliser les [[..:modules]] Pour sélectionner la version voulue : utiliser les [[..:modules]]
  
-==== Travailler avec slurm ==== +Par exemple :  
-Voir les exemples pour [[octave]]+  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.1412269045.txt.gz · Dernière modification: 2014/10/02 18:57 de montap01