rapport de master recherche -...

33

Upload: others

Post on 06-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

MASTER Ingénierie des Systèmes Industriels et des ProjetsSPECIALITE : Systèmes Dynamiques des Signaux

Année 2008/2009

Rapport de Master Recherche

Présenté et soutenue par :

Maxime LASTERA

le 2 juillet 2009

Au sein de l'Institut de Sciences et Techniques de l'Ingénieur d'Angers

TITRE

Utilisation des cartes graphiques pour le calcul scienti�que

JURY

Président : L.HARDOUIN ProfesseurExaminateurs : S.LAGRANGE Maître de conférence

M.LHOMMEAU Maître de conférenceV.ROULLIER ATER

Encadrants : Mehdi LHOMMEAU et Vincent ROULLIER

Laboratoire : Laboratoire d'Ingénierie des Systèmes Automatisés

Page 2: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Table des matières

1 GPU vs CPU 2

1.1 Historique des GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Architecture des GPU et CPU . . . . . . . . . . . . . . . . . . . . . 31.3 Comparaison des GPU et CPU . . . . . . . . . . . . . . . . . . . . 4

2 Parallélisation 7

2.1 Intérêt et solution possible . . . . . . . . . . . . . . . . . . . . . . . 72.2 Modèle de parallélisation . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2.1 Modèle PRAM . . . . . . . . . . . . . . . . . . . . . . . . . 72.2.2 Modèle BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.3 Évaluation du parallélisme . . . . . . . . . . . . . . . . . . . . . . . 12

3 CUDA 15

3.1 Dé�nition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2 l'API CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.3 Travaux réalisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4 Analyse par intervalles 17

4.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.2 Travaux e�ectués . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.3 Arithmétique par intervalles . . . . . . . . . . . . . . . . . . . . . . 17

4.3.1 Dé�nition d'un intervalle . . . . . . . . . . . . . . . . . . . . 174.3.2 Dé�nition d'un pavé . . . . . . . . . . . . . . . . . . . . . . 184.3.3 Dé�nition d'une fonction d'inclusion . . . . . . . . . . . . . 19

4.4 Algorithme SIVIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.4.1 Dé�nition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5 Axe de recherche 23

5.1 Utilisation de Cuda pour SIVIA . . . . . . . . . . . . . . . . . . . . 235.2 Evalutation de l'algorithme parallèle SIVIA . . . . . . . . . . . . . 24

5.2.1 Cas monoprocesseur . . . . . . . . . . . . . . . . . . . . . . 245.2.2 Cas multiprocesseurs . . . . . . . . . . . . . . . . . . . . . . 25

5.3 Estimation à erreurs bornées . . . . . . . . . . . . . . . . . . . . . . 275.3.1 Introduction à l'estimation à erreurs bornées. . . . . . . . . 27

Bibliographie 31

Page 3: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Introduction

Ces dernières années, l'amélioration des performances des processeurs général-istes s'est faite plus par l'introduction des architectures multi­coeurs que par uneaugmentation de la fréquence d'horloge, devenue de plus en plus di�cile. Cettetendance se retrouve aussi chez les concepteurs de GPU (Graphics ProcessingUnits) qui sous l'in�uence de l'industrie du jeu vidéo ont produits des processeursgraphiques très performants. En e�et, l'architecture des cartes graphiques mod-ernes est de plus en plus optimisée et permet de considérer ces cartes commedes unités de calcul hautes performances. Les performances des GPU en font descibles de choix pour de nouvelles applications en calcul scienti�que. Si à l'origineces calculs étaient liés à des applications graphiques, de plus en plus de mécan-ismes permettent d'utiliser le GPU à toute autre �n, o�rant ainsi une alterna-tive au processeur classique. Parmi ces outils, nous retrouvons OPENGL, CUDA(NVIDIA), SHALLOWS ou encore Direct3D et bientôt Opencl. D'un point de vueméthodologique, les algorithmes GPU nécessitent une écriture parallèle des opéra-tions en étant au plus près des spéci�cités du matériel. Les di�cultés sont donc, àla fois d'ordre algorithmique, mais aussi techniques.

1 GPU vs CPU

1.1 Historique des GPU

Un GPU (Graphics Processing Units) ou processeur graphique est utilisé parune carte graphique pour libérer le CPU (Central Processor Unit) des calculsspéci�ques à l'a�chage.

Dans les années 1970, les puces ANTIC (Alpha-Numeric Television InterfaceCircuit) et CTIA(Color Television Interface Adapter) sont les premières à utiliserun mode texte et un mode graphique. Elles sont toutes les deux utilisées dans lafamille 8 bits des Atari.

La première carte graphique fut réalisée par IBM le 12 aout 1981 pour le PC5150. Le processeur 8088 à 4,77 mhz gérait le rendu graphique. La carte utilise unmode graphique CGA : (Color Graphic Adapter) qui o�re une résolution graphiquede 320x200 points en 4 couleurs ou 640x200 points en 2 couleurs.

