Programmer une machine parallèle est une tâche complexe qui nécessite de faire coopérer différentes parties du programme en utilisant au mieux des ressources distribuées. Fournir des modèles de programmation efficace permet d’aider les programmeurs à s’abstraire des contraintes matérielles bas-niveau pour se concentrer à l’écriture de programme efficace et facile à maintenir.