1 // Copyright 2019, University of Freiburg. 2 // Chair of Algorithms and Data Structures. 3 // Markus Näther <naetherm@informatik.uni-freiburg.de> 4 5 module derelict.cublas.cublas; 6 7 import derelict.util.loader; 8 import derelict.cuda.runtimeapi; 9 10 11 private 12 { 13 import derelict.util.system; 14 15 static if(Derelict_OS_Windows) 16 // Don't know, please check! 17 enum libNames = "cublas32_1000.dll,cublas64_1000.dll"; 18 else static if (Derelict_OS_Mac) 19 // Don't know, please check! 20 enum libNames = "libcublas.dylib,/usr/local/lib/libcublas.dylib"; 21 else static if (Derelict_OS_Linux) 22 { 23 version(X86) 24 enum libNames = "libcublas.so,libcublas.so.10.0,/opt/cuda/lib/libcublas.so"; 25 else version(X86_64) 26 enum libNames = "libcublas.so,libcublas.so.10.0,/opt/cuda/lib64/libcublas.so,/usr/lib/x86_64-linux-gnu/libcublas.so.10.0"; 27 else 28 static assert(0, "Need to implement CUDA libNames for this arch."); 29 } 30 else 31 static assert(0, "Need to implement CUDA libNames for this operating system."); 32 } 33 34 35 36 /* CUBLAS status type returns */ 37 alias cublasStatus_t = int; 38 enum : cublasStatus_t { 39 CUBLAS_STATUS_SUCCESS =0, 40 CUBLAS_STATUS_NOT_INITIALIZED =1, 41 CUBLAS_STATUS_ALLOC_FAILED =3, 42 CUBLAS_STATUS_INVALID_VALUE =7, 43 CUBLAS_STATUS_ARCH_MISMATCH =8, 44 CUBLAS_STATUS_MAPPING_ERROR =11, 45 CUBLAS_STATUS_EXECUTION_FAILED=13, 46 CUBLAS_STATUS_INTERNAL_ERROR =14, 47 CUBLAS_STATUS_NOT_SUPPORTED =15, 48 CUBLAS_STATUS_LICENSE_ERROR =16 49 } 50 51 52 alias cublasFillMode_t = int; 53 enum : cublasFillMode_t { 54 CUBLAS_FILL_MODE_LOWER=0, 55 CUBLAS_FILL_MODE_UPPER=1 56 } 57 58 alias cublasDiagType_t = int; 59 enum : cublasDiagType_t { 60 CUBLAS_DIAG_NON_UNIT=0, 61 CUBLAS_DIAG_UNIT=1 62 } 63 64 alias cublasSideMode_t = int; 65 enum : cublasSideMode_t { 66 CUBLAS_SIDE_LEFT =0, 67 CUBLAS_SIDE_RIGHT=1 68 } 69 70 71 alias cublasOperation_t = int; 72 enum : cublasOperation_t { 73 CUBLAS_OP_N=0, 74 CUBLAS_OP_T=1, 75 CUBLAS_OP_C=2 76 } 77 78 79 alias cublasPointerMode_t = int; 80 enum : cublasPointerMode_t { 81 CUBLAS_POINTER_MODE_HOST = 0, 82 CUBLAS_POINTER_MODE_DEVICE = 1 83 } 84 85 alias cublasAtomicsMode_t = int; 86 enum : cublasAtomicsMode_t { 87 CUBLAS_ATOMICS_NOT_ALLOWED = 0, 88 CUBLAS_ATOMICS_ALLOWED = 1 89 } 90 91 /*For different GEMM algorithm */ 92 alias cublasGemmAlgo_t = int; 93 enum : cublasGemmAlgo_t { 94 CUBLAS_GEMM_DFALT = -1, 95 CUBLAS_GEMM_DEFAULT = -1, 96 CUBLAS_GEMM_ALGO0 = 0, 97 CUBLAS_GEMM_ALGO1 = 1, 98 CUBLAS_GEMM_ALGO2 = 2, 99 CUBLAS_GEMM_ALGO3 = 3, 100 CUBLAS_GEMM_ALGO4 = 4, 101 CUBLAS_GEMM_ALGO5 = 5, 102 CUBLAS_GEMM_ALGO6 = 6, 103 CUBLAS_GEMM_ALGO7 = 7, 104 CUBLAS_GEMM_ALGO8 = 8, 105 CUBLAS_GEMM_ALGO9 = 9, 106 CUBLAS_GEMM_ALGO10 = 10, 107 CUBLAS_GEMM_ALGO11 = 11, 108 CUBLAS_GEMM_ALGO12 = 12, 109 CUBLAS_GEMM_ALGO13 = 13, 110 CUBLAS_GEMM_ALGO14 = 14, 111 CUBLAS_GEMM_ALGO15 = 15, 112 CUBLAS_GEMM_ALGO16 = 16, 113 CUBLAS_GEMM_ALGO17 = 17, 114 CUBLAS_GEMM_ALGO18 = 18, //sliced 32x32 115 CUBLAS_GEMM_ALGO19 = 19, //sliced 64x32 116 CUBLAS_GEMM_ALGO20 = 20, //sliced 128x32 117 CUBLAS_GEMM_ALGO21 = 21, //sliced 32x32 -splitK 118 CUBLAS_GEMM_ALGO22 = 22, //sliced 64x32 -splitK 119 CUBLAS_GEMM_ALGO23 = 23, //sliced 128x32 -splitK 120 CUBLAS_GEMM_DEFAULT_TENSOR_OP = 99, 121 CUBLAS_GEMM_DFALT_TENSOR_OP = 99, 122 CUBLAS_GEMM_ALGO0_TENSOR_OP = 100, 123 CUBLAS_GEMM_ALGO1_TENSOR_OP = 101, 124 CUBLAS_GEMM_ALGO2_TENSOR_OP = 102, 125 CUBLAS_GEMM_ALGO3_TENSOR_OP = 103, 126 CUBLAS_GEMM_ALGO4_TENSOR_OP = 104, 127 CUBLAS_GEMM_ALGO5_TENSOR_OP = 105, 128 CUBLAS_GEMM_ALGO6_TENSOR_OP = 106, 129 CUBLAS_GEMM_ALGO7_TENSOR_OP = 107, 130 CUBLAS_GEMM_ALGO8_TENSOR_OP = 108, 131 CUBLAS_GEMM_ALGO9_TENSOR_OP = 109, 132 CUBLAS_GEMM_ALGO10_TENSOR_OP = 110, 133 CUBLAS_GEMM_ALGO11_TENSOR_OP = 111, 134 CUBLAS_GEMM_ALGO12_TENSOR_OP = 112, 135 CUBLAS_GEMM_ALGO13_TENSOR_OP = 113, 136 CUBLAS_GEMM_ALGO14_TENSOR_OP = 114, 137 CUBLAS_GEMM_ALGO15_TENSOR_OP = 115 138 } 139 140 /*Enum for default math mode/tensor operation*/ 141 alias cublasMath_t = int; 142 enum : cublasMath_t { 143 CUBLAS_DEFAULT_MATH = 0, 144 CUBLAS_TENSOR_OP_MATH = 1 145 } 146 147 /* For backward compatibility purposes */ 148 alias cublasDataType_t = cudaDataType; 149 150 /* Opaque structure holding CUBLAS library context */ 151 struct cublasContext; 152 alias cublasHandle_t = cublasContext*; 153 154 155 extern(System) nothrow { 156 alias cublasLogCallback = void function(const char *msg); 157 } 158 159 160 extern(System) @nogc nothrow { 161 alias da_cublasCreate_v2 = cublasStatus_t function(cublasHandle_t *handle); 162 alias da_cublasDestroy_v2 = cublasStatus_t function(cublasHandle_t handle); 163 alias da_cublasGetVersion_v2 = cublasStatus_t function(cublasHandle_t handle, int *pVersion); 164 alias da_cublasGetProperty = cublasStatus_t function(libraryPropertyType type, int *value); 165 alias da_cublasSetStream_v2 = cublasStatus_t function(cublasHandle_t handle, cudaStream_t streamId); 166 alias da_cublasGetStream_v2 = cublasStatus_t function(cublasHandle_t handle, cudaStream_t *streamId); 167 alias da_cublasGetPointerMode_v2 = cublasStatus_t function(cublasHandle_t handle, cublasPointerMode_t *mode); 168 alias da_cublasSetPointerMode_v2 = cublasStatus_t function(cublasHandle_t handle, cublasPointerMode_t mode); 169 alias da_cublasGetAtomicsMode = cublasStatus_t function(cublasHandle_t handle, cublasAtomicsMode_t *mode); 170 alias da_cublasSetAtomicsMode = cublasStatus_t function(cublasHandle_t handle, cublasAtomicsMode_t mode); 171 alias da_cublasGetMathMode = cublasStatus_t function(cublasHandle_t handle, cublasMath_t *mode); 172 alias da_cublasSetMathMode = cublasStatus_t function(cublasHandle_t handle, cublasMath_t mode); 173 alias da_cublasLoggerConfigure = cublasStatus_t function(int logIsOn, int logToStdOut, int logToStdErr, const char* logFileName); 174 alias da_cublasSetLoggerCallback = cublasStatus_t function(cublasLogCallback userCallback); 175 alias da_cublasGetLoggerCallback = cublasStatus_t function(cublasLogCallback* userCallback); 176 alias da_cublasSetVector = cublasStatus_t function(int n, int elemSize, const void *x,int incx, void *devicePtr, int incy); 177 alias da_cublasGetVector = cublasStatus_t function(int n, int elemSize, const void *x,int incx, void *y, int incy); 178 alias da_cublasSetMatrix = cublasStatus_t function(int rows, int cols, int elemSize,const void *A, int lda, void *B,int ldb); 179 alias da_cublasGetMatrix = cublasStatus_t function(int rows, int cols, int elemSize,const void *A, int lda, void *B,int ldb); 180 alias da_cublasSetVectorAsync = cublasStatus_t function(int n, int elemSize,const void *hostPtr, int incx,void *devicePtr, int incy,cudaStream_t stream); 181 alias da_cublasGetVectorAsync = cublasStatus_t function(int n, int elemSize,const void *devicePtr, int incx,void *hostPtr, int incy,cudaStream_t stream); 182 alias da_cublasSetMatrixAsync = cublasStatus_t function(int rows, int cols, int elemSize,const void *A, int lda, void *B,int ldb, cudaStream_t stream); 183 alias da_cublasGetMatrixAsync = cublasStatus_t function(int rows, int cols, int elemSize,const void *A, int lda, void *B,int ldb, cudaStream_t stream); 184 alias da_cublasXerbla = void function(const char *srName, int info); 185 alias da_cublasNrm2Ex = cublasStatus_t function(cublasHandle_t handle,int n,const void *x,cudaDataType xType,int incx,void *result,cudaDataType resultType,cudaDataType executionType); 186 alias da_cublasSnrm2_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const float *x,int incx,float *result); 187 alias da_cublasDnrm2_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const double *x,int incx,double *result); 188 alias da_cublasScnrm2_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuComplex *x,int incx,float *result); 189 alias da_cublasDznrm2_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuDoubleComplex *x,int incx,double *result); 190 alias da_cublasDotEx = cublasStatus_t function(cublasHandle_t handle,int n,const void *x,cudaDataType xType,int incx,const void *y,cudaDataType yType,int incy,void *result,cudaDataType resultType,cudaDataType executionType); 191 alias da_cublasDotcEx = cublasStatus_t function(cublasHandle_t handle,int n,const void *x,cudaDataType xType,int incx,const void *y,cudaDataType yType,int incy,void *result,cudaDataType resultType,cudaDataType executionType); 192 alias da_cublasSdot_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const float *x,int incx,const float *y,int incy,float *result); 193 alias da_cublasDdot_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const double *x,int incx,const double *y,int incy,double *result); 194 alias da_cublasCdotu_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuComplex *x,int incx,const cuComplex *y,int incy,cuComplex *result); 195 alias da_cublasCdotc_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuComplex *x,int incx,const cuComplex *y,int incy,cuComplex *result); 196 alias da_cublasZdotu_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuDoubleComplex *x,int incx,const cuDoubleComplex *y,int incy,cuDoubleComplex *result); 197 alias da_cublasZdotc_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuDoubleComplex *x,int incx,const cuDoubleComplex *y,int incy,cuDoubleComplex *result); 198 alias da_cublasScalEx = cublasStatus_t function(cublasHandle_t handle,int n,const void *alpha, cudaDataType alphaType,void *x,cudaDataType xType,int incx,cudaDataType executionType); 199 alias da_cublasSscal_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const float *alpha, float *x,int incx); 200 alias da_cublasDscal_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const double *alpha, double *x,int incx); 201 alias da_cublasCscal_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuComplex *alpha,cuComplex *x,int incx); 202 alias da_cublasCsscal_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const float *alpha,cuComplex *x,int incx); 203 alias da_cublasZscal_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuDoubleComplex *alpha,cuDoubleComplex *x,int incx); 204 alias da_cublasZdscal_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const double *alpha,cuDoubleComplex *x,int incx); 205 alias da_cublasAxpyEx = cublasStatus_t function(cublasHandle_t handle,int n,const void *alpha,cudaDataType alphaType,const void *x,cudaDataType xType,int incx,void *y,cudaDataType yType,int incy,cudaDataType executiontype); 206 alias da_cublasSaxpy_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const float *alpha,const float *x,int incx,float *y,int incy); 207 alias da_cublasDaxpy_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const double *alpha,const double *x,int incx,double *y,int incy); 208 alias da_cublasCaxpy_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuComplex *alpha,const cuComplex *x,int incx,cuComplex *y,int incy); 209 alias da_cublasZaxpy_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuDoubleComplex *alpha,const cuDoubleComplex *x,int incx,cuDoubleComplex *y,int incy); 210 alias da_cublasScopy_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const float *x,int incx,float *y,int incy); 211 alias da_cublasDcopy_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const double *x,int incx,double *y,int incy); 212 alias da_cublasCcopy_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuComplex *x,int incx,cuComplex *y,int incy); 213 alias da_cublasZcopy_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuDoubleComplex *x,int incx,cuDoubleComplex *y,int incy); 214 alias da_cublasSswap_v2 = cublasStatus_t function(cublasHandle_t handle,int n,float *x,int incx,float *y,int incy); 215 alias da_cublasDswap_v2 = cublasStatus_t function(cublasHandle_t handle,int n,double *x,int incx,double *y,int incy); 216 alias da_cublasCswap_v2 = cublasStatus_t function(cublasHandle_t handle,int n,cuComplex *x,int incx,cuComplex *y,int incy); 217 alias da_cublasZswap_v2 = cublasStatus_t function(cublasHandle_t handle,int n,cuDoubleComplex *x,int incx,cuDoubleComplex *y,int incy); 218 alias da_cublasIsamax_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const float *x,int incx,int *result); 219 alias da_cublasIdamax_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const double *x,int incx,int *result); 220 alias da_cublasIcamax_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuComplex *x,int incx,int *result); 221 alias da_cublasIzamax_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuDoubleComplex *x,int incx,int *result); 222 alias da_cublasIsamin_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const float *x,int incx,int *result); 223 alias da_cublasIdamin_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const double *x,int incx,int *result); 224 alias da_cublasIcamin_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuComplex *x,int incx,int *result); 225 alias da_cublasIzamin_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuDoubleComplex *x,int incx,int *result); 226 alias da_cublasSasum_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const float *x,int incx,float *result); 227 alias da_cublasDasum_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const double *x,int incx,double *result); 228 alias da_cublasScasum_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuComplex *x,int incx,float *result); 229 alias da_cublasDzasum_v2 = cublasStatus_t function(cublasHandle_t handle,int n,const cuDoubleComplex *x,int incx,double *result); 230 alias da_cublasSrot_v2 = cublasStatus_t function(cublasHandle_t handle,int n,float *x,int incx,float *y,int incy,const float *c, const float *s); 231 alias da_cublasDrot_v2 = cublasStatus_t function(cublasHandle_t handle,int n,double *x,int incx,double *y,int incy,const double *c, const double *s); 232 alias da_cublasCrot_v2 = cublasStatus_t function(cublasHandle_t handle,int n,cuComplex *x,int incx,cuComplex *y,int incy,const float *c, const cuComplex *s); 233 alias da_cublasCsrot_v2 = cublasStatus_t function(cublasHandle_t handle,int n,cuComplex *x,int incx,cuComplex *y,int incy,const float *c, const float *s); 234 alias da_cublasZrot_v2 = cublasStatus_t function(cublasHandle_t handle,int n,cuDoubleComplex *x,int incx,cuDoubleComplex *y,int incy,const double *c, const cuDoubleComplex *s); 235 alias da_cublasZdrot_v2 = cublasStatus_t function(cublasHandle_t handle,int n,cuDoubleComplex *x,int incx,cuDoubleComplex *y,int incy,const double *c, const double *s); 236 alias da_cublasSrotg_v2 = cublasStatus_t function(cublasHandle_t handle,float *a, float *b, float *c, float *s); 237 alias da_cublasDrotg_v2 = cublasStatus_t function(cublasHandle_t handle,double *a, double *b, double *c, double *s); 238 alias da_cublasCrotg_v2 = cublasStatus_t function(cublasHandle_t handle,cuComplex *a, cuComplex *b, float *c, cuComplex *s); 239 alias da_cublasZrotg_v2 = cublasStatus_t function(cublasHandle_t handle,cuDoubleComplex *a, cuDoubleComplex *b, double *c, cuDoubleComplex *s); 240 alias da_cublasSrotm_v2 = cublasStatus_t function(cublasHandle_t handle,int n,float *x,int incx,float *y,int incy,const float* param); 241 alias da_cublasDrotm_v2 = cublasStatus_t function(cublasHandle_t handle,int n,double *x,int incx,double *y,int incy,const double* param); 242 alias da_cublasSrotmg_v2 = cublasStatus_t function(cublasHandle_t handle,float *d1, float *d2, float *x1, const float *y1, float *param); 243 alias da_cublasDrotmg_v2 = cublasStatus_t function(cublasHandle_t handle,double *d1, double *d2, double *x1, const double *y1, double *param); 244 alias da_cublasSgemv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t trans,int m,int n,const float *alpha,const float *A,int lda,const float *x,int incx,const float *beta, float *y,int incy); 245 alias da_cublasDgemv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t trans,int m,int n,const double *alpha,const double *A,int lda,const double *x,int incx,const double *beta,double *y,int incy); 246 alias da_cublasCgemv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t trans,int m,int n,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *x,int incx,const cuComplex *beta,cuComplex *y,int incy); 247 alias da_cublasZgemv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t trans,int m,int n,const cuDoubleComplex *alpha,const cuDoubleComplex *A,int lda,const cuDoubleComplex *x,int incx,const cuDoubleComplex *beta,cuDoubleComplex *y,int incy); 248 alias da_cublasSgbmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t trans,int m,int n,int kl,int ku,const float *alpha,const float *A,int lda,const float *x,int incx,const float *beta,float *y,int incy); 249 alias da_cublasDgbmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t trans,int m,int n,int kl,int ku,const double *alpha,const double *A,int lda,const double *x,int incx,const double *beta,double *y,int incy); 250 alias da_cublasCgbmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t trans,int m,int n,int kl,int ku,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *x,int incx,const cuComplex *beta,cuComplex *y,int incy); 251 alias da_cublasZgbmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t trans,int m,int n,int kl,int ku,const cuDoubleComplex *alpha,const cuDoubleComplex *A,int lda,const cuDoubleComplex *x,int incx,const cuDoubleComplex *beta,cuDoubleComplex *y,int incy); 252 alias da_cublasStrmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const float *A,int lda,float *x,int incx); 253 alias da_cublasDtrmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const double *A,int lda,double *x,int incx); 254 alias da_cublasCtrmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const cuComplex *A,int lda,cuComplex *x,int incx); 255 alias da_cublasZtrmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const cuDoubleComplex *A,int lda,cuDoubleComplex *x,int incx); 256 alias da_cublasStbmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,int k,const float *A,int lda,float *x,int incx); 257 alias da_cublasDtbmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,int k,const double *A,int lda,double *x,int incx); 258 alias da_cublasCtbmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,int k,const cuComplex *A,int lda,cuComplex *x,int incx); 259 alias da_cublasZtbmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,int k,const cuDoubleComplex *A,int lda,cuDoubleComplex *x,int incx); 260 alias da_cublasStpmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const float *AP,float *x,int incx); 261 alias da_cublasDtpmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const double *AP,double *x,int incx); 262 alias da_cublasCtpmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const cuComplex *AP,cuComplex *x,int incx); 263 alias da_cublasZtpmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const cuDoubleComplex *AP,cuDoubleComplex *x,int incx); 264 alias da_cublasStrsv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const float *A,int lda,float *x,int incx); 265 alias da_cublasDtrsv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const double *A,int lda,double *x,int incx); 266 alias da_cublasCtrsv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const cuComplex *A,int lda,cuComplex *x,int incx); 267 alias da_cublasZtrsv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const cuDoubleComplex *A,int lda,cuDoubleComplex *x,int incx); 268 alias da_cublasStpsv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const float *AP,float *x,int incx); 269 alias da_cublasDtpsv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const double *AP,double *x,int incx); 270 alias da_cublasCtpsv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const cuComplex *AP,cuComplex *x,int incx); 271 alias da_cublasZtpsv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,const cuDoubleComplex *AP,cuDoubleComplex *x,int incx); 272 alias da_cublasStbsv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,int k,const float *A,int lda,float *x,int incx); 273 alias da_cublasDtbsv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,int k,const double *A,int lda,double *x,int incx); 274 alias da_cublasCtbsv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,int k,const cuComplex *A,int lda,cuComplex *x,int incx); 275 alias da_cublasZtbsv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int n,int k,const cuDoubleComplex *A,int lda,cuDoubleComplex *x,int incx); 276 alias da_cublasSsymv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const float *alpha,const float *A,int lda,const float *x,int incx,const float *beta,float *y,int incy); 277 alias da_cublasDsymv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const double *alpha,const double *A,int lda,const double *x,int incx,const double *beta,double *y,int incy); 278 alias da_cublasCsymv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *x,int incx,const cuComplex *beta,cuComplex *y,int incy); 279 alias da_cublasZsymv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuDoubleComplex *alpha, const cuDoubleComplex *A,int lda,const cuDoubleComplex *x,int incx,const cuDoubleComplex *beta, cuDoubleComplex *y,int incy); 280 alias da_cublasChemv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *x,int incx,const cuComplex *beta,cuComplex *y,int incy); 281 alias da_cublasZhemv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuDoubleComplex *alpha, const cuDoubleComplex *A,int lda,const cuDoubleComplex *x,int incx,const cuDoubleComplex *beta, cuDoubleComplex *y,int incy); 282 alias da_cublasSsbmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,int k,const float *alpha, const float *A,int lda,const float *x,int incx,const float *beta, float *y,int incy); 283 alias da_cublasDsbmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,int k,const double *alpha, const double *A,int lda,const double *x,int incx,const double *beta, double *y,int incy); 284 alias da_cublasChbmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,int k,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *x,int incx,const cuComplex *beta,cuComplex *y,int incy); 285 alias da_cublasZhbmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,int k,const cuDoubleComplex *alpha,const cuDoubleComplex *A,int lda,const cuDoubleComplex *x,int incx,const cuDoubleComplex *beta,cuDoubleComplex *y,int incy); 286 alias da_cublasSspmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const float *alpha, const float *AP,const float *x,int incx,const float *beta, float *y,int incy); 287 alias da_cublasDspmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const double *alpha,const double *AP,const double *x,int incx,const double *beta, double *y,int incy); 288 alias da_cublasChpmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuComplex *alpha,const cuComplex *AP,const cuComplex *x,int incx,const cuComplex *beta,cuComplex *y,int incy); 289 alias da_cublasZhpmv_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuDoubleComplex *alpha,const cuDoubleComplex *AP,const cuDoubleComplex *x,int incx,const cuDoubleComplex *beta,cuDoubleComplex *y,int incy); 290 alias da_cublasSger_v2 = cublasStatus_t function(cublasHandle_t handle,int m,int n,const float *alpha,const float *x,int incx,const float *y,int incy,float *A,int lda); 291 alias da_cublasDger_v2 = cublasStatus_t function(cublasHandle_t handle,int m,int n,const double *alpha,const double *x,int incx,const double *y,int incy,double *A,int lda); 292 alias da_cublasCgeru_v2 = cublasStatus_t function(cublasHandle_t handle,int m,int n,const cuComplex *alpha,const cuComplex *x,int incx,const cuComplex *y,int incy,cuComplex *A,int lda); 293 alias da_cublasCgerc_v2 = cublasStatus_t function(cublasHandle_t handle,int m,int n,const cuComplex *alpha,const cuComplex *x,int incx,const cuComplex *y,int incy,cuComplex *A,int lda); 294 alias da_cublasZgeru_v2 = cublasStatus_t function(cublasHandle_t handle,int m,int n,const cuDoubleComplex *alpha,const cuDoubleComplex *x,int incx,const cuDoubleComplex *y,int incy,cuDoubleComplex *A,int lda); 295 alias da_cublasZgerc_v2 = cublasStatus_t function(cublasHandle_t handle,int m,int n,const cuDoubleComplex *alpha,const cuDoubleComplex *x,int incx,const cuDoubleComplex *y,int incy,cuDoubleComplex *A,int lda); 296 alias da_cublasSsyr_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const float *alpha,const float *x,int incx,float *A,int lda); 297 alias da_cublasDsyr_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const double *alpha,const double *x,int incx,double *A,int lda); 298 alias da_cublasCsyr_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuComplex *alpha,const cuComplex *x,int incx,cuComplex *A,int lda); 299 alias da_cublasZsyr_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuDoubleComplex *alpha,const cuDoubleComplex *x,int incx,cuDoubleComplex *A,int lda); 300 alias da_cublasCher_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const float *alpha,const cuComplex *x,int incx,cuComplex *A,int lda); 301 alias da_cublasZher_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const double *alpha,const cuDoubleComplex *x,int incx,cuDoubleComplex *A,int lda); 302 alias da_cublasSspr_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const float *alpha,const float *x,int incx,float *AP); 303 alias da_cublasDspr_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const double *alpha,const double *x,int incx,double *AP); 304 alias da_cublasChpr_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const float *alpha,const cuComplex *x,int incx,cuComplex *AP); 305 alias da_cublasZhpr_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const double *alpha,const cuDoubleComplex *x,int incx,cuDoubleComplex *AP); 306 alias da_cublasSsyr2_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const float *alpha,const float *x,int incx,const float *y,int incy,float *A,int lda); 307 alias da_cublasDsyr2_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const double *alpha,const double *x,int incx,const double *y,int incy,double *A,int lda); 308 alias da_cublasCsyr2_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo, int n,const cuComplex *alpha, const cuComplex *x,int incx,const cuComplex *y,int incy,cuComplex *A,int lda); 309 alias da_cublasZsyr2_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuDoubleComplex *alpha, const cuDoubleComplex *x,int incx,const cuDoubleComplex *y,int incy,cuDoubleComplex *A,int lda); 310 alias da_cublasCher2_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo, int n,const cuComplex *alpha, const cuComplex *x,int incx,const cuComplex *y,int incy,cuComplex *A,int lda); 311 alias da_cublasZher2_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuDoubleComplex *alpha, const cuDoubleComplex *x,int incx,const cuDoubleComplex *y,int incy,cuDoubleComplex *A,int lda); 312 alias da_cublasSspr2_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const float *alpha, const float *x,int incx,const float *y,int incy,float *AP); 313 alias da_cublasDspr2_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const double *alpha, const double *x,int incx,const double *y,int incy,double *AP); 314 alias da_cublasChpr2_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuComplex *alpha,const cuComplex *x,int incx,const cuComplex *y,int incy,cuComplex *AP); 315 alias da_cublasZhpr2_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuDoubleComplex *alpha,const cuDoubleComplex *x,int incx,const cuDoubleComplex *y,int incy,cuDoubleComplex *AP); 316 alias da_cublasSgemm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const float *alpha,const float *A,int lda,const float *B,int ldb,const float *beta,float *C,int ldc); 317 alias da_cublasDgemm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const double *alpha,const double *A,int lda,const double *B,int ldb,const double *beta,double *C,int ldc); 318 alias da_cublasCgemm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *B,int ldb,const cuComplex *beta,cuComplex *C,int ldc); 319 alias da_cublasCgemm3m = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *B,int ldb,const cuComplex *beta,cuComplex *C,int ldc); 320 alias da_cublasCgemm3mEx = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa, cublasOperation_t transb,int m, int n, int k,const cuComplex *alpha,const void *A,cudaDataType Atype,int lda,const void *B,cudaDataType Btype,int ldb,const cuComplex *beta,void *C,cudaDataType Ctype,int ldc); 321 alias da_cublasZgemm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const cuDoubleComplex *alpha,const cuDoubleComplex *A,int lda,const cuDoubleComplex *B,int ldb,const cuDoubleComplex *beta,cuDoubleComplex *C,int ldc); 322 alias da_cublasZgemm3m = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const cuDoubleComplex *alpha,const cuDoubleComplex *A,int lda,const cuDoubleComplex *B,int ldb,const cuDoubleComplex *beta,cuDoubleComplex *C,int ldc); 323 //alias da_cublasHgemm = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const __half *alpha,const __half *A,int lda,const __half *B,int ldb,const __half *beta,__half *C,int ldc); 324 alias da_cublasSgemmEx = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const float *alpha,const void *A,cudaDataType Atype,int lda,const void *B,cudaDataType Btype,int ldb,const float *beta,void *C,cudaDataType Ctype,int ldc); 325 alias da_cublasGemmEx = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const void *alpha,const void *A,cudaDataType Atype,int lda,const void *B,cudaDataType Btype,int ldb,const void *beta,void *C,cudaDataType Ctype,int ldc,cudaDataType computeType,cublasGemmAlgo_t algo); 326 alias da_cublasCgemmEx = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa, cublasOperation_t transb,int m, int n, int k,const cuComplex *alpha,const void *A,cudaDataType Atype,int lda,const void *B,cudaDataType Btype,int ldb,const cuComplex *beta,void *C,cudaDataType Ctype,int ldc); 327 alias da_cublasUint8gemmBias = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa, cublasOperation_t transb, cublasOperation_t transc,int m, int n, int k,const dchar *A, int A_bias, int lda,const dchar *B, int B_bias, int ldb,dchar *C, int C_bias, int ldc,int C_mult, int C_shift); 328 alias da_cublasSsyrk_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const float *alpha,const float *A,int lda,const float *beta,float *C,int ldc); 329 alias da_cublasDsyrk_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const double *alpha, const double *A,int lda,const double *beta, double *C,int ldc); 330 alias da_cublasCsyrk_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *beta,cuComplex *C,int ldc); 331 alias da_cublasZsyrk_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const cuDoubleComplex *alpha,const cuDoubleComplex *A,int lda,const cuDoubleComplex *beta,cuDoubleComplex *C,int ldc); 332 alias da_cublasCsyrkEx = cublasStatus_t function( cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const cuComplex *alpha,const void *A,cudaDataType Atype,int lda,const cuComplex *beta,void *C,cudaDataType Ctype,int ldc); 333 alias da_cublasCsyrk3mEx = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const cuComplex *alpha,const void *A,cudaDataType Atype,int lda,const cuComplex *beta,void *C,cudaDataType Ctype,int ldc); 334 alias da_cublasCherk_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const float *alpha, const cuComplex *A,int lda,const float *beta, cuComplex *C,int ldc); 335 alias da_cublasZherk_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const double *alpha, const cuDoubleComplex *A,int lda,const double *beta, cuDoubleComplex *C,int ldc); 336 alias da_cublasCherkEx = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const float *alpha, const void *A,cudaDataType Atype,int lda,const float *beta, void *C,cudaDataType Ctype,int ldc); 337 alias da_cublasCherk3mEx = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const float *alpha,const void *A, cudaDataType Atype,int lda,const float *beta,void *C,cudaDataType Ctype,int ldc); 338 alias da_cublasSsyr2k_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const float *alpha,const float *A,int lda,const float *B,int ldb,const float *beta,float *C,int ldc); 339 alias da_cublasDsyr2k_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const double *alpha,const double *A,int lda,const double *B,int ldb,const double *beta,double *C,int ldc); 340 alias da_cublasCsyr2k_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *B,int ldb,const cuComplex *beta,cuComplex *C,int ldc); 341 alias da_cublasZsyr2k_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const cuDoubleComplex *alpha, const cuDoubleComplex *A,int lda,const cuDoubleComplex *B,int ldb,const cuDoubleComplex *beta, cuDoubleComplex *C,int ldc); 342 alias da_cublasCher2k_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *B,int ldb,const float *beta, cuComplex *C,int ldc); 343 alias da_cublasZher2k_v2 = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const cuDoubleComplex *alpha,const cuDoubleComplex *A,int lda,const cuDoubleComplex *B,int ldb,const double *beta,cuDoubleComplex *C,int ldc); 344 alias da_cublasSsyrkx = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const float *alpha,const float *A,int lda,const float *B,int ldb,const float *beta,float *C,int ldc); 345 alias da_cublasDsyrkx = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const double *alpha,const double *A,int lda,const double *B,int ldb,const double *beta,double *C,int ldc); 346 alias da_cublasCsyrkx = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *B,int ldb,const cuComplex *beta,cuComplex *C,int ldc); 347 alias da_cublasZsyrkx = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const cuDoubleComplex *alpha,const cuDoubleComplex *A,int lda,const cuDoubleComplex *B,int ldb,const cuDoubleComplex *beta,cuDoubleComplex *C,int ldc); 348 alias da_cublasCherkx = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *B,int ldb,const float *beta,cuComplex *C,int ldc); 349 alias da_cublasZherkx = cublasStatus_t function(cublasHandle_t handle,cublasFillMode_t uplo,cublasOperation_t trans,int n,int k,const cuDoubleComplex *alpha,const cuDoubleComplex *A,int lda,const cuDoubleComplex *B,int ldb,const double *beta,cuDoubleComplex *C,int ldc); 350 alias da_cublasSsymm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,int m,int n,const float *alpha,const float *A,int lda,const float *B,int ldb,const float *beta,float *C,int ldc); 351 alias da_cublasDsymm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,int m,int n,const double *alpha,const double *A,int lda,const double *B,int ldb,const double *beta,double *C,int ldc); 352 alias da_cublasCsymm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,int m,int n,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *B,int ldb,const cuComplex *beta,cuComplex *C,int ldc); 353 alias da_cublasZsymm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,int m,int n,const cuDoubleComplex *alpha,const cuDoubleComplex *A,int lda,const cuDoubleComplex *B,int ldb,const cuDoubleComplex *beta,cuDoubleComplex *C,int ldc); 354 alias da_cublasChemm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,int m,int n,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *B,int ldb,const cuComplex *beta,cuComplex *C,int ldc); 355 alias da_cublasZhemm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,int m,int n,const cuDoubleComplex *alpha,const cuDoubleComplex *A,int lda,const cuDoubleComplex *B,int ldb,const cuDoubleComplex *beta,cuDoubleComplex *C,int ldc); 356 alias da_cublasStrsm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int m,int n,const float *alpha,const float *A,int lda,float *B,int ldb); 357 alias da_cublasDtrsm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int m,int n,const double *alpha,const double *A,int lda,double *B,int ldb); 358 alias da_cublasCtrsm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int m,int n,const cuComplex *alpha,const cuComplex *A,int lda,cuComplex *B,int ldb); 359 alias da_cublasZtrsm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int m,int n,const cuDoubleComplex *alpha,const cuDoubleComplex *A,int lda,cuDoubleComplex *B,int ldb); 360 alias da_cublasStrmm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int m,int n,const float *alpha,const float *A,int lda,const float *B,int ldb,float *C,int ldc); 361 alias da_cublasDtrmm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int m,int n,const double *alpha,const double *A,int lda,const double *B,int ldb,double *C,int ldc); 362 alias da_cublasCtrmm_v2 = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int m,int n,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *B,int ldb,cuComplex *C,int ldc); 363 alias da_cublasZtrmm_v2 = cublasStatus_t function(cublasHandle_t handle, cublasSideMode_t side,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int m,int n,const cuDoubleComplex *alpha,const cuDoubleComplex *A,int lda,const cuDoubleComplex *B,int ldb,cuDoubleComplex *C,int ldc); 364 //alias da_cublasHgemmBatched = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const __half *alpha, const __half *const Aarray[],int lda,const __half *const Barray[],int ldb,const __half *beta, __half *const Carray[],int ldc,int batchCount); 365 alias da_cublasSgemmBatched = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const float *alpha, const float *[] Aarray,int lda,const float *[] Barray,int ldb,const float *beta, float *[] Carray,int ldc,int batchCount); 366 alias da_cublasDgemmBatched = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const double *alpha, const double *[] Aarray,int lda,const double *[] Barray,int ldb,const double *beta, double *[] Carray,int ldc,int batchCount); 367 alias da_cublasCgemmBatched = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const cuComplex *alpha,const cuComplex *[] Aarray,int lda,const cuComplex *[] Barray,int ldb,const cuComplex *beta,cuComplex *[] Carray,int ldc,int batchCount); 368 alias da_cublasCgemm3mBatched = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const cuComplex *alpha,const cuComplex *[] Aarray,int lda,const cuComplex *[] Barray,int ldb,const cuComplex *beta,cuComplex *[] Carray,int ldc,int batchCount); 369 alias da_cublasZgemmBatched = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const cuDoubleComplex *alpha,const cuDoubleComplex *[] Aarray,int lda,const cuDoubleComplex *[] Barray,int ldb,const cuDoubleComplex *beta,cuDoubleComplex *[] Carray,int ldc,int batchCount); 370 alias da_cublasGemmBatchedEx = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const void *alpha,const void *[] Aarray,cudaDataType Atype,int lda,const void *[] Barray,cudaDataType Btype,int ldb,const void *beta,void *[] Carray,cudaDataType Ctype,int ldc,int batchCount,cudaDataType computeType,cublasGemmAlgo_t algo); 371 alias da_cublasGemmStridedBatchedEx = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const void *alpha, const void *A,cudaDataType Atype,int lda,long strideA, const void *B,cudaDataType Btype,int ldb,long strideB,const void *beta, void *C,cudaDataType Ctype,int ldc,long strideC,int batchCount,cudaDataType computeType,cublasGemmAlgo_t algo); 372 alias da_cublasSgemmStridedBatched = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const float *alpha, const float *A,int lda,long strideA, const float *B,int ldb,long strideB,const float *beta, float *C,int ldc,long strideC,int batchCount); 373 alias da_cublasDgemmStridedBatched = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const double *alpha, const double *A,int lda,long strideA, const double *B,int ldb,long strideB,const double *beta, double *C,int ldc,long strideC,int batchCount); 374 alias da_cublasCgemmStridedBatched = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const cuComplex *alpha, const cuComplex *A,int lda,long strideA, const cuComplex *B,int ldb,long strideB,const cuComplex *beta, cuComplex *C,int ldc,long strideC,int batchCount); 375 alias da_cublasCgemm3mStridedBatched = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const cuComplex *alpha, const cuComplex *A,int lda,long strideA, const cuComplex *B,int ldb,long strideB,const cuComplex *beta, cuComplex *C,int ldc,long strideC,int batchCount); 376 alias da_cublasZgemmStridedBatched = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const cuDoubleComplex *alpha, const cuDoubleComplex *A,int lda,long strideA, const cuDoubleComplex *B,int ldb,long strideB,const cuDoubleComplex *beta, /* host or device poi */cuDoubleComplex *C,int ldc,long strideC,int batchCount); 377 //alias da_cublasHgemmStridedBatched = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,int k,const __half *alpha, const __half *A,int lda,long strideA, const __half *B,int ldb,long strideB,const __half *beta, __half *C,int ldc,long strideC,int batchCount); 378 alias da_cublasSgeam = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,const float *alpha,const float *A,int lda,const float *beta ,const float *B,int ldb,float *C,int ldc); 379 alias da_cublasDgeam = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m, int n,const double *alpha,const double *A,int lda,const double *beta,const double *B,int ldb,double *C,int ldc); 380 alias da_cublasCgeam = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,const cuComplex *alpha,const cuComplex *A,int lda,const cuComplex *beta,const cuComplex *B,int ldb,cuComplex *C,int ldc); 381 alias da_cublasZgeam = cublasStatus_t function(cublasHandle_t handle,cublasOperation_t transa,cublasOperation_t transb,int m,int n,const cuDoubleComplex *alpha,const cuDoubleComplex *A,int lda,const cuDoubleComplex *beta,const cuDoubleComplex *B,int ldb,cuDoubleComplex *C,int ldc); 382 alias da_cublasSgetrfBatched = cublasStatus_t function(cublasHandle_t handle,int n,float *[] A, int lda,int *P, int *info, int batchSize); 383 alias da_cublasDgetrfBatched = cublasStatus_t function(cublasHandle_t handle,int n,double *[] A, int lda,int *P, int *info, int batchSize); 384 alias da_cublasCgetrfBatched = cublasStatus_t function(cublasHandle_t handle,int n,cuComplex *[] A, int lda,int *P, int *info, int batchSize); 385 alias da_cublasZgetrfBatched = cublasStatus_t function(cublasHandle_t handle,int n,cuDoubleComplex *[] A, int lda,int *P, int *info, int batchSize); 386 alias da_cublasSgetriBatched = cublasStatus_t function(cublasHandle_t handle,int n,const float *[] A, int lda,const int *P, float *[] C, int ldc,int *info,int batchSize); 387 alias da_cublasDgetriBatched = cublasStatus_t function(cublasHandle_t handle,int n,const double *[] A, int lda,const int *P, double *[] C, int ldc,int *info,int batchSize); 388 alias da_cublasCgetriBatched = cublasStatus_t function(cublasHandle_t handle,int n,const cuComplex *[] A, int lda,const int *P, cuComplex *[] C, int ldc,int *info,int batchSize); 389 alias da_cublasZgetriBatched = cublasStatus_t function(cublasHandle_t handle,int n,const cuDoubleComplex *[] A, int lda,const int *P, cuDoubleComplex *[] C, int ldc,int *info,int batchSize); 390 alias da_cublasSgetrsBatched = cublasStatus_t function( cublasHandle_t handle,cublasOperation_t trans,int n,int nrhs,const float *[] Aarray,int lda,const int *devIpiv,float *[] Barray,int ldb,int *info,int batchSize); 391 alias da_cublasDgetrsBatched = cublasStatus_t function( cublasHandle_t handle,cublasOperation_t trans,int n,int nrhs,const double *[] Aarray,int lda,const int *devIpiv,double *[] Barray,int ldb,int *info,int batchSize); 392 alias da_cublasCgetrsBatched = cublasStatus_t function( cublasHandle_t handle,cublasOperation_t trans,int n,int nrhs,const cuComplex *[] Aarray,int lda,const int *devIpiv,cuComplex *[] Barray,int ldb,int *info,int batchSize); 393 alias da_cublasZgetrsBatched = cublasStatus_t function( cublasHandle_t handle,cublasOperation_t trans,int n,int nrhs,const cuDoubleComplex *[] Aarray,int lda,const int *devIpiv,cuDoubleComplex *[] Barray,int ldb,int *info,int batchSize); 394 alias da_cublasStrsmBatched = cublasStatus_t function( cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int m,int n,const float *alpha, const float *[] A,int lda,float *[] B,int ldb,int batchCount); 395 alias da_cublasDtrsmBatched = cublasStatus_t function( cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int m,int n,const double *alpha, const double *[] A,int lda,double *[] B,int ldb,int batchCount); 396 alias da_cublasCtrsmBatched = cublasStatus_t function( cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int m,int n,const cuComplex *alpha, const cuComplex *[] A,int lda,cuComplex *[] B,int ldb,int batchCount); 397 alias da_cublasZtrsmBatched = cublasStatus_t function( cublasHandle_t handle,cublasSideMode_t side,cublasFillMode_t uplo,cublasOperation_t trans,cublasDiagType_t diag,int m,int n,const cuDoubleComplex *alpha, const cuDoubleComplex *[] A,int lda,cuDoubleComplex *[] B,int ldb,int batchCount); 398 alias da_cublasSmatinvBatched = cublasStatus_t function(cublasHandle_t handle,int n,const float *[] A, int lda,float *[] Ainv, int lda_inv,int *info, int batchSize); 399 alias da_cublasDmatinvBatched = cublasStatus_t function(cublasHandle_t handle,int n,const double *[] A, int lda,double *[] Ainv, int lda_inv,int *info, int batchSize); 400 alias da_cublasCmatinvBatched = cublasStatus_t function(cublasHandle_t handle,int n,const cuComplex *[] A, int lda,cuComplex *[] Ainv, int lda_inv,int *info, int batchSize); 401 alias da_cublasZmatinvBatched = cublasStatus_t function(cublasHandle_t handle,int n,const cuDoubleComplex *[] A, int lda,cuDoubleComplex *[] Ainv, int lda_inv,int *info, int batchSize); 402 alias da_cublasSgeqrfBatched = cublasStatus_t function( cublasHandle_t handle,int m,int n,float *[] Aarray, int lda,float *[] TauArray, int *info,int batchSize); 403 alias da_cublasDgeqrfBatched = cublasStatus_t function( cublasHandle_t handle,int m,int n,double *[] Aarray, int lda,double *[] TauArray, int *info,int batchSize); 404 alias da_cublasCgeqrfBatched = cublasStatus_t function( cublasHandle_t handle,int m,int n,cuComplex *[] Aarray, int lda,cuComplex *[] TauArray, int *info,int batchSize); 405 alias da_cublasZgeqrfBatched = cublasStatus_t function( cublasHandle_t handle,int m,int n,cuDoubleComplex *[] Aarray, int lda,cuDoubleComplex *[] TauArray, int *info,int batchSize); 406 alias da_cublasSgelsBatched = cublasStatus_t function( cublasHandle_t handle,cublasOperation_t trans,int m,int n,int nrhs,float *[] Aarray, int lda,float *[] Carray, int ldc,int *info,int *devInfoArray, int batchSize ); 407 alias da_cublasDgelsBatched = cublasStatus_t function( cublasHandle_t handle,cublasOperation_t trans,int m,int n,int nrhs,double *[] Aarray, int lda,double *[] Carray, int ldc,int *info,int *devInfoArray, int batchSize); 408 alias da_cublasCgelsBatched = cublasStatus_t function( cublasHandle_t handle,cublasOperation_t trans,int m,int n,int nrhs,cuComplex *[] Aarray, int lda,cuComplex *[] Carray, int ldc,int *info,int *devInfoArray,int batchSize); 409 alias da_cublasZgelsBatched = cublasStatus_t function( cublasHandle_t handle,cublasOperation_t trans,int m,int n,int nrhs,cuDoubleComplex *[] Aarray, int lda,cuDoubleComplex *[] Carray, int ldc,int *info,int *devInfoArray,int batchSize); 410 alias da_cublasSdgmm = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t mode,int m,int n,const float *A,int lda,const float *x,int incx,float *C,int ldc); 411 alias da_cublasDdgmm = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t mode,int m,int n,const double *A,int lda,const double *x,int incx,double *C,int ldc); 412 alias da_cublasCdgmm = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t mode,int m,int n,const cuComplex *A,int lda,const cuComplex *x,int incx,cuComplex *C,int ldc); 413 alias da_cublasZdgmm = cublasStatus_t function(cublasHandle_t handle,cublasSideMode_t mode,int m,int n,const cuDoubleComplex *A,int lda,const cuDoubleComplex *x,int incx,cuDoubleComplex *C,int ldc); 414 alias da_cublasStpttr = cublasStatus_t function( cublasHandle_t handle,cublasFillMode_t uplo,int n,const float *AP,float *A,int lda ); 415 alias da_cublasDtpttr = cublasStatus_t function( cublasHandle_t handle,cublasFillMode_t uplo,int n,const double *AP,double *A,int lda ); 416 alias da_cublasCtpttr = cublasStatus_t function( cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuComplex *AP,cuComplex *A,int lda ); 417 alias da_cublasZtpttr = cublasStatus_t function( cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuDoubleComplex *AP,cuDoubleComplex *A,int lda ); 418 alias da_cublasStrttp = cublasStatus_t function( cublasHandle_t handle,cublasFillMode_t uplo,int n,const float *A,int lda,float *AP ); 419 alias da_cublasDtrttp = cublasStatus_t function( cublasHandle_t handle,cublasFillMode_t uplo,int n,const double *A,int lda,double *AP ); 420 alias da_cublasCtrttp = cublasStatus_t function( cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuComplex *A,int lda,cuComplex *AP ); 421 alias da_cublasZtrttp = cublasStatus_t function( cublasHandle_t handle,cublasFillMode_t uplo,int n,const cuDoubleComplex *A,int lda,cuDoubleComplex *AP ); 422 } 423 424 __gshared 425 { 426 da_cublasCreate_v2 cublasCreate_v2; 427 da_cublasDestroy_v2 cublasDestroy_v2; 428 da_cublasGetVersion_v2 cublasGetVersion_v2; 429 da_cublasGetProperty cublasGetProperty; 430 da_cublasSetStream_v2 cublasSetStream_v2; 431 da_cublasGetStream_v2 cublasGetStream_v2; 432 da_cublasGetPointerMode_v2 cublasGetPointerMode_v2; 433 da_cublasSetPointerMode_v2 cublasSetPointerMode_v2; 434 da_cublasGetAtomicsMode cublasGetAtomicsMode; 435 da_cublasSetAtomicsMode cublasSetAtomicsMode; 436 da_cublasGetMathMode cublasGetMathMode; 437 da_cublasSetMathMode cublasSetMathMode; 438 da_cublasLoggerConfigure cublasLoggerConfigure; 439 da_cublasSetLoggerCallback cublasSetLoggerCallback; 440 da_cublasGetLoggerCallback cublasGetLoggerCallback; 441 da_cublasSetVector cublasSetVector; 442 da_cublasGetVector cublasGetVector; 443 da_cublasSetMatrix cublasSetMatrix; 444 da_cublasGetMatrix cublasGetMatrix; 445 da_cublasSetVectorAsync cublasSetVectorAsync; 446 da_cublasGetVectorAsync cublasGetVectorAsync; 447 da_cublasSetMatrixAsync cublasSetMatrixAsync; 448 da_cublasGetMatrixAsync cublasGetMatrixAsync; 449 da_cublasXerbla cublasXerbla; 450 da_cublasNrm2Ex cublasNrm2Ex; 451 da_cublasSnrm2_v2 cublasSnrm2_v2; 452 da_cublasDnrm2_v2 cublasDnrm2_v2; 453 da_cublasScnrm2_v2 cublasScnrm2_v2; 454 da_cublasDznrm2_v2 cublasDznrm2_v2; 455 da_cublasDotEx cublasDotEx; 456 da_cublasDotcEx cublasDotcEx; 457 da_cublasSdot_v2 cublasSdot_v2; 458 da_cublasDdot_v2 cublasDdot_v2; 459 da_cublasCdotu_v2 cublasCdotu_v2; 460 da_cublasCdotc_v2 cublasCdotc_v2; 461 da_cublasZdotu_v2 cublasZdotu_v2; 462 da_cublasZdotc_v2 cublasZdotc_v2; 463 da_cublasScalEx cublasScalEx; 464 da_cublasSscal_v2 cublasSscal_v2; 465 da_cublasDscal_v2 cublasDscal_v2; 466 da_cublasCscal_v2 cublasCscal_v2; 467 da_cublasCsscal_v2 cublasCsscal_v2; 468 da_cublasZscal_v2 cublasZscal_v2; 469 da_cublasZdscal_v2 cublasZdscal_v2; 470 da_cublasAxpyEx cublasAxpyEx; 471 da_cublasSaxpy_v2 cublasSaxpy_v2; 472 da_cublasDaxpy_v2 cublasDaxpy_v2; 473 da_cublasCaxpy_v2 cublasCaxpy_v2; 474 da_cublasZaxpy_v2 cublasZaxpy_v2; 475 da_cublasScopy_v2 cublasScopy_v2; 476 da_cublasDcopy_v2 cublasDcopy_v2; 477 da_cublasCcopy_v2 cublasCcopy_v2; 478 da_cublasZcopy_v2 cublasZcopy_v2; 479 da_cublasSswap_v2 cublasSswap_v2; 480 da_cublasDswap_v2 cublasDswap_v2; 481 da_cublasCswap_v2 cublasCswap_v2; 482 da_cublasZswap_v2 cublasZswap_v2; 483 da_cublasIsamax_v2 cublasIsamax_v2; 484 da_cublasIdamax_v2 cublasIdamax_v2; 485 da_cublasIcamax_v2 cublasIcamax_v2; 486 da_cublasIzamax_v2 cublasIzamax_v2; 487 da_cublasIsamin_v2 cublasIsamin_v2; 488 da_cublasIdamin_v2 cublasIdamin_v2; 489 da_cublasIcamin_v2 cublasIcamin_v2; 490 da_cublasIzamin_v2 cublasIzamin_v2; 491 da_cublasSasum_v2 cublasSasum_v2; 492 da_cublasDasum_v2 cublasDasum_v2; 493 da_cublasScasum_v2 cublasScasum_v2; 494 da_cublasDzasum_v2 cublasDzasum_v2; 495 da_cublasSrot_v2 cublasSrot_v2; 496 da_cublasDrot_v2 cublasDrot_v2; 497 da_cublasCrot_v2 cublasCrot_v2; 498 da_cublasCsrot_v2 cublasCsrot_v2; 499 da_cublasZrot_v2 cublasZrot_v2; 500 da_cublasZdrot_v2 cublasZdrot_v2; 501 da_cublasSrotg_v2 cublasSrotg_v2; 502 da_cublasDrotg_v2 cublasDrotg_v2; 503 da_cublasCrotg_v2 cublasCrotg_v2; 504 da_cublasZrotg_v2 cublasZrotg_v2; 505 da_cublasSrotm_v2 cublasSrotm_v2; 506 da_cublasDrotm_v2 cublasDrotm_v2; 507 da_cublasSrotmg_v2 cublasSrotmg_v2; 508 da_cublasDrotmg_v2 cublasDrotmg_v2; 509 da_cublasSgemv_v2 cublasSgemv_v2; 510 da_cublasDgemv_v2 cublasDgemv_v2; 511 da_cublasCgemv_v2 cublasCgemv_v2; 512 da_cublasZgemv_v2 cublasZgemv_v2; 513 da_cublasSgbmv_v2 cublasSgbmv_v2; 514 da_cublasDgbmv_v2 cublasDgbmv_v2; 515 da_cublasCgbmv_v2 cublasCgbmv_v2; 516 da_cublasZgbmv_v2 cublasZgbmv_v2; 517 da_cublasStrmv_v2 cublasStrmv_v2; 518 da_cublasDtrmv_v2 cublasDtrmv_v2; 519 da_cublasCtrmv_v2 cublasCtrmv_v2; 520 da_cublasZtrmv_v2 cublasZtrmv_v2; 521 da_cublasStbmv_v2 cublasStbmv_v2; 522 da_cublasDtbmv_v2 cublasDtbmv_v2; 523 da_cublasCtbmv_v2 cublasCtbmv_v2; 524 da_cublasZtbmv_v2 cublasZtbmv_v2; 525 da_cublasStpmv_v2 cublasStpmv_v2; 526 da_cublasDtpmv_v2 cublasDtpmv_v2; 527 da_cublasCtpmv_v2 cublasCtpmv_v2; 528 da_cublasZtpmv_v2 cublasZtpmv_v2; 529 da_cublasStrsv_v2 cublasStrsv_v2; 530 da_cublasDtrsv_v2 cublasDtrsv_v2; 531 da_cublasCtrsv_v2 cublasCtrsv_v2; 532 da_cublasZtrsv_v2 cublasZtrsv_v2; 533 da_cublasStpsv_v2 cublasStpsv_v2; 534 da_cublasDtpsv_v2 cublasDtpsv_v2; 535 da_cublasCtpsv_v2 cublasCtpsv_v2; 536 da_cublasZtpsv_v2 cublasZtpsv_v2; 537 da_cublasStbsv_v2 cublasStbsv_v2; 538 da_cublasDtbsv_v2 cublasDtbsv_v2; 539 da_cublasCtbsv_v2 cublasCtbsv_v2; 540 da_cublasZtbsv_v2 cublasZtbsv_v2; 541 da_cublasSsymv_v2 cublasSsymv_v2; 542 da_cublasDsymv_v2 cublasDsymv_v2; 543 da_cublasCsymv_v2 cublasCsymv_v2; 544 da_cublasZsymv_v2 cublasZsymv_v2; 545 da_cublasChemv_v2 cublasChemv_v2; 546 da_cublasZhemv_v2 cublasZhemv_v2; 547 da_cublasSsbmv_v2 cublasSsbmv_v2; 548 da_cublasDsbmv_v2 cublasDsbmv_v2; 549 da_cublasChbmv_v2 cublasChbmv_v2; 550 da_cublasZhbmv_v2 cublasZhbmv_v2; 551 da_cublasSspmv_v2 cublasSspmv_v2; 552 da_cublasDspmv_v2 cublasDspmv_v2; 553 da_cublasChpmv_v2 cublasChpmv_v2; 554 da_cublasZhpmv_v2 cublasZhpmv_v2; 555 da_cublasSger_v2 cublasSger_v2; 556 da_cublasDger_v2 cublasDger_v2; 557 da_cublasCgeru_v2 cublasCgeru_v2; 558 da_cublasCgerc_v2 cublasCgerc_v2; 559 da_cublasZgeru_v2 cublasZgeru_v2; 560 da_cublasZgerc_v2 cublasZgerc_v2; 561 da_cublasSsyr_v2 cublasSsyr_v2; 562 da_cublasDsyr_v2 cublasDsyr_v2; 563 da_cublasCsyr_v2 cublasCsyr_v2; 564 da_cublasZsyr_v2 cublasZsyr_v2; 565 da_cublasCher_v2 cublasCher_v2; 566 da_cublasZher_v2 cublasZher_v2; 567 da_cublasSspr_v2 cublasSspr_v2; 568 da_cublasDspr_v2 cublasDspr_v2; 569 da_cublasChpr_v2 cublasChpr_v2; 570 da_cublasZhpr_v2 cublasZhpr_v2; 571 da_cublasSsyr2_v2 cublasSsyr2_v2; 572 da_cublasDsyr2_v2 cublasDsyr2_v2; 573 da_cublasCsyr2_v2 cublasCsyr2_v2; 574 da_cublasZsyr2_v2 cublasZsyr2_v2; 575 da_cublasCher2_v2 cublasCher2_v2; 576 da_cublasZher2_v2 cublasZher2_v2; 577 da_cublasSspr2_v2 cublasSspr2_v2; 578 da_cublasDspr2_v2 cublasDspr2_v2; 579 da_cublasChpr2_v2 cublasChpr2_v2; 580 da_cublasZhpr2_v2 cublasZhpr2_v2; 581 da_cublasSgemm_v2 cublasSgemm_v2; 582 da_cublasDgemm_v2 cublasDgemm_v2; 583 da_cublasCgemm_v2 cublasCgemm_v2; 584 da_cublasCgemm3m cublasCgemm3m; 585 da_cublasCgemm3mEx cublasCgemm3mEx; 586 da_cublasZgemm_v2 cublasZgemm_v2; 587 da_cublasZgemm3m cublasZgemm3m; 588 //da_cublasHgemm cublasHgemm; 589 da_cublasSgemmEx cublasSgemmEx; 590 da_cublasGemmEx cublasGemmEx; 591 da_cublasCgemmEx cublasCgemmEx; 592 da_cublasUint8gemmBias cublasUint8gemmBias; 593 da_cublasSsyrk_v2 cublasSsyrk_v2; 594 da_cublasDsyrk_v2 cublasDsyrk_v2; 595 da_cublasCsyrk_v2 cublasCsyrk_v2; 596 da_cublasZsyrk_v2 cublasZsyrk_v2; 597 da_cublasCsyrkEx cublasCsyrkEx; 598 da_cublasCsyrk3mEx cublasCsyrk3mEx; 599 da_cublasCherk_v2 cublasCherk_v2; 600 da_cublasZherk_v2 cublasZherk_v2; 601 da_cublasCherkEx cublasCherkEx; 602 da_cublasCherk3mEx cublasCherk3mEx; 603 da_cublasSsyr2k_v2 cublasSsyr2k_v2; 604 da_cublasDsyr2k_v2 cublasDsyr2k_v2; 605 da_cublasCsyr2k_v2 cublasCsyr2k_v2; 606 da_cublasZsyr2k_v2 cublasZsyr2k_v2; 607 da_cublasCher2k_v2 cublasCher2k_v2; 608 da_cublasZher2k_v2 cublasZher2k_v2; 609 da_cublasSsyrkx cublasSsyrkx; 610 da_cublasDsyrkx cublasDsyrkx; 611 da_cublasCsyrkx cublasCsyrkx; 612 da_cublasZsyrkx cublasZsyrkx; 613 da_cublasCherkx cublasCherkx; 614 da_cublasZherkx cublasZherkx; 615 da_cublasSsymm_v2 cublasSsymm_v2; 616 da_cublasDsymm_v2 cublasDsymm_v2; 617 da_cublasCsymm_v2 cublasCsymm_v2; 618 da_cublasZsymm_v2 cublasZsymm_v2; 619 da_cublasChemm_v2 cublasChemm_v2; 620 da_cublasZhemm_v2 cublasZhemm_v2; 621 da_cublasStrsm_v2 cublasStrsm_v2; 622 da_cublasDtrsm_v2 cublasDtrsm_v2; 623 da_cublasCtrsm_v2 cublasCtrsm_v2; 624 da_cublasZtrsm_v2 cublasZtrsm_v2; 625 da_cublasStrmm_v2 cublasStrmm_v2; 626 da_cublasDtrmm_v2 cublasDtrmm_v2; 627 da_cublasCtrmm_v2 cublasCtrmm_v2; 628 da_cublasZtrmm_v2 cublasZtrmm_v2; 629 //da_cublasHgemmBatched cublasHgemmBatched; 630 da_cublasSgemmBatched cublasSgemmBatched; 631 da_cublasDgemmBatched cublasDgemmBatched; 632 da_cublasCgemmBatched cublasCgemmBatched; 633 da_cublasCgemm3mBatched cublasCgemm3mBatched; 634 da_cublasZgemmBatched cublasZgemmBatched; 635 da_cublasGemmBatchedEx cublasGemmBatchedEx; 636 da_cublasGemmStridedBatchedEx cublasGemmStridedBatchedEx; 637 da_cublasSgemmStridedBatched cublasSgemmStridedBatched; 638 da_cublasDgemmStridedBatched cublasDgemmStridedBatched; 639 da_cublasCgemmStridedBatched cublasCgemmStridedBatched; 640 da_cublasCgemm3mStridedBatched cublasCgemm3mStridedBatched; 641 da_cublasZgemmStridedBatched cublasZgemmStridedBatched; 642 //da_cublasHgemmStridedBatched cublasHgemmStridedBatched; 643 da_cublasSgeam cublasSgeam; 644 da_cublasDgeam cublasDgeam; 645 da_cublasCgeam cublasCgeam; 646 da_cublasZgeam cublasZgeam; 647 da_cublasSgetrfBatched cublasSgetrfBatched; 648 da_cublasDgetrfBatched cublasDgetrfBatched; 649 da_cublasCgetrfBatched cublasCgetrfBatched; 650 da_cublasZgetrfBatched cublasZgetrfBatched; 651 da_cublasSgetriBatched cublasSgetriBatched; 652 da_cublasDgetriBatched cublasDgetriBatched; 653 da_cublasCgetriBatched cublasCgetriBatched; 654 da_cublasZgetriBatched cublasZgetriBatched; 655 da_cublasSgetrsBatched cublasSgetrsBatched; 656 da_cublasDgetrsBatched cublasDgetrsBatched; 657 da_cublasCgetrsBatched cublasCgetrsBatched; 658 da_cublasZgetrsBatched cublasZgetrsBatched; 659 da_cublasStrsmBatched cublasStrsmBatched; 660 da_cublasDtrsmBatched cublasDtrsmBatched; 661 da_cublasCtrsmBatched cublasCtrsmBatched; 662 da_cublasZtrsmBatched cublasZtrsmBatched; 663 da_cublasSmatinvBatched cublasSmatinvBatched; 664 da_cublasDmatinvBatched cublasDmatinvBatched; 665 da_cublasCmatinvBatched cublasCmatinvBatched; 666 da_cublasZmatinvBatched cublasZmatinvBatched; 667 da_cublasSgeqrfBatched cublasSgeqrfBatched; 668 da_cublasDgeqrfBatched cublasDgeqrfBatched; 669 da_cublasCgeqrfBatched cublasCgeqrfBatched; 670 da_cublasZgeqrfBatched cublasZgeqrfBatched; 671 da_cublasSgelsBatched cublasSgelsBatched; 672 da_cublasDgelsBatched cublasDgelsBatched; 673 da_cublasCgelsBatched cublasCgelsBatched; 674 da_cublasZgelsBatched cublasZgelsBatched; 675 da_cublasSdgmm cublasSdgmm; 676 da_cublasDdgmm cublasDdgmm; 677 da_cublasCdgmm cublasCdgmm; 678 da_cublasZdgmm cublasZdgmm; 679 da_cublasStpttr cublasStpttr; 680 da_cublasDtpttr cublasDtpttr; 681 da_cublasCtpttr cublasCtpttr; 682 da_cublasZtpttr cublasZtpttr; 683 da_cublasStrttp cublasStrttp; 684 da_cublasDtrttp cublasDtrttp; 685 da_cublasCtrttp cublasCtrttp; 686 da_cublasZtrttp cublasZtrttp; 687 } 688 689 class DerelictCuBLASLoader : SharedLibLoader 690 { 691 protected 692 { 693 override void loadSymbols() 694 { 695 bindFunc(cast(void**)&cublasCreate_v2, "cublasCreate_v2"); 696 bindFunc(cast(void**)&cublasDestroy_v2, "cublasDestroy_v2"); 697 bindFunc(cast(void**)&cublasGetVersion_v2, "cublasGetVersion_v2"); 698 bindFunc(cast(void**)&cublasGetProperty, "cublasGetProperty"); 699 bindFunc(cast(void**)&cublasSetStream_v2, "cublasSetStream_v2"); 700 bindFunc(cast(void**)&cublasGetStream_v2, "cublasGetStream_v2"); 701 bindFunc(cast(void**)&cublasGetPointerMode_v2, "cublasGetPointerMode_v2"); 702 bindFunc(cast(void**)&cublasSetPointerMode_v2, "cublasSetPointerMode_v2"); 703 bindFunc(cast(void**)&cublasGetAtomicsMode, "cublasGetAtomicsMode"); 704 bindFunc(cast(void**)&cublasSetAtomicsMode, "cublasSetAtomicsMode"); 705 bindFunc(cast(void**)&cublasGetMathMode, "cublasGetMathMode"); 706 bindFunc(cast(void**)&cublasSetMathMode, "cublasSetMathMode"); 707 bindFunc(cast(void**)&cublasLoggerConfigure, "cublasLoggerConfigure"); 708 bindFunc(cast(void**)&cublasSetLoggerCallback, "cublasSetLoggerCallback"); 709 bindFunc(cast(void**)&cublasGetLoggerCallback, "cublasGetLoggerCallback"); 710 bindFunc(cast(void**)&cublasSetVector, "cublasSetVector"); 711 bindFunc(cast(void**)&cublasGetVector, "cublasGetVector"); 712 bindFunc(cast(void**)&cublasSetMatrix, "cublasSetMatrix"); 713 bindFunc(cast(void**)&cublasGetMatrix, "cublasGetMatrix"); 714 bindFunc(cast(void**)&cublasSetVectorAsync, "cublasSetVectorAsync"); 715 bindFunc(cast(void**)&cublasGetVectorAsync, "cublasGetVectorAsync"); 716 bindFunc(cast(void**)&cublasSetMatrixAsync, "cublasSetMatrixAsync"); 717 bindFunc(cast(void**)&cublasGetMatrixAsync, "cublasGetMatrixAsync"); 718 bindFunc(cast(void**)&cublasXerbla, "cublasXerbla"); 719 bindFunc(cast(void**)&cublasNrm2Ex, "cublasNrm2Ex"); 720 bindFunc(cast(void**)&cublasSnrm2_v2, "cublasSnrm2_v2"); 721 bindFunc(cast(void**)&cublasDnrm2_v2, "cublasDnrm2_v2"); 722 bindFunc(cast(void**)&cublasScnrm2_v2, "cublasScnrm2_v2"); 723 bindFunc(cast(void**)&cublasDznrm2_v2, "cublasDznrm2_v2"); 724 bindFunc(cast(void**)&cublasDotEx, "cublasDotEx"); 725 bindFunc(cast(void**)&cublasDotcEx, "cublasDotcEx"); 726 bindFunc(cast(void**)&cublasSdot_v2, "cublasSdot_v2"); 727 bindFunc(cast(void**)&cublasDdot_v2, "cublasDdot_v2"); 728 bindFunc(cast(void**)&cublasCdotu_v2, "cublasCdotu_v2"); 729 bindFunc(cast(void**)&cublasCdotc_v2, "cublasCdotc_v2"); 730 bindFunc(cast(void**)&cublasZdotu_v2, "cublasZdotu_v2"); 731 bindFunc(cast(void**)&cublasZdotc_v2, "cublasZdotc_v2"); 732 bindFunc(cast(void**)&cublasScalEx, "cublasScalEx"); 733 bindFunc(cast(void**)&cublasSscal_v2, "cublasSscal_v2"); 734 bindFunc(cast(void**)&cublasDscal_v2, "cublasDscal_v2"); 735 bindFunc(cast(void**)&cublasCscal_v2, "cublasCscal_v2"); 736 bindFunc(cast(void**)&cublasCsscal_v2, "cublasCsscal_v2"); 737 bindFunc(cast(void**)&cublasZscal_v2, "cublasZscal_v2"); 738 bindFunc(cast(void**)&cublasZdscal_v2, "cublasZdscal_v2"); 739 bindFunc(cast(void**)&cublasAxpyEx, "cublasAxpyEx"); 740 bindFunc(cast(void**)&cublasSaxpy_v2, "cublasSaxpy_v2"); 741 bindFunc(cast(void**)&cublasDaxpy_v2, "cublasDaxpy_v2"); 742 bindFunc(cast(void**)&cublasCaxpy_v2, "cublasCaxpy_v2"); 743 bindFunc(cast(void**)&cublasZaxpy_v2, "cublasZaxpy_v2"); 744 bindFunc(cast(void**)&cublasScopy_v2, "cublasScopy_v2"); 745 bindFunc(cast(void**)&cublasDcopy_v2, "cublasDcopy_v2"); 746 bindFunc(cast(void**)&cublasCcopy_v2, "cublasCcopy_v2"); 747 bindFunc(cast(void**)&cublasZcopy_v2, "cublasZcopy_v2"); 748 bindFunc(cast(void**)&cublasSswap_v2, "cublasSswap_v2"); 749 bindFunc(cast(void**)&cublasDswap_v2, "cublasDswap_v2"); 750 bindFunc(cast(void**)&cublasCswap_v2, "cublasCswap_v2"); 751 bindFunc(cast(void**)&cublasZswap_v2, "cublasZswap_v2"); 752 bindFunc(cast(void**)&cublasIsamax_v2, "cublasIsamax_v2"); 753 bindFunc(cast(void**)&cublasIdamax_v2, "cublasIdamax_v2"); 754 bindFunc(cast(void**)&cublasIcamax_v2, "cublasIcamax_v2"); 755 bindFunc(cast(void**)&cublasIzamax_v2, "cublasIzamax_v2"); 756 bindFunc(cast(void**)&cublasIsamin_v2, "cublasIsamin_v2"); 757 bindFunc(cast(void**)&cublasIdamin_v2, "cublasIdamin_v2"); 758 bindFunc(cast(void**)&cublasIcamin_v2, "cublasIcamin_v2"); 759 bindFunc(cast(void**)&cublasIzamin_v2, "cublasIzamin_v2"); 760 bindFunc(cast(void**)&cublasSasum_v2, "cublasSasum_v2"); 761 bindFunc(cast(void**)&cublasDasum_v2, "cublasDasum_v2"); 762 bindFunc(cast(void**)&cublasScasum_v2, "cublasScasum_v2"); 763 bindFunc(cast(void**)&cublasDzasum_v2, "cublasDzasum_v2"); 764 bindFunc(cast(void**)&cublasSrot_v2, "cublasSrot_v2"); 765 bindFunc(cast(void**)&cublasDrot_v2, "cublasDrot_v2"); 766 bindFunc(cast(void**)&cublasCrot_v2, "cublasCrot_v2"); 767 bindFunc(cast(void**)&cublasCsrot_v2, "cublasCsrot_v2"); 768 bindFunc(cast(void**)&cublasZrot_v2, "cublasZrot_v2"); 769 bindFunc(cast(void**)&cublasZdrot_v2, "cublasZdrot_v2"); 770 bindFunc(cast(void**)&cublasSrotg_v2, "cublasSrotg_v2"); 771 bindFunc(cast(void**)&cublasDrotg_v2, "cublasDrotg_v2"); 772 bindFunc(cast(void**)&cublasCrotg_v2, "cublasCrotg_v2"); 773 bindFunc(cast(void**)&cublasZrotg_v2, "cublasZrotg_v2"); 774 bindFunc(cast(void**)&cublasSrotm_v2, "cublasSrotm_v2"); 775 bindFunc(cast(void**)&cublasDrotm_v2, "cublasDrotm_v2"); 776 bindFunc(cast(void**)&cublasSrotmg_v2, "cublasSrotmg_v2"); 777 bindFunc(cast(void**)&cublasDrotmg_v2, "cublasDrotmg_v2"); 778 bindFunc(cast(void**)&cublasSgemv_v2, "cublasSgemv_v2"); 779 bindFunc(cast(void**)&cublasDgemv_v2, "cublasDgemv_v2"); 780 bindFunc(cast(void**)&cublasCgemv_v2, "cublasCgemv_v2"); 781 bindFunc(cast(void**)&cublasZgemv_v2, "cublasZgemv_v2"); 782 bindFunc(cast(void**)&cublasSgbmv_v2, "cublasSgbmv_v2"); 783 bindFunc(cast(void**)&cublasDgbmv_v2, "cublasDgbmv_v2"); 784 bindFunc(cast(void**)&cublasCgbmv_v2, "cublasCgbmv_v2"); 785 bindFunc(cast(void**)&cublasZgbmv_v2, "cublasZgbmv_v2"); 786 bindFunc(cast(void**)&cublasStrmv_v2, "cublasStrmv_v2"); 787 bindFunc(cast(void**)&cublasDtrmv_v2, "cublasDtrmv_v2"); 788 bindFunc(cast(void**)&cublasCtrmv_v2, "cublasCtrmv_v2"); 789 bindFunc(cast(void**)&cublasZtrmv_v2, "cublasZtrmv_v2"); 790 bindFunc(cast(void**)&cublasStbmv_v2, "cublasStbmv_v2"); 791 bindFunc(cast(void**)&cublasDtbmv_v2, "cublasDtbmv_v2"); 792 bindFunc(cast(void**)&cublasCtbmv_v2, "cublasCtbmv_v2"); 793 bindFunc(cast(void**)&cublasZtbmv_v2, "cublasZtbmv_v2"); 794 bindFunc(cast(void**)&cublasStpmv_v2, "cublasStpmv_v2"); 795 bindFunc(cast(void**)&cublasDtpmv_v2, "cublasDtpmv_v2"); 796 bindFunc(cast(void**)&cublasCtpmv_v2, "cublasCtpmv_v2"); 797 bindFunc(cast(void**)&cublasZtpmv_v2, "cublasZtpmv_v2"); 798 bindFunc(cast(void**)&cublasStrsv_v2, "cublasStrsv_v2"); 799 bindFunc(cast(void**)&cublasDtrsv_v2, "cublasDtrsv_v2"); 800 bindFunc(cast(void**)&cublasCtrsv_v2, "cublasCtrsv_v2"); 801 bindFunc(cast(void**)&cublasZtrsv_v2, "cublasZtrsv_v2"); 802 bindFunc(cast(void**)&cublasStpsv_v2, "cublasStpsv_v2"); 803 bindFunc(cast(void**)&cublasDtpsv_v2, "cublasDtpsv_v2"); 804 bindFunc(cast(void**)&cublasCtpsv_v2, "cublasCtpsv_v2"); 805 bindFunc(cast(void**)&cublasZtpsv_v2, "cublasZtpsv_v2"); 806 bindFunc(cast(void**)&cublasStbsv_v2, "cublasStbsv_v2"); 807 bindFunc(cast(void**)&cublasDtbsv_v2, "cublasDtbsv_v2"); 808 bindFunc(cast(void**)&cublasCtbsv_v2, "cublasCtbsv_v2"); 809 bindFunc(cast(void**)&cublasZtbsv_v2, "cublasZtbsv_v2"); 810 bindFunc(cast(void**)&cublasSsymv_v2, "cublasSsymv_v2"); 811 bindFunc(cast(void**)&cublasDsymv_v2, "cublasDsymv_v2"); 812 bindFunc(cast(void**)&cublasCsymv_v2, "cublasCsymv_v2"); 813 bindFunc(cast(void**)&cublasZsymv_v2, "cublasZsymv_v2"); 814 bindFunc(cast(void**)&cublasChemv_v2, "cublasChemv_v2"); 815 bindFunc(cast(void**)&cublasZhemv_v2, "cublasZhemv_v2"); 816 bindFunc(cast(void**)&cublasSsbmv_v2, "cublasSsbmv_v2"); 817 bindFunc(cast(void**)&cublasDsbmv_v2, "cublasDsbmv_v2"); 818 bindFunc(cast(void**)&cublasChbmv_v2, "cublasChbmv_v2"); 819 bindFunc(cast(void**)&cublasZhbmv_v2, "cublasZhbmv_v2"); 820 bindFunc(cast(void**)&cublasSspmv_v2, "cublasSspmv_v2"); 821 bindFunc(cast(void**)&cublasDspmv_v2, "cublasDspmv_v2"); 822 bindFunc(cast(void**)&cublasChpmv_v2, "cublasChpmv_v2"); 823 bindFunc(cast(void**)&cublasZhpmv_v2, "cublasZhpmv_v2"); 824 bindFunc(cast(void**)&cublasSger_v2, "cublasSger_v2"); 825 bindFunc(cast(void**)&cublasDger_v2, "cublasDger_v2"); 826 bindFunc(cast(void**)&cublasCgeru_v2, "cublasCgeru_v2"); 827 bindFunc(cast(void**)&cublasCgerc_v2, "cublasCgerc_v2"); 828 bindFunc(cast(void**)&cublasZgeru_v2, "cublasZgeru_v2"); 829 bindFunc(cast(void**)&cublasZgerc_v2, "cublasZgerc_v2"); 830 bindFunc(cast(void**)&cublasSsyr_v2, "cublasSsyr_v2"); 831 bindFunc(cast(void**)&cublasDsyr_v2, "cublasDsyr_v2"); 832 bindFunc(cast(void**)&cublasCsyr_v2, "cublasCsyr_v2"); 833 bindFunc(cast(void**)&cublasZsyr_v2, "cublasZsyr_v2"); 834 bindFunc(cast(void**)&cublasCher_v2, "cublasCher_v2"); 835 bindFunc(cast(void**)&cublasZher_v2, "cublasZher_v2"); 836 bindFunc(cast(void**)&cublasSspr_v2, "cublasSspr_v2"); 837 bindFunc(cast(void**)&cublasDspr_v2, "cublasDspr_v2"); 838 bindFunc(cast(void**)&cublasChpr_v2, "cublasChpr_v2"); 839 bindFunc(cast(void**)&cublasZhpr_v2, "cublasZhpr_v2"); 840 bindFunc(cast(void**)&cublasSsyr2_v2, "cublasSsyr2_v2"); 841 bindFunc(cast(void**)&cublasDsyr2_v2, "cublasDsyr2_v2"); 842 bindFunc(cast(void**)&cublasCsyr2_v2, "cublasCsyr2_v2"); 843 bindFunc(cast(void**)&cublasZsyr2_v2, "cublasZsyr2_v2"); 844 bindFunc(cast(void**)&cublasCher2_v2, "cublasCher2_v2"); 845 bindFunc(cast(void**)&cublasZher2_v2, "cublasZher2_v2"); 846 bindFunc(cast(void**)&cublasSspr2_v2, "cublasSspr2_v2"); 847 bindFunc(cast(void**)&cublasDspr2_v2, "cublasDspr2_v2"); 848 bindFunc(cast(void**)&cublasChpr2_v2, "cublasChpr2_v2"); 849 bindFunc(cast(void**)&cublasZhpr2_v2, "cublasZhpr2_v2"); 850 bindFunc(cast(void**)&cublasSgemm_v2, "cublasSgemm_v2"); 851 bindFunc(cast(void**)&cublasDgemm_v2, "cublasDgemm_v2"); 852 bindFunc(cast(void**)&cublasCgemm_v2, "cublasCgemm_v2"); 853 bindFunc(cast(void**)&cublasCgemm3m, "cublasCgemm3m"); 854 bindFunc(cast(void**)&cublasCgemm3mEx, "cublasCgemm3mEx"); 855 bindFunc(cast(void**)&cublasZgemm_v2, "cublasZgemm_v2"); 856 bindFunc(cast(void**)&cublasZgemm3m, "cublasZgemm3m"); 857 //bindFunc(cast(void**)&cublasHgemm, "cublasHgemm"); 858 bindFunc(cast(void**)&cublasSgemmEx, "cublasSgemmEx"); 859 bindFunc(cast(void**)&cublasGemmEx, "cublasGemmEx"); 860 bindFunc(cast(void**)&cublasCgemmEx, "cublasCgemmEx"); 861 bindFunc(cast(void**)&cublasUint8gemmBias, "cublasUint8gemmBias"); 862 bindFunc(cast(void**)&cublasSsyrk_v2, "cublasSsyrk_v2"); 863 bindFunc(cast(void**)&cublasDsyrk_v2, "cublasDsyrk_v2"); 864 bindFunc(cast(void**)&cublasCsyrk_v2, "cublasCsyrk_v2"); 865 bindFunc(cast(void**)&cublasZsyrk_v2, "cublasZsyrk_v2"); 866 bindFunc(cast(void**)&cublasCsyrkEx, "cublasCsyrkEx"); 867 bindFunc(cast(void**)&cublasCsyrk3mEx, "cublasCsyrk3mEx"); 868 bindFunc(cast(void**)&cublasCherk_v2, "cublasCherk_v2"); 869 bindFunc(cast(void**)&cublasZherk_v2, "cublasZherk_v2"); 870 bindFunc(cast(void**)&cublasCherkEx, "cublasCherkEx"); 871 bindFunc(cast(void**)&cublasCherk3mEx, "cublasCherk3mEx"); 872 bindFunc(cast(void**)&cublasSsyr2k_v2, "cublasSsyr2k_v2"); 873 bindFunc(cast(void**)&cublasDsyr2k_v2, "cublasDsyr2k_v2"); 874 bindFunc(cast(void**)&cublasCsyr2k_v2, "cublasCsyr2k_v2"); 875 bindFunc(cast(void**)&cublasZsyr2k_v2, "cublasZsyr2k_v2"); 876 bindFunc(cast(void**)&cublasCher2k_v2, "cublasCher2k_v2"); 877 bindFunc(cast(void**)&cublasZher2k_v2, "cublasZher2k_v2"); 878 bindFunc(cast(void**)&cublasSsyrkx, "cublasSsyrkx"); 879 bindFunc(cast(void**)&cublasDsyrkx, "cublasDsyrkx"); 880 bindFunc(cast(void**)&cublasCsyrkx, "cublasCsyrkx"); 881 bindFunc(cast(void**)&cublasZsyrkx, "cublasZsyrkx"); 882 bindFunc(cast(void**)&cublasCherkx, "cublasCherkx"); 883 bindFunc(cast(void**)&cublasZherkx, "cublasZherkx"); 884 bindFunc(cast(void**)&cublasSsymm_v2, "cublasSsymm_v2"); 885 bindFunc(cast(void**)&cublasDsymm_v2, "cublasDsymm_v2"); 886 bindFunc(cast(void**)&cublasCsymm_v2, "cublasCsymm_v2"); 887 bindFunc(cast(void**)&cublasZsymm_v2, "cublasZsymm_v2"); 888 bindFunc(cast(void**)&cublasChemm_v2, "cublasChemm_v2"); 889 bindFunc(cast(void**)&cublasZhemm_v2, "cublasZhemm_v2"); 890 bindFunc(cast(void**)&cublasStrsm_v2, "cublasStrsm_v2"); 891 bindFunc(cast(void**)&cublasDtrsm_v2, "cublasDtrsm_v2"); 892 bindFunc(cast(void**)&cublasCtrsm_v2, "cublasCtrsm_v2"); 893 bindFunc(cast(void**)&cublasZtrsm_v2, "cublasZtrsm_v2"); 894 bindFunc(cast(void**)&cublasStrmm_v2, "cublasStrmm_v2"); 895 bindFunc(cast(void**)&cublasDtrmm_v2, "cublasDtrmm_v2"); 896 bindFunc(cast(void**)&cublasCtrmm_v2, "cublasCtrmm_v2"); 897 bindFunc(cast(void**)&cublasZtrmm_v2, "cublasZtrmm_v2"); 898 //bindFunc(cast(void**)&cublasHgemmBatched, "cublasHgemmBatched"); 899 bindFunc(cast(void**)&cublasSgemmBatched, "cublasSgemmBatched"); 900 bindFunc(cast(void**)&cublasDgemmBatched, "cublasDgemmBatched"); 901 bindFunc(cast(void**)&cublasCgemmBatched, "cublasCgemmBatched"); 902 bindFunc(cast(void**)&cublasCgemm3mBatched, "cublasCgemm3mBatched"); 903 bindFunc(cast(void**)&cublasZgemmBatched, "cublasZgemmBatched"); 904 bindFunc(cast(void**)&cublasGemmBatchedEx, "cublasGemmBatchedEx"); 905 bindFunc(cast(void**)&cublasGemmStridedBatchedEx, "cublasGemmStridedBatchedEx"); 906 bindFunc(cast(void**)&cublasSgemmStridedBatched, "cublasSgemmStridedBatched"); 907 bindFunc(cast(void**)&cublasDgemmStridedBatched, "cublasDgemmStridedBatched"); 908 bindFunc(cast(void**)&cublasCgemmStridedBatched, "cublasCgemmStridedBatched"); 909 bindFunc(cast(void**)&cublasCgemm3mStridedBatched, "cublasCgemm3mStridedBatched"); 910 bindFunc(cast(void**)&cublasZgemmStridedBatched, "cublasZgemmStridedBatched"); 911 //bindFunc(cast(void**)&cublasHgemmStridedBatched, "cublasHgemmStridedBatched"); 912 bindFunc(cast(void**)&cublasSgeam, "cublasSgeam"); 913 bindFunc(cast(void**)&cublasDgeam, "cublasDgeam"); 914 bindFunc(cast(void**)&cublasCgeam, "cublasCgeam"); 915 bindFunc(cast(void**)&cublasZgeam, "cublasZgeam"); 916 bindFunc(cast(void**)&cublasSgetrfBatched, "cublasSgetrfBatched"); 917 bindFunc(cast(void**)&cublasDgetrfBatched, "cublasDgetrfBatched"); 918 bindFunc(cast(void**)&cublasCgetrfBatched, "cublasCgetrfBatched"); 919 bindFunc(cast(void**)&cublasZgetrfBatched, "cublasZgetrfBatched"); 920 bindFunc(cast(void**)&cublasSgetriBatched, "cublasSgetriBatched"); 921 bindFunc(cast(void**)&cublasDgetriBatched, "cublasDgetriBatched"); 922 bindFunc(cast(void**)&cublasCgetriBatched, "cublasCgetriBatched"); 923 bindFunc(cast(void**)&cublasZgetriBatched, "cublasZgetriBatched"); 924 bindFunc(cast(void**)&cublasSgetrsBatched, "cublasSgetrsBatched"); 925 bindFunc(cast(void**)&cublasDgetrsBatched, "cublasDgetrsBatched"); 926 bindFunc(cast(void**)&cublasCgetrsBatched, "cublasCgetrsBatched"); 927 bindFunc(cast(void**)&cublasZgetrsBatched, "cublasZgetrsBatched"); 928 bindFunc(cast(void**)&cublasStrsmBatched, "cublasStrsmBatched"); 929 bindFunc(cast(void**)&cublasDtrsmBatched, "cublasDtrsmBatched"); 930 bindFunc(cast(void**)&cublasCtrsmBatched, "cublasCtrsmBatched"); 931 bindFunc(cast(void**)&cublasZtrsmBatched, "cublasZtrsmBatched"); 932 bindFunc(cast(void**)&cublasSmatinvBatched, "cublasSmatinvBatched"); 933 bindFunc(cast(void**)&cublasDmatinvBatched, "cublasDmatinvBatched"); 934 bindFunc(cast(void**)&cublasCmatinvBatched, "cublasCmatinvBatched"); 935 bindFunc(cast(void**)&cublasZmatinvBatched, "cublasZmatinvBatched"); 936 bindFunc(cast(void**)&cublasSgeqrfBatched, "cublasSgeqrfBatched"); 937 bindFunc(cast(void**)&cublasDgeqrfBatched, "cublasDgeqrfBatched"); 938 bindFunc(cast(void**)&cublasCgeqrfBatched, "cublasCgeqrfBatched"); 939 bindFunc(cast(void**)&cublasZgeqrfBatched, "cublasZgeqrfBatched"); 940 bindFunc(cast(void**)&cublasSgelsBatched, "cublasSgelsBatched"); 941 bindFunc(cast(void**)&cublasDgelsBatched, "cublasDgelsBatched"); 942 bindFunc(cast(void**)&cublasCgelsBatched, "cublasCgelsBatched"); 943 bindFunc(cast(void**)&cublasZgelsBatched, "cublasZgelsBatched"); 944 bindFunc(cast(void**)&cublasSdgmm, "cublasSdgmm"); 945 bindFunc(cast(void**)&cublasDdgmm, "cublasDdgmm"); 946 bindFunc(cast(void**)&cublasCdgmm, "cublasCdgmm"); 947 bindFunc(cast(void**)&cublasZdgmm, "cublasZdgmm"); 948 bindFunc(cast(void**)&cublasStpttr, "cublasStpttr"); 949 bindFunc(cast(void**)&cublasDtpttr, "cublasDtpttr"); 950 bindFunc(cast(void**)&cublasCtpttr, "cublasCtpttr"); 951 bindFunc(cast(void**)&cublasZtpttr, "cublasZtpttr"); 952 bindFunc(cast(void**)&cublasStrttp, "cublasStrttp"); 953 bindFunc(cast(void**)&cublasDtrttp, "cublasDtrttp"); 954 bindFunc(cast(void**)&cublasCtrttp, "cublasCtrttp"); 955 bindFunc(cast(void**)&cublasZtrttp, "cublasZtrttp"); 956 } 957 } 958 959 public 960 { 961 this() 962 { 963 super(libNames); 964 } 965 } 966 } 967 968 969 __gshared DerelictCuBLASLoader DerelictCuBLAS; 970 971 shared static this() 972 { 973 DerelictCuBLAS = new DerelictCuBLASLoader(); 974 }