WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Environnements de grappes de calcul intensif sur réseaux d'entreprise: déploiement, exploitation et performances

( Télécharger le fichier original )
par Franklin TCHAKOUNTE
Université de Ngaoundéré - Master en Systèmes et Logiciels en Environnements Distribués 2010
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Introduction générale

D

E nos jours, aussi bien dans l'industrie que dans les laboratoires de recherche, la puissance de calcul est de plus en plus recherchée pour l'exécution d'applications de plus en plus gourmandes en ressources. Par exemple dans l'industrie cinématographique la puissance de calcul est employée

pour du calcul d'image. Dans des laboratoires de biologie, elle peut être employée pour des calculs d'affinité génétique entre différentes familles d'animaux. Dans tous les cas, l'objectif est d'exécuter les applications le plus rapidement possible, c'est-à-dire réduire le temps entre la soumission de l'application et l'obtention des résultats. C'est cela qu'on appelle le calcul à haute performance (HPC - High Performance Computing). Dans les années quatre-vingt à quatre-vingt dix, ce dernier s'appuyait sur des solutions coûteuses, basées sur des processeurs et des logiciels spécialisés, et destinés à un nombre limité de domaines tels que la météorologie, les phénomènes physiques, le nucléaire etc.. Cela exigeait que les centres de recherche disposent d'une puissance de calcul sans cesse croissante, qui n'était pas accessible financièrement à des organisations moyennes. L'évolution technologique permet aujourd'hui de disposer d'ordinateurs de bureau standard très performants à tel point qu'il est envisageable de construire à partir de ces machines des systèmes parallèles aussi rapides que les supercalculateurs dédiés type CRAY, IBM SP, NEC, Fujitsi. Chaque progression technologique ouvre l'horizon à de nouveaux besoins; et de nouvelles exigences. En effet, les applications deviennent de plus en plus gourmandes en temps de calcul et en espace mémoire.

Le calcul parallèle a toujours été une possibilité de répondre à cette demande de performances. Il consiste en l'exécution d'un traitement pouvant être partitionné en tâches élémentaires adaptées afin de pouvoir être réparties entre plusieurs processeurs opérant simultanément. L'objectif est de traiter des problèmes de grandes tailles plus rapidement que dans une exécution séquentielle. Les avantages du calcul parallèle sont nombreux. Du fait de contraintes physiques et technologiques, la puissance d'un ordinateur monoprocesseur reste limitée. En effet, il est difficile pour les fabricants de processeurs de produire des processeurs dont la puissance atteigne les centaines de MégaFlops1. La quantité de mémoire présente dans les ordinateurs monoprocesseurs est également limitée et il est par conséquent impossible d'exécuter certaines applications de grande taille sur de telles machines. Le calcul parallèle peut en revanche permettre de résoudre ce genre de problème. Ainsi, les machines parallèles actuelles utilisent des techniques originales de calcul parallèle pour maintenir l'activité des unités de calcul.

Les machines peuvent, par exemple disposer d'une mémoire partagée physique pour permettre aux différentes unités de calcul de coopérer. Dans d'autres cas, les machines parallèles sont construites

'million d'opérations ou calcul par seconde en virgule flottante

autour d'unités de calcul dotées de leur propre mémoire. Ces unités communiquent par échange de messages; on parle ici de machine à mémoire distribuée. Aujourd'hui, on assiste au développement rapide des machines parallèles de ce type: les grappes. Elles sont construites à partir de l'interconnexion de composants standards donc bon marché, comme les stations de travail ou les ordinateurs (PC). Ces architectures pouvant être constituées de plusieurs centaines de processeurs, offrent des performances potentiellement exceptionnelles pour un prix modeste. Avec l'avènement du logiciel libre et le coût assez bas des ordinateurs de bureau, la très forte demande en calcul haute performance (scientifique et technique) peut être satisfaite à un coût raisonnable. Les grappes de PC apparaissent donc comme une très bonne alternative aux moyens de calculs traditionnels. Cependant, leur exploitation reste très délicate et pose encore de très nombreux problèmes.

La programmation sur ce type de machines demande beaucoup plus d'efforts que l'écriture d'un programme séquentiel pour plusieurs raisons:

- Peu d'équipes sont capables de développer et de maîtriser l'environnement de grappe.

- l'hétérogénéité de la grappe au niveau des ressources de calcul (processeur) et au niveau des

capacités de communication (réseau) contraint l'utilisateur de monter lui même son système

afin d'adapter l'exécution des applications sur ce système.

