You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
888 lines
40 KiB
C
888 lines
40 KiB
C
1 year ago
|
/*
|
||
|
* Copyright 1993-2019 NVIDIA Corporation. All rights reserved.
|
||
|
*
|
||
|
* NOTICE TO LICENSEE:
|
||
|
*
|
||
|
* This source code and/or documentation ("Licensed Deliverables") are
|
||
|
* subject to NVIDIA intellectual property rights under U.S. and
|
||
|
* international Copyright laws.
|
||
|
*
|
||
|
* These Licensed Deliverables contained herein is PROPRIETARY and
|
||
|
* CONFIDENTIAL to NVIDIA and is being provided under the terms and
|
||
|
* conditions of a form of NVIDIA software license agreement by and
|
||
|
* between NVIDIA and Licensee ("License Agreement") or electronically
|
||
|
* accepted by Licensee. Notwithstanding any terms or conditions to
|
||
|
* the contrary in the License Agreement, reproduction or disclosure
|
||
|
* of the Licensed Deliverables to any third party without the express
|
||
|
* written consent of NVIDIA is prohibited.
|
||
|
*
|
||
|
* NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
|
||
|
* LICENSE AGREEMENT, NVIDIA MAKES NO REPRESENTATION ABOUT THE
|
||
|
* SUITABILITY OF THESE LICENSED DELIVERABLES FOR ANY PURPOSE. IT IS
|
||
|
* PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND.
|
||
|
* NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE LICENSED
|
||
|
* DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY,
|
||
|
* NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
|
||
|
* NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
|
||
|
* LICENSE AGREEMENT, IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY
|
||
|
* SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY
|
||
|
* DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
||
|
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
|
||
|
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
|
||
|
* OF THESE LICENSED DELIVERABLES.
|
||
|
*
|
||
|
* U.S. Government End Users. These Licensed Deliverables are a
|
||
|
* "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT
|
||
|
* 1995), consisting of "commercial computer software" and "commercial
|
||
|
* computer software documentation" as such terms are used in 48
|
||
|
* C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government
|
||
|
* only as a commercial end item. Consistent with 48 C.F.R.12.212 and
|
||
|
* 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all
|
||
|
* U.S. Government End Users acquire the Licensed Deliverables with
|
||
|
* only those rights set forth herein.
|
||
|
*
|
||
|
* Any use of the Licensed Deliverables in individual and commercial
|
||
|
* software must include, in the user documentation and internal
|
||
|
* comments to the code, the above Disclaimer and U.S. Government End
|
||
|
* Users Notice.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* This is the public header file for the CUBLAS library, defining the API
|
||
|
*
|
||
|
* CUBLAS is an implementation of BLAS (Basic Linear Algebra Subroutines)
|
||
|
* on top of the CUDA runtime.
|
||
|
*/
|
||
|
|
||
|
#if !defined(CUBLAS_H_)
|
||
|
#define CUBLAS_H_
|
||
|
|
||
|
#include <cuda_runtime.h>
|
||
|
|
||
|
#ifndef CUBLASWINAPI
|
||
|
#ifdef _WIN32
|
||
|
#define CUBLASWINAPI __stdcall
|
||
|
#else
|
||
|
#define CUBLASWINAPI
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#undef CUBLASAPI
|
||
|
#ifdef __CUDACC__
|
||
|
#define CUBLASAPI __host__
|
||
|
#else
|
||
|
#define CUBLASAPI
|
||
|
#endif
|
||
|
|
||
|
#include "cublas_api.h"
|
||
|
|
||
|
#if defined(__cplusplus)
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/* CUBLAS data types */
|
||
|
#define cublasStatus cublasStatus_t
|
||
|
|
||
|
cublasStatus CUBLASWINAPI cublasInit(void);
|
||
|
cublasStatus CUBLASWINAPI cublasShutdown(void);
|
||
|
cublasStatus CUBLASWINAPI cublasGetError(void);
|
||
|
|
||
|
cublasStatus CUBLASWINAPI cublasGetVersion(int* version);
|
||
|
cublasStatus CUBLASWINAPI cublasAlloc(int n, int elemSize, void** devicePtr);
|
||
|
|
||
|
cublasStatus CUBLASWINAPI cublasFree(void* devicePtr);
|
||
|
|
||
|
cublasStatus CUBLASWINAPI cublasSetKernelStream(cudaStream_t stream);
|
||
|
|
||
|
/* ---------------- CUBLAS BLAS1 functions ---------------- */
|
||
|
/* NRM2 */
|
||
|
float CUBLASWINAPI cublasSnrm2(int n, const float* x, int incx);
|
||
|
double CUBLASWINAPI cublasDnrm2(int n, const double* x, int incx);
|
||
|
float CUBLASWINAPI cublasScnrm2(int n, const cuComplex* x, int incx);
|
||
|
double CUBLASWINAPI cublasDznrm2(int n, const cuDoubleComplex* x, int incx);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* DOT */
|
||
|
float CUBLASWINAPI cublasSdot(int n, const float* x, int incx, const float* y, int incy);
|
||
|
double CUBLASWINAPI cublasDdot(int n, const double* x, int incx, const double* y, int incy);
|
||
|
cuComplex CUBLASWINAPI cublasCdotu(int n, const cuComplex* x, int incx, const cuComplex* y, int incy);
|
||
|
cuComplex CUBLASWINAPI cublasCdotc(int n, const cuComplex* x, int incx, const cuComplex* y, int incy);
|
||
|
cuDoubleComplex CUBLASWINAPI cublasZdotu(int n, const cuDoubleComplex* x, int incx, const cuDoubleComplex* y, int incy);
|
||
|
cuDoubleComplex CUBLASWINAPI cublasZdotc(int n, const cuDoubleComplex* x, int incx, const cuDoubleComplex* y, int incy);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* SCAL */
|
||
|
void CUBLASWINAPI cublasSscal(int n, float alpha, float* x, int incx);
|
||
|
void CUBLASWINAPI cublasDscal(int n, double alpha, double* x, int incx);
|
||
|
void CUBLASWINAPI cublasCscal(int n, cuComplex alpha, cuComplex* x, int incx);
|
||
|
void CUBLASWINAPI cublasZscal(int n, cuDoubleComplex alpha, cuDoubleComplex* x, int incx);
|
||
|
|
||
|
void CUBLASWINAPI cublasCsscal(int n, float alpha, cuComplex* x, int incx);
|
||
|
void CUBLASWINAPI cublasZdscal(int n, double alpha, cuDoubleComplex* x, int incx);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* AXPY */
|
||
|
void CUBLASWINAPI cublasSaxpy(int n, float alpha, const float* x, int incx, float* y, int incy);
|
||
|
void CUBLASWINAPI cublasDaxpy(int n, double alpha, const double* x, int incx, double* y, int incy);
|
||
|
void CUBLASWINAPI cublasCaxpy(int n, cuComplex alpha, const cuComplex* x, int incx, cuComplex* y, int incy);
|
||
|
void CUBLASWINAPI
|
||
|
cublasZaxpy(int n, cuDoubleComplex alpha, const cuDoubleComplex* x, int incx, cuDoubleComplex* y, int incy);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* COPY */
|
||
|
void CUBLASWINAPI cublasScopy(int n, const float* x, int incx, float* y, int incy);
|
||
|
void CUBLASWINAPI cublasDcopy(int n, const double* x, int incx, double* y, int incy);
|
||
|
void CUBLASWINAPI cublasCcopy(int n, const cuComplex* x, int incx, cuComplex* y, int incy);
|
||
|
void CUBLASWINAPI cublasZcopy(int n, const cuDoubleComplex* x, int incx, cuDoubleComplex* y, int incy);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* SWAP */
|
||
|
void CUBLASWINAPI cublasSswap(int n, float* x, int incx, float* y, int incy);
|
||
|
void CUBLASWINAPI cublasDswap(int n, double* x, int incx, double* y, int incy);
|
||
|
void CUBLASWINAPI cublasCswap(int n, cuComplex* x, int incx, cuComplex* y, int incy);
|
||
|
void CUBLASWINAPI cublasZswap(int n, cuDoubleComplex* x, int incx, cuDoubleComplex* y, int incy);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* AMAX */
|
||
|
int CUBLASWINAPI cublasIsamax(int n, const float* x, int incx);
|
||
|
int CUBLASWINAPI cublasIdamax(int n, const double* x, int incx);
|
||
|
int CUBLASWINAPI cublasIcamax(int n, const cuComplex* x, int incx);
|
||
|
int CUBLASWINAPI cublasIzamax(int n, const cuDoubleComplex* x, int incx);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* AMIN */
|
||
|
int CUBLASWINAPI cublasIsamin(int n, const float* x, int incx);
|
||
|
int CUBLASWINAPI cublasIdamin(int n, const double* x, int incx);
|
||
|
|
||
|
int CUBLASWINAPI cublasIcamin(int n, const cuComplex* x, int incx);
|
||
|
int CUBLASWINAPI cublasIzamin(int n, const cuDoubleComplex* x, int incx);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* ASUM */
|
||
|
float CUBLASWINAPI cublasSasum(int n, const float* x, int incx);
|
||
|
double CUBLASWINAPI cublasDasum(int n, const double* x, int incx);
|
||
|
float CUBLASWINAPI cublasScasum(int n, const cuComplex* x, int incx);
|
||
|
double CUBLASWINAPI cublasDzasum(int n, const cuDoubleComplex* x, int incx);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* ROT */
|
||
|
void CUBLASWINAPI cublasSrot(int n, float* x, int incx, float* y, int incy, float sc, float ss);
|
||
|
void CUBLASWINAPI cublasDrot(int n, double* x, int incx, double* y, int incy, double sc, double ss);
|
||
|
void CUBLASWINAPI cublasCrot(int n, cuComplex* x, int incx, cuComplex* y, int incy, float c, cuComplex s);
|
||
|
void CUBLASWINAPI
|
||
|
cublasZrot(int n, cuDoubleComplex* x, int incx, cuDoubleComplex* y, int incy, double sc, cuDoubleComplex cs);
|
||
|
void CUBLASWINAPI cublasCsrot(int n, cuComplex* x, int incx, cuComplex* y, int incy, float c, float s);
|
||
|
void CUBLASWINAPI cublasZdrot(int n, cuDoubleComplex* x, int incx, cuDoubleComplex* y, int incy, double c, double s);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* ROTG */
|
||
|
void CUBLASWINAPI cublasSrotg(float* sa, float* sb, float* sc, float* ss);
|
||
|
void CUBLASWINAPI cublasDrotg(double* sa, double* sb, double* sc, double* ss);
|
||
|
void CUBLASWINAPI cublasCrotg(cuComplex* ca, cuComplex cb, float* sc, cuComplex* cs);
|
||
|
void CUBLASWINAPI cublasZrotg(cuDoubleComplex* ca, cuDoubleComplex cb, double* sc, cuDoubleComplex* cs);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* ROTM */
|
||
|
void CUBLASWINAPI cublasSrotm(int n, float* x, int incx, float* y, int incy, const float* sparam);
|
||
|
void CUBLASWINAPI cublasDrotm(int n, double* x, int incx, double* y, int incy, const double* sparam);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* ROTMG */
|
||
|
void CUBLASWINAPI cublasSrotmg(float* sd1, float* sd2, float* sx1, const float* sy1, float* sparam);
|
||
|
void CUBLASWINAPI cublasDrotmg(double* sd1, double* sd2, double* sx1, const double* sy1, double* sparam);
|
||
|
|
||
|
/* --------------- CUBLAS BLAS2 functions ---------------- */
|
||
|
/* GEMV */
|
||
|
void CUBLASWINAPI cublasSgemv(char trans,
|
||
|
int m,
|
||
|
int n,
|
||
|
float alpha,
|
||
|
const float* A,
|
||
|
int lda,
|
||
|
const float* x,
|
||
|
int incx,
|
||
|
float beta,
|
||
|
float* y,
|
||
|
int incy);
|
||
|
void CUBLASWINAPI cublasDgemv(char trans,
|
||
|
int m,
|
||
|
int n,
|
||
|
double alpha,
|
||
|
const double* A,
|
||
|
int lda,
|
||
|
const double* x,
|
||
|
int incx,
|
||
|
double beta,
|
||
|
double* y,
|
||
|
int incy);
|
||
|
void CUBLASWINAPI cublasCgemv(char trans,
|
||
|
int m,
|
||
|
int n,
|
||
|
cuComplex alpha,
|
||
|
const cuComplex* A,
|
||
|
int lda,
|
||
|
const cuComplex* x,
|
||
|
int incx,
|
||
|
cuComplex beta,
|
||
|
cuComplex* y,
|
||
|
int incy);
|
||
|
void CUBLASWINAPI cublasZgemv(char trans,
|
||
|
int m,
|
||
|
int n,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* A,
|
||
|
int lda,
|
||
|
const cuDoubleComplex* x,
|
||
|
int incx,
|
||
|
cuDoubleComplex beta,
|
||
|
cuDoubleComplex* y,
|
||
|
int incy);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* GBMV */
|
||
|
void CUBLASWINAPI cublasSgbmv(char trans,
|
||
|
int m,
|
||
|
int n,
|
||
|
int kl,
|
||
|
int ku,
|
||
|
float alpha,
|
||
|
const float* A,
|
||
|
int lda,
|
||
|
const float* x,
|
||
|
int incx,
|
||
|
float beta,
|
||
|
float* y,
|
||
|
int incy);
|
||
|
void CUBLASWINAPI cublasDgbmv(char trans,
|
||
|
int m,
|
||
|
int n,
|
||
|
int kl,
|
||
|
int ku,
|
||
|
double alpha,
|
||
|
const double* A,
|
||
|
int lda,
|
||
|
const double* x,
|
||
|
int incx,
|
||
|
double beta,
|
||
|
double* y,
|
||
|
int incy);
|
||
|
void CUBLASWINAPI cublasCgbmv(char trans,
|
||
|
int m,
|
||
|
int n,
|
||
|
int kl,
|
||
|
int ku,
|
||
|
cuComplex alpha,
|
||
|
const cuComplex* A,
|
||
|
int lda,
|
||
|
const cuComplex* x,
|
||
|
int incx,
|
||
|
cuComplex beta,
|
||
|
cuComplex* y,
|
||
|
int incy);
|
||
|
void CUBLASWINAPI cublasZgbmv(char trans,
|
||
|
int m,
|
||
|
int n,
|
||
|
int kl,
|
||
|
int ku,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* A,
|
||
|
int lda,
|
||
|
const cuDoubleComplex* x,
|
||
|
int incx,
|
||
|
cuDoubleComplex beta,
|
||
|
cuDoubleComplex* y,
|
||
|
int incy);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* TRMV */
|
||
|
void CUBLASWINAPI cublasStrmv(char uplo, char trans, char diag, int n, const float* A, int lda, float* x, int incx);
|
||
|
void CUBLASWINAPI cublasDtrmv(char uplo, char trans, char diag, int n, const double* A, int lda, double* x, int incx);
|
||
|
void CUBLASWINAPI
|
||
|
cublasCtrmv(char uplo, char trans, char diag, int n, const cuComplex* A, int lda, cuComplex* x, int incx);
|
||
|
void CUBLASWINAPI
|
||
|
cublasZtrmv(char uplo, char trans, char diag, int n, const cuDoubleComplex* A, int lda, cuDoubleComplex* x, int incx);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* TBMV */
|
||
|
void CUBLASWINAPI
|
||
|
cublasStbmv(char uplo, char trans, char diag, int n, int k, const float* A, int lda, float* x, int incx);
|
||
|
void CUBLASWINAPI
|
||
|
cublasDtbmv(char uplo, char trans, char diag, int n, int k, const double* A, int lda, double* x, int incx);
|
||
|
void CUBLASWINAPI
|
||
|
cublasCtbmv(char uplo, char trans, char diag, int n, int k, const cuComplex* A, int lda, cuComplex* x, int incx);
|
||
|
void CUBLASWINAPI cublasZtbmv(
|
||
|
char uplo, char trans, char diag, int n, int k, const cuDoubleComplex* A, int lda, cuDoubleComplex* x, int incx);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* TPMV */
|
||
|
void CUBLASWINAPI cublasStpmv(char uplo, char trans, char diag, int n, const float* AP, float* x, int incx);
|
||
|
|
||
|
void CUBLASWINAPI cublasDtpmv(char uplo, char trans, char diag, int n, const double* AP, double* x, int incx);
|
||
|
|
||
|
void CUBLASWINAPI cublasCtpmv(char uplo, char trans, char diag, int n, const cuComplex* AP, cuComplex* x, int incx);
|
||
|
|
||
|
void CUBLASWINAPI
|
||
|
cublasZtpmv(char uplo, char trans, char diag, int n, const cuDoubleComplex* AP, cuDoubleComplex* x, int incx);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* TRSV */
|
||
|
void CUBLASWINAPI cublasStrsv(char uplo, char trans, char diag, int n, const float* A, int lda, float* x, int incx);
|
||
|
|
||
|
void CUBLASWINAPI cublasDtrsv(char uplo, char trans, char diag, int n, const double* A, int lda, double* x, int incx);
|
||
|
|
||
|
void CUBLASWINAPI
|
||
|
cublasCtrsv(char uplo, char trans, char diag, int n, const cuComplex* A, int lda, cuComplex* x, int incx);
|
||
|
|
||
|
void CUBLASWINAPI
|
||
|
cublasZtrsv(char uplo, char trans, char diag, int n, const cuDoubleComplex* A, int lda, cuDoubleComplex* x, int incx);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* TPSV */
|
||
|
void CUBLASWINAPI cublasStpsv(char uplo, char trans, char diag, int n, const float* AP, float* x, int incx);
|
||
|
|
||
|
void CUBLASWINAPI cublasDtpsv(char uplo, char trans, char diag, int n, const double* AP, double* x, int incx);
|
||
|
|
||
|
void CUBLASWINAPI cublasCtpsv(char uplo, char trans, char diag, int n, const cuComplex* AP, cuComplex* x, int incx);
|
||
|
|
||
|
void CUBLASWINAPI
|
||
|
cublasZtpsv(char uplo, char trans, char diag, int n, const cuDoubleComplex* AP, cuDoubleComplex* x, int incx);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* TBSV */
|
||
|
void CUBLASWINAPI
|
||
|
cublasStbsv(char uplo, char trans, char diag, int n, int k, const float* A, int lda, float* x, int incx);
|
||
|
|
||
|
void CUBLASWINAPI
|
||
|
cublasDtbsv(char uplo, char trans, char diag, int n, int k, const double* A, int lda, double* x, int incx);
|
||
|
void CUBLASWINAPI
|
||
|
cublasCtbsv(char uplo, char trans, char diag, int n, int k, const cuComplex* A, int lda, cuComplex* x, int incx);
|
||
|
|
||
|
void CUBLASWINAPI cublasZtbsv(
|
||
|
char uplo, char trans, char diag, int n, int k, const cuDoubleComplex* A, int lda, cuDoubleComplex* x, int incx);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* SYMV/HEMV */
|
||
|
void CUBLASWINAPI cublasSsymv(
|
||
|
char uplo, int n, float alpha, const float* A, int lda, const float* x, int incx, float beta, float* y, int incy);
|
||
|
void CUBLASWINAPI cublasDsymv(char uplo,
|
||
|
int n,
|
||
|
double alpha,
|
||
|
const double* A,
|
||
|
int lda,
|
||
|
const double* x,
|
||
|
int incx,
|
||
|
double beta,
|
||
|
double* y,
|
||
|
int incy);
|
||
|
void CUBLASWINAPI cublasChemv(char uplo,
|
||
|
int n,
|
||
|
cuComplex alpha,
|
||
|
const cuComplex* A,
|
||
|
int lda,
|
||
|
const cuComplex* x,
|
||
|
int incx,
|
||
|
cuComplex beta,
|
||
|
cuComplex* y,
|
||
|
int incy);
|
||
|
void CUBLASWINAPI cublasZhemv(char uplo,
|
||
|
int n,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* A,
|
||
|
int lda,
|
||
|
const cuDoubleComplex* x,
|
||
|
int incx,
|
||
|
cuDoubleComplex beta,
|
||
|
cuDoubleComplex* y,
|
||
|
int incy);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* SBMV/HBMV */
|
||
|
void CUBLASWINAPI cublasSsbmv(char uplo,
|
||
|
int n,
|
||
|
int k,
|
||
|
float alpha,
|
||
|
const float* A,
|
||
|
int lda,
|
||
|
const float* x,
|
||
|
int incx,
|
||
|
float beta,
|
||
|
float* y,
|
||
|
int incy);
|
||
|
void CUBLASWINAPI cublasDsbmv(char uplo,
|
||
|
int n,
|
||
|
int k,
|
||
|
double alpha,
|
||
|
const double* A,
|
||
|
int lda,
|
||
|
const double* x,
|
||
|
int incx,
|
||
|
double beta,
|
||
|
double* y,
|
||
|
int incy);
|
||
|
void CUBLASWINAPI cublasChbmv(char uplo,
|
||
|
int n,
|
||
|
int k,
|
||
|
cuComplex alpha,
|
||
|
const cuComplex* A,
|
||
|
int lda,
|
||
|
const cuComplex* x,
|
||
|
int incx,
|
||
|
cuComplex beta,
|
||
|
cuComplex* y,
|
||
|
int incy);
|
||
|
void CUBLASWINAPI cublasZhbmv(char uplo,
|
||
|
int n,
|
||
|
int k,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* A,
|
||
|
int lda,
|
||
|
const cuDoubleComplex* x,
|
||
|
int incx,
|
||
|
cuDoubleComplex beta,
|
||
|
cuDoubleComplex* y,
|
||
|
int incy);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* SPMV/HPMV */
|
||
|
void CUBLASWINAPI
|
||
|
cublasSspmv(char uplo, int n, float alpha, const float* AP, const float* x, int incx, float beta, float* y, int incy);
|
||
|
void CUBLASWINAPI cublasDspmv(
|
||
|
char uplo, int n, double alpha, const double* AP, const double* x, int incx, double beta, double* y, int incy);
|
||
|
void CUBLASWINAPI cublasChpmv(char uplo,
|
||
|
int n,
|
||
|
cuComplex alpha,
|
||
|
const cuComplex* AP,
|
||
|
const cuComplex* x,
|
||
|
int incx,
|
||
|
cuComplex beta,
|
||
|
cuComplex* y,
|
||
|
int incy);
|
||
|
void CUBLASWINAPI cublasZhpmv(char uplo,
|
||
|
int n,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* AP,
|
||
|
const cuDoubleComplex* x,
|
||
|
int incx,
|
||
|
cuDoubleComplex beta,
|
||
|
cuDoubleComplex* y,
|
||
|
int incy);
|
||
|
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* GER */
|
||
|
void CUBLASWINAPI
|
||
|
cublasSger(int m, int n, float alpha, const float* x, int incx, const float* y, int incy, float* A, int lda);
|
||
|
void CUBLASWINAPI
|
||
|
cublasDger(int m, int n, double alpha, const double* x, int incx, const double* y, int incy, double* A, int lda);
|
||
|
|
||
|
void CUBLASWINAPI cublasCgeru(
|
||
|
int m, int n, cuComplex alpha, const cuComplex* x, int incx, const cuComplex* y, int incy, cuComplex* A, int lda);
|
||
|
void CUBLASWINAPI cublasCgerc(
|
||
|
int m, int n, cuComplex alpha, const cuComplex* x, int incx, const cuComplex* y, int incy, cuComplex* A, int lda);
|
||
|
void CUBLASWINAPI cublasZgeru(int m,
|
||
|
int n,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* x,
|
||
|
int incx,
|
||
|
const cuDoubleComplex* y,
|
||
|
int incy,
|
||
|
cuDoubleComplex* A,
|
||
|
int lda);
|
||
|
void CUBLASWINAPI cublasZgerc(int m,
|
||
|
int n,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* x,
|
||
|
int incx,
|
||
|
const cuDoubleComplex* y,
|
||
|
int incy,
|
||
|
cuDoubleComplex* A,
|
||
|
int lda);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* SYR/HER */
|
||
|
void CUBLASWINAPI cublasSsyr(char uplo, int n, float alpha, const float* x, int incx, float* A, int lda);
|
||
|
void CUBLASWINAPI cublasDsyr(char uplo, int n, double alpha, const double* x, int incx, double* A, int lda);
|
||
|
|
||
|
void CUBLASWINAPI cublasCher(char uplo, int n, float alpha, const cuComplex* x, int incx, cuComplex* A, int lda);
|
||
|
void CUBLASWINAPI
|
||
|
cublasZher(char uplo, int n, double alpha, const cuDoubleComplex* x, int incx, cuDoubleComplex* A, int lda);
|
||
|
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* SPR/HPR */
|
||
|
void CUBLASWINAPI cublasSspr(char uplo, int n, float alpha, const float* x, int incx, float* AP);
|
||
|
void CUBLASWINAPI cublasDspr(char uplo, int n, double alpha, const double* x, int incx, double* AP);
|
||
|
void CUBLASWINAPI cublasChpr(char uplo, int n, float alpha, const cuComplex* x, int incx, cuComplex* AP);
|
||
|
void CUBLASWINAPI cublasZhpr(char uplo, int n, double alpha, const cuDoubleComplex* x, int incx, cuDoubleComplex* AP);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* SYR2/HER2 */
|
||
|
void CUBLASWINAPI
|
||
|
cublasSsyr2(char uplo, int n, float alpha, const float* x, int incx, const float* y, int incy, float* A, int lda);
|
||
|
void CUBLASWINAPI
|
||
|
cublasDsyr2(char uplo, int n, double alpha, const double* x, int incx, const double* y, int incy, double* A, int lda);
|
||
|
void CUBLASWINAPI cublasCher2(char uplo,
|
||
|
int n,
|
||
|
cuComplex alpha,
|
||
|
const cuComplex* x,
|
||
|
int incx,
|
||
|
const cuComplex* y,
|
||
|
int incy,
|
||
|
cuComplex* A,
|
||
|
int lda);
|
||
|
void CUBLASWINAPI cublasZher2(char uplo,
|
||
|
int n,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* x,
|
||
|
int incx,
|
||
|
const cuDoubleComplex* y,
|
||
|
int incy,
|
||
|
cuDoubleComplex* A,
|
||
|
int lda);
|
||
|
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* SPR2/HPR2 */
|
||
|
void CUBLASWINAPI
|
||
|
cublasSspr2(char uplo, int n, float alpha, const float* x, int incx, const float* y, int incy, float* AP);
|
||
|
void CUBLASWINAPI
|
||
|
cublasDspr2(char uplo, int n, double alpha, const double* x, int incx, const double* y, int incy, double* AP);
|
||
|
void CUBLASWINAPI cublasChpr2(
|
||
|
char uplo, int n, cuComplex alpha, const cuComplex* x, int incx, const cuComplex* y, int incy, cuComplex* AP);
|
||
|
void CUBLASWINAPI cublasZhpr2(char uplo,
|
||
|
int n,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* x,
|
||
|
int incx,
|
||
|
const cuDoubleComplex* y,
|
||
|
int incy,
|
||
|
cuDoubleComplex* AP);
|
||
|
/* ------------------------BLAS3 Functions ------------------------------- */
|
||
|
/* GEMM */
|
||
|
void CUBLASWINAPI cublasSgemm(char transa,
|
||
|
char transb,
|
||
|
int m,
|
||
|
int n,
|
||
|
int k,
|
||
|
float alpha,
|
||
|
const float* A,
|
||
|
int lda,
|
||
|
const float* B,
|
||
|
int ldb,
|
||
|
float beta,
|
||
|
float* C,
|
||
|
int ldc);
|
||
|
void CUBLASWINAPI cublasDgemm(char transa,
|
||
|
char transb,
|
||
|
int m,
|
||
|
int n,
|
||
|
int k,
|
||
|
double alpha,
|
||
|
const double* A,
|
||
|
int lda,
|
||
|
const double* B,
|
||
|
int ldb,
|
||
|
double beta,
|
||
|
double* C,
|
||
|
int ldc);
|
||
|
void CUBLASWINAPI cublasCgemm(char transa,
|
||
|
char transb,
|
||
|
int m,
|
||
|
int n,
|
||
|
int k,
|
||
|
cuComplex alpha,
|
||
|
const cuComplex* A,
|
||
|
int lda,
|
||
|
const cuComplex* B,
|
||
|
int ldb,
|
||
|
cuComplex beta,
|
||
|
cuComplex* C,
|
||
|
int ldc);
|
||
|
void CUBLASWINAPI cublasZgemm(char transa,
|
||
|
char transb,
|
||
|
int m,
|
||
|
int n,
|
||
|
int k,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* A,
|
||
|
int lda,
|
||
|
const cuDoubleComplex* B,
|
||
|
int ldb,
|
||
|
cuDoubleComplex beta,
|
||
|
cuDoubleComplex* C,
|
||
|
int ldc);
|
||
|
/* -------------------------------------------------------*/
|
||
|
/* SYRK */
|
||
|
void CUBLASWINAPI
|
||
|
cublasSsyrk(char uplo, char trans, int n, int k, float alpha, const float* A, int lda, float beta, float* C, int ldc);
|
||
|
void CUBLASWINAPI cublasDsyrk(
|
||
|
char uplo, char trans, int n, int k, double alpha, const double* A, int lda, double beta, double* C, int ldc);
|
||
|
|
||
|
void CUBLASWINAPI cublasCsyrk(char uplo,
|
||
|
char trans,
|
||
|
int n,
|
||
|
int k,
|
||
|
cuComplex alpha,
|
||
|
const cuComplex* A,
|
||
|
int lda,
|
||
|
cuComplex beta,
|
||
|
cuComplex* C,
|
||
|
int ldc);
|
||
|
void CUBLASWINAPI cublasZsyrk(char uplo,
|
||
|
char trans,
|
||
|
int n,
|
||
|
int k,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* A,
|
||
|
int lda,
|
||
|
cuDoubleComplex beta,
|
||
|
cuDoubleComplex* C,
|
||
|
int ldc);
|
||
|
/* ------------------------------------------------------- */
|
||
|
/* HERK */
|
||
|
void CUBLASWINAPI cublasCherk(
|
||
|
char uplo, char trans, int n, int k, float alpha, const cuComplex* A, int lda, float beta, cuComplex* C, int ldc);
|
||
|
void CUBLASWINAPI cublasZherk(char uplo,
|
||
|
char trans,
|
||
|
int n,
|
||
|
int k,
|
||
|
double alpha,
|
||
|
const cuDoubleComplex* A,
|
||
|
int lda,
|
||
|
double beta,
|
||
|
cuDoubleComplex* C,
|
||
|
int ldc);
|
||
|
/* ------------------------------------------------------- */
|
||
|
/* SYR2K */
|
||
|
void CUBLASWINAPI cublasSsyr2k(char uplo,
|
||
|
char trans,
|
||
|
int n,
|
||
|
int k,
|
||
|
float alpha,
|
||
|
const float* A,
|
||
|
int lda,
|
||
|
const float* B,
|
||
|
int ldb,
|
||
|
float beta,
|
||
|
float* C,
|
||
|
int ldc);
|
||
|
|
||
|
void CUBLASWINAPI cublasDsyr2k(char uplo,
|
||
|
char trans,
|
||
|
int n,
|
||
|
int k,
|
||
|
double alpha,
|
||
|
const double* A,
|
||
|
int lda,
|
||
|
const double* B,
|
||
|
int ldb,
|
||
|
double beta,
|
||
|
double* C,
|
||
|
int ldc);
|
||
|
void CUBLASWINAPI cublasCsyr2k(char uplo,
|
||
|
char trans,
|
||
|
int n,
|
||
|
int k,
|
||
|
cuComplex alpha,
|
||
|
const cuComplex* A,
|
||
|
int lda,
|
||
|
const cuComplex* B,
|
||
|
int ldb,
|
||
|
cuComplex beta,
|
||
|
cuComplex* C,
|
||
|
int ldc);
|
||
|
|
||
|
void CUBLASWINAPI cublasZsyr2k(char uplo,
|
||
|
char trans,
|
||
|
int n,
|
||
|
int k,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* A,
|
||
|
int lda,
|
||
|
const cuDoubleComplex* B,
|
||
|
int ldb,
|
||
|
cuDoubleComplex beta,
|
||
|
cuDoubleComplex* C,
|
||
|
int ldc);
|
||
|
/* ------------------------------------------------------- */
|
||
|
/* HER2K */
|
||
|
void CUBLASWINAPI cublasCher2k(char uplo,
|
||
|
char trans,
|
||
|
int n,
|
||
|
int k,
|
||
|
cuComplex alpha,
|
||
|
const cuComplex* A,
|
||
|
int lda,
|
||
|
const cuComplex* B,
|
||
|
int ldb,
|
||
|
float beta,
|
||
|
cuComplex* C,
|
||
|
int ldc);
|
||
|
|
||
|
void CUBLASWINAPI cublasZher2k(char uplo,
|
||
|
char trans,
|
||
|
int n,
|
||
|
int k,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* A,
|
||
|
int lda,
|
||
|
const cuDoubleComplex* B,
|
||
|
int ldb,
|
||
|
double beta,
|
||
|
cuDoubleComplex* C,
|
||
|
int ldc);
|
||
|
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* SYMM*/
|
||
|
void CUBLASWINAPI cublasSsymm(char side,
|
||
|
char uplo,
|
||
|
int m,
|
||
|
int n,
|
||
|
float alpha,
|
||
|
const float* A,
|
||
|
int lda,
|
||
|
const float* B,
|
||
|
int ldb,
|
||
|
float beta,
|
||
|
float* C,
|
||
|
int ldc);
|
||
|
void CUBLASWINAPI cublasDsymm(char side,
|
||
|
char uplo,
|
||
|
int m,
|
||
|
int n,
|
||
|
double alpha,
|
||
|
const double* A,
|
||
|
int lda,
|
||
|
const double* B,
|
||
|
int ldb,
|
||
|
double beta,
|
||
|
double* C,
|
||
|
int ldc);
|
||
|
|
||
|
void CUBLASWINAPI cublasCsymm(char side,
|
||
|
char uplo,
|
||
|
int m,
|
||
|
int n,
|
||
|
cuComplex alpha,
|
||
|
const cuComplex* A,
|
||
|
int lda,
|
||
|
const cuComplex* B,
|
||
|
int ldb,
|
||
|
cuComplex beta,
|
||
|
cuComplex* C,
|
||
|
int ldc);
|
||
|
|
||
|
void CUBLASWINAPI cublasZsymm(char side,
|
||
|
char uplo,
|
||
|
int m,
|
||
|
int n,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* A,
|
||
|
int lda,
|
||
|
const cuDoubleComplex* B,
|
||
|
int ldb,
|
||
|
cuDoubleComplex beta,
|
||
|
cuDoubleComplex* C,
|
||
|
int ldc);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* HEMM*/
|
||
|
void CUBLASWINAPI cublasChemm(char side,
|
||
|
char uplo,
|
||
|
int m,
|
||
|
int n,
|
||
|
cuComplex alpha,
|
||
|
const cuComplex* A,
|
||
|
int lda,
|
||
|
const cuComplex* B,
|
||
|
int ldb,
|
||
|
cuComplex beta,
|
||
|
cuComplex* C,
|
||
|
int ldc);
|
||
|
void CUBLASWINAPI cublasZhemm(char side,
|
||
|
char uplo,
|
||
|
int m,
|
||
|
int n,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* A,
|
||
|
int lda,
|
||
|
const cuDoubleComplex* B,
|
||
|
int ldb,
|
||
|
cuDoubleComplex beta,
|
||
|
cuDoubleComplex* C,
|
||
|
int ldc);
|
||
|
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* TRSM*/
|
||
|
void CUBLASWINAPI cublasStrsm(char side,
|
||
|
char uplo,
|
||
|
char transa,
|
||
|
char diag,
|
||
|
int m,
|
||
|
int n,
|
||
|
float alpha,
|
||
|
const float* A,
|
||
|
int lda,
|
||
|
float* B,
|
||
|
int ldb);
|
||
|
|
||
|
void CUBLASWINAPI cublasDtrsm(char side,
|
||
|
char uplo,
|
||
|
char transa,
|
||
|
char diag,
|
||
|
int m,
|
||
|
int n,
|
||
|
double alpha,
|
||
|
const double* A,
|
||
|
int lda,
|
||
|
double* B,
|
||
|
int ldb);
|
||
|
|
||
|
void CUBLASWINAPI cublasCtrsm(char side,
|
||
|
char uplo,
|
||
|
char transa,
|
||
|
char diag,
|
||
|
int m,
|
||
|
int n,
|
||
|
cuComplex alpha,
|
||
|
const cuComplex* A,
|
||
|
int lda,
|
||
|
cuComplex* B,
|
||
|
int ldb);
|
||
|
|
||
|
void CUBLASWINAPI cublasZtrsm(char side,
|
||
|
char uplo,
|
||
|
char transa,
|
||
|
char diag,
|
||
|
int m,
|
||
|
int n,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* A,
|
||
|
int lda,
|
||
|
cuDoubleComplex* B,
|
||
|
int ldb);
|
||
|
/*------------------------------------------------------------------------*/
|
||
|
/* TRMM*/
|
||
|
void CUBLASWINAPI cublasStrmm(char side,
|
||
|
char uplo,
|
||
|
char transa,
|
||
|
char diag,
|
||
|
int m,
|
||
|
int n,
|
||
|
float alpha,
|
||
|
const float* A,
|
||
|
int lda,
|
||
|
float* B,
|
||
|
int ldb);
|
||
|
void CUBLASWINAPI cublasDtrmm(char side,
|
||
|
char uplo,
|
||
|
char transa,
|
||
|
char diag,
|
||
|
int m,
|
||
|
int n,
|
||
|
double alpha,
|
||
|
const double* A,
|
||
|
int lda,
|
||
|
double* B,
|
||
|
int ldb);
|
||
|
void CUBLASWINAPI cublasCtrmm(char side,
|
||
|
char uplo,
|
||
|
char transa,
|
||
|
char diag,
|
||
|
int m,
|
||
|
int n,
|
||
|
cuComplex alpha,
|
||
|
const cuComplex* A,
|
||
|
int lda,
|
||
|
cuComplex* B,
|
||
|
int ldb);
|
||
|
void CUBLASWINAPI cublasZtrmm(char side,
|
||
|
char uplo,
|
||
|
char transa,
|
||
|
char diag,
|
||
|
int m,
|
||
|
int n,
|
||
|
cuDoubleComplex alpha,
|
||
|
const cuDoubleComplex* A,
|
||
|
int lda,
|
||
|
cuDoubleComplex* B,
|
||
|
int ldb);
|
||
|
|
||
|
#if defined(__cplusplus)
|
||
|
}
|
||
|
#endif /* __cplusplus */
|
||
|
|
||
|
#endif /* !defined(CUBLAS_H_) */
|