vSMC
vSMC: Scalable Monte Carlo
cl_set_kernel_args.hpp
Go to the documentation of this file.
1 //============================================================================
2 // vSMC/config/vsmc_opencl_internal_cl_set_kernel_args.hpp.in
3 //----------------------------------------------------------------------------
4 // vSMC: Scalable Monte Carlo
5 // All rights reserved.
6 //
7 // Redistribution and use in source and binary forms, with or without
8 // modification, are permitted provided that the following conditions are met:
9 //
10 // Redistributions of source code must retain the above copyright notice,
11 // this list of conditions and the following disclaimer.
12 //
13 // Redistributions in binary form must reproduce the above copyright notice,
14 // this list of conditions and the following disclaimer in the documentation
15 // and/or other materials provided with the distribution.
16 //
17 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS
18 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 // POSSIBILITY OF SUCH DAMAGE.
28 //============================================================================
29 
30 template <
31  typename Arg0>
32 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
33  const Arg0 &arg0)
34 {
35  kern.setArg(offset + 0, arg0);
36 }
37 
38 template <
39  typename Arg0,
40  typename Arg1>
41 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
42  const Arg0 &arg0,
43  const Arg1 &arg1)
44 {
45  kern.setArg(offset + 0, arg0);
46  kern.setArg(offset + 1, arg1);
47 }
48 
49 template <
50  typename Arg0,
51  typename Arg1,
52  typename Arg2>
53 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
54  const Arg0 &arg0,
55  const Arg1 &arg1,
56  const Arg2 &arg2)
57 {
58  kern.setArg(offset + 0, arg0);
59  kern.setArg(offset + 1, arg1);
60  kern.setArg(offset + 2, arg2);
61 }
62 
63 template <
64  typename Arg0,
65  typename Arg1,
66  typename Arg2,
67  typename Arg3>
68 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
69  const Arg0 &arg0,
70  const Arg1 &arg1,
71  const Arg2 &arg2,
72  const Arg3 &arg3)
73 {
74  kern.setArg(offset + 0, arg0);
75  kern.setArg(offset + 1, arg1);
76  kern.setArg(offset + 2, arg2);
77  kern.setArg(offset + 3, arg3);
78 }
79 
80 template <
81  typename Arg0,
82  typename Arg1,
83  typename Arg2,
84  typename Arg3,
85  typename Arg4>
86 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
87  const Arg0 &arg0,
88  const Arg1 &arg1,
89  const Arg2 &arg2,
90  const Arg3 &arg3,
91  const Arg4 &arg4)
92 {
93  kern.setArg(offset + 0, arg0);
94  kern.setArg(offset + 1, arg1);
95  kern.setArg(offset + 2, arg2);
96  kern.setArg(offset + 3, arg3);
97  kern.setArg(offset + 4, arg4);
98 }
99 
100 template <
101  typename Arg0,
102  typename Arg1,
103  typename Arg2,
104  typename Arg3,
105  typename Arg4,
106  typename Arg5>
107 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
108  const Arg0 &arg0,
109  const Arg1 &arg1,
110  const Arg2 &arg2,
111  const Arg3 &arg3,
112  const Arg4 &arg4,
113  const Arg5 &arg5)
114 {
115  kern.setArg(offset + 0, arg0);
116  kern.setArg(offset + 1, arg1);
117  kern.setArg(offset + 2, arg2);
118  kern.setArg(offset + 3, arg3);
119  kern.setArg(offset + 4, arg4);
120  kern.setArg(offset + 5, arg5);
121 }
122 
123 template <
124  typename Arg0,
125  typename Arg1,
126  typename Arg2,
127  typename Arg3,
128  typename Arg4,
129  typename Arg5,
130  typename Arg6>
131 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
132  const Arg0 &arg0,
133  const Arg1 &arg1,
134  const Arg2 &arg2,
135  const Arg3 &arg3,
136  const Arg4 &arg4,
137  const Arg5 &arg5,
138  const Arg6 &arg6)
139 {
140  kern.setArg(offset + 0, arg0);
141  kern.setArg(offset + 1, arg1);
142  kern.setArg(offset + 2, arg2);
143  kern.setArg(offset + 3, arg3);
144  kern.setArg(offset + 4, arg4);
145  kern.setArg(offset + 5, arg5);
146  kern.setArg(offset + 6, arg6);
147 }
148 
149 template <
150  typename Arg0,
151  typename Arg1,
152  typename Arg2,
153  typename Arg3,
154  typename Arg4,
155  typename Arg5,
156  typename Arg6,
157  typename Arg7>
158 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
159  const Arg0 &arg0,
160  const Arg1 &arg1,
161  const Arg2 &arg2,
162  const Arg3 &arg3,
163  const Arg4 &arg4,
164  const Arg5 &arg5,
165  const Arg6 &arg6,
166  const Arg7 &arg7)
167 {
168  kern.setArg(offset + 0, arg0);
169  kern.setArg(offset + 1, arg1);
170  kern.setArg(offset + 2, arg2);
171  kern.setArg(offset + 3, arg3);
172  kern.setArg(offset + 4, arg4);
173  kern.setArg(offset + 5, arg5);
174  kern.setArg(offset + 6, arg6);
175  kern.setArg(offset + 7, arg7);
176 }
177 
178 template <
179  typename Arg0,
180  typename Arg1,
181  typename Arg2,
182  typename Arg3,
183  typename Arg4,
184  typename Arg5,
185  typename Arg6,
186  typename Arg7,
187  typename Arg8>
188 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
189  const Arg0 &arg0,
190  const Arg1 &arg1,
191  const Arg2 &arg2,
192  const Arg3 &arg3,
193  const Arg4 &arg4,
194  const Arg5 &arg5,
195  const Arg6 &arg6,
196  const Arg7 &arg7,
197  const Arg8 &arg8)
198 {
199  kern.setArg(offset + 0, arg0);
200  kern.setArg(offset + 1, arg1);
201  kern.setArg(offset + 2, arg2);
202  kern.setArg(offset + 3, arg3);
203  kern.setArg(offset + 4, arg4);
204  kern.setArg(offset + 5, arg5);
205  kern.setArg(offset + 6, arg6);
206  kern.setArg(offset + 7, arg7);
207  kern.setArg(offset + 8, arg8);
208 }
209 
210 template <
211  typename Arg0,
212  typename Arg1,
213  typename Arg2,
214  typename Arg3,
215  typename Arg4,
216  typename Arg5,
217  typename Arg6,
218  typename Arg7,
219  typename Arg8,
220  typename Arg9>
221 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
222  const Arg0 &arg0,
223  const Arg1 &arg1,
224  const Arg2 &arg2,
225  const Arg3 &arg3,
226  const Arg4 &arg4,
227  const Arg5 &arg5,
228  const Arg6 &arg6,
229  const Arg7 &arg7,
230  const Arg8 &arg8,
231  const Arg9 &arg9)
232 {
233  kern.setArg(offset + 0, arg0);
234  kern.setArg(offset + 1, arg1);
235  kern.setArg(offset + 2, arg2);
236  kern.setArg(offset + 3, arg3);
237  kern.setArg(offset + 4, arg4);
238  kern.setArg(offset + 5, arg5);
239  kern.setArg(offset + 6, arg6);
240  kern.setArg(offset + 7, arg7);
241  kern.setArg(offset + 8, arg8);
242  kern.setArg(offset + 9, arg9);
243 }
244 
245 template <
246  typename Arg0,
247  typename Arg1,
248  typename Arg2,
249  typename Arg3,
250  typename Arg4,
251  typename Arg5,
252  typename Arg6,
253  typename Arg7,
254  typename Arg8,
255  typename Arg9,
256  typename Arg10>
257 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
258  const Arg0 &arg0,
259  const Arg1 &arg1,
260  const Arg2 &arg2,
261  const Arg3 &arg3,
262  const Arg4 &arg4,
263  const Arg5 &arg5,
264  const Arg6 &arg6,
265  const Arg7 &arg7,
266  const Arg8 &arg8,
267  const Arg9 &arg9,
268  const Arg10 &arg10)
269 {
270  kern.setArg(offset + 0, arg0);
271  kern.setArg(offset + 1, arg1);
272  kern.setArg(offset + 2, arg2);
273  kern.setArg(offset + 3, arg3);
274  kern.setArg(offset + 4, arg4);
275  kern.setArg(offset + 5, arg5);
276  kern.setArg(offset + 6, arg6);
277  kern.setArg(offset + 7, arg7);
278  kern.setArg(offset + 8, arg8);
279  kern.setArg(offset + 9, arg9);
280  kern.setArg(offset + 10, arg10);
281 }
282 
283 template <
284  typename Arg0,
285  typename Arg1,
286  typename Arg2,
287  typename Arg3,
288  typename Arg4,
289  typename Arg5,
290  typename Arg6,
291  typename Arg7,
292  typename Arg8,
293  typename Arg9,
294  typename Arg10,
295  typename Arg11>
296 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
297  const Arg0 &arg0,
298  const Arg1 &arg1,
299  const Arg2 &arg2,
300  const Arg3 &arg3,
301  const Arg4 &arg4,
302  const Arg5 &arg5,
303  const Arg6 &arg6,
304  const Arg7 &arg7,
305  const Arg8 &arg8,
306  const Arg9 &arg9,
307  const Arg10 &arg10,
308  const Arg11 &arg11)
309 {
310  kern.setArg(offset + 0, arg0);
311  kern.setArg(offset + 1, arg1);
312  kern.setArg(offset + 2, arg2);
313  kern.setArg(offset + 3, arg3);
314  kern.setArg(offset + 4, arg4);
315  kern.setArg(offset + 5, arg5);
316  kern.setArg(offset + 6, arg6);
317  kern.setArg(offset + 7, arg7);
318  kern.setArg(offset + 8, arg8);
319  kern.setArg(offset + 9, arg9);
320  kern.setArg(offset + 10, arg10);
321  kern.setArg(offset + 11, arg11);
322 }
323 
324 template <
325  typename Arg0,
326  typename Arg1,
327  typename Arg2,
328  typename Arg3,
329  typename Arg4,
330  typename Arg5,
331  typename Arg6,
332  typename Arg7,
333  typename Arg8,
334  typename Arg9,
335  typename Arg10,
336  typename Arg11,
337  typename Arg12>
338 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
339  const Arg0 &arg0,
340  const Arg1 &arg1,
341  const Arg2 &arg2,
342  const Arg3 &arg3,
343  const Arg4 &arg4,
344  const Arg5 &arg5,
345  const Arg6 &arg6,
346  const Arg7 &arg7,
347  const Arg8 &arg8,
348  const Arg9 &arg9,
349  const Arg10 &arg10,
350  const Arg11 &arg11,
351  const Arg12 &arg12)
352 {
353  kern.setArg(offset + 0, arg0);
354  kern.setArg(offset + 1, arg1);
355  kern.setArg(offset + 2, arg2);
356  kern.setArg(offset + 3, arg3);
357  kern.setArg(offset + 4, arg4);
358  kern.setArg(offset + 5, arg5);
359  kern.setArg(offset + 6, arg6);
360  kern.setArg(offset + 7, arg7);
361  kern.setArg(offset + 8, arg8);
362  kern.setArg(offset + 9, arg9);
363  kern.setArg(offset + 10, arg10);
364  kern.setArg(offset + 11, arg11);
365  kern.setArg(offset + 12, arg12);
366 }
367 
368 template <
369  typename Arg0,
370  typename Arg1,
371  typename Arg2,
372  typename Arg3,
373  typename Arg4,
374  typename Arg5,
375  typename Arg6,
376  typename Arg7,
377  typename Arg8,
378  typename Arg9,
379  typename Arg10,
380  typename Arg11,
381  typename Arg12,
382  typename Arg13>
383 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
384  const Arg0 &arg0,
385  const Arg1 &arg1,
386  const Arg2 &arg2,
387  const Arg3 &arg3,
388  const Arg4 &arg4,
389  const Arg5 &arg5,
390  const Arg6 &arg6,
391  const Arg7 &arg7,
392  const Arg8 &arg8,
393  const Arg9 &arg9,
394  const Arg10 &arg10,
395  const Arg11 &arg11,
396  const Arg12 &arg12,
397  const Arg13 &arg13)
398 {
399  kern.setArg(offset + 0, arg0);
400  kern.setArg(offset + 1, arg1);
401  kern.setArg(offset + 2, arg2);
402  kern.setArg(offset + 3, arg3);
403  kern.setArg(offset + 4, arg4);
404  kern.setArg(offset + 5, arg5);
405  kern.setArg(offset + 6, arg6);
406  kern.setArg(offset + 7, arg7);
407  kern.setArg(offset + 8, arg8);
408  kern.setArg(offset + 9, arg9);
409  kern.setArg(offset + 10, arg10);
410  kern.setArg(offset + 11, arg11);
411  kern.setArg(offset + 12, arg12);
412  kern.setArg(offset + 13, arg13);
413 }
414 
415 template <
416  typename Arg0,
417  typename Arg1,
418  typename Arg2,
419  typename Arg3,
420  typename Arg4,
421  typename Arg5,
422  typename Arg6,
423  typename Arg7,
424  typename Arg8,
425  typename Arg9,
426  typename Arg10,
427  typename Arg11,
428  typename Arg12,
429  typename Arg13,
430  typename Arg14>
431 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
432  const Arg0 &arg0,
433  const Arg1 &arg1,
434  const Arg2 &arg2,
435  const Arg3 &arg3,
436  const Arg4 &arg4,
437  const Arg5 &arg5,
438  const Arg6 &arg6,
439  const Arg7 &arg7,
440  const Arg8 &arg8,
441  const Arg9 &arg9,
442  const Arg10 &arg10,
443  const Arg11 &arg11,
444  const Arg12 &arg12,
445  const Arg13 &arg13,
446  const Arg14 &arg14)
447 {
448  kern.setArg(offset + 0, arg0);
449  kern.setArg(offset + 1, arg1);
450  kern.setArg(offset + 2, arg2);
451  kern.setArg(offset + 3, arg3);
452  kern.setArg(offset + 4, arg4);
453  kern.setArg(offset + 5, arg5);
454  kern.setArg(offset + 6, arg6);
455  kern.setArg(offset + 7, arg7);
456  kern.setArg(offset + 8, arg8);
457  kern.setArg(offset + 9, arg9);
458  kern.setArg(offset + 10, arg10);
459  kern.setArg(offset + 11, arg11);
460  kern.setArg(offset + 12, arg12);
461  kern.setArg(offset + 13, arg13);
462  kern.setArg(offset + 14, arg14);
463 }
464 
465 template <
466  typename Arg0,
467  typename Arg1,
468  typename Arg2,
469  typename Arg3,
470  typename Arg4,
471  typename Arg5,
472  typename Arg6,
473  typename Arg7,
474  typename Arg8,
475  typename Arg9,
476  typename Arg10,
477  typename Arg11,
478  typename Arg12,
479  typename Arg13,
480  typename Arg14,
481  typename Arg15>
482 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
483  const Arg0 &arg0,
484  const Arg1 &arg1,
485  const Arg2 &arg2,
486  const Arg3 &arg3,
487  const Arg4 &arg4,
488  const Arg5 &arg5,
489  const Arg6 &arg6,
490  const Arg7 &arg7,
491  const Arg8 &arg8,
492  const Arg9 &arg9,
493  const Arg10 &arg10,
494  const Arg11 &arg11,
495  const Arg12 &arg12,
496  const Arg13 &arg13,
497  const Arg14 &arg14,
498  const Arg15 &arg15)
499 {
500  kern.setArg(offset + 0, arg0);
501  kern.setArg(offset + 1, arg1);
502  kern.setArg(offset + 2, arg2);
503  kern.setArg(offset + 3, arg3);
504  kern.setArg(offset + 4, arg4);
505  kern.setArg(offset + 5, arg5);
506  kern.setArg(offset + 6, arg6);
507  kern.setArg(offset + 7, arg7);
508  kern.setArg(offset + 8, arg8);
509  kern.setArg(offset + 9, arg9);
510  kern.setArg(offset + 10, arg10);
511  kern.setArg(offset + 11, arg11);
512  kern.setArg(offset + 12, arg12);
513  kern.setArg(offset + 13, arg13);
514  kern.setArg(offset + 14, arg14);
515  kern.setArg(offset + 15, arg15);
516 }
517 
518 template <
519  typename Arg0,
520  typename Arg1,
521  typename Arg2,
522  typename Arg3,
523  typename Arg4,
524  typename Arg5,
525  typename Arg6,
526  typename Arg7,
527  typename Arg8,
528  typename Arg9,
529  typename Arg10,
530  typename Arg11,
531  typename Arg12,
532  typename Arg13,
533  typename Arg14,
534  typename Arg15,
535  typename Arg16>
536 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
537  const Arg0 &arg0,
538  const Arg1 &arg1,
539  const Arg2 &arg2,
540  const Arg3 &arg3,
541  const Arg4 &arg4,
542  const Arg5 &arg5,
543  const Arg6 &arg6,
544  const Arg7 &arg7,
545  const Arg8 &arg8,
546  const Arg9 &arg9,
547  const Arg10 &arg10,
548  const Arg11 &arg11,
549  const Arg12 &arg12,
550  const Arg13 &arg13,
551  const Arg14 &arg14,
552  const Arg15 &arg15,
553  const Arg16 &arg16)
554 {
555  kern.setArg(offset + 0, arg0);
556  kern.setArg(offset + 1, arg1);
557  kern.setArg(offset + 2, arg2);
558  kern.setArg(offset + 3, arg3);
559  kern.setArg(offset + 4, arg4);
560  kern.setArg(offset + 5, arg5);
561  kern.setArg(offset + 6, arg6);
562  kern.setArg(offset + 7, arg7);
563  kern.setArg(offset + 8, arg8);
564  kern.setArg(offset + 9, arg9);
565  kern.setArg(offset + 10, arg10);
566  kern.setArg(offset + 11, arg11);
567  kern.setArg(offset + 12, arg12);
568  kern.setArg(offset + 13, arg13);
569  kern.setArg(offset + 14, arg14);
570  kern.setArg(offset + 15, arg15);
571  kern.setArg(offset + 16, arg16);
572 }
573 
574 template <
575  typename Arg0,
576  typename Arg1,
577  typename Arg2,
578  typename Arg3,
579  typename Arg4,
580  typename Arg5,
581  typename Arg6,
582  typename Arg7,
583  typename Arg8,
584  typename Arg9,
585  typename Arg10,
586  typename Arg11,
587  typename Arg12,
588  typename Arg13,
589  typename Arg14,
590  typename Arg15,
591  typename Arg16,
592  typename Arg17>
593 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
594  const Arg0 &arg0,
595  const Arg1 &arg1,
596  const Arg2 &arg2,
597  const Arg3 &arg3,
598  const Arg4 &arg4,
599  const Arg5 &arg5,
600  const Arg6 &arg6,
601  const Arg7 &arg7,
602  const Arg8 &arg8,
603  const Arg9 &arg9,
604  const Arg10 &arg10,
605  const Arg11 &arg11,
606  const Arg12 &arg12,
607  const Arg13 &arg13,
608  const Arg14 &arg14,
609  const Arg15 &arg15,
610  const Arg16 &arg16,
611  const Arg17 &arg17)
612 {
613  kern.setArg(offset + 0, arg0);
614  kern.setArg(offset + 1, arg1);
615  kern.setArg(offset + 2, arg2);
616  kern.setArg(offset + 3, arg3);
617  kern.setArg(offset + 4, arg4);
618  kern.setArg(offset + 5, arg5);
619  kern.setArg(offset + 6, arg6);
620  kern.setArg(offset + 7, arg7);
621  kern.setArg(offset + 8, arg8);
622  kern.setArg(offset + 9, arg9);
623  kern.setArg(offset + 10, arg10);
624  kern.setArg(offset + 11, arg11);
625  kern.setArg(offset + 12, arg12);
626  kern.setArg(offset + 13, arg13);
627  kern.setArg(offset + 14, arg14);
628  kern.setArg(offset + 15, arg15);
629  kern.setArg(offset + 16, arg16);
630  kern.setArg(offset + 17, arg17);
631 }
632 
633 template <
634  typename Arg0,
635  typename Arg1,
636  typename Arg2,
637  typename Arg3,
638  typename Arg4,
639  typename Arg5,
640  typename Arg6,
641  typename Arg7,
642  typename Arg8,
643  typename Arg9,
644  typename Arg10,
645  typename Arg11,
646  typename Arg12,
647  typename Arg13,
648  typename Arg14,
649  typename Arg15,
650  typename Arg16,
651  typename Arg17,
652  typename Arg18>
653 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
654  const Arg0 &arg0,
655  const Arg1 &arg1,
656  const Arg2 &arg2,
657  const Arg3 &arg3,
658  const Arg4 &arg4,
659  const Arg5 &arg5,
660  const Arg6 &arg6,
661  const Arg7 &arg7,
662  const Arg8 &arg8,
663  const Arg9 &arg9,
664  const Arg10 &arg10,
665  const Arg11 &arg11,
666  const Arg12 &arg12,
667  const Arg13 &arg13,
668  const Arg14 &arg14,
669  const Arg15 &arg15,
670  const Arg16 &arg16,
671  const Arg17 &arg17,
672  const Arg18 &arg18)
673 {
674  kern.setArg(offset + 0, arg0);
675  kern.setArg(offset + 1, arg1);
676  kern.setArg(offset + 2, arg2);
677  kern.setArg(offset + 3, arg3);
678  kern.setArg(offset + 4, arg4);
679  kern.setArg(offset + 5, arg5);
680  kern.setArg(offset + 6, arg6);
681  kern.setArg(offset + 7, arg7);
682  kern.setArg(offset + 8, arg8);
683  kern.setArg(offset + 9, arg9);
684  kern.setArg(offset + 10, arg10);
685  kern.setArg(offset + 11, arg11);
686  kern.setArg(offset + 12, arg12);
687  kern.setArg(offset + 13, arg13);
688  kern.setArg(offset + 14, arg14);
689  kern.setArg(offset + 15, arg15);
690  kern.setArg(offset + 16, arg16);
691  kern.setArg(offset + 17, arg17);
692  kern.setArg(offset + 18, arg18);
693 }
694 
695 template <
696  typename Arg0,
697  typename Arg1,
698  typename Arg2,
699  typename Arg3,
700  typename Arg4,
701  typename Arg5,
702  typename Arg6,
703  typename Arg7,
704  typename Arg8,
705  typename Arg9,
706  typename Arg10,
707  typename Arg11,
708  typename Arg12,
709  typename Arg13,
710  typename Arg14,
711  typename Arg15,
712  typename Arg16,
713  typename Arg17,
714  typename Arg18,
715  typename Arg19>
716 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
717  const Arg0 &arg0,
718  const Arg1 &arg1,
719  const Arg2 &arg2,
720  const Arg3 &arg3,
721  const Arg4 &arg4,
722  const Arg5 &arg5,
723  const Arg6 &arg6,
724  const Arg7 &arg7,
725  const Arg8 &arg8,
726  const Arg9 &arg9,
727  const Arg10 &arg10,
728  const Arg11 &arg11,
729  const Arg12 &arg12,
730  const Arg13 &arg13,
731  const Arg14 &arg14,
732  const Arg15 &arg15,
733  const Arg16 &arg16,
734  const Arg17 &arg17,
735  const Arg18 &arg18,
736  const Arg19 &arg19)
737 {
738  kern.setArg(offset + 0, arg0);
739  kern.setArg(offset + 1, arg1);
740  kern.setArg(offset + 2, arg2);
741  kern.setArg(offset + 3, arg3);
742  kern.setArg(offset + 4, arg4);
743  kern.setArg(offset + 5, arg5);
744  kern.setArg(offset + 6, arg6);
745  kern.setArg(offset + 7, arg7);
746  kern.setArg(offset + 8, arg8);
747  kern.setArg(offset + 9, arg9);
748  kern.setArg(offset + 10, arg10);
749  kern.setArg(offset + 11, arg11);
750  kern.setArg(offset + 12, arg12);
751  kern.setArg(offset + 13, arg13);
752  kern.setArg(offset + 14, arg14);
753  kern.setArg(offset + 15, arg15);
754  kern.setArg(offset + 16, arg16);
755  kern.setArg(offset + 17, arg17);
756  kern.setArg(offset + 18, arg18);
757  kern.setArg(offset + 19, arg19);
758 }
759 
760 template <
761  typename Arg0,
762  typename Arg1,
763  typename Arg2,
764  typename Arg3,
765  typename Arg4,
766  typename Arg5,
767  typename Arg6,
768  typename Arg7,
769  typename Arg8,
770  typename Arg9,
771  typename Arg10,
772  typename Arg11,
773  typename Arg12,
774  typename Arg13,
775  typename Arg14,
776  typename Arg15,
777  typename Arg16,
778  typename Arg17,
779  typename Arg18,
780  typename Arg19,
781  typename Arg20>
782 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
783  const Arg0 &arg0,
784  const Arg1 &arg1,
785  const Arg2 &arg2,
786  const Arg3 &arg3,
787  const Arg4 &arg4,
788  const Arg5 &arg5,
789  const Arg6 &arg6,
790  const Arg7 &arg7,
791  const Arg8 &arg8,
792  const Arg9 &arg9,
793  const Arg10 &arg10,
794  const Arg11 &arg11,
795  const Arg12 &arg12,
796  const Arg13 &arg13,
797  const Arg14 &arg14,
798  const Arg15 &arg15,
799  const Arg16 &arg16,
800  const Arg17 &arg17,
801  const Arg18 &arg18,
802  const Arg19 &arg19,
803  const Arg20 &arg20)
804 {
805  kern.setArg(offset + 0, arg0);
806  kern.setArg(offset + 1, arg1);
807  kern.setArg(offset + 2, arg2);
808  kern.setArg(offset + 3, arg3);
809  kern.setArg(offset + 4, arg4);
810  kern.setArg(offset + 5, arg5);
811  kern.setArg(offset + 6, arg6);
812  kern.setArg(offset + 7, arg7);
813  kern.setArg(offset + 8, arg8);
814  kern.setArg(offset + 9, arg9);
815  kern.setArg(offset + 10, arg10);
816  kern.setArg(offset + 11, arg11);
817  kern.setArg(offset + 12, arg12);
818  kern.setArg(offset + 13, arg13);
819  kern.setArg(offset + 14, arg14);
820  kern.setArg(offset + 15, arg15);
821  kern.setArg(offset + 16, arg16);
822  kern.setArg(offset + 17, arg17);
823  kern.setArg(offset + 18, arg18);
824  kern.setArg(offset + 19, arg19);
825  kern.setArg(offset + 20, arg20);
826 }
827 
828 template <
829  typename Arg0,
830  typename Arg1,
831  typename Arg2,
832  typename Arg3,
833  typename Arg4,
834  typename Arg5,
835  typename Arg6,
836  typename Arg7,
837  typename Arg8,
838  typename Arg9,
839  typename Arg10,
840  typename Arg11,
841  typename Arg12,
842  typename Arg13,
843  typename Arg14,
844  typename Arg15,
845  typename Arg16,
846  typename Arg17,
847  typename Arg18,
848  typename Arg19,
849  typename Arg20,
850  typename Arg21>
851 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
852  const Arg0 &arg0,
853  const Arg1 &arg1,
854  const Arg2 &arg2,
855  const Arg3 &arg3,
856  const Arg4 &arg4,
857  const Arg5 &arg5,
858  const Arg6 &arg6,
859  const Arg7 &arg7,
860  const Arg8 &arg8,
861  const Arg9 &arg9,
862  const Arg10 &arg10,
863  const Arg11 &arg11,
864  const Arg12 &arg12,
865  const Arg13 &arg13,
866  const Arg14 &arg14,
867  const Arg15 &arg15,
868  const Arg16 &arg16,
869  const Arg17 &arg17,
870  const Arg18 &arg18,
871  const Arg19 &arg19,
872  const Arg20 &arg20,
873  const Arg21 &arg21)
874 {
875  kern.setArg(offset + 0, arg0);
876  kern.setArg(offset + 1, arg1);
877  kern.setArg(offset + 2, arg2);
878  kern.setArg(offset + 3, arg3);
879  kern.setArg(offset + 4, arg4);
880  kern.setArg(offset + 5, arg5);
881  kern.setArg(offset + 6, arg6);
882  kern.setArg(offset + 7, arg7);
883  kern.setArg(offset + 8, arg8);
884  kern.setArg(offset + 9, arg9);
885  kern.setArg(offset + 10, arg10);
886  kern.setArg(offset + 11, arg11);
887  kern.setArg(offset + 12, arg12);
888  kern.setArg(offset + 13, arg13);
889  kern.setArg(offset + 14, arg14);
890  kern.setArg(offset + 15, arg15);
891  kern.setArg(offset + 16, arg16);
892  kern.setArg(offset + 17, arg17);
893  kern.setArg(offset + 18, arg18);
894  kern.setArg(offset + 19, arg19);
895  kern.setArg(offset + 20, arg20);
896  kern.setArg(offset + 21, arg21);
897 }
898 
899 template <
900  typename Arg0,
901  typename Arg1,
902  typename Arg2,
903  typename Arg3,
904  typename Arg4,
905  typename Arg5,
906  typename Arg6,
907  typename Arg7,
908  typename Arg8,
909  typename Arg9,
910  typename Arg10,
911  typename Arg11,
912  typename Arg12,
913  typename Arg13,
914  typename Arg14,
915  typename Arg15,
916  typename Arg16,
917  typename Arg17,
918  typename Arg18,
919  typename Arg19,
920  typename Arg20,
921  typename Arg21,
922  typename Arg22>
923 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
924  const Arg0 &arg0,
925  const Arg1 &arg1,
926  const Arg2 &arg2,
927  const Arg3 &arg3,
928  const Arg4 &arg4,
929  const Arg5 &arg5,
930  const Arg6 &arg6,
931  const Arg7 &arg7,
932  const Arg8 &arg8,
933  const Arg9 &arg9,
934  const Arg10 &arg10,
935  const Arg11 &arg11,
936  const Arg12 &arg12,
937  const Arg13 &arg13,
938  const Arg14 &arg14,
939  const Arg15 &arg15,
940  const Arg16 &arg16,
941  const Arg17 &arg17,
942  const Arg18 &arg18,
943  const Arg19 &arg19,
944  const Arg20 &arg20,
945  const Arg21 &arg21,
946  const Arg22 &arg22)
947 {
948  kern.setArg(offset + 0, arg0);
949  kern.setArg(offset + 1, arg1);
950  kern.setArg(offset + 2, arg2);
951  kern.setArg(offset + 3, arg3);
952  kern.setArg(offset + 4, arg4);
953  kern.setArg(offset + 5, arg5);
954  kern.setArg(offset + 6, arg6);
955  kern.setArg(offset + 7, arg7);
956  kern.setArg(offset + 8, arg8);
957  kern.setArg(offset + 9, arg9);
958  kern.setArg(offset + 10, arg10);
959  kern.setArg(offset + 11, arg11);
960  kern.setArg(offset + 12, arg12);
961  kern.setArg(offset + 13, arg13);
962  kern.setArg(offset + 14, arg14);
963  kern.setArg(offset + 15, arg15);
964  kern.setArg(offset + 16, arg16);
965  kern.setArg(offset + 17, arg17);
966  kern.setArg(offset + 18, arg18);
967  kern.setArg(offset + 19, arg19);
968  kern.setArg(offset + 20, arg20);
969  kern.setArg(offset + 21, arg21);
970  kern.setArg(offset + 22, arg22);
971 }
972 
973 template <
974  typename Arg0,
975  typename Arg1,
976  typename Arg2,
977  typename Arg3,
978  typename Arg4,
979  typename Arg5,
980  typename Arg6,
981  typename Arg7,
982  typename Arg8,
983  typename Arg9,
984  typename Arg10,
985  typename Arg11,
986  typename Arg12,
987  typename Arg13,
988  typename Arg14,
989  typename Arg15,
990  typename Arg16,
991  typename Arg17,
992  typename Arg18,
993  typename Arg19,
994  typename Arg20,
995  typename Arg21,
996  typename Arg22,
997  typename Arg23>
998 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
999  const Arg0 &arg0,
1000  const Arg1 &arg1,
1001  const Arg2 &arg2,
1002  const Arg3 &arg3,
1003  const Arg4 &arg4,
1004  const Arg5 &arg5,
1005  const Arg6 &arg6,
1006  const Arg7 &arg7,
1007  const Arg8 &arg8,
1008  const Arg9 &arg9,
1009  const Arg10 &arg10,
1010  const Arg11 &arg11,
1011  const Arg12 &arg12,
1012  const Arg13 &arg13,
1013  const Arg14 &arg14,
1014  const Arg15 &arg15,
1015  const Arg16 &arg16,
1016  const Arg17 &arg17,
1017  const Arg18 &arg18,
1018  const Arg19 &arg19,
1019  const Arg20 &arg20,
1020  const Arg21 &arg21,
1021  const Arg22 &arg22,
1022  const Arg23 &arg23)
1023 {
1024  kern.setArg(offset + 0, arg0);
1025  kern.setArg(offset + 1, arg1);
1026  kern.setArg(offset + 2, arg2);
1027  kern.setArg(offset + 3, arg3);
1028  kern.setArg(offset + 4, arg4);
1029  kern.setArg(offset + 5, arg5);
1030  kern.setArg(offset + 6, arg6);
1031  kern.setArg(offset + 7, arg7);
1032  kern.setArg(offset + 8, arg8);
1033  kern.setArg(offset + 9, arg9);
1034  kern.setArg(offset + 10, arg10);
1035  kern.setArg(offset + 11, arg11);
1036  kern.setArg(offset + 12, arg12);
1037  kern.setArg(offset + 13, arg13);
1038  kern.setArg(offset + 14, arg14);
1039  kern.setArg(offset + 15, arg15);
1040  kern.setArg(offset + 16, arg16);
1041  kern.setArg(offset + 17, arg17);
1042  kern.setArg(offset + 18, arg18);
1043  kern.setArg(offset + 19, arg19);
1044  kern.setArg(offset + 20, arg20);
1045  kern.setArg(offset + 21, arg21);
1046  kern.setArg(offset + 22, arg22);
1047  kern.setArg(offset + 23, arg23);
1048 }
1049 
1050 template <
1051  typename Arg0,
1052  typename Arg1,
1053  typename Arg2,
1054  typename Arg3,
1055  typename Arg4,
1056  typename Arg5,
1057  typename Arg6,
1058  typename Arg7,
1059  typename Arg8,
1060  typename Arg9,
1061  typename Arg10,
1062  typename Arg11,
1063  typename Arg12,
1064  typename Arg13,
1065  typename Arg14,
1066  typename Arg15,
1067  typename Arg16,
1068  typename Arg17,
1069  typename Arg18,
1070  typename Arg19,
1071  typename Arg20,
1072  typename Arg21,
1073  typename Arg22,
1074  typename Arg23,
1075  typename Arg24>
1076 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
1077  const Arg0 &arg0,
1078  const Arg1 &arg1,
1079  const Arg2 &arg2,
1080  const Arg3 &arg3,
1081  const Arg4 &arg4,
1082  const Arg5 &arg5,
1083  const Arg6 &arg6,
1084  const Arg7 &arg7,
1085  const Arg8 &arg8,
1086  const Arg9 &arg9,
1087  const Arg10 &arg10,
1088  const Arg11 &arg11,
1089  const Arg12 &arg12,
1090  const Arg13 &arg13,
1091  const Arg14 &arg14,
1092  const Arg15 &arg15,
1093  const Arg16 &arg16,
1094  const Arg17 &arg17,
1095  const Arg18 &arg18,
1096  const Arg19 &arg19,
1097  const Arg20 &arg20,
1098  const Arg21 &arg21,
1099  const Arg22 &arg22,
1100  const Arg23 &arg23,
1101  const Arg24 &arg24)
1102 {
1103  kern.setArg(offset + 0, arg0);
1104  kern.setArg(offset + 1, arg1);
1105  kern.setArg(offset + 2, arg2);
1106  kern.setArg(offset + 3, arg3);
1107  kern.setArg(offset + 4, arg4);
1108  kern.setArg(offset + 5, arg5);
1109  kern.setArg(offset + 6, arg6);
1110  kern.setArg(offset + 7, arg7);
1111  kern.setArg(offset + 8, arg8);
1112  kern.setArg(offset + 9, arg9);
1113  kern.setArg(offset + 10, arg10);
1114  kern.setArg(offset + 11, arg11);
1115  kern.setArg(offset + 12, arg12);
1116  kern.setArg(offset + 13, arg13);
1117  kern.setArg(offset + 14, arg14);
1118  kern.setArg(offset + 15, arg15);
1119  kern.setArg(offset + 16, arg16);
1120  kern.setArg(offset + 17, arg17);
1121  kern.setArg(offset + 18, arg18);
1122  kern.setArg(offset + 19, arg19);
1123  kern.setArg(offset + 20, arg20);
1124  kern.setArg(offset + 21, arg21);
1125  kern.setArg(offset + 22, arg22);
1126  kern.setArg(offset + 23, arg23);
1127  kern.setArg(offset + 24, arg24);
1128 }
1129 
1130 template <
1131  typename Arg0,
1132  typename Arg1,
1133  typename Arg2,
1134  typename Arg3,
1135  typename Arg4,
1136  typename Arg5,
1137  typename Arg6,
1138  typename Arg7,
1139  typename Arg8,
1140  typename Arg9,
1141  typename Arg10,
1142  typename Arg11,
1143  typename Arg12,
1144  typename Arg13,
1145  typename Arg14,
1146  typename Arg15,
1147  typename Arg16,
1148  typename Arg17,
1149  typename Arg18,
1150  typename Arg19,
1151  typename Arg20,
1152  typename Arg21,
1153  typename Arg22,
1154  typename Arg23,
1155  typename Arg24,
1156  typename Arg25>
1157 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
1158  const Arg0 &arg0,
1159  const Arg1 &arg1,
1160  const Arg2 &arg2,
1161  const Arg3 &arg3,
1162  const Arg4 &arg4,
1163  const Arg5 &arg5,
1164  const Arg6 &arg6,
1165  const Arg7 &arg7,
1166  const Arg8 &arg8,
1167  const Arg9 &arg9,
1168  const Arg10 &arg10,
1169  const Arg11 &arg11,
1170  const Arg12 &arg12,
1171  const Arg13 &arg13,
1172  const Arg14 &arg14,
1173  const Arg15 &arg15,
1174  const Arg16 &arg16,
1175  const Arg17 &arg17,
1176  const Arg18 &arg18,
1177  const Arg19 &arg19,
1178  const Arg20 &arg20,
1179  const Arg21 &arg21,
1180  const Arg22 &arg22,
1181  const Arg23 &arg23,
1182  const Arg24 &arg24,
1183  const Arg25 &arg25)
1184 {
1185  kern.setArg(offset + 0, arg0);
1186  kern.setArg(offset + 1, arg1);
1187  kern.setArg(offset + 2, arg2);
1188  kern.setArg(offset + 3, arg3);
1189  kern.setArg(offset + 4, arg4);
1190  kern.setArg(offset + 5, arg5);
1191  kern.setArg(offset + 6, arg6);
1192  kern.setArg(offset + 7, arg7);
1193  kern.setArg(offset + 8, arg8);
1194  kern.setArg(offset + 9, arg9);
1195  kern.setArg(offset + 10, arg10);
1196  kern.setArg(offset + 11, arg11);
1197  kern.setArg(offset + 12, arg12);
1198  kern.setArg(offset + 13, arg13);
1199  kern.setArg(offset + 14, arg14);
1200  kern.setArg(offset + 15, arg15);
1201  kern.setArg(offset + 16, arg16);
1202  kern.setArg(offset + 17, arg17);
1203  kern.setArg(offset + 18, arg18);
1204  kern.setArg(offset + 19, arg19);
1205  kern.setArg(offset + 20, arg20);
1206  kern.setArg(offset + 21, arg21);
1207  kern.setArg(offset + 22, arg22);
1208  kern.setArg(offset + 23, arg23);
1209  kern.setArg(offset + 24, arg24);
1210  kern.setArg(offset + 25, arg25);
1211 }
1212 
1213 template <
1214  typename Arg0,
1215  typename Arg1,
1216  typename Arg2,
1217  typename Arg3,
1218  typename Arg4,
1219  typename Arg5,
1220  typename Arg6,
1221  typename Arg7,
1222  typename Arg8,
1223  typename Arg9,
1224  typename Arg10,
1225  typename Arg11,
1226  typename Arg12,
1227  typename Arg13,
1228  typename Arg14,
1229  typename Arg15,
1230  typename Arg16,
1231  typename Arg17,
1232  typename Arg18,
1233  typename Arg19,
1234  typename Arg20,
1235  typename Arg21,
1236  typename Arg22,
1237  typename Arg23,
1238  typename Arg24,
1239  typename Arg25,
1240  typename Arg26>
1241 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
1242  const Arg0 &arg0,
1243  const Arg1 &arg1,
1244  const Arg2 &arg2,
1245  const Arg3 &arg3,
1246  const Arg4 &arg4,
1247  const Arg5 &arg5,
1248  const Arg6 &arg6,
1249  const Arg7 &arg7,
1250  const Arg8 &arg8,
1251  const Arg9 &arg9,
1252  const Arg10 &arg10,
1253  const Arg11 &arg11,
1254  const Arg12 &arg12,
1255  const Arg13 &arg13,
1256  const Arg14 &arg14,
1257  const Arg15 &arg15,
1258  const Arg16 &arg16,
1259  const Arg17 &arg17,
1260  const Arg18 &arg18,
1261  const Arg19 &arg19,
1262  const Arg20 &arg20,
1263  const Arg21 &arg21,
1264  const Arg22 &arg22,
1265  const Arg23 &arg23,
1266  const Arg24 &arg24,
1267  const Arg25 &arg25,
1268  const Arg26 &arg26)
1269 {
1270  kern.setArg(offset + 0, arg0);
1271  kern.setArg(offset + 1, arg1);
1272  kern.setArg(offset + 2, arg2);
1273  kern.setArg(offset + 3, arg3);
1274  kern.setArg(offset + 4, arg4);
1275  kern.setArg(offset + 5, arg5);
1276  kern.setArg(offset + 6, arg6);
1277  kern.setArg(offset + 7, arg7);
1278  kern.setArg(offset + 8, arg8);
1279  kern.setArg(offset + 9, arg9);
1280  kern.setArg(offset + 10, arg10);
1281  kern.setArg(offset + 11, arg11);
1282  kern.setArg(offset + 12, arg12);
1283  kern.setArg(offset + 13, arg13);
1284  kern.setArg(offset + 14, arg14);
1285  kern.setArg(offset + 15, arg15);
1286  kern.setArg(offset + 16, arg16);
1287  kern.setArg(offset + 17, arg17);
1288  kern.setArg(offset + 18, arg18);
1289  kern.setArg(offset + 19, arg19);
1290  kern.setArg(offset + 20, arg20);
1291  kern.setArg(offset + 21, arg21);
1292  kern.setArg(offset + 22, arg22);
1293  kern.setArg(offset + 23, arg23);
1294  kern.setArg(offset + 24, arg24);
1295  kern.setArg(offset + 25, arg25);
1296  kern.setArg(offset + 26, arg26);
1297 }
1298 
1299 template <
1300  typename Arg0,
1301  typename Arg1,
1302  typename Arg2,
1303  typename Arg3,
1304  typename Arg4,
1305  typename Arg5,
1306  typename Arg6,
1307  typename Arg7,
1308  typename Arg8,
1309  typename Arg9,
1310  typename Arg10,
1311  typename Arg11,
1312  typename Arg12,
1313  typename Arg13,
1314  typename Arg14,
1315  typename Arg15,
1316  typename Arg16,
1317  typename Arg17,
1318  typename Arg18,
1319  typename Arg19,
1320  typename Arg20,
1321  typename Arg21,
1322  typename Arg22,
1323  typename Arg23,
1324  typename Arg24,
1325  typename Arg25,
1326  typename Arg26,
1327  typename Arg27>
1328 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
1329  const Arg0 &arg0,
1330  const Arg1 &arg1,
1331  const Arg2 &arg2,
1332  const Arg3 &arg3,
1333  const Arg4 &arg4,
1334  const Arg5 &arg5,
1335  const Arg6 &arg6,
1336  const Arg7 &arg7,
1337  const Arg8 &arg8,
1338  const Arg9 &arg9,
1339  const Arg10 &arg10,
1340  const Arg11 &arg11,
1341  const Arg12 &arg12,
1342  const Arg13 &arg13,
1343  const Arg14 &arg14,
1344  const Arg15 &arg15,
1345  const Arg16 &arg16,
1346  const Arg17 &arg17,
1347  const Arg18 &arg18,
1348  const Arg19 &arg19,
1349  const Arg20 &arg20,
1350  const Arg21 &arg21,
1351  const Arg22 &arg22,
1352  const Arg23 &arg23,
1353  const Arg24 &arg24,
1354  const Arg25 &arg25,
1355  const Arg26 &arg26,
1356  const Arg27 &arg27)
1357 {
1358  kern.setArg(offset + 0, arg0);
1359  kern.setArg(offset + 1, arg1);
1360  kern.setArg(offset + 2, arg2);
1361  kern.setArg(offset + 3, arg3);
1362  kern.setArg(offset + 4, arg4);
1363  kern.setArg(offset + 5, arg5);
1364  kern.setArg(offset + 6, arg6);
1365  kern.setArg(offset + 7, arg7);
1366  kern.setArg(offset + 8, arg8);
1367  kern.setArg(offset + 9, arg9);
1368  kern.setArg(offset + 10, arg10);
1369  kern.setArg(offset + 11, arg11);
1370  kern.setArg(offset + 12, arg12);
1371  kern.setArg(offset + 13, arg13);
1372  kern.setArg(offset + 14, arg14);
1373  kern.setArg(offset + 15, arg15);
1374  kern.setArg(offset + 16, arg16);
1375  kern.setArg(offset + 17, arg17);
1376  kern.setArg(offset + 18, arg18);
1377  kern.setArg(offset + 19, arg19);
1378  kern.setArg(offset + 20, arg20);
1379  kern.setArg(offset + 21, arg21);
1380  kern.setArg(offset + 22, arg22);
1381  kern.setArg(offset + 23, arg23);
1382  kern.setArg(offset + 24, arg24);
1383  kern.setArg(offset + 25, arg25);
1384  kern.setArg(offset + 26, arg26);
1385  kern.setArg(offset + 27, arg27);
1386 }
1387 
1388 template <
1389  typename Arg0,
1390  typename Arg1,
1391  typename Arg2,
1392  typename Arg3,
1393  typename Arg4,
1394  typename Arg5,
1395  typename Arg6,
1396  typename Arg7,
1397  typename Arg8,
1398  typename Arg9,
1399  typename Arg10,
1400  typename Arg11,
1401  typename Arg12,
1402  typename Arg13,
1403  typename Arg14,
1404  typename Arg15,
1405  typename Arg16,
1406  typename Arg17,
1407  typename Arg18,
1408  typename Arg19,
1409  typename Arg20,
1410  typename Arg21,
1411  typename Arg22,
1412  typename Arg23,
1413  typename Arg24,
1414  typename Arg25,
1415  typename Arg26,
1416  typename Arg27,
1417  typename Arg28>
1418 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
1419  const Arg0 &arg0,
1420  const Arg1 &arg1,
1421  const Arg2 &arg2,
1422  const Arg3 &arg3,
1423  const Arg4 &arg4,
1424  const Arg5 &arg5,
1425  const Arg6 &arg6,
1426  const Arg7 &arg7,
1427  const Arg8 &arg8,
1428  const Arg9 &arg9,
1429  const Arg10 &arg10,
1430  const Arg11 &arg11,
1431  const Arg12 &arg12,
1432  const Arg13 &arg13,
1433  const Arg14 &arg14,
1434  const Arg15 &arg15,
1435  const Arg16 &arg16,
1436  const Arg17 &arg17,
1437  const Arg18 &arg18,
1438  const Arg19 &arg19,
1439  const Arg20 &arg20,
1440  const Arg21 &arg21,
1441  const Arg22 &arg22,
1442  const Arg23 &arg23,
1443  const Arg24 &arg24,
1444  const Arg25 &arg25,
1445  const Arg26 &arg26,
1446  const Arg27 &arg27,
1447  const Arg28 &arg28)
1448 {
1449  kern.setArg(offset + 0, arg0);
1450  kern.setArg(offset + 1, arg1);
1451  kern.setArg(offset + 2, arg2);
1452  kern.setArg(offset + 3, arg3);
1453  kern.setArg(offset + 4, arg4);
1454  kern.setArg(offset + 5, arg5);
1455  kern.setArg(offset + 6, arg6);
1456  kern.setArg(offset + 7, arg7);
1457  kern.setArg(offset + 8, arg8);
1458  kern.setArg(offset + 9, arg9);
1459  kern.setArg(offset + 10, arg10);
1460  kern.setArg(offset + 11, arg11);
1461  kern.setArg(offset + 12, arg12);
1462  kern.setArg(offset + 13, arg13);
1463  kern.setArg(offset + 14, arg14);
1464  kern.setArg(offset + 15, arg15);
1465  kern.setArg(offset + 16, arg16);
1466  kern.setArg(offset + 17, arg17);
1467  kern.setArg(offset + 18, arg18);
1468  kern.setArg(offset + 19, arg19);
1469  kern.setArg(offset + 20, arg20);
1470  kern.setArg(offset + 21, arg21);
1471  kern.setArg(offset + 22, arg22);
1472  kern.setArg(offset + 23, arg23);
1473  kern.setArg(offset + 24, arg24);
1474  kern.setArg(offset + 25, arg25);
1475  kern.setArg(offset + 26, arg26);
1476  kern.setArg(offset + 27, arg27);
1477  kern.setArg(offset + 28, arg28);
1478 }
1479 
1480 template <
1481  typename Arg0,
1482  typename Arg1,
1483  typename Arg2,
1484  typename Arg3,
1485  typename Arg4,
1486  typename Arg5,
1487  typename Arg6,
1488  typename Arg7,
1489  typename Arg8,
1490  typename Arg9,
1491  typename Arg10,
1492  typename Arg11,
1493  typename Arg12,
1494  typename Arg13,
1495  typename Arg14,
1496  typename Arg15,
1497  typename Arg16,
1498  typename Arg17,
1499  typename Arg18,
1500  typename Arg19,
1501  typename Arg20,
1502  typename Arg21,
1503  typename Arg22,
1504  typename Arg23,
1505  typename Arg24,
1506  typename Arg25,
1507  typename Arg26,
1508  typename Arg27,
1509  typename Arg28,
1510  typename Arg29>
1511 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
1512  const Arg0 &arg0,
1513  const Arg1 &arg1,
1514  const Arg2 &arg2,
1515  const Arg3 &arg3,
1516  const Arg4 &arg4,
1517  const Arg5 &arg5,
1518  const Arg6 &arg6,
1519  const Arg7 &arg7,
1520  const Arg8 &arg8,
1521  const Arg9 &arg9,
1522  const Arg10 &arg10,
1523  const Arg11 &arg11,
1524  const Arg12 &arg12,
1525  const Arg13 &arg13,
1526  const Arg14 &arg14,
1527  const Arg15 &arg15,
1528  const Arg16 &arg16,
1529  const Arg17 &arg17,
1530  const Arg18 &arg18,
1531  const Arg19 &arg19,
1532  const Arg20 &arg20,
1533  const Arg21 &arg21,
1534  const Arg22 &arg22,
1535  const Arg23 &arg23,
1536  const Arg24 &arg24,
1537  const Arg25 &arg25,
1538  const Arg26 &arg26,
1539  const Arg27 &arg27,
1540  const Arg28 &arg28,
1541  const Arg29 &arg29)
1542 {
1543  kern.setArg(offset + 0, arg0);
1544  kern.setArg(offset + 1, arg1);
1545  kern.setArg(offset + 2, arg2);
1546  kern.setArg(offset + 3, arg3);
1547  kern.setArg(offset + 4, arg4);
1548  kern.setArg(offset + 5, arg5);
1549  kern.setArg(offset + 6, arg6);
1550  kern.setArg(offset + 7, arg7);
1551  kern.setArg(offset + 8, arg8);
1552  kern.setArg(offset + 9, arg9);
1553  kern.setArg(offset + 10, arg10);
1554  kern.setArg(offset + 11, arg11);
1555  kern.setArg(offset + 12, arg12);
1556  kern.setArg(offset + 13, arg13);
1557  kern.setArg(offset + 14, arg14);
1558  kern.setArg(offset + 15, arg15);
1559  kern.setArg(offset + 16, arg16);
1560  kern.setArg(offset + 17, arg17);
1561  kern.setArg(offset + 18, arg18);
1562  kern.setArg(offset + 19, arg19);
1563  kern.setArg(offset + 20, arg20);
1564  kern.setArg(offset + 21, arg21);
1565  kern.setArg(offset + 22, arg22);
1566  kern.setArg(offset + 23, arg23);
1567  kern.setArg(offset + 24, arg24);
1568  kern.setArg(offset + 25, arg25);
1569  kern.setArg(offset + 26, arg26);
1570  kern.setArg(offset + 27, arg27);
1571  kern.setArg(offset + 28, arg28);
1572  kern.setArg(offset + 29, arg29);
1573 }
1574 
1575 template <
1576  typename Arg0,
1577  typename Arg1,
1578  typename Arg2,
1579  typename Arg3,
1580  typename Arg4,
1581  typename Arg5,
1582  typename Arg6,
1583  typename Arg7,
1584  typename Arg8,
1585  typename Arg9,
1586  typename Arg10,
1587  typename Arg11,
1588  typename Arg12,
1589  typename Arg13,
1590  typename Arg14,
1591  typename Arg15,
1592  typename Arg16,
1593  typename Arg17,
1594  typename Arg18,
1595  typename Arg19,
1596  typename Arg20,
1597  typename Arg21,
1598  typename Arg22,
1599  typename Arg23,
1600  typename Arg24,
1601  typename Arg25,
1602  typename Arg26,
1603  typename Arg27,
1604  typename Arg28,
1605  typename Arg29,
1606  typename Arg30>
1607 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
1608  const Arg0 &arg0,
1609  const Arg1 &arg1,
1610  const Arg2 &arg2,
1611  const Arg3 &arg3,
1612  const Arg4 &arg4,
1613  const Arg5 &arg5,
1614  const Arg6 &arg6,
1615  const Arg7 &arg7,
1616  const Arg8 &arg8,
1617  const Arg9 &arg9,
1618  const Arg10 &arg10,
1619  const Arg11 &arg11,
1620  const Arg12 &arg12,
1621  const Arg13 &arg13,
1622  const Arg14 &arg14,
1623  const Arg15 &arg15,
1624  const Arg16 &arg16,
1625  const Arg17 &arg17,
1626  const Arg18 &arg18,
1627  const Arg19 &arg19,
1628  const Arg20 &arg20,
1629  const Arg21 &arg21,
1630  const Arg22 &arg22,
1631  const Arg23 &arg23,
1632  const Arg24 &arg24,
1633  const Arg25 &arg25,
1634  const Arg26 &arg26,
1635  const Arg27 &arg27,
1636  const Arg28 &arg28,
1637  const Arg29 &arg29,
1638  const Arg30 &arg30)
1639 {
1640  kern.setArg(offset + 0, arg0);
1641  kern.setArg(offset + 1, arg1);
1642  kern.setArg(offset + 2, arg2);
1643  kern.setArg(offset + 3, arg3);
1644  kern.setArg(offset + 4, arg4);
1645  kern.setArg(offset + 5, arg5);
1646  kern.setArg(offset + 6, arg6);
1647  kern.setArg(offset + 7, arg7);
1648  kern.setArg(offset + 8, arg8);
1649  kern.setArg(offset + 9, arg9);
1650  kern.setArg(offset + 10, arg10);
1651  kern.setArg(offset + 11, arg11);
1652  kern.setArg(offset + 12, arg12);
1653  kern.setArg(offset + 13, arg13);
1654  kern.setArg(offset + 14, arg14);
1655  kern.setArg(offset + 15, arg15);
1656  kern.setArg(offset + 16, arg16);
1657  kern.setArg(offset + 17, arg17);
1658  kern.setArg(offset + 18, arg18);
1659  kern.setArg(offset + 19, arg19);
1660  kern.setArg(offset + 20, arg20);
1661  kern.setArg(offset + 21, arg21);
1662  kern.setArg(offset + 22, arg22);
1663  kern.setArg(offset + 23, arg23);
1664  kern.setArg(offset + 24, arg24);
1665  kern.setArg(offset + 25, arg25);
1666  kern.setArg(offset + 26, arg26);
1667  kern.setArg(offset + 27, arg27);
1668  kern.setArg(offset + 28, arg28);
1669  kern.setArg(offset + 29, arg29);
1670  kern.setArg(offset + 30, arg30);
1671 }
1672 
1673 template <
1674  typename Arg0,
1675  typename Arg1,
1676  typename Arg2,
1677  typename Arg3,
1678  typename Arg4,
1679  typename Arg5,
1680  typename Arg6,
1681  typename Arg7,
1682  typename Arg8,
1683  typename Arg9,
1684  typename Arg10,
1685  typename Arg11,
1686  typename Arg12,
1687  typename Arg13,
1688  typename Arg14,
1689  typename Arg15,
1690  typename Arg16,
1691  typename Arg17,
1692  typename Arg18,
1693  typename Arg19,
1694  typename Arg20,
1695  typename Arg21,
1696  typename Arg22,
1697  typename Arg23,
1698  typename Arg24,
1699  typename Arg25,
1700  typename Arg26,
1701  typename Arg27,
1702  typename Arg28,
1703  typename Arg29,
1704  typename Arg30,
1705  typename Arg31>
1706 inline void cl_set_kernel_args (::cl::Kernel &kern, ::cl_uint offset,
1707  const Arg0 &arg0,
1708  const Arg1 &arg1,
1709  const Arg2 &arg2,
1710  const Arg3 &arg3,
1711  const Arg4 &arg4,
1712  const Arg5 &arg5,
1713  const Arg6 &arg6,
1714  const Arg7 &arg7,
1715  const Arg8 &arg8,
1716  const Arg9 &arg9,
1717  const Arg10 &arg10,
1718  const Arg11 &arg11,
1719  const Arg12 &arg12,
1720  const Arg13 &arg13,
1721  const Arg14 &arg14,
1722  const Arg15 &arg15,
1723  const Arg16 &arg16,
1724  const Arg17 &arg17,
1725  const Arg18 &arg18,
1726  const Arg19 &arg19,
1727  const Arg20 &arg20,
1728  const Arg21 &arg21,
1729  const Arg22 &arg22,
1730  const Arg23 &arg23,
1731  const Arg24 &arg24,
1732  const Arg25 &arg25,
1733  const Arg26 &arg26,
1734  const Arg27 &arg27,
1735  const Arg28 &arg28,
1736  const Arg29 &arg29,
1737  const Arg30 &arg30,
1738  const Arg31 &arg31)
1739 {
1740  kern.setArg(offset + 0, arg0);
1741  kern.setArg(offset + 1, arg1);
1742  kern.setArg(offset + 2, arg2);
1743  kern.setArg(offset + 3, arg3);
1744  kern.setArg(offset + 4, arg4);
1745  kern.setArg(offset + 5, arg5);
1746  kern.setArg(offset + 6, arg6);
1747  kern.setArg(offset + 7, arg7);
1748  kern.setArg(offset + 8, arg8);
1749  kern.setArg(offset + 9, arg9);
1750  kern.setArg(offset + 10, arg10);
1751  kern.setArg(offset + 11, arg11);
1752  kern.setArg(offset + 12, arg12);
1753  kern.setArg(offset + 13, arg13);
1754  kern.setArg(offset + 14, arg14);
1755  kern.setArg(offset + 15, arg15);
1756  kern.setArg(offset + 16, arg16);
1757  kern.setArg(offset + 17, arg17);
1758  kern.setArg(offset + 18, arg18);
1759  kern.setArg(offset + 19, arg19);
1760  kern.setArg(offset + 20, arg20);
1761  kern.setArg(offset + 21, arg21);
1762  kern.setArg(offset + 22, arg22);
1763  kern.setArg(offset + 23, arg23);
1764  kern.setArg(offset + 24, arg24);
1765  kern.setArg(offset + 25, arg25);
1766  kern.setArg(offset + 26, arg26);
1767  kern.setArg(offset + 27, arg27);
1768  kern.setArg(offset + 28, arg28);
1769  kern.setArg(offset + 29, arg29);
1770  kern.setArg(offset + 30, arg30);
1771  kern.setArg(offset + 31, arg31);
1772 }
1773 
1774 
void cl_set_kernel_args(::cl::Kernel &kern,::cl_uint offset, const Arg0 &arg0)