20 Novembre 2014 – Virtualisation en contexte HPC
Présentation par: Antoine Capra, doctorant au CEA
Résumé
Les systèmes informatiques doivent aujourd’hui s’adapter à une demande variée aussi bien en terme de classes d’utilisateurs qu’en termes d’usages. Pour faire face à cette hétérogénéité, la virtualisation s’est imposée dans des domaines variés tels que la consolidation de serveurs ou l’informatique en nuage (cloud-computing). Pour autant, l’abstraction supplémentaire induite par les machines virtuelles entraîne en pratique une perte de performance lors de l’exécution séquentielle ou parallèle d’un programme. Cette dernière remarque explique l’absence de virtualisation dans un contexte comme celui du High Performance Computing (HPC).
Après une courte introduction à la virtualisation et ses bonnes pratiques, Antoine Capra présentera les deux pistes de recherche étudiées pendant sa thèse: Négociation transparente de ressources entre applications OpenMP concurrentes et implémentation d’un périphérique virtuel dédié au MPI.
27 Novembre 2014 – Malloc Tracker (MALT)
Présentation par: Sébastien Valat, ingénieur au Laboratoire Exascale Computing Research
Résumé
Alors que la mémoire disponible par cœur de calcul à tendance à diminuer, il est important de pouvoir profiler finement la consommation mémoire des applications.
C’est dans ce contexte que l’outil de profilage mémoire MALT (Malloc Tracker) a été développé. Cet outil a pour but de fournir un profil de la consommation mémoire de l’application.
L’outil applique la philosophie d’approche des outils de type valgrind + kcachegrind aux problématiques de consommation mémoire. Il permet de fournir aux utilisateurs une vision globale et temporelle de la quantité de mémoire utillisée, mais aussi une projection sur le code source de la consommation mémoire. Cet outil prend en compte les allocations dynamiques, les variables globales et les TLS. Les profils sont présentés dans une GUI basée sur HTML/Javascript.
04 Décembre 2014 – Multi-Application Online Profiling (MALP)
Présentation par:Jean-Baptiste Besnard, ingénieur à Paratools SAS
Résumé
L’évolution rapide des super-calculateurs couplée à la complexité des codes de simulation pose de réelles problématiques d’évolutivité des codes de calcul.
Dans ce contexte, ce travail se concentre sur l’analyse du couplage code-machine en présentant l’outil MALP, développé au CEA-DAM dans le cadre d’une thèse, qui fournit une infrastructure de profilage en ligne.
Plus que l’aspect profilage en lui-même, l’originalité de MALP est d’aborder différemment la problématique de gestion des données en allouant explicitement des ressources couplées à l’application instrumentée.
Dans un premier temps, Jean-Baptiste présentera l’outil et ses fonctionnalités (profilage, analyses temporelles, analyses topologiques). Ensuite, une description des évolutions de l’infrastructure de mesure depuis un format de trace dédié vers une approche « en-ligne » sera faite. La conclusion de cette présentation proposera quelques exemples prospectifs d’utilisation d’une telle architecture dans la gestion des données d’une chaine de simulation (délégation d’IO, analyse in-situ, tolérance aux panne
Biographie
Jean-Baptiste BESNARD a fait sa dernière année d’école d’ingénieur (en alternance) puis sa thèse au CEA-DAM sur les problématiques de profilage et déboggage des applications massivement parallèles — travail qui a mené au développement de l’outil MALP. Il travaille maintenant chez ParaTools SAS, société spécialisée en consulting HPC, et participe au développement de TAU, l’un des outils de référence pour le profilage d’applications HPC.
11 Décembre 2014 – PMem : un outil de placement mémoire multi-niveau
Présentation par: Rémi Barat, doctorant au CEA
Résumé
L’apparition de processeurs manycore permet d’exposer une grande quantité de unités de calcul. Mais cette mise à disposition de performance requiert une bande passante mémoire plus importante. C’est pourquoi les prochaines architectures proposeront plusieurs niveaux mémoire : (i) un niveau avec une quantité de stockage limitée, mais une importante bande passante et (ii) un niveau avec une grande quantité de stockage et une bande passante réduite. Chaque application doit alors s’adapter pour exploiter ces différentes mémoires pour alimenter les unités de calcul.
Dans cette présentation, nous proposons un nouvel outil nommé PMem qui permet de classer les allocations dynamiques d’un code en fonction de leur besoin en bande passante. Ainsi, cet outil liste les tableaux qui pourraient bénéficier de la mémoire dite ‘rapide’. PMem se base sur l’instrumentation mémoire (load, store) pour caractériser les tableaux dans les régions parallèles OpenMP.
08 Janvier 2015 – EZTrace : a framework for performance analysis
Présentation par: François Trahay, maître de conférence à Télécom SudParis
Résumé
Exploiter de manière efficace un calculateur est une tâche difficile. Les récents changement dans l’architecture des machines (accélérateurs, processeurs multicores, caches hiérarchiques, etc.) ainsi que le développement de modèles de programmation hybrides (MPI+OpenMP, MPI+CUDA, etc.) rendent l’optimisation d’un programme très difficile pour le développeur.
EZTrace est une plate-forme pour l’analyse de performance qui fournit un moyen simple de comprendre les performances d’une application parallèle. EZTrace fournit un ensemble de plugins (MPI, OpenMP, CUDA, pthread, etc.) permettant de collecter et analyser des traces d’exécution. Ce système de plugin permet également le développement de plugins spécifiques à des applications ou librairies tierces.
Biographie
François Trahay est maître de conférence à Télécom SudParis? (Evry) depuis 2011. Après un doctorat à INRIA Bordeaux, il a rejoint l’équipe High Performance Systems à Télécom SudParis?. Ses travaux portent sur l’analyse de performance et les runtime pour le HPC
15 janvier 2015 – Perfsuite
Présentation par: Augustin Serraz, ingénieur au Laboratoire Exascale Computing research
Résumé
L’intégration continue est un ensemble de pratiques permettant de valider l’ajout ou la modification d’un code existant. Pour vérifier l’état de chaque fonctionnalité après une modification, les codes s’accompagnent d’un ensemble de tests, appelé Test-suite. Parmi ces tests, certains sont aussi lancés pour vérifier les performances de certaines fonctionnalités. Vérifier les régressions de ces performances entre deux exécutions de la Test-suite est assez fastidieux, d’autant plus lorsqu’il y a de nombreux tests, ce qui est souvent le cas.
PerfSuite? a été créé dans le but de récupérer les performances évaluées par les benchmarks de manière simple. L’utilisateur peut détecter les éventuelles baisses de performance entre deux exécutions de la Test-suite, et ainsi vérifier que la modification du code n’entraîne pas de perte de performance. PerfSuite? fournit un rapport de régression sur les variables choisies par l’utilisateur, ainsi qu’un générateur de courbes afin de comparer différentes variables (timing, vitesse de transfert, etc), et dans différentes configurations (nombre de threads OpenMP, nombre de tâches MPI).
Biographie
Augustin Serraz travaille en tant qu’ingénieur au laboratoire Exascale Computing Research. Après un Master dans le domaine du HPC à l’université de Versailles, puis à Centrale Paris, il rejoint fin 2012 le laboratoire Exascale Computing Research en tant qu’ingénieur. Ses travaux portent sur la robustesse et l’amélioration du framework MPC.
22 Janvier 2015 – CQA
Présentation par: Emmanuel Oseret, ingénieur de recherche au Laboratoire Exascale Computing research
Résumé
Efficiency (ratio between peak and effective computational throughput) of HPC applications on supercomputers is very low (typicaly 5%) and decreasing over years, due to reduced scalability and single-core efficiency. Increasing single-core efficiency allows to run on less cores (critical today since limited resource on supercomputers and scalability is decreasing with more cores etc).
CQA, Code Quality Analyzer, is a MAQAO tool that statically analyze the quality of your application at binary level. It provides both low-level metrics and human understandable reports allowing the user to optimize his application by applying some transformations on innermost loops (at source level) and using better compiler flags. MAQAO is a framework developped at UVSQ providing performance analysis at binary level.
Biographie
Emmanuel Oseret est ingénieur de recherche au laboratoire Exascale Computing Research depuis 2010. Après un doctorat à l’Université de Versailles-St-Quentin-En-Yvelines (UVSQ), il devient ingénieur de recherche, d’abord à l’UVSQ, puis au laboratoire Exascale Computing Research. Il y a développé CQA, un module de MAQAO évaluant statiquement la qualité d’un code binaire. Ses travaux portent sur la méthodologie et les outils d’analyse de code.
29 janvier 2015 – Partitionnement de maillages sous contraintes d’occupation mémoire
Présentation par: Sebastien Morais, doctorant au CEA
Résumé
Dans de nombreux domaines scientifiques, la taille et la complexité des simulations numériques sont si importantes qu’il est souvent nécessaire d’utiliser des supercalculateurs à mémoire distribuée. Les données de la simulation ainsi que les traitements sont alors répartis sur différentes unités de calculs. Cette répartition est cruciale : elle doit minimiser le coût de calcul des traitements à effectuer tout en assurant que les données nécessaires à chaque unité de calcul puissent être stockées localement en mémoire.
Habituellement, les données des calculs sont attachées à ce que l’on appelle un maillage, c’est-à-dire une décomposition du domaine en éléments géométriques simples qu’on appelle les mailles. Les calculs à effectuer sont alors le plus souvent répartis par mailles et la distribution des calculs correspond alors à un partitionnement du maillage. Dans un contexte de simulation numérique, de types éléments ou volumes finis, la réalisation du calcul associé à une maille peut nécessiter des informations, portées par des mailles voisines, qui doivent être mémorisées localement par l’unité de calcul.
Nous nous proposons donc d’étudier le problème du partitionnement de maillage, respectant l’espace de stockage de chaque unité de calcul ainsi que le besoin d’information lié au voisinage, minimisant le temps de calcul de la simulation.
05 février 2015 – Transformations de programme pour la vectorisation de code irrégulier
Présentation par: Camille Gallet, doctorant au CEA
Résumé
Les évolutions récentes des supercalculateurs ont mis en avant l’apparition d’architectures de processeurs massivement parallèle « manycore ». Historiquement, les puces graphiques spécialisées (GPGPU NVIDIA et ATI) furent les premières à proposer un grand nombre de cœurs de calcul pour une puissance de calcul crête élevée. Depuis quelques années, Intel a conçu une solution en suivant un autre axe : la conception d’une puce massivement parallèle, le Xeon Phi, héritant à la fois des CPU “classique” d’Intel Xeon, et à la fois des GPGPUs.
Pour exploiter ces architectures de manière optimale, il est devenu nécessaire de mélanger plusieurs niveaux de parallélisme, incluant un parallélisme de données au niveau instruction : la vectorisation. Mais l’irrégularité des codes de calcul scientifiques actuels rend difficile l’application automatique de la vectorisation par le compilateur.
Nous nous proposons d’aborder l’étude d’une technique pour faciliter l’activation de la vectorisation dans un code irréguli
05 Mars 2015 – JCHRONOSS
Présentation par: Julien Adam, apprenti au CEA
Résumé
La tendance du Calcul Haute Performance (HPC) est à l’accroissement toujours plus important de la puissance de calcul. L’exploitation efficace de ces architectures parallèles est un véritable défi et reste un des enjeux majeurs dans de nombreux secteurs comme dans le domaine du calcul scientifique. Ainsi, de nombreux projets de recherche ont vu le jour pour tenter de dompter cette nouvelle force en mettant en place des méthodes innovantes.
Dans tout projet bien structuré, un passage par une phase de validation est indispensable afin de vérifier la conformité du produit aux résultats attendus. Or, dans le contexte spécifique du calcul parallèle, cette tâche se trouve rendue difficile du fait des contraintes particulières et des architectures complexes rencontrées dans le domaine du Calcul Haute Performance. Les solutions standards peinent à se confronter à ces problèmes et à y apporter des solutions viables, notamment, à propos du passage à l’échelle.
Ce que nous nous proposons d’apporter ici est un moteur de validation ayant les traits d’un véritable contrôleur qualité, sachant par ailleurs interagir intelligemment avec l’environnement spécifique nécessaire au calcul parallèle. Notre méthode d’approche se base sur la prise de conscience au sein même du moteur de validation, des concepts inhérents au HPC. En tenant compte de ces problématiques, nous sommes capables de mieux apprécier les différents besoins fonctionnels d’un supercalculateur et donc de répartir la charge de travail efficacement sur celui–ci. Grâce à plusieurs politiques algorithmiques, nous sommes, par ailleurs, en mesure d’adapter notre comportement afin d’offrir plus de souplesse au système, et ainsi garantir la rentabilisation des ressources disponibles.
19 Mars 2015 – MAQAO
Présentation par: Andres Charrif-Rubial, Ingenieur a Exascale Computing Research
Résumé
MAQAO (Modular Assembly Quality Analyzer and Optimizer) is a performance analysis and optimization tool suite targeting binary applications (no recompilation). The main goal of MAQAO is to analyse binary codes and provide application developers with synthetic reports in order to help them optimize their code.
We will first present our profiler PerfEval? which features both a runtime-agnostic mode and a MPI oriented mode. Finally we will show how the CQA tool can help optimizing loop
Biographie
Dr. Andres S. Charif-Rubial is currently the head of the performance evaluation team at the Exascale computing research laboratory which is mainly focused on software exascale research and on exascale application development. He has been working on the development of the MAQAO toolsuite to better understand the performance issues of single and multinode HPC applications.
26 Mars 2015 – Ramasse-miette et problemes memoires NUMA
Présentation par: Gael Thomas, Professeur a Telecom SudParis?
Résumé
On contemporary cache-coherent Non-Uniform Memory Access (ccNUMA) architectures, applications with a large memory footprint suffer from the cost of the garbage collector (GC), because, as the GC scans the reference graph, it makes many remote memory accesses, saturating the interconnect between memory nodes.
We address this problem with NumaGiC, a GC with a mostly-distributed design. In order to maximise memory access locality during collection, a GC thread avoids accessing a different memory node, instead notifying a remote GC thread with a message; nonetheless, NumaGiC avoids the drawbacks of a pure distributed design, which tends to decrease parallelism.
We compare NumaGiC with Parallel Scavenge and NAPS on two different ccNUMA architectures running on the Hotspot Java Virtual Machine of OpenJDK 7. On Spark and Neo4j, two industry-strength analytics applications, with heap sizes ranging from 160GB to 350GB, and on SPECjbb2013 and SPECjbb2005, NumaGiC improves overall performance by up to 45% over NAPS (up to 94% over Parallel Scavenge), and increases the performance of the collector itself by up to 3.6× over NAPS (up to 5.4× over Parallel Scavenge)
Biographie
Gaël Thomas is professor at Telecom SudParis? since 2014. He is a member of the HP2 team of the computer science department, that investigates high-performance computing and systems. Since 2014, he is the treasurer of the french chapter of the ACM SIGOPS, after having been the chair from 2011 to 2014. His main research interests include operating systems, managed runtime environments and multicore programming.
02 Avril 2015 – Partitionnements de maillage : optimisation sous contrainte mémoire
Présentation par: Cédric Chevalier, ingénieur-chercheur au CEA
Résumé
Cet exposé présentera rapidement différentes techniques usuelles de partitionnement de maillage, en particulier à leurs utilisations sur des maillages aux localisations très irrégulières en coûts calcul et en poids mémoire.
L’impact du partitionnement de maillage sur le stockage en mémoire et les limitations des approches classiques pour des structures de données distribuées avec duplication de données (“fantômes”) seront particulièrement discutés.
Un modèle pour le partitionnement de maillage avec prise en compte explicite des mailles fantômes sera proposé et confronté aux modèles classiques.
09 Avril 2015 – Génération de code stencil depuis Latex
Présentation par: Sébastien Valat
Résumé
Les architectures modernes impliquent un parallélisme et une complexité croissante au niveau des codes de calculs. Ce contexte impose une collaboration étroite entre les informaticiens et les mathématiciens pour aboutir à des codes performants. Le projet présenté prend une approche de type DSL (Domain Spécific Language) permettant la génération d’un code depuis les équations Latex. Cette approche vise une séparation des responsabilités en exposant clairement les besoins du schéma dans une sémantique commune. L’objectif est alors d’aboutir à la génération automatique d’un rapport clair décrivant le schéma ainsi que d’un code parallèle MPI+Threads. La génération de code permet au mathématicien de ne pas se soucier des détails d’implémentation du parallélisme. De son côté, l’informaticien peut aisément explorer différentes représentations mémoires et mode de parallélisme. On peut ainsi explorer des choix importants impactant l’ensemble du code sans entrer dans des refactorings fastidieux.
Biographie
Sébastien Valat a suivi une formation initiale en physique des particules (master 2) pendant laquelle il a travaillé sur les expériences Opera et LHCb. Voulant compléter ce parcours par un cursus informatique, il poursuit avec une année de master 2 en Informatique et une thèse sur les allocateurs mémoire en contexte HPC. Il a terminé cette année un post-doc sur un outil de profilage des allocations mémoire (MALT) pour le laboratoire Exascale. Le projet qu’il nous propose est un travail annexe réalisé en parallèle de sa thèse au contact des collègues numériciens côtoyés au CEA.
16 Avril 2015 – Proto Application YALES 2
Présentation par: Vincent Moureau et Ghislain Lartigue, ingénieurs de recherche au CORIA (Université de Rouen) et Omar Awile et Thomas Guillet, ingénieurs à INTEL
Résumé
Deux membres du CORIA, Vincent Moureau et Ghislain Lartigue, nous ferons une présentation sur le thème « Development and optimisation of a massively parallel code for the modeling of low-Mach number turbulent flows in complex geometries ».
Ensuite, deux membres Intel du laboratoire Exascale Computing Research, Omar Awile et Thomas Guillet, nous parlerons de leur travail dans le projet Exa2ct : « Proto-applications in the EXA2CT project: towards application scalability optimization and prediction ».
23 Avril 2015 – Xeon Phi in High Throughput Data filtering applications
Présentation par: Przemysław Karpiński, Doctorant au CERN
Résumé
CERN experiments produce extremely large amounts of data. In order to decrease the amount of storage required, incoming data is processed in real-time fashion to filter out only most interesting events that occurred inside detectors. Planned modifications of LHC parameters and detector subsystems impose higher requirements on computational power of processing farms. Xeon Phi is one of candidate devices for increasing overall cost efficiency of processing farms. Exploiting full potential of the device requires extensive changes in existing software architectures and modifications in process of efficient software development.
ICE-DIP project is a collaboration between Intel and CERN created to explore and solve some of the problems existing in LHC data acquisition systems. One of the biggest problems in exploiting Xeon Phi is the need to utilise SIMD instructions. Efficient usage of vector instructions is crucial for high performance in both Xeon Phi and next generation of Xeon processors. Because of nature of SIMD vectorization, not all computing problems can achieve performance speedup.
Int this talk following topics will be discussed:
- Structure of CERN experiments, place of ICE-DIP in the experiments and role of computing at CERN
- efficiency of Xeon Phi: Knight’s Corner in comparison to AVX2 compatible Xeon microprocessor,
- explicit vectorization approach using multiple existing libraries: VC, VCL, and Boost::SIMD.
- new proposed methodology for future many-core devices programming using auto-tuning and compile-time performance tuning
Biographie
Przemysław Karpiński was born 1988 in Elbląg, Poland. He is a holder of Ms. Eng. degree in Control Engineering & Robotics from Gdansk University of Technology (GUT). He joined CERN as one of researchers in ICE-DIP project in 2013. Prior to that since 2010 he worked at Intel as a software engineer at Visual and Parallel Computing group and at Networking Division designing kernel drivers for Intel devices. His research interest lays on a cross-section of computer architectures, material science and artificial intelligence.
7 Mai 2015 – Sélection automatique du GPU le plus proche dans MPC
Présentation par: Hugo TABOADA, Stagiaire au CEA
Résumé
Les architectures des calculateurs modernes comportent de plus en plus d’accélérateurs. Il est maintenant habituel de trouver plusieurs GPUs attachés à un seul nœud de calcul. Les modèles de programmation permettant d’utiliser ces GPUs imposent au développeur de faire « à la main », via des appels de fonctions, la sélection du GPU sur lequel il veut travailler. La plupart du temps, le travail ne s’effectue que sur un seul GPU. Lorsque plusieurs GPUs sont mis à contribution , la répartition se fait de façon arbitraire son connaissance de la topologie. C’est en partant de ce constat que nous avons voulu tirer avantage de la connaissance de la topologie de la machine dans MPC pour affecter à chaque thread de calcul le GPU le plus proche. Hugo TABOADA nous présentera le travail effectué lors de son stage. Après avoir présenté le fonctionnement interne de la sélection d’un GPU en CUDA, et les différents outils nécessaire à cette sélection topologique, la solution choisie sera décrite. Des premiers tests montreront le fonctionnement des parties déjà implémentées.
Les sujets abordés lors de cette présentation seront :
- Sélection des GPUs dans le langage CUDA, et fonctionnement des « CUDA context »
- Détection de la topologie, incluant les accélérateurs, avec HWLOC
- Fonctionnement de l’ordonnanceur de threads MPC
- L’interaction de tous ces composants pour la détection du GPU le plus proche pour chaque thread
21 Mai 2015 – Génération de maillages hexaédriques pour la simulation numérique – Vers une solution automatique ?
Présentation par: Franck Ledoux, Ingénieur-Chercheur au CEA
Résumé
De nombreux codes de simulation requièrent de s’appuyer sur des maillages hexaédriques plutôt que des maillages tétraédriques. Les raisons généralement avancées sont qu’il faut moins d’hexaèdres que de tétraèdres pour « remplir » un domaine géométrique (à précision équivalent), que les hexaèdres sont moins rigides que les tétraèdres, que la structure topologique des maillages hexaédrique permet de mieux suivre des directions physiques (ondes de chocs, écoulement de fluide), etc. Toutes ces raisons sont discutables, et il existe aussi de bonnes raisons pour utiliser des maillages tétraédriques. En particulier, au contraire des maillages hexaédriques, il existe des méthodes automatiques et robustes pour générer des maillages tétraédriques pour n’importe quel domaine géométrique.
C’est cet aspect qui va m’intéresser dans cet exposé où je vais tenter d’expliquer pourquoi il est si difficile de générer des maillages hexaédriques et quelles sont les approches qui méritent d’être étudiées à l’avenir. Dans cet optique, je commencerai par expliquer quelles sont les caractéristiques usuellement attendues d’un maillage hexaédrique avant de dresser un panorama des principales approches développées pour générer un maillage hexaédrique automatiquement.
04 Juin 2015, Ter@tec, 10h – Répertoire de gestion à grain fin des données pour OpenMP 4.0 et OpenACC
Présentation par: Julien Jaeger, Ingénieur-Chercheur au CEA
Résumé
De nos jours, l’utilisation de plus en plus répandues des systèmes hétérogènes force un changement de paradigme dans les modèles de programmation. L’utilisation d’APIs de bas niveau pour la programmation des accélérateurs matériels est fastidieux et peu intuitive pour les programmeurs non-experts. Pour répondre à ce problème, de nombreuses approches se concentrent sur des modèles haut niveau à base de directives, avec un effort de standardisation effectué au travers des APIs OpenACC et OpenMP 4.0. Les directives pour la gestion des données s’occupent automatiquement des échanges de données entre l’hôte et les accélérateurs. Pour garder le support exécutif simple et efficace, d’importantes restrictions ont été mises en place, limitant les possibilités d’utilisation de ces directives.
Pour répondre à ses contraintes, nous proposons une solution à base de répertoire, accompagnée d’une ABI très simple, pour gérer correctement les mouvements de données dans les deux APIs. Nous montrerons ensuite que de petites améliorations nous permettent d’alléger ses contraintes et d’utiliser ses directives avec plus de flexibilités, tout en conservant un overhead faible (inférieur à 7%) lors de son utilisation. De plus, notre solution peut être utilisée dans un système exposant plusieurs accélérateurs attachés à un même hôte.
11 Juin 2015, Ter@tec, 10h – A solution to the challenges of disassembly and binary rewriting
Présentation par: Cédric Valensi, Ingénieur expert au Laboratoire Exascale Computing Research
Résumé
Performance analysis allows to identify whether applications make an optimal use of the systems on which they are executed. Analysis at the binary level offers a better accuracy, as it allows to identify which transformations were operated by the compiler on the source code. However, it presents specific challenges, as binary code usually contains only the minimal information required for executing the application. It is also not intended to be modified, while modifying an application can be useful to gain additional information available only at runtime.
We present here the challenges associated with the disassembly of binary code into the corresponding assembly code and our solutions in the context of the MADRAS disassembler, which is a base component of the MAQAO analysis framework.
We will also present the challenges associated with the binary rewriting of a compiled executable, and our solutions as implemented in the MADRAS patcher, which is used by MAQAO for instrumenting and modifying executables.
Biographie
Cédric Valensi holds a PhD in computer science at the University of Versailles St Quentin en Yvelines. He has been working since 2008 with the performance analysis team responsible for the development for MAQAO. His works include the MADRAS tool, which forms the binary layer of the MAQAO framework, and the MINJAG disassembler and assembler generator, which is used for generating the architecture-specific code of MADRAS.
18 Juin 2015, Ter@tec, 10h- Emerging GPGPU applications in sparse linear algebra and graph analysis
Présentation par: Alexandre Fender, Software Engineer à NVIDIA et Doctorant à la Maison de la Simualtion et à l’UVSQ
Résumé
– Algebraic Multigrid Accelerator: The solution of large sparse linear systems arises in many applications, such as computational fluid dynamics and oil reservoir simulation. In most realistic cases the matrices require large scale distributed parallel computing to obtain the solution of interest. In the first part of the presentation we will discuss the AmgX library, which provides drop-in GPU acceleration of distributed algebraic multigrid and preconditioned iterative methods.
– Graph Analytics: Graphs are everywhere and they are a powerful data model, however they are often so large and produced so fast that they are not analyzed in reasonable time. We do believe that GPUs might be a game changer in this area. Hence, in the second part we will present our ongoing efforts on graph analytics.
Biographie
Alexandre Fender holds a M.Sc in High Performance Computing from University Of Versailles & Ecole Central Paris. He is a Software Engineer at NVIDIA, in the CUDA libraries and algorithms team, where he works on emerging applications. Alex is also a PhD Candidate at Maison De La Simulation & PRiSM Laboratory at UVSQ and his research focus on improving the performance and scalability of graph analytics.
25 Juin 2015, Ter@tec, 10h – Validation partielle des applications parallèles sur supercalculateurs
Présentation par: Hugo Brunie, Stagiaire au CEA
Résumé
L’évolution des supercalculateurs incite aujourd’hui les utilisateurs à mélanger des modèles de programmation parallèle comme MPI et OpenMP. Ces évolutions ne facilitent pas le debuggage des applications parallèles.
Des outils ont été proposés afin de pallier ce problème. Cependant, ces outils sont généralement focalisés sur un type de modèle et permettent une vérification dite statique (à la compilation) ou dynamique (à l’exécution). Pourtant une combinaison statique/dynamique donnerait des informations plus pertinentes.PARCOACH est un plugin GCC développé au CEA qui détecte les erreurs dans les applications parallélisées avec MPI, OpenMP et MPI+OpenMP, combinant des analyses statiques et dynamiques. La vérification se fait en deux étapes. Premièrement, de potentielles erreurs sont détectées lors de la phase de compilation.
Ensuite, un test au runtime est ajouté pour savoir si le problème va réellement se produire. Grâce à ces analyses combinées, PARCOACH renvoie des messages précis aux utilisateurs et évite les situations de blocage.Actuellement, PARCOACH analyse un programme fonction par fonction, ce qui entraine des suppositions sur les codes à analyser.
L’objectif de ce stage est d’étendre les analyses de PARCOACH afin de lever ces suppositions. L’outil doit évoluer pour une gestion interprocédurale reposant sur des analyses de graphes. Une analyse statique du graphe de flot de controle (CFG) et du graphe d’appel (CG) permet de faire une analyse globale du code parallèle. La solution développée est à base de résumés, construits pour chaque fonction et instanciés à chaque site d’appel. Celle-ci est implémentée en python.
2 Juillet 2015, Ter@tec, 10h – Compiler/Runtime Cooperation for High-Performance Multi-Paradigm Parallelism
Présentation par: Patrick Carribault, Ingénieur-Chercheur au CEA
Résumé
The current evolution of high-end hardware architecture leads to interesting problems for computer-science research and industry. Since 2010, supercomputers reached the Petaflops threshold allowing a program to run at the speed of 10^15 floating-point operations per second. But during the last five years, various computer-architecture designs arose to prepare the next generation of clusters.
Indeed, the Exascale era (10^18 floating-point operations per second) is predicted to appear by the end of this decade or, at least, early after the 2020 horizon. Even if this goal is still years away, the time to prepare both the hardware and software environment is really short, especially if we take into account the effort to update the scientific applications accordingly and the time to train their developers. With this target in mind, this presentation discusses the research I conducted during the last 7 years about the possible evolutions for the software stack (compilers and runtime systems) aiming the Exascale target.
Based on the shift of hardware architecture (large number of cores and processing units, low amount of memory per core…), one way for scientific applications to reach the Exascale milestone is to extend the parallelism from MPI to MPI+X. For this purpose, the whole software environment should evolve too. Indeed, the underlying runtime systems of each programming model have to be aware of each other to deal with resource allocation (cores and different memories). Because mixing parallel programming can be a tough trial, the whole toolchain should help this transition from the compiler to the runtime. This presentation brings together our research on these challenges and makes the following contributions: (i) design of a unified MPI+OpenMP runtime lowering the overhead and exposing additional features e.g., taxonomy for thread placement, (ii) resource management for both cores and memory tested on different architectures (CPUs and GPGPUs), and (iii) compiler support for parallel programming models including interaction with the runtime systems for data placement and debugging tools for various parallel paradigms.