Silicon Graphics, Inc. Présenté par : 10/06/2014 SGI Proprietary Développement sur ALTIX Thomas...
If you can't read please download the document
Silicon Graphics, Inc. Présenté par : 10/06/2014 SGI Proprietary Développement sur ALTIX Thomas VARLET ([email protected]) Charles ROGE ([email protected]) Philippe
|| 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
|| 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
|| 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
|| 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
|| 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