You are on page 1of 94

Calcul Haute Performance

architectures et modles de
programmation
Franoise Roch 1

1Observatoire

des Sciences de lUnivers


l Univers de Grenoble
Mesocentre CIMENT

Un peu de connaissance des architectures est ncessaire


Des architectures
de plus en plus complexes
avec diffrents niveaux de paralllisme
Premire tape de la parallllisation :
dcoder la relation entre larchitecture et lapplication
Adapter les algorithmes, la programmation aux architectures actuelles,
Comprendre le comportement dun programme,
Choisir son architecture et son modle de programmation en fonction de ses besoins

Westmere-EX

Cell

Les ingrdients dun supercalculateur


Processeur
fournit la puissance de calcul
CPU multi-core,
lti
t ll
ventuellement
t GPU
GPU, ou proc plus
l
spcialiss
Mmoire/Stockage
Aujourdhui trs hierarchis (caches,
(
DRAM, SSD, HD,
bandes)
Rseaux
Relient les noeuds entre eux
Souvent plusieurs types (MPI, Administration, I/O)
Logiciels
middleware pour laccs au ressources distribues
MPI, gestion des processus,
Lquilibre entre les diffrents composants est primordial
3

Sommaire
1. Architecture des ordinateurs
Les
L processeurs
La mmoire
Les rseaux
Les tendances dvolution
2. Concepts du paralllisme
Introduction
Terminologie et classification
Les diffrents modles de programmation
3. Conclusion
4

Modle de Von Neumann (1945)

La mmoire : contient le
programme (instructions) et
les donnes.
Une Unit
i Arithmtique
ih i
et
Logique : UAL qui effectue
les oprations.
Une unit de contrle :
charge du squenage des
oprations.
oprations
Une unit dEntre/Sortie.

Un pocesseur en 2011
Systme
dEntres/
Sorties

Mmoire

Bus interface

L3

L1
inst
r

Core0

Core1

Core2

. Coren

Unit de commande
UAL

UAL

UAL

L1
data

UAL

L
2

Caractristiques dun processeur


Jeux dinstructions quil peut excuter :
Complexe : CISC (beaucoup dinstr. Complexes
prenant plusieurs cycles dhorloge). Ex: x86
Rduit : RISC (Moins dinstr. Mais nutilisant que
quelques cycles). Ex: PowerPC
Nombre de transistors: plus il contient de transistors,
plus il est capable dexcuter dinstructions /seconde

Caractristiques dun processeur


Nombre de bits pouvant tre traits en une instruction
Vitesse maximale
Vit
i l d
de lh
lhorloge
l
augmente,
t plus
l lle processeur excute
t
dinstructions par seconde
La frquence dhorloge dtermine la dure dun cycle.
Chaque opration utilise un certain nombre de cycles
cycles.
La frquence dhorloge est fonction de :
la technologie des semi-conducteurs,
le packaging,
packaging
les circuits.

Les limites technologiques


gq
:
La consommation lectrique et la dissipation thermique dun
processeur sont fonction de sa frquence dhorloge.
Le temps dinterconnexion ne suit pas la finesse de gravure.
Le nb de cycles dhorloge pour interruptions, cache
miss ou mauvaise prdiction de branchement augmente.
8

Comment augmenterla performance des processeurs


Augmenter la frquence dhorloge (limites
techniques solution coteuse).
techniques,
coteuse)
Permettre lexcution simultane de plusieurs
instructions :
Instruction Level Parallelism : pipelining, instruction
superscalaire, architecture VLIW et EPIC.
Thread Level Parallelism : multithreading et SMT.
Jeu dinstructions

Amliorer les accs mmoire : diffrents niveaux de


cache
Recourir un nombre lev de curs de calcul
9

Les composants dun processeur


1 CPU = plusieurs units fonctionnelles qui peuvent travailler en parallle :
une unit de gestion des bus (unit dentres-sorties) en interface avec la
mmoire vive du systme,
une unit de commande (unit de contrle)) qui lit les donnes arrivant,
les dcode et les envoie lunit dexcution,
une unit dexcution qui accomplit les tches que lui a donnes lunit
dinstruction,
d
instruction, compose notamment de :
une ou plusieurs units arithmtiques et logiques (ALU) qui assurent les
fonctions basiques de calcul arithmtique et les oprations logiques.
une ou plusieurs units de virgule flottante (FPU) : calculs sur les
fl tt t IInstruction
flottants.
t ti de
d calcul
l ld
de b
base : multiplication
lti li ti / addition.
dditi
La performance crte peut dpendre de la taille des registres et est fonction
de la prcision voulue (SP
(SP,DP).
DP)

Exemple : perf crte du processeur intel westmere-EP 2.26GHz


Processeur 6 cores ,
chaque core a 2 units FPU capables d excuter 2 oprations 64 bits
10
6 * 2 * 2 * 2.26 = 54.24 Gflops crte en Double Prcision

Les diffrentes tapes dexcution dune opration


Une opration sexcute en plusieurs tapes indpendantes
par des lments diffrents du processeur :
IF : Instruction Fecht
ID : Instruction Decode/Register Fecht
EX : Execution/Effective
/ ff
Address
dd
MA : Memory Access/ Cache Access
WB : Write-Back
Write Back

Sur un processeur sans pipeline les instructions sont


excutes les unes aprs les autres.

11

Excution simultane de plusieurs instructions : ILP (pipeling)


Instruction Level Parallelism

Les diffrentes tapes dune opration sexcutent


simultanment sur des donnes distinctes (paralllisme
dinstructions).

5 instructions en parallle en 9 cycles (25 cycles en squentiel)


