MAGMA  1.2.0
MatrixAlgebraonGPUandMulticoreArchitectures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
magmablas_c.h
Go to the documentation of this file.
1 /*
2  * -- MAGMA (version 1.2.0) --
3  * Univ. of Tennessee, Knoxville
4  * Univ. of California, Berkeley
5  * Univ. of Colorado, Denver
6  * May 2012
7  *
8  * @generated c Thu May 10 22:26:24 2012
9  */
10 
11 #ifndef _MAGMABLAS_C_H_
12 #define _MAGMABLAS_C_H_
13 
14 #define PRECISION_c
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20  /*
21  * Interface to clean
22  */
23 float cpu_gpu_cdiff( int M, int N,
24  cuFloatComplex * a, int lda,
25  cuFloatComplex *da, int ldda);
26 void czero_32x32_block( cuFloatComplex *, magma_int_t);
27 void czero_nbxnb_block( magma_int_t, cuFloatComplex *, magma_int_t);
29 void magmablas_cpermute_long( cuFloatComplex *, magma_int_t,
31 void magmablas_cpermute_long2( cuFloatComplex *, magma_int_t,
33 void magmablas_cpermute_long3( cuFloatComplex *dAT, int lda,
34  int *ipiv, int nb, int ind );
35 void magmablas_ctranspose( cuFloatComplex *, magma_int_t,
36  cuFloatComplex *, magma_int_t,
38 void magmablas_ctranspose2( cuFloatComplex *, magma_int_t,
39  cuFloatComplex *, magma_int_t,
41 void magmablas_ctranspose2s(cuFloatComplex *odata, int ldo,
42  cuFloatComplex *idata, int ldi,
43  int m, int n, cudaStream_t *stream );
44 
45 void magmablas_cgetmatrix_transpose( int m, int n,
46  cuFloatComplex *dat, int ldda,
47  cuFloatComplex *ha, int lda,
48  cuFloatComplex *dB, int lddb, int nb );
49 void magmablas_cgetmatrix_transpose2( int m, int n,
50  cuFloatComplex **dat, int *ldda,
51  cuFloatComplex *ha, int lda,
52  cuFloatComplex **dB, int lddb, int nb,
53  int num_gpus, cudaStream_t stream[][2] );
54 void magmablas_csetmatrix_transpose( int m, int n,
55  cuFloatComplex *ha, int lda,
56  cuFloatComplex *dat, int ldda,
57  cuFloatComplex *dB, int lddb, int nb );
58 void magmablas_csetmatrix_transpose2( int m, int n,
59  cuFloatComplex *ha, int lda,
60  cuFloatComplex **dat, int *ldda,
61  cuFloatComplex **dB, int lddb, int nb,
62  int num_gpus, cudaStream_t stream[][2] );
63 void magmablas_cgetmatrix_1D_bcyclic( int m, int n,
64  cuFloatComplex *da[], int ldda,
65  cuFloatComplex *ha, int lda,
66  int num_gpus, int nb );
67 void magmablas_csetmatrix_1D_bcyclic( int m, int n,
68  cuFloatComplex *ha, int lda,
69  cuFloatComplex *da[], int ldda,
70  int num_gpus, int nb );
71 
72  /*
73  * LAPACK auxiliary functions
74  */
75 void magmablas_clacpy( char uplo,
77  cuFloatComplex *A, magma_int_t lda,
78  cuFloatComplex *B, magma_int_t ldb);
79 float magmablas_clange( char norm,
81  cuFloatComplex *A, magma_int_t lda, float *WORK);
82 float magmablas_clanhe( char norm, char uplo,
83  magma_int_t n,
84  cuFloatComplex *A, magma_int_t lda, float *WORK);
85 float magmablas_clansy( char norm, char uplo,
86  magma_int_t n,
87  cuFloatComplex *A, magma_int_t lda, float *WORK);
88 void magmablas_clascl( char type, int kl, int ku,
89  float cfrom, float cto,
90  int m, int n,
91  cuFloatComplex *A, int lda, int *info );
92 void magmablas_claset( char uplo, magma_int_t m, magma_int_t n,
93  cuFloatComplex *A, magma_int_t lda);
95  cuFloatComplex *dAT, magma_int_t lda,
96  magma_int_t i1, magma_int_t i2,
97  magma_int_t *ipiv, magma_int_t inci );
99  cuFloatComplex *dAT, magma_int_t ldx, magma_int_t ldy,
100  magma_int_t i1, magma_int_t i2,
101  magma_int_t *ipiv, magma_int_t inci );
102 
103  /*
104  * Level 1 BLAS
105  */
107  cuFloatComplex *dA1, magma_int_t lda1,
108  cuFloatComplex *dA2, magma_int_t lda2 );
109 void magmablas_cswapblk(char storev,
110  magma_int_t N,
111  cuFloatComplex *dA1, magma_int_t lda1,
112  cuFloatComplex *dA2, magma_int_t lda2,
113  magma_int_t i1, magma_int_t i2,
114  magma_int_t *ipiv, magma_int_t inci,
115  magma_int_t offset);
117  cuFloatComplex *dA1, magma_int_t ldda1, magma_int_t inca1,
118  cuFloatComplex *dA2, magma_int_t ldda2, magma_int_t inca2 );
119 
120  /*
121  * Level 2 BLAS
122  */
123 void magmablas_cgemv(char t, magma_int_t M, magma_int_t N,
124  cuFloatComplex alpha,
125  cuFloatComplex *A, magma_int_t lda,
126  cuFloatComplex * X, magma_int_t incX,
127  cuFloatComplex beta,
128  cuFloatComplex *Y, magma_int_t incY);
129 #if defined(PRECISION_z) || defined(PRECISION_c)
131  cuFloatComplex alpha,
132  cuFloatComplex *A, magma_int_t lda,
133  cuFloatComplex *X, magma_int_t incX,
134  cuFloatComplex beta,
135  cuFloatComplex *Y, magma_int_t incY);
136 #endif
138  cuFloatComplex alpha,
139  cuFloatComplex *A, magma_int_t lda,
140  cuFloatComplex *X, magma_int_t incX,
141  cuFloatComplex beta,
142  cuFloatComplex *Y, magma_int_t incY);
143 
144  /*
145  * Level 3 BLAS
146  */
147 void magmablas_cgemm(char tA, char tB,
149  cuFloatComplex alpha,
150  const cuFloatComplex *A, magma_int_t lda,
151  const cuFloatComplex *B, magma_int_t ldb,
152  cuFloatComplex beta,
153  cuFloatComplex *C, magma_int_t ldc);
154 void magmablas_cgemm_fermi80(char tA, char tB,
156  cuFloatComplex alpha,
157  const cuFloatComplex *A, magma_int_t lda,
158  const cuFloatComplex *B, magma_int_t ldb,
159  cuFloatComplex beta,
160  cuFloatComplex *C, magma_int_t ldc);
161 void magmablas_cgemm_fermi64(char tA, char tB,
163  cuFloatComplex alpha,
164  const cuFloatComplex *A, magma_int_t lda,
165  const cuFloatComplex *B, magma_int_t ldb,
166  cuFloatComplex beta,
167  cuFloatComplex *C, magma_int_t ldc);
168 void magmablas_chemm(char s, char u,
170  cuFloatComplex alpha,
171  const cuFloatComplex *A, magma_int_t lda,
172  const cuFloatComplex *B, magma_int_t ldb,
173  cuFloatComplex beta,
174  cuFloatComplex *C, magma_int_t ldc);
175 void magmablas_csymm(char s, char u,
177  cuFloatComplex alpha,
178  const cuFloatComplex *A, magma_int_t lda,
179  const cuFloatComplex *B, magma_int_t ldb,
180  cuFloatComplex beta,
181  cuFloatComplex *C, magma_int_t ldc);
182 void magmablas_csyrk(char u, char t,
183  magma_int_t n, magma_int_t k,
184  cuFloatComplex alpha,
185  const cuFloatComplex *A, magma_int_t lda,
186  cuFloatComplex beta,
187  cuFloatComplex *C, magma_int_t ldc);
188 void magmablas_cherk(char u, char t,
189  magma_int_t n, magma_int_t k,
190  float alpha,
191  const cuFloatComplex *A, magma_int_t lda,
192  float beta,
193  cuFloatComplex *C, magma_int_t ldc);
194 void magmablas_csyr2k(char u, char t,
196  cuFloatComplex alpha,
197  const cuFloatComplex *A, magma_int_t lda,
198  const cuFloatComplex *B, magma_int_t ldb,
199  cuFloatComplex beta,
200  cuFloatComplex *C, magma_int_t ldc);
201 void magmablas_cher2k(char u, char t,
202  magma_int_t n, magma_int_t k,
203  cuFloatComplex alpha,
204  const cuFloatComplex *A, magma_int_t lda,
205  const cuFloatComplex *B, magma_int_t ldb,
206  float beta,
207  cuFloatComplex *C, magma_int_t ldc);
208 void magmablas_ctrmm(char s, char u, char t, char d,
210  cuFloatComplex alpha,
211  const cuFloatComplex *A, magma_int_t lda,
212  cuFloatComplex *B, magma_int_t ldb);
213 void magmablas_ctrsm(char s, char u, char t, char d,
215  cuFloatComplex alpha,
216  /*const*/ cuFloatComplex *A, magma_int_t lda,
217  cuFloatComplex *B, magma_int_t ldb);
218 
219 
220  /*
221  * Wrappers for platform independence.
222  * These wrap CUBLAS or AMD OpenCL BLAS functions.
223  */
224 
225 // ========================================
226 // copying vectors
227 // set copies host to device
228 // get copies device to host
229 
230 void magma_csetvector(
231  magma_int_t n,
232  cuFloatComplex const *hx_src, magma_int_t incx,
233  cuFloatComplex *dy_dst, magma_int_t incy );
234 
235 void magma_cgetvector(
236  magma_int_t n,
237  cuFloatComplex const *dx_src, magma_int_t incx,
238  cuFloatComplex *hy_dst, magma_int_t incy );
239 
241  magma_int_t n,
242  cuFloatComplex const *hx_src, magma_int_t incx,
243  cuFloatComplex *dy_dst, magma_int_t incy,
244  magma_stream_t stream );
245 
247  magma_int_t n,
248  cuFloatComplex const *dx_src, magma_int_t incx,
249  cuFloatComplex *hy_dst, magma_int_t incy,
250  magma_stream_t stream );
251 
252 
253 // ========================================
254 // copying sub-matrices (contiguous columns)
255 // set copies host to device
256 // get copies device to host
257 // cpy copies device to device (with CUDA unified addressing, can be same or different devices)
258 
259 void magma_csetmatrix(
261  cuFloatComplex const *hA_src, magma_int_t lda,
262  cuFloatComplex *dB_dst, magma_int_t ldb );
263 
264 void magma_cgetmatrix(
266  cuFloatComplex const *dA_src, magma_int_t lda,
267  cuFloatComplex *hB_dst, magma_int_t ldb );
268 
271  cuFloatComplex const *hA_src, magma_int_t lda,
272  cuFloatComplex *dB_dst, magma_int_t ldb,
273  magma_stream_t stream );
274 
277  cuFloatComplex const *dA_src, magma_int_t lda,
278  cuFloatComplex *hB_dst, magma_int_t ldb,
279  magma_stream_t stream );
280 
281 void magma_ccopymatrix(
283  cuFloatComplex const *dA_src, magma_int_t lda,
284  cuFloatComplex *dB_dst, magma_int_t ldb );
285 
288  cuFloatComplex const *dA_src, magma_int_t lda,
289  cuFloatComplex *dB_dst, magma_int_t ldb,
290  magma_stream_t stream );
291 
292 
293 // ========================================
294 // Level 1 BLAS
295 
296 void magma_cswap(
297  magma_int_t n,
298  cuFloatComplex *dx, magma_int_t incx,
299  cuFloatComplex *dy, magma_int_t incy );
300 
302  magma_int_t n,
303  cuFloatComplex *dx, magma_int_t incx );
304 
305 // ========================================
306 // Level 2 BLAS
307 
308 void magma_cgemv(
309  magma_trans_t transA,
311  cuFloatComplex alpha, cuFloatComplex const *dA, magma_int_t lda,
312  cuFloatComplex const *dx, magma_int_t incx,
313  cuFloatComplex beta, cuFloatComplex *dy, magma_int_t incy );
314 
315 void magma_chemv(
316  magma_uplo_t uplo,
317  magma_int_t n,
318  cuFloatComplex alpha, cuFloatComplex const *dA, magma_int_t lda,
319  cuFloatComplex const *dx, magma_int_t incx,
320  cuFloatComplex beta, cuFloatComplex *dy, magma_int_t incy );
321 
322 void magma_ctrsv(
324  magma_int_t n,
325  cuFloatComplex const *dA, magma_int_t lda,
326  cuFloatComplex *dx, magma_int_t incx );
327 
328 // ========================================
329 // Level 3 BLAS
330 
331 void magma_cgemm(
332  magma_trans_t transA, magma_trans_t transB,
334  cuFloatComplex alpha, cuFloatComplex const *dA, magma_int_t lda,
335  cuFloatComplex const *dB, magma_int_t ldb,
336  cuFloatComplex beta, cuFloatComplex *dC, magma_int_t ldc );
337 
338 void magma_chemm(
341  cuFloatComplex alpha, cuFloatComplex const *dA, magma_int_t lda,
342  cuFloatComplex const *dB, magma_int_t ldb,
343  cuFloatComplex beta, cuFloatComplex *dC, magma_int_t ldc );
344 
345 void magma_cherk(
346  magma_uplo_t uplo, magma_trans_t trans,
348  float alpha, cuFloatComplex const *dA, magma_int_t lda,
349  float beta, cuFloatComplex *dC, magma_int_t ldc );
350 
351 void magma_cher2k(
352  magma_uplo_t uplo, magma_trans_t trans,
354  cuFloatComplex alpha, cuFloatComplex const *dA, magma_int_t lda,
355  cuFloatComplex const *dB, magma_int_t ldb,
356  float beta, cuFloatComplex *dC, magma_int_t ldc );
357 
358 void magma_ctrmm(
359  magma_side_t side, magma_uplo_t uplo, magma_trans_t trans, magma_diag_t diag,
361  cuFloatComplex alpha, cuFloatComplex const *dA, magma_int_t lda,
362  cuFloatComplex *dB, magma_int_t ldb );
363 
364 void magma_ctrsm(
365  magma_side_t side, magma_uplo_t uplo, magma_trans_t trans, magma_diag_t diag,
367  cuFloatComplex alpha, cuFloatComplex const *dA, magma_int_t lda,
368  cuFloatComplex *dB, magma_int_t ldb );
369 
370 #ifdef __cplusplus
371 }
372 #endif
373 
374 #undef PRECISION_c
375 #endif