Simulation Numérique de Nuages d`ions piégés sur GPU

Simulation Num´erique
de Nuages d’ions pi´eg´es sur GPU
Nicolas Sillitoe
Mars-Juin 2014
Responsable de Stage
Laurent Hilico
Equipe Ions Pi´eg´es
Laurent Hilico
Albane Douillet
Jean-Philippe Karr
1
Remerciements
Outre mon maitre de stage, qui m’a consacr´e beaucoup de temps, et l’´equipe d’accueil, je
souhaite remercier Pierre Dupr´e qui m’a aid´e et nous a mis en relation avec le LLR, LLR que
nous remercions pour nous avoir mis `a disposition la machine LLRTitan qui nous a servi de
plateforme de d´eveloppement et de calcul.
This work has been funded by the P2IO LabEx (ANR-10-LABX-0038) in the framework
”Investissements d’Avenir” (ANR-11-IDEX-0003-01) managed by the French National Research
Agency (ANR).
Contents
I Introduction 5
II Partie Th´eorique 5
1 Pi´egeage d’ions dans un pi`ege de Paul id´eal 5
1.1 Pr´esentation du probl`eme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Principedupi´egeage ................................. 5
1.3 EquationsdeMathieu ................................ 6
1.4 Approximation adiabatique dans un champ ´electromagn´etique inhomog`ene
d´ependantdutemps ................................. 7
1.4.1 Approximation adiabatique . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.2 Justification des hypoth`eses . . . . . . . . . . . . . . . . . . . . . . . . . 9
2 Pi`ege de Paul lin´eaire 10
2.1 G´eom´etrie du pi`ege de Paul lin´eaire . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Equations du mouvement et approximation adiabatique . . . . . . . . . . . . . . 11
2.3 Potentiel effectif, Profondeur du puits et ordres de grandeurs . . . . . . . . . . . 13
3 Interaction avec le laser de refroidissement 13
4 Taille du nuage d’ions pour le refroidissement sympathique 16
5 Refroidissement Sympathique et besoin de puissance de calcul 17
III Partie Num´erique 19
6 GPU 19
6.1 Quest-cequeleGPU? ................................ 19
6.2 Pourquoi calculer sur GPU? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.3 Pourquoi le GPU est-il plus efficace? . . . . . . . . . . . . . . . . . . . . . . . . 20
6.3.1 Entermedevitesse.............................. 20
6.3.2 En terme d’efficacit´e ´energ´etique . . . . . . . . . . . . . . . . . . . . . . 21
2
6.4 Pourquoi tout le monde n’utilise pas les GPU? . . . . . . . . . . . . . . . . . . . 21
6.5 Quelles sont les options pour programmer sur GPU? . . . . . . . . . . . . . . . . 21
6.5.1 LeCUDA ................................... 21
6.5.2 LOpenCL................................... 21
6.5.3 LOpenACC.................................. 22
6.6 Y-a-t il plus performant que le GPU? . . . . . . . . . . . . . . . . . . . . . . . . 22
6.6.1 ASIC...................................... 22
6.6.2 FPGA ..................................... 22
7 Introduction au C++ 23
7.1 Pointeur........................................ 23
7.1.1 Pointeur, op´erateur ef´erence et op´erateur d´er´ef´erence . . . . . . . . . . . 23
7.1.2 Lestableaux.................................. 23
7.1.3 La programmation orienee objet . . . . . . . . . . . . . . . . . . . . . . 24
8 Le mod`ele de programmation du CUDA 24
8.1 Architecture physique et terminologie . . . . . . . . . . . . . . . . . . . . . . . . 24
8.1.1 HostetDevice ................................ 24
8.1.2 Coeurs, Warps et Streaming Multiprocessors . . . . . . . . . . . . . . . . 24
8.1.3 M´emoire globale, partag´ee, cache L1, constante et texture . . . . . . . . 25
8.2 Structure Logique d’un Programme . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.2.1 BlocksetThreads............................... 26
8.2.2 Kernel..................................... 26
8.2.3 Stream..................................... 27
8.2.4 Synchronicit´e et Asynchronicit´e . . . . . . . . . . . . . . . . . . . . . . . 28
8.3 Allocations et Transferts de emoire . . . . . . . . . . . . . . . . . . . . . . . . 28
8.4 Exemple de programmation en parall`ele . . . . . . . . . . . . . . . . . . . . . . . 29
8.4.1 Aper¸cuduCode ............................... 29
8.4.2 D´etail du fonctionnement du kernel . . . . . . . . . . . . . . . . . . . . . 30
9 Notre impl´ementation de l’int´egration sur GPU 30
9.1 Repr´esentation des ions dans la memoire . . . . . . . . . . . . . . . . . . . . . . 30
9.2 Calcul de la force de coulomb . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
9.2.1 Introduction.................................. 31
9.2.2 Pr´esentation du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
9.2.3 D´etailduCode ................................ 31
9.2.4 Consid´erations sur le Nombre de Particules . . . . . . . . . . . . . . . . . 34
9.2.5 Conclusion................................... 34
9.3 Force du Pi`ege de Paul Lin´eaire . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
9.4 Interaction avec le Laser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
9.5 InitialisationdesIons................................. 36
9.5.1 Relaxation non Physique . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
9.5.2 Relaxation Physique avec le Laser . . . . . . . . . . . . . . . . . . . . . . 36
9.6 Refroidissement Sympathique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
9.7 R´esolution d’Equation Diff´erentielle par Verlet Vitesse . . . . . . . . . . . . . . 37
9.7.1 L’algorithme Verlet Vitesse . . . . . . . . . . . . . . . . . . . . . . . . . 37
9.7.2 Notre algorithme sur GPU . . . . . . . . . . . . . . . . . . . . . . . . . . 37
9.7.3 Pourquoi un Algorithme Diff´erent? . . . . . . . . . . . . . . . . . . . . . 38
3
9.8 Choixdupasdetemps................................ 40
9.9 Choix de la double pr´ecision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
9.10 Analyse et sauvegarde des esultats . . . . . . . . . . . . . . . . . . . . . . . . . 40
10 Adaptation Multi GPU 41
10.1Dicult´edelatˆache ................................. 41
10.2 Partage des positions entre les GPU . . . . . . . . . . . . . . . . . . . . . . . . . 42
10.2.1 TransfertsviaCPU.............................. 42
10.2.2 Transferts Peer to Peer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
10.2.3 Impl´ementation finale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
10.2.4 Consid´erations sur le nombre de particules . . . . . . . . . . . . . . . . . 43
IV R´esultats 43
11 R´esultats num´eriques 43
11.1Validit´eduProgramme................................ 43
11.2 R´esultats en termes de performances . . . . . . . . . . . . . . . . . . . . . . . . 44
11.3 R´esultats de l’impl´ementation multi GPU . . . . . . . . . . . . . . . . . . . . . 46
12 R´esultats physiques 46
12.1Tailledunuagedions ................................ 46
12.2 Refroidissement sympathique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
12.3Param`etresdulaser.................................. 48
12.3.1 Angledulaser................................. 49
12.3.2 Detuningdulaser............................... 50
V Conclusion 53
4
Part I
Introduction
L’objectif principal de ce stage est d’´ecrire un code de simulation de refroidissement sympa-
thique avec d’un nuage d’ions en CUDA en partant d’un code en Fortran. Dans ce rapport je
discute de la physique du ph´enom`ene simul´e, des raisons pour choisir le GPU comme plateforme
de calcul, les alternatives aux GPU, son mod`ele de programmation et les r´esultats obtenus en
termes de performances et de physique.
Part II
Partie Th´eorique
Dans cette partie nous pr´esentons le probl`eme physique trait´e et la th´eorie justifiant les formules
physiques utilis´ees dans le programme de calcul num´erique.
1 Pi´egeage d’ions dans un pi`ege de Paul id´eal
1.1 Pr´esentation du probl`eme
On veut simuler la dynamique d’un nuage d’ions Be+pi´eg´es et refroidis par laser pour le
refroidissement d’ions H+
2produits `a l’ext´erieur. Les ions Be+sont pi´eg´es dans un pi`ege de
Paul lin´eaire que nous d´ecrivons en section 2. Le refroidissement des ions H+
2, insensibles au
laser, se fait par thermalisation par collision (interaction coulombienne) avec le nuage de Be+,
c’est ce qu’on appelle le refroidissement sympathique.
1.2 Principe du pi´egeage
Le pi`ege de Paul id´eal, repr´esene en figure 1, est compos´e de deux ´electrodes chapeau au
potentiel 0 et d’une ´electrode en anneau au potentiel V aux courbures hyperboliques. La forme
de potentiel est
Φ = V
2d2(2z2x2y2+r2
0),(1)
avec r0la distance la plus courte du centre `a l’´electrode en anneau, z0la distance la plus courte
entre le centre et les ´electrodes chapeau et d=q1
2r2
0+z2
0.
Si V est constant le pi`ege est confinant en z et d´econfinant en x et y. L’id´ee de Wolfgang
Paul a ´et´e d’utiliser un potentiel V oscillant, de la forme
Φ = U0+V0cos(Ωt)
2d2(2z2x2y2+r2
0).(2)
Le champ ´electrique a donc une composante statique
E0=U0
2d2(2zˆz +xˆx +yˆy),(3)
5
1 / 54 100%

Simulation Numérique de Nuages d`ions piégés sur GPU

La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !