rapport de stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../rapport_stage_iut... ·...

32
Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération sur GPU des méthodes itératives de déconvolution pour la localisation de sources acoustiques] XiangYang GAN 13/05/2013 26/07/2013 Encadrant : Nicolas Gac (L2S) Ning Chu (L2S) Date de réception du rapport : ……/……/…… à ……h…… Impression :

Upload: lehanh

Post on 10-Sep-2018

238 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Département GEII-1

IUT de Cachan

Année 2013

Rapport de Stage [Accélération sur GPU des méthodes itératives de

déconvolution pour la localisation de sources acoustiques]

XiangYang GAN

13/05/2013 – 26/07/2013

Encadrant : Nicolas Gac (L2S)

Ning Chu (L2S)

Date de réception du rapport : ……/……/…… à ……h…… Impression :

Page 2: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 2 Xiangyang Gan – IUT de Cachan

Remerciements

Tout d’abord, je tiens à remercier toute l’équipe du groupe Problèmes Inverses du Laboratoire

des Signaux et Systèmes pour leur bonne et chaleureuse ambiance.

Je remercie tout particulièrement M. Nicolas GAC pour m’avoir offert l’opportunité de faire

ce stage, encadré ces travaux, m’avoir aidé à m’adapter rapidement au projet.

J’adresse également mes remerciements à Ning CHU, doctorant qui travaille sur ce projet

dans le laboratoire. Son expérience m’a permis d’organiser au mieux mon travail et ses

compétences techniques m’ont permis d’avancer sur ce projet tout en enrichissant mes

propres connaissances.

Enfin, je tiens également à remercier M. Olivier BARBIE, mon tuteur IUT, pour sa

disponibilité et conseils durant ces dix semaines de stage.

Page 3: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 3 Xiangyang Gan – IUT de Cachan

Table des matières

Résumé

Abstract

Mots Clés

Introduction…………………………………………………………………...…5

1. La localisation de source vue comme un problème inverse…………...…6

1.1. Groupe du problème inverse (GPI)…………………………..............6

1.2. Localisation de source………………………………………………..6

1.3. Modèle direct………………………………………………………...7

1.4. Résolution du problème inverse……………………………...............8

2. Approximation du modèle d’acquisition………………………………...11

2.1. Le calcul matriciel……………………………………………….….11

2.2. La convolution 2D avec noyau variants…...………………..............11

2.3. La convolution 2D avec noyau invariant…………………….…....12

2.4. La convolution 2D avec noyau séparable………………………....12

2.5. Résultats de l’optimisation de la convolution………………………14

3. Accélération sur GPU………………………………………………...…15

3.1. La puissance de calcul du GPU comparée avec celle du CPU....…...15

3.2. Architecture du GPU permettant de paralléliser les calculs...............16

3.3. Programme MATLAB sur les GPUs...……………………………..16

3.4. Accélération sur GPU………………………………………………17

4. Résultats de la déconvoluiton……………………………………………17

4.1. Les données simulées……………………………………………….18

4.2. MCM V1 sur CPU……………………….………………...……….19

4.3. MCD V2 sur CPU…………………………………………………..20

4.4. MCDI V3 sur CPU………………………...……………...………...21

4.5. MCDIS V4 sur CPU……………………….………..………………23

4.6. MCDIS V5 sur GPU………………………………………………..25

4.6. MCRQDIS V5…………………………..…………………………..27

Conclusion et Perspectives……………………………………………………..29

Diagramme de Gantt………………………………………………………....…30

Références bibliographiques et sitographiques………………………………...31

Page 4: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 4 Xiangyang Gan – IUT de Cachan

Résumé

Les méthodes de localisation de sources acoustiques appliquées en industrie dans le

domaine de l’aéroacoustique, c’est-à-dire l’étude de la génération de bruit d’un

écoulement sur une surface (avion, voiture) ne sont pas robustes aux bruits de mesure.

Les méthodes développées par Ning CHU, doctorant au L2S permettent de localiser

plus précisément les sources acoustiques mais au prix d’un coût de calcul trop

important. Mon travail est d’optimiser l’algorithme pour accélérer le calcul tout en

conservant une bonne qualité de localisation. Pour cela, nous avons effectué une

accélération algorithmique et une accélération matérielle en parallélisant les calculs

sur GPU.

Abstract

Methods of locating acoustic sources applied industry in the field of aeroacoustics,

that is the study of noise generation flow on a surface (plane, car) are not robust to

measurement noise. The methods developed by Ning CHU, PhD student L2S to locate

more precisely the sound sources, but at the cost of computational cost too important.

My job is to optimize the algorithm to speed up the computation while maintaining a

good quality of the result. For this, we performed an algorithmic acceleration and a

hardware acceleration that is parallelizing calculations on GPU.

Mots Clés

problème inverse, aéroacoustique, algorithme itératif, accélération algorithmique,

parallélisation des calculs, GPU

Page 5: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 5 Xiangyang Gan – IUT de Cachan

Introduction

J’ai effectué mon stage de fin du DUT au Laboratoire de Signaux et Systèmes(L2S) situé sur

le plateau de Saclay, dans le Groupe Problème Inverse (GPI) du 13 mai au 26 juillet 2013.

Le Laboratoire de Signaux et Systèmes est une unité mixte de recherche (UMR) du CNRS, de

Supélec et de l’Université Paris-sud (UPS). Ce laboratoire regroupe 134 personnes qui sont

chercheurs, enseignants-chercheurs ou doctorants.

Le laboratoire est organisé en 4 divisions :

Signal (Modélisation et analyse du signal, problème inverse)

