Mise en œuvre de LAMMPS sur le mésocentre de calcul de la région Centre CCSC (action du projet CaSciModOT)



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

Infrastructure de calcul du CRRI

Initiation au HPC - Généralités

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

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

Architecture des ordinateurs

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

Rapport d activité. Mathieu Souchaud Juin 2007

Gestion de clusters de calcul avec Rocks

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

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

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

Rencontre sur la thématique du Calcul Haute Performance - 13 juin Better Match, Faster Innovation

T. Gasc 1,2,3, F. De Vuyst 1, R. Motte 3, M. Peybernes 4, R. Poncet 5

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

Rapport de stage Master 2

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

Les environnements de calcul distribué

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

Éléments de programmation et introduction à Java

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

ParallelKnoppix. Majid Hameed. Copyright 2005 Majid Hameed. Copyright 2005 Gauthier Savart. Copyright 2005 Joëlle Cornavin

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

Projet IGGI. Infrastructure pour Grappe, Grille et Intranet. Fabrice Dupros. CASCIMODOT - Novembre Systèmes et Technologies de l Information

Quantification d incertitude et Tendances en HPC

Évaluation et implémentation des langages

1 Description générale de VISFIELD

Les lières. MSc in Electronics and Information Technology Engineering. Ingénieur civil. en informatique. MSc in Architectural Engineering

Limitations of the Playstation 3 for High Performance Cluster Computing

Virtualisation CITRIX, MICROSOFT, VMWARE OLIVIER D.

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

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

Optimisation de logiciels de modélisation sur centre de calcul

CORBA haute performance

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

LIVRET D INFORMATION. Livret d information des utilisateurs des ressources GENCI dans les centres nationaux

Mesurer les performances (CPU) sous Linux

La gestion de données dans le cadre d une application de recherche d alignement de séquence : BLAST.

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

Détection d'intrusions en environnement haute performance

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

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

Vérifier la qualité de vos applications logicielle de manière continue

Infrastructures Parallèles de Calcul

INDUSTRIALISATION ET RATIONALISATION

Linux embarqué: une alternative à Windows CE?

Cours 3 : L'ordinateur

Chapitre 4: Introduction au Cloud computing

Prise en compte des ressources dans les composants logiciels parallèles

VMWare Infrastructure 3

UE Programmation Impérative Licence 2ème Année

Tests de SlipStream sur les plateformes et : vers la. Vers la fédération du Cloud computing

ETUDE ET IMPLÉMENTATION D UNE CACHE L2 POUR MOBICENTS JSLEE

SIGAMM/CRIMSON COMMISSION UTILISATEUR du 05/12/2014

Portage d applications sur le Cloud IaaS Portage d application

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Parallélisme et Répartition

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

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

Livre blanc. La sécurité de nouvelle génération pour les datacenters virtualisés

libérez votre innovation avec l extreme computing CEA/Philippe Stroppa

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

AXES DE RECHERCHE - DOMAINE D'INTERET MAJEUR LOGICIELS ET SYSTEMES COMPLEXES

L I V R E B L A N C P r o t ég e r l e s a p p l i c a t i o n s m ét i e r s c r i t i q u e s M a i n f r a m e, un b e s o i n c r u c i a l

Arrêt sur image. La simulation numérique au programme de l industrie

Présentation du déploiement des serveurs

Chapitre 1. Infrastructures distribuées : cluster, grilles et cloud. Grid and Cloud Computing

Vous êtes bien à la bonne présentation, c est juste que je trouvais que le titre de cette présentation étais un peu long,

«clustering» et «load balancing» avec Zope et ZEO

Présentation de la Grille EGEE

Cluster High Availability. Holger Hennig, HA-Cluster Specialist

Le Cercle Vertueux du Cloud Public

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

Tutoriel : Utilisation du serveur de calcul à distance de PSE

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

Les technologies du Big Data

Retours d expériences et perspectives sur les aspects énergétiques

Défi Cloud Computing

Etude d architecture de consolidation et virtualisation

LIVRET D INFORMATION. Livret d information des utilisateurs des ressources GENCI dans les centres nationaux

SafeKit. Sommaire. Un livre blanc de Bull Evidian

Grid 5000 : Administration d une infrastructure distribuée et développement d outils de déploiement et d isolation réseau

Comment reproduire les résultats de l article : POP-Java : Parallélisme et distribution orienté objet

Dynamique des protéines, simulation moléculaire et physique statistique

IBM Business Process Manager

10 tâches d administration simplifiées grâce à Windows Server 2008 R2. 1. Migration des systèmes virtuels sans interruption de service

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

Le supercalculateur Tera 100 Premier supercalculateur pétaflopique européen

SysFera. Benjamin Depardon

Introduction au maillage pour le calcul scientifique

Logiciel Libre Cours 3 Fondements: Génie Logiciel

FORMATION CONTINUE SUR L UTILISATION D EXCEL DANS L ENSEIGNEMENT Expérience de l E.N.S de Tétouan (Maroc)

WEA Un Gérant d'objets Persistants pour des environnements distribués

Systèmes Répartis. Pr. Slimane Bah, ing. PhD. Ecole Mohammadia d Ingénieurs. G. Informatique. Semaine Slimane.bah@emi.ac.ma

pythonocc: une plateforme de développement agile d applications CAO.

Éléments d'architecture des ordinateurs

La continuité de service

