12 #ifndef XPETRA_STRIDEDMAP_DECL_HPP
13 #define XPETRA_STRIDEDMAP_DECL_HPP
15 #include <Tpetra_KokkosCompat_DefaultNode.hpp>
16 #include <Teuchos_Describable.hpp>
61 template <
class LocalOrdinal,
63 class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
64 class StridedMap :
public virtual Map<LocalOrdinal, GlobalOrdinal, Node> {
72 #undef XPETRA_STRIDEDMAP_SHORT
101 GlobalOrdinal indexBase,
102 std::vector<size_t>& stridingInfo,
103 const Teuchos::RCP<
const Teuchos::Comm<int>>& comm,
104 LocalOrdinal stridedBlockId = -1,
105 GlobalOrdinal offset = 0,
132 size_t numLocalElements,
133 GlobalOrdinal indexBase,
134 std::vector<size_t>& stridingInfo,
135 const Teuchos::RCP<
const Teuchos::Comm<int>>& comm,
136 LocalOrdinal stridedBlockId = -1,
137 GlobalOrdinal offset = 0);
152 const Teuchos::ArrayView<const GlobalOrdinal>& elementList,
153 GlobalOrdinal indexBase,
154 std::vector<size_t>& stridingInfo,
155 const Teuchos::RCP<
const Teuchos::Comm<int>>& comm,
156 LocalOrdinal stridedBlockId = -1);
159 std::vector<size_t>& stridingInfo,
161 LocalOrdinal stridedBlockId = -1,
162 GlobalOrdinal offset = 0);
199 RCP<const Xpetra::Map<LocalOrdinal, GlobalOrdinal, Node>>
getMap()
const;
201 #ifdef HAVE_XPETRA_TPETRA
206 return map_->getLocalMap();
208 #else // HAVE_XPETRA_TPETRA
211 "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too."
213 #endif // HAVE_XPETRA_TPETRA ELSE
255 RCP<const Xpetra::Map<LocalOrdinal, GlobalOrdinal, Node>>
map_;
312 const Teuchos::ArrayView<int>& nodeIDList,
313 const Teuchos::ArrayView<LocalOrdinal>& LIDList)
const;
317 const Teuchos::ArrayView<int>& nodeIDList)
const;
346 Teuchos::RCP<const Teuchos::Comm<int>>
getComm()
const;
356 void describe(Teuchos::FancyOStream& out,
357 const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default)
const;
366 #define XPETRA_STRIDEDMAP_SHORT
367 #endif // XPETRA_STRIDEDMAP_DECL_HPP
Teuchos::ArrayView< const GlobalOrdinal > getLocalElementList() const
Return a list of the global indices owned by this node.
LookupStatus getRemoteIndexList(const Teuchos::ArrayView< const GlobalOrdinal > &GIDList, const Teuchos::ArrayView< int > &nodeIDList, const Teuchos::ArrayView< LocalOrdinal > &LIDList) const
Returns the node IDs and corresponding local indices for a given list of global indices.
LocalOrdinal getStridedBlockId() const
GlobalOrdinal getMaxGlobalIndex() const
Returns maximum global index owned by this node.
GlobalOrdinal getGlobalElement(LocalOrdinal localIndex) const
Return the global index for a given local index.
size_t GID2StridingBlockId(GlobalOrdinal gid) const
LocalOrdinal local_ordinal_type
Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node >::local_map_type local_map_type
GlobalOrdinal global_ordinal_type
bool isContiguous() const
Returns true if this Map is distributed contiguously; returns false otherwise.
void setStridingData(std::vector< size_t > stridingInfo)
size_t getLocalNumElements() const
Returns the number of elements belonging to the calling node.
GlobalOrdinal indexBase_
Index base for the strided map (default = 0)
GlobalOrdinal getOffset() const
local_map_type getLocalMap() const
Get the local Map for Kokkos kernels.
LocalOrdinal getMaxLocalIndex() const
Returns maximum local index.
LocalOrdinal stridedBlockId_
Member variable denoting which dofs are stored in map.
Teuchos::RCP< const Teuchos::Comm< int > > getComm() const
Get the Comm object for this Map.
bool isCompatible(const Map &map) const
Returns true if map is compatible with this Map.
std::string description() const
Return a simple one-line description of this object.
GlobalOrdinal getMaxAllGlobalIndex() const
Return the maximum global index over all nodes.
bool isNodeGlobalElement(GlobalOrdinal globalIndex) const
Returns true if the global index is found in this Map on this node; returns false if it isn't...
bool isNodeLocalElement(LocalOrdinal localIndex) const
Returns true if the local index is valid for this Map on this node; returns false if it isn't...
bool isStrided() const
returns true, if this is a strided map (i.e. more than 1 strided blocks)
bool isSameAs(const Map &map) const
Returns true if map is identical to this Map.
std::vector< size_t > stridingInfo_
Vector with size of strided blocks (dofs)
RCP< const Map > removeEmptyProcesses() const
Return a new Map with processes with zero elements removed.
RCP< const Map > replaceCommWithSubset(const Teuchos::RCP< const Teuchos::Comm< int >> &newComm) const
bool isDistributed() const
Returns true if this Map is distributed across more than one node; returns false otherwise.
size_t getFixedBlockSize() const
global_indices_array_device_type getMyGlobalIndicesDevice() const
Return a view of the global indices owned by this process on the Map's device.
GlobalOrdinal offset_
Offset for gids in map (default = 0)
GlobalOrdinal getMinGlobalIndex() const
Returns minimum global index owned by this node.
size_t global_size_t
Global size_t object.
GlobalOrdinal getIndexBase() const
Returns the index base for this Map.
RCP< const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getMap() const
global_size_t getGlobalNumElements() const
Returns the number of elements in this Map.
Kokkos::View< const global_ordinal_type *, typename Node::device_type > global_indices_array_device_type
virtual bool CheckConsistency()
std::vector< size_t > getStridingData() const
LocalOrdinal getLocalElement(GlobalOrdinal globalIndex) const
Return the local index for a given global index.
StridedMap(UnderlyingLib xlib, global_size_t numGlobalElements, GlobalOrdinal indexBase, std::vector< size_t > &stridingInfo, const Teuchos::RCP< const Teuchos::Comm< int >> &comm, LocalOrdinal stridedBlockId=-1, GlobalOrdinal offset=0, LocalGlobal lg=GloballyDistributed)
Map constructor with contiguous uniform distribution.
LocalOrdinal getMinLocalIndex() const
Returns minimum local index.
UnderlyingLib lib() const
Get the library used by this object (Tpetra or Epetra?)
GlobalOrdinal getMinAllGlobalIndex() const
Return the minimum global index over all nodes.
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const
Print the object with some verbosity level to a FancyOStream object.
Map< LocalOrdinal, GlobalOrdinal, Node >::global_indices_array_device_type global_indices_array_device_type
virtual ~StridedMap()
Destructor.
Class that stores a strided map.
void setOffset(GlobalOrdinal offset)
RCP< const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > map_