|
Brick Library 0.1
Performance-portable stencil datalayout & codegen
|
Decomposition for MPI communication. More...
#include <brick-mpi.h>
Classes | |
| struct | g_region |
| Record start and end of each region. More... | |
Public Member Functions | |
| BrickDecomp (const std::vector< unsigned > &dims, const unsigned depth, unsigned numfield=1) | |
| MPI decomposition for bricks. | |
| void | initialize (const std::vector< BitSet > &skinlist) |
| initialize the decomposition using skinlist | |
| void | exchange (BrickStorage &bStorage) |
| Minimal PUT exchange without mmap. | |
| grid_access< mytype, dim, dim - 1 > | operator[] (int i) |
| Accessing grid indices using [] | |
| BrickInfo< dim > | getBrickInfo () |
| Access the associated metadata. | |
| ~BrickDecomp () | |
| ExchangeView | exchangeView (BrickStorage bStorage) |
| Create a view for PUT exchange (mmap) | |
| MultiStageExchangeView | multiStageExchangeView (BrickStorage bStorage) |
| Create a view for SHIFT exchange (mmap) | |
| void | exchange (BrickStorage bStorage, MPI_Win &win) |
| Exchange using MPI_Win (don't use) | |
Public Attributes | |
| std::vector< g_region > | ghost |
| ghost regions record | |
| std::vector< g_region > | skin |
| surface regions record | |
| unsigned | sep_pos [3] |
| seperation points internal-surface-ghost | |
| std::vector< BitSet > | skinlist |
| the order of skin | |
| std::vector< long > | skin_size |
| the size of skin | |
| MPI_Comm | comm |
| MPI communicator it is attached to. | |
| std::unordered_map< uint64_t, int > | rank_map |
| Mapping from neighbor to each neighbor's rank. | |
Private Types | |
| typedef BrickDecomp< dim, BDims... > | mytype |
| shorthand for type of this instance | |
Private Member Functions | |
| void | _populate (BitSet region, long ref, int d, unsigned &pos) |
| void | populate (BitSet owner, BitSet region, unsigned &pos) |
| long | get_region_size (BitSet region) |
| void | _adj_populate (long ref, unsigned d, unsigned idx, unsigned *adj) |
| void | adj_populate (unsigned i, unsigned *adj) |
Private Attributes | |
| std::vector< unsigned > | dims |
| dimension of internal in bricks | |
| std::vector< unsigned > | t_dims |
| dimension including ghosts in bricks | |
| std::vector< unsigned > | g_depth |
| The depth of ghostzone in bricks. | |
| std::vector< unsigned > | stride |
| stride in bricks | |
| unsigned * | grid |
| Grid indices. | |
| unsigned | numfield |
| Number of fields that are interleaved. | |
| BrickInfo< dim > * | bInfo |
| Associated BrickInfo. | |
Friends | |
| template<typename T , unsigned di, unsigned d> | |
| struct | grid_access |
| Need private access for Accessing grid indices using []. | |
Decomposition for MPI communication.
| dim | number of dimensions |
| BDims | Brick dimensions |
Decomposition is setup in steps:
|
private |
shorthand for type of this instance
|
inline |
MPI decomposition for bricks.
| dims | the size of each dimension excluding the ghost (in elements) |
| depth | the depths of ghost (in elements) |
| numfield | number of interleaved fields |
|
inline |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inline |
Minimal PUT exchange without mmap.
| bStorage | a brick storage created using this decomposition |
|
inline |
Exchange using MPI_Win (don't use)
| bStorage | |
| win |
|
inline |
Create a view for PUT exchange (mmap)
| bStorage | a brick storage created using this decomposition |
|
inlineprivate |
|
inline |
Access the associated metadata.
|
inline |
initialize the decomposition using skinlist
| skinlist | the layout of the surface area, recommended: skin3d_good |
|
inline |
Create a view for SHIFT exchange (mmap)
| bStorage | a brick storage created using this decomposition |
|
inline |
|
inlineprivate |
|
friend |
Need private access for Accessing grid indices using [].
|
private |
Associated BrickInfo.
| MPI_Comm BrickDecomp< dim, BDims >::comm |
MPI communicator it is attached to.
|
private |
dimension of internal in bricks
|
private |
The depth of ghostzone in bricks.
| std::vector<g_region> BrickDecomp< dim, BDims >::ghost |
ghost regions record
|
private |
Grid indices.
|
private |
Number of fields that are interleaved.
| std::unordered_map<uint64_t, int> BrickDecomp< dim, BDims >::rank_map |
Mapping from neighbor to each neighbor's rank.
| unsigned BrickDecomp< dim, BDims >::sep_pos[3] |
seperation points internal-surface-ghost
| std::vector<g_region> BrickDecomp< dim, BDims >::skin |
surface regions record
| std::vector<long> BrickDecomp< dim, BDims >::skin_size |
the size of skin
| std::vector<BitSet> BrickDecomp< dim, BDims >::skinlist |
the order of skin
|
private |
stride in bricks
|
private |
dimension including ghosts in bricks