• Aucun résultat trouvé

8.3 Recherche des kPPV en CUDA

9.1.3 Temps de calcul

9.1.3.1 Tableau général

Le tableau 9.1 présente le temps de calcul, exprimé en secondes, de l’en- semble des méthodes et implémentations listées précédemment. Pour cette étude, les ensembles de points que sont les références et les requêtes sont de même taille et contiennent des données différentes. Dans le cas où les deux ensembles seraient identiques, le problème serait plus simple ; nous considérons le problème le plus dur.

Le temps de calcul dépend du nombre de points (noté n), de la dimension de ses points (notée d) et du paramètre k correspondant au nombre de voi- sins à considérer (kPPV). Boltz et al.[BDB07] ont montré que la valeur du paramètre k influait peu sur la qualité de leurs résultats. Ainsi, nous utili- sons k=20 pour la première partie de l’étude. Les valeurs de n et d utilisées sont des valeurs courantes que l’on retrouve dans plusieurs applications de traitement d’images.

Le principal résultat de cette étude est le fait que CUDA permette de grandement diminuer le temps de calcul nécessaire pour la recherche des kPPV. Selon le tableau 9.1, BF-CUDA est jusqu’à 407 fois plus rapide que

9.1. Résultats sur données synthétiques 129 Methodes n=1200 n=2400 n=4800 n=9600 n=19200 n=38400 d=8 BF-Matlab 0.51 1.69 7.84 35.08 148.01 629.90 BF-C 0.13 0.49 1.90 7.53 29.21 127.16 ANN-C++ 0.13 0.33 0.81 2.43 6.82 18.38 BF-CUDA 0.01 0.02 0.04 0.13 0.43 1.89 d=16 BF-Matlab 0.74 2.98 12.60 51.64 210.90 893.61 BF-C 0.22 0.87 3.45 13.82 56.29 233.88 ANN-C++ 0.26 1.06 5.04 23.97 91.33 319.01 BF-CUDA 0.01 0.02 0.06 0.17 0.60 2.51 d=32 BF-Matlab 1.03 5.00 21.00 84.33 323.47 1400.61 BF-C 0.45 1.79 7.51 30.23 116.35 568.53 ANN-C++ 0.39 1.78 9.21 39.37 166.98 688.55 BF-CUDA 0.01 0.03 0.08 0.24 0.94 3.89 d=64 BF-Matlab 2.24 9.37 38.16 149.76 606.71 2353.40 BF-C 1.71 7.28 26.11 111.91 455.49 1680.37 ANN-C++ 0.78 3.56 14.66 59.28 242.98 1008.84 BF-CUDA 0.02 0.04 0.11 0.40 1.57 6.65 d=80 BF-Matlab 2.35 11.53 47.11 188.10 729.52 2852.68 BF-C 2.13 8.43 33.40 145.07 530.44 2127.08 ANN-C++ 0.98 4.29 17.22 73.22 302.44 1176.39 BF-CUDA 0.02 0.04 0.13 0.48 1.98 8.17 d=96 BF-Matlab 3.30 13.89 55.77 231.69 901.38 3390.45 BF-C 2.54 10.56 39.26 168.58 674.88 2649.24 ANN-C++ 1.20 4.96 19.68 82.45 339.81 1334.35 BF-CUDA 0.02 0.05 0.15 0.57 2.29 9.61

TABLE 9.1 – Comparaison du temps de calcul, donné en secondes, pour les mé- thodes BF-Matlab, BF-C, ANN-C++ et BF-CUDA. BF-CUDA est jusqu’à 407 fois plus rapide que BF-Matlab, 295 fois plus rapide que BF-C et 148 fois plus rapide que ANN-C++.

130 Chapitre 9. Expérimentations et application au suivi d’objets

BF-Matlab, 295 fois plus rapide que BF-C et 148 fois plus rapide que ANN- C++. Ces différents gains sont peu révélateurs sous cette forme. À titre d’exemple, si nous considérons n= 19200 points en dimension d= 96, la recherche des kPPV prend approximativement 15 minutes avec BF-Matlab, 11 minutes avec BF-C, 5 minutes et 40 secondes avec ANN-C++ et 2.3 se- condes avec BF-CUDA. Il est relativement complexe d’analyser simple- ment le tableau 9.1 dans son ensemble. Il parait plus simple de procéder par étape en étudiant séparément l’influence de la dimension, du nombre de points, et du paramètre k sur le temps de calcul.

9.1.3.2 Influence de la dimension

La figure 9.1 montre l’augmentation du temps de calcul en fonction de la dimension d pour des ensembles de n = 4800 points. Quelle que soit la dimension, BF-CUDA est la méthode la plus rapide. Le temps de cal- cul augmente linéairement avec la dimension d quelle que soit la méthode utilisée. Ce résultat semble logique dans la mesure où le nombre d’opéra- tions nécessaires pour calculer la distance entre deux vecteurs dépend li- néairement de la dimension. Bien que linéaire, l’influence de la dimension n’est pas égale entre les différentes méthodes et implémentations. Cette influence est exprimée par la pente de la fonction linéaire représentant le temps de calcul en fonction de la dimension. Cette pente, approximée par une méthode de régression linéaire, est calculée pour chacune des mé- thodes testées. Plus la pente est élevée, plus l’influence de la dimension est importante. Pour un ensemble de n=4800 points et k=20, cette pente est de 0.54 pour BF-Matlab, 0.45 pour BF-C, 0.20 pour ANN-C++, et est quasi nulle (0.001) pour BF-CUDA. ANN-C++ est moins sensible à la dimension que BF-Matlab et BF-C, et cette dimension a un impact quasiment négli- geable sur BF-CUDA en comparaison des autres méthodes. En d’autres termes, plus la dimension est importante, plus l’utilisation de CUDA est intéressante. Cette particularité est très intéressante pour des applications où les dimensions utilisées sont élevées comme dans la recherche d’images par le contenu [ADPB08, PADB08]. La dimension y est généralement res- treinte pour permettre une recherche rapide. L’utilisation de CUDA per- mettrait de lever cette restriction ; la description de chaque image et, par conséquent, la qualité de la recherche d’images seraient plus précises.

9.1.3.3 Influence du nombre de points

Nous connaissons l’influence de la dimension sur le temps de calcul. At- tachons nous maintenant à l’influence du nombre de points n (références et requêtes). La figure 9.2 montre le temps de calcul en fonction de n et pour chacune des méthodes précédemment listées. Une fois encore, BF-CUDA

9.1. Résultats sur données synthétiques 131 10 20 30 40 50 60 70 80 90 0 10 20 30 40 50 60 d Temps en secondes BF−Matlab BF−C ANN−C++ BF−CUDA 20 40 60 80 0 10 20 30 40 50 60 d Temps en secondes BF−Matlab 20 40 60 80 0 5 10 15 20 25 30 35 40 d Temps en secondes BF−C 20 40 60 80 0 5 10 15 20 d Temps en secondes ANN−C++ 20 40 60 80 0.04 0.06 0.08 0.1 0.12 0.14 0.16 d Temps en secondes BF−CUDA

FIGURE 9.1 – Évloution du temps de calcul en fonction de la dimension pour des ensembles contenant 4800 points et pour les méthodes BF-Matlab, BF-C, BF- CUDA et ANN-C++. Le paramètre k est fixé à 20. Quelle que soit la méthode utilisée, l’augmentation est linéaire. Cependant, en comparaison des méthodes BF- Matlab et BF-C, cette augmentation est moins importante avec ANN-C++, et est quasi-nulle avec BF-CUDA.

132 Chapitre 9. Expérimentations et application au suivi d’objets

est la méthode la plus rapide quel que soit le nombre de points. Nous re- marquons que le temps de calcul augmente de manière polynomiale avec le nombre de points quelle que soit la méthode utilisée. Cette augmentation est un résultat attendu dans la mesure où nous avons n2distances à calcu-

ler, les deux ensembles de points étant de même taille dans nos expérimen- tations. En revanche, l’influence de n diffère selon la méthode. L’adéqua- tion entre l’algorithme et l’architecture matérielle est telle qu’en comparai- son des autres méthodes, l’augmentation du temps de calcul est quasiment négligeable pour BF-CUDA. Le nombre de points est souvent limité pour permettre une recherche rapide des kPPV. Une fois encore, l’utilisation de CUDA permet de lever cette restriction.

9.1.3.4 Influence du paramètre k

La figure 9.3 montre l’influence du paramètre k sur le temps de calcul pour des ensembles de 4800 points en dimension 32. Selon cette figure, la méthode la plus rapide est BF-CUDA. Rappelons que nous utilisons le tri par insertion modifié défini dans la section 8.3.2. Pour la méthode BF, le pa- ramètre k n’est utilisé, et par conséquent n’a d’influence, que dans l’étape de tri. Pour la méthode ANN-C++, ce paramètre modifie le parcours de l’arbre.

Quelle que soit la méthode utilisée, le temps de calcul augmente linéaire- ment avec k. Cependant, cette augmentation, représentée par la pente de la courbe, est très faible. Cette pente est de 0.079 pour BF-Matlab, 0.007 pour BF-C, 0.017 pour ANN-C++, et 0.002 pour BF-CUDA. En ce qui concerne l’augmentation obtenue avec ANN-C++, il semble sur la figure que cette augmentation soit logarithmique. Cependant, ce comportant n’est observé que pour les premières valeurs de k ; dès lors que k est supérieur à 20, l’aug- mentation est linéaire.