La programmation parallèle == programmation multithread?La programmation parallèle == programmation multithread?
Répondre
La programmation multithread est parallèle, mais la programmation parallèle n'est pas nécessairement multithread.
Sauf si le multithreading se produit sur un seul cœur, auquel cas il est uniquement concurrent.
AFAIK, sur un processeur monocœur, le filetage n'est pas parallèle. C'est concurrent, mais pas parallèle. –
@Ionut: http: //thesaurus.reference.com/browse/concurrent <- Si vous regardez sous l'en-tête 'Synonymes' du premier résultat. –
La différence que je fais entre concurrent et parallèle est que le parallélisme est vraiment simultané, alors que le concurrent semble juste comme s'il était simultané. Le changement entre les threads est si rapide qu'il semble être parallèle, mais ce n'est pas le cas. Il y a peut-être d'autres termes qui désignent cela, mais c'est ce que je comprends. –
Non nécessairement. Vous pouvez répartir les tâches entre plusieurs processus et même plusieurs machines - je ne classerais pas cela comme une programmation «multi-thread» car chaque processus ne peut utiliser qu'un seul thread, mais c'est certainement une programmation parallèle. Certes, vous pourriez alors argumenter qu'avec de multiples processus, il y a plusieurs threads dans le système dans son ensemble ...
Finalement, les définitions de ce type ne sont utiles que dans un contexte. Dans votre cas particulier, quelle différence cela va-t-il faire? Ou est-ce juste par intérêt?
Doit-on considérer aussi SIMD être programmation parallèle? Nous effectuons les mêmes opérations sur plusieurs données en parallèle, mais je ne sais pas si cela est considéré comme une micro-parallélisation à inclure dans une définition de programmation parallèle. –
Je dirais que SIMD était plus de conception matérielle parallèle, mais je suppose qu'à un certain niveau, vous devez considérer le côté de la programmation d'avoir un matériel parallèle dédié, par exemple. Qu'en est-il de la programmation pour un GPU? –
La programmation multithread n ° signifie que vous avez un seul processus, et que ce processus génère un tas de threads. Tous les threads s'exécutent en même temps, mais ils sont tous sous le même espace de traitement: ils peuvent accéder à la même mémoire, avoir les mêmes descripteurs de fichiers ouverts, etc.
La programmation parallèle est un peu plus "générale" en tant que définition. dans MPI, vous effectuez une programmation parallèle en exécutant le même processus plusieurs fois, à la différence que chaque processus reçoit un "identifiant" différent, donc si vous le souhaitez, vous pouvez différencier chaque processus, mais ce n'est pas obligatoire. De plus, ces processus sont indépendants les uns des autres et ils doivent communiquer via des canaux ou des sockets réseau/unix. Les bibliothèques MPI fournissent des fonctions spécifiques pour déplacer les données entre les nœuds, de manière synchrone ou asynchrone.
En revanche, OpenMP réalise la parallélisation via le multithreading et la mémoire partagée. Vous spécifiez des directives spéciales au compilateur, et il exécute automagically l'exécution parallèle pour vous.
L'avantage d'OpenMP est qu'il est très transparent. Avoir une boucle pour paralléliser? ajoutez juste quelques directives et le compilateur le divise en morceaux, et assignez chaque morceau de la boucle à un processeur différent. Malheureusement, vous avez besoin d'une architecture à mémoire partagée pour cela. Les clusters ayant une architecture basée sur un noeud ne peuvent pas utiliser OpenMP au niveau du cluster. MPI vous permet de travailler sur une architecture basée sur un nœud, mais vous devez payer le prix d'une utilisation plus complexe et non transparente.
ow, donc c'est moyen 1 travail est traité par n processus pas 1 travail est traité par n thread –
Je pense me rappeler que le travail _is_ se fait sur la parallélisation OpenMP-style pour les architectures multi-processus ... Je ne me souviens pas si cela fait partie d'OpenMP lui-même, ou autre chose? –
@Eko: pas exactement. MPI démarre n instances du même programme, chacune avec un numéro d'identification différent dans une variable spéciale (recherchez MPI_Comm_Rank). Que faire de ces instances est à vous. –
- 1. programmation parallèle
- 2. Application de programmation parallèle
- 3. Programmation parallèle en C#
- 4. Programmation de port parallèle
- 5. programmation multiclient multithread
- 6. Programmation parallèle C# 4.0 Task.StartNew
- 7. Programmation parallèle avec des outils
- 8. Sujets "chauds" actuels dans la programmation parallèle?
- 9. Programmation parallèle: Impossible d'accéder à l'interface utilisateur parallèle?
- 10. L'algorithme de programmation parallèle le plus utile?
- 11. Modèles de programmation parallèle pour C#?
- 12. Quelle est la différence entre la programmation parallèle et multicœur?
- 13. Recommandations pour la programmation parallèle Open Source IDE
- 14. définition sans attente (en se référant à la programmation parallèle)
- 15. Comment faire de la programmation parallèle en Java?
- 16. Outils pour la programmation parallèle Silverlight et .NET?
- 17. Traitement multithread/parallèle en PHP
- 18. ce qui ne va pas avec ma programmation parallèle openmp
- 19. Transfert de la programmation Web à la programmation GUI?
- 20. Résoudre la programmation quadratique
- 21. Oracle et la programmation
- 22. Un exercice sur la programmation parallèle et la conception orientée objet
- 23. Lier formview à la programmation par programmation en C#
- 24. Programmation pilotée par les données/Programmation événementielle
- 25. Variables thread-safe dans la programmation Linux
- 26. Programmation fundas
- 27. programmation asynchrone
- 28. programmation cornac
- 29. programmation java
- 30. programmation réseau
Possible en double -> http://stackoverflow.com/questions/1073098/parallel-coding-vs-multithreading-on-single-cpu – Bhaskar