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

<div>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".</div><div><br></div><div>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.</div><div><br></div><div>A README file titled Overview_document.pdf outlines the purpose and dependencies of the software, as well as instructions for compiling and running it.</div><div><br></div><div>The processes used to demonstrate the performance, validation and verification of the software are also described.</div><div><br></div><div>This artifact is composed of several folders:</div><div><br></div><div># 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</div><div>paper:</div><div>– compiler_test.h: compiler check to know which features we can use.</div><div>– diagnostics.c/h: electric field diagnostics.</div><div>– fields.c/h: data structure for the electric fields.</div><div>– hdf5_io.c/h: handling of HDF5 outputs.</div><div>– initial_distributions.c/h: possible initial distributions of particles.</div><div>– math_functions.h: useful mathematical functions not already in standard libraries.</div><div>– matrix_functions.c/h: dynamic allocation of arrays.</div><div>– meshes.c/h: data structure for the grid.</div><div>– output.c/h: handling of outputs other than HDF5.</div><div>– papi_handlers.c/h: handling of PAPI performance counters.</div><div>– parameter_reader.c/h: reading parameter files for simulations.</div><div>– parameters.h: useful parameters (architecture, mathematics, simulation. . . )</div><div>– particle_type_concurrent_chunkbags_of_soa_XXX.c/h: data structure for particles.</div><div>– poisson_solvers.c/h: data structure for the FFT Poisson solver.</div><div>– random.c/h: pseudo-random number generators available.</div><div>– rho.c/h: data structure for the charge density.</div><div>– space_filling_curves.c/h: use of space-filling curves in the code.</div><div>– variadic.h: allows to write function with default arguments in C.</div><div># simulations contains the PIC simulations that we used for this article, and that uses the files in the previous point.</div><div># scripts contains the compile and run scripts for our simulations.</div><div># memory contains spread sheets to compute the number of particles you should put in the simulation, given your architecture (prior to compilation).</div><div># Stream-test contains the Stream benchmark</div><div># post-process contains scripts to “automate data extraction and the production of plots”.</div><div># sample-outputs contains “files that represent expected outputs”.</div><div><br></div>