Calcul distribué vs parallèle

61

J'entends souvent des gens parler d' informatique parallèle et d'informatique distribuée , mais j'ai l'impression qu'il n'y a pas de frontière claire entre les 2, et les gens ont tendance à confondre cela assez facilement, alors que je pense que c'est très différent:

  • L' informatique parallèle est plus étroitement couplée au multi-threading ou à la pleine utilisation d'un seul processeur.
  • L' informatique distribuée fait référence à la notion de division et de conquête, exécutant des sous-tâches sur différentes machines, puis fusionnant les résultats.

Cependant, depuis que nous sommes entrés dans l' ère du Big Data , il semble que la distinction soit en train de fondre, et la plupart des systèmes utilisent aujourd'hui une combinaison d'informatique parallèle et distribuée.

Hadoop, avec le paradigme Map / Reduce, est un exemple clairement utilisé dans mon travail quotidien. Il s’agit d’un système clairement réparti dans lequel les travailleurs exécutent des tâches sur différentes machines, tout en tirant pleinement parti des possibilités offertes par l’informatique parallèle.

J'aimerais avoir des conseils pour comprendre comment faire exactement la distinction dans le monde d'aujourd'hui, et si nous pouvons toujours parler de calcul parallèle ou s'il n'y a plus de distinction claire. Il me semble que l'informatique distribuée a beaucoup progressé ces dernières années, alors que l'informatique parallèle semble stagner, ce qui pourrait probablement expliquer pourquoi j'entends beaucoup plus parler de la distribution des calculs que de la parallélisation.

Charles Menguy
la source
5
L'informatique parallèle ne signifie pas nécessairement un seul processeur: il existe des systèmes dotés de plusieurs processeurs physiques.
svick
2
En outre, l'informatique distribuée ne se limite pas à diviser et conquérir en soi. J'ai plus de problèmes avec les gens qui confondent concurrence et parallélisme.
Raphaël
1
Si vous vous adressez explicitement à l'informatique distribuée, vous devrez gérer des cas d'échec beaucoup plus profonds. Beaucoup de choses ne sont distribuées que pour des raisons géographiques. Certains systèmes distribués ont très peu de choses en parallèle car un nœud central du réseau constitue un goulot d'étranglement.
Rob

Réponses:

57

Ceci est en partie une question de terminologie, et en tant que telle, exige seulement que vous et la personne à qui vous parlez clarifiez la chose au préalable. Cependant, différents sujets sont plus étroitement associés au parallélisme , à la simultanéité ou aux systèmes distribués .

Le parallélisme consiste généralement à accomplir un calcul particulier aussi rapidement que possible en exploitant plusieurs processeurs. L'échelle des processeurs peut aller de plusieurs unités arithmétiques à l'intérieur d'un seul processeur à plusieurs processeurs partageant la mémoire, en passant par la distribution du calcul sur plusieurs ordinateurs. Du côté des modèles de calcul, le parallélisme consiste généralement à utiliser plusieurs threads de calcul simultanés en interne, afin de calculer un résultat final. Le parallélisme est également parfois utilisé pour les systèmes réactifs en temps réel , qui contiennent de nombreux processeurs partageant une seule horloge maîtresse; de tels systèmes sont totalement déterministes .

La simultanéité est l'étude des calculs avec plusieurs threads de calcul. La concurrence a tendance à provenir de l'architecture du logiciel plutôt que de l'architecture du matériel. Le logiciel peut être écrit pour utiliser la concurrence afin d'exploiter le parallélisme matériel, mais il est souvent nécessaire, de par son comportement, de réagir à différents événements asynchrones (par exemple, un fil de calcul fonctionnant indépendamment d'un fil d'interface utilisateur ou un programme réagissant). aux interruptions matérielles en passant à un thread de gestionnaire d’interruptions).