permet de multiplier le dbit avec lequel les instructions
sont excutes p
par le p
processeur.
12

Instruction Level Parallelism : architectures superscalaires


Pi i
Principe
Duplication de composants (FMA, FPU)
et excution simultane de plusieurs
instructions
10 instructions en 9 cycles
Gestion des instructions
Statique
q ((in-order):
) excutes dans lordre du code machine
Dynamique (out-of-order): le hardware modifie lordre des instructions pour
favoriser le paralllisme (faible nombre dinstructions)
Execution spculative : faire une hypothse sur la suite dun traitement aprs un
branchement conditionnel (la valeur de la condition ntant pas encore calcule).
Les problmes de dpendances entre instructions :
Partage des
d ressources (par
(
exemple
l lla mmoire)
i )
Dpendances des donnes entre instructions
Dpendances des contrles : une instruction est une branche.

13

Appliquer la mme instruction plusieurs donnes :


Le mode SIMD (Single Instruction Multiple Data) permet dappliquer
la mme instruction simultanment plusieurs donnes (stockes
dans un registre) pour produire plusieurs rsultats.

Exemples de jeux dinstructions SIMD


MMX : permettent d'acclrer certaines oprations rptitives dans
certains domaines :traitement de l'image 2D, son et communications.
SSE (SSE2,SSE3, SSE4, SSE5 annon par AMD) : par ex instructions pour
additionner et multiplier plusieurs valeurs stockes dans un seul registre
3DNow : jeu dinstructions multimdia dvelopp par AMD
AVX (Advanced Vector Extensions) : nouvel ensemble dinstructions sur
les proc SandyBridge intel, unit SIMD de largeur 256 ou 512 bit

Certaines architectures disposent dinstructions vectorielles


linstruction vectorielle est dcode une seule fois, les lments
d vecteur
du
ecte r sont ens
ensuite
ite so
soumis
mis un
n un
n llunit
nit de traitement
Les pipelines des units de traitement sont pleinement aliments
Ex : NEC SX, Fujitsu VPP, Altivec)

14

Dpasser les limites en aidant le processeur


Une des limites du paralllisme dinstruction :
Pour extraire le paralllisme, le compilateur srialise le
code,
d d
dontt lle paralllisme
llli
iintrinsque
ti
d
doit
it t
tre redcouvert
d
t
dynamiquement par le processeur
Les architectures VLIW (Very Long Instruction Word) et EPIC
(Explicitly Parallel Instruction Set Computing) permettent de
traiter des instructions longues,
g , aggrgations
gg g
dinstructions
courtes indpendantes, pour les excuter explicitement en //
VLIW : le compilateur a la charge dorganiser correctement les
instructions, tout en respectant les types de dpendances
habituelles qui sont normalement gres au niveau matriel
sur les architectures classiques
On gagne en performance (pas de contrle),
contrle) mais la
compatibilit binaire en gnrations successives est quasiimpossible. (Ex: Itanium)
15

Amliorer le remplissage du flot dinstructions du


processeur : TLP (Thread Level Parallelism)
Ide : mixer deux flux dinstructions arrivant au processeur
pour optimiser lutilisation simultane de toutes les
ressources (remplir les cycles perdus - cache miss, load ...).
L SMT (Simultaneous
Le
(Si lt
M ltith di ) partage
Multithreading)
t
d pipeline
du
i li d
du
processeur entre plusieurs threads (dun mme programme
ou de deux programmes diffrents). Les registres et les caches
sont aussi partags.
Lhyperthreading
Lh
th di = SMT dIntel.
dI t l
Le multithreading dgrade les performances individuelles des
threads mais amliore les p
performances de lensemble.
16

Performance : mmoire versus processeur


Cas id
C
idall : Mmoire
M i lla plus
l grande
d ett lla plus
l rapide
id possible
ibl
La performance des ordinateurs est limite par la latence et la
bande passante de la mmoire :
Latence = temps pour un seul accs.
Temps daccs mmoire >> temps cycle processeur.
Bande passante = nombre daccs par unit de temps.
Proc
60%/anne
CPU

Moores Law
100
Processeur Mmoire Performance
Processeur-Mmoire
50%/anne

10

DRAM
7%/anne

1999

1998

1997

1996

1995

1994

1992
1993

1991

1990

1989

1988

1987

1986

1985

1984

1983

1982

1981

2000

DRAM

1
1980

Perfformance

1000

17

Hirarchisation de la mmoire

Proximit du CPU

1 ou plusieurs caches*
RAM : mmoire primaire

Taille

Vittesse

Registres

Disques: mmoire secondaire


CD,bande, : mmoire tertiaire

* les caches peuvent tre organiss de faon hirarchique

18

Notion de localit mmoire


Localit temporelle
p
: si une zone est rfrence,, elle a des
chances dtre rfrence nouveau dans un futur proche.
Exemple de proximit temporelle : dans une boucle
simple,
i l chaque
h
it
itration
ti accs
aux mmes

iinstructions.
t ti
Localit spatiale : si une zone est rfrence, les zones
voisines ont des chances dtre rfrences dans un futur
proche.
Exemple de proximit spatiale : dans un bloc simple,
chaque
h
iinstruction
i sera accde
d llune aprs
llautre.

19

Proximit temporelle
DO I = 1,10 0000
S1 = A(I)
S2 = A(I+K) # S2 sera rutilis litration
l itration I+K
END DO
Lide de base est de conserver A(I+K) (lecture de la rfrence
litration I, dclaration S2) en mmoire rapide jusqu sa
prochaine utilisation litration I+K, dclaration S1.
Si on veut exploiter la localit temporelle via les registres, cela
suppose quil faille au moins K registres.
C
Cependant,
d t d
dans lle cas gnral,
l on aura certainement
t i
tb
besoin
i
de stocker dautres donnes.
Lvaluation prcise de la proximit temporelle est trs complexe
20

