Support for parallel io of la objects and meshes
Add support for parallel input/output of linear algebra objects, meshes, etc.
Blueprint information
- Status:
- Complete
- Approver:
- None
- Priority:
- High
- Drafter:
- None
- Direction:
- Needs approval
- Assignee:
- None
- Definition:
- Approved
- Series goal:
- Accepted for 1.1.x
- Implementation:
- Implemented
- Milestone target:
- None
- Started by
- Garth Wells
- Completed by
- Garth Wells
Related branches
Related bugs
Sprints
Whiteboard
NJ: I think the best design is to come up with a format which allows us to store objects independently on each processor.
A good example is the parallel vtk format (pvtu). The rationale for this is to reduce communication and increase parallelism by reducing the number of synchronization points.
Mesh,
Store the local mesh object + overlap information in a file for each processor. If the user want a serial mesh from a parallel mesh, we can write post processing tools.
Vectors and matrices
Store local data for each process
GNW: My plan is to have a VTK-style 'master' file that points to the sub-files. We also want that a vector partitioned and output in n parts can later be read and distributed by a program running with m processes.
GNW (101207): Best approach is probably parallel HDF5. Works with parallel file systems
GNW (110609): After reading a lot of surveys and studies on parallel io, the design I would like to implement is:
* Always handle XML files (read and write) on process 0. This is simple, involves only one file, but is not scalable.
* Use parallel HDF5 format for output over MPI/IO. The takes advantage of parallel file systems, is portable, scalable and only involves one file.
All studies on parallel io that I've read advise *against* the file-per-process model.