La pratique de la gestion des services. Lier les composants techniques avec les services d opérations dans la CMDB

Moderniser. le système d information et le portefeuille applicatif.

Serveur de sauvegarde à moindre coût

Transcription:

Mise en œuvre de LAMMPS sur le mésocentre de calcul de la région Centre CCSC (action du projet CaSciModOT) Un exemple d utilisation pratique : la simulation numérique de vortex supraconducteurs Nicolas di Scala Février 2013 Nicolas di Scala 1

Table des matières 1) Présentation et fonctionnement d un mésocentre... 3 1.1) Le calcul parallèle... 4 1.2) Architecture d un mésocentre : le cas particulier du CCSC... 5 1.2.1) Architecture à mémoire partagée... 6 1.2.2) Architecture à mémoire distribuée... 6 1.2.3) Architecture à mémoire mixte et/ou hybride... 7 2) Logiciels scientifiques... 8 2.1) Bibliothèques scientifiques générales... 8 2.2) Logiciels scientifiques pour la recherche... 9 3) Logiciel LAMMPS : un exemple d utilisation pour la simulation numérique de vortex supraconducteurs... 11 3.1) Logiciel scientifique LAMMPS : comment le lancer sur le cluster?... 11 3.2) Exemples pratiques d utilisation de LAMMPS... 13 3.2.1) Benchmarking... 13 3.2.2) Grandeurs physiques... 15 4) Perspectives... 17 5) Annexes... 20 5.1) Proportions d utilisation du cluster CCSC... 20 5.2) Chiffrage de divers temps liés aux simulations... 21 Nicolas di Scala 2

Le calcul haute performance (abrégé HPC) pour la modélisation et la simulation numérique devient un enjeu important dans divers secteurs : scientifique, sociétal ou encore économique et financier. En effet, le calcul intensif est aujourd hui indispensable dans de très nombreux domaines académiques et industriels : les prévisions météorologiques, l évaluation des risques naturels, la conception de matériaux innovants, la prospection pétrolière, l évaluation de produits financiers complexes etc Afin de mettre en œuvre les moyens nécessaires à ces réalisations, les besoins en puissance de calcul sont de plus en plus élevés, et de nouvelles problématiques apparaissent (la gestion des contraintes énergétiques sur les architectures, l adaptation des applications de calcul scientifique aux nouvelles architectures massivement parallèles, l exploitation des énormes volumes de données générées etc ) 1) Présentation et fonctionnement d un mésocentre Un mésocentre est un centre de calcul HPC qui regroupe un ensemble de ressources matérielles et logicielles et de moyens humains. Elle est destinée à fournir un environnement scientifique et technique propice au calcul haute performance. D un point de vue plus administratif, c est une structure pilotée par un comité scientifique. Les centres nationaux de calcul, tels que l IDRIS [1] (Institut du Développement et des Ressources en Informatique Scientifique), le TGCC [2] (Très Grand Centre de Calcul du CEA) ou encore le CINES [3] (Centre Informatique National de l Enseignement Supérieur) possèdent une puissance de calcul de plus en plus importante. Cependant l accès à ces centres nationaux manque encore de souplesse. Il est alors utile de hiérarchiser les moyens de calcul mis à disposition des chercheurs : une structure pyramidale (cf. Figure 1) est établie en fonction de la puissance des moyens disponibles et de leur couverture (locale, régionale, nationale ou européenne). Figure 1 : Pyramide des différents niveaux de puissance de calcul du projet européen PRACE (Partnership for Advanced Computing in Europe). Nicolas di Scala 3

Le mésocentre est le plus souvent localisé au niveau régional, comme le montre la Figure 2. L intérêt d un mésocentre réside donc dans ses fonctions principales que sont l augmentation de la puissance de calcul disponible au niveau régional, la simplification de l accès aux ressources numériques ou encore la mutualisation des coûts (par exemple logiciels avec le prix des licences, matériels avec les machines et les fluides réfrigérants, ou humains pour la gestion du centre de calcul). Il permet également de fédérer les communautés utilisant le calcul HPC au niveau local et représentant un premier pas vers l accès aux ressources disponibles au niveau des centres nationaux. La proximité générée par un mésocentre offre de grands avantages. En effet, l interaction entre les utilisateurs et les personnels techniques chargés de l exploitation des machines de calcul permet de répondre au mieux aux besoins des chercheurs. Figure 2 : Carte de France des mésocentres d après le rapport annuel sur les structures de type mésocentre en France [4], provenant du Comité de Coordination des Mésocentres (2012) 1.1) Le calcul parallèle Par le passé le domaine des sciences a joui de l interaction mutuelle entre d une part la théorie, où l on modélise le système par des équations mathématiques, et d autre part l expérimentation permettant d effectuer des mesures et de confirmer/infirmer la validité du modèle théorique. Cependant avec l arrivée des ordinateurs depuis la seconde moitié du 20 ème siècle, un nouveau moyen d étudier les systèmes complexes est apparu : la simulation numérique. Les simulations sont à mi-chemin entre le modèle théorique, qu elles peuvent valider ou invalider suivant les résultats simulés, et l expérience dont elles peuvent se rapprocher en introduisant des valeurs numériques réalistes au sein du modèle testé. Les simulations numériques forment donc un pont étroit entre l expérimentation et la théorie. Nicolas di Scala 4