Proximit spatiale
Le voisinage dune zone localise par une adresse doit tre
value dans lespace dadressage virtuel.
Les structures de donnes sont linarises et rduites une
dimension pour tre places dans lespace dadressage linaire.
Exemple en Fortran (rangement des
tableaux 2D par colonne)
DO J = 1,1000
DO I = 1
1,10000
10000
X1 = A(I,J)
X2 = B(J,I)
END DO
END DO

Pour A : localit spatiale


parfaite, accs des zones
de mmoire conscutives.
Pour B : 2 rfrences
conscutives sont distantes
de 1000 emplacements
mmoires.

Pour exploiter la localit spatiale, il faut que la distance entre 2


rfrences soit infrieure la taille de la ligne du cache. 21

Organisation des caches


Le cache est divis en lignes de n mots.
2 niveaux de granularit :
le CPU travaille sur des mots (par ex 32 ou 64 bits).
Les transferts mmoire se font par blocs (par exemple,
lignes de cache de 256 octets).
Une mme donne peut tre prsente diffrents niveaux de
la mmoire : problme de cohrence et de propagation des
modifications.
Les lignes de caches sont organises en ensembles de k lignes.
La taille de ces ensembles est constante et est appele le
degr dassociativit. Chaque adresse a une alternative de k
lignes.
22

Effets des paramtres des caches sur les performances


Cache
C
h plus
l grand
d
rduit les cache miss ,
augmente le temps daccs.
Plus grand degr dassociativit
rduit les conflits de cache,
peut augmenter le temps daccs
d accs.
Prefetching
Le prefetching consiste anticiper les donnes et les instructions dont le processeur
aura besoin, et ainsi les prcharger depuis la hirarchie mmoire (le L2 ou la mmoire
centrale).
Diffrents type de prefetching :
mcanisme hardware de prchargement,
mcanisme software de prchargement

23

Les communications internes au processeur

Xeon
Northbridge

Opteron
Hypertransport

Nehalem
QuickPath
Interconnect

24

Communications CPU - Mmoire


Exemple du Northbridge sur architecture Intel:
Pour valuer la bande passante entre CPU et mmoire, il faut
Connatre la frquence du FSB.
Frquence la + leve : 1 600 MHz.

Exemple : calcul de la bande passante mmoire locale sur un noeud bi-sockets


Intel Harpertown :
Bande Passante au niveau de linterface processeurs : sur une carte bi-sockets
2 FSB 64 bits 1 600 MHz, soit 2*1600*8 = 25.8 Go/s.
Bande Passante au niveau de linterface
l interface mmoire : la mmoire est adresse via 4
canaux 800 MHz (si FBDIMM 800 MHz). La largeur du bus est de 72 bits, dont 8
bits de contrle, soit 64 bits de donnes. Ce qui donne : 4*800*8 = 25.6 Go/s. 25

Communications CPU - Mmoire

Exemple du Nehalem avec le


Q i kP thI t
QuickPathInterconnect
t:
Le contrleur mmoire est
intgr au CPU
.

Exemple : calcul de la bande passante mmoire locale sur un noeud bi-sockets


Intel Nehalem
Bande Passante vers mmoire locale au CPU :
3 canaux 64 bits vers mmoire DDR3 1066 MHz, soit 3*1066*8 = 25.6 Go/s.
Un processeur peut galement adresser la mmoire connect un autre
processeur NUMA (Non Uniform Memory Access)
B d P
Bande
Passante
t vers mmoire
i dun
d autre
t CPU : le
l QPI une bande
b d passante
t de
d
6.4 GT /s par lien, unit de transfert de 16 bits, soit 12.8 Go/s dans chaque sens,
26
soit une bande passante totale de 25.6 Go/s.

Communications CPU IO
B interne
Bus
i
dextension
d
i
Bus PCI-X
E l ti d
Evolution
du b
bus PCI
PCI, prserve

lla compatibilit.
tibilit
Interconnect parallle. Interface entre le bus processeur et le bus
dentres/sorties. Bus 64 bits, Frquence jusqu 533 MHz.
Bus srie full duplex PCI-Express
Utilise une interface srie (1 bit donc) base de lignes
g
bidirectionnelles. En version 2, chaque ligne fonctionne 500 Mo/s . Le
bus PCI-Express peut tre construit en multipliant le nombre de lignes
Par ligne : sur PCI-e V 1.x : 20 Mo/S, V2.x 500 Mo/s, V3.0 1 Go/s
Limite de la bande passante sur PCI-Express
PCI Express (16 lignes) :
v 2.0 : 8 Go/s, V3.0 : 16 Go/s
27

Evolution des architectures


LLoii d
de M
Moore : nb
bd
de transistors
i
par circuit
i i intgr
i * 2 tous
les 2 ans.
En 10 ans, la finesse de gravure est passe de 0,25 m
(Pentium III) 45 nm (Core 2 Penryn), Nehalem.
Evolution de larchitecture des processeurs (pipeline,
d l
duplication
d
des units
ffonctionnelles,
ll excution

spculative,
l
excution dsordonne ...).
Evolution des interactions architecture/applications : dans le
cas de lItanium, le compilateur fait partie intgrante de
larchitecture.
Evolution des infrastructures vers un haut degr de paralllisme
en intgrant un grand nombre de cores.
cores
28

Les architectures multicoeurs