L'informatique distribuée étudie des processeurs séparés connectés par des liaisons de communication. Alors que les modèles de traitement parallèle supposent souvent (mais pas toujours) la mémoire partagée, les systèmes distribués reposent essentiellement sur le transfert de messages. Les systèmes distribués sont intrinsèquement concurrents. A l'instar de la concurrence, la distribution fait souvent partie de l'objectif, et pas uniquement de la solution: si les ressources sont situées dans des emplacements géographiquement distincts, le système est distribué de manière inhérente. Les systèmes dans lesquels des défaillances partielles (de nœuds de processeur ou de liaisons de communication) sont possibles relèvent de ce domaine.

Gilles, arrête de faire le mal
la source
2
Bonne réponse. Il convient de souligner que l’informatique distribuée est un sous-ensemble de l’informatique parallèle.
Raphaël
6
@Raphael: Je ne pense pas que cela représente avec précision le centre des deux champs. En effet, ils sont souvent considérés comme des champs complètement séparés, car ils traitent de problèmes complètement différents. Lors de la programmation d'un ordinateur parallèle à l'aide de MPI, on ne se préoccupe pas vraiment des défaillances partielles, car elles sont moins susceptibles de se produire sur de tels ordinateurs. D'autre part, l'informatique distribuée est davantage préoccupée par les problèmes de distribution, tels que les échecs partiels, que par la compression de chaque cycle de processeur sur les machines disponibles.
Dave Clarke
4
@Raphael Au contraire, l'informatique distribuée est très indépendante de l'informatique parallèle. Dans l’étude des systèmes distribués, l’informatique parallèle est souvent le cas ennuyeux (pas de ressources locales intéressantes, pas de pannes).
Gilles 'SO- arrête d'être méchant'
J'utilisais les mots littéralement; tant pis si les termes ont été appropriés et donc divergents.
Raphaël
Merci pour votre réponse @Gilles, on dirait que je suis un peu partisan de l'informatique distribuée, heureux de voir quelqu'un qui se réfère à quelque chose par les termes appropriés!
Charles Menguy
17

Comme l'a souligné @Raphael, l'informatique distribuée est un sous-ensemble de l'informatique parallèle; Parallèlement, l'informatique parallèle est un sous-ensemble de l'informatique concurrente.

La simultanéité fait référence au partagedes ressources dans le même laps de temps. Par exemple, plusieurs processus partagent le même CPU (ou les mêmes cœurs), partagent de la mémoire ou un périphérique d'E / S. Les systèmes d'exploitation gèrent les ressources partagées. Les machines multiprocesseurs et les systèmes distribués sont des architectures dans lesquelles le contrôle de la concurrence joue un rôle important. La simultanéité se produit tant au niveau du matériel que du logiciel. Plusieurs périphériques fonctionnent en même temps, les processeurs ont un parallélisme interne et travaillent sur plusieurs instructions simultanément, les systèmes ont plusieurs processeurs et les systèmes interagissent via la communication réseau. La simultanéité se produit au niveau des applications dans la gestion des signaux, dans le chevauchement des E / S et du traitement, dans la communication et dans le partage des ressources entre processus ou entre threads dans le même processus.

Deux processus (ou threads) s'exécutant sur le même système, de sorte que leur exécution soit imbriquée dans le temps, sont simultanés: les processus (threads) partagent la ressource CPU. J'aime la définition suivante: deux processus (threads) s'exécutant sur le même système sont simultanés si et seulement si le deuxième processus (thread) commence à s'exécuter alors que le premier processus (thread) n'a pas encore terminé son exécution.

La simultanéité devient parallélisme lorsque les processus (ou les threads) s'exécutent sur différentes CPU (ou cœurs du même CPU). Le parallélisme dans ce cas n’est pas «virtuel» mais «réel».

Lorsque ces processeurs appartiennent à la même machine, nous appelons le calcul "parallèle"; lorsque les processeurs appartiennent à des machines différentes , peuvent être dispersés géographiquement, on parle de calcul "distribué".

Par conséquent, l'informatique distribuée est un sous-ensemble de l'informatique parallèle, qui est un sous-ensemble de l'informatique simultanée.

