La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Silicon Graphics, Inc. Présenté par : 10/06/2014 SGI Proprietary Développement sur ALTIX Thomas VARLET Charles ROGE Philippe.

Présentations similaires


Présentation au sujet: "Silicon Graphics, Inc. Présenté par : 10/06/2014 SGI Proprietary Développement sur ALTIX Thomas VARLET Charles ROGE Philippe."— Transcription de la présentation:

1 Silicon Graphics, Inc. Présenté par : 10/06/2014 SGI Proprietary Développement sur ALTIX Thomas VARLET Charles ROGE Philippe THIERRY

2 || 6/10/2014Page 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

3 || 6/10/2014Page 3SGI Proprietary Panorama MIMD Multiprocessors Single Address space Shared Memory Multicomputers Multiple Address spaces UMA Central Memory NUMA distributed memory NORMA no-remote memory access PVP (Cray T90) SMP (Intel SHV, SUN E10000, DEC 8400 SGI Power Challenge, IBM R60, etc.) COMA (KSR-1, DDM) CC-NUMA (SGI 3000, SGI 2000, Altix HP Exemplar,Sequent NUMA-Q, Data General) NCC-NUMA (Cray T3E) Cluster (IBM SP2, DEC TruCluster, Microsoft Wolfpack, etc.) loosely coupled MPP (Intel TFLOPS, Cray T3E) tightly coupled MIMDMultiple Instruction s Multiple Data UMAUniform Memory Access NUMANon-Uniform Memory Access NORMANo-Remote Memory Access MPPMassively Parallel Processor PVPParallel Vector Processor SMPSymmetric Multi-Processor COMACache Only Memory Architecture CC-NUMACache-Coherent NUMA NCC-NUMANon-Cache Coherent NUMA

4 || 6/10/2014Page 4SGI Proprietary Architecture UMA memory Cache Register File Functional Unit (mult, add) Cache Coherency Unit Processor Cache Register File Functional Unit (mult, add) Cache Coherency Unit Processor –le protocole de cohérence de cache intervient lorsque plusieurs processeurs modifient des éléments de la même ligne de cache. –mémoire centrale et les E/S : partagées par tous les processeurs –modèle de programmation : extension du modèle de programmation monoprocesseur –bus dinterconnexion entre la mémoire et les processeurs –faible nombre de processeurs Bus dintercommunication

5 || 6/10/2014Page 5SGI Proprietary Problèmes des architectures UMA Accès à la mémoire: –des niveaux de caches efficaces permettent déconomiser des références à la mémoire goulot détranglement –pour les autres (non cachés), les accès concourants des processeurs à la mémoire partagée créent un goulot détranglement –Cette difficulté peut être levée avec les architectures à mémoire distribuée memory Cache Register File Functional Unit (mult, add) Cache Coherency Unit Processor Cache Register File Functional Unit (mult, add) Cache Coherency Unit Processor

6 || 6/10/2014Page 6SGI Proprietary Mémoire distribuée –Technologie de masse –la bande passante globale mémoire-processeur est proportionnelle au nombre de processeurs –en général adressage local adressage global (SGI) –modèles dexécution : SIMD, MIMD, SPMD –2 paradigmes de communications : mémoire partagé : OpenMP (si adressage global) mémoire distribué : MPI P M E/ S P M P M P M P M P M P M P M Réseau dinterconnexion Les noeuds individuels peuvent contenir plusieurs processeurs connectés entre eux par la même technologie que le réseau.

7 || 6/10/2014Page 7SGI Proprietary Architecture multi-ordinateurs –Les accès aux mémoires locales et les I/Os sont indépendantes –les transferts de données sur le réseau dinterconnexion sont lents –La programmation parallèle est basée sur le passage de messages. Les processeurs exécutent des instructions denvoi et de réception de messages pour communiquer entre eux. Main memory Cache Register File Functional Unit (mult, add) Processor Main memory Cache Register File Functional Unit (mult, add) Processor

