1
2 // =================================================================================================
3 // This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This
4 // project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max-
5 // width of 100 characters per line.
6 //
7 // Author(s):
8 // Cedric Nugteren <www.cedricnugteren.nl>
9 //
10 // This file implements all the plain C BLAS API calls. This forwards the calls to the C++ API.
11 //
12 // =================================================================================================
13
14 #include <string>
15 #include <unordered_map>
16
17 #include "utilities/utilities.hpp"
18 #include "clblast_c.h"
19 #include "clblast.h"
20
21 // Shortcuts to the clblast namespace
22 using half = clblast::half;
23 using float2 = clblast::float2;
24 using double2 = clblast::double2;
25
26 // =================================================================================================
27 // BLAS level-1 (vector-vector) routines
28 // =================================================================================================
29
30 // ROTG
CLBlastSrotg(cl_mem sa_buffer,const size_t sa_offset,cl_mem sb_buffer,const size_t sb_offset,cl_mem sc_buffer,const size_t sc_offset,cl_mem ss_buffer,const size_t ss_offset,cl_command_queue * queue,cl_event * event)31 CLBlastStatusCode CLBlastSrotg(cl_mem sa_buffer, const size_t sa_offset,
32 cl_mem sb_buffer, const size_t sb_offset,
33 cl_mem sc_buffer, const size_t sc_offset,
34 cl_mem ss_buffer, const size_t ss_offset,
35 cl_command_queue* queue, cl_event* event) {
36 try {
37 return static_cast<CLBlastStatusCode>(
38 clblast::Rotg<float>(sa_buffer, sa_offset,
39 sb_buffer, sb_offset,
40 sc_buffer, sc_offset,
41 ss_buffer, ss_offset,
42 queue, event)
43 );
44 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
45 }
CLBlastDrotg(cl_mem sa_buffer,const size_t sa_offset,cl_mem sb_buffer,const size_t sb_offset,cl_mem sc_buffer,const size_t sc_offset,cl_mem ss_buffer,const size_t ss_offset,cl_command_queue * queue,cl_event * event)46 CLBlastStatusCode CLBlastDrotg(cl_mem sa_buffer, const size_t sa_offset,
47 cl_mem sb_buffer, const size_t sb_offset,
48 cl_mem sc_buffer, const size_t sc_offset,
49 cl_mem ss_buffer, const size_t ss_offset,
50 cl_command_queue* queue, cl_event* event) {
51 try {
52 return static_cast<CLBlastStatusCode>(
53 clblast::Rotg<double>(sa_buffer, sa_offset,
54 sb_buffer, sb_offset,
55 sc_buffer, sc_offset,
56 ss_buffer, ss_offset,
57 queue, event)
58 );
59 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
60 }
61
62 // ROTMG
CLBlastSrotmg(cl_mem sd1_buffer,const size_t sd1_offset,cl_mem sd2_buffer,const size_t sd2_offset,cl_mem sx1_buffer,const size_t sx1_offset,const cl_mem sy1_buffer,const size_t sy1_offset,cl_mem sparam_buffer,const size_t sparam_offset,cl_command_queue * queue,cl_event * event)63 CLBlastStatusCode CLBlastSrotmg(cl_mem sd1_buffer, const size_t sd1_offset,
64 cl_mem sd2_buffer, const size_t sd2_offset,
65 cl_mem sx1_buffer, const size_t sx1_offset,
66 const cl_mem sy1_buffer, const size_t sy1_offset,
67 cl_mem sparam_buffer, const size_t sparam_offset,
68 cl_command_queue* queue, cl_event* event) {
69 try {
70 return static_cast<CLBlastStatusCode>(
71 clblast::Rotmg<float>(sd1_buffer, sd1_offset,
72 sd2_buffer, sd2_offset,
73 sx1_buffer, sx1_offset,
74 sy1_buffer, sy1_offset,
75 sparam_buffer, sparam_offset,
76 queue, event)
77 );
78 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
79 }
CLBlastDrotmg(cl_mem sd1_buffer,const size_t sd1_offset,cl_mem sd2_buffer,const size_t sd2_offset,cl_mem sx1_buffer,const size_t sx1_offset,const cl_mem sy1_buffer,const size_t sy1_offset,cl_mem sparam_buffer,const size_t sparam_offset,cl_command_queue * queue,cl_event * event)80 CLBlastStatusCode CLBlastDrotmg(cl_mem sd1_buffer, const size_t sd1_offset,
81 cl_mem sd2_buffer, const size_t sd2_offset,
82 cl_mem sx1_buffer, const size_t sx1_offset,
83 const cl_mem sy1_buffer, const size_t sy1_offset,
84 cl_mem sparam_buffer, const size_t sparam_offset,
85 cl_command_queue* queue, cl_event* event) {
86 try {
87 return static_cast<CLBlastStatusCode>(
88 clblast::Rotmg<double>(sd1_buffer, sd1_offset,
89 sd2_buffer, sd2_offset,
90 sx1_buffer, sx1_offset,
91 sy1_buffer, sy1_offset,
92 sparam_buffer, sparam_offset,
93 queue, event)
94 );
95 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
96 }
97
98 // ROT
CLBlastSrot(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,const float cos,const float sin,cl_command_queue * queue,cl_event * event)99 CLBlastStatusCode CLBlastSrot(const size_t n,
100 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
101 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
102 const float cos,
103 const float sin,
104 cl_command_queue* queue, cl_event* event) {
105 try {
106 return static_cast<CLBlastStatusCode>(
107 clblast::Rot(n,
108 x_buffer, x_offset, x_inc,
109 y_buffer, y_offset, y_inc,
110 cos,
111 sin,
112 queue, event)
113 );
114 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
115 }
CLBlastDrot(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,const double cos,const double sin,cl_command_queue * queue,cl_event * event)116 CLBlastStatusCode CLBlastDrot(const size_t n,
117 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
118 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
119 const double cos,
120 const double sin,
121 cl_command_queue* queue, cl_event* event) {
122 try {
123 return static_cast<CLBlastStatusCode>(
124 clblast::Rot(n,
125 x_buffer, x_offset, x_inc,
126 y_buffer, y_offset, y_inc,
127 cos,
128 sin,
129 queue, event)
130 );
131 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
132 }
133
134 // ROTM
CLBlastSrotm(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem sparam_buffer,const size_t sparam_offset,cl_command_queue * queue,cl_event * event)135 CLBlastStatusCode CLBlastSrotm(const size_t n,
136 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
137 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
138 cl_mem sparam_buffer, const size_t sparam_offset,
139 cl_command_queue* queue, cl_event* event) {
140 try {
141 return static_cast<CLBlastStatusCode>(
142 clblast::Rotm<float>(n,
143 x_buffer, x_offset, x_inc,
144 y_buffer, y_offset, y_inc,
145 sparam_buffer, sparam_offset,
146 queue, event)
147 );
148 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
149 }
CLBlastDrotm(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem sparam_buffer,const size_t sparam_offset,cl_command_queue * queue,cl_event * event)150 CLBlastStatusCode CLBlastDrotm(const size_t n,
151 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
152 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
153 cl_mem sparam_buffer, const size_t sparam_offset,
154 cl_command_queue* queue, cl_event* event) {
155 try {
156 return static_cast<CLBlastStatusCode>(
157 clblast::Rotm<double>(n,
158 x_buffer, x_offset, x_inc,
159 y_buffer, y_offset, y_inc,
160 sparam_buffer, sparam_offset,
161 queue, event)
162 );
163 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
164 }
165
166 // SWAP
CLBlastSswap(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)167 CLBlastStatusCode CLBlastSswap(const size_t n,
168 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
169 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
170 cl_command_queue* queue, cl_event* event) {
171 try {
172 return static_cast<CLBlastStatusCode>(
173 clblast::Swap<float>(n,
174 x_buffer, x_offset, x_inc,
175 y_buffer, y_offset, y_inc,
176 queue, event)
177 );
178 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
179 }
CLBlastDswap(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)180 CLBlastStatusCode CLBlastDswap(const size_t n,
181 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
182 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
183 cl_command_queue* queue, cl_event* event) {
184 try {
185 return static_cast<CLBlastStatusCode>(
186 clblast::Swap<double>(n,
187 x_buffer, x_offset, x_inc,
188 y_buffer, y_offset, y_inc,
189 queue, event)
190 );
191 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
192 }
CLBlastCswap(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)193 CLBlastStatusCode CLBlastCswap(const size_t n,
194 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
195 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
196 cl_command_queue* queue, cl_event* event) {
197 try {
198 return static_cast<CLBlastStatusCode>(
199 clblast::Swap<float2>(n,
200 x_buffer, x_offset, x_inc,
201 y_buffer, y_offset, y_inc,
202 queue, event)
203 );
204 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
205 }
CLBlastZswap(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)206 CLBlastStatusCode CLBlastZswap(const size_t n,
207 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
208 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
209 cl_command_queue* queue, cl_event* event) {
210 try {
211 return static_cast<CLBlastStatusCode>(
212 clblast::Swap<double2>(n,
213 x_buffer, x_offset, x_inc,
214 y_buffer, y_offset, y_inc,
215 queue, event)
216 );
217 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
218 }
CLBlastHswap(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)219 CLBlastStatusCode CLBlastHswap(const size_t n,
220 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
221 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
222 cl_command_queue* queue, cl_event* event) {
223 try {
224 return static_cast<CLBlastStatusCode>(
225 clblast::Swap<half>(n,
226 x_buffer, x_offset, x_inc,
227 y_buffer, y_offset, y_inc,
228 queue, event)
229 );
230 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
231 }
232
233 // SCAL
CLBlastSscal(const size_t n,const float alpha,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)234 CLBlastStatusCode CLBlastSscal(const size_t n,
235 const float alpha,
236 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
237 cl_command_queue* queue, cl_event* event) {
238 try {
239 return static_cast<CLBlastStatusCode>(
240 clblast::Scal(n,
241 alpha,
242 x_buffer, x_offset, x_inc,
243 queue, event)
244 );
245 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
246 }
CLBlastDscal(const size_t n,const double alpha,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)247 CLBlastStatusCode CLBlastDscal(const size_t n,
248 const double alpha,
249 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
250 cl_command_queue* queue, cl_event* event) {
251 try {
252 return static_cast<CLBlastStatusCode>(
253 clblast::Scal(n,
254 alpha,
255 x_buffer, x_offset, x_inc,
256 queue, event)
257 );
258 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
259 }
CLBlastCscal(const size_t n,const cl_float2 alpha,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)260 CLBlastStatusCode CLBlastCscal(const size_t n,
261 const cl_float2 alpha,
262 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
263 cl_command_queue* queue, cl_event* event) {
264 try {
265 return static_cast<CLBlastStatusCode>(
266 clblast::Scal(n,
267 float2{alpha.s[0], alpha.s[1]},
268 x_buffer, x_offset, x_inc,
269 queue, event)
270 );
271 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
272 }
CLBlastZscal(const size_t n,const cl_double2 alpha,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)273 CLBlastStatusCode CLBlastZscal(const size_t n,
274 const cl_double2 alpha,
275 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
276 cl_command_queue* queue, cl_event* event) {
277 try {
278 return static_cast<CLBlastStatusCode>(
279 clblast::Scal(n,
280 double2{alpha.s[0], alpha.s[1]},
281 x_buffer, x_offset, x_inc,
282 queue, event)
283 );
284 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
285 }
CLBlastHscal(const size_t n,const cl_half alpha,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)286 CLBlastStatusCode CLBlastHscal(const size_t n,
287 const cl_half alpha,
288 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
289 cl_command_queue* queue, cl_event* event) {
290 try {
291 return static_cast<CLBlastStatusCode>(
292 clblast::Scal(n,
293 alpha,
294 x_buffer, x_offset, x_inc,
295 queue, event)
296 );
297 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
298 }
299
300 // COPY
CLBlastScopy(const size_t n,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)301 CLBlastStatusCode CLBlastScopy(const size_t n,
302 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
303 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
304 cl_command_queue* queue, cl_event* event) {
305 try {
306 return static_cast<CLBlastStatusCode>(
307 clblast::Copy<float>(n,
308 x_buffer, x_offset, x_inc,
309 y_buffer, y_offset, y_inc,
310 queue, event)
311 );
312 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
313 }
CLBlastDcopy(const size_t n,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)314 CLBlastStatusCode CLBlastDcopy(const size_t n,
315 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
316 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
317 cl_command_queue* queue, cl_event* event) {
318 try {
319 return static_cast<CLBlastStatusCode>(
320 clblast::Copy<double>(n,
321 x_buffer, x_offset, x_inc,
322 y_buffer, y_offset, y_inc,
323 queue, event)
324 );
325 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
326 }
CLBlastCcopy(const size_t n,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)327 CLBlastStatusCode CLBlastCcopy(const size_t n,
328 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
329 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
330 cl_command_queue* queue, cl_event* event) {
331 try {
332 return static_cast<CLBlastStatusCode>(
333 clblast::Copy<float2>(n,
334 x_buffer, x_offset, x_inc,
335 y_buffer, y_offset, y_inc,
336 queue, event)
337 );
338 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
339 }
CLBlastZcopy(const size_t n,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)340 CLBlastStatusCode CLBlastZcopy(const size_t n,
341 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
342 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
343 cl_command_queue* queue, cl_event* event) {
344 try {
345 return static_cast<CLBlastStatusCode>(
346 clblast::Copy<double2>(n,
347 x_buffer, x_offset, x_inc,
348 y_buffer, y_offset, y_inc,
349 queue, event)
350 );
351 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
352 }
CLBlastHcopy(const size_t n,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)353 CLBlastStatusCode CLBlastHcopy(const size_t n,
354 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
355 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
356 cl_command_queue* queue, cl_event* event) {
357 try {
358 return static_cast<CLBlastStatusCode>(
359 clblast::Copy<half>(n,
360 x_buffer, x_offset, x_inc,
361 y_buffer, y_offset, y_inc,
362 queue, event)
363 );
364 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
365 }
366
367 // AXPY
CLBlastSaxpy(const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)368 CLBlastStatusCode CLBlastSaxpy(const size_t n,
369 const float alpha,
370 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
371 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
372 cl_command_queue* queue, cl_event* event) {
373 try {
374 return static_cast<CLBlastStatusCode>(
375 clblast::Axpy(n,
376 alpha,
377 x_buffer, x_offset, x_inc,
378 y_buffer, y_offset, y_inc,
379 queue, event)
380 );
381 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
382 }
CLBlastDaxpy(const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)383 CLBlastStatusCode CLBlastDaxpy(const size_t n,
384 const double alpha,
385 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
386 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
387 cl_command_queue* queue, cl_event* event) {
388 try {
389 return static_cast<CLBlastStatusCode>(
390 clblast::Axpy(n,
391 alpha,
392 x_buffer, x_offset, x_inc,
393 y_buffer, y_offset, y_inc,
394 queue, event)
395 );
396 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
397 }
CLBlastCaxpy(const size_t n,const cl_float2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)398 CLBlastStatusCode CLBlastCaxpy(const size_t n,
399 const cl_float2 alpha,
400 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
401 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
402 cl_command_queue* queue, cl_event* event) {
403 try {
404 return static_cast<CLBlastStatusCode>(
405 clblast::Axpy(n,
406 float2{alpha.s[0], alpha.s[1]},
407 x_buffer, x_offset, x_inc,
408 y_buffer, y_offset, y_inc,
409 queue, event)
410 );
411 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
412 }
CLBlastZaxpy(const size_t n,const cl_double2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)413 CLBlastStatusCode CLBlastZaxpy(const size_t n,
414 const cl_double2 alpha,
415 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
416 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
417 cl_command_queue* queue, cl_event* event) {
418 try {
419 return static_cast<CLBlastStatusCode>(
420 clblast::Axpy(n,
421 double2{alpha.s[0], alpha.s[1]},
422 x_buffer, x_offset, x_inc,
423 y_buffer, y_offset, y_inc,
424 queue, event)
425 );
426 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
427 }
CLBlastHaxpy(const size_t n,const cl_half alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)428 CLBlastStatusCode CLBlastHaxpy(const size_t n,
429 const cl_half alpha,
430 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
431 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
432 cl_command_queue* queue, cl_event* event) {
433 try {
434 return static_cast<CLBlastStatusCode>(
435 clblast::Axpy(n,
436 alpha,
437 x_buffer, x_offset, x_inc,
438 y_buffer, y_offset, y_inc,
439 queue, event)
440 );
441 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
442 }
443
444 // DOT
CLBlastSdot(const size_t n,cl_mem dot_buffer,const size_t dot_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)445 CLBlastStatusCode CLBlastSdot(const size_t n,
446 cl_mem dot_buffer, const size_t dot_offset,
447 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
448 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
449 cl_command_queue* queue, cl_event* event) {
450 try {
451 return static_cast<CLBlastStatusCode>(
452 clblast::Dot<float>(n,
453 dot_buffer, dot_offset,
454 x_buffer, x_offset, x_inc,
455 y_buffer, y_offset, y_inc,
456 queue, event)
457 );
458 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
459 }
CLBlastDdot(const size_t n,cl_mem dot_buffer,const size_t dot_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)460 CLBlastStatusCode CLBlastDdot(const size_t n,
461 cl_mem dot_buffer, const size_t dot_offset,
462 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
463 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
464 cl_command_queue* queue, cl_event* event) {
465 try {
466 return static_cast<CLBlastStatusCode>(
467 clblast::Dot<double>(n,
468 dot_buffer, dot_offset,
469 x_buffer, x_offset, x_inc,
470 y_buffer, y_offset, y_inc,
471 queue, event)
472 );
473 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
474 }
CLBlastHdot(const size_t n,cl_mem dot_buffer,const size_t dot_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)475 CLBlastStatusCode CLBlastHdot(const size_t n,
476 cl_mem dot_buffer, const size_t dot_offset,
477 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
478 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
479 cl_command_queue* queue, cl_event* event) {
480 try {
481 return static_cast<CLBlastStatusCode>(
482 clblast::Dot<half>(n,
483 dot_buffer, dot_offset,
484 x_buffer, x_offset, x_inc,
485 y_buffer, y_offset, y_inc,
486 queue, event)
487 );
488 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
489 }
490
491 // DOTU
CLBlastCdotu(const size_t n,cl_mem dot_buffer,const size_t dot_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)492 CLBlastStatusCode CLBlastCdotu(const size_t n,
493 cl_mem dot_buffer, const size_t dot_offset,
494 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
495 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
496 cl_command_queue* queue, cl_event* event) {
497 try {
498 return static_cast<CLBlastStatusCode>(
499 clblast::Dotu<float2>(n,
500 dot_buffer, dot_offset,
501 x_buffer, x_offset, x_inc,
502 y_buffer, y_offset, y_inc,
503 queue, event)
504 );
505 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
506 }
CLBlastZdotu(const size_t n,cl_mem dot_buffer,const size_t dot_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)507 CLBlastStatusCode CLBlastZdotu(const size_t n,
508 cl_mem dot_buffer, const size_t dot_offset,
509 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
510 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
511 cl_command_queue* queue, cl_event* event) {
512 try {
513 return static_cast<CLBlastStatusCode>(
514 clblast::Dotu<double2>(n,
515 dot_buffer, dot_offset,
516 x_buffer, x_offset, x_inc,
517 y_buffer, y_offset, y_inc,
518 queue, event)
519 );
520 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
521 }
522
523 // DOTC
CLBlastCdotc(const size_t n,cl_mem dot_buffer,const size_t dot_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)524 CLBlastStatusCode CLBlastCdotc(const size_t n,
525 cl_mem dot_buffer, const size_t dot_offset,
526 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
527 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
528 cl_command_queue* queue, cl_event* event) {
529 try {
530 return static_cast<CLBlastStatusCode>(
531 clblast::Dotc<float2>(n,
532 dot_buffer, dot_offset,
533 x_buffer, x_offset, x_inc,
534 y_buffer, y_offset, y_inc,
535 queue, event)
536 );
537 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
538 }
CLBlastZdotc(const size_t n,cl_mem dot_buffer,const size_t dot_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)539 CLBlastStatusCode CLBlastZdotc(const size_t n,
540 cl_mem dot_buffer, const size_t dot_offset,
541 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
542 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
543 cl_command_queue* queue, cl_event* event) {
544 try {
545 return static_cast<CLBlastStatusCode>(
546 clblast::Dotc<double2>(n,
547 dot_buffer, dot_offset,
548 x_buffer, x_offset, x_inc,
549 y_buffer, y_offset, y_inc,
550 queue, event)
551 );
552 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
553 }
554
555 // NRM2
CLBlastSnrm2(const size_t n,cl_mem nrm2_buffer,const size_t nrm2_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)556 CLBlastStatusCode CLBlastSnrm2(const size_t n,
557 cl_mem nrm2_buffer, const size_t nrm2_offset,
558 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
559 cl_command_queue* queue, cl_event* event) {
560 try {
561 return static_cast<CLBlastStatusCode>(
562 clblast::Nrm2<float>(n,
563 nrm2_buffer, nrm2_offset,
564 x_buffer, x_offset, x_inc,
565 queue, event)
566 );
567 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
568 }
CLBlastDnrm2(const size_t n,cl_mem nrm2_buffer,const size_t nrm2_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)569 CLBlastStatusCode CLBlastDnrm2(const size_t n,
570 cl_mem nrm2_buffer, const size_t nrm2_offset,
571 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
572 cl_command_queue* queue, cl_event* event) {
573 try {
574 return static_cast<CLBlastStatusCode>(
575 clblast::Nrm2<double>(n,
576 nrm2_buffer, nrm2_offset,
577 x_buffer, x_offset, x_inc,
578 queue, event)
579 );
580 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
581 }
CLBlastScnrm2(const size_t n,cl_mem nrm2_buffer,const size_t nrm2_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)582 CLBlastStatusCode CLBlastScnrm2(const size_t n,
583 cl_mem nrm2_buffer, const size_t nrm2_offset,
584 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
585 cl_command_queue* queue, cl_event* event) {
586 try {
587 return static_cast<CLBlastStatusCode>(
588 clblast::Nrm2<float2>(n,
589 nrm2_buffer, nrm2_offset,
590 x_buffer, x_offset, x_inc,
591 queue, event)
592 );
593 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
594 }
CLBlastDznrm2(const size_t n,cl_mem nrm2_buffer,const size_t nrm2_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)595 CLBlastStatusCode CLBlastDznrm2(const size_t n,
596 cl_mem nrm2_buffer, const size_t nrm2_offset,
597 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
598 cl_command_queue* queue, cl_event* event) {
599 try {
600 return static_cast<CLBlastStatusCode>(
601 clblast::Nrm2<double2>(n,
602 nrm2_buffer, nrm2_offset,
603 x_buffer, x_offset, x_inc,
604 queue, event)
605 );
606 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
607 }
CLBlastHnrm2(const size_t n,cl_mem nrm2_buffer,const size_t nrm2_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)608 CLBlastStatusCode CLBlastHnrm2(const size_t n,
609 cl_mem nrm2_buffer, const size_t nrm2_offset,
610 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
611 cl_command_queue* queue, cl_event* event) {
612 try {
613 return static_cast<CLBlastStatusCode>(
614 clblast::Nrm2<half>(n,
615 nrm2_buffer, nrm2_offset,
616 x_buffer, x_offset, x_inc,
617 queue, event)
618 );
619 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
620 }
621
622 // ASUM
CLBlastSasum(const size_t n,cl_mem asum_buffer,const size_t asum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)623 CLBlastStatusCode CLBlastSasum(const size_t n,
624 cl_mem asum_buffer, const size_t asum_offset,
625 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
626 cl_command_queue* queue, cl_event* event) {
627 try {
628 return static_cast<CLBlastStatusCode>(
629 clblast::Asum<float>(n,
630 asum_buffer, asum_offset,
631 x_buffer, x_offset, x_inc,
632 queue, event)
633 );
634 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
635 }
CLBlastDasum(const size_t n,cl_mem asum_buffer,const size_t asum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)636 CLBlastStatusCode CLBlastDasum(const size_t n,
637 cl_mem asum_buffer, const size_t asum_offset,
638 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
639 cl_command_queue* queue, cl_event* event) {
640 try {
641 return static_cast<CLBlastStatusCode>(
642 clblast::Asum<double>(n,
643 asum_buffer, asum_offset,
644 x_buffer, x_offset, x_inc,
645 queue, event)
646 );
647 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
648 }
CLBlastScasum(const size_t n,cl_mem asum_buffer,const size_t asum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)649 CLBlastStatusCode CLBlastScasum(const size_t n,
650 cl_mem asum_buffer, const size_t asum_offset,
651 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
652 cl_command_queue* queue, cl_event* event) {
653 try {
654 return static_cast<CLBlastStatusCode>(
655 clblast::Asum<float2>(n,
656 asum_buffer, asum_offset,
657 x_buffer, x_offset, x_inc,
658 queue, event)
659 );
660 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
661 }
CLBlastDzasum(const size_t n,cl_mem asum_buffer,const size_t asum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)662 CLBlastStatusCode CLBlastDzasum(const size_t n,
663 cl_mem asum_buffer, const size_t asum_offset,
664 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
665 cl_command_queue* queue, cl_event* event) {
666 try {
667 return static_cast<CLBlastStatusCode>(
668 clblast::Asum<double2>(n,
669 asum_buffer, asum_offset,
670 x_buffer, x_offset, x_inc,
671 queue, event)
672 );
673 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
674 }
CLBlastHasum(const size_t n,cl_mem asum_buffer,const size_t asum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)675 CLBlastStatusCode CLBlastHasum(const size_t n,
676 cl_mem asum_buffer, const size_t asum_offset,
677 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
678 cl_command_queue* queue, cl_event* event) {
679 try {
680 return static_cast<CLBlastStatusCode>(
681 clblast::Asum<half>(n,
682 asum_buffer, asum_offset,
683 x_buffer, x_offset, x_inc,
684 queue, event)
685 );
686 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
687 }
688
689 // SUM
CLBlastSsum(const size_t n,cl_mem sum_buffer,const size_t sum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)690 CLBlastStatusCode CLBlastSsum(const size_t n,
691 cl_mem sum_buffer, const size_t sum_offset,
692 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
693 cl_command_queue* queue, cl_event* event) {
694 try {
695 return static_cast<CLBlastStatusCode>(
696 clblast::Sum<float>(n,
697 sum_buffer, sum_offset,
698 x_buffer, x_offset, x_inc,
699 queue, event)
700 );
701 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
702 }
CLBlastDsum(const size_t n,cl_mem sum_buffer,const size_t sum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)703 CLBlastStatusCode CLBlastDsum(const size_t n,
704 cl_mem sum_buffer, const size_t sum_offset,
705 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
706 cl_command_queue* queue, cl_event* event) {
707 try {
708 return static_cast<CLBlastStatusCode>(
709 clblast::Sum<double>(n,
710 sum_buffer, sum_offset,
711 x_buffer, x_offset, x_inc,
712 queue, event)
713 );
714 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
715 }
CLBlastScsum(const size_t n,cl_mem sum_buffer,const size_t sum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)716 CLBlastStatusCode CLBlastScsum(const size_t n,
717 cl_mem sum_buffer, const size_t sum_offset,
718 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
719 cl_command_queue* queue, cl_event* event) {
720 try {
721 return static_cast<CLBlastStatusCode>(
722 clblast::Sum<float2>(n,
723 sum_buffer, sum_offset,
724 x_buffer, x_offset, x_inc,
725 queue, event)
726 );
727 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
728 }
CLBlastDzsum(const size_t n,cl_mem sum_buffer,const size_t sum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)729 CLBlastStatusCode CLBlastDzsum(const size_t n,
730 cl_mem sum_buffer, const size_t sum_offset,
731 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
732 cl_command_queue* queue, cl_event* event) {
733 try {
734 return static_cast<CLBlastStatusCode>(
735 clblast::Sum<double2>(n,
736 sum_buffer, sum_offset,
737 x_buffer, x_offset, x_inc,
738 queue, event)
739 );
740 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
741 }
CLBlastHsum(const size_t n,cl_mem sum_buffer,const size_t sum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)742 CLBlastStatusCode CLBlastHsum(const size_t n,
743 cl_mem sum_buffer, const size_t sum_offset,
744 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
745 cl_command_queue* queue, cl_event* event) {
746 try {
747 return static_cast<CLBlastStatusCode>(
748 clblast::Sum<half>(n,
749 sum_buffer, sum_offset,
750 x_buffer, x_offset, x_inc,
751 queue, event)
752 );
753 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
754 }
755
756 // AMAX
CLBlastiSamax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)757 CLBlastStatusCode CLBlastiSamax(const size_t n,
758 cl_mem imax_buffer, const size_t imax_offset,
759 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
760 cl_command_queue* queue, cl_event* event) {
761 try {
762 return static_cast<CLBlastStatusCode>(
763 clblast::Amax<float>(n,
764 imax_buffer, imax_offset,
765 x_buffer, x_offset, x_inc,
766 queue, event)
767 );
768 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
769 }
CLBlastiDamax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)770 CLBlastStatusCode CLBlastiDamax(const size_t n,
771 cl_mem imax_buffer, const size_t imax_offset,
772 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
773 cl_command_queue* queue, cl_event* event) {
774 try {
775 return static_cast<CLBlastStatusCode>(
776 clblast::Amax<double>(n,
777 imax_buffer, imax_offset,
778 x_buffer, x_offset, x_inc,
779 queue, event)
780 );
781 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
782 }
CLBlastiCamax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)783 CLBlastStatusCode CLBlastiCamax(const size_t n,
784 cl_mem imax_buffer, const size_t imax_offset,
785 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
786 cl_command_queue* queue, cl_event* event) {
787 try {
788 return static_cast<CLBlastStatusCode>(
789 clblast::Amax<float2>(n,
790 imax_buffer, imax_offset,
791 x_buffer, x_offset, x_inc,
792 queue, event)
793 );
794 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
795 }
CLBlastiZamax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)796 CLBlastStatusCode CLBlastiZamax(const size_t n,
797 cl_mem imax_buffer, const size_t imax_offset,
798 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
799 cl_command_queue* queue, cl_event* event) {
800 try {
801 return static_cast<CLBlastStatusCode>(
802 clblast::Amax<double2>(n,
803 imax_buffer, imax_offset,
804 x_buffer, x_offset, x_inc,
805 queue, event)
806 );
807 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
808 }
CLBlastiHamax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)809 CLBlastStatusCode CLBlastiHamax(const size_t n,
810 cl_mem imax_buffer, const size_t imax_offset,
811 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
812 cl_command_queue* queue, cl_event* event) {
813 try {
814 return static_cast<CLBlastStatusCode>(
815 clblast::Amax<half>(n,
816 imax_buffer, imax_offset,
817 x_buffer, x_offset, x_inc,
818 queue, event)
819 );
820 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
821 }
822
823 // AMIN
CLBlastiSamin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)824 CLBlastStatusCode CLBlastiSamin(const size_t n,
825 cl_mem imin_buffer, const size_t imin_offset,
826 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
827 cl_command_queue* queue, cl_event* event) {
828 try {
829 return static_cast<CLBlastStatusCode>(
830 clblast::Amin<float>(n,
831 imin_buffer, imin_offset,
832 x_buffer, x_offset, x_inc,
833 queue, event)
834 );
835 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
836 }
CLBlastiDamin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)837 CLBlastStatusCode CLBlastiDamin(const size_t n,
838 cl_mem imin_buffer, const size_t imin_offset,
839 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
840 cl_command_queue* queue, cl_event* event) {
841 try {
842 return static_cast<CLBlastStatusCode>(
843 clblast::Amin<double>(n,
844 imin_buffer, imin_offset,
845 x_buffer, x_offset, x_inc,
846 queue, event)
847 );
848 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
849 }
CLBlastiCamin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)850 CLBlastStatusCode CLBlastiCamin(const size_t n,
851 cl_mem imin_buffer, const size_t imin_offset,
852 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
853 cl_command_queue* queue, cl_event* event) {
854 try {
855 return static_cast<CLBlastStatusCode>(
856 clblast::Amin<float2>(n,
857 imin_buffer, imin_offset,
858 x_buffer, x_offset, x_inc,
859 queue, event)
860 );
861 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
862 }
CLBlastiZamin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)863 CLBlastStatusCode CLBlastiZamin(const size_t n,
864 cl_mem imin_buffer, const size_t imin_offset,
865 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
866 cl_command_queue* queue, cl_event* event) {
867 try {
868 return static_cast<CLBlastStatusCode>(
869 clblast::Amin<double2>(n,
870 imin_buffer, imin_offset,
871 x_buffer, x_offset, x_inc,
872 queue, event)
873 );
874 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
875 }
CLBlastiHamin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)876 CLBlastStatusCode CLBlastiHamin(const size_t n,
877 cl_mem imin_buffer, const size_t imin_offset,
878 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
879 cl_command_queue* queue, cl_event* event) {
880 try {
881 return static_cast<CLBlastStatusCode>(
882 clblast::Amin<half>(n,
883 imin_buffer, imin_offset,
884 x_buffer, x_offset, x_inc,
885 queue, event)
886 );
887 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
888 }
889
890 // MAX
CLBlastiSmax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)891 CLBlastStatusCode CLBlastiSmax(const size_t n,
892 cl_mem imax_buffer, const size_t imax_offset,
893 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
894 cl_command_queue* queue, cl_event* event) {
895 try {
896 return static_cast<CLBlastStatusCode>(
897 clblast::Max<float>(n,
898 imax_buffer, imax_offset,
899 x_buffer, x_offset, x_inc,
900 queue, event)
901 );
902 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
903 }
CLBlastiDmax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)904 CLBlastStatusCode CLBlastiDmax(const size_t n,
905 cl_mem imax_buffer, const size_t imax_offset,
906 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
907 cl_command_queue* queue, cl_event* event) {
908 try {
909 return static_cast<CLBlastStatusCode>(
910 clblast::Max<double>(n,
911 imax_buffer, imax_offset,
912 x_buffer, x_offset, x_inc,
913 queue, event)
914 );
915 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
916 }
CLBlastiCmax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)917 CLBlastStatusCode CLBlastiCmax(const size_t n,
918 cl_mem imax_buffer, const size_t imax_offset,
919 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
920 cl_command_queue* queue, cl_event* event) {
921 try {
922 return static_cast<CLBlastStatusCode>(
923 clblast::Max<float2>(n,
924 imax_buffer, imax_offset,
925 x_buffer, x_offset, x_inc,
926 queue, event)
927 );
928 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
929 }
CLBlastiZmax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)930 CLBlastStatusCode CLBlastiZmax(const size_t n,
931 cl_mem imax_buffer, const size_t imax_offset,
932 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
933 cl_command_queue* queue, cl_event* event) {
934 try {
935 return static_cast<CLBlastStatusCode>(
936 clblast::Max<double2>(n,
937 imax_buffer, imax_offset,
938 x_buffer, x_offset, x_inc,
939 queue, event)
940 );
941 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
942 }
CLBlastiHmax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)943 CLBlastStatusCode CLBlastiHmax(const size_t n,
944 cl_mem imax_buffer, const size_t imax_offset,
945 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
946 cl_command_queue* queue, cl_event* event) {
947 try {
948 return static_cast<CLBlastStatusCode>(
949 clblast::Max<half>(n,
950 imax_buffer, imax_offset,
951 x_buffer, x_offset, x_inc,
952 queue, event)
953 );
954 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
955 }
956
957 // MIN
CLBlastiSmin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)958 CLBlastStatusCode CLBlastiSmin(const size_t n,
959 cl_mem imin_buffer, const size_t imin_offset,
960 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
961 cl_command_queue* queue, cl_event* event) {
962 try {
963 return static_cast<CLBlastStatusCode>(
964 clblast::Min<float>(n,
965 imin_buffer, imin_offset,
966 x_buffer, x_offset, x_inc,
967 queue, event)
968 );
969 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
970 }
CLBlastiDmin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)971 CLBlastStatusCode CLBlastiDmin(const size_t n,
972 cl_mem imin_buffer, const size_t imin_offset,
973 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
974 cl_command_queue* queue, cl_event* event) {
975 try {
976 return static_cast<CLBlastStatusCode>(
977 clblast::Min<double>(n,
978 imin_buffer, imin_offset,
979 x_buffer, x_offset, x_inc,
980 queue, event)
981 );
982 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
983 }
CLBlastiCmin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)984 CLBlastStatusCode CLBlastiCmin(const size_t n,
985 cl_mem imin_buffer, const size_t imin_offset,
986 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
987 cl_command_queue* queue, cl_event* event) {
988 try {
989 return static_cast<CLBlastStatusCode>(
990 clblast::Min<float2>(n,
991 imin_buffer, imin_offset,
992 x_buffer, x_offset, x_inc,
993 queue, event)
994 );
995 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
996 }
CLBlastiZmin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)997 CLBlastStatusCode CLBlastiZmin(const size_t n,
998 cl_mem imin_buffer, const size_t imin_offset,
999 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1000 cl_command_queue* queue, cl_event* event) {
1001 try {
1002 return static_cast<CLBlastStatusCode>(
1003 clblast::Min<double2>(n,
1004 imin_buffer, imin_offset,
1005 x_buffer, x_offset, x_inc,
1006 queue, event)
1007 );
1008 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1009 }
CLBlastiHmin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1010 CLBlastStatusCode CLBlastiHmin(const size_t n,
1011 cl_mem imin_buffer, const size_t imin_offset,
1012 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1013 cl_command_queue* queue, cl_event* event) {
1014 try {
1015 return static_cast<CLBlastStatusCode>(
1016 clblast::Min<half>(n,
1017 imin_buffer, imin_offset,
1018 x_buffer, x_offset, x_inc,
1019 queue, event)
1020 );
1021 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1022 }
1023
1024 // =================================================================================================
1025 // BLAS level-2 (matrix-vector) routines
1026 // =================================================================================================
1027
1028 // GEMV
CLBlastSgemv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const float beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1029 CLBlastStatusCode CLBlastSgemv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1030 const size_t m, const size_t n,
1031 const float alpha,
1032 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1033 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1034 const float beta,
1035 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1036 cl_command_queue* queue, cl_event* event) {
1037 try {
1038 return static_cast<CLBlastStatusCode>(
1039 clblast::Gemv(static_cast<clblast::Layout>(layout),
1040 static_cast<clblast::Transpose>(a_transpose),
1041 m, n,
1042 alpha,
1043 a_buffer, a_offset, a_ld,
1044 x_buffer, x_offset, x_inc,
1045 beta,
1046 y_buffer, y_offset, y_inc,
1047 queue, event)
1048 );
1049 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1050 }
CLBlastDgemv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const double beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1051 CLBlastStatusCode CLBlastDgemv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1052 const size_t m, const size_t n,
1053 const double alpha,
1054 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1055 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1056 const double beta,
1057 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1058 cl_command_queue* queue, cl_event* event) {
1059 try {
1060 return static_cast<CLBlastStatusCode>(
1061 clblast::Gemv(static_cast<clblast::Layout>(layout),
1062 static_cast<clblast::Transpose>(a_transpose),
1063 m, n,
1064 alpha,
1065 a_buffer, a_offset, a_ld,
1066 x_buffer, x_offset, x_inc,
1067 beta,
1068 y_buffer, y_offset, y_inc,
1069 queue, event)
1070 );
1071 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1072 }
CLBlastCgemv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_float2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1073 CLBlastStatusCode CLBlastCgemv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1074 const size_t m, const size_t n,
1075 const cl_float2 alpha,
1076 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1077 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1078 const cl_float2 beta,
1079 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1080 cl_command_queue* queue, cl_event* event) {
1081 try {
1082 return static_cast<CLBlastStatusCode>(
1083 clblast::Gemv(static_cast<clblast::Layout>(layout),
1084 static_cast<clblast::Transpose>(a_transpose),
1085 m, n,
1086 float2{alpha.s[0], alpha.s[1]},
1087 a_buffer, a_offset, a_ld,
1088 x_buffer, x_offset, x_inc,
1089 float2{beta.s[0], beta.s[1]},
1090 y_buffer, y_offset, y_inc,
1091 queue, event)
1092 );
1093 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1094 }
CLBlastZgemv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_double2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1095 CLBlastStatusCode CLBlastZgemv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1096 const size_t m, const size_t n,
1097 const cl_double2 alpha,
1098 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1099 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1100 const cl_double2 beta,
1101 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1102 cl_command_queue* queue, cl_event* event) {
1103 try {
1104 return static_cast<CLBlastStatusCode>(
1105 clblast::Gemv(static_cast<clblast::Layout>(layout),
1106 static_cast<clblast::Transpose>(a_transpose),
1107 m, n,
1108 double2{alpha.s[0], alpha.s[1]},
1109 a_buffer, a_offset, a_ld,
1110 x_buffer, x_offset, x_inc,
1111 double2{beta.s[0], beta.s[1]},
1112 y_buffer, y_offset, y_inc,
1113 queue, event)
1114 );
1115 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1116 }
CLBlastHgemv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_half beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1117 CLBlastStatusCode CLBlastHgemv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1118 const size_t m, const size_t n,
1119 const cl_half alpha,
1120 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1121 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1122 const cl_half beta,
1123 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1124 cl_command_queue* queue, cl_event* event) {
1125 try {
1126 return static_cast<CLBlastStatusCode>(
1127 clblast::Gemv(static_cast<clblast::Layout>(layout),
1128 static_cast<clblast::Transpose>(a_transpose),
1129 m, n,
1130 alpha,
1131 a_buffer, a_offset, a_ld,
1132 x_buffer, x_offset, x_inc,
1133 beta,
1134 y_buffer, y_offset, y_inc,
1135 queue, event)
1136 );
1137 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1138 }
1139
1140 // GBMV
CLBlastSgbmv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const size_t kl,const size_t ku,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const float beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1141 CLBlastStatusCode CLBlastSgbmv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1142 const size_t m, const size_t n, const size_t kl, const size_t ku,
1143 const float alpha,
1144 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1145 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1146 const float beta,
1147 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1148 cl_command_queue* queue, cl_event* event) {
1149 try {
1150 return static_cast<CLBlastStatusCode>(
1151 clblast::Gbmv(static_cast<clblast::Layout>(layout),
1152 static_cast<clblast::Transpose>(a_transpose),
1153 m, n, kl, ku,
1154 alpha,
1155 a_buffer, a_offset, a_ld,
1156 x_buffer, x_offset, x_inc,
1157 beta,
1158 y_buffer, y_offset, y_inc,
1159 queue, event)
1160 );
1161 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1162 }
CLBlastDgbmv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const size_t kl,const size_t ku,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const double beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1163 CLBlastStatusCode CLBlastDgbmv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1164 const size_t m, const size_t n, const size_t kl, const size_t ku,
1165 const double alpha,
1166 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1167 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1168 const double beta,
1169 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1170 cl_command_queue* queue, cl_event* event) {
1171 try {
1172 return static_cast<CLBlastStatusCode>(
1173 clblast::Gbmv(static_cast<clblast::Layout>(layout),
1174 static_cast<clblast::Transpose>(a_transpose),
1175 m, n, kl, ku,
1176 alpha,
1177 a_buffer, a_offset, a_ld,
1178 x_buffer, x_offset, x_inc,
1179 beta,
1180 y_buffer, y_offset, y_inc,
1181 queue, event)
1182 );
1183 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1184 }
CLBlastCgbmv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const size_t kl,const size_t ku,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_float2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1185 CLBlastStatusCode CLBlastCgbmv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1186 const size_t m, const size_t n, const size_t kl, const size_t ku,
1187 const cl_float2 alpha,
1188 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1189 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1190 const cl_float2 beta,
1191 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1192 cl_command_queue* queue, cl_event* event) {
1193 try {
1194 return static_cast<CLBlastStatusCode>(
1195 clblast::Gbmv(static_cast<clblast::Layout>(layout),
1196 static_cast<clblast::Transpose>(a_transpose),
1197 m, n, kl, ku,
1198 float2{alpha.s[0], alpha.s[1]},
1199 a_buffer, a_offset, a_ld,
1200 x_buffer, x_offset, x_inc,
1201 float2{beta.s[0], beta.s[1]},
1202 y_buffer, y_offset, y_inc,
1203 queue, event)
1204 );
1205 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1206 }
CLBlastZgbmv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const size_t kl,const size_t ku,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_double2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1207 CLBlastStatusCode CLBlastZgbmv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1208 const size_t m, const size_t n, const size_t kl, const size_t ku,
1209 const cl_double2 alpha,
1210 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1211 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1212 const cl_double2 beta,
1213 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1214 cl_command_queue* queue, cl_event* event) {
1215 try {
1216 return static_cast<CLBlastStatusCode>(
1217 clblast::Gbmv(static_cast<clblast::Layout>(layout),
1218 static_cast<clblast::Transpose>(a_transpose),
1219 m, n, kl, ku,
1220 double2{alpha.s[0], alpha.s[1]},
1221 a_buffer, a_offset, a_ld,
1222 x_buffer, x_offset, x_inc,
1223 double2{beta.s[0], beta.s[1]},
1224 y_buffer, y_offset, y_inc,
1225 queue, event)
1226 );
1227 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1228 }
CLBlastHgbmv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const size_t kl,const size_t ku,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_half beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1229 CLBlastStatusCode CLBlastHgbmv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1230 const size_t m, const size_t n, const size_t kl, const size_t ku,
1231 const cl_half alpha,
1232 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1233 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1234 const cl_half beta,
1235 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1236 cl_command_queue* queue, cl_event* event) {
1237 try {
1238 return static_cast<CLBlastStatusCode>(
1239 clblast::Gbmv(static_cast<clblast::Layout>(layout),
1240 static_cast<clblast::Transpose>(a_transpose),
1241 m, n, kl, ku,
1242 alpha,
1243 a_buffer, a_offset, a_ld,
1244 x_buffer, x_offset, x_inc,
1245 beta,
1246 y_buffer, y_offset, y_inc,
1247 queue, event)
1248 );
1249 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1250 }
1251
1252 // HEMV
CLBlastChemv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_float2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1253 CLBlastStatusCode CLBlastChemv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1254 const size_t n,
1255 const cl_float2 alpha,
1256 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1257 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1258 const cl_float2 beta,
1259 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1260 cl_command_queue* queue, cl_event* event) {
1261 try {
1262 return static_cast<CLBlastStatusCode>(
1263 clblast::Hemv(static_cast<clblast::Layout>(layout),
1264 static_cast<clblast::Triangle>(triangle),
1265 n,
1266 float2{alpha.s[0], alpha.s[1]},
1267 a_buffer, a_offset, a_ld,
1268 x_buffer, x_offset, x_inc,
1269 float2{beta.s[0], beta.s[1]},
1270 y_buffer, y_offset, y_inc,
1271 queue, event)
1272 );
1273 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1274 }
CLBlastZhemv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_double2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1275 CLBlastStatusCode CLBlastZhemv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1276 const size_t n,
1277 const cl_double2 alpha,
1278 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1279 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1280 const cl_double2 beta,
1281 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1282 cl_command_queue* queue, cl_event* event) {
1283 try {
1284 return static_cast<CLBlastStatusCode>(
1285 clblast::Hemv(static_cast<clblast::Layout>(layout),
1286 static_cast<clblast::Triangle>(triangle),
1287 n,
1288 double2{alpha.s[0], alpha.s[1]},
1289 a_buffer, a_offset, a_ld,
1290 x_buffer, x_offset, x_inc,
1291 double2{beta.s[0], beta.s[1]},
1292 y_buffer, y_offset, y_inc,
1293 queue, event)
1294 );
1295 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1296 }
1297
1298 // HBMV
CLBlastChbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const size_t k,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_float2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1299 CLBlastStatusCode CLBlastChbmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1300 const size_t n, const size_t k,
1301 const cl_float2 alpha,
1302 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1303 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1304 const cl_float2 beta,
1305 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1306 cl_command_queue* queue, cl_event* event) {
1307 try {
1308 return static_cast<CLBlastStatusCode>(
1309 clblast::Hbmv(static_cast<clblast::Layout>(layout),
1310 static_cast<clblast::Triangle>(triangle),
1311 n, k,
1312 float2{alpha.s[0], alpha.s[1]},
1313 a_buffer, a_offset, a_ld,
1314 x_buffer, x_offset, x_inc,
1315 float2{beta.s[0], beta.s[1]},
1316 y_buffer, y_offset, y_inc,
1317 queue, event)
1318 );
1319 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1320 }
CLBlastZhbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const size_t k,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_double2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1321 CLBlastStatusCode CLBlastZhbmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1322 const size_t n, const size_t k,
1323 const cl_double2 alpha,
1324 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1325 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1326 const cl_double2 beta,
1327 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1328 cl_command_queue* queue, cl_event* event) {
1329 try {
1330 return static_cast<CLBlastStatusCode>(
1331 clblast::Hbmv(static_cast<clblast::Layout>(layout),
1332 static_cast<clblast::Triangle>(triangle),
1333 n, k,
1334 double2{alpha.s[0], alpha.s[1]},
1335 a_buffer, a_offset, a_ld,
1336 x_buffer, x_offset, x_inc,
1337 double2{beta.s[0], beta.s[1]},
1338 y_buffer, y_offset, y_inc,
1339 queue, event)
1340 );
1341 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1342 }
1343
1344 // HPMV
CLBlastChpmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_float2 alpha,const cl_mem ap_buffer,const size_t ap_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_float2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1345 CLBlastStatusCode CLBlastChpmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1346 const size_t n,
1347 const cl_float2 alpha,
1348 const cl_mem ap_buffer, const size_t ap_offset,
1349 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1350 const cl_float2 beta,
1351 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1352 cl_command_queue* queue, cl_event* event) {
1353 try {
1354 return static_cast<CLBlastStatusCode>(
1355 clblast::Hpmv(static_cast<clblast::Layout>(layout),
1356 static_cast<clblast::Triangle>(triangle),
1357 n,
1358 float2{alpha.s[0], alpha.s[1]},
1359 ap_buffer, ap_offset,
1360 x_buffer, x_offset, x_inc,
1361 float2{beta.s[0], beta.s[1]},
1362 y_buffer, y_offset, y_inc,
1363 queue, event)
1364 );
1365 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1366 }
CLBlastZhpmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_double2 alpha,const cl_mem ap_buffer,const size_t ap_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_double2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1367 CLBlastStatusCode CLBlastZhpmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1368 const size_t n,
1369 const cl_double2 alpha,
1370 const cl_mem ap_buffer, const size_t ap_offset,
1371 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1372 const cl_double2 beta,
1373 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1374 cl_command_queue* queue, cl_event* event) {
1375 try {
1376 return static_cast<CLBlastStatusCode>(
1377 clblast::Hpmv(static_cast<clblast::Layout>(layout),
1378 static_cast<clblast::Triangle>(triangle),
1379 n,
1380 double2{alpha.s[0], alpha.s[1]},
1381 ap_buffer, ap_offset,
1382 x_buffer, x_offset, x_inc,
1383 double2{beta.s[0], beta.s[1]},
1384 y_buffer, y_offset, y_inc,
1385 queue, event)
1386 );
1387 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1388 }
1389
1390 // SYMV
CLBlastSsymv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const float beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1391 CLBlastStatusCode CLBlastSsymv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1392 const size_t n,
1393 const float alpha,
1394 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1395 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1396 const float beta,
1397 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1398 cl_command_queue* queue, cl_event* event) {
1399 try {
1400 return static_cast<CLBlastStatusCode>(
1401 clblast::Symv(static_cast<clblast::Layout>(layout),
1402 static_cast<clblast::Triangle>(triangle),
1403 n,
1404 alpha,
1405 a_buffer, a_offset, a_ld,
1406 x_buffer, x_offset, x_inc,
1407 beta,
1408 y_buffer, y_offset, y_inc,
1409 queue, event)
1410 );
1411 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1412 }
CLBlastDsymv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const double beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1413 CLBlastStatusCode CLBlastDsymv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1414 const size_t n,
1415 const double alpha,
1416 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1417 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1418 const double beta,
1419 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1420 cl_command_queue* queue, cl_event* event) {
1421 try {
1422 return static_cast<CLBlastStatusCode>(
1423 clblast::Symv(static_cast<clblast::Layout>(layout),
1424 static_cast<clblast::Triangle>(triangle),
1425 n,
1426 alpha,
1427 a_buffer, a_offset, a_ld,
1428 x_buffer, x_offset, x_inc,
1429 beta,
1430 y_buffer, y_offset, y_inc,
1431 queue, event)
1432 );
1433 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1434 }
CLBlastHsymv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_half beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1435 CLBlastStatusCode CLBlastHsymv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1436 const size_t n,
1437 const cl_half alpha,
1438 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1439 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1440 const cl_half beta,
1441 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1442 cl_command_queue* queue, cl_event* event) {
1443 try {
1444 return static_cast<CLBlastStatusCode>(
1445 clblast::Symv(static_cast<clblast::Layout>(layout),
1446 static_cast<clblast::Triangle>(triangle),
1447 n,
1448 alpha,
1449 a_buffer, a_offset, a_ld,
1450 x_buffer, x_offset, x_inc,
1451 beta,
1452 y_buffer, y_offset, y_inc,
1453 queue, event)
1454 );
1455 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1456 }
1457
1458 // SBMV
CLBlastSsbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const size_t k,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const float beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1459 CLBlastStatusCode CLBlastSsbmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1460 const size_t n, const size_t k,
1461 const float alpha,
1462 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1463 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1464 const float beta,
1465 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1466 cl_command_queue* queue, cl_event* event) {
1467 try {
1468 return static_cast<CLBlastStatusCode>(
1469 clblast::Sbmv(static_cast<clblast::Layout>(layout),
1470 static_cast<clblast::Triangle>(triangle),
1471 n, k,
1472 alpha,
1473 a_buffer, a_offset, a_ld,
1474 x_buffer, x_offset, x_inc,
1475 beta,
1476 y_buffer, y_offset, y_inc,
1477 queue, event)
1478 );
1479 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1480 }
CLBlastDsbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const size_t k,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const double beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1481 CLBlastStatusCode CLBlastDsbmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1482 const size_t n, const size_t k,
1483 const double alpha,
1484 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1485 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1486 const double beta,
1487 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1488 cl_command_queue* queue, cl_event* event) {
1489 try {
1490 return static_cast<CLBlastStatusCode>(
1491 clblast::Sbmv(static_cast<clblast::Layout>(layout),
1492 static_cast<clblast::Triangle>(triangle),
1493 n, k,
1494 alpha,
1495 a_buffer, a_offset, a_ld,
1496 x_buffer, x_offset, x_inc,
1497 beta,
1498 y_buffer, y_offset, y_inc,
1499 queue, event)
1500 );
1501 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1502 }
CLBlastHsbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const size_t k,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_half beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1503 CLBlastStatusCode CLBlastHsbmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1504 const size_t n, const size_t k,
1505 const cl_half alpha,
1506 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1507 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1508 const cl_half beta,
1509 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1510 cl_command_queue* queue, cl_event* event) {
1511 try {
1512 return static_cast<CLBlastStatusCode>(
1513 clblast::Sbmv(static_cast<clblast::Layout>(layout),
1514 static_cast<clblast::Triangle>(triangle),
1515 n, k,
1516 alpha,
1517 a_buffer, a_offset, a_ld,
1518 x_buffer, x_offset, x_inc,
1519 beta,
1520 y_buffer, y_offset, y_inc,
1521 queue, event)
1522 );
1523 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1524 }
1525
1526 // SPMV
CLBlastSspmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem ap_buffer,const size_t ap_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const float beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1527 CLBlastStatusCode CLBlastSspmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1528 const size_t n,
1529 const float alpha,
1530 const cl_mem ap_buffer, const size_t ap_offset,
1531 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1532 const float beta,
1533 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1534 cl_command_queue* queue, cl_event* event) {
1535 try {
1536 return static_cast<CLBlastStatusCode>(
1537 clblast::Spmv(static_cast<clblast::Layout>(layout),
1538 static_cast<clblast::Triangle>(triangle),
1539 n,
1540 alpha,
1541 ap_buffer, ap_offset,
1542 x_buffer, x_offset, x_inc,
1543 beta,
1544 y_buffer, y_offset, y_inc,
1545 queue, event)
1546 );
1547 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1548 }
CLBlastDspmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem ap_buffer,const size_t ap_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const double beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1549 CLBlastStatusCode CLBlastDspmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1550 const size_t n,
1551 const double alpha,
1552 const cl_mem ap_buffer, const size_t ap_offset,
1553 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1554 const double beta,
1555 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1556 cl_command_queue* queue, cl_event* event) {
1557 try {
1558 return static_cast<CLBlastStatusCode>(
1559 clblast::Spmv(static_cast<clblast::Layout>(layout),
1560 static_cast<clblast::Triangle>(triangle),
1561 n,
1562 alpha,
1563 ap_buffer, ap_offset,
1564 x_buffer, x_offset, x_inc,
1565 beta,
1566 y_buffer, y_offset, y_inc,
1567 queue, event)
1568 );
1569 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1570 }
CLBlastHspmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_half alpha,const cl_mem ap_buffer,const size_t ap_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_half beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1571 CLBlastStatusCode CLBlastHspmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1572 const size_t n,
1573 const cl_half alpha,
1574 const cl_mem ap_buffer, const size_t ap_offset,
1575 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1576 const cl_half beta,
1577 cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1578 cl_command_queue* queue, cl_event* event) {
1579 try {
1580 return static_cast<CLBlastStatusCode>(
1581 clblast::Spmv(static_cast<clblast::Layout>(layout),
1582 static_cast<clblast::Triangle>(triangle),
1583 n,
1584 alpha,
1585 ap_buffer, ap_offset,
1586 x_buffer, x_offset, x_inc,
1587 beta,
1588 y_buffer, y_offset, y_inc,
1589 queue, event)
1590 );
1591 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1592 }
1593
1594 // TRMV
CLBlastStrmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1595 CLBlastStatusCode CLBlastStrmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1596 const size_t n,
1597 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1598 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1599 cl_command_queue* queue, cl_event* event) {
1600 try {
1601 return static_cast<CLBlastStatusCode>(
1602 clblast::Trmv<float>(static_cast<clblast::Layout>(layout),
1603 static_cast<clblast::Triangle>(triangle),
1604 static_cast<clblast::Transpose>(a_transpose),
1605 static_cast<clblast::Diagonal>(diagonal),
1606 n,
1607 a_buffer, a_offset, a_ld,
1608 x_buffer, x_offset, x_inc,
1609 queue, event)
1610 );
1611 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1612 }
CLBlastDtrmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1613 CLBlastStatusCode CLBlastDtrmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1614 const size_t n,
1615 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1616 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1617 cl_command_queue* queue, cl_event* event) {
1618 try {
1619 return static_cast<CLBlastStatusCode>(
1620 clblast::Trmv<double>(static_cast<clblast::Layout>(layout),
1621 static_cast<clblast::Triangle>(triangle),
1622 static_cast<clblast::Transpose>(a_transpose),
1623 static_cast<clblast::Diagonal>(diagonal),
1624 n,
1625 a_buffer, a_offset, a_ld,
1626 x_buffer, x_offset, x_inc,
1627 queue, event)
1628 );
1629 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1630 }
CLBlastCtrmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1631 CLBlastStatusCode CLBlastCtrmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1632 const size_t n,
1633 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1634 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1635 cl_command_queue* queue, cl_event* event) {
1636 try {
1637 return static_cast<CLBlastStatusCode>(
1638 clblast::Trmv<float2>(static_cast<clblast::Layout>(layout),
1639 static_cast<clblast::Triangle>(triangle),
1640 static_cast<clblast::Transpose>(a_transpose),
1641 static_cast<clblast::Diagonal>(diagonal),
1642 n,
1643 a_buffer, a_offset, a_ld,
1644 x_buffer, x_offset, x_inc,
1645 queue, event)
1646 );
1647 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1648 }
CLBlastZtrmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1649 CLBlastStatusCode CLBlastZtrmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1650 const size_t n,
1651 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1652 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1653 cl_command_queue* queue, cl_event* event) {
1654 try {
1655 return static_cast<CLBlastStatusCode>(
1656 clblast::Trmv<double2>(static_cast<clblast::Layout>(layout),
1657 static_cast<clblast::Triangle>(triangle),
1658 static_cast<clblast::Transpose>(a_transpose),
1659 static_cast<clblast::Diagonal>(diagonal),
1660 n,
1661 a_buffer, a_offset, a_ld,
1662 x_buffer, x_offset, x_inc,
1663 queue, event)
1664 );
1665 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1666 }
CLBlastHtrmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1667 CLBlastStatusCode CLBlastHtrmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1668 const size_t n,
1669 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1670 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1671 cl_command_queue* queue, cl_event* event) {
1672 try {
1673 return static_cast<CLBlastStatusCode>(
1674 clblast::Trmv<half>(static_cast<clblast::Layout>(layout),
1675 static_cast<clblast::Triangle>(triangle),
1676 static_cast<clblast::Transpose>(a_transpose),
1677 static_cast<clblast::Diagonal>(diagonal),
1678 n,
1679 a_buffer, a_offset, a_ld,
1680 x_buffer, x_offset, x_inc,
1681 queue, event)
1682 );
1683 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1684 }
1685
1686 // TBMV
CLBlastStbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1687 CLBlastStatusCode CLBlastStbmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1688 const size_t n, const size_t k,
1689 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1690 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1691 cl_command_queue* queue, cl_event* event) {
1692 try {
1693 return static_cast<CLBlastStatusCode>(
1694 clblast::Tbmv<float>(static_cast<clblast::Layout>(layout),
1695 static_cast<clblast::Triangle>(triangle),
1696 static_cast<clblast::Transpose>(a_transpose),
1697 static_cast<clblast::Diagonal>(diagonal),
1698 n, k,
1699 a_buffer, a_offset, a_ld,
1700 x_buffer, x_offset, x_inc,
1701 queue, event)
1702 );
1703 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1704 }
CLBlastDtbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1705 CLBlastStatusCode CLBlastDtbmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1706 const size_t n, const size_t k,
1707 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1708 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1709 cl_command_queue* queue, cl_event* event) {
1710 try {
1711 return static_cast<CLBlastStatusCode>(
1712 clblast::Tbmv<double>(static_cast<clblast::Layout>(layout),
1713 static_cast<clblast::Triangle>(triangle),
1714 static_cast<clblast::Transpose>(a_transpose),
1715 static_cast<clblast::Diagonal>(diagonal),
1716 n, k,
1717 a_buffer, a_offset, a_ld,
1718 x_buffer, x_offset, x_inc,
1719 queue, event)
1720 );
1721 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1722 }
CLBlastCtbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1723 CLBlastStatusCode CLBlastCtbmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1724 const size_t n, const size_t k,
1725 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1726 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1727 cl_command_queue* queue, cl_event* event) {
1728 try {
1729 return static_cast<CLBlastStatusCode>(
1730 clblast::Tbmv<float2>(static_cast<clblast::Layout>(layout),
1731 static_cast<clblast::Triangle>(triangle),
1732 static_cast<clblast::Transpose>(a_transpose),
1733 static_cast<clblast::Diagonal>(diagonal),
1734 n, k,
1735 a_buffer, a_offset, a_ld,
1736 x_buffer, x_offset, x_inc,
1737 queue, event)
1738 );
1739 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1740 }
CLBlastZtbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1741 CLBlastStatusCode CLBlastZtbmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1742 const size_t n, const size_t k,
1743 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1744 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1745 cl_command_queue* queue, cl_event* event) {
1746 try {
1747 return static_cast<CLBlastStatusCode>(
1748 clblast::Tbmv<double2>(static_cast<clblast::Layout>(layout),
1749 static_cast<clblast::Triangle>(triangle),
1750 static_cast<clblast::Transpose>(a_transpose),
1751 static_cast<clblast::Diagonal>(diagonal),
1752 n, k,
1753 a_buffer, a_offset, a_ld,
1754 x_buffer, x_offset, x_inc,
1755 queue, event)
1756 );
1757 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1758 }
CLBlastHtbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1759 CLBlastStatusCode CLBlastHtbmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1760 const size_t n, const size_t k,
1761 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1762 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1763 cl_command_queue* queue, cl_event* event) {
1764 try {
1765 return static_cast<CLBlastStatusCode>(
1766 clblast::Tbmv<half>(static_cast<clblast::Layout>(layout),
1767 static_cast<clblast::Triangle>(triangle),
1768 static_cast<clblast::Transpose>(a_transpose),
1769 static_cast<clblast::Diagonal>(diagonal),
1770 n, k,
1771 a_buffer, a_offset, a_ld,
1772 x_buffer, x_offset, x_inc,
1773 queue, event)
1774 );
1775 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1776 }
1777
1778 // TPMV
CLBlastStpmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1779 CLBlastStatusCode CLBlastStpmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1780 const size_t n,
1781 const cl_mem ap_buffer, const size_t ap_offset,
1782 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1783 cl_command_queue* queue, cl_event* event) {
1784 try {
1785 return static_cast<CLBlastStatusCode>(
1786 clblast::Tpmv<float>(static_cast<clblast::Layout>(layout),
1787 static_cast<clblast::Triangle>(triangle),
1788 static_cast<clblast::Transpose>(a_transpose),
1789 static_cast<clblast::Diagonal>(diagonal),
1790 n,
1791 ap_buffer, ap_offset,
1792 x_buffer, x_offset, x_inc,
1793 queue, event)
1794 );
1795 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1796 }
CLBlastDtpmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1797 CLBlastStatusCode CLBlastDtpmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1798 const size_t n,
1799 const cl_mem ap_buffer, const size_t ap_offset,
1800 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1801 cl_command_queue* queue, cl_event* event) {
1802 try {
1803 return static_cast<CLBlastStatusCode>(
1804 clblast::Tpmv<double>(static_cast<clblast::Layout>(layout),
1805 static_cast<clblast::Triangle>(triangle),
1806 static_cast<clblast::Transpose>(a_transpose),
1807 static_cast<clblast::Diagonal>(diagonal),
1808 n,
1809 ap_buffer, ap_offset,
1810 x_buffer, x_offset, x_inc,
1811 queue, event)
1812 );
1813 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1814 }
CLBlastCtpmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1815 CLBlastStatusCode CLBlastCtpmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1816 const size_t n,
1817 const cl_mem ap_buffer, const size_t ap_offset,
1818 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1819 cl_command_queue* queue, cl_event* event) {
1820 try {
1821 return static_cast<CLBlastStatusCode>(
1822 clblast::Tpmv<float2>(static_cast<clblast::Layout>(layout),
1823 static_cast<clblast::Triangle>(triangle),
1824 static_cast<clblast::Transpose>(a_transpose),
1825 static_cast<clblast::Diagonal>(diagonal),
1826 n,
1827 ap_buffer, ap_offset,
1828 x_buffer, x_offset, x_inc,
1829 queue, event)
1830 );
1831 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1832 }
CLBlastZtpmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1833 CLBlastStatusCode CLBlastZtpmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1834 const size_t n,
1835 const cl_mem ap_buffer, const size_t ap_offset,
1836 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1837 cl_command_queue* queue, cl_event* event) {
1838 try {
1839 return static_cast<CLBlastStatusCode>(
1840 clblast::Tpmv<double2>(static_cast<clblast::Layout>(layout),
1841 static_cast<clblast::Triangle>(triangle),
1842 static_cast<clblast::Transpose>(a_transpose),
1843 static_cast<clblast::Diagonal>(diagonal),
1844 n,
1845 ap_buffer, ap_offset,
1846 x_buffer, x_offset, x_inc,
1847 queue, event)
1848 );
1849 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1850 }
CLBlastHtpmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1851 CLBlastStatusCode CLBlastHtpmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1852 const size_t n,
1853 const cl_mem ap_buffer, const size_t ap_offset,
1854 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1855 cl_command_queue* queue, cl_event* event) {
1856 try {
1857 return static_cast<CLBlastStatusCode>(
1858 clblast::Tpmv<half>(static_cast<clblast::Layout>(layout),
1859 static_cast<clblast::Triangle>(triangle),
1860 static_cast<clblast::Transpose>(a_transpose),
1861 static_cast<clblast::Diagonal>(diagonal),
1862 n,
1863 ap_buffer, ap_offset,
1864 x_buffer, x_offset, x_inc,
1865 queue, event)
1866 );
1867 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1868 }
1869
1870 // TRSV
CLBlastStrsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1871 CLBlastStatusCode CLBlastStrsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1872 const size_t n,
1873 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1874 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1875 cl_command_queue* queue, cl_event* event) {
1876 try {
1877 return static_cast<CLBlastStatusCode>(
1878 clblast::Trsv<float>(static_cast<clblast::Layout>(layout),
1879 static_cast<clblast::Triangle>(triangle),
1880 static_cast<clblast::Transpose>(a_transpose),
1881 static_cast<clblast::Diagonal>(diagonal),
1882 n,
1883 a_buffer, a_offset, a_ld,
1884 x_buffer, x_offset, x_inc,
1885 queue, event)
1886 );
1887 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1888 }
CLBlastDtrsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1889 CLBlastStatusCode CLBlastDtrsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1890 const size_t n,
1891 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1892 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1893 cl_command_queue* queue, cl_event* event) {
1894 try {
1895 return static_cast<CLBlastStatusCode>(
1896 clblast::Trsv<double>(static_cast<clblast::Layout>(layout),
1897 static_cast<clblast::Triangle>(triangle),
1898 static_cast<clblast::Transpose>(a_transpose),
1899 static_cast<clblast::Diagonal>(diagonal),
1900 n,
1901 a_buffer, a_offset, a_ld,
1902 x_buffer, x_offset, x_inc,
1903 queue, event)
1904 );
1905 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1906 }
CLBlastCtrsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1907 CLBlastStatusCode CLBlastCtrsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1908 const size_t n,
1909 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1910 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1911 cl_command_queue* queue, cl_event* event) {
1912 try {
1913 return static_cast<CLBlastStatusCode>(
1914 clblast::Trsv<float2>(static_cast<clblast::Layout>(layout),
1915 static_cast<clblast::Triangle>(triangle),
1916 static_cast<clblast::Transpose>(a_transpose),
1917 static_cast<clblast::Diagonal>(diagonal),
1918 n,
1919 a_buffer, a_offset, a_ld,
1920 x_buffer, x_offset, x_inc,
1921 queue, event)
1922 );
1923 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1924 }
CLBlastZtrsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1925 CLBlastStatusCode CLBlastZtrsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1926 const size_t n,
1927 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1928 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1929 cl_command_queue* queue, cl_event* event) {
1930 try {
1931 return static_cast<CLBlastStatusCode>(
1932 clblast::Trsv<double2>(static_cast<clblast::Layout>(layout),
1933 static_cast<clblast::Triangle>(triangle),
1934 static_cast<clblast::Transpose>(a_transpose),
1935 static_cast<clblast::Diagonal>(diagonal),
1936 n,
1937 a_buffer, a_offset, a_ld,
1938 x_buffer, x_offset, x_inc,
1939 queue, event)
1940 );
1941 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1942 }
1943
1944 // TBSV
CLBlastStbsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1945 CLBlastStatusCode CLBlastStbsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1946 const size_t n, const size_t k,
1947 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1948 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1949 cl_command_queue* queue, cl_event* event) {
1950 try {
1951 return static_cast<CLBlastStatusCode>(
1952 clblast::Tbsv<float>(static_cast<clblast::Layout>(layout),
1953 static_cast<clblast::Triangle>(triangle),
1954 static_cast<clblast::Transpose>(a_transpose),
1955 static_cast<clblast::Diagonal>(diagonal),
1956 n, k,
1957 a_buffer, a_offset, a_ld,
1958 x_buffer, x_offset, x_inc,
1959 queue, event)
1960 );
1961 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1962 }
CLBlastDtbsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1963 CLBlastStatusCode CLBlastDtbsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1964 const size_t n, const size_t k,
1965 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1966 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1967 cl_command_queue* queue, cl_event* event) {
1968 try {
1969 return static_cast<CLBlastStatusCode>(
1970 clblast::Tbsv<double>(static_cast<clblast::Layout>(layout),
1971 static_cast<clblast::Triangle>(triangle),
1972 static_cast<clblast::Transpose>(a_transpose),
1973 static_cast<clblast::Diagonal>(diagonal),
1974 n, k,
1975 a_buffer, a_offset, a_ld,
1976 x_buffer, x_offset, x_inc,
1977 queue, event)
1978 );
1979 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1980 }
CLBlastCtbsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1981 CLBlastStatusCode CLBlastCtbsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1982 const size_t n, const size_t k,
1983 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1984 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1985 cl_command_queue* queue, cl_event* event) {
1986 try {
1987 return static_cast<CLBlastStatusCode>(
1988 clblast::Tbsv<float2>(static_cast<clblast::Layout>(layout),
1989 static_cast<clblast::Triangle>(triangle),
1990 static_cast<clblast::Transpose>(a_transpose),
1991 static_cast<clblast::Diagonal>(diagonal),
1992 n, k,
1993 a_buffer, a_offset, a_ld,
1994 x_buffer, x_offset, x_inc,
1995 queue, event)
1996 );
1997 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1998 }
CLBlastZtbsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1999 CLBlastStatusCode CLBlastZtbsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
2000 const size_t n, const size_t k,
2001 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2002 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2003 cl_command_queue* queue, cl_event* event) {
2004 try {
2005 return static_cast<CLBlastStatusCode>(
2006 clblast::Tbsv<double2>(static_cast<clblast::Layout>(layout),
2007 static_cast<clblast::Triangle>(triangle),
2008 static_cast<clblast::Transpose>(a_transpose),
2009 static_cast<clblast::Diagonal>(diagonal),
2010 n, k,
2011 a_buffer, a_offset, a_ld,
2012 x_buffer, x_offset, x_inc,
2013 queue, event)
2014 );
2015 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2016 }
2017
2018 // TPSV
CLBlastStpsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)2019 CLBlastStatusCode CLBlastStpsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
2020 const size_t n,
2021 const cl_mem ap_buffer, const size_t ap_offset,
2022 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2023 cl_command_queue* queue, cl_event* event) {
2024 try {
2025 return static_cast<CLBlastStatusCode>(
2026 clblast::Tpsv<float>(static_cast<clblast::Layout>(layout),
2027 static_cast<clblast::Triangle>(triangle),
2028 static_cast<clblast::Transpose>(a_transpose),
2029 static_cast<clblast::Diagonal>(diagonal),
2030 n,
2031 ap_buffer, ap_offset,
2032 x_buffer, x_offset, x_inc,
2033 queue, event)
2034 );
2035 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2036 }
CLBlastDtpsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)2037 CLBlastStatusCode CLBlastDtpsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
2038 const size_t n,
2039 const cl_mem ap_buffer, const size_t ap_offset,
2040 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2041 cl_command_queue* queue, cl_event* event) {
2042 try {
2043 return static_cast<CLBlastStatusCode>(
2044 clblast::Tpsv<double>(static_cast<clblast::Layout>(layout),
2045 static_cast<clblast::Triangle>(triangle),
2046 static_cast<clblast::Transpose>(a_transpose),
2047 static_cast<clblast::Diagonal>(diagonal),
2048 n,
2049 ap_buffer, ap_offset,
2050 x_buffer, x_offset, x_inc,
2051 queue, event)
2052 );
2053 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2054 }
CLBlastCtpsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)2055 CLBlastStatusCode CLBlastCtpsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
2056 const size_t n,
2057 const cl_mem ap_buffer, const size_t ap_offset,
2058 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2059 cl_command_queue* queue, cl_event* event) {
2060 try {
2061 return static_cast<CLBlastStatusCode>(
2062 clblast::Tpsv<float2>(static_cast<clblast::Layout>(layout),
2063 static_cast<clblast::Triangle>(triangle),
2064 static_cast<clblast::Transpose>(a_transpose),
2065 static_cast<clblast::Diagonal>(diagonal),
2066 n,
2067 ap_buffer, ap_offset,
2068 x_buffer, x_offset, x_inc,
2069 queue, event)
2070 );
2071 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2072 }
CLBlastZtpsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)2073 CLBlastStatusCode CLBlastZtpsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
2074 const size_t n,
2075 const cl_mem ap_buffer, const size_t ap_offset,
2076 cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2077 cl_command_queue* queue, cl_event* event) {
2078 try {
2079 return static_cast<CLBlastStatusCode>(
2080 clblast::Tpsv<double2>(static_cast<clblast::Layout>(layout),
2081 static_cast<clblast::Triangle>(triangle),
2082 static_cast<clblast::Transpose>(a_transpose),
2083 static_cast<clblast::Diagonal>(diagonal),
2084 n,
2085 ap_buffer, ap_offset,
2086 x_buffer, x_offset, x_inc,
2087 queue, event)
2088 );
2089 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2090 }
2091
2092 // GER
CLBlastSger(const CLBlastLayout layout,const size_t m,const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2093 CLBlastStatusCode CLBlastSger(const CLBlastLayout layout,
2094 const size_t m, const size_t n,
2095 const float alpha,
2096 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2097 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2098 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2099 cl_command_queue* queue, cl_event* event) {
2100 try {
2101 return static_cast<CLBlastStatusCode>(
2102 clblast::Ger(static_cast<clblast::Layout>(layout),
2103 m, n,
2104 alpha,
2105 x_buffer, x_offset, x_inc,
2106 y_buffer, y_offset, y_inc,
2107 a_buffer, a_offset, a_ld,
2108 queue, event)
2109 );
2110 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2111 }
CLBlastDger(const CLBlastLayout layout,const size_t m,const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2112 CLBlastStatusCode CLBlastDger(const CLBlastLayout layout,
2113 const size_t m, const size_t n,
2114 const double alpha,
2115 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2116 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2117 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2118 cl_command_queue* queue, cl_event* event) {
2119 try {
2120 return static_cast<CLBlastStatusCode>(
2121 clblast::Ger(static_cast<clblast::Layout>(layout),
2122 m, n,
2123 alpha,
2124 x_buffer, x_offset, x_inc,
2125 y_buffer, y_offset, y_inc,
2126 a_buffer, a_offset, a_ld,
2127 queue, event)
2128 );
2129 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2130 }
CLBlastHger(const CLBlastLayout layout,const size_t m,const size_t n,const cl_half alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2131 CLBlastStatusCode CLBlastHger(const CLBlastLayout layout,
2132 const size_t m, const size_t n,
2133 const cl_half alpha,
2134 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2135 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2136 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2137 cl_command_queue* queue, cl_event* event) {
2138 try {
2139 return static_cast<CLBlastStatusCode>(
2140 clblast::Ger(static_cast<clblast::Layout>(layout),
2141 m, n,
2142 alpha,
2143 x_buffer, x_offset, x_inc,
2144 y_buffer, y_offset, y_inc,
2145 a_buffer, a_offset, a_ld,
2146 queue, event)
2147 );
2148 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2149 }
2150
2151 // GERU
CLBlastCgeru(const CLBlastLayout layout,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2152 CLBlastStatusCode CLBlastCgeru(const CLBlastLayout layout,
2153 const size_t m, const size_t n,
2154 const cl_float2 alpha,
2155 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2156 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2157 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2158 cl_command_queue* queue, cl_event* event) {
2159 try {
2160 return static_cast<CLBlastStatusCode>(
2161 clblast::Geru(static_cast<clblast::Layout>(layout),
2162 m, n,
2163 float2{alpha.s[0], alpha.s[1]},
2164 x_buffer, x_offset, x_inc,
2165 y_buffer, y_offset, y_inc,
2166 a_buffer, a_offset, a_ld,
2167 queue, event)
2168 );
2169 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2170 }
CLBlastZgeru(const CLBlastLayout layout,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2171 CLBlastStatusCode CLBlastZgeru(const CLBlastLayout layout,
2172 const size_t m, const size_t n,
2173 const cl_double2 alpha,
2174 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2175 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2176 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2177 cl_command_queue* queue, cl_event* event) {
2178 try {
2179 return static_cast<CLBlastStatusCode>(
2180 clblast::Geru(static_cast<clblast::Layout>(layout),
2181 m, n,
2182 double2{alpha.s[0], alpha.s[1]},
2183 x_buffer, x_offset, x_inc,
2184 y_buffer, y_offset, y_inc,
2185 a_buffer, a_offset, a_ld,
2186 queue, event)
2187 );
2188 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2189 }
2190
2191 // GERC
CLBlastCgerc(const CLBlastLayout layout,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2192 CLBlastStatusCode CLBlastCgerc(const CLBlastLayout layout,
2193 const size_t m, const size_t n,
2194 const cl_float2 alpha,
2195 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2196 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2197 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2198 cl_command_queue* queue, cl_event* event) {
2199 try {
2200 return static_cast<CLBlastStatusCode>(
2201 clblast::Gerc(static_cast<clblast::Layout>(layout),
2202 m, n,
2203 float2{alpha.s[0], alpha.s[1]},
2204 x_buffer, x_offset, x_inc,
2205 y_buffer, y_offset, y_inc,
2206 a_buffer, a_offset, a_ld,
2207 queue, event)
2208 );
2209 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2210 }
CLBlastZgerc(const CLBlastLayout layout,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2211 CLBlastStatusCode CLBlastZgerc(const CLBlastLayout layout,
2212 const size_t m, const size_t n,
2213 const cl_double2 alpha,
2214 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2215 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2216 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2217 cl_command_queue* queue, cl_event* event) {
2218 try {
2219 return static_cast<CLBlastStatusCode>(
2220 clblast::Gerc(static_cast<clblast::Layout>(layout),
2221 m, n,
2222 double2{alpha.s[0], alpha.s[1]},
2223 x_buffer, x_offset, x_inc,
2224 y_buffer, y_offset, y_inc,
2225 a_buffer, a_offset, a_ld,
2226 queue, event)
2227 );
2228 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2229 }
2230
2231 // HER
CLBlastCher(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2232 CLBlastStatusCode CLBlastCher(const CLBlastLayout layout, const CLBlastTriangle triangle,
2233 const size_t n,
2234 const float alpha,
2235 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2236 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2237 cl_command_queue* queue, cl_event* event) {
2238 try {
2239 return static_cast<CLBlastStatusCode>(
2240 clblast::Her(static_cast<clblast::Layout>(layout),
2241 static_cast<clblast::Triangle>(triangle),
2242 n,
2243 alpha,
2244 x_buffer, x_offset, x_inc,
2245 a_buffer, a_offset, a_ld,
2246 queue, event)
2247 );
2248 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2249 }
CLBlastZher(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2250 CLBlastStatusCode CLBlastZher(const CLBlastLayout layout, const CLBlastTriangle triangle,
2251 const size_t n,
2252 const double alpha,
2253 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2254 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2255 cl_command_queue* queue, cl_event* event) {
2256 try {
2257 return static_cast<CLBlastStatusCode>(
2258 clblast::Her(static_cast<clblast::Layout>(layout),
2259 static_cast<clblast::Triangle>(triangle),
2260 n,
2261 alpha,
2262 x_buffer, x_offset, x_inc,
2263 a_buffer, a_offset, a_ld,
2264 queue, event)
2265 );
2266 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2267 }
2268
2269 // HPR
CLBlastChpr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2270 CLBlastStatusCode CLBlastChpr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2271 const size_t n,
2272 const float alpha,
2273 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2274 cl_mem ap_buffer, const size_t ap_offset,
2275 cl_command_queue* queue, cl_event* event) {
2276 try {
2277 return static_cast<CLBlastStatusCode>(
2278 clblast::Hpr(static_cast<clblast::Layout>(layout),
2279 static_cast<clblast::Triangle>(triangle),
2280 n,
2281 alpha,
2282 x_buffer, x_offset, x_inc,
2283 ap_buffer, ap_offset,
2284 queue, event)
2285 );
2286 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2287 }
CLBlastZhpr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2288 CLBlastStatusCode CLBlastZhpr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2289 const size_t n,
2290 const double alpha,
2291 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2292 cl_mem ap_buffer, const size_t ap_offset,
2293 cl_command_queue* queue, cl_event* event) {
2294 try {
2295 return static_cast<CLBlastStatusCode>(
2296 clblast::Hpr(static_cast<clblast::Layout>(layout),
2297 static_cast<clblast::Triangle>(triangle),
2298 n,
2299 alpha,
2300 x_buffer, x_offset, x_inc,
2301 ap_buffer, ap_offset,
2302 queue, event)
2303 );
2304 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2305 }
2306
2307 // HER2
CLBlastCher2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_float2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2308 CLBlastStatusCode CLBlastCher2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2309 const size_t n,
2310 const cl_float2 alpha,
2311 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2312 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2313 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2314 cl_command_queue* queue, cl_event* event) {
2315 try {
2316 return static_cast<CLBlastStatusCode>(
2317 clblast::Her2(static_cast<clblast::Layout>(layout),
2318 static_cast<clblast::Triangle>(triangle),
2319 n,
2320 float2{alpha.s[0], alpha.s[1]},
2321 x_buffer, x_offset, x_inc,
2322 y_buffer, y_offset, y_inc,
2323 a_buffer, a_offset, a_ld,
2324 queue, event)
2325 );
2326 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2327 }
CLBlastZher2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_double2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2328 CLBlastStatusCode CLBlastZher2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2329 const size_t n,
2330 const cl_double2 alpha,
2331 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2332 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2333 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2334 cl_command_queue* queue, cl_event* event) {
2335 try {
2336 return static_cast<CLBlastStatusCode>(
2337 clblast::Her2(static_cast<clblast::Layout>(layout),
2338 static_cast<clblast::Triangle>(triangle),
2339 n,
2340 double2{alpha.s[0], alpha.s[1]},
2341 x_buffer, x_offset, x_inc,
2342 y_buffer, y_offset, y_inc,
2343 a_buffer, a_offset, a_ld,
2344 queue, event)
2345 );
2346 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2347 }
2348
2349 // HPR2
CLBlastChpr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_float2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2350 CLBlastStatusCode CLBlastChpr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2351 const size_t n,
2352 const cl_float2 alpha,
2353 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2354 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2355 cl_mem ap_buffer, const size_t ap_offset,
2356 cl_command_queue* queue, cl_event* event) {
2357 try {
2358 return static_cast<CLBlastStatusCode>(
2359 clblast::Hpr2(static_cast<clblast::Layout>(layout),
2360 static_cast<clblast::Triangle>(triangle),
2361 n,
2362 float2{alpha.s[0], alpha.s[1]},
2363 x_buffer, x_offset, x_inc,
2364 y_buffer, y_offset, y_inc,
2365 ap_buffer, ap_offset,
2366 queue, event)
2367 );
2368 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2369 }
CLBlastZhpr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_double2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2370 CLBlastStatusCode CLBlastZhpr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2371 const size_t n,
2372 const cl_double2 alpha,
2373 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2374 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2375 cl_mem ap_buffer, const size_t ap_offset,
2376 cl_command_queue* queue, cl_event* event) {
2377 try {
2378 return static_cast<CLBlastStatusCode>(
2379 clblast::Hpr2(static_cast<clblast::Layout>(layout),
2380 static_cast<clblast::Triangle>(triangle),
2381 n,
2382 double2{alpha.s[0], alpha.s[1]},
2383 x_buffer, x_offset, x_inc,
2384 y_buffer, y_offset, y_inc,
2385 ap_buffer, ap_offset,
2386 queue, event)
2387 );
2388 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2389 }
2390
2391 // SYR
CLBlastSsyr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2392 CLBlastStatusCode CLBlastSsyr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2393 const size_t n,
2394 const float alpha,
2395 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2396 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2397 cl_command_queue* queue, cl_event* event) {
2398 try {
2399 return static_cast<CLBlastStatusCode>(
2400 clblast::Syr(static_cast<clblast::Layout>(layout),
2401 static_cast<clblast::Triangle>(triangle),
2402 n,
2403 alpha,
2404 x_buffer, x_offset, x_inc,
2405 a_buffer, a_offset, a_ld,
2406 queue, event)
2407 );
2408 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2409 }
CLBlastDsyr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2410 CLBlastStatusCode CLBlastDsyr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2411 const size_t n,
2412 const double alpha,
2413 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2414 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2415 cl_command_queue* queue, cl_event* event) {
2416 try {
2417 return static_cast<CLBlastStatusCode>(
2418 clblast::Syr(static_cast<clblast::Layout>(layout),
2419 static_cast<clblast::Triangle>(triangle),
2420 n,
2421 alpha,
2422 x_buffer, x_offset, x_inc,
2423 a_buffer, a_offset, a_ld,
2424 queue, event)
2425 );
2426 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2427 }
CLBlastHsyr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_half alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2428 CLBlastStatusCode CLBlastHsyr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2429 const size_t n,
2430 const cl_half alpha,
2431 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2432 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2433 cl_command_queue* queue, cl_event* event) {
2434 try {
2435 return static_cast<CLBlastStatusCode>(
2436 clblast::Syr(static_cast<clblast::Layout>(layout),
2437 static_cast<clblast::Triangle>(triangle),
2438 n,
2439 alpha,
2440 x_buffer, x_offset, x_inc,
2441 a_buffer, a_offset, a_ld,
2442 queue, event)
2443 );
2444 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2445 }
2446
2447 // SPR
CLBlastSspr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2448 CLBlastStatusCode CLBlastSspr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2449 const size_t n,
2450 const float alpha,
2451 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2452 cl_mem ap_buffer, const size_t ap_offset,
2453 cl_command_queue* queue, cl_event* event) {
2454 try {
2455 return static_cast<CLBlastStatusCode>(
2456 clblast::Spr(static_cast<clblast::Layout>(layout),
2457 static_cast<clblast::Triangle>(triangle),
2458 n,
2459 alpha,
2460 x_buffer, x_offset, x_inc,
2461 ap_buffer, ap_offset,
2462 queue, event)
2463 );
2464 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2465 }
CLBlastDspr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2466 CLBlastStatusCode CLBlastDspr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2467 const size_t n,
2468 const double alpha,
2469 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2470 cl_mem ap_buffer, const size_t ap_offset,
2471 cl_command_queue* queue, cl_event* event) {
2472 try {
2473 return static_cast<CLBlastStatusCode>(
2474 clblast::Spr(static_cast<clblast::Layout>(layout),
2475 static_cast<clblast::Triangle>(triangle),
2476 n,
2477 alpha,
2478 x_buffer, x_offset, x_inc,
2479 ap_buffer, ap_offset,
2480 queue, event)
2481 );
2482 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2483 }
CLBlastHspr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_half alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2484 CLBlastStatusCode CLBlastHspr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2485 const size_t n,
2486 const cl_half alpha,
2487 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2488 cl_mem ap_buffer, const size_t ap_offset,
2489 cl_command_queue* queue, cl_event* event) {
2490 try {
2491 return static_cast<CLBlastStatusCode>(
2492 clblast::Spr(static_cast<clblast::Layout>(layout),
2493 static_cast<clblast::Triangle>(triangle),
2494 n,
2495 alpha,
2496 x_buffer, x_offset, x_inc,
2497 ap_buffer, ap_offset,
2498 queue, event)
2499 );
2500 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2501 }
2502
2503 // SYR2
CLBlastSsyr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2504 CLBlastStatusCode CLBlastSsyr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2505 const size_t n,
2506 const float alpha,
2507 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2508 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2509 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2510 cl_command_queue* queue, cl_event* event) {
2511 try {
2512 return static_cast<CLBlastStatusCode>(
2513 clblast::Syr2(static_cast<clblast::Layout>(layout),
2514 static_cast<clblast::Triangle>(triangle),
2515 n,
2516 alpha,
2517 x_buffer, x_offset, x_inc,
2518 y_buffer, y_offset, y_inc,
2519 a_buffer, a_offset, a_ld,
2520 queue, event)
2521 );
2522 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2523 }
CLBlastDsyr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2524 CLBlastStatusCode CLBlastDsyr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2525 const size_t n,
2526 const double alpha,
2527 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2528 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2529 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2530 cl_command_queue* queue, cl_event* event) {
2531 try {
2532 return static_cast<CLBlastStatusCode>(
2533 clblast::Syr2(static_cast<clblast::Layout>(layout),
2534 static_cast<clblast::Triangle>(triangle),
2535 n,
2536 alpha,
2537 x_buffer, x_offset, x_inc,
2538 y_buffer, y_offset, y_inc,
2539 a_buffer, a_offset, a_ld,
2540 queue, event)
2541 );
2542 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2543 }
CLBlastHsyr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_half alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2544 CLBlastStatusCode CLBlastHsyr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2545 const size_t n,
2546 const cl_half alpha,
2547 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2548 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2549 cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2550 cl_command_queue* queue, cl_event* event) {
2551 try {
2552 return static_cast<CLBlastStatusCode>(
2553 clblast::Syr2(static_cast<clblast::Layout>(layout),
2554 static_cast<clblast::Triangle>(triangle),
2555 n,
2556 alpha,
2557 x_buffer, x_offset, x_inc,
2558 y_buffer, y_offset, y_inc,
2559 a_buffer, a_offset, a_ld,
2560 queue, event)
2561 );
2562 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2563 }
2564
2565 // SPR2
CLBlastSspr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2566 CLBlastStatusCode CLBlastSspr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2567 const size_t n,
2568 const float alpha,
2569 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2570 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2571 cl_mem ap_buffer, const size_t ap_offset,
2572 cl_command_queue* queue, cl_event* event) {
2573 try {
2574 return static_cast<CLBlastStatusCode>(
2575 clblast::Spr2(static_cast<clblast::Layout>(layout),
2576 static_cast<clblast::Triangle>(triangle),
2577 n,
2578 alpha,
2579 x_buffer, x_offset, x_inc,
2580 y_buffer, y_offset, y_inc,
2581 ap_buffer, ap_offset,
2582 queue, event)
2583 );
2584 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2585 }
CLBlastDspr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2586 CLBlastStatusCode CLBlastDspr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2587 const size_t n,
2588 const double alpha,
2589 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2590 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2591 cl_mem ap_buffer, const size_t ap_offset,
2592 cl_command_queue* queue, cl_event* event) {
2593 try {
2594 return static_cast<CLBlastStatusCode>(
2595 clblast::Spr2(static_cast<clblast::Layout>(layout),
2596 static_cast<clblast::Triangle>(triangle),
2597 n,
2598 alpha,
2599 x_buffer, x_offset, x_inc,
2600 y_buffer, y_offset, y_inc,
2601 ap_buffer, ap_offset,
2602 queue, event)
2603 );
2604 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2605 }
CLBlastHspr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_half alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2606 CLBlastStatusCode CLBlastHspr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2607 const size_t n,
2608 const cl_half alpha,
2609 const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2610 const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2611 cl_mem ap_buffer, const size_t ap_offset,
2612 cl_command_queue* queue, cl_event* event) {
2613 try {
2614 return static_cast<CLBlastStatusCode>(
2615 clblast::Spr2(static_cast<clblast::Layout>(layout),
2616 static_cast<clblast::Triangle>(triangle),
2617 n,
2618 alpha,
2619 x_buffer, x_offset, x_inc,
2620 y_buffer, y_offset, y_inc,
2621 ap_buffer, ap_offset,
2622 queue, event)
2623 );
2624 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2625 }
2626
2627 // =================================================================================================
2628 // BLAS level-3 (matrix-matrix) routines
2629 // =================================================================================================
2630
2631 // GEMM
CLBlastSgemm(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const float beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2632 CLBlastStatusCode CLBlastSgemm(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
2633 const size_t m, const size_t n, const size_t k,
2634 const float alpha,
2635 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2636 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2637 const float beta,
2638 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2639 cl_command_queue* queue, cl_event* event) {
2640 try {
2641 return static_cast<CLBlastStatusCode>(
2642 clblast::Gemm(static_cast<clblast::Layout>(layout),
2643 static_cast<clblast::Transpose>(a_transpose),
2644 static_cast<clblast::Transpose>(b_transpose),
2645 m, n, k,
2646 alpha,
2647 a_buffer, a_offset, a_ld,
2648 b_buffer, b_offset, b_ld,
2649 beta,
2650 c_buffer, c_offset, c_ld,
2651 queue, event)
2652 );
2653 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2654 }
CLBlastDgemm(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const double beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2655 CLBlastStatusCode CLBlastDgemm(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
2656 const size_t m, const size_t n, const size_t k,
2657 const double alpha,
2658 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2659 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2660 const double beta,
2661 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2662 cl_command_queue* queue, cl_event* event) {
2663 try {
2664 return static_cast<CLBlastStatusCode>(
2665 clblast::Gemm(static_cast<clblast::Layout>(layout),
2666 static_cast<clblast::Transpose>(a_transpose),
2667 static_cast<clblast::Transpose>(b_transpose),
2668 m, n, k,
2669 alpha,
2670 a_buffer, a_offset, a_ld,
2671 b_buffer, b_offset, b_ld,
2672 beta,
2673 c_buffer, c_offset, c_ld,
2674 queue, event)
2675 );
2676 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2677 }
CLBlastCgemm(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_float2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2678 CLBlastStatusCode CLBlastCgemm(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
2679 const size_t m, const size_t n, const size_t k,
2680 const cl_float2 alpha,
2681 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2682 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2683 const cl_float2 beta,
2684 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2685 cl_command_queue* queue, cl_event* event) {
2686 try {
2687 return static_cast<CLBlastStatusCode>(
2688 clblast::Gemm(static_cast<clblast::Layout>(layout),
2689 static_cast<clblast::Transpose>(a_transpose),
2690 static_cast<clblast::Transpose>(b_transpose),
2691 m, n, k,
2692 float2{alpha.s[0], alpha.s[1]},
2693 a_buffer, a_offset, a_ld,
2694 b_buffer, b_offset, b_ld,
2695 float2{beta.s[0], beta.s[1]},
2696 c_buffer, c_offset, c_ld,
2697 queue, event)
2698 );
2699 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2700 }
CLBlastZgemm(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_double2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2701 CLBlastStatusCode CLBlastZgemm(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
2702 const size_t m, const size_t n, const size_t k,
2703 const cl_double2 alpha,
2704 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2705 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2706 const cl_double2 beta,
2707 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2708 cl_command_queue* queue, cl_event* event) {
2709 try {
2710 return static_cast<CLBlastStatusCode>(
2711 clblast::Gemm(static_cast<clblast::Layout>(layout),
2712 static_cast<clblast::Transpose>(a_transpose),
2713 static_cast<clblast::Transpose>(b_transpose),
2714 m, n, k,
2715 double2{alpha.s[0], alpha.s[1]},
2716 a_buffer, a_offset, a_ld,
2717 b_buffer, b_offset, b_ld,
2718 double2{beta.s[0], beta.s[1]},
2719 c_buffer, c_offset, c_ld,
2720 queue, event)
2721 );
2722 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2723 }
CLBlastHgemm(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_half beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2724 CLBlastStatusCode CLBlastHgemm(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
2725 const size_t m, const size_t n, const size_t k,
2726 const cl_half alpha,
2727 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2728 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2729 const cl_half beta,
2730 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2731 cl_command_queue* queue, cl_event* event) {
2732 try {
2733 return static_cast<CLBlastStatusCode>(
2734 clblast::Gemm(static_cast<clblast::Layout>(layout),
2735 static_cast<clblast::Transpose>(a_transpose),
2736 static_cast<clblast::Transpose>(b_transpose),
2737 m, n, k,
2738 alpha,
2739 a_buffer, a_offset, a_ld,
2740 b_buffer, b_offset, b_ld,
2741 beta,
2742 c_buffer, c_offset, c_ld,
2743 queue, event)
2744 );
2745 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2746 }
2747
2748 // SYMM
CLBlastSsymm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const size_t m,const size_t n,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const float beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2749 CLBlastStatusCode CLBlastSsymm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle,
2750 const size_t m, const size_t n,
2751 const float alpha,
2752 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2753 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2754 const float beta,
2755 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2756 cl_command_queue* queue, cl_event* event) {
2757 try {
2758 return static_cast<CLBlastStatusCode>(
2759 clblast::Symm(static_cast<clblast::Layout>(layout),
2760 static_cast<clblast::Side>(side),
2761 static_cast<clblast::Triangle>(triangle),
2762 m, n,
2763 alpha,
2764 a_buffer, a_offset, a_ld,
2765 b_buffer, b_offset, b_ld,
2766 beta,
2767 c_buffer, c_offset, c_ld,
2768 queue, event)
2769 );
2770 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2771 }
CLBlastDsymm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const size_t m,const size_t n,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const double beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2772 CLBlastStatusCode CLBlastDsymm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle,
2773 const size_t m, const size_t n,
2774 const double alpha,
2775 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2776 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2777 const double beta,
2778 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2779 cl_command_queue* queue, cl_event* event) {
2780 try {
2781 return static_cast<CLBlastStatusCode>(
2782 clblast::Symm(static_cast<clblast::Layout>(layout),
2783 static_cast<clblast::Side>(side),
2784 static_cast<clblast::Triangle>(triangle),
2785 m, n,
2786 alpha,
2787 a_buffer, a_offset, a_ld,
2788 b_buffer, b_offset, b_ld,
2789 beta,
2790 c_buffer, c_offset, c_ld,
2791 queue, event)
2792 );
2793 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2794 }
CLBlastCsymm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_float2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2795 CLBlastStatusCode CLBlastCsymm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle,
2796 const size_t m, const size_t n,
2797 const cl_float2 alpha,
2798 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2799 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2800 const cl_float2 beta,
2801 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2802 cl_command_queue* queue, cl_event* event) {
2803 try {
2804 return static_cast<CLBlastStatusCode>(
2805 clblast::Symm(static_cast<clblast::Layout>(layout),
2806 static_cast<clblast::Side>(side),
2807 static_cast<clblast::Triangle>(triangle),
2808 m, n,
2809 float2{alpha.s[0], alpha.s[1]},
2810 a_buffer, a_offset, a_ld,
2811 b_buffer, b_offset, b_ld,
2812 float2{beta.s[0], beta.s[1]},
2813 c_buffer, c_offset, c_ld,
2814 queue, event)
2815 );
2816 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2817 }
CLBlastZsymm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_double2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2818 CLBlastStatusCode CLBlastZsymm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle,
2819 const size_t m, const size_t n,
2820 const cl_double2 alpha,
2821 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2822 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2823 const cl_double2 beta,
2824 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2825 cl_command_queue* queue, cl_event* event) {
2826 try {
2827 return static_cast<CLBlastStatusCode>(
2828 clblast::Symm(static_cast<clblast::Layout>(layout),
2829 static_cast<clblast::Side>(side),
2830 static_cast<clblast::Triangle>(triangle),
2831 m, n,
2832 double2{alpha.s[0], alpha.s[1]},
2833 a_buffer, a_offset, a_ld,
2834 b_buffer, b_offset, b_ld,
2835 double2{beta.s[0], beta.s[1]},
2836 c_buffer, c_offset, c_ld,
2837 queue, event)
2838 );
2839 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2840 }
CLBlastHsymm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const size_t m,const size_t n,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_half beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2841 CLBlastStatusCode CLBlastHsymm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle,
2842 const size_t m, const size_t n,
2843 const cl_half alpha,
2844 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2845 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2846 const cl_half beta,
2847 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2848 cl_command_queue* queue, cl_event* event) {
2849 try {
2850 return static_cast<CLBlastStatusCode>(
2851 clblast::Symm(static_cast<clblast::Layout>(layout),
2852 static_cast<clblast::Side>(side),
2853 static_cast<clblast::Triangle>(triangle),
2854 m, n,
2855 alpha,
2856 a_buffer, a_offset, a_ld,
2857 b_buffer, b_offset, b_ld,
2858 beta,
2859 c_buffer, c_offset, c_ld,
2860 queue, event)
2861 );
2862 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2863 }
2864
2865 // HEMM
CLBlastChemm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_float2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2866 CLBlastStatusCode CLBlastChemm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle,
2867 const size_t m, const size_t n,
2868 const cl_float2 alpha,
2869 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2870 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2871 const cl_float2 beta,
2872 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2873 cl_command_queue* queue, cl_event* event) {
2874 try {
2875 return static_cast<CLBlastStatusCode>(
2876 clblast::Hemm(static_cast<clblast::Layout>(layout),
2877 static_cast<clblast::Side>(side),
2878 static_cast<clblast::Triangle>(triangle),
2879 m, n,
2880 float2{alpha.s[0], alpha.s[1]},
2881 a_buffer, a_offset, a_ld,
2882 b_buffer, b_offset, b_ld,
2883 float2{beta.s[0], beta.s[1]},
2884 c_buffer, c_offset, c_ld,
2885 queue, event)
2886 );
2887 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2888 }
CLBlastZhemm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_double2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2889 CLBlastStatusCode CLBlastZhemm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle,
2890 const size_t m, const size_t n,
2891 const cl_double2 alpha,
2892 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2893 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2894 const cl_double2 beta,
2895 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2896 cl_command_queue* queue, cl_event* event) {
2897 try {
2898 return static_cast<CLBlastStatusCode>(
2899 clblast::Hemm(static_cast<clblast::Layout>(layout),
2900 static_cast<clblast::Side>(side),
2901 static_cast<clblast::Triangle>(triangle),
2902 m, n,
2903 double2{alpha.s[0], alpha.s[1]},
2904 a_buffer, a_offset, a_ld,
2905 b_buffer, b_offset, b_ld,
2906 double2{beta.s[0], beta.s[1]},
2907 c_buffer, c_offset, c_ld,
2908 queue, event)
2909 );
2910 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2911 }
2912
2913 // SYRK
CLBlastSsyrk(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const size_t n,const size_t k,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const float beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2914 CLBlastStatusCode CLBlastSsyrk(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose,
2915 const size_t n, const size_t k,
2916 const float alpha,
2917 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2918 const float beta,
2919 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2920 cl_command_queue* queue, cl_event* event) {
2921 try {
2922 return static_cast<CLBlastStatusCode>(
2923 clblast::Syrk(static_cast<clblast::Layout>(layout),
2924 static_cast<clblast::Triangle>(triangle),
2925 static_cast<clblast::Transpose>(a_transpose),
2926 n, k,
2927 alpha,
2928 a_buffer, a_offset, a_ld,
2929 beta,
2930 c_buffer, c_offset, c_ld,
2931 queue, event)
2932 );
2933 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2934 }
CLBlastDsyrk(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const size_t n,const size_t k,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const double beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2935 CLBlastStatusCode CLBlastDsyrk(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose,
2936 const size_t n, const size_t k,
2937 const double alpha,
2938 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2939 const double beta,
2940 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2941 cl_command_queue* queue, cl_event* event) {
2942 try {
2943 return static_cast<CLBlastStatusCode>(
2944 clblast::Syrk(static_cast<clblast::Layout>(layout),
2945 static_cast<clblast::Triangle>(triangle),
2946 static_cast<clblast::Transpose>(a_transpose),
2947 n, k,
2948 alpha,
2949 a_buffer, a_offset, a_ld,
2950 beta,
2951 c_buffer, c_offset, c_ld,
2952 queue, event)
2953 );
2954 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2955 }
CLBlastCsyrk(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const size_t n,const size_t k,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_float2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2956 CLBlastStatusCode CLBlastCsyrk(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose,
2957 const size_t n, const size_t k,
2958 const cl_float2 alpha,
2959 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2960 const cl_float2 beta,
2961 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2962 cl_command_queue* queue, cl_event* event) {
2963 try {
2964 return static_cast<CLBlastStatusCode>(
2965 clblast::Syrk(static_cast<clblast::Layout>(layout),
2966 static_cast<clblast::Triangle>(triangle),
2967 static_cast<clblast::Transpose>(a_transpose),
2968 n, k,
2969 float2{alpha.s[0], alpha.s[1]},
2970 a_buffer, a_offset, a_ld,
2971 float2{beta.s[0], beta.s[1]},
2972 c_buffer, c_offset, c_ld,
2973 queue, event)
2974 );
2975 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2976 }
CLBlastZsyrk(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const size_t n,const size_t k,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_double2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2977 CLBlastStatusCode CLBlastZsyrk(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose,
2978 const size_t n, const size_t k,
2979 const cl_double2 alpha,
2980 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2981 const cl_double2 beta,
2982 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2983 cl_command_queue* queue, cl_event* event) {
2984 try {
2985 return static_cast<CLBlastStatusCode>(
2986 clblast::Syrk(static_cast<clblast::Layout>(layout),
2987 static_cast<clblast::Triangle>(triangle),
2988 static_cast<clblast::Transpose>(a_transpose),
2989 n, k,
2990 double2{alpha.s[0], alpha.s[1]},
2991 a_buffer, a_offset, a_ld,
2992 double2{beta.s[0], beta.s[1]},
2993 c_buffer, c_offset, c_ld,
2994 queue, event)
2995 );
2996 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2997 }
CLBlastHsyrk(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const size_t n,const size_t k,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_half beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2998 CLBlastStatusCode CLBlastHsyrk(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose,
2999 const size_t n, const size_t k,
3000 const cl_half alpha,
3001 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3002 const cl_half beta,
3003 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3004 cl_command_queue* queue, cl_event* event) {
3005 try {
3006 return static_cast<CLBlastStatusCode>(
3007 clblast::Syrk(static_cast<clblast::Layout>(layout),
3008 static_cast<clblast::Triangle>(triangle),
3009 static_cast<clblast::Transpose>(a_transpose),
3010 n, k,
3011 alpha,
3012 a_buffer, a_offset, a_ld,
3013 beta,
3014 c_buffer, c_offset, c_ld,
3015 queue, event)
3016 );
3017 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3018 }
3019
3020 // HERK
CLBlastCherk(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const size_t n,const size_t k,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const float beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3021 CLBlastStatusCode CLBlastCherk(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose,
3022 const size_t n, const size_t k,
3023 const float alpha,
3024 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3025 const float beta,
3026 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3027 cl_command_queue* queue, cl_event* event) {
3028 try {
3029 return static_cast<CLBlastStatusCode>(
3030 clblast::Herk(static_cast<clblast::Layout>(layout),
3031 static_cast<clblast::Triangle>(triangle),
3032 static_cast<clblast::Transpose>(a_transpose),
3033 n, k,
3034 alpha,
3035 a_buffer, a_offset, a_ld,
3036 beta,
3037 c_buffer, c_offset, c_ld,
3038 queue, event)
3039 );
3040 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3041 }
CLBlastZherk(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const size_t n,const size_t k,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const double beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3042 CLBlastStatusCode CLBlastZherk(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose,
3043 const size_t n, const size_t k,
3044 const double alpha,
3045 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3046 const double beta,
3047 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3048 cl_command_queue* queue, cl_event* event) {
3049 try {
3050 return static_cast<CLBlastStatusCode>(
3051 clblast::Herk(static_cast<clblast::Layout>(layout),
3052 static_cast<clblast::Triangle>(triangle),
3053 static_cast<clblast::Transpose>(a_transpose),
3054 n, k,
3055 alpha,
3056 a_buffer, a_offset, a_ld,
3057 beta,
3058 c_buffer, c_offset, c_ld,
3059 queue, event)
3060 );
3061 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3062 }
3063
3064 // SYR2K
CLBlastSsyr2k(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose ab_transpose,const size_t n,const size_t k,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const float beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3065 CLBlastStatusCode CLBlastSsyr2k(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose ab_transpose,
3066 const size_t n, const size_t k,
3067 const float alpha,
3068 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3069 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3070 const float beta,
3071 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3072 cl_command_queue* queue, cl_event* event) {
3073 try {
3074 return static_cast<CLBlastStatusCode>(
3075 clblast::Syr2k(static_cast<clblast::Layout>(layout),
3076 static_cast<clblast::Triangle>(triangle),
3077 static_cast<clblast::Transpose>(ab_transpose),
3078 n, k,
3079 alpha,
3080 a_buffer, a_offset, a_ld,
3081 b_buffer, b_offset, b_ld,
3082 beta,
3083 c_buffer, c_offset, c_ld,
3084 queue, event)
3085 );
3086 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3087 }
CLBlastDsyr2k(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose ab_transpose,const size_t n,const size_t k,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const double beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3088 CLBlastStatusCode CLBlastDsyr2k(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose ab_transpose,
3089 const size_t n, const size_t k,
3090 const double alpha,
3091 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3092 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3093 const double beta,
3094 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3095 cl_command_queue* queue, cl_event* event) {
3096 try {
3097 return static_cast<CLBlastStatusCode>(
3098 clblast::Syr2k(static_cast<clblast::Layout>(layout),
3099 static_cast<clblast::Triangle>(triangle),
3100 static_cast<clblast::Transpose>(ab_transpose),
3101 n, k,
3102 alpha,
3103 a_buffer, a_offset, a_ld,
3104 b_buffer, b_offset, b_ld,
3105 beta,
3106 c_buffer, c_offset, c_ld,
3107 queue, event)
3108 );
3109 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3110 }
CLBlastCsyr2k(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose ab_transpose,const size_t n,const size_t k,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_float2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3111 CLBlastStatusCode CLBlastCsyr2k(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose ab_transpose,
3112 const size_t n, const size_t k,
3113 const cl_float2 alpha,
3114 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3115 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3116 const cl_float2 beta,
3117 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3118 cl_command_queue* queue, cl_event* event) {
3119 try {
3120 return static_cast<CLBlastStatusCode>(
3121 clblast::Syr2k(static_cast<clblast::Layout>(layout),
3122 static_cast<clblast::Triangle>(triangle),
3123 static_cast<clblast::Transpose>(ab_transpose),
3124 n, k,
3125 float2{alpha.s[0], alpha.s[1]},
3126 a_buffer, a_offset, a_ld,
3127 b_buffer, b_offset, b_ld,
3128 float2{beta.s[0], beta.s[1]},
3129 c_buffer, c_offset, c_ld,
3130 queue, event)
3131 );
3132 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3133 }
CLBlastZsyr2k(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose ab_transpose,const size_t n,const size_t k,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_double2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3134 CLBlastStatusCode CLBlastZsyr2k(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose ab_transpose,
3135 const size_t n, const size_t k,
3136 const cl_double2 alpha,
3137 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3138 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3139 const cl_double2 beta,
3140 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3141 cl_command_queue* queue, cl_event* event) {
3142 try {
3143 return static_cast<CLBlastStatusCode>(
3144 clblast::Syr2k(static_cast<clblast::Layout>(layout),
3145 static_cast<clblast::Triangle>(triangle),
3146 static_cast<clblast::Transpose>(ab_transpose),
3147 n, k,
3148 double2{alpha.s[0], alpha.s[1]},
3149 a_buffer, a_offset, a_ld,
3150 b_buffer, b_offset, b_ld,
3151 double2{beta.s[0], beta.s[1]},
3152 c_buffer, c_offset, c_ld,
3153 queue, event)
3154 );
3155 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3156 }
CLBlastHsyr2k(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose ab_transpose,const size_t n,const size_t k,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_half beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3157 CLBlastStatusCode CLBlastHsyr2k(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose ab_transpose,
3158 const size_t n, const size_t k,
3159 const cl_half alpha,
3160 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3161 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3162 const cl_half beta,
3163 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3164 cl_command_queue* queue, cl_event* event) {
3165 try {
3166 return static_cast<CLBlastStatusCode>(
3167 clblast::Syr2k(static_cast<clblast::Layout>(layout),
3168 static_cast<clblast::Triangle>(triangle),
3169 static_cast<clblast::Transpose>(ab_transpose),
3170 n, k,
3171 alpha,
3172 a_buffer, a_offset, a_ld,
3173 b_buffer, b_offset, b_ld,
3174 beta,
3175 c_buffer, c_offset, c_ld,
3176 queue, event)
3177 );
3178 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3179 }
3180
3181 // HER2K
CLBlastCher2k(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose ab_transpose,const size_t n,const size_t k,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const float beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3182 CLBlastStatusCode CLBlastCher2k(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose ab_transpose,
3183 const size_t n, const size_t k,
3184 const cl_float2 alpha,
3185 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3186 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3187 const float beta,
3188 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3189 cl_command_queue* queue, cl_event* event) {
3190 try {
3191 return static_cast<CLBlastStatusCode>(
3192 clblast::Her2k(static_cast<clblast::Layout>(layout),
3193 static_cast<clblast::Triangle>(triangle),
3194 static_cast<clblast::Transpose>(ab_transpose),
3195 n, k,
3196 float2{alpha.s[0], alpha.s[1]},
3197 a_buffer, a_offset, a_ld,
3198 b_buffer, b_offset, b_ld,
3199 beta,
3200 c_buffer, c_offset, c_ld,
3201 queue, event)
3202 );
3203 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3204 }
CLBlastZher2k(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose ab_transpose,const size_t n,const size_t k,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const double beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3205 CLBlastStatusCode CLBlastZher2k(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose ab_transpose,
3206 const size_t n, const size_t k,
3207 const cl_double2 alpha,
3208 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3209 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3210 const double beta,
3211 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3212 cl_command_queue* queue, cl_event* event) {
3213 try {
3214 return static_cast<CLBlastStatusCode>(
3215 clblast::Her2k(static_cast<clblast::Layout>(layout),
3216 static_cast<clblast::Triangle>(triangle),
3217 static_cast<clblast::Transpose>(ab_transpose),
3218 n, k,
3219 double2{alpha.s[0], alpha.s[1]},
3220 a_buffer, a_offset, a_ld,
3221 b_buffer, b_offset, b_ld,
3222 beta,
3223 c_buffer, c_offset, c_ld,
3224 queue, event)
3225 );
3226 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3227 }
3228
3229 // TRMM
CLBlastStrmm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3230 CLBlastStatusCode CLBlastStrmm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3231 const size_t m, const size_t n,
3232 const float alpha,
3233 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3234 cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3235 cl_command_queue* queue, cl_event* event) {
3236 try {
3237 return static_cast<CLBlastStatusCode>(
3238 clblast::Trmm(static_cast<clblast::Layout>(layout),
3239 static_cast<clblast::Side>(side),
3240 static_cast<clblast::Triangle>(triangle),
3241 static_cast<clblast::Transpose>(a_transpose),
3242 static_cast<clblast::Diagonal>(diagonal),
3243 m, n,
3244 alpha,
3245 a_buffer, a_offset, a_ld,
3246 b_buffer, b_offset, b_ld,
3247 queue, event)
3248 );
3249 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3250 }
CLBlastDtrmm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3251 CLBlastStatusCode CLBlastDtrmm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3252 const size_t m, const size_t n,
3253 const double alpha,
3254 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3255 cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3256 cl_command_queue* queue, cl_event* event) {
3257 try {
3258 return static_cast<CLBlastStatusCode>(
3259 clblast::Trmm(static_cast<clblast::Layout>(layout),
3260 static_cast<clblast::Side>(side),
3261 static_cast<clblast::Triangle>(triangle),
3262 static_cast<clblast::Transpose>(a_transpose),
3263 static_cast<clblast::Diagonal>(diagonal),
3264 m, n,
3265 alpha,
3266 a_buffer, a_offset, a_ld,
3267 b_buffer, b_offset, b_ld,
3268 queue, event)
3269 );
3270 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3271 }
CLBlastCtrmm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3272 CLBlastStatusCode CLBlastCtrmm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3273 const size_t m, const size_t n,
3274 const cl_float2 alpha,
3275 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3276 cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3277 cl_command_queue* queue, cl_event* event) {
3278 try {
3279 return static_cast<CLBlastStatusCode>(
3280 clblast::Trmm(static_cast<clblast::Layout>(layout),
3281 static_cast<clblast::Side>(side),
3282 static_cast<clblast::Triangle>(triangle),
3283 static_cast<clblast::Transpose>(a_transpose),
3284 static_cast<clblast::Diagonal>(diagonal),
3285 m, n,
3286 float2{alpha.s[0], alpha.s[1]},
3287 a_buffer, a_offset, a_ld,
3288 b_buffer, b_offset, b_ld,
3289 queue, event)
3290 );
3291 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3292 }
CLBlastZtrmm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3293 CLBlastStatusCode CLBlastZtrmm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3294 const size_t m, const size_t n,
3295 const cl_double2 alpha,
3296 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3297 cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3298 cl_command_queue* queue, cl_event* event) {
3299 try {
3300 return static_cast<CLBlastStatusCode>(
3301 clblast::Trmm(static_cast<clblast::Layout>(layout),
3302 static_cast<clblast::Side>(side),
3303 static_cast<clblast::Triangle>(triangle),
3304 static_cast<clblast::Transpose>(a_transpose),
3305 static_cast<clblast::Diagonal>(diagonal),
3306 m, n,
3307 double2{alpha.s[0], alpha.s[1]},
3308 a_buffer, a_offset, a_ld,
3309 b_buffer, b_offset, b_ld,
3310 queue, event)
3311 );
3312 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3313 }
CLBlastHtrmm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3314 CLBlastStatusCode CLBlastHtrmm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3315 const size_t m, const size_t n,
3316 const cl_half alpha,
3317 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3318 cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3319 cl_command_queue* queue, cl_event* event) {
3320 try {
3321 return static_cast<CLBlastStatusCode>(
3322 clblast::Trmm(static_cast<clblast::Layout>(layout),
3323 static_cast<clblast::Side>(side),
3324 static_cast<clblast::Triangle>(triangle),
3325 static_cast<clblast::Transpose>(a_transpose),
3326 static_cast<clblast::Diagonal>(diagonal),
3327 m, n,
3328 alpha,
3329 a_buffer, a_offset, a_ld,
3330 b_buffer, b_offset, b_ld,
3331 queue, event)
3332 );
3333 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3334 }
3335
3336 // TRSM
CLBlastStrsm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3337 CLBlastStatusCode CLBlastStrsm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3338 const size_t m, const size_t n,
3339 const float alpha,
3340 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3341 cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3342 cl_command_queue* queue, cl_event* event) {
3343 try {
3344 return static_cast<CLBlastStatusCode>(
3345 clblast::Trsm(static_cast<clblast::Layout>(layout),
3346 static_cast<clblast::Side>(side),
3347 static_cast<clblast::Triangle>(triangle),
3348 static_cast<clblast::Transpose>(a_transpose),
3349 static_cast<clblast::Diagonal>(diagonal),
3350 m, n,
3351 alpha,
3352 a_buffer, a_offset, a_ld,
3353 b_buffer, b_offset, b_ld,
3354 queue, event)
3355 );
3356 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3357 }
CLBlastDtrsm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3358 CLBlastStatusCode CLBlastDtrsm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3359 const size_t m, const size_t n,
3360 const double alpha,
3361 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3362 cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3363 cl_command_queue* queue, cl_event* event) {
3364 try {
3365 return static_cast<CLBlastStatusCode>(
3366 clblast::Trsm(static_cast<clblast::Layout>(layout),
3367 static_cast<clblast::Side>(side),
3368 static_cast<clblast::Triangle>(triangle),
3369 static_cast<clblast::Transpose>(a_transpose),
3370 static_cast<clblast::Diagonal>(diagonal),
3371 m, n,
3372 alpha,
3373 a_buffer, a_offset, a_ld,
3374 b_buffer, b_offset, b_ld,
3375 queue, event)
3376 );
3377 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3378 }
CLBlastCtrsm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3379 CLBlastStatusCode CLBlastCtrsm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3380 const size_t m, const size_t n,
3381 const cl_float2 alpha,
3382 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3383 cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3384 cl_command_queue* queue, cl_event* event) {
3385 try {
3386 return static_cast<CLBlastStatusCode>(
3387 clblast::Trsm(static_cast<clblast::Layout>(layout),
3388 static_cast<clblast::Side>(side),
3389 static_cast<clblast::Triangle>(triangle),
3390 static_cast<clblast::Transpose>(a_transpose),
3391 static_cast<clblast::Diagonal>(diagonal),
3392 m, n,
3393 float2{alpha.s[0], alpha.s[1]},
3394 a_buffer, a_offset, a_ld,
3395 b_buffer, b_offset, b_ld,
3396 queue, event)
3397 );
3398 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3399 }
CLBlastZtrsm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3400 CLBlastStatusCode CLBlastZtrsm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3401 const size_t m, const size_t n,
3402 const cl_double2 alpha,
3403 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3404 cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3405 cl_command_queue* queue, cl_event* event) {
3406 try {
3407 return static_cast<CLBlastStatusCode>(
3408 clblast::Trsm(static_cast<clblast::Layout>(layout),
3409 static_cast<clblast::Side>(side),
3410 static_cast<clblast::Triangle>(triangle),
3411 static_cast<clblast::Transpose>(a_transpose),
3412 static_cast<clblast::Diagonal>(diagonal),
3413 m, n,
3414 double2{alpha.s[0], alpha.s[1]},
3415 a_buffer, a_offset, a_ld,
3416 b_buffer, b_offset, b_ld,
3417 queue, event)
3418 );
3419 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3420 }
3421
3422 // =================================================================================================
3423 // Extra non-BLAS routines (level-X)
3424 // =================================================================================================
3425
3426 // OMATCOPY
CLBlastSomatcopy(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3427 CLBlastStatusCode CLBlastSomatcopy(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
3428 const size_t m, const size_t n,
3429 const float alpha,
3430 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3431 cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3432 cl_command_queue* queue, cl_event* event) {
3433 try {
3434 return static_cast<CLBlastStatusCode>(
3435 clblast::Omatcopy(static_cast<clblast::Layout>(layout),
3436 static_cast<clblast::Transpose>(a_transpose),
3437 m, n,
3438 alpha,
3439 a_buffer, a_offset, a_ld,
3440 b_buffer, b_offset, b_ld,
3441 queue, event)
3442 );
3443 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3444 }
CLBlastDomatcopy(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3445 CLBlastStatusCode CLBlastDomatcopy(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
3446 const size_t m, const size_t n,
3447 const double alpha,
3448 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3449 cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3450 cl_command_queue* queue, cl_event* event) {
3451 try {
3452 return static_cast<CLBlastStatusCode>(
3453 clblast::Omatcopy(static_cast<clblast::Layout>(layout),
3454 static_cast<clblast::Transpose>(a_transpose),
3455 m, n,
3456 alpha,
3457 a_buffer, a_offset, a_ld,
3458 b_buffer, b_offset, b_ld,
3459 queue, event)
3460 );
3461 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3462 }
CLBlastComatcopy(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3463 CLBlastStatusCode CLBlastComatcopy(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
3464 const size_t m, const size_t n,
3465 const cl_float2 alpha,
3466 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3467 cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3468 cl_command_queue* queue, cl_event* event) {
3469 try {
3470 return static_cast<CLBlastStatusCode>(
3471 clblast::Omatcopy(static_cast<clblast::Layout>(layout),
3472 static_cast<clblast::Transpose>(a_transpose),
3473 m, n,
3474 float2{alpha.s[0], alpha.s[1]},
3475 a_buffer, a_offset, a_ld,
3476 b_buffer, b_offset, b_ld,
3477 queue, event)
3478 );
3479 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3480 }
CLBlastZomatcopy(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3481 CLBlastStatusCode CLBlastZomatcopy(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
3482 const size_t m, const size_t n,
3483 const cl_double2 alpha,
3484 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3485 cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3486 cl_command_queue* queue, cl_event* event) {
3487 try {
3488 return static_cast<CLBlastStatusCode>(
3489 clblast::Omatcopy(static_cast<clblast::Layout>(layout),
3490 static_cast<clblast::Transpose>(a_transpose),
3491 m, n,
3492 double2{alpha.s[0], alpha.s[1]},
3493 a_buffer, a_offset, a_ld,
3494 b_buffer, b_offset, b_ld,
3495 queue, event)
3496 );
3497 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3498 }
CLBlastHomatcopy(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3499 CLBlastStatusCode CLBlastHomatcopy(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
3500 const size_t m, const size_t n,
3501 const cl_half alpha,
3502 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3503 cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3504 cl_command_queue* queue, cl_event* event) {
3505 try {
3506 return static_cast<CLBlastStatusCode>(
3507 clblast::Omatcopy(static_cast<clblast::Layout>(layout),
3508 static_cast<clblast::Transpose>(a_transpose),
3509 m, n,
3510 alpha,
3511 a_buffer, a_offset, a_ld,
3512 b_buffer, b_offset, b_ld,
3513 queue, event)
3514 );
3515 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3516 }
3517
3518 // IM2COL
CLBlastSim2col(const size_t channels,const size_t height,const size_t width,const size_t kernel_h,const size_t kernel_w,const size_t pad_h,const size_t pad_w,const size_t stride_h,const size_t stride_w,const size_t dilation_h,const size_t dilation_w,const cl_mem im_buffer,const size_t im_offset,cl_mem col_buffer,const size_t col_offset,cl_command_queue * queue,cl_event * event)3519 CLBlastStatusCode CLBlastSim2col(const size_t channels, const size_t height, const size_t width, const size_t kernel_h, const size_t kernel_w, const size_t pad_h, const size_t pad_w, const size_t stride_h, const size_t stride_w, const size_t dilation_h, const size_t dilation_w,
3520 const cl_mem im_buffer, const size_t im_offset,
3521 cl_mem col_buffer, const size_t col_offset,
3522 cl_command_queue* queue, cl_event* event) {
3523 try {
3524 return static_cast<CLBlastStatusCode>(
3525 clblast::Im2col<float>(channels, height, width, kernel_h, kernel_w, pad_h, pad_w, stride_h, stride_w, dilation_h, dilation_w,
3526 im_buffer, im_offset,
3527 col_buffer, col_offset,
3528 queue, event)
3529 );
3530 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3531 }
CLBlastDim2col(const size_t channels,const size_t height,const size_t width,const size_t kernel_h,const size_t kernel_w,const size_t pad_h,const size_t pad_w,const size_t stride_h,const size_t stride_w,const size_t dilation_h,const size_t dilation_w,const cl_mem im_buffer,const size_t im_offset,cl_mem col_buffer,const size_t col_offset,cl_command_queue * queue,cl_event * event)3532 CLBlastStatusCode CLBlastDim2col(const size_t channels, const size_t height, const size_t width, const size_t kernel_h, const size_t kernel_w, const size_t pad_h, const size_t pad_w, const size_t stride_h, const size_t stride_w, const size_t dilation_h, const size_t dilation_w,
3533 const cl_mem im_buffer, const size_t im_offset,
3534 cl_mem col_buffer, const size_t col_offset,
3535 cl_command_queue* queue, cl_event* event) {
3536 try {
3537 return static_cast<CLBlastStatusCode>(
3538 clblast::Im2col<double>(channels, height, width, kernel_h, kernel_w, pad_h, pad_w, stride_h, stride_w, dilation_h, dilation_w,
3539 im_buffer, im_offset,
3540 col_buffer, col_offset,
3541 queue, event)
3542 );
3543 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3544 }
CLBlastCim2col(const size_t channels,const size_t height,const size_t width,const size_t kernel_h,const size_t kernel_w,const size_t pad_h,const size_t pad_w,const size_t stride_h,const size_t stride_w,const size_t dilation_h,const size_t dilation_w,const cl_mem im_buffer,const size_t im_offset,cl_mem col_buffer,const size_t col_offset,cl_command_queue * queue,cl_event * event)3545 CLBlastStatusCode CLBlastCim2col(const size_t channels, const size_t height, const size_t width, const size_t kernel_h, const size_t kernel_w, const size_t pad_h, const size_t pad_w, const size_t stride_h, const size_t stride_w, const size_t dilation_h, const size_t dilation_w,
3546 const cl_mem im_buffer, const size_t im_offset,
3547 cl_mem col_buffer, const size_t col_offset,
3548 cl_command_queue* queue, cl_event* event) {
3549 try {
3550 return static_cast<CLBlastStatusCode>(
3551 clblast::Im2col<float2>(channels, height, width, kernel_h, kernel_w, pad_h, pad_w, stride_h, stride_w, dilation_h, dilation_w,
3552 im_buffer, im_offset,
3553 col_buffer, col_offset,
3554 queue, event)
3555 );
3556 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3557 }
CLBlastZim2col(const size_t channels,const size_t height,const size_t width,const size_t kernel_h,const size_t kernel_w,const size_t pad_h,const size_t pad_w,const size_t stride_h,const size_t stride_w,const size_t dilation_h,const size_t dilation_w,const cl_mem im_buffer,const size_t im_offset,cl_mem col_buffer,const size_t col_offset,cl_command_queue * queue,cl_event * event)3558 CLBlastStatusCode CLBlastZim2col(const size_t channels, const size_t height, const size_t width, const size_t kernel_h, const size_t kernel_w, const size_t pad_h, const size_t pad_w, const size_t stride_h, const size_t stride_w, const size_t dilation_h, const size_t dilation_w,
3559 const cl_mem im_buffer, const size_t im_offset,
3560 cl_mem col_buffer, const size_t col_offset,
3561 cl_command_queue* queue, cl_event* event) {
3562 try {
3563 return static_cast<CLBlastStatusCode>(
3564 clblast::Im2col<double2>(channels, height, width, kernel_h, kernel_w, pad_h, pad_w, stride_h, stride_w, dilation_h, dilation_w,
3565 im_buffer, im_offset,
3566 col_buffer, col_offset,
3567 queue, event)
3568 );
3569 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3570 }
CLBlastHim2col(const size_t channels,const size_t height,const size_t width,const size_t kernel_h,const size_t kernel_w,const size_t pad_h,const size_t pad_w,const size_t stride_h,const size_t stride_w,const size_t dilation_h,const size_t dilation_w,const cl_mem im_buffer,const size_t im_offset,cl_mem col_buffer,const size_t col_offset,cl_command_queue * queue,cl_event * event)3571 CLBlastStatusCode CLBlastHim2col(const size_t channels, const size_t height, const size_t width, const size_t kernel_h, const size_t kernel_w, const size_t pad_h, const size_t pad_w, const size_t stride_h, const size_t stride_w, const size_t dilation_h, const size_t dilation_w,
3572 const cl_mem im_buffer, const size_t im_offset,
3573 cl_mem col_buffer, const size_t col_offset,
3574 cl_command_queue* queue, cl_event* event) {
3575 try {
3576 return static_cast<CLBlastStatusCode>(
3577 clblast::Im2col<half>(channels, height, width, kernel_h, kernel_w, pad_h, pad_w, stride_h, stride_w, dilation_h, dilation_w,
3578 im_buffer, im_offset,
3579 col_buffer, col_offset,
3580 queue, event)
3581 );
3582 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3583 }
3584
3585 // AXPY
CLBlastSaxpyBatched(const size_t n,const float * alphas,const cl_mem x_buffer,const size_t * x_offsets,const size_t x_inc,cl_mem y_buffer,const size_t * y_offsets,const size_t y_inc,const size_t batch_count,cl_command_queue * queue,cl_event * event)3586 CLBlastStatusCode CLBlastSaxpyBatched(const size_t n,
3587 const float *alphas,
3588 const cl_mem x_buffer, const size_t *x_offsets, const size_t x_inc,
3589 cl_mem y_buffer, const size_t *y_offsets, const size_t y_inc,
3590 const size_t batch_count,
3591 cl_command_queue* queue, cl_event* event) {
3592 auto alphas_cpp = std::vector<float>();
3593 for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3594 alphas_cpp.push_back(alphas[batch]);
3595 }
3596 try {
3597 return static_cast<CLBlastStatusCode>(
3598 clblast::AxpyBatched(n,
3599 alphas_cpp.data(),
3600 x_buffer, x_offsets, x_inc,
3601 y_buffer, y_offsets, y_inc,
3602 batch_count,
3603 queue, event)
3604 );
3605 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3606 }
CLBlastDaxpyBatched(const size_t n,const double * alphas,const cl_mem x_buffer,const size_t * x_offsets,const size_t x_inc,cl_mem y_buffer,const size_t * y_offsets,const size_t y_inc,const size_t batch_count,cl_command_queue * queue,cl_event * event)3607 CLBlastStatusCode CLBlastDaxpyBatched(const size_t n,
3608 const double *alphas,
3609 const cl_mem x_buffer, const size_t *x_offsets, const size_t x_inc,
3610 cl_mem y_buffer, const size_t *y_offsets, const size_t y_inc,
3611 const size_t batch_count,
3612 cl_command_queue* queue, cl_event* event) {
3613 auto alphas_cpp = std::vector<double>();
3614 for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3615 alphas_cpp.push_back(alphas[batch]);
3616 }
3617 try {
3618 return static_cast<CLBlastStatusCode>(
3619 clblast::AxpyBatched(n,
3620 alphas_cpp.data(),
3621 x_buffer, x_offsets, x_inc,
3622 y_buffer, y_offsets, y_inc,
3623 batch_count,
3624 queue, event)
3625 );
3626 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3627 }
CLBlastCaxpyBatched(const size_t n,const cl_float2 * alphas,const cl_mem x_buffer,const size_t * x_offsets,const size_t x_inc,cl_mem y_buffer,const size_t * y_offsets,const size_t y_inc,const size_t batch_count,cl_command_queue * queue,cl_event * event)3628 CLBlastStatusCode CLBlastCaxpyBatched(const size_t n,
3629 const cl_float2 *alphas,
3630 const cl_mem x_buffer, const size_t *x_offsets, const size_t x_inc,
3631 cl_mem y_buffer, const size_t *y_offsets, const size_t y_inc,
3632 const size_t batch_count,
3633 cl_command_queue* queue, cl_event* event) {
3634 auto alphas_cpp = std::vector<float2>();
3635 for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3636 alphas_cpp.push_back(float2{alphas[batch].s[0], alphas[batch].s[1]});
3637 }
3638 try {
3639 return static_cast<CLBlastStatusCode>(
3640 clblast::AxpyBatched(n,
3641 alphas_cpp.data(),
3642 x_buffer, x_offsets, x_inc,
3643 y_buffer, y_offsets, y_inc,
3644 batch_count,
3645 queue, event)
3646 );
3647 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3648 }
CLBlastZaxpyBatched(const size_t n,const cl_double2 * alphas,const cl_mem x_buffer,const size_t * x_offsets,const size_t x_inc,cl_mem y_buffer,const size_t * y_offsets,const size_t y_inc,const size_t batch_count,cl_command_queue * queue,cl_event * event)3649 CLBlastStatusCode CLBlastZaxpyBatched(const size_t n,
3650 const cl_double2 *alphas,
3651 const cl_mem x_buffer, const size_t *x_offsets, const size_t x_inc,
3652 cl_mem y_buffer, const size_t *y_offsets, const size_t y_inc,
3653 const size_t batch_count,
3654 cl_command_queue* queue, cl_event* event) {
3655 auto alphas_cpp = std::vector<double2>();
3656 for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3657 alphas_cpp.push_back(double2{alphas[batch].s[0], alphas[batch].s[1]});
3658 }
3659 try {
3660 return static_cast<CLBlastStatusCode>(
3661 clblast::AxpyBatched(n,
3662 alphas_cpp.data(),
3663 x_buffer, x_offsets, x_inc,
3664 y_buffer, y_offsets, y_inc,
3665 batch_count,
3666 queue, event)
3667 );
3668 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3669 }
CLBlastHaxpyBatched(const size_t n,const cl_half * alphas,const cl_mem x_buffer,const size_t * x_offsets,const size_t x_inc,cl_mem y_buffer,const size_t * y_offsets,const size_t y_inc,const size_t batch_count,cl_command_queue * queue,cl_event * event)3670 CLBlastStatusCode CLBlastHaxpyBatched(const size_t n,
3671 const cl_half *alphas,
3672 const cl_mem x_buffer, const size_t *x_offsets, const size_t x_inc,
3673 cl_mem y_buffer, const size_t *y_offsets, const size_t y_inc,
3674 const size_t batch_count,
3675 cl_command_queue* queue, cl_event* event) {
3676 auto alphas_cpp = std::vector<half>();
3677 for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3678 alphas_cpp.push_back(alphas[batch]);
3679 }
3680 try {
3681 return static_cast<CLBlastStatusCode>(
3682 clblast::AxpyBatched(n,
3683 alphas_cpp.data(),
3684 x_buffer, x_offsets, x_inc,
3685 y_buffer, y_offsets, y_inc,
3686 batch_count,
3687 queue, event)
3688 );
3689 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3690 }
3691
3692 // GEMM
CLBlastSgemmBatched(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const float * alphas,const cl_mem a_buffer,const size_t * a_offsets,const size_t a_ld,const cl_mem b_buffer,const size_t * b_offsets,const size_t b_ld,const float * betas,cl_mem c_buffer,const size_t * c_offsets,const size_t c_ld,const size_t batch_count,cl_command_queue * queue,cl_event * event)3693 CLBlastStatusCode CLBlastSgemmBatched(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
3694 const size_t m, const size_t n, const size_t k,
3695 const float *alphas,
3696 const cl_mem a_buffer, const size_t *a_offsets, const size_t a_ld,
3697 const cl_mem b_buffer, const size_t *b_offsets, const size_t b_ld,
3698 const float *betas,
3699 cl_mem c_buffer, const size_t *c_offsets, const size_t c_ld,
3700 const size_t batch_count,
3701 cl_command_queue* queue, cl_event* event) {
3702 auto alphas_cpp = std::vector<float>();
3703 auto betas_cpp = std::vector<float>();
3704 for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3705 alphas_cpp.push_back(alphas[batch]);
3706 betas_cpp.push_back(betas[batch]);
3707 }
3708 try {
3709 return static_cast<CLBlastStatusCode>(
3710 clblast::GemmBatched(static_cast<clblast::Layout>(layout),
3711 static_cast<clblast::Transpose>(a_transpose),
3712 static_cast<clblast::Transpose>(b_transpose),
3713 m, n, k,
3714 alphas_cpp.data(),
3715 a_buffer, a_offsets, a_ld,
3716 b_buffer, b_offsets, b_ld,
3717 betas_cpp.data(),
3718 c_buffer, c_offsets, c_ld,
3719 batch_count,
3720 queue, event)
3721 );
3722 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3723 }
CLBlastDgemmBatched(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const double * alphas,const cl_mem a_buffer,const size_t * a_offsets,const size_t a_ld,const cl_mem b_buffer,const size_t * b_offsets,const size_t b_ld,const double * betas,cl_mem c_buffer,const size_t * c_offsets,const size_t c_ld,const size_t batch_count,cl_command_queue * queue,cl_event * event)3724 CLBlastStatusCode CLBlastDgemmBatched(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
3725 const size_t m, const size_t n, const size_t k,
3726 const double *alphas,
3727 const cl_mem a_buffer, const size_t *a_offsets, const size_t a_ld,
3728 const cl_mem b_buffer, const size_t *b_offsets, const size_t b_ld,
3729 const double *betas,
3730 cl_mem c_buffer, const size_t *c_offsets, const size_t c_ld,
3731 const size_t batch_count,
3732 cl_command_queue* queue, cl_event* event) {
3733 auto alphas_cpp = std::vector<double>();
3734 auto betas_cpp = std::vector<double>();
3735 for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3736 alphas_cpp.push_back(alphas[batch]);
3737 betas_cpp.push_back(betas[batch]);
3738 }
3739 try {
3740 return static_cast<CLBlastStatusCode>(
3741 clblast::GemmBatched(static_cast<clblast::Layout>(layout),
3742 static_cast<clblast::Transpose>(a_transpose),
3743 static_cast<clblast::Transpose>(b_transpose),
3744 m, n, k,
3745 alphas_cpp.data(),
3746 a_buffer, a_offsets, a_ld,
3747 b_buffer, b_offsets, b_ld,
3748 betas_cpp.data(),
3749 c_buffer, c_offsets, c_ld,
3750 batch_count,
3751 queue, event)
3752 );
3753 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3754 }
CLBlastCgemmBatched(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const cl_float2 * alphas,const cl_mem a_buffer,const size_t * a_offsets,const size_t a_ld,const cl_mem b_buffer,const size_t * b_offsets,const size_t b_ld,const cl_float2 * betas,cl_mem c_buffer,const size_t * c_offsets,const size_t c_ld,const size_t batch_count,cl_command_queue * queue,cl_event * event)3755 CLBlastStatusCode CLBlastCgemmBatched(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
3756 const size_t m, const size_t n, const size_t k,
3757 const cl_float2 *alphas,
3758 const cl_mem a_buffer, const size_t *a_offsets, const size_t a_ld,
3759 const cl_mem b_buffer, const size_t *b_offsets, const size_t b_ld,
3760 const cl_float2 *betas,
3761 cl_mem c_buffer, const size_t *c_offsets, const size_t c_ld,
3762 const size_t batch_count,
3763 cl_command_queue* queue, cl_event* event) {
3764 auto alphas_cpp = std::vector<float2>();
3765 auto betas_cpp = std::vector<float2>();
3766 for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3767 alphas_cpp.push_back(float2{alphas[batch].s[0], alphas[batch].s[1]});
3768 betas_cpp.push_back(float2{betas[batch].s[0], betas[batch].s[1]});
3769 }
3770 try {
3771 return static_cast<CLBlastStatusCode>(
3772 clblast::GemmBatched(static_cast<clblast::Layout>(layout),
3773 static_cast<clblast::Transpose>(a_transpose),
3774 static_cast<clblast::Transpose>(b_transpose),
3775 m, n, k,
3776 alphas_cpp.data(),
3777 a_buffer, a_offsets, a_ld,
3778 b_buffer, b_offsets, b_ld,
3779 betas_cpp.data(),
3780 c_buffer, c_offsets, c_ld,
3781 batch_count,
3782 queue, event)
3783 );
3784 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3785 }
CLBlastZgemmBatched(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const cl_double2 * alphas,const cl_mem a_buffer,const size_t * a_offsets,const size_t a_ld,const cl_mem b_buffer,const size_t * b_offsets,const size_t b_ld,const cl_double2 * betas,cl_mem c_buffer,const size_t * c_offsets,const size_t c_ld,const size_t batch_count,cl_command_queue * queue,cl_event * event)3786 CLBlastStatusCode CLBlastZgemmBatched(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
3787 const size_t m, const size_t n, const size_t k,
3788 const cl_double2 *alphas,
3789 const cl_mem a_buffer, const size_t *a_offsets, const size_t a_ld,
3790 const cl_mem b_buffer, const size_t *b_offsets, const size_t b_ld,
3791 const cl_double2 *betas,
3792 cl_mem c_buffer, const size_t *c_offsets, const size_t c_ld,
3793 const size_t batch_count,
3794 cl_command_queue* queue, cl_event* event) {
3795 auto alphas_cpp = std::vector<double2>();
3796 auto betas_cpp = std::vector<double2>();
3797 for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3798 alphas_cpp.push_back(double2{alphas[batch].s[0], alphas[batch].s[1]});
3799 betas_cpp.push_back(double2{betas[batch].s[0], betas[batch].s[1]});
3800 }
3801 try {
3802 return static_cast<CLBlastStatusCode>(
3803 clblast::GemmBatched(static_cast<clblast::Layout>(layout),
3804 static_cast<clblast::Transpose>(a_transpose),
3805 static_cast<clblast::Transpose>(b_transpose),
3806 m, n, k,
3807 alphas_cpp.data(),
3808 a_buffer, a_offsets, a_ld,
3809 b_buffer, b_offsets, b_ld,
3810 betas_cpp.data(),
3811 c_buffer, c_offsets, c_ld,
3812 batch_count,
3813 queue, event)
3814 );
3815 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3816 }
CLBlastHgemmBatched(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const cl_half * alphas,const cl_mem a_buffer,const size_t * a_offsets,const size_t a_ld,const cl_mem b_buffer,const size_t * b_offsets,const size_t b_ld,const cl_half * betas,cl_mem c_buffer,const size_t * c_offsets,const size_t c_ld,const size_t batch_count,cl_command_queue * queue,cl_event * event)3817 CLBlastStatusCode CLBlastHgemmBatched(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
3818 const size_t m, const size_t n, const size_t k,
3819 const cl_half *alphas,
3820 const cl_mem a_buffer, const size_t *a_offsets, const size_t a_ld,
3821 const cl_mem b_buffer, const size_t *b_offsets, const size_t b_ld,
3822 const cl_half *betas,
3823 cl_mem c_buffer, const size_t *c_offsets, const size_t c_ld,
3824 const size_t batch_count,
3825 cl_command_queue* queue, cl_event* event) {
3826 auto alphas_cpp = std::vector<half>();
3827 auto betas_cpp = std::vector<half>();
3828 for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3829 alphas_cpp.push_back(alphas[batch]);
3830 betas_cpp.push_back(betas[batch]);
3831 }
3832 try {
3833 return static_cast<CLBlastStatusCode>(
3834 clblast::GemmBatched(static_cast<clblast::Layout>(layout),
3835 static_cast<clblast::Transpose>(a_transpose),
3836 static_cast<clblast::Transpose>(b_transpose),
3837 m, n, k,
3838 alphas_cpp.data(),
3839 a_buffer, a_offsets, a_ld,
3840 b_buffer, b_offsets, b_ld,
3841 betas_cpp.data(),
3842 c_buffer, c_offsets, c_ld,
3843 batch_count,
3844 queue, event)
3845 );
3846 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3847 }
3848
3849 // =================================================================================================
3850
3851 // Clears the cache of stored binaries
CLBlastClearCache()3852 CLBlastStatusCode CLBlastClearCache() {
3853 try {
3854 return static_cast<CLBlastStatusCode>(clblast::ClearCache());
3855 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3856 }
3857
3858 // Fills the cache with binaries for a specific device
CLBlastFillCache(const cl_device_id device)3859 CLBlastStatusCode CLBlastFillCache(const cl_device_id device) {
3860 try {
3861 return static_cast<CLBlastStatusCode>(clblast::FillCache(device));
3862 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3863 }
3864
3865 // =================================================================================================
3866
3867 // Overrides the tuning parameters for this device-precision-kernel combination
CLBlastOverrideParameters(const cl_device_id device,const char * kernel_name,const CLBlastPrecision precision,const size_t num_parameters,const char ** parameters_names,const size_t * parameters_values)3868 CLBlastStatusCode PUBLIC_API CLBlastOverrideParameters(const cl_device_id device, const char* kernel_name,
3869 const CLBlastPrecision precision, const size_t num_parameters,
3870 const char** parameters_names, const size_t* parameters_values) {
3871 try {
3872 const auto kernel_name_cpp = std::string(kernel_name);
3873 const auto precision_cpp = static_cast<clblast::Precision>(precision);
3874 auto parameters = std::unordered_map<std::string, size_t>();
3875 for (auto i = size_t{0}; i < num_parameters; ++i) {
3876 const auto parameter_name = std::string(parameters_names[i]);
3877 const auto parameter_value = parameters_values[i];
3878 parameters[parameter_name] = parameter_value;
3879 }
3880 const auto status = clblast::OverrideParameters(device, kernel_name_cpp, precision_cpp, parameters);
3881 return static_cast<CLBlastStatusCode>(status);
3882 } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3883 }
3884
3885 // =================================================================================================
3886