High Performance Implementation of Boris Particle Pusher on DPC++. A First Look at oneAPI
Valentin Volokitin, Alexey Bashinov, Evgeny Efimenko, Arkady Gonoskov,, Iosif Meyerov

TL;DR
This paper explores porting the computationally intensive Boris particle pusher algorithm to the oneAPI framework, demonstrating minimal performance loss on CPUs and effective execution on Intel GPUs, thus supporting portable high-performance supercomputing applications.
Contribution
The paper presents a successful port of Boris particle pusher to oneAPI, showing minimal performance degradation and broad hardware compatibility for supercomputer simulations.
Findings
DPC++ port is ~10% slower on CPUs compared to optimized C++
Code runs effectively on Intel GPUs without specific optimizations
Porting effort is straightforward, enabling hardware-agnostic development
Abstract
New hardware architectures open up immense opportunities for supercomputer simulations. However, programming techniques for different architectures vary significantly, which leads to the necessity of developing and supporting multiple code versions, each being optimized for specific hardware features. The oneAPI framework, recently introduced by Intel, contains a set of programming tools for the development of portable codes that can be compiled and fine-tuned for CPUs, GPUs, FPGAs, and accelerators. In this paper, we report on the experience of porting the implementation of Boris particle pusher to oneAPI. Boris particle pusher is one of the most demanding computational stages of the Particle-in-Cell method, which, in particular, is used for supercomputer simulations of laser-plasma interactions. We show how to adapt the C++ implementation of the particle push algorithm from the Hi-Chi…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
