67
Silicon Graphics, Inc. Présenté par : 30/10/22 SGI Proprietary Développement sur ALTIX Thomas VARLET ([email protected]) Charles ROGE ([email protected]) Philippe THIERRY ([email protected])

Silicon Graphics, Inc. Présenté par : 19/05/2014 SGI Proprietary Développement sur ALTIX Thomas VARLET ([email protected]) Charles ROGE ([email protected]) Philippe

Embed Size (px)

Citation preview

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

Silicon Graphics, Inc.

Présenté par :

11/04/23

SGI Proprietary

Développement sur ALTIX

Thomas VARLET ([email protected])Charles ROGE ([email protected])

Philippe THIERRY ([email protected])

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

04/11/23 Page 2| | SGI 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

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

04/11/23 Page 3| | SGI Proprietary

Panorama

MIMD

MultiprocessorsSingle Address spaceShared Memory

MulticomputersMultiple Address spaces

UMACentral Memory

NUMAdistributed memory

NORMAno-remote memory access

PVP (Cray T90)

SMP (Intel SHV, SUN E10000, DEC 8400SGI Power Challenge, IBM R60, etc.)

COMA (KSR-1, DDM)

CC-NUMA(SGI 3000, SGI 2000, AltixHP 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

MIMD Multiple Instruction s Multiple DataUMA Uniform Memory AccessNUMA Non-Uniform Memory AccessNORMA No-Remote Memory AccessMPP Massively Parallel Processor

PVP Parallel Vector ProcessorSMP Symmetric Multi-ProcessorCOMA Cache Only Memory ArchitectureCC-NUMA Cache-Coherent NUMANCC-NUMA Non-Cache Coherent NUMA

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

04/11/23 Page 4| | SGI Proprietary

Architecture UMA

memory

Cache

Register FileFunctional

Unit(mult, add)

Cache Coherency

UnitProcessor

Cache

Register FileFunctional

Unit(mult, add)

Cache Coherency

UnitProcessor

– le protocole de cohérence de cache intervient lorsque plusieurs processeurs modifient des éléments de la même ligne de cache.– la mémoire centrale et les E/S sont partagées par tous les processeurs– Le modèle de programmation est une extension du modèle de programmation

monoprocesseur

– bus d’interconnexion entre la mémoire et les processeurs– faible nombre de processeurs

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

04/11/23 Page 5| | SGI 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

– pour les autres (non cachés), les accès concourants des processeurs à la mémoire partagée créent un goulot d’étranglementgoulot d’étranglement

– Cette difficulté peut être levée avec les architectures à mémoire distribuée

memory

Cache

Register FileFunctional

Unit(mult, add)

Cache Coherency

UnitProcessor

Cache

Register FileFunctional

Unit(mult, add)

Cache Coherency

UnitProcessor

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

04/11/23 Page 6| | SGI 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 d’exécution : SIMD, MIMD, SPMD– 2 paradigmes de communications :

• mémoire partagé : OpenMP (si adressage global)

• mémoire distribué : MPI

PM E/

S

PM E/

S

PM E/

S

PM E/

S

PM

E/S

PM

E/S

PM

E/S

PM

E/S

Réseau d’interconnexion

Les noeuds individuels peuvent contenir plusieurs processeurs connectés entre eux par la même technologie que le réseau.

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

04/11/23 Page 7| | SGI 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 d’interconnexion sont lents

– La programmation parallèle est basée sur le passage de messages. • Les processeurs exécutent des instructions d’envoi et de réception de messages

pour communiquer entre eux.

Mainmemory

Cache

Register FileFunctional

Unit(mult, add)

Processor

Mainmemory

Cache

Register FileFunctional

Unit(mult, add)

Processor

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

04/11/23 Page 8| | SGI 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)

Mainmemory

Cache

Register FileFunctional

Unit(mult, add)

Processor

Mainmemory

Register File

Functional Unit

(mult, add)

Processor

Cache Coherency

Unit

interconnect

CacheCache

CoherencyUnit

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

