Implementing task based parallelism for plasma kinetic code

Implementing task based parallelism for plasma kinetic code
The StarPU runtime system and PIC codes algorithm

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 CahalaneShyam 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.

Organisation:
University of Ljubljana
project_1620_logo-uni-lj

Tagged with: , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.