FAQs
Général
Modifier le fichier ~/.ssh/config
sur votre machine pour ajouter ces lignes :
Host mesoshared.univ-fcomte.fr mesologin1.univ-fcomte.fr mesologin2.univ-fcomte.fr PubkeyAcceptedAlgorithms +ssh-rsa HostkeyAlgorithms +ssh-rsa
Se connecter sur un nœud de login, taper la commande système passwd
et de suivre les instructions
- Cette information est disponible sur le portail mésocentre : http://mesoportail.univ-fcomte.fr
- Sur le noeud de login en utilisant la commande
meso-quota
Utilisation
- Pour les applications séquentielle, tableaux de tâches et applications parallèle à mémoire partagée (OpenMP) il faut utiliser la file : all.q
- Pour les applications parallèles MPI, il faut utiliser la file parallel.q
- Pour les applications graphiques, interactives il faut utiliser la machine : mesoshared.univ-fcomte.fr
SGE affiche ce message d'erreur lorsque votre job demande des ressources impossibles à avoir.
Suite à une erreur dans votre script. Vérifier notamment que #!/bin/bash
est en première ligne du shell, penser à passer
dos2unix
sur les fichiers windows.
Pour afficher le message d'erreur SGE :
qstat -j numerodujob
Il est probable que votre script n'a pas été exécuté. Une des erreurs les plus courantes réside dans l'absence de définition de l'environnement. N'oubliez pas de définir les variables d'environnement nécessaires à l'exécution du script ou du binaire utilisé.
SGE n'arrive pas à trouver les ressources demandées, vérifiez les messages SGE par : qstat -j idJob
En utilisant l'option -l h_vmem
Par exemple :
#$ -l h_vmem=2G
Le job sera exécuté sera autorisé à allouer 2G de mémoire libre. Il sera tué par SGE si il dépasse cette valeur. Détails
En utilisant l’option -l h_rt
- en ligne de commande :
qsub -l h_rt=02:30:00 job.sge
- dans le script :
#$ -l h_rt=02:30:00
Pour faciliter la répartition des ressources par GE
Si le temps indiqué est trop court, votre job sera interrompu. S’il est trop long, vous serez pénalisé par SGE qui utilise cette information pour déterminer la priorité des jobs
Cela est possible en exécutant la commande suivante :
% qsub -N job1 [Script name] % qsub -N job2 -hold_jid job1 [Script name] % qsub -N job3 -hold_jid job1,job2 [Script name]
Chaque job à un nom (job1, job2 et job3). Lorsque job1
termine son exécution, job2 commence son exécution. Lorsque les deux jobs, job1 et job2, terminent leur exécution, job3 commence son exécution.
En utilisant l'environnement parallèle openmp
. cf : Soumission d'un job parallèle
Exemple : exécution sur un noeuds à 8 coeurs
#$ -pe openmp 8 .. ./appli params
Exemple : exécution sur un noeuds à 12 coeurs
#$ -pe openmp 12 .. ./appli params
Voir les jobs multithreadé ci-dessus. Il faut spécifier 8 ou 12 comme valeurs, selon le type de machines, pour l'environnement openmp
Applications
- Il faut rajouter
-l matlab=1
dans votre script, cela permet à SGE de prendre en compte les jetons. - Lancer matlab :
matlab -nodisplay -nodesktop -nojvm -nosplash < monprogramme.m
Voir l'exemple complet de script Applications séquentielles
Il faut rajouter -l comsol=1
dans votre script, cela permet à SGE de prendre en compte les jetons.
-l matlab=1
Lancer comsol :
module load comsol # charge le module comsol comsol batch -input mymodel.mph -output myresult.mph
Lancer comsol avec matlab :
module load comsol # charge le module comsol/3.5a module load matlab # charge le module matlab comsol matlab path -ml -nodesktop -ml -nodisplay <script_matlab.m
Comsol s'exécute uniquement sur des machines SMP (multi-coeurs). Il faut donc utiliser l'environnement parallèle openmp
pour spécifier le nombre de coeurs et de lancer comsol avec l'otption -np
Exemple : lancer comsol sur 8 coeurs
#$ -pe openmp 8 module load comsol # charge le module comsol comsol batch -np 8 -input mymodel.mph -output myresult.mph
Optimisation
Nous encourageons vivement l'utilisation du compilateur Intel. Les options dépendent de la nature des programmes. Dans tous les cas, Nous conseillons d'activer la vectorisation en utilisant l'option : -axCORE-AVX2
Pour Intel MPI
On utilise la variable d'environnement I_MPI_DEVICE
Les valeurs possibles sont :
sock
: socketshm
: mémoire partagéessm
: socket + mémoire partagéerdma
: infinibandrdssm
: socket + mémoire partagée + rdma (la valeur par défaut)
Exemple :
Utiliser uniquement les sockets (TCP Ethernet)
mpirun -env I_MPI_DEVICE socket .....
Utiliser uniquement l'infiniband
mpirun -env I_MPI_DEVICE rdma ....
Pour Open MPI c'est différent :
cm
when the InfiniPath
PSM MTL can be used. Otherwise, OB1
will be used and the
corresponding BTLs will be selected. Users can force the use of ob1
or cm
if desired by setting the pm
MCA
parameter at run-time:
combination with each other (per OS constraints; e.g., there are reports that the GM and OpenFabrics kernel drivers do not operate well together): - OpenFabrics: InfiniBand and iWARP - Loopback (send-to-self) - Myrinet: GM and MX - Portals - Quadrics Elan - Shared memory - TCP - SCTP - uDAPL
- "cm" supports a smaller number of networks (and they cannot be
used together), but may provide better better overall MPI
performance: - Myrinet MX (not GM) - InfiniPath PSM - Portals
$ mpirun --mca pml ob1 ... or $ mpirun --mca pml cm ...
So to force TCP to be used, you need to force the use of the ob1 PML and then force the use of the TCP BTL. Perhaps something like this:
$ mpirun --mca pml ob1 --mca btl tcp,sm,self ...
- Force InfiniBand: –mca pml ob1 –mca btl self,sm,openib
- Force OPA: –mca pml cm –mca mtl psm2