The BPFile Engine writes and reads files in ADIOS2 native binary-pack (bp) format. BP files are backwards compatible with ADIOS1.x and have the following structure given a "name" string passed as the first argument of ``IO::Open``:
The BP3 Engine writes and reads files in ADIOS2 native binary-pack (bp) format. BP files are backwards compatible with ADIOS1.x and have the following structure given a "name" string passed as the first argument of ``IO::Open``:
.. code-block:: c++
@@ -24,7 +24,11 @@ will generate:
.. note::
BPFile names are compatible with the Unix (/) and Windows (\\) file system naming convention for directories and files.
BP3 file names are compatible with the Unix (/) and Windows (\\) file system naming convention for directories and files.
.. caution::
The default BP3 engine will check if the ".bp" is the extension of the first argument of IO::Open and will add ".bp" and ".bp.dir" if not in the name
This engine allows the user to fine tune the buffering operations through the following optional parameters:
@@ -42,9 +46,9 @@ This engine allows the user to fine tune the buffering operations through the fo
7. **MaxBufferSize**: maximum allowable buffer size (must be larger than 16Kb). If to large adios2 will throw an exception.
8. **FlushStepsCount**: user can select how often to produce the more expensive collective metadata file in terms of steps: default is 1. Increase to reduce adios2 collective operations footprint, with the trade-off of reducing checkpoint frequency. Buffer size will increase until first steps count if MaxBufferSize is not set.
8. **FlushStepsCount**: users can select how often to produce the more expensive collective metadata file in terms of steps: default is 1. Increase to reduce adios2 collective operations footprint, with the trade-off of reducing checkpoint frequency. Buffer size will increase until first steps count if MaxBufferSize is not set.
9. **SubStreams**: (MPI-only) user can select how many sub-streams ("M" sub-files) are produced during a run, ranges between 1 and the number of mpi processes (N), adios2 will internally aggregate data buffers (N-to-M) to output the required number of files. Use for performance tuning.
9. **SubStreams**: (MPI-only) users can select how many sub-streams ("M" sub-files) are produced during a run, ranges between 1 and the number of mpi processes from MPI_Size (N), adios2 will internally aggregate data buffers (N-to-M) to output the required number of sub-files. If Substream is out of bounds it will pick either 1 (SubStreams < 1 -> N-to-1) or N ((SubStreams > N -> N-to-N) and ADIOS2 will issue a WARNING message. Use for performance tuning.