Un processeur compos dau moins 2 units centrales de calcul
sur u
su
unee mme
e puce
puce.
Permet daugmenter la puissance de calcul sans augmenter la
frquence dhorloge.
Et donc rduire la dissipation thermique
thermique.
Et augmenter la densit : les coeurs sont sur le mme support, la
connectique reliant le processeur la carte mre ne change pas
par rapport un mono-cur

29

Pourquoi les multicoeurs ?


Quelques ordres de grandeur
Single Core
Dual Core
Gnration de gravure1

Core area
Core power
Chip power
Core
performance
Chip
performance

Gnration de gravure2

Quad Core
Gnration de gravure3

A
W
W+O
P

~ A/2
~ W/2
W + O
0.9P

~ A/4
~ W/4
W + O
0.8P

1.8 P

3.2 P

30

Architecture Nehalem-EP
4 cores
Cache L3 partag 8 Mo on-chip
3 niveaux de cache
Cache L1 : 32k I-cache + 32k D-cache
Cache L2 : 256 k par core
Cache inclusif : cohrence de cache on-chip
SMT
732 M transistors
transistors, 1 seule puce de 263 mm2
QuickPathInterconnect
Point Point
2 liens par socket CPU
1 pour la connexion lautre socket
1 pour la connexion au chipset
Jusqu
J
6.4
6 4 GT/Sec
GT/S dans
d
chaque
h
di
direction
ti
QuickPath Memory controller (DDR3) intgr

core

core

core

core

8 Mo L3 shared cache
Memory
controller

Link controller

3 DDR3
Channels

2 Quickpath
Interconnect

Bande passante
mmoire crte
25.6 GB/s
31

Nehalem

32

Architecture Sandy Bridge-EP


Devrait arriver dbut 2012 avec :
8 cores par processeur
3 niveaux
i
d
de cache
h
Cache L1 : 32k I-cache + 32k D-cache
Cache L2 : 256 k / core,
core 8 voies associatif
Cache L3 partag et inclusif 16 Mo on-chip
4 DDR3 memoryy controller
Instructions AVX, registres 256 bits
8 flop DP/cycle (double du Nehalem)
32 lignes PCI-e 3.0 de base
QuickPathInterconnect
2 QPI par proc
33

Architecture Power7
1200 M de transistors, 567 mm2 par die
jjusqu
8 cores
4 voies SMT jusqu 32 threads
simultanes
12 units d
dexcution
excution, dont 4 FP
Scalabilit : Jusqu 32 sockets de 8
cores par systme SMP , 360Go/s de
bande passante/chip
jusqu 1024 threads /SMP
Cache L2 de 256Ko /core
Cache L3 partag en technologie
eDRAM (embeddedDRAM)

Contrleur cache L3 et mmoire sur


lle chip
hi
Jusqu 100 Go/s de BP mmoire

34

Architecture des caches

35

Partage des caches L2 et L3


Partage du cache L2 (ou L3) :
communications plus rapides entre coeurs,
meilleure utilisation de lespace,
migration des threads plus facile entre les coeurs,
contention au niveau de la bande passante et des
caches (partage de lespace),
Pas de partage entre les caches :
pas de contention,
communication/migration plus coteuse, passage
systmatique par la mmoire.
priv,, cache L3 partag
p
g :IBM Power5+ /
cache L2 p
Power6, Intel Nehalem
tout priv : le Montecito

36

Exemple du Nehalem :
une hirarchie de cache 3 niveaux
32ko L1 /I
32ko L1/D

32ko L1 /I
32ko L1/D

32ko L1 /I
32ko L1/D

32ko L1 /I
32ko L1/D

256ko L2

256ko L2

256ko L2

256ko L2

8 Mo L3 shared cache
inclusif
Memory
controller

Link controller

Cache de niveau 3 inclusif de tous les niveaux prcdent


4 bits permettent d
didentifier
identifier dans quel cache de quel proc
se trouve la donne
limitation du traffic entre curs
G ill
Gaspillage
d
dune partie
ti d
de lla mmoire
i cache
h
37

Les GPUS
Evolution des performances CPU vs GPU

GPU

CPU

Vitesse des processeurs classiques * 2 tous les 16 mois


Vitesse des processeurs graphiques (GPU) *2 tous les 8 mois
38

Les processeurs graphiques


Performance thorique GeForce 8800GTX vs Intel
Core 2 Duo 3
3.0
0 GHz : 367 Gflops / 32 GFlops.
GFlops
Bande passante mmoire : 86.4 GB/s / 8.4 GB/s.
Prsents dans tous les PC : un march de masse
masse.
Adapt au massivement parallle (milliers de
threads par application).
application)
Jusqu quelques annes, uniquement
programmable via des APIs graphiques.
graphiques
Aujourdhui, des modles de programmation
disponibles : CUDA , OpenCL,
OpenCL HMPP.
HMPP
39

Architecture de PC classique
Motherboard
CPU
System Memory

Bus PCI-e
Graphic Board
Vido Memory
GPU
40

Architecture du processeur Fermi de NVIDIA

Multiprocesseur
SM

core

Cache L2 de 768 Ko

Shared memory / cache L1


/
64 Ko/SM

512 Units de calcul !


16 partitions de 32

Ops flottantes IEEE 754-2008 SP & DP


support ECC sur toutes les mmoires
256 FMAs
FMA DP/cycle
DP/ l
cache L1 et L2
Jusqu 1 TB de mmoire GPU 41

Architecture du processeur Fermi de NVIDIA


Le SM (Streaming Multiprocessor)
du Fermi :
Chaque SM a 32 cores.
Un SM ordonnance les threads par
groupe de 32
3 threads //

Une volution importante


p
:
64 Ko de mmoire on-chip
(48ko shared mem + 16ko L1) ,
qui permet aux threads dun
d un
mme block de cooprer.
Des units 64 bit.

42

Structure dun programme CUDA


Un programme CUDA comprend :
Des portions de code sexcutant sur lhte (CPU)
Typiquement des phases squentielles, IOs.
Des portions qui sexcutent sur le(s) device(s) (GPU)
Les lments de calcul sont appels kernels (portion de
code sexcutant sur le(s) device(s))
Un kernel est excut en // par de multiples threads d
dun
un
block de thread.
Un block de threads est un ensemble de threads qui peuvent
cooprer entre elles via des barrires de synchronisation et la
mmoire partage.

43

Autres langages ou outils


Brook + (implmentation AMDAMD des specs de Brook (Stanford)
extension du langage C

OpenCL (Open Computing Language):


iinterface
f
d
de programmation
i b
base
sur d
du C avec d
des extensions
i
d
du
langage
portable
calcul parallle sur architecture htrogne : CPUs,
CPUs GPUs,
GPUs et autres
processeurs.

HMPP (CAPS Entreprise)


EExpression
i d
du paralllisme
llli
ett d
des communications
i ti
d
dans lle code
d C ou
Fortran laide de directive la OpenMP
HMPP gre les communications CPU-GPU

StarPU (projet INRIA)


Gestion dynamique des tches sur diffrents types dacclrateurs de
calcul multi-curs, un modle unifi dexcution

S_GPU
S GPU (projet INRIIA)
Partage lutilisation de plusieurs GPU avec plusieurs processus MPI
placs sur des CPU

44

Comparaison GPU /CPU


A performance intrinsque gale , les plateformes
base de GPUs :
occupent
p
moins de p
place
sont moins chres
sont moins consommatrices dlectricit
Mais
sont rserves des applications massivement
parallles
Transferts par le PCI
PCI-ee limitent fortement les
performances
ncessitent lapprentissage de nouveaux outils
quelle est la garantie de prennit des codes et donc
45
de linvestissement en terme de portage ?

Le processeurs MIC (Many Integrated Core) dIntel :


une rponse au GPU ?
Des processeurs manycores , 50 cores sur la
mme

puce
Compatibilit x86
Support des logiciels Intel
Actuellement ltat de prototype,
sortie du Knights Corner fin 2012 ou dbut 2013

46

Technologie rseau pour le HPC


Les processeurs ou les machines peuvent tre relis de
diffrentes faons
Les caractristiques importantes :
La bande passante (bandwidth) est le dbit maximal
Latence : temps
p dinitialisation de la communication
Distance maximum entre deux nuds

Diffrents types dinterconnexion:


Bus
Switch crossbar
Hypercube
Tree

47

Topologie rseau

Bus
Hypercube
Chaque proc est le
Sommet dun hypercube
de dim n
Rseau
plusieurs
tages

Arbre

48

Technologie rseau
pour le HPC
p
Technologie

Vendeur

Latence MPI
usec,, short msgg

Bande passante par


lien
unidirectionnel,
MB/s

NUMAlink 4

SGI

3200

QsNet II

Quadrics

1.2

900

Infiniband

Mellanox, Qlogic,
(Voltaire)

1.O7

2500 (SDR)
Double speed DDR
Quad speed QDR
Fourteen speed FDR
(14Gb/s)

High
h Performance
f
Switch

IBM

1000

Myri-10G

Myricom

2.3

2500

2600

Ethernet 10/40 Gb
Ethernet 1 Gb

50 80

49

Evolution proportion des diffrents types de systmes


ces dernires annes

50

Concepts du paralllisme

51

Calcul parallle
Un calcul parallle est excut sur plusieurs units de calcul
Le calcul est dcoup en plusieurs parties pouvant sexcuter
s excuter
simultanment
Chaque partie est dcoupe en squences dinstructions
D instructions
Des
i t ti
d
de chaque
h
partie
ti sexcutent
t t simultanment
i lt
t sur
# CPU
CPU
CPU
CPU
CPU
52

Calcul parallle
Les ressources de calcul peuvent tre
Une seule machine avec un ou plusieurs processeurs
Plusieurs machines avec un ou plusieurs processeurs
interconnectes par un rseau rapide
Une grille de calcul : plusieurs ensembles de plusieurs
machines

Si un CPU peut excuter les oprations arithmtiques


du programme en temps t, alors n CPU peuvent
id l
idalement
les
l excuter

en temps t/n
/

53

Pourquoi utiliser le paralllisme ?


Economiser du temps ( la montre)
Rsoudre des problmes de + grande taille
Avoir accs + de mmoire et + de puissance en
cumulant les ressources matrielles
Pouvoir traiter plusieurs choses en mme temps
Les limites du squentiel :

Limites de la vitesse de transmission ( transmission des


donnes entre les diffrents lments du hardware)
La taille mmoire
Les limites de la miniaturisation
Les limites conomiques
q
: + cher daugmenter
g
la rapidit
p
dun processeur que de multiplier les processeurs ou les
cores

54

Classification de Flynn
Classification des architectures selon 2
dimensions : instruction, data.
SISD
SIMD
Single Instruction,
Instruction Single Data Single Instruction,
Instruction Multiple Data
MISD
Multiple Instruction, Single
Data

MIMD
Multiple Instruction, Multiple
Data

55

Classification de Flynn
Flux/flot dinstructions : squence
dinstructions excutes par la machine
Flux/flot de donnes : squence de donnes
pp
p
par le flux dinstructions
appeles
SISD : architecture squentielle avec un seul flot dinstructions,
un seul flot de donnes,, excution dterministe
SIMD : architecture // , ttes les units de traitement excutent la
mme instruction un cycle dhorloge donne, chaque unit
peut oprer sur des donnes diffrentes,
diffrentes excution dterministe
Arrays processors
Machines vectorielles (instructions sur des vecteurs de
donnes)
Excution pipeline
56

Classification de Flynn
MISD : un seull fl
flot d
de d
donnes
alimente
l
plusieurs
l
units
d
de
traitement,
chaque unit de traitement opre indpendamment des autres, sur
d fl
des
flots
t di
dinstructions
t ti
iindpendants
d
d t
Peu implment
Ex dutilisation : excution en // de plusieurs algos de cryptographie
pour le dcodage d1 mme message
MIMD: architecture la p
plus courante aujourdhui,
j
,
Chaque unit de traitement peut grer un flot dinstructions
diffrent
Chaque unit peut oprer sur un flot de donnes diffrent
Lexcution peut tre synchrone ou asynchrone, dterministe ou
non-dterministe

57

Terminologie
Tche parallle : portion de travail qui peut sexcuter sur
plusieurs CPU, sans risque sur la validit des rsultats
Mmoire partage :
Dun point de vue hard, rfre une machine dont tous les
CPUs. ont un accs direct une mmoire commune
Dun
D
un point de vue modle de programmation : toutes les
tches ont la mme image mmoire et peuvent
directement adresser et accder au mme emplacement
mmoire logique, peu importe o il se trouve en mmoire
physique.
Mmoire distribue :
Dun point de vue physique, base sur un accs mmoire
rseau

pour une mmoire


i physique
h i
non commune.
Dun point de vue modle de programmation, les tches
ne peuvent voir que la mmoire de la machine locale et
doivent effectuer des communications pour accder la
mmoire dune machine distante
distante, sur laquelle dautres
tches sexcutent.
58

Mmoire partage
Tous les CPUs accde toute la mmoire globale avec un
mme espace dadressage global
Chaque CPU travaille indpendamment des autres
autres, mais les
modifications effectues par un processeur un
emplacement mmoire (en mmoire globale) sont visibles
par tous les autres
Les CPUs ont leur propre mmoire locale (cache)
CPU

cache

CPU

Mmoire

cache

cache

CPU

cache
h

CPU

59

Mmoire partage : UMA / NUMA


2 classes darchitecture mmoire partage, diffrencies
par les temps daccs mmoire :
UMA (Uniform memory access) :
Des CPUs identiques, ayant tous le mme temps daccs
la mmoire
NUMA (Non Uniform memory access) :
C
Conue
pour pallier
lli
aux problmes
bl
d mmoire
daccs
i
concurrents via un unique bus .
En gnral, plusieurs blocs SMP interconnects
Les temps daccs
d la
l mmoire

d ff
diffrent
suivant la
l zone
accde. Le temps daccs via le lien dinterconnexion des
blocs est plus lent
Gestion de la cohrence des caches
CC-NUMA : Cache Coherent NUMA
60

Architecture NUMA

Une architecture mmoire physiquement


distribue mais logiquement partage

61

Mmoire partage
Espace dadresse globale J facilite le travail du
programmeur
Mmoire proche des CPUs J le partage des
donnes entre tches est rapide
Mais :
Manque de scalabilit : augmenter le nombre de
CPU accrot le traffic sur le chemin daccs la
mmoire
Le programmeur doit grer la synchronisation
pour un accs correcte la mmoire
Coteux de construire des architectures
mmoire partage avec un grand nombre de
processeurs
62

Mmoire distribue

P
Rseau

63
Le p
point commun de ces architectures : elles p
possdent
un rseau dinterconnexion pour communiquer entre
les mmoires des diffrents processeurs.

Mmoire distribue
Chaque processeur sa propre mmoire locale, il
nyy a pas
p de notion despace
p
dadressage
g gglobale
entre tous les procs.
Les procs oprent indpendamment les uns des
autres, une modification en mmoire locale na
pas deffet sur la mmoire des autres procs.
Si un processeur a b
besoin
i d
dune d
donne
d
dans lla
mmoire dun autre processeur, le programmeur
doit dfinir explicitement la communication
communication.
Les rseaux dinterconnexion sont divers, avec
des niveaux de performance trs variables
64

Mmoire distribue
On peut augmenter le nombre de processeur et
la mmoire proportionnellement
Accs rapide la mmoire locale sur chaque proc
Pas de problme de cohrence des accs
Cot raisonnable ex : PCs en rseau
Mais :
Le programmeur doit grer toutes les
communications entre processeurs
Peut tre difficile de faire concider une structure
de donnes base sur une mmoire globale,
cette
tt organisation
i ti physique
h i
d
de lla mmoire
i
Temps daccs mmoire non locaux levs
65

Architecture hybride
Les ordinateurs les plus puissants au monde sont
aujourdhui un mixte de mmoire partage et
mmoire distribue
La brique de base (nud) est un multiprocesseur
mmoire partage
Ces briques sont interconnectes par un rseau (type
y
, Infiniband,, ))
Ethernet,, Myrinet,

