89#ifdef KOKKOS_ENABLE_CUDA
90 using no_uvm_memory_space =
typename std::conditional<std::is_same<memory_space, Kokkos::CudaUVMSpace>::value,
98 KOKKOS_DEFAULTED_FUNCTION
LocalMap() =
default;
100 LocalMap (const ::Tpetra::Details::FixedHashTable<GlobalOrdinal, LocalOrdinal, no_uvm_device_type>& glMap,
101 const ::Kokkos::View<const GlobalOrdinal*, ::Kokkos::LayoutLeft, no_uvm_device_type>& lgMap,
102 const GlobalOrdinal indexBase,
103 const GlobalOrdinal myMinGid,
104 const GlobalOrdinal myMaxGid,
105 const GlobalOrdinal firstContiguousGid,
106 const GlobalOrdinal lastContiguousGid,
107 const LocalOrdinal numLocalElements,
108 const bool contiguous) :
111 indexBase_ (indexBase),
112 myMinGid_ (myMinGid),
113 myMaxGid_ (myMaxGid),
114 firstContiguousGid_ (firstContiguousGid),
115 lastContiguousGid_ (lastContiguousGid),
116 numLocalElements_ (numLocalElements),
117 contiguous_ (contiguous)
122 return numLocalElements_;
144 KOKKOS_INLINE_FUNCTION LocalOrdinal
147 if (numLocalElements_ == 0) {
148 return ::Tpetra::Details::OrdinalTraits<LocalOrdinal>::invalid ();
150 return static_cast<LocalOrdinal
> (numLocalElements_ - 1);
165 KOKKOS_INLINE_FUNCTION LocalOrdinal
169 if (globalIndex < myMinGid_ || globalIndex > myMaxGid_) {
170 return ::Tpetra::Details::OrdinalTraits<LocalOrdinal>::invalid ();
172 return static_cast<LocalOrdinal
> (globalIndex - myMinGid_);
174 else if (globalIndex >= firstContiguousGid_ &&
175 globalIndex <= lastContiguousGid_) {
176 return static_cast<LocalOrdinal
> (globalIndex - firstContiguousGid_);
181 return glMap_.get (globalIndex);
186 KOKKOS_INLINE_FUNCTION GlobalOrdinal
190 return ::Tpetra::Details::OrdinalTraits<GlobalOrdinal>::invalid ();
196 return lgMap_(localIndex);
217 ::Kokkos::View<const GlobalOrdinal*, ::Kokkos::LayoutLeft, no_uvm_device_type> lgMap_;
219 GlobalOrdinal indexBase_ = 0;
220 GlobalOrdinal myMinGid_ = Tpetra::Details::OrdinalTraits<GlobalOrdinal>::invalid();
221 GlobalOrdinal myMaxGid_ = Tpetra::Details::OrdinalTraits<GlobalOrdinal>::invalid();
222 GlobalOrdinal firstContiguousGid_ = Tpetra::Details::OrdinalTraits<GlobalOrdinal>::invalid();
223 GlobalOrdinal lastContiguousGid_ = Tpetra::Details::OrdinalTraits<GlobalOrdinal>::invalid();
224 LocalOrdinal numLocalElements_ = 0;
225 bool contiguous_ =
false;