Les premiers GPU (Graphics Processing Unit) sont arrivés pour Nvidia en 1999avec la Geforce 256 cadencée à 120mhz avec 64 Mo de mémoire à 166mhz. Ellesupporte la bibliothèque Direct X 7 de Microsoft et OpenGL 1.2.

En 2000 ATI lance son premier GPU avec la carte R100 cadencée à 167mhz

2

Page 4: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

avec 64 Mo de mémoire à 167mhz. elle supporte Direct X 7 et OpenGL 1.3.

ATI lance en 2006 l'interface de programmation CTM, ou Close to Metal, avecson GPU 580 cadencé à 600mhz et secondé par 1 Go de GDDR3 à 1300 mhz.Cette interface permet aux développeurs un accès direct aux fonctions du GPU,sans devoir passer par les API Direct X ou OpenGL.

La première carte graphique Nvidia compatible CUDA est arrivée avec ledéveloppement du GPU G80 en 2006. Elle est cadencée à 515mhz et secondéepar 768 Mo de mémoire à 900mhz et supporte la bibliothèque Direct X 10.

Ci-dessous un récapitulatif de l'historique des cartes graphiques des principauxacteurs de ces 10 dernières années.

Fig. 1 � Historique des GPU

1.2 Architecture des GPU et CPU

Un CPU dispose de peu d'unités de calcul (cf �gure ci-dessous), d'un cachevolumineux et d'une unité de contrôle importante. Cela est dû à sa mission : gérerplusieurs tâches très di�érentes en parallèle qui nécessitent beaucoup de données.

3

Page 5: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Ainsi, les données sont stockées en cache pour accélérer leur accès, et l'unité decontrôle va optimiser le �ux d'instructions pour maximiser l'occupation des unitésde calcul et optimiser la gestion du cache.

À l'inverse, un GPU dispose d'un nombre important d'unités de calcul qui dis-posent de peu de cache et de faibles unités de contrôle. Cela lui permet de calculerde façon massivement parallèle le rendu de ces petits éléments indépendants, touten ayant un débit important de données traitées.

Fig. 2 � Architecture des GPU et CPU

1.3 Comparaison des GPU et CPU

Dans le cas de calculs massivement parallélisables sur des nombres �ottantsen simple précision le GPU dispose d'un avantage non négligeable sur le CPU (cf�gure ci-dessous).

4

Page 6: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Fig. 3 � Performance des GPU et CPU

Fig. 4 � Bande passante des GPU et CPU

5

Page 7: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Si la bande passante de la mémoire est e�ectivement importante, la latencepour y accéder l'est également (mais optimisable). De plus, le rapatriement dedonnées depuis la RAM de l'ordinateur à la mémoire graphique subit la contraintedu bus de la carte graphique (désormais PCI-Express 2.0), qui atteint 8Go/s (dansle meilleur des cas).

Exemple : A�n de comparer les performances du GPU et du CPU en terme detemps de calcul, nous allons présenter deux exemples qui expliquent la variation dechacune des deux composantes en fonction de deux paramètres, nombre de blocset complexité du problème.

Dans le premier graphique, en fait varier le nombre de blocs et en �xant lenombre d'éléments traités c'est-à-dire, la complexité du problème. Dans le cas duCPU chaque bloc peut être vu comme un thread et donc être exécuté sur un coredi�érent. Sur le CPU, les performances sont identiques quel que soit le nombrede cores. Dans le cas du GPU, il faut au moins 2 blocs pour qu'il surpasse laperformance du CPU. Ensuite, le temps d'exécution décroît jusqu'à 16 blocs pourque les 16 multiprocesseurs soient exploités, et à partir de 32 blocs sa performancedemeure identique, du moins pour cet exemple.

Fig. 5 � GPU versus CPU en faisant varier le nombre de blocs

Le second exemple consiste à augmenter la complexité du problème sachantque le nombre de blocs étant �xé à 32. On s'aperçoit que le temps de calculcroît linéairement avec le CPU, contrairement au GPU en dessous d'une certainecomplexité, ce qui indique que le coût de gestion reste élevé. Il ne su�t donc pasde traiter un nombre élevé de données, mais pour que l'utilisation du GPU soitadéquate, il faut que le problème traité soit su�samment complexe.

6

Page 8: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Fig. 6 � GPU versus CPU en faisant varier la complexité du problème

2 Parallélisation

2.1 Intérêt et solution possible

L'informatique permet de résoudre de nombreux problème, cependant, la de-mande est toujours plus importante quant à la complexité et la taille des problèmesà traiter.

Selon une approche classique on peut diminuer le temps de calcul en e�ectuantplus vite chaque ensemble d'opérations. En considérant une approche parallèle, onva diminuer le temps de calcul en exécutant simultanément plusieurs opérations.

La parallélisation peut exister à plusieurs niveaux, au niveau processeurs, avecles unités de calcul, les pipelines, les multi-coeurs, et au niveau machines avecles machines parallèles et stations multi-processeurs(SMP). La parallélisation aun double intérêt que ce soit pour l'augmentation de la puissance de calcul oul'augmentation de la capacité de stockage.

