Calcul intensif sur GPU: exemples en traitement d’images, en bioinformatique et en t´ el´ ecommunication Sidi Ahmed Mahmoudi, S´ ebastien Fr´ emal, Michel Bagein, Pierre Manneback Universit´ e de Mons, Facult´ e Polytechnique Service d’nformatique 20, Place du Parc 7000 Mons, Belgique Email: {Sidi.Mahmoudi, Sebastien.Fremal, Michel.Bagein, Pierre.Manneback}@umons.ac.be esum´ e Les Processeurs Graphiques ou GPUs sont devenus en quelques ann´ ees des outils puissants pour le calcul intensif massivement parall` ele. On les retrouve actuellement exploit´ es par exemple pour des applications en traitement multim´ edia, en mod´ elisation num´ erique ou en bioinformatique. Leurs avantages sont un coˆ ut modique, une acc´ el´ eration de traitement et une baisse de consommation ´ energ´ etique par rapport ` a une puissance CPU ´ equivalente. Nous proposons dans cette contribution d’exploiter les GPUs pour am´ eliorer les performances de m´ ethodes de traitement d’images ainsi que celles d’applications en bioinformatique et en el´ ecommunications. Nous proposons aussi une impl´ ementation hybride de ethodes de traitement d’images, bas´ ee sur l’exploitation de l’int´ egralit´ e des ressources et´ erog` enes de calcul ` a disposition (multi- CPU/multi-GPU). Mots Cl´ es – GPU, multicoeur h´ et´ erog` ene, traitement d’images, agglom´ eration, t´ el´ ecommunication I. I NTRODUCTION Ces derni` eres ann´ ees, l’acc´ el´ eration de performances des processeurs centraux (CPU) s’est retrouv´ ee plafonn´ ee, pour des raisons thermiques, ` a environ 4 GHz. Cette limitation a ´ et´ e contourn´ ee par un changement des architectures internes des processeurs en multipliant des unit´ es de calcul int´ egr´ ees dans les processeurs. L’objectif de ces nouvelles architectures est de multiplier le nombre d’unit´ es de traitement (coeurs) sur la m´ emoire centrale (RAM CPU), permettant ainsi de faire tourner simultan´ ement plusieurs applications ind´ ependantes. Les processeurs graphiques (GPU), qui ´ equipent les ordina- teurs personnels, sont d´ evolus aux traitements sp´ ecialis´ es de rendus d’images 2D/3D, des applications graphiques ainsi que des jeux vid´ eo. Sp´ ecialis´ es pour des traitements synchrones de grosses quantit´ es de donn´ ees, les GPUs poss` edent nativement une structure de coeurs massivement parall` ele (jusqu’` a 3840) et offrent des puissances brutes de calcul largement sup´ erieures aux CPUs. A la diff´ erence des CPUs multi-coeurs, les coeurs des GPUs fonctionnent de mani` ere synchrone en appliquant simultan´ ement la mˆ eme op´ eration sur des donn´ ees multiples (SIMD) dans leur propre espace m´ emoire (RAM-GPU). Une tendance est actuellement de proposer la convergence des ces deux types d’unit´ es de calcul, avec la propsition de processeurs acc´ el´ er´ es (APU), combinant CPU et GPU sur la mˆ eme puce et partageant le mˆ eme espace m´ emoire [1]. Avec l’ouverture des interfaces de programmation (API) des GPUs, de nombreux chercheurs ont entrepris de les exploiter pour booster les traitements, habituellement destin´ es aux CPUs. Les calculs peuvent donc ˆ etre port´ es sur GPU, mais le mode de fonctionnement SIMD de ces derniers impose la n´ ecessit´ e d’une grande quantit´ e de donn´ ees en entr´ ee. En effet, ces processeurs tirent leurs forces du recouvrement des threads inactifs (en attente de donn´ ees ` a distance du coeur) par l’ex´ ecution d’autres threads actifs (dont les donn´ ees sont disponibles). S’il n’y a pas suffisamment de donn´ ees, les threads seront en nombre insuffisant pour assurer un fonction- nement ` a plein r´ egime du processeur graphique, et celui-ci verra ses performances se d´ egrader [2]. Les algorithmes de visualisation et de traitement d’images sont ` a la fois de gros consommateurs de puissance de calcul et de m´ emoire. Au-del` a du rendu 2D/3D, la majorit´ e de ces algorithmes contiennent des phases qui consistent en des calculs similaires entre les pixels de l’image ce qui se prˆ ete bien ` a une parall´ elisation sur GPU. Dans cette cat´ egorie, Yang et al. ont mis en oeuvre plusieurs algorithmes clas- siques de traitement d’images sur GPU avec CUDA [3]. On trouve aussi dans le projet OpenVIDIA [4] une collection d’impl´ ementations d’algorithmes de vision par ordinateur sur des processeurs graphiques, utilisant OpenGL [5], Cg [6] et CUDA [7]. Luo et al. ont propos´ e une impl´ ementation GPU de la m´ ethode d’extraction de contours [8] bas´ ee sur le d´ etecteur de Canny [9]. Il existe aussi des impl´ ementations sur GPU edi´ ees au monde m´ edical, permettant notamment le calcul du rendu d’images volumineuses [10], [11], ainsi que des reconstructions d’images IRM [12]. Dans le domaine de la bioinformatique, les GPUs sont aussi pris´ es pour le traitement des s´ equences ADN. Avec quelques