CPU

CPU

CPU

CPU

CPU

CPU

mmoire

CPU

mmoire

CPU

Rseau

CPU

CPU

CPU

CPU

CPU

CPU

mmoire

CPU

mmoire

CPU

66

Modles de programmation parallle

67

Modles de programmation parallle


Modle mmoire partage
threads
Passage de messages
Paralllisme de donnes
Modle hybride
Ces modles existent au dessus du hardware et des
architectures mmoire et peuvent thoriquement
tre implments sur nimporte quel hardware.
Les + implments
p
:
MPI (passage de messages) sur architectures
distribues et hybrides (mais souvent aussi sur
architecture mmoire partage)
OpenMP (mmoire partage) sur architecture
mmoire partage

68

Modle mmoire partage


Les tches partagent un espace dadressage
commun, dans
d
llequell elles
ll lilisent et crivent
i
d
de
faon asynchrone
# mcanismes tels locks (verrous),
(verrous) smaphores
sont utiliss pour laccs la mmoire partage
Lavantage du point de vue de lutilisateur est quil
ny a pas la notion de propritaire dune
donne , il na pas dcrire explicitement les
communications
Mais attention, la localit des donnes a une
impacte sur les performances mais nest pas
f l grer
facile

69

Threads
Dans ce modle
modle, un unique processus peut initier
plusieurs tches concurrentes, appeles threads
Chaque thread a sa mmoire locale
locale, mais partage
galement la mmoire globale du processus
Les threads communiquent entre elles via cette
mmoire globale
Le programme principal est prsent durant toute
lexcution, alors quune thread peut apparatre
puis disparatre et rapparatre
rapparatre.
70

