#include <pencildecomp.hpp>
Public Types | |
using | pfun = void(Cart3DPencilDecomp< T, GroupID >::*)(const T *, T *, const int) |
Public Member Functions | |
Cart3DPencilDecomp () | |
Construct a new Cart 3 D Pencil Decomp object. More... | |
~Cart3DPencilDecomp () | |
auto & | setArraySize (std::vector< int > size) |
auto & | setGhostSize (std::vector< int > gh0, std::vector< int > gh1, std::vector< int > gh2) |
auto & | setMPIDecomp (const int npr, const int npc) |
std::vector< int > | getArraySize () const |
std::pair< std::vector< int >, std::vector< int > > | getLocalIndex (int f0, int f1, int f2) const |
std::vector< int > | getLocalSize (int f0, int f1, int f2) const |
size_t | getMaxBufferSize () const |
std::vector< int > | getLocalSize (int axis_npr, int axis_npc) |
Get the Local Size. More... | |
std::pair< std::vector< int >, std::vector< int > > | getLocalIndex (int axis_npr, int axis_npc) |
Get the Local Index. More... | |
auto & | Init () |
void | ConvertArraytoBufferXYPZ (const T *in, T *out, const int xflag, const int yflag, const int rotflag, const int ghost_igflag=kNone) |
void | ConvertBuffertoArrayXYPZ (const T *in, T *out, const int xflag, const int yflag, const int rotflag, const int ghost_igflag=kNone) |
void | ConvertArraytoBufferYZPX (const T *in, T *out, const int yflag, const int zflag, const int rotflag, const int ghost_igflag=kNone) |
void | ConvertBuffertoArrayYZPX (const T *in, T *out, const int yflag, const int zflag, const int rotflag, const int ghost_igflag=kNone) |
void | ConvertArraytoBufferZXPY (const T *in, T *out, const int zflag, const int xflag, const int rotflag, const int ghost_igflag=kNone) |
void | ConvertBuffertoArrayZXPY (const T *in, T *out, const int zflag, const int xflag, const int rotflag, const int ghost_igflag=kNone) |
void | TransposeFromXYtoXZ (const T *in, T *out, const int ghost_igflag=kNone) |
void | TransposeFromXZtoXY (const T *in, T *out, const int ghost_igflag=kNone) |
void | TransposeFromZXtoZY (const T *in, T *out, const int ghost_igflag=kNone) |
void | TransposeFromZYtoZX (const T *in, T *out, const int ghost_igflag=kNone) |
void | TransposeFromYZtoYX (const T *in, T *out, const int ghost_igflag=kNone) |
void | TransposeFromYXtoYZ (const T *in, T *out, const int ghost_igflag=kNone) |
void | TransposeFromXZtoYZ (const T *in, T *out, const int ghost_igflag=kNone) |
void | TransposeFromYZtoXZ (const T *in, T *out, const int ghost_igflag=kNone) |
void | TransposeFromZYtoXY (const T *in, T *out, const int ghost_igflag=kNone) |
void | TransposeFromXYtoZY (const T *in, T *out, const int ghost_igflag=kNone) |
void | TransposeFromYXtoZX (const T *in, T *out, const int ghost_igflag=kNone) |
void | TransposeFromZXtoYX (const T *in, T *out, const int ghost_igflag=kNone) |
int | TransposeHashID (int i, int j, int k, int m) |
void | Transpose (int axis_npr_from, int axis_npc_from, int axis_npr_to, int axis_npc_to, const T *in, T *out, const int ghost_igflag=false) |
void | CountAndDispFromXYtoXZ (int *sendcount, int *senddisp, int *recvcount, int *recvdisp) |
void | CountAndDispFromXZtoXY (int *sendcount, int *senddisp, int *recvcount, int *recvdisp) |
void | CountAndDispFromZXtoZY (int *sendcount, int *senddisp, int *recvcount, int *recvdisp) |
void | CountAndDispFromZYtoZX (int *sendcount, int *senddisp, int *recvcount, int *recvdisp) |
void | CountAndDispFromYZtoYX (int *sendcount, int *senddisp, int *recvcount, int *recvdisp) |
void | CountAndDispFromYXtoYZ (int *sendcount, int *senddisp, int *recvcount, int *recvdisp) |
void | CountAndDispFromXZtoYZ (int *sendcount, int *senddisp, int *recvcount, int *recvdisp) |
void | CountAndDispFromYZtoXZ (int *sendcount, int *senddisp, int *recvcount, int *recvdisp) |
void | CountAndDispFromZYtoXY (int *sendcount, int *senddisp, int *recvcount, int *recvdisp) |
void | CountAndDispFromXYtoZY (int *sendcount, int *senddisp, int *recvcount, int *recvdisp) |
void | CountAndDispFromYXtoZX (int *sendcount, int *senddisp, int *recvcount, int *recvdisp) |
void | CountAndDispFromZXtoYX (int *sendcount, int *senddisp, int *recvcount, int *recvdisp) |
Public Attributes | |
std::unordered_map< int, pfun > | transpose_list |
Private Member Functions | |
void | _InitMPIComm () |
void | _InitMPIDataType () |
void | _InitArrayLocalSize () |
void | _InitIndexAndDisp () |
void | _AllocateDisp () |
void | _InitSendRecv () |
void | _InitSendRecvBuffer () |
void | _InitSendRecvCountAndDisp () |
Private Attributes | |
MPI_Comm & | _comm = PencilBase<GroupID>::comm |
MPI_Comm & | _npc_comm = PencilBase<GroupID>::npc_comm |
MPI_Comm & | _npr_comm = PencilBase<GroupID>::npr_comm |
MPI_Datatype | _mydatatype = nullptr |
int & | _rank = PencilBase<GroupID>::rank |
int & | _npr = PencilBase<GroupID>::npr |
int & | _npc = PencilBase<GroupID>::npc |
int * | _coord = PencilBase<GroupID>::coord |
int * | _ghost_n0 = PencilBase<GroupID>::ghost_n0 |
int * | _ghost_n1 = PencilBase<GroupID>::ghost_n1 |
int * | _ghost_n2 = PencilBase<GroupID>::ghost_n2 |
int * | _shape = PencilBase<GroupID>::shape |
int * | _n0loc = PencilBase<GroupID>::n0loc |
int * | _n1loc = PencilBase<GroupID>::n1loc |
int * | _n2loc = PencilBase<GroupID>::n2loc |
int * | _ind0st = PencilBase<GroupID>::ind0st |
int * | _ind0ed = PencilBase<GroupID>::ind0ed |
int * | _ind1st = PencilBase<GroupID>::ind1st |
int * | _ind1ed = PencilBase<GroupID>::ind1ed |
int * | _ind2st = PencilBase<GroupID>::ind2st |
int * | _ind2ed = PencilBase<GroupID>::ind2ed |
size_t & | _maxbuffersize = PencilBase<GroupID>::maxbuffersize |
int * | _disp0_r = PencilBase<GroupID>::disp0_r |
int * | _disp0_c = PencilBase<GroupID>::disp0_c |
int * | _disp1_r = PencilBase<GroupID>::disp1_r |
int * | _disp1_c = PencilBase<GroupID>::disp1_c |
int * | _disp2_r = PencilBase<GroupID>::disp2_r |
int * | _disp2_c = PencilBase<GroupID>::disp2_c |
T * | _sendbuffer = nullptr |
T * | _recvbuffer = nullptr |
int * | _sendcount = nullptr |
int * | _recvcount = nullptr |
int * | _senddisp = nullptr |
int * | _recvdisp = nullptr |
Additional Inherited Members | |
![]() | |
static MPI_Comm | comm = nullptr |
static MPI_Comm | npc_comm = nullptr |
static MPI_Comm | npr_comm = nullptr |
static int | rank = 0 |
static int | npr = 0 |
static int | npc = 0 |
static int | coord [2] = {0, 0} |
static int | ghost_n0 [2] = {0, 0} |
static int | ghost_n1 [2] = {0, 0} |
static int | ghost_n2 [2] = {0, 0} |
static int | shape [3] = {0, 0, 0} |
static int | n0loc [3] = {0, 0, 0} |
static int | n1loc [3] = {0, 0, 0} |
static int | n2loc [3] = {0, 0, 0} |
static int | ind0st [3] = {0, 0, 0} |
static int | ind0ed [3] = {0, 0, 0} |
static int | ind1st [3] = {0, 0, 0} |
static int | ind1ed [3] = {0, 0, 0} |
static int | ind2st [3] = {0, 0, 0} |
static int | ind2ed [3] = {0, 0, 0} |
static size_t | maxbuffersize = 0 |
static int * | disp0_r = nullptr |
static int * | disp0_c = nullptr |
static int * | disp1_r = nullptr |
static int * | disp1_c = nullptr |
static int * | disp2_r = nullptr |
static int * | disp2_c = nullptr |
using tfft3d::Cart3DPencilDecomp< T, GroupID >::pfun = void (Cart3DPencilDecomp<T, GroupID>::*)(const T *, T *, const int) |
|
inline |
Construct a new Cart 3 D Pencil Decomp object.
|
inline |
References tfft3d::Cart3DPencilDecomp< T, GroupID >::_disp0_c, tfft3d::Cart3DPencilDecomp< T, GroupID >::_disp0_r, tfft3d::Cart3DPencilDecomp< T, GroupID >::_disp1_c, tfft3d::Cart3DPencilDecomp< T, GroupID >::_disp1_r, tfft3d::Cart3DPencilDecomp< T, GroupID >::_disp2_c, tfft3d::Cart3DPencilDecomp< T, GroupID >::_disp2_r, tfft3d::Cart3DPencilDecomp< T, GroupID >::_recvbuffer, tfft3d::Cart3DPencilDecomp< T, GroupID >::_recvcount, tfft3d::Cart3DPencilDecomp< T, GroupID >::_recvdisp, tfft3d::Cart3DPencilDecomp< T, GroupID >::_sendbuffer, tfft3d::Cart3DPencilDecomp< T, GroupID >::_sendcount, and tfft3d::Cart3DPencilDecomp< T, GroupID >::_senddisp.
|
private |
|
private |
References tfft3d::kC, tfft3d::kP, and tfft3d::kR.
|
private |
References tfft3d::kC, tfft3d::kP, and tfft3d::kR.
|
private |
|
private |
|
private |
|
private |
References tfft3d::kC, tfft3d::kP, tfft3d::kR, and quadpack::max().
|
private |
void tfft3d::Cart3DPencilDecomp< T, GroupID >::ConvertArraytoBufferXYPZ | ( | const T * | in, |
T * | out, | ||
const int | xflag, | ||
const int | yflag, | ||
const int | rotflag, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kAfter, tfft3d::kAll, tfft3d::kBefore, tfft3d::kNone, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::ConvertArraytoBufferYZPX | ( | const T * | in, |
T * | out, | ||
const int | yflag, | ||
const int | zflag, | ||
const int | rotflag, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kAfter, tfft3d::kAll, tfft3d::kBefore, tfft3d::kNone, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::ConvertArraytoBufferZXPY | ( | const T * | in, |
T * | out, | ||
const int | zflag, | ||
const int | xflag, | ||
const int | rotflag, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kAfter, tfft3d::kAll, tfft3d::kBefore, tfft3d::kNone, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::ConvertBuffertoArrayXYPZ | ( | const T * | in, |
T * | out, | ||
const int | xflag, | ||
const int | yflag, | ||
const int | rotflag, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kAfter, tfft3d::kAll, tfft3d::kBefore, tfft3d::kNone, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::ConvertBuffertoArrayYZPX | ( | const T * | in, |
T * | out, | ||
const int | yflag, | ||
const int | zflag, | ||
const int | rotflag, | ||
const int | ghost_igflag = kNone |
||
) |
void tfft3d::Cart3DPencilDecomp< T, GroupID >::ConvertBuffertoArrayZXPY | ( | const T * | in, |
T * | out, | ||
const int | zflag, | ||
const int | xflag, | ||
const int | rotflag, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kAfter, tfft3d::kAll, tfft3d::kBefore, tfft3d::kNone, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::CountAndDispFromXYtoXZ | ( | int * | sendcount, |
int * | senddisp, | ||
int * | recvcount, | ||
int * | recvdisp | ||
) |
References tfft3d::kC, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::CountAndDispFromXYtoZY | ( | int * | sendcount, |
int * | senddisp, | ||
int * | recvcount, | ||
int * | recvdisp | ||
) |
References tfft3d::kC, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::CountAndDispFromXZtoXY | ( | int * | sendcount, |
int * | senddisp, | ||
int * | recvcount, | ||
int * | recvdisp | ||
) |
References tfft3d::kC, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::CountAndDispFromXZtoYZ | ( | int * | sendcount, |
int * | senddisp, | ||
int * | recvcount, | ||
int * | recvdisp | ||
) |
void tfft3d::Cart3DPencilDecomp< T, GroupID >::CountAndDispFromYXtoYZ | ( | int * | sendcount, |
int * | senddisp, | ||
int * | recvcount, | ||
int * | recvdisp | ||
) |
References tfft3d::kC, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::CountAndDispFromYXtoZX | ( | int * | sendcount, |
int * | senddisp, | ||
int * | recvcount, | ||
int * | recvdisp | ||
) |
References tfft3d::kC, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::CountAndDispFromYZtoXZ | ( | int * | sendcount, |
int * | senddisp, | ||
int * | recvcount, | ||
int * | recvdisp | ||
) |
References tfft3d::kC, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::CountAndDispFromYZtoYX | ( | int * | sendcount, |
int * | senddisp, | ||
int * | recvcount, | ||
int * | recvdisp | ||
) |
References tfft3d::kC, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::CountAndDispFromZXtoYX | ( | int * | sendcount, |
int * | senddisp, | ||
int * | recvcount, | ||
int * | recvdisp | ||
) |
References tfft3d::kC, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::CountAndDispFromZXtoZY | ( | int * | sendcount, |
int * | senddisp, | ||
int * | recvcount, | ||
int * | recvdisp | ||
) |
References tfft3d::kC, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::CountAndDispFromZYtoXY | ( | int * | sendcount, |
int * | senddisp, | ||
int * | recvcount, | ||
int * | recvdisp | ||
) |
References tfft3d::kC, tfft3d::kP, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::CountAndDispFromZYtoZX | ( | int * | sendcount, |
int * | senddisp, | ||
int * | recvcount, | ||
int * | recvdisp | ||
) |
References tfft3d::kC, tfft3d::kP, and tfft3d::kR.
|
inline |
References tfft3d::Cart3DPencilDecomp< T, GroupID >::_shape.
std::pair< std::vector< int >, std::vector< int > > tfft3d::Cart3DPencilDecomp< T, GroupID >::getLocalIndex | ( | int | axis_npr, |
int | axis_npc | ||
) |
Get the Local Index.
axis_npr | |
axis_npc |
References tfft3d::kC, tfft3d::kP, tfft3d::kR, tfft3d::kX, tfft3d::kY, and tfft3d::kZ.
|
inline |
References tfft3d::Cart3DPencilDecomp< T, GroupID >::_ind0ed, tfft3d::Cart3DPencilDecomp< T, GroupID >::_ind0st, tfft3d::Cart3DPencilDecomp< T, GroupID >::_ind1ed, tfft3d::Cart3DPencilDecomp< T, GroupID >::_ind1st, tfft3d::Cart3DPencilDecomp< T, GroupID >::_ind2ed, and tfft3d::Cart3DPencilDecomp< T, GroupID >::_ind2st.
std::vector< int > tfft3d::Cart3DPencilDecomp< T, GroupID >::getLocalSize | ( | int | axis_npr, |
int | axis_npc | ||
) |
Get the Local Size.
axis_npr | label of axis npr |
axis_npc | label of axis npc |
References tfft3d::kC, tfft3d::kP, tfft3d::kR, tfft3d::kX, tfft3d::kY, and tfft3d::kZ.
|
inline |
|
inline |
References tfft3d::Cart3DPencilDecomp< T, GroupID >::_maxbuffersize.
auto & tfft3d::Cart3DPencilDecomp< T, GroupID >::Init |
|
inline |
References tfft3d::Cart3DPencilDecomp< T, GroupID >::_shape.
|
inline |
|
inline |
|
inline |
References tfft3d::Cart3DPencilDecomp< T, GroupID >::TransposeHashID().
void tfft3d::Cart3DPencilDecomp< T, GroupID >::TransposeFromXYtoXZ | ( | const T * | in, |
T * | out, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kC, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::TransposeFromXYtoZY | ( | const T * | in, |
T * | out, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kC, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::TransposeFromXZtoXY | ( | const T * | in, |
T * | out, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kC, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::TransposeFromXZtoYZ | ( | const T * | in, |
T * | out, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kC, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::TransposeFromYXtoYZ | ( | const T * | in, |
T * | out, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kC, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::TransposeFromYXtoZX | ( | const T * | in, |
T * | out, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kC, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::TransposeFromYZtoXZ | ( | const T * | in, |
T * | out, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kC, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::TransposeFromYZtoYX | ( | const T * | in, |
T * | out, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kC, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::TransposeFromZXtoYX | ( | const T * | in, |
T * | out, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kC, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::TransposeFromZXtoZY | ( | const T * | in, |
T * | out, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kC, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::TransposeFromZYtoXY | ( | const T * | in, |
T * | out, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kC, and tfft3d::kR.
void tfft3d::Cart3DPencilDecomp< T, GroupID >::TransposeFromZYtoZX | ( | const T * | in, |
T * | out, | ||
const int | ghost_igflag = kNone |
||
) |
References tfft3d::kC, and tfft3d::kR.
|
inline |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
std::unordered_map<int, pfun> tfft3d::Cart3DPencilDecomp< T, GroupID >::transpose_list |