L objectif du calcul parallèle est de permettre une exécution plus rapide d un programme en distribuant le travail sur plusieurs processeurs et/ou cœurs (via l exécution simultanée de séquences d instructions indépendantes sur des processeurs différents, cf. Figure 3). Ainsi, en utilisant plus de ressources matérielles, notamment la mémoire, le calcul parallèle permet l exécution de problème «plus gros» qu en séquentiel. Figure 3 : Représentation schématique d un calcul parallèle. Les avancées effectuées ces dernières années dans les modèles numériques poussent la simulation vers de nouvelles frontières. Simuler des problèmes de taille réduite ne suffit plus pour valider des modèles. Beaucoup de problématiques sont multi-échelles (des petites échelles de la matière jusqu à des systèmes de très grandes dimensions), et les capacités de calcul nécessaires pour les résoudre deviennent considérables. Les algorithmes et les méthodes de résolution développées pour le calcul séquentiel (sur un seul processeur) ne suffisent plus. Le recours au calcul parallèle et intensif est alors incontournable pour y répondre. 1.2) Architecture d un mésocentre : le cas particulier du CCSC Rappelons tout d abord que la «machine» permettant d effectuer les calculs au sein d un mésocentre est communément appelée grappe de serveurs ou bien ferme de calcul, on parle aussi de cluster de calcul. C est un regroupement d ordinateurs indépendants (appelés alors nœuds), permettant ainsi de dépasser les limitations d un ordinateur en terme de puissance de calcul. A travers un cluster, l utilisateur dispose de plusieurs serveurs formant une seule entité (cf. Figure 4). Figure 4 : Schéma d un cluster de calcul avec le nœud frontal et les nœuds de calcul reliés par un réseau d interconnexion. Nicolas di Scala 5

Un cluster est constitué de plusieurs nœuds : des nœuds frontaux, de nœuds de calcul et de nœuds de stockage. Le cluster est isolé de l extérieur à travers un firewall. Les utilisateurs se connectent au cluster par l'intermédiaire de ce noeud frontal (c est la machine d entrée sur le réseau, appelée aussi serveur maître). Tous les outils pour créer des programmes y sont généralement installés (compilateurs, débuggers, bibliothèques, etc... ). La machine frontale se verra alors attribuer la charge de diviser les tâches à travers tous les noeuds de calcul adaptés, au moment ou ils seront disponibles, en prenant garde bien sur à ne pas surcharger la machine réceptrice. Il n existe pas d architecture matérielle unique pour ces clusters. Effectivement, chaque constructeur (Bull, IBM, etc ) possède une architecture qui lui est propre de par le choix de ses constituants matériels. Les différentes architectures de calculateurs parallèles se distinguent selon l organisation de la mémoire : architecture à mémoire partagée, distribuée, mixte, ou encore hybride (avec l utilisation de GPU). Sans rentrer trop dans le sujet, qui dépasse le cadre de cette présentation, nous allons rappeler brièvement les caractéristiques de ces différentes architectures. 1.2.1) Architecture à mémoire partagée Il faut noter que l architecture à mémoire partagée possède un espace mémoire global visible par tous les processeurs (cf. Figure 5). Les performances décroissent relativement vite avec le nombre de processeurs utilisés pour une application à cause du trafic sur le chemin d accès des données en mémoire (il apparaît un goulot d étranglement), de plus ce type d architecture est préféré lorsque le nombre de processeurs est faible (la machine devient coûteuse quand le nombre de cœurs devient grand). Figure 5 : Schéma d'une architecture parallèle à mémoire partagée (tiré de [5]) 1.2.2) Architecture à mémoire distribuée A l inverse, dans l architecture à mémoire distribuée un espace mémoire est associé à chaque processeur (cf. Figure 6). Les processeurs sont connectés entre eux à travers un réseau d interconnexion. L accès à la mémoire du processeur voisin doit se faire explicitement par échange de messages à travers le réseau. Afin d optimiser les transferts de données au sein des clusters, une interface a été développée afin qu il existe une implantation commune pour les différents constructeurs : il s agit de l interface MPI. Nicolas di Scala 6

Cette norme MPI, pour Message Passing Interface, dédiée au calcul parallèle et permettant d optimiser le temps processeur utilisé lors des transferts de données sur le réseau, est devenue un standard de communication pour des noeuds exécutant des programmes parallèles sur des systèmes à mémoire distribuée. Le réseau d interconnexion est très important sur ces architectures puisqu il détermine la vitesse d accès aux données d un processeur voisin (via sa latence, sa bande passante et sa topologie). Les performances sont ainsi dépendantes de la qualité du réseau. Figure 6 : Schéma d'une architecture parallèle à mémoire distribuée (tiré de [5]) L échange de données entre les processeurs doit être gérée par le programmeur, un effort de développement est alors nécessaire pour utiliser ce type d architecture. En revanche, elle possède l avantage de permettre d obtenir facilement des machines avec un grand nombre de processeurs, et pour un coût réduit par rapport à l architecture à mémoire partagée. De plus, l évolution de ces clusters est facilitée puisque cette architecture permet l ajout de nouveaux matériels de puissance et de génération différentes. 1.2.3) Architecture à mémoire mixte et/ou hybride La plupart des calculateurs actuels, dont le CCSC [6], combinent mémoire partagée et de mémoire distribuée. Les nœuds de calcul sont constitués de machines à mémoire partagée, reliées entre elles par un réseau d interconnexion. Il est intéressant de noter que de plus en plus souvent les clusters présentent un croisement hybride entre des nœuds avec les habituels CPU et des nœuds avec des cartes accélératrices graphiques GPU (cf. Figure 7). Figure 7 : Photographie d une carte accélératrice graphique GPU Nvidia Tesla. Nicolas di Scala 7