Modle Passage de Messages


Un ensemble de tches qui utilisent leur
mmoire locale, plusieurs de ces tches
pouvant tre sur une mme ou sur plusieurs
machines
Ces tches changent des donnes via des
communications de messages (send/receive)
Un transfert de donnes requiert en gnral
une coopration entre les 2 tches
tches, les
oprations sont spcifies par le
programmeur
71

Modle Passage de Messages


Machine 1

Machine 2

Task i

Task j

Send (x)

Receive(x)

A un envoi doit correspondre une rception


Le p
programmeur
g
doit spcifier
p
les oprations
p
de faon
explicite
p
Implmentation : librairie de routines auxquelles le programmeur
peut faire appel dans son code
Ex : PVM (le standard jusqu
jusquen
en 92), MPI (le standard actuel)
Versions domaine public : MPICH, LAM/MPI, OpenMPI, MVAPICH
72

Modle Passage de Messages


Si les communications sont entre 2 tches sur
2 machines #, elles passent par le rseau
Si les communications sont entre 2 tches sur
une mme machine, les implmentations de
MPI choisissent en gnral de les faire passer
par la mmoire partage (copies mmoire)
pour des raisons de performance

73

Modle Data Parallel


Un ensemble de tches travaillent collectivement
sur une mme structure de donnes, chaque tche
effectue la mme opration mais sur une partie
diffrente de la structure
Un programme data parallel est souvent crit en
utilisant des constructions spcifiques dites data
parallel , et/ou des directives de compilation
Ex :
HPF (High Performance Fortran) : extension du fortran90
pour le paralllisme de donnes
74

Modles hybrides
Ils sont bass sur lutilisation combine de
plusieurs des modles prcdents
Typiquement
yp q
la combinaison du modle Message
g
Passing avec MPI et du modle des threads ou du
modle mmoire partage avec OpenMP.
Lhybride MPI+OpenMP est de + en + utilis, il est
notamment bien adapt aux architectures type
cluster de multiprocesseurs
75

Des langages mergents


Architectures mmoire partage plus simples
programmer
Mais beaucoup d architectures sont mmoire
distribue p
pour des raisons de cot et de p
performance
Plusieurs solutions sappuyant sur une couche software :
Des systmes virtuellement partages
Des langages de programmation bass sur le modle
PGAS: langages espace d
dadressage
adressage global partitionn
Accs aux donnes via des rfrences locales et distantes
Des structures de donnes distribues avec adressage
global,
l b l prise
i en compte d
de llaffinit
ffi i mmoire
i
Ex : UPC, Coarray Fortran, X10,Titanium, Chapel
76

Conception dun programme parallle

77

Conception dun programme parallle


Loi dAmdhal
Speedup
p
p max ?
Soit S la fraction squentielle du programme,
P la fraction qui peut tre paralllise P
P=1-S
1S
N le nombre de processeurs
Soit t le temps dexcution
d excution en squentiel (temps du prog.
prog // sur 1 proc)
En thorie, le temps minimum en parallle est
(S + (1-S)/N)*t
1

Speedup maximum =

1-S + S
N

Speedup
linaire

78

Cot dun programme parallle


En pratique les algorithmes des versions squentielle et
parallle peuvent tre diffrents
Lacclration
L l ti parallle
lll peutt t
tre calcule
l l partir
ti
du temps dexcution du prog. // sur 1 proc.
dun temps dexcution uniprocesseur de rfrence
De plus, le calcul du cot thorique (par analyse de
complexit)
p
) p
peut difficilement p
prendre en compte
p les
spcificits des architectures
Do
D o parfois, en pratique, des acclrations surlinaires :
1
Sur des architectures hybrides distribue/partage
lorsque la taille du problme excde la capacit de la
mmoire locale
Lorsque lalgorithme parallle est plus efficace
79

Cot dun programme parallle

Influence du cot de communication sur lacclration


Supposons la fraction squentielle S=0
alors Tsq = Tcalcul
Tpar= Tcalcul + Tcomm
N
Tsq
Tpar
Tcomm
Tcalcul

Tcalcul

=T
calcul
N

+ Tcomm

1 + N Tcomm
Tcalcul

Est un paramtre important


80

Conception dun programme parallle