Bien entendu, il est vrai qu'en général, l'informatique parallèle et l'informatique distribuée sont considérées comme différentes. L'informatique parallèle est liée à des applications étroitement couplées et est utilisée pour atteindre l'un des objectifs suivants:

  1. Résoudre les problèmes de calcul intensif plus rapidement;
  2. Résoudre des problèmes plus importants dans le même laps de temps;
  3. Résolvez les problèmes de même taille avec une précision accrue dans le même temps.

TX5XTXXmais avec une plus grande précision en utilisant un modèle beaucoup plus complexe, plus d'équations, de variables et de contraintes). Le calcul parallèle peut utiliser la mémoire partagée, la transmission de messages ou les deux (par exemple, un noeud interne à mémoire partagée utilisant OpenMP, un noeud intermédiaire de transmission de messages utilisant MPI); il peut également utiliser des accélérateurs GPU. Étant donné que l'application fonctionne sur un superordinateur parallèle, nous ne prenons généralement pas en compte des problèmes tels que les pannes, les partitions réseau, etc., car la probabilité de ces événements est pratiquement nulle. Cependant, les grandes applications parallèles, telles que les simulations de changement climatique, qui peuvent durer plusieurs mois, concernent généralement les défaillances et utilisent le mécanisme de contrôle / redémarrage pour éviter de recommencer la simulation dès le début en cas de problème.

L'informatique distribuée est liée aux applications à couplage lâche, dans lesquelles l'objectif (pour le calcul intensif ) est de résoudre des problèmes autrement trop importants ou dont l'exécution peut être divisée en différents composants qui pourraient bénéficier d'une exécution sur différentes architectures. Il existe plusieurs modèles, notamment client-serveur, poste à poste, etc. Les problèmes liés à l'informatique distribuée, tels que la sécurité, les défaillances, la partition réseau, etc. doivent être pris en compte au moment de la conception, car dans ce contexte, les défaillances sont la règle. pas l'exception.

Enfin, l'informatique en grille et en nuage sont deux sous-ensembles de l'informatique distribuée. Le paradigme de l'informatique en grille est apparu comme un nouveau domaine distingué de l'informatique distribuée traditionnelle en raison de son accent mis sur le partage de ressources à grande échelle et les applications innovantes hautes performances. Les ressources partagées appartiennent généralement à plusieurs domaines administratifs différents (appelées organisations virtuelles ). Le Grid Computing, bien que très utilisé par les scientifiques au cours de la dernière décennie, est traditionnellement difficile pour les utilisateurs ordinaires. Le cloud computing tente de combler le fossé en permettant aux utilisateurs ordinaires d’exploiter facilement plusieurs machines co-localisées dans le même centre de données et non réparties géographiquement, grâce à l’utilisation de machines virtuelles.qui peuvent être assemblés par les utilisateurs pour exécuter leurs applications. En raison du matériel, en particulier du manque habituel d'interconnexion réseau hautes performances (Infiniband, etc.), les clouds ne sont pas destinés à l'exécution d'applications MPI parallèles. Les applications distribuées exécutées sur des nuages ​​sont généralement implémentées pour exploiter le paradigme Map / Reduce. En passant, beaucoup de gens voient Map / réduire comme un modèle de flux de données parallèle.

Massimo Cafaro
la source
2
Je pense que cette réponse est un peu trompeuse; il se concentre sur l' informatique haute performance distribuée (qui est en effet étroitement liée à l'informatique haute performance parallèle), alors que l'ensemble du domaine de l'informatique distribuée est beaucoup plus vaste.
Jukka Suomela
Je ne suis pas d'accord: la réponse inclut également l' informatique haute performance distribuée, qui est plutôt laissée en dehors de l'informatique distribuée. En effet, j’ai abordé les modèles client-serveur et peer-to-peer, la sécurité, les défaillances et les problèmes de partition réseau, qui relèvent du domaine de l’informatique répartie.
Massimo Cafaro
+1 Bonne réponse! Je me demande si l'informatique distribuée est utilisée à des fins autres que l'informatique parallèle? En d’autres termes, le calcul distribué est-il un sous-ensemble du calcul parallèle, c’est-à-dire que le calcul distribué appartient-il au calcul parallèle? Au fait, voici ma question cs.stackexchange.com/questions/20064
Tim
1
@Tim, l'informatique distribuée est également utilisée en soi, indépendamment de l'informatique parallèle. Pensez, par exemple, aux algorithmes distribués classiques tels que l'élection du leader, le consensus, etc.
Massimo Cafaro le
7

