C++ mpi module for stochmagnet_main Package
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
MPI_GraphGridEnvironment< N, D > Class Template Reference

This class is a cart Environment of templated dimension N. More...

#include <MPI_GraphGridEnvironment.h>

Inheritance diagram for MPI_GraphGridEnvironment< N, D >:
Inheritance graph
[legend]
Collaboration diagram for MPI_GraphGridEnvironment< N, D >:
Collaboration graph
[legend]

Public Member Functions

virtual void initialize ()
 initialize the environment
 
- Public Member Functions inherited from MPI_DirectionalGridEnvironment< N, 1 >
virtual tMemSize getMemorySize () const override
 return the memory size of the class
 
virtual tMemSize getContentsMemorySize () const override
 return the memory size of the included associations More...
 
constexpr tUCInt GetNeighborsDepth ()
 get the depth of neighbors
 
void getFaceNeighbors (std::array< tMPICoreId, 2 *N > &neighbors) const
 get the coreId in canonical face More...
 
tMPICoreId getDirectionalNeighbor (const std::array< tCInt, N > &dir) const
 get the neighbor core in the dierction dir More...
 
tMPICoreId getDirectionalNeighbor (const tUCInt &dirIndex) const
 get the neighbor core More...
 
const std::map< tUCInt, tMPICoreId > & getDirectionalNeighbors () const
 get the neighbor cores in all directions More...
 
void setDirectionalNeighbors (const std::map< tUCInt, tMPICoreId > &neighbors)
 set neighbors grids per face More...
 
- Public Member Functions inherited from MPI_GridEnvironment< N >
template<typename Q >
void setGridSize (const std::array< Q, N > &Ns)
 get the grids number More...
 
const std::array< tMPICoreId, N > & getGridSize () const
 get the grids number
 
template<typename Q >
void setIndices (const std::array< Q, N > &indices)
 set the indices of the current core More...
 
const std::array< tMPICoreId, N > & getIndices () const
 get the indices of the current core within the grid environment
 
const std::array< tBoolean, N > & getGridPeriodicity () const
 return the periodicity of the grid
 
const tBoolean & isPeriodic (const tUCInt &k) const
 return true if the grid is periodic in direction k More...
 
template<typename Q >
void setGridPeriodicity (const std::array< Q, N > &Ts)
 set grid periodicity More...
 
tMPIError getCoreIdAtIndices (const std::array< tMPICoreId, N > &indices, tMPICoreId &coreId) const
 the core id within the grid at indices More...
 
tMPIError getCoreIndices (const tMPICoreId &coreId, std::array< tMPICoreId, N > &indices) const
 get the indices of the core with coreId More...
 
- Public Member Functions inherited from MPI_Environment
const tMPIComm & getWorld () const
 get the world of the environment for reading
 
tMPIComm & getWorld ()
 get the world of the environment for reading
 
const tMPICoreId & getCoresNumber () const
 get the number of cores of this environment of common environment More...
 
const tMPICoreId & getCoreId () const
 get the id of the current process of this environment More...
 
tMPIError abort (const tMPIError &errCode) const
 abort the process on all cores with the error code More...
 
tBoolean synchronize () const
 wait that all the cores has finished her job
 
tBoolean isMessageAvaliable (tMPICoreId &source, tMPITag &tag, tMPIBoolean &isAvailable, tMPIStatus &status) const
 test if the message is available frm the environment this More...
 
- Public Member Functions inherited from CORE_Object
template<class T >
std::shared_ptr< T > getSharedPointer ()
 return the shared pointer for this More...
 
template<class T >
std::shared_ptr< const T > getConstSharedPointer () const
 return a const shared pointer for this More...
 
template<class T >
tBoolean isInstanceOf () const
 test if the clas T is an instance of this class More...
 
tString getClassName () const
 return the name of the class More...
 
tString getPointerString () const
 retrun the pointer of the class as a string More...
 
tString getIdentityString () const
 retrun the string identification of the class More...
 
virtual tString toString () const
 return the string representation of the object node More...
 

Static Public Member Functions

static CORE_UniquePointer< MPI_GraphGridEnvironment< N > > New (const MPI_Environment &parent, const tString &fileDescriptor)
 create a new cart environment More...
 
