1 // SPDX-License-Identifier: Apache-2.0
3 * Copyright (C) 2020 Jijoong Moon <jijoong.moon@samsung.com>
5 * @file blas_interface.h
7 * @see https://github.com/nnstreamer/nntrainer
8 * @author Jijoong Moon <jijoong.moon@samsung.com>
9 * @bug No known bugs except for NYI items
10 * @brief This is dummy header for blas support
14 #ifndef __BLAS_INTERFACE_H_
15 #define __BLAS_INTERFACE_H_
23 enum CBLAS_ORDER { CblasRowMajor = 101, CblasColMajor = 102 };
25 enum CBLAS_TRANSPOSE {
34 #include <helper_cuda.h>
35 #include <helper_functions.h>
38 #include <tensor_dim.h>
42 void sscal(const unsigned int N, const float alpha, void *X, const int incX,
43 ml::train::TensorDim::DataType d_type);
45 void sscal(const unsigned int N, const float alpha, float *X, const int incX);
47 void sscal(const unsigned int N, const float alpha, __fp16 *X, const int incX);
49 float snrm2(const int N, const float *X, const int incX);
51 __fp16 snrm2(const int N, const __fp16 *X, const int incX);
53 void scopy(const unsigned int N, const void *X, const int incX, void *Y,
54 const int incY, ml::train::TensorDim::DataType d_type);
56 void scopy(const unsigned int N, const float *X, const int incX, float *Y,
59 void scopy(const unsigned int N, const __fp16 *X, const int incX, __fp16 *Y,
62 float sdot(const unsigned int N, const float *X, const unsigned int incX,
63 const float *Y, const unsigned int incY);
65 __fp16 sdot(const unsigned int N, const __fp16 *X, const unsigned int incX,
66 const __fp16 *Y, const unsigned int incY);
68 void saxpy(const unsigned int N, const float alpha, const void *X,
69 const int incX, void *Y, const int incY,
70 ml::train::TensorDim::DataType d_type);
72 void saxpy(const unsigned int N, const float alpha, const float *X,
73 const int incX, float *Y, const int incY);
75 void saxpy(const unsigned int N, const float alpha, const __fp16 *X,
76 const int incX, __fp16 *Y, const int incY);
78 void sgemm(CBLAS_ORDER order, CBLAS_TRANSPOSE TransA, CBLAS_TRANSPOSE TransB,
79 const unsigned int M, const unsigned int N, const unsigned int K,
80 const float alpha, const void *A, const unsigned int lda,
81 const void *B, const unsigned int ldb, const float beta, void *C,
82 const unsigned int ldc, ml::train::TensorDim::DataType d_type);
84 void sgemm(CBLAS_ORDER order, CBLAS_TRANSPOSE TransA, CBLAS_TRANSPOSE TransB,
85 const unsigned int M, const unsigned int N, const unsigned int K,
86 const float alpha, const float *A, const unsigned int lda,
87 const float *B, const unsigned int ldb, const float beta, float *C,
88 const unsigned int ldc);
90 void sgemm(CBLAS_ORDER order, CBLAS_TRANSPOSE TransA, CBLAS_TRANSPOSE TransB,
91 const unsigned int M, const unsigned int N, const unsigned int K,
92 const float alpha, const __fp16 *A, const unsigned int lda,
93 const __fp16 *B, const unsigned int ldb, const float beta, __fp16 *C,
94 const unsigned int ldc);
96 void sgemv(CBLAS_ORDER order, CBLAS_TRANSPOSE TransA, const unsigned int M,
97 const unsigned int N, const float alpha, const void *A,
98 const unsigned int lda, const void *X, const int incX,
99 const float beta, void *Y, const int incY,
100 ml::train::TensorDim::DataType d_type);
102 void sgemv(CBLAS_ORDER order, CBLAS_TRANSPOSE TransA, const unsigned int M,
103 const unsigned int N, const float alpha, const float *A,
104 const unsigned int lda, const float *X, const int incX,
105 const float beta, float *Y, const int incY);
107 void sgemv(CBLAS_ORDER order, CBLAS_TRANSPOSE TransA, const unsigned int M,
108 const unsigned int N, const float alpha, const __fp16 *A,
109 const unsigned int lda, const __fp16 *X, const int incX,
110 const float beta, __fp16 *Y, const int incY);
112 unsigned int isamax(const unsigned int N, const float *X, const int incX);
114 unsigned int isamax(const unsigned int N, const __fp16 *X, const int incX);
116 } /* namespace nntrainer */
117 #endif /* __cplusplus */
118 #endif /* __BLAS_INTERFACE_H__ */