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 L’OpenCL................................... 21
6.5.3 L’OpenACC.................................. 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 r´ef´erence et op´erateur d´er´ef´erence . . . . . . . . . . . 23
7.1.2 Lestableaux.................................. 23
7.1.3 La programmation orient´ee 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 m´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