• Aucun résultat trouvé

Deux types d’interpolations

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

0

4

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

40

et

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

Documents relatifs