Tpetra parallel linear algebra  Version of the Day
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"
44 #include "Tpetra_CombineMode.hpp"
45 #include "Kokkos_DualView.hpp"
46 #include "Tpetra_CrsMatrix_fwd.hpp"
48 
69 
70 #ifndef DOXYGEN_SHOULD_SKIP_THIS
71 namespace Teuchos {
72 // Forward declaration of Array
73 template<class T> class Array;
74 // Forward declaration of ArrayView
75 template<class T> class ArrayView;
76 } // namespace Teuchos
77 #endif // DOXYGEN_SHOULD_SKIP_THIS
78 
79 namespace Tpetra {
80 
81 //
82 // Users must never rely on anything in the Details namespace.
83 //
84 namespace Details {
85 
124 template<typename ST, typename LO, typename GO, typename NT>
125 void
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 
133 template<typename ST, typename LO, typename GO, typename NT>
134 void
135 unpackCrsMatrixAndCombineNew(
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 //
201 template<typename Scalar, typename LocalOrdinal, typename GlobalOrdinal, typename Node>
202 size_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 
228 template<typename Scalar, typename LocalOrdinal, typename GlobalOrdinal, typename Node>
229 void
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.
Base class for distributed Tpetra objects that support data redistribution.
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.