ViennaCL - The Vienna Computing Library  1.2.0
scalar_kernels.h
Go to the documentation of this file.
1 #ifndef _VIENNACL_SCALAR_KERNELS_HPP_
2 #define _VIENNACL_SCALAR_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 scalar;
18 
19 
21  template <>
22  struct scalar<float, 1>
23  {
24  static std::string program_name()
25  {
26  return "f_scalar_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(scalar_align1_sub);
37  source.append(scalar_align1_cpu_inplace_add);
38  source.append(scalar_align1_cpu_inplace_sub);
39  source.append(scalar_align1_cpu_inplace_mul);
40  source.append(scalar_align1_inplace_mul);
41  source.append(scalar_align1_inplace_sub);
42  source.append(scalar_align1_cpu_inplace_div);
43  source.append(scalar_align1_cpu_add);
44  source.append(scalar_align1_mul);
45  source.append(scalar_align1_inplace_div);
46  source.append(scalar_align1_cpu_div);
47  source.append(scalar_align1_divide);
48  source.append(scalar_align1_inplace_add);
49  source.append(scalar_align1_cpu_sub);
50  source.append(scalar_align1_cpu_mul);
51  source.append(scalar_align1_add);
52  std::string prog_name = program_name();
53  #ifdef VIENNACL_BUILD_INFO
54  std::cout << "Creating program " << prog_name << std::endl;
55  #endif
56  context_.add_program(source, prog_name);
57  viennacl::ocl::program & prog_ = context_.get_program(prog_name);
58  prog_.add_kernel("sub");
59  prog_.add_kernel("cpu_inplace_add");
60  prog_.add_kernel("cpu_inplace_sub");
61  prog_.add_kernel("cpu_inplace_mul");
62  prog_.add_kernel("inplace_mul");
63  prog_.add_kernel("inplace_sub");
64  prog_.add_kernel("cpu_inplace_div");
65  prog_.add_kernel("cpu_add");
66  prog_.add_kernel("mul");
67  prog_.add_kernel("inplace_div");
68  prog_.add_kernel("cpu_div");
69  prog_.add_kernel("divide");
70  prog_.add_kernel("inplace_add");
71  prog_.add_kernel("cpu_sub");
72  prog_.add_kernel("cpu_mul");
73  prog_.add_kernel("add");
74  init_done[context_.handle()] = true;
75  } //if
76  } //init
77  }; // struct
78 
79 
80 
82  template <>
83  struct scalar<double, 1>
84  {
85  static std::string program_name()
86  {
87  return "d_scalar_1";
88  }
89  static void init()
90  {
92  static std::map<cl_context, bool> init_done;
94  if (!init_done[context_.handle()])
95  {
96  std::string source;
106  source.append(viennacl::tools::make_double_kernel(scalar_align1_mul, fp64_ext));
113  source.append(viennacl::tools::make_double_kernel(scalar_align1_add, fp64_ext));
114  std::string prog_name = program_name();
115  #ifdef VIENNACL_BUILD_INFO
116  std::cout << "Creating program " << prog_name << std::endl;
117  #endif
118  context_.add_program(source, prog_name);
119  viennacl::ocl::program & prog_ = context_.get_program(prog_name);
120  prog_.add_kernel("sub");
121  prog_.add_kernel("cpu_inplace_add");
122  prog_.add_kernel("cpu_inplace_sub");
123  prog_.add_kernel("cpu_inplace_mul");
124  prog_.add_kernel("inplace_mul");
125  prog_.add_kernel("inplace_sub");
126  prog_.add_kernel("cpu_inplace_div");
127  prog_.add_kernel("cpu_add");
128  prog_.add_kernel("mul");
129  prog_.add_kernel("inplace_div");
130  prog_.add_kernel("cpu_div");
131  prog_.add_kernel("divide");
132  prog_.add_kernel("inplace_add");
133  prog_.add_kernel("cpu_sub");
134  prog_.add_kernel("cpu_mul");
135  prog_.add_kernel("add");
136  init_done[context_.handle()] = true;
137  } //if
138  } //init
139  }; // struct
140 
141 
142  } //namespace kernels
143  } //namespace linalg
144 } //namespace viennacl
145 #endif