Vous êtes sur la page 1sur 21

Partie 1

Architectures parallles



Chapitre 1
1
1) Introduction :
Larchitecture des ordinateurs, quil sagisse de microprocesseurs ou de
supercalculateurs, est fortement influence par lexploitation dune proprit fondamentale
des applications : le paralllisme. Un grand nombre darchitectures prsentes dans les sites
informatiques sont parallles. Ce type darchitecture touche une large gamme de machines
depuis les PC biprocesseurs jusquaux supercalculateurs. Aujourdhui, la plupart des serveurs
sont des machines parallles (des multiprocesseurs).
Lexploitation du paralllisme dans larchitecture des ordinateurs est ne de la
conjonction de trois lments : les besoins des applications, les limites des architectures
squentielles et lexistence dans les applications de la proprit de paralllisme.
1.1.1 Besoins des applications :
La notion de paralllisme est souvent attache celle de la performance dexcution des
applications. Ce dernier terme recouvre diffrentes notions suivant les besoins des
applications. En effet, quel que soit le domaine dapplication, le paralllisme peut tre
exploit pour rpondre deux besoins : la puissance de traitement et/ou la disponibilit.
La puissance de traitement recouvre deux grandes notions : la latence de traitement et le dbit
de traitement. La latence reprsente le temps ncessaire pour lexcution dun traitement. Le
dbit reprsente le nombre de traitements excutables par unit de temps.
1.1.2 Limites de lapproche microprocesseur :
Lutilisation simultane de plusieurs ressources entrane la ncessit de grer la coordination
de ces ressources et complexifie la programmation.
Aussi, lexploitation du paralllisme ne peut se concevoir quen rponse aux limitations de
lexcution squentielle. Les ordinateurs squentiels (quips dun seul processeur) sont
construits autour des microprocesseurs. La standardisation de ce composant fait queles
caractristiques des diffrents microprocesseurs sont trs semblables. Les limites de
lexcution squentielle dcoulent donc des limites des microprocesseurs actuels :
performance intrinsque, temps et dbit daccs la mmoire. Le paralllisme permet aussi de
pallier le problme de la limite de capacit daccs dun microprocesseur la mmoire en
multipliant les bancs mmoire. Il permet de proposer une rponse au problme de la tolrance
aux pannes, en introduisant de la redondance et en liminant le point de dfaillance unique qui
existe lorsque larchitecture ne comporte quun seul processeur. La principale motivation est
la limite en performance des micro-processeurs. Lobjectif de 1 traFlops avant lan 2000 ne
peut tre atteint par un microprocesseur mme si lvolution des performances des
microprocesseurs depuis 1985 suit une courbe exponentielle dans le temps. Les
microprocesseurs possdent aussi dautres limites comme linadquation de leur format de
donnes et de leurs oprations aux caractristiques de certaines applications telles que le
traitement dimages ou la comparaison de squences biologiques. Il peut tre prfrable, en
termes de performance, de cot et de compacit ,davoir recours une ralisation parallle
spcifique ; cest--dire de concevoir un ordinateur dont les oprateurs de traitement, lorgani-
sation mmoire, etc. sont adapts aux calculs raliser. Toutefois, il faut remarquer que les
Chapitre 1
2
solutions spcifiques sont vite concurrences par des standards lorsquil existe un march
suffisamment large. Ainsi, les nouveaux microprocesseurs intgrent des units fonctionnelles
spcialises et de nouveaux jeux dinstructions(MMX, Acti-Vect, etc.) pour rpondre aux
besoins des applications de traitement dimages.
1.1.3 Lexistence dans les applications de la proprit de paralllisme :
Paralllisme de donnes:
la mme oprations est ralise par plusieurs processeurs sur des
donnes diffrentes: exemple : addition de deux matrices.

Paralllisme de contrle:
Des oprations diffrentes sont ralises simultanment.
Indpendance /dpendance du flot (architecture pipeline: dupliquer les
units de traitements).
1.2 Dfinition :

