Tpetra Matrix/Vector Services Version of the Day
Tpetra_CrsMatrixSolveOp.cpp
00001 #include "Tpetra_CrsMatrixSolveOp.hpp"
00002 
00003 #ifdef HAVE_TPETRA_EXPLICIT_INSTANTIATION
00004 
00005 // #include "Tpetra_ExplicitInstantiationHelpers.hpp"
00006 
00007 #include "Tpetra_CrsMatrixSolveOp_def.hpp"
00008 // need this to instantiate CrsMatrix::solve()
00009 #include "Tpetra_CrsMatrix_def.hpp"
00010 
00011 #include <Kokkos_SerialNode.hpp>
00012 #if defined(HAVE_KOKKOS_TBB)
00013 #  include <Kokkos_TBBNode.hpp>
00014 #endif
00015 #if defined(HAVE_KOKKOS_THREADPOOL)
00016 #  include <Kokkos_TPINode.hpp>
00017 #endif
00018 #if defined(HAVE_KOKKOS_THRUST)
00019 #  include <Kokkos_ThrustGPUNode.hpp>
00020 #endif
00021 
00022 namespace Tpetra {
00023 
00024   // instantiate all single-scalar implementations; these are needed internally by CrsMatrix
00025 
00026 #if defined(HAVE_TPETRA_INST_FLOAT)
00027   TPETRA_CRSMATRIX_SOLVEOP_INSTANT(float,float,int,int,Kokkos::SerialNode)
00028 #if defined(HAVE_KOKKOS_TBB)
00029   TPETRA_CRSMATRIX_SOLVEOP_INSTANT(float,float,int,int,Kokkos::TBBNode)
00030 #endif
00031 #if defined(HAVE_KOKKOS_THREADPOOL)
00032     TPETRA_CRSMATRIX_SOLVEOP_INSTANT(float,float,int,int,Kokkos::TPINode)
00033 #endif
00034 #if defined(HAVE_KOKKOS_THRUST) && defined(HAVE_KOKKOS_CUDA_FLOAT)
00035     TPETRA_CRSMATRIX_SOLVEOP_INSTANT(float,float,int,int,Kokkos::ThrustGPUNode)
00036 #endif
00037 #endif
00038 
00039 #if defined(HAVE_TPETRA_INST_DOUBLE)
00040   TPETRA_CRSMATRIX_SOLVEOP_INSTANT(double,double,int,int,Kokkos::SerialNode)
00041 #if defined(HAVE_KOKKOS_TBB)
00042   TPETRA_CRSMATRIX_SOLVEOP_INSTANT(double,double,int,int,Kokkos::TBBNode)
00043 #endif
00044 #if defined(HAVE_KOKKOS_THREADPOOL)
00045     TPETRA_CRSMATRIX_SOLVEOP_INSTANT(double,double,int,int,Kokkos::TPINode)
00046 #endif
00047 #if defined(HAVE_KOKKOS_THRUST) && defined(HAVE_KOKKOS_CUDA_DOUBLE)
00048     TPETRA_CRSMATRIX_SOLVEOP_INSTANT(double,double,int,int,Kokkos::ThrustGPUNode)
00049 #endif
00050 #endif
00051 
00052 #if defined(HAVE_TPETRA_INST_COMPLEX_FLOAT)
00053   TPETRA_CRSMATRIX_SOLVEOP_INSTANT(std::complex<float>,std::complex<float>,int,int,Kokkos::SerialNode)
00054 #if defined(HAVE_KOKKOS_TBB)
00055   TPETRA_CRSMATRIX_SOLVEOP_INSTANT(std::complex<float>,std::complex<float>,int,int,Kokkos::TBBNode)
00056 #endif
00057 #if defined(HAVE_KOKKOS_THREADPOOL)
00058     TPETRA_CRSMATRIX_SOLVEOP_INSTANT(std::complex<float>,std::complex<float>,int,int,Kokkos::TPINode)
00059 #endif
00060 // not yet supported
00061 // #if defined(HAVE_KOKKOS_THRUST) && defined(HAVE_KOKKOS_CUDA_COMPLEX_FLOAT)
00062 //     TPETRA_CRSMATRIX_SOLVEOP_INSTANT(std::complex<float>,std::complex<float>,int,int,Kokkos::ThrustGPUNode)
00063 // #endif
00064 #endif
00065 
00066 #if defined(HAVE_TPETRA_INST_COMPLEX_DOUBLE)
00067   TPETRA_CRSMATRIX_SOLVEOP_INSTANT(std::complex<double>,std::complex<double>,int,int,Kokkos::SerialNode)
00068 #if defined(HAVE_KOKKOS_TBB)
00069   TPETRA_CRSMATRIX_SOLVEOP_INSTANT(std::complex<double>,std::complex<double>,int,int,Kokkos::TBBNode)
00070 #endif
00071 #if defined(HAVE_KOKKOS_THREADPOOL)
00072     TPETRA_CRSMATRIX_SOLVEOP_INSTANT(std::complex<double>,std::complex<double>,int,int,Kokkos::TPINode)
00073 #endif
00074 // not yet supported
00075 // #if defined(HAVE_KOKKOS_THRUST) && defined(HAVE_KOKKOS_CUDA_COMPLEX_DOUBLE)
00076 //     TPETRA_CRSMATRIX_SOLVEOP_INSTANT(std::complex<double>,std::complex<double>,int,int,Kokkos::ThrustGPUNode)
00077 // #endif
00078 #endif
00079 
00080   // get all cross scalar applications
00081 
00082   // double x float
00083 #if defined(HAVE_TPETRA_INST_DOUBLE) && defined(HAVE_TPETRA_INST_FLOAT)
00084   TPETRA_CRSMATRIX_SOLVEOP_INSTANT(double,float,int,int,Kokkos::SerialNode)
00085   TPETRA_CRSMATRIX_SOLVEOP_INSTANT(float,double,int,int,Kokkos::SerialNode)
00086 #if defined(HAVE_KOKKOS_TBB)
00087   TPETRA_CRSMATRIX_SOLVEOP_INSTANT(double,float,int,int,Kokkos::TBBNode)
00088   TPETRA_CRSMATRIX_SOLVEOP_INSTANT(float,double,int,int,Kokkos::TBBNode)
00089 #endif
00090 #if defined(HAVE_KOKKOS_THREADPOOL)
00091     TPETRA_CRSMATRIX_SOLVEOP_INSTANT(double,float,int,int,Kokkos::TPINode)
00092     TPETRA_CRSMATRIX_SOLVEOP_INSTANT(float,double,int,int,Kokkos::TPINode)
00093 #endif
00094 #if defined(HAVE_KOKKOS_THRUST) && defined(HAVE_KOKKOS_CUDA_FLOAT) && defined(HAVE_KOKKOS_CUDA_DOUBLE)
00095     TPETRA_CRSMATRIX_SOLVEOP_INSTANT(double,float,int,int,Kokkos::ThrustGPUNode)
00096     TPETRA_CRSMATRIX_SOLVEOP_INSTANT(float,double,int,int,Kokkos::ThrustGPUNode)
00097 #endif
00098 #endif
00099 
00100 } // namespace Tpetra
00101 
00102 #endif // HAVE_TPETRA_EXPLICIT_INSTANTIATION
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines