Conservatoire national des arts et métiers
Architectures des systèmes informatiques
CHAPITRE 12
Parallélisation des programmes
Année 2002-2003

Suite N°3...

Despite the difficulty of identifying representative parallel applications and the immaturity of of parallel software (langages and programming environments)...
    David Culler, Jaswinder Pal Singh et Anoop Gupta,
   Parallel computer architecture, a hardware/software approach
En dépit de la difficulté à trouver des applications parallèles représentatives et de l'immaturité du logiciel parallèle (langages et environnements de programmation)...

12.4 L'ÉVALUATION DES SYSTÈMES PARALLÈLES

La situation

Dans un domaine beaucoup plus récent et moins bien maîtrisé que l'ordinateur série, il n'est pas étonnant que l'on constate que l'évaluation est encore dans l'enfance. On se reportera aux méthodes d'évaluation des machines série. Demeure toutefois le besoin de comparer des configurations entre elles.

Les moyens

Malgré leur caractère illusoire, les Mips sont utilisés ici aussi, comme les Mflops. Ce sont de simples additions des Mips ou Mflops de chaque processeur de l'ensemble.

Sachant que pour un processeur simple ces nombres n'ont pas grand sens, en faire des additions n'apportera pas de signification.

Le besoin de comparaison cité plus haut a poussé dans la voie des bancs d'essais à l'exclusion de toute autre ambition. La difficulté est plus grande ici car il faut distinguer entre les deux modes de communication.

Les principaux :
 
Banc d'essai Mode de communication
ScaLapack messages
TPC-A, TPC-B, TPC-C les deux
SPLASH 2 mémoire commune
NAS les deux, à la main
PARKBENCH messages
SPEC/HPCG en cours de définition

Le dernier est issu pour partie du groupe Spec qui réalise par ailleurs les specmarks et d'un groupe d'évaluation des machines SIMD ou machines vectorielles, le Perfect (sic) club (Pormance evaluation for cost effective transformations).

Scalapack est constitué par les programmes de calcul algébrique linéaire LAPACK, variante de LINPACK, issue du Laboratoire de Los Alamos au lieu du laboratoire Lawrence Livermore. Il contient des résolutions de systèmes d'équations, des calculs de valeurs propres, des produits de matrices etc...

Le Transaction processing performance council ou TPC, a créé un jeu de bancs d'essais publics nommés A, B et C. Ils veulent être représentatifs de différentes utilisations des machines parallèles et mode transactionnel et d'accès à des bases de données. Ils produisent le débit en nombre de transactions par seconde ainsi que le prix par transaction.
A et C, plus complet portent sur les transactions,
B porte sur la mise à jour des bases.

SPLASH (Stanford paralleL applications for shared memory) est spécialisé les architectures à mémoire commune avec cohérence de cache. Il contient sept applications complètes et des programmes de calcul. Il est plus ou moins spécialisé dans le calcul scientifique et le calcul graphique.

NAS vient de la NASA. Il est consacré au calcul scientifique. Il contient des calculs de transformées de Fourier à trois dimensions et d'autres programmes complexes.

PARKBENCH est plus original que les précédents. Il est constitué de micro bancs d'essais. Il a été créé pour des systèmes à messages et a été étendu aux mémoires communes.

12.5. CONCLUSION

Le contenu de ce chapitre est très loin d'épuiser le champ de la parallélisation des programmes. Le sujet traité à titre d'exemple relève de la catégorie générale des transformations linéaires locales. Si la matrice de transformation était celle d'une transformation orthogonale de Walsh, d'Hadamard ou toute autre, seuls la taille du voisinage et les coefficients de calcul seraient modifiés.

Dans le cas des transformations globales, les processus sont alourdis par la table des coefficients qui ne peut plus être écrite dans une formule de calcul. Elle doit être construite une seule fois et émise vers chaque mémoire locale s'il y a lieu.

Un mot de conclusion sur les dispositifs de synchronisation. La synchronisation est un phénomène temporel.
 
