Tpetra Matrix/Vector Services Version of the Day
Tpetra_CrsMatrix.cpp
00001 /*
00002 // @HEADER
00003 // ***********************************************************************
00004 //
00005 //          Tpetra: Templated Linear Algebra Services Package
00006 //                 Copyright (2008) Sandia Corporation
00007 //
00008 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
00009 // the U.S. Government retains certain rights in this software.
00010 //
00011 // Redistribution and use in source and binary forms, with or without
00012 // modification, are permitted provided that the following conditions are
00013 // met:
00014 //
00015 // 1. Redistributions of source code must retain the above copyright
00016 // notice, this list of conditions and the following disclaimer.
00017 //
00018 // 2. Redistributions in binary form must reproduce the above copyright
00019 // notice, this list of conditions and the following disclaimer in the
00020 // documentation and/or other materials provided with the distribution.
00021 //
00022 // 3. Neither the name of the Corporation nor the names of the
00023 // contributors may be used to endorse or promote products derived from
00024 // this software without specific prior written permission.
00025 //
00026 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
00027 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00028 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00029 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
00030 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00031 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00032 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00033 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00034 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00035 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00036 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00037 //
00038 // Questions? Contact Michael A. Heroux (maherou@sandia.gov)
00039 //
00040 // ************************************************************************
00041 // @HEADER
00042 */
00043 
00044 #include "Tpetra_CrsMatrix.hpp"
00045 
00046 #ifdef HAVE_TPETRA_EXPLICIT_INSTANTIATION
00047 
00048 #include <Kokkos_SerialNode.hpp>
00049 #if defined(HAVE_KOKKOS_TBB)
00050 #  include <Kokkos_TBBNode.hpp>
00051 #endif
00052 #if defined(HAVE_KOKKOS_THREADPOOL)
00053 #  include <Kokkos_TPINode.hpp>
00054 #endif
00055 #if defined(HAVE_KOKKOS_OPENMP)
00056 #  include <Kokkos_OpenMPNode.hpp>
00057 #endif
00058 #if defined(HAVE_KOKKOS_CUSPARSE)
00059 #  include <Kokkos_ThrustGPUNode.hpp>
00060 #endif
00061 
00062 #include "Tpetra_CrsMatrix_def.hpp"
00063 #include "Tpetra_CrsGraph_def.hpp"
00064 
00065 namespace Tpetra {
00066 
00067 //
00068 // Explicit instantiations for LocalOrdinal = int, GlobalOrdinal = int
00069 //
00070 #if defined(HAVE_TPETRA_INST_DOUBLE)
00071   TPETRA_CRSMATRIX_INSTANT(double,int,int,Kokkos::SerialNode)
00072   TPETRA_CRSMATRIX_CONVERT_INSTANT(double,double,int,int,Kokkos::SerialNode)
00073   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(double, int, int, Kokkos::SerialNode)
00074   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(double, int, int, Kokkos::SerialNode)
00075 
00076 #if defined(HAVE_KOKKOS_TBB)
00077   TPETRA_CRSMATRIX_INSTANT(double,int,int,Kokkos::TBBNode)
00078   TPETRA_CRSMATRIX_CONVERT_INSTANT(double,double,int,int,Kokkos::TBBNode)
00079   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(double, int, int, Kokkos::TBBNode)
00080   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(double, int, int, Kokkos::TBBNode)
00081 #endif // HAVE_KOKKOS_TBB
00082 
00083 #if defined(HAVE_KOKKOS_THREADPOOL)
00084   TPETRA_CRSMATRIX_INSTANT(double,int,int,Kokkos::TPINode)
00085   TPETRA_CRSMATRIX_CONVERT_INSTANT(double,double,int,int,Kokkos::TPINode)
00086   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(double, int, int, Kokkos::TPINode)
00087   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(double, int, int, Kokkos::TPINode)
00088 #endif // HAVE_KOKKOS_THREADPOOL
00089 
00090 #if defined(HAVE_KOKKOS_OPENMP)
00091   TPETRA_CRSMATRIX_INSTANT(double,int,int,Kokkos::OpenMPNode)
00092   TPETRA_CRSMATRIX_CONVERT_INSTANT(double,double,int,int,Kokkos::OpenMPNode)
00093   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(double, int, int, Kokkos::OpenMPNode)
00094   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(double, int, int, Kokkos::OpenMPNode)
00095 #endif // HAVE_KOKKOS_OPENMP
00096 
00097 #if defined(HAVE_KOKKOS_CUSPARSE) && defined(HAVE_KOKKOS_CUDA_DOUBLE)
00098   TPETRA_CRSMATRIX_INSTANT(double,int,int,Kokkos::ThrustGPUNode)
00099   TPETRA_CRSMATRIX_CONVERT_INSTANT(double,double,int,int,Kokkos::ThrustGPUNode)
00100   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(double, int, int, Kokkos::ThrustGPUNode)
00101   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(double, int, int, Kokkos::ThrustGPUNode)
00102 #endif // HAVE_KOKKOS_CUSPARSE && HAVE_KOKKOS_CUDA_DOUBLE
00103 #endif // DOUBLE
00104 
00105 #if defined(HAVE_TPETRA_INST_FLOAT)
00106   TPETRA_CRSMATRIX_INSTANT(float,int,int,Kokkos::SerialNode)
00107   TPETRA_CRSMATRIX_CONVERT_INSTANT(float,float,int,int,Kokkos::SerialNode)
00108 #  if defined(HAVE_TPETRA_INST_DOUBLE)
00109   TPETRA_CRSMATRIX_CONVERT_INSTANT(float,double,int,int,Kokkos::SerialNode)
00110   TPETRA_CRSMATRIX_CONVERT_INSTANT(double,float,int,int,Kokkos::SerialNode)
00111 #  endif // if defined(HAVE_TPETRA_INST_DOUBLE)
00112   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(float, int, int, Kokkos::SerialNode)
00113   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(float, int, int, Kokkos::SerialNode)
00114 
00115 #if defined(HAVE_KOKKOS_TBB)
00116   TPETRA_CRSMATRIX_INSTANT(float,int,int,Kokkos::TBBNode)
00117 #  if defined(HAVE_TPETRA_INST_DOUBLE)
00118   TPETRA_CRSMATRIX_CONVERT_INSTANT(float,double,int,int,Kokkos::TBBNode)
00119   TPETRA_CRSMATRIX_CONVERT_INSTANT(double,float,int,int,Kokkos::TBBNode)
00120 #  endif // if defined(HAVE_TPETRA_INST_DOUBLE)
00121   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(float, int, int, Kokkos::TBBNode)
00122   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(float, int, int, Kokkos::TBBNode)
00123 #endif
00124 
00125 #if defined(HAVE_KOKKOS_THREADPOOL)
00126   TPETRA_CRSMATRIX_INSTANT(float,int,int,Kokkos::TPINode)
00127 #  if defined(HAVE_TPETRA_INST_DOUBLE)
00128   TPETRA_CRSMATRIX_CONVERT_INSTANT(float,double,int,int,Kokkos::TPINode)
00129   TPETRA_CRSMATRIX_CONVERT_INSTANT(double,float,int,int,Kokkos::TPINode)
00130 #  endif // if defined(HAVE_TPETRA_INST_DOUBLE)
00131   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(float, int, int, Kokkos::TPINode)
00132   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(float, int, int, Kokkos::TPINode)
00133 #endif
00134 
00135 #if defined(HAVE_KOKKOS_OPENMP)
00136   TPETRA_CRSMATRIX_INSTANT(float,int,int,Kokkos::OpenMPNode)
00137 #  if defined(HAVE_TPETRA_INST_DOUBLE)
00138   TPETRA_CRSMATRIX_CONVERT_INSTANT(float,double,int,int,Kokkos::OpenMPNode)
00139   TPETRA_CRSMATRIX_CONVERT_INSTANT(double,float,int,int,Kokkos::OpenMPNode)
00140 #  endif // if defined(HAVE_TPETRA_INST_DOUBLE)
00141   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(float, int, int, Kokkos::OpenMPNode)
00142   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(float, int, int, Kokkos::OpenMPNode)
00143 #endif
00144 
00145 #if defined(HAVE_KOKKOS_CUSPARSE) && defined(HAVE_KOKKOS_CUDA_FLOAT)
00146   TPETRA_CRSMATRIX_INSTANT(float,int,int,Kokkos::ThrustGPUNode)
00147 #  if defined(HAVE_KOKKOS_CUDA_DOUBLE)
00148   TPETRA_CRSMATRIX_CONVERT_INSTANT(float,double,int,int,Kokkos::ThrustGPUNode)
00149   TPETRA_CRSMATRIX_CONVERT_INSTANT(double,float,int,int,Kokkos::ThrustGPUNode)
00150 #  endif // if defined(HAVE_KOKKOS_CUDA_DOUBLE)
00151   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(float, int, int, Kokkos::ThrustGPUNode)
00152   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(float, int, int, Kokkos::ThrustGPUNode)
00153 #endif
00154 #endif // FLOAT
00155 
00156 #if defined(HAVE_TPETRA_INST_COMPLEX_DOUBLE)
00157   TPETRA_CRSMATRIX_INSTANT(std::complex<double>,int,int,Kokkos::SerialNode)
00158   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, int, Kokkos::SerialNode)
00159   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, int, Kokkos::SerialNode)
00160 
00161 #if defined(HAVE_KOKKOS_TBB)
00162   TPETRA_CRSMATRIX_INSTANT(std::complex<double>,int,int,Kokkos::TBBNode)
00163   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, int, Kokkos::TBBNode)
00164   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, int, Kokkos::TBBNode)
00165 #endif
00166 
00167 #if defined(HAVE_KOKKOS_THREADPOOL)
00168   TPETRA_CRSMATRIX_INSTANT(std::complex<double>,int,int,Kokkos::TPINode)
00169   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, int, Kokkos::TPINode)
00170   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, int, Kokkos::TPINode)
00171 #endif
00172 
00173 #if defined(HAVE_KOKKOS_OPENMP)
00174   TPETRA_CRSMATRIX_INSTANT(std::complex<double>,int,int,Kokkos::OpenMPNode)
00175   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, int, Kokkos::OpenMPNode)
00176   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, int, Kokkos::OpenMPNode)
00177 #endif
00178 //
00179 // No std::complex<double> on GPU support for now.
00180 //
00181 //#if defined(HAVE_KOKKOS_CUSPARSE) && defined(HAVE_KOKKOS_CUDA_DOUBLE)
00182 //  TPETRA_CRSMATRIX_INSTANT(std::complex<double>,int,int,Kokkos::ThrustGPUNode)
00183 //  TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, int, Kokkos::ThrustGPUNode)
00184 //  TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, int, Kokkos::ThrustGPUNode)
00185 //#endif
00186 #endif // COMPLEX DOUBLE
00187 
00188 #if defined(HAVE_TPETRA_INST_COMPLEX_FLOAT)
00189   TPETRA_CRSMATRIX_INSTANT(std::complex<float>,int,int,Kokkos::SerialNode)
00190   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, int, Kokkos::SerialNode)
00191   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, int, Kokkos::SerialNode)
00192 
00193 #if defined(HAVE_KOKKOS_TBB)
00194   TPETRA_CRSMATRIX_INSTANT(std::complex<float>,int,int,Kokkos::TBBNode)
00195   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, int, Kokkos::TBBNode)
00196   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, int, Kokkos::TBBNode)
00197 #endif
00198 
00199 #if defined(HAVE_KOKKOS_THREADPOOL)
00200   TPETRA_CRSMATRIX_INSTANT(std::complex<float>,int,int,Kokkos::TPINode)
00201   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, int, Kokkos::TPINode)
00202   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, int, Kokkos::TPINode)
00203 #endif
00204 
00205 #if defined(HAVE_KOKKOS_OPENMP)
00206   TPETRA_CRSMATRIX_INSTANT(std::complex<float>,int,int,Kokkos::OpenMPNode)
00207   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, int, Kokkos::OpenMPNode)
00208   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, int, Kokkos::OpenMPNode)
00209 #endif
00210 //
00211 // No std::complex<float> on GPU support for now.
00212 //
00213 //#if defined(HAVE_KOKKOS_CUSPARSE) && defined(HAVE_KOKKOS_CUDA_DOUBLE)
00214 //  TPETRA_CRSMATRIX_INSTANT(double,int,int,Kokkos::ThrustGPUNode)
00215 //  TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, int, Kokkos::ThrustGPUNode)
00216 //  TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, int, Kokkos::ThrustGPUNode)
00217 //#endif
00218 #endif // COMPLEX FLOAT
00219 
00220 //
00221 // Explicit instantiations for LocalOrdinal = int, GlobalOrdinal = long
00222 //
00223 #ifdef HAVE_TPETRA_INST_INT_LONG
00224 #if defined(HAVE_TPETRA_INST_DOUBLE)
00225   TPETRA_CRSMATRIX_INSTANT(double,int,long,Kokkos::SerialNode)
00226   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(double, int, long, Kokkos::SerialNode)
00227   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(double, int, long, Kokkos::SerialNode)
00228 
00229 #if defined(HAVE_KOKKOS_TBB)
00230   TPETRA_CRSMATRIX_INSTANT(double,int,long,Kokkos::TBBNode)
00231   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(double, int, long, Kokkos::TBBNode)
00232   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(double, int, long, Kokkos::TBBNode)
00233 #endif // HAVE_KOKKOS_TBB
00234 
00235 #if defined(HAVE_KOKKOS_THREADPOOL)
00236   TPETRA_CRSMATRIX_INSTANT(double,int,long,Kokkos::TPINode)
00237   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(double, int, long, Kokkos::TPINode)
00238   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(double, int, long, Kokkos::TPINode)
00239 #endif // HAVE_KOKKOS_THREADPOOL
00240 
00241 #if defined(HAVE_KOKKOS_OPENMP)
00242   TPETRA_CRSMATRIX_INSTANT(double,int,long,Kokkos::OpenMPNode)
00243   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(double, int, long, Kokkos::OpenMPNode)
00244   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(double, int, long, Kokkos::OpenMPNode)
00245 #endif // HAVE_KOKKOS_OPENMP
00246 
00247 #if defined(HAVE_KOKKOS_CUSPARSE) && defined(HAVE_KOKKOS_CUDA_DOUBLE)
00248   TPETRA_CRSMATRIX_INSTANT(double,int,long,Kokkos::ThrustGPUNode)
00249   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(double, int, long, Kokkos::ThrustGPUNode)
00250   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(double, int, long, Kokkos::ThrustGPUNode)
00251 #endif // HAVE_KOKKOS_CUSPARSE && HAVE_KOKKOS_CUDA_DOUBLE
00252 #endif // DOUBLE
00253 
00254 #if defined(HAVE_TPETRA_INST_FLOAT)
00255   TPETRA_CRSMATRIX_INSTANT(float,int,long,Kokkos::SerialNode)
00256   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(float, int, long, Kokkos::SerialNode)
00257   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(float, int, long, Kokkos::SerialNode)
00258 
00259 #if defined(HAVE_KOKKOS_TBB)
00260   TPETRA_CRSMATRIX_INSTANT(float,int,long,Kokkos::TBBNode)
00261   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(float, int, long, Kokkos::TBBNode)
00262   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(float, int, long, Kokkos::TBBNode)
00263 #endif
00264 
00265 #if defined(HAVE_KOKKOS_THREADPOOL)
00266   TPETRA_CRSMATRIX_INSTANT(float,int,long,Kokkos::TPINode)
00267   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(float, int, long, Kokkos::TPINode)
00268   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(float, int, long, Kokkos::TPINode)
00269 #endif
00270 
00271 #if defined(HAVE_KOKKOS_OPENMP)
00272   TPETRA_CRSMATRIX_INSTANT(float,int,long,Kokkos::OpenMPNode)
00273   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(float, int, long, Kokkos::OpenMPNode)
00274   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(float, int, long, Kokkos::OpenMPNode)
00275 #endif
00276 
00277 #if defined(HAVE_KOKKOS_CUSPARSE) && defined(HAVE_KOKKOS_CUDA_FLOAT)
00278   TPETRA_CRSMATRIX_INSTANT(float,int,long,Kokkos::ThrustGPUNode)
00279   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(float, int, long, Kokkos::ThrustGPUNode)
00280   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(float, int, long, Kokkos::ThrustGPUNode)
00281 #endif
00282 #endif // FLOAT
00283 
00284 #if defined(HAVE_TPETRA_INST_COMPLEX_DOUBLE)
00285   TPETRA_CRSMATRIX_INSTANT(std::complex<double>,int,long,Kokkos::SerialNode)
00286   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, long, Kokkos::SerialNode)
00287   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, long, Kokkos::SerialNode)
00288 
00289 #if defined(HAVE_KOKKOS_TBB)
00290   TPETRA_CRSMATRIX_INSTANT(std::complex<double>,int,long,Kokkos::TBBNode)
00291   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, long, Kokkos::TBBNode)
00292   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, long, Kokkos::TBBNode)
00293 #endif
00294 
00295 #if defined(HAVE_KOKKOS_THREADPOOL)
00296   TPETRA_CRSMATRIX_INSTANT(std::complex<double>,int,long,Kokkos::TPINode)
00297   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, long, Kokkos::TPINode)
00298   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, long, Kokkos::TPINode)
00299 #endif
00300 
00301 #if defined(HAVE_KOKKOS_OPENMP)
00302   TPETRA_CRSMATRIX_INSTANT(std::complex<double>,int,long,Kokkos::OpenMPNode)
00303   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, long, Kokkos::OpenMPNode)
00304   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, long, Kokkos::OpenMPNode)
00305 #endif
00306 //
00307 // No std::complex<double> on GPU support for now.
00308 //
00309 //#if defined(HAVE_KOKKOS_CUSPARSE) && defined(HAVE_KOKKOS_CUDA_DOUBLE)
00310 //  TPETRA_CRSMATRIX_INSTANT(std::complex<double>,int,long,Kokkos::ThrustGPUNode)
00311 //  TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, long, Kokkos::ThrustGPUNode)
00312 //  TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<double>, int, long, Kokkos::ThrustGPUNode)
00313 //#endif
00314 #endif // COMPLEX DOUBLE
00315 
00316 #if defined(HAVE_TPETRA_INST_COMPLEX_FLOAT)
00317   TPETRA_CRSMATRIX_INSTANT(std::complex<float>,int,long,Kokkos::SerialNode)
00318   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, long, Kokkos::SerialNode)
00319   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, long, Kokkos::SerialNode)
00320 
00321 #if defined(HAVE_KOKKOS_TBB)
00322   TPETRA_CRSMATRIX_INSTANT(std::complex<float>,int,long,Kokkos::TBBNode)
00323   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, long, Kokkos::TBBNode)
00324   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, long, Kokkos::TBBNode)
00325 #endif
00326 
00327 #if defined(HAVE_KOKKOS_THREADPOOL)
00328   TPETRA_CRSMATRIX_INSTANT(std::complex<float>,int,long,Kokkos::TPINode)
00329   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, long, Kokkos::TPINode)
00330   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, long, Kokkos::TPINode)
00331 #endif
00332 
00333 #if defined(HAVE_KOKKOS_OPENMP)
00334   TPETRA_CRSMATRIX_INSTANT(std::complex<float>,int,long,Kokkos::OpenMPNode)
00335   TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, long, Kokkos::OpenMPNode)
00336   TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, long, Kokkos::OpenMPNode)
00337 #endif
00338 //
00339 // No std::complex<float> on GPU support for now.
00340 //
00341 //#if defined(HAVE_KOKKOS_CUSPARSE) && defined(HAVE_KOKKOS_CUDA_DOUBLE)
00342 //  TPETRA_CRSMATRIX_INSTANT(double,int,long,Kokkos::ThrustGPUNode)
00343 //  TPETRA_CRSMATRIX_IMPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, long, Kokkos::ThrustGPUNode)
00344 //  TPETRA_CRSMATRIX_EXPORT_AND_FILL_COMPLETE_INSTANT(std::complex<float>, int, long, Kokkos::ThrustGPUNode)
00345 //#endif
00346 #endif // COMPLEX FLOAT
00347 #endif
00348 
00349 
00350 } // namespace Tpetra
00351 
00352 #endif // HAVE_TPETRA_EXPLICIT_INSTANTIATION
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines