Résolution massivement parallèle de problèmes combinatoires ; cas particulier du problème de Langford

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

Download "Résolution massivement parallèle de problèmes combinatoires ; cas particulier du problème de Langford"

Transcription

1 Université de Reims Champagne-Ardennes Julien Loiseau Résolution massivement parallèle de problèmes combinatoires ; cas particulier du problème de Langford Master 1 Informatique TER : Travail d Etude et de Recherche Travail encadré par Michaël Krajecki et Christophe Jaillet avec la participation de François Alin Centre de Recherche en STIC Ce travail a été réalisé avec le concours du Centre de Calcul de Champagne-Ardenne ROMEO 11 juin 2014

2 Sommaire Table des figures Introduction ii iii 1 Problèmes combinatoires et résolution parallèle Problèmes combinatoires Classes de complexité CSP Tout problème combinatoire peut être représenté comme un CSP Méthode de résolution retenue Tâches et résolution parallèle Architecture GPU NVIDIA - Kepler CUDA, Compute Unified Device Architecture Cluster multi-gpu Résolution arborescente sur architecture multi-gpu Régularisation, pour exécution sur GPU Hybridation des deux méthodes Problème de Langford et implémentation Présentation Approche de Miller Implémentation Résolution multi-gpu du problème de Langford Structure du client Méthodologie expérimentale Résultats Conclusion et perspectives Conclusion Perspectives Références 33 8 Annexe 34 i

3 Table des figures 1 Nombre de supercalculateurs avec GPU au top500 c NVIDIA iii 2 Les différents types de problèmes d optimisation combinatoire : problèmes de décision, d optimisation combinatoire Classes de complexité des problèmes (sous l hypothèse que P NP ) Représentation arborescente d un CSP Descente dans l arbre de recherche Partition espace de recherche Génération naïve des tâches Méthodes de vérifications partielles Fermi vs. Kepler : Architecture c NVIDIA Fermi vs. Kepler : Architecture d un StreamingM ultiprocessor c NVIDIA Organisation des threads CUDA c NVIDIA Utilisation des streams CUDA Cluster de calcul multi-gpu ROMEO Détail et structure de la méthode Solution du problème de Langford à trois couleurs Vue numérique du problème de Langford d ordre Construction de l arbre de recherche à trois couleurs Langford, client-serveur Utilisation des streams CUDA Temps en fonction du nombre de blocks et de threads pour N=15 P= Temps en fonction du nombre de blocks et de threads pour N=15 P= Temps en fonction du nombre de blocks et de threads pour N=17 P= Profondeur Streams ii

4 Introduction Dans les dernières années le calcul haute performance a adopté une nouvelle tendance qui promet de se rapprocher de la barre de l exascale 1, par l utilisation du calcul hybride : les calculs sont accélérés par des accélérateurs matériels, spécialisés et surpuissants, qui sont adjoints aux processeurs dans des nœuds de calcul plus évolués. Les accélérateurs sont des unités massivement parallèles, pouvant être dotés de centaines d unités de calcul spécialisés, qui se déclinent en plusieurs familles dont les cartes graphiques et les processeurs spécialisés. Les cartes graphiques ont désormais une place très privilégiée dans le paysage HPC grâce à leurs performances crêtes annoncées, qui sont actuellement de l ordre de plusieurs TFlops pour une seule carte, pour un prix modique. Les cartes graphiques ont fait leur apparition en même temps que la demande pour des interfaces graphiques faciles à utiliser par l utilisateur lambda. L apparition des premiers jeux vidéo a poussé encore plus l évolution de ces co-processeurs car ils réclamaient de plus en plus de réalisme et de fluidité dans les affichages. À un certain moment ces unités sont devenues si puissantes que des chercheurs ont considéré leur potentiel de puissance, pour les mettre au profit de calculs généralistes indépendants de toute vocation graphique. En 2007, NVIDIA a proposé le premier langage généraliste de programmation pour ses cartes graphiques ; ce fut le point du départ pour une adoption de ces nouvelles architectures dans le monde des supercalculateurs, pour arriver aujourd hui à avoir de plus en plus de GPU au sein des supercalculateurs comme le montre la figure 1. Figure 1 Nombre de supercalculateurs avec GPU au top500 c NVIDIA L apport du calcul hybride est significatif et permet en effet d augmenter considérablement la puissance des machines parallèles. Ainsi l objectif de l exascale est effectivement à portée, dans un avenir proche. En recherche opérationnelle, plusieurs types de problèmes existent. Les problèmes combinatoires, aléatoires ou encore concurrentiels. Les problèmes combinatoires sont des problèmes visant à tester de nombreuses combinaisons entre un grand nombre de variables et à trouver une solution optimale ou proche de l optimum en respectant un ensemble de conditions. Ces problèmes combinatoires peuvent se ramener à un problème SAT, problème de satisfaisabilité, que l on peut ensuite mettre sous formalisme CSP, problème de satisfaction de contraintes. On connait actuellement un grand nombre de techniques pour résoudre un problème sous forme CSP, le backtrack, forward-checking, backjumping, etc. 1. Soit de générer une puissance d au moins un exaflops iii

5 La méthode backtrack avec, si possible, la possibilité de faire des tests sur des configurations partielles, est parfaite pour une implémentation CPU mais se prête très mal à l architecture synchrone du GPU. Le but de cette étude sera donc de trouver une méthode pour permettre de résoudre de manière efficace des problèmes sous formalisme CSP sur une architecture multi-gpu. Dans un premier temps, nous décrivons les problèmes combinatoires et les spécificités des accélérateurs matériels de NVIDIA avec, en particulier, la K20Xm sur laquelle les tests ont été réalisés. Nous décrivons ensuite les techniques pour permettre d utiliser ces accélérateurs matériels pour les problèmes combinatoires, après les avoir mis en formalisme CSP. Ceci passe par la régularisation des calculs qui peuvent ainsi se porter facilement sur GPU. Enfin, nous traitons l exemple d un problème particulier, celui de Langford. Nous montrons les méthodes que nous avons mises en place pour porter ce problème sur GPU et comment accélérer au maximum le calcul avec la méthodologie mise en place. Nous montrons aussi dans cette partie les résultats obtenus sur le problème de Langford. Enfin nous développerons les suites du projet avec une autre méthode de résolution du problème de Langford, la méthode de Godfrey. Durant ce stage, j ai tout d abord réalisé une étude bibliographique sur les problèmes combinatoires et les méthodes de résolution possibles avec l étude de différents articles et thèses. Ensuite l étude s est portée sur le problème de Langford et des méthodes existantes de résolution de ce problème ainsi que des moyens de mettre ces méthodes en œuvre et des travaux existants. Le travail de recherche s est poursuivi par la découverte du développement CUDA avec l étude de documents techniques. Dans un second temps je suis passé à l étape d implémentation de ces techniques en version séquentielle et enfin à des versions parallèles CUDA, OpenMP et MPI. Un temps a aussi été consacré à la recherche d autre techniques utilisant différents types d accélérateurs matériels. Les méthodes que j ai dû aborder ici sortent du cadre de la formation Master 1 et sont donc une avance pour moi sur les cours de Master 2. Le code était développé à la fois de manière personnelle et en groupe. De nombreux échanges ont eu lieu avec les membres du CReSTIC et l équipe de ROMEO. Un rapport hebdomadaire voire quotidien a été fait à mon encadrant, monsieur Christophe Jaillet. Je me suis investi fortement dans ce travail et j ai essayé d être présent à la faculté durant l ensemble du stage, moyennant la seconde semaine de vacances durant laquelle l établissement était fermé, toute la journée de 8h à 18h30 voire plus, certains jours où plus des développements étaient nécessaires. La préparation d une présentation pour le groupe RGE et ce même rapport ont été les éléments terminaux de ce stage. Mon travail sur ce projet ne va pas s arrêter là et je compte participer au maximum aux suites qui vont être données à ce travail. A court terme, la rédaction d un article scientifique en anglais destiné à une conférence internationale est en cours. Ce rapport a été précédé par une formation sur les FPGA (Field Programmable Gate Array) pour découvrir les possibilités de ce type d accélérateur. Une présentation devant le groupe RGE a aussi été réalisée le 5 juin 2014 et une autre suivra pour les Journées de la simulation à Reims le 12 juin Un article basé sur ce travail est en cours de rédaction pour une conférence internationale, the 20 th IEEE Internationale Conference On Parallel and Distributed Systems. iv