2.2 Modèle de parallélisation

2.2.1 Modèle PRAM

Dé�nition Le modèle PRAM (Parrallel Random Access Machine) est un conceptabstrait de machine parallèle avec un nombre illimité de processeurs travaillant defaçon synchrone et de bancs de mémoire. Il s'agit d'un ensemble de RAM (RandomAccess Machine) travaillant sur une mémoire partagée (cf �gure 7).

7

Page 9: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Fig. 7 � Modele PRAM

Caractéristiques du modèle. La PRAM consiste en un nombre non borné deprocesseurs indexés par les entiers naturels. Ces processeurs sont des RAM muniesdes opérations et instructions usuelles, qui travaillent sur le même programme defaçon synchrone, avec un coût uniforme, et partagent une mémoire globale de taillenon bornée au travers de laquelle ils communiquent. Le coût des opérations arith-métiques est constant. Bien que traitant les mêmes instructions, les processeurspeuvent travailler sur des données di�érentes, un tel modèle est dit SIMD (SingleInstruction Multiple Data). A chaque pas, chaque processeur peut accéder à unbanc mémoire, soit pour une lecture soit pour une écriture, ce qui pose le problèmede la résolution des con�its.

Ce modèle néglige les contraintes imposées par une architecture plus spéci�que(nombre non borné de processeur). Il n'y a donc aucune limitation dans le paral-lélisme, ce qui implique de pouvoir faire tous les liens possibles entre processeuret banc mémoire, ceci n'étant pas physiquement réalisable. Cependant, des méth-odes existent pour simuler un tel ordinateur idéal sur des ordinateur parallèlesplus réalistes. Des techniques de gestion du routage des messages et de mesure dela mémoire ont été développées, qui montrent qu'une implantation e�cace est ene�et possible dans de nombreux cas.

Exemple Considérons une PRAM composée de p processeurs P0,...Pp-1 et dem positions mémoire M0 .. Mm-1. Chaque processeur peut Lire(Mi), Calculer(f),Ecrire(Mi). Toutes ces opérations atomiques s'e�ectuent de manière synchrone.

4 variantes selon les accès à la mémoire commune :

8

Page 10: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

PRAM-EREW : Exclusive Read Exclusive WritePRAM-CREW : Concurrent Read Exclusive WritePRAM-ERCW : Exclusive Read Concurrent WritePRAM-CRCW : Concurrent Read Concurrent Write

Le cas CW peut amener à un con�it dans le cas où plusieurs processeurs peu-vent écrire le contenu de la même case mémoire.Il existe 3 modèles pour le résoudre.

Modèle commun : tous les processeurs doivent écrire la même valeur.Modèle arbitraire : un quelconque processeur écrit sa valeurModèle prioritaire : les processeurs sont classés suivant un ordre de priorité,

seul le plus prioritaire accède à la mémoire.

2.2.2 Modèle BSP

Dé�nition Ce modèle précise les coûts d'accès à le mémoire partagée et les coûtsde synchronisation par des paramètres g et l décrivant les capacités du matériel.

Description Elle est composée (cf �gure 8) par :� un ensemble de processeur séquentiels à mémoire locale.� un réseau de communication reliant ces processeurs et permettant les opéra-tions mémoires à distance.

� un mécanisme de synchronisation globale.

9

Page 11: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Fig. 8 � Modele BSP

Structure d'un algorithme BSP C'est une séquence de phase appelées su-persteps, chacune complétée par une synchronisation globale et un échange dedonnées (cf �gure 9). Durant une phase, chaque processeur peut réaliser des calcullocaux et/ou émettre des requêtes non bloquantes qui ne sont réalisées qu'avant ledébut de la phase suivante. Les requêtes doivent donc anticiper les besoins de laphase suivante pour ces calculs locaux. Considérer les communications en massepermet de simpli�er les traitements et de borner le temps nécessaire pour délivrerles données.

Un algorithme BSP possède des propriétés particulièrement intéressantes :� simplicité d'écriture.� indépendance par rapport à l'architecture cible� possibilité de prédiction de la performance d'un programme sur une archi-tecture donnée.

10

Page 12: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Fig. 9 � Modele BSP

Prévision du coût d'un algorithme BSP On mesure les communications col-lectivement. Les ordres d'écritures à distance et les demandes/réponses de lectureengendrent des messages. Tout ensemble de messages échangés établit une relationsur l'ensemble des processeurs, de ceux qui émettent des messages vers ceux quiles reçoivent. On mesure ces relations par leur degré maximal en tant que graphes.Une h− relation est ainsi une relation binaire sur 1,.....,p où tout sommet estde degré entrant au plus h et de degré sortant au plus h. On constate alors que sig est le temps requis pour acheminer une 1− relation alors toute h− relationpourra être acheminée en temps g.h.

