Institut Supérieur d' Informatique de Modélisation et de leurs Applications. Auteurs : Etienne Duclos Guillaume Mercat

Dimension: px
Commencer à balayer dès la page:

Download "Institut Supérieur d' Informatique de Modélisation et de leurs Applications. Auteurs : Etienne Duclos Guillaume Mercat"

Transcription

1 Institut Supérieur d' Informatique de Modélisation et de leurs Applications Rapport de projet de troisième année d'école d'ingénieur Filière 2 : génie logiciel et système informatique Filière 4 : Calcul et modélisation scientifiques Développement sur cluster d'une application d'optimisation de transport public Auteurs : Etienne Duclos Guillaume Mercat Responsables ISIMA : Bruno Bachelet Loïc Yon Durée : 120h

2 Institut Supérieur d' Informatique de Modélisation et de leurs Applications Rapport de projet de troisième année d'école d'ingénieur Filière 2 : génie logiciel et système informatique Filière 4 : Calcul et modélisation scientifiques Développement sur cluster d'une application d'optimisation de transport public Auteurs : Etienne Duclos Guillaume Mercat Responsables ISIMA : Bruno Bachelet Loïc Yon Durée : 120h

3 Remerciements Remerciements Nous tenons à remercier toutes les personnes qui nous ont aidés de près ou de loin durant notre projet. Nous pensons ainsi à Jin Jin Li, pour son aide concernant l'utilisation de MPI. Et nous pensons aussi à Dr. Roger Hillson, membre du «Naval Research Laboratory» pour nous avoir fourni son programme C++2MPI. Nous remercions aussi chaleureusement nos maitres de projet, Bruno Bachelet et Loïc Yon, pour leur aide et leur soutien qu'ils nous ont apporté tout au long de notre projet. Rapport de projet 2010

4 Table des figures Table de s figure s Figure 1 : algorithme de grasp non parallélisé...5 Figure 2 : algorithme de tabou non parallélisé...7 Figure 3 : Grasp parallélisé avec envoi de géodésiques...9 Figure 4 : le nœud maître attend toutes les géodésiques...10 Figure 5 : le nœud maître continue à chaque arriver...10 Figure 6 : Grasp parallélisé avec envoi de voisinages...11 Figure 7 : algorithme de Tabou parallélisé...12 Figure 8 : exemple d'utilisation de ProActive...16 Figure 9 : exemple d'utilisation de MPI...19 Figure 10 : envoi des données aux esclaves avec grasp...20 Figure 11 : réception des données par les esclaves avec grasp...21 Rapport de projet 2010

5 Résumé Résumé Grâce aux nouvelles technologies parallèles, telles les ordinateurs multiprocesseurs et/ou multicœurs, et les clusters, la parallélisation est une technique de plus en plus utilisée. Le gain de temps, et donc de performances, espéré pousse les informaticiens à revoir leurs codes pour profiter de cette avancée. Il existe de nombreuses méthodes permettant de paralléliser un code, que ce soit via un compilateur spécial ou en utilisant des librairies «parallèles», telle MPI. Dans le cas de méthodes heuristiques, telles Tabou et Grasp, la parallélisation peut avoir plusieurs avantages. On peut par exemple explorer plus de solutions possibles en un même temps, ou espérer trouver la solution optimale plus rapidement. Cela engendre cependant des complications, telle la gestion de la liste Tabou pour la méthode du même nom. Mots clés : clusters, parallélisation, MPI, méthodes heuristiques Abstract Thanks to the new parallels technologies, such as multiprocessor and/or multicore computers, and clusters, parallelization is more and more used. The hope to gain time, and so performances, makes computer scientists build new code, in order to use this technology. There is a lot of methods used to parallelize a code. You can use a specific compiler, or parallels libraries, such as MPI. Using this with heuristic methods, such as Taboo and Grasp, have many advantages. We can, for example, explore more possible solutions in the same time. We can also try to find the optimal solution quicker. However this is engendering some problems, such as the gestion of the taboo list, for this method. keywords : cluster, parallelization, MPI, heuristic methods Rapport de projet 2010

6 Table des matières Développement sur cluster d'une application d'optimisation de transport public Remerciements Table des figures Résumé Abstract Table de s Matière s Introdu ction 1 1 Pré s entation Géodésiques Définitions Voisinages Passage d un circuit quelconque à une géodésique GRASP sans parallélisation Recherche locale Diversification Algorithme TABOU sans parallélisation Recherche locale sous contrainte Aspiration Algorithme Parallélisation Grasp Méthode 1 : envoi de géodésiques Méthode 2 : envoi de voisinage Tabou Algorithme Gestion de la liste tabou Méthodes de parallélisation Méthodes en Java Parallel JAVA Library ProActive RMI MPI Description Exemple Utilisation...20 Conclusion 22 Références bibliographiques Rapport de projet 2010

7 Introduction Introduction Les calculs réalisés de nos jours étant de plus en plus complexes, le temps qu'il faut pour les résoudre devient rédhibitoire. Heureusement, l'apparition des processeurs multicœurs, des architectures multiprocesseurs et l'utilisation de plus en plus ouverte des clusters ouvre de nouvelles possibilités de programmation, appelées programmation parallèle, permettant de réduire grandement les temps de calcul. Coupler ces technologies avec l'utilisation d'heuristiques permet d'espérer résoudre des problèmes non polynomiaux en des temps acceptables et exploitables. Le problème sur lequel nous avons travaillé concerne le transport urbain dans une grande ville, Clermont-Ferrand. Il s'agit d'un problème d'optimisation visant à proposer une solution de transport à un organisme de gestion en essayant de respecter au mieux les désirs des clients. L'objectif de notre projet est de développer une version parallèle sur cluster d'un algorithme permettant de résoudre ce problème. Pour cela nous disposions d'une version séquentielle en C++ des algorithmes utilisés. Dans un premier temps nous présenterons les outils utilisés par le programme, telles les heuristiques. Nous expliquerons ensuite comment nous comptons paralléliser l'application, avant d'enfin exposer les différentes technologies existantes pour la programmation parallèle, en nous concentrant plus particulièrement sur celle que nous avons utilisé : MPI. Rapport de projet

8 Première partie Présentation

9 1 Présentation 1 Pré s entation 1.1 Géodésiques Une géodésique est une structure qui décrit de manière simple un circuit et qui offre des facilités de manipulation. Cette structure est utilisée dans l implémentation des différentes métaheuristiques considérées Définitions On appelle chemin géodésique un plus court chemin entre deux sommets d un graphe. Soit P un chemin géodésique, on note origine(p) (respectivement destination(p)) le premier (respectivement dernier) sommet de P. On appelle Q-géodésique tout ensemble ordonné de Q (avec Q 2) chemins géodésiques {P 0,, P Q-1 } tels que : origine(p i ) = destination (P (i+q-1)[q] ) i = [0,, Q-1] ou encore destination(p i ) = origine(p (i+1)[q] ) i = [0,, Q-1] avec modulo Q noté [Q]. On appelle géodésique, toute Q-géodésique dont le nombre de chemins géodésiques n est pas spécifié. On appelle point de contrôle de la géodésique toute extrémité d un chemin géodésique d une géodésique. Une géodésique a autant de points de contrôle qu elle a de chemins géodésiques. On appelle encore ordre d une géodésique le nombre de points de contrôle/de chemins géodésiques. Une Q-géodésique peut être caractérisée complètement par la donnée de ses Q points de contrôle. On dit que deux géodésiques sont équivalentes si les deux géodésiques décrivent exactement la même suite ordonnée d arcs à une rotation près, c'est-àdire si elles décrivent le même circuit. Pour de plus amples renseignements, on pourra se référer à la thèse de Loic Yon ([TLY]) Voisinages Les métaheuristiques qui sont implémentées sont classées dans la famille des heuristiques de «recherche locale», c'est-à-dire que l on explore l espace des Rapport de projet

