imate
C++/CUDA Reference
cublas_interface.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright 2021, Siavash Ameli <sameli@berkeley.edu>
3  * SPDX-License-Identifier: BSD-3-Clause
4  * SPDX-FileType: SOURCE
5  *
6  * This program is free software: you can redistribute it and/or modify it
7  * under the terms of the license found in the LICENSE.txt file in the root
8  * directory of this source tree.
9  */
10 
11 #ifndef _CU_BASIC_ALGEBRA_CUBLAS_INTERFACE_H_
12 #define _CU_BASIC_ALGEBRA_CUBLAS_INTERFACE_H_
13 
14 
15 // =======
16 // Headers
17 // =======
18 
19 #include <cublas_v2.h> // cublasSgemv, cublasDgemv, cublasScopy, cublasDcopy,
20  // cublasSaxpy, cublasDaxpy, cublasSdot, cublasDdot,
21  // cublasSnrm2, cublasDnrm2, cublasSscal, cublasDscal
22  // cublasHandle_t, cublasStatus_t
23 
24 
25 // ================
26 // cublas interface
27 // ================
28 
32 
33 namespace cublas_interface
34 {
35  // cublasXgemv
36  template <typename DataType>
37  cublasStatus_t cublasXgemv(
38  cublasHandle_t handle,
39  cublasOperation_t trans,
40  int m,
41  int n,
42  const DataType* alpha,
43  const DataType* A,
44  int lda,
45  const DataType* x,
46  int incx,
47  const DataType* beta,
48  DataType* y,
49  int incy);
50 
51  // cublasXcopy
52  template <typename DataType>
53  cublasStatus_t cublasXcopy(
54  cublasHandle_t handle, int n,
55  const DataType* x,
56  int incx,
57  DataType* y,
58  int incy);
59 
60  // cublasXaxpy
61  template <typename DataType>
62  cublasStatus_t cublasXaxpy(
63  cublasHandle_t handle,
64  int n,
65  const DataType *alpha,
66  const DataType *x,
67  int incx,
68  DataType *y,
69  int incy);
70 
71  // cublasXdot
72  template <typename DataType>
73  cublasStatus_t cublasXdot(
74  cublasHandle_t handle,
75  int n,
76  const DataType *x,
77  int incx,
78  const DataType *y,
79  int incy,
80  DataType *result);
81 
82  // cublasXnrm2
83  template <typename DataType>
84  cublasStatus_t cublasXnrm2(
85  cublasHandle_t handle,
86  int n,
87  const DataType *x,
88  int incx,
89  DataType *result);
90 
91  // cublasXscal
92  template <typename DataType>
93  cublasStatus_t cublasXscal(
94  cublasHandle_t handle,
95  int n,
96  const DataType *alpha,
97  DataType *x,
98  int incx);
99 } // namespace cublas_interface
100 
101 
102 #endif // _CU_BASIC_ALGEBRA_CUBLAS_INTERFACE_H_
A collection of templates to wrapper cublas functions.
cublasStatus_t cublasXdot(cublasHandle_t handle, int n, const DataType *x, int incx, const DataType *y, int incy, DataType *result)
cublasStatus_t cublasXscal(cublasHandle_t handle, int n, const DataType *alpha, DataType *x, int incx)
cublasStatus_t cublasXnrm2(cublasHandle_t handle, int n, const DataType *x, int incx, DataType *result)
cublasStatus_t cublasXcopy(cublasHandle_t handle, int n, const DataType *x, int incx, DataType *y, int incy)
cublasStatus_t cublasXgemv(cublasHandle_t handle, cublasOperation_t trans, int m, int n, const DataType *alpha, const DataType *A, int lda, const DataType *x, int incx, const DataType *beta, DataType *y, int incy)
cublasStatus_t cublasXaxpy(cublasHandle_t handle, int n, const DataType *alpha, const DataType *x, int incx, DataType *y, int incy)