34 #define MagmaNoTrans 'N'
35 #define MagmaTrans 'T'
36 #define MagmaConjTrans 'C'
38 #define MagmaUpper 'U'
39 #define MagmaLower 'L'
40 #define MagmaUpperLower 'A'
42 #define MagmaNonUnit 'N'
46 #define MagmaRight 'R'
48 #define MagmaForward 'F'
49 #define MagmaBackward 'B'
51 #define MagmaColumnwise 'C'
52 #define MagmaRowwise 'R'
54 #define MagmaNoVectors 'N'
55 #define MagmaVectors 'V'
57 #define MagmaNoTransStr "NonTrans"
58 #define MagmaTransStr "Trans"
59 #define MagmaConjTransStr "Conj"
61 #define MagmaUpperStr "Upper"
62 #define MagmaLowerStr "Lower"
63 #define MagmaUpperLowerStr "All"
65 #define MagmaNonUnitStr "NonUnit"
66 #define MagmaUnitStr "Unit"
68 #define MagmaLeftStr "Left"
69 #define MagmaRightStr "Right"
71 #define MagmaForwardStr "Forward"
72 #define MagmaBackwardStr "Backward"
74 #define MagmaColumnwiseStr "Columnwise"
75 #define MagmaRowwiseStr "Rowwise"
77 #define MagmaNoVectorsStr "NoVectors"
78 #define MagmaVectorsStr "Vectors"
80 #define MagmaMaxGPUs 8
85 #define MAGMA_SUCCESS 0
86 #define MAGMA_ERR_ILLEGAL_VALUE -100
87 #define MAGMA_ERR_HOST_ALLOC -102
88 #define MAGMA_ERR_DEVICE_ALLOC -103
89 #define MAGMA_ERR_CUDASTREAM -104
90 #define MAGMA_ERR_INVALID_PTR -105
100 #define MAGMA_Z_SET2REAL(v, t) {(v).x = (t); (v).y = 0.0;}
101 #define MAGMA_Z_EQUAL(u,v) (((u).x == (v).x) && ((u).y == (v).y))
102 #define MAGMA_Z_DSCALE(v, t, s) {(v).x = (t).x/(s); (v).y = (t).y/(s);}
103 #define MAGMA_Z_MAKE(r, i) make_cuDoubleComplex((r), (i))
104 #define MAGMA_Z_REAL(a) cuCreal(a)
105 #define MAGMA_Z_IMAG(a) cuCimag(a)
106 #define MAGMA_Z_ADD(a, b) cuCadd((a), (b))
107 #define MAGMA_Z_SUB(a, b) cuCsub((a), (b))
108 #define MAGMA_Z_MUL(a, b) cuCmul((a), (b))
109 #define MAGMA_Z_DIV(a, b) cuCdiv((a), (b))
110 #define MAGMA_Z_ABS(a) cuCabs((a))
111 #define MAGMA_Z_CNJG(a) cuConj(a)
112 #define MAGMA_Z_NEGATE(a) make_cuDoubleComplex( -(a).x, -(a).y )
113 #define MAGMA_Z_ZERO make_cuDoubleComplex(0.0, 0.0)
114 #define MAGMA_Z_ONE make_cuDoubleComplex(1.0, 0.0)
115 #define MAGMA_Z_HALF make_cuDoubleComplex(0.5, 0.0)
116 #define MAGMA_Z_NEG_ONE make_cuDoubleComplex(-1.0, 0.0)
117 #define MAGMA_Z_NEG_HALF make_cuDoubleComplex(-0.5, 0.0)
119 #define MAGMA_C_SET2REAL(v, t) {(v).x = (t); (v).y = 0.0;}
120 #define MAGMA_C_EQUAL(u,v) (((u).x == (v).x) && ((u).y == (v).y))
121 #define MAGMA_C_DSCALE(v, t, s) {(v).x = (t).x/(s); (v).y = (t).y/(s);}
122 #define MAGMA_C_MAKE(r, i) make_cuFloatComplex((r), (i))
123 #define MAGMA_C_REAL(a) cuCrealf(a)
124 #define MAGMA_C_IMAG(a) cuCimagf(a)
125 #define MAGMA_C_ADD(a, b) cuCaddf((a), (b))
126 #define MAGMA_C_SUB(a, b) cuCsubf((a), (b))
127 #define MAGMA_C_MUL(a, b) cuCmulf((a), (b))
128 #define MAGMA_C_DIV(a, b) cuCdivf((a), (b))
129 #define MAGMA_C_ABS(a) cuCabsf((a))
130 #define MAGMA_C_CNJG(a) cuConjf(a)
131 #define MAGMA_C_NEGATE(a) make_cuFloatComplex( -(a).x, -(a).y )
132 #define MAGMA_C_ZERO make_cuFloatComplex(0.0, 0.0)
133 #define MAGMA_C_ONE make_cuFloatComplex(1.0, 0.0)
134 #define MAGMA_C_HALF make_cuFloatComplex(0.5, 0.0)
135 #define MAGMA_C_NEG_ONE make_cuFloatComplex(-1.0, 0.0)
136 #define MAGMA_C_NEG_HALF make_cuFloatComplex(-0.5, 0.0)
138 #define MAGMA_D_SET2REAL(v, t) (v) = (t)
139 #define MAGMA_D_OP_NEG_ASGN(t, z) (t) = -(z)
140 #define MAGMA_D_EQUAL(u,v) ((u) == (v))
141 #define MAGMA_D_DSCALE(v, t, s) (v) = (t)/(s)
142 #define MAGMA_D_MAKE(r, i) (r)
143 #define MAGMA_D_REAL(a) (a)
144 #define MAGMA_D_IMAG(a) (a)
145 #define MAGMA_D_ADD(a, b) ( (a) + (b) )
146 #define MAGMA_D_SUB(a, b) ( (a) - (b) )
147 #define MAGMA_D_MUL(a, b) ( (a) * (b) )
148 #define MAGMA_D_DIV(a, b) ( (a) / (b) )
149 #define MAGMA_D_ABS(a) ((a)>0?(a):-(a))
150 #define MAGMA_D_CNJG(a) (a)
151 #define MAGMA_D_NEGATE(a) (-(a))
152 #define MAGMA_D_ZERO (0.0)
153 #define MAGMA_D_ONE (1.0)
154 #define MAGMA_D_HALF (0.5)
155 #define MAGMA_D_NEG_ONE (-1.0)
156 #define MAGMA_D_NEG_HALF (-0.5)
158 #define MAGMA_S_SET2REAL(v, t) (v) = (t)
159 #define MAGMA_S_OP_NEG_ASGN(t, z) (t) = -(z)
160 #define MAGMA_S_EQUAL(u,v) ((u) == (v))
161 #define MAGMA_S_DSCALE(v, t, s) (v) = (t)/(s)
162 #define MAGMA_S_MAKE(r, i) (r)
163 #define MAGMA_S_REAL(a) (a)
164 #define MAGMA_S_IMAG(a) (a)
165 #define MAGMA_S_ADD(a, b) ( (a) + (b) )
166 #define MAGMA_S_SUB(a, b) ( (a) - (b) )
167 #define MAGMA_S_MUL(a, b) ( (a) * (b) )
168 #define MAGMA_S_DIV(a, b) ( (a) / (b) )
169 #define MAGMA_S_ABS(a) ((a)>0?(a):-(a))
170 #define MAGMA_S_CNJG(a) (a)
171 #define MAGMA_S_NEGATE(a) (-(a))
172 #define MAGMA_S_ZERO (0.0)
173 #define MAGMA_S_ONE (1.0)
174 #define MAGMA_S_HALF (0.5)
175 #define MAGMA_S_NEG_ONE (-1.0)
176 #define MAGMA_S_NEG_HALF (-0.5)
179 #define CBLAS_SADDR(a) &(a)