Implementing task based parallelism for plasma kinetic code

Project reference: 2019
Due to plasma complexity, different mathematical models depending on the different physical aspects are used for describing plasma. The most complete and used plasma description is the kinetic model, which describes the motion of each particle in plasma. From mathematical point of view this requires solving the relativistic Vlasov-Boltzmann equations with the Maxwell equations for electromagnetic fields. Currently, as a tool the Particle-in-cell (PIC) codes are used for magnetic modelling. Particle-in-cell simulation is a well-established technique which has spawned dozens of codes around the world, (e.g. BIT1, VPIC, VSIM, OSIRIS, REMP, EPOCH, SMILEI, FBPIC, GENE, WARP, PEPC), in which some simulate up to 1012 particles on 106 HPC cores.
In this project we will use a basic parallelized PIC code. The aim is to provide a programm that will read all the output files, join them and create profile graphs. The profile graphs gives information for the simulated plasma, such as: ion/electron temperature, density, velocity and in some cases neutrals.
Furthermore a runtime task scheduler (StarPU: A Unified Platform for Task Scheduling on Heterogeneous Multicore Architecture, doi:10.1002/cpe.1631) will be investigated on how to improve the simple PIC to run on GPUs.
Task based parallelisation approach offers heterogeneous parallel computing. By providing codelets, (i.e., performing arithmetic operation, such as vector vector multiplication, on GPU) in to the simple PIC code and apply where possible.

The StarPU runtime system and PIC codes algorithm
Project Mentor: MSc. Ivona Vasileska
Project Co-mentor: Prof. Dr.Leon Kos
Site Co-ordinator:Dr. Pavel Tomšič
Participants: Paddy Cahalane, Shyam Mohan Subbiah Pillai, Víctor González Tabernero
Learning Outcomes:
The student will learn and improve their skills in general programming and visualization as well as getting a glimpse in parallel computing.
The student will learn how to implement this method in plasma kinetic codes.
Student Prerequisites (compulsory):
Programming skills, knowledge in OOP, plasma physics and kinetic plasma theory.
Student Prerequisites (desirable):
Advanced knowledge in python and plasma physics. Familiar with Linux and HPC. Basic knowledge in kinetic plasma modelling.
Training Materials:
StarPU documentation:
http://starpu.gforge.inria.fr/
http://starpu.gforge.inria.fr/doc/html/BasicExamples.html
OpenMPI documentation:
https://www.open-mpi.org/doc
https://computing.llnl.gov/tutorials/mpi
PIC codes:
https://ptsg.egr.msu.edu/
Matplotlib:
https://www.tutorialspoint.com/matplotlib/index.htm
PyQt5:
https://build-system.fman.io/pyqt5-tutorial
Workplan:
- W1: Introduction and training week;
- W2: Learning the kinetic plasma codes (creating, running cases. analysing the results)
- W3-7: Implementing a visualization program for the code
Final Product Description:
The final results of this project are:
- Providing a visualization tool for PIC code
- Improving the speed of the provided simple PIC if possible;
- Analysing the simulations results.
Adapting the Project: Increasing the Difficulty:
If the outcome is more than successful, prepare a detailed documentation on integrating StarPU into existing phyisics code.
Adapting the Project: Decreasing the Difficulty:
Focus only on providing a tool for visualization of the simple PIC code.
Resources:
HPC cluster at University of Ljubljana, Faculty of Mechanical Engineering, and other available HPCs and HPC Marconi.
Leave a Reply