ViennaCL - The Vienna Computing Library  1.2.0
matrix_row_kernels.h
Go to the documentation of this file.
1 #ifndef _VIENNACL_MATRIX_ROW_KERNELS_HPP_
2 #define _VIENNACL_MATRIX_ROW_KERNELS_HPP_
6 #include "viennacl/ocl/utils.hpp"
8 
9 //Automatically generated file from aux-directory, do not edit manually!
10 namespace viennacl
11 {
12  namespace linalg
13  {
14  namespace kernels
15  {
16  template<class TYPE, unsigned int alignment>
17  struct matrix_row;
18 
19 
21  template <>
22  struct matrix_row<float, 1>
23  {
24  static std::string program_name()
25  {
26  return "f_matrix_row_1";
27  }
28  static void init()
29  {
31  static std::map<cl_context, bool> init_done;
33  if (!init_done[context_.handle()])
34  {
35  std::string source;
36  source.append(matrix_row_align1_inplace_divide);
39  source.append(matrix_row_align1_sub);
41  source.append(matrix_row_align1_inplace_sub);
43  source.append(matrix_row_align1_vec_mul);
44  source.append(matrix_row_align1_lu_factorize);
45  source.append(matrix_row_align1_rank1_update);
48  source.append(matrix_row_align1_fft_direct);
50  source.append(matrix_row_align1_fft_reorder);
52  source.append(matrix_row_align1_inplace_add);
53  source.append(matrix_row_align1_fft_radix2);
54  source.append(matrix_row_align1_trans_vec_mul);
57  source.append(matrix_row_align1_clear);
58  source.append(matrix_row_align1_inplace_mult);
60  source.append(matrix_row_align1_add);
61  std::string prog_name = program_name();
62  #ifdef VIENNACL_BUILD_INFO
63  std::cout << "Creating program " << prog_name << std::endl;
64  #endif
65  context_.add_program(source, prog_name);
66  viennacl::ocl::program & prog_ = context_.get_program(prog_name);
67  prog_.add_kernel("inplace_divide");
68  prog_.add_kernel("trans_lower_triangular_substitute_inplace");
69  prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
70  prog_.add_kernel("sub");
71  prog_.add_kernel("scaled_rank1_update");
72  prog_.add_kernel("inplace_sub");
73  prog_.add_kernel("lower_triangular_substitute_inplace");
74  prog_.add_kernel("vec_mul");
75  prog_.add_kernel("lu_factorize");
76  prog_.add_kernel("rank1_update");
77  prog_.add_kernel("trans_upper_triangular_substitute_inplace");
78  prog_.add_kernel("fft_radix2_local");
79  prog_.add_kernel("fft_direct");
80  prog_.add_kernel("unit_lower_triangular_substitute_inplace");
81  prog_.add_kernel("fft_reorder");
82  prog_.add_kernel("upper_triangular_substitute_inplace");
83  prog_.add_kernel("inplace_add");
84  prog_.add_kernel("fft_radix2");
85  prog_.add_kernel("trans_vec_mul");
86  prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
87  prog_.add_kernel("cpu_inplace_mult");
88  prog_.add_kernel("clear");
89  prog_.add_kernel("inplace_mult");
90  prog_.add_kernel("unit_upper_triangular_substitute_inplace");
91  prog_.add_kernel("add");
92  init_done[context_.handle()] = true;
93  } //if
94  } //init
95  }; // struct
96 
97  template <>
98  struct matrix_row<float, 16>
99  {
100  static std::string program_name()
101  {
102  return "f_matrix_row_16";
103  }
104  static void init()
105  {
107  static std::map<cl_context, bool> init_done;
109  if (!init_done[context_.handle()])
110  {
111  std::string source;
112  source.append(matrix_row_align1_inplace_divide);
115  source.append(matrix_row_align1_sub);
117  source.append(matrix_row_align1_inplace_sub);
119  source.append(matrix_row_align1_vec_mul);
120  source.append(matrix_row_align1_lu_factorize);
121  source.append(matrix_row_align1_rank1_update);
123  source.append(matrix_row_align1_fft_radix2_local);
124  source.append(matrix_row_align1_fft_direct);
126  source.append(matrix_row_align1_fft_reorder);
128  source.append(matrix_row_align1_inplace_add);
129  source.append(matrix_row_align1_fft_radix2);
130  source.append(matrix_row_align1_trans_vec_mul);
132  source.append(matrix_row_align1_cpu_inplace_mult);
133  source.append(matrix_row_align1_clear);
134  source.append(matrix_row_align1_inplace_mult);
136  source.append(matrix_row_align1_add);
137  std::string prog_name = program_name();
138  #ifdef VIENNACL_BUILD_INFO
139  std::cout << "Creating program " << prog_name << std::endl;
140  #endif
141  context_.add_program(source, prog_name);
142  viennacl::ocl::program & prog_ = context_.get_program(prog_name);
143  prog_.add_kernel("inplace_divide");
144  prog_.add_kernel("trans_lower_triangular_substitute_inplace");
145  prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
146  prog_.add_kernel("sub");
147  prog_.add_kernel("scaled_rank1_update");
148  prog_.add_kernel("inplace_sub");
149  prog_.add_kernel("lower_triangular_substitute_inplace");
150  prog_.add_kernel("vec_mul");
151  prog_.add_kernel("lu_factorize");
152  prog_.add_kernel("rank1_update");
153  prog_.add_kernel("trans_upper_triangular_substitute_inplace");
154  prog_.add_kernel("fft_radix2_local");
155  prog_.add_kernel("fft_direct");
156  prog_.add_kernel("unit_lower_triangular_substitute_inplace");
157  prog_.add_kernel("fft_reorder");
158  prog_.add_kernel("upper_triangular_substitute_inplace");
159  prog_.add_kernel("inplace_add");
160  prog_.add_kernel("fft_radix2");
161  prog_.add_kernel("trans_vec_mul");
162  prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
163  prog_.add_kernel("cpu_inplace_mult");
164  prog_.add_kernel("clear");
165  prog_.add_kernel("inplace_mult");
166  prog_.add_kernel("unit_upper_triangular_substitute_inplace");
167  prog_.add_kernel("add");
168  init_done[context_.handle()] = true;
169  } //if
170  } //init
171  }; // struct
172 
173 
174 
176  template <>
177  struct matrix_row<double, 1>
178  {
179  static std::string program_name()
180  {
181  return "d_matrix_row_1";
182  }
183  static void init()
184  {
186  static std::map<cl_context, bool> init_done;
188  if (!init_done[context_.handle()])
189  {
190  std::string source;
191  std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
217  std::string prog_name = program_name();
218  #ifdef VIENNACL_BUILD_INFO
219  std::cout << "Creating program " << prog_name << std::endl;
220  #endif
221  context_.add_program(source, prog_name);
222  viennacl::ocl::program & prog_ = context_.get_program(prog_name);
223  prog_.add_kernel("inplace_divide");
224  prog_.add_kernel("trans_lower_triangular_substitute_inplace");
225  prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
226  prog_.add_kernel("sub");
227  prog_.add_kernel("scaled_rank1_update");
228  prog_.add_kernel("inplace_sub");
229  prog_.add_kernel("lower_triangular_substitute_inplace");
230  prog_.add_kernel("vec_mul");
231  prog_.add_kernel("lu_factorize");
232  prog_.add_kernel("rank1_update");
233  prog_.add_kernel("trans_upper_triangular_substitute_inplace");
234  prog_.add_kernel("fft_radix2_local");
235  prog_.add_kernel("fft_direct");
236  prog_.add_kernel("unit_lower_triangular_substitute_inplace");
237  prog_.add_kernel("fft_reorder");
238  prog_.add_kernel("upper_triangular_substitute_inplace");
239  prog_.add_kernel("inplace_add");
240  prog_.add_kernel("fft_radix2");
241  prog_.add_kernel("trans_vec_mul");
242  prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
243  prog_.add_kernel("cpu_inplace_mult");
244  prog_.add_kernel("clear");
245  prog_.add_kernel("inplace_mult");
246  prog_.add_kernel("unit_upper_triangular_substitute_inplace");
247  prog_.add_kernel("add");
248  init_done[context_.handle()] = true;
249  } //if
250  } //init
251  }; // struct
252 
253  template <>
254  struct matrix_row<double, 16>
255  {
256  static std::string program_name()
257  {
258  return "d_matrix_row_16";
259  }
260  static void init()
261  {
263  static std::map<cl_context, bool> init_done;
265  if (!init_done[context_.handle()])
266  {
267  std::string source;
268  std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
294  std::string prog_name = program_name();
295  #ifdef VIENNACL_BUILD_INFO
296  std::cout << "Creating program " << prog_name << std::endl;
297  #endif
298  context_.add_program(source, prog_name);
299  viennacl::ocl::program & prog_ = context_.get_program(prog_name);
300  prog_.add_kernel("inplace_divide");
301  prog_.add_kernel("trans_lower_triangular_substitute_inplace");
302  prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
303  prog_.add_kernel("sub");
304  prog_.add_kernel("scaled_rank1_update");
305  prog_.add_kernel("inplace_sub");
306  prog_.add_kernel("lower_triangular_substitute_inplace");
307  prog_.add_kernel("vec_mul");
308  prog_.add_kernel("lu_factorize");
309  prog_.add_kernel("rank1_update");
310  prog_.add_kernel("trans_upper_triangular_substitute_inplace");
311  prog_.add_kernel("fft_radix2_local");
312  prog_.add_kernel("fft_direct");
313  prog_.add_kernel("unit_lower_triangular_substitute_inplace");
314  prog_.add_kernel("fft_reorder");
315  prog_.add_kernel("upper_triangular_substitute_inplace");
316  prog_.add_kernel("inplace_add");
317  prog_.add_kernel("fft_radix2");
318  prog_.add_kernel("trans_vec_mul");
319  prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
320  prog_.add_kernel("cpu_inplace_mult");
321  prog_.add_kernel("clear");
322  prog_.add_kernel("inplace_mult");
323  prog_.add_kernel("unit_upper_triangular_substitute_inplace");
324  prog_.add_kernel("add");
325  init_done[context_.handle()] = true;
326  } //if
327  } //init
328  }; // struct
329 
330 
331  } //namespace kernels
332  } //namespace linalg
333 } //namespace viennacl
334 #endif