C.6. Distributed Computation

In this section, we present UML class diagrams for the classes used when declaring distributed computation. We use abbreviations in parameter lists:

Table C-1. Abbreviations

abbreviationmeaning
CMContextMapper
DTDistributedTag
GLGuardLayers
IvInterval
List_tstd::vector of pointers to Nodes of Domains
PatchList_tstd::vector of Interval<Dim>s
RTReplicatedTag
SpTlLaSparseTileLayout

Partitions specify how a domain will be split into patches, or pieces. Figure C-21 introduces the abstract "Partition" class. The class exists only conceptually, not appearing in any source code. Instead four classes, appearing in subsequent diagrams, realize it. Even though users rarely use any of their member functions, the diagrams list them. All files are relative to the src/Partition subdirectory.

Figure C-21. Partitions

Four classes realize the abstract Partition class.

Figure C-22. Grid Partitions

Two partition classes use grids.

Figure C-23. Other Partitions

SpatialPartition and
      TilePartition realize the abstract Partition
      class.

Guard layers surround domains and patches to ease programming and decrease communication. We list more member functions than most users require. All files are relative to the src/Layout subdirectory.

Figure C-24. Guard Layers

GuardLayers surround patches.

A layout maps a domain index to processors and memory used to compute the associated value. There is no base class so we just present the class diagrams. We list only member functions related to construction, destruction, and printing since those are the functions that almost all users use. All files are relative to the src/Layout subdirectory.

Figure C-25. DomainLayout

DomainLayout

Figure C-26. DynamicLayout

DynamicLayout

Figure C-27. GridLayout

GridLayout

Figure C-28. UniformGridLayout

UniformGridLayout

Figure C-29. SparseTileLayout

SparseTileLayout

Context mappers map domain patches to contexts. Effectively, they map pieces of a domain to processors. Even though users rarely use any of their member functions, the diagrams list them. The type List_t abbreviates an std::vector of pointers to Nodes of Domains. GL abbreviates GuardLayers. All files are relative to the src/Partition subdirectory.

Figure C-30. Relationships Among Context Mappers

Five different mappers inherit from the base
      ContextMapper.

Figure C-31. Context Mappers

Details of the five different mappers inheriting from
      the base ContextMapper.