10 1.1 Géodésiques Développement sur cluster d'une application d'optimisation de transport public solutions (réalisables) en passant d une solution à une autre. Déterminer le voisinage d une solution, c est déterminer toutes solutions «voisines», au sens où elles sont obtenues par l application d un opérateur dit de voisinage sur cette solution. Il existe cinq types d opérateur de voisinage : Changement de chemin géodésique entre deux points de contrôle. Déplacement d un point de contrôle. Insertion ou suppression d un point de contrôle. Ré ordonnancement des points de contrôle. Redéfinition complète, aléatoire ou contrôlée, de la géodésique. L'opérateur de voisinage que nous utilisons est celui consistant à déplacer un point de contrôle sélectionné aléatoirement Passage d un circuit quelconque à une géodésique Pour passer d un circuit quelconque à une géodésique, on choisit un point du circuit au hasard et ce sera le premier point de contrôle. On choisit ensuite un point du circuit, dans le sens de parcours du circuit, qui constitue le plus grand «plus court chemin» avec le point choisit précédemment. Le chemin ainsi déterminé constitue le premier chemin géodésique de la géodésique. On itère le processus jusqu à ce que l on ait couvert complètement le circuit initial. 1.2 GRASP sans parallélisation GRASP ( Greedy Randomized Adaptive Search Procédure) est apparue dans les années 90. Elle apporte une réponse au problème soulevé par l exploitation globale de l espace des solutions pour les procédures de recherche locale. La phase de recherche locale est encapsulée dans un mécanisme plus général de génération contrôlée de solutions. L heuristique GRASP alterne les phases de recherche locale et les phases de diversification Recherche locale Lors de la recherche locale, l algorithme prend quelques libertés par rapport à l algorithme de descente simple. Il n est pas requis de complètement réaliser la phase de descente : il permet de prendre toute solution qui améliore la solution courante. Dans cette implémentation, on fixe un nombre maximal d itérations pour la phase de recherche locale. Si la descente est rapide, ce critère n intervient pas. Si, au contraire, la descente est lente, la phase de descente est arrêtée lorsque le nombre d itérations est atteint et on relance la recherche dans une autre région de l espace des solutions. 4 Rapport de projet 2010

11 1.2 G RA SP sans parallélisation Diversification La diversification est le nom donné à l opération qui consiste à générer une solution durant le processus de résolution dans le but d explorer une zone différente de l espace des solutions. On essaie, dans la mesure du possible, de tirer profit de certaines informations relevées pendant les itérations précédentes pour réellement toucher une région différente. L idée est donc de couvrir la plus grande zone possible de l espace des solutions de manière cohérente. L alternance des phases de diversification et des phases de recherche locale doit permettre de trouver les meilleures solutions possibles. L objet manipulé est la géodésique. Elle caractérise un circuit qui peut être vu, soit comme une suite ordonnée d arcs, soit comme une suite ordonnée de nœuds Algorithme Voici l'algorithme de la méta heuristique grasp : Tant que (d div_max) && (iter iter_max) construire une nouvelle géodésique X ; construire un nouveau voisinage V'(X); iter++; d++; Tant que (V'(X) non vide) && (liter liter_max) && (iter iter_max) prendre X' dans V'(X); X = X'; construire un nouveau voisinage V'(X); Ftq Si f(x) < f(x*) X* = X; Fsi Ftq Figure 1 : algorithme de grasp non parallélisé Rapport de projet

12 1.3 TABOU sans parallélisation Développement sur cluster d'une application d'optimisation de transport public 1.3 TABOU sans parallélisation Le mécanisme de base de cette métaheuristique est simple : en partant d une solution initiale, on progresse de proche en proche en sélectionnant le meilleur voisin possible et en interdisant tout retour à une solution récemment explorée, solution que l on qualifie alors de tabou. Ce n est pas un algorithme de descente car la meilleur solution voisine n est pas forcément une solution améliorante de la solution courante. L algorithme tabou présenté ici est plus élaboré et se décompose en deux niveaux : la recherche «globale» pilote une recherche «locale» sous contrainte et on procède à une diversification si certains critères d amélioration ne sont pas réunis Recherche locale sous contrainte On pose une contrainte forte sur le coût de la tournée, et elle n est pas relâchée. Une conséquence directe est qu il n est pas toujours possible d obtenir un voisin lors de la recherche locale, ou alors on constate que le nombre de voisin devient trop faible. Cette situation peut s avérer gênante dans la mesure où la métaheuristique a de bien meilleures chances de trouver une bonne solution si elle peut visiter un très grand nombre de solutions. Si on se retrouve dans ce cas de figure, on est tenté de diversifier afin de retrouver des solutions réalisables car la levée de caractères tabou peut permettre de découvrir de bonnes solutions. Le concept d aspiration prend alors du sens car on peut recouvrir à la diversification dès lors qu il n y a plus de solutions réalisables améliorantes Aspiration L aspiration est la levée du caractère tabou d une solution dans certaines conditions. La solution utilisée est la suivante : lors de recherche de voisinage, elle consiste à accepter une solution tabou si celle-ci améliore la solution locale. Elle peut augmenter les temps de calculs car elle nécessite d évaluer tous les voisinages mais elle réduit dans le même temps le nombre d itérations pour l obtention de la solution finale. L utilisation de l aspiration doit se faire avec précaution dans la mesure où l on change le comportement de l algorithme tabou. Avec l utilisation de ce mécanisme, la méthode tabou se comporte localement comme un algorithme de descente, ce qui peut être parfois préjudiciable. 6 Rapport de projet 2010

13 1.3 TABOU sans parallélisation Algorithme Dans l'algorithme suivant, représentant la méta heuristique tabou, T est la liste tabou, et P représente la fonction de comparaison de deux coûts. générer aléatoirement une solution réalisable X0; Xopt = Xloc = X = X0; Tant que critère 1 Tant que critère 2 sélectionner X' meilleur voisin dans V(X) tel que X' ne soit pas dans T et que l(x') l_max; incrémenter les g_iter, l_iter, no_g_iter et no_l_iter; Si X' existe Si P(f(X'), f(x)) Xloc = X'; no_l_iter = no_g_iter = 0; Fsi mettre X' dans T; no_nb = 0; Sinon no_nb++; Fsi mettre T à jour; Ftq Si P(f(Xopt), f(xloc)) Xopt = Xloc; no_g_iter = no_d_iter = 0; Sinon incrémenter no_g_iter et no_d_iter Fsi générer une nouvelle solution réalisable X; vider T; Ftq Figure 2 : algorithme de tabou non parallélisé Rapport de projet

14 Deuxième partie Parallélisation