static CORE_UniquePointer< MPI_GraphGridEnvironment< N > > New (const MPI_Environment &parent, const tMPICoreId &nCores, const std::array< tInteger, N > &gridsNumber, const std::array< tInteger, N > &coreIndices, const std::map< tUCInt, tMPICoreId > &dirNeighbors)
 create a new cart environment More...
 
static tBoolean LoadGridCartFile (const tString &fileName, const MPI_Environment &env, tMPICoreId &nCores, std::array< tInteger, N > &gridsNumber, std::array< tInteger, N > &coreIndices, std::map< tUCInt, tMPICoreId > &dirNeighbors, tBoolean &isCoreInGrid)
 save the grid cart file More...
 
template<typename Q >
static tBoolean SaveGridCartFile (const MPI_DirectionalGridEnvironment< N, D > &env, const tInteger &nFullCores, const tInteger &fullId, const std::map< tUCInt, Q > &isDirNeighborFull, const tString &fileName)
 save the grid cart file More...
 
- Static Public Member Functions inherited from MPI_DirectionalGridEnvironment< N, 1 >
static CORE_UniquePointer< SelfClassNew (const std::array< tMPICoreId, N > &nCoresPerDirection, int &argc, char *argv[], const tBoolean &isOpenMPEnabled)
 create a new cart environment More...
 
static tUCInt GetMaximumDirectionalNeighborsNumber ()
 get the maximum direction number : (2*D+1)^N when D is the neighbor Depth (D=0,1,2)
 
static tUCInt GetFaceDirectionalIndex (const tUCInt &f, std::array< tCInt, N > &dir)
 get the face index in direction More...
 
static tUCInt GetFaceDirectionalIndex (const tUCInt &f)
 get the face index in direction More...
 
static void GetDirection (const tUCInt &index, std::array< tCInt, N > &dir)
 get the direction dir from index: index=dir[0]+1+D*(dir[1]+1+3*(dir[2]+1)) in {0,27} More...
 
static tUCInt GetDirectionIndex (const std::array< tCInt, N > &dir)
 get the direction index from dir index=dir[0]+1+3*(dir[1]+1+3*(dir[2]+1)) in {0,27} More...
 
- Static Public Member Functions inherited from MPI_GridEnvironment< N >
static CORE_UniquePointer< SelfClassNew (const std::array< tMPICoreId, N > &nCoresPerDirection, int &argc, char *argv[], const tBoolean &isOpenMPEnabled)
 create a new cart environment More...
 
static tMPIError ComputeGridSize (const MPI_Environment &parent, std::array< tMPICoreId, N > &coresNumber)
 get the cores number per direction if possible More...
 
static tMPIError ComputeGridSize (const tMPICoreId &nAvailableCores, std::array< tMPICoreId, N > &coresNumber)
 get the cores number per direction if possible More...
 
static tBoolean ComputeGridSize (const std::array< tReal, N > &Hs, const std::array< tInteger, N > &Ns, const tMPICoreId &nCores, std::array< tMPICoreId, N > &Gs)
 compute the grid size in order to minimize the ratio S/V where S is the surface of 1 cpu block and V the volume on 1 cpu block More...
 
- Static Public Member Functions inherited from MPI_Environment
static CORE_UniquePointer< MPI_EnvironmentNew (int argc, char *argv[], const tBoolean &isOpenMPEnabled)
 create a test class More...
 
static CORE_UniquePointer< MPI_EnvironmentNew (int argc, char *argv[])
 create a test class More...
 
static void GetCoresNumber (tMPICoreId &coresNumber)
 get the number of cores More...
 
static void GetCoresNumber (const MPI_Environment &env, tMPICoreId &coresNumber)
 get the number of cores More...
 
static void GetCoreId (tMPICoreId &id)
 get the id of the current process of common environment More...
 
static void GetCoreId (const MPI_Environment &env, tMPICoreId &id)
 get the id of the current process of common environment More...
 
static tReal GetTime ()
 get the time More...
 
static tMPIError Abort (const MPI_Environment &env, const tMPIError &errCode)
 abort the process on all cores of the environment with the eroor code More...
 
static tMPIError Abort (const tMPIError &errCode)
 abort the process on all cores with the error code More...
 
