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