6 Julien Loiseau 1 Problèmes combinatoires et résolution parallèle 1.1 Problèmes combinatoires Les problèmes combinatoires constituent une branche de la recherche opérationnelle. Ils consistent à déterminer, parmi un ensemble discret X de solutions envisageables, celles qui vérifient certaines contraintes ou critères d optimisation. Ils apparaissent dans de nombreux domaines : militaire et géostratégique, logistique et optimisation industrielle, économie,... On distingue essentiellement deux catégories de problèmes combinatoires : les problèmes de décision et les problèmes d optimisation. Dans le cas d un problème de décision il s agit de déterminer si, oui ou non, il existe des solutions. La recherche est interrompue dès qu une première solution est trouvée, qu il en existe d autres ou non. En particulier, les éventuelles solutions d un problème de décision sont toutes équivalentes. Lorsqu on considère un problème d optimisation, on cherche à obtenir une solution qui minimise ou maximise la valeur d une fonction objectif. La plupart du temps, on parle de fonction de coût, qu il s agit de minimiser 2. La figure 2 rappelle ces différentes catégories de problèmes combinatoires. Considérons l ensemble X des valeurs envisageables (espace de recherche). problème de décision On suppose disposer d une fonction booléenne sol caractérisant, parmi les valeurs envisageables, celles qui en sont des solutions.?x X / sol(x) = vrai Nb : il ne s agit pas de déterminer l ensemble S = {x X / sol(x) = vrai}, mais de déterminer si S =. problème d optimisation On dispose d une fonction de coût fcout appréciant la qualité d une valeur ou d une solution. déterminer x tq fcout(x ) = min{fcout(x) / x X } ou déterminer x tq fcout(x ) = min{fcout(x) / x X et sol(x) = vrai} (Hyp : S ) Figure 2 Les différents types de problèmes d optimisation combinatoire : problèmes de décision, d optimisation combinatoire. Explosion combinatoire Dans certains domaines, un petit changement sur les données d un problème peut suffire à rendre sa résolution très difficile. C est ce qu on observe lorsqu on souhaite calculer les valeurs de la fonction d Ackermann 3. En pratique, dans le cadre des problèmes combinatoires, la taille de l espace de recherche (de l ensemble X ) est souvent extrêmement grande, au point qu elle est souvent exponentielle en fonction 2. On peut d ailleurs toujours se ramener à une minimisation car maximiser une fonction consiste à minimiser son opposé ou, si on veut ne considérer que des quantités positives, minimiser son inverse. 3. La fonction d Ackermann est définie sur N N par A(0, n) = n + 1, A(m, 0) = A(m 1, 1) si m > 0, et (cas général) A(m, n) = A(m 1, A(m, n 1)) lorsque m, n > 0. 1

7 Julien Loiseau 1.2 Classes de complexité de la taille du problème. 1.2 Classes de complexité Dans le cas des problèmes de décision, on distingue plusieurs classes de problèmes selon la «difficulté» de leur résolution. P : il existe une machine de Turing polynomiale 4 et déterministe 5 résolvant le problème. NP : il existe une machine de Turing polynomiale et non déterministe 6 résolvant le problème, c est à dire qu il existe une exécution de cette machine de Turing qui donne la solution en un temps polynomial 7. NP-difficile : Un problème est dit NP-difficile (ou NP-dur) si tout problème de NP lui est polynomialement réductible (pb 1 est NP-difficile si pb NP, pb pb 1 ). Un problème est donc NP-difficile lorsque sa complexité en temps est pire que celles de tous les problèmes NP. NP-complet : Un problème est dit NP-complet s il est à la fois NP-difficile et de classe NP. La figure 3 représente les différentes classes de complexité selon l hypothèse P NP. indécidable décidable problème de l arret NP difficile NP P NP complet SAT Figure 3 Classes de complexité des problèmes (sous l hypothèse que P NP ). Voici quelques exemples de problèmes de recherche combinatoire : Problèmes P : vérifier qu une instanciation d un problème de satisfaction de contraintes est une solution (pour un nombre déterminé de contraintes car l instance du problème est donnée). Problèmes NP-complets (par ordre croissant de difficulté) : trouver une solution d un problème de recherche combinatoire dont on sait qu il est satisfiable. déterminer si un problème de contraintes est satisfiable. déterminer une solution [optimale] d un problème d optimisation combinatoire ou déterminer toutes les solutions d un problème de recherche combinatoire (pour les afficher, les stocker, les compter,... ) ; ces problèmes sont plus difficiles que la recherche de satisfiabilité car il faut envisager toutes les solutions par exemple pour connaître la meilleure ou les compter. 4. polynomiale : dont le temps d exécution est borné par un polynôme N k, k étant une certaine constante et N désignant la taille du problème (plus précisément la taille de l instance du problème dans un codage déterminé). 5. déterministe : les instructions se succèdent selon un ordre non aléatoire : à chaque état est associée une action et une seule. 6. non déterministe : la succession des instructions est régie de façon non déterministe : dans certains états un choix peut être fait entre plusieurs actions, autorisant plusieurs exécutions différentes de la machine de Turing sur une même instance du problème. 7. Ces notions sont basées sur les temps d exécution. Il existe une notion symétrique pour la complexité spatiale, qui permet d introduire les classes de problème s P -space, NP -space,... 2

8 Julien Loiseau 1.3 CSP Problèmes NP-difficiles mais non NP-complets : Les problèmes non polynomiaux, même non déterministes, sont des cas pathologiques construits sur mesure et souvent extrêmement compliqués ; leur intérêt se limite essentiellement au fait qu ils sont non polynomiaux. Problèmes indécidables : Turing a prouvé en 1936 que le problème de l arrêt 8 est indécidable. D autres problèmes ont été prouvés indécidables (directement ou par équivalence au problème de l arrêt) : parmi ceux-ci, citons tout de même le problème du castor affairé (busy beaver), qui consiste à déterminer le nombre d étapes que peut effectuer une machine de Turing à n états, sans données initiales, avant de s arrêter. 1.3 CSP Formellement, un problème de satisfaction de contraintes est un triplet(x, D, C) tel que : X : un ensemble fini de variables D : un domaine de valeurs discret et borné 9 C : un ensemble fini de contraintes Une contrainte peut être définie à son tour comme une paire < t, R > avec : t : un N uplet de variables R : un ensemble de N uplet valeurs, R est une relation L évaluation d une contrainte par une fonction v : X D. On peut donc vérifier une solution ou un état satisfaisant le problème par : < (x 1,..., x n ), R > si (v(x 1 ),..., v(x n )) R 1.4 Tout problème combinatoire peut être représenté comme un CSP Comme l indique le titre de ce paragraphe, tout problème combinatoire peut être représenté comme un CSP (Constraint Satisfaction Problem). Preuve : En effet, comme la résolution de CSP est un problème NP-complet, tous les problèmes de la classe NP peuvent s y ramener moyennant une transformation polynomiale en temps. C est justement le cas des problèmes combinatoires, qui sont de classe NP (ils sont NP-complets). Ainsi, tout problème combinatoire peut être représenté comme un CSP. Comme les différents problèmes peuvent être abordés soit selon l angle de la recherche combinatoire, soit selon celui de l optimisation combinatoire, on représente sous forme de CSP le problème a priori, pour ne faire intervenir la fonction d évaluation que lors de la résolution (dans le cas où la question posée sur ce problème relève de l optimisation). Bien sûr, il appartient aux utilisateurs de déterminer une représentation intelligente du problème sous forme d un CSP car le choix de cette formulation (choix des variables ; nombre de contraintes, leur arité ;... ) peut avoir de réelles incidences sur l efficacité de la résolution. Représentation arborescente Nous disposons d un domaine de valeurs fini pour chacune des variables, on peut donc mettre en place l arbre représentant l ensemble des combinaisons possibles. Une 8. Étant donnée une machine de Turing déterministe et un mot d entrée, ce problème consiste à déterminer si son exécution se termine (n aboutit pas à un cycle).cela revient à déterminer si un programme (ensemble d instructions avec des instructions de branchement conditionnel), exécuté sur des données initiales déterminées, termine son exécution en un nombre fini d étapes (sans boucle infinie). 9. On peut également envisager des CSP continus. 3

9 Julien Loiseau 1.5 Méthode de résolution retenue branche de l arbre représentera un état du problème, valide ou non. La Figure 4 est un exemple de représentation arborescente. Pour la variable x 1 le premier niveau est l ensemble des valeurs possibles. Ensuite pour chacune des valeurs de x 2, on va décliner au niveau suivant l ensemble des valeurs possibles de x 2, puis x 3, etc. Figure 4 Représentation arborescente d un CSP Dans ce type de représentation et par la suite, pour le parcours de l arbre, on peut choisir de prendre ou non un ordre fixe pour les variables ou leurs valeurs. Selon le problème traité cela pourra avoir, ou non, de l importance. 1.5 Méthode de résolution retenue Plusieurs méthodes de résolution existent pour parcourir et trouver des solutions dans un tel arbre de recherche. Nous traitons ici uniquement de la méthode de recherche arborescente par backtrack. Baktrack La méthode se déroule ainsi : Tenter de descendre dans l arbre (Créer une nouvelle configuration partielle) Configuration valide : Continuer le parcours de la branche Configuration invalide, impasse : Abandon de la branche, traiter la branche suivante Une exemple de backtrack est donné en Figure 5. _ instanciation suivante descente impasse remontée Figure 5 Descente dans l arbre de recherche. 4

