FAQ

www.plafrim.fr

Privé : Comment changer mon mot de passe sur www.plafrim.fr ?

  1. Aller à http://www.plafrim.fr/wp-login.php
  2. Action : mot de passe oublié
  3. Mettre (au choix) (a) soit son id_plafrim (utilisé par exemple pour les connexions en SSH) (b) soit son adresse courriel affichée sur votre compte plafrim (excepté @math.u-bordeaux1.fr vers @math.u-bordeaux.fr)
    Action : générer un mot de passe
  4. vous devez recevoir un courriel
  5. Cliquer sur le lien proposé dans ce courriel (Pour renouveler...)
  6. Mettre un mot de passe personnalisé (et robuste) et cliquer sur réinitialiser
  7. Vous pouvez tester la connexion comme proposé (connexion) ou via http://www.plafrim.fr/fr/connexion/

Publications

Privé : Comment citer PlaFRIM dans vos articles ?

N'oubliez pas de citer PLaFRIM dans vos publications.  La phrase à mettre est

Acknowledgment: Experiments presented in this paper were carried out using the PlaFRIM experimental testbed, supported by Inria, CNRS (LABRI and IMB), Université de Bordeaux, Bordeaux INP and Conseil Régional d'Aquitaine (see https://www.plafrim.fr/).

 

Privé : Comment citer PlaFRIM dans votre dépôt HAL ?

Sous Hal, pour toutes les publications (articles, conférence, thèse, poster, …) il faut ajouter plafrim dans le champ Collaboration des métadonnées.

Utilisation / accès

Privé : Quels sont les différents espaces de stockage ?

Il existe quatre espaces de stockage sur la machine avec des vocations différentes :

Nom Taille Max Effacement Protection Hardware (RAID) Sauvegardes Utilisation principale Modalités d'obtention
/home 20Go jamais avec régulière + versionning individuelle automatique
/projets 200Go jamais avec régulière + versionning groupe sur demande (nom du projet + login des membres + justification)
/lustre 1To jamais avec :!: sans :!: individuelle automatique
/tmp variable :!: en cas de besoin & au redémarrage des machines :!: :!: sans :!: :!: sans :!: individuelle automatique

Espace de base "home directory"

Accueille le compte utilisateur /home/user, est sauvegardé (dans le dossier /home/.snapshot) et dupliqué hors-site pendant 4 semaines.

La taille du compte utilisateur ne peut dépasser 20 Go.

Espace de stockage de projets de groupe /projets

L'espace projet /projets est un espace de stockage partageable entre plusieurs utilisateurs pour y déposer des données, des logiciels, …

