Modèle de programmation parallèle

Nous considérons ensuite la question de savoir quelles abstractions sont appropriées et utiles dans un modèle de programmation parallèle. Il est clair que des mécanismes sont nécessaires pour permettre une discussion explicite sur la simultanéité et la localité et faciliter le développement de programmes évolutifs et modulaires. Sont également nécessaires des abstractions qui sont simples à travailler avec et qui correspondent au modèle architectural, le multiordinateur. Alors que de nombreuses abstractions possibles pourraient être envisagées à cet effet, deux correspondent particulièrement bien à ces exigences: la tâche et le canal. Celles-ci sont illustrées dans la figure 1,7 et peuvent être résumées comme suit: dans le calcul, un modèle de programmation parallèle est une abstraction de l`architecture informatique parallèle, avec laquelle il est commode d`exprimer des algorithmes et leur composition dans les programmes. La valeur d`un modèle de programmation peut être jugée sur sa généralité: comment bien une gamme de différents problèmes peuvent être exprimés pour une variété d`architectures différentes, et ses performances: comment efficacement les programmes compilés peuvent exécuter. [1] la mise en œuvre d`un modèle de programmation parallèle peut prendre la forme d`une bibliothèque appelée à partir d`un langage séquentiel, comme une extension à une langue existante, ou comme un tout nouveau langage. Un modèle de données parallèles se concentre sur l`exécution d`opérations sur un ensemble de données, généralement un tableau structuré régulièrement. Un ensemble de tâches fonctionnera sur ces données, mais indépendamment sur les partitions disjoints. Dans la taxonomie de Flynn, le parallélisme des données est généralement classé comme MIMD/SPMD ou SIMD. Le modèle de dépassement de message n`exclut pas la création dynamique de tâches, l`exécution de plusieurs tâches par processeur ou l`exécution de différents programmes par des tâches différentes. Toutefois, dans la pratique, la plupart des systèmes de transmission de messages créent un nombre fixe de tâches identiques au démarrage du programme et ne permettent pas de créer ou de détruire des tâches pendant l`exécution du programme.

On dit que ces systèmes implémentent un seul modèle de programmation de données multiples de programme (SPMD) parce que chaque tâche exécute le même programme mais opère sur des données différentes. Comme expliqué dans les chapitres suivants, le modèle de SPMD est suffisant pour un large éventail de problèmes de programmation parallèles, mais entrave certains développements d`algorithmes parallèles. La valeur de A (J-1) doit être calculée avant la valeur de A (j), par conséquent A (J) présente une dépendance de données sur un (J-1). Le parallélisme est inhibé. Le modèle de machine von Neumann suppose un processeur capable d`exécuter des séquences d`instructions. Une instruction peut spécifier, en plus de diverses opérations arithmétiques, l`adresse d`une donnée à lire ou à écrire en mémoire et/ou l`adresse de la prochaine instruction à exécuter. Bien qu`il soit possible de programmer un ordinateur en termes de ce modèle de base en écrivant le langage de la machine, cette méthode est pour la plupart des fins prohibitivement complexe, parce que nous devons garder une trace de millions d`emplacements de mémoire et d`organiser l`exécution de milliers de machine Instructions. Par conséquent, les techniques de conception modulaire sont appliquées, par lequel les programmes complexes sont construits à partir de composants simples, et les composants sont structurés en termes d`abstractions de niveau supérieur tels que les structures de données, les boucles itératives et les procédures.