240 likes | 574 Views
Calcul intensif. Jean-Pierre Gallou Centre Interuniversitaire de Calcul de Toulouse Stage de formation au calcul parallèle dans le domaine scientifique. Programme. Introduction Programme Puissance Puissance (2) Calcul vectoriel Calcul // Calcul // (2) Calcul // (3) Types de //isme
E N D
Calcul intensif Jean-Pierre Gallou Centre Interuniversitaire de Calcul de Toulouse Stage de formation au calcul parallèle dans le domaine scientifique
Programme • Introduction • Programme • Puissance • Puissance (2) • Calcul vectoriel • Calcul // • Calcul // (2) • Calcul // (3) • Types de //isme • Types de //isme: SIMD
Programme (suite) • Types de //isme: MIMD • MIMD Mémoire partagée (SMP) • MIMD Mémoire partagée (2) • MIMD Mémoire distribuée • MIMD Mémoire distribuée (2) • MIMD Mémoire distribuée (3) • Le point de vue du programmeur • Envoi de messages • Pour obtenir plus d’informations
Introduction • Cadre et rapide historique du calcul intensif • Pourquoi du calcul intensif ? • algorithmes de + en + complexes, de + en + gourmands • problèmes de + grande taille, avec une résolution + fine • Domaine scientifique, autres domaines • Considérations générales : puissance • Calcul vectoriel • Calcul //, divers types de //isme • Matériel et logiciels
Puissance • Puissance théorique (celle annoncée), pratique (peut être très inférieure) • MFlops, millions d'instructions en calcul flottant par seconde, 32 ou 64 b. • Problèmes requérant une grande puissance : prévision du climat, météo, circulation océanique, dynamique des fluides, vision, simulation de phénomènes physiques complexes, etc.
Puissance (2) • Nombreuses techniques : pipeline, vectorisation, chaînage, multiplication des unités fonctionnelles, accès mémoire rapides (caches), processeurs RISC,... • Puissance des calculateurs mono-processeurs limitée • Parallélisme par obligation
Calcul vectoriel • Idée : concevoir des UC agissant sur des vecteurs (tableaux linéaires de nombres) et non sur des scalaires • Programmation dans langage standard, vectorisation automatique (boucle DO <--> op. vectorielle) • op. vectorielle élimine test, boucle, … • Type : CRAY
Calcul // • Idée : utiliser plusieurs UC, éventuellement en grand nombre • Grosses difficultés : • nombreux codes séquentiels, inadaptés au calcul // • Dépendance des données (plusieurs types) • Calcul // ==> programmes adaptés à la structure de la machine
Calcul // (2) • Granularité • Rapport entre temps calcul et temps communication • Gros grains : chaque processeur peut effectuer beaucoup de calculs avant de communiquer avec les autres • Grain fin : communication fréquente
Calcul // (3) • Surcharge (overhead) • Accélération (speedup) • Loi d’Amdahl • Si un code comporte des parties non parallélisables importantes, le gain est vite limité. • 10% séquentiel ==> speedup max de 10 • Extensibilité (scalability)
Types de //isme • SIMD • MIMD • mémoire partagée • mémoire distribuée • SPMD équivalent à MIMD
P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P Types de //isme: SIMD • Une instruction s’exécute sur n processeurs traitant chacun un élément d’un vecteur(Single Instruction, Multiple Data) • Connection machine, Maspar (DEC) • Très spécifique P
Types de //isme: MIMD • Chaque processeur exécute son programme sur ses donnéesMultiple Instruction, Multiple Data • Synchronisation • Echanges de données
P P P P MIMD Mémoire partagée (SMP) • Limité en nb de processeurs (16, 64) • Problèmes d’architecture et construction de la mémoire critiques • CRAY-2, Y-MP, C90, IBM ES/9000, … Mémoire Communication P
MIMD Mémoire partagée (2) • Plus simple pour le programmeur : chaque programme a accès à l’ensemble des données • Réalisation logicielle : threads • Librairie C, directives fortran • Il existe des paralléliseurs automatiques de code fortran
P P P P P M M M M M MIMD Mémoire distribuée • Non limité en nombre de processeurs (MPP). • Topologie de communication : hypercube, etc. • CRAY T3E, IBM SP/2 … Communication
MIMD Mémoire distribuée (2) • S’adapte à des machines différentes • processeurs, standard ou non, reliés par architecture de communication spéciale • grappes (clusters) • machines distantes sur réseau • Problèmes de communication entre processeurs critiques
MIMD Mémoire distribuée (3) • Moins simple pour le programmeur : programmer l’accès aux données distantes • Réalisation logicielle : message passing • Peu de progiciels, peu de librairies mathématiques. • Au niveau élémentaire : PVM, P4, MPI, Express, etc. • Problèmes non traités, à prendre en compte : répartition de charge, …
Le point de vue du programmeur • Difficulté : pas de standard • plusieurs modèles de programmation (mémoire partagée ou non, répartir les données ou les traitements, ...) • // implicite • automatique (boucles DO) • OpenMP • // explicite (messages, …) • Certaines architectures bonnes pour certains problèmes • Pas de bonne solution universelle
Envoi de messages • PVM, puis MPI • bibliothèques de fonctions C, Fortran77 (C++, F90) • Indépendant de la plate-forme • MPI-2 • domaine public
Pour obtenir plus d’informations • news:comp.parallel, news:comp.parallel.pvm • news:comp.parallel.mpi • http://www.irisa.fr/orap/ • http://www.hensa.ac.uk/parallel/environments/pvm3/