cuda12.1 / src /fortran.c
shaohang's picture
Upload folder using huggingface_hub
79b5fb1 verified
/*
* 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 file contains example Fortran bindings for the CUBLAS library, These
* bindings have been tested with Intel Fortran 9.0 on 32-bit and 64-bit
* Windows, and with g77 3.4.5 on 32-bit and 64-bit Linux. They will likely
* have to be adjusted for other Fortran compilers and platforms.
*/
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <stddef.h>
#include <stdlib.h>
#if defined(__GNUC__)
#include <stdint.h>
#endif /* __GNUC__ */
#include "cublas.h" /* CUBLAS public header file */
#include "fortran_common.h"
#include "fortran.h"
int CUBLAS_INIT(void) { return (int)cublasInit(); }
int CUBLAS_SHUTDOWN(void) { return (int)cublasShutdown(); }
int CUBLAS_ALLOC(const int* n, const int* elemSize, devptr_t* devicePtr) {
void* tPtr;
int retVal;
retVal = (int)cublasAlloc(*n, *elemSize, &tPtr);
*devicePtr = (devptr_t)tPtr;
return retVal;
}
int CUBLAS_FREE(const devptr_t* devicePtr) {
void* tPtr;
tPtr = (void*)(*devicePtr);
return (int)cublasFree(tPtr);
}
int CUBLAS_SET_VECTOR(
const int* n, const int* elemSize, const void* x, const int* incx, const devptr_t* y, const int* incy) {
void* tPtr = (void*)(*y);
return (int)cublasSetVector(*n, *elemSize, x, *incx, tPtr, *incy);
}
int CUBLAS_GET_VECTOR(const int* n, const int* elemSize, const devptr_t* x, const int* incx, void* y, const int* incy) {
const void* tPtr = (const void*)(*x);
return (int)cublasGetVector(*n, *elemSize, tPtr, *incx, y, *incy);
}
int CUBLAS_SET_MATRIX(const int* rows,
const int* cols,
const int* elemSize,
const void* A,
const int* lda,
const devptr_t* B,
const int* ldb) {
void* tPtr = (void*)(*B);
return (int)cublasSetMatrix(*rows, *cols, *elemSize, A, *lda, tPtr, *ldb);
}
int CUBLAS_GET_MATRIX(
const int* rows, const int* cols, const int* elemSize, const devptr_t* A, const int* lda, void* B, const int* ldb) {
const void* tPtr = (const void*)(*A);
return (int)cublasGetMatrix(*rows, *cols, *elemSize, tPtr, *lda, B, *ldb);
}
int CUBLAS_GET_ERROR(void) { return (int)cublasGetError(); }
void CUBLAS_XERBLA(const char* srName, int* info) { cublasXerbla(srName, *info); }
/*---------------------------------------------------------------------------*/
/*---------------------------------- BLAS1 ----------------------------------*/
/*---------------------------------------------------------------------------*/
int CUBLAS_ISAMAX(const int* n, const devptr_t* devPtrx, const int* incx) {
float* x = (float*)(*devPtrx);
int retVal;
retVal = cublasIsamax(*n, x, *incx);
return retVal;
}
int CUBLAS_ISAMIN(const int* n, const devptr_t* devPtrx, const int* incx) {
float* x = (float*)(*devPtrx);
int retVal;
retVal = cublasIsamin(*n, x, *incx);
return retVal;
}
#ifdef CUBLAS_G77
double CUBLAS_SASUM(const int* n, const devptr_t* devPtrx, const int* incx)
#else
float CUBLAS_SASUM(const int* n, const devptr_t* devPtrx, const int* incx)
#endif
{
float* x = (float*)(*devPtrx);
float retVal;
retVal = cublasSasum(*n, x, *incx);
return retVal;
}
void CUBLAS_SAXPY(const int* n,
const float* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy) {
float* x = (float*)(*devPtrx);
float* y = (float*)(*devPtry);
cublasSaxpy(*n, *alpha, x, *incx, y, *incy);
}
void CUBLAS_SCOPY(const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy) {
float* x = (float*)(*devPtrx);
float* y = (float*)(*devPtry);
cublasScopy(*n, x, *incx, y, *incy);
}
#ifdef CUBLAS_G77
double CUBLAS_SDOT(const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy)
#else
float CUBLAS_SDOT(const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy)
#endif
{
float* x = (float*)(*devPtrx);
float* y = (float*)(*devPtry);
return cublasSdot(*n, x, *incx, y, *incy);
}
#ifdef CUBLAS_G77
double CUBLAS_SNRM2(const int* n, const devptr_t* devPtrx, const int* incx)
#else
float CUBLAS_SNRM2(const int* n, const devptr_t* devPtrx, const int* incx)
#endif
{
float* x = (float*)(*devPtrx);
return cublasSnrm2(*n, x, *incx);
}
void CUBLAS_SROT(const int* n,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const float* sc,
const float* ss) {
float* x = (float*)(*devPtrx);
float* y = (float*)(*devPtry);
cublasSrot(*n, x, *incx, y, *incy, *sc, *ss);
}
void CUBLAS_SROTG(float* sa, float* sb, float* sc, float* ss) { cublasSrotg(sa, sb, sc, ss); }
void CUBLAS_SROTM(const int* n,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const float* sparam) {
float* x = (float*)(*devPtrx);
float* y = (float*)(*devPtry);
cublasSrotm(*n, x, *incx, y, *incy, sparam);
}
void CUBLAS_SROTMG(float* sd1, float* sd2, float* sx1, const float* sy1, float* sparam) {
cublasSrotmg(sd1, sd2, sx1, sy1, sparam);
}
void CUBLAS_SSCAL(const int* n, const float* alpha, const devptr_t* devPtrx, const int* incx) {
float* x = (float*)(*devPtrx);
cublasSscal(*n, *alpha, x, *incx);
}
void CUBLAS_SSWAP(const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy) {
float* x = (float*)(*devPtrx);
float* y = (float*)(*devPtry);
cublasSswap(*n, x, *incx, y, *incy);
}
void CUBLAS_CAXPY(const int* n,
const cuComplex* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy) {
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cublasCaxpy(*n, *alpha, x, *incx, y, *incy);
}
void CUBLAS_ZAXPY(const int* n,
const cuDoubleComplex* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
cublasZaxpy(*n, *alpha, x, *incx, y, *incy);
}
void CUBLAS_CCOPY(const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy) {
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cublasCcopy(*n, x, *incx, y, *incy);
}
void CUBLAS_ZCOPY(const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
cublasZcopy(*n, x, *incx, y, *incy);
}
void CUBLAS_CROT(const int* n,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const float* sc,
const cuComplex* cs) {
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cublasCrot(*n, x, *incx, y, *incy, *sc, *cs);
}
void CUBLAS_ZROT(const int* n,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const double* sc,
const cuDoubleComplex* cs) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
cublasZrot(*n, x, *incx, y, *incy, *sc, *cs);
}
void CUBLAS_CROTG(cuComplex* ca, const cuComplex* cb, float* sc, cuComplex* cs) { cublasCrotg(ca, *cb, sc, cs); }
void CUBLAS_ZROTG(cuDoubleComplex* ca, const cuDoubleComplex* cb, double* sc, cuDoubleComplex* cs) {
cublasZrotg(ca, *cb, sc, cs);
}
void CUBLAS_CSCAL(const int* n, const cuComplex* alpha, const devptr_t* devPtrx, const int* incx) {
cuComplex* x = (cuComplex*)(*devPtrx);
cublasCscal(*n, *alpha, x, *incx);
}
void CUBLAS_CSROT(const int* n,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const float* sc,
const float* ss) {
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cublasCsrot(*n, x, *incx, y, *incy, *sc, *ss);
}
void CUBLAS_ZDROT(const int* n,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const double* sc,
const double* ss) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
cublasZdrot(*n, x, *incx, y, *incy, *sc, *ss);
}
void CUBLAS_CSSCAL(const int* n, const float* alpha, const devptr_t* devPtrx, const int* incx) {
cuComplex* x = (cuComplex*)(*devPtrx);
cublasCsscal(*n, *alpha, x, *incx);
}
void CUBLAS_CSWAP(const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy) {
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cublasCswap(*n, x, *incx, y, *incy);
}
void CUBLAS_ZSWAP(const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
cublasZswap(*n, x, *incx, y, *incy);
}
void CUBLAS_CTRMV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* x = (cuComplex*)(*devPtrx);
cublasCtrmv(uplo[0], trans[0], diag[0], *n, A, *lda, x, *incx);
}
void CUBLAS_ZTRMV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cublasZtrmv(uplo[0], trans[0], diag[0], *n, A, *lda, x, *incx);
}
#ifdef RETURN_COMPLEX
cuComplex CUBLAS_CDOTU(
const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy) {
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cuComplex retVal = cublasCdotu(*n, x, *incx, y, *incy);
return retVal;
}
#else
void CUBLAS_CDOTU(cuComplex* retVal,
const int* n,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy) {
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
*retVal = cublasCdotu(*n, x, *incx, y, *incy);
}
#endif
#ifdef RETURN_COMPLEX
cuComplex CUBLAS_CDOTC(
const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy) {
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cuComplex retVal = cublasCdotc(*n, x, *incx, y, *incy);
return retVal;
}
#else
void CUBLAS_CDOTC(cuComplex* retVal,
const int* n,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy) {
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
*retVal = cublasCdotc(*n, x, *incx, y, *incy);
}
#endif
int CUBLAS_ICAMAX(const int* n, const devptr_t* devPtrx, const int* incx) {
cuComplex* x = (cuComplex*)(*devPtrx);
return cublasIcamax(*n, x, *incx);
}
int CUBLAS_ICAMIN(const int* n, const devptr_t* devPtrx, const int* incx) {
cuComplex* x = (cuComplex*)(*devPtrx);
return cublasIcamin(*n, x, *incx);
}
int CUBLAS_IZAMAX(const int* n, const devptr_t* devPtrx, const int* incx) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
return cublasIzamax(*n, x, *incx);
}
int CUBLAS_IZAMIN(const int* n, const devptr_t* devPtrx, const int* incx) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
return cublasIzamin(*n, x, *incx);
}
#ifdef CUBLAS_G77
double CUBLAS_SCASUM(const int* n, const devptr_t* devPtrx, const int* incx)
#else
float CUBLAS_SCASUM(const int* n, const devptr_t* devPtrx, const int* incx)
#endif
{
cuComplex* x = (cuComplex*)(*devPtrx);
return cublasScasum(*n, x, *incx);
}
double CUBLAS_DZASUM(const int* n, const devptr_t* devPtrx, const int* incx) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
return cublasDzasum(*n, x, *incx);
}
#ifdef CUBLAS_G77
double CUBLAS_SCNRM2(const int* n, const devptr_t* devPtrx, const int* incx)
#else
float CUBLAS_SCNRM2(const int* n, const devptr_t* devPtrx, const int* incx)
#endif
{
cuComplex* x = (cuComplex*)(*devPtrx);
return cublasScnrm2(*n, x, *incx);
}
double CUBLAS_DZNRM2(const int* n, const devptr_t* devPtrx, const int* incx) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
return cublasDznrm2(*n, x, *incx);
}
int CUBLAS_IDAMAX(const int* n, const devptr_t* devPtrx, const int* incx) {
double* x = (double*)(*devPtrx);
int retVal;
retVal = cublasIdamax(*n, x, *incx);
return retVal;
}
int CUBLAS_IDAMIN(const int* n, const devptr_t* devPtrx, const int* incx) {
double* x = (double*)(*devPtrx);
int retVal;
retVal = cublasIdamin(*n, x, *incx);
return retVal;
}
double CUBLAS_DASUM(const int* n, const devptr_t* devPtrx, const int* incx) {
double* x = (double*)(*devPtrx);
double retVal;
retVal = cublasDasum(*n, x, *incx);
return retVal;
}
void CUBLAS_DAXPY(const int* n,
const double* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy) {
double* x = (double*)(*devPtrx);
double* y = (double*)(*devPtry);
cublasDaxpy(*n, *alpha, x, *incx, y, *incy);
}
void CUBLAS_DCOPY(const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy) {
double* x = (double*)(*devPtrx);
double* y = (double*)(*devPtry);
cublasDcopy(*n, x, *incx, y, *incy);
}
double CUBLAS_DDOT(const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy) {
double* x = (double*)(*devPtrx);
double* y = (double*)(*devPtry);
return cublasDdot(*n, x, *incx, y, *incy);
}
double CUBLAS_DNRM2(const int* n, const devptr_t* devPtrx, const int* incx) {
double* x = (double*)(*devPtrx);
return cublasDnrm2(*n, x, *incx);
}
void CUBLAS_DROT(const int* n,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const double* sc,
const double* ss) {
double* x = (double*)(*devPtrx);
double* y = (double*)(*devPtry);
cublasDrot(*n, x, *incx, y, *incy, *sc, *ss);
}
void CUBLAS_DROTG(double* sa, double* sb, double* sc, double* ss) { cublasDrotg(sa, sb, sc, ss); }
void CUBLAS_DROTM(const int* n,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const double* sparam) {
double* x = (double*)(*devPtrx);
double* y = (double*)(*devPtry);
cublasDrotm(*n, x, *incx, y, *incy, sparam);
}
void CUBLAS_DROTMG(double* sd1, double* sd2, double* sx1, const double* sy1, double* sparam) {
cublasDrotmg(sd1, sd2, sx1, sy1, sparam);
}
void CUBLAS_DSCAL(const int* n, const double* alpha, const devptr_t* devPtrx, const int* incx) {
double* x = (double*)(*devPtrx);
cublasDscal(*n, *alpha, x, *incx);
}
void CUBLAS_DSWAP(const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy) {
double* x = (double*)(*devPtrx);
double* y = (double*)(*devPtry);
cublasDswap(*n, x, *incx, y, *incy);
}
#ifdef RETURN_COMPLEX
cuDoubleComplex CUBLAS_ZDOTU(
const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
return (cublasZdotu(*n, x, *incx, y, *incy));
}
#else
void CUBLAS_ZDOTU(cuDoubleComplex* retVal,
const int* n,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
*retVal = cublasZdotu(*n, x, *incx, y, *incy);
}
#endif
#ifdef RETURN_COMPLEX
cuDoubleComplex CUBLAS_ZDOTC(
const int* n, const devptr_t* devPtrx, const int* incx, const devptr_t* devPtry, const int* incy) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
return (cublasZdotc(*n, x, *incx, y, *incy));
}
#else
void CUBLAS_ZDOTC(cuDoubleComplex* retVal,
const int* n,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
*retVal = cublasZdotc(*n, x, *incx, y, *incy);
}
#endif
void CUBLAS_ZSCAL(const int* n, const cuDoubleComplex* alpha, const devptr_t* devPtrx, const int* incx) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cublasZscal(*n, *alpha, x, *incx);
}
void CUBLAS_ZDSCAL(const int* n, const double* alpha, const devptr_t* devPtrx, const int* incx) {
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cublasZdscal(*n, *alpha, x, *incx);
}
/*---------------------------------------------------------------------------*/
/*---------------------------------- BLAS2 ----------------------------------*/
/*---------------------------------------------------------------------------*/
void CUBLAS_SGBMV(const char* trans,
const int* m,
const int* n,
const int* kl,
const int* ku,
const float* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const float* beta,
const devptr_t* devPtry,
const int* incy) {
float* A = (float*)(*devPtrA);
float* x = (float*)(*devPtrx);
float* y = (float*)(*devPtry);
cublasSgbmv(trans[0], *m, *n, *kl, *ku, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_DGBMV(const char* trans,
const int* m,
const int* n,
const int* kl,
const int* ku,
const double* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const double* beta,
const devptr_t* devPtry,
const int* incy) {
double* A = (double*)(*devPtrA);
double* x = (double*)(*devPtrx);
double* y = (double*)(*devPtry);
cublasDgbmv(trans[0], *m, *n, *kl, *ku, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_CGBMV(const char* trans,
const int* m,
const int* n,
const int* kl,
const int* ku,
const cuComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const cuComplex* beta,
const devptr_t* devPtry,
const int* incy) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cublasCgbmv(trans[0], *m, *n, *kl, *ku, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_ZGBMV(const char* trans,
const int* m,
const int* n,
const int* kl,
const int* ku,
const cuDoubleComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const cuDoubleComplex* beta,
const devptr_t* devPtry,
const int* incy) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
cublasZgbmv(trans[0], *m, *n, *kl, *ku, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_SGEMV(const char* trans,
const int* m,
const int* n,
const float* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const float* beta,
const devptr_t* devPtry,
const int* incy) {
float* A = (float*)(*devPtrA);
float* x = (float*)(*devPtrx);
float* y = (float*)(*devPtry);
cublasSgemv(trans[0], *m, *n, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_SGER(const int* m,
const int* n,
const float* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const devptr_t* devPtrA,
const int* lda) {
float* A = (float*)(*devPtrA);
float* x = (float*)(*devPtrx);
float* y = (float*)(*devPtry);
cublasSger(*m, *n, *alpha, x, *incx, y, *incy, A, *lda);
}
void CUBLAS_SSBMV(const char* uplo,
const int* n,
const int* k,
const float* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const float* beta,
const devptr_t* devPtry,
const int* incy) {
float* A = (float*)(*devPtrA);
float* x = (float*)(*devPtrx);
float* y = (float*)(*devPtry);
cublasSsbmv(uplo[0], *n, *k, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_DSBMV(const char* uplo,
const int* n,
const int* k,
const double* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const double* beta,
const devptr_t* devPtry,
const int* incy) {
double* A = (double*)(*devPtrA);
double* x = (double*)(*devPtrx);
double* y = (double*)(*devPtry);
cublasDsbmv(uplo[0], *n, *k, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_CHBMV(const char* uplo,
const int* n,
const int* k,
const cuComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const cuComplex* beta,
const devptr_t* devPtry,
const int* incy) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cublasChbmv(uplo[0], *n, *k, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_ZHBMV(const char* uplo,
const int* n,
const int* k,
const cuDoubleComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const cuDoubleComplex* beta,
const devptr_t* devPtry,
const int* incy) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
cublasZhbmv(uplo[0], *n, *k, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_SSPMV(const char* uplo,
const int* n,
const float* alpha,
const devptr_t* devPtrAP,
const devptr_t* devPtrx,
const int* incx,
const float* beta,
const devptr_t* devPtry,
const int* incy) {
float* AP = (float*)(*devPtrAP);
float* x = (float*)(*devPtrx);
float* y = (float*)(*devPtry);
cublasSspmv(uplo[0], *n, *alpha, AP, x, *incx, *beta, y, *incy);
}
void CUBLAS_DSPMV(const char* uplo,
const int* n,
const double* alpha,
const devptr_t* devPtrAP,
const devptr_t* devPtrx,
const int* incx,
const double* beta,
const devptr_t* devPtry,
const int* incy) {
double* AP = (double*)(*devPtrAP);
double* x = (double*)(*devPtrx);
double* y = (double*)(*devPtry);
cublasDspmv(uplo[0], *n, *alpha, AP, x, *incx, *beta, y, *incy);
}
void CUBLAS_CHPMV(const char* uplo,
const int* n,
const cuComplex* alpha,
const devptr_t* devPtrAP,
const devptr_t* devPtrx,
const int* incx,
const cuComplex* beta,
const devptr_t* devPtry,
const int* incy) {
cuComplex* AP = (cuComplex*)(*devPtrAP);
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cublasChpmv(uplo[0], *n, *alpha, AP, x, *incx, *beta, y, *incy);
}
void CUBLAS_ZHPMV(const char* uplo,
const int* n,
const cuDoubleComplex* alpha,
const devptr_t* devPtrAP,
const devptr_t* devPtrx,
const int* incx,
const cuDoubleComplex* beta,
const devptr_t* devPtry,
const int* incy) {
cuDoubleComplex* AP = (cuDoubleComplex*)(*devPtrAP);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
cublasZhpmv(uplo[0], *n, *alpha, AP, x, *incx, *beta, y, *incy);
}
void CUBLAS_SSPR(const char* uplo,
const int* n,
const float* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtrAP) {
float* AP = (float*)(*devPtrAP);
float* x = (float*)(*devPtrx);
cublasSspr(uplo[0], *n, *alpha, x, *incx, AP);
}
void CUBLAS_DSPR(const char* uplo,
const int* n,
const double* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtrAP) {
double* AP = (double*)(*devPtrAP);
double* x = (double*)(*devPtrx);
cublasDspr(uplo[0], *n, *alpha, x, *incx, AP);
}
void CUBLAS_CHPR(const char* uplo,
const int* n,
const float* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtrAP) {
cuComplex* AP = (cuComplex*)(*devPtrAP);
cuComplex* x = (cuComplex*)(*devPtrx);
cublasChpr(uplo[0], *n, *alpha, x, *incx, AP);
}
void CUBLAS_ZHPR(const char* uplo,
const int* n,
const double* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtrAP) {
cuDoubleComplex* AP = (cuDoubleComplex*)(*devPtrAP);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cublasZhpr(uplo[0], *n, *alpha, x, *incx, AP);
}
void CUBLAS_SSPR2(const char* uplo,
const int* n,
const float* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const devptr_t* devPtrAP) {
float* AP = (float*)(*devPtrAP);
float* x = (float*)(*devPtrx);
float* y = (float*)(*devPtry);
cublasSspr2(uplo[0], *n, *alpha, x, *incx, y, *incy, AP);
}
void CUBLAS_DSPR2(const char* uplo,
const int* n,
const double* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const devptr_t* devPtrAP) {
double* AP = (double*)(*devPtrAP);
double* x = (double*)(*devPtrx);
double* y = (double*)(*devPtry);
cublasDspr2(uplo[0], *n, *alpha, x, *incx, y, *incy, AP);
}
void CUBLAS_CHPR2(const char* uplo,
const int* n,
const cuComplex* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const devptr_t* devPtrAP) {
cuComplex* AP = (cuComplex*)(*devPtrAP);
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cublasChpr2(uplo[0], *n, *alpha, x, *incx, y, *incy, AP);
}
void CUBLAS_ZHPR2(const char* uplo,
const int* n,
const cuDoubleComplex* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const devptr_t* devPtrAP) {
cuDoubleComplex* AP = (cuDoubleComplex*)(*devPtrAP);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
cublasZhpr2(uplo[0], *n, *alpha, x, *incx, y, *incy, AP);
}
void CUBLAS_SSYMV(const char* uplo,
const int* n,
const float* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const float* beta,
const devptr_t* devPtry,
const int* incy) {
float* A = (float*)(*devPtrA);
float* x = (float*)(*devPtrx);
float* y = (float*)(*devPtry);
cublasSsymv(uplo[0], *n, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_DSYMV(const char* uplo,
const int* n,
const double* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const double* beta,
const devptr_t* devPtry,
const int* incy) {
double* A = (double*)(*devPtrA);
double* x = (double*)(*devPtrx);
double* y = (double*)(*devPtry);
cublasDsymv(uplo[0], *n, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_CHEMV(const char* uplo,
const int* n,
const cuComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const cuComplex* beta,
const devptr_t* devPtry,
const int* incy) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cublasChemv(uplo[0], *n, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_ZHEMV(const char* uplo,
const int* n,
const cuDoubleComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const cuDoubleComplex* beta,
const devptr_t* devPtry,
const int* incy) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
cublasZhemv(uplo[0], *n, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_SSYR(const char* uplo,
const int* n,
const float* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtrA,
const int* lda) {
float* A = (float*)(*devPtrA);
float* x = (float*)(*devPtrx);
cublasSsyr(uplo[0], *n, *alpha, x, *incx, A, *lda);
}
void CUBLAS_SSYR2(const char* uplo,
const int* n,
const float* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const devptr_t* devPtrA,
const int* lda) {
float* A = (float*)(*devPtrA);
float* x = (float*)(*devPtrx);
float* y = (float*)(*devPtry);
cublasSsyr2(uplo[0], *n, *alpha, x, *incx, y, *incy, A, *lda);
}
void CUBLAS_DSYR2(const char* uplo,
const int* n,
const double* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const devptr_t* devPtrA,
const int* lda) {
double* A = (double*)(*devPtrA);
double* x = (double*)(*devPtrx);
double* y = (double*)(*devPtry);
cublasDsyr2(uplo[0], *n, *alpha, x, *incx, y, *incy, A, *lda);
}
void CUBLAS_CHER2(const char* uplo,
const int* n,
const cuComplex* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const devptr_t* devPtrA,
const int* lda) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cublasCher2(uplo[0], *n, *alpha, x, *incx, y, *incy, A, *lda);
}
void CUBLAS_ZHER2(const char* uplo,
const int* n,
const cuDoubleComplex* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const devptr_t* devPtrA,
const int* lda) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
cublasZher2(uplo[0], *n, *alpha, x, *incx, y, *incy, A, *lda);
}
void CUBLAS_STBMV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const int* k,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
float* A = (float*)(*devPtrA);
float* x = (float*)(*devPtrx);
cublasStbmv(uplo[0], trans[0], diag[0], *n, *k, A, *lda, x, *incx);
}
void CUBLAS_DTBMV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const int* k,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
double* A = (double*)(*devPtrA);
double* x = (double*)(*devPtrx);
cublasDtbmv(uplo[0], trans[0], diag[0], *n, *k, A, *lda, x, *incx);
}
void CUBLAS_CTBMV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const int* k,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* x = (cuComplex*)(*devPtrx);
cublasCtbmv(uplo[0], trans[0], diag[0], *n, *k, A, *lda, x, *incx);
}
void CUBLAS_ZTBMV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const int* k,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cublasZtbmv(uplo[0], trans[0], diag[0], *n, *k, A, *lda, x, *incx);
}
void CUBLAS_STBSV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const int* k,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
float* A = (float*)(*devPtrA);
float* x = (float*)(*devPtrx);
cublasStbsv(uplo[0], trans[0], diag[0], *n, *k, A, *lda, x, *incx);
}
void CUBLAS_DTBSV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const int* k,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
double* A = (double*)(*devPtrA);
double* x = (double*)(*devPtrx);
cublasDtbsv(uplo[0], trans[0], diag[0], *n, *k, A, *lda, x, *incx);
}
void CUBLAS_CTBSV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const int* k,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* x = (cuComplex*)(*devPtrx);
cublasCtbsv(uplo[0], trans[0], diag[0], *n, *k, A, *lda, x, *incx);
}
void CUBLAS_ZTBSV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const int* k,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cublasZtbsv(uplo[0], trans[0], diag[0], *n, *k, A, *lda, x, *incx);
}
void CUBLAS_STPMV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrAP,
const devptr_t* devPtrx,
const int* incx) {
float* AP = (float*)(*devPtrAP);
float* x = (float*)(*devPtrx);
cublasStpmv(uplo[0], trans[0], diag[0], *n, AP, x, *incx);
}
void CUBLAS_DTPMV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrAP,
const devptr_t* devPtrx,
const int* incx) {
double* AP = (double*)(*devPtrAP);
double* x = (double*)(*devPtrx);
cublasDtpmv(uplo[0], trans[0], diag[0], *n, AP, x, *incx);
}
void CUBLAS_CTPMV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrAP,
const devptr_t* devPtrx,
const int* incx) {
cuComplex* AP = (cuComplex*)(*devPtrAP);
cuComplex* x = (cuComplex*)(*devPtrx);
cublasCtpmv(uplo[0], trans[0], diag[0], *n, AP, x, *incx);
}
void CUBLAS_ZTPMV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrAP,
const devptr_t* devPtrx,
const int* incx) {
cuDoubleComplex* AP = (cuDoubleComplex*)(*devPtrAP);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cublasZtpmv(uplo[0], trans[0], diag[0], *n, AP, x, *incx);
}
void CUBLAS_STPSV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrAP,
const devptr_t* devPtrx,
const int* incx) {
float* AP = (float*)(*devPtrAP);
float* x = (float*)(*devPtrx);
cublasStpsv(uplo[0], trans[0], diag[0], *n, AP, x, *incx);
}
void CUBLAS_DTPSV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrAP,
const devptr_t* devPtrx,
const int* incx) {
double* AP = (double*)(*devPtrAP);
double* x = (double*)(*devPtrx);
cublasDtpsv(uplo[0], trans[0], diag[0], *n, AP, x, *incx);
}
void CUBLAS_CTPSV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrAP,
const devptr_t* devPtrx,
const int* incx) {
cuComplex* AP = (cuComplex*)(*devPtrAP);
cuComplex* x = (cuComplex*)(*devPtrx);
cublasCtpsv(uplo[0], trans[0], diag[0], *n, AP, x, *incx);
}
void CUBLAS_ZTPSV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrAP,
const devptr_t* devPtrx,
const int* incx) {
cuDoubleComplex* AP = (cuDoubleComplex*)(*devPtrAP);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cublasZtpsv(uplo[0], trans[0], diag[0], *n, AP, x, *incx);
}
void CUBLAS_STRMV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
float* A = (float*)(*devPtrA);
float* x = (float*)(*devPtrx);
cublasStrmv(uplo[0], trans[0], diag[0], *n, A, *lda, x, *incx);
}
void CUBLAS_DTRMV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
double* A = (double*)(*devPtrA);
double* x = (double*)(*devPtrx);
cublasDtrmv(uplo[0], trans[0], diag[0], *n, A, *lda, x, *incx);
}
void CUBLAS_STRSV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
float* A = (float*)(*devPtrA);
float* x = (float*)(*devPtrx);
cublasStrsv(uplo[0], trans[0], diag[0], *n, A, *lda, x, *incx);
}
void CUBLAS_DGEMV(const char* trans,
const int* m,
const int* n,
const double* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const double* beta,
const devptr_t* devPtry,
const int* incy) {
double* A = (double*)(*devPtrA);
double* x = (double*)(*devPtrx);
double* y = (double*)(*devPtry);
cublasDgemv(trans[0], *m, *n, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_CGEMV(const char* trans,
const int* m,
const int* n,
const cuComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const cuComplex* beta,
devptr_t* devPtry,
const int* incy) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cublasCgemv(trans[0], *m, *n, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_ZGEMV(const char* trans,
const int* m,
const int* n,
const cuDoubleComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx,
const cuDoubleComplex* beta,
devptr_t* devPtry,
const int* incy) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
cublasZgemv(trans[0], *m, *n, *alpha, A, *lda, x, *incx, *beta, y, *incy);
}
void CUBLAS_DGER(const int* m,
const int* n,
const double* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const devptr_t* devPtrA,
const int* lda) {
double* A = (double*)(*devPtrA);
double* x = (double*)(*devPtrx);
double* y = (double*)(*devPtry);
cublasDger(*m, *n, *alpha, x, *incx, y, *incy, A, *lda);
}
void CUBLAS_DSYR(const char* uplo,
const int* n,
const double* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtrA,
const int* lda) {
double* A = (double*)(*devPtrA);
double* x = (double*)(*devPtrx);
cublasDsyr(uplo[0], *n, *alpha, x, *incx, A, *lda);
}
void CUBLAS_CHER(const char* uplo,
const int* n,
const float* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtrA,
const int* lda) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* x = (cuComplex*)(*devPtrx);
cublasCher(uplo[0], *n, *alpha, x, *incx, A, *lda);
}
void CUBLAS_ZHER(const char* uplo,
const int* n,
const double* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtrA,
const int* lda) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cublasZher(uplo[0], *n, *alpha, x, *incx, A, *lda);
}
void CUBLAS_DTRSV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
double* A = (double*)(*devPtrA);
double* x = (double*)(*devPtrx);
cublasDtrsv(uplo[0], trans[0], diag[0], *n, A, *lda, x, *incx);
}
void CUBLAS_CTRSV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* x = (cuComplex*)(*devPtrx);
cublasCtrsv(uplo[0], trans[0], diag[0], *n, A, *lda, x, *incx);
}
void CUBLAS_ZTRSV(const char* uplo,
const char* trans,
const char* diag,
const int* n,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrx,
const int* incx) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cublasZtrsv(uplo[0], trans[0], diag[0], *n, A, *lda, x, *incx);
}
void CUBLAS_CGERU(const int* m,
const int* n,
const cuComplex* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const devptr_t* devPtrA,
const int* lda) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cublasCgeru(*m, *n, *alpha, x, *incx, y, *incy, A, *lda);
}
void CUBLAS_CGERC(const int* m,
const int* n,
const cuComplex* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const devptr_t* devPtrA,
const int* lda) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* x = (cuComplex*)(*devPtrx);
cuComplex* y = (cuComplex*)(*devPtry);
cublasCgerc(*m, *n, *alpha, x, *incx, y, *incy, A, *lda);
}
void CUBLAS_ZGERU(const int* m,
const int* n,
const cuDoubleComplex* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const devptr_t* devPtrA,
const int* lda) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
cublasZgeru(*m, *n, *alpha, x, *incx, y, *incy, A, *lda);
}
void CUBLAS_ZGERC(const int* m,
const int* n,
const cuDoubleComplex* alpha,
const devptr_t* devPtrx,
const int* incx,
const devptr_t* devPtry,
const int* incy,
const devptr_t* devPtrA,
const int* lda) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* x = (cuDoubleComplex*)(*devPtrx);
cuDoubleComplex* y = (cuDoubleComplex*)(*devPtry);
cublasZgerc(*m, *n, *alpha, x, *incx, y, *incy, A, *lda);
}
/*---------------------------------------------------------------------------*/
/*---------------------------------- BLAS3 ----------------------------------*/
/*---------------------------------------------------------------------------*/
void CUBLAS_SGEMM(const char* transa,
const char* transb,
const int* m,
const int* n,
const int* k,
const float* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const float* beta,
const devptr_t* devPtrC,
const int* ldc) {
float* A = (float*)(*devPtrA);
float* B = (float*)(*devPtrB);
float* C = (float*)(*devPtrC);
cublasSgemm(transa[0], transb[0], *m, *n, *k, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_SSYMM(const char* side,
const char* uplo,
const int* m,
const int* n,
const float* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const float* beta,
const devptr_t* devPtrC,
const int* ldc) {
float* A = (float*)(*devPtrA);
float* B = (float*)(*devPtrB);
float* C = (float*)(*devPtrC);
cublasSsymm(*side, *uplo, *m, *n, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_SSYR2K(const char* uplo,
const char* trans,
const int* n,
const int* k,
const float* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const float* beta,
const devptr_t* devPtrC,
const int* ldc) {
float* A = (float*)(*devPtrA);
float* B = (float*)(*devPtrB);
float* C = (float*)(*devPtrC);
cublasSsyr2k(*uplo, *trans, *n, *k, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_SSYRK(const char* uplo,
const char* trans,
const int* n,
const int* k,
const float* alpha,
const devptr_t* devPtrA,
const int* lda,
const float* beta,
const devptr_t* devPtrC,
const int* ldc) {
float* A = (float*)(*devPtrA);
float* C = (float*)(*devPtrC);
cublasSsyrk(*uplo, *trans, *n, *k, *alpha, A, *lda, *beta, C, *ldc);
}
void CUBLAS_STRMM(const char* side,
const char* uplo,
const char* transa,
const char* diag,
const int* m,
const int* n,
const float* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb) {
float* A = (float*)(*devPtrA);
float* B = (float*)(*devPtrB);
cublasStrmm(*side, *uplo, *transa, *diag, *m, *n, *alpha, A, *lda, B, *ldb);
}
void CUBLAS_STRSM(const char* side,
const char* uplo,
const char* transa,
const char* diag,
const int* m,
const int* n,
const float* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb) {
float* A = (float*)*devPtrA;
float* B = (float*)*devPtrB;
cublasStrsm(side[0], uplo[0], transa[0], diag[0], *m, *n, *alpha, A, *lda, B, *ldb);
}
void CUBLAS_CGEMM(const char* transa,
const char* transb,
const int* m,
const int* n,
const int* k,
const cuComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const cuComplex* beta,
const devptr_t* devPtrC,
const int* ldc) {
cuComplex* A = (cuComplex*)*devPtrA;
cuComplex* B = (cuComplex*)*devPtrB;
cuComplex* C = (cuComplex*)*devPtrC;
cublasCgemm(transa[0], transb[0], *m, *n, *k, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_CSYMM(const char* side,
const char* uplo,
const int* m,
const int* n,
const cuComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const cuComplex* beta,
const devptr_t* devPtrC,
const int* ldc) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* B = (cuComplex*)(*devPtrB);
cuComplex* C = (cuComplex*)(*devPtrC);
cublasCsymm(*side, *uplo, *m, *n, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_CHEMM(const char* side,
const char* uplo,
const int* m,
const int* n,
const cuComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const cuComplex* beta,
const devptr_t* devPtrC,
const int* ldc) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* B = (cuComplex*)(*devPtrB);
cuComplex* C = (cuComplex*)(*devPtrC);
cublasChemm(*side, *uplo, *m, *n, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_CTRMM(const char* side,
const char* uplo,
const char* transa,
const char* diag,
const int* m,
const int* n,
const cuComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* B = (cuComplex*)(*devPtrB);
cublasCtrmm(*side, *uplo, *transa, *diag, *m, *n, *alpha, A, *lda, B, *ldb);
}
void CUBLAS_CTRSM(const char* side,
const char* uplo,
const char* transa,
const char* diag,
const int* m,
const int* n,
const cuComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb) {
cuComplex* A = (cuComplex*)*devPtrA;
cuComplex* B = (cuComplex*)*devPtrB;
cublasCtrsm(side[0], uplo[0], transa[0], diag[0], *m, *n, *alpha, A, *lda, B, *ldb);
}
void CUBLAS_CSYRK(const char* uplo,
const char* trans,
const int* n,
const int* k,
const cuComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const cuComplex* beta,
const devptr_t* devPtrC,
const int* ldc) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* C = (cuComplex*)(*devPtrC);
cublasCsyrk(*uplo, *trans, *n, *k, *alpha, A, *lda, *beta, C, *ldc);
}
void CUBLAS_CSYR2K(const char* uplo,
const char* trans,
const int* n,
const int* k,
const cuComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const cuComplex* beta,
const devptr_t* devPtrC,
const int* ldc) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* B = (cuComplex*)(*devPtrB);
cuComplex* C = (cuComplex*)(*devPtrC);
cublasCsyr2k(*uplo, *trans, *n, *k, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_CHERK(const char* uplo,
const char* trans,
const int* n,
const int* k,
const float* alpha,
const devptr_t* devPtrA,
const int* lda,
const float* beta,
const devptr_t* devPtrC,
const int* ldc) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* C = (cuComplex*)(*devPtrC);
cublasCherk(*uplo, *trans, *n, *k, *alpha, A, *lda, *beta, C, *ldc);
}
void CUBLAS_CHER2K(const char* uplo,
const char* trans,
const int* n,
const int* k,
const cuComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const float* beta,
const devptr_t* devPtrC,
const int* ldc) {
cuComplex* A = (cuComplex*)(*devPtrA);
cuComplex* B = (cuComplex*)(*devPtrB);
cuComplex* C = (cuComplex*)(*devPtrC);
cublasCher2k(*uplo, *trans, *n, *k, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_DGEMM(const char* transa,
const char* transb,
const int* m,
const int* n,
const int* k,
const double* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const double* beta,
const devptr_t* devPtrC,
const int* ldc) {
double* A = (double*)(*devPtrA);
double* B = (double*)(*devPtrB);
double* C = (double*)(*devPtrC);
cublasDgemm(transa[0], transb[0], *m, *n, *k, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_DSYMM(const char* side,
const char* uplo,
const int* m,
const int* n,
const double* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const double* beta,
const devptr_t* devPtrC,
const int* ldc) {
double* A = (double*)(*devPtrA);
double* B = (double*)(*devPtrB);
double* C = (double*)(*devPtrC);
cublasDsymm(*side, *uplo, *m, *n, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_DSYR2K(const char* uplo,
const char* trans,
const int* n,
const int* k,
const double* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const double* beta,
const devptr_t* devPtrC,
const int* ldc) {
double* A = (double*)(*devPtrA);
double* B = (double*)(*devPtrB);
double* C = (double*)(*devPtrC);
cublasDsyr2k(*uplo, *trans, *n, *k, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_DSYRK(const char* uplo,
const char* trans,
const int* n,
const int* k,
const double* alpha,
const devptr_t* devPtrA,
const int* lda,
const double* beta,
const devptr_t* devPtrC,
const int* ldc) {
double* A = (double*)(*devPtrA);
double* C = (double*)(*devPtrC);
cublasDsyrk(*uplo, *trans, *n, *k, *alpha, A, *lda, *beta, C, *ldc);
}
void CUBLAS_ZSYRK(const char* uplo,
const char* trans,
const int* n,
const int* k,
const cuDoubleComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const cuDoubleComplex* beta,
const devptr_t* devPtrC,
const int* ldc) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* C = (cuDoubleComplex*)(*devPtrC);
cublasZsyrk(*uplo, *trans, *n, *k, *alpha, A, *lda, *beta, C, *ldc);
}
void CUBLAS_ZSYR2K(const char* uplo,
const char* trans,
const int* n,
const int* k,
const cuDoubleComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const cuDoubleComplex* beta,
const devptr_t* devPtrC,
const int* ldc) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* B = (cuDoubleComplex*)(*devPtrB);
cuDoubleComplex* C = (cuDoubleComplex*)(*devPtrC);
cublasZsyr2k(*uplo, *trans, *n, *k, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_DTRMM(const char* side,
const char* uplo,
const char* transa,
const char* diag,
const int* m,
const int* n,
const double* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb) {
double* A = (double*)(*devPtrA);
double* B = (double*)(*devPtrB);
cublasDtrmm(*side, *uplo, *transa, *diag, *m, *n, *alpha, A, *lda, B, *ldb);
}
void CUBLAS_ZTRMM(const char* side,
const char* uplo,
const char* transa,
const char* diag,
const int* m,
const int* n,
const cuDoubleComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* B = (cuDoubleComplex*)(*devPtrB);
cublasZtrmm(*side, *uplo, *transa, *diag, *m, *n, *alpha, A, *lda, B, *ldb);
}
void CUBLAS_DTRSM(const char* side,
const char* uplo,
const char* transa,
const char* diag,
const int* m,
const int* n,
const double* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb) {
double* A = (double*)*devPtrA;
double* B = (double*)*devPtrB;
cublasDtrsm(side[0], uplo[0], transa[0], diag[0], *m, *n, *alpha, A, *lda, B, *ldb);
}
void CUBLAS_ZTRSM(const char* side,
const char* uplo,
const char* transa,
const char* diag,
const int* m,
const int* n,
const cuDoubleComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb) {
cuDoubleComplex* A = (cuDoubleComplex*)*devPtrA;
cuDoubleComplex* B = (cuDoubleComplex*)*devPtrB;
cublasZtrsm(side[0], uplo[0], transa[0], diag[0], *m, *n, *alpha, A, *lda, B, *ldb);
}
void CUBLAS_ZGEMM(const char* transa,
const char* transb,
const int* m,
const int* n,
const int* k,
const cuDoubleComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const cuDoubleComplex* beta,
const devptr_t* devPtrC,
const int* ldc) {
cuDoubleComplex* A = (cuDoubleComplex*)*devPtrA;
cuDoubleComplex* B = (cuDoubleComplex*)*devPtrB;
cuDoubleComplex* C = (cuDoubleComplex*)*devPtrC;
cublasZgemm(transa[0], transb[0], *m, *n, *k, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_ZHERK(const char* uplo,
const char* trans,
const int* n,
const int* k,
const double* alpha,
const devptr_t* devPtrA,
const int* lda,
const double* beta,
const devptr_t* devPtrC,
const int* ldc) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* C = (cuDoubleComplex*)(*devPtrC);
cublasZherk(*uplo, *trans, *n, *k, *alpha, A, *lda, *beta, C, *ldc);
}
void CUBLAS_ZHER2K(const char* uplo,
const char* trans,
const int* n,
const int* k,
const cuDoubleComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const double* beta,
const devptr_t* devPtrC,
const int* ldc) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* B = (cuDoubleComplex*)(*devPtrB);
cuDoubleComplex* C = (cuDoubleComplex*)(*devPtrC);
cublasZher2k(*uplo, *trans, *n, *k, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_ZSYMM(const char* side,
const char* uplo,
const int* m,
const int* n,
const cuDoubleComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const cuDoubleComplex* beta,
const devptr_t* devPtrC,
const int* ldc) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* B = (cuDoubleComplex*)(*devPtrB);
cuDoubleComplex* C = (cuDoubleComplex*)(*devPtrC);
cublasZsymm(*side, *uplo, *m, *n, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}
void CUBLAS_ZHEMM(const char* side,
const char* uplo,
const int* m,
const int* n,
const cuDoubleComplex* alpha,
const devptr_t* devPtrA,
const int* lda,
const devptr_t* devPtrB,
const int* ldb,
const cuDoubleComplex* beta,
const devptr_t* devPtrC,
const int* ldc) {
cuDoubleComplex* A = (cuDoubleComplex*)(*devPtrA);
cuDoubleComplex* B = (cuDoubleComplex*)(*devPtrB);
cuDoubleComplex* C = (cuDoubleComplex*)(*devPtrC);
cublasZhemm(*side, *uplo, *m, *n, *alpha, A, *lda, B, *ldb, *beta, C, *ldc);
}