Plasma Meets Portability: A Journey to Performance Portability in a Particle-in-Cell Code
TimeSunday, November 11th2:52pm - 2:54pm
DescriptionIn our journey to exascale, it is imperative that applications not only run efficiently, but do so on a wide variety of platforms at a reasonable cost. Codes must thus deal with a explosion of diversity among emerging architectures while avoiding a corresponding explosion in code size. This requires that HPC developers make their codes performance portable, that is, able to efficiently utilise the resources of each targeted platform, while simultaneously building a codebase in which they can work productively. For our work, we focus primarily on the Vector Particle in Cell (VPIC) application. VPIC is a plasma physics code that is highly performant, but past efforts to make it more portable have come at a heavy maintenance cost. In order to alleviate this cost, we leverage a portability framework called Kokkos to maximize both the code shared between platforms and the performance of the application. Throughout the port, we apply a logging tool to gather data on the development process.
We also analyze a VPIC Kernel which was successfully ported to Kokkos. The ported version can now run on GPUs, where the original cannot, and on CPUs, where their performance is on par with the original. This is accomplished with a single codepath. Comparing performance across all tested platforms shows that the port increased the application’s performance efficiency. We couple this performance assessment with analysis of the port itself, based on data from the logging tool. Preliminary analysis of the data shows three stages in the development workflow.