Les ordinateurs parallles sont des machines qui comportent une architecture parallle, constitue
de plusieurs processeurs identiques, ou non, qui concourent au traitement d'une application. La
performance d'une architecture parallle est la combinaison des performances de ses ressources et
de leur agencement. (Latence, dbit).
Architectures parallles ce rsume en :
pas de limite de mmoire.
pas de limite de processeurs.
acclration des calculs complexes ou coteux en temps d'occupation CPU(calcul matriciel,
simulation numrique, transforme de fourier...).
calcul rptitif sur un large ensemble de donnes structur.
traitement indpendant.
1.3 Limites du paralllisme :
les dpendances de donnes :
Les instructions doivent tre indpendante cest--dire, excuter dans un ordre quel conque et
simultanment.




Les dpendances de contrle :
Chapitre 1
3







les dpendances de ressources :
Nombre insuffisant de processeurs pour effectuer les instructions en parallle alors qu'elles sont
indpendantes les unes des autres.
rapport temps de communication / temps de calcul :
Il n'est pas toujours avantageux de parallliser une application. Les communications peuvent dans
certain cas augmenter le temps d'excution.

















Chapitre 2
4


2) Les architectures parallles :

Afin de dfinir et comparer les architectures de machines, plusieurs classifications ont t
dveloppes.
2.1 Classification de Flynn :
La classification la plus connu et celle de Flynn, qui caractrise les machines suivants leurs flot de
donnes et instructions, ce qui donne quatre catgories :
SISD (<< Single Instruction stream, Single Data stream >>). Cette catgorie correspond
Aux machines squentielles conventionnelles, pour lesquelles chaque opration s'effectue
sur une donne la fois.

FIG. 2.1

Lunit de contrle (UC), recevant son flot dinstruction (FI) de lunit mmoire (UM), envoie les
instructions lunit de traitement (UT), qui effectue ses oprations sur flot de donnes (FD)
provenant de lunit mmoire.
MISD (<< Multiple Instruction stream, Single Data stream >>). Cette catgorie
Regroupe les machines spcialises de type < systolique >, dont les processeurs, arrangs selon une
topologie fixe, sont fortement synchronises.

FIG. 2.2

Chapitre 2
5




SIMD (<< Single Instruction stream, Multiple Data stream >>). Dans cette classe
d'architectures, les processeurs sont fortement synchroniss, et excutent au mme instant
la mme instruction, chacun sur des donnes diffrentes. Des informations de contexte (bits
de masquage) permettent d'inhiber l'excution d'une instruction sur une partie des
processeurs.

FIG. 2.3
Ces machines sont adaptes aux traitements rguliers, comme le calcul matriciel sur matrices
pleines ou le traitement d'images. Elles perdent en revanche toute efficacit lorsque les
traitements effectuer sont irrguliers et dpendent fortement des donnes locales, car
dans ce cas les processeurs sont inactifs la majorit du temps.
Ainsi, pour excuter une instruction conditionnelle de type if. . . then. . . else , l'ensemble des
instructions des deux branches doit tre prsent aux processeurs, qui dcident ou non de
les excuter en fonction de leur bit local d'activit, positionn en fonction des valeurs de
leurs variables locales.
Chacun des processeurs n'excutera effectivement que les instructions de l'une des
branches.

FIG. 2.4

MIMD (<< Multiple Instruction stream, Multiple Data stream >>). Cette classe comprend les
machines multi-processeurs, ou chaque processeur excute son propre code de manire
Chapitre 2
6
asynchrone et indpendante. On distingue habituellement deux sous-classes, selon que les
processeurs de la machine ont accs une mmoire commune (on parle alors de MIMD a
mmoire partage, << multiprocessor>>) .ou disposent chacun d'une mmoire propre
(MIMD a mmoire distribue, <<multicomputer>>).Dans ce dernier cas, un rseau
d'interconnexion est ncessaire pour changer les informations entre processeurs.






