Description

The aim of this project is to parallelize existing routines used in the OpenPixi simulator. The Particle-In-Cell simulations use a large number of particles within a fixed grid. The grid and the particles should be split so that they can run on different cores of a CPU, or even on different computers. The first step of the project, which is written in Java, is to implement a reference parallel implementation using Threads. The next step could be (depending on the interest of the student) a fast implementation in C/C++ using MPI (Message Passing Interface) for scaling the application to clusters and supercomputers. Alternatively, an implementation which utilizes OpenCL could be developed in order to make full use of the calculation power of GPUs (graphics processing units) on personal computers, or larger GPU clusters dedicated to large-scale simulations. In any case, automatable test cases must ensure that the results agree with the single threaded version of the code.

Benefit for the Student

The student will learn about physics simulations and how to parallelize them for best performance. Depending on the student's interest, the student will either learn more about the MPI standard, or about OpenCL.

Benefit for the Project

The project will receive a very fast parallel implementation of existing routines.

Requirements

Good skills of Java and C/C++. Knowledge of MPI or OpenCL is of advantage.

Mentors

Andreas Ipp, Kirill Streltsov

Contact

Send an email to This email address is being protected from spambots. You need JavaScript enabled to view it. (first subscribe here) using the prefix [pixi].

More Information

For the application process, please fix one of the OpenPixi issues at GitHub, provide a patch that adds multi-threaded capabilities to the current version of OpenPixi, or provide a small demo application that uses MPI or OpenCL and implements one of the routines of the java version of OpenPixi in parallel. Moreover, check our wiki for updates.