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;
71 prog_.
add_kernel(
"trans_unit_lower_triangular_substitute_inplace");
72 prog_.
add_kernel(
"lower_triangular_substitute_inplace");
76 prog_.
add_kernel(
"trans_unit_upper_triangular_substitute_inplace");
78 prog_.
add_kernel(
"unit_upper_triangular_substitute_inplace");
79 prog_.
add_kernel(
"trans_upper_triangular_substitute_inplace");
80 prog_.
add_kernel(
"upper_triangular_substitute_inplace");
81 prog_.
add_kernel(
"unit_lower_triangular_substitute_inplace");
86 prog_.
add_kernel(
"trans_lower_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;
147 prog_.
add_kernel(
"trans_unit_lower_triangular_substitute_inplace");
148 prog_.
add_kernel(
"lower_triangular_substitute_inplace");
152 prog_.
add_kernel(
"trans_unit_upper_triangular_substitute_inplace");
154 prog_.
add_kernel(
"unit_upper_triangular_substitute_inplace");
155 prog_.
add_kernel(
"trans_upper_triangular_substitute_inplace");
156 prog_.
add_kernel(
"upper_triangular_substitute_inplace");
157 prog_.
add_kernel(
"unit_lower_triangular_substitute_inplace");
162 prog_.
add_kernel(
"trans_lower_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;
227 prog_.
add_kernel(
"trans_unit_lower_triangular_substitute_inplace");
228 prog_.
add_kernel(
"lower_triangular_substitute_inplace");
232 prog_.
add_kernel(
"trans_unit_upper_triangular_substitute_inplace");
234 prog_.
add_kernel(
"unit_upper_triangular_substitute_inplace");
235 prog_.
add_kernel(
"trans_upper_triangular_substitute_inplace");
236 prog_.
add_kernel(
"upper_triangular_substitute_inplace");
237 prog_.
add_kernel(
"unit_lower_triangular_substitute_inplace");
242 prog_.
add_kernel(
"trans_lower_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;
304 prog_.
add_kernel(
"trans_unit_lower_triangular_substitute_inplace");
305 prog_.
add_kernel(
"lower_triangular_substitute_inplace");
309 prog_.
add_kernel(
"trans_unit_upper_triangular_substitute_inplace");
311 prog_.
add_kernel(
"unit_upper_triangular_substitute_inplace");
312 prog_.
add_kernel(
"trans_upper_triangular_substitute_inplace");
313 prog_.
add_kernel(
"upper_triangular_substitute_inplace");
314 prog_.
add_kernel(
"unit_lower_triangular_substitute_inplace");
319 prog_.
add_kernel(
"trans_lower_triangular_substitute_inplace");
325 init_done[context_.
handle()] =
true;