10 Julien Loiseau 1.6 Tâches et résolution parallèle Nous retenons la méthode naïve, selon laquelle l ordre des variables considérées est fixé statiquement, ainsi que l ordre des variables. On obtient l algorithme naïf associé (voir algorithme 1). Algorithm 1 Algorithme standard Début : Initialisation while!done do Vérifier le noeud if successf ul then descendre else end if end while remonter On regarde si le noeud est valide Valide, on descend Invalide, on remonte Plusieurs types de backtrack sont possibles. Vérification a posteriori : Si on ne peut pas de vérifier la consistance des nœuds de l arbre au fur et à mesure du parcours, la seule méthode possible est de faire une vérification a posteriori. On est obligé de parcourir l arbre jusqu à une feuille et ensuite appliquer la fonction de vérification de l état. Cette méthode est la plus lourde car on sera obligé de parcourir l ensemble de l espace de recherche. Vérification à la volée : Parfois le problème permet de faire des vérifications à la volée lorsqu une solution partielle est générée. Cette méthode permet de faire des découpes dans l arbre à des profondeurs basses réduisant ainsi très largement l espace de recherche. 1.6 Tâches et résolution parallèle Une telle représentation arborescente se prête parfaitement à la génération de tâches qui sont en fait des "sous-problèmes" pour partitionner l espace de recherche. En effet une fois arrivé sur un nœud donné on peut prendre en considération un sous-arbre à partir de ce nœud. Ce noeud peut être choisi à n importe quelle profondeur pour la génération des tâches. Le Figure 6 montre, la découpe d un arbre de recherche avec deux tâches. Figure 6 Partition espace de recherche 5

11 Julien Loiseau 1.6 Tâches et résolution parallèle On peut donc partitionner l ensemble de l espace de recherche en divisant l arbre de recherche en tâches. Ces tâches peuvent être générées de plusieurs manières. Tout d abord, à la figure 7 on montre que, si seule la vérification a posteriori est possible, la génération des tâches se fait à une profondeur donnée. Ici on place les variables x 1, x 2 et x 3 avant de générer la tâche qui sera partagée entre différents moyens de calculs par exemple. Figure 7 Génération naïve des tâches Si on dispose d une méthode d évaluation des instanciations partielles, on peut suivre la même procédure qu en Figure 7 mais en éliminant les tâches inconsistantes avant de les partager. Comme montré en Figure 8 (a), on va éliminer énormément de tâches inutiles et donc réduire le nombre de partitions. Enfin la méthode la plus optimisée, si encore une fois les données du problème le permettent, est de réaliser à chaque noeud une évaluation partielle pour élimier au plus haut les branches inconsistantes. La figure 8 (b), est semblable à celle de (a) au niveau des tâches subsistant, mais la génération de ces tâches aura été accélérée par l élagage de branches au plus tôt. Figure 8 Méthodes de vérifications partielles Cette dernière méthode est la plus optimisée (pour un parcours backtrack) du point de vue de la génération des tâches et du partitionnement de l espace de recherche. 6

12 Julien Loiseau 2 Architecture GPU C est en 2007 qu a lieu la réelle révolution du GPGPU, lorsque NVIDIA a mis à disposition des programmeurs la première version de son framework de programmation, appelé CUDA (Compute Unified Device Architecture), qui permet un accès direct à l architecture du périphérique via le langage C, familier, auquel sont apportées des modifications minimales. Cela fut le point de départ pour le GPU Computing avec, par la suite, de nouvelles versions améliorant la programmabilité. Dès lors les GPU deviennent donc attractifs et on peut espérer tirer parti de ces accélérateurs, intéressants pour leur grande puissance de calcul théorique, leur prix modeste, ainsi que pour leur faible consommation malgré un système de refroidissement efficace. Les parties suivantes vont détailler l architecture des cartes NVIDIA sur lesquelles l ensemble du développement et des tests a été réalisé et en particulier les cartes K20Xm dont dispose le centre de calcul ROMEO NVIDIA - Kepler La série Tesla est le haut de gamme de NVIDIA dédié au calcul généraliste. Cette section présente la dernière architecture de cette série, nommée Kepler. Depuis le lancement de son framework CUDA, Kepler est la troisième architecture de GPU NVIDIA ; elle a été explicitement conçue pour le calcul à haute performance Architecture matérielle Contenant jusqu à 7,1 milliards de transistors gravés dans la nouvelle technologie de lithographie à 28 nm, l architecture Kepler offre une performance en double précision allant jusqu à 1.31 TFlops. Pour comparer avec la génération précédente, l architecture Fermi disposait de 3 milliards de transistors dans une puce gravée avec la technologie 40 nm, pour une performance en double précision moindre de moitié. Voici les détails techniques et comparatifs entre une carte Quadro 6000 d architecture Fermi et une carte K20Xm disposant de l architecture Kepler : Caractéristiques Fermi Quadro 6000 KEPLER K20Xm Compute capability Fréquence d horloge 574 MHz 732 MHz Performance en simple précision Gflops 3.95 Tflops Performance en double précision Gflops 1.31 Tflops Taille mémoire 6144 MB 6144 MB Bande passante mémoire (GB/sec) 143GB/s 250GB/s L architecture Kepler du GK110 est composée de 2880 unités de calcul élémentaires (les coeurs CUDA), organisées en 15 Streaming Multiprocessors (SMX) de 192 coeurs chacun 11. En comparaison l architecture Fermi ne comptait que 512 coeurs, organisées en 16 SM (Streaming Multiprocessors, 10. http ://romeo.univ-reims.fr SMX dans le cas des K20Xm 7

13 Julien Loiseau 2.1 NVIDIA - Kepler version Fermi) de 32 coeurs chacun (figure 9(a)). L architecture Kepler est actuellement déclinée en deux architectures : le K10 (512 coeurs) composé de 2 cartes GK104 ; K20 (2496 coeurs) et K20X (2688 coeurs) composé d une carte GK110 (voir figure 9(b)). L architecture d un Streaming Multiprocessor (SM/SMX) a beaucoup changé au cours du temps. Celle du Kepler (figure 10(b)) est composée de 192 coeurs CUDA en simple précision et 64 unités en double précision, 32 unités de SFU (Special Function Units 5), 32 unités d entrées/sorties (dédiées aux accès mémoire). (a) Fermi GF104 (mi 2010) (b) Kepler GK110 (fin 2012) c Figure 9 Fermi vs. Kepler : Architecture NVIDIA Un aspect innovant de l architecture Kepler réside dans la réduction de la fréquence d horloge des shaders. En effet dans l architecture Fermi le shader avait une fréquence double par rapport à celle du GPU. Cela permettait de soutenir un certain débit avec moins de copies de la part de l unité d exécution. Ainsi les ordonnanceurs et les unités de texturing opéraient à la fréquence des processeurs élémentaires (SP, Streaming Processor), alors que les unités d entrées/sorties (pour des lectures/écritures) et les SFU (Special Fonction Unit) opéraient à la fréquence du shader, donc deux fois plus vite que la fréquence du coeur. Mais cette implémentation est gourmande en énergie. C est pour cette raison que dans l architecture Kepler, les shaders fonctionnent à la même fréquence que le reste du coeur. Pour maintenir le même débit, la plupart des unités fonctionnelles ont été doublées afin de compenser la baisse de fréquence. Ainsi, les architectures de la gamme Kepler sont bien deux fois plus puissantes que les Fermi, mais pas quatre fois comme on l annonce parfois Modèle d exécution Le modèle d exécution SIMT (Single Instruction stream, Multiple Threads) proposé par NVIDIA est proche du modèle SIMD (Single Instruction stream, Multiple Data stream), mais il présente des 8

14 Julien Loiseau 2.1 NVIDIA - Kepler particularités importantes. L unité d exécution du code s appelle un kernel (noyau en français). Le kernel est exécuté simultanément sur un ou plusieurs SM ou SMX par l intermédiaire de threads regroupés dans des blocs. Chaque thread dispose de son propre environnement d exécution (espace d adresses, registres d état, mémoire locale). Ils sont cependant regroupés dans des warps, lots de 32 threads qui exécutent tous leurs instructions de façon synchrone. (a) Fermi SM (GF104) (b) Kepler SMX (GK110) Figure 10 Fermi vs. Kepler : Architecture d un StreamingM ultiprocessor c NVIDIA Chaque SMX contient 4 ordonnanceurs pour les warps et 8 unités pour l envoi des instructions (instruction dispatch units) permettant à 4 warps de s exécuter simultanément sur 2 instructions différentes au même cycle. L ordonnanceur est composé d unités matérielles spécialisées offrant par exemple : Un mécanisme de scoreboarding pour les registres dans le cas des opérations avec une latence importante (accès aux textures et chargement mémoire) ; Un mécanisme de décision pour choisir le meilleur warp parmi une liste des warps éligibles ; un mécanisme d ordonnancement au niveau des blocs. Caractère innovant de l architecture Kepler : En plus de ces structures matérielles, une importante partie de la puce de l architecture Fermi était dédiée à un mécanisme de scoreboarding pour éviter les aléas d acheminement des données pour les calculs mathématiques. Selon plusieurs études, les architectes ont conclu que cette information est déterministe (les latences du pipeline mathématique ne sont pas variables) et qu il serait possible pour le compilateur de déterminer à l avance l instant où une instruction est prête à être exécutée, et de stocker cette information dans l instruction elle-même. 9

