Zoltan2
Zoltan2_Machine.hpp
Go to the documentation of this file.
1 #ifndef _ZOLTAN2_MACHINE_HPP_
2 #define _ZOLTAN2_MACHINE_HPP_
3 
4 #include <Teuchos_Comm.hpp>
5 #include <Zoltan2_config.h>
6 namespace Zoltan2{
7 
11 template <typename pcoord_t, typename part_t>
12 class Machine{
13 
14 protected:
15  int numRanks;
16  int myRank;
17 
18 public:
23  Machine(const Teuchos::Comm<int> &comm) :
24  numRanks(comm.getSize()), myRank(comm.getRank())
25  { }
26 
27  virtual ~Machine(){ }
28 
31  bool hasMachineCoordinates() const {
32  return false; // Coordinates not available in this machine
33  }
34 
37  int getMachineDim() const {
38  return 0; // Coordinates not available in this machine
39  }
40 
44  bool getMachineExtent(int *nxyz) const {
45  return false; // Extent not available in this machine
46  }
47 
51  bool getMachineExtentWrapArounds(bool *wrap_around) const {
52  return false; // Extent not available in this machine
53  }
54 
59  bool getMyMachineCoordinate(pcoord_t *xyz) const {
60  return false; // Coordinates not available in this machine
61  }
62 
67  bool getMachineCoordinate(const int rank, pcoord_t *xyz) const {
68  return false; // Coordinates not available by rank
69  }
70 
75  bool getMachineCoordinate(const char *nodename, pcoord_t *xyz) const {
76  return false; // Coordinates not available by nodename
77  }
78 
85  bool getAllMachineCoordinatesView(pcoord_t **allCoords) const {
86  return false; // Coordinates not available in this machine
87  }
88 
92  int getNumRanks() const { return numRanks; }
93 
98  virtual bool getHopCount(int rank1, int rank2, pcoord_t &hops) const {
99  return false;
100  }
101 
109  virtual part_t getNumUniqueGroups() const {
110  return 1;
111  }
112 
128  virtual bool getGroupCount(part_t *grp_count) const {
129  return false;
130  }
131 
132  // KDD TODO: Add Graph interface and methods supporting full LDMS interface.
133 
134 };
135 }
136 #endif
Created by mbenlioglu on Aug 31, 2020.
bool getMyMachineCoordinate(pcoord_t *xyz) const
getMyCoordinate function set the machine coordinate xyz of the current process return true if current...
Machine(const Teuchos::Comm< int > &comm)
Constructor MachineRepresentation Class.
virtual bool getHopCount(int rank1, int rank2, pcoord_t &hops) const
getHopCount function set hops between rank1 and rank2 return true if coordinates are available ...
virtual part_t getNumUniqueGroups() const
getNumUniqueGroups function return the number of unique Dragonfly network groups in provided allocati...
virtual bool getGroupCount(part_t *grp_count) const
getGroupCount function return the number of ranks in each group (RCA X-dim, e.g. first dim) ...
MachineClass Base class for representing machine coordinates, networks, etc.
bool getMachineExtent(int *nxyz) const
sets the number of unique coordinates in each machine dimension return true if coordinates are availa...
SparseMatrixAdapter_t::part_t part_t
bool getMachineCoordinate(const int rank, pcoord_t *xyz) const
getCoordinate function set the machine coordinate xyz of any rank process return true if coordinates ...
int getMachineDim() const
returns the dimension (number of coords per node) in the machine
int getNumRanks() const
getNumRanks function return the number of ranks.
bool getMachineExtentWrapArounds(bool *wrap_around) const
if the machine has a wrap-around tourus link in each dimension. return true if the information is ava...
bool getMachineCoordinate(const char *nodename, pcoord_t *xyz) const
getCoordinate function set the machine coordinate xyz of any node by nodename return true if coordina...
bool hasMachineCoordinates() const
indicates whether or not the machine has coordinates
bool getAllMachineCoordinatesView(pcoord_t **allCoords) const
getProcDim function set the coordinates of all ranks allCoords[i][j], i=0,...,getMachineDim(), j=0,...,getNumRanks(), is the i-th dimensional coordinate for rank j. return true if coordinates are available for all ranks