10#ifndef TPETRA_MAP_DECL_HPP 
   11#define TPETRA_MAP_DECL_HPP 
   17#include "Tpetra_ConfigDefs.hpp" 
   22#include "Tpetra_KokkosCompat_DefaultNode.hpp" 
   23#include "Kokkos_DualView.hpp" 
   24#include "Teuchos_Array.hpp" 
   25#include "Teuchos_Comm.hpp" 
   26#include "Teuchos_Describable.hpp" 
  194template <
class LocalOrdinal,
 
  197class Map : 
public Teuchos::Describable {
 
  297      const Teuchos::RCP<
const Teuchos::Comm<int>>& comm,
 
  338      const Teuchos::RCP<
const Teuchos::Comm<int>>& comm);
 
  381      const Kokkos::View<const global_ordinal_type*, device_type>& 
indexList,
 
  383      const Teuchos::RCP<
const Teuchos::Comm<int>>& comm);
 
  430      const Teuchos::RCP<
const Teuchos::Comm<int>>& comm);
 
  474      const Teuchos::ArrayView<const global_ordinal_type>& 
indexList,
 
  476      const Teuchos::RCP<
const Teuchos::Comm<int>>& comm);
 
  534    return numGlobalElements_;
 
 
  543    return numLocalElements_;
 
 
  576      return Tpetra::Details::OrdinalTraits<local_ordinal_type>::invalid();
 
 
  680                     const Teuchos::ArrayView<local_ordinal_type>& 
LIDList) 
const;
 
  707                     const Teuchos::ArrayView<int>& 
nodeIDList) 
const;
 
  724      global_indices_array_type;
 
  728      global_indices_array_device_type;
 
  916  Teuchos::RCP<const Teuchos::Comm<int>> 
getComm() 
const;
 
  948           const Teuchos::EVerbosityLevel 
verbLevel =
 
  949               Teuchos::Describable::verbLevel_default) 
const;
 
 1002  Teuchos::RCP<const Map<local_ordinal_type, global_ordinal_type, Node>>
 
 1032  Teuchos::RCP<const Map<local_ordinal_type, global_ordinal_type, Node>>
 
 1042  localDescribeToString(
const Teuchos::EVerbosityLevel 
vl) 
const;
 
 1051  void setupDirectory() 
const;
 
 1067  bool checkIsDist() 
const;
 
 1077  initialNonuniformDebugCheck(
 
 1082      const Teuchos::RCP<
const Teuchos::Comm<int>>& comm) 
const;
 
 1085  initWithNonownedHostIndexList(
 
 1093      const Teuchos::RCP<
const Teuchos::Comm<int>>& comm);
 
 1104  Teuchos::RCP<const Teuchos::Comm<int>> comm_;
 
 1114  size_t numLocalElements_;
 
 1224      global_to_local_table_type;
 
 1238  global_to_local_table_type glMap_;
 
 1243      global_to_local_table_host_type;
 
 1250  mutable global_to_local_table_host_type glMapHost_;
 
 1288  mutable Teuchos::RCP<
 
 
 1307template <
class LocalOrdinal, 
class GlobalOrdinal>
 
 1308Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal>>
 
 1310               const Teuchos::RCP<
const Teuchos::Comm<int>>& comm);
 
 1326template <
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
 1327Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>
 
 1329                       const Teuchos::RCP<
const Teuchos::Comm<int>>& comm);
 
 1338template <
class LocalOrdinal, 
class GlobalOrdinal>
 
 1339Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal>>
 
 1341                       const Teuchos::RCP<
const Teuchos::Comm<int>>& comm);
 
 1349template <
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
 1350Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>
 
 1352                               const Teuchos::RCP<
const Teuchos::Comm<int>>& comm);
 
 1360template <
class LocalOrdinal, 
class GlobalOrdinal>
 
 1361Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal>>
 
 1364                const Teuchos::RCP<
const Teuchos::Comm<int>>& comm);
 
 1374template <
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
 1375Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>
 
 1378                        const Teuchos::RCP<
const Teuchos::Comm<int>>& comm);
 
 1386template <
class LocalOrdinal, 
class GlobalOrdinal>
 
 1387Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal>>
 
 1389                   const Teuchos::RCP<
