PALM est un coupleur très largement utilisé par la communauté scientifique dans des domaines très différents comme l’assimilation de données le couplage de modèles parallèles, l’emboitement de modèles. C’est un coupleur dynamique (un composant peut être lancé au cours de la simulation et rendre ses ressources lorsqu’il a terminé) et parallèle (PALM attribue le nombre de processus nécessaires à chaque unité de calcul et autorise un parallélisme de tâche). Il offre ainsi une très grande souplesse pour essayer différentes tactiques de couplage et équilibrer les charges sur un calculateur.
La programmation des applications PALM se fait au travers d’une interface graphique utilisateur (IHM PrePALM). Dans cette interface, on s’applique dans un premier temps à définir l’algorithme de couplage : nombre de composants, organisation séquentielle ou parallèle, codage des boucles autour des composants, gestion des ressources. Dans un second temps les communications effectives entre les composants sont décrites. Tous les mécanismes de synchronisation, de gestion de la mémoire, inhérents au calcul parallèle sont présents à ce niveau pour programmer des applications fonctionnelles et efficaces.
Pour optimiser les développements, PALM offre une boîte à outil qui interface les opérations d’algèbre linéaire comme des gradients conjugués pour la minimisation ou toutes les routines de base des librairies mathématiques les plus utilisées (BLAS et LAPACK). Cette boîte à outil s’enrichit peu à peu de fonctions génériques comme l’interpolation spatiale des données. Toutes ces opérations sont accessibles directement via l’interface graphique PrePALM.
PALM offre de plus la possibilité de suivre en temps réel et de manière graphique l’évolution des calculs et l’utilisation des ressources cpu et mémoire.
Le coupleur peut aussi être facilement instrumenté pour calculer les performances globales de l’application parallèle. Des statistiques sur le temps cpu ou elapsed passé à l’exécution des composants, dans les communications, etc, permettent d’optimiser les applications couplées dans leur phase de mise au point.
Il dispose également d’outils de débogage pour visualiser le contenu des champs échangés, rejouer l’application pour voir à quel moment une erreur est survenue.
Les différents langages compilés (C, C++, Fortran) sont supportés.
PrePALM permet de faire de la lecture / écriture sur des fichiers NetCDF.
PALM compte maintenant une centaine d’utilisateurs en France et à l’étranger qui se répartissent pour moitié sur des problèmes d’assimilation de données (océanographie, hydrologie, chimie, neutronique ) et pour une autre moitié sur des problème de couplage multi-physique plus classiques (mécanique de fluides et des structures, rayonnement, approche par composants, optimisation de forme, imbrication de modèles,…).
PALM dispose d’une interface graphique très conviviale, le coupleur a été conçu pour développer un couplage dynamique parallèle de façon intuitive. Cependant, il offre un tel nombre de possibilités et de réglages qu’un nouvel utilisateur a généralement besoin d’une formation pour se familiariser avec les différentes fonctionnalités du coupleur.
La formation de base dure trois jours et se tient régulièrement au CERFACS. Sur demande elle peut être organisée chez les utilisateurs.
Des sessions spécifiques ciblées sur des domaines d’applications précis peuvent être organisées sur demande.