Tpetra parallel linear algebra Version of the Day
Loading...
Searching...
No Matches
Tpetra_Details_unpackCrsMatrixAndCombine_decl.hpp
Go to the documentation of this file.
1// @HEADER
2// ***********************************************************************
3//
4// Tpetra: Templated Linear Algebra Services Package
5// Copyright (2008) Sandia Corporation
6//
7// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8// the U.S. Government retains certain rights in this software.
9//
10// Redistribution and use in source and binary forms, with or without
11// modification, are permitted provided that the following conditions are
12// met:
13//
14// 1. Redistributions of source code must retain the above copyright
15// notice, this list of conditions and the following disclaimer.
16//
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// 3. Neither the name of the Corporation nor the names of the
22// contributors may be used to endorse or promote products derived from
23// this software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36//
37// ************************************************************************
38// @HEADER
39
40#ifndef TPETRA_DETAILS_UNPACKCRSMATRIXANDCOMBINE_DECL_HPP
41#define TPETRA_DETAILS_UNPACKCRSMATRIXANDCOMBINE_DECL_HPP
42
43#include "TpetraCore_config.h"
45#include "Kokkos_DualView.hpp"
48
69
70#ifndef DOXYGEN_SHOULD_SKIP_THIS
71namespace Teuchos {
72// Forward declaration of Array
73template<class T> class Array;
74// Forward declaration of ArrayView
75template<class T> class ArrayView;
76} // namespace Teuchos
77#endif // DOXYGEN_SHOULD_SKIP_THIS
78
79namespace Tpetra {
80
81//
82// Users must never rely on anything in the Details namespace.
83//
84namespace Details {
85
124template<typename ST, typename LO, typename GO, typename NT>
125void
127 const Teuchos::ArrayView<const char>& imports,
128 const Teuchos::ArrayView<const size_t>& numPacketsPerLID,
129 const Teuchos::ArrayView<const LO>& importLIDs,
130 size_t constantNumPackets,
131 CombineMode combineMode);
132
133template<typename ST, typename LO, typename GO, typename NT>
134void
135unpackCrsMatrixAndCombineNew(
136 const CrsMatrix<ST, LO, GO, NT>& sourceMatrix,
137 Kokkos::DualView<char*,
139 Kokkos::DualView<size_t*,
140 typename DistObject<char, LO, GO, NT>::buffer_device_type> numPacketsPerLID,
141 const Kokkos::DualView<const LO*,
143 const size_t constantNumPackets,
144 const CombineMode combineMode);
145
192//
201template<typename Scalar, typename LocalOrdinal, typename GlobalOrdinal, typename Node>
202size_t
205 const Teuchos::ArrayView<const LocalOrdinal> &importLIDs,
206 const Teuchos::ArrayView<const char> &imports,
207 const Teuchos::ArrayView<const size_t>& numPacketsPerLID,
208 size_t constantNumPackets,
209 CombineMode combineMode,
210 size_t numSameIDs,
211 const Teuchos::ArrayView<const LocalOrdinal>& permuteToLIDs,
212 const Teuchos::ArrayView<const LocalOrdinal>& permuteFromLIDs);
213
228template<typename Scalar, typename LocalOrdinal, typename GlobalOrdinal, typename Node>
229void
232 const Teuchos::ArrayView<const LocalOrdinal>& importLIDs,
233 const Teuchos::ArrayView<const char>& imports,
234 const Teuchos::ArrayView<const size_t>& numPacketsPerLID,
235 const size_t constantNumPackets,
236 const CombineMode combineMode,
237 const size_t numSameIDs,
238 const Teuchos::ArrayView<const LocalOrdinal>& permuteToLIDs,
239 const Teuchos::ArrayView<const LocalOrdinal>& permuteFromLIDs,
240 size_t TargetNumRows,
241 size_t TargetNumNonzeros,
242 const int MyTargetPID,
243 const Teuchos::ArrayView<size_t>& CRS_rowptr,
244 const Teuchos::ArrayView<GlobalOrdinal>& CRS_colind,
245 const Teuchos::ArrayView<typename CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>::impl_scalar_type>& CRS_vals,
246 const Teuchos::ArrayView<const int>& SourcePids,
247 Teuchos::Array<int>& TargetPids);
248
249} // namespace Details
250} // namespace Tpetra
251
252#endif // TPETRA_DETAILS_UNPACKCRSMATRIXANDCOMBINE_DECL_HPP
Declaration of Tpetra::CombineMode enum, and a function for setting a Tpetra::CombineMode parameter i...
Forward declaration of Tpetra::CrsMatrix.
Declaration of the Tpetra::DistObject class.
Sparse matrix that presents a row-oriented interface that lets users read or modify entries.
typename row_matrix_type::impl_scalar_type impl_scalar_type
The type used internally in place of Scalar.
Kokkos::Device< typename device_type::execution_space, buffer_memory_space > buffer_device_type
Kokkos::Device specialization for communication buffers.
Implementation details of Tpetra.
void unpackAndCombineIntoCrsArrays(const CrsGraph< LO, GO, NT > &sourceGraph, const Teuchos::ArrayView< const LO > &importLIDs, const Teuchos::ArrayView< const typename CrsGraph< LO, GO, NT >::packet_type > &imports, const Teuchos::ArrayView< const size_t > &numPacketsPerLID, const size_t constantNumPackets, const CombineMode combineMode, const size_t numSameIDs, const Teuchos::ArrayView< const LO > &permuteToLIDs, const Teuchos::ArrayView< const LO > &permuteFromLIDs, size_t TargetNumRows, size_t TargetNumNonzeros, const int MyTargetPID, const Teuchos::ArrayView< size_t > &CRS_rowptr, const Teuchos::ArrayView< GO > &CRS_colind, const Teuchos::ArrayView< const int > &SourcePids, Teuchos::Array< int > &TargetPids)
unpackAndCombineIntoCrsArrays
size_t unpackAndCombineWithOwningPIDsCount(const CrsGraph< LO, GO, NT > &sourceGraph, const Teuchos::ArrayView< const LO > &importLIDs, const Teuchos::ArrayView< const typename CrsGraph< LO, GO, NT >::packet_type > &imports, const Teuchos::ArrayView< const size_t > &numPacketsPerLID, size_t constantNumPackets, CombineMode combineMode, size_t numSameIDs, const Teuchos::ArrayView< const LO > &permuteToLIDs, const Teuchos::ArrayView< const LO > &permuteFromLIDs)
Special version of Tpetra::Details::unpackCrsGraphAndCombine that also unpacks owning process ranks.
void unpackCrsMatrixAndCombine(const CrsMatrix< ST, LO, GO, NT > &sourceMatrix, const Teuchos::ArrayView< const char > &imports, const Teuchos::ArrayView< const size_t > &numPacketsPerLID, const Teuchos::ArrayView< const LO > &importLIDs, size_t constantNumPackets, CombineMode combineMode)
Unpack the imported column indices and values, and combine into matrix.
Namespace Tpetra contains the class and methods constituting the Tpetra library.
CombineMode
Rule for combining data in an Import or Export.