Je recherche des notes de cours disponibles en ligne ou d'autres ressources qui donnent une bonne introduction à la programmation parallèle, tout comme l'analogue parallèle des cours de base en informatique.
Mon objectif est le suivant: alors que je suis en mesure de parler de division et de conquête, d'algorithmes gourmands, de programmation dynamique et similaires, c'est-à-dire des modèles de base d'algorithmes séquentiels (et de problèmes), et je n'ai pas le langage approprié pour classer les approches dans des algorithmes parallèles.
Par exemple, je voudrais acquérir les termes appropriés pour exprimer le fait que les approches parallèles évidentes à chacun des problèmes suivants ont un comportement qualitatif différent:
- définir un tableau d'entiers tout à zéro (s'adapte parfaitement.)
- sommer un tableau d'entiers (plus vous utilisez de threads, plus les frais généraux sont importants).
- Étant donné un tableau, répertoriez les produits de chaque entrée avec chaque autre entrée (si nous parallélisons le double canonique en boucle, le temps d'exécution sera mis à l'échelle au sqrt des processeurs numériques.)
Un environnement de mémoire partagée suffit, et la communication interprocessus n'est pas si pertinente pour moi (en fait, je m'intéresse aux algorithmes qui l'évitent du tout). De plus, les aspects techniques sont pour moi négociables.
Réponses:
Pour un livre d'introduction à la programmation parallèle (je ne connais pas le matériel en ligne), je l'ai appris avec Parallel Algorithms de Casanova, Legrand et Robert, ce qui est très utile pour commencer en algorithmique parallèle théorique.
De plus, dans SPAA'11, il y avait une discussion sur ce qu'un étudiant en algorithme parallèle et en informatique distribuée devrait savoir et ce qu'il devait enseigner. Cette initiative de programme d'études sur l'informatique parallèle et distribuée , vous aidera à trouver non pas un cours, mais la liste des différents sujets qui devraient être abordés lors d'un cours de premier cycle. Ensuite, je suppose qu'il est plus facile de trouver de la documentation sur chaque sujet spécifique.
la source
Si vous ne voulez pas vous plonger dans les détails sanglants, une très bonne introduction aux modèles de conception de parallélisation est fournie par le livre Patterns for Parallel Programming de Mattson, Sanders et Massingill.
Vous trouverez des solutions générales et largement applicables à la parallélisation et même une brève introduction à OpenMP et MPI. Le livre commence par présenter les modèles de conception et la concurrence. Ensuite, les auteurs illustrent comment exploiter la concurrence, comment structurer l'algorithme et comment réellement mettre en œuvre l'algorithme en tenant compte de la synchronisation et de la communication.
Encore une fois, ce n'est pas un manuel sur les algorithmes parallèles. Il fait un très bon travail de présentation de matériaux strictement liés au génie logiciel parallèle, avec une orientation à la fois pratique et théorique. Par conséquent, il devrait convenir parfaitement à vos besoins.
la source
MPI_RUBY ... besoin de trouver ma dernière version stable. Je suggère d'ajouter le préfixe parallèle (scan) à la liste. Je voudrais simplement enseigner le préfixe parallèle et leur montrer comment utiliser une courbe de remplissage d'espace pour obtenir une meilleure efficacité du cache sur le problème de toutes les paires.
la source