const Teuchos::Comm<int>>& comm);
 
 1398template <
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
 1399Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>
 
 1401                           const Teuchos::RCP<
const Teuchos::Comm<int>>& comm);
 
 1415template <
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
 1416Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>
 
 1424template <
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
 1425Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>
 
 1427               const ::Tpetra::Details::TieBreak<LocalOrdinal, GlobalOrdinal>& 
tie_break);
 
 1431#include "Tpetra_Directory_decl.hpp" 
 1435template <
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
 1441template <
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
Declaration and definition of the Tpetra::Map class, an implementation detail of Tpetra::Map.
 
Forward declaration of Tpetra::Directory.
 
Forward declaration of Tpetra::Map.
 
Forward declaration for Tpetra::TieBreak.
 
Struct that holds views of the contents of a CrsMatrix.
 
"Local" part of Map suitable for Kokkos kernels.
 
Implement mapping from global ID to process ID and local ID.
 
A parallel distribution of indices over processes.
 
Map & operator=(Map< local_ordinal_type, global_ordinal_type, node_type > &&)=default
Move assigment (shallow move).
 
Map & operator=(const Map< local_ordinal_type, global_ordinal_type, node_type > &)=default
Copy assigment (shallow copy).
 
Map(Map< local_ordinal_type, global_ordinal_type, node_type > &&)=default
Move constructor (shallow move).
 
bool isDistributed() const
Whether this Map is globally distributed or locally replicated.
 
bool isOneToOne() const
Whether the Map is one to one.
 
std::string description() const
Implementation of Teuchos::Describable.
 
Teuchos::ArrayView< const global_ordinal_type > getLocalElementList() const
Return a NONOWNING view of the global indices owned by this process.
 
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal > > createLocalMap(const size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int > > &comm)
Nonmember constructor for a locally replicated Map with the default Kokkos Node.
 
global_ordinal_type getMinAllGlobalIndex() const
The minimum global index over all processes in the communicator.
 
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal > > createUniformContigMap(const global_size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int > > &comm)
Non-member constructor for a uniformly distributed, contiguous Map with the default Kokkos Node.
 
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal > > createNonContigMap(const Teuchos::ArrayView< const GlobalOrdinal > &elementList, const Teuchos::RCP< const Teuchos::Comm< int > > &comm)
Nonmember constructor for a non-contiguous Map using the default Kokkos::Device type.
 
global_ordinal_type getGlobalElement(local_ordinal_type localIndex) const
The global index corresponding to the given local index.
 
Node node_type
Legacy typedef that will go away at some point.
 
Map()
Default constructor (that does nothing).
 
GlobalOrdinal global_ordinal_type
The type of global indices.
 
bool operator!=(const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > &map1, const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > &map2)
True if map1 is not the same as (in the sense of isSameAs()) map2, else false.
 
LookupStatus getRemoteIndexList(const Teuchos::ArrayView< const global_ordinal_type > &GIDList, const Teuchos::ArrayView< int > &nodeIDList, const Teuchos::ArrayView< local_ordinal_type > &LIDList) const
Return the process ranks and corresponding local indices for the given global indices.
 
bool isNodeLocalElement(local_ordinal_type localIndex) const
Whether the given local index is valid for this Map on the calling process.
 
bool isUniform() const
Whether the range of global indices is uniform.
 
Teuchos::RCP< const Teuchos::Comm< int > > getComm() const
Accessors for the Teuchos::Comm and Kokkos Node objects.
 
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createUniformContigMapWithNode(const global_size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int > > &comm)
Non-member constructor for a uniformly distributed, contiguous Map with a user-specified Kokkos Node.
 
typename device_type::execution_space execution_space
The Kokkos execution space.
 
LocalOrdinal local_ordinal_type
The type of local indices.
 
Teuchos::RCP< const Map< local_ordinal_type, global_ordinal_type, Node > > removeEmptyProcesses() const
Advanced methods.
 
void lazyPushToHost() const
Push the device data to host, if needed.
 
global_ordinal_type getMaxAllGlobalIndex() const
The maximum global index over all processes in the communicator.
 
bool isCompatible(const Map< local_ordinal_type, global_ordinal_type, Node > &map) const
True if and only if map is compatible with this Map.
 