8 || 6/10/2014Page 8SGI Proprietary Architecture à mémoire partagée distribuée –Pour chaque processeur,les accès à la mémoire locale sont indépendants –La mémoire totale est globalement adressable (point de vue du programmeur ) –Non-uniform memory access (NUMA): Les accès locaux sont plus rapides que les accès lointains (peu sensible sur SGI3000/SGIAltix) Les modèles de programmation en mémoire partagée sont utilisables la distribution des données est conseillée pour améliorer les performances (prise en compte de l architecture à mémoire distribuée) Main memory Cache Register File Functional Unit (mult, add) Processor Main memory Register File Functional Unit (mult, add) Processor Cache Coherency Unit interconnect Cache Coherency Unit

9 || 6/10/2014Page 9SGI 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

10 || 6/10/2014Page 10SGI Proprietary Le processeurs Itanium2 ® d INTEL ® Architecture Itanium2 : –Troisième génération Itanium (Madison) –EPIC: Explicit Parallel Instruction Computing –Fréquence : 1.5 Ghz –Puissance crête : 6 Gflops/s 1500 MHz * 2 madd/cycle 6 GFLOPS Intel Itanium2 : –L1I : 16ko ; 64o/line ; 4 way –L1D : write through; 16ko ; 1/- cycle ; 64o/line ; 4 way ; (2ld&2st)/cycle –L2U : write back; 256ko ; 5/6cycle; 128o/line; 8 way; (4ldf) | (2ldf[p]&2stf) –L3U : write back; 6Mo; 12/13cycle ; 128o/line ; 24 way ; 48Go/s –Memory Front Side Bus (FSB) : 128o/line ; 6.4 Go/s

11 || 6/10/2014Page 11SGI Proprietary Silicon Process 180 nm 130 nm 90 nm 2002 Itanium ® 2 (McKinley) Mhz, 3.6 Gflops, 1.5 Mo L3 cache - 1 GHz, 4Gflops, 3 Mo L3 Cache) Itanium ® 2 (McKinley) Mhz, 3.6 Gflops, 1.5 Mo L3 cache - 1 GHz, 4Gflops, 3 Mo L3 Cache) 4Gflops Max. Le processeurs Itanium2 ® d INTEL ® : Roadmap 2005 Montecito (Dual Core on a Die) Each Core (>1.6 GHz, >8Gflops, >9MB L3 Cache) >9MB L3 Cache)Montecito (Dual Core on a Die) Each Core (>1.6 GHz, >8Gflops, >9MB L3 Cache) >9MB L3 Cache) >16Gflops Low Power Montecito Dual Core Processor Follow-on Low Power Montecito Dual Core Processor Follow-on 2003 Itanium ® 2 (Madison) GHz, 6Gflops, 6 Mo L3 Cache Ghz, 5.2 Gflops, 3 Mo L3 cache Itanium ® 2 (Madison) GHz, 6Gflops, 6 Mo L3 Cache Ghz, 5.2 Gflops, 3 Mo L3 cache >5Gflops Max. Low Power Itanium ® 2 (Deerfield) GHz, 4Gflops, 1.5Mo L3 Cache 62 Watts Ghz, 4.6 Gflops, 1.5/3 Mo L3 cache Low Power Itanium ® 2 (Deerfield) GHz, 4Gflops, 1.5Mo L3 Cache 62 Watts Ghz, 4.6 Gflops, 1.5/3 Mo L3 cache Itanium ® 2 (Madison 9M) -1.6 GHz, 6.4Gflops, 6/9 Mo L3 Cache Ghz, 6 Gflops, 4 Mo L3 cache Itanium ® 2 (Madison 9M) -1.6 GHz, 6.4Gflops, 6/9 Mo L3 Cache Ghz, 6 Gflops, 4 Mo L3 cache Fin Gflops Low Power Itanium ® 2 Deerfield+ Processor Follow-on Low Power Itanium ® 2 Deerfield+ Processor Follow-on

12 || 6/10/2014Page 12SGI Proprietary Le processeurs Itanium2 ® d INTEL ® Debits et latences : 128 FP Registers 1 ko 128 Integer Registers 1 ko L1D cache 16 ko L2U cache 256 ko L3U cache 6 Mo 32 Go/s 16 Go/s 32 Go/s 6.4 Go/s 2 cycles 5 cycles 12 cycles 5+1 cycles 12+1cycles 16 Go/s Altix: 145+ ns

