-
Notifications
You must be signed in to change notification settings - Fork 316
Description
When not running with atomicity mode enabled, MPI data consistency semantics requires one to call MPI_File_sync to expose newly written data to make those bytes visible to other processes. However, since MPI_File_sync implies an fsync(), it can be expensive. Additionally, on POSIX-complaint file systems like Lustre, it is not actually necessary to call MPI_File_sync to expose newly written data -- the bytes are visible to other processes immediately after returning from the write call.
Could we define a new MPI I/O hint that an application can use to query whether MPI_File_sync is required to expose data on a particular file system?
To write a portable MPI I/O application, the user would need to call MPI_File_sync either if the hint indicates that the underlying file system requires it or if the hint is not supported by the MPI library. For a file system like Lustre, this hint could indicate to the user that it is not necessary to call MPI_File_sync to expose data.
The idea here is similar to the MPI_WIN_MODEL=SEPARATE/UNIFIED property defined in the MPI one-sided chapter, which one can use to avoid making window synchronization calls if the underlying system doesn't require it.
Regardless of the hint, it would always be required for one to call MPI_File_sync to actually sync data to disk for persistence.