1 #pragma once 2 3 #include <petscdevice_cupm.h> 4 5 #if defined(PETSC_HAVE_CUDA) 6 /* complex single */ 7 #if defined(PETSC_USE_COMPLEX) 8 #if defined(PETSC_USE_REAL_SINGLE) 9 #define cublasXaxpy(a, b, c, d, e, f, g) cublasCaxpy((a), (b), (cuComplex *)(c), (cuComplex *)(d), (e), (cuComplex *)(f), (g)) 10 #define cublasXscal(a, b, c, d, e) cublasCscal((a), (b), (cuComplex *)(c), (cuComplex *)(d), (e)) 11 #define cublasXdotu(a, b, c, d, e, f, g) cublasCdotu((a), (b), (cuComplex *)(c), (d), (cuComplex *)(e), (f), (cuComplex *)(g)) 12 #define cublasXdot(a, b, c, d, e, f, g) cublasCdotc((a), (b), (cuComplex *)(c), (d), (cuComplex *)(e), (f), (cuComplex *)(g)) 13 #define cublasXswap(a, b, c, d, e, f) cublasCswap((a), (b), (cuComplex *)(c), (d), (cuComplex *)(e), (f)) 14 #define cublasXnrm2(a, b, c, d, e) cublasScnrm2((a), (b), (cuComplex *)(c), (d), (e)) 15 #define cublasIXamax(a, b, c, d, e) cublasIcamax((a), (b), (cuComplex *)(c), (d), (e)) 16 #define cublasXasum(a, b, c, d, e) cublasScasum((a), (b), (cuComplex *)(c), (d), (e)) 17 #define cublasXgemv(a, b, c, d, e, f, g, h, i, j, k, l) cublasCgemv((a), (b), (c), (d), (cuComplex *)(e), (cuComplex *)(f), (g), (cuComplex *)(h), (i), (cuComplex *)(j), (cuComplex *)(k), (l)) 18 #define cublasXgemm(a, b, c, d, e, f, g, h, i, j, k, l, m, n) cublasCgemm((a), (b), (c), (d), (e), (f), (cuComplex *)(g), (cuComplex *)(h), (i), (cuComplex *)(j), (k), (cuComplex *)(l), (cuComplex *)(m), (n)) 19 #define cublasXgeam(a, b, c, d, e, f, g, h, i, j, k, l, m) cublasCgeam((a), (b), (c), (d), (e), (cuComplex *)(f), (cuComplex *)(g), (h), (cuComplex *)(i), (cuComplex *)(j), (k), (cuComplex *)(l), (m)) 20 #define cublasXgemvStridedBatched(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) \ 21 cublasCgemvStridedBatched((a), (b), (c), (d), (const cuComplex *)(e), (const cuComplex *)(f), (g), (h), (const cuComplex *)(i), (j), (k), (const cuComplex *)(l), (cuComplex *)(m), (n), (o), (p)) 22 #else /* complex double */ 23 #define cublasXaxpy(a, b, c, d, e, f, g) cublasZaxpy((a), (b), (cuDoubleComplex *)(c), (cuDoubleComplex *)(d), (e), (cuDoubleComplex *)(f), (g)) 24 #define cublasXscal(a, b, c, d, e) cublasZscal((a), (b), (cuDoubleComplex *)(c), (cuDoubleComplex *)(d), (e)) 25 #define cublasXdotu(a, b, c, d, e, f, g) cublasZdotu((a), (b), (cuDoubleComplex *)(c), (d), (cuDoubleComplex *)(e), (f), (cuDoubleComplex *)(g)) 26 #define cublasXdot(a, b, c, d, e, f, g) cublasZdotc((a), (b), (cuDoubleComplex *)(c), (d), (cuDoubleComplex *)(e), (f), (cuDoubleComplex *)(g)) 27 #define cublasXswap(a, b, c, d, e, f) cublasZswap((a), (b), (cuDoubleComplex *)(c), (d), (cuDoubleComplex *)(e), (f)) 28 #define cublasXnrm2(a, b, c, d, e) cublasDznrm2((a), (b), (cuDoubleComplex *)(c), (d), (e)) 29 #define cublasIXamax(a, b, c, d, e) cublasIzamax((a), (b), (cuDoubleComplex *)(c), (d), (e)) 30 #define cublasXasum(a, b, c, d, e) cublasDzasum((a), (b), (cuDoubleComplex *)(c), (d), (e)) 31 #define cublasXgemv(a, b, c, d, e, f, g, h, i, j, k, l) cublasZgemv((a), (b), (c), (d), (cuDoubleComplex *)(e), (cuDoubleComplex *)(f), (g), (cuDoubleComplex *)(h), (i), (cuDoubleComplex *)(j), (cuDoubleComplex *)(k), (l)) 32 #define cublasXgemm(a, b, c, d, e, f, g, h, i, j, k, l, m, n) cublasZgemm((a), (b), (c), (d), (e), (f), (cuDoubleComplex *)(g), (cuDoubleComplex *)(h), (i), (cuDoubleComplex *)(j), (k), (cuDoubleComplex *)(l), (cuDoubleComplex *)(m), (n)) 33 #define cublasXgeam(a, b, c, d, e, f, g, h, i, j, k, l, m) cublasZgeam((a), (b), (c), (d), (e), (cuDoubleComplex *)(f), (cuDoubleComplex *)(g), (h), (cuDoubleComplex *)(i), (cuDoubleComplex *)(j), (k), (cuDoubleComplex *)(l), (m)) 34 #define cublasXgemvStridedBatched(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) \ 35 cublasZgemvStridedBatched((a), (b), (c), (d), (const cuDoubleComplex *)(e), (const cuDoubleComplex *)(f), (g), (h), (const cuDoubleComplex *)(i), (j), (k), (const cuDoubleComplex *)(l), (cuDoubleComplex *)(m), (n), (o), (p)) 36 37 #endif 38 #else /* real single */ 39 #if defined(PETSC_USE_REAL_SINGLE) 40 #define cublasXaxpy cublasSaxpy 41 #define cublasXscal cublasSscal 42 #define cublasXdotu cublasSdot 43 #define cublasXdot cublasSdot 44 #define cublasXswap cublasSswap 45 #define cublasXnrm2 cublasSnrm2 46 #define cublasIXamax cublasIsamax 47 #define cublasXasum cublasSasum 48 #define cublasXgemv cublasSgemv 49 #define cublasXgemm cublasSgemm 50 #define cublasXgeam cublasSgeam 51 #define cublasXgemvStridedBatched cublasSgemvStridedBatched 52 #else /* real double */ 53 #define cublasXaxpy cublasDaxpy 54 #define cublasXscal cublasDscal 55 #define cublasXdotu cublasDdot 56 #define cublasXdot cublasDdot 57 #define cublasXswap cublasDswap 58 #define cublasXnrm2 cublasDnrm2 59 #define cublasIXamax cublasIdamax 60 #define cublasXasum cublasDasum 61 #define cublasXgemv cublasDgemv 62 #define cublasXgemm cublasDgemm 63 #define cublasXgeam cublasDgeam 64 #define cublasXgemvStridedBatched cublasDgemvStridedBatched 65 #endif 66 #endif 67 68 #if defined(PETSC_USE_COMPLEX) 69 #if defined(PETSC_USE_REAL_SINGLE) 70 #define cusolverDnXpotrf(a, b, c, d, e, f, g, h) cusolverDnCpotrf((a), (b), (c), (cuComplex *)(d), (e), (cuComplex *)(f), (g), (h)) 71 #define cusolverDnXpotrf_bufferSize(a, b, c, d, e, f) cusolverDnCpotrf_bufferSize((a), (b), (c), (cuComplex *)(d), (e), (f)) 72 #define cusolverDnXpotrs(a, b, c, d, e, f, g, h, i) cusolverDnCpotrs((a), (b), (c), (d), (cuComplex *)(e), (f), (cuComplex *)(g), (h), (i)) 73 #define cusolverDnXpotri(a, b, c, d, e, f, g, h) cusolverDnCpotri((a), (b), (c), (cuComplex *)(d), (e), (cuComplex *)(f), (g), (h)) 74 #define cusolverDnXpotri_bufferSize(a, b, c, d, e, f) cusolverDnCpotri_bufferSize((a), (b), (c), (cuComplex *)(d), (e), (f)) 75 #define cusolverDnXsytrf(a, b, c, d, e, f, g, h, i) cusolverDnCsytrf((a), (b), (c), (cuComplex *)(d), (e), (f), (cuComplex *)(g), (h), (i)) 76 #define cusolverDnXsytrf_bufferSize(a, b, c, d, e) cusolverDnCsytrf_bufferSize((a), (b), (cuComplex *)(c), (d), (e)) 77 #define cusolverDnXgetrf(a, b, c, d, e, f, g, h) cusolverDnCgetrf((a), (b), (c), (cuComplex *)(d), (e), (cuComplex *)(f), (g), (h)) 78 #define cusolverDnXgetrf_bufferSize(a, b, c, d, e, f) cusolverDnCgetrf_bufferSize((a), (b), (c), (cuComplex *)(d), (e), (f)) 79 #define cusolverDnXgetrs(a, b, c, d, e, f, g, h, i, j) cusolverDnCgetrs((a), (b), (c), (d), (cuComplex *)(e), (f), (g), (cuComplex *)(h), (i), (j)) 80 #define cusolverDnXgeqrf_bufferSize(a, b, c, d, e, f) cusolverDnCgeqrf_bufferSize((a), (b), (c), (cuComplex *)(d), (e), (f)) 81 #define cusolverDnXgeqrf(a, b, c, d, e, f, g, h, i) cusolverDnCgeqrf((a), (b), (c), (cuComplex *)(d), (e), (cuComplex *)(f), (cuComplex *)(g), (h), (i)) 82 #define cusolverDnXormqr_bufferSize(a, b, c, d, e, f, g, h, i, j, k, l) cusolverDnCunmqr_bufferSize((a), (b), (c), (d), (e), (f), (cuComplex *)(g), (h), (cuComplex *)(i), (cuComplex *)(j), (k), (l)) 83 #define cusolverDnXormqr(a, b, c, d, e, f, g, h, i, j, k, l, m, n) cusolverDnCunmqr((a), (b), (c), (d), (e), (f), (cuComplex *)(g), (h), (cuComplex *)(i), (cuComplex *)(j), (k), (cuComplex *)(l), (m), (n)) 84 #define cublasXtrsm(a, b, c, d, e, f, g, h, i, j, k, l) cublasCtrsm((a), (b), (c), (d), (e), (f), (g), (cuComplex *)(h), (cuComplex *)(i), (j), (cuComplex *)(k), (l)) 85 #else /* complex double */ 86 #define cusolverDnXpotrf(a, b, c, d, e, f, g, h) cusolverDnZpotrf((a), (b), (c), (cuDoubleComplex *)(d), (e), (cuDoubleComplex *)(f), (g), (h)) 87 #define cusolverDnXpotrf_bufferSize(a, b, c, d, e, f) cusolverDnZpotrf_bufferSize((a), (b), (c), (cuDoubleComplex *)(d), (e), (f)) 88 #define cusolverDnXpotrs(a, b, c, d, e, f, g, h, i) cusolverDnZpotrs((a), (b), (c), (d), (cuDoubleComplex *)(e), (f), (cuDoubleComplex *)(g), (h), (i)) 89 #define cusolverDnXpotri(a, b, c, d, e, f, g, h) cusolverDnZpotri((a), (b), (c), (cuDoubleComplex *)(d), (e), (cuDoubleComplex *)(f), (g), (h)) 90 #define cusolverDnXpotri_bufferSize(a, b, c, d, e, f) cusolverDnZpotri_bufferSize((a), (b), (c), (cuDoubleComplex *)(d), (e), (f)) 91 #define cusolverDnXsytrf(a, b, c, d, e, f, g, h, i) cusolverDnZsytrf((a), (b), (c), (cuDoubleComplex *)(d), (e), (f), (cuDoubleComplex *)(g), (h), (i)) 92 #define cusolverDnXsytrf_bufferSize(a, b, c, d, e) cusolverDnZsytrf_bufferSize((a), (b), (cuDoubleComplex *)(c), (d), (e)) 93 #define cusolverDnXgetrf(a, b, c, d, e, f, g, h) cusolverDnZgetrf((a), (b), (c), (cuDoubleComplex *)(d), (e), (cuDoubleComplex *)(f), (g), (h)) 94 #define cusolverDnXgetrf_bufferSize(a, b, c, d, e, f) cusolverDnZgetrf_bufferSize((a), (b), (c), (cuDoubleComplex *)(d), (e), (f)) 95 #define cusolverDnXgetrs(a, b, c, d, e, f, g, h, i, j) cusolverDnZgetrs((a), (b), (c), (d), (cuDoubleComplex *)(e), (f), (g), (cuDoubleComplex *)(h), (i), (j)) 96 #define cusolverDnXgeqrf_bufferSize(a, b, c, d, e, f) cusolverDnZgeqrf_bufferSize((a), (b), (c), (cuDoubleComplex *)(d), (e), (f)) 97 #define cusolverDnXgeqrf(a, b, c, d, e, f, g, h, i) cusolverDnZgeqrf((a), (b), (c), (cuDoubleComplex *)(d), (e), (cuDoubleComplex *)(f), (cuDoubleComplex *)(g), (h), (i)) 98 #define cusolverDnXormqr_bufferSize(a, b, c, d, e, f, g, h, i, j, k, l) cusolverDnZunmqr_bufferSize((a), (b), (c), (d), (e), (f), (cuDoubleComplex *)(g), (h), (cuDoubleComplex *)(i), (cuDoubleComplex *)(j), (k), (l)) 99 #define cusolverDnXormqr(a, b, c, d, e, f, g, h, i, j, k, l, m, n) cusolverDnZunmqr((a), (b), (c), (d), (e), (f), (cuDoubleComplex *)(g), (h), (cuDoubleComplex *)(i), (cuDoubleComplex *)(j), (k), (cuDoubleComplex *)(l), (m), (n)) 100 #define cublasXtrsm(a, b, c, d, e, f, g, h, i, j, k, l) cublasZtrsm((a), (b), (c), (d), (e), (f), (g), (cuDoubleComplex *)(h), (cuDoubleComplex *)(i), (j), (cuDoubleComplex *)(k), (l)) 101 #endif 102 #else /* real single */ 103 #if defined(PETSC_USE_REAL_SINGLE) 104 #define cusolverDnXpotrf(a, b, c, d, e, f, g, h) cusolverDnSpotrf((a), (b), (c), (d), (e), (f), (g), (h)) 105 #define cusolverDnXpotrf_bufferSize(a, b, c, d, e, f) cusolverDnSpotrf_bufferSize((a), (b), (c), (d), (e), (f)) 106 #define cusolverDnXpotrs(a, b, c, d, e, f, g, h, i) cusolverDnSpotrs((a), (b), (c), (d), (e), (f), (g), (h), (i)) 107 #define cusolverDnXpotri(a, b, c, d, e, f, g, h) cusolverDnSpotri((a), (b), (c), (d), (e), (f), (g), (h)) 108 #define cusolverDnXpotri_bufferSize(a, b, c, d, e, f) cusolverDnSpotri_bufferSize((a), (b), (c), (d), (e), (f)) 109 #define cusolverDnXsytrf(a, b, c, d, e, f, g, h, i) cusolverDnSsytrf((a), (b), (c), (d), (e), (f), (g), (h), (i)) 110 #define cusolverDnXsytrf_bufferSize(a, b, c, d, e) cusolverDnSsytrf_bufferSize((a), (b), (c), (d), (e)) 111 #define cusolverDnXgetrf(a, b, c, d, e, f, g, h) cusolverDnSgetrf((a), (b), (c), (d), (e), (f), (g), (h)) 112 #define cusolverDnXgetrf_bufferSize(a, b, c, d, e, f) cusolverDnSgetrf_bufferSize((a), (b), (c), (d), (e), (f)) 113 #define cusolverDnXgetrs(a, b, c, d, e, f, g, h, i, j) cusolverDnSgetrs((a), (b), (c), (d), (e), (f), (g), (h), (i), (j)) 114 #define cusolverDnXgeqrf_bufferSize(a, b, c, d, e, f) cusolverDnSgeqrf_bufferSize((a), (b), (c), (float *)(d), (e), (f)) 115 #define cusolverDnXgeqrf(a, b, c, d, e, f, g, h, i) cusolverDnSgeqrf((a), (b), (c), (float *)(d), (e), (float *)(f), (float *)(g), (h), (i)) 116 #define cusolverDnXormqr_bufferSize(a, b, c, d, e, f, g, h, i, j, k, l) cusolverDnSormqr_bufferSize((a), (b), (c), (d), (e), (f), (float *)(g), (h), (float *)(i), (float *)(j), (k), (l)) 117 #define cusolverDnXormqr(a, b, c, d, e, f, g, h, i, j, k, l, m, n) cusolverDnSormqr((a), (b), (c), (d), (e), (f), (float *)(g), (h), (float *)(i), (float *)(j), (k), (float *)(l), (m), (n)) 118 #define cublasXtrsm(a, b, c, d, e, f, g, h, i, j, k, l) cublasStrsm((a), (b), (c), (d), (e), (f), (g), (float *)(h), (float *)(i), (j), (float *)(k), (l)) 119 #else /* real double */ 120 #define cusolverDnXpotrf(a, b, c, d, e, f, g, h) cusolverDnDpotrf((a), (b), (c), (d), (e), (f), (g), (h)) 121 #define cusolverDnXpotrf_bufferSize(a, b, c, d, e, f) cusolverDnDpotrf_bufferSize((a), (b), (c), (d), (e), (f)) 122 #define cusolverDnXpotrs(a, b, c, d, e, f, g, h, i) cusolverDnDpotrs((a), (b), (c), (d), (e), (f), (g), (h), (i)) 123 #define cusolverDnXpotri(a, b, c, d, e, f, g, h) cusolverDnDpotri((a), (b), (c), (d), (e), (f), (g), (h)) 124 #define cusolverDnXpotri_bufferSize(a, b, c, d, e, f) cusolverDnDpotri_bufferSize((a), (b), (c), (d), (e), (f)) 125 #define cusolverDnXsytrf(a, b, c, d, e, f, g, h, i) cusolverDnDsytrf((a), (b), (c), (d), (e), (f), (g), (h), (i)) 126 #define cusolverDnXsytrf_bufferSize(a, b, c, d, e) cusolverDnDsytrf_bufferSize((a), (b), (c), (d), (e)) 127 #define cusolverDnXgetrf(a, b, c, d, e, f, g, h) cusolverDnDgetrf((a), (b), (c), (d), (e), (f), (g), (h)) 128 #define cusolverDnXgetrf_bufferSize(a, b, c, d, e, f) cusolverDnDgetrf_bufferSize((a), (b), (c), (d), (e), (f)) 129 #define cusolverDnXgetrs(a, b, c, d, e, f, g, h, i, j) cusolverDnDgetrs((a), (b), (c), (d), (e), (f), (g), (h), (i), (j)) 130 #define cusolverDnXgeqrf_bufferSize(a, b, c, d, e, f) cusolverDnDgeqrf_bufferSize((a), (b), (c), (double *)(d), (e), (f)) 131 #define cusolverDnXgeqrf(a, b, c, d, e, f, g, h, i) cusolverDnDgeqrf((a), (b), (c), (double *)(d), (e), (double *)(f), (double *)(g), (h), (i)) 132 #define cusolverDnXormqr_bufferSize(a, b, c, d, e, f, g, h, i, j, k, l) cusolverDnDormqr_bufferSize((a), (b), (c), (d), (e), (f), (double *)(g), (h), (double *)(i), (double *)(j), (k), (l)) 133 #define cusolverDnXormqr(a, b, c, d, e, f, g, h, i, j, k, l, m, n) cusolverDnDormqr((a), (b), (c), (d), (e), (f), (double *)(g), (h), (double *)(i), (double *)(j), (k), (double *)(l), (m), (n)) 134 #define cublasXtrsm(a, b, c, d, e, f, g, h, i, j, k, l) cublasDtrsm((a), (b), (c), (d), (e), (f), (g), (double *)(h), (double *)(i), (j), (double *)(k), (l)) 135 #endif 136 #endif 137 #endif // PETSC_HAVE_CUDA 138 139 #if defined(PETSC_HAVE_HIP) 140 #if defined(PETSC_USE_COMPLEX) 141 #if defined(PETSC_USE_REAL_SINGLE) 142 #define hipsolverDnXpotrf(a, b, c, d, e, f, g, h) hipsolverCpotrf((a), (b), (c), (hipComplex *)(d), (e), (hipComplex *)(f), (g), (h)) 143 #define hipsolverDnXpotrf_bufferSize(a, b, c, d, e, f) hipsolverCpotrf_bufferSize((a), (b), (c), (hipComplex *)(d), (e), (f)) 144 #define hipsolverDnXpotrs(a, b, c, d, e, f, g, h, i, j, k) hipsolverCpotrs((a), (b), (c), (d), (hipComplex *)(e), (f), (hipComplex *)(g), (h), (hipComplex *)(i), (j), (k)) 145 #define hipsolverDnXpotri(a, b, c, d, e, f, g, h) hipsolverCpotri((a), (b), (c), (hipComplex *)(d), (e), (hipComplex *)(f), (g), (h)) 146 #define hipsolverDnXpotri_bufferSize(a, b, c, d, e, f) hipsolverCpotri_bufferSize((a), (b), (c), (hipComplex *)(d), (e), (f)) 147 #define hipsolverDnXsytrf(a, b, c, d, e, f, g, h, i) hipsolverCsytrf((a), (b), (c), (hipComplex *)(d), (e), (f), (hipComplex *)(g), (h), (i)) 148 #define hipsolverDnXsytrf_bufferSize(a, b, c, d, e) hipsolverCsytrf_bufferSize((a), (b), (hipComplex *)(c), (d), (e)) 149 #define hipsolverDnXgetrf(a, b, c, d, e, f, g, h, i) hipsolverCgetrf((a), (b), (c), (hipComplex *)(d), (e), (hipComplex *)(f), (g), (h), (i)) 150 #define hipsolverDnXgetrf_bufferSize(a, b, c, d, e, f) hipsolverCgetrf_bufferSize((a), (b), (c), (hipComplex *)(d), (e), (f)) 151 #define hipsolverDnXgetrs(a, b, c, d, e, f, g, h, i, j, k, l) hipsolverCgetrs((a), (b), (c), (d), (hipComplex *)(e), (f), (g), (hipComplex *)(h), (i), (hipComplex *)(j), (k), (l)) 152 #define hipsolverDnXgeqrf_bufferSize(a, b, c, d, e, f) hipsolverCgeqrf_bufferSize((a), (b), (c), (hipComplex *)(d), (e), (f)) 153 #define hipsolverDnXgeqrf(a, b, c, d, e, f, g, h, i) hipsolverCgeqrf((a), (b), (c), (hipComplex *)(d), (e), (hipComplex *)(f), (hipComplex *)(g), (h), (i)) 154 #define hipsolverDnXormqr_bufferSize(a, b, c, d, e, f, g, h, i, j, k, l) hipsolverCunmqr_bufferSize((a), (b), (c), (d), (e), (f), (hipComplex *)(g), (h), (hipComplex *)(i), (hipComplex *)(j), (k), (l)) 155 #define hipsolverDnXormqr(a, b, c, d, e, f, g, h, i, j, k, l, m, n) hipsolverCunmqr((a), (b), (c), (d), (e), (f), (hipComplex *)(g), (h), (hipComplex *)(i), (hipComplex *)(j), (k), (hipComplex *)(l), (m), (n)) 156 #define hipblasXtrsm(a, b, c, d, e, f, g, h, i, j, k, l) hipblasCtrsm((a), (b), (c), (d), (e), (f), (g), (hipComplex *)(h), (hipComplex *)(i), (j), (hipComplex *)(k), (l)) 157 #else /* complex double */ 158 #define hipsolverDnXpotrf(a, b, c, d, e, f, g, h) hipsolverZpotrf((a), (b), (c), (hipDoubleComplex *)(d), (e), (hipDoubleComplex *)(f), (g), (h)) 159 #define hipsolverDnXpotrf_bufferSize(a, b, c, d, e, f) hipsolverZpotrf_bufferSize((a), (b), (c), (hipDoubleComplex *)(d), (e), (f)) 160 #define hipsolverDnXpotrs(a, b, c, d, e, f, g, h, i, j, k) hipsolverZpotrs((a), (b), (c), (d), (hipDoubleComplex *)(e), (f), (hipDoubleComplex *)(g), (h), (hipDoubleComplex *)(i), (j), (k)) 161 #define hipsolverDnXpotri(a, b, c, d, e, f, g, h) hipsolverZpotri((a), (b), (c), (hipDoubleComplex *)(d), (e), (hipDoubleComplex *)(f), (g), (h)) 162 #define hipsolverDnXpotri_bufferSize(a, b, c, d, e, f) hipsolverZpotri_bufferSize((a), (b), (c), (hipDoubleComplex *)(d), (e), (f)) 163 #define hipsolverDnXsytrf(a, b, c, d, e, f, g, h, i) hipsolverZsytrf((a), (b), (c), (hipDoubleComplex *)(d), (e), (f), (hipDoubleComplex *)(g), (h), (i)) 164 #define hipsolverDnXsytrf_bufferSize(a, b, c, d, e) hipsolverZsytrf_bufferSize((a), (b), (hipDoubleComplex *)(c), (d), (e)) 165 #define hipsolverDnXgetrf(a, b, c, d, e, f, g, h, i) hipsolverZgetrf((a), (b), (c), (hipDoubleComplex *)(d), (e), (hipDoubleComplex *)(f), (g), (h), (i)) 166 #define hipsolverDnXgetrf_bufferSize(a, b, c, d, e, f) hipsolverZgetrf_bufferSize((a), (b), (c), (hipDoubleComplex *)(d), (e), (f)) 167 #define hipsolverDnXgetrs(a, b, c, d, e, f, g, h, i, j, k, l) hipsolverZgetrs((a), (b), (c), (d), (hipDoubleComplex *)(e), (f), (g), (hipDoubleComplex *)(h), (i), (hipDoubleComplex *)(j), (k), (l)) 168 #define hipsolverDnXgeqrf_bufferSize(a, b, c, d, e, f) hipsolverZgeqrf_bufferSize((a), (b), (c), (hipDoubleComplex *)(d), (e), (f)) 169 #define hipsolverDnXgeqrf(a, b, c, d, e, f, g, h, i) hipsolverZgeqrf((a), (b), (c), (hipDoubleComplex *)(d), (e), (hipDoubleComplex *)(f), (hipDoubleComplex *)(g), (h), (i)) 170 #define hipsolverDnXormqr_bufferSize(a, b, c, d, e, f, g, h, i, j, k, l) hipsolverZunmqr_bufferSize((a), (b), (c), (d), (e), (f), (hipDoubleComplex *)(g), (h), (hipDoubleComplex *)(i), (hipDoubleComplex *)(j), (k), (l)) 171 #define hipsolverDnXormqr(a, b, c, d, e, f, g, h, i, j, k, l, m, n) hipsolverZunmqr((a), (b), (c), (d), (e), (f), (hipDoubleComplex *)(g), (h), (hipDoubleComplex *)(i), (hipDoubleComplex *)(j), (k), (hipDoubleComplex *)(l), (m), (n)) 172 #define hipblasXtrsm(a, b, c, d, e, f, g, h, i, j, k, l) hipblasZtrsm((a), (b), (c), (d), (e), (f), (g), (hipDoubleComplex *)(h), (hipDoubleComplex *)(i), (j), (hipDoubleComplex *)(k), (l)) 173 #endif 174 #else /* real single */ 175 #if defined(PETSC_USE_REAL_SINGLE) 176 #define hipsolverDnXpotrf(a, b, c, d, e, f, g, h) hipsolverSpotrf((a), (b), (c), (float *)(d), (e), (float *)(f), (g), (h)) 177 #define hipsolverDnXpotrf_bufferSize(a, b, c, d, e, f) hipsolverSpotrf_bufferSize((a), (b), (c), (float *)(d), (e), (f)) 178 #define hipsolverDnXpotrs(a, b, c, d, e, f, g, h, i, j, k) hipsolverSpotrs((a), (b), (c), (d), (float *)(e), (f), (float *)(g), (h), (float *)(i), (j), (k)) 179 #define hipsolverDnXpotri(a, b, c, d, e, f, g, h) hipsolverSpotri((a), (b), (c), (float *)(d), (e), (float *)(f), (g), (h)) 180 #define hipsolverDnXpotri_bufferSize(a, b, c, d, e, f) hipsolverSpotri_bufferSize((a), (b), (c), (float *)(d), (e), (f)) 181 #define hipsolverDnXsytrf(a, b, c, d, e, f, g, h, i) hipsolverSsytrf((a), (b), (c), (float *)(d), (e), (f), (float *)(g), (h), (i)) 182 #define hipsolverDnXsytrf_bufferSize(a, b, c, d, e) hipsolverSsytrf_bufferSize((a), (b), (float *)(c), (d), (e)) 183 #define hipsolverDnXgetrf(a, b, c, d, e, f, g, h, i) hipsolverSgetrf((a), (b), (c), (float *)(d), (e), (float *)(f), (g), (h), (i)) 184 #define hipsolverDnXgetrf_bufferSize(a, b, c, d, e, f) hipsolverSgetrf_bufferSize((a), (b), (c), (float *)(d), (e), (f)) 185 #define hipsolverDnXgetrs(a, b, c, d, e, f, g, h, i, j, k, l) hipsolverSgetrs((a), (b), (c), (d), (float *)(e), (f), (g), (float *)(h), (i), (float *)(j), (k), (l)) 186 #define hipsolverDnXgeqrf_bufferSize(a, b, c, d, e, f) hipsolverSgeqrf_bufferSize((a), (b), (c), (float *)(d), (e), (f)) 187 #define hipsolverDnXgeqrf(a, b, c, d, e, f, g, h, i) hipsolverSgeqrf((a), (b), (c), (float *)(d), (e), (float *)(f), (float *)(g), (h), (i)) 188 #define hipsolverDnXormqr_bufferSize(a, b, c, d, e, f, g, h, i, j, k, l) hipsolverSormqr_bufferSize((a), (b), (c), (d), (e), (f), (float *)(g), (h), (float *)(i), (float *)(j), (k), (l)) 189 #define hipsolverDnXormqr(a, b, c, d, e, f, g, h, i, j, k, l, m, n) hipsolverSormqr((a), (b), (c), (d), (e), (f), (float *)(g), (h), (float *)(i), (float *)(j), (k), (float *)(l), (m), (n)) 190 #define hipblasXtrsm(a, b, c, d, e, f, g, h, i, j, k, l) hipblasStrsm((a), (b), (c), (d), (e), (f), (g), (float *)(h), (float *)(i), (j), (float *)(k), (l)) 191 #else /* real double */ 192 #define hipsolverDnXpotrf(a, b, c, d, e, f, g, h) hipsolverDpotrf((a), (b), (c), (double *)(d), (e), (double *)(f), (g), (h)) 193 #define hipsolverDnXpotrf_bufferSize(a, b, c, d, e, f) hipsolverDpotrf_bufferSize((a), (b), (c), (double *)(d), (e), (f)) 194 #define hipsolverDnXpotrs(a, b, c, d, e, f, g, h, i, j, k) hipsolverDpotrs((a), (b), (c), (d), (double *)(e), (f), (double *)(g), (h), (double *)(i), (j), (k)) 195 #define hipsolverDnXpotri(a, b, c, d, e, f, g, h) hipsolverDpotri((a), (b), (c), (double *)(d), (e), (double *)(f), (g), (h)) 196 #define hipsolverDnXpotri_bufferSize(a, b, c, d, e, f) hipsolverDpotri_bufferSize((a), (b), (c), (double *)(d), (e), (f)) 197 #define hipsolverDnXsytrf(a, b, c, d, e, f, g, h, i) hipsolverDsytrf((a), (b), (c), (double *)(d), (e), (f), (double *)(g), (h), (i)) 198 #define hipsolverDnXsytrf_bufferSize(a, b, c, d, e) hipsolverDsytrf_bufferSize((a), (b), (double *)(c), (d), (e)) 199 #define hipsolverDnXgetrf(a, b, c, d, e, f, g, h, i) hipsolverDgetrf((a), (b), (c), (double *)(d), (e), (double *)(f), (g), (h), (i)) 200 #define hipsolverDnXgetrf_bufferSize(a, b, c, d, e, f) hipsolverDgetrf_bufferSize((a), (b), (c), (double *)(d), (e), (f)) 201 #define hipsolverDnXgetrs(a, b, c, d, e, f, g, h, i, j, k, l) hipsolverDgetrs((a), (b), (c), (d), (double *)(e), (f), (g), (double *)(h), (i), (double *)(j), (k), (l)) 202 #define hipsolverDnXgeqrf_bufferSize(a, b, c, d, e, f) hipsolverDgeqrf_bufferSize((a), (b), (c), (double *)(d), (e), (f)) 203 #define hipsolverDnXgeqrf(a, b, c, d, e, f, g, h, i) hipsolverDgeqrf((a), (b), (c), (double *)(d), (e), (double *)(f), (double *)(g), (h), (i)) 204 #define hipsolverDnXormqr_bufferSize(a, b, c, d, e, f, g, h, i, j, k, l) hipsolverDormqr_bufferSize((a), (b), (c), (d), (e), (f), (double *)(g), (h), (double *)(i), (double *)(j), (k), (l)) 205 #define hipsolverDnXormqr(a, b, c, d, e, f, g, h, i, j, k, l, m, n) hipsolverDormqr((a), (b), (c), (d), (e), (f), (double *)(g), (h), (double *)(i), (double *)(j), (k), (double *)(l), (m), (n)) 206 #define hipblasXtrsm(a, b, c, d, e, f, g, h, i, j, k, l) hipblasDtrsm((a), (b), (c), (d), (e), (f), (g), (double *)(h), (double *)(i), (j), (double *)(k), (l)) 207 #endif 208 #endif 209 210 /* complex single */ 211 #if defined(PETSC_USE_COMPLEX) 212 #if defined(HIPBLAS_V2) 213 typedef hipDoubleComplex PetscHipblasDoubleComplex; 214 typedef hipFloatComplex PetscHipblasFloatComplex; 215 #else 216 typedef hipblasComplex PetscHipblasFloatComplex; 217 typedef hipblasDoubleComplex PetscHipblasDoubleComplex; 218 #endif 219 220 #if defined(PETSC_USE_REAL_SINGLE) 221 #define hipblasXaxpy(a, b, c, d, e, f, g) hipblasCaxpy((a), (b), (PetscHipblasFloatComplex *)(c), (PetscHipblasFloatComplex *)(d), (e), (PetscHipblasFloatComplex *)(f), (g)) 222 #define hipblasXscal(a, b, c, d, e) hipblasCscal((a), (b), (PetscHipblasFloatComplex *)(c), (PetscHipblasFloatComplex *)(d), (e)) 223 #define hipblasXdotu(a, b, c, d, e, f, g) hipblasCdotu((a), (b), (PetscHipblasFloatComplex *)(c), (d), (PetscHipblasFloatComplex *)(e), (f), (PetscHipblasFloatComplex *)(g)) 224 #define hipblasXdot(a, b, c, d, e, f, g) hipblasCdotc((a), (b), (PetscHipblasFloatComplex *)(c), (d), (PetscHipblasFloatComplex *)(e), (f), (PetscHipblasFloatComplex *)(g)) 225 #define hipblasXswap(a, b, c, d, e, f) hipblasCswap((a), (b), (PetscHipblasFloatComplex *)(c), (d), (PetscHipblasFloatComplex *)(e), (f)) 226 #define hipblasXnrm2(a, b, c, d, e) hipblasScnrm2((a), (b), (PetscHipblasFloatComplex *)(c), (d), (e)) 227 #define hipblasIXamax(a, b, c, d, e) hipblasIcamax((a), (b), (PetscHipblasFloatComplex *)(c), (d), (e)) 228 #define hipblasXasum(a, b, c, d, e) hipblasScasum((a), (b), (PetscHipblasFloatComplex *)(c), (d), (e)) 229 #define hipblasXgemv(a, b, c, d, e, f, g, h, i, j, k, l) \ 230 hipblasCgemv((a), (b), (c), (d), (PetscHipblasFloatComplex *)(e), (PetscHipblasFloatComplex *)(f), (g), (PetscHipblasFloatComplex *)(h), (i), (PetscHipblasFloatComplex *)(j), (PetscHipblasFloatComplex *)(k), (l)) 231 #define hipblasXgemm(a, b, c, d, e, f, g, h, i, j, k, l, m, n) \ 232 hipblasCgemm((a), (b), (c), (d), (e), (f), (PetscHipblasFloatComplex *)(g), (PetscHipblasFloatComplex *)(h), (i), (PetscHipblasFloatComplex *)(j), (k), (PetscHipblasFloatComplex *)(l), (PetscHipblasFloatComplex *)(m), (n)) 233 #define hipblasXgeam(a, b, c, d, e, f, g, h, i, j, k, l, m) \ 234 hipblasCgeam((a), (b), (c), (d), (e), (PetscHipblasFloatComplex *)(f), (PetscHipblasFloatComplex *)(g), (h), (PetscHipblasFloatComplex *)(i), (PetscHipblasFloatComplex *)(j), (k), (PetscHipblasFloatComplex *)(l), (m)) 235 #else /* complex double */ 236 #define hipblasXaxpy(a, b, c, d, e, f, g) hipblasZaxpy((a), (b), (PetscHipblasDoubleComplex *)(c), (PetscHipblasDoubleComplex *)(d), (e), (PetscHipblasDoubleComplex *)(f), (g)) 237 #define hipblasXscal(a, b, c, d, e) hipblasZscal((a), (b), (PetscHipblasDoubleComplex *)(c), (PetscHipblasDoubleComplex *)(d), (e)) 238 #define hipblasXdotu(a, b, c, d, e, f, g) hipblasZdotu((a), (b), (PetscHipblasDoubleComplex *)(c), (d), (PetscHipblasDoubleComplex *)(e), (f), (PetscHipblasDoubleComplex *)(g)) 239 #define hipblasXdot(a, b, c, d, e, f, g) hipblasZdotc((a), (b), (PetscHipblasDoubleComplex *)(c), (d), (PetscHipblasDoubleComplex *)(e), (f), (PetscHipblasDoubleComplex *)(g)) 240 #define hipblasXswap(a, b, c, d, e, f) hipblasZswap((a), (b), (PetscHipblasDoubleComplex *)(c), (d), (PetscHipblasDoubleComplex *)(e), (f)) 241 #define hipblasXnrm2(a, b, c, d, e) hipblasDznrm2((a), (b), (PetscHipblasDoubleComplex *)(c), (d), (e)) 242 #define hipblasIXamax(a, b, c, d, e) hipblasIzamax((a), (b), (PetscHipblasDoubleComplex *)(c), (d), (e)) 243 #define hipblasXasum(a, b, c, d, e) hipblasDzasum((a), (b), (PetscHipblasDoubleComplex *)(c), (d), (e)) 244 #define hipblasXgemv(a, b, c, d, e, f, g, h, i, j, k, l) \ 245 hipblasZgemv((a), (b), (c), (d), (PetscHipblasDoubleComplex *)(e), (PetscHipblasDoubleComplex *)(f), (g), (PetscHipblasDoubleComplex *)(h), (i), (PetscHipblasDoubleComplex *)(j), (PetscHipblasDoubleComplex *)(k), (l)) 246 #define hipblasXgemm(a, b, c, d, e, f, g, h, i, j, k, l, m, n) \ 247 hipblasZgemm((a), (b), (c), (d), (e), (f), (PetscHipblasDoubleComplex *)(g), (PetscHipblasDoubleComplex *)(h), (i), (PetscHipblasDoubleComplex *)(j), (k), (PetscHipblasDoubleComplex *)(l), (PetscHipblasDoubleComplex *)(m), (n)) 248 #define hipblasXgeam(a, b, c, d, e, f, g, h, i, j, k, l, m) \ 249 hipblasZgeam((a), (b), (c), (d), (e), (PetscHipblasDoubleComplex *)(f), (PetscHipblasDoubleComplex *)(g), (h), (PetscHipblasDoubleComplex *)(i), (PetscHipblasDoubleComplex *)(j), (k), (PetscHipblasDoubleComplex *)(l), (m)) 250 #endif 251 #else /* real single */ 252 #if defined(PETSC_USE_REAL_SINGLE) 253 #define hipblasXaxpy hipblasSaxpy 254 #define hipblasXscal hipblasSscal 255 #define hipblasXdotu hipblasSdot 256 #define hipblasXdot hipblasSdot 257 #define hipblasXswap hipblasSswap 258 #define hipblasXnrm2 hipblasSnrm2 259 #define hipblasIXamax hipblasIsamax 260 #define hipblasXasum hipblasSasum 261 #define hipblasXgemv hipblasSgemv 262 #define hipblasXgemm hipblasSgemm 263 #define hipblasXgeam hipblasSgeam 264 #else /* real double */ 265 #define hipblasXaxpy hipblasDaxpy 266 #define hipblasXscal hipblasDscal 267 #define hipblasXdotu hipblasDdot 268 #define hipblasXdot hipblasDdot 269 #define hipblasXswap hipblasDswap 270 #define hipblasXnrm2 hipblasDnrm2 271 #define hipblasIXamax hipblasIdamax 272 #define hipblasXasum hipblasDasum 273 #define hipblasXgemv hipblasDgemv 274 #define hipblasXgemm hipblasDgemm 275 #define hipblasXgeam hipblasDgeam 276 #endif 277 #endif 278 #endif // PETSC_HAVE_HIP 279