13 || 6/10/2014Page 13SGI Proprietary Le processeurs Itanium2 ® d INTEL ® : Roadmap Dual-core Multi-thread Technologies Foxton, Pellston Power Mgmt (Pconfig/PSMI) Technologie Silvervale Fully Buffered DIMMs Manageability: Full Redirect (KVM, IDE-R), WS- Manageability Multi-core Virtualisation Améliorations I/O & mém RAS Common platform architecture Self Provision, Self Protect, Self Heal Current Platforms Future Architecture EPIC MCA amélioré PCI Express DDR-2 Intel® EM64T Power Mgmt (DBS) + + All products, dates and information are preliminary and subject to change without notice. Next generation MP Montecito/Montvale Next generation DP/LV Millington (+ LV)/ DP Montvale (+ LV) Systèmes multi-processeurs (MP) Systèmes bi-processeurs (DP) Common Platform Arch. Tukwila Future Platform Dimona (+ LV) Intel® Itanium® 2-based MP Platforms Itanium ® 2-6M/Itanium®-2-9M Intel® Itanium® 2-based DP + LV Platforms Itanium ® 2 (+ LV)/Fanwood (+LV) + +

14 || 6/10/2014Page 14SGI Proprietary Gamme de serveurs Altix Configuration Supercomputer et SuperCluster –4-256 processeur par systèmes –1.3GHz / 3.0Mo & 1.5GHz / 6.0Mo Intel ® Itanium ® 2 Extensible à 512P via NUMAlink en configuration superclusters Mémoire partagé : jusquà 2To 6.4Go/sec dual plane fat tree 12.8GB/sec avec des routeurs NUMAlink 4 Serveur Departmental/workgroup Jusqua Q1 - FY04 : 1-16 processeurs par nœud 1.0GHz / 1.5Mo, 1.3GHz / 3.0Mo, 1.4GHz / 3Mo & 1.5GHz / 6.0Mo A partir de Q2 - FY04 : 1p – 16p (Router-less) et 32p avec Router 1.5GHz / 4.0MB, 1.6GHz / 6.0MB & 1.6GHz / 9.0MB Intel Madison 9M Configurations Global Shared Memory : jusqua to 192Go (ou 384Go avec un/des routeurs) Altix ® 3700 Altix ® 350 Configuration Supercomputer et SuperCluster : –16p – 256p (supercluster = 2048p) –1.5GHz / 4.0MB, 1.6GHz / 6.0MB & 1.6GHz / 9.0MB Intel Madison 9M Extensible à 2048P via NUMAlink en configuration superclusters Mémoire partagé : jusquà 3To par SSI 12.8GB/s dual plane fat tree avec des routeur NUMAlink 4 Altix 3700 Bx2

15 || 6/10/2014Page 15SGI Proprietary SGI ALTIX 3000 : NUMAFLEX PX-brick Extension PCI-X D-brick2 Extension Disque R-brick Interconnection routeur IX-brick Module de Base I/O M-brick Mémoire Itanium ® 2 C-brick CPU et mémoires

16 || 6/10/2014Page 16SGI Proprietary SGI ALTIX 3000 : la C-brick 16 x PC2100 ou PC2700 DDR SDRAM 8à16Go de mémoire par nœud 8.51–10.2Go/sec de bande passante mémoire SHUB 4 processeurs Intel ® Itanium ® 2 2 processeurs par 6.4Go/sec frontside bus 4–32Go de mémoire par C-brick contrôleur mémoire : SHUB 8.51–10.2Go/sec bande passante mémoire 6.4GB/sec bande passante d interconnexion agrégé 4.8GB/sec bande passante I/O agrégé

17 || 6/10/2014Page 17SGI Proprietary SGI ALTIX 3000 : Infrastructure NUMAlink Troisième génération d'interconnexion à basse latence et haute bande passante Configuration dual plan (Altix 3700) : double la bande passante des NUMAlink-3 afin d exploiter la bande passante mémoire du SHUB 2 x 3.2Go/sec de bande passante entre les C-brick La latence a été amélioré en passant de l Origin ® 2000 à l Origin 3000 – 37% de diminution dans la latence entre liens –La latence routeur à routeur NUMAlink 3 est de 45ns

18 || 6/10/2014Page 18SGI Proprietary SGI ALTIX 3000 : Topologie Une Altix 3700 : – Jusqua 256 cpu en SSI – Topologie : 16 cpu : étoile à 2 plan interconnectés 32 cpu : hypercube à 2 plans 2D 64 cpu : hypercube 2D à 2 plans 128cpu : fat tree peigné par 4 en miroir

