COMPASS  5.4.4
End-to-end AO simulation tool using GPU acceleration
carma_cublas.h
Go to the documentation of this file.
1 // -----------------------------------------------------------------------------
2 // This file is part of COMPASS <https://anr-compass.github.io/compass/>
3 //
4 // Copyright (C) 2011-2023 COMPASS Team <https://github.com/ANR-COMPASS>
5 // All rights reserved.
6 
7 // -----------------------------------------------------------------------------
8 
15 
16 
17 #ifndef CARMA_CUBLAS_H_
18 #define CARMA_CUBLAS_H_
19 
20 #include <cuda_runtime_api.h>
21 /* Using updated (v2) interfaces to cublas */
22 #include <cublas_v2.h>
23 #include <string>
24 
25 #define carma_checkCublasStatus(status) \
26  __carma_checkCublasStatus(status, __LINE__, __FILE__)
27 
28 cublasStatus_t __carma_checkCublasStatus(cublasStatus_t status, int line,
29  std::string file);
30 
31 cublasStatus_t carma_init_cublas(cublasHandle_t *cublas_handle);
32 cublasStatus_t carma_shutdown_cublas(cublasHandle_t cublas_handle);
33 
34 cublasOperation_t carma_char2cublas_operation(char operation);
35 
36 /*
37  * _____ _____ __ __ ____ _ _ _____ _____ ____
38  *|_ _| ____| \/ | _ \| | / \|_ _| ____/ ___|
39  * | | | _| | |\/| | |_) | | / _ \ | | | _| \___ \
40  * | | | |___| | | | __/| |___ / ___ \| | | |___ ___) |
41  * |_| |_____|_| |_|_| |_____/_/ \_\_| |_____|____/
42  *
43  */
44 
45 template <class T_data>
46 int carma_where_amax(cublasHandle_t cublas_handle, int n, const T_data *vect,
47  int incx);
48 
49 template <class T_data>
50 int carma_where_amin(cublasHandle_t cublas_handle, int n, const T_data *vect,
51  int incx);
52 
53 template <class T_data>
54 T_data carma_getasum(cublasHandle_t cublas_handle, int n, const T_data *vect,
55  int incx);
56 
57 template <class T_data>
58 cublasStatus_t carma_axpy(cublasHandle_t cublas_handle, int n,
59  const T_data alpha, const T_data *vectx, int incx,
60  T_data *vecty, int incy);
61 
62 template <class T_data>
63 T_data carma_dot(cublasHandle_t cublas_handle, int n, T_data *vectx, int incx,
64  T_data *vecty, int incy);
65 
66 template <class T_data>
67 T_data carma_nrm2(cublasHandle_t cublas_handle, int n, T_data *vect, int incx);
68 
69 template <class T_data>
70 cublasStatus_t carma_rot(cublasHandle_t cublas_handle, int n, T_data *vectx,
71  int incx, T_data *vecty, int incy, T_data sc,
72  T_data ss);
73 
74 template <class T_data>
75 cublasStatus_t carma_scal(cublasHandle_t cublas_handle, int n, T_data alpha,
76  T_data *vectx, int incx);
77 
78 template <class T_data>
79 cublasStatus_t carma_swap(cublasHandle_t cublas_handle, int n, T_data *vectx,
80  int incx, T_data *vecty, int incy);
81 
82 template <class T_data>
83 cublasStatus_t carma_copy(cublasHandle_t cublas_handle, int n,
84  const T_data *vectx, int incx, T_data *vecty,
85  int incy);
86 
87 template <class T_data>
88 cublasStatus_t carma_gemv(cublasHandle_t cublas_handle, char trans, int m,
89  int n, T_data alpha, T_data *matA, int lda,
90  T_data *vectx, int incx, T_data beta, T_data *vecty,
91  int incy);
92 
93 template <class T_data>
94 cublasStatus_t carma_symv(cublasHandle_t cublas_handle, char uplo, int n,
95  T_data alpha, T_data *matA, int lda, T_data *vectx,
96  int incx, T_data beta, T_data *vecty, int incy);
97 
98 template <class T_data>
99 cublasStatus_t carma_ger(cublasHandle_t cublas_handle, int m, int n,
100  T_data alpha, T_data *vectx, int incx, T_data *vecty,
101  int incy, T_data *matA, int lda);
102 
103 template <class T_data>
104 cublasStatus_t carma_gemm(cublasHandle_t cublas_handle, char transa,
105  char transb, int m, int n, int k, T_data alpha,
106  T_data *matA, int lda, T_data *matB, int ldb,
107  T_data beta, T_data *matC, int ldc);
108 
109 template <class T_data>
110 cublasStatus_t carma_gemm_strided_batched(cublasHandle_t cublas_handle,
111  char transa, char transb, int m, int n, int k, T_data alpha,
112  T_data *matsA, int lda, long long int strideA,
113  T_data *matsB, int ldb, long long int strideB,
114  T_data beta, T_data *matsC, int ldc, long long int strideC,
115  int batch_count);
116 
117 template <class T_data>
118 cublasStatus_t carma_symm(cublasHandle_t cublas_handle, char side, char uplo,
119  int m, int n, T_data alpha, T_data *matA, int lda,
120  T_data *matB, int ldb, T_data beta, T_data *matC,
121  int ldc);
122 
123 template <class T_data>
124 cublasStatus_t carma_syrk(cublasHandle_t cublas_handle, char uplo, char transa,
125  int n, int k, T_data alpha, T_data *matA, int lda,
126  T_data beta, T_data *matC, int ldc);
127 
128 template <class T_data>
129 cublasStatus_t carma_syrkx(cublasHandle_t cublas_handle, char uplo, char transa,
130  int n, int k, T_data alpha, T_data *matA, int lda,
131  T_data *matB, int ldb, T_data beta, T_data *matC,
132  int ldc);
133 
134 template <class T_data>
135 cublasStatus_t carma_geam(cublasHandle_t cublas_handle, char transa,
136  char transb, int m, int n, T_data alpha, T_data *matA,
137  int lda, T_data beta, T_data *matB, int ldb,
138  T_data *matC, int ldc);
139 
140 template <class T_data>
141 cublasStatus_t carma_dgmm(cublasHandle_t cublas_handle, char side, int m, int n,
142  const T_data *matA, int lda, const T_data *vectx,
143  int incx, T_data *matC, int ldc);
144 
145 template <class T_data>
146 cublasStatus_t carma_sbmv(cublasHandle_t cublas_handle, char uplo, int N, int K, T_data alpha, T_data *A,
147  int lda, T_data *x, int incx, T_data beta, T_data *y, int incy);
148 #endif /* CARMA_CUBLAS_H_ */
T_data carma_dot(cublasHandle_t cublas_handle, int n, T_data *vectx, int incx, T_data *vecty, int incy)
cublasStatus_t __carma_checkCublasStatus(cublasStatus_t status, int line, std::string file)
cublasStatus_t carma_init_cublas(cublasHandle_t *cublas_handle)
cublasStatus_t carma_scal(cublasHandle_t cublas_handle, int n, T_data alpha, T_data *vectx, int incx)
cublasStatus_t carma_symv(cublasHandle_t cublas_handle, char uplo, int n, T_data alpha, T_data *matA, int lda, T_data *vectx, int incx, T_data beta, T_data *vecty, int incy)
cublasStatus_t carma_sbmv(cublasHandle_t cublas_handle, char uplo, int N, int K, T_data alpha, T_data *A, int lda, T_data *x, int incx, T_data beta, T_data *y, int incy)
cublasStatus_t carma_symm(cublasHandle_t cublas_handle, char side, char uplo, int m, int n, T_data alpha, T_data *matA, int lda, T_data *matB, int ldb, T_data beta, T_data *matC, int ldc)
cublasStatus_t carma_gemv(cublasHandle_t cublas_handle, char trans, int m, int n, T_data alpha, T_data *matA, int lda, T_data *vectx, int incx, T_data beta, T_data *vecty, int incy)
cublasStatus_t carma_geam(cublasHandle_t cublas_handle, char transa, char transb, int m, int n, T_data alpha, T_data *matA, int lda, T_data beta, T_data *matB, int ldb, T_data *matC, int ldc)
cublasStatus_t carma_dgmm(cublasHandle_t cublas_handle, char side, int m, int n, const T_data *matA, int lda, const T_data *vectx, int incx, T_data *matC, int ldc)
cublasStatus_t carma_gemm_strided_batched(cublasHandle_t cublas_handle, char transa, char transb, int m, int n, int k, T_data alpha, T_data *matsA, int lda, long long int strideA, T_data *matsB, int ldb, long long int strideB, T_data beta, T_data *matsC, int ldc, long long int strideC, int batch_count)
cublasStatus_t carma_syrk(cublasHandle_t cublas_handle, char uplo, char transa, int n, int k, T_data alpha, T_data *matA, int lda, T_data beta, T_data *matC, int ldc)
cublasOperation_t carma_char2cublas_operation(char operation)
cublasStatus_t carma_copy(cublasHandle_t cublas_handle, int n, const T_data *vectx, int incx, T_data *vecty, int incy)
cublasStatus_t carma_axpy(cublasHandle_t cublas_handle, int n, const T_data alpha, const T_data *vectx, int incx, T_data *vecty, int incy)
cublasStatus_t carma_rot(cublasHandle_t cublas_handle, int n, T_data *vectx, int incx, T_data *vecty, int incy, T_data sc, T_data ss)
cublasStatus_t carma_shutdown_cublas(cublasHandle_t cublas_handle)
cublasStatus_t carma_syrkx(cublasHandle_t cublas_handle, char uplo, char transa, int n, int k, T_data alpha, T_data *matA, int lda, T_data *matB, int ldb, T_data beta, T_data *matC, int ldc)
int carma_where_amax(cublasHandle_t cublas_handle, int n, const T_data *vect, int incx)
T_data carma_getasum(cublasHandle_t cublas_handle, int n, const T_data *vect, int incx)
T_data carma_nrm2(cublasHandle_t cublas_handle, int n, T_data *vect, int incx)
cublasStatus_t carma_gemm(cublasHandle_t cublas_handle, char transa, char transb, int m, int n, int k, T_data alpha, T_data *matA, int lda, T_data *matB, int ldb, T_data beta, T_data *matC, int ldc)
cublasStatus_t carma_swap(cublasHandle_t cublas_handle, int n, T_data *vectx, int incx, T_data *vecty, int incy)
cublasStatus_t carma_ger(cublasHandle_t cublas_handle, int m, int n, T_data alpha, T_data *vectx, int incx, T_data *vecty, int incy, T_data *matA, int lda)
int carma_where_amin(cublasHandle_t cublas_handle, int n, const T_data *vect, int incx)