Skip to content

Parallel POD #85

@shanemcq18

Description

@shanemcq18

Design paradigm for parallel POD (distributed OpInf):

  • New ParallelPODBasis class (too different from serial POD to be in the same class)
  • Constructor arguments (hyperparameters) for
    • specifying the number of processes and possibly the splitting scheme (num_processes=6). This means we have parallelism in the back, not MPI in the front.
    • criteria for the number of basis vectors to retain, probably num_vectors, cumulative_energy, svdval_threshold, and residual_energy, but not projection_error
    • whether to construct the actual basis vectors in the matrix V (record=False)
  • Attribute for the actual basis vectors, None if record=False, an array of size $n_i \times r$ otherwise.
  • Consider disabling fit() and compress(), force the user to use fit_compress()? Need to check with the ROM class to see if that messes something up.
  • MUST have the data in a format that allows for distributed reading without loading the entire dataset. That means we either need to have a filename that has the entire dataset in a certain HDF5 format, or (probably more practical) a list of files to load, one for each process. Maybe we use this list instead of num_processes.

This last point is possibly the trickiest and may have consequences for the design of the rest of the package.

Ionut will take the lead.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions