Sans efforts, vous pouvez faire de votre
simulateur DIFFPACK
un code exécutable sur machine parallèle
Une
solution accessible et facile à mettre en oeuvre
De fait, le
calcul parallèle a longtemps été réservé à une élite restreinte d’experts. Au
coût prohibitif des ordinateurs nécessaires s’ajoutaient les difficultés pratiques
de la programmation et son coût en temps de travail.
Avec le
développement des réseaux à haut débit et des grappes de machines à faible
coût, l’équipement nécessaire est devenu tout à fait accessible.
Et avec
DIFFPACK, la programmation est, en plus, devenue chose facile ! Il
suffit d’ajouter quelques instructions à votre programme puis d’assurer le
lien avec la « Parallel Toolbox » : il devient alors
exécutable dans un environnement multiprocesseurs.
Parallélisation
des algorithmes d’algèbre linéaire
La
« Parallel Toolbox » a été écrite pour parallèliser les algorithmes
d’algèbre linéaire de résolution de votre système d’EDP. Ceci est fait en
répartissant les données entre les processeurs. Cette répartition utilise au
mieux les caractéristiques topologiques du maillage, ce qui assure des
communications inter-processeur équilibrées et une grande vitesse
d’exécution.
L’exemple
suivant montre les résultats obtenus lors de la simulation, selon la méthode
des éléments finis, d’un problème de la forme
avec un maillage hautement non structuré.
Nb processeurs
CPU
seconde
Ratio de
vitesse
1
420
2
200
2,10
4
156
2,69
6
84
5,01
8
60
6,97
12
38
10,99
16
28
14,83
Ce problème a
environ 130 000 degrés de liberté et il utilise la fonction BiCGStab comme
solveur linéaire.
Flexible dans
son utilisation
La démarche
de parallélisation consiste à scinder le maillage en une matrice de
sous-systèmes qui se recouvrent. Chaque processeur traite un sous-système. La
contribution au système global de chaque sous-système est calculée, tandis
que les nœuds communs du maillage permettent d’évaluer les dépendances entre
les sous-systèmes.
Lors de
l’écriture de la version parallèle de votre programme, vous pourrez utilisez
la plupart des options disponibles en programmation séquentielle. Vous
pourrez ainsi utiliser des maillages structurés, ou non, dans des espaces à
1, 2 ou 3 dimensions. Vous pourrez choisir parmi différents solveurs,
différents pré-conditionneurs, etc.
Facile à
configurer
Les options
mises à votre disposition incluent la distribution des processus aux
processeurs, les algorithmes de découpage du maillage et de calcul de la zone
de recouvrement entre sous-systèmes.
Vous pouvez
aussi choisir d’importer la définition de chaque sous-système à partir de
fichiers ou de réaliser le découpage d’un maillage non structuré avec METIS
ou votre algorithme personnel.
Enfin, des
maillages structurés peuvent être construits en parallèle.
L’exemple
suivant donne les résultats pour la résolution de l’équation de Poisson en utilisant un
maillage structuré créé en parallèle :
Nb processeurs
CPU
seconde
Ratio de
vitesse
1
1025
2
493
2,08
4
254
4,03
6
172
5,94
8
124
8,25
12
79
12,95
16
58
17,68
Le problème a
environ 230 000 degrés de liberté et utilise le gradient conjugué comme solveur
linéaire. La croissance quasi-linéaire de la vitesse d’exécution est due à
des effets de caches.
Du PC en réseau aux
machines dédiées
La
« Parallel Toolbox » utilise le protocole de communication de MPI.
Une fois MPI installé sur votre machine, vous pouvez paralléliser vos
applications DIFFPACK sur une machine de calcul parallèle aussi bien que sur
des processeurs reliés par un réseau.
La licence
d’utilisation de la « Parallel Toolbox » est définie en nombre de
processus et non en nombre d’utilisateurs comme c’est le cas pour les autres
modules de DIFFPACK. Vous pouvez donc allouer l’ensemble des jetons à une
seule application ou bien les partager entre plusieurs.
La Multilevel Toolbox
Cette
boîte à outils est
un environnement
complet
de construction
de
solveurs multi-grilles performants
Des solveurs fonctionnant à
la vitesse optimale
Quand les solveurs multi-niveaux furent
découverts dans les années 1970, de nombreux experts refusèrent simplement
de croire que le calcul était en O(N) ! Aujourd’hui, des centaines de
publications scientifiques ont établi un riche environnement théorique et
l’optimalité de ces solveurs est bien comprise.
Etant des super-algorithmes, c’est à
dire composés de sous-algorithmes complexes, les solveurs multi-niveaux sont
non seulement les plus rapides et les plus adaptables mais aussi les plus
compliqués de tous les types de solveurs linéaires.
Atteindre la solution d’un problème de
grande taille requiert beaucoup de puissance de calcul, avec une forte
dépendance au problème et à sa mise en forme. Les configurations optimales
de problèmes spécifiques sont rarement obtenues par analyse. La mise au
point de solveurs multi-niveaux rapides repose donc sur l’expérimentation,
ce qui exige de grandes qualités de souplesse d’utilisation de la part des
fonctionnalités du logiciel.
Un cadre de travail pour solveurs multi-grilles
La « Multilevel Toolbox » de DIFFPACK est un
environnement complet de construction de solveurs multi-grilles performants
car dédiés. Sa conception ouverte permet les extensions à d’autres solveurs
multi-niveaux comme, par exemple, ceux fondés les techniques de
décomposition de domaines.
L’exemple suivant donne le nombre
d’itérations et le temps CPU pour la résolution de l’équation de Poisson
en utilisant des maillages structurés de tailles
différentes.
GC/RILU
GC/MG
MG
Taille
#it
CPU
#it
CPU
#it
CPU
4 225
44
0,47
5
0,14
7
0,14
16 641
81
3,69
5
0,64
7
0,67
66 049
146
27,20
5
2,69
7
2,77
263 169
265
194,60
5
11,00
7
11,02
De la gauche vers la droite, les
différents solveurs sont les gradients conjugués (GC) avec le
pré-conditionneur RILU, GC avec le pré-conditionneur multi-grilles (MG) et
un multi-grille seul. La configuration multi-grilles a été optimisée en
utilisant la fonction « boucle multiple » (1) de DIFFPACK.
Simple à utiliser
Environ 10 lignes de code, voilà ce qui
est nécessaire pour disposer, dans une application DIFFPACK existante, de
l’ensemble des options multi-grilles de la boîte à outils. Quand vous
convertissez votre programme en un code multi-grille, vous le munissez :
-
d’un maillage rudimentaire et des système linéaire et solveur
associés,
-
d’une hiérarchie de maillage,
-
de solveurs linéaires pour le pré- et le post-lissage,
-
des opérateurs de transfert entre niveaux de maillage.
Ces différents item peuvent être initialisés à
partir d’un fichiers d’entrée ou à l’aide d’un menu à l’exécution.
Facile à
configurer
Vous pouvez sélectionner des maillages
structurés, ou non, dans des espaces à 1, 2 ou 3 dimensions. La gestion de
la hiérarchie des maillages supporte des environnements multi-grilles
imbriqués ou non.
Vous pouvez choisir les pré- et
post-lisseurs disponibles dans la librairie DIFFPACK ; vous pouvez tout
aussi bien utiliser votre lisseur habituel.
Vous avez la même liberté de choix
quand vous gérez d’autres paramètres comme, par exemple, les projections,
les résidus, les itérations de lissage, les « cycles V ou W », etc. A l’aide
du menu système, vous pouvez définir des cas de calcul multiple, fonction de
différents nombres d’itérations et « cycles V/W », pour optimiser les
valeurs de ces paramètres pour un problème donné.
Vous pouvez aussi utiliser les solveurs
multi-grilles directement ou en tant que pré-conditionneurs pour d’autres
solveurs itératifs comme, par exemple, les solveurs de Krylov qui sont
inclus dans DIFFPACK.
Pour l’industrie aussi bien que pour la
recherche
Evidemment, la « multilevel toolbox » offre des gains
de temps considérables pour les applications industrielles à grande échelle.
Mais, grâce à souplesse d’ utilisation, la « multilevel
toolbox » est aussi le parfait environnement de laboratoire pour ceux qui
s’intéressent principalement à la recherche.
(1)Pour cet exemple particulier, la fonction boucle multiple de DIFFPACK a été utilisée pour
tester :
- les candidats comme pré- et post- lisseurs,
- le nombre d’itérations pour les
pré- et post- lisseurs,
- les « cycles V ou W »,
- le solveur pour le maillage
rudimentaire.
L’étude de
convergence a mis en évidence la sensibilité particulière des résultats au
choix du lisseur.
L'Adaptivity
Toolbox
Le
maillage adaptatif est
la garantie d’obtenir
une
solution de précision optimale,
pour
les moyens de
calcul disponibles
Le maillage adaptatif, c’est plus de précision
Pour la plupart des problèmes d’EDP, la précision de
la solution dépend fortement de la taille mémoire de votre machine et du
temps de calcul disponible. Un maillage adaptatif équilibrera vos calculs de
façon à obtenir une meilleure précision, pour réduire le temps de calcul et
la mémoire nécessaire. Et, de ce fait, vos programmes vous permettront de
prendre de meilleure décision.
Typiquement, la solution recherchée montre des
singularités ou d’autres effets. Les régions critiques doivent être traitées
avec un maillage fin tandis que les autres zones auront un maillage plus
grossier. Pour les problèmes dépendants du temps, le maillage devra évoluer
en fonction du temps, selon l’évolution de critères sensibles : gradients ou
autres mesures.
L’effet du maillage adaptatif peut être substantiel.
Pour certains problèmes, il serait même impossible d’atteindre une solution
significative sans lui.
Une gestion souple, sans programmation
supplémentaire
En combinant la souplesse des Méthodes aux Eléments
Finis de l’environnement DIFFPACK avec la puissance de la « Adaptivity
Toolbox », vous obtenez une gestion fine des techniques de maillage
adaptatif au service de la qualité de vos simulations.
En ajoutant quelques instructions à un simulateur
DIFFPACK, vous avez immédiatement accès à des stratégies d’amélioration du
maillage, pour des maillages structurés ou non, dans des espaces à 1, 2 ou 3
dimensions.
La stratégie d’amélioration est divisée en trois
étapes :
1. donner un poids à chaque élément du maillage,
2. marquer les éléments cibles selon les valeurs de poids,
3. calcul du maillage amélioré.
Un ensemble de fonctions d’assignation de poids est
à votre disposition, basées sur les valeurs de champ ou les gradients par
exemple. Vous pouvez aussi, facilement, définir vos propres fonctions de
poids qui exploiteront au mieux les spécificités de votre problème.
Pour le marquage, vous pouvez utiliser des
comparaisons entre les valeurs absolues ou les valeurs relatives des poids
parmi votre sélection de valeurs seuils.
Pour les
problèmes fonction du temps, vous pouvez choisir de démarrer une nouvelle
amélioration à n’importe lequel des niveaux dans la hiérarchie des
maillages.
La Datafilter Toolbox
Cette boîte à outils vous permet
de charger dans DIFFPACK
les maillages standards de l’industrie
Importation facile
En complément aux pré-processeurs disponibles
dans l’environnement DIFFPACK, la « Datafilter Toolbox » permet
d’importer aisément et en toute sécurité des maillages aux éléments
finis obtenus avec des pré-processeurs externes.
Vous pouvez ainsi utiliser l’ensemble des
fonctionnalités de votre pré-processeur favori et, ensuite, charger
directement dans votre application DIFFPACK le maillage et les
conditions aux limites ainsi obtenus.
La plupart des pré-processeurs commerciaux
savent enregistrer leurs résultats selon au moins l’un des trois
formats standards suivants :
- Abaqus
- Ansys
- Nastran
Pour assurer une large ouverture vers les
pré-processeurs externes, la « Datafilter Toolbox » supporte ces trois
formats.
Utilisable de deux manières
Vous pouvez utilisez la « Datafilter Toolbox »
comme une librairie ou comme un ensemble de logiciels autonomes :
- Comme librairie, elle donne à vos applications DIFFPACK
la capacité à analyser les fichiers de données et à importer
directement maillage et conditions aux limites. Dans ce mode, les
données lues à partir du fichier servent à construire un objet
« maillage aux éléments finis » intégré à votre application.
- Comme ensemble de logiciels autonomes, elle accepte les
fichiers de maillage externes en entrée et génère des fichiers de
maillage DIFFPACK en sortie.
Autres outils pré-processeurs
Les pré-processeurs fournis avec
l’environnement DIFFPACK supportent les treillis, … et possèdent des
interfaces avec GeomPack et Triangle.
La
« Adaptivity Toolbox » permet un contrôle fin des améliorations à
apporter aux maillages, ce qui accroît la puissance de
l’ensemble.