codekingpro/portable-devtools
114k
1/*
2 * Copyright 2014 NVIDIA Corporation. All rights reserved.
3 *
4 * NOTICE TO LICENSEE:
5 *
6 * This source code and/or documentation ("Licensed Deliverables") are
7 * subject to NVIDIA intellectual property rights under U.S. and
8 * international Copyright laws.
9 *
10 * These Licensed Deliverables contained herein is PROPRIETARY and
11 * CONFIDENTIAL to NVIDIA and is being provided under the terms and
12 * conditions of a form of NVIDIA software license agreement by and
13 * between NVIDIA and Licensee ("License Agreement") or electronically
14 * accepted by Licensee. Notwithstanding any terms or conditions to
15 * the contrary in the License Agreement, reproduction or disclosure
16 * of the Licensed Deliverables to any third party without the express
17 * written consent of NVIDIA is prohibited.
18 *
19 * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
20 * LICENSE AGREEMENT, NVIDIA MAKES NO REPRESENTATION ABOUT THE
21 * SUITABILITY OF THESE LICENSED DELIVERABLES FOR ANY PURPOSE. IT IS
22 * PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND.
23 * NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE LICENSED
24 * DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY,
25 * NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
26 * NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
27 * LICENSE AGREEMENT, IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY
28 * SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY
29 * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
30 * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
31 * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
32 * OF THESE LICENSED DELIVERABLES.
33 *
34 * U.S. Government End Users. These Licensed Deliverables are a
35 * "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT
36 * 1995), consisting of "commercial computer software" and "commercial
37 * computer software documentation" as such terms are used in 48
38 * C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government
39 * only as a commercial end item. Consistent with 48 C.F.R.12.212 and
40 * 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all
41 * U.S. Government End Users acquire the Licensed Deliverables with
42 * only those rights set forth herein.
43 *
44 * Any use of the Licensed Deliverables in individual and commercial
45 * software must include, in the user documentation and internal
46 * comments to the code, the above Disclaimer and U.S. Government End
47 * Users Notice.
48 */
49
50/* cuSolverDN : Dense Linear Algebra Library
51
52*/
53
54#if !defined(CUSOLVERDN_H_)
55 #define CUSOLVERDN_H_
56
57struct cusolverDnContext;
58typedef struct cusolverDnContext *cusolverDnHandle_t;
59
60struct syevjInfo;
61typedef struct syevjInfo *syevjInfo_t;
62
63struct gesvdjInfo;
64typedef struct gesvdjInfo *gesvdjInfo_t;
65
66//------------------------------------------------------
67// opaque cusolverDnIRS structure for IRS solver
68struct cusolverDnIRSParams;
69typedef struct cusolverDnIRSParams *cusolverDnIRSParams_t;
70
71struct cusolverDnIRSInfos;
72typedef struct cusolverDnIRSInfos *cusolverDnIRSInfos_t;
73//------------------------------------------------------
74
75struct cusolverDnParams;
76typedef struct cusolverDnParams *cusolverDnParams_t;
77
78typedef enum {
79 CUSOLVERDN_GETRF = 0,
80 CUSOLVERDN_POTRF = 1
81} cusolverDnFunction_t;
82
83typedef enum {
84 CUSOLVER_DETERMINISTIC_RESULTS = 1,
85 CUSOLVER_ALLOW_NON_DETERMINISTIC_RESULTS = 2
86} cusolverDeterministicMode_t;
87
88 #include <stdio.h>
89
90 #include "cuComplex.h" /* import complex data type */
91 #include "cublas_v2.h"
92 #include "cusolver_common.h"
93
94 /*******************************************************************************/
95 #ifdef __cplusplus
96extern "C" {
97 #endif
98
99 cusolverStatus_t CUSOLVERAPI cusolverDnCreate(cusolverDnHandle_t *handle);
100 cusolverStatus_t CUSOLVERAPI cusolverDnDestroy(cusolverDnHandle_t handle);
101 cusolverStatus_t CUSOLVERAPI
102 cusolverDnSetStream(cusolverDnHandle_t handle, cudaStream_t streamId);
103 cusolverStatus_t CUSOLVERAPI
104 cusolverDnGetStream(cusolverDnHandle_t handle, cudaStream_t *streamId);
105
106 //============================================================
107 // Deterministic Mode
108 //============================================================
109 cusolverStatus_t CUSOLVERAPI cusolverDnSetDeterministicMode(cusolverDnHandle_t
110 handle, cusolverDeterministicMode_t mode);
111 cusolverStatus_t CUSOLVERAPI cusolverDnGetDeterministicMode(cusolverDnHandle_t
112 handle, cusolverDeterministicMode_t* mode);
113
114 //============================================================
115 // IRS headers
116 //============================================================
117
118 // =============================================================================
119 // IRS helper function API
120 // =============================================================================
121 cusolverStatus_t CUSOLVERAPI
122 cusolverDnIRSParamsCreate(cusolverDnIRSParams_t *params_ptr);
123
124 cusolverStatus_t CUSOLVERAPI
125 cusolverDnIRSParamsDestroy(cusolverDnIRSParams_t params);
126
127 cusolverStatus_t CUSOLVERAPI cusolverDnIRSParamsSetRefinementSolver(
128 cusolverDnIRSParams_t params,
129 cusolverIRSRefinement_t refinement_solver);
130
131 cusolverStatus_t CUSOLVERAPI cusolverDnIRSParamsSetSolverMainPrecision(
132 cusolverDnIRSParams_t params,
133 cusolverPrecType_t solver_main_precision);
134
135 cusolverStatus_t CUSOLVERAPI cusolverDnIRSParamsSetSolverLowestPrecision(
136 cusolverDnIRSParams_t params,
137 cusolverPrecType_t solver_lowest_precision);
138
139 cusolverStatus_t CUSOLVERAPI cusolverDnIRSParamsSetSolverPrecisions(
140 cusolverDnIRSParams_t params,
141 cusolverPrecType_t solver_main_precision,
142 cusolverPrecType_t solver_lowest_precision);
143
144 cusolverStatus_t CUSOLVERAPI
145 cusolverDnIRSParamsSetTol(cusolverDnIRSParams_t params, double val);
146
147 cusolverStatus_t CUSOLVERAPI
148 cusolverDnIRSParamsSetTolInner(cusolverDnIRSParams_t params, double val);
149
150 cusolverStatus_t CUSOLVERAPI cusolverDnIRSParamsSetMaxIters(
151 cusolverDnIRSParams_t params,
152 cusolver_int_t maxiters);
153
154 cusolverStatus_t CUSOLVERAPI cusolverDnIRSParamsSetMaxItersInner(
155 cusolverDnIRSParams_t params,
156 cusolver_int_t maxiters_inner);
157
158 cusolverStatus_t CUSOLVERAPI cusolverDnIRSParamsGetMaxIters(
159 cusolverDnIRSParams_t params,
160 cusolver_int_t * maxiters);
161
162 cusolverStatus_t CUSOLVERAPI
163 cusolverDnIRSParamsEnableFallback(cusolverDnIRSParams_t params);
164
165 cusolverStatus_t CUSOLVERAPI
166 cusolverDnIRSParamsDisableFallback(cusolverDnIRSParams_t params);
167
168 // =============================================================================
169 // cusolverDnIRSInfos prototypes
170 // =============================================================================
171 cusolverStatus_t CUSOLVERAPI
172 cusolverDnIRSInfosDestroy(cusolverDnIRSInfos_t infos);
173
174 cusolverStatus_t CUSOLVERAPI
175 cusolverDnIRSInfosCreate(cusolverDnIRSInfos_t *infos_ptr);
176
177 cusolverStatus_t CUSOLVERAPI cusolverDnIRSInfosGetNiters(
178 cusolverDnIRSInfos_t infos,
179 cusolver_int_t * niters);
180
181 cusolverStatus_t CUSOLVERAPI cusolverDnIRSInfosGetOuterNiters(
182 cusolverDnIRSInfos_t infos,
183 cusolver_int_t * outer_niters);
184
185 cusolverStatus_t CUSOLVERAPI
186 cusolverDnIRSInfosRequestResidual(cusolverDnIRSInfos_t infos);
187
188 cusolverStatus_t CUSOLVERAPI cusolverDnIRSInfosGetResidualHistory(
189 cusolverDnIRSInfos_t infos,
190 void ** residual_history);
191
192 cusolverStatus_t CUSOLVERAPI cusolverDnIRSInfosGetMaxIters(
193 cusolverDnIRSInfos_t infos,
194 cusolver_int_t * maxiters);
195
196 //============================================================
197 // IRS functions API
198 //============================================================
199
200 /*******************************************************************************/ /*
201 * [ZZ, ZC, ZK, ZE, ZY, CC, CK, CE, CY, DD, DS, DH, DB, DX, SS, SH, SB, SX]gesv
202 * users API Prototypes */
203 /*******************************************************************************/
204 cusolverStatus_t CUSOLVERAPI cusolverDnZZgesv(
205 cusolverDnHandle_t handle,
206 cusolver_int_t n,
207 cusolver_int_t nrhs,
208 cuDoubleComplex * dA,
209 cusolver_int_t ldda,
210 cusolver_int_t * dipiv,
211 cuDoubleComplex * dB,
212 cusolver_int_t lddb,
213 cuDoubleComplex * dX,
214 cusolver_int_t lddx,
215 void * dWorkspace,
216 size_t lwork_bytes,
217 cusolver_int_t * iter,
218 cusolver_int_t * d_info);
219
220 cusolverStatus_t CUSOLVERAPI cusolverDnZCgesv(
221 cusolverDnHandle_t handle,
222 cusolver_int_t n,
223 cusolver_int_t nrhs,
224 cuDoubleComplex * dA,
225 cusolver_int_t ldda,
226 cusolver_int_t * dipiv,
227 cuDoubleComplex * dB,
228 cusolver_int_t lddb,
229 cuDoubleComplex * dX,
230 cusolver_int_t lddx,
231 void * dWorkspace,
232 size_t lwork_bytes,
233 cusolver_int_t * iter,
234 cusolver_int_t * d_info);
235
236 cusolverStatus_t CUSOLVERAPI cusolverDnZKgesv(
237 cusolverDnHandle_t handle,
238 cusolver_int_t n,
239 cusolver_int_t nrhs,
240 cuDoubleComplex * dA,
241 cusolver_int_t ldda,
242 cusolver_int_t * dipiv,
243 cuDoubleComplex * dB,
244 cusolver_int_t lddb,
245 cuDoubleComplex * dX,
246 cusolver_int_t lddx,
247 void * dWorkspace,
248 size_t lwork_bytes,
249 cusolver_int_t * iter,
250 cusolver_int_t * d_info);
251
252 cusolverStatus_t CUSOLVERAPI cusolverDnZEgesv(
253 cusolverDnHandle_t handle,
254 cusolver_int_t n,
255 cusolver_int_t nrhs,
256 cuDoubleComplex * dA,
257 cusolver_int_t ldda,
258 cusolver_int_t * dipiv,
259 cuDoubleComplex * dB,
260 cusolver_int_t lddb,
261 cuDoubleComplex * dX,
262 cusolver_int_t lddx,
263 void * dWorkspace,
264 size_t lwork_bytes,
265 cusolver_int_t * iter,
266 cusolver_int_t * d_info);
267
268 cusolverStatus_t CUSOLVERAPI cusolverDnZYgesv(
269 cusolverDnHandle_t handle,
270 cusolver_int_t n,
271 cusolver_int_t nrhs,
272 cuDoubleComplex * dA,
273 cusolver_int_t ldda,
274 cusolver_int_t * dipiv,
275 cuDoubleComplex * dB,
276 cusolver_int_t lddb,
277 cuDoubleComplex * dX,
278 cusolver_int_t lddx,
279 void * dWorkspace,
280 size_t lwork_bytes,
281 cusolver_int_t * iter,
282 cusolver_int_t * d_info);
283
284 cusolverStatus_t CUSOLVERAPI cusolverDnCCgesv(
285 cusolverDnHandle_t handle,
286 cusolver_int_t n,
287 cusolver_int_t nrhs,
288 cuComplex * dA,
289 cusolver_int_t ldda,
290 cusolver_int_t * dipiv,
291 cuComplex * dB,
292 cusolver_int_t lddb,
293 cuComplex * dX,
294 cusolver_int_t lddx,
295 void * dWorkspace,
296 size_t lwork_bytes,
297 cusolver_int_t * iter,
298 cusolver_int_t * d_info);
299
300 cusolverStatus_t CUSOLVERAPI cusolverDnCEgesv(
301 cusolverDnHandle_t handle,
302 cusolver_int_t n,
303 cusolver_int_t nrhs,
304 cuComplex * dA,
305 cusolver_int_t ldda,
306 cusolver_int_t * dipiv,
307 cuComplex * dB,
308 cusolver_int_t lddb,
309 cuComplex * dX,
310 cusolver_int_t lddx,
311 void * dWorkspace,
312 size_t lwork_bytes,
313 cusolver_int_t * iter,
314 cusolver_int_t * d_info);
315
316 cusolverStatus_t CUSOLVERAPI cusolverDnCKgesv(
317 cusolverDnHandle_t handle,
318 cusolver_int_t n,
319 cusolver_int_t nrhs,
320 cuComplex * dA,
321 cusolver_int_t ldda,
322 cusolver_int_t * dipiv,
323 cuComplex * dB,
324 cusolver_int_t lddb,
325 cuComplex * dX,
326 cusolver_int_t lddx,
327 void * dWorkspace,
328 size_t lwork_bytes,
329 cusolver_int_t * iter,
330 cusolver_int_t * d_info);
331
332 cusolverStatus_t CUSOLVERAPI cusolverDnCYgesv(
333 cusolverDnHandle_t handle,
334 cusolver_int_t n,
335 cusolver_int_t nrhs,
336 cuComplex * dA,
337 cusolver_int_t ldda,
338 cusolver_int_t * dipiv,
339 cuComplex * dB,
340 cusolver_int_t lddb,
341 cuComplex * dX,
342 cusolver_int_t lddx,
343 void * dWorkspace,
344 size_t lwork_bytes,
345 cusolver_int_t * iter,
346 cusolver_int_t * d_info);
347
348 cusolverStatus_t CUSOLVERAPI cusolverDnDDgesv(
349 cusolverDnHandle_t handle,
350 cusolver_int_t n,
351 cusolver_int_t nrhs,
352 double * dA,
353 cusolver_int_t ldda,
354 cusolver_int_t * dipiv,
355 double * dB,
356 cusolver_int_t lddb,
357 double * dX,
358 cusolver_int_t lddx,
359 void * dWorkspace,
360 size_t lwork_bytes,
361 cusolver_int_t * iter,
362 cusolver_int_t * d_info);
363
364 cusolverStatus_t CUSOLVERAPI cusolverDnDSgesv(
365 cusolverDnHandle_t handle,
366 cusolver_int_t n,
367 cusolver_int_t nrhs,
368 double * dA,
369 cusolver_int_t ldda,
370 cusolver_int_t * dipiv,
371 double * dB,
372 cusolver_int_t lddb,
373 double * dX,
374 cusolver_int_t lddx,
375 void * dWorkspace,
376 size_t lwork_bytes,
377 cusolver_int_t * iter,
378 cusolver_int_t * d_info);
379
380 cusolverStatus_t CUSOLVERAPI cusolverDnDHgesv(
381 cusolverDnHandle_t handle,
382 cusolver_int_t n,
383 cusolver_int_t nrhs,
384 double * dA,
385 cusolver_int_t ldda,
386 cusolver_int_t * dipiv,
387 double * dB,
388 cusolver_int_t lddb,
389 double * dX,
390 cusolver_int_t lddx,
391 void * dWorkspace,
392 size_t lwork_bytes,
393 cusolver_int_t * iter,
394 cusolver_int_t * d_info);
395
396 cusolverStatus_t CUSOLVERAPI cusolverDnDBgesv(
397 cusolverDnHandle_t handle,
398 cusolver_int_t n,
399 cusolver_int_t nrhs,
400 double * dA,
401 cusolver_int_t ldda,
402 cusolver_int_t * dipiv,
403 double * dB,
404 cusolver_int_t lddb,
405 double * dX,
406 cusolver_int_t lddx,
407 void * dWorkspace,
408 size_t lwork_bytes,
409 cusolver_int_t * iter,
410 cusolver_int_t * d_info);
411
412 cusolverStatus_t CUSOLVERAPI cusolverDnDXgesv(
413 cusolverDnHandle_t handle,
414 cusolver_int_t n,
415 cusolver_int_t nrhs,
416 double * dA,
417 cusolver_int_t ldda,
418 cusolver_int_t * dipiv,
419 double * dB,
420 cusolver_int_t lddb,
421 double * dX,
422 cusolver_int_t lddx,
423 void * dWorkspace,
424 size_t lwork_bytes,
425 cusolver_int_t * iter,
426 cusolver_int_t * d_info);
427
428 cusolverStatus_t CUSOLVERAPI cusolverDnSSgesv(
429 cusolverDnHandle_t handle,
430 cusolver_int_t n,
431 cusolver_int_t nrhs,
432 float * dA,
433 cusolver_int_t ldda,
434 cusolver_int_t * dipiv,
435 float * dB,
436 cusolver_int_t lddb,
437 float * dX,
438 cusolver_int_t lddx,
439 void * dWorkspace,
440 size_t lwork_bytes,
441 cusolver_int_t * iter,
442 cusolver_int_t * d_info);
443
444 cusolverStatus_t CUSOLVERAPI cusolverDnSHgesv(
445 cusolverDnHandle_t handle,
446 cusolver_int_t n,
447 cusolver_int_t nrhs,
448 float * dA,
449 cusolver_int_t ldda,
450 cusolver_int_t * dipiv,
451 float * dB,
452 cusolver_int_t lddb,
453 float * dX,
454 cusolver_int_t lddx,
455 void * dWorkspace,
456 size_t lwork_bytes,
457 cusolver_int_t * iter,
458 cusolver_int_t * d_info);
459
460 cusolverStatus_t CUSOLVERAPI cusolverDnSBgesv(
461 cusolverDnHandle_t handle,
462 cusolver_int_t n,
463 cusolver_int_t nrhs,
464 float * dA,
465 cusolver_int_t ldda,
466 cusolver_int_t * dipiv,
467 float * dB,
468 cusolver_int_t lddb,
469 float * dX,
470 cusolver_int_t lddx,
471 void * dWorkspace,
472 size_t lwork_bytes,
473 cusolver_int_t * iter,
474 cusolver_int_t * d_info);
475
476 cusolverStatus_t CUSOLVERAPI cusolverDnSXgesv(
477 cusolverDnHandle_t handle,
478 cusolver_int_t n,
479 cusolver_int_t nrhs,
480 float * dA,
481 cusolver_int_t ldda,
482 cusolver_int_t * dipiv,
483 float * dB,
484 cusolver_int_t lddb,
485 float * dX,
486 cusolver_int_t lddx,
487 void * dWorkspace,
488 size_t lwork_bytes,
489 cusolver_int_t * iter,
490 cusolver_int_t * d_info);
491
492 /*******************************************************************************/
493
494 /*******************************************************************************/ /*
495 * [ZZ, ZC, ZK, ZE, ZY, CC, CK, CE, CY, DD, DS, DH, DB, DX, SS, SH, SB, SX]gesv_bufferSize
496 * users API Prototypes */
497 /*******************************************************************************/
498 cusolverStatus_t CUSOLVERAPI cusolverDnZZgesv_bufferSize(
499 cusolverDnHandle_t handle,
500 cusolver_int_t n,
501 cusolver_int_t nrhs,
502 cuDoubleComplex * dA,
503 cusolver_int_t ldda,
504 cusolver_int_t * dipiv,
505 cuDoubleComplex * dB,
506 cusolver_int_t lddb,
507 cuDoubleComplex * dX,
508 cusolver_int_t lddx,
509 void * dWorkspace,
510 size_t * lwork_bytes);
511
512 cusolverStatus_t CUSOLVERAPI cusolverDnZCgesv_bufferSize(
513 cusolverDnHandle_t handle,
514 cusolver_int_t n,
515 cusolver_int_t nrhs,
516 cuDoubleComplex * dA,
517 cusolver_int_t ldda,
518 cusolver_int_t * dipiv,
519 cuDoubleComplex * dB,
520 cusolver_int_t lddb,
521 cuDoubleComplex * dX,
522 cusolver_int_t lddx,
523 void * dWorkspace,
524 size_t * lwork_bytes);
525
526 cusolverStatus_t CUSOLVERAPI cusolverDnZKgesv_bufferSize(
527 cusolverDnHandle_t handle,
528 cusolver_int_t n,
529 cusolver_int_t nrhs,
530 cuDoubleComplex * dA,
531 cusolver_int_t ldda,
532 cusolver_int_t * dipiv,
533 cuDoubleComplex * dB,
534 cusolver_int_t lddb,
535 cuDoubleComplex * dX,
536 cusolver_int_t lddx,
537 void * dWorkspace,
538 size_t * lwork_bytes);
539
540 cusolverStatus_t CUSOLVERAPI cusolverDnZEgesv_bufferSize(
541 cusolverDnHandle_t handle,
542 cusolver_int_t n,
543 cusolver_int_t nrhs,
544 cuDoubleComplex * dA,
545 cusolver_int_t ldda,
546 cusolver_int_t * dipiv,
547 cuDoubleComplex * dB,
548 cusolver_int_t lddb,
549 cuDoubleComplex * dX,
550 cusolver_int_t lddx,
551 void * dWorkspace,
552 size_t * lwork_bytes);
553
554 cusolverStatus_t CUSOLVERAPI cusolverDnZYgesv_bufferSize(
555 cusolverDnHandle_t handle,
556 cusolver_int_t n,
557 cusolver_int_t nrhs,
558 cuDoubleComplex * dA,
559 cusolver_int_t ldda,
560 cusolver_int_t * dipiv,
561 cuDoubleComplex * dB,
562 cusolver_int_t lddb,
563 cuDoubleComplex * dX,
564 cusolver_int_t lddx,
565 void * dWorkspace,
566 size_t * lwork_bytes);
567
568 cusolverStatus_t CUSOLVERAPI cusolverDnCCgesv_bufferSize(
569 cusolverDnHandle_t handle,
570 cusolver_int_t n,
571 cusolver_int_t nrhs,
572 cuComplex * dA,
573 cusolver_int_t ldda,
574 cusolver_int_t * dipiv,
575 cuComplex * dB,
576 cusolver_int_t lddb,
577 cuComplex * dX,
578 cusolver_int_t lddx,
579 void * dWorkspace,
580 size_t * lwork_bytes);
581
582 cusolverStatus_t CUSOLVERAPI cusolverDnCKgesv_bufferSize(
583 cusolverDnHandle_t handle,
584 cusolver_int_t n,
585 cusolver_int_t nrhs,
586 cuComplex * dA,
587 cusolver_int_t ldda,
588 cusolver_int_t * dipiv,
589 cuComplex * dB,
590 cusolver_int_t lddb,
591 cuComplex * dX,
592 cusolver_int_t lddx,
593 void * dWorkspace,
594 size_t * lwork_bytes);
595
596 cusolverStatus_t CUSOLVERAPI cusolverDnCEgesv_bufferSize(
597 cusolverDnHandle_t handle,
598 cusolver_int_t n,
599 cusolver_int_t nrhs,
600 cuComplex * dA,
601 cusolver_int_t ldda,
602 cusolver_int_t * dipiv,
603 cuComplex * dB,
604 cusolver_int_t lddb,
605 cuComplex * dX,
606 cusolver_int_t lddx,
607 void * dWorkspace,
608 size_t * lwork_bytes);
609
610 cusolverStatus_t CUSOLVERAPI cusolverDnCYgesv_bufferSize(
611 cusolverDnHandle_t handle,
612 cusolver_int_t n,
613 cusolver_int_t nrhs,
614 cuComplex * dA,
615 cusolver_int_t ldda,
616 cusolver_int_t * dipiv,
617 cuComplex * dB,
618 cusolver_int_t lddb,
619 cuComplex * dX,
620 cusolver_int_t lddx,
621 void * dWorkspace,
622 size_t * lwork_bytes);
623
624 cusolverStatus_t CUSOLVERAPI cusolverDnDDgesv_bufferSize(
625 cusolverDnHandle_t handle,
626 cusolver_int_t n,
627 cusolver_int_t nrhs,
628 double * dA,
629 cusolver_int_t ldda,
630 cusolver_int_t * dipiv,
631 double * dB,
632 cusolver_int_t lddb,
633 double * dX,
634 cusolver_int_t lddx,
635 void * dWorkspace,
636 size_t * lwork_bytes);
637
638 cusolverStatus_t CUSOLVERAPI cusolverDnDSgesv_bufferSize(
639 cusolverDnHandle_t handle,
640 cusolver_int_t n,
641 cusolver_int_t nrhs,
642 double * dA,
643 cusolver_int_t ldda,
644 cusolver_int_t * dipiv,
645 double * dB,
646 cusolver_int_t lddb,
647 double * dX,
648 cusolver_int_t lddx,
649 void * dWorkspace,
650 size_t * lwork_bytes);
651
652 cusolverStatus_t CUSOLVERAPI cusolverDnDHgesv_bufferSize(
653 cusolverDnHandle_t handle,
654 cusolver_int_t n,
655 cusolver_int_t nrhs,
656 double * dA,
657 cusolver_int_t ldda,
658 cusolver_int_t * dipiv,
659 double * dB,
660 cusolver_int_t lddb,
661 double * dX,
662 cusolver_int_t lddx,
663 void * dWorkspace,
664 size_t * lwork_bytes);
665
666 cusolverStatus_t CUSOLVERAPI cusolverDnDBgesv_bufferSize(
667 cusolverDnHandle_t handle,
668 cusolver_int_t n,
669 cusolver_int_t nrhs,
670 double * dA,
671 cusolver_int_t ldda,
672 cusolver_int_t * dipiv,
673 double * dB,
674 cusolver_int_t lddb,
675 double * dX,
676 cusolver_int_t lddx,
677 void * dWorkspace,
678 size_t * lwork_bytes);
679
680 cusolverStatus_t CUSOLVERAPI cusolverDnDXgesv_bufferSize(
681 cusolverDnHandle_t handle,
682 cusolver_int_t n,
683 cusolver_int_t nrhs,
684 double * dA,
685 cusolver_int_t ldda,
686 cusolver_int_t * dipiv,
687 double * dB,
688 cusolver_int_t lddb,
689 double * dX,
690 cusolver_int_t lddx,
691 void * dWorkspace,
692 size_t * lwork_bytes);
693
694 cusolverStatus_t CUSOLVERAPI cusolverDnSSgesv_bufferSize(
695 cusolverDnHandle_t handle,
696 cusolver_int_t n,
697 cusolver_int_t nrhs,
698 float * dA,
699 cusolver_int_t ldda,
700 cusolver_int_t * dipiv,
701 float * dB,
702 cusolver_int_t lddb,
703 float * dX,
704 cusolver_int_t lddx,
705 void * dWorkspace,
706 size_t * lwork_bytes);
707
708 cusolverStatus_t CUSOLVERAPI cusolverDnSHgesv_bufferSize(
709 cusolverDnHandle_t handle,
710 cusolver_int_t n,
711 cusolver_int_t nrhs,
712 float * dA,
713 cusolver_int_t ldda,
714 cusolver_int_t * dipiv,
715 float * dB,
716 cusolver_int_t lddb,
717 float * dX,
718 cusolver_int_t lddx,
719 void * dWorkspace,
720 size_t * lwork_bytes);
721
722 cusolverStatus_t CUSOLVERAPI cusolverDnSBgesv_bufferSize(
723 cusolverDnHandle_t handle,
724 cusolver_int_t n,
725 cusolver_int_t nrhs,
726 float * dA,
727 cusolver_int_t ldda,
728 cusolver_int_t * dipiv,
729 float * dB,
730 cusolver_int_t lddb,
731 float * dX,
732 cusolver_int_t lddx,
733 void * dWorkspace,
734 size_t * lwork_bytes);
735
736 cusolverStatus_t CUSOLVERAPI cusolverDnSXgesv_bufferSize(
737 cusolverDnHandle_t handle,
738 cusolver_int_t n,
739 cusolver_int_t nrhs,
740 float * dA,
741 cusolver_int_t ldda,
742 cusolver_int_t * dipiv,
743 float * dB,
744 cusolver_int_t lddb,
745 float * dX,
746 cusolver_int_t lddx,
747 void * dWorkspace,
748 size_t * lwork_bytes);
749 /*******************************************************************************/
750
751 /*******************************************************************************/ /*
752 * [ZZ, ZC, ZK, ZE, ZY, CC, CK, CE, CY, DD, DS, DH, DB, DX, SS, SH, SB, SX]gels
753 * users API Prototypes */
754 /*******************************************************************************/
755 cusolverStatus_t CUSOLVERAPI cusolverDnZZgels(
756 cusolverDnHandle_t handle,
757 cusolver_int_t m,
758 cusolver_int_t n,
759 cusolver_int_t nrhs,
760 cuDoubleComplex * dA,
761 cusolver_int_t ldda,
762 cuDoubleComplex * dB,
763 cusolver_int_t lddb,
764 cuDoubleComplex * dX,
765 cusolver_int_t lddx,
766 void * dWorkspace,
767 size_t lwork_bytes,
768 cusolver_int_t * iter,
769 cusolver_int_t * d_info);
770
771 cusolverStatus_t CUSOLVERAPI cusolverDnZCgels(
772 cusolverDnHandle_t handle,
773 cusolver_int_t m,
774 cusolver_int_t n,
775 cusolver_int_t nrhs,
776 cuDoubleComplex * dA,
777 cusolver_int_t ldda,
778 cuDoubleComplex * dB,
779 cusolver_int_t lddb,
780 cuDoubleComplex * dX,
781 cusolver_int_t lddx,
782 void * dWorkspace,
783 size_t lwork_bytes,
784 cusolver_int_t * iter,
785 cusolver_int_t * d_info);
786
787 cusolverStatus_t CUSOLVERAPI cusolverDnZKgels(
788 cusolverDnHandle_t handle,
789 cusolver_int_t m,
790 cusolver_int_t n,
791 cusolver_int_t nrhs,
792 cuDoubleComplex * dA,
793 cusolver_int_t ldda,
794 cuDoubleComplex * dB,
795 cusolver_int_t lddb,
796 cuDoubleComplex * dX,
797 cusolver_int_t lddx,
798 void * dWorkspace,
799 size_t lwork_bytes,
800 cusolver_int_t * iter,
801 cusolver_int_t * d_info);
802
803 cusolverStatus_t CUSOLVERAPI cusolverDnZEgels(
804 cusolverDnHandle_t handle,
805 cusolver_int_t m,
806 cusolver_int_t n,
807 cusolver_int_t nrhs,
808 cuDoubleComplex * dA,
809 cusolver_int_t ldda,
810 cuDoubleComplex * dB,
811 cusolver_int_t lddb,
812 cuDoubleComplex * dX,
813 cusolver_int_t lddx,
814 void * dWorkspace,
815 size_t lwork_bytes,
816 cusolver_int_t * iter,
817 cusolver_int_t * d_info);
818
819 cusolverStatus_t CUSOLVERAPI cusolverDnZYgels(
820 cusolverDnHandle_t handle,
821 cusolver_int_t m,
822 cusolver_int_t n,
823 cusolver_int_t nrhs,
824 cuDoubleComplex * dA,
825 cusolver_int_t ldda,
826 cuDoubleComplex * dB,
827 cusolver_int_t lddb,
828 cuDoubleComplex * dX,
829 cusolver_int_t lddx,
830 void * dWorkspace,
831 size_t lwork_bytes,
832 cusolver_int_t * iter,
833 cusolver_int_t * d_info);
834
835 cusolverStatus_t CUSOLVERAPI cusolverDnCCgels(
836 cusolverDnHandle_t handle,
837 cusolver_int_t m,
838 cusolver_int_t n,
839 cusolver_int_t nrhs,
840 cuComplex * dA,
841 cusolver_int_t ldda,
842 cuComplex * dB,
843 cusolver_int_t lddb,
844 cuComplex * dX,
845 cusolver_int_t lddx,
846 void * dWorkspace,
847 size_t lwork_bytes,
848 cusolver_int_t * iter,
849 cusolver_int_t * d_info);
850
851 cusolverStatus_t CUSOLVERAPI cusolverDnCKgels(
852 cusolverDnHandle_t handle,
853 cusolver_int_t m,
854 cusolver_int_t n,
855 cusolver_int_t nrhs,
856 cuComplex * dA,
857 cusolver_int_t ldda,
858 cuComplex * dB,
859 cusolver_int_t lddb,
860 cuComplex * dX,
861 cusolver_int_t lddx,
862 void * dWorkspace,
863 size_t lwork_bytes,
864 cusolver_int_t * iter,
865 cusolver_int_t * d_info);
866
867 cusolverStatus_t CUSOLVERAPI cusolverDnCEgels(
868 cusolverDnHandle_t handle,
869 cusolver_int_t m,
870 cusolver_int_t n,
871 cusolver_int_t nrhs,
872 cuComplex * dA,
873 cusolver_int_t ldda,
874 cuComplex * dB,
875 cusolver_int_t lddb,
876 cuComplex * dX,
877 cusolver_int_t lddx,
878 void * dWorkspace,
879 size_t lwork_bytes,
880 cusolver_int_t * iter,
881 cusolver_int_t * d_info);
882
883 cusolverStatus_t CUSOLVERAPI cusolverDnCYgels(
884 cusolverDnHandle_t handle,
885 cusolver_int_t m,
886 cusolver_int_t n,
887 cusolver_int_t nrhs,
888 cuComplex * dA,
889 cusolver_int_t ldda,
890 cuComplex * dB,
891 cusolver_int_t lddb,
892 cuComplex * dX,
893 cusolver_int_t lddx,
894 void * dWorkspace,
895 size_t lwork_bytes,
896 cusolver_int_t * iter,
897 cusolver_int_t * d_info);
898
899 cusolverStatus_t CUSOLVERAPI cusolverDnDDgels(
900 cusolverDnHandle_t handle,
901 cusolver_int_t m,
902 cusolver_int_t n,
903 cusolver_int_t nrhs,
904 double * dA,
905 cusolver_int_t ldda,
906 double * dB,
907 cusolver_int_t lddb,
908 double * dX,
909 cusolver_int_t lddx,
910 void * dWorkspace,
911 size_t lwork_bytes,
912 cusolver_int_t * iter,
913 cusolver_int_t * d_info);
914
915 cusolverStatus_t CUSOLVERAPI cusolverDnDSgels(
916 cusolverDnHandle_t handle,
917 cusolver_int_t m,
918 cusolver_int_t n,
919 cusolver_int_t nrhs,
920 double * dA,
921 cusolver_int_t ldda,
922 double * dB,
923 cusolver_int_t lddb,
924 double * dX,
925 cusolver_int_t lddx,
926 void * dWorkspace,
927 size_t lwork_bytes,
928 cusolver_int_t * iter,
929 cusolver_int_t * d_info);
930
931 cusolverStatus_t CUSOLVERAPI cusolverDnDHgels(
932 cusolverDnHandle_t handle,
933 cusolver_int_t m,
934 cusolver_int_t n,
935 cusolver_int_t nrhs,
936 double * dA,
937 cusolver_int_t ldda,
938 double * dB,
939 cusolver_int_t lddb,
940 double * dX,
941 cusolver_int_t lddx,
942 void * dWorkspace,
943 size_t lwork_bytes,
944 cusolver_int_t * iter,
945 cusolver_int_t * d_info);
946
947 cusolverStatus_t CUSOLVERAPI cusolverDnDBgels(
948 cusolverDnHandle_t handle,
949 cusolver_int_t m,
950 cusolver_int_t n,
951 cusolver_int_t nrhs,
952 double * dA,
953 cusolver_int_t ldda,
954 double * dB,
955 cusolver_int_t lddb,
956 double * dX,
957 cusolver_int_t lddx,
958 void * dWorkspace,
959 size_t lwork_bytes,
960 cusolver_int_t * iter,
961 cusolver_int_t * d_info);
962
963 cusolverStatus_t CUSOLVERAPI cusolverDnDXgels(
964 cusolverDnHandle_t handle,
965 cusolver_int_t m,
966 cusolver_int_t n,
967 cusolver_int_t nrhs,
968 double * dA,
969 cusolver_int_t ldda,
970 double * dB,
971 cusolver_int_t lddb,
972 double * dX,
973 cusolver_int_t lddx,
974 void * dWorkspace,
975 size_t lwork_bytes,
976 cusolver_int_t * iter,
977 cusolver_int_t * d_info);
978
979 cusolverStatus_t CUSOLVERAPI cusolverDnSSgels(
980 cusolverDnHandle_t handle,
981 cusolver_int_t m,
982 cusolver_int_t n,
983 cusolver_int_t nrhs,
984 float * dA,
985 cusolver_int_t ldda,
986 float * dB,
987 cusolver_int_t lddb,
988 float * dX,
989 cusolver_int_t lddx,
990 void * dWorkspace,
991 size_t lwork_bytes,
992 cusolver_int_t * iter,
993 cusolver_int_t * d_info);
994
995 cusolverStatus_t CUSOLVERAPI cusolverDnSHgels(
996 cusolverDnHandle_t handle,
997 cusolver_int_t m,
998 cusolver_int_t n,
999 cusolver_int_t nrhs,
1000 float * dA,
1001 cusolver_int_t ldda,
1002 float * dB,
1003 cusolver_int_t lddb,
1004 float * dX,
1005 cusolver_int_t lddx,
1006 void * dWorkspace,
1007 size_t lwork_bytes,
1008 cusolver_int_t * iter,
1009 cusolver_int_t * d_info);
1010
1011 cusolverStatus_t CUSOLVERAPI cusolverDnSBgels(
1012 cusolverDnHandle_t handle,
1013 cusolver_int_t m,
1014 cusolver_int_t n,
1015 cusolver_int_t nrhs,
1016 float * dA,
1017 cusolver_int_t ldda,
1018 float * dB,
1019 cusolver_int_t lddb,
1020 float * dX,
1021 cusolver_int_t lddx,
1022 void * dWorkspace,
1023 size_t lwork_bytes,
1024 cusolver_int_t * iter,
1025 cusolver_int_t * d_info);
1026
1027 cusolverStatus_t CUSOLVERAPI cusolverDnSXgels(
1028 cusolverDnHandle_t handle,
1029 cusolver_int_t m,
1030 cusolver_int_t n,
1031 cusolver_int_t nrhs,
1032 float * dA,
1033 cusolver_int_t ldda,
1034 float * dB,
1035 cusolver_int_t lddb,
1036 float * dX,
1037 cusolver_int_t lddx,
1038 void * dWorkspace,
1039 size_t lwork_bytes,
1040 cusolver_int_t * iter,
1041 cusolver_int_t * d_info);
1042 /*******************************************************************************/
1043
1044 /*******************************************************************************/ /*
1045 * [ZZ, ZC, ZK, ZE, ZY, CC, CK, CE, CY, DD, DS, DH, DB, DX, SS, SH, SB, SX]gels_bufferSize
1046 * API prototypes */
1047 /*******************************************************************************/
1048 cusolverStatus_t CUSOLVERAPI cusolverDnZZgels_bufferSize(
1049 cusolverDnHandle_t handle,
1050 cusolver_int_t m,
1051 cusolver_int_t n,
1052 cusolver_int_t nrhs,
1053 cuDoubleComplex * dA,
1054 cusolver_int_t ldda,
1055 cuDoubleComplex * dB,
1056 cusolver_int_t lddb,
1057 cuDoubleComplex * dX,
1058 cusolver_int_t lddx,
1059 void * dWorkspace,
1060 size_t * lwork_bytes);
1061
1062 cusolverStatus_t CUSOLVERAPI cusolverDnZCgels_bufferSize(
1063 cusolverDnHandle_t handle,
1064 cusolver_int_t m,
1065 cusolver_int_t n,
1066 cusolver_int_t nrhs,
1067 cuDoubleComplex * dA,
1068 cusolver_int_t ldda,
1069 cuDoubleComplex * dB,
1070 cusolver_int_t lddb,
1071 cuDoubleComplex * dX,
1072 cusolver_int_t lddx,
1073 void * dWorkspace,
1074 size_t * lwork_bytes);
1075
1076 cusolverStatus_t CUSOLVERAPI cusolverDnZKgels_bufferSize(
1077 cusolverDnHandle_t handle,
1078 cusolver_int_t m,
1079 cusolver_int_t n,
1080 cusolver_int_t nrhs,
1081 cuDoubleComplex * dA,
1082 cusolver_int_t ldda,
1083 cuDoubleComplex * dB,
1084 cusolver_int_t lddb,
1085 cuDoubleComplex * dX,
1086 cusolver_int_t lddx,
1087 void * dWorkspace,
1088 size_t * lwork_bytes);
1089
1090 cusolverStatus_t CUSOLVERAPI cusolverDnZEgels_bufferSize(
1091 cusolverDnHandle_t handle,
1092 cusolver_int_t m,
1093 cusolver_int_t n,
1094 cusolver_int_t nrhs,
1095 cuDoubleComplex * dA,
1096 cusolver_int_t ldda,
1097 cuDoubleComplex * dB,
1098 cusolver_int_t lddb,
1099 cuDoubleComplex * dX,
1100 cusolver_int_t lddx,
1101 void * dWorkspace,
1102 size_t * lwork_bytes);
1103
1104 cusolverStatus_t CUSOLVERAPI cusolverDnZYgels_bufferSize(
1105 cusolverDnHandle_t handle,
1106 cusolver_int_t m,
1107 cusolver_int_t n,
1108 cusolver_int_t nrhs,
1109 cuDoubleComplex * dA,
1110 cusolver_int_t ldda,
1111 cuDoubleComplex * dB,
1112 cusolver_int_t lddb,
1113 cuDoubleComplex * dX,
1114 cusolver_int_t lddx,
1115 void * dWorkspace,
1116 size_t * lwork_bytes);
1117
1118 cusolverStatus_t CUSOLVERAPI cusolverDnCCgels_bufferSize(
1119 cusolverDnHandle_t handle,
1120 cusolver_int_t m,
1121 cusolver_int_t n,
1122 cusolver_int_t nrhs,
1123 cuComplex * dA,
1124 cusolver_int_t ldda,
1125 cuComplex * dB,
1126 cusolver_int_t lddb,
1127 cuComplex * dX,
1128 cusolver_int_t lddx,
1129 void * dWorkspace,
1130 size_t * lwork_bytes);
1131
1132 cusolverStatus_t CUSOLVERAPI cusolverDnCKgels_bufferSize(
1133 cusolverDnHandle_t handle,
1134 cusolver_int_t m,
1135 cusolver_int_t n,
1136 cusolver_int_t nrhs,
1137 cuComplex * dA,
1138 cusolver_int_t ldda,
1139 cuComplex * dB,
1140 cusolver_int_t lddb,
1141 cuComplex * dX,
1142 cusolver_int_t lddx,
1143 void * dWorkspace,
1144 size_t * lwork_bytes);
1145
1146 cusolverStatus_t CUSOLVERAPI cusolverDnCEgels_bufferSize(
1147 cusolverDnHandle_t handle,
1148 cusolver_int_t m,
1149 cusolver_int_t n,
1150 cusolver_int_t nrhs,
1151 cuComplex * dA,
1152 cusolver_int_t ldda,
1153 cuComplex * dB,
1154 cusolver_int_t lddb,
1155 cuComplex * dX,
1156 cusolver_int_t lddx,
1157 void * dWorkspace,
1158 size_t * lwork_bytes);
1159
1160 cusolverStatus_t CUSOLVERAPI cusolverDnCYgels_bufferSize(
1161 cusolverDnHandle_t handle,
1162 cusolver_int_t m,
1163 cusolver_int_t n,
1164 cusolver_int_t nrhs,
1165 cuComplex * dA,
1166 cusolver_int_t ldda,
1167 cuComplex * dB,
1168 cusolver_int_t lddb,
1169 cuComplex * dX,
1170 cusolver_int_t lddx,
1171 void * dWorkspace,
1172 size_t * lwork_bytes);
1173
1174 cusolverStatus_t CUSOLVERAPI cusolverDnDDgels_bufferSize(
1175 cusolverDnHandle_t handle,
1176 cusolver_int_t m,
1177 cusolver_int_t n,
1178 cusolver_int_t nrhs,
1179 double * dA,
1180 cusolver_int_t ldda,
1181 double * dB,
1182 cusolver_int_t lddb,
1183 double * dX,
1184 cusolver_int_t lddx,
1185 void * dWorkspace,
1186 size_t * lwork_bytes);
1187
1188 cusolverStatus_t CUSOLVERAPI cusolverDnDSgels_bufferSize(
1189 cusolverDnHandle_t handle,
1190 cusolver_int_t m,
1191 cusolver_int_t n,
1192 cusolver_int_t nrhs,
1193 double * dA,
1194 cusolver_int_t ldda,
1195 double * dB,
1196 cusolver_int_t lddb,
1197 double * dX,
1198 cusolver_int_t lddx,
1199 void * dWorkspace,
1200 size_t * lwork_bytes);