Cette classification est trop simple, car elle ne prend en compte ni les machines vectorielles
(qu'il faut ranger dans la catgorie SISD et non pas SIMD, car elles ne disposent que d'un seul
flot mmoire), ni les diffrences d'architecture mmoire.




Chapitre 2
7
2.2 Classification de Raina :
Une sous-classification tendue des machines MIMD, due Raina, et illustre En Figure 2.7, permet
de prendre en compte de manire fine les architectures mmoire, selon deux critres :
l'organisation de l'space d'adressage :

SASM (<< Single Address space, Shared Memory >>): memoire partage.
DADM (<< Distributed Address space, Distributed Memory >>) : mmoire distribue,
sans accs aux donnes distantes. L'change de donnes entre processeurs
s'effectue ncessairement par passage de messages, au moyen d'un rseau de
communication ;
SADM (<< Single Address space, Distributed Memory >>) : mmoire distribue, avec
espace d'adressage global, autorisant ventuellement l'accs aux donnes situes
sur d'autres processeurs.
le type d'accs mmoire mis en uvre :

NORMA ( No Remote Memory Access ) : pas de moyen d'accs aux Donnes
distantes, ncessitant le passage de messages ;
UMA ( Uniform Memory Access ) : accs symtrique la mmoire, de cout
identique pour tous les processeurs ;
NUMA ( Non-Uniform Memory Access ) : les performances d'accs dpendent de
la localisation des donnes ;
CC-NUMA ( Cache-Coherent NUMA ) : type d'architecture NUMA Intgrant des
caches ;
OSMA ( Operating System Memory Access ) : les accs aux donnes distantes sont
gres par le systme d'exploitation, qui traite les dfauts de page au niveau logiciel
et gre les requtes d'envoi/copie de pages distantes ;
COMA ( Cache Only Memory Access ) : les mmoires locales se comportent
comme des caches, de telle sorte qu'une donne n'a pas de processeur Propritaire
ni d'emplacement dtermin en mmoire.








Chapitre 2
8

2.3 Exemple de machines parallles :

Marvel : alpha EV7, 2 64 processeurs, 16 Go 512 Go de mmoire. Tore 2D, 8 Go/s par
processeur.Puissance : 2.4 Gflops/processeur.
NEC SX-6 : supercalculateur vectoriel, 8 teraflops, 64 Go de mmoire, 32 Gb/s
Cray T3E : DEC alpha EV5, 600 Mflops, 16 2048 processeurs, 64 Mo 2Go de mmoire,
rseau d'interconnexion en tore 3D (bande passante de 2 128 Go/s).
SGI origin 3000 : numa, 2 1024 processeurs, 512 Mo 1 To de mmoire, 0.8 1 Gflops
HP superdome : 2.2 3 Gflops, 2 64 processeurs, 4 Go 256 Go de mmoire, crossbar, 12
51 Go/s.
IBM SP2 : Scalable POWERparallel, RS/6000 480 Mflops, 256 Mo de mmoire, ou 540
Mflops, 1 2 Go de mmoire vive. Communication par passage de messages travers un
rseau cross-bar deux niveaux; bande passante de 150 Mo/s.
SP 4 : 4 5.2 Gflops, 1 32 processeurs par noeuds, 8, 16 ou 32 noeuds
compaq ES45 : 1 2 Gflops, 4 processeurs EV68, 32 Go de mmoire, configuration
trucluster.
















Chapitre 2
9

Partie 2
Cuda : Compute Unified Device Architecture



Plan :
Quest-ce que CUDA ?
GPU Computing CUDA
Caractristiques GPU / CPU
Traitement parallle avec CUDA
Plateforme de traitement parallle CUDA
Informations complmentaire
Un Cas d'utilisation












Chapitre 2
10

