Le Coin Wiki
d'Olivier Dalle
$WikiTagline
 

Le but du projet cette annee est de faire une application de recherche de nombres premiers parallele.

Une application parallele est une application qui comporte plusieurs processus qui travaillent simultanement. Dans notre cas, le but est d’exploiter au mieux la puissance de calcul des machines multi-coeurs.

Le principe de notre application est d’utiliser un anneau de processus, P0 a PN-1, dans lequel chaque processur Pi et connecte au processus Pi+1 par un tube. L’anneau est ferme de telle sorte que P0 est connecte a P1 aussi par un tube. L’anneau est orient, de telle sorte que les messages entre les processus ne peuvent circuler que dans un sens.

Tous les processus sont identiques, a l’exception de P0 et/ou PN par ou les nombres a tester vont entrer dans l’anneau et les nombres premiers trouves vont sortir de l’anneau.

L’idee de l’anneau est de faire en sorte que chaque nouveau nombre premier trouve soit memorise par l’un de Pi, qui sera en charge ensuite de tester la division par ce nombre sur tous les nombres a tester en entree: P1 sera charge des divisions par 2, P2, des divisions par 3, P3 des divisions par 5, … Pour faciliter l’attribution des NP aux processus, on utilisera un jeton.

1.  Cahier des charges pour avoir la moyenne

Une specification du processus Pi vous sera fournie sous la forme d’une version pre-compilee du programme, que vous pourrez tester.

Pour avoir la moyenne, vous devrez:

  • fournir une implementation de ce processus
  • implementer le code qui permet de former un anneau de processus de taille N
  • faire en sorte que les communication entre processus de l’anneau passent exculsivemnt par l’entree et la sortie standard. Les autres communications, par exemple debug, pourront se faire sur la sortie d’erreur.
  • implementer le code qui permet de faire entrer les nombres a tester en entree et les nombres premiers trouves en sortie
  • implementer une terminaison propre du programme, avec la sauvegarde des nombres premiers trouves
  • fournir une solution permettant le redemarrage apres interruption du programme:
    • Permettre le rechargement de l’anneau avec les nombres premiers deja trouvs lors d’une prcdente excution
    • Reprendre la recherche la ou elle s’tait arrte

2.  Cahier des charges pour avoir le maximum

Pour avoir le maximum, il faudra permettre d’tendre l’anneau plusieurs machines qui feront chacune tourner une partie des processus de l’anneau global. Ces sections d’anneau pourraient ventuellement tre cres et lies entre elles l’aide de commandes ssh, mais pour pouvoir fermer l’anneau, il faut imprativement passer par un processus python.

Dans ce projet, l’objectif est d’apprendre utiliser les concepts vus en cours, donc l’utilisation des sockets pour tablir les connexions entre machines sera prfre (comprenez, permettra d’obtenir le maximum de points).

3.  Difficults rsoudre

Voici quelques difficults rsoudre:

  • Eviter l’interblocage: chaque processus alterne lecture sur l’entre standard et criture sur le sortie standard. Si tous les processus de l’anneau commencent une lecture en meme temps, alors c’est le deadlock… A moins qu’une criture ne dbloque la situation
  • Faire entrer des nouveaux nombres et sortir les nombres premiers dcouvert dans l’anneau: tous les processus sont identiques … sauf ventuellement l’entre et la sortie
  • Comme vu en TD, il faut arriver fermer l’anneau.
  • La recherche en parallele ne peut pas commencer avant qu’un certain nombre de nombres premiers n’aient ete decouverts.

4.  Ressources

  • la version compilee du module python a executer par les processus chaines entre eux par de pipe disponible sur polymnie en ~dalle/PROJET_SYS_2015/

Essayez en particulier l’option -h:

python process.pyc -h

5.  Presentation du projet

La derniere seance de TP, le 14 avril sera tres importante: elle vous servira a presenter votre projet a votre enseignant, qui notera l’avancement et les choses qui restent encore a corriger/ameliorer. Idealement, mme s’il vous reste encore quelques jours, vous devriez venir avec un projet quasiment termin la dernire sance de TP.

6.  Remise du projet

Le projet est a rendre en binome.

Chaque binome devra rendre une archive .zip sur Jalon contenant le code source des fichiers python.

Vous n’avez pas de rapporta rendre, mais votre code devra utiliser copieusement le systeme de documentation integree de python, en suivant l’exemple du programme prrocess.pyc qui vous a ete fourni. (Vous pouvez rediger en francais).

IMPORTANT : Nommage de l’archive Vous ferez attention a respecter le format de remise suivant: Projet_Systeme_NOM1_Prenom1_NOM2_Prenom2.zip