A titre de remarque, nous soulignons le fait que nous ne parlons pas ici des différents modèles de programmation parallèle, ce qui dépasserait largement le cadre de cette présentation. Pour plus d informations sur la programmation multithreading (dont l interface de programmation est l API OpenMP), l échange de messages (avec l API MPI) ou encore la programmation hybride (avec CUDA qui est propriétaire de la société Nvidia, ou avec l OpenCL qui est un standard ouvert de plus en plus présent sur le marché), nous conseillons au lecteur de se référer à la littérature sur le sujet. De nombreux cours sont disponibles, que ces derniers soient numériques ou papier (citons par exemple [7, 8, 9]). 2) Logiciels scientifiques Dans cette section nous allons présenter diverses applications scientifiques pour le calcul parallèle, utilisées couramment dans le milieu de la recherche. Afin de pouvoir s exécuter correctement, bon nombre d entre elles utilisent des opérations numériques «classiques», telles que par exemple la résolution de systèmes linéaires, le calcul de valeurs propres ou encore la transformée de Fourier rapide (FFT). Pour appliquer ces opérations en leur sein, les applications nécessitent la présence de libraires scientifiques spécifiques installées sur le cluster. 2.1) Bibliothèques scientifiques générales Les bibliothèques scientifiques sont des ensembles de sous-programmes testés, validés, optimisés. Utiliser des librairies scientifiques permet ainsi de se consacrer uniquement aux nouveaux développements, et de ne pas avoir à réécrire à chaque fois ces fonctions standardisées (cela permet de gagner un temps précieux). Ces libraires possèdent en outre plusieurs qualités très intéressantes. En effet, elles sont généralement portables puisqu elles sont indépendantes de l architecture des machines, elles peuvent supporter différents types de données (réel ou complexe, précision simple ou double) etc Avec l avènement des architectures de calcul parallèle, la communauté a fait évoluer les bibliothèques «classiques» en bibliothèques parallèles. Attention cependant aux librairies parallèles développées par les constructeurs, ces dernières ne sont pas portables étant donné qu elles dépendent de l architecture : c est typiquement le cas avec les transformées de Fourier rapides. Nous présentons ci-dessous, une liste non exhaustive de bibliothèques scientifiques connues et reconnues, version séquentielles et version parallèles. Pour ce qui est de l algèbre linéaire (regroupant différentes opérations vectorielles ou matricielles), nous pouvons citer : BLAS (Basic Linear Algebra Subprograms) pour la version séquentielle, PBLAS (Parallel Basic Linear Algebra Subprograms) la même libraire en version parallèle, LAPACK (Linear Algebra PACKage) pour la version séquentielle, ScaLAPACK (Scalable LAPACK) la même libraire en version parallèle. Nicolas di Scala 8

Quant à la transformée de Fourier rapide (décomposition d une fonction en fonctions oscillatoires) citons entre autres: FFTW (Fastest Fourier Transform in the West) version parallèle, MKL (Math Kernel Library) version parallèle. Il existe d autres libraires présentant des fonctionnalités plus généralistes et fournissant plusieurs outils de calcul numérique en mathématiques appliquées. C est le cas par exemple de GNU Scientific Library (GSL), ESSL (Engineering and Scientific Subroutine Library), PESSL (Parallel Engineering and Scientific Subroutine Library), ou bien SciPy (libraire pour le langage Python). On note que la majorité des bibliothèques citées précédemment sont écrites en Fortran ou en C. Il est souvent plus aisé d appeler une libraire Fortran à partir du C, plutôt que l inverse (à moins que la libraire ait été écrite de telle sorte qu elle puisse être appelée à partir du Fortran). 2.2) Logiciels scientifiques pour la recherche Nous allons maintenant présenter quelques logiciels développés pour la recherche scientifique dans divers domaines. Certains d entre eux sont commerciaux (et donc payants), alors que d autres sont gratuits et/ou open source (i.e. le code source est accessible). L utilisation de ces applications est très utile puisqu elle permet aux chercheurs d avoir une base à partir de laquelle ils vont pouvoir effectuer leur travail de recherche. En choisissant le bon logiciel adapté à leur problématique, ils peuvent gagner un temps considérable en utilisant des packages déjà développés et les modifier à leur guise (dans le cas d un logiciel open source). Notre but n est pas de lister tous les logiciels présents sur le marché, mais de montrer qu il existe un large choix accessible aux chercheurs, et ce quelque soit leur domaine d expertise (nous mettons en référence une liste des différentes applications possibles dans chaque secteur). Dans le domaine des prévisions météorologiques, il existe le modèle Weather Research and Forecasting Data Assimilation System (WRFDA) permettant de modéliser le temps sur des échelles allant de quelques kilomètres à des milliers de kilomètres comme le montre la Figure 8. Figure 8 : Exemple de prévision météorologique obtenue par le modèle WRF [10]. Nicolas di Scala 9

