Tpetra_CrsMatrixMultiplyOp.cpp

00001 #include "Tpetra_CrsMatrixMultiplyOp.hpp"
00002 
00003 #ifdef HAVE_TPETRA_EXPLICIT_INSTANTIATION
00004 
00005 // #include "Tpetra_ExplicitInstantiationHelpers.hpp"
00006 
00007 #include <Kokkos_SerialNode.hpp>
00008 #if defined(HAVE_KOKKOS_TBB)
00009 #  include <Kokkos_TBBNode.hpp>
00010 #endif
00011 #if defined(HAVE_KOKKOS_THREADPOOL)
00012 #  include <Kokkos_TPINode.hpp>
00013 #endif
00014 #if defined(HAVE_KOKKOS_THRUST)
00015 #  include <Kokkos_ThrustGPUNode.hpp>
00016 #endif
00017 
00018 #include "Tpetra_CrsMatrixMultiplyOp_def.hpp"
00019 // need this to instantiate CrsMatrix::multiply()
00020 #include "Tpetra_CrsMatrix_def.hpp"
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_MULTIPLYOP_INSTANT(float,float,int,int,Kokkos::SerialNode)
00028 #if defined(HAVE_KOKKOS_TBB)
00029   TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(float,float,int,int,Kokkos::TBBNode)
00030 #endif
00031 #if defined(HAVE_KOKKOS_THREADPOOL)
00032     TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(float,float,int,int,Kokkos::TPINode)
00033 #endif
00034 #if defined(HAVE_KOKKOS_THRUST) && defined(HAVE_KOKKOS_CUDA_FLOAT)
00035     TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(float,float,int,int,Kokkos::ThrustGPUNode)
00036 #endif
00037 #endif
00038 
00039 #if defined(HAVE_TPETRA_INST_DOUBLE)
00040   TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(double,double,int,int,Kokkos::SerialNode)
00041 #if defined(HAVE_KOKKOS_TBB)
00042   TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(double,double,int,int,Kokkos::TBBNode)
00043 #endif
00044 #if defined(HAVE_KOKKOS_THREADPOOL)
00045     TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(double,double,int,int,Kokkos::TPINode)
00046 #endif
00047 #if defined(HAVE_KOKKOS_THRUST) && defined(HAVE_KOKKOS_CUDA_DOUBLE)
00048     TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(double,double,int,int,Kokkos::ThrustGPUNode)
00049 #endif
00050 #endif
00051 
00052 #if defined(HAVE_TPETRA_INST_COMPLEX_FLOAT)
00053   TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(std::complex<float>,std::complex<float>,int,int,Kokkos::SerialNode)
00054 #if defined(HAVE_KOKKOS_TBB)
00055   TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(std::complex<float>,std::complex<float>,int,int,Kokkos::TBBNode)
00056 #endif
00057 #if defined(HAVE_KOKKOS_THREADPOOL)
00058     TPETRA_CRSMATRIX_MULTIPLYOP_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_MULTIPLYOP_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_MULTIPLYOP_INSTANT(std::complex<double>,std::complex<double>,int,int,Kokkos::SerialNode)
00068 #if defined(HAVE_KOKKOS_TBB)
00069   TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(std::complex<double>,std::complex<double>,int,int,Kokkos::TBBNode)
00070 #endif
00071 #if defined(HAVE_KOKKOS_THREADPOOL)
00072     TPETRA_CRSMATRIX_MULTIPLYOP_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_MULTIPLYOP_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_MULTIPLYOP_INSTANT(double,float,int,int,Kokkos::SerialNode)
00085   TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(float,double,int,int,Kokkos::SerialNode)
00086 #if defined(HAVE_KOKKOS_TBB)
00087   TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(double,float,int,int,Kokkos::TBBNode)
00088   TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(float,double,int,int,Kokkos::TBBNode)
00089 #endif
00090 #if defined(HAVE_KOKKOS_THREADPOOL)
00091     TPETRA_CRSMATRIX_MULTIPLYOP_INSTANT(double,float,int,int,Kokkos::TPINode)
00092     TPETRA_CRSMATRIX_MULTIPLYOP_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_MULTIPLYOP_INSTANT(double,float,int,int,Kokkos::ThrustGPUNode)
00096     TPETRA_CRSMATRIX_MULTIPLYOP_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
Generated on Wed Apr 13 10:21:41 2011 for Tpetra Matrix/Vector Services by  doxygen 1.6.3