15 2 Parallélisation 2 Parallélisation Pour paralléliser les heuristiques nous avons exploré plusieurs pistes, que nous allons vous exposer dans cette partie. 2.1 Grasp Méthode 1 : envoi de géodésiques Le première méthode à laquelle nous avons pensé est la suivante : le nœud maître génère une géodésique par nœud esclave ; chaque nœud esclave fait la recherche locale sur sa géodésique ; le nœud maître récupère les solutions et garde la meilleure. En voici l'algorithme : Nœud maître : Tant que (d div_max) && (iter iter_max) iter++; d++; Pour chaque esclave construire une nouvelle géodésique X ; envoyer la géodésique; Fin Pour recevoir les géodésiques; comparer les géodésiques et garder la meilleure : X; Si f(x) < f(x*) X* = X; Fsi Ftq Nœud esclave : recevoir la géodésique X; construire un nouveau voisinage V'(X); Tant que (V'(X) non vide) && (liter liter_max) && (iter iter_max) prendre X' dans V'(X); X = X'; construire un nouveau voisinage V'(X); Ftq envoyer X; Figure 3 : Grasp parallélisé avec envoi de géodésiques Rapport de projet

16 2.1 Grasp Développement sur cluster d'une application d'optimisation de transport public Cette méthode peut se coder de deux façons différentes : soit le nœud maître attend que tous les esclaves lui ai renvoyé leur solution avant de choisir la meilleure et de continuer l'algorithme, soit il traite les solutions reçues dès leur arriver sans attendre les autres. Cette différence est montrée dans les figures suivantes. Noeuds esclaves Noeud maître Figure 4 : le nœud maître attend toutes les géodésiques L'attente de toutes les géodésiques pour pouvoir continuer l'algorithme permet de les comparer plus facilement. Cependant l'inconvénient majeur vient du fait que la recherche locale se fait à la vitesse du nœud esclave le plus lent. Au contraire si le nœud maître continue l'algorithme à chaque arriver de géodésique, le fait qu'un esclave mette plus de temps que les autres est gommé. Cependant cela rend plus difficile la gestion du nombre d'itérations pour le nœud maître. Noeuds esclaves Noeud maître Figure 5 : le nœud maître continue à chaque arriver Méthode 2 : envoi de voisinage La deuxième méthode à laquelle nous avons pensé est la suivante : le nœud maître génère un voisinage par nœud esclave ; chaque nœud esclave fait la recherche locale sur son voisinage ; le nœud maître récupère les solutions et garde la meilleure. 10 Rapport de projet 2010

17 2.1 Grasp En voici l'algorithme : Nœud maître : Tant que (d div_max) && (iter iter_max) iter++; d++; construire une nouvelle géodésique X; Pour chaque esclave construire un nouveau voisinage V(X); envoyer le voisinage; Fin Pour recevoir les géodésiques; comparer les géodésiques et garder la meilleure : X; Si f(x) < f(x*) X* = X; Fsi Ftq Nœud esclave : recevoir le voisinage V'(X); Tant que (V'(X) non vide) && (liter liter_max) && (iter iter_max) prendre X' dans V'(X); X = X'; construire un nouveau voisinage V'(X); Ftq envoyer X; Figure 6 : Grasp parallélisé avec envoi de voisinages Comme pour la méthode précédente, il y a deux façons de coder : attendre toutes les réponses ou continuer dès qu'une géodésique arrive. Rapport de projet

18 2.2 Tabou Développement sur cluster d'une application d'optimisation de transport public 2.2 Tabou Algorithme Pour la méthode Tabou nous n'avons retenue qu'une seule méthode de parallélisation : le nœud maître génère une géodésique X0 par nœud esclave ; chaque nœud esclave fait une recherche tabou ; le nœud maître récupère les géodésiques et garde la meilleure; En voici l'algorithme : Nœud maître : Pour chaque nœud esclave générer aléatoirement une solution réalisable X0; envoyer X0; Fin Pour recevoir les géodésiques; comparer les géodésiques; garder la meilleure; Nœud esclave : recevoir X0; Xopt = Xloc = X = X0; Tant que critère 1 Tant que critère 2 sélectionner X' meilleur voisin dans V(X) tel que X' ne soit pas dans T et que l(x') l_max; incrémenter les g_iter, l_iter, no_g_iter et no_l_iter; Si X' existe Si P(f(X'), f(x)) Xloc = X'; no_l_iter = no_g_iter = 0; Fsi mettre X' dans T; no_nb = 0; Sinon no_nb++; Fsi mettre T à jour; Ftq Si P(f(Xopt), f(xloc)) Xopt = Xloc; no_g_iter = no_d_iter = 0; Sinon incrémenter no_g_iter et no_d_iter Fsi générer une nouvelle solution réalisable X; vider T; Ftq envoyer Xopt; Figure 7 : algorithme de Tabou parallélisé 12 Rapport de projet 2010

19 2.2 Tabou Gestion de la liste tabou L'un des problèmes de la parallélisation de la méta heuristique tabou est la gestion de la liste tabou. En effet chaque esclave, faisant sa proche recherche locale, va avoir sa propre liste tabou. Nous n'avons pas développé cette partie. Cependant voici les idées auxquelles nous avons pensé : soit le nœud maître est le seul à avoir la liste, auquel cas il y aura beaucoup de communications entre le maître et les esclaves : à chaque fois qu'une géodésique améliorante sera trouvée par un des esclaves, il faudrait en avertir le maître qui lui même devrait éventuellement réavertir tout le monde. Cela pourrait poser problème si un esclave est en train d'effectuer la recherche à partir de la géodésique nouvellement insérée. Néanmoins cela permettrait de garder le côté «tabou» de l'heuristique ; soit le nœud maître fourni une copie de la liste aux esclaves en même temps que les géodésiques. Chaque esclave gère alors sa liste, et la liste du maître est mise à jour, soit à la fin, soit au bout d'un nombre d'itérations donné. Cependant cela augmente le risque que plusieurs nœuds cherchent sur les mêmes géodésiques, et donc qu'on perde le caractère tabou de l'heuristique. Néanmoins cela implique moins de communication entre les nœuds que la méthode précédente. Rapport de projet

20 Troisième partie Méthodes de parallélisation

21 3 Méthodes de parallélisation 3 Méthodes de parallélisation L'une des premières tâches que nous avions à faire fut de rechercher toutes les méthodes possibles pour paralléliser un code, que ce soit en JAVA ou en C++, les deux langages susceptibles d'être utilisés par la suite. Voici donc un petit résumé de ces solutions, d'abord en JAVA, puis en C++. MPI étant la technologie que nous avons décidé d'utiliser, cette partie sera logiquement plus développée. 3.1 Méthodes en Java Parallel JAVA Library La parallel JAVA Library (aussi appelée PJ) est une API spécialisée pour la programmation parallèle en JAVA ([PJLOW]). Cette API est utilisable aussi bien sur des machines multiprocesseurs parallèles à mémoire partagée (ou shared memory multiprocessor, SMP), sur des clusters d'ordinateurs, ou sur un hybride de ses types de machines. Son utilisation requiert JAVA JDK 1.5. Son utilisation avec JDK 1.6 entraine une baisse des performances ProActive Description Il s'agit d'une suite d'outils open source pour la programmation parallèle en JAVA ([PAOW]). Elle est utilisable sur des ordinateurs multiprocesseurs, sur des clusters ou des grilles de calculs types EGEE (en proposant notamment des interfaces pour pouvoir les utiliser), voir sur des réseaux intranet en peer to peer. Se veut l'équivalent de MPI 1 sous JAVA, avec notamment une application permettant de «transposer» un code C++ utilisant MPI en un code JAVA «parallélisé». Le transport de l'information entre les différents objets actifs (objet distribués sur le réseau) se fait en utilisant la librairie RMI 2 ([PAA]). Chaque objet actif possède une «racine», qui est l'unique point d'entrée de l'objet, et son propre thread de contrôle qui lui permet de décider dans quel 1 Voir page 18 2 Voir page 17 Rapport de projet

