Kokkos Node API and Local Linear Algebra Kernels Version of the Day
Kokkos_DummySparseKernelClass.hpp
Go to the documentation of this file.
00001 #ifndef KOKKOS_DUMMY_SPARSE_KERNEL_CLASS_HPP
00002 #define KOKKOS_DUMMY_SPARSE_KERNEL_CLASS_HPP
00003 
00004 #include <Kokkos_CrsMatrix.hpp>
00005 #include <Kokkos_CrsGraph.hpp>
00006 #include <Kokkos_MultiVector.hpp>
00007 #include <Kokkos_DefaultNode.hpp>
00008 #include <Teuchos_BLAS_types.hpp>
00009 
00014 namespace KokkosExamples {
00015 
00020   template <class Node> 
00021   class DummySparseKernel {
00022   public:
00024 
00025 
00027     typedef void  ScalarType;
00029     typedef void OrdinalType;
00031     typedef Node    NodeType;
00033     typedef DummySparseKernel<Node> ThisType;
00034 
00040     template <class T>
00041     struct rebind {
00042       typedef DummySparseKernel<Node> other;
00043     };
00044 
00046 
00047 
00048 
00050     DummySparseKernel(const Teuchos::RCP<Node> & node) : node_(node) {}
00051 
00053     ~DummySparseKernel() {}
00054 
00056 
00057 
00058 
00063     Teuchos::RCP<Node> getNode() const {return node_;}
00064 
00066 
00067 
00068 
00083     template <class Ordinal>
00084     void initializeStructure(const Kokkos::CrsGraph<Ordinal,Node,DummySparseKernel<Node> > & /* graph */) {}
00085 
00101     template <class Scalar, class Ordinal>
00102     void initializeValues(const Kokkos::CrsMatrix<Scalar,Ordinal,Node,DummySparseKernel<Node> > & /* matrix */) {}
00103 
00112     void clear() {}
00113 
00115 
00116 
00117 
00119     template <class DomainScalar, class RangeScalar>
00120     void multiply(Teuchos::ETransp trans, RangeScalar alpha, const Kokkos::MultiVector<DomainScalar,Node> &X, Kokkos::MultiVector<RangeScalar,Node> &Y) const {}
00121 
00123     template <class DomainScalar, class RangeScalar>
00124     void multiply(Teuchos::ETransp trans, 
00125                   RangeScalar alpha, const Kokkos::MultiVector<DomainScalar,Node> &X, RangeScalar beta, Kokkos::MultiVector<RangeScalar,Node> &Y) const {}
00126 
00128     template <class DomainScalar, class RangeScalar>
00129     void solve(Teuchos::ETransp trans, Teuchos::EUplo uplo, Teuchos::EDiag diag, 
00130                const Kokkos::MultiVector<DomainScalar,Node> &Y, Kokkos::MultiVector<RangeScalar,Node> &X) const {}
00131 
00133   protected:
00135     DummySparseKernel(const DummySparseKernel& source);
00136 
00137     Teuchos::RCP<Node> node_;
00138   };
00139 
00144 } // end of namespace KokkosExamples
00145 
00146 namespace Kokkos {
00147 
00154   template <class Ordinal, 
00155             class Node>
00156   class CrsGraph<Ordinal,Node,KokkosExamples::DummySparseKernel<Node> > : public CrsGraphHostCompute<Ordinal,Node,KokkosExamples::DummySparseKernel<Node> > {
00157   public:
00158     CrsGraph(size_t numRows, const Teuchos::RCP<Node> &node) : CrsGraphHostCompute<Ordinal,Node,KokkosExamples::DummySparseKernel<Node> >(numRows,node) {}
00159   private:
00160     CrsGraph(const CrsGraph<Ordinal,Node,KokkosExamples::DummySparseKernel<Node> > &graph); // not implemented
00161   };
00162 
00169   template <class Scalar,
00170             class Ordinal, 
00171             class Node>
00172   class CrsMatrix<Scalar,Ordinal,Node,KokkosExamples::DummySparseKernel<Node> > : public CrsMatrixHostCompute<Scalar,Ordinal,Node,KokkosExamples::DummySparseKernel<Node> > {
00173   public:
00174     CrsMatrix() : CrsMatrixHostCompute<Scalar,Ordinal,Node,KokkosExamples::DummySparseKernel<Node> >() {}
00175     CrsMatrix(CrsGraph<Ordinal,Node,KokkosExamples::DummySparseKernel<Node> > &graph) : CrsMatrixHostCompute<Scalar,Ordinal,Node,KokkosExamples::DummySparseKernel<Node> >(graph) {}
00176     CrsMatrix(const CrsGraph<Ordinal,Node,KokkosExamples::DummySparseKernel<Node> > &graph) : CrsMatrixHostCompute<Scalar,Ordinal,Node,KokkosExamples::DummySparseKernel<Node> >(graph) {}
00177     void setStaticGraph(const CrsGraph<Ordinal,Node,KokkosExamples::DummySparseKernel<Node> > &graph) {
00178       const CrsGraphHostCompute<Ordinal,Node,KokkosExamples::DummySparseKernel<Node> > &hgraph = dynamic_cast<const CrsGraphHostCompute<Ordinal,Node,KokkosExamples::DummySparseKernel<Node> > &>(graph);
00179       CrsMatrixHostCompute<Scalar,Ordinal,Node,KokkosExamples::DummySparseKernel<Node> >::setStaticGraph(hgraph);
00180     }
00181     void setOwnedGraph(CrsGraph<Ordinal,Node,KokkosExamples::DummySparseKernel<Node> > &graph) {
00182       CrsGraphHostCompute<Ordinal,Node,KokkosExamples::DummySparseKernel<Node> > &hgraph = dynamic_cast<CrsGraphHostCompute<Ordinal,Node,KokkosExamples::DummySparseKernel<Node> > &>(graph);
00183       CrsMatrixHostCompute<Scalar,Ordinal,Node,KokkosExamples::DummySparseKernel<Node> >::setOwnedGraph(hgraph);
00184     }
00185   private:
00186     CrsMatrix(const CrsMatrix<Scalar,Ordinal,Node,KokkosExamples::DummySparseKernel<Node> > &mat); // not implemented
00187   };
00188 
00189 }
00190 
00191 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends