2010-03-09 8 views
5

J'ai demandé recenty une question sur les algorithmes de programmation parallèle qui a été fermé assez rapide en raison de ma mauvaise capacité de communiquer mon intention:L'algorithme de programmation parallèle le plus utile?

https://stackoverflow.com/questions/2407631/what-is-the-most-useful-parallel-programming-algorithm-closed

J'avais récemment posé une autre question, plus précisément:

Is MapReduce just a generalisation of another programming principle?

L'autre question portait spécifiquement sur la réduction de la carte et de voir si mapreduce était une version plus spécifique d'un autre concept en programmation parallèle. Cette question (sur un algorithme de programmation parallèle utile) concerne davantage toute la série d'algorithmes de programmation parallèle. Vous devrez m'excuser cependant car je suis tout nouveau dans la programmation parallèle, donc MapReduce ou quelque chose qui est une forme plus générale de mapreduce est le "seul" concept de programmation parallèle disponible, auquel cas je m'excuse pour mon ignorance.

+1

c'est imho subjectif –

+0

Je suis d'accord @Gabriel, merci. J'ai oublié de cocher la case "community wiki" – Zubair

+0

Je dirais 'make -j ' –

Répondre

1

Il existe probablement deux constructions de programmation parallèle "principales".

Map/Reduce est un. À un niveau élevé, ultra-générique, il s'agit simplement de diviser pour régner. Envoyez les bits individuels aux gestionnaires parallèles et combinez les résultats lorsqu'ils arrivent.

L'autre construction principale de programmation parallèle est la canalisation ... les pièces de travail passent par une série d'étapes, dont chacune peut être exécutée dans un fil parallèle.

Je pense que presque tous les algorithmes de parallélisation vont se résumer à l'un de ces deux. Je peux me tromper, bien sûr.

+0

N'appartient pas à la même chose que l'algorithme du pipeline, en utilisant deux tuyaux, l'un pour envoyer le calcul et l'autre pour obtenir la réponse ? – Zubair

+0

@Zubair: Pas vraiment ... map reduce envoie des choses à plusieurs 'pipes' en parallèle, alors qu'un pipeline va tout envoyer dans la même série séquentielle de pipes. Donc, map/reduce ressemble à A -> (B, C, D, E) -> F (B, C, D, E obtiennent la requête en parallèle, et leur réponse va directement à F), alors qu'un pipeline ressemble à A-> B-> C-> D-> E-> F - chaque élément envoie ses données à l'élément suivant, donc tout ce qui arrive à F passe déjà de A à E. IOW, dans un pipeline, chaque étape prend la sortie de l'étape précédente. – kyoryu

+0

Merci pour la clarification. Si tout ce qui est dans un pipeline doit être traité en série, où est le parallélisme? – Zubair

Questions connexes