17 #ifndef CARMA_CUBLAS_H_
18 #define CARMA_CUBLAS_H_
20 #include <cuda_runtime_api.h>
22 #include <cublas_v2.h>
25 #define carma_checkCublasStatus(status) \
26 __carma_checkCublasStatus(status, __LINE__, __FILE__)
45 template <
class T_data>
49 template <
class T_data>
53 template <
class T_data>
54 T_data
carma_getasum(cublasHandle_t cublas_handle,
int n,
const T_data *vect,
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);
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);
66 template <
class T_data>
67 T_data
carma_nrm2(cublasHandle_t cublas_handle,
int n, T_data *vect,
int incx);
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,
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);
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);
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,
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,
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);
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);
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);
109 template <
class T_data>
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,
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,
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);
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,
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);
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);
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);
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)