Adaptive SIMD optimizations in particle-in-cell codes with fine-grain particle sorting
Arnaud Beck, Julien D\'erouillat, Mathieu Lobet, Asma Farjallah,, Francesco Massimo, Imen Zemzemi, Fr\'ed\'eric Perez, Tommaso Vinci, Mickael, Grech

TL;DR
This paper presents an adaptive SIMD optimization strategy for particle-in-cell codes, specifically in the Smilei code, which dynamically switches between scalar and vectorized operations to improve performance across varying particle densities.
Contribution
It introduces an adaptive algorithm that optimally switches between scalar and SIMD vectorized operations in PIC codes based on local particle count, enhancing efficiency.
Findings
Speedup of 2x in 3D simulations with 256 particles per cell
Adaptive switching improves performance in low and high particle density regions
Benchmarking on large-scale simulations demonstrates effectiveness
Abstract
Particle-In-Cell (PIC) codes are broadly applied to the kinetic simulation of plasmas, from laser-matter interaction to astrophysics. Their heavy simulation cost can be mitigated by using the Single Instruction Multiple Data (SIMD) capibility, or vectorization, now available on most architectures. This article details and discusses the vectorization strategy developed in the code Smilei which takes advantage from an efficient, systematic, cell-based sorting of the particles. The PIC operators on particles (projection, push, deposition) have been optimized to benefit from large SIMD vectors on both recent and older architectures. The efficiency of these vectorized operations increases with the number of particles per cell (PPC), typically speeding up three-dimensional simulations by a factor 2 with 256 PPC. Although this implementation shows acceleration from as few as 8 PPC, it can be…
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.
