IMB > cellule > Moyens de calcul et de stockage

FrIMBold - Grappe de serveurs génériques à l’IMB

Présentation de FrIMBold

FrIMBold est une grappe de serveurs d’appoint pour les membres de l’IMB. L’objectif est de réutiliser, à moindre coût humain et financier, d’anciens serveurs, pour y travailler de façon interactive. Actuellement, ce sont les serveurs issus de PlaFRIM1encore fonctionnels, c’est à dire essentiellement les nœuds de calcul fourmiXXX et mirabelleXXX.

FrIMBold est déployé selon le même principe que les postes banalisés et serveurs diskless de l’IMB. La grappe a donc exactement le même environnement logiciel que les postes diskless, comme la machine bureau.

Attention : le répertoire utilisateur sur FrIMBold est disjoint de votre répertoire personnel associé à votre compte IMB. Il n’est ni protégé ni sauvegardé. Un incident matériel sur le serveur peut compromettre vos données, nous vous invitons à n’y stocker aucune donnée sensible : utiliser un système de gestion de version (git) ou un autre mode de copie des données.

Comment se connecter sur cette plate-forme ?

Depuis le réseau de l’IMB, à partir de son poste de travail, il faut se connecter sur une machine frontale qui permet d’accéder aux machines fourmîiXXX et mirabelleXXX (XXX allant de 001 à 099) : ssh frimax

A la première connexion uniquement, le message suivant apparaît :

       The authenticity of host 'frimax (147.210.16.51)' can't be established.
       Are you sure you want to continue connecting (yes/no)?

Validez par yes puis authentifiez-vous avec votre identifiant et mot de passe IMB.

Après cette première connexion sur frimax

Votre répertoire utilisateur /home/imb/username est créé automatiquement sur FrIMBold, il est accessible sur toutes les machines fourmiXXX et mirabelleXXX.

Comme indiqué plus haut, à la différence des postes banalisés, ce répertoire utilisateur est disjoint de votre répertoire courant associé à votre compte IMB, même s’il porte le même nom. Il n’y a AUCUNE sauvegarde des données !

Si lors des prochaines connexions sur frimax, vous souhaitez vous identifier avec une passphrase (ou votre ssh-agent) et non pas avec votre mot de passe standard associé à votre compte IMB, il faudra déposer sur FrIMBold une clé ssh publique dans le fichier .ssh/authorized_keys à la suite de ce qu’il y avait déjà dans ce fichier sans rien y effacer !

Accès à un serveur de FrIMBold

Dès que vous vous connectez sur frimax, l’état des serveurs disponibles s’affiche, état que vous pouvez également retrouver en tapant la commande freenodes. Vous pouvez vous connecter à un serveur libre (uniquement un de ceux ayant le label FREE) directement via la commande ssh fourmiXXX ou ssh mirabelleXXX (remplacer XXX par le numéro du serveur). A partir de là, le serveur vous sera exclusivement réservé, tant que votre connexion ssh sera maintenue, et vous pourrez travailler en mode séquentiel ou parallèle en utilisant tous les cœurs et toute la mémoire de ce serveur.

Compilation et exécution

La compilation et l’exécution d’un code se font de façon interactive comme sur les postes banalisés de l’IMB :

  • il n’y a pas de compilateur INTEL, seuls les compilateurs GNU sont présents
  • les codes séquentiels pour Fortran, C et C++ sont compilés respectivement avec gfortran, gcc et g++
  • les codes parallèles pour Fortran, C et C++ sont compilés respectivement avec mpif90, mpicc et mpicxx

Lancement d’un job interactif parallèle sur plusieurs serveurs FrIMBold

La commande freenodes <chaîne> <nombre> permet de récupérer une liste d’au maximum <nombre> serveurs disponibles dont le nom commence par <chaîne>. Par exemple :

@frimax:~$ freenodes fourmi 4
fourmi055
fourmi056
fourmi057
fourmi059

Pour lancer un programme via mpirun, il suffit de fabriquer une liste de serveurs disponibles et la fournir à la commande mpirun.

Par exemple : chaque noeud fourmixxx possède 8 coeurs de calcul ; pour utiliser 16 coeurs des 32 coeurs disponibles sur les 4 noeuds fourmixxx ci-dessus, on lance une commande du type

freenodes fourmi 4 > myhosts && mpirun -hostfile myhosts  -n  16 ./monexecutable

Si on veut utiliser les 32 coeurs au total, on peut se contenter de

freenodes fourmi 4 > myhosts && mpirun -hostfile myhosts ./monexecutable

Accès à votre répertoire utilisateur FriIMBold depuis votre compte courant IMB

Toutes vos données de FrIMBold sont accessibles depuis votre compte courant IMB. Votre répertoire /home/imb/username de FrIMBold est vu depuis votre compte courant IMB sous le nom /frimbold/username. Ainsi, depuis votre compte courant IMB, vous pouvez accéder à vos données de FrIMBold via la commande cd /frimbold/username, et vous pouvez déposer des fichiers dans les deux sens via commande cp.

Espace de stockage

Il y a un Teraoctet d’espace de stockage des données pour l’ensemble des répertoires /home/imb/ de FrIMBold. Par conséquent, soyez vigilant pour ne pas stocker et conserver des données devenues inutiles.

Outils de visualisation

Comme sur vos postes de travail, des outils de visualisation graphique sont directement accessibles sur FrIMBold tels que :

  • visit
  • paraview
  • gnuplot

Mémo - Quick Ref

  • ssh frimax : se connecter (penser : frimbold-accès)
  • freenodes : voir les noeuds dispos et qui utilise quoi
  • freenodes fourmi 10 : récupérer (au max) 10 noeuds fourmi
  • freenodes fourmi 10 > hostfile && mpirun -hostfile myhosts ./monexecutable : lance un code MPI sur les 8 x 10 = 80 coeurs des 10 noeuds fourmi

FrIMBold depuis un portable : utiliser screen

La commande screen permet d’ouvrir un terminal virtuel qui résiste à la déconnexion et que l’on peut reprendre à tout moment. Le terminal continue à vivre normalement même si personne de regarde ce qui s’y passe. On peut ainsi ouvrir une session interactive sur un nœud, éteindre son portable et reprendre sa session intacte plusieurs jours plus tard, depuis n’importe où.

Note : comme avec screen une session est pratiquement éternelle, il faut veiller à ne pas garder inutilement la main sur un nœud, c’est pourquoi il est recommandé de s’organiser pour libérer automatiquement les nœuds utilisés quand le calcul est terminé (lancer screen sur freemax et non sur les noeuds, déconnexion du ssh à la fin du calcul)

  • exemple d’utilisation recommandée :
    • ouvrir une nouvelle session :
      • ssh frimax
      • screen # (lancer un screen sur frimax)
      • ssh NOEUD #( se connecter sur un nœud)
      • ... #( travailler en interactif)
      • macommande ... ; exit #(lancer une commande très longue, suivi d’une deuxième commande « exit » pour libérer le nœuds à la fin de l’execution)
    • à partir de là, on peut éteindre son portable, ou détacher explicitement le screen en cours avec la séquence « ctrl-a d » )
    • pour revenir ultérieurement sur le terminal vitrual conservé par screen :
      • ssh frimax
      • screen -r # (reprendre le terminal)
  • Note : la séquence de touche « ctrl-a » est interceptée par screen : elle sert de préfix pour piloter screen (man screen ou « ctrl-a h » sous screen pour en savoir plus). Pour taper un véritable « ctrl-a » sous screen, il faut taper la séquence « ctrl-a a »
  • Note : screen -ls  : permet de lister tous les screen en cours si vous en avez lancé plusieurs, et screen -r ref de vous raccrocher au terminal nommé ref