Télécom et Réseaux

Système

Électromagnétisme (DRE)

Mon stage a pour champs d’application l’imagerie acoustique. C’est une technique standard

pour localiser et déterminer les puissances des sources aéroaoustiques avec des réseaux de

microphones. Cette technique est déjà beaucoup appliquée dans le domaine de la détection de

bruits pour le confort aéroacoustique dans les industries automobile et aéronautique.

Au cours de ce rapport, nous exposerons tout d’abord la manière de présenter le problème de

localisation de sources acoustiques comme un problème inverse. C’est-à-dire que la

distribution des sources est inférée à partir des mesures acoustiques. Puis nous présenterons

une approximation du modèle d’acquisition par les microphones faisant appel à un opérateur

très utile en traitement du signal : la convolution 2D. Ensuite, afin d’accélérer encore les

traitements nous paralléliserons le calcul sur les centaines de cœurs des processeurs GPUs.

Enfin nous regarderons les résultats que nous obtenons par la méthode proposée.

Page 6: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 6 Xiangyang Gan – IUT de Cachan

1. La localisation de source vue comme un problème inverse

Le but de cette partie est de présenter le principe de la localisation de source et la construction

du modèle direct, c’est-à-dire la modélisation de l’acquisition par les microphones. Nous

verrons dans une première partie le contexte du projet. Puis nous parlerons de la modélisation

d’acquisition par un modèle direct. Enfin nous analyserons la méthode pour résoudre ce

problème inverse.

1.1. Groupe du problème inverse (GPI)

Le GPI est un groupe de recherche de la division Signaux. C’est une équipe de 6 permanents

et de 7 doctorants.

Le travail du GPI est de déterminer les causes d’un phénomène à partir des mesures

expérimentales de ses effets. Dans notre cas, c’est de localiser les sources acoustiques sur la

surface de la voiture à partir des mesures par des capteurs comme microphones dans une

soufflerie. Ning Chu effectue sa thèse « Approche bayesienne robuste et super-résolution en

imagerie acoustique » au GPI depuis 2010.

1.2. Localisation de source

Figure 1. Étude en soufflerie

Le principe de l’étude de la soufflerie est de modéliser les conditions rencontrées par une

voiture se déplaçant dans l’air. Cette expérience réalise un changement relatif, la voiture est

fixe et l’air en mouvement. C’est équivalent pour étudier l’effet d’un écoulement sur la

surface d’une voiture en mouvement. La figure ci-dessus à gauche représente l’expérience de

la soufflerie. Autour de la voiture, il y a des capteurs qui permettent de mesurer la puissance

de bruit. Notre objectif est de trouver plus précisément les positions de bruit à partir de la

première mesure comme cela est effectué par la méthode standard de « Beamforming »[1]

comme illustré sur la figure à droite.

(a) soufflerie (b) imagerie acoustique

Page 7: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 7 Xiangyang Gan – IUT de Cachan

1.3. Modèle direct

Ce modèle de la soufflerie comporte quatre parties : le plan de la puissance de source , le

plan de mesure du signal (Array), la propagation acoustique de la puissance , et le plan de

mesure de la puissance .

Les microphones sur le plan de mesure du signal (Array) mesure directement la pression

acoustique du signal qui se propage. Elle contient une information sur l’amplitude et la phase

de la source du signal. Avec la mesure du signal, il est difficile de retrouver l’original du

signal car elle contient trois informations inconnues. Or nous souhaitons uniquement

connaître l’amplitude des sources acoustiques c’est pourquoi nous chercherons à obtenir la

puissance des sources acoustiques à partir de la mesure de la puissance .

Voici le modèle direct adopté et représenté sur la figure suivante :

Figure 2. Modèle direct de la soufflerie

Le modèle direct est la matrice , qui à partir du vecteur de la puissance des sources

acoustiques permet d’obtenir les vecteurs des mesures de la puissance :

avec la matrice de propagation acoustique de la puissance.

(a) Source de la puissance (c) Beamforming (b) 𝐶

Page 8: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 8 Xiangyang Gan – IUT de Cachan

Dans nos études, nous connaissons les mesures et la matrice de propagation acoustique,

et il nous faut déterminer la source réelle. Pour cela, il suffirait de réaliser une simple

inversion de la matrice :

avec l’inverse de la matrice .

Mais dans notre cas, on trouve que la matrice est difficilement inversible car elle a une

taille très grande et mal conditionnée [2], donc on ne peut pas résoudre directement ce

problème inverse.

1.4. Résolution du problème inverse

En 2006, Brooks et al [1] ont proposé une approche par déconvolution DAMAS pour

résoudre ce problème inverse dans le domaine de l’aéroacoustique. Les méthodes de

déconvolution [2] ont l’avantage d’avoir été largement étudiées et sont un exemple de

résolution du problème inverse. Nous présentons ici les méthodes les plus standards, basées

sur le critère du moindre carré et une régularisation quadratique.

1.4.1. La méthode des Moindres Carrés (MC)

Dans un premier temps, nous faisons une méthode simple sans régularisation qui vise à

minimiser le terme d’attache aux données :

= ArgMin {J ( ) = }

avec le résultat de reconstruction, la source à estimer.

Dans cette expression, la solution correspond au qui minimise le coût de la fonction J( ) dans un calcul itératif. Pour trouver ce , on le fait par la descente de gradient , dont les

expressions sont données ci-dessous :

= -2 · ( y )

= C ·

avec la matrice transposée de , la mesure estimée, la source estimée future,

la source estimée actuelle, le pas de descente.

(1)

(2)

(3)

(4)