On note :w, le maximum sur i ∈ {1, ...., p} du nombre d'opérations locales e�ectuées

dans la phase courante par le processeur i (le coût des opérations de base étantconstant, on leur associe un coût égal à 1 dans nos calculs).

hs, le nombre maximum de requêtes émises par un processeur.hs, le nombre maximum de requêtes reçues par un processeur.Selon notre dé�nition de la machine BSP, la phase i sera réalisée en temps :

11

Page 13: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

ti = w + g max{hs,hr}+ l

2.3 Évaluation du parallélisme

Facteur d'accélération Un algorithme peut être exécuté sur p processeur enun temps tp ou bien sur 1 processeur en un temps t1.On caractérise l'accélération (speed up) par :

Sp = t1/tp

où t1 est le temps du meilleur algorithme séquentiel et non pas le temps del'algorithme parallèle sur 1 seul processeur.L'accélération peut donc être bornée par :

1 ≤ Sp ≤ tp

Pour un code purement séquentiel Sp = 1Pour un code purement parallèle Sp = tp

Loi d'Amdahl La loi d'Amdahl permet de trouver une borne à l'accélérationpour un problème donné et une taille de problème donnée.

Pour cela il faut identi�er la partie parallélisable du code :� charge de travail �xe W (par exemple en M�ops)� distribution de cette charge entre p processeurs� décomposition de la charge

W = αW partie séquentielle+ (1− α)W partie parallélisable

L'accélération peut s'écrire :

Sp = t1/tp = WαW+(1−α)(W/p)

= p1+(p−1)α

Illustration Accélération pour p processeurs

Sp = p1+(p−1)α

où α représente le pourcentage de code séquentiel

p\α 50% 10% 1%10 1.82 5.26 9.17100 1.98 9.17 50.251000 1.99 9.91 90.9910000 1.99 9.91 99.02

12

Page 14: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

On remarque que Sp → 1/α lorsque p→∞ L'accélération est donc limitée par lapartie séquentielle.

La �gure 10 nous montre la plus grande accélération que l'on pourrait obteniravec une machine possédant 32, 128 ou une in�nité de processeurs.

Fig. 10 � Loi amdahl : accélération théorique

La �gure 11 nous montre l'e�cacité théorique d'un programme parallélisé de90 % à 100 % sur une machine disposant de 32, 128 ou 1024 processeurs.

On constate sur ces deux �gures que plus la machine à de processeur, plus laparallélisation doit être complète pour obtenir une bonne e�cacité.

13

Page 15: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Fig. 11 � Loi amdahl : e�cacité théorique

Loi du Gustafson A la di�érence de la loi d'Amdahl qui assume une taille deproblème �xe, la loi de Gustafson considère que la taille du problème augmenteavec le nombre de processeur.

W′= αW partie séquentielle

+ (1− α)pW partie parallélisable

où W représente la charge de travail du problème originel.Pour un tel problème l'accélération s'écrit :

S′p = αW+(1−α)pW

W= α + (1− α)p

p\α 50% 10% 1%10 5.5 9.1 9.91100 50.5 90.1 99.11000 505 901 99110000 5050 9010 9910

L'accélération est linéaire suivant p.

14

Page 16: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Application à Cuda On peut considérer que le nombre de processeur du GPUcorrespond aux nombres de multiprocesseurs qui sont aux nombres de 16 sur lacarte 9800 GTX utilisée. A cela, il faut ajouter une bande passante plus importantede 70,4 Go/s.

3 CUDA

3.1 Dé�nition

CUDA qui signi�e Compute Uni�ed Device Architecture est l'architecture quipermet d'exploiter les capacités de calcul des GPUs, à partir des GeForce 8, enleur faisant traiter des programmes sur un certain nombre de threads. CUDAest représenté par un driver, un runtime, des librairies, une API basée sur uneextension du langage C et le compilateur nvcc (qui redirige la partie non-exécutéesur le GPU vers le compilateur classique par défaut du système).

3.2 l'API CUDA

L'API CUDA est de type haut niveau, c'est-à-dire qu'elle fait globalementabstraction du matériel. Le driver CUDA se charge du rôle d'intermédiaire entrele code compilé et le GPU. Le runtime CUDA est lui un intermédiaire entre ledéveloppeur et le driver qui facilite le développement en masquant certains détails.CUDA propose soit de passer par l'API runtime soit d'accéder directement à l'APIdriver. Il est possible de voir l'API runtime comme le langage de haut niveau etl'API driver comme un intermédiaire entre le haut et le bas niveau qui permetd'optimiser manuellement le code plus en profondeur.

15

Page 17: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Fig. 12 � Architecture de l'API CUDA

3.3 Travaux réalisés

De nombreux exemples sont disponibles sur le site http://www.nvidia.fr/

object/cuda_home_fr.html. CUDA est utilisé dans di�érents domaines d'applica-tion tels que la �nance http://www.oneye.com.au/downloads/OnEye-Options-v1.pdf, la météo http://www.mmm.ucar.edu/wrf/WG2/GPU/