1. Quest-ce que CUDA ?
CUDA est une architecture de traitement parallle dveloppe par NVIDIA permettant de
dcupler les performances de calcul du systme en exploitant la puissance des processeurs
graphiques (GPU).
Alors que des millions de GPU compatibles avec CUDA ont t vendus, des milliers de
dveloppeurs de logiciels, de scientifiques et de chercheurs utilisent CUDA dans une grande
gamme de domaines, incluant notamment le traitement des images et des vidos, la chimie
et la biologie par modlisation numrique, la mcanique des fluides numrique, la
reconstruction tomodensitomtrique, lanalyse sismique, le ray tracing et bien plus encore.
2. GPU Computing CUDA :
2.1 Caractristiques GPU / CPU :
Processeur graphique :
Un processeur graphique, ou GPU (de l'anglais Graphics Processing Unit) est un circuit
intgr prsent sur une carte graphique et assurant les fonctions de calcul de l'affichage. Un
processeur graphique a gnralement une structure hautement parallle qui le rend efficace
pour une large palette de tches graphiques comme le rendu 3D, en Direct3D, en OpenGL, la
gestion de la mmoire vido, traitement du signal vido, dcompression Mpeg, etc.

Voici un tableau vous prsentant les diffrences entre les taches ralises par le GPU et le
CPU :


Le GPU travaille avec des donnes vectorielles, alors que le CPU travaille avec toutes types de
donnes.




Chapitre 2
11


Architecture des GPU et CPU :
Nous allons vous prsenter la diffrence entre l'architecture d'un processeur graphique, d'un
processeur central. Le schma suivant permet de mieux comprendre.


Les CPU sont conus pour tirer un maximum de performances d'un flux d'instructions, leurs
traitements sont majoritairement effectus sur des donnes diverses (entier, flotant), les
accs la mmoire sont alatoires et, dans un souci de scurit, celui-ci effectue de
nombreux branchements. Depuis un certain nombre d'annes, nous pouvons voir que les
architectures des processeurs sont construites pour parallliser le maximum d'instructions
simultanment. Ils possdent un grand nombre de mmoire cach pour acclrer les accs.
Le travail des GPU consiste prendre un ensemble de donnes, les polygones, et de crer un
ensemble de pixels partir des polygones. Nous pouvons voir que les deux ensembles sont
indpendants, et peuvent tre traits simultanment. C'est pourquoi, nous pouvons voir que
le GPU comporte un grand nombre d'ALU et non de mmoire. Nous pouvons galement voir
que le nombre d'unit de contrle est faible, cela vient du fait qu'aucune scurit n'est mise
en place pour acclrer les calculs. Les vrifications effectues sont le dpassement de
mmoire ou les oprations non autorises, comme la division par 0.






Chapitre 2
12


Puissance de calcul :
Le nombre de FLOPS est une mesure commune de la vitesse d'un systme informatique. Un
FLOP signifie une opration virgule flottante par seconde.









D'aprs ce graphique, nous pouvons voir qu'avant la sortie du GPU Computing, et plus
prcisment CUDA, la puissance des GPU et CPU taient semblables. Aprs la prsentation
des outils de NVidia, les constructeurs ont entrepris d'amliorer les performances des cartes
graphiques pour attirer un nouveau public, voulant utiliser la puissance des GPU. De plus,
nous pouvons voir que la puissance des CPU reste relativement constante, cause de
problmes matriels, tels que la temprature croissante causant l'endommagement des
composants (Il y a 10 ans, la finesse de gravure tait de 96 nm, actuellement elle est de 32
nm. Cela permet un meilleur refroidissement, et ainsi une plus basse consommation
calorifique).
Chapitre 2
13



Prsentation de l'API CUDA :
Composant de l'API :
L'API CUDA se compose en trois parties :
Runtime : C'est l'interface entre le GPU et l'application, en fournissant quelques
automatismes.
Driver : Son rle est de transmettre les calculs de l'application au GPU.
Librairies : CUDA est livr avec les implmentations de l'algorithme BLAS et FFT,
optimise pour cette architecture.



Vocabulaire :
Un certain vocabulaire est associ au dveloppement sur GPU, je vais vous en faire la liste
dans les lignes suivantes.
L'hte est le CPU, c'est lui qui demande au priphrique (le GPU) d'effectuer les calculs.
Un kernel est une portion parallle de code excuter sur le priphrique.
Chapitre 2
14
Chacune de ses instances s'appelle un thread.
Une grille est constitue de blocs. Chaque bloc est constitu de threads.
Un bloc est un lment des calculs, dissociable des autres blocs : les blocs ne doivent donc pas tre
excuts dans un certain ordre : paralllement, conscutivement ou toute autre combinaison est
possible. C'est pourquoi les threads ne peuvent communiquer qu'avec des threads du mme bloc.
Un thread est excut par un processeur : posons donc l'galit entre le thread et le processeur.
Ainsi, le bloc est le multiprocesseur, tandis que la grille reprsente l'entiret de la carte.

















Architecture Matrielle :
Prsentation :
L'architecture matrielle, c'est dire la carte graphique, est compose en deux
grandes entits :
Multiprocesseur : ces processeurs implmentent le modle d'excution SMIT (single
instruction, multiple thread).
Ils sont constitus de plusieurs processeurs excutant chacun une instance de kernel
(thread).
Chapitre 2
15
Mmoires : il en existe plusieurs types que nous allons prsenter dans la section
suivantes.
Mmoire :
Dans cette partie, nous allons vous prsenter les diffrents types de mmoire qui composent le
matriel. Nous irons de la mmoire la moins rapide, c'est dire celle qui est en plus grande
quantit, jusqu' la mmoire la plus rapide, celle qui est plus couteuse.