Vrifier dabord si un code // nest pas dj disponible pour ce
problme,
bl
d
dans une b
bibliothque
bl h
// :
Sinon :
Bien analyser le problme rsoudre :
Identifier les p
parties coteuses en temps
p de calcul
Dterminer si le problme peut rellement tre paralllis
Identifier les oprations qui interdisent la paralllisation (par ex
d
dpendance
d
d
de d
donnes)
)
Si on part dun programme squentiel, rechercher des algorithmes
ventuellement mieux adapts la paralllisation,
paralllisation vntuellement
restructurer le code
81

Conception dun programme parallle


Une des premires tapes consiste dcomposer le problme en
parties approximativement de mme taille qui seront affectes
sur diffrentes tches
2 mthodes
th d pour d
dcomposer ett affecter
ff t t
tches
h // :
Dcomposition de domaine : les donnes associes au pb sont
dcomposes
Dcomposition fonctionnelle : le problme est dcompos en
fonction du travail effectuer, chaque tche excute une portion
de la totalit du travail.
Le choix de la mthode est dict par lapplication.
Si la tche est petite on parle de grain fin
fin, quand la taille
augmente on parle de grain moyen, puis de gros grain
82

Dcomposition de domaines
Ce modle sera dautant plus efficace que le rapport :
((taille des sous-domaine/taille
/
des frontires)) est ggrand
(calculs / communications)
1D
block
1D
cyclic
y

2D
Bloc,*
l *
83

Dcomposition fonctionnelle
Ce modle est adapte
p
aux p
problmes q
qui
peuvent se dcouper naturellement en # tches
Le problme est vue comme un ensemble
dinstructions, on identifie des groupes
dinstructions indpendants
p
q
que lon affecte
diffrentes tches avec les donnes associes
Cest le placement des calculs qui dtermine le
placement des donnes
p
84

Communications
2 cas de figure :
Les tches travaillent indpendamment les unes des autres
autres, avec
trs peu de communications entre tches : le problme est dit
embarrassingly parallel
Les tches ont des donnes changer
changer,
un surcot si les comm. ne peuvent tre masques par les
calculs
des synchronisations entre tches
Temps de communication de B octets = + B
O temps de latence et temps de transfert d
d1
1 octet
Trop de petites communications D domination des temps de latence
(en gnral >> )
Concatner les petits messages pour envoyer de plus gros paquets
85
Dfinir les structures de communication et les algos appropris

Communications synchrones/asynchrones
Les communications synchrones requirent un
handshake entre tches qui changent les
donnes Elles sont dites bloquantes.
donnes.
bloquantes
Les comm. asynchrones sont non bloquantes.
Une tche ne sera pas bloque sur linstruction
l instruction
de comm, elle peut continuer traiter les
instructions suivantes pendant que la comm.
comm
seffectue.
86

Communications synchrones/asynchrones
Point point
une tche agit en tant que
metteur/producteur de donnes
donnes, et lautre
l autre
en tant que rcepteur/consommateur.
Collective
met en jeu le partage de donnes entre
plusieurs tches (plus que 2)
2), qui sont
souvent spcifies comme tant membres
dun
d
un groupe
groupe. Des exemples classiques :
broadcast, gather, reduction, scatter

87

Communications collectives

88

Granularit et load balancing


Notion de load balancing : consiste distribuer
le travail de faon ce que toutes les tches
soient occupes un maximum du temps
temps.
Grain fin
Peu de calcul entre les communications
Facilite le load balancing
Risque de surcot d aux comm. et aux synchros

Gros grain
Beaucoup de calculs entre 2 comm.
p
Plus facile damliorer les performances
Plus difficile damliorer le load balancing
89

Programme // versus Programme squentiel


+ de CPUs
Souvent + de mmoire pour la duplication des
donnes
Sur des excutions de courte dure,, la version //
peut tre plus lente que la version squentielle
(surcot associ la mise en uvre de
llenvironnement
environnement //)

90

Scalabilit
Gnralement,
Gnralement des limites intrinsques
lalgorithme
Le hardware joue un rle important (dbit bus
mmoire-cpu sur SMP, dbit rseau de comm.,
taille et architecture mmoire
mmoire, vitesse d
dhorloge
horloge du
proc., )
Les systmes et les hardware peuvent jouer sur la
scalabilit et donc sur la portabilit
91

Conclusion
Vers une augmentation du nombre de coeurs plutt que

de la frquence dhorloge
Vers des cots de transferts de plus en + levs par
rapport au calcul
Programmation de plus en plus complexe :
Ncessit dune bonne connaissance des architectures
paralllisation obligatoire
p
g
pour un ggain de p
p
performance,, en
tenant compte des flots de donnes
Ncessit dexploiter le paralllisme aux diffrents niveaux de
hardware
Programmation sur des architectures hybrides avec
ventuellement diffrents types de processeurs, et diffrents
modles
de programmation
92

Conclusion
Exploitation des performances des processeurs

graphiques ou des manycores: produire un code


extrmement paralllis, sinon on atteint que
quelques % de la puissance disponible.
disponible
Des architectures qui voluent trs vite, il faut
sadapter continuellement au niveau des softs
Des efforts au niveau recherche pour fournir des
outils pour faciliter le travail du programmeur

93

Rfrences
Un certain nombre dlments de ces slides sont issus des
prsentations ou des documentations prsentes sur les sites
suivant :
http://www.realworldtech.com
http://calcul.math.cnrs.fr
http://www.ci-ra.org sminaire trends in computer
architecture W. Jalby
p //
p
g
g /
/p
_comp
p
https://computing.llnl.gov/tutorials/parallel
http://www.citutor.org ncsa (national center for
supercomputing)
http://www.irisa.fr/ORAP
http://www irisa fr/ORAP (organisation associative pour le
paralllisme)
http://www.idris.fr sminaires de lIDRIS
www.intel.com
www.nvidia.fr

94

You might also like