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

download Silicon Graphics, Inc. Présenté par : 10/06/2014 SGI Proprietary Développement sur ALTIX Thomas VARLET (tvarlet@sgi.com) Charles ROGE (croge@sgi.com) Philippe.

If you can't read please download the document

Transcript of Silicon Graphics, Inc. Présenté par : 10/06/2014 SGI Proprietary Développement sur ALTIX Thomas...

  • Page 1
  • Silicon Graphics, Inc. Prsent par : 10/06/2014 SGI Proprietary Dveloppement sur ALTIX Thomas VARLET ([email protected]) Charles ROGE ([email protected]) Philippe THIERRY ([email protected])
  • Page 2
  • || 6/10/2014Page 2SGI Proprietary PLAN : Introduction l'ALTIX Introduction l'architecture des systmes HPC Prsentation hardware de l'ALTIX Prsentation software de l'ALTIX Dveloppement sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Ressources et documentation
  • Page 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
  • Page 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 cohrence de cache intervient lorsque plusieurs processeurs modifient des lments de la mme ligne de cache. mmoire centrale et les E/S : partages par tous les processeurs modle de programmation : extension du modle de programmation monoprocesseur bus dinterconnexion entre la mmoire et les processeurs faible nombre de processeurs Bus dintercommunication
  • Page 5
  • || 6/10/2014Page 5SGI Proprietary Problmes des architectures UMA Accs la mmoire: des niveaux de caches efficaces permettent dconomiser des rfrences la mmoire goulot dtranglement pour les autres (non cachs), les accs concourants des processeurs la mmoire partage crent un goulot dtranglement Cette difficult peut tre leve avec les architectures mmoire distribue memory Cache Register File Functional Unit (mult, add) Cache Coherency Unit Processor Cache Register File Functional Unit (mult, add) Cache Coherency Unit Processor
  • Page 6
  • || 6/10/2014Page 6SGI Proprietary Mmoire distribue Technologie de masse la bande passante globale mmoire-processeur est proportionnelle au nombre de processeurs en gnral adressage local adressage global (SGI) modles dexcution : SIMD, MIMD, SPMD 2 paradigmes de communications : mmoire partag : OpenMP (si adressage global) mmoire distribu : MPI P M E/ S P M P M P M P M P M P M P M Rseau dinterconnexion Les noeuds individuels peuvent contenir plusieurs processeurs connects entre eux par la mme technologie que le rseau.
  • Page 7
  • || 6/10/2014Page 7SGI Proprietary Architecture multi-ordinateurs Les accs aux mmoires locales et les I/Os sont indpendantes les transferts de donnes sur le rseau dinterconnexion sont lents La programmation parallle est base sur le passage de messages. Les processeurs excutent des instructions denvoi et de rception 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
  • Page 8
  • || 6/10/2014Page 8SGI Proprietary Architecture mmoire partage distribue Pour chaque processeur,les accs la mmoire locale sont indpendants La mmoire totale est globalement adressable (point de vue du programmeur ) Non-uniform memory access (NUMA): Les accs locaux sont plus rapides que les accs lointains (peu sensible sur SGI3000/SGIAltix) Les modles de programmation en mmoire partage sont utilisables la distribution des donnes est conseille pour amliorer les performances (prise en compte de l architecture mmoire distribue) 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
  • Page 9
  • || 6/10/2014Page 9SGI Proprietary PLAN : Introduction l'ALTIX Introduction l'architecture des systmes HPC Prsentation hardware de l'ALTIX Prsentation software de l'ALTIX Dveloppement sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Ressources et documentation
  • Page 10
  • || 6/10/2014Page 10SGI Proprietary Le processeurs Itanium2 d INTEL Architecture Itanium2 : Troisime gnration Itanium (Madison) EPIC: Explicit Parallel Instruction Computing Frquence : 1.5 Ghz Puissance crte : 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
  • Page 11
  • || 6/10/2014Page 11SGI Proprietary Silicon Process 180 nm 130 nm 90 nm 2002 Itanium 2 (McKinley) - 900 Mhz, 3.6 Gflops, 1.5 Mo L3 cache - 1 GHz, 4Gflops, 3 Mo L3 Cache) Itanium 2 (McKinley) - 900 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) - 1.5 GHz, 6Gflops, 6 Mo L3 Cache - 1.3 Ghz, 5.2 Gflops, 3 Mo L3 cache Itanium 2 (Madison) - 1.5 GHz, 6Gflops, 6 Mo L3 Cache - 1.3 Ghz, 5.2 Gflops, 3 Mo L3 cache >5Gflops Max. Low Power Itanium 2 (Deerfield) - 1.0 GHz, 4Gflops, 1.5Mo L3 Cache 62 Watts - 1.4 Ghz, 4.6 Gflops, 1.5/3 Mo L3 cache Low Power Itanium 2 (Deerfield) - 1.0 GHz, 4Gflops, 1.5Mo L3 Cache 62 Watts - 1.4 Ghz, 4.6 Gflops, 1.5/3 Mo L3 cache Itanium 2 (Madison 9M) -1.6 GHz, 6.4Gflops, 6/9 Mo L3 Cache - 1.5 Ghz, 6 Gflops, 4 Mo L3 cache Itanium 2 (Madison 9M) -1.6 GHz, 6.4Gflops, 6/9 Mo L3 Cache - 1.5 Ghz, 6 Gflops, 4 Mo L3 cache Fin 04 6.4Gflops Low Power Itanium 2 Deerfield+ Processor Follow-on Low Power Itanium 2 Deerfield+ Processor Follow-on
  • Page 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
  • Page 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 Amliorations I/O & mm RAS Common platform architecture Self Provision, Self Protect, Self Heal Current Platforms 2005-2006+Future Architecture EPIC MCA amlior 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) Systmes multi-processeurs (MP) Systmes 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) + +
  • Page 14
  • || 6/10/2014Page 14SGI Proprietary Gamme de serveurs Altix Configuration Supercomputer et SuperCluster 4-256 processeur par systmes 1.3GHz / 3.0Mo & 1.5GHz / 6.0Mo Intel Itanium 2 Extensible 512P via NUMAlink en configuration superclusters Mmoire 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 nud 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 Mmoire partag : jusqu 3To par SSI 12.8GB/s dual plane fat tree avec des routeur NUMAlink 4 Altix 3700 Bx2
  • Page 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 Mmoire Itanium 2 C-brick CPU et mmoires
  • Page 16
  • || 6/10/2014Page 16SGI Proprietary SGI ALTIX 3000 : la C-brick 16 x PC2100 ou PC2700 DDR SDRAM 816Go de mmoire par nud 8.5110.2Go/sec de bande passante mmoire SHUB 4 processeurs Intel Itanium 2 2 processeurs par 6.4Go/sec frontside bus 432Go de mmoire par C-brick contrleur mmoire : SHUB 8.5110.2Go/sec bande passante mmoire 6.4GB/sec bande passante d interconnexion agrg 4.8GB/sec bande passante I/O agrg
  • Page 17
  • || 6/10/2014Page 17SGI Proprietary SGI ALTIX 3000 : Infrastructure NUMAlink Troisime gnration 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 mmoire du SHUB 2 x 3.2Go/sec de bande passante entre les C-brick La latence a t amlior 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
  • Page 18
  • || 6/10/2014Page 18SGI Proprietary SGI ALTIX 3000 : Topologie Une Altix 3700 : Jusqua 256 cpu en SSI Topologie : 16 cpu : toile 2 plan interconnects 32 cpu : hypercube 2 plans 2D 64 cpu : hypercube 2D 2 plans 128cpu : fat tree peign par 4 en miroir
  • Page 19
  • || 6/10/2014Page 19SGI Proprietary Altix 3700 @ CALMIP Altix 3700 : 68 cpu @ 1.5 Ghz
  • Page 20
  • || 6/10/2014Page 20SGI Proprietary Diffrences entre Origin 2000 et Altix 3700 SHUB Nud hardware Altix 3700Nud hardware Origin 2000 Input/Output on every node: 2x800 MB/s R1x000 processor L2 Cache 1-4-8 MB R1x000 processor L2 Cache 1-4-8 MB HUB Memory Interface I/O Interface Proc Interface Link Interface Directory SDRAM CrayLink duplex connection (2x23@400 MHz, 2x800 MB/s) to other nodes Main Memory SDRAM (144@50 MHz=800MB/s) vs
  • Page 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 mmoire ) 2 x 64 cpus frontaux daccs 128 x pipes Silicon Graphics Prism ~500 To stockage grs par CXFS/DMF Dj +600 utilisateurs depuis Octobre !
  • Page 22
  • || 6/10/2014Page 22SGI Proprietary Configuration Columbia
  • Page 23
  • || 6/10/2014Page 23SGI Proprietary PLAN : Introduction l'ALTIX Introduction l'architecture des systmes HPC Prsentation hardware de l'ALTIX Prsentation software de l'ALTIX Dveloppement sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Ressources et documentation
  • Page 24
  • || 6/10/2014Page 24SGI Proprietary Altix : Prsentation Software Systme 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 2.4.21) + glibc 2.2.4 + linux threads +... Propack 3.0 = RHEL AS 3.0 (+kernel 2.4.21) + glibc 2.3.3 + Native Posix Threads +... Environnement de dveloppement (cf plus loin) : Compilateurs : Intel (C, C++, F90), mais aussi Gnu (C, C++, f77) Deboggage : GDB, IDB, DDD Librairies Scientifiques : SGI SCSL, Intel MKL Paralllisme : 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
  • Page 25
  • || 6/10/2014Page 25SGI Proprietary SGI ALTIX : point de vue utilisateur Sur un systme : un seul OS : utilisation optimale de ces ressources. les ressources sont partages : mmoires, disques, rseau La mmoire : physiquement : distribue, 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 systmes : partage des systmes de fichier XFS : CXFS (si cluster de plusieurs machines), NFS Programmation parallle : type mmoire distribue (MPI, SHMEM) type mmoire partage (threads, OpenMP) type mixte (MPI+OpenMP) SGI
  • Page 26
  • || 6/10/2014Page 26SGI Proprietary PLAN : Introduction l'ALTIX Dveloppement sur ALTIX : Les compilateurs Debbuging Bibliothques optimiss sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Ressources et documentation
  • Page 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 ncessaire dun logiciel permet de grer sur un mme systme plusieurs versions d un mme outils p.ex. : compilateurs Intel / Gnu bibliothques SCSL, MPT, MKL initialise les variables d environnement : PATH, MANPATH LD_LIBRARY_PATH, LIBRARY_PATH pour tous les utilisateurs d un ou plusieurs systmes, un utilisateur peut crer ses modules,
  • Page 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 chargs % module load module_name : charge un module (positionne les variables denv.) % module unload module_name : dcharge un module ( dpositionne les variables denv.) % module avail intel-compilers.7.1.031scsl-1.4.1relmkl.7.0.007 intel-fc-8/8.0.050mpt-1.9-1modules intel-cc-8/8.0.070 mpt-1.10totalview.6.3.1-0 % 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
  • Page 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
  • Page 30
  • || 6/10/2014Page 30SGI Proprietary Compilateur Intel : les bases Vrification de la validit numrique dsactiver les optimisations spcifiques : -O0 : pas d optimisation -g : pour debuging, -mp : limite les optimisations sur les flottants et maintient la prcision dclare, -IPF_fltacc : dsactive les optimisations qui affectent la prcision des oprations flottantes, -r -i : taille des rels, entiers, boolen -r{4|8} et -i{2|4|8} -CB -traceback : notifie au runtime les dpassements de tableaux/chanes de caractres avec des infos (fichier srce + num. ligne) Lecture/criture de fichiers non formats big/little-endian Avant lexcution : setenv F_UFMTENDIAN big:[#unit] little:[#unit] A la compilation (8.x): -convert [big_endian|little_endian]
  • Page 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 (cration de fichiers de profil) compile avec -prof_use -fno-alias/-fno-fnalias : pas d aliasing de pointeurs (programme/fonction) -ftz : forcer les sous-dpassements zro pour viter les trappes du systme
  • Page 32
  • || 6/10/2014Page 32SGI Proprietary Compilateur Intel Autres options utiles : Cre un rapport d optimisation : -opt_report prise en compte des directives OpenMP : -openmp Paralllisations automatique : -parallel Mode verbose : -v Pour le Fortran : -free / -fixed : sources au format libre / fix -extend_source [72|80|132] : prcision du format -safe_cray_ptr : pas d aliasing pour les pointeurs Cray -auto : toutes les variables locales sont automatic (-auto_scalar est le dfaut); -stack_temps (v7.x) : alloue les tableaux temporaire dans la stack Pour le Fortran (V8.0) : -fpe0 : mise zro automatique des underflows et cre un core l'apparition de tout autre Floating Point Exception
  • Page 33
  • || 6/10/2014Page 33SGI Proprietary PLAN : Introduction l'ALTIX Dveloppement sur ALTIX : Les compilateurs Debbuging Bibliothques optimiss sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Ressources et documentation
  • Page 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 ( www.gnu.org/software/ddd/ ), GUI pour debugger a base de ligne de commande supporte gdb et idb Fonctionne aussi : TotalView DDT
  • Page 35
  • || 6/10/2014Page 35SGI Proprietary Debugging de code (trucs et astuces) Compilation (8.x) avec -traceback , arbre dappel quand erreur svre Exploitation du fichier core : % idb [excutable] [core_file], puis where (arbre dappel) Job MPI : Vrifications des arguments des appels MPI ( !! pour debugger seulement !! ) : % setenv MPI_CHECK_ARGS Si le job reoit un signal core-dump : Affichage dun arbre dappel Variable denvironnement (cf man mpi): Rglage du comportement quand signal core-dump : % setenv MPI_COREDUMP [NONE,FIRST,ALL,INHIBIT] Debugger % setenv MPI_COREDUMP_DEBUGGER Utilisation de idb / gdb : Debugger squentiels, 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
  • Page 36
  • || 6/10/2014Page 36SGI Proprietary Problmes 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 Bibliothque : Electric Fence compilation : -lefence , livr en standard avec RedHat accs en dehors des zones alloues par malloc accs une zone mmoire retourne au systme par un appel free(). dtection des problmes d'alignement.
  • Page 37
  • || 6/10/2014Page 37SGI Proprietary PLAN : Introduction l'ALTIX Dveloppement sur ALTIX : Les compilateurs Debbuging Bibliothques optimiss sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Ressources et documentation
  • Page 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 opration 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 gnrateurs de nombre alatoires Vector Math Library (VML) : fonctions mathmatiques sur des vecteurs : puissance, trigonomtriques, exponentiel, etc... PARDISO Direct Sparse Solver : ( -lmkl[_ipf] -lmkl_solver lguide -lpthreads ) Solveur pour des systmes linaire creux, symtrique/asymtrique (thread-safe), Bas sur le solveur PARDISO (Parallel Direct Solver) de l Universit de Basel, En partie paralllis en OpenMP (BLAS3, DFTs, FFTs, solveurs, qqs LAPACKS ) Librairies scientifiques
  • Page 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 oprations de filtrage linaire ( convolution, correlation) Fonctions BLAS : BLAS1, BLAS2, BLAS3 LAPACK, ScaLAPACK Solveur pour des matrices creuses : Solveur direct pour rsolution de systmes linaires creux symtrique et non symtrique, double precision et complex. plusieurs types possible de renumrotation in-core et out-of-core paralllis en OpenMP -lscs_mp , -lscs_i8_mp et -lsdsm_mp (SCALAPACK) Librairies scientifiques
  • Page 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 complte 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 Dbit : 1.5 Go/s SHMEM : Logically Shared, Distributed Memory (SHMEM) SHMEM data passing one-sided communication , un processus crit/lit des donnes dans la mmoire d un autre processeur sans que ce dernier intervienne directement,
  • Page 41
  • || 6/10/2014Page 41SGI Proprietary PLAN : Introduction l'ALTIX Dveloppement sur ALTIX Utilisation des ALTIX Lancement des jobs Outils NUMA Tunning Comprendre les performances sur ALTIX Ressources et documentation
  • Page 42
  • || 6/10/2014Page 42SGI Proprietary Configuration du systme : 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/pci01.01.0/target0/lun0/ds 0 P-Brick 4 R-Brick 8 C-Brick 4 1000 MHz Itanium 2 Rev. 7 Processor 28 1000 MHz Itanium 2 Rev. 6 Processor Main memory size: 114.05 Gb IO9 Controller Card (Silicon Graphics, Inc.) (rev 69). on pci01.01.0 QLogic 12160 Dual Channel Ultra3 SCSI (Rev 6) on pci01.03.0 Disk Drive: unit 1 on SCSI controller pci01.03.0-1 Disk Drive: unit 2 on SCSI controller pci01.03.0-1 BROADCOM Corporation NetXtreme BCM5701 Gigabit Ethernet (rev 21). on pci01.04.0 SCSI storage controller: QLogic Corp. QLA2200 (rev 5). pci02.01.0 Disk Drive: unit 34 lun 0 on SCSI controller pci02.01.0 0 Disk Drive: unit 35 lun 0 on SCSI controller pci02.01.0 0 .
  • Page 43
  • || 6/10/2014Page 43SGI Proprietary Configuration du systme : /proc uname -a : Linux bigbang 2.4.21-sgi240rp04080615_10094 #1 SMP Fri Aug 6 16:01:54 PDT 2004 ia64 unknown /proc/cpuinfo : info. sur les processeurs, /proc/meminfo : info. gnral sur la mmoire du systme, /proc/discontig : utilisation de la mmoire en page par nuds, profit : more /proc/discontig node total free 0 507904 368360 1 507904 489235 2 507904 487940 /proc/pal/cpu0/cache_info : structure cache L1, L2, et L3, /proc/version : information sur le kernel % more /proc/version Linux version 2.4.21-sgi240rp04080615_10094 ([email protected]) (gcc version 2.96 20000731 (Red Hat Linux 7.2 2.96-118.7.2)) #1 SMP Fri Aug 6 16:01:54 PDT 2004 Version kernelVersion ProPack + patch
  • Page 44
  • || 6/10/2014Page 44SGI Proprietary Configuration du systme : /proc /proc/mounts : information sur les systmes de fichiers monts /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-2.4.19-sgi212r2smp 275056 0 (unused) arsess 37872 1 nls_iso8859-1 6048 1 (autoclean) nls_cp437 7728 1 (autoclean) qlfc_mod 539312 6 xpnet 13392 0 (unused) xpmem 118448 0 numatools 13904 1 xpc 140688 0 (unused) xp 7816 0 [xpnet xpmem xpc] xvm-standalone 698528 0
  • Page 45
  • || 6/10/2014Page 45SGI Proprietary Lancement des jobs Un seul OS qui gre jusqu a 256 cpu et 2 To de mmoire : simplicit d utilisation ! utilisations d outils Numa pour optimiser le temps d excution en charge Squentiels :./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
  • Page 46
  • || 6/10/2014Page 46SGI Proprietary PLAN : Introduction l'ALTIX Dveloppement sur ALTIX Utilisation des ALTIX Lancement des jobs Outils NUMA Tunning Comprendre les performances sur ALTIX Ressources et documentation
  • Page 47
  • || 6/10/2014Page 47SGI Proprietary Numatools : cpuset Le cpuset fait rfrence un mcanisme dynamique qui permet de crer un groupe de processeurs puis de lancer des applications dans ce groupe. Nanmoins toutes les ressources de la machine sont disponibles aux processus de ce groupe et les ressources attribues ce groupe sont accessibles par les autres selon des paramtres dtanchit du cpuset Les ressources internes au cpuset sont alloues prfrentiellement par les processus lancs dans les cpuset, mais elles peuvent dborder du cpuset jusquaux capacits compltes de la machine.
  • Page 48
  • || 6/10/2014Page 48SGI Proprietary Numatools : cpuset Les ressources de la machine sont accessibles selon des facteurs dtanchit dfinis par lutilisateur: cette tanchit une notion de sens (comme le GORE-TEX ) extrieur vers intrieur : On peut autoriser les processus extrieurs consommer des ressources du cpuset ATTENTION : sur Altix la notion de cpuset EXCLUSIF n est pas encore implment ! intrieur vers lextrieur : on peut consommer des ressources externes au cpuset avant de le saturer Allocation prioritairement aux ressources internes du Cpuset. Nanmoins, accs toutes les ressources de la machine: mmoire, disques, cache fichiers,rseau, priphriques.
  • Page 49
  • || 6/10/2014Page 49SGI Proprietary Numatools : cpuset Usage : Partition software, plus ou moins permable, dynamique Pas de reconfiguration de la machine, il peut tre cr ou dtruit la vole Pas de perturbation entre les jobs sur une machine Garantie des ressources CPU et mmoire : Crer des sous-groupes de processeurs pour des usages ddis, Utilisation avec un systme de batch pour garantir les ressources
  • Page 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 Rseau numalinks Exemple de partitionement dune machine 32 cpus
  • Page 51
  • || 6/10/2014Page 51SGI Proprietary Cpuset : exemple Fichier de description : % cat /var/cpuset/pool_nd2 MEMORY_LOCAL CPU 2-3 Dfinir les utilisateurs habilits lancer des jobs dans ce container Root cre 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
  • Page 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 rpartition mmoire Pour chaque page de lespace dadressage : Lobjet au quel appartient la page : fichier, SYSV, mmoire partag,drivers, Le type de page : Random acess memory (RAM), FETCHOP, IOSPACE Si la page est de type RAM : Attribut (SHARED, DIRTY, ), Le nud o est localis la page, Adresse physique de la page Utilisation du CPU. Temps elapsed, temps system du processus.
  • Page 53
  • || 6/10/2014Page 53SGI Proprietary Numatools : dlook dlook 4702 Peek: sleep Pid: 4702 Thu Aug 22 10:45:34 2002 Cputime by cpu (in seconds): user system TOTAL 0.002 0.033 cpu1 0.002 0.033 Process memory map: 2000000000000000-2000000000030000 r-xp 0000000000000000 04:03 4479 /lib/ld-2.2.4.so [2000000000000000-200000000002c000]11 pages on node 1 MEMORY|SHARED 2000000000030000-200000000003c000 rw-p 0000000000000000 00:00 0 [2000000000030000-200000000003c000]3 pages on node 0 MEMORY|DIRTY... 2000000000128000-2000000000370000 r-xp 0000000000000000 04:03 4672 /lib/libc-2.2.4.so [2000000000128000-2000000000164000] 15 pages on node 1 MEMORY|SHARED [2000000000174000-2000000000188000] 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:37 2002 Process memory map: 2000000000030000-200000000003c000 rw-p 0000000000000000 00:00 0 [2000000000030000-2000000000034000] 1 page on node 21 MEMORY|DIRTY [2000000000034000-200000000003c000] 2 pages on node 12 MEMORY|DIRTY|SHARED 2000000000044000-2000000000060000 rw-p 0000000000000000 00:00 0 [2000000000044000-2000000000050000] 3 pages on node 12 MEMORY|DIRTY|SHARED _______________________________________________________________________________ Exit: ft.C.2 Pid: 2310 Fri Aug 30 14:33:37 2002 Process memory map: 2000000000030000-200000000003c000 rw-p 0000000000000000 00:00 0 [2000000000030000-2000000000034000] 1 page on node 25 MEMORY|DIRTY [2000000000034000-200000000003c000] 2 pages on node 12 MEMORY|DIRTY|SHARED 2000000000044000-2000000000060000 rw-p 0000000000000000 00:00 0 [2000000000044000-2000000000050000] 3 pages on node 12 MEMORY|DIRTY|SHARED [2000000000050000-2000000000054000] 1 page on node 25 MEMORY|DIRTY
  • Page 54
  • || 6/10/2014Page 54SGI Proprietary Numatools : dplace Permet de contrler 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] spcification 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 3me, etc [-p placement_file] pas encore implment, command [command-args] commande le scheduling et le placements mmoire sont dtermins en fonction des arguments de dplace : Si possible : allocation de la mmoire sur le nuds (physique) Le processus est fix sur le nud dsign, Le placement explicite sur des CPU nest pas obligatoire
  • Page 55
  • || 6/10/2014Page 55SGI Proprietary Numatools : dplace dplace avec des programme squentiels : 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 011 2 = 6 10
  • Page 56
  • || 6/10/2014Page 56SGI Proprietary PLAN : Introduction l'ALTIX Dveloppement sur ALTIX Utilisation des ALTIX Lancement des jobs (squentiel, MPI, OpenMP) Outils NUMA (dlook, dplace, cpuset,...) Tunning (squentiel, parallle) Comprendre les performances sur ALTIX Ressources et documentation
  • Page 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'excution pour les programmes C ou Fortran ja histx Profil de code + exploitation des compteurs de lItanium Vtune : Outil Intel de monitoring de code,
  • Page 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 systme ou dans le CPUSET dplace, cpuset,... Single copy : pour des applications sensibles la bande passante, utilisation du module xpmem pour mapper de la mmoire entre processus, setenv MPI_BUFFER_MAX 2000
  • Page 59
  • || 6/10/2014Page 59SGI Proprietary Tunning MPI Eliminer les retries : Les communications point point sont bufferises Si les stat. MPI donnent un grand nombre de retries : Attente dentre 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
  • Page 60
  • || 6/10/2014Page 60SGI Proprietary Tunning OpenMP La Bibliothque run-time library est libguide, dvelopp 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 paralllis avec sucs (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 prive des threads ( le dfaut est de 4 Mo sur Itanium) KMP_LIBRARY : mode d excution runtime serial excution mono-processeur. throughput (dfaut) pour environnement multi-utilisateur, libre le processeurs pour d autres processus quand la threads OpenMP est en attente (quivalent sur IRIX : _DSM_WAIT=YIELD ) turnaround les threads ne libre pas le processeurs quand elles sont en attente de travail (quivalent sur IRIX : _DSM_WAIT=SPIN )
  • Page 61
  • || 6/10/2014Page 61SGI Proprietary PLAN : Introduction l'ALTIX Dveloppement sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Observer le comportement de la machine Observer le comportement du code Ressources et documentation
  • Page 62
  • || 6/10/2014Page 62SGI Proprietary Performance Co-Pilot Architecture client/serveur pour un contrle centralis de calcul distribu, Possibilit de surveiller plusieurs htes. Donnes temps relles et historiques. Monitoring automatis des performances. Composantes : Collecteur : Collecte des donnes de performance, Moniteur : archivage + visualisation des donnes, Donnes rcupres Instrumentation Hardware, Noyau de lOS Librairies Service layers, daemons, etc. Applications % pmchart -h [host] visualisation de compteur du systme % pmgcluster [host] / pmgsys visualisation rapide de la charge du systme
  • Page 63
  • || 6/10/2014Page 63SGI Proprietary PLAN : Introduction l'ALTIX Dveloppement sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Observer le comportement de la machine Observer le comportement du code Ressources et documentation
  • Page 64
  • || 6/10/2014Page 64SGI Proprietary lipfpm (Linux IPF Performance Monitor) lipfpm permet d'obtenir les valeurs des compteurs de lItanium pour l'excution 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...................................... 152499228284 L2 Misses.................................................. 3159051506 Requests Made To L2........................................ 69829240763 CPU Cycles................................................. 348231157730 Percentage of L2 misses.................................... 0.0452397 Average MFLOP/s............................................ 569.303 Average MB/s requested by L2............................... 1509.53 utilisation du cache L3 et des debits des accs en mmoire lipfpm -e FP_OPS_RETIRED -e L3_READS.DATA_READ.ALL \ -e L3_READS.DATA_READ.MISS $COMMANDE lipfpm summary ====== ======= Retired FP Operations...................................... 152499228205 L3 Reads -- L3 Load References............................ 2499734811 L3 Reads -- L3 Load Misses............................... 1712387197 CPU Cycles................................................. 348636126093 Average MFLOP/s............................................ 568.642 Average data read MB/s requested by L3..................... 817.303
  • Page 65
  • || 6/10/2014Page 65SGI Proprietary histx : HISTogram eXecution histx (SGI) permet de comprendre : o est pass le temps, o sont gnrs les vnements de performances. Compiler le code avec -g Mode instruction pointer : : : [ : ] Par ligne : -l : : [ : ] (library) Mode callstack : : [ : ]... : [ : ] Rapport spar pour chaque pthread, thread OpenMP, ou processus MPI.
  • Page 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
  • Page 67
  • || 6/10/2014Page 67SGI Proprietary Histx : Exemple % histx -f -l -o out_histx./a.out % iprep prof.out CountSelf%Cum.%Name -------------------- ------- ------- -------------------- 2500746.38346.383a.out:prod_mat_trans_ [libmat-art.f:659] 1281523.76970.152a.out:prod_mat_ [libmat-art.f:630] 41957.78177.933libmpi.so:MPI_SGI_shared_progress 32756.07484.008a.out:comp_mat_ligne_ [libmat-art.f:350] 20673.83487.842libmpi.so:MPI_SGI_request_test
  • Page 68
  • || 6/10/2014Page 68SGI Proprietary PLAN : Introduction l'ALTIX Dveloppement sur ALTIX Utilisation des ALTIX Comprendre les performances sur ALTIX Ressources et documentation
  • Page 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 rpertoire dinstallation. Site SGI, Techpubs : http://techpubs.sgi.com/ Linux Application Tuning Guide Document Numro : 007-4639-003 Message Passing Toolkit (MPT) User's Guide Document Numro : 007-3773-001 Site Intel : http://developer.intel.com/ Scientific Computing on Itanium-based Systems Intel Press Introduction to Microarchitectural Optimization for Itanium 2 Processors Document Numro : 251464-001 Web de clients SGI : CALMIP : http://www.calmip.cict.fr/spip/ NASA NAS : http://www.nas.nasa.gov/User/Systemsdocs/Altix/altix.html Texas A&M Supercomputing Facility : http://sc.tamu.edu/help/altix/ Equipes SGI