Dans le domaine de la bioinformatique [11], citons EMBOSS (European Molecular Biology Open Software Suite) qui contient une grande quantité de microprogrammes pour le séquençage, l identification des protéines (cf. Figure 9) etc, ou BLAST (Basic Local Alignment Search Tool) qui permet de trouver des régions similaires entre plusieurs séquences de nucléotides ou d acides aminés. Figure 9 : Exemple de repliement de protéines obtenu par la bioinformatique [12]. Dans le domaine de la mécanique des fluides, ANSYS Fluent permet de simuler une grande quantité de situations à travers différents modèles implémentés en son sein (turbulence, écoulement en milieux poreux, combustion etc ), comme le montre la Figure 10. Figure 10 : Champ de vecteurs vitesse obtenue via le logiciel Fluent dans le cadre de la simulation d une tornade [13]. Dans le domaine des mathématiques il existe un très large panel de logiciels [14] (pour le calcul formel, l analyse numérique, l analyse de données ou encore l analyse statistique). Citons quelque uns parmi les plus connus : Maple, Mathematica, Matlab, Scilab, R, etc Dans le domaine de la mécanique moléculaire [15] (dynamique moléculaire, Monte Carlo, mécanique quantique, etc ) on utilise la mécanique Newtonienne pour modéliser les systèmes moléculaires, et là aussi le choix ne manque pas. Il existe par exemple le logiciel AMBER (Assisted Model Building with Energy Refinement), CHARMM (Chemistry at HARvard Macromolecular Mechanics), GROMACS (GROningen MAchine for Chemical Simulations) ou bien LAMMPS (Large-scale Atomic/Molecular Massively Parallel Simulator) comme le montre la Figure 11. Figure 11 : Image issue d une simulation de dynamique dissipative de particules [16]. Nicolas di Scala 10

3) Logiciel LAMMPS : un exemple d utilisation pour la simulation numérique de vortex supraconducteurs Dans ce chapitre nous discuterons dans un premier temps de l accès à LAMMPS sur le cluster CCSC, puis nous aborderons des exemples pratiques d utilisation de LAMMPS appliqué à la simulation numérique de vortex supraconducteurs. 3.1) Logiciel scientifique LAMMPS : comment le lancer sur le cluster? LAMMPS, acronyme pour Large-scale Atomic/Molecular Massively Parallel Simulator [17, 18], est un logiciel open source sous les termes GNU Public License (GPL), distribué par Sandia National Laboratories, un laboratoire national de recherche dépendant du Département de l Energie des Etats-Unis. Ce logiciel utilise un code de dynamique moléculaire classique (i.e. mécanique non quantique) qui permet à l utilisateur de modéliser des systèmes en phase gazeuse, liquide ou solide. Il a été développé pour être optimal sur des architectures parallèles avec un très grand nombre de processeurs. Différents potentiels physiques y sont déjà implémentés, allant par exemple de la matière molle (polymères, biomolécules) à la matière condensée (métaux, semi-conducteurs). LAMMPS peut être utilisé pour modéliser des atomes, ou de façon plus générique pour simuler des systèmes de particules à différentes échelles (échelle atomique, échelle mésoscopique ou échelle du continu), comme le montre la Figure 12. Figure 12 : Images issues de simulations obtenues grâce à LAMMPS [19]. A gauche environ 1 million de particules ont été simulées, et à droite 3.6 millions. Ce code a été écrit initialement en Fortran F77 puis F90, il est maintenant développé en C++. Il peut être facilement modifié par l utilisateur (pour y ajouter de nouveaux potentiels par exemple, ou bien de nouvelles fonctionnalités ou microprogrammes). Il est portable et peut être lancé sur des machines utilisant un système d exploitation du type Linux, Unix, Mac OS ou Windows. Afin de pouvoir l utiliser sur le cluster CCSC, il est nécessaire de posséder de bonnes connaissances des systèmes HPC sous Linux. Nicolas di Scala 11

