44 #ifndef TPETRA_DETAILS_GETGRAPHOFFRANKOFFSETS_DEF_HPP
45 #define TPETRA_DETAILS_GETGRAPHOFFRANKOFFSETS_DEF_HPP
53 #include "Tpetra_Map.hpp"
54 #include "KokkosSparse_findRelOffset.hpp"
81 const row_offsets_type& ptr,
82 const lcl_col_inds_type& ind) :
83 OffRankOffsets_ (OffRankOffsets),
84 lclColMap_ (lclColMap),
85 lclDomMap_ (lclDomMap),
89 typedef typename device_type::execution_space execution_space;
90 typedef Kokkos::RangePolicy<execution_space, LO> policy_type;
92 lclNumRows_ = ptr.extent(0)-1;
93 policy_type range (0, ptr.extent(0));
94 Kokkos::parallel_for (range, *
this);
106 Tpetra::Details::OrdinalTraits<LO>::invalid ();
108 if (lclRowInd == lclNumRows_)
109 OffRankOffsets_[lclRowInd] = ptr_[lclRowInd];
112 size_t offset = ptr_[lclRowInd+1];
113 for (
size_t j = ptr_[lclRowInd]; j < ptr_[lclRowInd+1]; j++) {
114 const LO lclColInd = ind_[j];
115 const GO gblColInd = lclColMap_.getGlobalElement (lclColInd);
116 const LO lclDomInd = lclDomMap_.getLocalElement (gblColInd);
117 if ((lclDomInd == INVALID) && (j < offset))
120 OffRankOffsets_[lclRowInd] = offset;
131 #define TPETRA_DETAILS_IMPL_GETGRAPHOFFRANKOFFSETS_INSTANT( LO, GO, NODE ) \
132 template class Details::Impl::GetGraphOffRankOffsets< LO, GO, NODE::device_type >;
134 #endif // TPETRA_DETAILS_GETGRAPHOFFRANKOFFSETS_DEF_HPP
Import KokkosSparse::OrdinalTraits, a traits class for "invalid" (flag) values of integer types...
GetGraphOffRankOffsets(const offsets_type &OffRankOffsets, const local_map_type &lclColMap, const local_map_type &lclDomMap, const row_offsets_type &ptr, const lcl_col_inds_type &ind)
Constructor; also runs the functor.
KOKKOS_FUNCTION void operator()(const LO &lclRowInd) const
Kokkos::parallel_for loop body.