Notes introductives sur la parallélisation, en particulier les schémas de problèmes et les algorithmes

10

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:

  1. définir un tableau d'entiers tout à zéro (s'adapte parfaitement.)
  2. sommer un tableau d'entiers (plus vous utilisez de threads, plus les frais généraux sont importants).
  3. É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.

shuhalo
la source
Pouvez-vous reformuler cette phrase: "Par exemple, je voudrais avoir un langage expliquant pourquoi l'approche parallèle évidente aux problèmes suivants a un comportement qualitatif différent"
Gopi
Terminé. J'espère que c'est plus précis.
shuhalo

Réponses:

6

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.

Gopi
la source
1
Le terme «langage» fait référence au langage naturel, et non au langage de programmation ou similaire. Tout comme les mathématiques sont un langage, et par exemple la théorie des catégories ou la théorie des groupes est censée fournir un "langage" pour certaines structures, relations et faits. Mais merci quand même.
shuhalo
en effet, mon mauvais :). Ensuite Pour les trois questions que vous aviez, je recommande vraiment le livre que j'ai lié qui est très théorique. Ils étudient toutes sortes d'algorithmes et de techniques parallèles sur différents types d'architecture parallèle. Ensuite, la partie qui pourrait répondre à vos trois questions serait la partie sur les boucles uniformes .
Gopi
+1 pour NSF / IEEE-TCPP Curriculum Initiative, mais je vous suggère de supprimer OpenMP & MPI, car ils ne sont pas vraiment pertinents ici.
Jukka Suomela
En effet, j'ai oublié de le supprimer après le commentaire de @Martin. Merci.
Gopi
7

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.

Massimo Cafaro
la source
1

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.

Chad Brewbaker
la source