Page 9: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 9 Xiangyang Gan – IUT de Cachan

1.4.2. La méthode des Moindres Carrés avec Régularisation Quadratique (MCRQ)

La méthode avec régularisation consiste à ajouter un terme de régularisation au critère à

minimiser :

= ArgMin {J ( ) = +

}

avec le paramètre de régularisation, le noyau de la dérivée partielle.

Le terme de régularisation permet de pénaliser les variations fortes de la reconstruction dues

aux bruits lors de l’estimation de . On veut en plus d’être proche des données avoir une

solution de dérivée petite. Le gradient du critère avec régularisation :

= -2 · ( y ) +

1.4.3. Le calcul itératif en détail

A chaque itération de l’algorithme, la source estimée future va se rapprocher selon le

gradient de J( ) vers la source réelle. Ce procédé est répété des milliers de fois jusqu’à

converger vers le minimum global de la fonction quadratique J( ) et donc une source estimée

la plus proche de la source originale. L’illustration est donnée ci-dessous :

Figure 3. Descente de gradient

Noyau 𝑫 :

(5)

(6)

Page 10: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 10 Xiangyang Gan – IUT de Cachan

Ainsi nous allons maintenant regarder comment calculer la source estimée future à chaque

itération. La figure 4 ci-dessous est le schéma de principe de la boucle itérative de

déconvolution par descente de gradient :

Figure 4. Boucle itérative de déconvolution

Au début de l’algorithme, nous faisons la multiplication matricielle entre la source estimée et

la matrice . On obtient ainsi la mesure estimée . Puis, on calcule la différence entre la

mesure estimée et la vraie mesure , le résultat correspond à l’erreur de mesure. On fait

ensuite encore une fois multiplication matricielle entre cette différence et la transposée de la

matrice . Le résultat de cette multiplication représente en fait la correction de l’estimation.

On va apporter cette correction à l’estimation de source actuelle pour la prochaine itération de

l’algorithme. A la fin, on recommence par la première étape avec la nouvelle source

estimée . De cette façon, après quelques milliers d’itérations que l’on peut arriver à

obtenir un résultat qui converge vers la source réelle . Un programme de déconvolution

itérative est présenté en Annexe 1.

𝒙𝒏 : la source estimée actuelle

𝒙𝒏 𝟏 : la source estimée future

𝒚 : la mesure réelle

𝒚𝒏 : la mesure estimée

𝑪 : la matrice de la propagation acoustique

𝑪𝒕 : la matrice transposée de 𝐶

Correction Erreur de mesure 𝒚 ��𝒏 𝒄𝒕 𝒙𝒏 𝟏 𝒙𝒏

Page 11: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 11 Xiangyang Gan – IUT de Cachan

Evidement plus le nombre d’itération exécuté est grand dans ce programme, meilleur est la

qualité de reconstruction. En contrepartie, le temps de traitement serait plus important. C’est

pourquoi nous devons chercher à accélérer cet algorithme : par accélération algorithmique

dans le Chapitre 2 et par accélération matricielle en parallélisant les calculs sur GPU dans le

Chapitre 3.

2. Approximation du modèle d’acquisition

Comme je l’ai déjà dit, la méthode itérative de déconvolution représente un grand nombre

d’opérations de l’opérateur C. Le temps de calcul est bien trop important en pratique si l’on

espère traiter les mesures rapidement. L’objectif de cette partie est de proposer des

optimisations purement algorithmiques pour accélérer le calcul matriciel.

Nous présenterons le coût de calcul pour chacune des itérations de l’algorithme pour une

source de taille . La taille de la matrice est donc .

2.1. Le calcul matriciel

Je vous rappelle que les calculs de déconvolution sont déjà montrés dans la Chapitre 1.4.1,

les équations 2, 3 et 4.

= -2 · ( y )

= C ·

Nous constatons qu’il s’agit de deux calculs matriciels pour une itération, donc le nombre

d’opérateur est proportionnel à , on note .

2.2. La convolution 2D avec noyaux variants

Pour effectuer des optimisations, nous allons tout d’abord transformer la multiplication

matricielle en une convolution 2D. Grâce à la structure de la matrice , nous pouvons faire

cette approximation comme l’a proposé Brooks et al [1].

En effet, matrice a en première approximation une architecture Symmetric Toeplitz Block

Toeplitz (STBT) comme l’a rappelé Ning Chu dans sa thèse [2]. Grace à cette architecture,

nous pouvons considérer que cette multiplication matricielle est une convolution 2D entre

l’image d’origine et plusieurs noyaux variantes construits par chaque ligne de la matrice

comme l’équation ci-dessous :