La synchronisation ne gère pas le temps physique mais la coïncidence.

Une émission, forcément datée, et sa réception sont les outils les plus directement adéquats, ils sont donc les plus simples. Vouloir synchroniser par un 'tableau noir' comme l'est l'écriture en mémoire partagée nécessite normalement des outils supplémentaires pour prendre en compte non pas le temps directement mais l'état d'avancement des processus. La communication par messages, réalisée par une boite à lettres est une forme intermédiaire entre les deux précédentes.

Parmi les dizaines de langages parallèles existant à l'heure actuelle on peut citer quelques uns des plus utilisés.

Les méthodes de synchronisation sont elles aussi nombreuses. On consultera les supports de cours de Gérard Florin
Mode Message
Mode rendez-vous
Mode appel de procédure distante
à http://www2.cnam.fr/cours/accueil_cours.html

COMPLÉMENT SUR LES MINIPROCESSUS ou processus légers (lightweight) ou «threads»

Le traitement d'un problème conduit parfois à programmer des tâches indépendantes, que l'on soit en mono ou multiprocesseur. On peut alors implanter ces tâches par des processus parallèles. Cependant, on constate que créer un processus est coûteux en temps. Certains langages ont prévu l'écriture de miniprocessus. Un miniprocessus peut être vu comme un flot de contrôle séquentiel à l'intérieur d'un processus et non comme un autre processus. Chacun partage avec d'autres code et données du programme. Il utilise les ressources du programme et ne dispose que du contexte d'exécution, la pile, les registres, le compteur ordinal. La création et la gestion d'un miniprocessus sont ainsi moins coûteux en temps et en ressources que celles d'un processus.

Leur ordonnancement est fait :

On pourra se reporter aux spécifications de Java pour des explications détaillées et au site de l'université d'Orléans pour un cours d'algorithmique parallèle.

COMPLÉMENTS SUR LES PRIMITIVES DE SYNCHRONISATION, COMMUNICATION et PLACEMENT

Dans notre exemple, les primitives de communication sont fournies par le système d'exploitation. Elles ne sont pas faciles à concevoir et à écrire. Elles ralentissent la durée totale d'exécution, on essaye de minimiser ce temps en étudiant au mieux les protocoles d'échanges de messages. Ceci est fait en deux temps, la validation (ils doivent arriver à destination) et l'optimisation qui dépend des modèles de communication et de l'architecture du réseau. Le placement des processus et l'ordonnancement des tâches sont à réaliser de telle sorte qu'on recouvre au maximum les communications par les calculs.

Les communications sont étudiées soit pour des machines ou des modèles de machines soit pour des algorithmes parallèles particuliers.

Dans le premier cas figurent les hypercubes et les arbres épais. Les travaux portent sur l'interblocage et le routage dans le réseau de nœuds. Les algorithmes sont nettement hors du domaine de ces notes.

Pour programmer de manière efficace ces systèmes parallèles, on a écrit des outils et des environnements de programmation. Cependant il n'existe que des outils rudimentaires pour les protocoles de communication globale comme la diffusion, le multicast ou l'échange total, même si un effort a été entrepris sur ce point avec par exemple la bibliothèque de communication PVM (équipe de J. Dongarra à UTK) qui est devenue usuelle.

Placement, Ordonnancement

Les performances d'une simulation distribuée dépendent fortement du partage de la charge de calcul (service de clients) entre les différents processeurs.

Le partage de charge pour des applications statiques, comme des problèmes d'algèbre linéaire, est fait par un placement et un ordonnancement qui peuvent être calculés avant l'exécution dans ce cas où l'on connaît bien à l'avance le déroulement de l'application. Pour les applications dynamiques, il faut coupler cela à une répartition dynamique qui peut se traduire par une placement dynamique ou une migration.

De nombreuses solutions de partage de charge ont été proposées.

CE FICHIER N'A PAS DE QUESTIONNAIRE

Conservatoire national des arts et métiers
Architectures des systèmes informatiques
CHAPITRE 12
Parallélisation des programmes
Année 2002-2003