04/11/23 Page 9| | SGI 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

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

04/11/23 Page 10| | SGI 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: 16kB ; 64o/line ; 4 way

– L1D WT: 16ko ; 1/- cycle ; 64o/line ; 4 way ; (2ld&2st)/cycle

– L2U WB: 256ko ; 5/6cycle; 128o/line; 8 way; (4ldf) | (2ldf[p]&2stf)

– L3U WB: 6Mo; 12/13cycle ; 128o/line ; 6/12 way ; 48Go/s

– Memory Front Side Bus (FSB) : 128o/line ; 6.4 Go/s

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

04/11/23 Page 11| | SGI Proprietary

Le processeurs Itanium2 ® d ’INTEL ®

Debits et latences :12

8 FP

Reg

iste

rs

1 ko

128

Inte

ger

Reg

iste

rs

1 ko

L1D

cac

he

16 ko

L2U

cac

he25

6 ko

L3U

cac

he

1.5-6 Mo

32 Go/s

16 Go/s 32 Go/s

32 Go/s 6.4 Go/s

2 cycles 5 cycles 12 cycles

5+1 cycles12+1cycles

16 Go/s

16 Go/s

16Rd / 6Wr

Altix™:145+ ns

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

04/11/23 Page 12| | SGI 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• Jusqu’a 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 : jusqu’a 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

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

04/11/23 Page 13| | SGI Proprietary

SGI ALTIX™ 3000 : NUMAFLEX

PX-brickExtension PCI-X

D-brick2Extension Disque

R-brickInterconnection routeur

IX-brickModule de Base I/O

M-brickMémoire

Itanium® 2 C-brickCPU et mémoires

ix

c

c

c

c

c

c

c

c

r

r

r

r

ix

c

c

c

c

c

c

c

c

r

r

r

r

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

04/11/23 Page 14| | SGI Proprietary

SGI ALTIX™ 3000 : la C-brick

16 x PC2100 ou PC2700 DDR SDRAM8à16Go de mémoire par nœud

8.51–10.2Go/sec de bande passante mémoire

SHUB 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é

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

04/11/23 Page 15| | SGI 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

NUMAlink Generation Aggregate Bandwidth

NUMAlink 1

NUMAlink 2 (1996) 1.6 GB/s

NUMAlink 3 (2000) 3.2 GB/s

NUMAlink 4 (2004) 6.4 GB/s

NUMAlink 5 TBD

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

04/11/23 Page 16| | SGI Proprietary

SGI ALTIX™ 3000 : Topologie

• Une Altix 3700 :– Jusqu’a 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 péigné par 4 en miroire

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

04/11/23 Page 17| | SGI Proprietary

Altix 3700 @ CALMIP

• Altix 3700 : 68 cpu @ 1.5 Ghz

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

04/11/23 Page 18| | SGI Proprietary

Différences entre Origin 2000 et Altix 3700

SHUB SHUB

Nœud hardware Altix 3700Nœud hardware Origin 2000

Input/Output on every node: 2x800 MB/s

R1x000processor

L2 Cache1-4-8 MB

R1x000processor

L2 Cache1-4-8 MB

HUB

Memory Interface

I/O Interface

Pro

c In

terf

ace

Lin

k In

terf

ace

DirectorySDRAM

CrayLinkduplex connection(2x23@400 MHz,

2x800 MB/s)to other nodes

Main Memory SDRAM (144@50 MHz=800MB/s)

vs

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

04/11/23 Page 19| | SGI 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

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

04/11/23 Page 20| | SGI Proprietary

Altix : Présentation Software • Système d’exploitation : 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 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

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

04/11/23 Page 21| | SGI 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é, elle n'est donc pas contigue

– 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é (MPI, SHMEM)

– type mémoire partagé (threads, OpenMP)

– type mixte (MPI+OpenMP)

SGI

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

04/11/23 Page 22| | SGI 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

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

04/11/23 Page 23| | SGI Proprietary

“Modules”

