|
Tpetra Matrix/Vector Services Version of the Day
|
00001 #include "Tpetra_CrsMatrixMultiplyOp.hpp" 00002 00003 #ifdef HAVE_TPETRA_EXPLICIT_INSTANTIATION 00004 00005 #include <Kokkos_SerialNode.hpp> 00006 #if defined(HAVE_KOKKOS_TBB) 00007 # include <Kokkos_TBBNode.hpp> 00008 #endif 00009 #if defined(HAVE_KOKKOS_THREADPOOL) 00010 # include <Kokkos_TPINode.hpp> 00011 #endif 00012 #if defined(HAVE_KOKKOS_THRUST) 00013 # include <Kokkos_ThrustGPUNode.hpp> 00014 #endif 00015 00016 #include "Tpetra_CrsMatrixMultiplyOp_def.hpp" 00017 // need this to instantiate CrsMatrix::multiply() 00018 #include "Tpetra_CrsMatrix_def.hpp" 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_MULTIPLYOP_INSTANT(float,float,int,int,Kokkos::SerialNode) 00026 #if defined(HAVE_KOKKOS_TBB) 00027 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(float,float,int,int,Kokkos::TBBNode) 00028 #endif 00029 #if defined(HAVE_KOKKOS_THREADPOOL) 00030 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(float,float,int,int,Kokkos::TPINode) 00031 #endif 00032 #if defined(HAVE_KOKKOS_THRUST) && defined(HAVE_KOKKOS_CUDA_FLOAT) 00033 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(float,float,int,int,Kokkos::ThrustGPUNode) 00034 #endif 00035 #endif 00036 00037 #if defined(HAVE_TPETRA_INST_DOUBLE) 00038 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(double,double,int,int,Kokkos::SerialNode) 00039 #if defined(HAVE_KOKKOS_TBB) 00040 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(double,double,int,int,Kokkos::TBBNode) 00041 #endif 00042 #if defined(HAVE_KOKKOS_THREADPOOL) 00043 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(double,double,int,int,Kokkos::TPINode) 00044 #endif 00045 #if defined(HAVE_KOKKOS_THRUST) && defined(HAVE_KOKKOS_CUDA_DOUBLE) 00046 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(double,double,int,int,Kokkos::ThrustGPUNode) 00047 #endif 00048 #endif 00049 00050 #if defined(HAVE_TPETRA_INST_COMPLEX_FLOAT) 00051 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(std::complex<float>,std::complex<float>,int,int,Kokkos::SerialNode) 00052 #if defined(HAVE_KOKKOS_TBB) 00053 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(std::complex<float>,std::complex<float>,int,int,Kokkos::TBBNode) 00054 #endif 00055 #if defined(HAVE_KOKKOS_THREADPOOL) 00056 TPETRA_CRSMATRIX_MULTIPLYOP_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_MULTIPLYOP_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_MULTIPLYOP_INSTANT(std::complex<double>,std::complex<double>,int,int,Kokkos::SerialNode) 00066 #if defined(HAVE_KOKKOS_TBB) 00067 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(std::complex<double>,std::complex<double>,int,int,Kokkos::TBBNode) 00068 #endif 00069 #if defined(HAVE_KOKKOS_THREADPOOL) 00070 TPETRA_CRSMATRIX_MULTIPLYOP_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_MULTIPLYOP_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_MULTIPLYOP_INSTANT(double,float,int,int,Kokkos::SerialNode) 00083 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(float,double,int,int,Kokkos::SerialNode) 00084 #if defined(HAVE_KOKKOS_TBB) 00085 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(double,float,int,int,Kokkos::TBBNode) 00086 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(float,double,int,int,Kokkos::TBBNode) 00087 #endif 00088 #if defined(HAVE_KOKKOS_THREADPOOL) 00089 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(double,float,int,int,Kokkos::TPINode) 00090 TPETRA_CRSMATRIX_MULTIPLYOP_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_MULTIPLYOP_INSTANT(double,float,int,int,Kokkos::ThrustGPUNode) 00094 TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(float,double,int,int,Kokkos::ThrustGPUNode) 00095 #endif 00096 #endif 00097 00098 } // namespace Tpetra 00099 00100 #endif // HAVE_TPETRA_EXPLICIT_INSTANTIATION
1.7.4