Je ne suis pas sûr de comprendre la question. La distinction entre traitement parallèle et traitement distribué est toujours là. Le fait que vous puissiez tirer parti des deux dans le même calcul ne change pas la signification des concepts.

Et je ne sais pas quelles nouvelles suivez-vous, mais je suis tout à fait sûr que le traitement parallèle ne stagne pas, d’autant plus que je pense qu’il est utile beaucoup plus souvent.

Si vous devez traiter des téraoctets de données, l'informatique distribuée (éventuellement combinée à l'informatique parallèle) est la solution. Mais si vous avez besoin de calculer quelque chose sur un ordinateur de bureau ou un smartphone, le calcul parallèle seul vous donnera probablement les meilleurs résultats, étant donné que la connexion Internet peut ne pas être toujours disponible et que, le cas échéant, elle peut être lente.

svick
la source
1
-1, car cette réponse ne répond pas vraiment à la question (c.-à-d., Explique les termes).
Jukka Suomela
@JukkaSuomela, la question n'est pas d'expliquer les termes, mais la distinction entre eux.
svick
6

Voici un article récent qui mérite d'être lu:

Michel Raynal: "Informatique parallèle vs informatique distribuée: une grande confusion?" , Proc. Euro-Par 2015 , date de publication: 10.1007 / 978-3-319-27308-2_4

Abstrait:

Ce court exposé de position traite du fait que, du point de vue de l’enseignement, le parallélisme et l’informatique distribuée sont souvent confondus, alors qu’en abordant leur nature profonde, ils abordent des questions fondamentales distinctes. Par conséquent, des programmes appropriés devraient être conçus séparément pour chacun d’eux. L'attitude «tout est dans tout (et réciproquement)» ne semble pas être une approche pertinente pour enseigner aux étudiants les concepts importants qui caractérisent le parallélisme d'un côté et l'informatique distribuée de l'autre.

Jukka Suomela
la source
4

Dans la section Introduction du livre [1], les auteurs fournissent une autre perspective (différente de celles des autres réponses) sur la comparaison entre l'informatique distribuée et l'informatique parallèle.

En termes généraux, le traitement parallèle a pour objectif d'employer tous les processeurs pour effectuer une tâche de grande taille. En revanche, chaque processeur d'un système distribué a généralement son propre agenda semi-indépendant, mais pour diverses raisons, notamment le partage des ressources, la disponibilité et la tolérance aux pannes, les processeurs doivent coordonner leurs actions.

Dans cette perspective, le paradigme Carte / Réduire s’inscrit principalement dans le contexte de l’informatique parallèle. Cependant, si nous voulons que les nœuds impliqués atteignent un consensus sur un leader commun, en utilisant, par exemple, l’ algorithme Paxos (wiki) , nous envisageons un problème typique de l’informatique distribuée.

[1] Informatique distribuée. Principes de base, simulations et sujets avancés. Hagit Attiya et Jennifer Welch. 2004.

Hengxin
la source
0

Il y a la réponse qui est plus appropriée ici. Fondamentalement, parallelfait référence à memory-shared multiprocessortandis que distributedfait référence à son private-memory multicomputers. C'est-à-dire que le premier est un seul ordinateur multicœur ou superscalaire, tandis qu'un autre est un réseau d'ordinateurs géographiquement répartis. Ce dernier implique moins de couplage et donc plus de disponibilité et de tolérance aux pannes au détriment de moins de performances. Les performances sont diminuées car vous avez besoin de (dés) sérialisation des données lors de chaque aller-retour et de leur distribution sur de longues distances. Vous pouvez simplement vous référer à un objet en mémoire pour le transmettre à une autre CPU dans un processeur parallèle.

Petit alien
la source