15 Julien Loiseau 2.2 CUDA, Compute Unified Device Architecture Cela a permis de remplacer des unités matérielles complexes par des unités plus simples, capables d extraire les informations prédéterminées de la latence et de les utiliser pour déterminer les warps éligibles pour être exécutés Hiérarchie mémoire Pendant l exécution du kernel, les threads ont accès à différents espaces mémoire : shared memory : 48Ko de mémoire partagée disponible sur chaque SMX, qui permet de collaborer à l ensemble des threads qui s y exécutent. Cette mémoire partagée, organisée en 32 banques (banks, indépendantes pour accélérer les accès concurrents) et alimentée avec 16Ko cache L1. Cette mémoire partagée bénéficie d une latence réduite ; étant implémentée sur la puce, la vitesse d accès est équivalente à celle des registres [tant qu il n y a pas de conflit de banque entre les threads]. local memory : un maximum de 521Ko de mémoire privée disponible pour chaque thread, utilisée pour stocker des tableaux ou structures trop volumineuses pour être mises dans l espace des registres (register spill) ; cette zone mémoire se retrouve dans la mémoire globale du périphérique et est dont pénalisée par des temps de latence très important pour le chargement des données, bien que les dernières architectures favorisent les délais d accès par l utilisation de deux niveaux de caches mémoires (L1 et L2). global memory : un maximum de 6Go pour l ensemble de la carte GPU, répartis en 8 partitions partagées par tous les threads pendant toute la durée d exécution de l application ; l accès passe par des caches L1 et L2, ainsi que par un cache de données en lecture seule. constant memory : 64Ko de mémoire, en lecture seule, situés dans la mémoire globale du périphérique. L accès est accéléré grâce à 8Ko de cache spécifique par SMX mais, comme pour la mémoire locale, les temps d accès sont très pénalisants. texture memory : il s agit d un espace mémoire en lecture seule, situé dans la mémoire globale, optimisé pour des accès en deux dimensions (car accessible via les unités de texture). Comme la mémoire constante, cette mémoire est située dans la mémoire globale de la carte et les temps d accès sont donc défavorables, bien que les accès soient accélérés par l utilisation de caches mémoire spécifiques (huit caches L2 de 32Ko, un par partition DRAM ; 10 caches L1 de 24KB chacun, associés aux TPC, Texture Processor Cluster). 2.2 CUDA, Compute Unified Device Architecture Après avoir présenté ce que contenait exactement un GPU en terme de matériel, nous présentons maintenant les parties dans lesquelles le développeur intervient avec l utilisation de l architecture de traitement parallèle CUDA, développée par NVIDIA Langage de programmation En tant que langage de programmation, CUDA est une extension du langage C ou C++ [avec certaines restrictions]. Il permet de spécifier le code exécuté sur GPU (précisé dans des fonctions dites kernels) ainsi que les parties relevant du CPU : pré-traitements, transferts mémoire (CPU-GPU et GPU-CPU) et lancement des kernels Organisation des threads Tous les GPUs NVIDIA ont plusieurs processeurs et chacun d entre eux possède plusieurs coeurs, chacun de ces coeurs peut faire tourner des threads de manière indépendante. Ces threads sont re- 10

16 Julien Loiseau 2.2 CUDA, Compute Unified Device Architecture groupés au sein de blocs de une à trois dimensions. Ces blocs sont eux-mêmes regroupés au sein d une grille qui peut, elle aussi, avoir jusque trois dimensions. Le nombre de threads qui vont tourner est donc égal au nombre de threads par blocs, multiplié par le nombre de blocs par grille, voir Figure 11. Les threads se répartissent ensuite sur les SMX libres et se divisent alors en sous-groupes de k-threads appelés warps. Dans notre architecture (Kepler GK110), les threads se répartissent par groupes de 32 dans les warps. Figure 11 Organisation des threads CUDA c NVIDIA L organisation des threads est toutefois limitée par plusieurs facteurs (Kepler GK110) : la taille maximale d un bloc est de 1024 threads ; la taille maximale de la grille est de blocs ; seuls 16 blocs peuvent passer en même temps sur un même SMX ; des contraintes sur la place en mémoire et les registres entrent aussi en ligne de compte ; elles seront abordées dans la partie suivante. Les dimensions de la grille et des blocs ne sont pas imposés et peuvent être adaptées au problème traité pour répartir au mieux les tâches des threads par groupes. C est le GPU et non le développeur qui est en charge de la répartition des blocs et des threads sur le GPU. Les threads peuvent se placer sur n importe quel SMX libre puis dans n importe quel warp. Donc pendant l exécution le placement des ressources sur la carte n est pas déterminé à l avance. De même l exécution des blocs se fait de manière complètement indépendante. Entre les threads, des méthodes de communication sont toutefois possibles avec les méthodes de shuf f le ou encore les opérations atomic. Ces méthodes permettent de passer facilement d une architecture à l autre. En effet, 11

17 Julien Loiseau 2.2 CUDA, Compute Unified Device Architecture si le développeur respecte les conditions de la carte en terme de taille de bloc et de grille, la répartition se fera automatiquement sur la carte cible sans changement dans le code. Les threads CUDA sont ensuite répartis par groupes de 32 dans les warps. Ce sont ces warps qui s exécutent en Single-Instruction Multiple Thread (SIMT) ce qui veut dire que chaque thread exécute la même opération au même moment. Si le code comporte des embranchements comme des if, les threads vont être séquentialisés. C est à dire que pendant qu une partie des threads entrera dans le if, l autre partie attendra la fin de l exécution du if. Si le code comporte un else, ce sera ensuite à l autre partie des threads d attendre avant de reprendre le calcul de manière parallèle. Donc les conditionnelles sont possibles avec CUDA mais une utilisation trop importante avec trop de divergence verra les capacités de calcul s effondrer de par la séquentialisation du code. Pour demander l exécution sur le GPU d un ensemble de blocs et de threads, on utilise un kernel identifié par le préfixe global. Il défini le code que va exécuter chacun des threads. Pour permettre à chacun des threads de s identifier et de ne travailler que sur sa partie des opérations, des identificateurs sont disponibles : threadidx, comprenant trois dimensions et donnant la position du thread dans le bloc ; blockidx, pour la position du bloc dans la grille ; griddim, dimensions de la grille ; blockdim, dimensions du bloc. Une fois le kernel lancé les dimensions sont fixes. Les kernels s exécutent de manière asynchrone avec le CPU qui les ont lancés. Dans les anciennes version de CUDA, seul le CPU avait la possibilité de lancer des kernels mais sur l architecture Kepler le kernel lui même peut relancer dynamiquement plusieurs kernels[7]. On spécifie la taille de grille et de bloc au moment de lancer le kernel avec la syntaxe CUDA kernel grid,block (parametres) ce qui permet de changer les dimensions entre l exécution de deux kernels. Les fonctions device sont des fonctions uniquement utilisable par les fonctions global. Pendant l exécution, le programmeur à la possibilité de coordonner l ensemble des threads en utilisant une fonction de barrière similaire à celle de MPI, _synthreads(). L ensemble des threads du même bloc vont devoir attendre que chaque thread soit en synchronisation avant de poursuivre son exécution. De ce fait les threads qui auront un temps d exécution plus rapide devront attendre les plus lents. Le temps de calcul total sera donc la vitesse de calcul du plus lent des threads. La méthode _cudathreadsynchronize() va, quant à elle, attendre la synchronisation de l ensemble des threads de l ensemble des blocs qui s exécutent avant de poursuivre l exécution Gestion mémoire Dans l architecture de développement CUDA, le CPU et le GPU ont, de base, une mémoire complètement séparée. Tous les threads du GPU utilisent la mémoire GPU avec les parties que nous avons décrites précédemment. Le CPU doit donc dans un premier temps, charger l ensemble des données sur le GPU avant de lancer un kernel pour les utiliser. Les différents types de mémoire présentés peuvent être utilisés mais il faut bien garder à l esprit qu un bloc va s exécuter sur un SMX qui à une limitation en terme de registre par threads. Ainsi le SMX comporte au maximum registres qui doivent se partager entre les threads avec un maximum de 255 registres par threads. Pour ne pas utiliser qu une partie des ressources de la carte, NVIDIA a mis en place un système d occupancy qui est le rapport du nombre de warps actifs et du nombre de warps total. Cette valeur est censée permettre de trouver le 12

18 Julien Loiseau 2.2 CUDA, Compute Unified Device Architecture meilleur compromis entre taille de bloc et nombre de registres nécessaires pour une kernel. Des études ont montré [13] que l on peut toutefois avoir de bien meilleurs résultats avec une occupancy faible et que ce n est donc pas forcément l unique paramètre à prendre en compte. Voici un rappel des types de mémoire et leur utilisation : Memoire Localisation Cache Accès Visibilité Registre On-chip Non R/W 1 thread Locale Off-chip Non R/W 1 thread Shared On-chip? R/W tous les threads Global Off-chip Non R/W tous les threads Constante Off-chip Oui R tous les threads Texture Off-chip Oui R/W tous les threads Registre : Géré directement par CUDA ; Local : Toutes variables déclarées sans identifiants dans le kernel ; Shared : Variables avec l identifiant shared ; Global : Variables déclarées global en dehors du kernel. Les mémoire constantes et textures sont gérées en dehors du kernel avec un chargement mémoire spécifique. Comme sur un CPU, les allocations mémoire se font avec des fonctions de malloc, cudamalloc() et le chargement se fait ensuite par memcpy entre l host et le device, cudamemcpy(). Ces copies mémoires peuvent se faire dans les deux sens cudamemcpyhosttodevice ou cudamemcpydevicetohost. Pour des mémoires spécifiques comme la mémoire constante ou texture, le chargement est un peu différent et fait à appel à des fonctions spécifiques (cudamemcpytosymbol() et cudabindtexture()) Streams CUDA propose, depuis la version 2.0, l utilisation de plusieurs streams. Dans la version de base, les étapes de chargement en mémoire (H2D), de calcul (kernel) et de récupération du résultat (D2H) se font de manière synchrone. En effet le kernel ne peut pas calculer tant que l ensemble des données n est pas disponible sur le device et le résultat n est pas disponible avant la fin du calcul, voir Figure 12 Sequential version. En découpant ce flux de données et de calcul on peut commencer à charger une partie des données tout en calculant une autre partie. Un flux est un type cudastream. On utilise les fonctions de memcpy en mode asynchrone pour ne pas rendre ce chargement bloquant pour le GPU, cudamemcpyasyn(...,stream). On choisit donc dans quel stream on réalise le chargement. Pour la récupération du résultat l opération est la même. Le lancement du kernel est, de base, asynchrone mais s exécute sur le stream default. Au lancement du kernel, on choisit donc le stream kernel grille, bloc, memoire, stream (parametres). Sur la Figure 12, dans la version asynchrone on voit que le chargement des données est toujours séquentiel mais que le kernel peut s exécuter en parallèle d une opération mémoire, ici le temps de calcul est divisé de moitié. 13

