Article de reference

Parallélisme implicite

En informatique , le parallélisme implicite est une caractéristique d'un langage de programmation qui permet à un compilateur ou à un interpréteur d'exploiter automatiquement le...

En informatique , le parallélisme implicite est une caractéristique d'un langage de programmation qui permet à un compilateur ou à un interpréteur d'exploiter automatiquement le parallélisme inhérent aux calculs exprimés par certaines des constructions du langage. Un langage purement parallèle implicitement n'a pas besoin de directives, d'opérateurs ou de fonctions spéciales pour permettre l'exécution parallèle, contrairement au parallélisme explicite .

Les langages de programmation avec parallélisme implicite incluent Axum , BMDFM , HPF , Id , LabVIEW , MATLAB M-code , NESL , SaC , SISAL , ZPL et pH.

Exemple

Si un problème particulier implique d'effectuer la même opération sur un groupe de nombres (comme prendre le sinus ou le logarithme de chacun d'eux à tour de rôle), un langage qui fournit un parallélisme implicite pourrait permettre au programmeur d'écrire l'instruction ainsi :

nombres = [ 0 1 2 3 4 5 6 7 ]; résultat = sin ( nombres );

Le compilateur ou l'interpréteur peut calculer le sinus de chaque élément indépendamment, répartissant l'effort sur plusieurs processeurs si disponibles.

Avantages

Un programmeur qui écrit du code implicitement parallèle n'a pas à se soucier de la division des tâches ou de la communication des processus, se concentrant plutôt sur le problème que son programme est censé résoudre. Le parallélisme implicite facilite généralement la conception de programmes parallèles et se traduit donc par une amélioration substantielle de la productivité du programmeur.

De nombreuses constructions nécessaires pour prendre en charge cette fonction ajoutent également de la simplicité ou de la clarté, même en l'absence de parallélisme réel. L'exemple ci-dessus, de compréhension de liste dans la sin()fonction, est une fonctionnalité utile en soi. En utilisant le parallélisme implicite, les langages doivent effectivement fournir de telles constructions utiles aux utilisateurs simplement pour prendre en charge les fonctionnalités requises (un langage sans boucle for décente , par exemple, est celui que peu de programmeurs utiliseront).

Inconvénients

Les langages avec parallélisme implicite réduisent le contrôle que le programmeur a sur l'exécution parallèle du programme, ce qui entraîne parfois une efficacité parallèle moins qu'optimale . Les créateurs du langage de programmation Oz notent également que leurs premières expériences avec le parallélisme implicite ont montré que le parallélisme implicite rendait le débogage difficile et les modèles d'objet inutilement difficiles.

Un problème plus important est que chaque programme possède une logique parallèle et une logique série. Les E/S binaires, par exemple, nécessitent la prise en charge d'opérations série telles que Write()et Seek(). Si un parallélisme implicite est souhaité, cela crée une nouvelle exigence pour les constructions et les mots-clés afin de prendre en charge le code qui ne peut pas être threadé ou distribué.

Remarques

Calcul parallèle
Original text
Rate this translation
Your feedback will be used to help improve Google Translate