- La programmation dépend fortement de la machine cible et de son support au parallélisme. Par exemple, les processeurs d'une machine parallèle peuvent avoir des propriétés distinctes, telles que le mode d'échange des données (mémoire partagée ou distribuée via un réseau d'interconnexion), de même que la cadence de son mode de fonctionnement.

L'environnement de grappes hétérogènes admet donc une complexité liée à l'application que l'on veut exécuter en termes de graphe de tâches (dépendances), à la topologie du système (communications entre les noeuds via le réseau), aux ressources disponibles dans le système (processeurs, mémoire). Il est donc capital de tenir en compte ces différents paramètres pour pouvoir exécuter efficacement une application sur une plate-forme hétérogène.

Il est question pour nous de proposer un algorithme d'ordonnancement efficace de tâches d'une application en tenant compte de ces éléments.

L'élaboration des applications parallèles

Dans l'informatique séquentielle, l'écriture d'une application consiste à choisir un algorithme qui résout un problème et de faire son analyse. Pour concevoir une application parallèle, nous devons d'abord choisir un algorithme qui résout le problème envisagé. Cet algorithme est alors partitionné en tâches lesquelles correspondent à des portions du code qui seront exécutées en séquentiel. Ensuite, le programme parallèle est conçu en attribuant à chaque tâche un processeur et une date d'exécution. La performance de l'application est mesurée alors par le temps d'exécution parallèle. Si une tâche a besoin des données produites par une autre tâche, il existe une relation de dépendance. Les tâches et leurs relations de dépendance sont représentées sous la forme d'un graphe, où les sommets correspondent aux tâches et les arcs aux relations de précédence entre elles. Ce graphe exprime le degré de parallélisme de l'algorithme et est nommé graphe de précédence ou de tâches. L'opération qui attribue aux tâches des dates d'exécution et des processeurs est dénommée ordonnancement, elle sera présentée en détail au chapitre 3.

Il est clair qu'il faut distinguer la phase d'extraction du parallélisme d'un algorithme de la phase d'exploitation de ce parallélisme. Dans un premier temps un graphe de précédence est construit, et ensuite un schéma d'ordonnancement est appliqué en fonction de l'architecture du modèle de machine. Or, pour certains problèmes, le graphe de précédence est construit au cours de l'exécution. Dans ce cas, les deux étapes ne peuvent pas être dissociées dans le temps.

Nous nous intéressons aux problèmes où le graphe de précédence est fourni de façon explicite avant le début de l'exécution (ordonnancement statique). Dans ces problèmes d'ordonnancement notre objectif est de minimiser le temps d'exécution total encore appelé makespan.

Problématique

La répartition des calculs et des données est l'un des problèmes majeurs à résoudre pour réaliser une application parallèle efficace. Il faut décider de la date et du lieu d'exécution des calculs du programme parallèle sur l'ensemble des ressources (processeur, mémoire..) de la machine. L'efficacité de l'exécution va dépendre de ces décisions. Dans ce mémoire, nous nous attachons à décrire le modèle de coût de notre grappe et de proposer une solution au problème d'ordonnancement de tâches d'une application sur une grappe hétérogène.

Organisation du travail

Ce document est divisé en quatre chapitres : le premier nous introduit à l'architecture des grappes et au calcul parallèle en présentant de manière concise les différents types d'architectures parallèles d'après la classification de Flynn et de l'évolution des grappes de PCs. Ce chapitre est l'occasion pour nous d'insister sur l'architecture de grappes hétérogènes notamment sur leurs caractéristiques matérielles, logicielles et sur l'hétérogénéité qui les rend plus complexes. Il parle également de la notion de programmation sur ces types d'architecture et de certains standards de programmation d'applications parallèles dont MPI qui nous intéresse. Ce standard est la cible d'un nombre impressionnant dans le monde et est doté des caractéristiques favorables aux grappes hétérogènes. Comment analyser les performances d'une application parallèle a été la question répondue après avoir présenté des postulats existants. La représentation d'une application parallèle en graphe de tâches, l'ordonnancement de ces dernières suivant les modèles de communication font l'objet du deuxième chapitre. L'étude des éléments définis aux chapitres précédents nous permet de formuler au chapitre 3 un modèle d'ordonnancement sur grappes hétérogènes en tenant compte de ses caractéristiques. Le chapitre 4 est la partie pratique de notre contribution car il expose l'implémentation de notre modèle en effectuant des évaluations sur un exemple. Nous concluons ensuite ce travail et apportons des perspectives pour la suite de nos recherches.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Il faut répondre au mal par la rectitude, au bien par le bien."   Confucius