Chapitre II : Les simulations de dynamique
II.1 Les simulations de dynamique brownienne avec un type de particule
II.1.1 L’approche hybride pour la recherche de voisinage : grille r´eguli`ere
3k
BT
m
i(II.2)
o`un
iest un nombre fixe d’it´erations, ∆tle pas de temps etv
maxest la vitesse maximale de
toutes les particules du syst`eme. Cette ´equation correspond `a la figure II.1 dans le cas 2, o`u
les deux particules se d´eplaceraient `a leur vitesse maximale l’une vers l’autre et entreraient
en interaction. Il est alors possible de d´eduire qu’avantn
iit´erations, il est impossible que
ces deux particules entrent en interaction. Et donc de n’avoir `a r´eactualiser les listes que
toutes lesn
iit´erations, sans avoir `a effectuer de test. De mani`ere pratique, cette ´equation
ne peut pas ˆetre employ´ee dans la plupart des cas, car la vitesse maximale n’est pas souvent
d´eterminable. Il est par contre en pratique possible de l’utiliser, en rempla¸cant la vitesse
maximale par la vitesse moyenne v
moy, et en prenant une valeur pour n
isuffisamment
´elev´ee pour pouvoir supposer que la distanceR
shell/2 ne soit jamais franchie. Le probl`eme
de cette m´ethode est qu’elle repose sur un sc´enario peu vraisemblable dans le cas de
suspension collo¨ıdale, car les collo¨ıdes ont tendance `a avoir un mouvement erratique. C’est
pourquoi, cette m´ethode r´eactualise excessivement les listes de Verlet pour nos types de
simulation.
II.1.1 L’approche hybride pour la recherche de voisinage : grille
r´eguli`ere / liste de Verlet
Notre m´ethode utilise une combinaison entre des listes de Verlet et une grille r´eguli`ere
comme dans la litt´erature pr´esent´ee dans le paragraphe pr´ec´edent. Elle utilise ´egalement
un test dynamique pour d´eterminer quand il faut recalculer les voisinages de toutes les
particules comme le test d’Allen utilis´e pour les simulations CPU. Cependant, le test
choisi a ´et´e simplifi´e pour ne v´erifier qu’une seule distance au lieu d’une paire de distance.
En effet, les listes de Verlet sont valides tant qu’aucune particule ne s’est d´eplac´ee de plus
deR
shell/2 depuis la derni`ere mise `a jour. Ce test simplifi´e ne n´ecessite pas de r´eduction
et n’utilise que des acc`es m´emoires parfaitement coalescents. Il est donc parfaitement
adapt´e au GPU. L’algorithme 1 d´ecrit le d´eroulement de notre simulation de BD utilisant
notre test simplifi´e. La premi`ere ´etape d’une it´eration est de calculer la somme des forces
d’interaction appliqu´ees `a chaque particule. Pour cela, il faut avoir au pr´ealable une liste
Chapitre 2 : Simulations de Dynamique Brownienne
Algorithm 1 Simulation de dynamique brownienne avec un type de particule
1: actualiserListesDeV oisinage=vrai
2: for all iteration do
3: if actualiserListesDeV oisinage=vraithen
4: tri des particules selon leur cl´e de hachage
5: for all particule ido // en parall`ele
6: P osP recedente
i=position
i7: r´eactualiserListeDeV oisinage
i8: actualiserListesDeV oisinage =f aux
9: for all particule i do // en parall`ele
10: sommeDesF orces
i= 0
11: for all particule j ∈ListeDeV oisinage
ido
12: if distance(position
i, position
j)< R
Cthen
13: calculer sommeDesF orces
i14: calculer position
i15: if dist(position
i, P osP recedente
i)> R
shell/2 then
16: actualiserListesDeV oisinage=vrai
de Verlet valide pour chaque particule. Si les listes de voisinage sont obsol`etes, il faut
ex´ecuter une ´etape interm´ediaire pour les mettre `a jour. Pour cela les particules sont tout
d’abord regroup´ees selon les cellules de la grille r´eguli`ere auxquelles elles appartiennent,
en utilisant la m´ethode du tri par z-index. A chaque particule est associ´ee une cl´e de
hachage issu du z-index, puis les particules sont tri´ees selon leur cl´e `a l’aide d’un tri par
base, le tri le plus efficace avec une architecture GPU [13]. Ainsi, toutes les particules
d’une mˆeme cellule sont adjacentes en m´emoire. Il suffit alors de calculer l’index de la
premi`ere et derni`ere particules d’une cellule, afin de pouvoir acc´eder rapidement `a toutes
les particules qu’elle contient. Les index des particules qui se trouvent `a une distance
inf´erieure `a R
L`a la particule i sont stock´es dans les listes de voisinage. Une fois que ces
listes sont valides, le calcul des sommes des forces s’effectue en lan¸cant un thread par
particule i. Chaque thread va parcourir la liste de Verlet associ´ee `a i, afin de d´eterminer
les particules se trouvant `a une distance inf´erieure `aR
Cde la particule i, et de calculer la
force qu’elles exercent suri grˆace `a l’´equation (II.1). Dans le cas o`u les listes de voisinage
viennent tout juste d’ˆetre mises `a jour, cette ´etape de calcul des forces est r´ealis´ee en
mˆeme temps que la reconstruction des listes, afin de ne pas reparcourir et recalculer les
distances. La deuxi`eme ´etape consiste `a calculer la nouvelle position `a partir des forces
d’interaction pr´ec´edemment calcul´ees, en y ajoutant une force li´ee `a la viscosit´e et une
force erratique, suivant l’´equation (I.6). De plus, le d´eplacement de toutes les particules
depuis la derni`ere mise `a jour est ´egalement calcul´e et stock´e afin de pouvoir r´ealiser
l’´etape suivante. La derni`ere ´etape est l’´el´ement principal qui diff`ere avec les travaux
pr´ec´edents de la litt´erature. Le but est de d´eterminer si les listes de voisinage peuvent
ˆetre potentiellement obsol`etes durant la prochaine it´eration. Notre test consiste `a v´erifier
Chapitre 2 : Simulations de Dynamique Brownienne
si une des distances parcourues depuis la derni`ere r´eactualisation des listes de voisinage a
d´epass´e le seuil limite de R
shell/2. Cette ´etape est tr`es rapide `a r´ealiser sur GPU : il suffit
de lancer un thread par particule afin de regarder si son d´eplacement a d´epass´e la limite.
Si c’est le cas, il va modifier le marqueur indiquant si les listes doivent ˆetre mises `a jour. Ce
marqueur est une variable globale `a tous les threads, cependant, il n’y a pas de probl`eme
de concurrence. Mˆeme si deux threads ´ecrivent dans cette variable en mˆeme temps, la seule
chose n´ecessaire de v´erifier est uniquement si ce marqueur global a ´et´e modifi´e au cours du
test. Ainsi, ce test ne repr´esente qu’une petite portion du temps moyen total pour calculer
une it´eration comme le montre le tableau II.1. Compar´e au test de la litt´erature, notre test
va mettre `a jour les listes de Verlet l´eg`erement plus r´eguli`erement, mais la r´eactualisation
reste tout de mˆeme bien moins excessive qu’avec la m´ethode avec un nombre d’it´erations
fixe. Ainsi, le goulot d’´etranglement qui sans m´ethode de conservation ´etait la recherche
de voisinage (r´eactualisation des voisins, tri et test de r´eactualisation), ne repr´esente plus
que 13% du temps d’ex´ecution de la simulation, contre pr`es de 60% pour le calcul de la
somme des forces. Sur GPU, les listes de voisinage correspondent `a un seul tableau en
Temps moyen It´erations Ratio
Calcul somme forces 7.15 ms 1 57.7%
Calcul positions 3.6 ms 1 29.2%
Test reactualisation 0.4 ms 1 3.2%
Tri par base 29.5 ms 51 4.6%
Reactualisation des voisins 33.5 ms 51 5.3%
Tableau II.1 – Temps moyen pour ex´ecuter les diff´erentes ´etapes de l’algorithme 1 et
le pourcentage sur le temps total de calcul sur toute la simulation (1M de particules,
φ =15%). La 3e colonne montre le nombre moyen d’it´erations entre deux ex´ecutions de
cette ´etape.
m´emoire global, dont chaque sous-partie d’une taille fixe deN
Lmaxcases, correspond `a une
liste de voisinage. Cette valeur de N
Lmaxdoit ˆetre suffisamment grande afin que chaque
particule ait assez d’espace pour stocker tous ses voisins, mais d’une grandeur raisonnable
pour ne pas consommer excessivement de m´emoire. Un maximum th´eorique peut ˆetre
calcul´e `a partir du th´eor`eme de Lagrange, d´emontrant que l’agencement compact le plus
dense d’un ensemble de sph`eres de rayon 1 est de
3√π2
. Ainsi, il est garanti d’avoir une
valeur de N
Lmaxsuffisamment grande en employant l’´equation suivante :
N
Lmax=
&
4π(RL+r)3 3 π 3√ 2∗
4πr33'
(II.3)
o`u r est le rayon d’une particule et R
Lest le rayon de conservation associ´e aux listes
de Verlet. Cependant, cet agencement compact n’apparaˆıt jamais dans nos simulations
Chapitre 2 : Simulations de Dynamique Brownienne
de BD, ainsi l’utilisateur peut affecter une valeur plus petite que le N
Lmaxth´eorique
`a ce param`etre. La valeur optimale de R
Ln’est pas d´eterminable automatiquement
´egalement. Le moyen par lequel nous l’avons d´etermin´ee est en testant des valeurs de
R
Lempiriquement `a l’aide de l’´equation (II.2) avec la vitesse moyenne.
Dans le document
Simulations de fluides complexes à l'échelle mésoscopique sur GPU
(Page 42-45)