Logiciels open source CEA/DAM DSSI
ARCANE
Arcane est une plateforme de d éveloppement et de services con çue et utilis ée depuis 2000, dans le cadre du programme Simulation. Arcane aide au d éveloppement des codes de physique et àoptimiser les performances sur les grands calculateurs parall èles, quel que soit la complexit éde la structure des donn ées. Gr âce àsa conception avanc ée orient ée objet, Arcane pr ésente flexibilit éet modularit édans la construction des logiciels de simulation, avec diff érents niveaux de lecture. Elle offre aux acteurs du processus de d éveloppement (physiciens, num ériciens et informaticiens) la possibilit éde se concentrer sur leur c œur de m étier. Cette approche facilite ainsi, dans des d élais r éduits, l'élaboration de logiciels scientifiques innovants.
Auks
est une application client-serveur permettant d’ajouter à une application de type Batch le support des tickets Kerberos V.
La partie serveur d’Auks fournit des services de stockage et d’obtention de tickets Kerberos de manière optimisée afin de garantir des performances adéquates en environnement HPC. La partie cliente d’Auks est construite au-dessus d’une API permettant un accès en langage C aux fonctionnalités proposées. Auks est livré avec un greffon d’exemple ajoutant le support Kerberos au gestionnaire de ressources Open Source Slurm, développé par le Lawrence Livermore National Laboratory (LLNL), en version 2.2.
Bridge
est une application fournissant aux utilisateurs de centres de calcul une méthode unifiée d’accès aux ressources : soumission de travaux interactifs et batch, description des contraintes d’exécution, lancement d’exécutions parallèles, surveillance et/ou arrêt des exécutions sur les calculateurs, etc…
ClusterShell
est une bibliothèque événementielle en Python qui permet d'exécuter des commandes en parallèle sur un nombre très important de noeuds d'un cluster, serveurs ou stations de travail. Elle définit et implémente la notion de groupe de noeuds indispensable aux grands systèmes et fournit un ensemble de scripts utilitaires.
Environment Modules
est un développement en langage Tcl de la commande « module ».
Il permet de gérer facilement l’environnement logiciel des utilisateurs qui travaillent sous UNIX/LINUX, en leur mettant à disposition l’ensemble des logiciels et des outils dont ils ont besoin.
FRAME
La bibliothèque FRAME, pour FRAme field MEshing, est une bibliothèque qui fournit des algorithmes de génération de maillages quadrilatéraux en dimension 2, et hexaédriques ou à dominante hexaédrique en dimension 3. Ces algorithmes à l’état de R&D, ont pour finalité d’être mis à disposition pour la production.
Les algorithmes proposés s’appuient sur la notion de champs d’orientations (frame fields en anglais). Leur domaine d’application est restreint aux modèles géométriques de type CAO (avec des bords vifs) en dimension 2 et à tout domaine géométrique en dimension 3.
GLoST
(Greedy Launcher Of Small Tasks) est un outil de lancement de travaux de type «parallèles par nature» (Embarrassingly Parallel). S’appuyant sur MPI, il est capable de lancer un très grand nombre de travaux élémentaires sur un cluster de calcul tout en gérant la limite de temps alloué.
GMDS
La bibliothèque GMDS, pour Generic Mesh Data Structure ou Structure de Données Générique de Maillage, est une bibliothèque C++ qui permet de modéliser et manipuler des maillages 2D et 3D aussi bien dans un contexte séquentiel que dans un contexte distribué (calcul haute performance).
GMDS permet de représenter tout type de cellules de dimension 2 (triangles, quadrilatères, polygones quelconques) et de dimension 3 (tétraèdres, hexaèdres, pyramides à base quadrangulaire, prisme à base triangulaire et pentagonale, polyèdres quelconques). Un effort particulier a été porté sur l’occupation mémoire de ces cellules : elle est minimisée tout en restant dans un contexte générique d’utilisation.
Les algorithmes proposés s’appuient sur la notion de champs d’orientations (frame fields en anglais). Leur domaine d’application est restreint aux modèles géométriques de type CAO (avec des bords vifs) en dimension 2 et à tout domaine géométrique en dimension 3.
Implémentation d’un protocole réseau adapté au transfert fiable et rapide de grandes quantités de données sur un lien réseau unidirectionnel à faible perte (une diode réseau, par exemple).
HERCULE
Ces services portent essentiellement sur les protection/reprises, le post-traitement (dont la visualisation) et l ’échange de donn ées entre plusieurs codes de simulation.
HP2P
(Heavy Peer To Peer) est un logiciel qui permet de diagnostiquer l’état du réseau d’interconnexion d’un calculateur à architecture distribuée (cluster)à travers l’utilisation de la bibliothèque de communication MPI. Il permet de mesurer les latences et les débits entre les différentes couples de nœuds d’un cluster. Le logiciel est lancé en environnement utilisateur sur le cluster de calcul.
Ce logiciel comporte une interface graphique interactive permettant d’analyser les résultats et de remonter rapidement les problèmes liés au réseau.
IVRE
(Instrument de veille sur les r éseaux externes) est une plateforme informatique (framework) dédiée à l’établissement de cartographie réseau qui s’appuie sur des outils "open source "de cartographie active (Nmap, Zmap) et passive (p0f, Bro) dont il collecte les résultats dans des bases de données. Il propose ensuite différentes interfaces pour consulter ces données.
JCHRONOSS
est un moteur de validation et de non-r égression de codes et biblioth èques logicielles sur ordinateurs parall èles de classe p étaflopique (Calcul Haute Performance). Sa structure hi érarchique lui permet de dissocier l ’architecture complexe des supercalculateurs du probl ème d ’ordonnancement des jobs. Une compatibilit éest assur ée avec le monde de l ’int égration continue gr âce àun format standardis édes donn ées produites. Des modules annexes permettent de visualiser de mani ère autonome r ésultats et ex écutions en cours, afin d ’affiner le comportement de JCHRONOSS face aux (tr ès) lourdes suites de validation utilis ées en contexte massivement parall èle.
Logiciel d'analyse de journaux permettant d'associer des actions automatiques quand se produisent certaines situations identifi ées dans les journaux par des r ègles d éfinies par l'utilisateur.
Kernel Linux – module 9P
Le noyau (kernel) linux est la base du système d’exploitation, et constitue l’interface standard pour accéder au matériel, au réseau et aux fichiers.
La compréhension du noyau est importante à la fois pour les développements auxquels le CEA participe (système de fichiers Lustre, protocoles 9P & RDMA) et pour analyser plus efficacement les problèmes que l’on peut rencontrer au cours du fonctionnement ou de la mise en œuvre des calculateurs.
KVSNS
implémente un système de fichiers POSIX (Interface de programmation standard UNIX pour l’accès aux données) à partir des services d'un KVS (Key Value Store), en fait un dépôt de valeurs adressées par des clefs, et d'un gestionnaire de stockage objet.
KVSNS s’appuie sur REDIS, qui est un KVS (Serveur de dictionnaire distant) usuel dans la communauté Open source, et sur du système de fichier POSIX. Elle peut également utiliser les KVS et le stockage objet fourni par le produit commercial (Seagate) MERO, lequel est au cœur du projet SAGE.
LCAP
est un logiciel de traitement et diffusion de flux de messages. Il autorise des modes de diffusion plus souples et plus performants que celui proposé directement par Lustre pour la description des opérations modifiantes apportées au système de fichiers.
LOVE
Dans un contexte d’exploitation massives de grands volumes de données, Love est un logiciel de visualisation de données issues de codes de simulation numérique. Il permet aux utilisateurs d’explorer et d’analyser les données issues de simulations numériques, grâce à des services d’affichage et d’extraction sur des géométries 2D et 3D. Ces grands volumes de données peuvent atteindre plusieurs milliards de mailles.
LUSTRE (contribution)
Le logiciel Lustre est un système de gestion de fichiers très performant, particulièrement bien adapté à la gestion des grands flux et volumes de données sous contrôle des super ordinateurs. Ce système de fichiers (File system) gère donc l’organisation des informations mémorisées sur les multiples périphériques de stockage (disque durs, bandes magnétiques, …), en particulier sur les dizaines de milliers de disques
Son concept de système de fichiers parallèle permet entre autres d’obtenir haute capacité et extensibilité de volume de stockage, une rapidité d’exécution et une tolérance aux pannes.
Ses hautes performances permettent de répondre aux besoins des simulations les plus exigeantes en termes de stockage notamment, lorsqu’il s’agit de s’adapter à une production considérable de données.
MALP
MALP (Multi-Application on-Line Profiling) est un logiciel de profilage consistant à analyser l’exécution d’une application logicielle afin de connaitre son comportement à l’exécution.
Le profilage de code permet de contrôler lors de l’exécution d’un logiciel :
-
La liste des fonctions appelées et le temps passé dans chacune d’elles,
-
L’utilisation du processeur (ou du cœur du processeur),
-
L’utilisation mémoire …etc.
L’analyse du comportement d’une ou plusieurs applications se fait par le biais de rapports d’analyse. De tels rapports ont pour but d’aider les développeurs à mieux comprendre leurs programmes et visent à rendre mesurable le critère performance afin d’influencer positivement les applicatifs tout au long du développement.
Miasm
est une plateforme informatique de rétro conception (framework de reverse-engineering) développée en langage Python.
Il s’agit d’une plateforme d’aide à la rétro conception logicielle, qui peut être utilisée à différentes fins :
-
analyse de codes malveillants (virus, malwares, etc.),
-
recherche de vulnérabilités, etc.
MIASM regroupe différents outils :
-
un désassembleur permettant de faire de l’analyse de code statique;
-
un langage intermédiaire permettant d’écrire relativement simplement des analyseurs de code évolués;
-
un « jitter » permettant l’analyse dynamique de code dans une boite à sable (sandbox), système informatique dédié spécifiquement aux tests et analyses.
MilkCheck
est un logiciel permettant la gestion cohérente de services système indépendants et distribués : définition des dépendances entre services et des actions (démarrage, arrêt, état, …) à réaliser de façon distribuée (multi-machines) et parallèle. Il est entre autre utilisé pour gérer le démarrage des différents services des calculateurs (DNS, LDAP, LUSTRE, SLURM, …).
Mooshika
est une bibliothèque de fonctions évoluant dans l’espace utilisateur (user space) destinées à faciliter l’intégration de la couche de transport RDMA (Remote Direct Memory Access) dans un serveur de fichier. Ce protocole RDMA permet donc le transfert mémoire à mémoire des données via le réseau d’interconnexion.
La bibliothèque
MPC
(Multi-Processor Computing) est dédiée à la programmation parallèle dans le contexte du Calcul Haute Performance. MPC offre des interfaces de programmation comparables à celles couramment utilisées en parallélisme : MPI (Message Passing Interface), OpenMP et POSIX Thread. L’intégration et la collaboration de ces modèles usuels de programmation parallèle au sein d’une bibliothèque unique permet à MPC d’offrir un modèle de programmation hybride mémoire partagée/mémoire distribuée avec un haut niveau de performance.
NABLA
Nabla est un compilateur sources à sources ; c'est à dire un traducteur du langage (du même nom) spécialisé pour l'analyse numérique vers différents langages pour une diversité d’architectures et de machines. Nabla permet d'écrire un programme informatique adapté à l'analyse numérique, grâce entre autres à l’utilisation des opérateurs mathématiques.
NFS-Ganesha
est une solution logicielle performante implémentée sur serveur dimensionné pour le calcul haute performance, permettant un accès optimisé du stockage distribué sur réseau. NFS-Ganesha interface postes client et supports de stockage sur différents types de système de fichiers et protocoles.
NFS-Ganesha est un serveur NFS fonctionnant dans l’espace utilisateur (User-Space). Il implémente les protocoles NFSv3/NFSv4/NFSv4.1 ainsi que leurs protocoles auxiliaires (MountdV1 et MountdV3, NLMv4, RQUOTA et pNFS). NFS-Ganesha se caractérise par une architecture très ouverte qui lui permet de servir de frontal NFS à différents systèmes de fichiers, incluant des standards du HPC comme LUSTRE, CEPH et GPFS. NFS-Ganesha supporte XFS et tout système de fichiers qui s'appuie sur la VFS du kernel Linux. Il peut également être utilisé comme serveur Proxy NFS. Nfs-Ganesha supporte l'authentification kerberos via la GSS-API et le protocole RPCSEC_GSS.
Ocean est une pile logicielle d'administration permettant de fournir des outils et de la documentation pour la gestion de clusters hétérogènes.
Il est composé de deux sous-projets Ocean-core et Ocean-stack :
-
Ocean-core
est une distribution basée sur RPM construite sur une distribution Linux standard et fournit des outils packagés et des mises à jour logicielles nécessaires à la gestion des clusters HPC.
-
Ocean-stack
(alias Deepblue) décrit comment architecturer les services de base requis sur les clusters HPC, comment intégrer des services tiers et propose des procédures opérationnelles pour gérer un cluster HPC à grande échelle.
ODACE
Odace est un logiciel modulaire d’analyse des données issues de codes de simulation numérique. Dans un contexte d’exploitation massive de grands volumes de données, il permet aux utilisateurs d’accéder et d’exploiter les données de leurs calculs grâce à des services d’extraction, de combinaisons et de traitements mathématiques. Il propose également un service graphique qui permet de présenter les résultats obtenus sous forme de courbes.
PCOCC
est un outil logiciel permettant aux utilisateurs d'un calculateur à architecture distribuée (cluster) d'instancier simplement des machines virtuelles pour y exécuter des applications parallèles. Les utilisateurs disposent ainsi d’un contrôle complet de leur environnement d'exécution et peuvent le personnaliser selon leurs besoins. L'outil s'intègre au gestionnaire de ressources de façon à pouvoir héberger les machines virtuelles sur les nœuds du cluster en concurrence avec les autres tâches de calcul. Les machines virtuelles d'un utilisateur sont interconnectées par un réseau privé et isolé du réseau du calculateur afin de ne pas perturber son fonctionnement.
PADAWAN
Le logiciel PaDaWAn (Parallel Data Workflow for Analysis) a pour objectif de soulager les codes de calcul des opérations de transfert de données. Il s’appuie sur l’interface I/O existante et déporte les opérations de transfert sur des ressources informatiques distinctes, libérant les logiciels de simulation des aléas du système de fichier (filesystem). Son intervention, au niveau des informations transmises lors de l’exécution du code et durant leur transfert, le range parmi les solutions in transit. En jouant à la fois pour les codes le rôle d’écrivain pour les uns et de lecteur des données pour les autres, PaDaWAn permet un enchaînement d’applications sans recours aux unités de stockage.
PHOBOS
Phobos est un logiciel permettant la mise à disposition, sous une interface objet, de ressources de stockage distribuées et de nature très variée (disque, flash, disques SSD, bandes magnétiques, autre gestionnaires d'objets). Il permet de constituer des systèmes d’archivage à long terme robustes et capables de passer à l’échelle pour nos futures architectures de centre de calcul.
Robinhood
permet une gestion fine et avancée d'un système de fichiers en effectuant des audits réguliers qui lui permettent de conserver les informations sur le contenu du système de fichiers dans une base de données SQL. Il devient alors possible de réaliser des extractions d'informations précises et élaborées quant à l'utilisation des ressources selon différents critères (par taille, par groupe, par utilisateur). A ce titre, il fournit à l'administrateur une vision instantanée de son système de stockage. Robinhood dispose de fonctionnalités avancées pour gérer le système de fichiers LUSTRE, incluant la localisation physique des données, leur topologie (ou stripping) et l'utilisation du mécanisme de changelog (journal des modifications) pour mettre à jour en quasi temps réel un audit précédemment effectué, sans avoir à tout analyser à nouveau.
SELFIE
(Self and Light proFIling Engine) est un outil léger de profilage de codes de calcul. Il permet d'avoir un résumé de profilage en fin de job tout en ayant très peu d'impact sur les codes en terme de performance.
Shine
est un outil en ligne de commande pour configurer et administrer le système de fichiers parallèle Lustre sur un calculateur à architecture distribuée. Il permet de centraliser la configuration et simplifie les opérations courantes sur ce système de fichiers distribués. Il supporte de nombreuses fonctionnalités des dernières versions de Lustre (v1.8 et v2.x)
Shine est écrit en langage Python et utilise la bibliothèque ClusterShell développé par le CEA/DAM pour assurer le passage à l’échelle sur grands clusters.
SIGMUND
Sigmund est un outil dédié à l’exécution de tests de non-régression. Intégralement écrit en langage script pour des raisons de simplicité et de maintenabilité, il fournit un environnement dans lequel il est simple d’insérer un nouveau test. Sigmund est utilisé comme lanceur des tests de non-régression pour le produit NFS-Ganesha.
SNECPLAYER
Le logiciel SNECPLAYER permet d’afficher en stéréoscopie (vision en relief) des films composés de séries d’images de plusieurs millions de pixels sur un mur d’images constitué d’un ensemble de projecteurs, chacun étant piloté par un ordinateur différent (CPU+GPU). La particularité de cet outil est d’être capable de découper en parallèle les images en autant de parties qu’il y a de projecteurs à alimenter et de synchroniser l’affichage des images entre les projecteurs. L’outil est composé de deux logiciels distincts : le premier exécuté en parallèle prend en charge l’affichage des images et le deuxième constitue l’interface utilisateur de commande.
SPACE9
A l’échéance de la génération EXA 1 (202x), les supercalculateurs du CEA utiliseront des serveurs I/O proxies basés sur des protocoles 9P et RDMA (nouveau concept de délégateur d’I/O). Ces derniers disposeront d’implémentation client dans le noyau (kernel space) mais pas en espace utilisateur (user space).
La bibliothèque Space 9 en espace utilisateur (user space) d’accès aux systèmes de fichiers 9P et liop, via TCP ou RDMA, a un double objectif :
SSHPROXY
est un programme utilisé sur une passerelle pour connecter de manière transparente les utilisateurs vers des machines internes via le protocole SSH. Il supporte les outils scp, sftp, rsync et le déport graphique. Il offre un mécanisme d’équilibrage de charge pour la connexion aux machines internes, une personnalisation de la configuration par groupe ou utilisateur et des fonctionnalités avancées d’audit.
Sibyl
est un outil basé sur Miasm qui permet la recherche et l’identification de fonctions connues dans les binaires par l’analyse de leurs effets de bords.
Ce logiciel s’appuie sur Miasm pour démarrer une machine ‘’bac à sable’’ (sandbox), incorpore les éléments nécessaires (allouer une chaîne de caractères par exemple), puis place les arguments dans l’ordre attendu en tenant compte de l’ABI (Application Binary Interface) visée. La machine ‘’bac à sable’’ commence alors à exécuter le code, et si on atteint la fin de la fonction sans dysfonctionnement, on examine si les effets de bords sont ceux attendus. Si oui, on peut considérer que les probabilités sont élevées de disposer de la fonction attendue.
WI4MPI
(Wrapper Interface For MPI) est une bibliothèque qui permet de traduire les appels MPI fait par le code au moment de l'exécution (wrapper) d'une bibliothèque MPI vers une autre: un code compilé avec wi4mpi peut être exécuté indifféremment avec n'importe quelle bibliothèque MPI.