-
Notifications
You must be signed in to change notification settings - Fork 0
HDF5
You are here: Home > PIConGPU User Documentation > Post processing and Visualization > HDF5
PIConGPU uses HDF5 as its primary output format for simulation data. We use libSplash for HDF5 input/output which simplifies data access for large-scale simulations. HDF5 is a hierarchical data format for large datasets stored in binary. Even though libSplash is used for writing the data, any HDF5-based tool or library is able to access the data for reading and analysis.
In PIConGPU, most simulation data is stored on disk using the HDF5Writer plugin. It uses libSplash to create parallel HDF5 files, which means that data from all MPI processes is stored in a single file using MPI I/O to allow for high scalability and easy post-processing. Please note that MPI I/O primarily targets parallel file systems such as Lustre or GPFS. Thus, I/O performance may not be optimal if used on a non-parallel file system.
The HDF5Writer plugin produces one parallel HDF5 file per timestep (depending on the notification period for this plugin which can be specified using --hdf5.period. File names are of the form <prefix>_<timestep>.h5. Each file contains a hierarchy of HDF5 groups, which are comparable to UNIX directories, and contain datasets and attributes. Attributes can be attached to both groups and datasets. If not specified otherwise, files will be written to the simOutput directory of your simulation run. The common group structure within a file looks like this:
/header
/data/
--<timestep>/
----fields/ <-- all fields
------FieldE/ <-- group for a field (of vectors)
--------x <-- x-dimension component of this field
--------y
------FieldB/
------EnergyDensity_e <-- scalar field dataset
...
----particles/ <-- all particle species
------e/ <-- electrons
--------_ghosts <-- internal ghost cell information for moving window
--------globalCellIdx/ <-- group of global cell IDs
----------x <-- x-dimension component of cell IDs
----------y
--------momentum/
--------position/
--------weighting <-- scalar weighting dataset for electrons
------i/ <-- ions