1 #ifndef _VIENNACL_MATRIX_ROW_KERNELS_HPP_
2 #define _VIENNACL_MATRIX_ROW_KERNELS_HPP_
16 template<
class TYPE,
unsigned int alignment>
22 struct matrix_row<float, 1>
24 static std::string program_name()
26 return "f_matrix_row_1";
31 static std::map<cl_context, bool> init_done;
33 if (!init_done[context_.
handle()])
61 std::string prog_name = program_name();
62 #ifdef VIENNACL_BUILD_INFO
63 std::cout <<
"Creating program " << prog_name << std::endl;
68 prog_.
add_kernel(
"trans_lower_triangular_substitute_inplace");
69 prog_.
add_kernel(
"trans_unit_upper_triangular_substitute_inplace");
73 prog_.
add_kernel(
"lower_triangular_substitute_inplace");
77 prog_.
add_kernel(
"trans_upper_triangular_substitute_inplace");
80 prog_.
add_kernel(
"unit_lower_triangular_substitute_inplace");
82 prog_.
add_kernel(
"upper_triangular_substitute_inplace");
86 prog_.
add_kernel(
"trans_unit_lower_triangular_substitute_inplace");
90 prog_.
add_kernel(
"unit_upper_triangular_substitute_inplace");
92 init_done[context_.
handle()] =
true;
98 struct matrix_row<float, 16>
100 static std::string program_name()
102 return "f_matrix_row_16";
107 static std::map<cl_context, bool> init_done;
109 if (!init_done[context_.
handle()])
137 std::string prog_name = program_name();
138 #ifdef VIENNACL_BUILD_INFO
139 std::cout <<
"Creating program " << prog_name << std::endl;
144 prog_.
add_kernel(
"trans_lower_triangular_substitute_inplace");
145 prog_.
add_kernel(
"trans_unit_upper_triangular_substitute_inplace");
149 prog_.
add_kernel(
"lower_triangular_substitute_inplace");
153 prog_.
add_kernel(
"trans_upper_triangular_substitute_inplace");
156 prog_.
add_kernel(
"unit_lower_triangular_substitute_inplace");
158 prog_.
add_kernel(
"upper_triangular_substitute_inplace");
162 prog_.
add_kernel(
"trans_unit_lower_triangular_substitute_inplace");
166 prog_.
add_kernel(
"unit_upper_triangular_substitute_inplace");
168 init_done[context_.
handle()] =
true;
177 struct matrix_row<double, 1>
179 static std::string program_name()
181 return "d_matrix_row_1";
186 static std::map<cl_context, bool> init_done;
188 if (!init_done[context_.
handle()])
217 std::string prog_name = program_name();
218 #ifdef VIENNACL_BUILD_INFO
219 std::cout <<
"Creating program " << prog_name << std::endl;
224 prog_.
add_kernel(
"trans_lower_triangular_substitute_inplace");
225 prog_.
add_kernel(
"trans_unit_upper_triangular_substitute_inplace");
229 prog_.
add_kernel(
"lower_triangular_substitute_inplace");
233 prog_.
add_kernel(
"trans_upper_triangular_substitute_inplace");
236 prog_.
add_kernel(
"unit_lower_triangular_substitute_inplace");
238 prog_.
add_kernel(
"upper_triangular_substitute_inplace");
242 prog_.
add_kernel(
"trans_unit_lower_triangular_substitute_inplace");
246 prog_.
add_kernel(
"unit_upper_triangular_substitute_inplace");
248 init_done[context_.
handle()] =
true;
254 struct matrix_row<double, 16>
256 static std::string program_name()
258 return "d_matrix_row_16";
263 static std::map<cl_context, bool> init_done;
265 if (!init_done[context_.
handle()])
294 std::string prog_name = program_name();
295 #ifdef VIENNACL_BUILD_INFO
296 std::cout <<
"Creating program " << prog_name << std::endl;
301 prog_.
add_kernel(
"trans_lower_triangular_substitute_inplace");
302 prog_.
add_kernel(
"trans_unit_upper_triangular_substitute_inplace");
306 prog_.
add_kernel(
"lower_triangular_substitute_inplace");
310 prog_.
add_kernel(
"trans_upper_triangular_substitute_inplace");
313 prog_.
add_kernel(
"unit_lower_triangular_substitute_inplace");
315 prog_.
add_kernel(
"upper_triangular_substitute_inplace");
319 prog_.
add_kernel(
"trans_unit_lower_triangular_substitute_inplace");
323 prog_.
add_kernel(
"unit_upper_triangular_substitute_inplace");
325 init_done[context_.
handle()] =
true;