=[C · ≈

(3)

(4)

(2)

Page 12: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 12 Xiangyang Gan – IUT de Cachan

avec i : numéro de lignes de la matrice , : ième élément dans la mesure de la puissance

En conséquence, nous transformons une multiplication entre deux vecteurs en plusieurs

convolutions 2D entre deux images 2D. Les équations théoriques en détail sont données par

Ning Chu, dans son article « An invariant convolution model and its Variational Bayesian

Approximation approach via Students-t priors for aeroacoustic imaging in non-stationary

noises » où il décrit pourquoi et comment nous pouvons faire cette approximation. Grâce à

cette transformation, nous avons obtenu cette fois O ( * ), avec représente la taille de

l’image, représente la taille du noyau. Cela permet ainsi d’accélérer le calcul d’une

multiplication matricielle d’un facteur

.

Malheureusement, cet algorithme n’est pas pratique pour le réaliser sur MATLAB. En effet,

MATLAB propose de faire les convolutions 2D entière même si nous avons besoin

uniquement d’une seule coordonné de l’élément Pour éviter cela, il faudrait que

nous réécrivions le programme de convolution fournie par MATLAB, c’est pourquoi nous

avons fait une approximation supplémentaire avec un seul et même noyau invariant pour

toutes les mesures .

2.3. La convolution 2D avec un noyau invariant

Pour accélérer le calcul de déconvolution en ne faisant qu’une seule convolution entière, nous

devons choisir un noyau invariant au lieu d’utiliser tous les lignes de la matrice . Encore une

fois, grâce à la propriété STBT de la matrice , le noyau à la ligne du milieu comporte la

majorité de valeurs importantes pour la convolution, donc nous choisissons le noyau

correspondant à la ligne du milieu de la matrice comme le noyau invariant. Cette

transformation est aussi proposée dans le même article de Ning Chu [2]. L’équation est

donnée ci-dessous :

avec i = numéro de lignes de la matrice

Dans cette équation, les résultats des convolutions de la source x avec les différents noyaux

variants est approximée par la convolution de la source avec un noyau invariant

correspondant à la ligne du milieu de la matrice . Avec cet algorithme, nous obtenons le

même nombre d’opération que celui calculé avec les noyaux variants O ( ² * ²), ainsi le

même facteur d’accélération 2

. L’intérêt de cette transformation est de simplifier

l’algorithme au niveau du programme et de lancer sous MATLAB une seule convolution 2D

qui donne directement tous les résultats. Cette fois, nous pouvons tester les programmes sur

les données en simulations sur le logiciel MATLAB ou tout autre logiciel ayant une libraire

avec une convolution 2D accélérée sur GPU.

Page 13: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 13 Xiangyang Gan – IUT de Cachan

2.4. La convolution 2D avec noyau séparable

La troisième technique pour accélérer le calcul de convolution est de séparer le noyau en deux

vecteurs, l’un horizontal, l’autre vertical. Le résultat de la convolution de ces deux vecteurs

redonne le noyau original. Cela nous permet encore une fois de diminuer le nombre de

l’opération, et donc les temps de traitement.

La définition mathématique pour un noyau séparable est donnée ci-dessous :

h[r,c] = vert[r] * horz[c]

Pour un noyau h de taille (r,c), nous pouvons le séparer en deux vecteurs, vert de taille r, et

horz de taille c. La convolution complète de vert et horz est équal au noyau h.Sur la Figure 6,

ce principe est représenté par le filtre 3x3 de Sobel :

Figure 5. Séparation d’un filtre de Sobel

Cependant tous les noyaux que nous employons ne sont pas séparables, comme les noyaux

concernés ont une structure symétrique, donc il est possible de faire l’approximation selon la

séparabilité du noyau. L’expression mathématique de la séparabilité et le programme en détail

pour séparer un noyau sont donnés ci-dessous :

≈ * *

avec ≈ * .

Figure 6. Programme d’un noyau séparable

Ainsi, il permet de réduire le nombre d’opérations en O (2 ²* ). Avec cette propriété, on

peut obtenir une accélération d’un facteur

. Comparé avec le facteur

, lorsque la taille

d’un noyau est toujours supérieur à 2, donc le nombre d’opérations de la méthode avec le

noyau 2D est aussi supérieur à celle avec un noyau séparable en deux vecteurs.

2 2

= * 2

%%% Separable convolution kernel %%% function [h1,h2,separability]=separable_con_ker(h) [u,s,v] = svd(h); s = diag(s); separability=s(1)/(sum(s)-s(1)); h1 = u(:,1)*s(1); h2 = v(:,1)'; end

Page 14: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 14 Xiangyang Gan – IUT de Cachan

2.5. Résultats de l’optimisation de convolution

A l’aide des optimisations algorithmiques, nous avons réussi à diminuer le nombre

d’opérations :

Convolution avec différents types de noyau

Nombre d’opérations par une itération

Facteur d’accélération

Calcul matriciel C · x ∝ 1

Noyaux variants ∑

∝ o ² * ²)

Noyau invariant x h ∝ O( ² * ²)

Noyau invariant séparable x ∝ O(4 ² * )

Nous regarderons à la fin, nous comparons la qualité de reconstruction avec les temps de

traitements de chacune de les méthode dans le Chapitre 4 Résultat de la déconvolution.

• 𝒏 : taille de l’image

• 𝒏𝒉 : taille du noyau

• 𝒉𝒊 : les noyaux variant qui correspond à chaque ligne de la matrice C

• 𝒊 : numéro de la ligne de la matrice C

• 𝒉 : le noyau invariant qui correspond à la ligne au milieu de la matrice C

Page 15: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 15 Xiangyang Gan – IUT de Cachan

3. Accélération sur GPU

Graphics Processing Unit (GPU), ou Processeur Graphique en français est un circuit intégré

sur les cartes graphiques de nos PCs. Il s’agit de processeurs « many cœurs » permettant de

paralléliser les calculs. Entraînée par la demande sur le marché de temps réel de scènes 3D

(jeux vidéo, CAO, …), en 2006, la compagnie Nvidia a lancé CUDA qui permet d’effectuer

des calculs en parallèles sur les GPU.

Figure 7. GPU NVIDIA® Tesla

3.1. La puissance de calcul du GPU comparée avec celle du CPU

La figure dessous nous illustre la puissance de calcul des GPU comparée à celle du CPU.

Figure 8. La puissance de calcul du GPU comparé avec celle du CPU

Page 16: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 16 Xiangyang Gan – IUT de Cachan

3.2. Architecture du GPU permettant de paralléliser les calculs

