10 #ifndef __Tpetra_DirectoryImpl_decl_hpp
11 #define __Tpetra_DirectoryImpl_decl_hpp
31 #ifndef HAVE_TPETRA_DIRECTORY_SPARSE_MAP_FIX
32 #define HAVE_TPETRA_DIRECTORY_SPARSE_MAP_FIX 1
33 #endif // HAVE_TPETRA_DIRECTORY_SPARSE_MAP_FIX
35 #include "Tpetra_Details_FixedHashTable_decl.hpp"
37 #ifndef DOXYGEN_SHOULD_SKIP_THIS
40 template <
class OrdinalType>
43 #endif // DOXYGEN_SHOULD_SKIP_THIS
54 template <
class LocalOrdinal,
class GlobalOrdinal,
class NodeType>
57 typedef LocalOrdinal local_ordinal_type;
58 typedef GlobalOrdinal global_ordinal_type;
59 typedef NodeType node_type;
60 typedef ::Tpetra::Map<LocalOrdinal, GlobalOrdinal, NodeType>
map_type;
107 const Teuchos::ArrayView<const GlobalOrdinal> &globalIDs,
108 const Teuchos::ArrayView<int> &nodeIDs,
109 const Teuchos::ArrayView<LocalOrdinal> &localIDs,
110 const bool computeLIDs)
const;
118 virtual bool isOneToOne(
const Teuchos::Comm<int> &comm)
const = 0;
124 const Teuchos::ArrayView<const GlobalOrdinal> &globalIDs,
125 const Teuchos::ArrayView<int> &nodeIDs,
126 const Teuchos::ArrayView<LocalOrdinal> &localIDs,
127 const bool computeLIDs)
const = 0;
132 template <
class LocalOrdinal,
class GlobalOrdinal,
class NodeType>
146 bool isOneToOne(
const Teuchos::Comm<int> &comm)
const override;
158 const Teuchos::ArrayView<const GlobalOrdinal> &globalIDs,
159 const Teuchos::ArrayView<int> &nodeIDs,
160 const Teuchos::ArrayView<LocalOrdinal> &localIDs,
161 const bool computeLIDs)
const override;
165 const int numProcs_ = 0;
176 template <
class LocalOrdinal,
class GlobalOrdinal,
class NodeType>
180 template <
class LO,
class GO,
class N>
206 const Teuchos::ArrayView<const GlobalOrdinal> &globalIDs,
207 const Teuchos::ArrayView<int> &nodeIDs,
208 const Teuchos::ArrayView<LocalOrdinal> &localIDs,
209 const bool computeLIDs)
const override;
214 template <
class LocalOrdinal,
class GlobalOrdinal,
class NodeType>
217 template <
class LO,
class GO,
class N>
243 const Teuchos::ArrayView<const GlobalOrdinal> &globalIDs,
244 const Teuchos::ArrayView<int> &nodeIDs,
245 const Teuchos::ArrayView<LocalOrdinal> &localIDs,
246 const bool computeLIDs)
const override;
274 Teuchos::ArrayRCP<GlobalOrdinal> allMinGIDs_;
279 template <
class LocalOrdinal,
class GlobalOrdinal,
class NodeType>
282 template <
class LO,
class GO,
class N>
296 bool isOneToOne(
const Teuchos::Comm<int> &comm)
const override;
308 const Teuchos::ArrayView<const GlobalOrdinal> &globalIDs,
309 const Teuchos::ArrayView<int> &nodeIDs,
310 const Teuchos::ArrayView<LocalOrdinal> &localIDs,
311 const bool computeLIDs)
const override;
321 initialize(
const map_type &map,
322 Teuchos::Ptr<const tie_break_type> tie_break);
336 bool isLocallyOneToOne()
const {
337 return locallyOneToOne_;
357 Teuchos::RCP<const map_type> directoryMap_;
367 Teuchos::ArrayRCP<int> PIDs_;
374 Teuchos::ArrayRCP<LocalOrdinal> LIDs_;
394 Kokkos::HostSpace::device_type>
396 Teuchos::RCP<lidToPidTable_type> lidToPidTable_;
412 Kokkos::HostSpace::device_type>
414 Teuchos::RCP<lidToLidTable_type> lidToLidTable_;
423 mutable enum EOneToOneResult {
424 ONE_TO_ONE_NOT_CALLED_YET,
432 bool locallyOneToOne_;
446 #endif // __Tpetra_DirectoryImpl_decl_hpp
Interface for breaking ties in ownership.
Implementation of Directory for a locally replicated Map.
std::string description() const override
A one-line human-readable description of this object.
Interface for breaking ties in ownership.
LookupStatus
Return status of Map remote index lookup (getRemoteIndexList()).
Implementation of Directory for a distributed noncontiguous Map.
bool isOneToOne(const Teuchos::Comm< int > &) const override
Whether the Directory's input Map is (globally) one to one.
Directory()=default
Constructor.
bool isOneToOne(const Teuchos::Comm< int > &comm) const override
Whether the Directory's input Map is (globally) one to one.
Implementation of Directory for a distributed contiguous Map.
LookupStatus getEntriesImpl(const map_type &map, const Teuchos::ArrayView< const GlobalOrdinal > &globalIDs, const Teuchos::ArrayView< int > &nodeIDs, const Teuchos::ArrayView< LocalOrdinal > &localIDs, const bool computeLIDs) const override
Find process IDs and (optionally) local IDs for the given global IDs.
bool isOneToOne(const Teuchos::Comm< int > &comm) const override
Whether the Directory's input Map is (globally) one to one.
virtual LookupStatus getEntriesImpl(const map_type &map, const Teuchos::ArrayView< const GlobalOrdinal > &globalIDs, const Teuchos::ArrayView< int > &nodeIDs, const Teuchos::ArrayView< LocalOrdinal > &localIDs, const bool computeLIDs) const =0
Actually do the work of getEntries(), with no input validation.
LookupStatus getEntriesImpl(const map_type &map, const Teuchos::ArrayView< const GlobalOrdinal > &globalIDs, const Teuchos::ArrayView< int > &nodeIDs, const Teuchos::ArrayView< LocalOrdinal > &localIDs, const bool computeLIDs) const override
Find process IDs and (optionally) local IDs for the given global IDs.
LookupStatus getEntries(const map_type &map, const Teuchos::ArrayView< const GlobalOrdinal > &globalIDs, const Teuchos::ArrayView< int > &nodeIDs, const Teuchos::ArrayView< LocalOrdinal > &localIDs, const bool computeLIDs) const
std::string description() const override
A one-line human-readable description of this object.
A parallel distribution of indices over processes.
ReplicatedDirectory()=default
Constructor (that takes no arguments).
Computes the local ID and process ID corresponding to given global IDs.
virtual bool isOneToOne(const Teuchos::Comm< int > &comm) const =0
Whether the Directory's input Map is (globally) one to one.
LookupStatus getEntriesImpl(const map_type &map, const Teuchos::ArrayView< const GlobalOrdinal > &globalIDs, const Teuchos::ArrayView< int > &nodeIDs, const Teuchos::ArrayView< LocalOrdinal > &localIDs, const bool computeLIDs) const override
Find process IDs and (optionally) local IDs for the given global IDs.
std::string description() const override
A one-line human-readable description of this object.
Forward declaration of Tpetra::Map.