10 #ifndef TPETRA_MATRIXMATRIX_DECL_HPP 
   11 #define TPETRA_MATRIXMATRIX_DECL_HPP 
   14 #include <Teuchos_RCP.hpp> 
   15 #include <Teuchos_Array.hpp> 
   16 #include "Tpetra_ConfigDefs.hpp" 
   17 #include "Tpetra_CrsMatrix.hpp" 
   18 #include "Tpetra_BlockCrsMatrix.hpp" 
   19 #include "Tpetra_Vector.hpp" 
   20 #include "TpetraExt_MMHelpers.hpp" 
   21 #include "KokkosKernels_Handle.hpp" 
   30 namespace MatrixMatrix {
 
   62 template <
class Scalar,
 
   67     const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
 
   69     const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& B,
 
   71     CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
 
   72     bool call_FillComplete_on_result                   = 
true,
 
   73     const std::string& label                           = std::string(),
 
   74     const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
   91 template <
class Scalar,
 
   96     const Teuchos::RCP<
const BlockCrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> >& A,
 
   98     const Teuchos::RCP<
const BlockCrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> >& B,
 
  100     Teuchos::RCP<BlockCrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> >& C,
 
  101     const std::string& label = std::string());
 
  114 template <
class Scalar,
 
  119     const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
 
  122     CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& B,
 
  154 template <
class Scalar,
 
  158 Teuchos::RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> >
 
  159 add(
const Scalar& alpha,
 
  160     const bool transposeA,
 
  161     const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
 
  163     const bool transposeB,
 
  164     const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& B,
 
  165     const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& domainMap = Teuchos::null,
 
  166     const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& rangeMap  = Teuchos::null,
 
  167     const Teuchos::RCP<Teuchos::ParameterList>& params                           = Teuchos::null);
 
  204 template <
class Scalar,
 
  208 void add(
const Scalar& alpha,
 
  209          const bool transposeA,
 
  210          const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
 
  212          const bool transposeB,
 
  213          const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& B,
 
  214          CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
 
  215          const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& domainMap = Teuchos::null,
 
  216          const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& rangeMap  = Teuchos::null,
 
  217          const Teuchos::RCP<Teuchos::ParameterList>& params                           = Teuchos::null);
 
  253 template <
class Scalar,
 
  258     const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
 
  261     const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& B,
 
  264     Teuchos::RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> >& C);
 
  295 template <
class Scalar,
 
  300     const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
 
  303     const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& B,
 
  306     const Teuchos::RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> >& C);
 
  329 template <
class Scalar,
 
  334             const Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Dinv,
 
  335             const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
 
  336             const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& B,
 
  337             CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
 
  338             bool call_FillComplete_on_result                   = 