Afin de se connecter au cluster, il faut ouvrir une connexion sécurisée SSH (Secure Shell) depuis un terminal du type Unix. Pour les utilisateurs de Windows, il existe un logiciel, nommé PuTTY, permettant d émuler un terminal, la Figure 13 représente le terminal avec son invité de commande en vert. Pour plus d informations sur l utilisation de PuTTY, nous conseillons au lecteur la lecture de la très bonne documentation [20] (très exhaustive sur le sujet). Figure 13 : Image présentant un terminal PuTTY avant connexion au serveur frontal du cluster CCSC. Le lancement d'une simulation se fait à travers un script d'entrée qui permet de définir les différents paramètres qui vont être utilisés au sein la simulation (système d'unités, dimension et taille de la cellule de simulation, pas de temps, conditions initiales en ce qui concerne la position et la vitesse, potentiels et forces à appliquer etc...), mais qui permet aussi de définir les quantités qui devront être sorties à différents moments de la simulation (positions et vitesses des particules, énergies etc...), comme le montre la Figure 14. Figure 14 : Exemple de script simple pour lancer une simulation de vortex à 2D. Nicolas di Scala 12

Ce script doit être envoyé au serveur frontal afin de pouvoir y être exécuté par la suite. Il faut y adjoindre un fichier de soumission qui permettra de lancer le job sur la machine de calcul à travers le logiciel Sun Grid Engine (produit par la société Sun Microsystems) en utilisant la commande qsub. Ce logiciel est un système de gestion des tâches de calcul pour une machine multiprocesseur, et en particulier s occupe de la gestion des jobs sur le cluster CCSC. La structure du fichier de soumission est la suivante (toutes les lignes commençant par #$ contiennent des options passées automatiquement à la commande qsub) : #!/bin/bash <-> en-tête du script Bash #$ -cwd <-> travailler dans répertoire courant #$ -pe ompi N <-> environnement OpenMPI de N processus #$ -N toto_title <-> attribuer un nom au job mpirun./toto <-> exécuter le programme toto par MPI 3.2) Exemples pratiques d utilisation de LAMMPS Nous ne tentons pas de lister ici toutes les réalisations possibles grâce à LAMMPS, le manuel disponible sur le site du logiciel étant très bien fourni à ce sujet [21]. Nous allons au contraire présenter brièvement quelques utilisations possibles de LAMMPS en l appliquant à la simulation de vortex supraconducteurs. Pour plus d informations concernant la physique de cette problématique, les résultats obtenus dans le détails et leur description, veuillez vous référer aux publications dans des revues internationales/nationales à comité de lecture [22, 23, 24, 25] ou bien la thèse de Doctorat [26]. 3.2.1) Benchmarking La commande «thermo», disponible dans LAMMPS, permet de contrôler à différents pas de temps de la simulation plusieurs quantités thermodynamiques telles que par exemple la pression, la température ou encore l énergie (cinétique, potentielle, de paire etc ). Nous pouvons ainsi déterminer l évolution de l énergie du système et voir s il existe une conservation de cette énergie (entre l énergie cinétique et l énergie potentielle), comme le montre la Figure 15. Figure 15 : Evolution de l énergie cinétique (rouge) et de l énergie potentielle (bleue) du système de vortex en fonction du temps. Nicolas di Scala 13

Bien d autres quantités peuvent être tirées de cette commande thermo (que l on peut adapter à nos simulations). A titre d exemple, nous pouvons mesurer le temps CPU d exécution (en secondes) d une simulation en fonction du nombre de processeurs utilisés, comme le montre la Figure 16. Figure 16 : Temps CPU d exécution (en secondes) d une simulation en fonction du nombre de processeurs alloués. Différentes tailles de systèmes sont représentées. Une autre quantité utile pour faire du benchmarking est la quantité de mémoire requise par processeur pour chaque simulation, et ce en fonction du nombre de processeurs attribué à la simulation. Figure 17 : Quantité de mémoire requise (en MBytes/cœur) en fonction du nombre de processeurs alloués. Différentes tailles de systèmes sont représentées. A partir de ces grandeurs, nous sommes capables d effectuer une première mesure et de caractériser l efficacité du parallélisme en ce qui concerne notre simulation. Pour ce faire il suffit de définir l accélération A(P)= T1/TP et l efficacité E(P)=A(P)/P, avec P le nombre de cœurs sur lesquels le programme est exécuté et TP le temps d exécution pour P processeurs. C est ce que représentent respectivement les Figures 18 et 19 (la ligne pointillée représente le cas théorique idéal) Figure 18 : Accélération A(P) pour différentes tailles de systèmes. Figure 19 : Efficacité E(P) pour différentes tailles de systèmes. Nicolas di Scala 14

Il est aussi possible de déterminer la proportion de temps utilisé par le CPU pour le calcul des forces, le calcul entre voisins, la communication MPI ou d autres quantités, grâce à la commande thermo. Cela permet également d optimiser le nombre de processeurs à choisir pour rendre la parallélisation de la simulation la plus efficace possible. Les Figures 20 et 21 représentent ces proportions pour deux tailles de systèmes contenant chacun 270 et 8000 vortex. Figure 20 : Pourcentage du temps d exécution pour un système de 270 vortex. Figure 21 : Pourcentage du temps d exécution pour un système de 8000 vortex. 3.2.2) Grandeurs physiques La commande «dump» permet de mesurer des quantités intrinsèques liées aux particules simulées, à chaque pas de temps de la simulation. Cela peut concerner par exemple leur position dans l espace (x, y, z), leur vitesse instantanée (Vx, Vy, Vz) etc A partir de la position des vortex à chaque pas de temps, nous pouvons obtenir la trajectoire de ces derniers et visualiser la dynamique du système, comme le montre la Figure 22. Figure 22 : Trajectoire des vortex (rouge) et position instantanée (bleue) dans le plan XY. Nicolas di Scala 15

A partir de la position des vortex à chaque pas de temps, nous pouvons déterminer le facteur de structure S(k) du système (S(k) n est pas disponible directement dans LAMMPS et nécessite un code de calcul en posttraitement), comme le montre la Figure 23. Figure 23 : Facteur de structure S(k) dans le plan XY, obtenu à partir de la position des vortex. A partir de la vitesse instantanée des vortex à chaque pas de temps, nous pouvons déterminer le champ de vitesse instantanée, comme le montre la Figure 24 (cette image a été obtenue à partir d un logiciel gratuit de visualisation, nommé ParaView). Figure 24 : Champ de vitesse instantanée pour un système de 1920 vortex (les flèches représentent les vecteurs vitesse instantanée et la couleur indique la norme de ces vecteurs). Une autre commande, utile dans le domaine de la matière condensée, est donnée par «rdf». Cette dernière permet de calculer la fonction de distribution radiale g(r) (donnant l évolution de la densité en fonction de la distance r par rapport à une particule de référence), comme le montre la Figure 25. Figure 25 : Fonction de distribution radiale g(r) pour un système de vortex supraconducteur à 2D. Il existe bien d autres commandes permettant de mesurer ou caractériser des grandeurs physiques. Chaque commande étant spécifique à une, ou plusieurs, propriété(s) physiques, nous conseillons au lecteur intéressé par l utilisation de LAMMPS de se référer au manuel fourni par les développeurs [21]. Nicolas di Scala 16

4) Perspectives Un objectif, ambitieux, mais néanmoins nécessaire pour améliorer les résultats obtenus dans les simulations réalisées ci-dessus, serait d utiliser la puissance des processeurs graphiques GPU pour faire tourner les codes de calcul parallèle. Actuellement, les simulations numériques employées précédemment pour les réseaux de vortex ont été développées en utilisant l outil de calcul haute performance HPC LAMMPS version C++ que j ai pu exécuter sur des processeurs CPU du mésocentre de calcul de la région Centre CCSC. Bien qu ayant permis de gagner presque 2 ordres de grandeurs (x100) en ce qui concerne la quantité de vortex intégrés au sein de la cellule de simulation, cette technique commence à atteindre ses limites lorsque le système de vortex devient trop «grand» (chose nécessaire lorsque le piégeage est faible, à cause de la longueur de corrélation des domaines de vortex qui croît à l approche de la transition de dépiégeage), ou la force appliquée est trop faible (F<<Fc). Figure 26 : Photographie d un processeur multicoeurs CPU (à gauche) et d un processeur graphique GPU (à droite). L utilisation de processeurs graphiques GPU au lieu de processeurs «traditionnels» CPU permet d'avoir des résultats plus rapides en exploitant les capacités de calcul des GPU. Le calcul des forces est alors porté sur les GPU, qui sont beaucoup plus performants que les CPU multicœurs de par leur très grande quantité de coeurs, et le processeur peut ainsi s'occuper du reste du code sans être surchargé par ce calcul des forces. En effet comme le montre la Figure 27, le CPU est optimisé pour exécuter rapidement une série de tâches de tout type, alors que le GPU est optimisé quant à lui pour exécuter des opérations simples sur de très gros volumes de données. On voit bien que beaucoup plus de transistors sont dédiés au calcul sur le GPU (ce sont les UAL, Unité Arithmétique et Logique, qui effectuent les opérations de base) qu aux unités de contrôle (chargées du séquençage des opérations). Nicolas di Scala 17

