We propose to provide the scientific community with a toolbox that will help handling the multi-physic problems that can be addressed through the solving of Partial Differential Equations (PDE) with pseudo-spectral methods in different geometries (a periodic box, slab, torus or a sphere). One of our objective is to allow the scientists of the field to exploit the possibilities of the today’s many-core machines while isolating them from the complexity inherent to that kind of software development, which must deal with issues such as: shared and distributed memory, multi-core and multi-cpu computing nodes, multi-threading and multi processing, hybrid and homogeneous architecture, and so on.
One of the main difficulties of such a project being the apparent contradiction between the need to get answers as quickly as possible in an highly competitive environment and the time required to craft and maintain a useful, efficient, easy to use and ever adapting piece of software. Considering only one side of the problem is bound to fail. Thus, to address this daunting task, we take the pragmatic decision to build a team where physicists and computer scientists will collaborate. We are also committed to make this an open source software development effort: indeed, the adoption, and hopefully the contributions, by the scientific community will be a strong indicator of success, or failure. It is our hope to initiate a synergy were users could develop their own tool on top of SpecTLib, provide their own optimisations or simply their testing of the tool.
We will develop a multi layer library written mostly in C++ (although bindings will be provided that will ease collaborations with now well established communities, and existing efforts such as BLAS and FFTW will be leveraged) that will be easy to use for the scientific users, who will not have to enter into the technicalities of MPI programming, multi threading and accelerators such as GPUs. We want them to concentrate on what there are best at: write their temporal schemes with their relevant PDE system (some examples will be provided). But on the other hand, the modularity of our framework will also allow computer scientists and software engineers to contribute on the other side of the library, providing optimisations, support for new hardware and architecture, without impacting the user code.
With such tool boxes, teams exploring problems with pseudo-spectral methods will be able to compute on PetaFLOPS computers at high resolution problems from thousand cube to few thousands cube grid point.
The number of topics covered by those numerical techniques and geometries proposed are huge. For example in hydrodynamics, we will be able to reach the fully turbulent regime driven by convection instability, high rotation, shear instability (slab geometry), MHD, geodynamo, passive scalar, and the list is far away from being exhaustive. With the use of "MetalSpectral", we will be able to use high parallel computers, reaching highly non linear regimes. The results will impact a wide range of scientific domains such as environmental issues (pollution, geophysical applications, the atmosphere, geodynamo, mantle convection, astrophysics, planetary disk, solar dynamics, ...) , and all the experimental comparisons possible in turbulence topics.
It is true that the shape of our computation domain can be considered classic or academic, also the spectral techniques are well known and study since 40 years, but in this framework, we will be able to offer one of the most precise computer schemes able to carefully follow long term integration and transition to the turbulence, non linear phenomena’s in an optimized way.
We propose the following :
Template spectral library for solving PDE systems for multi-physics, multi-scale problems, available in an open-source project for the scientific community.
A tri-periodic computing domain, slab, torus and spherical geometry.
The classic Legendre-Fourier transform for spherical harmonic will be optimized with a new algorithm for sharing memory nodes with multi-thread distribution.
This library will be designed in order to work and optimize the PetaFLOPS computers.
The distributed library MPI and multi-threading computation will be mixed, as the GPU.
We propose automatic optimisation strategies to fit the size, and the architecture of the computer ( decision tree, dependence analysis) .
Our library will include treatment "on the fly", able to produce diverse diagnostics and reduce the amount of data needing to be saved (exhaustive data saving would be overwhelming), by using a special wavelet transform of the computed fields, on-line with our code.
We propose a hierarchy of Template Method (using Design Pattern terminology) classes that the users will be able to use or extends for building theirs simulation loops ;
A communicator interface will be designed to send data into advanced diagnostics module or other codes working on extra CPU space (i.g. Wavelet module, Lagrangian trajectories, inertial particles , visualisation 3D, large IO).
Binding for the python language of the library for interactive command or python script and integration with well established environments such as Sage.
Sample applications, including incompressible hydrodynamic and magnetohydrodynamic.
The library and various software components will be provided under the control and protection of the CeCILL licence (www.cecill.info), a French adaptation of the GPL licence. SpecTLib will be available in the form of released packages and through a publication available version control system such as subversion. A bug tracker will also be available to the public who will be allowed (and encouraged) to submit bug reports and new feature requests. Obviously, documentation quality will be considered a paramount requirement. Some part of the effort will be proposed to the boost group (www.boost.org).