static tBoolean Synchronize (const MPI_Environment &env)
 wait that all the core of an environment has finished her job More...
 
static tBoolean Synchronize ()
 wait that all the cores has finished her job
 
static tBoolean Wait (tMPIRequest &request, tMPIStatus &status)
 wait the end the the communication by blocking More...
 
static tBoolean Wait (tMPIRequest &request)
 wait for the request is finished More...
 
static tBoolean WaitAll (const tMPICount &nRequests, tMPIRequest requests[], tMPIStatus statuses[])
 wait the end the the communication by blocking More...
 
static tBoolean WaitAll (std::valarray< tMPIRequest > &requests)
 wait for all the requests are finished More...
 
template<size_t D>
static tBoolean WaitAll (std::array< tMPIRequest, D > &requests)
 wait for all the requests are finished More...
 
static tBoolean WaitAll (const tMPICount &nRequests, tMPIRequest *requests)
 wait for all the requests are finished More...
 
static tBoolean IsFinished (tMPIRequest &request, tMPIInteger &isFinished)
 test if the requets is finished More...
 
static tBoolean IsAllFinished (std::valarray< tMPIRequest > &requests, tMPIInteger &isFinished)
 test if the requets is finished More...
 
static tBoolean IsFinished (tMPIRequest &request, tMPIStatus &status, tMPIInteger &isFinished)
 return true if the communication is finished More...
 
static tBoolean IsMessageAvaliable (const MPI_Environment &env, tMPICoreId &source, tMPITag &tag, tMPIBoolean &isAvailable, tMPIStatus &status)
 test if a message is available form any tag and any source More...
 
static tBoolean IsMessageAvaliable (const MPI_Environment &env, const tMPITag &tag, const tMPICoreId &source, tMPIBoolean &isAvailable)
 test if the message with tag from source is available More...
 
static tBoolean IsTagMessageAvaliable (const MPI_Environment &env, const tMPITag &tag, tMPICoreId &source, tMPIBoolean &isAvailable, tMPIStatus &status)
 test if the message with tag is avalaible More...
 
template<typename T >
static tBoolean GetCount (const tMPIStatus &status, tMPICount &nElements)
 get the number of element of the message More...
 
- Static Public Member Functions inherited from CORE_Object
static tBoolean EnableMemoryStack (const tBoolean &isMemoryChecked)
 enable the memory stack More...
 
static void EnableMemoryStack ()
 enable the memory stack
 
static void DisableMemoryStack ()
 disable the memory stack
 
static tBoolean IsMemoryStackEnabled ()
 return trur if the memory stack is enabled
 
static tString MemoryStackToString ()
 get the memory stack in string More...
 
static tIndex GetRegisteredClassesNumber ()
 get the memory stack in string More...
 

Protected Member Functions

 MPI_GraphGridEnvironment ()
 create a root environment
 
virtual ~MPI_GraphGridEnvironment (void)
 destroy
 
- Protected Member Functions inherited from MPI_DirectionalGridEnvironment< N, 1 >
 MPI_DirectionalGridEnvironment ()
 create a root environment
 
 MPI_DirectionalGridEnvironment (int &argc, char *argv[], const tBoolean &isOpenMPEnabled)
 create a root environment More...
 
virtual ~MPI_DirectionalGridEnvironment (void)
 destroy
 
- Protected Member Functions inherited from MPI_GridEnvironment< N >
 MPI_GridEnvironment ()
 create a root environment
 
 MPI_GridEnvironment (int &argc, char *argv[], const tBoolean &isOpenMPEnabled)
 create a root environment More...
 
virtual ~MPI_GridEnvironment (void)
 destroy
 
- Protected Member Functions inherited from MPI_Environment
 MPI_Environment ()
 create a root environment
 
 MPI_Environment (int &argc, char *argv[], const tBoolean &isOpenMPEnabled)
 create a root environment More...
 
virtual ~MPI_Environment (void)
 destroy
 
void setIsRootEnvironment (const tBoolean &isRoot)
 set true when the environemnt created is a root one but not a common world
 
- Protected Member Functions inherited from MPI_Object
 MPI_Object (void)
 create
 
virtual ~MPI_Object (void)
 destroy
 
- Protected Member Functions inherited from CORE_Object
 CORE_Object ()
 build an instance of the object
 
