La programmation parallèle est désormais une incontournable solution aux problèmes de performance. Ce n'est pas la seule, mais elle ne peut être ignorée. Les nombreux coeurs et CPUs qui peuplent nos serveurs en sont la preuve.
Elle peut aussi s'utiliser plus souvent qu'on pourrait le penser. Que ce soit pour diminuer les temps de réponse ou augmenter le débit.
Nous vous proposons un état des lieux. Quels sont les usages? Quel est le degré de facilité? Comment se prémunir de la complexité? CPU ou GPU?
À l'aide d'exemples de code, tout ce qui est nécessaire de mettre dans le cartable du développeur vivant dans l'air du temps.
3. La fin de la loi de Moore ?
Énoncée par Gordon Moore, co-fondateur d’Intel en 1965
Doublement du nombre de transistors sur une puce tous les 2 ans
Encore techniquement vraie mais la fréquence n’augmente plus depuis 2005.
Les fondeurs ont changés d’architecture pour augmenter la puissante des processeur :
multi cœurs.
3
4. Loi des rendements décroissants
Loi datant de 1768, énoncée par David Ricardo :
En augmentant la quantité utilisée d’un facteur, celle de l’autre
restant fixe, on obtient une quantité supplémentaire de
produits de moins en moins grande
VS
4
5. Évolution des architectures
CPU : multicoeurs
• La course au Hertz est finie
• Le nombre de cœurs est en constance
augmentation
GPU : des centaines de cœurs
• Surpuissant… en parallèle
5
7. Bonus: C’est écologique!
Intel
X5560 (2.8 GHz, 4 cores, 95 watts)
vs
X5660 (2.8 GHz, 6 cores, 95 watts)
Même nombre de Watt
50% plus de puissance
Si on ignore la loi de Amdahl…
7
8. Loi d’Amdahl
La fraction du
temps d'exécution
qui ne peut tirer
profit de
l'amélioration
limite le gain de
performance global,
quelle que soit la
valeur de
l'amélioration de la
composante.
8
27. GPGPU : Adapté au parallélisme de masse
Exploiter la puissance de calcul des GPUs pour le traitement de
tâches massivement parallèles
Adapté aux algorithmes parallélisables
Peu adapté au traitement rapide de tâches séquentielles
Nvidia Tesla K20X
2688 cœurs – 3950 Gflops
4450 $
235 W
1,12 $ / Gflop
Xeon E7-8870
10 cœurs – 96 Gflops
4616 $
130 W
48, 08 $ / GFlop
27
28. GPGPU : Architecture « orientée débit »
Changement de paradigme
Low-latency pour le CPU
Orienté débit pour le GPU
Traitement des tâches dans l’ordre
Basé sur le modèle SIMD
Génération en masse de threads pour
traiter la même instruction
28
29. GPGPU : Les facteurs limitants
La multiplication des branches détériore les performances
Les unités de calculs d’une branche doivent attendre les autres
Sous-utilisation matérielle
Limitation matérielle
Transfert de données entre les
mémoires CPU et GPU
29
42. Démo
Sur GitHub
Pour récupérer le projet
git clone git://github.com/henri-tremblay/parallel-lab.git
Pour compiler (tout est dans vanillapull)
mvn install
Pour exécuter
mvn –pl webapp –Dspring.profiles.active=${mode}
• mode = vanilla | mono | naive | executor | pool |
akka
Pour bencher
mvn –pl gatling gatling:execute -Dgatling.simulationClass=PricingSimulation
42
Notes de l'éditeur
Pourquoi ça vous tombe dessus là toute de suite: À cause de la loi de Moore!Henri:« Démontrer que la programmation parallèle doit désormais … »C’est une technologie mature et omniprésente. Elle ne doit plus être ignorée comme solution possible à vos problèmes de développement par peur de complexité.Évidemment, il y a encore des écueils, mais depuis quelques années, la complexité a été largement réduite.Mais commençons pas le début: Pourquoi ça vous tombe dessus là tout de suite?« Petit aparté: Toute présentation sur la programmation parallèle se doit de parler de la loi de Moore. Nous ne dérogerons pas à la règle donc, je reprends »