/* * 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 #include #include #include #include #if defined(__GNUC__) #include #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); }