Pic-Vert.zip (11.74 MB)

Software artifacts for Euro-Par 2018 paper: "Efficient Strict-Binning Particle-in-Cell Algorithm for Multi-Core SIMD Processors"

Download (11.74 MB)
posted on 28.08.2018 by Yann Barsamian, Arthur Charguéraud, Sever A. Hirstoaga, Michel Mehrenberger
This dataset contains artifacts relating to the results presented in the Euro-Par 2018 conference paper entitled "Efficient Strict-Binning Particle-in-Cell Algorithm for Multi-Core SIMD Processors".

The paper describes a multi-core PIC algorithm that achieves close-to-minimal number of memory transfers with the main memory, while at the same time exploiting SIMD instructions for numerical computations and exhibiting a high degree of OpenMP-level parallelism.

A README file titled Overview_document.pdf outlines the purpose and dependencies of the software, as well as instructions for compiling and running it.

The processes used to demonstrate the performance, validation and verification of the software are also described.

This artifact is composed of several folders:

# include and src contain all the modular code for Pic-Vert (as .h and .c files). By opening them, it is possible to check that we implemented the data structures we describe in the
– compiler_test.h: compiler check to know which features we can use.
– diagnostics.c/h: electric field diagnostics.
– fields.c/h: data structure for the electric fields.
– hdf5_io.c/h: handling of HDF5 outputs.
– initial_distributions.c/h: possible initial distributions of particles.
– math_functions.h: useful mathematical functions not already in standard libraries.
– matrix_functions.c/h: dynamic allocation of arrays.
– meshes.c/h: data structure for the grid.
– output.c/h: handling of outputs other than HDF5.
– papi_handlers.c/h: handling of PAPI performance counters.
– parameter_reader.c/h: reading parameter files for simulations.
– parameters.h: useful parameters (architecture, mathematics, simulation. . . )
– particle_type_concurrent_chunkbags_of_soa_XXX.c/h: data structure for particles.
– poisson_solvers.c/h: data structure for the FFT Poisson solver.
– random.c/h: pseudo-random number generators available.
– rho.c/h: data structure for the charge density.
– space_filling_curves.c/h: use of space-filling curves in the code.
– variadic.h: allows to write function with default arguments in C.
# simulations contains the PIC simulations that we used for this article, and that uses the files in the previous point.
# scripts contains the compile and run scripts for our simulations.
# memory contains spread sheets to compute the number of particles you should put in the simulation, given your architecture (prior to compilation).
# Stream-test contains the Stream benchmark
# post-process contains scripts to “automate data extraction and the production of plots”.
# sample-outputs contains “files that represent expected outputs”.


This work has been carried out within the framework of the EUROfusion Consortium and has received funding from the Euratom Research and Training Program 2014-2018 under Grant Agreement No. 633053.


Research Data Support

Research data support provided by Springer Nature.