22 3.1 Méthodes en Java Développement sur cluster d'une application d'optimisation de transport public ordre il traite les appels entrants, qui sont eux même stockés dans une file d'attente. Les méthodes d'appel aux objets actifs sont asynchrones et fonctionnent selon un mécanisme appelé «wait-by-necessity» Exemple Voici un exemple d'utilisation de ProActive tiré du manuel officiel ([PAOM]). Il s'agit du calcul de PI. // Group creation Worker workers = (Worker) PASPMD.newSPMDGroup(Worker.class.getName(), params, nodesarray); DoubleWrapper wrappedresult; while (numofiterations > 0) { // Send the number of iterations to the first worker Worker firstworker = (Worker) PAGroup.getGroup(workers).get(0); wrappedresult = firstworker.start(numofiterations); } // ProActive initialization rank = PASPMD.getMyRank(); groupsize = PASPMD.getMySPMDGroupSize(); // Get all workers references workersarray = (Worker[]) PAGroup.getGroup(PASPMD.getSPMDGroup()).toArray(new Worker[0]); // The leader collects partial results. // Others just send their computed data to the rank 0. if (rank == 0) { for (i = 1; i < groupsize; i++) { body.serve(body.getrequestqueue().blockingremoveoldest("updatex")); // block until an updatex call sum += x; } } else { workersarray[0].updatex(sum); } /** * This method will be called remotely by a worker to send its value. * value The value to remotely update. */ public void updatex(double value) { this.x = value; } Figure 8 : exemple d'utilisation de ProActive 16 Rapport de projet 2010

23 3.1 Méthodes en Java RMI RMI, pour Remote Method Invocation, est une API JAVA permettant de manipuler des objets distants comme s'ils étaient sur la JVM locale ([RMICI]). Les connexions et transferts de données se font sur TCP/IP, et les communications client serveur grâce au protocole RMI-IIOP (Internet Inter-Orb Protocol), un protocole normalisé par l'omg (Object Management Group) et utilisé dans l'architecture CORBA. Une application en RMI utilise trois composants : le stub, ou proxy, implémenté par l'application cliente, et qui permet la communication avec le serveur ; le skeleton, qui est l'équivalent du proxy, implémenté sur le serveur ; le registre RMI, qui référence les objets. Voici les 5 étapes pour créer et utiliser une application utilisant RMI. Ces étapes sont tirées du cours de M. Traoré ([RMICT]). 1) créer et compiler les classes nécessaires (proxy.java, skeleton.java, client.java, serveur.java..) ; 2) créer le proxy via la commande rmic proxy ; 3) démarrer le registre via la commande rmiregistry ; 4) lancer le serveur ; 5) lancer le(s) client(s) ; RMI n'est pas à proprement parlé une méthode de parallélisation, mais elle peut être utilisée pour paralléliser dans le sens ou chaque nœud représente un client, et le nœud maître représente le serveur. Rapport de projet

24 3.2 MPI Développement sur cluster d'une application d'optimisation de transport public 3.2 MPI A la fin de nos recherches, nous avons décidé, en accord avec nos maîtres de projet, que nous utiliserions MPI. En effet le code existant est en C++, et nous avons tout deux eu des cours sur cette technologie lors de notre troisième année. Il nous serait ainsi, en théorie, plus simple d'arriver à paralléliser le programme avec MPI qu'avec une autre technologie, notamment en JAVA. Nous savions de plus que les serveurs de l'isima possèdent les outils nécessaires à l'utilisation de MPI Description MPI (Message Passing Interface) est une bibliothèque de fonctions permettant la programmation parallèle en C, C++ et Fortan sur des systèmes à mémoire distribuée ([MPIW]). Elle supporte aussi bien la communication point à point, c'est à dire la communication directe entre deux processus, que la communication collective, c'est à dire l'envoi d'un message de la part d'un processus à tous les autres. Les applications utilisant MPI sont portables, car cette bibliothèque est implémentée pour presque toutes les architectures de mémoire, et rapide, car MPI a été optimisé pour tous type de matériel utilisé. Son utilisation est relativement simple, car elle résume quasiment à l'utilisation des huit fonctions suivantes ([TMPI]) : MPI_Init MPI_Finalize MPI_Comm_size MPI_Comm_rank MPI_Send, ou MPI_Bcast : Bcast sert à envoyer les opérations depuis un processus à tous les autres, alors que Send n'envoie qu'à celui spécifié MPI_Recv, ou MPI_Reduce : Reduce combine les données de tous les processus et les renvoi à un seul L'envoi de messages peut se faire de manière synchrone, bloquante, non bloquante et/ou à l'aide du buffer ([MPIT]). 18 Rapport de projet 2010

25 3.2 MPI Exemple Voici un exemple d'utilisation de MPI tiré d'un tutoriel ([TMPI]). Il s'agit du calcul de PI. #include "mpi.h" #include <math.h> int main(argc,argv) int argc; char *argv[]; { int done = 0, n, myid, numprocs, i, rc; double PI25DT = ; double mypi, pi, h, sum, x, a; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); while (!done) { if (myid == 0) { printf("enter the number of intervals: (0 quits) "); scanf("%d",&n); } MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); if (n == 0) break; h = 1.0 / (double) n; sum = 0.0; for (i = myid + 1; i <= n; i += numprocs) { x = h * ((double)i - 0.5); sum += 4.0 / (1.0 + x*x); } mypi = h * sum; MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); } if (myid == 0) printf("pi is approximately %.16f, Error is %.16f\n", pi, fabs(pi - PI25DT)); } MPI_Finalize(); Figure 9 : exemple d'utilisation de MPI Rapport de projet

26 3.2 MPI Développement sur cluster d'une application d'optimisation de transport public Utilisation Types dérivés MPI nécessite l'utilisation de types spécifiques pour les fonctions Send et Recv. Les types «de base», tels les entiers ou les caractères, ont tous leurs équivalents en type MPI. Les autres types, telles les classes personnelles ou les vecteurs, nécessitent l'utilisation du type MPI_Datatype et de fonctions spécifiques. Ainsi, lorsque nous voulons envoyer aux esclaves une géodésique 3, il faut passer celle ci en type MPI_Datatype. Le problème majeur que nous avons rencontré est la présence de pointeurs parmi les attributs d'une géodésique, ainsi que des autres classes que nous utilisons. Or en parallélisation les pointeurs n'ont aucun sens : l'adresse d'un objet sur le nœud maître n'aura aucune signification pour le nœud esclave. Nous ne pouvons donc pas «transposer» une géodésique en type MPI_Datatype Utilisation de vecteurs Nous avons donc décidé de n'envoyer aux nœuds esclaves qu'un vecteur contenant les points de contrôle de la géodésique. En effet il est possible de reconstruire une géodésique à partir de ses points de contrôle et des données du graphs. Ces données peuvent être stockées dans des vecteurs, respectivement de doubles et d'entiers. Nous avons donc créé plusieurs fonctions : une permettant de passer du vecteur de points de contrôle à un vecteur de double, contenant les coordonnées des points de contrôle (nécessaire pour pouvoir l'envoyer par MPI, les points de contrôle n'étant pas des types MPI) ; une autre permettant de reconstruire une géodésique à partir de ses points de contrôle. Nous avons enfin dû faire une fonction qui permet le passage du fichier.raw, contenant le graph à proprement parlé, en un vecteur d'entiers, là encore pour pouvoir l'envoyer aux esclaves (le graph est nécessaire dans la reconstruction d'une géodésique) Code Voici la partie du code concernant l'envoi des données aux esclaves par le nœud maître : vect2vect(current_geodesic->points, vect_cp); // On envoi les points de controles, le graph aux esclaves MPI_Type_vector(vect_geo1->size(), 1, 1, MPI_INT, &vec); MPI_Type_commit(&vec); MPI_Type_vector(vect_cp->size(), 1, 1, MPI_DOUBLE, &vec2); MPI_Type_commit(&vec2); MPI_Send(&vect_cp, 1, vec2, i, 30, MPI_COMM_WORLD); MPI_Send(&vect_geo1, 1, vec, i, 30, MPI_COMM_WORLD); 3 Voir page 9 20 Rapport de projet 2010

27 3.2 MPI Figure 10 : envoi des données aux esclaves avec grasp La fonction vect2vect permet de construire le vecteur de double à partir du vecteur de points de contrôle. La fonction MPI_Type_vector() permet de transformer le vecteur désiré en un vecteur accepté par MPI. La fonction MPI_Type_commit() permet de valider le type précédemment créé. Vect_cp est le vecteur contenant les informations sur les points de contrôle, et vect_geo1 celles du graph. La réception, chez les esclaves, se fait comme suit : MPI_Recv(&vect_cp, 1, vec2, 0, 30, MPI_COMM_WORLD, &status); MPI_Recv(&vect_geo1, 1, vec, 0, 30, MPI_COMM_WORLD, &status); // On reconstruit la geodesique cp_nb = vect_cp->size(); current_geo = construire<tu_graph>(vect_geo1, cp_nb, vect_cp); Figure 11 : réception des données par les esclaves avec grasp La fonction construire permet de reconstruire la géodésique à partir du graph et de ses points de contrôle. Nous avons ainsi pu envoyer une géodésique aux nœuds esclaves, et en envoyer depuis les nœuds esclaves. Nous n'avons cependant pas fait le passage de voisinages, comme mentionné dans la méthode 2 4. Cependant, l'utilisation du logiciel C++2MPI, réalisé par les docteurs Hillson et Iglewski ([C++2MPI]), qui permet de créer des types MPI directement à partir de classes C++, pourrait éventuellement nous éviter tous ces détours. Après quelques échanges de mails, M. Hillson nous a fourni la dernière version du programme. Nous n'avons cependant pu le tester par manque de temps. De plus il semblerait, d'après M. Hillson, que le code ne soit plus à jour. 4 Voir page 10 Rapport de projet

28 Conclusion Développement sur cluster d'une application d'optimisation de transport public Conclusion Le but de notre projet était de concevoir une version parallèle d'un algorithme d'optimisation d'un problème de transport public urbain. Pour cela nous avons dans un premier temps mené une étude portant sur les différentes technologies existantes pour la programmation parallèle. Suite à cette étude nous avons choisi d'utiliser la librairie MPI, pour le langage C++, car en plus des bases acquises en cours, nous pouvions nous référer à nos professeurs pour les problèmes rencontré, ce qui n'était pas forcément le cas avec les autres technologies. Dans un second temps nous avons analysé les algorithmes séquentiels existants afin de déterminer différentes manières de les paralléliser, pour ensuite les implémenter. Lors de la phase d'implémentation nous avons rencontré plusieurs problèmes. Nous voulions tout d'abord adapter les classes existantes en type MPI pour pouvoir les utiliser, avant de nous rendre compte finalement que cela n'était en fait pas possible à cause de la présence de pointeurs dans les classes. Nous avons ensuite tenté de stocker les objets que nous voulions utiliser dans des vecteurs, mais là encore cela n'était pas possible car demandait le stockage de trop de données. Une fois la bonne solution trouvée (stocker uniquement les données des points de contrôle), nous avons ensuite passé du temps à trouver comment régler notre environnement de travail (le serveur solaire) afin de pouvoir compiler puis exécuter notre programme. Au moment où nous écrivons cette conclusion, le programme bloque apparemment lors de la réception d'un vecteur, et nous n'arrivons pas encore à voir pourquoi. Ces problèmes nous viennent en grand partie du fait que nous avons des connaissances de base en MPI, et que les tutoriels disponibles sur internet ne traitent que rarement le cas du C++, au profit du C et du Fortran. Lors de nos recherches, nous sommes entrés en contact avec un chercheur Américain, M. Hillson, qui a travaillé sur un logiciel permettant de traduire une classe C++ en type MPI. Nous n'avons cependant pas eu le temps de pousser plus amplement nos recherches. Cela pourrait simplifier la parallélisation de l'algorithme. Il semblerait de plus que la bibliothèque Boost.MPI gère plus le C++ que la librairie MPI de base. Là encore nous n'avons pas eu le temps de nous y intéresser plus particulièrement. 22 Rapport de projet 2010

29 Bibliographie Bibliogr aphie [TLY] : Loïc Yon, Modèles et outils pour la conception stratégique de réseaux de transports publics, 2005 [PJLOW] : A. Kaminsky, Site officiel de la Parallel JAVA Library, [PAOW] : INRIA, Activeeon, Site officiel de la suite ProActive, [PAA] : C. Massol, Outils d analyse statique et de vérification pour les applications Java distribuées, 2004 [PAOM] : The OASIS Research Team, ActiveEon, ProActive Programming, [RMICI] : Introduction au RMI de commentcamarche, [RMICT] : M.K Traoré, Cours de programmation réseaux [MPIW] : Wikipedia, MPI, [TMPI] : W. Gropp, Tutorial on MPI, [MPIT] : Blaise Barney, Tutoriel sur MPI, [C++2MPI] : Hillson, R. Iglewski, M., C++2MPI: a software tool for automatically generating MPI datatypes from C++ classes, 2000 Rapport de projet 2010

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4

Plus en détail

3615 SELFIE. http://graffitiresearchlab.fr HOW-TO / GUIDE D'UTILISATION

3615 SELFIE. http://graffitiresearchlab.fr HOW-TO / GUIDE D'UTILISATION 3615 SELFIE http://graffitiresearchlab.fr HOW-TO / GUIDE D'UTILISATION Hardware : Minitel Computer DIN FM545 45 connector (http://www.gotronic.fr/art-fiche-din-fm545-4747.htm) Cable Arduino compatible

Plus en détail

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7 Sommaire 1-Introduction 2 1-1- BPM (Business Process Management)..2 1-2 J-Boss JBPM 2 2-Installation de JBPM 3 2-1 Architecture de JOBSS JBPM 3 2-2 Installation du moteur JBoss JBPM et le serveur d application

Plus en détail

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES Leçon 11 PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES Dans cette leçon, nous retrouvons le problème d ordonnancement déjà vu mais en ajoutant la prise en compte de contraintes portant sur les ressources.

Plus en détail

INFO-F-404 : Techniques avancées de systèmes d exploitation

INFO-F-404 : Techniques avancées de systèmes d exploitation Nikita Veshchikov e-mail : nikita.veshchikov@ulb.ac.be téléphone : 02/650.58.56 bureau : 2N8.213 URL : http://student.ulb.ac.be/~nveshchi/ INFO-F-404 : Techniques avancées de systèmes d exploitation Table

Plus en détail

physicien diplômé EPFZ originaire de France présentée acceptée sur proposition Thèse no. 7178

physicien diplômé EPFZ originaire de France présentée acceptée sur proposition Thèse no. 7178 Thèse no. 7178 PROBLEMES D'OPTIMISATION DANS LES SYSTEMES DE CHAUFFAGE A DISTANCE présentée à l'ecole POLYTECHNIQUE FEDERALE DE ZURICH pour l'obtention du titre de Docteur es sciences naturelles par Alain

Plus en détail

IRL : Simulation distribuée pour les systèmes embarqués

IRL : Simulation distribuée pour les systèmes embarqués IRL : Simulation distribuée pour les systèmes embarqués Yassine El Khadiri, 2 ème année Ensimag, Grenoble INP Matthieu Moy, Verimag Denis Becker, Verimag 19 mai 2015 1 Table des matières 1 MPI et la sérialisation

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. RMI Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. Méthode proche de RPC. Outils et classes qui rendent l'implantation d'appels de méthodes d'objets distants aussi simples

Plus en détail

Annexe : La Programmation Informatique

Annexe : La Programmation Informatique GLOSSAIRE Table des matières La Programmation...2 Les langages de programmation...2 Java...2 La programmation orientée objet...2 Classe et Objet...3 API et Bibliothèque Logicielle...3 Environnement de

Plus en détail

Systèmes parallèles et distribués

Systèmes parallèles et distribués Systèmes parallèles et distribués Grégory Mounié 2013-12 Grégory Mounié Systèmes parallèles et distribués 2013-12 1 / 58 Outline 1 Introduction 2 Performances 3 Problèmes du calcul parallèle 4 Intergiciels

Plus en détail

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail

Vulgarisation Java EE Java EE, c est quoi?

Vulgarisation Java EE Java EE, c est quoi? Paris, le 1 Février 2012 Vulgarisation Java EE Java EE, c est quoi? Sommaire Qu est ce que Java? Types d applications Java Environnements Java Versions de Java Java EE, c est quoi finalement? Standards

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s) Propriétés du Document Source du Document SDK_accords.odt Titre du Document SDK Python et Java pour le développement de services ACCORD Module(s) PyaccordsSDK, JaccordsSDK Responsable Prologue Auteur(s)

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

Projet Active Object

Projet Active Object Projet Active Object TAO Livrable de conception et validation Romain GAIDIER Enseignant : M. Noël PLOUZEAU, ISTIC / IRISA Pierre-François LEFRANC Master 2 Informatique parcours MIAGE Méthodes Informatiques

Plus en détail

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15 MapReduce Malo Jaffré, Pablo Rauzy ENS 16 avril 2010 Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15 Qu est ce que c est? Conceptuellement Données MapReduce est un framework de calcul distribué

Plus en détail

lundi 3 août 2009 Choose your language What is Document Connection for Mac? Communautés Numériques L informatique à la portée du Grand Public

lundi 3 août 2009 Choose your language What is Document Connection for Mac? Communautés Numériques L informatique à la portée du Grand Public Communautés Numériques L informatique à la portée du Grand Public Initiation et perfectionnement à l utilisation de la micro-informatique Microsoft Document Connection pour Mac. Microsoft Document Connection

Plus en détail

Les clusters Linux. 4 août 2004 Benoît des Ligneris, Ph. D. benoit.des.ligneris@revolutionlinux.com. white-paper-cluster_fr.sxw, Version 74 Page 1

Les clusters Linux. 4 août 2004 Benoît des Ligneris, Ph. D. benoit.des.ligneris@revolutionlinux.com. white-paper-cluster_fr.sxw, Version 74 Page 1 Les clusters Linux 4 août 2004 Benoît des Ligneris, Ph. D. benoit.des.ligneris@revolutionlinux.com white-paper-cluster_fr.sxw, Version 74 Page 1 Table des matières Introduction....2 Haute performance (High

Plus en détail

Big Data et Graphes : Quelques pistes de recherche

Big Data et Graphes : Quelques pistes de recherche Big Data et Graphes : Quelques pistes de recherche Hamamache Kheddouci http://liris.cnrs.fr/hamamache.kheddouci Laboratoire d'informatique en Image et Systèmes d'information LIRIS UMR 5205 CNRS/INSA de

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

DÉVELOPPEMENT INFONUAGIQUE - meilleures pratiques

DÉVELOPPEMENT INFONUAGIQUE - meilleures pratiques livre blanc DÉVELOPPEMENT INFONUAGIQUE MEILLEURES PRATIQUES ET APPLICATIONS DE SOUTIEN DÉVELOPPEMENT INFONUAGIQUE - MEILLEURES PRATIQUES 1 Les solutions infonuagiques sont de plus en plus présentes sur

Plus en détail

Trier les ventes (sales order) avec Vtiger CRM

Trier les ventes (sales order) avec Vtiger CRM Trier les ventes (sales order) avec Vtiger CRM Dans l'activité d'une entreprise, on peut avoir besoin d'un outil pour trier les ventes, ce afin de réaliser un certain nombre de statistiques sur ces ventes,

Plus en détail

Big Data et Graphes : Quelques pistes de recherche

Big Data et Graphes : Quelques pistes de recherche Big Data et Graphes : Quelques pistes de recherche Hamamache Kheddouci Laboratoire d'informatique en Image et Systèmes d'information LIRIS UMR 5205 CNRS/INSA de Lyon/Université Claude Bernard Lyon 1/Université

Plus en détail

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I Runtime Gestion de la réactivité des communications réseau François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I 1 Le calcul hautes performances La tendance actuelle

Plus en détail

Instructions Mozilla Thunderbird Page 1

Instructions Mozilla Thunderbird Page 1 Instructions Mozilla Thunderbird Page 1 Instructions Mozilla Thunderbird Ce manuel est écrit pour les utilisateurs qui font déjà configurer un compte de courrier électronique dans Mozilla Thunderbird et

Plus en détail

Systèmes répartis. Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine. Systèmes répartis p.1/49

Systèmes répartis. Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine. Systèmes répartis p.1/49 Systèmes répartis Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine Systèmes répartis p.1/49 Systèmes répartis Définition très large : un système réparti est système informatique

Plus en détail

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments Recherche Opérationnelle Optimisation combinatoire : Applications et compléments Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 17 février 2014 Plan de

Plus en détail

1 Résolution de nom... 2 1.1 Introduction à la résolution de noms... 2. 1.2 Le système DNS... 2. 1.3 Les types de requêtes DNS...

1 Résolution de nom... 2 1.1 Introduction à la résolution de noms... 2. 1.2 Le système DNS... 2. 1.3 Les types de requêtes DNS... Table des matières 1 Résolution de nom... 2 1.1 Introduction à la résolution de noms... 2 1.2 Le système DNS... 2 1.3 Les types de requêtes DNS... 4 1.4 Configuration des clients DNS... 8 1.4.1 Résolution

Plus en détail

Le stockage local de données en HTML5

Le stockage local de données en HTML5 Le stockage local HTML5, pourquoi faire? Dans une optique de réduction des couts de maintenance, de déploiement, beaucoup d'entreprises ont fait le choix de migrer leurs applicatifs (comptables, commerciales,

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Notes de cours : bases de données distribuées et repliquées

Notes de cours : bases de données distribuées et repliquées Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées

Plus en détail

Configuration d'un annuaire LDAP

Configuration d'un annuaire LDAP Le serveur Icewarp Configuration d'un annuaire LDAP Version 10.3 Juillet 2011 Icewarp France / DARNIS Informatique i Sommaire Configuration d'un annuaire LDAP 1 Introduction... 1 Qu'est-ce que LDAP?...

Plus en détail

1.6- Génération de nombres aléatoires

1.6- Génération de nombres aléatoires 1.6- Génération de nombres aléatoires 1- Le générateur aléatoire disponible en C++ 2 Création d'un générateur aléatoire uniforme sur un intervalle 3- Génération de valeurs aléatoires selon une loi normale

Plus en détail

Cours de Génie Logiciel

Cours de Génie Logiciel Cours de Génie Logiciel Sciences-U Lyon Diagrammes UML (2) http://www.rzo.free.fr Pierre PARREND 1 Avril 2005 Sommaire Les Diagrammes UML Diagrammes de Collaboration Diagrammes d'etats-transitions Diagrammes

Plus en détail

Introduction to Parallel Programming with MPI

Introduction to Parallel Programming with MPI Introduction to Parallel Programming with MPI Master Modélisation et Simulation - ENSTA cours A1-2 Pierre Kestener pierre.kestener@cea.fr CEA-Saclay, DSM, France Maison de la Simulation MDLS, September,

Plus en détail

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation Les classes implémentant Serializable Parallélisme Architecture Eric Goubault Commissariat à l Energie Atomique Saclay Classe qui implémente la méthode distante (serveur): - dont les méthodes renvoient un objet serializable - ou plus généralement

Plus en détail

Services à la recherche: Data Management et HPC *

Services à la recherche: Data Management et HPC * Services à la recherche: Data Management et HPC * Pierre-Yves Burgi et Jean-François Rossignol Division informatique (DINF) * HPC = High-Performance Computing Réunion CIF Sciences du 6.12.11 1/19 Contenu

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Rapport d activité. Mathieu Souchaud Juin 2007

Rapport d activité. Mathieu Souchaud Juin 2007 Rapport d activité Mathieu Souchaud Juin 2007 Ce document fait la synthèse des réalisations accomplies durant les sept premiers mois de ma mission (de novembre 2006 à juin 2007) au sein de l équipe ScAlApplix

Plus en détail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

Cours de Master Recherche

Cours de Master Recherche Cours de Master Recherche Spécialité CODE : Résolution de problèmes combinatoires Christine Solnon LIRIS, UMR 5205 CNRS / Université Lyon 1 2007 Rappel du plan du cours 16 heures de cours 1 - Introduction

Plus en détail

LES ACCES ODBC AVEC LE SYSTEME SAS

LES ACCES ODBC AVEC LE SYSTEME SAS LES ACCES ODBC AVEC LE SYSTEME SAS I. Présentation II. SAS/ACCESS to ODBC III. Driver ODBC SAS IV. Driver ODBC SAS Universel V. Version 8 VI. Références I. Présentation Introduction ODBC, qui signifie

Plus en détail

Architecture Orientée Service, JSON et API REST

Architecture Orientée Service, JSON et API REST UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API

Plus en détail

WEB page builder and server for SCADA applications usable from a WEB navigator

WEB page builder and server for SCADA applications usable from a WEB navigator Générateur de pages WEB et serveur pour supervision accessible à partir d un navigateur WEB WEB page builder and server for SCADA applications usable from a WEB navigator opyright 2007 IRAI Manual Manuel

Plus en détail

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN Les contenues de ce document sont la propriété exclusive de la société REVER. Ils ne sont transmis qu à titre d information et ne peuvent en aucun cas

Plus en détail

Éléments d'architecture des ordinateurs

Éléments d'architecture des ordinateurs Chapitre 1 Éléments d'architecture des ordinateurs Machines take me by surprise with great frequency. Alan Turing 1.1 Le Hardware Avant d'attaquer la programmation, il est bon d'avoir quelques connaissances

Plus en détail

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations Projet Viticulture TP 3 : bases de données externes Description du thème Partie 1 : bases de données locales SQLite Partie 2 : projet H2O stockage local Partie 3 : bases de données distantes Partie 4 :

Plus en détail

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting IUT Bordeaux 1 2005-2006 Département Informatique Licence Professionnelle ~ SI TD Objets distribués n 3 : Windows XP et Visual Studio.NET Introduction à.net Remoting Partie 1 : l'analyseur de performances

Plus en détail

DSL. Domain Specific Language. À l'aide des technologies Eclipse Modeling. Goulwen Le Fur goulwen.lefur@obeo.fr. Le 23 novembre 2012

DSL. Domain Specific Language. À l'aide des technologies Eclipse Modeling. Goulwen Le Fur goulwen.lefur@obeo.fr. Le 23 novembre 2012 DSL Domain Specific Language À l'aide des technologies Eclipse Modeling Le 23 novembre 2012 Goulwen Le Fur goulwen.lefur@obeo.fr Le but de cette session Montrer : Ce qu'est-un DSL/DSM Comment implémenter

Plus en détail

Les diagrammes de modélisation

Les diagrammes de modélisation L approche Orientée Objet et UML 1 Plan du cours Introduction au Génie Logiciel L approche Orientée Objet et Notation UML Les diagrammes de modélisation Relations entre les différents diagrammes De l analyse

Plus en détail

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5 Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5 Machine virtuelle Machine virtuelle Machine virtuelle VMware ESX Network Shutdown Module

Plus en détail

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Introduction Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Forms 10g permet l utilisation du JAVA côté client et côté application

Plus en détail

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. Note technique W4 Engine Extension SSO Java Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. 1 Présentation 3 2 Custom SSO Java 4 3 Bilan 10 Sommaire Référence

Plus en détail

Projet de Veille Technologique

Projet de Veille Technologique Projet de Veille Technologique Programmation carte à puce - JavaCard Ing. MZOUGHI Ines (i.mzoughi@gmail.com) Dr. MAHMOUDI Ramzi (mahmoudr@esiee.fr) TEST Sommaire Programmation JavaCard Les prérequis...

Plus en détail

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration Julien MATHEVET Alexandre BOISSY GSID 4 Rapport Load Balancing et migration Printemps 2001 SOMMAIRE INTRODUCTION... 3 SYNTHESE CONCERNANT LE LOAD BALANCING ET LA MIGRATION... 4 POURQUOI FAIRE DU LOAD BALANCING?...

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Application 1- VBA : Test de comportements d'investissements

Application 1- VBA : Test de comportements d'investissements Application 1- VBA : Test de comportements d'investissements Notions mobilisées Chapitres 1 à 5 du cours - Exemple de récupération de cours en ligne 1ère approche des objets (feuilles et classeurs). Corps

Plus en détail

REMOTE DATA ACQUISITION OF EMBEDDED SYSTEMS USING INTERNET TECHNOLOGIES: A ROLE-BASED GENERIC SYSTEM SPECIFICATION

REMOTE DATA ACQUISITION OF EMBEDDED SYSTEMS USING INTERNET TECHNOLOGIES: A ROLE-BASED GENERIC SYSTEM SPECIFICATION REMOTE DATA ACQUISITION OF EMBEDDED SYSTEMS USING INTERNET TECHNOLOGIES: A ROLE-BASED GENERIC SYSTEM SPECIFICATION THÈSE N O 2388 (2001) PRÉSENTÉE AU DÉPARTEMENT D'INFORMATIQUE ÉCOLE POLYTECHNIQUE FÉDÉRALE

Plus en détail

NOTE D'APPLICATION CONCERNANT LA MISE EN SERVICE DE MATERIELS SUR RESEAU IP

NOTE D'APPLICATION CONCERNANT LA MISE EN SERVICE DE MATERIELS SUR RESEAU IP NOTE D'APPLICATION CONCERNANT LA MISE EN SERVICE DE MATERIELS SUR RESEAU IP Version 01 08/2004 1/5 C:\TECHNIQU\NOTICES\REVENTE\NOTE_APPLICATION\NOTE_MATERIELS_SUR_IP.sxw Sur les matériels raccordables

Plus en détail

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite. Rational ClearCase or ClearCase MultiSite Version 7.0.1 Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite. Product Overview IBM Rational

Plus en détail

Calcul Parallèle. Cours 5 - JAVA RMI

Calcul Parallèle. Cours 5 - JAVA RMI Calcul Parallèle Cours 5 - JAVA RMI Eric Goubault Commissariat à l Energie Atomique & Chaire Ecole Polytechnique/Thalès Saclay Le 28 février 2012 Eric Goubault 1 28 février 2012 Remote Method Invocation

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN 1. DÉVELOPPEMENT D'APPLICATION (CONCEPTEUR ANALYSTE) 1.1 ARCHITECTURE MATÉRIELLE DU SYSTÈME INFORMATIQUE 1.1.1 Architecture d'un ordinateur Processeur,

Plus en détail

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces Micro-ordinateurs, informations, idées, trucs et astuces Utiliser une WebCam Auteur : François CHAUSSON Date : 8 février 2008 Référence : utiliser une WebCam.doc Préambule Voici quelques informations utiles

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?

Plus en détail

Contents Windows 8.1... 2

Contents Windows 8.1... 2 Workaround: Installation of IRIS Devices on Windows 8 Contents Windows 8.1... 2 English Français Windows 8... 13 English Français Windows 8.1 1. English Before installing an I.R.I.S. Device, we need to

Plus en détail

Artica. La déduplication. Révision Du 08 Février 2011 version 1.5.020818

Artica. La déduplication. Révision Du 08 Février 2011 version 1.5.020818 Artica La déduplication Révision Du 08 Février 2011 version 1.5.020818 Table des matières Introduction :...2 Historique du projet :...2 A qui s'adresse Artica?...2 Licence et support...2 Que fait Artica?...

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

BIG Data et R: opportunités et perspectives

BIG Data et R: opportunités et perspectives BIG Data et R: opportunités et perspectives Guati Rizlane 1 & Hicham Hajji 2 1 Ecole Nationale de Commerce et de Gestion de Casablanca, Maroc, rguati@gmail.com 2 Ecole des Sciences Géomatiques, IAV Rabat,

Plus en détail

Règles et paramètres d'exploitation de Caparmor 2 au 11/12/2009. Pôle de Calcul Intensif pour la mer, 11 Decembre 2009

Règles et paramètres d'exploitation de Caparmor 2 au 11/12/2009. Pôle de Calcul Intensif pour la mer, 11 Decembre 2009 Règles et paramètres d'exploitation de Caparmor 2 au 11/12/2009 Pôle de Calcul Intensif pour la mer, 11 Decembre 2009 CAPARMOR 2 La configuration actuelle Les conditions d'accès à distance règles d'exploitation

Plus en détail

Construire des plug-ins pour SAS Management Console SAS 9.1

Construire des plug-ins pour SAS Management Console SAS 9.1 Construire des plug-ins pour SAS Management Console SAS 9.1 Janvier 2005 Sommaire 1 INTRODUCTION... 3 1.1 OBJECTIFS... 3 1.2 PERIMETRE... 3 2 LES COMPOSANTS DE SAS MANAGEMENT CONSOLE... 4 3 LA CONSTRUCTION

Plus en détail

CORBA. (Common Request Broker Architecture)

CORBA. (Common Request Broker Architecture) CORBA (Common Request Broker Architecture) Projet MIAGe Toulouse Groupe 2 1 CORBA, introduction (1/4) Les systèmes répartis permettent de créer des applications basées sur des composants auto-gérables,

Plus en détail

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML http://olivier-augereau.com Sommaire Introduction I) Les bases II) Les diagrammes

Plus en détail

modélisation solide et dessin technique

modélisation solide et dessin technique CHAPITRE 1 modélisation solide et dessin technique Les sciences graphiques regroupent un ensemble de techniques graphiques utilisées quotidiennement par les ingénieurs pour exprimer des idées, concevoir

Plus en détail

TAGREROUT Seyf Allah TMRIM

TAGREROUT Seyf Allah TMRIM TAGREROUT Seyf Allah TMRIM Projet Isa server 2006 Installation et configuration d Isa d server 2006 : Installation d Isa Isa server 2006 Activation des Pings Ping NAT Redirection DNS Proxy (cache, visualisation

Plus en détail

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Création d'un site dynamique en PHP avec Dreamweaver et MySQL Création d'un site dynamique en PHP avec Dreamweaver et MySQL 1. Création et configuration du site 1.1. Configuration de Dreamweaver Avant de commencer, il est nécessaire de connaître l'emplacement du

Plus en détail

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance Auteur : François CHAUSSON Date : 8 février 2008 Référence : utiliser le Bureau a distance.doc Préambule Voici quelques

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

TRAAM STI 2013-2014 Acquisition et exploitations pédagogiques des données sur un système pédagogique

TRAAM STI 2013-2014 Acquisition et exploitations pédagogiques des données sur un système pédagogique TRAAM STI 2013-2014 Acquisition et exploitations pédagogiques des données sur un système pédagogique Bilan technique et éléments de développement Fonctionnalités attendues Une vingtaine d établissements

Plus en détail

Hyper-V et SC Virtual Machine Manager sous Windows Server 2008 R2

Hyper-V et SC Virtual Machine Manager sous Windows Server 2008 R2 186 Hyper-V et SC Virtual Machine Manager sous Windows Server 2008 R2 L'utilisation des fonctionnalités de haute disponibilité intégrées aux applications, L'ajout de solutions tierces. 1.1 Windows Server

Plus en détail

Algorithmes de recherche

Algorithmes de recherche Algorithmes de recherche 1 Résolution de problèmes par recherche On représente un problème par un espace d'états (arbre/graphe). Chaque état est une conguration possible du problème. Résoudre le problème

Plus en détail

LE PROBLEME DU PLUS COURT CHEMIN

LE PROBLEME DU PLUS COURT CHEMIN LE PROBLEME DU PLUS COURT CHEMIN Dans cette leçon nous définissons le modèle de plus court chemin, présentons des exemples d'application et proposons un algorithme de résolution dans le cas où les longueurs

Plus en détail

Mysql. Les requêtes préparées Prepared statements

Mysql. Les requêtes préparées Prepared statements Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013 Rendu Temps Réel - OpenGL 4 et compute shaders December 18, 2013 résumé des épisodes précédents... création des objets opengl, organisation des données, configuration du pipeline, draw,... opengl 4.3 :

Plus en détail

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad Outils d'analyse de la sécurité des réseaux HADJALI Anis VESA Vlad Plan Introduction Scanneurs de port Les systèmes de détection d'intrusion (SDI) Les renifleurs (sniffer) Exemples d'utilisation Conclusions

Plus en détail

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00 Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00 HFFv2 1. OBJET L accroissement de la taille de code sur la version 2.0.00 a nécessité une évolution du mapping de la flash. La conséquence de ce

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Windows Server 2008. Chapitre 1: Découvrir Windows Server 2008

Windows Server 2008. Chapitre 1: Découvrir Windows Server 2008 Windows Server 2008 Chapitre 1: Découvrir Windows Server 2008 Objectives Identifier les caractéristiques de chaque édition de Windows Server 2008 Identifier les caractéristiques généraux de Windows Server

Plus en détail

Vers une approche Adaptative pour la Découverte et la Composition Dynamique des Services

Vers une approche Adaptative pour la Découverte et la Composition Dynamique des Services 69 Vers une approche Adaptative pour la Découverte et la Composition Dynamique des Services M. Bakhouya, J. Gaber et A. Koukam Laboratoire Systèmes et Transports SeT Université de Technologie de Belfort-Montbéliard

Plus en détail

Bien architecturer une application REST

Bien architecturer une application REST Olivier Gutknecht Bien architecturer une application REST Avec la contribution de Jean Zundel Ce livre traite exactement du sujet suivant : comment faire pour que les services web et les programmes qui

Plus en détail

Cahier des charges (CDC)

Cahier des charges (CDC) Cahier des charges (CDC) PTella Auteur Arnaud Aucher - Ecole Centrale Groupe PT1 3 Nom du document Version 3 Page 1 / 5 Sommaire Sommaire... 2 Présentation générale du projet... 3 1. Descriptif du projet...

Plus en détail