Nous présentons ci-dessous les deux représentations schématiques de l’architecture

d’un CPU et celle d’un GPU pour analyser les intérêts du calcul sur les GPU.

Figure 9. Différences entre le CPU et le GPU

Sur cette comparaison de l’architecture entre d’un CPU et celle d’un GPU, on peut facilement

comprendre pourquoi la puissance de calcul d’un GPU est beaucoup plus grande que celle

d’un CPU. Les cœurs de calcul (en vert) occupent une place bien plus importante sur le GPU,

mais la partie du mémoire est en revanche plus limitée, donc le GPU ne peut pas stocker

beaucoup de données.

3.3. Programme MATLAB sur les GPU

Durant mon stage, nous avons fait le choix d’utiliser une librairie possédant une convolution

2D déjà accéléré sur GPU afin d’obtenir des premiers résultats d’accélérations. Ces résultats

peuvent être améliorés par la suite par un développement en CUDA de tout l’algorithme

itératif.

Depuis la version 2 , MATLAB a lancé une librairie qui nous permet de paralléliser les

calculs sur des GPU NVIDIA. Les fonctions incluent conv2(A,B,’opération’), et des

opérations arithmétiques. Pour utiliser les fonctions déjà fournies par MATLAB, il faut

d’abord réaliser une communication entre le CPU et les GPU pour transférer les données. Une

fois les données stockées sur les GPU, nous pouvons appeler les fonctions de calcul. A la fin,

nous retirons les données sur les GPU.

Voici quelques exemples de fonction que nous employons dans notre programme :

G = gpuArray(X) : il permet de copier la valeur de l’argument x aux GPU, et retourner une

donnée sur les GPU. Comme le calcul en précision single est plus intéressant sur les GPU,

nous utilisons souvant G = gpuArray(single(X)) pour transférer les données à les GPU en

transformant sa précision.

X = gather(G) : c’est appelé pour récupérer les données G sur GPU, et retourner une donnée

sur le CPU.

Page 17: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 17 Xiangyang Gan – IUT de Cachan

C = conv2 (A, B, ‘opération’) : c’est pour calculer la convolution entre deux 2D matrices A et

B, et il y a trois opération que nous pouvons choisir. Ex : A(n,m), B(h,j).

Full : retourner la convolution complète (par défaut), C(n+h-1,m+j-1) ;

Same : retourner la convolution de la même taille que A, C(n,m) ;

Valid : retourner la convoluiton de la taille A-B, C(n-h+1,m-j+1).

Voici une figure qui montre le principe des programmes exécutés sur GPU :

3.4. Accélération par GPU

L’idée d’accélération par GPU est de paralléliser les calculs sur tous les cœurs du GPU, le

plus nombre de cœurs que nous utilisons, la meilleure accélération que nous pouvons obtenir.

Donc, nous allons regarder le pourcentage d’utilisation de cœurs du GPU (Figure 11) par la

convolution de la librairie de MATLAB.

Figure 11. Taux d’utilisation du GPU

CPU => GPU Calculer GPU => CPU

0

2

4

6

8

10

12

14

16

0 100 200 300 400 500

T

a

u

x(

%)

Taille de matrice

Conv non-séparable conv séparable

Figure 10. principe du programme sur GPU

Page 18: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 18 Xiangyang Gan – IUT de Cachan

4. Résultats du calcul de déconvolution

Nous allons maintenant, présenter les résultats obtenus en termes de qualité de reconstruction

et en temps de calcul pour les différentes optimisations du programme que j’ai réalisées au

cours du stage. L’objectif est d’obtenir le meilleur compromis entre le temps de traitement et

la qualité de reconstruction. Pour facilement expliquer ce que j’ai fait, tous les programmes

suivants sont exécutés sur le logiciel MATLAB 2012a. Il y a en tout six versions du

programme de déconvolution :

1. Version 1 : MCM(CPU) par le calcul matriciel sur CPU

2. Version 2 : MCD(CPU) par le calcul de déconvolution sur CPU

3. Version 3 : MCDI(CPU) avec noyau de taille réduite sur CPU

4. Version 4 : MCDIS(CPU) avec noyau séparable de taille réduite sur CPU

5. Version 5 : MCDIS(GPU) avec noyau séparable de taille réduite sur GPU

6. Version 6 : MCRQDIS(CPU) avec noyau séparable de taille réduite

4.1. Les données simulées

Pour tester les simulations sur MATLAB, nous avons généré des données simulées, la source

simulée , la matrice de propagation acoustique , et aussi la mesure simulée comme

représenté par figure ci-dessous :

Figure 12. Données simulées

En premier temps, nous prenons l’image de mesure de taille 17x27 pour simplifier les calculs.

Pour des tests plus évolués, nous utilisons des images 3² fois, 5² fois, 15² fois et jusqu’à 31²

fois plus grandes. Nous avons choisi trois critères afin de comparer les différents résultats que

nous avons obtenus : le temps de traitement, l’erreur quantitative (distance quadratique) et

la qualité visuelle de la reconstruction.

(a) source (b) matrice de la propagation acoustique

(c) mesure

Page 19: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 19 Xiangyang Gan – IUT de Cachan

Remarque : ici l’erreur signifie l’erreur de reconstruction qui est définie comme ci-dessous :

Ɛ =

avec le résultat de déconvolution, le source originale en simulation.

4.2. MCM V1 sur CPU

La première version du programme de déconvolution est de calculer directement les

multiplications matricielles, équation (2) et (3) dans le Chapitre 1.4.1, avec aucune

approximation. Les résultats sont représentés ci-dessous :