19 || 6/10/2014Page 19SGI Proprietary Altix CALMIP Altix 3700 : Ghz

20 || 6/10/2014Page 20SGI Proprietary Différences entre Origin 2000 et Altix 3700 SHUB Nœud hardware Altix 3700Nœud hardware Origin 2000 Input/Output on every node: 2x800 MB/s R1x000 processor L2 Cache MB R1x000 processor L2 Cache MB HUB Memory Interface I/O Interface Proc Interface Link Interface Directory SDRAM CrayLink duplex connection MHz, 2x800 MB/s) to other nodes Main Memory SDRAM MHz=800MB/s) vs

21 || 6/10/2014Page 21SGI Proprietary Image courtesy: NASA Ames Projet Columbia Real Science Utilisateurs de la NASA et dautres agences gouvernementales, de la recherche et de lindustrie 20 x SGI Altix (512 cpus, 1 To de mémoire ) 2 x 64 cpus frontaux daccès 128 x pipes Silicon Graphics Prism ~500 To stockage gérés par CXFS/DMF Déjà +600 utilisateurs depuis Octobre !

22 || 6/10/2014Page 22SGI Proprietary Configuration Columbia

23 || 6/10/2014Page 23SGI 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

24 || 6/10/2014Page 24SGI 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 –Exploitation : Numatools –Monitoring systemes : SGI PCP + outils Linux –Traitement par lots : PBS Pro, LSF,... SGI

25 || 6/10/2014Page 25SGI 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, elle n'est donc pas contiguë –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

26 || 6/10/2014Page 26SGI 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

27 || 6/10/2014Page 27SGI 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,

28 || 6/10/2014Page 28SGI 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

29 || 6/10/2014Page 29SGI 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

30 || 6/10/2014Page 30SGI 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]

31 || 6/10/2014Page 31SGI 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 (programme/fonction) -ftz : forcer les sous-dépassements à zéro pour éviter les trappes du système

32 || 6/10/2014Page 32SGI 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

33 || 6/10/2014Page 33SGI 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

34 || 6/10/2014Page 34SGI Proprietary Debugging –En standard : « gdb » debugger GNU pour C, C++ et Fortran95 –C et C++ : « -g » –Fortran : « -g » et « -O0 » –http://sources.redhat.com/gdb/onlinedocs/gdb_toc.html « 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 »

35 || 6/10/2014Page 35SGI 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

36 || 6/10/2014Page 36SGI 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.

37 || 6/10/2014Page 37SGI 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

38 || 6/10/2014Page 38SGI 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

39 || 6/10/2014Page 39SGI 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

40 || 6/10/2014Page 40SGI 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 170 nanosecondes – 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,

41 || 6/10/2014Page 41SGI 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

42 || 6/10/2014Page 42SGI 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 ….

43 || 6/10/2014Page 43SGI 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

44 || 6/10/2014Page 44SGI 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

45 || 6/10/2014Page 45SGI 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

46 || 6/10/2014Page 46SGI 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

47 || 6/10/2014Page 47SGI Proprietary Numatools : cpuset –Le «cpuset» fait référence à un mécanisme dynamique qui permet de créer un groupe de processeurs puis de lancer des applications dans ce groupe. –Néanmoins toutes les ressources de la machine sont disponibles aux processus de ce groupe et les ressources attribuées à ce groupe sont accessibles par les autres selon des paramètres détanchéité du «cpuset» –Les ressources internes au «cpuset» sont allouées préférentiellement par les processus lancés dans les «cpuset», mais elles peuvent déborder du «cpuset» jusquaux capacités complètes de la machine.

48 || 6/10/2014Page 48SGI Proprietary Numatools : cpuset –Les ressources de la machine sont accessibles selon des facteurs détanchéité définis par lutilisateur: cette étanchéité à une notion de sens (comme le GORE-TEX ) –extérieur vers intérieur : On peut autoriser les processus extérieurs à consommer des ressources du cpuset ATTENTION : sur Altix la notion de cpuset EXCLUSIF n est pas encore implémenté ! –intérieur vers lextérieur : on peut consommer des ressources externes au cpuset avant de le saturer –Allocation prioritairement aux ressources internes du Cpuset. Néanmoins, accès à toutes les ressources de la machine: mémoire, disques, cache fichiers,réseau, périphériques.