16

Page 18: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

4 Analyse par intervalles

4.1 Historique

Brian Hayes dans [4] retrace les débuts de la notion d'intervalle en 1931 lorsqueRosalind Cicely Young publie "algebra of many-valued quantities" qui donne desrègles de calcul avec intervalle. A cette époque les intervalles ne sont pas vus commepouvant améliorer la précision des ordinateurs. C'est en 1951 que Paul S. Dwyerdécrit l'arithmétique avec intervalle, mais l'idée d'arithmétique par intervalles voitsont essor avec les travaux indépendant de Mieczyslaw Warmus, Teruo Sunaga etRamon E. Moore. Les travaux de ce dernier seront les plus in�uents. Il a soulignéles solutions liées aux calcul par ordinateur et a donné durant 4 décennies desméthodes de calcul par intervalle au travers de publications [8], [9], [10] et [11].

4.2 Travaux e�ectués

De nos jours de nombreuses universités s'intéressent à l'analyse par intervalleset ses applications. Le site de l'université du Texas à El Paso http://www.cs.

utep.edu/interval-comp contient de nombreux liens vers ces universités ainsique sur les applications étudiées.

En france le GDR MACS est trés actif dans le domaine. Vous pouvez retrouverles travaux réalisés sur le site http://www.lirmm.fr/ensemble/ Plus en rela-tion avec Cuda nous pouvons citer les projets en cours nommé " Bibliothèqued'intervalles sur GPU " et "Localité de valeur dans l'évaluation des fonctions élé-mentaires" réalisé par Sylvain Collange au laboratoire ELIAUS de Perpignan dansl'équipe DALI. Ils font partis du projet ANR EVA-�o.

4.3 Arithmétique par intervalles

4.3.1 Dé�nition d'un intervalle

Un intervalle [x] est un sous-ensemble connexe, borné et fermé de réels,

[x] = [x, x] = {x ∈ R | x 6 x 6 x},où x représente la borne inférieure et x la borne supérieure. L'ensemble des inter-valles est noté IR. La largeur d'un intervalle est donné par w([x]) = x− x.

Opérations sur les intervalles

[x] + [y] = [x+ y, x+ y][x]− [y] = [x− y, x− y][x]× [y] = [min(x, y, xy, xy, xy),max(x, y, xy, xy, xy)][x]÷ [y] = [min(x, y, xy, xy, xy),max(x, y, xy, xy, xy)]

17

Page 19: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Exemple :[1, 5] + [−2, 8] = [−1, 13][2, 6]− [4, 3] = [−1, 2][3, 5]× [2, 7] = [6, 35][1, 8]÷ [2, 6] = [1/6, 4]

4.3.2 Dé�nition d'un pavé

Un pavé [x] de Rn est le produit cartésien de n intervalles

[x] = [x1]× [x2]× ....× [xn]

La longueur d'un pavé est noté w([x]) = max15i5n

([xi])

L'ensemble de tous les pavé de Rn est noté IRn

Exemple : Un pavé [x] = [x1]× [x2] de R2

6

x1 x1

-

x2

x2

[x]

Fig. 13 � Exemple de pavé

Les opérations classiques sur les intervalles s'étendent aux pavés

α[x] = (α[x1])× .....× (α[xn])[x] + [y] = ([x1] + [y1])× .....× ([xn] + [yn])[x]ᵀ.[y] = [x1].[y1] + .....+ [xn].[yn]

Un sous-pavage est dé�ni par l'union des pavés qui ne se recouvrent pas .

18

Page 20: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

6

-2

0 2

-

-2

0

2

Fig. 14 � Exemple de sous-pavage

4.3.3 Dé�nition d'une fonction d'inclusion

[f ] est une fonction d'inclusion pour f si :

∀[x] ∈ IRn, f([x]) ⊂ [f ]([x])

Fig. 15 � Exemple de fonction d'inclusion

[x]

Rn Rpf([x])

[f ]([x])

19

Page 21: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

4.4 Algorithme SIVIA

4.4.1 Dé�nition

Si f : Rn → Rm est une fonction continue et di�érentiable et Y un sous ensemblede Rm. La théorie de l'inversion ensembliste permet de trouver l'ensemble imageréciproque de Y par la fonction f .La formalisation mathématique de ceci s'écrit :

X = {x ∈ R|f(x) ∈ Y} = f−1(Y).

Résoudre un problème d'inversion ensembliste revient à caractériser le sous ensem-ble X

L'algorithme d'inversion ensembliste SIVIA [5] permet de résoudre plusieursproblèmes ensemblistes. Un algorithme d'inversion ensembliste permet de réaliserune approximation de l'ensemble X par un sous-pavage. Si f est une fonctioncontinue, et Y un sous ensemble alors :

X= f−1(Y).

Les algorithmes d'inversion ensembliste sont de type arborescent. Ils se com-posent essentiellement de trois étapes qui sont le choix d'un pavé initial censécontenir les solutions recherchées, les tests d'inclusions, et la bissection.

