Silicon Graphics, Inc. Présenté par : 02/03/2005 SGI Proprietary Développement sur ALTIX Thomas VARLET Yannick KUNEGEL

Slides:



Advertisements
Présentations similaires
LES NOMBRES PREMIERS ET COMPOSÉS
Advertisements

Produit Gammes Nomenclatures Modules Techniques Prix de Revient Prix de Vente Modules Techniques Client Marges Mise en route Temps Unitaire Prix (Ex:
GEF 435 Principes des systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
PC / Traitement numérique / Contrôle Environnement logiciel
Erratum C Surcharge For(int x=0; … 2.
Distance inter-locuteur
TECHNOLOGIE DES ORDINATEURS
1 Plus loin dans lutilisation de Windows Vista ©Yves Roger Cornil - 2 août
1 HPC et Windows 2003 CCS pour les développeurs Visual Studio 2005.
Synchronisation des processus père - fils
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Cours n° 8 Conception et Programmation à Objets
Présentation de l’Architecture Windows NT
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Journées franciliennes 2006 Moussa ELKIHEL (LAAS-CNRS;UPS Toulouse )
Performances 1 Évolution : Performance. Performances 2 Évolution : Mémoire.
13 – 16 Décembre 2005 Laurence Viry Introduction à MPI MPI_2.
17-21 Octobre 2005 Formation Continue - CNRS Laurence Viry Analyse et Optimisation de code Techniques doptimisation.
Bibliothèques Scientifiques
Outils de développements
17-21 Octobre 2005 Formation Continue - CNRS Laurence Viry Analyse et Optimisation de code Analyse de performance.
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
1 Efficient Data and Program Integration Using Binding Patterns Ioana Manolescu, Luc Bouganim, Francoise Fabret, Eric Simon INRIA.
simulateur de réseau de machines UML connectées par WiFi mode ad-hoc
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Architecture de machines La mémoire
Parallel Programming in C with MPI and OpenMP
Interface Homme Machine IHM Pro
Exercice Trame Ethernet
1 5 octobre 2011 / paw Présentation du 7 octobre 2011.
Trainer: ELHAJIZ Adil LPI certified
Formation Linux :exécutables et processus
ARCHITECTURE GLOBALE CAPTAGE Traitement DES des données GRANDEURS
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Gestion des Périphériques
Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE
Synchronisation et communication entre processus
Serveurs Partagés Oracle
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
Virtual Local Area Network
Titre : Implémentation des éléments finis sous Matlab
Développement sur ALTIX
Configuration de Windows Server 2008 Active Directory
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
LES NOMBRES PREMIERS ET COMPOSÉS
5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.
@SSR – Installation des applications eduscol.education.fr/securite - février 2007 © Ministère de l'Éducation nationale, de l'Enseignement supérieur et.
Développer en C avec Eclipse Introduction Création d'un projet Ajout de fichiers Compilation Exécution Utiliser le débogueur Département dinformatique.
Franck Cappello CNRS, LRI, Université Paris-sud
Programmation concurrente
CSI2520, Hiver 2007 Python Un langage de programmation par scripting et plus…
Tournoi de Flyball Bouin-Plumoison 2008 Tournoi de Flyball
Titre : Implémentation des éléments finis en Matlab
Développement sur ALTIX
Séminaire DEN/DSOE/Simulation sur le calcul hautes performances: le 7 novembre /17 Numerical Platon Contexte –outil daide aux développements de codes.
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
LA GESTION COLLABORATIVE DE PROJETS Grâce aux outils du Web /03/2011 Académie de Créteil - Nadine DUDRAGNE 1.
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
Programmation Système et Réseau (sous Linux)
Gérer la sécurité des mots de passe et les ressources
Module 8 : Surveillance des performances de SQL Server
KRIKORIAN Pierre HILMI Brahim
Les Chiffres Prêts?
SYSTÈME D’EXPLOITATION I
Programmation Système et Réseau
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
Transcription de la présentation:

Silicon Graphics, Inc. Présenté par : 02/03/2005 SGI Proprietary Développement sur ALTIX Thomas VARLET Yannick KUNEGEL

|| 23/02/2005Page 2SGI Proprietary PLAN : Introduction à l'ALTIX –Introduction à l'architecture des systèmes HPC –Présentation hardware de l'ALTIX –Présentation software de l'ALTIX Développement sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Ressources et documentation

|| 23/02/2005Page 3SGI Proprietary Altix : Présentation Software Système dexploitation : Linux 64 bits –basé sur une RHEL Advance Server + SGI Propack (xfs, Numatools, XSCSI, XVM, PCP, O(1), MPT, SCSL, maj kernel, … ) : Propack 2.4 = RHEL AS 2.1 (+kernel ) + glibc linux threads +... Propack 3.0 = RHEL AS 3.0 (+kernel ) + glibc Native Posix Threads +... Environnement de développement (cf plus loin) : –Compilateurs : Intel (C, C++, F90), mais aussi Gnu (C, C++, f77) –Deboggage : GDB, IDB, DDD –Librairies Scientifiques : SGI SCSL, Intel MKL –Parallélisme : MPI et SHMEM : SGI MPT OpenMP : compilateurs Intels –Analyse de performance : PCP, Pfmon, SGI histx,Intel Vtune,... Administration et Gestion des ressources : –Administration : outils Red Hat / Linux –Exploitation : Numatools –Monitoring systemes : SGI PCP + outils Linux –Traitement par lots : PBS Pro, LSF,... SGI

|| 23/02/2005Page 4SGI Proprietary SGI ALTIX : point de vue utilisateur Sur un système : –un seul OS : utilisation optimale de ces ressources. –les ressources sont partagées : mémoires, disques, réseau La mémoire : –physiquement : distribuée, –logiquement : un seul espace d'adressage Altix 350 : jusqu a 192Go adressable par un seul processus Altix 3000 : jusqu a 2To adressable par un seul processus Entre plusieurs systèmes : –partage des systèmes de fichier XFS : CXFS (si cluster de plusieurs machines), NFS Programmation parallèle : –type mémoire distribuée (MPI, SHMEM) –type mémoire partagée (threads, OpenMP) –type mixte (MPI+OpenMP) SGI

|| 23/02/2005Page 5SGI Proprietary PLAN : Introduction à l'ALTIX Développement sur ALTIX : –Les compilateurs –Debbuging –Bibliothèques optimisés sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Ressources et documentation

|| 23/02/2005Page 6SGI Proprietary Modules Outils de gestion dynamique de lenvironnement des utilisateurs : –Sur Origin (IRIX/MIPS) et sur Altix (Linux/Itanium) –Positionne/ supprime les variables d environnement nécessaire dun « logiciel » permet de gérer sur un même système plusieurs versions d un même outils –p.ex. : compilateurs Intel / Gnu bibliothèques SCSL, MPT, MKL … –initialise les variables d environnement : PATH, MANPATH LD_LIBRARY_PATH, LIBRARY_PATH … –pour tous les utilisateurs d un ou plusieurs systèmes, –un utilisateur peut créer ses modules,

|| 23/02/2005Page 7SGI Proprietary Utilisation de module Initialisation de lenvironnement (dans le.cshrc par exemple) : % source /opt/modules/default/init/ [le_shell] (où [le_shell] = csh, sh, bash, …. ) % module load modules (man pages de modules) Commandes utiles : % module avail : affiche la liste des modules disponibles % module list : affiche la liste des modules chargés % module load module_name : charge un module (positionne les variables denv.) % module unload module_name : décharge un module (« dépositionne » les variables denv.) % module avail intel-compilers scsl-1.4.1relmkl intel-fc-8/ mpt-1.9-1modules intel-cc-8/ mpt-1.10totalview % module load mpt-1.10; echo $LD_LIBRARY_PATH /sw/com/scsl/1.4.1rel/lib:/sw/sdev/mpt-ia64/1.10/lib % module unload mpt-1.10; echo $LD_LIBRARY_PATH /sw/com/scsl/1.4.1rel/lib

|| 23/02/2005Page 8SGI Proprietary Compilateur GNU : gcc, g77, g++ Compilateur Intel ® sur Linux pour Itanium2 –Positionnement de lenvironnement : Utilisation de module : module load [nom_module] Source des fichiers dinitialisation : [install_comp]/bin/[nom_comp]vars.{sh|csh} –Version : 7.1 efc: compilateur Fortran95 ecc: compilateur C/C++ –Version : 8.0 ifort : compilateur Fortran95 icc : compilateur C/C++ –Version : 8.1 ifort : compilateur Fortran95 icc : compilateur C icpc : compilateur C++ Les compilateurs

|| 23/02/2005Page 9SGI Proprietary Compilateur Intel ® : les bases Vérification de la validité numérique –désactiver les optimisations spécifiques : « -O0 » : pas d optimisation « -g » : pour debuging, « -mp » : limite les optimisations sur les flottants et maintient la précision déclarée, « -IPF_fltacc » : désactive les optimisations qui affectent la précision des opérations flottantes, « -r » « -i » : taille des réels, entiers, booléen –« -r{4|8} » et « -i{2|4|8} » « -CB -traceback » : notifie au runtime les dépassements de tableaux/chaînes de caractères avec des infos (fichier srce + num. ligne) Lecture/écriture de fichiers non formatés big/little-endian –Avant lexécution : setenv F_UFMTENDIAN big:[#unit] little:[#unit] –A la compilation (8.x): -convert [big_endian|little_endian]

|| 23/02/2005Page 10SGI Proprietary Compilateur Intel ® : Pousser le compilateur Options : -O0 : pas doptimisation -O1 : optimisations qui minimisent la taille -O2 : default, inlining, un peu de loop pipelining (SWP) -O3 : plus SWP + prefetching + loop reorg -ip[o] : interprocedural optimisation (un/plusieurs fichier) -fast : -O3 -ipo -static (version 8.0) -prof_gen puis -prof_use : Profile guided optimisation compile avec « -prof_gen » run (création de fichiers de profil) compile avec « -prof_use » -fno-alias/-fno-fnalias : pas d aliasing de pointeurs -ftz : forcer les sous-dépassements à zéro pour éviter les trappes du système Quand ? : bits exposant=0, bits mantisse0 (valeur en précision simple < 1.1 e-38) Pourquoi ? : Traité par du software (100s de cycles)

|| 23/02/2005Page 11SGI Proprietary Compilateur Intel ® Autres options utiles : – Crée un rapport d optimisation : -opt_report – prise en compte des directives OpenMP : -openmp – Parallélisations automatique : -parallel – Mode verbose : -v – Pour le Fortran : -free / -fixed : sources au format libre / fixé -extend_source [72|80|132] : précision du format -safe_cray_ptr : pas d aliasing pour les pointeurs Cray -auto : toutes les variables locales sont « automatic » (-auto_scalar est le défaut); -stack_temps (v7.x) : alloue les tableaux temporaire dans la « stack » –Pour le Fortran (V8.0) : -fpe0 : mise à zéro automatique des underflows et crée un core à l'apparition de tout autre Floating Point Exception

|| 23/02/2005Page 12SGI Proprietary PLAN : Introduction à l'ALTIX Développement sur ALTIX : –Les compilateurs –Debbuging –Bibliothèques optimisés sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Ressources et documentation

|| 23/02/2005Page 13SGI Proprietary Debugging –En standard : « gdb » debugger GNU pour C, C++ et Fortran95 –C et C++ : « -g » –Fortran : « -g » et « -O0 » – « idb » debugger Intel –C, C++, f77, F90 –ni multi-processeurs, ni multi-threads « ddd » DataDisplayDebuger ( ), –GUI pour debugger a base de ligne de commande »supporte gdb et idb –Fonctionne aussi : « TotalView » « DDT »

|| 23/02/2005Page 14SGI Proprietary Debugging de code (trucs et astuces) Compilation (8.x) avec « -traceback », arbre dappel quand erreur sévère Exploitation du fichier « core » : % idb [exécutable] [core_file], puis « where » (arbre dappel) Job MPI : –Vérifications des arguments des appels MPI ( !! pour debugger seulement !! ) : % setenv MPI_CHECK_ARGS –Si le job reçoit un signal « core-dump » : Affichage dun arbre dappel Variable denvironnement (cf man mpi): –Réglage du comportement quand signal core-dump : % setenv MPI_COREDUMP [NONE,FIRST,ALL,INHIBIT] –Debugger % setenv MPI_COREDUMP_DEBUGGER – Utilisation de idb / gdb : Debugger séquentiels, Variable denvironnement (cf man mpi): % setenv MPI_SLAVE_DEBUG_ATTACH [rang_MPI] affichage de la commande pour attacher le debugger avec le processus MPI – Utilisation de Totalview / DDT : % totalview mpirun -a -np 4 a.out

|| 23/02/2005Page 15SGI Proprietary Problèmes de corruptions de la heap Programmes qui utilisent les fonctions malloc/ free –Variables denvironnement : MALLOC_CHECK_ MALLOC_CHECK_=1 : affichage de message de diag. MALLOC_CHECK_=2 : abort Bibliothèque : Electric Fence –compilation : « -lefence », –livré en standard avec RedHat accès en dehors des zones allouées par malloc accès à une zone mémoire retournée au système par un appel à free(). détection des problèmes d'alignement. –ATTENTION : ne marche pas avec MPT !

|| 23/02/2005Page 16SGI Proprietary PLAN : Introduction à l'ALTIX Développement sur ALTIX : –Les compilateurs –Debbuging –Bibliothèques optimisés sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Ressources et documentation

|| 23/02/2005Page 17SGI Proprietary Intel® Math Kernel Library (MKL V7.0) : –Utilisation : lib. static « -lmkl_ipf » et lib. dyn. « -lmkl » –BLAS : BLAS1, BLAS2, BLAS3 et opération basique sur des vecteurs creux, –LAPACK, ScaLAPACK, ( -lmkl[_ipf] -lmkl_lapack –lguide -lpthreads ) –FFTs (Fast Fourier Transforms ), –DFTs ( Discrete Fourier Transforms ), –VSL ( Vector Statistical Library ) : ensemble de générateurs de nombre aléatoires –Vector Math Library (VML) : fonctions mathématiques sur des vecteurs : –puissance, trigonométriques, exponentiel, etc... –PARDISO Direct Sparse Solver : ( -lmkl[_ipf] -lmkl_solver –lguide -lpthreads ) Solveur pour des systèmes linéaire creux, symétrique/asymétrique (thread-safe), Basé sur le solveur PARDISO (Parallel Direct Solver) de l Université de Basel, –En partie parallélisé en OpenMP (BLAS3, DFTs, FFTs, solveurs, qqs LAPACKS ) Librairies scientifiques

|| 23/02/2005Page 18SGI Proprietary SGI Scientifique Computing Software Library (SCSL V1.5) –utilisation : édition de lien : « -lscs », « -lscs_i8 » et « -lsdsm » (SCALAPACK) –Traitement du signal : FFT opérations de filtrage linéaire ( convolution, correlation) –Fonctions BLAS : BLAS1, BLAS2, BLAS3 –LAPACK, ScaLAPACK –Solveur pour des matrices creuses : Solveur direct pour résolution de systèmes linéaires creux –symétrique et non symétrique, –double precision et complex. plusieurs types possible de renumérotation in-core et out-of-core –parallélisé en OpenMP « -lscs_mp », « -lscs_i8_mp » et « -lsdsm_mp » (SCALAPACK) Librairies scientifiques

|| 23/02/2005Page 19SGI Proprietary Message Passing Toolkit (MPT 1.10) Message Passing Interface : –SGI MPI est une versions optimisé pour Altix de MPI, –Conformité complète au standard MPI 1.2 –Conformité partielle au standard MPI 2 Parallel I/O One sided put/get model messaging MPI_Comm_spawn/MPI_Comm_spawn_multiple MPI_Alloc_mem/MPI_Free_mem Transfer handles Replacements for deprecated MPI-1 functions Generalized Requests –utilisation : edition de lien : « -lmpi » (pr C++ : « -lmpi++ » ) – Latence : 1.5 secondes – Débit : 1.5 Go/s SHMEM : –Logically Shared, Distributed Memory (SHMEM) SHMEM data passing –« one-sided communication », un processus écrit/lit des données dans la mémoire d un autre processeur sans que ce dernier intervienne directement,

|| 23/02/2005Page 20SGI Proprietary PLAN : Introduction à l'ALTIX Développement sur ALTIX Utilisation des ALTIX –Lancement des jobs –Outils NUMA –Tunning Comprendre les performances sur ALTIX Ressources et documentation

|| 23/02/2005Page 21SGI Proprietary Configuration du système : hinv –Utilisation : Usage: /usr/bin/hinv [-v] [-c class ] [-b [BrickID] ] Class are: serial processor otherscsi scsi memory io9 otherpci ethernet –Par exemple : profit.engr.sgi.com {576}-> hinv Sorry only root user can get scsi information from /dev/xscsi/pci /target0/lun0/ds 0 P-Brick 4 R-Brick 8 C-Brick MHz Itanium 2 Rev. 7 Processor MHz Itanium 2 Rev. 6 Processor Main memory size: Gb IO9 Controller Card (Silicon Graphics, Inc.) (rev 69). on pci QLogic Dual Channel Ultra3 SCSI (Rev 6) on pci Disk Drive: unit 1 on SCSI controller pci Disk Drive: unit 2 on SCSI controller pci BROADCOM Corporation NetXtreme BCM5701 Gigabit Ethernet (rev 21). on pci SCSI storage controller: QLogic Corp. QLA2200 (rev 5). pci Disk Drive: unit 34 lun 0 on SCSI controller pci Disk Drive: unit 35 lun 0 on SCSI controller pci ….

|| 23/02/2005Page 22SGI Proprietary Configuration du système : /proc « uname -a » : Linux bigbang sgi240rp _10094 #1 SMP Fri Aug 6 16:01:54 PDT 2004 ia64 unknown « /proc/cpuinfo » : info. sur les processeurs, « /proc/meminfo » : info. général sur la mémoire du système, « /proc/discontig » : utilisation de la mémoire en page par nœuds, profit : more /proc/discontig node total free « /proc/pal/cpu0/cache_info » : structure cache L1, L2, et L3, « /proc/version » : information sur le kernel % more /proc/version Linux version sgi240rp _10094 (gcc version (Red Hat Linux )) #1 SMP Fri Aug 6 16:01:54 PDT 2004 Version kernelVersion ProPack + patch

|| 23/02/2005Page 23SGI Proprietary Configuration du système : /proc « /proc/mounts » : information sur les systèmes de fichiers montés « /proc/modules » : module du kernel « topology » : profit.engr.sgi.com {582}-> topology Machine profit.engr.sgi.com has: 32 cpu's 16 memory nodes 4 routers The cpus are: cpu 0 is /dev/hw/module/004c05/slab/0/node/cpubus/0/a cpu 1 is /dev/hw/module/004c05/slab/0/node/cpubus/0/c... The nodes are: node 0 is /dev/hw/module/004c05/slab/0/node... The routers are: /dev/hw/module/004r14/slab/0/router The topology is defined by: /dev/hw/module/004c05/slab/0/node/link/1 is /dev/hw/module/004c05/slab/1/node... /dev/hw/module/004c05/slab/0/node/xtalk/0/link -> /dev/hw/module/004c05/slab/0/IXbrick... /dev/hw/module/004r14/slab/0/router/1 -> /dev/hw/module/004r24/slab/0/router profit.engr.sgi.com {628}-> more /proc/modules vtune_drv sgi212r2smp (unused) arsess nls_iso (autoclean) nls_cp (autoclean) qlfc_mod xpnet (unused) xpmem numatools xpc (unused) xp [xpnet xpmem xpc] xvm-standalone

|| 23/02/2005Page 24SGI Proprietary Lancement des jobs Un seul OS qui gére jusqu a 256 cpu et 2 To de mémoire : –simplicité d utilisation ! –utilisations d outils Numa pour optimiser le temps d exécution en charge Séquentiels :./a _seq. exe –temps du job : « time » MPI : mpirun -np [NB_MPI]./ a_mpi.exe –statistiques MPI : « setenv MPI_VERBOSE on » OpenMP : –nombre de threads OpenMP : setenv OMP_NUM_THREADS [NB_OMP]./ a_omp.exe

|| 23/02/2005Page 25SGI Proprietary PLAN : Introduction à l'ALTIX Développement sur ALTIX Utilisation des ALTIX –Lancement des jobs –Outils NUMA –Tunning Comprendre les performances sur ALTIX Ressources et documentation

|| 23/02/2005Page 26SGI Proprietary Numatools : cpuset Système de réservation de ressource : –CPU (mémoire) –Mécanisme dynamique –Création par admin. (ou système de batch), pour les jobs utilisateurs, Toujours un seule OS et une seule machine –Accès aux autres ressources de la machine Propriété : –Notion détanchéité ( GORE-TEX ) –Allocation préférentielle des ressources locales (mémoire) Usage : –Partitionnement soft. du système – « garantie » des ressources cpu (mémoire) – Limite les perturbations entre les jobs tournant sur le système

|| 23/02/2005Page 27SGI Proprietary Numatools : dlook dlook [-a] [-c] [-h] [-l] [-o outfile] [-s secs] command [command-args] dlook [-a] [-c] [-h] [-l] [-o outfile] [-s secs] pid Pour un processus: –informations sur la répartition mémoire Pour chaque page de lespace dadressage : –Lobjet au quel appartient la page : »fichier, SYSV, mémoire partagé,drivers, … –Le type de page : »Random acess memory (RAM), FETCHOP, IOSPACE –Si la page est de type RAM : »Attribut (SHARED, DIRTY, …), »Le nœud où est localisé la page, »Adresse physique de la page –Utilisation du CPU. Temps elapsed, temps system du processus.

|| 23/02/2005Page 28SGI Proprietary Numatools : dlook dlook 4702 Peek: sleep Pid: 4702 Thu Aug 22 10:45: Cputime by cpu (in seconds): user system TOTAL cpu Process memory map: r-xp : /lib/ld so [ c000]11 pages on node 1 MEMORY|SHARED c000 rw-p :00 0 [ c000]3 pages on node 0 MEMORY|DIRTY r-xp : /lib/libc so [ ] 15 pages on node 1 MEMORY|SHARED [ ] 5 pages on node 2 MEMORY|SHARED mpirun -np 2 dlook -o dlook.out ft.C.2 Contents of dlook.out: _______________________________________________________________________________ Exit: ft.C.2 Pid: 2306 Fri Aug 30 14:33: Process memory map: c000 rw-p :00 0 [ ] 1 page on node 21 MEMORY|DIRTY [ c000] 2 pages on node 12 MEMORY|DIRTY|SHARED rw-p :00 0 [ ] 3 pages on node 12 MEMORY|DIRTY|SHARED _______________________________________________________________________________ Exit: ft.C.2 Pid: 2310 Fri Aug 30 14:33: Process memory map: c000 rw-p :00 0 [ ] 1 page on node 25 MEMORY|DIRTY [ c000] 2 pages on node 12 MEMORY|DIRTY|SHARED rw-p :00 0 [ ] 3 pages on node 12 MEMORY|DIRTY|SHARED [ ] 1 page on node 25 MEMORY|DIRTY

|| 23/02/2005Page 29SGI Proprietary Numatools : dplace Permet de contrôler les placements des processus sur les processeurs dplace [-c cpu_numbers] liste des CPU (« -c0 », « -c2-4 » ou « -c1,4-8,3 » ) [-s skip_count] nombre de processus a passer avant le placement [-n process_name] spécification du nom des processus a placer [-x skip_mask] (bitmask) pour ne pas placer certains processus (PP2.4) N=6 : 1er thread sur le 1er CPU, pas pour 2nd et 3ème, etc… [-p placement_file] pas encore implémenté, command [command-args] commande – le scheduling et le placements mémoire sont déterminés en fonction des arguments de « dplace » : Si possible : allocation de la mémoire sur le nœuds (physique) Le processus est fixé sur le nœud désigné, –Le placement explicite sur des CPU nest pas obligatoire

|| 23/02/2005Page 30SGI Proprietary PLAN : Introduction à l'ALTIX Développement sur ALTIX Utilisation des ALTIX –Lancement des jobs –Outils NUMA –Exploitation –Tunning Comprendre les performances sur ALTIX Ressources et documentation

|| 23/02/2005Page 31SGI Proprietary PLAN : Introduction à l'ALTIX Développement sur ALTIX Utilisation des ALTIX –Lancement des jobs (séquentiel, MPI, OpenMP) –Outils NUMA (dlook, dplace, cpuset,...) –Exploitation –Tunning (séquentiel, parallèle) Comprendre les performances sur ALTIX Ressources et documentation

|| 23/02/2005Page 32SGI Proprietary Les outils de profiling Où passe t-on du temps ??? – « time » : temps user, elapsed, system – « gprof »: code source compile avec -p, execution de lapplication, compte-rendu d'exécution pour les programmes C ou Fortran –« ja » –« histx » Profil de code + exploitation des compteurs de lItanium –Vtune : Outil Intel de monitoring de code,

|| 23/02/2005Page 33SGI Proprietary Tunning MPI –Statistiques MPI : Nombre dappels, quantité dinformations échangées, … –« setenv MPI_STATS 1» –« mpirun -stats -prefix %g: -np 8 a.out » 3: *** Dumping MPI internal resource statistics... 3: 3: 0 retries allocating mpi PER_PROC headers for collective calls 3: 0 retries allocating mpi PER_HOST headers for collective calls 3: 0 retries allocating mpi PER_PROC headers for point-to-point calls 3: 0 retries allocating mpi PER_HOST headers for point-to-point calls 3: 0 retries allocating mpi PER_PROC buffers for collective calls 3: 0 retries allocating mpi PER_HOST buffers for collective calls 3: 0 retries allocating mpi PER_PROC buffers for point-to-point calls 3: 0 retries allocating mpi PER_HOST buffers for point-to-point calls 3: 0 send requests using shared memory for collective calls 3: 6357 send requests using shared memory for point-to-point calls 3: 0 data buffers sent via shared memory for collective calls 3: 2304 data buffers sent via shared memory for point-to-point calls 3: 0 bytes sent using single copy for collective calls 3: 0 bytes sent using single copy for point-to-point calls 3: 0 message headers sent via shared memory for collective calls 3: 6357 message headers sent via shared memory for point-to-point calls 3: 0 bytes sent via shared memory for collective calls 3: bytes sent via shared memory for point-to-point calls

|| 23/02/2005Page 34SGI Proprietary Tunning MPI Placements NUMA : –« setenv MPI_DSM_CPU_LIST …. » »Exemple 1 : setenv MPI_DSM_CPULIST 4,5 mpirun -np 2 a.out »Exemple 2 : setenv MPI_DSM_CPULIST 32-63:0-31 mpirun -a arrayname hosta, hostb -np 32 a.out –« setenv MPI_DSM_MUSTRUN » (MPT1.9 = MPI_DSM_DISTRIBUTE ) »Distribution des processus sur le système ou dans le CPUSET –dplace, cpuset,... Single copy : –pour des applications sensibles à la bande passante, utilisation du module xpmem pour mapper de la mémoire entre processus, –« setenv MPI_BUFFER_MAX 2000 »

|| 23/02/2005Page 35SGI Proprietary Tunning MPI Eliminer les « retries » : –Les communications point à point sont bufferisées –Si les stat. MPI donnent un grand nombre de « retries » : »Attente dentrée de buffers, –MPI_BUFS_PER_PROC, –MPI_BUFS_PER_HOSTS, –MPI_MSGS_PER_HOSTS. SHMEM : « -lsma » –inter-partition (depuis MPT 1.8) –éliminer loverhead du aux appels MPI –Bande-passante, Inter-Partitions : –Utilisation du driver XPMEM

|| 23/02/2005Page 36SGI Proprietary Tunning OpenMP La Bibliothèque run-time library est libguide, développé par KAI –construit sur linuxthreads, linké automatiquement par le compilateur Autres flags: –Affiche des diagnostics avec -openmp_report[0|1|2] 0 : pas de diagnostics 1 : boucles, regions, et sections parallélisé avec sucés (default) 2 : affiche d autres informations sur les autres constructions OpenMP –-openmp_profile Edition de lien avec des « runtimes » qui supporte les composantes OpenMP de VTune Variables d environnement : –KMP_STACKSIZE : stack privée des threads ( le défaut est de 4 Mo sur Itanium) –KMP_LIBRARY : mode d exécution « runtime » serial – exécution mono-processeur. throughput – (défaut) pour environnement multi-utilisateur, libère le processeurs pour d autres processus quand la threads OpenMP est en attente (équivalent sur IRIX : _DSM_WAIT=YIELD ) turnaround – les threads ne libère pas le processeurs quand elles sont en attente de travail (équivalent sur IRIX : _DSM_WAIT=SPIN )

|| 23/02/2005Page 37SGI Proprietary PLAN : Introduction à l'ALTIX Développement sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX –Observer le comportement de la machine –Observer le comportement du code Ressources et documentation

|| 23/02/2005Page 38SGI Proprietary Performance Co-Pilot Architecture client/serveur pour un contrôle centralisé de calcul distribué, –Possibilité de surveiller plusieurs hôtes. –Données temps réelles et historiques. –Monitoring automatisé des performances. –Composantes : Collecteur : –Collecte des données de performance, Moniteur : –archivage + visualisation des données, –Données récupérées (+700 métriques ) Instrumentation Hardware, Noyau de lOS Librairies Service layers, daemons, etc. Applications – % pmchart -h [host] visualisation de compteur du système – % pmgcluster [host] / pmgsys visualisation rapide de la charge du système

|| 23/02/2005Page 39SGI Proprietary PLAN : Introduction à l'ALTIX Développement sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX –Observer le comportement de la machine –Observer le comportement du code Ressources et documentation

|| 23/02/2005Page 40SGI Proprietary lipfpm (Linux IPF Performance Monitor) lipfpm permet d'obtenir les valeurs des compteurs de lItanium pour l'exécution dune application utilisation du cache L2 et le Mflop : lipfpm -e FP_OPS_RETIRED -e L2_MISSES -e L2_REFERENCES $COMMANDE lipfpm summary ====== ======= Retired FP Operations L2 Misses Requests Made To L CPU Cycles Percentage of L2 misses Average MFLOP/s Average MB/s requested by L utilisation du cache L3 et des debits des accès en mémoire lipfpm -e FP_OPS_RETIRED -e L3_READS.DATA_READ.ALL \ -e L3_READS.DATA_READ.MISS $COMMANDE lipfpm summary ====== ======= Retired FP Operations L3 Reads -- L3 Load References L3 Reads -- L3 Load Misses CPU Cycles Average MFLOP/s Average data read MB/s requested by L

|| 23/02/2005Page 41SGI Proprietary lipfpm (Linux IPF Performance Monitor) Nombre dinstruction moyen par cycle et le Mflop : lipfpm -f -e FP_OPS_RETIRED -e L2_MISSES -e IA64_INST_RETIRED.THIS./a.out lipfpm summary ====== ======= Retired FP Operations L2 Misses Retired IA-64 Instructions -- Retired IA-64 Instructions CPU Cycles Average number of Itanium instructions per cycle Average MFLOP/s Average MB/s requested by L Avec des applications OpenMP : %setenv OMP_NUM_THREADS 4 (le défault est 16) %lipfpm -e [compteur] -o toto./a.out –Création de 4+1 fichiers (toto.a.out.pid1, toto.a.out.pid2, etc). Avec des applications MPI : % mpirun -np 4 /opt/sgi/histx+/1.1/bin/lipfpm –f -e [evenements] … -o fp./a.out –Création de 4+1 fichiers fp.a.out.pid.

|| 23/02/2005Page 42SGI Proprietary histx : HISTogram eXecution –histx (SGI) permet de comprendre : où est passé le temps, où sont générés les événements de performances. –Compiler le code avec -g –Mode « instruction pointer » : : : [ : ] –Par ligne : « -l » : : [ : ] (library) –Mode « callstack » : : [ : ]... : [ : ] –Rapport séparé pour chaque pthread, thread OpenMP, ou processus MPI.

|| 23/02/2005Page 43SGI Proprietary histx : HowTo Mode : IP Sampling –format : : : [ : ] histx -f -o [nom_fichier_histx] [COMMANDE] Mode : IP Sampling + info par ligne –format : : [ : ] (library) histx -l -f -o [nom_fichier_histx] [COMMANDE] Exploitation des fichiers iprep [nom_fichier_histx] > [nom_fichier_formaté] En c++ : iprep [nom_fichier_histx] | c++filt > [nom_fichier_formaté] Mode : Callstack –format : : [ : ] : [ : ] … : [ : ] histx -o [nom_fichier_histx] -s callstack10 [COMMANDE] Exploitation des fichiers csrep [nom_fichier_histx] > [nom_fichier_formaté]

|| 23/02/2005Page 44SGI Proprietary Histx : Exemple % histx -f -l -o out_histx./a.out % iprep prof.out CountSelf%Cum.%Name a.out:prod_mat_trans_ [libmat-art.f:659] a.out:prod_mat_ [libmat-art.f:630] libmpi.so:MPI_SGI_shared_progress a.out:comp_mat_ligne_ [libmat-art.f:350] libmpi.so:MPI_SGI_request_test

|| 23/02/2005Page 45SGI Proprietary Profiling de code MPI : perfcatcher Profile des appels aux fonctions MPI : –Code qui « scale » mal –Grand nombre de fonctions MPI dans un histx Utilisation : –Refaire lédition de lien avec la librairie de profil –Création dun fichier « MPI_PROFILING_STATS » Summary counts and timings Total job time e+01 sec Total MPI processes 2 Wtime resolution is e-08 sec activity on process rank 0 comm_rank calls 2 time e-06 recv calls 12 time e+00 avg datacnt \ waits 11 wait time e-03 barrier calls 10 time e-03 … recv profile cnt/sec for all remote ranks local ANY_SOURCE 0 1 rank 0 0/0.0e+00 0/0.0e+00 12/4.5e /0.0e+00 11/4.5e+00 0/0.0e+00

|| 23/02/2005Page 46SGI Proprietary PLAN : Introduction à l'ALTIX Développement sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Ressources et documentation

|| 23/02/2005Page 47SGI Proprietary Pour en savoir plus … man pages : efc, ecc,... mpi, scsl,... pfmon, histx,... cpuset, dplace,... Documents PDF : –Documentation sur les compilateurs dans le répertoire dinstallation. Site SGI, Techpubs : – « Linux® Application Tuning Guide » Document Numéro : – « Message Passing Toolkit (MPT) User's Guide » Document Numéro : Site Intel : –« Scientific Computing on Itanium®-based Systems » Intel Press – « Introduction to Microarchitectural Optimization for Itanium® 2 Processors » Document Numéro : Web de clients SGI : –CALMIP : –NASA NAS : –Texas A&M Supercomputing Facility : Equipes SGI …