|
ViennaCL - The Vienna Computing Library
1.1.2
|
00001 /* ======================================================================= 00002 Copyright (c) 2010, Institute for Microelectronics, TU Vienna. 00003 http://www.iue.tuwien.ac.at 00004 ----------------- 00005 ViennaCL - The Vienna Computing Library 00006 ----------------- 00007 00008 authors: Karl Rupp rupp@iue.tuwien.ac.at 00009 Florian Rudolf flo.rudy+viennacl@gmail.com 00010 Josef Weinbub weinbub@iue.tuwien.ac.at 00011 00012 license: MIT (X11), see file LICENSE in the ViennaCL base directory 00013 ======================================================================= */ 00014 00015 #ifndef _VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_ 00016 #define _VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_ 00017 00022 #include <string> 00023 #include <fstream> 00024 #include <sstream> 00025 #include "viennacl/forwards.h" 00026 #include "viennacl/linalg/kernels/matrix_solve_col_col_kernels.h" 00027 #include "viennacl/linalg/kernels/matrix_solve_col_row_kernels.h" 00028 #include "viennacl/linalg/kernels/matrix_solve_row_col_kernels.h" 00029 #include "viennacl/linalg/kernels/matrix_solve_row_row_kernels.h" 00030 00031 #include <vector> 00032 #include <map> 00033 00034 namespace viennacl 00035 { 00036 namespace tools 00037 { 00039 template <typename MatrixType1, typename MatrixType2> 00040 struct MATRIX_SOLVE_KERNEL_CLASS_DEDUCER 00041 {}; 00042 00043 template <typename SCALARTYPE, unsigned int ALIGNMENT> 00044 struct MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT>, 00045 viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> > 00046 { 00047 typedef viennacl::linalg::kernels::matrix_solve_row_row<SCALARTYPE, ALIGNMENT> ResultType; 00048 }; 00049 00050 template <typename SCALARTYPE, unsigned int ALIGNMENT> 00051 struct MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT>, 00052 viennacl::matrix<SCALARTYPE, viennacl::column_major, ALIGNMENT> > 00053 { 00054 typedef viennacl::linalg::kernels::matrix_solve_row_col<SCALARTYPE, ALIGNMENT> ResultType; 00055 }; 00056 00057 template <typename SCALARTYPE, unsigned int ALIGNMENT> 00058 struct MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix<SCALARTYPE, viennacl::column_major, ALIGNMENT>, 00059 viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> > 00060 { 00061 typedef viennacl::linalg::kernels::matrix_solve_col_row<SCALARTYPE, ALIGNMENT> ResultType; 00062 }; 00063 00064 template <typename SCALARTYPE, unsigned int ALIGNMENT> 00065 struct MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix<SCALARTYPE, viennacl::column_major, ALIGNMENT>, 00066 viennacl::matrix<SCALARTYPE, viennacl::column_major, ALIGNMENT> > 00067 { 00068 typedef viennacl::linalg::kernels::matrix_solve_col_col<SCALARTYPE, ALIGNMENT> ResultType; 00069 }; 00070 00071 } 00072 00073 } 00074 00075 #endif
1.7.6.1