Super ordinateurs et Linux

publicité
Super ordinateurs et Linux:
des histoires du CLUMEQ à l'Université Laval
Sébastien Boisvert
2012-11-15
19:00
Où : Université Laval
Pavillon Palasis-Prince, local 3325 (Carte)
Introduction
●
●
●
Étudiant/chercheur au doctorat (physiologieendocrinologie), Faculté de médecine,
Université Laval (boursier IRSC 2010/09—
2013/08)
Spécialiste en calcul distribué, Calcul Québec
(contrat 8 h / semaine)
Outils de travail: vim, git, ssh, screen
Intérêts
●
Passage de messages (MPI, Minix, autres)
●
Noyau Linux (système RCU)
●
Bioinformatique
●
Régions répétées dans les génomes
●
Modèles hybrides de programmation
distribués
Logiciels libres
●
●
Membre de Debian Med (un Debian Pure
Blend)
Membre de Fedora Science and Technology
Special Interest Group
Le calcul à l'Université Laval
colosse
#314 top500 06/2012
7616 Intel Xeon X5560 cores
Mellanox Technologies MT26428
332 kW
5
Plan
●
Architecture matériel
●
Réseautique Infiniband
●
Système d'exploitation: Linux + GNU
●
Système distribué de fichiers: Lustre
●
Planificateur de tâches: Moab + Torque
●
Compilateurs: GNU gcc 4.7.2 (C, C++, ...)
●
Bibliothèque de passage de messages: Open-MPI
1.6.3
Architecture matériel
Ordinateur
●
Processeur
●
Mémoire
●
Stockage (et autres périphériques)
Abstractions
●
Processus abstrait le processeur
●
Mémoire virtuelle abstrait la mémoire
●
Le système virtuel de fichiers abstrait le
stockage
Réseautique Infiniband
Infiniband
●
●
●
●
Carte PCI express
0d:00.0 InfiniBand: Mellanox Technologies
MT26428 [ConnectX VPI PCIe 2.0 5GT/s - IB
QDR / 10GigE] (rev a0)
Latence point à point: < 1 microseconde
Latence point à point pour des applications: <
50 microsecondes
Système d'exploitation: Linux +
GNU
Système d'exploitation: Linux +
GNU
●
Linux: noyau monolithique
●
Modules chargés dynamiquement
●
2.6.18-308.16.1.el5
●
●
Modules Infiniband: mlx4_core, mlx4_ib,
mlx4_en, ib_core, ib_mad
Modules Lustre (client): lustre, lov, mdc, osc,
ptlrpc, obdclass, lnet, lvfs, libcfs,
.config
●
# CONFIG_PREEMPT is not set
●
# CONFIG_RCU_TORTURE_TEST is not set
●
CONFIG_NUMA=y
●
CONFIG_K8_NUMA=y
●
CONFIG_X86_64_ACPI_NUMA=y
●
# CONFIG_NUMA_EMU is not set
●
CONFIG_ACPI_NUMA=y
Logiciels GNU
●
Gcc
●
Binutils
●
Coreutils
●
Autoconf
●
Automake
Système distribué de fichiers:
Lustre
Rappel sur les fichiers
●
Un fichier est une suite d'octets
●
En pratique:
●
i-noeud (i-node)
●
Blocs
●
Souvent: les blocs sont en extension (blocs
contigüs sur le périphérique de blocs
Idées de Lustre
●
●
●
●
Les i-noeuds sont centralisés
Les blocs sont distribués sur plusieurs
serveurs
Exemple: un répertoire contient 10 fichiers .iso
de 700 Mo chacun
Le contenu (les blocs) de chaque fichier est
sur un serveur différent
Lustre
●
Protocole ouvert LNET (Lustre Network)
●
LNET dans Infiniband
●
LNET dans Myrinet
●
LNET dans TCP
Lustre est distribué
●
3 composantes
●
1/3: Client LOV avec interface POSIX
●
LOV= Logical Object Volume
●
2/3: Serveur de méta-données (i-noeuds) MDS
●
MDS= Meta Data Server
●
3/3: Serveur d'objets (blocs) OSS
●
OSS= Object Storage Server
Lustre: le client LOV
●
Appels POSIX:
●
fopen, fclose, fread, fclose
●
ftell, fseek
●
fgets,fputs
●
Le Virtual File System (VFS) de Linux
●
Module Lustre lvfs
Serveur MDS
●
Meta Data Server
●
Contient tous les i-noeuds
●
Opère des cibles Meta Data Targets
●
Système de fichiers ext3 modifié
●
Adresse distante des extensions dans les attributs ext3 du
MDS
●
Passe par là:
●
fopen, fclose, fstat
●
ftell, fseek
Serveur d'objets
●
Object Storage Server
●
Contient des blocs de fichiers
●
Opère des cibles Object Storage Target
●
Passe par là:
●
fread, fwrite, fgets, fputs
Planificateur de tâches: Moab +
Torque
Consommation sur demande
●
Consommation élastique
●
Allocation annuelle en coeur-années
●
Exemple:
●
250 coeur-année
●
●
Correspond à 6000 (24*250) coeur-heures par
jour
Correspond à 2190000 (365*24*250) coeurheures pour une année
Soumission de tâches
●
#!/bin/bash
●
#PBS -S /bin/bash
●
#PBS -N Test
Nom de la tâche
●
#PBS -A nne-790-ab
Numéro d'allocation Calcul Canada
●
#PBS -l walltime=48:00:00
Temps demandé
●
#PBS -l nodes=16:ppn=8
Nombre demandé d'ordinateurs
●
●
cd $PBS_O_WORKDIR
●
module load compilers/gcc/4.7.2
●
module load mpi/openmpi/1.6.3_gcc
Chargement des modules requis
●
●
mpiexec -n 128 Ray -o Test -k 31 \
Lancement de 128 processus Ray
●
-p SRS011098/SRR062051_1.fastq.gz SRS011098/SRR062051_2.fastq.gz \
Commandes Moab
●
msub
●
showq
●
checknode
●
checkjob
●
canceljob
Torque
●
Gestionnaire de ressources
●
Démarrage et arrêt des jobs
●
Gestion des ressources
Compilateurs: GNU gcc 4.7.2 (C,
C++, ...)
Compilateurs
●
●
●
●
Traduit un texte du langage A vers le langage B
g++ peut par exemple traduire du C++ 1998 en
code machine x86-64 avec la personnalité C++
de Linux
En général: transforme un code source en
exécutable
Pour colosse: g++ -march=native -pipe -Wall -O2
GNU gcc
●
Plusieurs versions disponibles
●
4.7.2
●
Support pour C++ 1998, C++ 2003, C++ 2011
●
Support pour C 1989, C 1990, C 1999, C 2011
●
Macros (#ifdef)
Bibliothèque de passage de
messages: Open-MPI 1.6.3
Standard MPI
●
Standard Message Passing Interface
●
Message Passing Interface Forum
Passage de messages
●
Idée: démarrer le même logiciel plein de fois
(plusieurs processus)
●
Processus qui s'envoient des messages
●
Opérations point-à-point (1 à 1)
●
Opérations collectives (tous à 1, 1 à tous, tous
à tous)
Open-MPI
●
Implémentation du standard MPI
●
Très modulaire
Commandes standards
●
Compilation d'un programme:
●
mpicxx Programme.cpp -o Programme
●
Exécution:
●
mpiexec -n 48 --hostfile Hosts.txt Programme
Remerciements
●
LinuQ pour l'invitation
●
CLUMEQ / Calcul Québec pour la visite
●
Toutes les personnes qui utilisent et/ou
contribuent aux logiciels libres
Téléchargement