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