19 Julien Loiseau 2.3 Cluster multi-gpu Figure 12 Utilisation des streams CUDA Les streams nécessitent un placement en mémoire spécifique entre l host et le device. Il faut utiliser de la «pinned memory». Ce sont des espaces ayant le même adressage sur l host et le device, ce qui accélère les transferts entre les deux acteurs. 2.3 Cluster multi-gpu L ensemble des tests de cette étude a été réalisé sur le cluster de calcul ROMEO. Ce cluster est composé d un ensemble de 130 nœuds (serveur hybrides CPU-GPU). Chaque nœud comprend deux "machines" : 1 CPU Intel Ivy Bridge de 8 coeurs 1 GPU NVIDIA TESLA K20Xm Cluster Noeud Noeud Noeud CPUs Noeud Noeud Noeud Machine GPUs Machine Figure 13 Cluster de calcul multi-gpu ROMEO 14

20 Julien Loiseau 3 Résolution arborescente sur architecture multi-gpu Les problèmes combinatoires peuvent donc être formalisés en CSP, comme abordé dans la partie 1, et représentés sous forme arborescente. Or ces problèmes se résument à traiter un nombre important de contraintes et l une des méthodes de résolution parallèle est de parcourir l arbre de recherche une fois divisé en tâches. 3.1 Régularisation, pour exécution sur GPU Malheureusement, comme nous l avons vu en partie 2.2, les threads du GPU ne supportent que difficilement l irrégularité qui génère des divergences. La version backtrack du parcours n est donc pas optimale pour une utilisation GPU et nous devons mettre en place une version régulière de la résolution. En effet, même si cela est plus long, on peut se permettre de descendre aux feuilles de l arbre systématiquement, même si cela induit un plus grand nombre de calculs. On réalise donc une vérification a posteriori des branches. Ces calculs sont gérés en parallèle grâce à l architecture GPU. Il n y a donc plus de backtrack, on descend dans l arbre jusqu à atteindre une feuille et on vérifie, une fois cette feuille atteinte, si la branche est valide. Auncun test n est opéré sur les nœuds durant la descente. L algorithme devient systématique, par l évaluation systématique de chacun des cas (algorithme 2) : Algorithm 2 Algorithme régularisé Début : Initialisation for domaine variable i do affectation variable i for domaine variable i 1 do affectation variable i 1 for... do... for domaine variable 0 do affectation variable 0 if nœud valide then ajouter aux solutions end if end for end for end for end for Fin 3.2 Hybridation des deux méthodes Les accélérateurs matériels sont forcément couplés à des CPU pour leur donner des tâches de calculs à gérer. La méthode standard de descente avec backtrack est très adaptée aux CPU et la méthode régulière aux GPU. On peut donc facilement répartir la charge de calcul entre les deux acteurs. Le 15

21 Julien Loiseau 3.2 Hybridation des deux méthodes CPU va générer des tâches à un certain niveau avec l algorithme de backtrack, une fois une certaine profondeur de calcul atteinte, la tâche de finir la descente de l arbre pourra être confiée au GPU avec l algorithme régularisé comme en Figure 14 (a). Cette méthode permet une mise en parallèle, le CPU prépare des tâches d une profondeur donnée pendant que le GPU traite une autre tâche. Cette méthode, scalable, peut être portée sur une architecture client-serveur. Le serveur a pour but de générer un certain nombre des sous-problèmes à une profondeur donnée avec la méthode de backtrack et de les distribuer aux clients. Ceux-ci peuvent ensuite continuer le parcours de l arbre avant de donner des tâches au GPU. Le schéma de parcours de l arbre client-serveur est présenté en Figure 14 (b). Backtrack Régulier (a) Partage du parcours Serveur Bakctrack Clients GPUs Régulier (b) Structure générale Figure 14 Détail et structure de la méthode 16

22 Julien Loiseau 4 Problème de Langford et implémentation Nous allons ici présenter le problème de Langford, référencé comme problème SAT. Nous développons ensuite notre implémentation du problème et l organisation globale du code. 4.1 Présentation On considère un nombre pair de cubes deux à deux de même couleur. On s intéresse aux arrangements de ces cubes de telle sorte que les écarts entre les deux cubes de chaque couleur sont non nuls et différents comme le montre la figure ci-dessous. Figure 15 Solution du problème de Langford à trois couleurs L objectif n est pas de trouver une solution mais le nombre total des solutions possibles pour un nombre n donné de paires de cubes. Nous noterons L(2, n) le nombre de solutions existantes pour un nombre de paires n, à une symétrie près. Par exemple, L(2, 3) = 1, et L(2, 8) = 150 Plus formellement Une suite de Langford est une variante d une suite de Skolem. Une suite de Langford d ordre n est une suite de 2n entiers, constituée des entiers de 1 à n répétés chacun deux fois, les deux occurrences d un entier k étant distantes de k + 1 (séparées par k autres entiers) Figure 16 Vue numérique du problème de Langford d ordre 4 La suite de Langford d ordre n, (L 1, L 2,..., L 2n ), présente les propriétés suivantes : pour chaque indice k [1,..n], il y a exactement deux indices i et j, tels que L i = L j ; si L i = L j = k avec i < j alors j i = k + 1. On connaît certaines propriétés des termes L(2, n) 12, mais on ne dispose pas de formule générale permettant de les calculer. La résolution du problème de Langford est un réel challenge de calcul et ce problème est référencé comme tel dans la CSPLib et la SATLib. Il existe différentes représentations du problème qui permettent de mettre en place différentes méthodes de résolution. Nous abordons ici la méthode dite de Miller, qui consiste en une résoution arborescente. 4.2 Approche de Miller Cette partie détaille l approche standard séquentielle. Elle consiste à parcourir en profondeur un arbre de recherche en se fondant sur les valeurs des cubes affectés à chaque position. On dispose de 2 n 12. par exemple, L(2, n) = 0 n 0[4] ou n 3[4] 17

23 Julien Loiseau 4.3 Implémentation positions pour le problème n. Les feuilles de l arbre constituent les solutions au problème de Langford. La construction de l arbre de recherche se fait en plaçant successivement chaque paire de cubes d une même couleur. Pour optimiser l élagage de l arbre, on place les paires dans l ordre décroissant de leurs valeurs. Les placements impossibles sont éliminés au fur et à mesure de la descente dans l arbre de recherche. (1,5) (2,6) (1,4) (2,5) (3,6) (1,4) (2,5) (3,6) (1,3)(2,4)(3,5)(4,6)(1,3)(2,4)(3,5)(4,6)(1,3)(2,4)(3,5)(4,6) (1,3)(2,4)(3,5)(4,6)(1,3)(2,4)(3,5)(4,6)(1,3)(2,4)(3,5)(4,6) Figure 17 Construction de l arbre de recherche à trois couleurs Cet algorithme donne de bons résultats mais, même en parallèle, les versions CPU classiques sont limitées en pratique au problème L(2,19). Pour atteindre les dernières instances, L(2,23) et L(2,24), il a été nécessaire de mettre en œuvre l encodage arithmétique de Godfrey. Dans cette étude nous entendons tirer parti de l équipement massivement parallèle du supercalculateur ROMEO de l URCA pour mettre en œuvre la version régularisée de la méthode de Miller, et prouver qu elle donne de bons résultats jusqu aux limites réalisées sur CPU. Pour aller au-delà, nous evisageons par la suite de porter sur GPU la méthode algébrique de résolution : cela fera l objet d une étude ultérieure. 4.3 Implémentation Dans cette partie nous décrivons l ensemble des choix d implémentation ainsi que les algorithmes retenus pour l implémentation sur GPU du problème Algorithme standard En nous fondant sur la méthode de Miller, nous avons contribué par la proposition d une structure de données adaptée : cet encodage très adapté permet d améliorer la performance de la résolution. Lors de la résolution, on cherche à placer une paire "sur" une combinaison partielle antérieure. On a par exemple à placer la paire des cubes 2 sur la combinaison partielle 4x3xx43x. Ce qui importe pour le placement d une nouvelle paire est de connaître les places libres : peu importent les valeurs des cubes placées sur les positions occupées. Représentation binaire et masques A chaque nœud de l arbre on fait correspondre un masque binaire dans lequel un 0 correspond à une case libre et un 1 à une case occupée. Le numéro et la position des paires importent peu. L essentiel est de savoir si l on peut oui ou non placer les paires suivantes. 18

24 Julien Loiseau 4.3 Implémentation Voici par exemple la représentation de deux placements : 4x3xx43x (affectation partielle de deux paires) x2xx2xxx (placement d une nouvelle paire) On dispose d une solution pour le problème n lorsqu on a pu placer la n ieme paire avec succès. On note qu une solution valide correspond à un masque dans lequel tous les bits sont à 1. Test d un placement Afin de vérifier qu il est possible de placer une paire de cubes à une position donnée, on opère un et bit à bit entre le masque existant et le masque représentant la paire à placer : et = Si le résultat de l opération est 0, la paire peut être ajoutée au masque. Dans le cas contraire, l ajout n est pas possible. Dès lors, il n est pas nécessaire de poursuivre plus avant dans le parcours de la branche ou du sous-arbre (d aucune de ses branches). Placement d une paire Si le test précédent est concluant, on insère la paire dans ce masque en calculant le ou binaire des deux masques : ou = Le parcours de l arbre se poursuit en utilisant le masque nouvellement construit. Algorithme standard Cette stratégie de modélisation et de construction de l arbre permet de mettre en place une méthode de résolution par backtrack en algorithme 3. Algorithm 3 Algorithme standard Début : Initialisation while!done do try if successf ul then lowerpair else end if end while higherpair Tenter de placer la paire courante Paire placée, on passe à la paire inférieure Pas de place on remonte d une paire La méthode présentée par cet algorithme, essaie de placer une paire (méthode try) avec un et binaire sur le masque courant. Si la position est disponible on insère la paire dans le masque avec un ou binaire. La recherche se poursuit sur la paire suivante. Quand un placement n est pas possible sur l ensemble du masque, on remonte à la paire précédente. 19

. Plan du cours. . Architecture: Fermi (2010-12), Kepler (12-?)

. Plan du cours. . Architecture: Fermi (2010-12), Kepler (12-?) Plan du cours Vision mate riel: architecture cartes graphiques NVIDIA INF 560 Calcul Paralle le et Distribue Cours 3 Vision logiciel: l abstraction logique de l architecture propose e par le langage CUDA

Plus en détail

Initiation au HPC - Généralités

Initiation au HPC - Généralités Initiation au HPC - Généralités Éric Ramat et Julien Dehos Université du Littoral Côte d Opale M2 Informatique 2 septembre 2015 Éric Ramat et Julien Dehos Initiation au HPC - Généralités 1/49 Plan du cours

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Décoder la relation entre l architecture et les applications Violaine Louvet, Institut Camille Jordan CNRS & Université Lyon 1 Ecole «Découverte du Calcul» 2013 1 / 61 Simulation numérique... Physique

Plus en détail

Introduction à la programmation des GPUs

Introduction à la programmation des GPUs Introduction à la programmation des GPUs Anne-Sophie Mouronval Mesocentre de calcul de l Ecole Centrale Paris Laboratoire MSSMat Avril 2013 Anne-Sophie Mouronval Introduction à la programmation des GPUs

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

Architecture des calculateurs

Architecture des calculateurs Formation en Calcul Scientifique - LEM2I Architecture des calculateurs Violaine Louvet 1 1 Institut Camille jordan - CNRS 12-13/09/2011 Introduction Décoder la relation entre l architecture et les applications

Plus en détail

Rapport 2014 et demande pour 2015. Portage de Méso-NH sur Machines Massivement Parallèles du GENCI Projet 2015 : GENCI GEN1605 & CALMIP-P0121

Rapport 2014 et demande pour 2015. Portage de Méso-NH sur Machines Massivement Parallèles du GENCI Projet 2015 : GENCI GEN1605 & CALMIP-P0121 Rapport 2014 et demande pour 2015 Portage de Méso-NH sur Machines Massivement Parallèles du GENCI Projet 2015 : GENCI GEN1605 & CALMIP-P0121 Rappel sur Méso-NH : Modélisation à moyenne échelle de l atmosphère

Plus en détail

Introduction à CUDA. gael.guennebaud@inria.fr

