New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HDF5 Option for OPENPMD_HDF5_INDEPENDENT #1513
Comments
Refs.:
|
As a side note, there are non-blocking MPI-I/O ops now coming to MPI (cutesy of Quincy Koziol's work on the standard). In the future, that would allow a workflow similar as we have in ADIOS1/2: independent storage calls for chunks and maybe even attributes, with a collective call needed to kick off the writes/reads. |
Other details:
Things like accidental datatype conversions, dataspace conversion (both between declaration and write) and too small I/O requests (<FS block size) might break collectives into independent I/O. |
Side note, we are now testing OpenPMD with CACHE+ASYNC VOL connectors. Using the ASYNC VOL directly had some issues related to attributes that prevented the operations from being fully asynchronous and benefiting from it, but stacking it with the CACHE VOl seems to do the trick. |
Note the API of /** Execute all required remaining IO operations to write or read data.
*
* @param backendConfig Further backend-specific instructions on how to
* implement this flush call.
* Must be provided in-line, configuration is not read
* from files.
*/
void flush(std::string backendConfig = "{}"); I imagine that |
Although our API contract allows independent store/load calls (as in ADIOS), everything that is MPI-I/O based will essentially be performing better if the collective MPI-I/O calls are used.
Thus, the env control
OPENPMD_HDF5_INDEPENDENT
should be translated into an option for HDF5, so users that guarantee that they do collectivestoreChunk
calls can activate it programmatically for performance.Note that in MPI-I/O (and thus PHDF5) that means ranks with zero contribs need to issue zero-sized
storeChunk
s. The rationale behind that is that although an MPI rank might not contribute data, it might end up being a collection rank in MPI for collective data transport to disk.The text was updated successfully, but these errors were encountered: