Adaptation et implémentation d’un programme de tir de
rayons sur processeur graphique (GPU)
Description :
Les algorithmes de tracé de rayons sont des outils efficaces pour l’étude acoustique de
salles. On modélise une salle par des surfaces aux propriétés acoustiques connues et l’on y on
place au moins une source et un récepteur virtuels. Chaque source virtuelle émet de nombreux
rayons dont les contributions sont prises en compte au(x) récepteur(s). Même si ces
algorithmes sont encore très gourmands en temps de calcul, ils se prêtent bien à la
parallélisation, chaque rayon tiré étant indépendant des autres.
Les processeurs graphiques (utilisés sur les cartes graphiques des ordinateurs
personnels) disposent de nombreuses unités de calcul travaillant en parallèle sur des flux de
données (mais peu de possibilité de branchement). Jusqu’il y a peu, ces processeurs étaient
uniquement destiné à l’affichage graphique mais les nouveaux processeurs des acteurs
majeurs du marché (NVIDIA et AMD) sont dorénavant développés pour s’adapter au GPGPU
(General Purpose computing on Graphics Processing Units). Ils fournissent chacun leur
solution pour en faciliter l’utilisation (librairie de fonctions de haut niveau, compilateur,
débuggeur, pour NVIDIA, outil CUDA et pour AMD, outil StreamSDK). Un standard
(openCL) permettant l’interopérabilité des programmes sur différents matériels a été établi.
L’algorithme utilisé par le laboratoire d’acoustique (Salrev) tire les rayons
séquentiellement. Le but de ce travail est de proposer et d’implémenter l’algorithme du tir de
rayon (Salrev) sur GPU (Graphics Processing Unit).
Objectifs :
- Prise de contact, via la littérature scientifique, avec le thème de la simulation en
acoustique des salles et avec le tir de rayons sonores;
- Analyse de l’algorithme logiciel Salrev existant. Extraction de la structure parallèle de
l’algorithme et identification des endroits clés de l’algorithme (partie du code devant
faire l’objet d’une attention particulière sur son temps d’exécution).
- Présentation d’une structure d’algorithme parallèle efficace implémentable sur GPU
(certaines fonctions pourraient être calculées sur le GPU et d’autres sur le CPU).
- Implémentation de l’algorithme.
- Analyse des performances et conclusions.
Profil de l’étudiant : Informaticien ou Ingénieur civil ayant de bonnes connaissances en C.