42 #ifndef TPETRA_MAP_DECL_HPP
43 #define TPETRA_MAP_DECL_HPP
49 #include "Tpetra_ConfigDefs.hpp"
54 #include "Kokkos_DefaultNode.hpp"
55 #include "Kokkos_DualView.hpp"
56 #include "Teuchos_Array.hpp"
57 #include "Teuchos_Comm.hpp"
58 #include "Teuchos_Describable.hpp"
67 template<
class OutMapType,
class InMapType>
69 typedef typename OutMapType::node_type out_node_type;
70 typedef typename InMapType::node_type in_node_type;
73 clone (
const InMapType& mapIn,
74 const Teuchos::RCP<out_node_type>& node2);
243 template <
class LocalOrdinal,
246 class Map :
public Teuchos::Describable {
346 const Teuchos::RCP<
const Teuchos::Comm<int> > &comm,
349 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
353 const Teuchos::RCP<
const Teuchos::Comm<int> > &comm,
355 const Teuchos::RCP<Node> &node);
356 #endif // TPETRA_ENABLE_DEPRECATED_CODE
394 const size_t numLocalElements,
396 const Teuchos::RCP<
const Teuchos::Comm<int> > &comm);
398 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
401 const size_t numLocalElements,
403 const Teuchos::RCP<
const Teuchos::Comm<int> > &comm,
404 const Teuchos::RCP<Node> &node);
405 #endif // TPETRA_ENABLE_DEPRECATED_CODE
448 const Kokkos::View<const GlobalOrdinal*, device_type>& indexList,
449 const GlobalOrdinal indexBase,
450 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm);
494 const GlobalOrdinal indexList[],
495 const LocalOrdinal indexListSize,
496 const GlobalOrdinal indexBase,
497 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm);
541 const Teuchos::ArrayView<const GlobalOrdinal>& indexList,
542 const GlobalOrdinal indexBase,
543 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm);
545 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
548 const Teuchos::ArrayView<const GlobalOrdinal>& indexList,
549 const GlobalOrdinal indexBase,
550 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm,
551 const Teuchos::RCP<Node>& node);
552 #endif // TPETRA_ENABLE_DEPRECATED_CODE
610 return numGlobalElements_;
619 return numLocalElements_;
637 return static_cast<LocalOrdinal
> (0);
652 return Tpetra::Details::OrdinalTraits<LocalOrdinal>::invalid ();
755 const Teuchos::ArrayView< int>& nodeIDList,
756 const Teuchos::ArrayView< LocalOrdinal>& LIDList)
const;
783 const Teuchos::ArrayView< int> & nodeIDList)
const;
797 typedef Kokkos::View<
const GlobalOrdinal*,
984 Teuchos::RCP<const Teuchos::Comm<int> >
getComm ()
const;
986 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
987 TPETRA_DEPRECATED Teuchos::RCP<Node> getNode ()
const;
989 #endif // TPETRA_ENABLE_DEPRECATED_CODE
1020 describe (Teuchos::FancyOStream &out,
1021 const Teuchos::EVerbosityLevel verbLevel =
1022 Teuchos::Describable::verbLevel_default)
const;
1028 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
1029 template <
class NodeOut>
1030 Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, NodeOut> > TPETRA_DEPRECATED
1031 clone (
const Teuchos::RCP<NodeOut>& nodeOut)
const;
1081 Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node> >
1111 Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node> >
1119 template <
class LO,
class GO,
class N>
friend class Map;
1122 template<
class OutMapType,
class InMapType>
1130 localDescribeToString (
const Teuchos::EVerbosityLevel vl)
const;
1139 void setupDirectory ()
const;
1155 bool checkIsDist()
const;
1165 initialNonuniformDebugCheck (
const global_size_t numGlobalElements,
1166 const size_t numLocalElements,
1167 const GlobalOrdinal indexBase,
1168 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm)
const;
1171 initWithNonownedHostIndexList (
const global_size_t numGlobalElements,
1172 const Kokkos::View<
const GlobalOrdinal*,
1175 Kokkos::MemoryUnmanaged>& entryList,
1176 const GlobalOrdinal indexBase,
1177 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm);
1180 Teuchos::RCP<const Teuchos::Comm<int> > comm_;
1183 GlobalOrdinal indexBase_;
1190 size_t numLocalElements_;
1193 GlobalOrdinal minMyGID_;
1196 GlobalOrdinal maxMyGID_;
1200 GlobalOrdinal minAllGID_;
1204 GlobalOrdinal maxAllGID_;
1212 GlobalOrdinal firstContiguousGID_;
1227 GlobalOrdinal lastContiguousGID_;
1281 mutable Kokkos::View<
const GlobalOrdinal*,
1293 mutable Kokkos::View<
const GlobalOrdinal*,
1295 Kokkos::HostSpace> lgMapHost_;
1299 typedef ::Tpetra::Details::FixedHashTable<GlobalOrdinal, LocalOrdinal, device_type>
1300 global_to_local_table_type;
1314 global_to_local_table_type glMap_;
1352 mutable Teuchos::RCP<Directory<LocalOrdinal,GlobalOrdinal,Node> > directory_;
1369 template <
class LocalOrdinal,
class GlobalOrdinal>
1370 Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal> >
1372 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm);
1388 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
1389 Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
1391 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm);
1393 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
1394 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
1396 Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
1398 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm,
1399 const Teuchos::RCP<Node>& node);
1400 #endif // TPETRA_ENABLE_DEPRECATED_CODE
1409 template <
class LocalOrdinal,
class GlobalOrdinal>
1410 Teuchos::RCP< const Map<LocalOrdinal,GlobalOrdinal> >
1412 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm);
1420 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
1421 Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
1423 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm);
1425 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
1426 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
1428 Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
1430 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm,
1431 const Teuchos::RCP<Node>& node);
1432 #endif // TPETRA_ENABLE_DEPRECATED_CODE
1440 template <
class LocalOrdinal,
class GlobalOrdinal>
1441 Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal> >
1443 const size_t localNumElements,
1444 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm);
1454 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
1455 Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
1457 const size_t localNumElements,
1458 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm);
1460 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
1461 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
1463 Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
1465 const size_t localNumElements,
1466 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm,
1467 const Teuchos::RCP<Node>& node);
1468 #endif // TPETRA_ENABLE_DEPRECATED_CODE
1476 template <
class LocalOrdinal,
class GlobalOrdinal>
1477 Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal> >
1479 const Teuchos::RCP<
const Teuchos::Comm<int> >& comm);
1488 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
1489 Teuchos::RCP< const Map<LocalOrdinal,GlobalOrdinal,Node> >
1491 const Teuchos::RCP<
const Teuchos::Comm<int> > &comm);
1492 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
1493 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
1495 Teuchos::RCP< const Map<LocalOrdinal,GlobalOrdinal,Node> >
1497 const Teuchos::RCP<
const Teuchos::Comm<int> > &comm,
1498 const Teuchos::RCP<Node>& node);
1499 #endif // TPETRA_ENABLE_DEPRECATED_CODE
1508 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
1509 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
1511 Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node> >
1512 createWeightedContigMapWithNode (
const int thisNodeWeight,
1514 const Teuchos::RCP<
const Teuchos::Comm<int> > &comm,
1515 const Teuchos::RCP<Node>& node = Teuchos::null);
1516 #endif // TPETRA_ENABLE_DEPRECATED_CODE
1522 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
1523 Teuchos::RCP< const Map<LocalOrdinal,GlobalOrdinal,Node> >
1531 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
1532 Teuchos::RCP< const Map<LocalOrdinal,GlobalOrdinal,Node> >
1534 const ::Tpetra::Details::TieBreak<LocalOrdinal,GlobalOrdinal> & tie_break);
1538 #include "Tpetra_Directory_decl.hpp"
1543 template<
class OutMapType,
class InMapType>
1544 OutMapType TPETRA_DEPRECATED
1545 MapCloner<OutMapType, InMapType>::
1546 clone (
const InMapType& mapIn,
1547 const Teuchos::RCP<out_node_type>& )
1549 static_assert (std::is_same<
typename OutMapType::local_ordinal_type,
1550 typename InMapType::local_ordinal_type>::value,
1551 "Tpetra::Map clone: The LocalOrdinal template parameter "
1552 "of the input and output Map types must be the same.");
1553 static_assert (std::is_same<
typename OutMapType::global_ordinal_type,
1554 typename InMapType::global_ordinal_type>::value,
1555 "Tpetra::Map clone: The GlobalOrdinal template parameter "
1556 "of the input and output Map types must be the same.");
1557 typedef typename OutMapType::local_ordinal_type LO;
1558 typedef typename OutMapType::global_ordinal_type GO;
1559 typedef ::Tpetra::Directory<LO, GO,
1560 typename OutMapType::node_type> out_dir_type;
1561 typedef typename OutMapType::global_to_local_table_type out_table_type;
1562 typedef typename OutMapType::device_type out_device_type;
1569 mapOut.comm_ = mapIn.comm_;
1570 mapOut.indexBase_ = mapIn.indexBase_;
1571 mapOut.numGlobalElements_ = mapIn.numGlobalElements_;
1572 mapOut.numLocalElements_ = mapIn.numLocalElements_;
1573 mapOut.minMyGID_ = mapIn.minMyGID_;
1574 mapOut.maxMyGID_ = mapIn.maxMyGID_;
1575 mapOut.minAllGID_ = mapIn.minAllGID_;
1576 mapOut.maxAllGID_ = mapIn.maxAllGID_;
1577 mapOut.firstContiguousGID_= mapIn.firstContiguousGID_;
1578 mapOut.lastContiguousGID_ = mapIn.lastContiguousGID_;
1579 mapOut.uniform_ = mapIn.uniform_;
1580 mapOut.contiguous_ = mapIn.contiguous_;
1581 mapOut.distributed_ = mapIn.distributed_;
1588 Kokkos::View<GO*, Kokkos::LayoutLeft, out_device_type>
1589 lgMapOut (
"lgMap", mapIn.lgMap_.extent (0));
1591 mapOut.lgMap_ = lgMapOut;
1605 Kokkos::create_mirror_view (Kokkos::HostSpace (), lgMapOut);
1607 mapOut.lgMapHost_ = lgMapHostOut;
1613 mapOut.glMap_ = out_table_type (mapIn.glMap_);
1618 mapOut.directory_ = Teuchos::rcp (
new out_dir_type ());
1625 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
1626 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
1627 template <
class NodeOut>
1628 Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, NodeOut> > TPETRA_DEPRECATED
1629 Map<LocalOrdinal,GlobalOrdinal,Node>::
1630 clone (
const Teuchos::RCP<NodeOut>& nodeOut)
const
1632 typedef Map<LocalOrdinal, GlobalOrdinal, Node> in_map_type;
1633 typedef Map<LocalOrdinal, GlobalOrdinal, NodeOut> out_map_type;
1634 typedef Details::MapCloner<out_map_type, in_map_type> cloner_type;
1636 return Teuchos::rcp (
new out_map_type (cloner_type::clone (*
this, nodeOut)));
1644 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
1651 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
1657 #endif // TPETRA_MAP_DECL_HPP