Figure 27 : Comparaison de l architecture CPU et GPU (représentation schématique). Les logiciels pouvant tourner sur des GPU utilisent généralement soit la technologie CUDA, format propriétaire et fonctionnant sur des cartes GPU de chez Nvidia, soit l OpenCL, un format ouvert de plus en plus utilisé (pouvant fonctionner sur des GPU Nvidia ou ATI par exemple). Une liste de logiciels scientifiques pouvant tourner sur les GPU Nvidia est donnée en [27]. Pour ce qui est de LAMMPS, il peut être accéléré par des configurations multi-gpu. La version CUDA de LAMMPS permet d obtenir des résultats beaucoup plus rapides, comme le montre la Figure 28. Figure 28 : Résultats comparés d une simulation obtenue avec 24 CPUs vs 2 GPUs (image issue de [28]). Nicolas di Scala 18

Il est bon de noter que les GPU sont moins gourmands électriquement que les CPU, ils sont moins cher et prennent également moins de place que ces derniers. Cependant, de nouvelles avancées tentent de contrebalancer l utilisation de plus en plus massive des GPU dans le calcul haute performance : les processeurs manycores (Knights Corner d Intel possédant plus de 50 cœurs) ou bien les processeurs hybrides CPU + GPU (Fusion chez AMD ou SandyBridge chez Intel). Remarque : J ai essayé de créer une station de travail à mon domicile (i.e. un mini supercalculateur personnel) à partir de cartes graphiques Nvidia : ne serait-ce qu en utilisant une solution d accélération GPU Nvidia Tesla par exemple, nous pouvons obtenir de notre ordinateur de bureau des performances de calcul à la hauteur d un cluster dédié. Pour ce faire, je me suis initié à l architecture de calcul parallèle Nvidia CUDA (sous Linux et Windows). Outre la difficulté intrinsèque aux bibliothèques (les installer, les référencer correctement etc ), il n est pas aisé de porter le code de calcul sur le(s) GPU(s) : il existe des problèmes de portabilité. De plus, il peut arriver que le fait de porter le programme sur des GPU entraîne une augmentation du temps de simulation. Il faut s assurer que le nombre de particules simulé soit suffisamment grand pour que le logiciel ne passe pas plus de temps à envoyer les informations entre les cœurs plutôt qu à calculer les quantités physiques demandées. Ce nombre est difficilement prévisible à l avance, il dépend du système physique, des interactions (forces) calculées, de l architecture matérielle etc... Il est donc très intéressant d essayer d utiliser les GPU à la place des CPU, cependant cela demande du temps et de l investissement. Nicolas di Scala 19

5) Annexes 5.1) Proportions d utilisation du cluster CCSC J ai effectué mes activités de recherche sur les simulations numériques de réseaux de vortex supraconducteurs au sein du laboratoire LEMA UMR CNRS-CEA 6157, qui est devenu par la suite le laboratoire GREMAN UMR 7347 CNRS-CEA-ENIVL au cours de mon doctorat. Le rapport d activités 2010-2011 du Centre de Calcul Scientifique en Région Centre (CCSC) fourni des informations quant à la proportion d utilisation du cluster de calcul par laboratoire et/ou projets dans la région Centre (typiquement entre les universités d Orléans et de Tours). Figure A-1 : Utilisation cumulée du cluster CCSC par laboratoire, d octobre 2010 à novembre 2011. La zone hachurée correspond à l utilisation du laboratoire LEMA dans lequel j ai effectué mes simulations numériques (j étais le seul à utiliser le cluster dans ce laboratoire). Comme on peut le voir sur la Figure A-1, et sachant que j étais le seul à utiliser le cluster au sein du laboratoire LEMA (tout du moins sur la période représentée), on se rend compte que mes simulations numériques ont pleinement profité des capacités de calcul de la machine du CCSC. Nicolas di Scala 20

5.2) Chiffrage de divers temps liés aux simulations Dans cette annexe je vais donner un chiffrage du nombre d heures passées à préparer les scripts, compiler, exécuter les simulations et enfin récupérer/traiter les données. Ces informations donnent une estimation sommaire du volume horaire utilisé à effectuer les simulations numériques présentées dans le document. o Préparation des scripts, compilation : ~ 350 h o Exécution des simulations sur le cluster : ~ 3000 h o Récupération, traitement des données : ~ 2000 h 37% 7% 56% Préparations Exécutions Traitements Remarque : Pour ce qui est du traitement des simulations par le GPU (travail personnel en dehors de mes activités professionnelles), j ai estimé le temps passé à environ 70 heures (installation du cluster, des librairies, de CUDA, tests de portabilité et de benchmarking etc ). Nicolas di Scala 21

Bibliographie [1] Site web de l IDRIS : http://www.idris.fr/ [2] Site web du TGCC : http://www.teratec.eu/technopole/tgcc.html [3] Site web du CINES : http://www.cines.fr/ [4] Rapport accessible ici : http://calcul.math.cnrs.fr/img/pdf/2012_rapport_meso-2.pdf [5] Site web de Wikipédia : http://fr.wikipedia.org [6] Site web décrivant l architecture du cluster CCSC : http://cascimodot.fdpoisson.fr/?q=ccsc/ressources [7] Formations du «Groupe Calcul» : http://calcul.math.cnrs.fr/spip.php?rubrique39 [8] «Calcul scientifique parallèle - Cours, exemples avec OpenMP et MPI, exercices corrigés» de Frédéric Magoulès et François-Xavier Roux [9] «CUDA par l'exemple - Une introduction à la programmation parallèle de GPU» de Jason Sanders, Edward Kanbrot [10] Site web de l image : http://www.mmm.ucar.edu/wrf/users/ [11] Liste de logiciels utilisés en Bioinformatique : http://en.wikipedia.org/wiki/list_of_open-source_bioinformatics_software [12] Site web de l image : http://computing.bio.cam.ac.uk/ [13] Adresse de l image : http://www.blwtl.uwo.ca/user/doc/tornado%20simulation.pdf [14] Liste de logiciels utilisés en analyse numérique, calcul formel : http://en.wikipedia.org/wiki/mathematical_software [15] Liste de logiciels utilisés en mécanique moléculaire: http://en.wikipedia.org/wiki/list_of_software_for_molecular_mechanics_modeling [16] Site web de l image : http://scienomics.com/products/lammps-dpd [17] Site web de LAMMPS : http://lammps.sandia.gov [18] «Fast Parallel Algorithms for Short-Range Molecular Dynamics» de S. Plimpton, J. Comput. Phys., 117:1 (1995) [19] http://lammps.sandia.gov/pictures.html [20] Documentation de PuTTY: http://marc.terrier.free.fr/docputty/ [21] Liste des commandes déjà disponibles dans LAMMPS : http://lammps.sandia.gov/doc/section_commands.html [22] «Critical behavior of plastic depinning of vortex lattices in two dimensions: Molecular dynamics simulations» de Y. Fily, E. Olive, N. Di Scala and J. C. Soret, Phys. Rev. B, 82 134519 (2010), 7 pages [23] «Transition de dépiégeage élastique de vortex supraconducteurs» de E. Olive, N. Di Scala, Y. Lansac, Y. Fily and J. C. Soret, ESAIM: Proceedings, Vol. 35, p167-173, 7 pages. Proceedings of Congrès SMAI 2011, 5ème Biennale Française des Mathématiques Appliquées, Guidel (France), Mai 2011 Nicolas di Scala 22

[24] «Elastic depinning transition for superconductor vortices» de N. Di Scala, E. Olive, Y. Lansac, Y. Fily and J. C. Soret, J. Phys.: Conf. Series, 400 022015 (2012), 4 pages. Proceedings of the 26th International Conference on Low Temperature Physics LT26, Beijing (China), Août 2011 [25] «Elastic depinning transition of vortex lattices in two dimensions» de N. Di Scala, E. Olive, Y. Lansac, Y. Fily and J. C. Soret, New J. Phys., 14 123027 (2012), 16 pages. [26] Thèse de Doctorat: «Transition de dépiégeage dans les réseaux de vortex supraconducteurs : étude par simulation numérique» de N. Di Scala (2012), 220 pages. Accessible sur le site Thèse en Ligne TEL : http://tel.archives-ouvertes.fr/tel- 00741545 [27] Site web de logiciels de calcul par GPU : http://www.nvidia.fr/object/gpucomputing-applications-fr.html [28] GPU LAMMPS Nvidia : http://www.nvidia.fr/page/lammps_on_tesla.html Nicolas di Scala 23