Tests d'inclusion

Pour un pavé initial [x0], trois cas sont possibles :

[f ]([x0]) ⊂ Y ⇒ [x0] ⊂ X, [x0] acceptable[f ]([x0]) ∩ Y = ∅ ⇒ [x0] ∩ X = ∅, [x0] inacceptable[f ]([x0]) ∩ Y 6= ∅ [x0] ∩ X 6= ∅, [x0] incertain

Bissection

Si le pavé [x0] est incertain, alors nous réalisons une bissection sur celui-ci(partageen 2). Les deux pavés générés sont de nouveaux testés, puis l'algorithme se propagetant qu'il reste un pavé incertain. Nous devons �xer une limite appelée précisionnoté ε, cette limite marque l'arrêt de l'algorithme.

Dans l'algorithme suivant le pavé initial de recherche [X0] est supposé contenirla solution.

20

Page 22: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Algorithme 1 SIVIAEntrée : [x0], Y, [f ] et εSortie : In, Out, P

In = liste contenant les pavés inclus dans la solutionOut = liste contenant les pavés à l'extérieur de la solutionP= liste contenant les pavés indéterminésInitialisation : L := ([x0]), In := ∅, Out := ∅, P := ∅. L est la liste courante.

1: repeat

2: [x] := Extraire−Debut− Liste(L)3: if [f ][x] ⊂ Y then

4: In := (In, [x])5: else if [f ][x] ∩ Y = � then

6: Out := (Out, [x])7: else if w([x]) < ε then

8: P := (P, [x])9: else

10: Bissecter[x])en([x1] et [x2])11: L := (L, [x1], [x2])12: end if

13: until L = �

Les �gures 16, 17 et 18 ci-dessous décrivent les di�érents cas lors du traitementd'un pavé.

21

Page 23: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Fig. 16 � Exemple de pavé solution

[x0] Y

Rn Rp

f([x1])

[f ]([x1])

Fig. 17 � Exemple de pavé non solution

[x0] Y

Rn Rp

f([x1])

[f ]([x1])

22

Page 24: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Fig. 18 � Exemple de pavé indéterminé

[x0] Y

Rn Rp

f([x1])

[f ]([x1])

5 Axe de recherche

5.1 Utilisation de Cuda pour SIVIA

Nous avons vu que avec l'utilisation du framework CUDA il était possible deséparer le code exécuté par le CPU et celui exécuté par le GPU.

L'objectif est de paralléliser l'algorithme SIVIA, pour utiliser conjointement leCPU et le GPU a�n d'améliorer les temps de calcul. Pour cela nous allons adapterl'algorithme en utilisant des threads pour gérer les di�érentes phases du calcul.

Une premiere version serait d'utiliser le CPU pour la gestion de la liste etcharger le GPU des di�érentes bissections à réaliser.

Une deuxieme version utilisant des contracteurs et un minimum de bissectionserait nécessaire pour améliorer les performances.

Nous allons utiliser le langage python au lieu du C ce qui va permettre unemeilleure lisibilité du programme.

L'algorithme qui suit propose une première approche pour un SIVIA parallèle.

23

Page 25: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Algorithme 2 SIVIA-CUDAEnsemble à inverser : YPavé de recherche a priori : X0

Précision requise pour le pavage : εInitialisation : k = 0, pile = ∅, X− = ∅, δX = ∅Itération k

1: Couper Xk de façon à former n pavés. Soit Z cet ensemble de pavés.2: Ranger dans X− tous les pavés z ∈ Z tels que f(z) ∈ Y.3: Eliminer de Z tous les pavés z tels que f(z) ∩ Z = ∅.4: Ranger dans δX tous les pavés z tels que w(z) < ε.5: Empiler tous les pavés de Z qui restent dans la pile6: Si la pile n'est pas vide, alors dépiler Xk+1,incrémenter k et aller au pas 17: �n

5.2 Evalutation de l'algorithme parallèle SIVIA

5.2.1 Cas monoprocesseur

La complexité temporelle d'un algorithme est le nombre d'opérations élémen-taires (a�ectations, comparaisons, opérations arithmétiques) e�ectuées par un al-gorithme. Ce nombre s'exprime en fonction de la taille n des données.

Les algorithmes usuels peuvent être classés en un certain nombre de grandesclasses de complexité.

� Les algorithmes sous-linéaires, dont la complexité est en général enO(log(n)).C'est le cas de la recherche d'un élément dans un ensemble ordonné �ni decardinal n.

� Les algorithmes linéaires en complexité O(n) ou en O(log(n)) sont considéréscomme rapides, comme l'évaluation de la valeur d'une expression composéede n symboles ou les algorithmes optimaux de tri.

� Plus lents sont les algorithmes de complexité située entre O(n2) et O(n3),c'est le cas de la multiplication des matrices et du parcours dans les graphes.

� Au delà, les algorithmes polynomiaux en O(nk) pour k > 3 sont considéréscomme lents, sans parler des algorithmes exponentiels (dont la complexitéest supérieure à tout polynôme en n) que l'on s'accorde à dire impraticablesdès que la taille des données est supérieure à quelques dizaines d'unités.

Exemple Donnons quelques règles simples concernant ces calculs. Tout d'abord,le coût d'une suite de deux instructions est la somme des deux coûts :

T (P ;Q) = T (P ) + T (Q).

24

Page 26: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Plus généralement, si l'on réalise une itération, on somme les di�érents coûts :

T ((for(i = 0; i < n; i+ +)P (i))) =n−1∑i=0

T (P (i)).

En appliquant ces règles à l'algorithme Sivia décrit ci-dessous nous obtenonsune complexité O(n2), en e�et La génération de la grille peut être réalisable enO(n), en revanche l'évaluation de chaque pavé de la grille est en O(n2).

Algorithme 3 SIVIA-CUDAEnsemble à inverser : YPavé de recherche a priori : X0

Taille de la grille : nInitialisation : X− = ∅, X+ = ∅

1: Couper Xk de façon à former n pavés. Soit Z cet ensemble de pavés.2: Ranger dans X− tous les pavés z ∈ Z tels que f(z) ∈ Y.3: Ranger dans X+ tous les pavés tous les pavés z tels que f(z) ∩ Z = ∅.4: �n

5.2.2 Cas multiprocesseurs

Les choses deviennent un peu plus compliqué lorsque nous étendons l'analysed'un algorithme séquentiel au domaine parallèle. En e�et, la complexité d'un algo-rithme ne dépend pas seulement de la taille du problème n, mais aussi du nombrede processeurs disponibles, notés p, sur la carte considérée. De même, il est im-portant de préciser, lorsque nous parlons de complexité d'un algorithme parallèle,du modèle de machine considérée (par exemple PRAM, ...). Pour compliquer en-core plus, il faudrait même prendre en compte le temps de communication entrechaque processeurs. Pour le moment, on suppose que le temps de communicationest négligeable. Ainsi, la complexité d'un algorithme parallèle est exprimé par unefonction à deux paramètres T (n, p).

À titre d'exemple de la complexité parallèle d'un programme sur une machinePRAM. On suppose un algorithme séquentiel dont la complexité est O(n), la com-plexité de la version parallèle est donnée par

T (n, p) = O(dnpe+ log(n)) (1)

Le premier terme de l'équation représente le total du travail e�ectué sur chacundes processeurs et le terme log(n) correspond au temps passé pour combiner lesrésultats. Notons, que si p ≤ n/ log(n) alors la complexité devient O(n2/p). Demême si p ≥ n/ log(n) alors la complexité devient O(log(n)).

25

Page 27: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Exemple avec l'algorithme SIVIA parallèle En prenant n= 100 et p=512d'après 1 nous obtenons une complexité O(2.19).

Algorithme 4 SIVIA-CUDAEnsemble à inverser : YPavé de recherche a priori : X0

Taille de la grille : nInitialisation : X− = ∅, X+ = ∅

1: Couper Xk de façon à former n pavés. Soit Z cet ensemble de pavés.2: Ranger dans X− tous les pavés z ∈ Z tels que f(z) ∈ Y.3: Ranger dans X+ tous les pavés tous les pavés z tels que f(z) ∩ Z = ∅.4: �n

Fig. 19 � Résultat de l'algorithme Sivia parralèle

La �gure 19 nous montre le résultat obtenue en utilisant l'algorithme cité ci-dessus avec un temps d'exécution de 231 µs.

26

Page 28: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

5.3 Estimation à erreurs bornées

5.3.1 Introduction à l'estimation à erreurs bornées.

L'estimation à erreurs bornées permet de dé�nir les paramètres inconnus d'unmodèle à partir des données collectées sur le système. Soit y ∈ Rny le vecteur deces données. Il est composé de ny mesures relevées à un temps données sur un sys-tème dynamique comprenant une entrée et une sortie. Une structure paramétriqueM() est a�ectée au modèle. En considérant l'ensemble de paramètre p ∈ P etl'ensemble des erreurs acceptables E, alors l'ensemble S de paramètres acceptablespeut être dé�ni par :

S = y−1m (y − E) = y−1

m (Y) = e−1m (E)

où e−1m et y−1

m sont les fonctions réciproques de em et ym, et où, Y = y−E estl'ensemble réalisable des sorties du modèle.

Exemple Soit le problème d'estimation paramétrique inspiré de Milanese et Vi-cino simpli�é [1] dont les équations de sorties sont données par :

ym(p, t) = 20 exp(−p1 ∗ t)− 8 exp(−p2 ∗ t)

Dix mesures ont été collectées sur ce systèmes. Les barres de la �gure 19représentent les incertitudes associées à chacune des paires de variables de sor-tie yi et de mesure du temps tii ∈ {1, ...., 10}

27

Page 29: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Fig. 20 � Représentation des barres d'incertitude

Les domaines associés à ti et yi sont donnés dans la table suivante :

i ti yi

1 0.25 2.7 ;12.12 0.5 1.04 ;7.143 1.25 -0.13 ;3.614 2 -0.95 ;1.155 5 -4.85 ;-0.296 8 -5.06 ;-0.367 12 -4.01 ;-0.048 16 -3.16 ;0.39 20 -2.5 ;0.5110 24 -2 ;0.67

L'ensemble des paramètres solutions est dé�ni par :

S = {p ∈ R2 | ∃t1 ∈ [t1], .....,∃t10 ∈ [t10] | ym(p, t1) ∈ [y1], .....,ym(p, t10) ∈ [y10]}

28

Page 30: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Pour être acceptable a posteriori, le vecteur p doit être tel que l'erreur

e(p) = y − ym(p)

corresponde àe(p) ∈ E = {e p −emax 6 e 6 emax,

avec

emax = 0.5 | y | +1

où | y | est le vecteur de dimension ny qui a pour composante la valeur absoluedes composantes du vecteur y et 1 représente le vecteur de dimension ny, qui atoutes ses composantes égales à 1. La �gure 20 représente les données. Les barresd'erreurs indiquent l'incertitude associée à chaque mesure. L'ensemble solution S àdéterminer est l'ensemble des valeurs de p telles que la sortie ym(p, t) du modèleM(p) passe à travers chacune des barres.

29

Page 31: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Conclusion et perspectives

Au cours de notre travail nous avons présenté un bref historique sur les GPU,puis nous avons introduit le framework CUDA et ainsi montré tout l'intérêt de cettetechnologie pour l'amélioration des calculs scienti�ques. Dans notre cas ces calculsconcernent l'analyses par intervalles et plus précisément, l'algorithme d'inversionensembliste Sivia.

La prochaine étape de notre travail consistera à résoudre le problème de Mi-lanese et Vicino en modi�ant l'algorithme parallèle présenté.Une première ébauchede cet algorithme est donnée ci-dessous.

Algorithme 5 Milanese-VicinoEntrée : Pavé de recherche [P], [yi]

Initialisation :X− = ∅, X+ = ∅

1: Ranger dans X− tous les pavés p ∈ P tels que ∀ t,ym(p, t) ⊆ [yi].2: Ranger dans X+ tous les pavés p ∈ P tels que ∃ t,ym(p, t) ∩ [yi] = ∅.3: �n

30

Page 32: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Bibliographie

[1] M. Milanese A. Vicino. Optimal inner bounds of feasible parameter set in lin-ear estimation with bounded noise. IEEE Transactions on Automatic Control,1991.

[2] Philippe Bonnifait. Contribution à la localisation dynamique d'automobiles.

Application à l'aide à la conduite. PhD thesis, UTC, 2005.

[3] Massa Dao. Caractérisation d'ensembles par des méthodes intervalles. appli-cations en automatique. 2006.

[4] Brian Hayes. A lucid interval. American Scientist, 2003.

[5] Luc Jaulin. Guaranteed nonlinear parameter estimation from bounded-errordata via interval analysis. Mathematics and Computers in Simulation, 1993.

[6] Luc Jaulin. Interval contractor and their application. 2004.

[7] Mehdi Lhommeau Laurent Hardouin Luc Jaulin. Caractérisation du bassinde capture à l'aide de méthodes ensemblistes. 2007.

[8] R.E.Moore. Interval analysis. Prentice Hall, 1966.

[9] R.E.Moore. Practical aspects of interval computation. Appl. Math, 1968.

[10] R.E.Moore. Methods and applications of interval analysis. SIAM, 1979.

[11] R.E.Moore. Parameter sets for bounded-error data. Mathematics and Com-

puters in Simulation, 1992.

31

Page 33: Rapport de Master Recherche - univ-angers.frlaris.univ-angers.fr/_resources/logo/MASTERLasteraMaxime.pdf · pour y accéder l'est également (mais optimisable). De plus, le rapatriement

Titre : Utilisation des cartes graphique pour le calcul scienti�queMot clé : analyse par intervalle, cuda, programmation parallèle.

Résumé

L'architecture des cartes graphiques modernes est de plus en plus opti-misée et permet de considérer les cartes graphiques comme des unités decalcul hautes performances.

Après un bref historique sur les GPU, vous trouverez dans ce rapport desexplications sur le framework cuda ainsi qu'une introduction à l'analyse parintervalle, et plus précisément sur l'algorithme d'inversion ensembliste Sivia.Une version parallèle de cet algorithme est donnée.

Title : Use of gra�cs cards for scienti�c computationKey words : analyzes by interval, cuda, parallel programming.

Abstract

The architecture modern graphics cards is optimized more and more andpermit to take into account graphics cards like high e�ciencies calcul units.

After a short history on the GPU, you will �nd in this report explanationson cuda frameworks, thus an introduction of analyses by interval, and moreprecisely on the algorithm of inversion ensemblist Sivia. A parallel versionof this algorthm is also describe.