49 || 6/10/2014Page 49SGI Proprietary Numatools : cpuset –Usage : Partition software, plus ou moins perméable, dynamique –Pas de reconfiguration de la machine, il peut être créé ou détruit à la volée –Pas de perturbation entre les jobs sur une machine Garantie des ressources CPU et mémoire : –Créer des sous-groupes de processeurs pour des usages dédiés, Utilisation avec un système de batch pour garantir les ressources

50 || 6/10/2014Page 50SGI Proprietary Numatools : cpuset P0 P1 P2 P3 P4 P5 P6 P7 P16 P17 P18 P19 P20 P21 P22 P23 P28 P29 P30 P31 P24 P25 P26 P27 P12 P13 P14 P15 P8 P9 P10 P11 Cpuset vert Cpuset bleu Cpuset orange Réseau numalinks Exemple de partitionement dune machine 32 cpus

51 || 6/10/2014Page 51SGI Proprietary Cpuset : exemple Fichier de description : % cat /var/cpuset/pool_nd2 MEMORY_LOCAL CPU 2-3 Définir les utilisateurs habilités à lancer des jobs dans ce container Root crée le cpuset : % cpuset -q name -c -f pool_nd2 Lutilisateur autorisé soumet son job dans le cpuset : % cpuset -q name -A command Liste des cpusets disponibles à un instant t : %cpuset -Q Suppression du cpuset par Root : % cpuset -q name -d

52 || 6/10/2014Page 52SGI 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.

53 || 6/10/2014Page 53SGI 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

54 || 6/10/2014Page 54SGI 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

55 || 6/10/2014Page 55SGI Proprietary Numatools : dplace –dplace avec des programme séquentiels : dplace -c 63./a.out –dplace avec des programme MPI : mpirun -np 64 /usr/bin/dplace -s1 -c 0-63./a.out mpirun -a arrayname hosta -np 32 dplace -s1 -c32-63 : \ hostb -np 32 dplace -s1 -c0-31 a.out –dplace avec des programmes OpenMP : ProPack 2.4 dplace -x6 -c4-7./prog dplace -x6./prog1 & ProPack 3.0 dplace -x2 -c4-7./prog dplace -x2./prog1 & prog master PLACE (0) Pthreads monitor SKIP (1) OMP monitor SKIP (1) prog slave PLACE (0) prog slave PLACE (0) …. Plus de pthread monitor = 6 10

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

57 || 6/10/2014Page 57SGI 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,

58 || 6/10/2014Page 58SGI 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 »

59 || 6/10/2014Page 59SGI 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

60 || 6/10/2014Page 60SGI 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 )

61 || 6/10/2014Page 61SGI 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

62 || 6/10/2014Page 62SGI 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 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

63 || 6/10/2014Page 63SGI 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

64 || 6/10/2014Page 64SGI 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

65 || 6/10/2014Page 65SGI 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.

66 || 6/10/2014Page 66SGI Proprietary histx : HowTo Mode : IP Sampling –format : : : [ : ] histx -f -o ${OUT_FILE}_ip $COMMANDE Mode : IP Sampling + info par ligne –format : : [ : ] (library) histx -l -f -o ${OUT_FILE}_ip_l $COMMANDE Exploitation des fichiers iprep ${OUT_FILE}_ip > ${OUT_FILE}_ip_report Mode : Callstack –format : : [ : ] : [ : ] … : [ : ] histx -o ${OUT_FILE}_callstack -s callstack10 $COMMANDE Exploitation des fichiers csrep ${OUT_FILE}_callstack > ${OUT_FILE}_callstack_report

67 || 6/10/2014Page 67SGI 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

68 || 6/10/2014Page 68SGI Proprietary PLAN : Introduction à l'ALTIX Développement sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Ressources et documentation

69 || 6/10/2014Page 69SGI 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 …


Télécharger ppt "Silicon Graphics, Inc. Présenté par : 10/06/2014 SGI Proprietary Développement sur ALTIX Thomas VARLET Charles ROGE Philippe."

Présentations similaires


Annonces Google