Support for parallel io of la objects and meshes

Registered by Garth Wells

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

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.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.