Kokkos Node API and Local Linear Algebra Kernels Version of the Day
Kokkos_DefaultKernels.hpp
00001 #ifndef KOKKOS_DEFAULT_KERNELS_
00002 #define KOKKOS_DEFAULT_KERNELS_
00003 
00004 #include "Kokkos_ConfigDefs.hpp"
00005 #include "Kokkos_DefaultSparseOps.hpp"
00006 #include "Kokkos_DefaultBlockSparseOps.hpp"
00007 #include "Kokkos_DefaultRelaxation.hpp"
00008 #if HAVE_KOKKOS_CUSP
00009 #include "Kokkos_CUSPSparseOps.hpp"
00010 #endif
00011 
00012 namespace Kokkos {
00013 
00017   template <class Scalar, class Ordinal, class Node>
00018   struct DefaultKernels {
00019     typedef DefaultHostSparseOps <void  ,Ordinal,Node>  SparseOps;
00020     typedef DefaultBlockSparseOps<Scalar,Ordinal,Node>  BlockSparseOps;
00021     typedef DefaultRelaxation    <Scalar,Ordinal,Node>  Relaxations;
00022   };
00023 
00030 #ifdef HAVE_KOKKOS_CUSP
00031   class ThrustGPUNode;
00032   template <class Scalar, class Ordinal>
00033   struct DefaultKernels<Scalar,Ordinal,ThrustGPUNode> {
00034     typedef CUSPSparseOps<void  ,Ordinal,ThrustGPUNode>           SparseOps;
00035     typedef DefaultBlockSparseOps <Scalar,Ordinal,ThrustGPUNode>  BlockSparseOps;
00036     typedef DefaultRelaxation     <Scalar,Ordinal,ThrustGPUNode>  Relaxations;
00037   };
00038 #else
00039   class ThrustGPUNode;
00040   template <class Scalar, class Ordinal>
00041   struct DefaultKernels<Scalar,Ordinal,ThrustGPUNode> {
00042     typedef DefaultDeviceSparseOps<void  ,Ordinal,ThrustGPUNode>  SparseOps;
00043     typedef DefaultBlockSparseOps <Scalar,Ordinal,ThrustGPUNode>  BlockSparseOps;
00044     typedef DefaultRelaxation     <Scalar,Ordinal,ThrustGPUNode>  Relaxations;
00045   };
00046 #endif
00047 
00048 #ifdef HAVE_KOKKOS_TREAT_SERIALNODE_AS_DEVICE
00049 
00055   class SerialNode;
00056   template <class Scalar, class Ordinal>
00057   struct DefaultKernels<Scalar,Ordinal,SerialNode> {
00058     typedef DefaultDeviceSparseOps<void  ,Ordinal,SerialNode>       SparseOps;
00059     typedef DefaultBlockSparseOps <Scalar,Ordinal,SerialNode>  BlockSparseOps;
00060     typedef DefaultRelaxation     <Scalar,Ordinal,SerialNode>     Relaxations;
00061   };
00062 #endif
00063 
00064 }
00065 
00066 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends