Go to the documentation of this file.00001 #ifndef VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_
00002 #define VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00024 #include <string>
00025 #include <fstream>
00026 #include <sstream>
00027 #include "viennacl/forwards.h"
00028 #include "viennacl/linalg/kernels/matrix_solve_col_col_kernels.h"
00029 #include "viennacl/linalg/kernels/matrix_solve_col_row_kernels.h"
00030 #include "viennacl/linalg/kernels/matrix_solve_row_col_kernels.h"
00031 #include "viennacl/linalg/kernels/matrix_solve_row_row_kernels.h"
00032
00033 #include <vector>
00034 #include <map>
00035
00036 namespace viennacl
00037 {
00038 namespace tools
00039 {
00041 template <typename MatrixType1, typename MatrixType2>
00042 struct MATRIX_SOLVE_KERNEL_CLASS_DEDUCER
00043 {};
00044
00045 template <typename SCALARTYPE, unsigned int ALIGNMENT>
00046 struct MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT>,
00047 viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> >
00048 {
00049 typedef viennacl::linalg::kernels::matrix_solve_row_row<SCALARTYPE, ALIGNMENT> ResultType;
00050 };
00051
00052 template <typename SCALARTYPE, unsigned int ALIGNMENT>
00053 struct MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT>,
00054 viennacl::matrix<SCALARTYPE, viennacl::column_major, ALIGNMENT> >
00055 {
00056 typedef viennacl::linalg::kernels::matrix_solve_row_col<SCALARTYPE, ALIGNMENT> ResultType;
00057 };
00058
00059 template <typename SCALARTYPE, unsigned int ALIGNMENT>
00060 struct MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix<SCALARTYPE, viennacl::column_major, ALIGNMENT>,
00061 viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> >
00062 {
00063 typedef viennacl::linalg::kernels::matrix_solve_col_row<SCALARTYPE, ALIGNMENT> ResultType;
00064 };
00065
00066 template <typename SCALARTYPE, unsigned int ALIGNMENT>
00067 struct MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix<SCALARTYPE, viennacl::column_major, ALIGNMENT>,
00068 viennacl::matrix<SCALARTYPE, viennacl::column_major, ALIGNMENT> >
00069 {
00070 typedef viennacl::linalg::kernels::matrix_solve_col_col<SCALARTYPE, ALIGNMENT> ResultType;
00071 };
00072
00073 }
00074
00075 }
00076
00077 #endif