• Outils de gestion dynamique de l’environnement des utilisateurs :– Sur Origin (IRIX/MIPS) et sur Altix (Linux/Itanium)– Positionne, puis de supprime les variables d ’environnement nécessaire pour utiliser

un « 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,

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

04/11/23 Page 24| | SGI Proprietary

Utilisation de “module”

• Initialisation de l’environnement (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 d’env.)

% module unload module_name : “décharge” un module (« dépositionne » les variables d’env.)

• Exemple :% module avail

intel-compilers.7.1.031 scsl-1.4.1rel mkl.7.0.007

intel-fc-8/8.0.050 mpt-1.9-1 modules

intel-cc-8/8.0.070 mpt-1.10 totalview.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 25: Silicon Graphics, Inc. Présenté par : 19/05/2014 SGI Proprietary Développement sur ALTIX Thomas VARLET (tvarlet@sgi.com) Charles ROGE (croge@sgi.com) Philippe

04/11/23 Page 25| | SGI Proprietary

• Compilateur GNU :• gcc, g77, g++

• Compilateur Intel® sur Linux pour Itanium2– Positionnement de l’environnement :

• Utilisation de module : module load [nom_module]• Source des fichiers d’initialisation : [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 26: Silicon Graphics, Inc. Présenté par : 19/05/2014 SGI Proprietary Développement sur ALTIX Thomas VARLET (tvarlet@sgi.com) Charles ROGE (croge@sgi.com) Philippe

04/11/23 Page 26| | SGI 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 l’exécution :

setenv F_UFMTENDIAN big:[#unit] little:[#unit]

– A la compilation (8.x):

  -convert [big_endian|little_endian] 

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

04/11/23 Page 27| | SGI Proprietary

Compilateur Intel ® : Pousser le compilateur

• Options :-O0 : pas d’optimisation

-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

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

04/11/23 Page 28| | SGI 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

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

04/11/23 Page 29| | SGI Proprietary

Différence entre Origin 2000 et Altix 3700

Différence entre l’ordre des octets en mémoire :

Origin = « big Endian » / Altix = « little Endian »

vs

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

04/11/23 Page 30| | SGI 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

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

04/11/23 Page 31| | SGI 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 32: Silicon Graphics, Inc. Présenté par : 19/05/2014 SGI Proprietary Développement sur ALTIX Thomas VARLET (tvarlet@sgi.com) Charles ROGE (croge@sgi.com) Philippe

04/11/23 Page 32| | SGI Proprietary

Debugging de code (trucs et astuces)

• Compilation (8.x) avec « -traceback », arbre d’appel quand erreur sévère• Exploitation du fichier « core » :

% idb [exécutable] [core_file], puis « where » (arbre d’appel)

• 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 d’un arbre d’appel• Variable d’environnement (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 d’environnement (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 33: Silicon Graphics, Inc. Présenté par : 19/05/2014 SGI Proprietary Développement sur ALTIX Thomas VARLET (tvarlet@sgi.com) Charles ROGE (croge@sgi.com) Philippe

04/11/23 Page 33| | SGI Proprietary

Problèmes de corruptions de la heap

• Programmes qui utilisent les fonctions malloc/ free

– Variables d’environnement : 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.

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

04/11/23 Page 34| | SGI 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

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

04/11/23 Page 35| | SGI 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

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

04/11/23 Page 36| | SGI 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

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

04/11/23 Page 37| | SGI 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,

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

04/11/23 Page 38| | SGI 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

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

04/11/23 Page 39| | SGI 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/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 40: Silicon Graphics, Inc. Présenté par : 19/05/2014 SGI Proprietary Développement sur ALTIX Thomas VARLET (tvarlet@sgi.com) Charles ROGE (croge@sgi.com) Philippe

04/11/23 Page 40| | SGI Proprietary

Configuration du système : “/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. 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

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 kernel Version ProPack + patch

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

04/11/23 Page 41| | SGI 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's16 memory nodes4 routers

The cpus are:cpu 0 is /dev/hw/module/004c05/slab/0/node/cpubus/0/acpu 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/modulesvtune_drv-2.4.19-sgi212r2smp 275056 0 (unused)arsess 37872 1nls_iso8859-1 6048 1 (autoclean)nls_cp437 7728 1 (autoclean)qlfc_mod 539312 6

xpnet 13392 0 (unused)xpmem 118448 0numatools 13904 1xpc 140688 0 (unused)xp 7816 0 [xpnet xpmem xpc]xvm-standalone 698528 0

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

04/11/23 Page 42| | SGI 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

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

04/11/23 Page 43| | SGI 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

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

04/11/23 Page 44| | SGI 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» jusqu’aux capacités complètes de la machine.

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

04/11/23 Page 45| | SGI Proprietary

Numatools : cpuset

– Les ressources de la machine sont accessibles selon des facteurs d’étanchéité définis par l’utilisateur:

• 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 l’exté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.

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

04/11/23 Page 46| | SGI 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

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

04/11/23 Page 47| | SGI 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 Cpuset vertvert

Cpuset Cpuset bleubleu

Cpuset Cpuset orangeorange

Réseau numalinks

• Exemple de partitionement d’une machine 32 cpus

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

04/11/23 Page 48| | SGI Proprietary

Cpuset : exemple

• Fichier de description :

% cat /var/cpuset/pool_nd2MEMORY_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• L’utilisateur 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 49: Silicon Graphics, Inc. Présenté par : 19/05/2014 SGI Proprietary Développement sur ALTIX Thomas VARLET (tvarlet@sgi.com) Charles ROGE (croge@sgi.com) Philippe

04/11/23 Page 49| | SGI 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 l’espace d’adressage :– L’objet 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.

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

04/11/23 Page 50| | SGI Proprietary

Numatools : dlookdlook 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.2Pid: 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 51: Silicon Graphics, Inc. Présenté par : 19/05/2014 SGI Proprietary Développement sur ALTIX Thomas VARLET (tvarlet@sgi.com) Charles ROGE (croge@sgi.com) Philippe

04/11/23 Page 51| | SGI 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 n’est pas obligatoire

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

04/11/23 Page 52| | SGI 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”

0112 = 610

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

04/11/23 Page 53| | SGI 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

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

04/11/23 Page 54| | SGI Proprietary

Les outils de profiling

•Où passe t-on du temps ???– « time » :

• temps user, elapsed, system

– « gprof »: • code source compile avec “-p”,• execution de l’application,• compte-rendu d'exécution pour les programmes C ou Fortran

– « ja »– « histx » 

• Profil de code + exploitation des compteurs de l’Itanium

– Vtune : • Outil Intel de monitoring de code,

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

04/11/23 Page 55| | SGI 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 »

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

04/11/23 Page 56| | SGI Proprietary

Tunning MPI

• Eliminer les « retries » : – Les communications point à point sont bufferisées

– Si les stat. MPI donnent un grand nombre de « retries » : » Attente d’entrée de buffers,

– MPI_BUFS_PER_PROC, – MPI_BUFS_PER_HOSTS,– MPI_MSGS_PER_HOSTS.

• SHMEM : « -lsma »– inter-partition (depuis MPT 1.8)

– éliminer l’overhead du aux appels MPI

– Bande-passante,

• Inter-Partitions : – Utilisation du driver XPMEM

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

04/11/23 Page 57| | SGI 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)

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

04/11/23 Page 58| | SGI 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

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

04/11/23 Page 59| | SGI Proprietary

Performance Co-PilotPerformance 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 l’OS• 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

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

04/11/23 Page 60| | SGI 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

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

04/11/23 Page 61| | SGI Proprietary

lipfpm (Linux IPF Performance Monitor)

• lipfpm permet d'obtenir les valeurs des compteurs de l’Itanium pour l'exécution d’une 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...................................... 152499228284L2 Misses.................................................. 3159051506Requests Made To L2........................................ 69829240763CPU Cycles................................................. 348231157730Percentage of L2 misses.................................... 0.0452397Average MFLOP/s............................................ 569.303Average MB/s requested by L2............................... 1509.53

• utilisation du cache L3 et des debits des accès en mémoirelipfpm -e FP_OPS_RETIRED -e L3_READS.DATA_READ.ALL \

-e L3_READS.DATA_READ.MISS $COMMANDElipfpm summary====== =======Retired FP Operations...................................... 152499228205L3 Reads -- L3 Load References ............................ 2499734811L3 Reads -- L3 Load Misses ............................... 1712387197CPU Cycles................................................. 348636126093Average MFLOP/s............................................ 568.642Average data read MB/s requested by L3..................... 817.303

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

04/11/23 Page 62| | SGI 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 » : <count>: <library>:<function> [<file>:<line>]

– Par ligne : « -l » : <count>: [<file>:<line>] (library)

– Mode « callstack » : <count> <N> <library1>:<function1> [<file1>:<line1>]

...

<libraryN>:<functionN> [<fileN>:<lineN>]

– Rapport séparé pour chaque pthread, thread OpenMP, ou processus MPI.

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

04/11/23 Page 63| | SGI Proprietary

histx : HowTo

• Mode : IP Sampling – format : <count>: <library>:<function> [<file>:<line>]

histx -f -o ${OUT_FILE}_ip $COMMANDE

• Mode : IP Sampling + info par ligne – format :<count>: [<file>:<line>] (library)

histx -l -f -o ${OUT_FILE}_ip_l $COMMANDE

• Exploitation des fichiersiprep ${OUT_FILE}_ip > ${OUT_FILE}_ip_report

• Mode : Callstack– format :< count> <N>

<library1>:<function1> [<file1>:<line1>] <library2>:<function2> [<file2>:<line2>] … <libraryN>:<functionN> [<fileN>:<lineN>]

histx -o ${OUT_FILE}_callstack -s callstack10 $COMMANDE

• Exploitation des fichierscsrep ${OUT_FILE}_callstack > ${OUT_FILE}_callstack_report

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

04/11/23 Page 64| | SGI Proprietary

Histx : Exemple

% histx -f -l -o out_histx ./a.out

% iprep < out_histx.a.out.29591 > prof.out

Count Self% Cum.% Name

-------------------- ------- ------- --------------------

25007 46.383 46.383 a.out:prod_mat_trans_ [libmat-art.f:659]

12815 23.769 70.152 a.out:prod_mat_ [libmat-art.f:630]

4195 7.781 77.933 libmpi.so:MPI_SGI_shared_progress

3275 6.074 84.008 a.out:comp_mat_ligne_ [libmat-art.f:350]

2067 3.834 87.842 libmpi.so:MPI_SGI_request_test

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

04/11/23 Page 65| | SGI Proprietary

Différence entre Origin 2000 et Altix 3700

Benchmark NotesOrigin 2000 @ 300 Mhz

Origin200

@ 500 Mhz

Altix 3700

@ 1.5Ghz

Crête

(en Mflops)Puissance flottante

max. 600 (2fp*300)1000

(2fp*500)6000

(4fp*300)

Linpack 1kx1k (en Mflops)

80 % de la crête 545 914 5400

Specint2000_baseMoyenne sur des codes

de calcul avec des nombres entiers

254 397 1243

Specfp2000_baseMoyenne sur des codes

de calcul avec des nombres flottants

269 362 2080

STREAM (TRIAD)

(en Mo/s)

Bande passante du dernier niveau de cache

vers la mémoire

a(i) = b(i) + q*c(i)

388 429 3810

vs

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

04/11/23 Page 66| | SGI Proprietary

PLAN :

• Introduction à l'ALTIX

•Développement sur ALTIX

•Utilisation des ALTIX

•Comprendre les performances sur ALTIX

•Ressources et documentation

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

04/11/23 Page 67| | SGI 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 d’installation.

• Site SGI, Techpubs : http://techpubs.sgi.com/ – « Linux® Application Tuning Guide  » Document Numéro : 007-4639-003 – « Message Passing Toolkit (MPT) User's Guide  » Document Numéro : 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 Numéro : 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 …