|
- /**
- * @file acl_cblas.h
- *
- * Copyright (C) Huawei Technologies Co., Ltd. 2019-2020. All Rights Reserved.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- */
- #ifndef INC_EXTERNAL_ACL_OPS_ACL_CBLAS_H_
- #define INC_EXTERNAL_ACL_OPS_ACL_CBLAS_H_
-
- #include "../acl.h"
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- typedef enum aclTransType {
- ACL_TRANS_N,
- ACL_TRANS_T,
- ACL_TRANS_NZ,
- ACL_TRANS_NZ_T
- } aclTransType;
-
- typedef enum aclComputeType {
- ACL_COMPUTE_HIGH_PRECISION,
- ACL_COMPUTE_LOW_PRECISION
- } aclComputeType;
-
- /**
- * @ingroup AscendCL
- * @brief perform the matrix-vector multiplication
- *
- * @param transA [IN] transpose type of matrix A
- * @param m [IN] number of rows of matrix A
- * @param n [IN] number of columns of matrix A
- * @param alpha [IN] pointer to scalar used for multiplication.
- * of same type as dataTypeC
- * @param a [IN] pointer to matrix A
- * @param lda [IN] leading dimension used to store the matrix A
- * @param dataTypeA [IN] datatype of matrix A
- * @param x [IN] pointer to vector x
- * @param incx [IN] stride between consecutive elements of vector x
- * @param dataTypeX [IN] datatype of vector x
- * @param beta [IN] pointer to scalar used for multiplication.
- * of same type as dataTypeC If beta == 0,
- * then y does not have to be a valid input
- * @param y [IN|OUT] pointer to vector y
- * @param incy [IN] stride between consecutive elements of vector y
- * @param dataTypeY [IN] datatype of vector y
- * @param type [IN] computation type
- * @param stream [IN] stream
- * @retval ACL_ERROR_NONE The function is successfully executed.
- * @retval OtherValues Failure
- */
- ACL_FUNC_VISIBILITY aclError aclblasGemvEx(aclTransType transA, int m, int n,
- const void *alpha, const void *a, int lda, aclDataType dataTypeA,
- const void *x, int incx, aclDataType dataTypeX,
- const void *beta, void *y, int incy, aclDataType dataTypeY,
- aclComputeType type, aclrtStream stream);
-
- /**
- * @ingroup AscendCL
- * @brief create a handle for performing the matrix-vector multiplication
- *
- * @param transA [IN] transpose type of matrix A
- * @param m [IN] number of rows of matrix A
- * @param n [IN] number of columns of matrix A
- * @param dataTypeA [IN] datatype of matrix A
- * @param dataTypeX [IN] datatype of vector x
- * @param dataTypeY [IN] datatype of vector y
- * @param type [IN] computation type
- * @param handle [OUT] pointer to the pointer to the handle
- * @retval ACL_ERROR_NONE The function is successfully executed.
- * @retval OtherValues Failure
- */
- ACL_FUNC_VISIBILITY aclError aclblasCreateHandleForGemvEx(aclTransType transA,
- int m,
- int n,
- aclDataType dataTypeA,
- aclDataType dataTypeX,
- aclDataType dataTypeY,
- aclComputeType type,
- aclopHandle **handle);
-
- /**
- * @ingroup AscendCL
- * @brief perform the matrix-vector multiplication
- *
- * @param transA [IN] transpose type of matrix A
- * @param m [IN] number of rows of matrix A
- * @param n [IN] number of columns of matrix A
- * @param alpha [IN] pointer to scalar used for multiplication
- * @param a [IN] pointer to matrix A
- * @param lda [IN] leading dimension used to store the matrix A
- * @param x [IN] pointer to vector x
- * @param incx [IN] stride between consecutive elements of vector x
- * @param beta [IN] pointer to scalar used for multiplication.
- * If beta value == 0,
- * then y does not have to be a valid input
- * @param y [IN|OUT] pointer to vector y
- * @param incy [IN] stride between consecutive elements of vector y
- * @param type [IN] computation type
- * @param stream [IN] stream
- * @retval ACL_ERROR_NONE The function is successfully executed.
- * @retval OtherValues Failure
- */
- ACL_FUNC_VISIBILITY aclError aclblasHgemv(aclTransType transA,
- int m,
- int n,
- const aclFloat16 *alpha,
- const aclFloat16 *a,
- int lda,
- const aclFloat16 *x,
- int incx,
- const aclFloat16 *beta,
- aclFloat16 *y,
- int incy,
- aclComputeType type,
- aclrtStream stream);
-
- /**
- * @ingroup AscendCL
- * @brief create a handle for performing the matrix-vector multiplication
- *
- * @param transA [IN] transpose type of matrix A
- * @param m [IN] number of rows of matrix A
- * @param n [IN] number of columns of matrix A
- * @param type [IN] computation type
- * @param handle [OUT] pointer to the pointer to the handle
- * @retval ACL_ERROR_NONE The function is successfully executed.
- * @retval OtherValues Failure
- */
- ACL_FUNC_VISIBILITY aclError aclblasCreateHandleForHgemv(aclTransType transA,
- int m,
- int n,
- aclComputeType type,
- aclopHandle **handle);
-
- /**
- * @ingroup AscendCL
- * @brief perform the matrix-vector multiplication
- *
- * @param transA [IN] transpose type of matrix A
- * @param m [IN] number of rows of matrix A
- * @param n [IN] number of columns of matrix A
- * @param alpha [IN] pointer to scalar used for multiplication
- * @param a [IN] pointer to matrix A
- * @param lda [IN] leading dimension used to store the matrix A
- * @param x [IN] pointer to vector x
- * @param incx [IN] stride between consecutive elements of vector x
- * @param beta [IN] pointer to scalar used for multiplication.
- * If beta value == 0,
- * then y does not have to be a valid input
- * @param y [IN|OUT] pointer to vector y
- * @param incy [IN] stride between consecutive elements of vector y
- * @param type [IN] computation type
- * @param stream [IN] stream
- * @retval ACL_ERROR_NONE The function is successfully executed.
- * @retval OtherValues Failure
- */
- ACL_FUNC_VISIBILITY aclError aclblasS8gemv(aclTransType transA,
- int m,
- int n,
- const int32_t *alpha,
- const int8_t *a,
- int lda,
- const int8_t *x,
- int incx,
- const int32_t *beta,
- int32_t *y,
- int incy,
- aclComputeType type,
- aclrtStream stream);
-
- /**
- * @ingroup AscendCL
- * @brief create a handle for performing the matrix-vector multiplication
- *
- * @param transA [IN] transpose type of matrix A
- * @param m [IN] number of rows of matrix A
- * @param n [IN] number of columns of matrix A
- * @param handle [OUT] pointer to the pointer to the handle
- * @param type [IN] computation type
- * @retval ACL_ERROR_NONE The function is successfully executed.
- * @retval OtherValues Failure
- */
- ACL_FUNC_VISIBILITY aclError aclblasCreateHandleForS8gemv(aclTransType transA,
- int m,
- int n,
- aclComputeType type,
- aclopHandle **handle);
-
- /**
- * @ingroup AscendCL
- * @brief perform the matrix-matrix multiplication
- *
- * @param transA [IN] transpose type of matrix A
- * @param transB [IN] transpose type of matrix B
- * @param transC [IN] transpose type of matrix C
- * @param m [IN] number of rows of matrix A and matrix C
- * @param n [IN] number of columns of matrix B and matrix C
- * @param k [IN] number of columns of matrix A and rows of matrix B
- * @param alpha [IN] pointer to scalar used for multiplication. of same type as dataTypeC
- * @param matrixA [IN] pointer to matrix A
- * @param lda [IN] leading dimension array used to store matrix A
- * @param dataTypeA [IN] datatype of matrix A
- * @param matrixB [IN] pointer to matrix B
- * @param ldb [IN] leading dimension array used to store matrix B
- * @param dataTypeB [IN] datatype of matrix B
- * @param beta [IN] pointer to scalar used for multiplication.
- * of same type as dataTypeC If beta == 0,
- * then matrixC does not have to be a valid input
- * @param matrixC [IN|OUT] pointer to matrix C
- * @param ldc [IN] leading dimension array used to store matrix C
- * @param dataTypeC [IN] datatype of matrix C
- * @param type [IN] computation type
- * @param stream [IN] stream
- * @retval ACL_ERROR_NONE The function is successfully executed.
- * @retval OtherValues Failure
- */
- ACL_FUNC_VISIBILITY aclError aclblasGemmEx(aclTransType transA,
- aclTransType transB,
- aclTransType transC,
- int m,
- int n,
- int k,
- const void *alpha,
- const void *matrixA,
- int lda,
- aclDataType dataTypeA,
- const void *matrixB,
- int ldb,
- aclDataType dataTypeB,
- const void *beta,
- void *matrixC,
- int ldc,
- aclDataType dataTypeC,
- aclComputeType type,
- aclrtStream stream);
-
-
- /**
- * @ingroup AscendCL
- * @brief create a handle for performing the matrix-matrix multiplication
- *
- * @param transA [IN] transpose type of matrix A
- * @param transB [IN] transpose type of matrix B
- * @param transC [IN] transpose type of matrix C
- * @param m [IN] number of rows of matrix A and matrix C
- * @param n [IN] number of columns of matrix B and matrix C
- * @param k [IN] number of columns of matrix A and rows of matrix B
- * @param dataTypeA [IN] datatype of matrix A
- * @param dataTypeB [IN] datatype of matrix B
- * @param dataTypeC [IN] datatype of matrix C
- * @param type [IN] computation type
- * @param handle [OUT] pointer to the pointer to the handle
- * @param type [IN] computation type
- * @retval ACL_ERROR_NONE The function is successfully executed.
- * @retval OtherValues Failure
- */
- ACL_FUNC_VISIBILITY aclError aclblasCreateHandleForGemmEx(aclTransType transA,
- aclTransType transB,
- aclTransType transC,
- int m,
- int n,
- int k,
- aclDataType dataTypeA,
- aclDataType dataTypeB,
- aclDataType dataTypeC,
- aclComputeType type,
- aclopHandle **handle);
-
-
- /**
- * @ingroup AscendCL
- * @brief perform the matrix-matrix multiplication
- *
- * @param transA [IN] transpose type of matrix A
- * @param transB [IN] transpose type of matrix B
- * @param transC [IN] transpose type of matrix C
- * @param m [IN] number of rows of matrix A and matrix C
- * @param n [IN] number of columns of matrix B and matrix C
- * @param k [IN] number of columns of matrix A and rows of matrix B
- * @param alpha [IN] pointer to scalar used for multiplication
- * @param matrixA [IN] pointer to matrix A
- * @param lda [IN] leading dimension used to store the matrix A
- * @param matrixB [IN] pointer to matrix B
- * @param ldb [IN] leading dimension used to store the matrix B
- * @param beta [IN] pointer to scalar used for multiplication.
- * If beta value == 0,
- * then matrixC does not have to be a valid input
- * @param matrixC [IN|OUT] pointer to matrix C
- * @param ldc [IN] leading dimension used to store the matrix C
- * @param type [IN] computation type
- * @param stream [IN] stream
- * @retval ACL_ERROR_NONE The function is successfully executed.
- * @retval OtherValues Failure
- */
- ACL_FUNC_VISIBILITY aclError aclblasHgemm(aclTransType transA,
- aclTransType transB,
- aclTransType transC,
- int m,
- int n,
- int k,
- const aclFloat16 *alpha,
- const aclFloat16 *matrixA,
- int lda,
- const aclFloat16 *matrixB,
- int ldb,
- const aclFloat16 *beta,
- aclFloat16 *matrixC,
- int ldc,
- aclComputeType type,
- aclrtStream stream);
-
- /**
- * @ingroup AscendCL
- * @brief create a handle for performing the matrix-matrix multiplication
- *
- * @param transA [IN] transpose type of matrix A
- * @param transB [IN] transpose type of matrix B
- * @param transC [IN] transpose type of matrix C
- * @param m [IN] number of rows of matrix A and matrix C
- * @param n [IN] number of columns of matrix B and matrix C
- * @param k [IN] number of columns of matrix A and rows of matrix B
- * @param type [IN] computation type
- * @param handle [OUT] pointer to the pointer to the handle
- * @retval ACL_ERROR_NONE The function is successfully executed.
- * @retval OtherValues Failure
- */
- ACL_FUNC_VISIBILITY aclError aclblasCreateHandleForHgemm(aclTransType transA,
- aclTransType transB,
- aclTransType transC,
- int m,
- int n,
- int k,
- aclComputeType type,
- aclopHandle **handle);
-
- /**
- * @ingroup AscendCL
- * @brief perform the matrix-matrix multiplication
- *
- * @param transA [IN] transpose type of matrix A
- * @param transB [IN] transpose type of matrix B
- * @param transC [IN] transpose type of matrix C
- * @param m [IN] number of rows of matrix A and matrix C
- * @param n [IN] number of columns of matrix B and matrix C
- * @param k [IN] number of columns of matrix A and rows of matrix B
- * @param alpha [IN] pointer to scalar used for multiplication
- * @param matrixA [IN] pointer to matrix A
- * @param lda [IN] leading dimension used to store the matrix A
- * @param matrixB [IN] pointer to matrix B
- * @param ldb [IN] leading dimension used to store the matrix B
- * @param beta [IN] pointer to scalar used for multiplication.
- * If beta value == 0,
- * then matrixC does not have to be a valid input
- * @param matrixC [IN|OUT] pointer to matrix C
- * @param ldc [IN] leading dimension used to store the matrix C
- * @param type [IN] computation type
- * @param stream [IN] stream
- * @retval ACL_ERROR_NONE The function is successfully executed.
- * @retval OtherValues Failure
- */
- ACL_FUNC_VISIBILITY aclError aclblasS8gemm(aclTransType transA,
- aclTransType transB,
- aclTransType transC,
- int m,
- int n,
- int k,
- const int32_t *alpha,
- const int8_t *matrixA,
- int lda,
- const int8_t *matrixB,
- int ldb,
- const int32_t *beta,
- int32_t *matrixC,
- int ldc,
- aclComputeType type,
- aclrtStream stream);
-
-
- /**
- * @ingroup AscendCL
- * @brief create a handle for performing the matrix-matrix multiplication
- *
- * @param transA [IN] transpose type of matrix A
- * @param transB [IN] transpose type of matrix B
- * @param transC [IN] transpose type of matrix C
- * @param m [IN] number of rows of matrix A and matrix C
- * @param n [IN] number of columns of matrix B and matrix C
- * @param k [IN] number of columns of matrix A and rows of matrix B
- * @param type [IN] computation type
- * @param handle [OUT] pointer to the pointer to the handle
- * @retval ACL_ERROR_NONE The function is successfully executed.
- * @retval OtherValues Failure
- */
- ACL_FUNC_VISIBILITY aclError aclblasCreateHandleForS8gemm(aclTransType transA,
- aclTransType transB,
- aclTransType transC,
- int m,
- int n,
- int k,
- aclComputeType type,
- aclopHandle **handle);
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif // INC_EXTERNAL_ACL_OPS_ACL_CBLAS_H_
|