|
Tpetra Matrix/Vector Services Version of the Day
|
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
1.7.4