Figure 13. Résultat de la déconvolution version 1

Un tableau nous montre les temps de traitement et les qualités de reconstruction sur des

données simulées de taille différentes :

A priori, les résultats que nous obtenons avec le programme version 1 sont les meilleures

reconstructions en qualité, en revanche, il demande un temps de calcul très important,

notamment, pour les images de grande taille. Si on veut utiliser cet algorithme en industrie

pour traiter des images de taille encore plus grande, il faut qu’on bien diminue les temps de

traitement pour atteindre un temps de l’ordre de quelques minutes.

Comme on constate que 90% du temps de calcul est pris par le calcul matriciel. Il existe deux

techniques pour accélérer le traitement d’un algorithme. La première est d’optimiser

l’algorithme et de trouver des approximations du modèle pour simplifier le calcul. La seconde

technique qu’on emploie est de paralléliser le calcul sur le processeur « many cores » (GPU

en anglais). Ainsi, nous devons trouver un bon compromis entre le temps de traitement et la

qualité de reconstruction.

20000 itérations 17 x 27 255 x 405 527 x 837

Erreur 9.3% 16.3% X

Temps 20.8 s 2jours 10h 60jours

(a) reconstruction 17 x 27 (b) reconstruction 255 x 405

Page 20: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 20 Xiangyang Gan – IUT de Cachan

4.3. MCD V2 sur CPU

La deuxième version du programme est d’approximer la multiplication matricielle par la

convolution de deux images. Pour comparer tous les résultats, il nous faut définir deux

paramètres, l’un le nombre d’itération, l’autre la taille du noyau invariant.

Nous avons d’abord évaluer la qualité de reconstruction en fonction du nombre d’itération

pour trouver un nombre d’itération suffisant.

Ci-dessous une figure représente l’erreur de reconstruction du programme version 2 en

fonction du nombre d’itération pour traiter une image de taille 17x27 :

Figure 14. Erreur de reconstruction

On voit que la qualité du résultat devient convenable avec un grand nombre d’itérations, ce

qui demande des temps de calcul élevés à cause du grand nombre de calcul matriciel. Cette

version du programme de déconvolution sur MATLAB, permettait de traiter une donnée de

taille 17 x 27 avec 20 000 itérations en 16.8s. Si on agrandit la taille de l’image, le temps de

traitement sera largement plus grand comme montré par ce tableau suivant.

0

5

10

15

20

25

30

0

10

20

30

40

50

60

70

80

0 20000 40000 60000 80000 100000

T

e

m

p

s

E

r

r

e

u

r

Nombre d'itération

Erreur de reconstruction(%) temps(s)

Page 21: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 21 Xiangyang Gan – IUT de Cachan

Un exemple de déconvolution version 2 est présenté ci-dessous :

Figure 15. MCD (CPU)

Voici un tableau qui montre le temps de traitement pour les programmes MC version 2 :

20 000 itérations

Ce tableau correspond à la déconvolution avec un noyau invariant calculé sur CPU en 20 000

itérations. Les tailles du noyau sont choisies par rapport à la taille des images, donc 17 x 17

pour (b), 255 x 255 pour (c), 527 x 527 pour (d).

4.4. MCDI V3 sur CPU

Comme nous avons trouvé un nombre d’itération suffisant pour faire une déconvolution avec

un résultat satisfaisant, nous effectuons cette fois la déconvolution en variant la taille du

noyau.

La figure suivante représente l’erreur de reconstruction et le temps de traitement de la

déconvolution version 3 :

Taille de l’image 17 x 27 255 x 405 527 x 837

Erreur 15% 28% X

Temps 16.8s 13h 10min 8jour 5h Facteur d’accélération par

rapport MCM(CPU) 1.24 4.4 7.3

(d) reconstruction 527 x 837 (c) reconstruction 255 x 405

(a) source original (b) reconstruction 17 x 27

Page 22: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 22 Xiangyang Gan – IUT de Cachan

Figure 16. MCDI V3 sur CPU

Nous trouvons que l’erreur de la reconstruction ne varie plus pour une taille de noyau

supérieur à 13 x 13. Donc le bon compromis entre le temps de calcul et la qualité de

reconstruction est de faire la déconvolution avec un noyau de cette taille. Cela représente

environ 40% de la taille de l’image originale. J’ai fait le même test sur des images de taille

plus grande, et j’ai trouvé que la meilleure taille du noyau est aussi de 40% de l’image

traitée :

Meilleur taille du noyau = Taille de la donnée * 40%

La raison que nous pouvons faire cette approximation, c’est que les valeurs utiles dans le

noyau sont concentrées au milieu comme montré par figure ci-dessous (page suivant

Figure 12), donc la diminution de la taille du noyau nous permet d’éviter des calculs inutiles

et ainsi de gagner du temps.

Figure 17. Noyau initial et proposé

0

5

10

15

20

25

30

35

40

45

50

0

10

20

30

40

50

60

70

80

90

100

3 7 11 15 19 23 27 31

T

e

m

p

s

E

r

r

e

u

r

Taille du noyau

Erreur (%) Temps (s)

Noyau initial 17 x 17 Noyau proposé 13 x 13

Page 23: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 23 Xiangyang Gan – IUT de Cachan

Avec ce noyau de taille réduite, nous arrivons à accélérer le calcul comme montré par le

tableau ci-dessous :

Taille de l’image 17 x 27 255 x 405 527 x 837

Taille du noyau 13 x13 215 x 215 415 x 415

Erreur 16,2% 28,6% 29,6%

Temps 10,7s 7h 40min 16h Facteur d’accélération par

