5. Mise en œuvre sur cartes graphiques 85
5.1.2. Deux types d’interpolations
Les méthodes semi-Lagrangiennes utilisent deux algorithmes majeurs pour les
inter-actions entre les particules et le maillage basés sur des interpolations. Une interpolation
maillage-particule permet d’évaluer sur les particules une quantité connue sur le maillage et
inversement pour une interpolation particule-maillage. Le premier type d’interpolation est
utilisé lors de l’advection des particules pour connaître leur vitesse alors que le remaillage
exploite le second type. Stantchev et al. (2008) introduisent les stratégies particle-push
etparticle-pull pour réaliser l’étape d’interpolation particule-maillage. Ces deux stratégies
diffèrent au niveau de l’organisation de la charge de travail. La première consiste en un
trai-tement centré sur les particules dont le principe est de les remailler sur les points de grille
de leur voisinage. Elle permet un calcul simple des points de grille contenus dans le support
de la particule à partir de ses coordonnées et permet également, dans un cas tensoriel, une
réutilisation des poids de remaillage. Cependant, des accès conflictuels en mémoire peuvent
survenir lors du traitement en parallèle de plusieurs particules situées dans la même cellule.
La seconde est centrée sur le maillage de telle sorte qu’en chaque point de grille on agrège
les contributions des particules voisines. Le seul avantage de la seconde stratégie est de ne
pas conduire à des accès concurrents en mémoire. Dans cette stratégie, une recherche des
particules les plus proches est nécessaire.
Les méthodes de typeparticle-in-cell sont basées sur ces interpolations. Pour les
interpo-lations particule-maillage, la majeure partie des implémentations exploitent des stratégies
particle-pull et relaxent les éventuels problèmes d’accès concurrents par un regroupement
des particules voisines en blocs qui sont traités de manière séquentielle par un même
pro-cessus. Ainsi, un tri des particules à deux niveaux est nécessaire, d’abord par blocs puis au
sein d’un bloc. Différentes techniques sont employées comme par exemple le maintien d’une
structure de données triée (Rossi et al., 2012) ou un tri à chaque itération (Kong et al.,
2011). Quelque soit la méthode employée pour le tri, cela implique des réarrangements de
données au gré des déplacements des particules afin d’assurer un haut niveau de localité des
données. Les interpolations de type maillage-particule sont plus simples à mettre en œuvre
puisque l’interpolation se fait sur la grille dont la structure est régulière.
Pour ce qui est des méthodes particulaires avec remaillage, les premières implémentations
GPU exploitaient les primitives OpenGL du rendu graphique. En particulier, Rossinelliet
al.(2008) montrent que le remaillage des particules est bien plus efficace, avec une facteur
d’accélération de 1.5, lorsque qu’il est effectué par le moteur de rendu OpenGL plutôt que
par une implémentation CUDA. Cette implémentation se base sur des objets point-sprites
permettant la génération d’une texture contenant, après exécution du rendu en chaîne, les
sommes des contributions de l’ensemble des point-sprites. Ainsi, l’étape exécutée par le
fragment processor consiste à calculer les pixels de la texture par la formule de remaillage
en fonction de la distance auxpoint-sprites et de leur valeur. Les auteurs soulignent ici un
inconvénient de l’utilisation du langage CUDA qui est de ne pas permettre une exploitation
des fonctionnalités natives du matériel, en particulier les opérations du rendu graphique.
L’étape duvertex processeur permet, en amont du remaillage, de traiter les conditions aux
bords périodiques par une réplication des particules situées à proximité des bords ainsi que
d’écarter les particules transportant une quantité nulle ou inférieure à un certain seuil.
Cette approche est ensuite complétée (Rossinelli et al., 2010) pour le cas de domaines
ouverts. Les auteurs traitent les particules quittant le domaine local en les écartant au
moment de l’étape du vertex processor qui précède le remaillage. D’autre part, dans leur
implémentation, un remaillage systématique est effectué à chaque itération ce qui fait que
les particules sont toujours situées sur un point de grille au début de l’étape d’advection
et permet ainsi d’éviter une interpolation maillage-particule du champ de vitesse. Une
interpolation reste nécessaire pour la seconde étape du schéma d’intégration Runge-Kutta
du second ordre.
Une étude spécifique de l’interpolation maillage-particule est menée par Rossinelliet al.
(2011) sur des architectures multicœurs CPU et GPU. Comme précédemment,
l’implémen-tation GPU se base sur un stockage des particules en mémoire de textures. Les données
d’une même particule ne sont plus stockées dans un pixel mais par composantes dans
plu-sieurs textures. Chaque pixel contient les données de quatre points de grille dans la direction
des pixels. Dans leur étude, les auteurs utilisent la formuleM
04
pour une interpolation
ten-sorielle en 2D. Ainsi dans un traitement ligne par ligne, deux pixels consécutifs contiennent
nécessairement toute l’information pour traiter une particule. Parmi les 8 données lues,
seules 4 sont nécessaires, les auteurs utilisent des poids booléens afin de s’affranchir de
branchements conditionnels. L’inconvénient de cette approche est qu’il est nécessaire de
charger en mémoire 8 éléments (2 pixels) dans la direction des pixels pour n’utiliser que les
quatre éléments du support de la particule. Les auteurs atteignent 72% de la performance
maximale atteignable en simple précision et les performances chutent fortement en double
précision.
Plus récemment, Büyükkeçeci et al.(2012) réalisent une étude des deux types
d’inter-polations maillage-particule et particule-maillage basées sur des stratégies respectivement
mesh-pull etparticle-push ce qui conduit à des algorithmes centrés sur les particules dans
les deux cas. Les auteurs proposent une implémentation générique dans laquelle les
parti-cules sont réarrangées dans une structure de donnée hiérarchique permettant un stockage
contigu des particules de la même région de l’espace. Cette structure se base sur un
trai-tement séquentiel des particules dans une même cellule en utilisant autant de copies du
domaine que du nombre maximal de particules par cellule. Cela conduit à n’avoir qu’une
seule particule par cellule et par copie ainsi que des cellules vides. Les cellules vides sont
peuplées de particules factices, écartées à la fin de l’interpolation, ce qui permet d’éviter des
branchements conditionnels. Des études systématiques de performances sont réalisées sur
plusieurs cartes graphiques pour chaque interpolation avec des formules linéaire ou M
40et
pour des problèmes 2D et 3D. Les auteurs soulignent que les meilleures performances sont
obtenues pour les cas 3D utilisant la formule M
40. Ils montrent des accélérations
significa-tives du temps de calcul entre leur implémentation GPU et une référence multicœur CPU.
Même si cette implémentation est efficace, les performances globales restent limitées par
l’intégration à la librairie PPM. En effet, l’utilisation de ce remaillage nécessite un transfert
des données en entrée ainsi que de retourner les résultats sur la mémoire de la machine hôte
avant de réaliser les autres parties de la résolution. Le facteur d’accélération obtenu est
généralement inférieur à 10, et même inférieur à 1 dans certains cas, en prenant en compte
ce temps de transfert.
À partir des différentes implémentations existantes de méthodes semi-Lagrangiennes et
en particulier des interpolations entre le maillage et les particules, nous proposons une
im-plémentation qui exploite les différents aspects inhérents à la méthode considérée. En effet,
l’utilisation d’un splitting dimensionnel est à l’origine de bon nombre de choix présentés
dans ce qui suit. Les données sont stockées dans des tableaux classiques, sans aucune
uti-lisation de structures de données spécifiques aux cartes graphiques comme les textures ou
les pixels. Après une description de ces choix, nous présentons les performances de chaque
fonction de la méthode pour la carte Nvidia K20m. La restriction à une seule carte
per-met de simplifier la présentation des résultats et l’extension à d’autres cartes se fait par
adaptation des configurations aux caractéristiques techniques de ce nouveau matériel. Les
performances sont données dans les métriques adaptées à chaque cas.
5.2. Implémentation et performances
Dans le document
Couplage de modèles, algorithmes multi-échelles et calcul hybride
(Page 99-102)