Mmoire globale :
Cette mmoire est accssible l'ensemble des multiprocesseurs. Sa bande passante est trs
importante, environ 150 Go/s, cependant sa latence est importante. Lorsque vous achetez une
carte graphique, la capacit de mmoire indique fait rfrence ce type de mmoire

Mmoire partage :
Cette mmoire est propre un multiprocesseur .Sa latence est plus faible que la mmoire
globale, au dtriment de sa taille qui est de environ 8Mo.
Les registres : Cette mmoire est propre un processeur, son accs est rapide, environ 1
cycle, mais sa taille est rduite, environ 8 Ko.
Les textures : Cette mmoire est propre un multiprocesseur,
et offre des mcanismes d'acclration. Elle permet de stocker les textures,
comme dans un jeux et vite certains accs au disque.
Chapitre 2
16
Autre : Il existe d'autres types de mmoire en fonction de la carte graphique, et du niveau
d'anciennet du priphrique.
3. Traitement parallle avec CUDA
Le calcul informatique a volu en passant du traitement central exclusif des CPU vers les
capacits de co-traitement offertes par lassociation du CPU et du GPU. Pour permettre ce
nouveau paradigme informatique, NVIDIA a conu larchitecture de traitement parallle
CUDA, aujourdhui incluse dans les GPU GeForce, ION Quadro, et Tesla en offrant ainsi une
base matrielle significative aux dveloppeurs dapplications.
Du ct du grand public, la plupart des applications majeures de traitement vido, incluant
des produits dElemental Technologies, MotionDSP et LoiLo, Inc, sont ou seront bientt
acclres par CUDA.
Du ct de la recherche scientifique, CUDA a t reu avec enthousiasme. CUDA permet par
exemple dacclrer AMBER, un programme de simulation de dynamique molculaire utilis
par plus de 60 000 chercheurs du public et du priv afin dacclrer la dcouverte de
nouveaux mdicaments pour lindustrie pharmaceutique.
En matire de finance, Numerix et CompatibL ont annonc leur support de CUDA pour une
nouvelle application de recherche de risques de contrepartie, acclrant jusqu 18x les
procdures de calcul existantes. La plateforme Numerix est utilise par plus de 400
institutions financires.
Le parc existant de GPU Tesla, offrant dimportantes capacits en matire de calcul par le
GPU, permet galement de jauger le succs de CUDA. Plus de 700 clusters de GPU sont
aujourdhui actifs dans le monde entier. De nombreux groupes, allant de Schlumberger et
Chevron (secteur nergtique) BNP Paribas (secteur banquier) et figurant dans la liste des
500 entreprises les plus importantes au monde publie par Fortune, ont adopt CUDA.
Depuis l'avnement de Windows 7 de Microsoft et de Snow Leopard dApple, le calcul par le
GPU est galement une ralit pour le grand public. Dans ces nouveaux systmes
dexploitation, le GPU ne tiendra pas seulement lieu de processeur graphique, il jouera
galement un rle de processeur parallle pour toutes les applications.
4. PLATEFORME DE TRAITEMENT PARALLLE CUDA
La plateforme CUDA inclut des extensions C et C++ qui permettent lexpression de donnes
denses et complexes dans un contexte de paralllisme.
Les programmeurs peuvent choisir dexprimer le paralllisme avec des langages hautes
performances comme C, C++, Fortran ou avec des standards ouverts comme les directives
OpenACC.
La plateforme de calcul parallle CUDA est aujourdhui dploye dans des milliers
dapplications acclres par les GPU et elle est prsente dans plus de 1000 dossiers de
recherche.