rapport MCM(CPU) 1.94 7.57 90

Facteur d’accélération par

rapport MCD(CPU) 1.57 1.71 12.3

20 000 itérations

4.5. MCDIS V4 sur CPU

Après avoir obtenu les résultats de la première accélération, nous allons maintenant regarder

la deuxième optimisation, donc calculer la convolution en séparant le noyau invariant. Avant

d’appliquer directement cette méthode à une image en simulation, nous allons tout d’abord

regarder les séparabilités (définition voir Le Chapitre 2.4) des noyaux de différentes tailles :

Figure 18. Erreur de séparabilité

Nous avons trouvé que l’erreur de séparabilité du noyau est proportionnelle à la taille du

noyau, donc pour garder la qualité de reconstruction, il faut mieux d’utiliser des noyaux de

taille plus petit. Dans nos études, cette approximation est assez convenable avec une erreur de

séparabilité d’environ 10%.

Nous allons maintenant appliquer les programmes aux données en simulation. Nous utilisons

toujours les mêmes données sur MATLAB. La taille de l’image est de 17 x 27 afin de

simplifier les calculs et de gagner du temps. Nous allons calculer encore une fois avec les

noyaux de taille variantes pour vérifier que la meilleure taille du noyau 13 x 13 que nous

avons trouvé dans la dernière partie est bonne. La figure ci-dessous nous permet de comparer

0

2

4

6

8

10

12

0 5 10 15 20 25 30 35

e

r

r

e

u

r

taille du noyau

Erreur de séparabilité (%)

Page 24: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 24 Xiangyang Gan – IUT de Cachan

la différence entre la déconvolution avec noyau séparable et celui avec le noyau non-

séparable :

Figure 19. MCDI et MCDIS

Nous voyons bien qu’au niveau de la qualité de reconstruction, il n’y a pas de grande

différence entre les deux méthodes, l’erreur de la déconvolution avec le noyau non séparable

est un peu plus basse que celle avec le noyau séparable. En revanche, on peut gagner

beaucoup de temps de traitement si on sépare le noyau. Le temps de traitement est

proportionnel à la taille du noyau invariant alors que celui avec le noyau non séparable est

proportionnel à . C’est pour cette raison que nous avons fait cette approximation.

Avec le noyau séparable, nous avons obtenu des facteurs d’accélération importants, et nous

avons trouvé aussi que plus la taille de l’image est grande, plus le facteur d’accélération de la

déconvolution est grand. Comme nous avions déjà choisi la taille du noyau qui est de 40% par

rapport à la taille de l’image, nous n’analysons que les résultats de déconvolution sur les

mesures en simulation de taille plus grande qui correspondent à ce choix :

Taille de l’image 17 x 27 255 x 405 527 x 837

Taille du noyau 13 x13 215 x 215 415 x 415

Temps 5,3s 13min 10s 1h 32min

Erreur 19,6% 29,6% 30,6%

Facteur d’accélération

par rapport

MCM(CPU)

3.17 59,75 128,99

Facteur d’accélération

par rapport

MCDI(CPU)

2.02 34.94 10.44

20 000 itérations

0

5

10

15

20

25

30

35

40

45

50

10

20

30

40

50

60

70

80

90

100

3 7 11 15 19 23 27 31

T

e

m

p

s

E

r

r

e

u

r

taille du noyau

Erreur (%) Erreur sep (%) Temps (s) Temps sep(s)

Page 25: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 25 Xiangyang Gan – IUT de Cachan

Pour une conclusion sur ces trois approximations algorithmiques, nous avons choisi une

meilleure taille du noyau séparable et le séparé dans le calcul de déconvolution en 20 000

itérations. Avec cette première optimisation, nous avons obtenu des résultats assez

convenables. Nous avons des facteurs d’accélération variant de 3 à 100 par rapport la taille de

l’image sans perdre beaucoup de la qualité du résultat.

4.6. MCDIS V5 sur GPU

Comme nous avons constaté que la déconvolution avec le noyau invariant séparable est

beaucoup plus rapide, nous allons ensuite implémenter les programmes sur GPU pour

paralléliser le calcul de déconvolution d’autant plus que la parallélisations d’une convolution

séparable sur GPU est beaucoup plus efficace que celle d’une convolution séparable sur CPU.

Cette fois nous d’abord comparerons la différence de la vitesse de calcul entre MCDIS(CPU)

et MCDIS(GPU). La figure ci-dessous représente la déconvolution d’une image de taille 5

fois plus grande que l’image originale, donc 255 x 405.

Figure 20. MCDIS V4 et V5

Grâce au calcul parallèle sur les GPU (MCDIS), nous avons obtenu un facteur d’accélération

de 5.3 et 7 pour une taille de 255x405 et 527x837 par rapport le temps de traitement par

MCDIS(CPU).

J’ai trouvé aussi qu’en pratique, ce n’est pas intéressant d’exécuter les programmes sur les

GPU pour la déconvolution des images de talle petite (inférieur à 100 x 100).

Taille de l’image 17 x 27 255 x 405 527 x 837

Taille du noyau 13 x13 215 x 215 415 x 415

Temps 33,0s 2min 30s 12min 46s

Erreur 19,6% 29,6% 30,6% Facteur d’accélération

par rapport V1 0,51 314,67 822,17

Facteur d’accélération

par rapport V4 0.16 5.27 7.02

20 000 itérations

Page 26: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 26 Xiangyang Gan – IUT de Cachan

En conclusion, nous avons réussi à diminuer les temps de traitement pour qu’ils soient de

l’ordre de quelques minutes pour des images de grandes tailles. Voici les résultats sur les