Cet espace est sauvegardé d'une manière similaire à l'espace utilisateur (dans un dossier du type /.projets_X/.snapshot/DATE/nom_projet - faire : ls -ald /.projets_*/.snapshot/*/nom_projet pour voir les sauvegardes disponibles).

Pour obtenir un tel espace il vous suffit d'envoyer un mail à Support PlaFRIM en précisant le nom du projet, les personnes reliées à ce projet et le contenu du projet.

L'espace projet est localisé dans /projets/nom_du_projet

La taille de l'espace projet est limitée à 200 Go.

Espace de stockage temporaire Lustre

La taille de l'espace de sockage temporaire Lustre est limitée à 1To.

Espaces de stockage temporaire locaux

Un espace de stockage temporaire est à votre disposition sur chaque nœud. Cet espace est situé sur les disques locaux :
- /tmp
La taille de cet espace dépend des machines. Pour plus d'informations, utilisez la commande df.

Privé : Comment se connecter à PlaFRIM ?

Votre client ssh doit utiliser une "ProxyCommand" pour accéder au serveur

La configuration minimale de votre fichier .ssh/config pour atteindre la plateforme sur le port 22 : (remplacer LOGIN_PLAFRIM par votre login actuel):

Host plafrim
User LOGIN_PLAFRIM
ForwardAgent yes
ForwardX11 yes
ProxyCommand ssh -A -l LOGIN_PLAFRIM ssh.plafrim.fr -W plafrim:22

Vérifiez que la clef privée, correspondant à la clef publique déclarée sur PlaFRIM, est bien chargée avec ssh-add -l. Sinon, il faut la charger avec ssh-add ~/.ssh/clef_privee.

Connectez vous en tapant ssh LOGIN_PLAFRIM@plafrim

Privé : Comment puis je avoir un bash shell à distance en mode interactif ?

$srun --pty bash -i

Ce qui est équivalent à "srun -p defq -N1 -n1 --pty bash -i",

Avec :

  • -N 1 (ou --nodes=1) : désigne le nombre de nœud (par défaut égale à 1).
  • -n 1 (ou -- ntasks=1) : désigne le nombre de tâches, qu'est égale 1 par défaut, sinon il doit être inférieur ou égale au nombre de cœurs de la machine  réservée (ce qui correspond à mettre une tâche par cœur).
  • -p defq (ou --partition=defq ) :  la partition à demander dans le travail interactif.  Si aucune partition n'a été demandée explicitement, la partition defq qui sera prise par défaut.

Exemple :

Sur nœud devel :

``

$ hostname
devel12

Pour utiliser un terminal à distance :

$ srun --pty bash -i

Vérifier le hostname de la machine alloué

$ hostname
miriel001
@miriel001 ~]$

Pour réserver le nœud en entier (x24 cœurs) rajouter l'option "--exclusive".

Remarque :

  • Il faut noter que l'option "--pty" marche aussi pour le cas ou "--nodes=#N > 1". Pour demander un terminal avec plus de nœud il y a aussi cette méthode décrite dans ce lien screen).
  • La commande "srun" embarque tout l'environnement de l'utilisateur.

Privé : Comment accéder à un site extérieur depuis PlaFRIM ?

Pour accéder à un nouveau site depuis un noeud de la machine, un utilisateur devra envoyer une demande motivée à plafrim-support@inria.fr en précisant la durée d’utilisation du site. Cette demande sera ensuite étudiée d’un point de vue technique (aspect sécurité, …) et les avis utilisateur et technique seront transmis au bureau pour information. Les utilisateurs seront informés de l’accessibilité du site au travers de la liste de diffusion plafrim-users. Ce site sera ensuite ajouté à la liste des sites autorisés sur le Web interne de Plafrim.

Gestionnaire de travaux

Privé : Comment lancer un job multi-series

Pour lancer plusieurs instances de job à travers une seule reservation, SLURM propose d'utiliser la fonctionnalité multi-prog.

Pour cela, il vous suffit de renseigner dans un fichier multiprog.conf les instances à lancer et sur quelles ressources de votre réservation. Ensuite vous utilisez srun en précisant le nombre de tâches souhaitées.

Par exemple, pour le fichier multiprog.conf suivant :

 

#multiprog.conf

2-4 hostname

1,5 echo task:%t

0 echo offset:%o

la sortie de la commande :

srun -n 6 --multi-prog multiprog.conf 

donnera

miriel004

task:1

miriel004

offset:0

miriel004

task:5

Privé : Quelles sont les queues de soumission et les limitations appliquées aux travaux sur la plate forme ?

L'ensemble des classes admissibles et les limitations appliquées dans la plate forme PlaFRIM2.

Pour les noeuds Miriel :

Liste des noeuds concernés : Miriel[001-077]

Queue Memory CPU Time Walltime Nodes Cores
defq < 02:00:00 < 4 < 4
court < 04:00:00 < 42 < 1008
longq < 72:00:00 <42 < 1008
special < 00:30:00 < 77 < 1848

Les limitations pour les déférentes queues :

Queue Max User Running Max User Queuable Max Job Running Max Job Queuable
defq 15 30 - 30
court 2 10 20 64
longq 2 10 16 64
special 10 20 40 50

Pour les noeuds Mistral :

Liste des noeuds concernés : Mistral[01-18]

Les Queues de soumission de travaux pour les noeuds avec des MICs :

Queue Memory CPU Time Walltime Nodes Cores
court_mistral  < 04:00:00 < 18 < 360
long_mistral  <72:00:00 < 16 < 320

Les limitations pour les déférentes queues :

Queue Max User Running Max User Queuable Max Job Queuable Max Job Running
 court_mistral 2 10 20 10
long_mistral 2 5 10 10

Pour les noeuds sirocco :

Liste des noeuds concernés : sirocco[01-05]

Les Queues de soumission de travaux pour les noeuds avec des GPUs :

Queue Memory CPU Time Walltime Nodes Cores
 court_sirocco   < 04:00:00 < 5 < 120
 longq_sirocco < 72:00:00 < 2 < 48

Les limitations pour les déférentes queues :

Queue Max User Running Max User Queuable Max Job Queuable Max Job Running
court_sirocco 2 4     10 5
long_sirocco 1 2      4 2

Privé : Comment lancer un travail via SLURM ?

Il y a deux mode pour lancer un travail via SLURM :

En mode batch (via un script de soumission) :

$ cat  script-slurm.sh
#!/usr/bin/env bash
##Le nom du travail
#SBATCH -J TEST_Slurm
## Les ressources  : (nombres de nœuds, tâches, la durée .. etc
#SBATCH -N 1
#SBATCH -n 4
#  message de sortie standard du travail
#SBATCH -o batch%j.out
# #  message de sortie d'erreur du travail
#SBATCH -e batch%j.err
## Chargement de modules pour le travail
module purge
module load slurm/14.03.0
module load compiler/gcc/4.9.0
echo "=====my job informations ===="
echo "Node List: " $SLURM_NODELIST
echo "my jobID: " $SLURM_JOB_ID
echo "Partition: " $SLURM_JOB_PARTITION
echo "submit directory:" $SLURM_SUBMIT_DIR
echo "submit host:" $SLURM_SUBMIT_HOST
echo "In the directory: `pwd`"
echo "As the user: `whoami`"
srun -n 4 ./a.out

Pour soumettre ce travail, utiliser sbatch :

$sbatch batch_slurm.sh

En interactive (salloc/srun)

Il se peut que pour des raisons particuliers, on a besoin d'un travail interactif (compilation, débogage, lancement de tests courts, ... etc).  Le travail interactif se divise en trois types d'utilisations :

  • En utilisant des étapes d'exécution, cela permet de lancer à nouveau des commandes sur une partie ou toutes  les ressources allouées, exemple :

    salloc -N3 --ntasks-per-node=3  -t 01:00:00

  • En exécution direct sur l'ensemble des ressources demandés lors de la soumission, exemple :

    srun -N3 --ntasks-per-node=3 ./a.out

  • En exécutant un shell sur le nœud alloué et utiliser la ligne de commande du nœud :

srun -p <partition> --pty bash -i

Pour plus de détails :

Privé : Quelles sont les ressources disponibles pour mon travail ?

La commande sinfo -l permet d'avoir ce type d'information.

On peut afficher que les informations qui nous intéressent :

sinfo -s -o "%.18P %.10g %.12t %.10L %.12l %.12c %.20N %.12s %.10G %.18f"

Pour afficher les machines/ressources disponibles dans une partition :

sinfo -p <partition> -t idle

L'outil sview (Interface graphique ) permet aussi de voir les ressources libres et utilisés et l'état des jobs et autres informations.

Pour l'utiliser, charger le module slurm et lancer la commande sview.

Remarque : Pour voir l'état d'utilisation des machines sur PlaFRIM suivre le lien état

Privé : Comment avoir des informations sur les nœuds de la plate forme et leurs propriétés ?

La plate forme PlafRIM regroupe des nœuds hétérogènes (multi-cœurs, hyper-threadés,  MIC/GPU, génération de processeurs, ... etc).

Pour avoir les détails de chaque nœud, utiliser la commande sinfo :

$ sinfo -lNe

Avec :

  • N : (--Node) Pour afficher les détails d'un nœud (Par défaut :).
  • l  : (--long) Pour afficher des informations globales.
  • e : (--exact) Pour regrouper les nœuds qui partagent les mêmes propriétés (même partition, caractéristiques, ... etc).

Exemple :

$ sinfo -lNe

NODELIST NODES PARTITION STATE CPUS S:C:T MEMORY TMP_DISK WEIGHT FEATURES REASON
mirage[01-04,06-08] 7 court_mirage idle~ 12 2:6:1 36195 391749 1 Westmere none
mirage[01-04,06-08] 7 long_mirage idle~ 12 2:6:1 36195 391749 1 Westmere none
mirage05 1 long_mirage down* 12 2:6:1 32000 0 1 Westmere Not responding
mirage05 1 court_mirage down* 12 2:6:1 32000 0 1 Westmere Not responding
mirage09 1 long_mirage idle~ 12 2:6:1 36195 391749 1 Westmere none
mirage09 1 court_mirage idle~ 12 2:6:1 36195 391749 1 Westmere none
miriel[001-015,021-039,050-057] 42 special allocated 24 2:12:1 128832 297587 1 Miriel none
miriel[001-015,021-039,050-057] 42 multiPart allocated 24 2:12:1 128832 297587 1 Miriel none
miriel[001-015,021-039,050-057] 42 defq* allocated 24 2:12:1 128832 297587 1 Miriel none  

...

 

Privé : Comment détruire mes travaux qui sont entrain de tourner ?

Pour détruire les travaux qui sont en cours, soumis en mode batch, utiliser la commande scancel suivie par le login de l'utilisateur ou de la liste des identifiants des travaux (séparés par des espaces) :

$scancel -u <login>

ou

$scancel  jobid_1 ... jobid_N

Exemple  pour un utilisateur bee :

Récupérer les  identifiants des travaux en cours.

$squeue -u bee
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
2545 longq test1  bee R 4:46:27 1 miriel007
2552 longq test2  bee R 4:46:47 1 miriel003
2553 longq test1  bee R 4:46:27 1 miriel004

Pour détruire tous les travaux de l'utilisateur bee

.

$scancel -u bee

ou

détruiree les travaux 2552 et 2553 en cours.

$scancel 2553 2552

Pour la session interactive, il est possible d'utiliser  les commandes unix exit ou CTRL+D pour détruire le travail interactif en cours ( et libérer les ressources utilisées).
Pour plus d'info sur cette commande utiliser man scancel.

Remarque : On ne peut détruire que ses propres travaux.

Privé : Comment demander des nœuds avec des cartes GPU dans mon travail ?

Pour demander des machines avec des cartes GPU dans un travail interactif (resp. batch), il faut utiliser l'un des partitions *_sirocco (court ou long) et l'option gres=gpu:<nombre_de_GPUs > :

<srun/salloc/sbatch> -p court_sirocco --gres=gpu:<nombre_de_GPUs>  ...

Avec <nombre_de_GPUs>  est le nombre de carte GPUs par machine, qui ne doit pas dépasser le nombre maximal qui est de 4 pour les sirocco0[1-5], et de 2 pour sirocco06.

Exemple :

  • Pour un travail en mode interactif :

$module load compiler/cuda/6.5/toolkit/6.5.14
$srun  -p court_sirocco  --gres=gpu:4 nvidia-smi

  • Pour un travail en mode batch :

#!/bin/bash
#SBATCH -p court_sirocco
#SBATCH -o cuda%j.out
#SBATCH -e cuda%j.err
#
#SBATCH --gres=gpu:2
#SBATCH -N2
#SBATCH --time=0-00:05:15
module purge
module load slurm/14.03.0
module load compiler/cuda/6.5/toolkit/6.5.14
echo "gpu visible devices are:"$CUDA_VISIBLE_DEVICES
srun hostname
srun nvidia-smi

Tout les machines sirocco ont le même type de carte GPU, à savoir :

  • nom de la carte GPU : Tesla K40-M
  • 2880 cœurs cuda
  • 12GB mémoire
  • peak DP : 1.43 Tflops
  • peak SP : 4.29 Tflops

Programmation parallèle

Privé : Comment lancer mon application avec OpenMPI ?

Sur l'ensemble des machines de développement de PlaFRIM nommées miriel, sirocco et devel, vous pouvez lancer vos applications parallèles de la manière suivante :

mpirun -np "nb_procs" --mca mtl psm  ./apps

Si vous souhaitez (pour les miriels 01 à 44) utiliser l'OmniPath :

mpirun -np "nb_procs" --mca mtl psm2 ./apps

ceci est valable pour les versions d'OpenMPI > 2.0.0

 

 

Privé : Comment lancer simplement mon application avec IntelMPI ?

Avec le module mpi/intel-mpi/64/2017.1/132 (et au delà) :

Sur l'ensemble des machines de développement de PlaFRIM nommées miriel, sirocco et devel, vous pouvez lancer vos applications parallèles de la manière suivante :

mpirun -np "nb_procs" -psm  ./apps

Si vous souhaitez (pour les miriels 01 à 44) utiliser l'OmniPath :

mpirun -np "nb_procs" -psm2 ./apps

ceci est valable pour les versions d'IntelMPI > 2017

Privé : Comment lancer mon application avec Intel MPI ?

Vous devez tout d'abord charger l'un des modules Intel MPI dans votre environnement en respectant les dépendances.

Exemple :

module load compiler/gcc/4.9.0
module add compiler/intel/64/2015.3.187
module add mpi/intel-mpi/64/5.0.3/048

Exécution avec la commande mpiexec.hydra :

srun hostname -s| sort -u > mpd.hosts

Choisir le réseau de communication entre les processus mpi, à l'aide de la variable d'environnement I_MPI_FABRICS.

I_MPI_FABRICS=<fabric>|<intra-node fabric>: <inter-node fabric>

Où <fabric> := {shm, dapl, tcp, tmi, ofa}

par exemple shm (pour shared memory) entre processus mpi du même nœud et tmi ( tag maching interface) avec processus mpi des autres nœuds alloués pour le job.

export I_MPI_FABRICS=shm:tmi

mpiexec.hydra -f mpd.hosts -n $SLURM_NPROCS ./a.out

Utiliser avec la commande srun:

export I_MPI_PMI_LIBRARY=/cm/shared/apps/slurm/14.03.0/lib64/libpmi.so
export I_MPI_FABRICS=shm:tmi
srun -n $SLURM_NPROCS ./a.out

Les valeurs disponibles de "fabrics" pour la plate-forme sont :

tmi TMI-capable network fabrics including Intel® True Scale Fabric, Myrinet*, (through Tag Matching Interface)
ofa OFA-capable network fabric including InfiniBand* (through OFED* verbs)
dapl DAPL-capable network fabrics, such as InfiniBand*, iWarp*, Dolphin*, and XPMEM* (through DAPL*)/span>
tcp TCP/IP-capable network fabrics, such as Ethernet and InfiniBand* (through IPoIB*)

Il y a d'autres possibilités avec I_MPI_FABRICS sur la plate-forme (pour plus de détails https://software.intel.com/sites/products/documentation/hpc/ics/impi/41/lin/Reference_Manual/Communication_Fabrics_Control.htm).

Vous pouvez aussi spécifier une liste de "fabrics", (les valeurs par défaut sont dapl,tcp) grâce à la variable d'environnement I_MPI_FABRICS_LIST. Le premier "fabric" détecté sera utilisé lors de l'exécution :

I_MPI_FABRICS_LIST=<fabrics list>

<fabrics list> := <fabric>,...,<fabric>

A noter :

  • Les serveurs génériques de type miriel sont équipées de cartes Intel True-Scale, tmi est à privilégier pour les communication inter-noeuds.
  • Les serveurs avec des cartes accélératrices, en l'occurrence les machines de type mistral ( serveurs avec cartes Xeon PHI ) et sirocco (serveurs avec des GPUs),  ont une carte Infiniband Mellanox qui diffère de celle des machines de type miriel. dans ce cas le tmi n'est pas compatible avec ces cartes (préférer dapl ou ofa).
  • Les machines plus anciennes (fourmis, mirabelles, mirages) sont aussi dans ce cas.

Aide

Privé : Comment obtenir de l’aide ?

Plusieurs possibilités en fonction de votre problème

Nous vous demandons d'être courtois dans vos demandes.