53 #ifndef HAVOQGT_MPI_IMPL_VERTEX_LOCATOR_HPP_
54 #define HAVOQGT_MPI_IMPL_VERTEX_LOCATOR_HPP_
61 template <
typename SegementManager>
68 m_owner_dest = std::numeric_limits<uint32_t>::max();
69 m_local_id = std::numeric_limits<uint64_t>::max();
74 conv.
m_local_id = std::numeric_limits<uint64_t>::max();
75 conv.
m_owner_dest = std::numeric_limits<uint64_t>::max();
82 uint32_t
owner()
const {
return m_owner_dest; }
83 void set_dest(uint32_t dest) { m_owner_dest = dest; assert(m_owner_dest == dest);}
84 uint64_t
local_id()
const {
return m_local_id;}
87 void set_bcast(uint32_t bcast) { m_is_bcast = bcast; }
114 unsigned int m_is_delegate : 1;
116 unsigned int m_is_bcast : 1;
117 unsigned int m_is_intercept : 1;
118 unsigned int m_owner_dest : 20;
119 uint64_t m_local_id : 39;
121 vertex_locator(
bool is_delegate, uint64_t local_id, uint32_t owner_dest);
122 } __attribute__ ((packed)) ;
135 template <
typename SegmentManager>
148 &&
m_owner_dest == owner_dest)) { std::cerr <<
"ERROR: vertex_locator()" << std::endl; exit(-1);}
155 &&
m_local_id == local_id)) { std::cerr <<
"ERROR: vertex_locator()" << std::endl; exit(-1);}
160 template <
typename SegmentManager>
174 #endif // HAVOQGT_MPI_IMPL_VERTEX_LOCATOR_HPP_
friend bool operator<(const vertex_locator &x, const vertex_locator &y)
void set_dest(uint32_t dest)
unsigned int m_is_delegate
friend bool operator!=(const vertex_locator &x, const vertex_locator &y)
unsigned int m_is_intercept
bool is_intercept() const
unsigned int m_owner_dest
friend bool operator==(const vertex_locator &x, const vertex_locator &y)
void set_intercept(bool intercept)
uint64_t local_id() const
void set_bcast(uint32_t bcast)
bool is_equal(const vertex_locator x) const
uint32_t get_bcast() const