GridapROMs.Distributed

GridapROMs.DistributedModule
module Distributed

MPI-parallel extensions of the GridapROMs parametric and reduced-basis layer.

Wraps the distributed data structures provided by PartitionedArrays and GridapDistributed so that parametric snapshots and FE solves can be performed in parallel. Key components:

  • Distributed ParamArraysOwnAndGhostParamVector and ParamJaggedArray carry multi-sample DOF arrays in the owned-and-ghost partitioning expected by PartitionedArrays. ParamArraysInterface.jl implements the full AbstractParamArray interface for these types.

  • Sparse utilitiesParamSparseUtils.jl provides distributed sparse matrix/vector assembly helpers (CSR row-pointer arithmetic, assembly caches) compatible with ParamArray entries.

  • PrimitivesPrimitives.jl contains low-level MPI-aware operations (scatter/gather, consistent local-size queries) reused by the higher-level components.

  • Distributed algebraParamAlgebra.jl extends ParamBuilder / ParamCounter to the distributed setting; ParamSolvers.jl wraps GridapDistributed solvers for parametric systems.

  • Distributed FE spacesParamFESpaces.jl specialises DistributedSingleFieldFESpace / DistributedMultiFieldFESpace for parametric DOF arrays.

  • Distributed snapshotsGenericPArray is a PartitionedArrays PVector-like container for generic parallel data; DistributedSnapshots wraps Snapshots for the distributed case.

Requires GridapDistributed and MPI; not loaded unless Distributed is explicitly used.

source
GridapROMs.Distributed.GenericPArrayType
struct GenericPArray{V,A,B,C,D,T,N} <: AbstractArray{T,N}
  array_partition::A
  index_partition::B
  unpartitioned_axes::C
  cache::D
end

Same as PVector, but while the latter always stores a vector with entries partitioned on different cores, this structure stores an array (not necessarily a vector) partitioned along the first dimension (row-wise)

source