En gestion de projet, la parallélisation n'est pas toujours possible si certaines tâches doivent obligatoirement précéder d'autres. Par exemple, pour la construction d'une maison, on montera un mur avant d'essayer de le peindre. Ces deux tâches ne sont donc pas parallélisables.
À l'inverse, certaines tâches peuvent facilement être réparties sur un grand nombre de processeurs. Par exemple, la composition d'une image de synthèse peut se subdiviser en autant de sous-tâches que de pixels à l'écran. On parle alors de répartition "massivement parallèle".
Trois facteurs principaux ont contribué à la forte tendance actuelle en faveur du traitement parallèle.
Il a décru de manière constante, de sorte qu'il est aujourd'hui possible de construire des systèmes à multiprocesseurs à moindre coût.
La technologie des circuits a progressé à un tel point qu'il est devenu possible de fabriquer des systèmes complexes nécessitant des millions de transistors sur une seule puce.
On peut alors doubler ou tripler, voire davantage, quelques circuits de calcul sur cette même puce en la munissant de circuits de contrôle veillant à répartir les calculs entre eux, ainsi qu'à éviter les collisions que pourrait impliquer ce parallélisme.
La vitesse des traitements séquentiels traditionnels, basés sur le modèle de von Neumann, semble s'approcher de la limite physique au-delà de laquelle il n'est plus possible d'accélérer. On peut en revanche disposer de :
C'est sur la combinaison de ces principes que sont construit les ordinateurs les plus puissants du moment (Roadrunner 2008).
L'un des premiers modèles de cohérence pour la programmation concourante est celui de Leslie Lamport, c'est celui de la cohérence séquentielle. Il implique que les données produites par un programme concurrent soit les mêmes que celui produit par un programme séquentiel ou plus précisément un programme est séquentiellement cohérent si « les résultats de toute exécution est le même que si les opérations de tous les processeurs sont exécutées dans un ordre séquentiel, et les opérations de chaque processeur individuelles apparaissent dans cette séquence dans l'ordre indiqué par son programme ».