Chapitre 2
17










5. Informations complmentaire
Compilation :
La compilation est ralise grce au compilateur NVCC, fournie dans le toolkit de CUDA.
Celui-ci gnere deux fichiers contenant du code assembleur :
Le premier contient l'ensemble des instructions pour le processeur central,
CPU : CPU Code.
Le second fichier contient l'ensemble des instructions pour la carte graphique,
GPU : PTX Code.












Chapitre 2
18

Pour utiliser la technologie, vous devez installer les lments suivants :
Driver Spcifique Nvidia : permet d'exploiter les fonctionnalits CUDA de votre
hardware.
Toolkit : gnrer l'ensemble des excutables grce au compilateur NVCC

6. Un cas dutilisation :

CRarK :
cRARk est un utilitaire en ligne de commande conu pour retrouver les mots de passe oublis
des archives RAR des versions 2.x 3.x. Le programme teste les combinaisons possibles en
utilisant des mots de passe dfinis partir de liste ou de dictionnaire. L'application exploite
la technologie NVIDIA CUDA qui rend les phases de calculs beaucoup plus rapides.

Les tests suivants ont t raliss :
Dcodage d'un mot de passe de longueur 4 caractres alpha-numrique sur le GPU
Dcodage d'un mot de passe de longueur 4 caractres alpha-numrique sur le CPU
Dcodage d'un mot de passe de longueur 5 caractres alpha-numrique sur le GPU
Dcodage d'un mot de passe de longueur 5 caractres alpha-numrique sur le CPU
Ces tests permettent de dmontrer la puissance de calculs des cartes graphiques actuelles.

La configuration de test est la suivante :
intel i5 750 @3.4 GHZ
8Go DDR3 1600MhZ
Nvidia 560 GTX 1Go







Chapitre 2
19

Nous pouvons voir que le dcodage sur GPU est beaucoup plus rapide que sur le CPU.
Lorsque le mot de passe est de 3 caractres, le gain est minime, cependant, lorsque le mot
de passe est de 4 caractres, le temps de calcul est rduit d'environ 200 pourcents.

Cette application n'est pas optimise pour traiter des mots de passe de plus de 10
caractres. De plus, ce logiciel exploite la version 2.0 de CUDA, alors que la version actuelle
est 4.2. Je pense que de nombreuses amliorations peuvent tre apportes.




















Chapitre 2
20

Bibliographie :

Partie 1 : Architecture Parallle

1) cours de Aurlia Marchand les architectures parallles.
2) Introduction de parallelisme et au architectures paralleles-
Sciences_de_L_Ingenieur
3) Architectures et Systmes de Calculateurs Parallles- Franois PELLEGRINI
ENSEIRB




Partie 2 : Cuda


1) http://www.nvidia.fr/object/gpu-computing-fr.html
2) Compute Unified Device Architecture Wikipdia.html
3) http://www-igm.univ-mlv.fr/~dr/XPOSE2011/CUDA/index.html

Vous aimerez peut-être aussi