11.4.6 : Conclusion



Pour répondre à des besoins de calcul en croissance exponentielle alors que les gains de performance séquentielle d'une génération de CPU à l'autre étaient en décroissance exponentielle, les infrastructures de calcul ont dû évoluer en devenant massivement parallèles.

Si l'infrastructure de la Grille a longtemps su assurer automatiquement l'intégralité du travail de parallélisation des calculs de physique, cette approche atteint aujourd'hui ses limites, et la parallélisation manuelle de certains calculs devient nécessaire.

Malheureusement, le calcul massivement parallèle repose sur une infrastructure matérielle hiérarchique extrêmement complexe, dont la programmation regorge de périls. De nombreux obstacles doivent être surmontés pour bien en tirer parti et assurer un bon passage à l'échelle des calculs~:

  • La latence élevée, la bande passante réduite, et les topologies complexes des interconnexions.
  • Le réordonnancement des accès mémoires et des messages réseau.
  • Les abstractions inadaptées qui facilitent l'écriture de code incorrect, non portable, ou peu performant.
  • La nécessité d'adapter les algorithmes à l'échelle de parallélisme considérée.
  • Le caractère stochastique de l'exécution, source d'erreurs intermittentes aussi difficiles à détecter qu'à analyser.
  • L'existence de pannes matérielles qui doivent être prises en compte dès qu'on veut prendre la main sur la distribution du calcul.
  • L'immaturité des outils de débogage et de profilage.


Cependant, l'existence de nombreuses applications parallèles montre que toutes ces difficultés peuvent être surmontées, et des nouveaux paradigmes, bibliothèques et outils apparaissent chaque année pour simplifier toujours plus l'écriture et le passage à l'échelle de programmes parallèles.

En 2019, le calcul parallèle et distribué reste donc un domaine en évolution rapide, que ce soit au niveau matériel ou au niveau logicielle, et une veille technologique extrêmement attentive est requise pour permettre l'intégration de ces nouvelles approches du parallélisme au modèle de calcul de l'IN2P3, ainsi que la formation des développeurs à ces techniques plus productives.

Le matériel de calcul parallèle n'a jamais été aussi complexe, et la prise en main de cette complexité passe souvent par un recours à des approches de développement toujours plus sophistiquées. Le renouveau de paradigmes délaissés comme la programmation fonctionnelle ou les objets distribués pourrait répondre à cette crise de complexité logicielle en rétablissant un peu d'ordre bienvenu dans le chaos de l'écriture d'applications parallèles.