codekingpro/portable-devtools
114k
1/*
2 * Copyright 1993-2019 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#if !defined(NVBLAS_H_)
51#define NVBLAS_H_
52
53#include "driver_types.h"
54#include "cuComplex.h" /* import complex data type */
55
56#if defined(__cplusplus)
57extern "C" {
58#endif
59
60/* GEMM */
61void sgemm_(const char* transa,
62 const char* transb,
63 const int* m,
64 const int* n,
65 const int* k,
66 const float* alpha,
67 const float* a,
68 const int* lda,
69 const float* b,
70 const int* ldb,
71 const float* beta,
72 float* c,
73 const int* ldc);
74
75void dgemm_(const char* transa,
76 const char* transb,
77 const int* m,
78 const int* n,
79 const int* k,
80 const double* alpha,
81 const double* a,
82 const int* lda,
83 const double* b,
84 const int* ldb,
85 const double* beta,
86 double* c,
87 const int* ldc);
88
89void cgemm_(const char* transa,
90 const char* transb,
91 const int* m,
92 const int* n,
93 const int* k,
94 const cuComplex* alpha,
95 const cuComplex* a,
96 const int* lda,
97 const cuComplex* b,
98 const int* ldb,
99 const cuComplex* beta,
100 cuComplex* c,
101 const int* ldc);
102
103void zgemm_(const char* transa,
104 const char* transb,
105 const int* m,
106 const int* n,
107 const int* k,
108 const cuDoubleComplex* alpha,
109 const cuDoubleComplex* a,
110 const int* lda,
111 const cuDoubleComplex* b,
112 const int* ldb,
113 const cuDoubleComplex* beta,
114 cuDoubleComplex* c,
115 const int* ldc);
116
117void sgemm(const char* transa,
118 const char* transb,
119 const int* m,
120 const int* n,
121 const int* k,
122 const float* alpha,
123 const float* a,
124 const int* lda,
125 const float* b,
126 const int* ldb,
127 const float* beta,
128 float* c,
129 const int* ldc);
130
131void dgemm(const char* transa,
132 const char* transb,
133 const int* m,
134 const int* n,
135 const int* k,
136 const double* alpha,
137 const double* a,
138 const int* lda,
139 const double* b,
140 const int* ldb,
141 const double* beta,
142 double* c,
143 const int* ldc);
144
145void cgemm(const char* transa,
146 const char* transb,
147 const int* m,
148 const int* n,
149 const int* k,
150 const cuComplex* alpha,
151 const cuComplex* a,
152 const int* lda,
153 const cuComplex* b,
154 const int* ldb,
155 const cuComplex* beta,
156 cuComplex* c,
157 const int* ldc);
158
159void zgemm(const char* transa,
160 const char* transb,
161 const int* m,
162 const int* n,
163 const int* k,
164 const cuDoubleComplex* alpha,
165 const cuDoubleComplex* a,
166 const int* lda,
167 const cuDoubleComplex* b,
168 const int* ldb,
169 const cuDoubleComplex* beta,
170 cuDoubleComplex* c,
171 const int* ldc);
172
173/* SYRK */
174void ssyrk_(const char* uplo,
175 const char* trans,
176 const int* n,
177 const int* k,
178 const float* alpha,
179 const float* a,
180 const int* lda,
181 const float* beta,
182 float* c,
183 const int* ldc);
184
185void dsyrk_(const char* uplo,
186 const char* trans,
187 const int* n,
188 const int* k,
189 const double* alpha,
190 const double* a,
191 const int* lda,
192 const double* beta,
193 double* c,
194 const int* ldc);
195
196void csyrk_(const char* uplo,
197 const char* trans,
198 const int* n,
199 const int* k,
200 const cuComplex* alpha,
201 const cuComplex* a,
202 const int* lda,
203 const cuComplex* beta,
204 cuComplex* c,
205 const int* ldc);
206
207void zsyrk_(const char* uplo,
208 const char* trans,
209 const int* n,
210 const int* k,
211 const cuDoubleComplex* alpha,
212 const cuDoubleComplex* a,
213 const int* lda,
214 const cuDoubleComplex* beta,
215 cuDoubleComplex* c,
216 const int* ldc);
217
218void ssyrk(const char* uplo,
219 const char* trans,
220 const int* n,
221 const int* k,
222 const float* alpha,
223 const float* a,
224 const int* lda,
225 const float* beta,
226 float* c,
227 const int* ldc);
228
229void dsyrk(const char* uplo,
230 const char* trans,
231 const int* n,
232 const int* k,
233 const double* alpha,
234 const double* a,
235 const int* lda,
236 const double* beta,
237 double* c,
238 const int* ldc);
239
240void csyrk(const char* uplo,
241 const char* trans,
242 const int* n,
243 const int* k,
244 const cuComplex* alpha,
245 const cuComplex* a,
246 const int* lda,
247 const cuComplex* beta,
248 cuComplex* c,
249 const int* ldc);
250
251void zsyrk(const char* uplo,
252 const char* trans,
253 const int* n,
254 const int* k,
255 const cuDoubleComplex* alpha,
256 const cuDoubleComplex* a,
257 const int* lda,
258 const cuDoubleComplex* beta,
259 cuDoubleComplex* c,
260 const int* ldc);
261
262/* HERK */
263void cherk_(const char* uplo,
264 const char* trans,
265 const int* n,
266 const int* k,
267 const float* alpha,
268 const cuComplex* a,
269 const int* lda,
270 const float* beta,
271 cuComplex* c,
272 const int* ldc);
273
274void zherk_(const char* uplo,
275 const char* trans,
276 const int* n,
277 const int* k,
278 const double* alpha,
279 const cuDoubleComplex* a,
280 const int* lda,
281 const double* beta,
282 cuDoubleComplex* c,
283 const int* ldc);
284
285void cherk(const char* uplo,
286 const char* trans,
287 const int* n,
288 const int* k,
289 const float* alpha,
290 const cuComplex* a,
291 const int* lda,
292 const float* beta,
293 cuComplex* c,
294 const int* ldc);
295
296void zherk(const char* uplo,
297 const char* trans,
298 const int* n,
299 const int* k,
300 const double* alpha,
301 const cuDoubleComplex* a,
302 const int* lda,
303 const double* beta,
304 cuDoubleComplex* c,
305 const int* ldc);
306
307/* TRSM */
308void strsm_(const char* side,
309 const char* uplo,
310 const char* transa,
311 const char* diag,
312 const int* m,
313 const int* n,
314 const float* alpha,
315 const float* a,
316 const int* lda,
317 float* b,
318 const int* ldb);
319
320void dtrsm_(const char* side,
321 const char* uplo,
322 const char* transa,
323 const char* diag,
324 const int* m,
325 const int* n,
326 const double* alpha,
327 const double* a,
328 const int* lda,
329 double* b,
330 const int* ldb);
331
332void ctrsm_(const char* side,
333 const char* uplo,
334 const char* transa,
335 const char* diag,
336 const int* m,
337 const int* n,
338 const cuComplex* alpha,
339 const cuComplex* a,
340 const int* lda,
341 cuComplex* b,
342 const int* ldb);
343
344void ztrsm_(const char* side,
345 const char* uplo,
346 const char* transa,
347 const char* diag,
348 const int* m,
349 const int* n,
350 const cuDoubleComplex* alpha,
351 const cuDoubleComplex* a,
352 const int* lda,
353 cuDoubleComplex* b,
354 const int* ldb);
355
356void strsm(const char* side,
357 const char* uplo,
358 const char* transa,
359 const char* diag,
360 const int* m,
361 const int* n,
362 const float* alpha,
363 const float* a,
364 const int* lda,
365 float* b,
366 const int* ldb);
367
368void dtrsm(const char* side,
369 const char* uplo,
370 const char* transa,
371 const char* diag,
372 const int* m,
373 const int* n,
374 const double* alpha,
375 const double* a,
376 const int* lda,
377 double* b,
378 const int* ldb);
379
380void ctrsm(const char* side,
381 const char* uplo,
382 const char* transa,
383 const char* diag,
384 const int* m,
385 const int* n,
386 const cuComplex* alpha,
387 const cuComplex* a,
388 const int* lda,
389 cuComplex* b,
390 const int* ldb);
391
392void ztrsm(const char* side,
393 const char* uplo,
394 const char* transa,
395 const char* diag,
396 const int* m,
397 const int* n,
398 const cuDoubleComplex* alpha,
399 const cuDoubleComplex* a,
400 const int* lda,
401 cuDoubleComplex* b,
402 const int* ldb);
403
404/* SYMM */
405void ssymm_(const char* side,
406 const char* uplo,
407 const int* m,
408 const int* n,
409 const float* alpha,
410 const float* a,
411 const int* lda,
412 const float* b,
413 const int* ldb,
414 const float* beta,
415 float* c,
416 const int* ldc);
417
418void dsymm_(const char* side,
419 const char* uplo,
420 const int* m,
421 const int* n,
422 const double* alpha,
423 const double* a,
424 const int* lda,
425 const double* b,
426 const int* ldb,
427 const double* beta,
428 double* c,
429 const int* ldc);
430
431void csymm_(const char* side,
432 const char* uplo,
433 const int* m,
434 const int* n,
435 const cuComplex* alpha,
436 const cuComplex* a,
437 const int* lda,
438 const cuComplex* b,
439 const int* ldb,
440 const cuComplex* beta,
441 cuComplex* c,
442 const int* ldc);
443
444void zsymm_(const char* side,
445 const char* uplo,
446 const int* m,
447 const int* n,
448 const cuDoubleComplex* alpha,
449 const cuDoubleComplex* a,
450 const int* lda,
451 const cuDoubleComplex* b,
452 const int* ldb,
453 const cuDoubleComplex* beta,
454 cuDoubleComplex* c,
455 const int* ldc);
456
457void ssymm(const char* side,
458 const char* uplo,
459 const int* m,
460 const int* n,
461 const float* alpha,
462 const float* a,
463 const int* lda,
464 const float* b,
465 const int* ldb,
466 const float* beta,
467 float* c,
468 const int* ldc);
469
470void dsymm(const char* side,
471 const char* uplo,
472 const int* m,
473 const int* n,
474 const double* alpha,
475 const double* a,
476 const int* lda,
477 const double* b,
478 const int* ldb,
479 const double* beta,
480 double* c,
481 const int* ldc);
482
483void csymm(const char* side,
484 const char* uplo,
485 const int* m,
486 const int* n,
487 const cuComplex* alpha,
488 const cuComplex* a,
489 const int* lda,
490 const cuComplex* b,
491 const int* ldb,
492 const cuComplex* beta,
493 cuComplex* c,
494 const int* ldc);
495
496void zsymm(const char* side,
497 const char* uplo,
498 const int* m,
499 const int* n,
500 const cuDoubleComplex* alpha,
501 const cuDoubleComplex* a,
502 const int* lda,
503 const cuDoubleComplex* b,
504 const int* ldb,
505 const cuDoubleComplex* beta,
506 cuDoubleComplex* c,
507 const int* ldc);
508
509/* HEMM */
510void chemm_(const char* side,
511 const char* uplo,
512 const int* m,
513 const int* n,
514 const cuComplex* alpha,
515 const cuComplex* a,
516 const int* lda,
517 const cuComplex* b,
518 const int* ldb,
519 const cuComplex* beta,
520 cuComplex* c,
521 const int* ldc);
522
523void zhemm_(const char* side,
524 const char* uplo,
525 const int* m,
526 const int* n,
527 const cuDoubleComplex* alpha,
528 const cuDoubleComplex* a,
529 const int* lda,
530 const cuDoubleComplex* b,
531 const int* ldb,
532 const cuDoubleComplex* beta,
533 cuDoubleComplex* c,
534 const int* ldc);
535
536/* HEMM with no underscore*/
537void chemm(const char* side,
538 const char* uplo,
539 const int* m,
540 const int* n,
541 const cuComplex* alpha,
542 const cuComplex* a,
543 const int* lda,
544 const cuComplex* b,
545 const int* ldb,
546 const cuComplex* beta,
547 cuComplex* c,
548 const int* ldc);
549
550void zhemm(const char* side,
551 const char* uplo,
552 const int* m,
553 const int* n,
554 const cuDoubleComplex* alpha,
555 const cuDoubleComplex* a,
556 const int* lda,
557 const cuDoubleComplex* b,
558 const int* ldb,
559 const cuDoubleComplex* beta,
560 cuDoubleComplex* c,
561 const int* ldc);
562
563/* SYR2K */
564void ssyr2k_(const char* uplo,
565 const char* trans,
566 const int* n,
567 const int* k,
568 const float* alpha,
569 const float* a,
570 const int* lda,
571 const float* b,
572 const int* ldb,
573 const float* beta,
574 float* c,
575 const int* ldc);
576
577void dsyr2k_(const char* uplo,
578 const char* trans,
579 const int* n,
580 const int* k,
581 const double* alpha,
582 const double* a,
583 const int* lda,
584 const double* b,
585 const int* ldb,
586 const double* beta,
587 double* c,
588 const int* ldc);
589
590void csyr2k_(const char* uplo,
591 const char* trans,
592 const int* n,
593 const int* k,
594 const cuComplex* alpha,
595 const cuComplex* a,
596 const int* lda,
597 const cuComplex* b,
598 const int* ldb,
599 const cuComplex* beta,
600 cuComplex* c,
601 const int* ldc);
602
603void zsyr2k_(const char* uplo,
604 const char* trans,
605 const int* n,
606 const int* k,
607 const cuDoubleComplex* alpha,
608 const cuDoubleComplex* a,
609 const int* lda,
610 const cuDoubleComplex* b,
611 const int* ldb,
612 const cuDoubleComplex* beta,
613 cuDoubleComplex* c,
614 const int* ldc);
615
616/* SYR2K no_underscore*/
617void ssyr2k(const char* uplo,
618 const char* trans,
619 const int* n,
620 const int* k,
621 const float* alpha,
622 const float* a,
623 const int* lda,
624 const float* b,
625 const int* ldb,
626 const float* beta,
627 float* c,
628 const int* ldc);
629
630void dsyr2k(const char* uplo,
631 const char* trans,
632 const int* n,
633 const int* k,
634 const double* alpha,
635 const double* a,
636 const int* lda,
637 const double* b,
638 const int* ldb,
639 const double* beta,
640 double* c,
641 const int* ldc);
642
643void csyr2k(const char* uplo,
644 const char* trans,
645 const int* n,
646 const int* k,
647 const cuComplex* alpha,
648 const cuComplex* a,
649 const int* lda,
650 const cuComplex* b,
651 const int* ldb,
652 const cuComplex* beta,
653 cuComplex* c,
654 const int* ldc);
655
656void zsyr2k(const char* uplo,
657 const char* trans,
658 const int* n,
659 const int* k,
660 const cuDoubleComplex* alpha,
661 const cuDoubleComplex* a,
662 const int* lda,
663 const cuDoubleComplex* b,
664 const int* ldb,
665 const cuDoubleComplex* beta,
666 cuDoubleComplex* c,
667 const int* ldc);
668
669/* HERK */
670void cher2k_(const char* uplo,
671 const char* trans,
672 const int* n,
673 const int* k,
674 const cuComplex* alpha,
675 const cuComplex* a,
676 const int* lda,
677 const cuComplex* b,
678 const int* ldb,
679 const float* beta,
680 cuComplex* c,
681 const int* ldc);
682
683void zher2k_(const char* uplo,
684 const char* trans,
685 const int* n,
686 const int* k,
687 const cuDoubleComplex* alpha,
688 const cuDoubleComplex* a,
689 const int* lda,
690 const cuDoubleComplex* b,
691 const int* ldb,
692 const double* beta,
693 cuDoubleComplex* c,
694 const int* ldc);
695
696/* HER2K with no underscore */
697void cher2k(const char* uplo,
698 const char* trans,
699 const int* n,
700 const int* k,
701 const cuComplex* alpha,
702 const cuComplex* a,
703 const int* lda,
704 const cuComplex* b,
705 const int* ldb,
706 const float* beta,
707 cuComplex* c,
708 const int* ldc);
709
710void zher2k(const char* uplo,
711 const char* trans,
712 const int* n,
713 const int* k,
714 const cuDoubleComplex* alpha,
715 const cuDoubleComplex* a,
716 const int* lda,
717 const cuDoubleComplex* b,
718 const int* ldb,
719 const double* beta,
720 cuDoubleComplex* c,
721 const int* ldc);
722
723/* TRMM */
724void strmm_(const char* side,
725 const char* uplo,
726 const char* transa,
727 const char* diag,
728 const int* m,
729 const int* n,
730 const float* alpha,
731 const float* a,
732 const int* lda,
733 float* b,
734 const int* ldb);
735
736void dtrmm_(const char* side,
737 const char* uplo,
738 const char* transa,
739 const char* diag,
740 const int* m,
741 const int* n,
742 const double* alpha,
743 const double* a,
744 const int* lda,
745 double* b,
746 const int* ldb);
747
748void ctrmm_(const char* side,
749 const char* uplo,
750 const char* transa,
751 const char* diag,
752 const int* m,
753 const int* n,
754 const cuComplex* alpha,
755 const cuComplex* a,
756 const int* lda,
757 cuComplex* b,
758 const int* ldb);
759
760void ztrmm_(const char* side,
761 const char* uplo,
762 const char* transa,
763 const char* diag,
764 const int* m,
765 const int* n,
766 const cuDoubleComplex* alpha,
767 const cuDoubleComplex* a,
768 const int* lda,
769 cuDoubleComplex* b,
770 const int* ldb);
771
772void strmm(const char* side,
773 const char* uplo,
774 const char* transa,
775 const char* diag,
776 const int* m,
777 const int* n,
778 const float* alpha,
779 const float* a,
780 const int* lda,
781 float* b,
782 const int* ldb);
783
784void dtrmm(const char* side,
785 const char* uplo,
786 const char* transa,
787 const char* diag,
788 const int* m,
789 const int* n,
790 const double* alpha,
791 const double* a,
792 const int* lda,
793 double* b,
794 const int* ldb);
795
796void ctrmm(const char* side,
797 const char* uplo,
798 const char* transa,
799 const char* diag,
800 const int* m,
801 const int* n,
802 const cuComplex* alpha,
803 const cuComplex* a,
804 const int* lda,
805 cuComplex* b,
806 const int* ldb);
807
808void ztrmm(const char* side,
809 const char* uplo,
810 const char* transa,
811 const char* diag,
812 const int* m,
813 const int* n,
814 const cuDoubleComplex* alpha,
815 const cuDoubleComplex* a,
816 const int* lda,
817 cuDoubleComplex* b,
818 const int* ldb);
819
820#if defined(__cplusplus)
821}
822#endif /* __cplusplus */
823
824#endif /* !defined(NVBLAS_H_) */
825 