• Main Page
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h

Go to the documentation of this file.
00001 #ifndef _VIENNACL_MATRIX_PROD_COL_COL_ROW_KERNELS_HPP_
00002 #define _VIENNACL_MATRIX_PROD_COL_COL_ROW_KERNELS_HPP_
00003 #include "viennacl/tools/tools.hpp"
00004 #include "viennacl/ocl/kernel.hpp"
00005 #include "viennacl/ocl/platform.hpp"
00006 #include "viennacl/ocl/utils.hpp"
00007 #include "viennacl/linalg/kernels/matrix_prod_col_col_row_source.h"
00008 
00009 //Automatically generated file from aux-directory, do not edit manually!
00010 namespace viennacl
00011 {
00012  namespace linalg
00013  {
00014   namespace kernels
00015   {
00016    template<class TYPE, unsigned int alignment>
00017    struct matrix_prod_col_col_row;
00018 
00019 
00021    template <>
00022    struct matrix_prod_col_col_row<float, 1>
00023    {
00024     static std::string program_name()
00025     {
00026       return "f_matrix_prod_col_col_row_1";
00027     }
00028     static void init()
00029     {
00030       viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
00031       static std::map<cl_context, bool> init_done;
00032       viennacl::ocl::context & context_ = viennacl::ocl::current_context();
00033       if (!init_done[context_.handle()])
00034       {
00035         std::string source;
00036         source.append(matrix_prod_col_col_row_align1_prod_TT);
00037         source.append(matrix_prod_col_col_row_align1_prod_TA);
00038         source.append(matrix_prod_col_col_row_align1_prod_AA);
00039         source.append(matrix_prod_col_col_row_align1_prod_AT);
00040         std::string prog_name = program_name();
00041         #ifdef VIENNACL_BUILD_INFO
00042         std::cout << "Creating program " << prog_name << std::endl;
00043         #endif
00044         context_.add_program(source, prog_name);
00045         viennacl::ocl::program & prog_ = context_.get_program(prog_name);
00046         prog_.add_kernel("prod_TT");
00047         prog_.add_kernel("prod_TA");
00048         prog_.add_kernel("prod_AA");
00049         prog_.add_kernel("prod_AT");
00050         init_done[context_.handle()] = true;
00051        } //if
00052      } //init
00053     }; // struct
00054 
00055 
00056 
00058    template <>
00059    struct matrix_prod_col_col_row<double, 1>
00060    {
00061     static std::string program_name()
00062     {
00063       return "d_matrix_prod_col_col_row_1";
00064     }
00065     static void init()
00066     {
00067       viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
00068       static std::map<cl_context, bool> init_done;
00069       viennacl::ocl::context & context_ = viennacl::ocl::current_context();
00070       if (!init_done[context_.handle()])
00071       {
00072         std::string source;
00073         std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
00074         source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_row_align1_prod_TT, fp64_ext));
00075         source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_row_align1_prod_TA, fp64_ext));
00076         source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_row_align1_prod_AA, fp64_ext));
00077         source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_row_align1_prod_AT, fp64_ext));
00078         std::string prog_name = program_name();
00079         #ifdef VIENNACL_BUILD_INFO
00080         std::cout << "Creating program " << prog_name << std::endl;
00081         #endif
00082         context_.add_program(source, prog_name);
00083         viennacl::ocl::program & prog_ = context_.get_program(prog_name);
00084         prog_.add_kernel("prod_TT");
00085         prog_.add_kernel("prod_TA");
00086         prog_.add_kernel("prod_AA");
00087         prog_.add_kernel("prod_AT");
00088         init_done[context_.handle()] = true;
00089        } //if
00090      } //init
00091     }; // struct
00092 
00093 
00094   }  //namespace kernels
00095  }  //namespace linalg
00096 }  //namespace viennacl
00097 #endif

Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by  doxygen 1.7.1