données en simulation.

Figure 21. MCDIS V5

Je vous rappelle que toutes les données simulées que nous employons dans les

parties précédentes sont des mesures idéales sans bruits. Mais nous ne

pouvons pas négliger les bruits dans les données en industrie, c’est pour cette

raison que nous devons ajouter un terme de régularisation (MCRQDIS) pour

isoler les bruits de mesure.

Nous allons regarder dans la partie suivante ce qui se passe si l’on ajoute des

bruits aux mesures simulées.

(d) reconstruction 527 x 837 (c) reconstruction 255 x 405

(a) source original (b) reconstruction 17 x 27

Page 27: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 27 Xiangyang Gan – IUT de Cachan

4.7. MCRQDIS V5 sur CPU

Figure 22. MCM et MCRQDIS

(a) MCM (RSB 40dB)

(d) MRQDIS (RSB 20dB) (c) MCM (RSB 20dB)

(e) MCM (RSB 10dB)

(b) MRQDIS (RSB 40dB)

(e) MRQDIS (RSB 10dB)

Page 28: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 28 Xiangyang Gan – IUT de Cachan

Remarque :RSB signifie le rapport du signal sur le bruit, ici en unité dB, donc plus cette

valeur est grande, la mesure est à moins bonne qualité.

Nous pouvons bien constater que les reconstructions avec régularisation sont plus floues,

donc moins sensibles aux bruits.

Page 29: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 29 Xiangyang Gan – IUT de Cachan

Conclusion

Le but de mon stage est d’optimiser les programmes pour accélérer le programme de

déconvolution pour traiter plus rapidement les données en industrie.

Pour réaliser cet objective, nous avons choisi d’un côté trois approximations pour simplifier

les calculs.

Premier, nous n’utilisons qu’un seul noyau, noyau invariant pour faire la déconvolution au

lieu de calculer avec plusieurs noyaux variants.

Deuxième, nous avons réduit la taille du noyau sans perdre beaucoup de temps, mais obtenir

un facteur d’accélération environ 2.

Troisième, nous avons réalisé une méthode pour séparer le noyau. Grâce à cette

transformation, nous avons réussi de passer le temps de traitement des heures même des jours

aux minutes.

D’un autre côté, nous avons parallélisé le calcul sur GPU, c’est une optimisation matérielle.

Cette méthode nous donne un facteur d’accélération de 3 à 7 qui dépend la taille des images

que nous voulons traiter.

Perspectives

Il reste plusieurs travaux à faire pour ce projet à plus long terme. D’abord il faut réécrire les

fonctions de convolution sur GPU pour mieux paralléliser les calculs sur GPU et aussi

paralléliser le plus globalement possible l’intérieur de la boucle itérative car actuellement

nous avons une parallélisations « ligne par ligne ». Puis, nous devons chercher les

régularisations plus élaboré pour obtenir les meilleurs résultats. Quand nous aurons fini ce

nouveau programme, nous pourrons traiter les vraies données en industrie.

Page 30: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 30 Xiangyang Gan – IUT de Cachan

Diagramme de Gantt

Page 31: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 31 Xiangyang Gan – IUT de Cachan

Source

[1]. T. Brooks, W. Humphreys, A Deconvolution Approach for the Mapping of

Acoustic Sources (DAMAS) determined from phased microphone arrays, Journal of

Sound and Vibration 294 (4-5) (2006) 856–879.

[2]. J. Idier, Ed., Approche bayésienne pour les problèmes inverses, Traité IC2, Série

traitement du signal et de l'image, Hermès, Paris, nov. 2001.

[3]. N. CHU, A.M. Djafari, N. Gac, and J. Picheral, An efficient variational Bayesian

inference approach via Studient's-t priors for acoustic imaging in colored noises ,

Journal of the Acoustical Society of America, Vol. 133, No.5. Pt.2, POMA Vol 19, pp.

055031-40, 2013.

[4]. N. CHU, A.M. Djafari, N. Gac, and J. Picheral, An invariant convolution model

and its Variational Bayesian Approximation approach via Students-t priors for

aeroacoustic imaging in non -stationary noises , Journal of the Acoustical Society of

America, to submit, 2013.

[5]. R.Navarre, Traitement de données spectrales de Mars.

[6]. B.Pencrec, Accélération d’algorithmes de convolution sur processeurs graphiques.

[7]. CUDA_C_Pragramming_Guide, www.navida.fr

Page 32: Rapport de Stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../Rapport_stage_IUT... · Département GEII-1 IUT de Cachan Année 2013 Rapport de Stage [Accélération

Accélération des méthodes pour la localisation de source acoustiques Page 32 Xiangyang Gan – IUT de Cachan

Annexe 1

Programme de la boucle itératif :

Annexe 2

Un exemple de programme de transfert de variables entre le CPU et les GPUs :

for l=1:loop

yh=a_near*x;

xh=a_near_t*(y-yh);

%% calculer le gradient du critère

xh=-2*xh;

xh_matrice=converter_matrice(xh,size_x,size_y);

Hgk=a_near*xh;

%% calculer pas de descente

u=1/2*sum(xh(:).^2)/(sum(Hgk(:).^2)+sum(Hgd(:).^2));

x=x-u*xh;

%% estimer x

x=abs(x);

end

%% transferer les variables sur GPU noyau=gpuArray(single(noyau)); x=gpuArray(single(x)); y=gpuArray(single(y)); y_estime=gpuArray(single(y_estime)); u=gpuArray(single(u));

%% récupérer les variables sur GPU

erreur_deconv_cpu=gather(erreur_deconv_gpu);