Section: New Software and Platforms
SCHNAPS - KIRSCH
Participants : Emmanuel Franck, Pierre Gerhard, Philippe Helluy, Michel Massaro, Malcolm Roberts, David Coulette, Laura Mendoza, Bruno Weber.
SCHNAPS: Solveur pour les lois de Conservation Hyperboliques Non-linéaires Appliqué aux PlasmaS
The future computers will be made of a collection of thousands of interconnected multicore processors. Globally, it appears as a classical distributed memory MIMD machine. But at a lower level, each of the multicore processors is itself made of a shared memory MIMD unit (a few classical CPU cores) and a SIMD unit (a GPU or Xeon Phi). When designing new algorithms, it is important to adapt them to this kind of architecture. Practically, we use the MPI library for managing the coarse grain parallelism, while the OpenCL library efficiently operate the fine grain parallelism.
We have invested for several years until now into scientific computing on GPUs, using the open standard OpenCL (Open Computing Language). We were recently awarded a prize in the international AMD OpenCL innovation challenge thanks to an OpenCL two-dimensional Vlasov-Maxwell solver that fully runs on a GPU. OpenCL is a very interesting tool because it is an open standard now available on almost all brands of multicore processors and GPUs. The same parallel program can run on a GPU or a multicore processor without modification. OpenCL programs are quite complicated to construct. For instance it is difficult to distribute efficiently the computation or memory operations on the different available accelerators. StarPU http://starpu.gforge.inria.fr/ is a runtime system developed at Inria Bordeaux that simplifies the distribution of tasks on heterogeneous compute units. We have started to use this software tool in SCHNAPS.
Because of the envisaged applications, which may be either academic or commercial, it is necessary to conceive a modular framework. The kernel of the library is made of generic parallel algorithms for solving conservation laws. The parallelism can be both fine-grained (oriented towards GPUs and multicore processors) and coarse-grained (oriented towards GPU clusters). The separate modules allow managing the meshes and some specific applications. With our partner AxesSim, we also develop a C++ specific version of SCHNAPS for electromagnetic applications.
Since the middle of the year a specific version of SCHNAPS (called KIRSCH for Kinetic Representation of SChnaps) has been developed to handle Lattice Boltzmann schemes for MHD and fluid simulations.
SCHNAPS and KIRSCH are a generic Discontinuous Galerkin solver and an implicit Lattice Boltzmann solver, written in C, based on the OpenCL, MPI and StarPU frameworks.