virtual ~CORE_Object ()
 destroy the instance of object std

 

Detailed Description

template<tUCInt N, tUCInt D = 1>
class MPI_GraphGridEnvironment< N, D >

This class is a cart Environment of templated dimension N.

Template Parameters
N: size of the grid
Dneighbor depth To create a grid from a parent environment call MPI_GridEnvironment::New(const MPI_Environment& parent,const std::array<tMPICoreId,N>& nCoresPerDirections,const std::array<tBoolean,N>& isPeriodicPerDirections,const tBoolean& canCoreIdBeChanged) .

the nCoresPerDirections array can be set to 0 and it can be built by the method GetGridsNumber(parent.getCoresNumber(),nCoresPerDirections).

To get the indices & thge coreId of the current process per direction, call the method getCoreId(std::array<tMPICoreId,N>& indices,tMPICoreId& coreId) :

To get the coordinates of a process within the grid, call the method getIndices(std::array<tMPICoreId,N>& indices

To create an hyperplan of the grid call New(onst MPI_GridEnvironment<N>& parent,const tUCInt& dir) where dir is the normal of the hyperplan

Author
Stephane Despreaux
Version
2.0

Member Function Documentation

◆ LoadGridCartFile()

template<tUCInt N, tUCInt D>
tBoolean MPI_GraphGridEnvironment< N, D >::LoadGridCartFile ( const tString &  fileName,
const MPI_Environment env,
tMPICoreId &  nCores,
std::array< tInteger, N > &  gridsNumber,
std::array< tInteger, N > &  coreIndices,
std::map< tUCInt, tMPICoreId > &  dirNeighbors,
tBoolean &  isCoreInGrid 
)
static

save the grid cart file

Parameters
[in]fileNamename of the cart of the grid
[in]env: environment of the processes
[out]nCores: number of cores of thegrid cart env
[out]gridsNumber: number of grids
[out]coreIndicesindices of the core
[out]dirNeighborsid of the neighbor core per direction
[out]isCoreInGrid: true if the current core is in grid
Returns
true if the file has been read

◆ New() [1/2]

template<tUCInt N, tUCInt D = 1>
static CORE_UniquePointer<MPI_GraphGridEnvironment<N> > MPI_GraphGridEnvironment< N, D >::New ( const MPI_Environment parent,
const tMPICoreId &  nCores,
const std::array< tInteger, N > &  gridsNumber,
const std::array< tInteger, N > &  coreIndices,
const std::map< tUCInt, tMPICoreId > &  dirNeighbors 
)
inlinestatic

create a new cart environment

Parameters
[in]parent: parent environment
[in]nCores: total number of not empty grids
[in]gridsNumber: fictive number of grids per dierction
[in]coreIndicesindices of the self core in grids
[in]dirNeighborsdirectional neighbors of the self core
Returns
a new grid environment

◆ New() [2/2]

template<tUCInt N, tUCInt D = 1>
static CORE_UniquePointer<MPI_GraphGridEnvironment<N> > MPI_GraphGridEnvironment< N, D >::New ( const MPI_Environment parent,
const tString &  fileDescriptor 
)
inlinestatic

create a new cart environment

Parameters
[in]parent: parent environment
[in]fileDescriptorname of the file to describes the grid
Returns
a new grid environment

◆ SaveGridCartFile()

template<tUCInt N, tUCInt D>
template<typename Q >
tBoolean MPI_GraphGridEnvironment< N, D >::SaveGridCartFile ( const MPI_DirectionalGridEnvironment< N, D > &  env,
const tInteger &  nFullCores,
const tInteger &  fullId,
const std::map< tUCInt, Q > &  isDirNeighborFull,
const tString &  fileName 
)
static

save the grid cart file

Parameters
[in]env: grid environment
[in]nFullCorestotal number of full cores of the environment
[in]fullIdindex to indicates the rate of full (0 for empty)
[in]isDirNeighorFull
  • index -> ind >0 if the neighbor core is full
  • index -> ind=0 if neighbor core empty
  • by defualt if the nieghor index is not in list, suppoed to be empty
[in]fileNamename of the cart of the grid
Returns
true if the fiel has been saved

The documentation for this class was generated from the following files: