Ecole Informatique 2010 La Programmation des Architectures Multi-cœurs Cécile Barbier Fatih Bellachia Alain Masserot
Programmation Parallèle - Problématique lPourquoi paralléliser: gagner du temps Utiliser plusieurs processeurs pour rendre une tache plus rapide Diminuer le temps pour exécuter un jeu de taches Une conséquence liée a l’évolution des microprocesseurs lUn code est composé De parties séquentielles Et de parties susceptibles d’être parallélisées lLoi d’Amdahl: T = Tseq + Tpar; p: portion du code parallelisable T = (1-p)*T + p*T N: nombre de cœurs T(N) = (1-p)*T + p*T/N Accélération:1/((1-p) + p/N) 15/02/2011 Informatique - Programmation Architectures Multi cœurs 2
Programmation Parallèle - Problématique lProblématique complexe lSystème hétérogène: Différentes types de machines Différents types de core Différentes gestions d’accès aux données (cache, I/O) lOptimisation des codes est compilateur dépendant 15/02/2011 Informatique - Programmation Architectures Multi cœurs 3
Programmation Parallèle – Lignes de recherche 15/02/2011 Informatique - Programmation Architectures Multi cœurs MPI, OpenCL GCD OpenMP TBB 4
Programmation Parallèle lLangages: PGAS: Partionned Goblal Address Space MPI: Message Passing Interface GCD: Grand Central Dispacth (MaxOS, Linux, FreeBSD): CPU OpenCL: Open computing language : Multiplateforme – CPU_GPU lLibrairies et compilateur: OpenMP: Open Multi-Processing TBB: Thread Building Block (C++) CUDA: GPU-nvidia uniquement HMPP: Heterogenous Multicore Parallel Programming (CAPS) : CPU_GPU 15/02/2011 Informatique - Programmation Architectures Multi cœurs Multiplateforme CPU 5
Programmation Parallèle: OpenCL framework 15/02/2011 Informatique - Programmation Architectures Multi cœurs 6 CPU_
Programmation Parallèle – Méthodologies pour CPU 15/02/2011 Informatique - Programmation Architectures Multi cœurs 7
Programmation Parallèle: GPU lAccessible uniquement via PCI-Express lLangages: NVIDIA CUDA Février 2007 ATI Stream SKD Décembre 2007 lGPU double précision: Fin 2008 lProgrammation très liée au matériel Thread GPU ≠ Thread CPU exécute de même code (SPMD: Single Process, Multiple Data ) partagent les mêmes registres s’exécute par unité de 32 hard-threads Performance liée a la gestion de la mémoire 15/02/2011 Informatique - Programmation Architectures Multi cœurs 8
Programmation Parallèle - Méthodologies pour GPU 15/02/2011 Informatique - Programmation Architectures Multi cœurs 9
Programmation Parallèle - Conclusion lDifférentes approches de la parallelisation en fonction de l’objectif Langage: Multiplateforme Librairie et compilateur : CPU/GPU Le code reste compatible mono core (OpenMP, TBB) Possibilité de mixer les deux :MPI et OpenMP OpenCL semble avoir une approche plus complète: Support les cibles: DSP, GPU, … lGPU: Plateforme très ciblée Difficulté de mise en œuvre Estimation gain en performance / complexité de portage du code 15/02/2011 Informatique - Programmation Architectures Multi cœurs 10
Programmation parallèle: Modele: « Shared memory multiprocessing programming » 15/02/2011 Informatique - Programmation Architectures Multi cœurs 11