• Aucun résultat trouvé

A.7 Outils d’aide à la programmation

A.7.3 tests Automatiques

Un autre aspect important pour travailler en équipe sur un code, ou même seul, à implémenter des tests unitaires pour tester toutes les parties importantes du code. Cmake permet de créer cette zone de tests. C’est un peu fastidieux à construire, mais cela simplifie grandement le debogage. Chaque fois qu’une modification est iintroduite, l’idée est de faire passer tous les tests avant de sauvegarder ces changements dans la base de SVN. Plus, il y a de tests qui recouvrent la plus grande partie du code, plus cela devient efficace. Avec Alain Miniussi, nous partions d’un code existant et voulions le modifier sans affecter les résultats. Cette collection de tests automatiques, est finalement la seule manière de progresser en gardant une continuité.

Voir ci dessous une partie de la sortie de notre code cubby : ponty@dragon : /trunk ctest

Test project /home/ponty/trunk Start 1 : io

1/70 Test #1 : io ... Passed 1.38 sec Start 2 : scl-fft-estim

2/70 Test #2 : scl-fft-estim ... Passed 1.07 sec Start 3 : vec-fft-estim

3/70 Test #3 : vec-fft-estim ... Passed 1.06 sec Start 4 : scl-fft-exhau

4/70 Test #4 : scl-fft-exhau ... Passed 7.57 sec Start 66 : sphere_128_0_9375_smooth

66/70 Test #66 : sphere_128_0_9375_smooth ... Passed 3.46 sec Start 67 : cylinder_128_0_9375_0_063_raw

67/70 Test #67 : cylinder_128_0_9375_0_063_raw ... Passed 3.14 sec Start 68 : cylinder_128_0_9375_0_063_smooth

68/70 Test #68 : cylinder_128_0_9375_0_063_smooth ... Passed 2.79 sec Start 69 : ztorus_128_0_9375_raw

69/70 Test #69 : ztorus_128_0_9375_raw ... Passed 3.81 sec

Start 70 : ztorus_128_0_9375_smooth 70/70 Test #70 : ztorus_128_0_9375_smooth ... Passed 3.19 sec

100% tests passed, 0 tests failed out of 70 Total Test time (real) = 356.21 sec

68 Annexe A. Méthodes numériques et diagnostics

A.8 Perspectives

Depuis juin 2006, avec un ingénieur de recherche du mésocentre de calcul intensif local (UNS/OCA), spécialiste en C++ et génie logiciel, nous nous sommes lancés dans une refonte et une amélioration de la structure objet C++ du code parallèle que j’ai développé en 2001-2002. Nous nous efforçons depuis 2009 de rendre «notre» code beaucoup plus dynamique, de créer des objets génériques "template" qui per-mettront de construire facilement d’autres algorithmes pour d’autres problèmes ou des équations physiques supplémentaires. Nous allons utiliser les méthodes de pro-grammation objet et des bibliothèque en méta-langage pour la construction d’une bibliothèque d’objets permettant de calculer en parallèle avec MPI, un couplage d’équations aux dérivées partielles (EDP) avec des méthodes pseudo-spectrales. A cours et moyen terme, cette bibliothèque pourra être utilisée par mes étudiants et collaborateurs, à long terme, après une phase de validation, une mise à disposition pour la communauté scientifique est envisagée. Notamment, nous nous efforçons de rendre dynamique le fait de choisir le découpage de l’espace de calcul qui est dis-tribué sur les processeurs, selon deux représentations : un découpage en tranches (actuel) ou en bâtonnets (en développement). Le second permettra une plus grande distribution des taches sur beaucoup plus de processeurs. En effet, la première repré-sentation a une nombre limité de tranche N ( si la résolution est N3 ). Nous avons aussi en projet de rendre cette bibliothèque accessible aux architectures hybrides (MPI, muti-thread) ou (MPI, GPU) . Cet effort me permettra d’utiliser pleinement les architectures massivement parallèles et d’atteindre des résolutions et des régimes turbulents encore inaccessibles. Notre code est inclu dans un projet plus vaste, qui comprend différentes géométries : (plane, torique et sphérique), ainsi que l’utilisation d’une bibliothèque qui est optimisée pour le GPU et le «multithread». Ce projet sera soumis a une appel d’offre ANR et porte le nom de «MetalSpectral» (Meta Langage for Spectral Method) (voir FigA.19).

A.8. Perspectives 69

FigureA.19 – Notre équipe composée d’informaticiens et de physiciens, est motivé pour construire une bibliothèque en C + + qui permettra de résoudre de nombreux problèmes de physique, en simulant des équations différentielles partielles (PDE) avec des méthodes pseudo-spectrales dans différentes géométries (cube périodiques, plaque, tore ou sphère). Cette bibliothèque sera offerte à la communauté scientifique et nous espérons commencer une synergie, où les utilisateurs pourraient développer leurs propres outils et augmenter la gamme de module de la bibliothèque MetaLS-pectral. Elle permettra d’effectuer des calculs intensifs sur tout type d’architecture allant du simple ordinateur portable au calculateur Petaflopique. La construction d’outils permettant une bonne utilisation des machines massivement parallèles de-vient une priorité, mais nécessite un investissement récurrent. Notre outil pourra s’adapter, sans tout recommencer, aux différentes architectures présentes et même futures. Cette bibliothèque sera facile à utiliser et à mettre en oeuvre. Les utilisa-teurs n’auront pas besoin d’entrer dans les détails de la parallélisation MPI, GPU ou multi-thread. Les objets (des champ scalaires et vectoriels) construits avec leurs opérateurs mathématiques seront le coeur de MetaLSpectral. Les utilisateurs de-vront simplement coder leurs schémas temporels et leur système PDE, avec un meta langage de programmation. Une optimisation automatique suivant l’architecture de l’ordinateur sera incluse à un plus bas niveau de la bibliothèque. Une structure suffi-samment générique des objets permettra cette dissociation entre optimisation et im-plémentation, notamment à travers l’élaboration d’interfaces entre des bibliothèques de transformation spectrales (FFT (www.fftw.org , www.spiral.net ), transformation de Legendre-Fourier), et une bibliothèque optimisée pour des calculs de bas niveau sur des architectures hybrides GPU, multi-thread et MPI ( http ://nt2.metascale.org ).

Annexe B

Publications

Sommaire B.1 Induction Magnétique. . . . 72 B.1.1 Notes personnelles . . . . 72 B.2 Dynamo et Seuil . . . . 77 B.2.1 Notes personnelles . . . . 77 B.3 Seuil et champ moyen . . . . 82 B.3.1 Notes personnelles . . . . 82 B.4 Forçage de Taylor-Green et effets non-linéaires . . . . 94 B.4.1 Notes personnelles . . . . 94 B.5 Bifurcation sous critique . . . 106 B.5.1 Notes personnelles . . . 106 B.6 Dynamo intermittentes . . . 112 B.6.1 Notes personnelles . . . 112 B.7 Tous ensembles . . . 120 B.7.1 Notes personnelles . . . 120 B.8 Dynamo à grande et petite échelle . . . 129 B.8.1 Notes personnelles . . . 129

72 Annexe B. Publications

B.1 Induction Magnétique