global_ordinal_type getIndexBase() const
The index base for this Map.
 
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal > > createContigMap(const global_size_t numElements, const size_t localNumElements, const Teuchos::RCP< const Teuchos::Comm< int > > &comm)
Non-member constructor for a (potentially) non-uniformly distributed, contiguous Map using the defaul...
 
bool locallySameAs(const Map< local_ordinal_type, global_ordinal_type, node_type > &map) const
Is this Map locally the same as the input Map?
 
bool isLocallyFitted(const Map< local_ordinal_type, global_ordinal_type, Node > &map) const
True if and only if map is locally fitted to this Map.
 
bool operator==(const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > &map1, const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > &map2)
True if map1 is the same as (in the sense of isSameAs()) map2, else false.
 
virtual ~Map()
Destructor (virtual for memory safety of derived classes).
 
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createOneToOne(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &M)
Nonmember constructor for a contiguous Map with user-defined weights and a user-specified,...
 
global_indices_array_device_type getMyGlobalIndicesDevice() const
Return a view of the global indices owned by this process on the Map's device.
 
global_ordinal_type getMinGlobalIndex() const
The minimum global index owned by the calling process.
 
local_ordinal_type getLocalElement(global_ordinal_type globalIndex) const
The local index corresponding to the given global index.
 
Teuchos::RCP< const Map< local_ordinal_type, global_ordinal_type, Node > > replaceCommWithSubset(const Teuchos::RCP< const Teuchos::Comm< int > > &newComm) const
Replace this Map's communicator with a subset communicator.
 
::Tpetra::Details::LocalMap< local_ordinal_type, global_ordinal_type, device_type > local_map_type
Type of the "local" Map.
 
global_ordinal_type getMaxGlobalIndex() const
The maximum global index owned by the calling process.
 
Map(const Map< local_ordinal_type, global_ordinal_type, node_type > &)=default
Copy constructor (shallow copy).
 
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createLocalMapWithNode(const size_t numElements, const Teuchos::RCP< const Teuchos::Comm< int > > &comm)
Nonmember constructor for a locally replicated Map with a specified Kokkos Node.
 
global_size_t getGlobalNumElements() const
The number of elements in this Map.
 
bool isContiguous() const
True if this Map is distributed contiguously, else false.
 
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createNonContigMapWithNode(const Teuchos::ArrayView< const GlobalOrdinal > &elementList, const Teuchos::RCP< const Teuchos::Comm< int > > &comm)
Nonmember constructor for a noncontiguous Map with a user-specified, possibly nondefault Kokkos Node ...
 
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const
Describe this object in a human-readable way to the given output stream.
 
bool isNodeGlobalElement(global_ordinal_type globalIndex) const
Whether the given global index is owned by this Map on the calling process.
 
bool isSameAs(const Map< local_ordinal_type, global_ordinal_type, Node > &map) const
True if and only if map is identical to this Map.
 
local_ordinal_type getMinLocalIndex() const
The minimum local index.
 
size_t getLocalNumElements() const
The number of elements belonging to the calling process.
 
local_map_type getLocalMap() const
Get the LocalMap for Kokkos-Kernels.
 
global_indices_array_type getMyGlobalIndices() const
Return a view of the global indices owned by this process.
 
typename device_type::memory_space memory_space
The Kokkos memory space.
 
local_ordinal_type getMaxLocalIndex() const
The maximum local index on the calling process.
 
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createOneToOne(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &M, const ::Tpetra::Details::TieBreak< LocalOrdinal, GlobalOrdinal > &tie_break)
Creates a one-to-one version of the given Map where each GID lives on only one process....
 
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > createContigMapWithNode(const global_size_t numElements, const size_t localNumElements, const Teuchos::RCP< const Teuchos::Comm< int > > &comm)
Nonmember constructor for a (potentially) nonuniformly distributed, contiguous Map for a user-specifi...
 
typename Node::device_type device_type
This class' Kokkos::Device specialization.
 
Namespace Tpetra contains the class and methods constituting the Tpetra library.
 
LookupStatus
Return status of Map remote index lookup (getRemoteIndexList()).
 
size_t global_size_t
Global size_t object.
 
LocalGlobal
Enum for local versus global allocation of Map entries.