11.4.3.3.5 : Approches haut niveau


Une première approche consiste à fournir au développeur une abstraction du système distribué se rapprochant d'un système à mémoire partagée, conceptuellement plus simple à appréhender et sur lequel il existe une abondante littérature. C'est l'approche des bibliothèques à espace d'adressage partitionné, comme HPX[124]High Performance ParalleX - HPX, Stellar Group, et des langages de programmation à tableaux distribués comme Fortran 2018 et Julia.

La principale difficulté lorsqu'on conçoit une telle abstraction est d'exposer juste ce qu'il faut de la nature distribuée du système pour que le programmeur puisse correctement la prendre en compte et optimiser son programme en fonction, sans réintroduire toute la complexité d'une communication par message ce faisant.

Une approche très prometteuse est fournie dans ce domaine par l'utilisation de futures, abstraction monadique représentant une donnée en cours de transfert réseau ou de calcul sur un autre nœud. Les futures fournissent un moyen plus intuitif d'interagir avec des traitements asynchrones, surtout quand elles sont combinées à un système de coroutines intégré au langage de programmation permettant d'écrire du code asynchrone comme s'il s'agissait d'un code séquentiel bloquant.

À plus haut niveau, il est possible de bâtir sur une telle infrastructure des bibliothèques d'algorithmes parallèles standardisés analogues à celles que nous avons discuté précédemment.

Une autre approche consiste à écrire son calcul selon le paradigme de la programmation fonctionnelle, dont les propriétés de transparence référentielle se prêtent bien à toutes sortes d'optimisations automatiques telles qu'une mise en cache automatique des données sur les nœuds et une migration automatique des calculs vers les nœuds où leurs données d'entrée résident. C'est l'approche utilisée par les frameworks Hadoop[31]Hadoop, Apache Software Foundation et Apache Spark[46]Spark: Cluster Computing with Working Sets, 2010, Zaharia, Matei and Chowdhury, Mosharaf and Franklin, Michael J. and Shenker, Scott and Stoica, Ion, qui sont très utilisés dans la communauté Big Data et commencent à être aussi utilisés à l'IN2P3 dans le cadre des développements LSST.