true,
 
  339             const std::string& label                           = std::string(),
 
  340             const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  344 namespace MMdetails {
 
  347 template <
class Scalar,
 
  351 void mult_AT_B_newmatrix(
 
  352     const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
 
  353     const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& B,
 
  354     CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
 
  355     const std::string& label                           = std::string(),
 
  356     const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  358 template <
class Scalar,
 
  363     CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  364     CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
 
  365     CrsWrapper<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
 
  366     const std::string& label                           = std::string(),
 
  367     const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  369 template <
class Scalar,
 
  373 void mult_A_B_newmatrix(
 
  374     CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  375     CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
 
  376     CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
 
  377     const std::string& label                           = std::string(),
 
  378     const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  380 template <
class Scalar,
 
  384 void mult_A_B_newmatrix(
 
  385     BlockCrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  386     BlockCrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
 
  387     Teuchos::RCP<BlockCrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> >& C);
 
  389 template <
class Scalar,
 
  394     CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  395     CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
 
  396     CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
 
  397     const std::string& label                           = std::string(),
 
  398     const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  401 template <
class Scalar,
 
  405 void jacobi_A_B_newmatrix(
 
  407     const Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Dinv,
 
  408     CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  409     CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
 
  410     CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
 
  411     const std::string& label                           = std::string(),
 
  412     const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  414 template <
class Scalar,
 
  418 void jacobi_A_B_reuse(
 
  420     const Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Dinv,
 
  421     CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  422     CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
 
  423     CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
 
  424     const std::string& label                           = std::string(),
 
  425     const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  428 template <
class Scalar,
 
  432 void import_and_extract_views(
 
  433     const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& M,
 
  434     Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> > targetMap,
 
  435     CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Mview,
 
  436     Teuchos::RCP<
const Import<LocalOrdinal, GlobalOrdinal, Node> > prototypeImporter,
 
  437     bool userAssertsThereAreNoRemotes,
 
  438     const std::string& label,
 
  439     const Teuchos::RCP<Teuchos::ParameterList>& params);
 
  441 template <
class Scalar,
 
  445 void import_and_extract_views(
 
  446     const BlockCrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& M,
 
  447     Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> > targetMap,
 
  448     BlockCrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Mview,
 
  449     Teuchos::RCP<
const Import<LocalOrdinal, GlobalOrdinal, Node> > prototypeImporter,
 
  450     bool userAssertsThereAreNoRemotes);
 
  452 template <
class Scalar,
 
  456 void setMaxNumEntriesPerRow(
 
  457     CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Mview);
 
  461 template <
class Scalar,
 
  465           class LocalOrdinalViewType>
 
  466 struct KernelWrappers {
 
  467   static inline void mult_A_B_newmatrix_kernel_wrapper(CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  468                                                        CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
 
  469                                                        const LocalOrdinalViewType& Acol2Brow,
 
  470                                                        const LocalOrdinalViewType& Acol2Irow,
 
  471                                                        const LocalOrdinalViewType& Bcol2Ccol,
 
  472                                                        const LocalOrdinalViewType& Icol2Ccol,
 
  473                                                        CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
 
  474                                                        Teuchos::RCP<
const Import<LocalOrdinal, GlobalOrdinal, Node> > Cimport,
 
  475                                                        const std::string& label                           = std::string(),
 
  476                                                        const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  478   static inline void mult_A_B_reuse_kernel_wrapper(CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  479                                                    CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
 
  480                                                    const LocalOrdinalViewType& Acol2Brow,
 
  481                                                    const LocalOrdinalViewType& Acol2Irow,
 
  482                                                    const LocalOrdinalViewType& Bcol2Ccol,
 
  483                                                    const LocalOrdinalViewType& Icol2Ccol,
 
  484                                                    CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
 
  485                                                    Teuchos::RCP<
const Import<LocalOrdinal, GlobalOrdinal, Node> > Cimport,
 
  486                                                    const std::string& label                           = std::string(),
 
  487                                                    const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  493 template <
class Scalar,
 
  497           class LocalOrdinalViewType>
 
  498 struct KernelWrappers2 {
 
  499   static inline void jacobi_A_B_newmatrix_kernel_wrapper(Scalar omega,
 
  500                                                          const Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Dinv,
 
  501                                                          CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  502                                                          CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
 
  503                                                          const LocalOrdinalViewType& Acol2Brow,
 
  504                                                          const LocalOrdinalViewType& Acol2Irow,
 
  505                                                          const LocalOrdinalViewType& Bcol2Ccol,
 
  506                                                          const LocalOrdinalViewType& Icol2Ccol,
 
  507                                                          CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
 
  508                                                          Teuchos::RCP<
const Import<LocalOrdinal, GlobalOrdinal, Node> > Cimport,
 
  509                                                          const std::string& label                           = std::string(),
 
  510                                                          const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  512   static inline void jacobi_A_B_reuse_kernel_wrapper(Scalar omega,
 
  513                                                      const Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Dinv,
 
  514                                                      CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  515                                                      CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
 
  516                                                      const LocalOrdinalViewType& Acol2Brow,
 
  517                                                      const LocalOrdinalViewType& Acol2Irow,
 
  518                                                      const LocalOrdinalViewType& Bcol2Ccol,
 
  519                                                      const LocalOrdinalViewType& Icol2Ccol,
 
  520                                                      CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
 
  521                                                      Teuchos::RCP<
const Import<LocalOrdinal, GlobalOrdinal, Node> > Cimport,
 
  522                                                      const std::string& label                           = std::string(),
 
  523                                                      const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  528 template <
class Scalar,
 
  532           class LocalOrdinalViewType>
 
  533 struct KernelWrappers3 {
 
  534   static inline void mult_R_A_P_newmatrix_kernel_wrapper(CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Rview,
 
  535                                                          CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  536                                                          CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Pview,
 
  537                                                          const LocalOrdinalViewType& Acol2Prow,
 
  538                                                          const LocalOrdinalViewType& Acol2PIrow,
 
  539                                                          const LocalOrdinalViewType& Pcol2Ccol,
 
  540                                                          const LocalOrdinalViewType& PIcol2Ccol,
 
  541                                                          CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Ac,
 
  542                                                          Teuchos::RCP<
const Import<LocalOrdinal, GlobalOrdinal, Node> > Acimport,
 
  543                                                          const std::string& label                           = std::string(),
 
  544                                                          const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  546   static inline void mult_R_A_P_reuse_kernel_wrapper(CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Rview,
 
  547                                                      CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  548                                                      CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Pview,
 
  549                                                      const LocalOrdinalViewType& Acol2Prow,
 
  550                                                      const LocalOrdinalViewType& Acol2PIrow,
 
  551                                                      const LocalOrdinalViewType& Pcol2Ccol,
 
  552                                                      const LocalOrdinalViewType& PIcol2Ccol,
 
  553                                                      CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Ac,
 
  554                                                      Teuchos::RCP<
const Import<LocalOrdinal, GlobalOrdinal, Node> > Acimport,
 
  555                                                      const std::string& label                           = std::string(),
 
  556                                                      const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  558   static inline void mult_PT_A_P_newmatrix_kernel_wrapper(CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  559                                                           CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Pview,
 
  560                                                           const LocalOrdinalViewType& Acol2Prow,
 
  561                                                           const LocalOrdinalViewType& Acol2PIrow,
 
  562                                                           const LocalOrdinalViewType& Pcol2Ccol,
 
  563                                                           const LocalOrdinalViewType& PIcol2Ccol,
 
  564                                                           CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Ac,
 
  565                                                           Teuchos::RCP<
const Import<LocalOrdinal, GlobalOrdinal, Node> > Acimport,
 
  566                                                           const std::string& label                           = std::string(),
 
  567                                                           const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  569   static inline void mult_PT_A_P_reuse_kernel_wrapper(CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  570                                                       CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Pview,
 
  571                                                       const LocalOrdinalViewType& Acol2Prow,
 
  572                                                       const LocalOrdinalViewType& Acol2PIrow,
 
  573                                                       const LocalOrdinalViewType& Pcol2Ccol,
 
  574                                                       const LocalOrdinalViewType& PIcol2Ccol,
 
  575                                                       CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Ac,
 
  576                                                       Teuchos::RCP<
const Import<LocalOrdinal, GlobalOrdinal, Node> > Acimport,
 
  577                                                       const std::string& label                           = std::string(),
 
  578                                                       const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  582 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node, 
class LocalOrdinalViewType>
 
  584 merge_matrices(CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  585                CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
 
  586                const LocalOrdinalViewType& Acol2Brow,
 
  587                const LocalOrdinalViewType& Acol2Irow,
 
  588                const LocalOrdinalViewType& Bcol2Ccol,
 
  589                const LocalOrdinalViewType& Icol2Ccol,
 
  590                const size_t mergedNodeNumCols);
 
  593 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node, 
class LocalOrdinalViewType>
 
  594 inline const typename Tpetra::BlockCrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>::local_matrix_device_type
 
  595 merge_matrices(BlockCrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  596                BlockCrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
 
  597                const LocalOrdinalViewType& Acol2Brow,
 
  598                const LocalOrdinalViewType& Acol2Irow,
 
  599                const LocalOrdinalViewType& Bcol2Ccol,
 
  600                const LocalOrdinalViewType& Icol2Ccol,
 
  601                const size_t mergedNodeNumCols);
 
  603 template <
class CrsMatrixType>
 
  604 size_t C_estimate_nnz(CrsMatrixType& A, CrsMatrixType& B);
 
  606 template <
typename Scalar, 
typename LocalOrdinal, 
typename GlobalOrdinal, 
typename Node>
 
  610   typedef typename Node::device_type device_type;
 
  611   typedef typename device_type::execution_space execution_space;
 
  612   typedef typename device_type::memory_space memory_space;
 
  615   typedef typename KCRS::values_type::non_const_type values_array;
 
  616   typedef typename KCRS::row_map_type::non_const_type row_ptrs_array;
 
  617   typedef typename KCRS::row_map_type row_ptrs_array_const;
 
  618   typedef typename KCRS::index_type::non_const_type col_inds_array;
 
  620   typedef typename Kokkos::View<GlobalOrdinal*, device_type> global_col_inds_array;
 
  621   typedef Kokkos::RangePolicy<execution_space> range_type;
 
  622   typedef KokkosKernels::Experimental::KokkosKernelsHandle<size_t, LocalOrdinal, impl_scalar_type,
 
  623                                                            execution_space, memory_space, memory_space>
 
  640   static void addSorted(
 
  641       const values_array& Avals,
 
  642       const row_ptrs_array_const& Arowptrs,
 
  643       const col_inds_array& Acolinds,
 
  644       const impl_scalar_type scalarA,
 
  645       const values_array& Bvals,
 
  646       const row_ptrs_array_const& Browptrs,
 
  647       const col_inds_array& Bcolinds,
 
  648       const impl_scalar_type scalarB,
 
  649       GlobalOrdinal numGlobalCols,
 
  651       row_ptrs_array& Crowptrs,
 
  652       col_inds_array& Ccolinds);
 
  665   static void convertToGlobalAndAdd(
 
  667       const impl_scalar_type scalarA,
 
  669       const impl_scalar_type scalarB,
 
  670       const local_map_type& AcolMap,
 
  671       const local_map_type& BcolMap,
 
  673       row_ptrs_array& Crowptrs,
 
  674       global_col_inds_array& Ccolinds);
 
  690   static void addUnsorted(
 
  691       const values_array& Avals,
 
  692       const row_ptrs_array_const& Arowptrs,
 
  693       const col_inds_array& Acolinds,
 
  694       const impl_scalar_type scalarA,
 
  695       const values_array& Bvals,
 
  696       const row_ptrs_array_const& Browptrs,
 
  697       const col_inds_array& Bcolinds,
 
  698       const impl_scalar_type scalarB,
 
  699       GlobalOrdinal numGlobalCols,
 
  701       row_ptrs_array& Crowptrs,
 
  702       col_inds_array& Ccolinds);
 
  709 #endif  // TPETRA_MATRIXMATRIX_DECL_HPP 
Sparse matrix that presents a row-oriented interface that lets users read or modify entries...
 
void Jacobi(Scalar omega, const Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &Dinv, const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &A, const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &B, CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &C, bool call_FillComplete_on_result=true, const std::string &label=std::string(), const Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null)
 
Teuchos::RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > add(const Scalar &alpha, const bool transposeA, const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &A, const Scalar &beta, const bool transposeB, const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &B, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &domainMap=Teuchos::null, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rangeMap=Teuchos::null, const Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null)
Compute the sparse matrix sum C = scalarA * Op(A) + scalarB * Op(B), where Op(X) is either X or its t...
 
KokkosSparse::CrsMatrix< impl_scalar_type, local_ordinal_type, device_type, void, typename local_graph_device_type::size_type > local_matrix_device_type
The specialization of Kokkos::CrsMatrix that represents the part of the sparse matrix on each MPI pro...
 
void Add(const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &A, bool transposeA, Scalar scalarA, CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &B, Scalar scalarB)
 
void Multiply(const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &A, bool transposeA, const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &B, bool transposeB, CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &C, bool call_FillComplete_on_result=true, const std::string &label=std::string(), const Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null)
Sparse matrix-matrix multiply. 
 
typename row_matrix_type::impl_scalar_type impl_scalar_type
The type used internally in place of Scalar. 
 
A parallel distribution of indices over processes. 
 
::Tpetra::Details::LocalMap< local_ordinal_type, global_ordinal_type, device_type > local_map_type
Type of the "local" Map.