Introduction à CUDA. gael.guennebaud@inria.fr 36 Introduction à CUDA gael.guennebaud@inria.fr 38 Comment programmer les GPU? Notion de kernel exemple (n produits scalaires): T ci =ai b ( ai, b : vecteurs 3D, ci for(int i=0;i

Plus en détail

Calcul multi GPU et optimisation combinatoire

Calcul multi GPU et optimisation combinatoire Année universitaire 2010 2011 Master recherche EEA Spécialité : SAID Systèmes Automatiques, Informatiques et Décisionnels Parcours : Systèmes Automatiques Calcul multi GPU et optimisation combinatoire

Plus en détail

Quantification d incertitude et Tendances en HPC

Quantification d incertitude et Tendances en HPC Quantification d incertitude et Tendances en HPC Laurence Viry E cole de Physique des Houches 7 Mai 2014 Laurence Viry Tendances en HPC 7 Mai 2014 1 / 47 Contents 1 Mode lisation, simulation et quantification

Plus en détail

Une bibliothèque de templates pour CUDA

Une bibliothèque de templates pour CUDA Une bibliothèque de templates pour CUDA Sylvain Collange, Marc Daumas et David Defour Montpellier, 16 octobre 2008 Types de parallèlisme de données Données indépendantes n threads pour n jeux de données

Plus en détail

Segmentation d'images à l'aide d'agents sociaux : applications GPU

Segmentation d'images à l'aide d'agents sociaux : applications GPU Segmentation d'images à l'aide d'agents sociaux : applications GPU Richard MOUSSA Laboratoire Bordelais de Recherche en Informatique (LaBRI) - UMR 5800 Université de Bordeaux - France Laboratoire de recherche

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

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU Gabriel Antoine Louis Paillard Ce travail a eu le soutien de la CAPES, agence brésilienne pour

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

Conception des systèmes répartis

Conception des systèmes répartis Conception des systèmes répartis Principes et concepts Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Octobre 2012 Gérard Padiou Conception des systèmes répartis 1 / 37 plan

Plus en détail

Métriques de performance pour les algorithmes et programmes parallèles

Métriques de performance pour les algorithmes et programmes parallèles Métriques de performance pour les algorithmes et programmes parallèles 11 18 nov. 2002 Cette section est basée tout d abord sur la référence suivante (manuel suggéré mais non obligatoire) : R. Miller and

Plus en détail

Tests de performance du matériel

Tests de performance du matériel 3 Tests de performance du matériel Après toute la théorie du dernier chapitre, vous vous demandez certainement quelles sont les performances réelles de votre propre système. En fait, il y a plusieurs raisons

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

Limitations of the Playstation 3 for High Performance Cluster Computing

Limitations of the Playstation 3 for High Performance Cluster Computing Introduction Plan Limitations of the Playstation 3 for High Performance Cluster Computing July 2007 Introduction Plan Introduction Intérêts de la PS3 : rapide et puissante bon marché L utiliser pour faire

Plus en détail

Ebauche Rapport finale

Ebauche Rapport finale Ebauche Rapport finale Sommaire : 1 - Introduction au C.D.N. 2 - Définition de la problématique 3 - Etat de l'art : Présentatio de 3 Topologies streaming p2p 1) INTRODUCTION au C.D.N. La croissance rapide

Plus en détail

Eléments d architecture des machines parallèles et distribuées

Eléments d architecture des machines parallèles et distribuées M2-RISE - Systèmes distribués et grille Eléments d architecture des machines parallèles et distribuées Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle Notions d architecture

Plus en détail

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique Architecture d ordinateur : introduction Dimitri Galayko Introduction à l informatique, cours 1 partie 2 Septembre 2014 Association d interrupteurs: fonctions arithmétiques élémentaires Elément «NON» Elément

Plus en détail

Outil d aide au choix Serveurs Lot 4 Marché Groupement de Recherche

Outil d aide au choix Serveurs Lot 4 Marché Groupement de Recherche Outil d aide au choix Serveurs Lot 4 Marché Groupement de Recherche Serveurs DELL PowerEdge Tour Rack standard R310 T110II Rack de calcul Lames R815 M610 R410 R910 M620 R415 R510 T620 R620 R720/R720xd

Plus en détail

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE I N T E RS Y S T E M S INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE David Kaaret InterSystems Corporation INTERSySTEMS CAChé CoMME ALTERNATIvE AUx BASES de données RéSIdENTES

Plus en détail

High Performance by Exploiting Information Locality through Reverse Computing. Mouad Bahi

High Performance by Exploiting Information Locality through Reverse Computing. Mouad Bahi Thèse High Performance by Exploiting Information Locality through Reverse Computing Présentée et soutenue publiquement le 21 décembre 2011 par Mouad Bahi pour l obtention du Doctorat de l université Paris-Sud

Plus en détail

Les mésocentres HPC àportée de clic des utilisateurs industriels

Les mésocentres HPC àportée de clic des utilisateurs industriels Les mésocentres HPC àportée de clic des utilisateurs industriels Université de Reims Champagne-Ardenne (URCA) Centre de Calcul ROMEO Multidisciplinary university more than 22 000 students a wide initial

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

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

Exécutif temps réel Pierre-Yves Duval (cppm)

Exécutif temps réel Pierre-Yves Duval (cppm) Exécutif temps réel Pierre-Yves Duval (cppm) Ecole d informatique temps réel - La Londes les Maures 7-11 Octobre 2002 Plan Exécutif Tâches Evénements et synchronisation Partage de ressources Communications

Plus en détail

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France. La NP-complétude Johanne Cohen PRISM/CNRS, Versailles, France. Références 1. Algorithm Design, Jon Kleinberg, Eva Tardos, Addison-Wesley, 2006. 2. Computers and Intractability : A Guide to the Theory of

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

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

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1 INF6500 : Structures des ordinateurs Sylvain Martel - INF6500 1 Cours 4 : Multiprocesseurs Sylvain Martel - INF6500 2 Multiprocesseurs Type SISD SIMD MIMD Communication Shared memory Message-passing Groupe

Plus en détail

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants : GIF-3002 SMI et Architecture du microprocesseur Ce cours discute de l impact du design du microprocesseur sur le système entier. Il présente d abord l architecture du cœur ARM Cortex M3. Ensuite, le cours

Plus en détail

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2) Objectifs du cours d aujourd hui Informatique II : Cours d introduction à l informatique et à la programmation objet Complexité des problèmes Introduire la notion de complexité d un problème Présenter

Plus en détail

La fonction exponentielle

La fonction exponentielle DERNIÈRE IMPRESSION LE 2 novembre 204 à :07 La fonction exponentielle Table des matières La fonction exponentielle 2. Définition et théorèmes.......................... 2.2 Approche graphique de la fonction

Plus en détail

Parallélisme et Répartition

Parallélisme et Répartition Parallélisme et Répartition Master Info Françoise Baude Université de Nice Sophia-Antipolis UFR Sciences Département Informatique baude@unice.fr web du cours : deptinfo.unice.fr/~baude Septembre 2009 Chapitre

Plus en détail

REALISATION d'un. ORDONNANCEUR à ECHEANCES

REALISATION d'un. ORDONNANCEUR à ECHEANCES REALISATION d'un ORDONNANCEUR à ECHEANCES I- PRÉSENTATION... 3 II. DESCRIPTION DU NOYAU ORIGINEL... 4 II.1- ARCHITECTURE... 4 II.2 - SERVICES... 4 III. IMPLÉMENTATION DE L'ORDONNANCEUR À ÉCHÉANCES... 6

Plus en détail

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Chapitre V : La gestion de la mémoire Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping Introduction Plusieurs dizaines de processus doivent se partager

Plus en détail

Cluster High Availability. Holger Hennig, HA-Cluster Specialist

Cluster High Availability. Holger Hennig, HA-Cluster Specialist Cluster High Availability Holger Hennig, HA-Cluster Specialist TABLE DES MATIÈRES 1. RÉSUMÉ...3 2. INTRODUCTION...4 2.1 GÉNÉRALITÉS...4 2.2 LE CONCEPT DES CLUSTERS HA...4 2.3 AVANTAGES D UNE SOLUTION DE

Plus en détail

Introduction au calcul parallèle avec OpenCL

Introduction au calcul parallèle avec OpenCL Introduction au calcul parallèle avec OpenCL Julien Dehos Séminaire du 05/01/2012 Sommaire Introduction Le calculateur du CGR/LISIC/LMPA Généralités sur OpenCL Modèles Programmation Optimisation Conclusion

Plus en détail

Séminaire RGE REIMS 17 février 2011

Séminaire RGE REIMS 17 février 2011 Séminaire RGE REIMS 17 février 2011 ADACSYS Présentation des FPGA Agenda Spécificité et différences par rapport aux autres accélérateurs Nos atouts Applications Approche innovante Document confidentiel

Plus en détail

<Insert Picture Here> Solaris pour la base de donnés Oracle

<Insert Picture Here> Solaris pour la base de donnés Oracle Solaris pour la base de donnés Oracle Alain Chéreau Oracle Solution Center Agenda Compilateurs Mémoire pour la SGA Parallélisme RAC Flash Cache Compilateurs

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

Les environnements de calcul distribué

Les environnements de calcul distribué 2 e Atelier CRAG, 3 au 8 Décembre 2012 Par Blaise Omer YENKE IUT, Université de Ngaoundéré, Cameroun. 4 décembre 2012 1 / 32 Calcul haute performance (HPC) High-performance computing (HPC) : utilisation

Plus en détail

RÉALISATION D UN SITE DE RENCONTRE

RÉALISATION D UN SITE DE RENCONTRE RÉALISATION D UN SITE DE RENCONTRE Par Mathieu COUPE, Charlène DOUDOU et Stéphanie RANDRIANARIMANA Sous la coordination des professeurs d ISN du lycée Aristide Briand : Jérôme CANTALOUBE, Laurent BERNARD

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite

Plus en détail

Annexe 6. Notions d ordonnancement.

Annexe 6. Notions d ordonnancement. Annexe 6. Notions d ordonnancement. APP3 Optimisation Combinatoire: problèmes sur-contraints et ordonnancement. Mines-Nantes, option GIPAD, 2011-2012. Sophie.Demassey@mines-nantes.fr Résumé Ce document

Plus en détail

Application de K-means à la définition du nombre de VM optimal dans un cloud

Application de K-means à la définition du nombre de VM optimal dans un cloud Application de K-means à la définition du nombre de VM optimal dans un cloud EGC 2012 : Atelier Fouille de données complexes : complexité liée aux données multiples et massives (31 janvier - 3 février

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail

Partie 7 : Gestion de la mémoire

Partie 7 : Gestion de la mémoire INF3600+INF2610 Automne 2006 Partie 7 : Gestion de la mémoire Exercice 1 : Considérez un système disposant de 16 MO de mémoire physique réservée aux processus utilisateur. La mémoire est composée de cases

Plus en détail

Gestion mémoire et Représentation intermédiaire

Gestion mémoire et Représentation intermédiaire Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,

Plus en détail

Version de novembre 2012, valable jusqu en avril 2013

Version de novembre 2012, valable jusqu en avril 2013 Pré requis techniques pour l installation du logiciel complet de gestion commerciale WIN GSM en version hyper File en configuration Windows Terminal Serveur Version de novembre 2012, valable jusqu en avril

Plus en détail

HPC by OVH.COM. Le bon calcul pour l innovation OVH.COM

HPC by OVH.COM. Le bon calcul pour l innovation OVH.COM 4 HPC by OVH.COM Le bon calcul pour l innovation 2 6 5 6 2 8 6 2 OVH.COM 5 2 HPC by OVH.COM 6 HPC pour High Performance Computing Utilisation de serveurs et de grappes de serveurs (clusters), configurés

Plus en détail

Systèmes et traitement parallèles

Systèmes et traitement parallèles Systèmes et traitement parallèles Mohsine Eleuldj Département Génie Informatique, EMI eleuldj@emi.ac.ma 1 Système et traitement parallèle Objectif Etude des architectures parallèles Programmation des applications

Plus en détail

Retour d expérience, portage de code Promes dans le cadre de l appel à projets CAPS-GENCI

Retour d expérience, portage de code Promes dans le cadre de l appel à projets CAPS-GENCI , portage de code Promes dans le cadre de l appel à projets CAPS-GENCI PROMES (UPR 8521 CNRS) Université de Perpignan France 29 juin 2011 1 Contexte 2 3 4 Sommaire Contexte 1 Contexte 2 3 4 Laboratoire

Plus en détail

Programmation Par Contraintes

Programmation Par Contraintes Programmation Par Contraintes Cours 2 - Arc-Consistance et autres amusettes David Savourey CNRS, École Polytechnique Séance 2 inspiré des cours de Philippe Baptiste, Ruslan Sadykov et de la thèse d Hadrien

Plus en détail

Programmation parallèle et distribuée (Master 1 Info 2015-2016)

Programmation parallèle et distribuée (Master 1 Info 2015-2016) Programmation parallèle et distribuée (Master 1 Info 2015-2016) Hadoop MapReduce et HDFS Note bibliographique : ce cours est largement inspiré par le cours de Benjamin Renaut (Tokidev SAS) Introduction

Plus en détail

CH.3 SYSTÈMES D'EXPLOITATION

CH.3 SYSTÈMES D'EXPLOITATION CH.3 SYSTÈMES D'EXPLOITATION 3.1 Un historique 3.2 Une vue générale 3.3 Les principaux aspects Info S4 ch3 1 3.1 Un historique Quatre générations. Préhistoire 1944 1950 ENIAC (1944) militaire : 20000 tubes,

Plus en détail

SIGAMM/CRIMSON COMMISSION UTILISATEUR du 05/12/2014

SIGAMM/CRIMSON COMMISSION UTILISATEUR du 05/12/2014 SIGAMM/ COMMISSION UTILISATEUR du 05/12/2014 ORDRE DU JOUR : - Rôle de la commission, - Présentation de la nouvelle plateforme, - Accès Mésocentre, - Point sur les problèmes rencontrés, - Propositions

Plus en détail

Enseignant: Lamouchi Bassem Cours : Système à large échelle et Cloud Computing

Enseignant: Lamouchi Bassem Cours : Système à large échelle et Cloud Computing Enseignant: Lamouchi Bassem Cours : Système à large échelle et Cloud Computing Les Clusters Les Mainframes Les Terminal Services Server La virtualisation De point de vue naturelle, c est le fait de regrouper

Plus en détail

Concours interne d ingénieur des systèmes d information et de communication. «Session 2010» Meilleure copie "étude de cas architecture et systèmes"

Concours interne d ingénieur des systèmes d information et de communication. «Session 2010» Meilleure copie étude de cas architecture et systèmes Concours interne d ingénieur des systèmes d information et de communication «Session 2010» Meilleure copie "étude de cas architecture et systèmes" Note obtenue : 14,75/20 HEBERGE-TOUT Le 25 mars 2010 A

Plus en détail

IV- Comment fonctionne un ordinateur?

IV- Comment fonctionne un ordinateur? 1 IV- Comment fonctionne un ordinateur? L ordinateur est une alliance du hardware (le matériel) et du software (les logiciels). Jusqu à présent, nous avons surtout vu l aspect «matériel», avec les interactions

Plus en détail

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

Plus en détail

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes Fabienne.Boyer@imag.fr

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes Fabienne.Boyer@imag.fr Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes Fabienne.Boyer@imag.fr 1- Structure d un disque 2- Ordonnancement des requêtes 3- Gestion du disque - formatage - bloc d amorçage - récupération

Plus en détail

Journée Utiliateurs 2015. Nouvelles du Pôle ID (Informatique) Pierre Neyron, LIG/CNRS

Journée Utiliateurs 2015. Nouvelles du Pôle ID (Informatique) Pierre Neyron, LIG/CNRS Journée Utiliateurs 2015 Nouvelles du Pôle ID (Informatique) Pierre Neyron, LIG/CNRS 1 Pôle ID, Grid'5000 Ciment Une proximité des platesformes Autres sites G5K Grenoble + CIMENT Pôle ID = «Digitalis»

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

Programmation par contraintes. Laurent Beaudou

Programmation par contraintes. Laurent Beaudou Programmation par contraintes Laurent Beaudou On se trouve où? Un problème, une solution : la solution est-elle une solution du problème? simulation, vérification 2 On se trouve où? Un problème, une solution

Plus en détail

Chapitre 4 : Les mémoires

Chapitre 4 : Les mémoires 1. Introduction: Chapitre 4 : Les mémoires Nous savons que dans un ordinateur toutes les informations : valeur numérique, instruction, adresse, symbole (chiffre, lettre,... etc.) sont manipulées sous une

Plus en détail

4.2 Unités d enseignement du M1

4.2 Unités d enseignement du M1 88 CHAPITRE 4. DESCRIPTION DES UNITÉS D ENSEIGNEMENT 4.2 Unités d enseignement du M1 Tous les cours sont de 6 ECTS. Modélisation, optimisation et complexité des algorithmes (code RCP106) Objectif : Présenter

Plus en détail

Francis BISSON (06 794 819) Kenny CÔTÉ (06 836 427) Pierre-Luc ROGER (06 801 883) IFT702 Planification en intelligence artificielle

Francis BISSON (06 794 819) Kenny CÔTÉ (06 836 427) Pierre-Luc ROGER (06 801 883) IFT702 Planification en intelligence artificielle Francis BISSON (06 794 819) Kenny CÔTÉ (06 836 427) Pierre-Luc ROGER (06 801 883) PLANIFICATION DE TÂCHES DANS MS PROJECT IFT702 Planification en intelligence artificielle Présenté à M. Froduald KABANZA

Plus en détail

Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales

Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales Cécile Cavet cecile.cavet at apc.univ-paris7.fr Centre François Arago (FACe), Laboratoire

Plus en détail

Contributions à l expérimentation sur les systèmes distribués de grande taille

Contributions à l expérimentation sur les systèmes distribués de grande taille Contributions à l expérimentation sur les systèmes distribués de grande taille Lucas Nussbaum Soutenance de thèse 4 décembre 2008 Lucas Nussbaum Expérimentation sur les systèmes distribués 1 / 49 Contexte

Plus en détail

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Jade. Projet Intelligence Artificielle «Devine à quoi je pense» Jade Projet Intelligence Artificielle «Devine à quoi je pense» Réalisé par Djénéba Djikiné, Alexandre Bernard et Julien Lafont EPSI CSII2-2011 TABLE DES MATIÈRES 1. Analyse du besoin a. Cahier des charges

Plus en détail

Programmation linéaire

Programmation linéaire 1 Programmation linéaire 1. Le problème, un exemple. 2. Le cas b = 0 3. Théorème de dualité 4. L algorithme du simplexe 5. Problèmes équivalents 6. Complexité de l Algorithme 2 Position du problème Soit

Plus en détail

Stratégie de recherche adaptative en programmation par contrainte

Stratégie de recherche adaptative en programmation par contrainte Université Paul Sabatier École Nationale de l Aviation Civile Master 2 Recherche Informatique et Télécommunication parcours Intelligence Artificielle Simon Marchal Stratégie de recherche adaptative en

Plus en détail

La mémoire. Un ordinateur. L'octet. Le bit

La mémoire. Un ordinateur. L'octet. Le bit Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve

Plus en détail

Système de Gestion de Fichiers

Système de Gestion de Fichiers Chapitre 2 Système de Gestion de Fichiers Le système de gestion de fichiers est un outil de manipulation des fichiers et de la structure d arborescence des fichiers sur disque et a aussi le rôle sous UNIX

Plus en détail

Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs. Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle

Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs. Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle 1 CEA R & D for Nuclear Energy 5 000 people Nuclear systems

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

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

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

Détection d'intrusions en environnement haute performance

Détection d'intrusions en environnement haute performance Symposium sur la Sécurité des Technologies de l'information et des Communications '05 Détection d'intrusions en environnement haute performance Clusters HPC Fabrice Gadaud (fabrice.gadaud@cea.fr) 1 Sommaire

Plus en détail

Transmission d informations sur le réseau électrique

Transmission d informations sur le réseau électrique Transmission d informations sur le réseau électrique Introduction Remarques Toutes les questions en italique devront être préparées par écrit avant la séance du TP. Les préparations seront ramassées en

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Evaluation des performances de programmes parallèles haut niveau à base de squelettes

Evaluation des performances de programmes parallèles haut niveau à base de squelettes Evaluation des performances de programmes parallèles haut niveau à base de squelettes Enhancing the Performance Predictability of Grid Applications with Patterns and Process Algebras A. Benoit, M. Cole,

Plus en détail

Communications performantes par passage de message entre machines virtuelles co-hébergées

Communications performantes par passage de message entre machines virtuelles co-hébergées Communications performantes par passage de message entre machines virtuelles co-hébergées François Diakhaté1,2 1 CEA/DAM Île de France 2 INRIA Bordeaux Sud Ouest, équipe RUNTIME Renpar 2009 1 Plan Introduction

Plus en détail

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Recherche opérationnelle Les démonstrations et les exemples seront traités en cours Souad EL Bernoussi Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Table des matières 1 Programmation

Plus en détail

1 Mesure de la performance d un système temps réel : la gigue

1 Mesure de la performance d un système temps réel : la gigue TP TR ENSPS et MSTER 1 Travaux Pratiques Systèmes temps réel et embarqués ENSPS ISV et Master TP1 - Ordonnancement et communication inter-processus (IPC) Environnement de travail Un ordinateur dual-core

Plus en détail

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est: Travaux Pratiques 3. IFT 1002/IFT 1005. Structure Interne des Ordinateurs. Département d'informatique et de génie logiciel. Université Laval. Hiver 2012. Prof : Bui Minh Duc. Tous les exercices sont indépendants.

Plus en détail

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1 Exemples de problèmes et d applications INF6953 Exemples de problèmes Sommaire Quelques domaines d application Quelques problèmes réels Allocation de fréquences dans les réseaux radio-mobiles Affectation

Plus en détail

Résolution de systèmes linéaires par des méthodes directes

Résolution de systèmes linéaires par des méthodes directes Résolution de systèmes linéaires par des méthodes directes J. Erhel Janvier 2014 1 Inverse d une matrice carrée et systèmes linéaires Ce paragraphe a pour objet les matrices carrées et les systèmes linéaires.

Plus en détail

Qualité du logiciel: Méthodes de test

Qualité du logiciel: Méthodes de test Qualité du logiciel: Méthodes de test Matthieu Amiguet 2004 2005 Analyse statique de code Analyse statique de code Étudier le programme source sans exécution Généralement réalisée avant les tests d exécution

Plus en détail

I00 Éléments d architecture

I00 Éléments d architecture I00 I Exemples d ordinateur Pour les informaticiens, différentes machines de la vie courante sont des ordinateurs : par exemple les ordinateurs portables, les ordinateurs fixes, mais aussi les supercalculateurs,

Plus en détail

MEAD : temps réel et tolérance aux pannes pour CORBA

MEAD : temps réel et tolérance aux pannes pour CORBA MEAD : un intergiciel temps-réel et tolérant aux pannes pour CORBA Master 2 Informatique Recherche Université de Marne-la-Vallée Vendredi 3 mars 2006 Plan 1 Introduction 2 Solutions existantes 3 Concilier

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail