Depuis septembre 2016, Corentin ROUFF et Aimie TALON, actuellement étudiants en Génie Électrique par alternance à l’INSA de Strasbourg, ont décidé de relever le défi de l’un de leurs enseignants dans le cadre des projets de recherche technologique de 5ème année : utiliser une carte graphique pour modéliser la propagation d’une onde électromagnétique dans un milieu.
Quand on parle de carte graphique (ou GPU pour Graphical Processor Unit), le premier réflexe est généralement de penser « jeux vidéo ». Or ici il n’est pas question d’évoquer League Of Legend, Warcraft ou encore Call Of Duty, mais bien programmation, calculs scientifiques et simulations de modèles mathématiques.
Alors que les capacités des processeurs (ou CPU pour Central Processor Unit) ont peiné à évoluer ces dernières années, les cartes graphiques sont aujourd’hui au cœur des recherches pour trouver un substitut aux supercalculateurs, devenus trop chers et inaccessibles aux universités et aux chercheurs. Cet engouement est dû à la structure même des cartes graphiques, qui possèdent bien plus d’unités de calcul que les processeurs classiques, et représentent un potentielle énorme en termes de capacités de calcul et d’économie financière.
Dans le cadre du projet de 5ème année, Corentin ROUFF et Aimie TALON ont travaillés sur le projet proposé par un enseignant-chercheur de l’INSA et intitulé : « Développement d’un logiciel FDTD accéléré sur carte graphique sous CUDA ».
Le projet consiste à écrire un code en langage C qui permettrait de modéliser le déplacement d’une onde électromagnétique. Ce sujet fait intervenir plusieurs disciplines, dont la programmation, la physique ondulatoire et les mathématiques. Les deux étudiants ont dû effectuer une recherche bibliographique relativement intense et lourde afin d’arriver à se familiariser avec ces toutes nouvelles notions.
Comment ça marche ?
Les équations de Maxwell, servent à calculer les déplacements d’une onde électromagnétique dans un milieu. Ces équations ont été adaptée de manière à pouvoir positionner cette onde dans l’espace à chaque instant donné grâce à une méthode de discrétisation, la FDTD, et modéliser ses mouvements sur un graphique.
Le code qui sert à calculer cette position est extrêmement lourd et long à l’exécution sur un processeur normal. C’est ici qu’intervient la carte graphique. Le concept même de calcul parallèle repose sur le fait de diviser au maximum le calcul de position déclaré dans le CPU et d’exécuter ces diverses parties en simultané sur la GPU. Elles ont donc été réparties via un code en langage CUDA entre les différents cœurs (unités de calcul) de la carte graphique (cf photo ci-dessous). Celle-ci va exécuter tous ces calculs simultanément et retourner le résultat au processeur pour être traité.
Crédit : Mesbahi, Free CFD Workflow
Ainsi, au lieu de traiter chaque instruction l’une après l’autre, seconde après seconde, la carte graphique exécute toutes ces instructions quasiment en même temps et permet d’accélérer de manière significative le calcul. Plusieurs méthodes existent pour optimiser encore le temps de calcul, mais elles sont bien plus complexes à comprendre, et sont utilisées dans de nombreux domaines comme l’imagerie médicale, la sécurité des données en informatique, ou encore l’aérospatiale.
Forts de ces conclusions, les étudiants ont eu par ailleurs la satisfaction de voir une onde évoluer sur leur écran comme les vagues provoquées par une goutte d’eau (voir photo ci-dessous), sans devoir attendre toute la nuit que le programme ait fini de s’exécuter.
D’après eux, le jeu en valait la chandelle !
Crédit : Corentin ROUFF, Aimie TALON