rapport de stage - webpages.lss.supelec.frwebpages.lss.supelec.fr/perso/.../rapport_stage_iut... ·...
TRANSCRIPT
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 :
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.
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
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
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.
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
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) 𝐶
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)
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)
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 𝒚 ��𝒏 𝒄𝒕 𝒙𝒏 𝟏 𝒙𝒏
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)
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.
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
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
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
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.
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
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
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
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)
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
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
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é (%)
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)
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
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
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)
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.
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.
Accélération des méthodes pour la localisation de source acoustiques Page 30 Xiangyang Gan – IUT de Cachan
Diagramme de Gantt
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
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);