MAGMA  1.2.0
MatrixAlgebraonGPUandMulticoreArchitectures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
magmablas_d.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 d Thu May 10 22:26:24 2012
9  */
10 
11 #ifndef _MAGMABLAS_D_H_
12 #define _MAGMABLAS_D_H_
13 
14 #define PRECISION_d
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20  /*
21  * Interface to clean
22  */
23 double cpu_gpu_ddiff( int M, int N,
24  double * a, int lda,
25  double *da, int ldda);
26 void dzero_32x32_block( double *, magma_int_t);
27 void dzero_nbxnb_block( magma_int_t, double *, magma_int_t);
29 void magmablas_dpermute_long( double *, magma_int_t,
31 void magmablas_dpermute_long2( double *, magma_int_t,
33 void magmablas_dpermute_long3( double *dAT, int lda,
34  int *ipiv, int nb, int ind );
35 void magmablas_dtranspose( double *, magma_int_t,
36  double *, magma_int_t,
38 void magmablas_dtranspose2( double *, magma_int_t,
39  double *, magma_int_t,
41 void magmablas_dtranspose2s(double *odata, int ldo,
42  double *idata, int ldi,
43  int m, int n, cudaStream_t *stream );
44 
45 void magmablas_dgetmatrix_transpose( int m, int n,
46  double *dat, int ldda,
47  double *ha, int lda,
48  double *dB, int lddb, int nb );
49 void magmablas_dgetmatrix_transpose2( int m, int n,
50  double **dat, int *ldda,
51  double *ha, int lda,
52  double **dB, int lddb, int nb,
53  int num_gpus, cudaStream_t stream[][2] );
54 void magmablas_dsetmatrix_transpose( int m, int n,
55  double *ha, int lda,
56  double *dat, int ldda,
57  double *dB, int lddb, int nb );
58 void magmablas_dsetmatrix_transpose2( int m, int n,
59  double *ha, int lda,
60  double **dat, int *ldda,
61  double **dB, int lddb, int nb,
62  int num_gpus, cudaStream_t stream[][2] );
63 void magmablas_dgetmatrix_1D_bcyclic( int m, int n,
64  double *da[], int ldda,
65  double *ha, int lda,
66  int num_gpus, int nb );
67 void magmablas_dsetmatrix_1D_bcyclic( int m, int n,
68  double *ha, int lda,
69  double *da[], int ldda,
70  int num_gpus, int nb );
71 
72  /*
73  * LAPACK auxiliary functions
74  */
75 void magmablas_dlacpy( char uplo,
77  double *A, magma_int_t lda,
78  double *B, magma_int_t ldb);
79 double magmablas_dlange( char norm,
81  double *A, magma_int_t lda, double *WORK);
82 double magmablas_dlansy( char norm, char uplo,
83  magma_int_t n,
84  double *A, magma_int_t lda, double *WORK);
85 double magmablas_dlansy( char norm, char uplo,
86  magma_int_t n,
87  double *A, magma_int_t lda, double *WORK);
88 void magmablas_dlascl( char type, int kl, int ku,
89  double cfrom, double cto,
90  int m, int n,
91  double *A, int lda, int *info );
92 void magmablas_dlaset( char uplo, magma_int_t m, magma_int_t n,
93  double *A, magma_int_t lda);
95  double *dAT, magma_int_t lda,
96  magma_int_t i1, magma_int_t i2,
97  magma_int_t *ipiv, magma_int_t inci );
99  double *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  double *dA1, magma_int_t lda1,
108  double *dA2, magma_int_t lda2 );
109 void magmablas_dswapblk(char storev,
110  magma_int_t N,
111  double *dA1, magma_int_t lda1,
112  double *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  double *dA1, magma_int_t ldda1, magma_int_t inca1,
118  double *dA2, magma_int_t ldda2, magma_int_t inca2 );
119 
120  /*
121  * Level 2 BLAS
122  */
123 void magmablas_dgemv(char t, magma_int_t M, magma_int_t N,
124  double alpha,
125  double *A, magma_int_t lda,
126  double * X, magma_int_t incX,
127  double beta,
128  double *Y, magma_int_t incY);
129 #if defined(PRECISION_z) || defined(PRECISION_c)
131  double alpha,
132  double *A, magma_int_t lda,
133  double *X, magma_int_t incX,
134  double beta,
135  double *Y, magma_int_t incY);
136 #endif
138  double alpha,
139  double *A, magma_int_t lda,
140  double *X, magma_int_t incX,
141  double beta,
142  double *Y, magma_int_t incY);
143 
144  /*
145  * Level 3 BLAS
146  */
147 void magmablas_dgemm(char tA, char tB,
149  double alpha,
150  const double *A, magma_int_t lda,
151  const double *B, magma_int_t ldb,
152  double beta,
153  double *C, magma_int_t ldc);
154 void magmablas_dgemm_fermi80(char tA, char tB,
156  double alpha,
157  const double *A, magma_int_t lda,
158  const double *B, magma_int_t ldb,
159  double beta,
160  double *C, magma_int_t ldc);
161 void magmablas_dgemm_fermi64(char tA, char tB,
163  double alpha,
164  const double *A, magma_int_t lda,
165  const double *B, magma_int_t ldb,
166  double beta,
167  double *C, magma_int_t ldc);
168 void magmablas_dsymm(char s, char u,
170  double alpha,
171  const double *A, magma_int_t lda,
172  const double *B, magma_int_t ldb,
173  double beta,
174  double *C, magma_int_t ldc);
175 void magmablas_dsymm(char s, char u,
177  double alpha,
178  const double *A, magma_int_t lda,
179  const double *B, magma_int_t ldb,
180  double beta,
181  double *C, magma_int_t ldc);
182 void magmablas_dsyrk(char u, char t,
183  magma_int_t n, magma_int_t k,
184  double alpha,
185  const double *A, magma_int_t lda,
186  double beta,
187  double *C, magma_int_t ldc);
188 void magmablas_dsyrk(char u, char t,
189  magma_int_t n, magma_int_t k,
190  double alpha,
191  const double *A, magma_int_t lda,
192  double beta,
193  double *C, magma_int_t ldc);
194 void magmablas_dsyr2k(char u, char t,
196  double alpha,
197  const double *A, magma_int_t lda,
198  const double *B, magma_int_t ldb,
199  double beta,
200  double *C, magma_int_t ldc);
201 void magmablas_dsyr2k(char u, char t,
202  magma_int_t n, magma_int_t k,
203  double alpha,
204  const double *A, magma_int_t lda,
205  const double *B, magma_int_t ldb,
206  double beta,
207  double *C, magma_int_t ldc);
208 void magmablas_dtrmm(char s, char u, char t, char d,
210  double alpha,
211  const double *A, magma_int_t lda,
212  double *B, magma_int_t ldb);
213 void magmablas_dtrsm(char s, char u, char t, char d,
215  double alpha,
216  /*const*/ double *A, magma_int_t lda,
217  double *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_dsetvector(
231  magma_int_t n,
232  double const *hx_src, magma_int_t incx,
233  double *dy_dst, magma_int_t incy );
234 
235 void magma_dgetvector(
236  magma_int_t n,
237  double const *dx_src, magma_int_t incx,
238  double *hy_dst, magma_int_t incy );
239 
241  magma_int_t n,
242  double const *hx_src, magma_int_t incx,
243  double *dy_dst, magma_int_t incy,
244  magma_stream_t stream );
245 
247  magma_int_t n,
248  double const *dx_src, magma_int_t incx,
249  double *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_dsetmatrix(
261  double const *hA_src, magma_int_t lda,
262  double *dB_dst, magma_int_t ldb );
263 
264 void magma_dgetmatrix(
266  double const *dA_src, magma_int_t lda,
267  double *hB_dst, magma_int_t ldb );
268 
271  double const *hA_src, magma_int_t lda,
272  double *dB_dst, magma_int_t ldb,
273  magma_stream_t stream );
274 
277  double const *dA_src, magma_int_t lda,
278  double *hB_dst, magma_int_t ldb,
279  magma_stream_t stream );
280 
281 void magma_dcopymatrix(
283  double const *dA_src, magma_int_t lda,
284  double *dB_dst, magma_int_t ldb );
285 
288  double const *dA_src, magma_int_t lda,
289  double *dB_dst, magma_int_t ldb,
290  magma_stream_t stream );
291 
292 
293 // ========================================
294 // Level 1 BLAS
295 
296 void magma_dswap(
297  magma_int_t n,
298  double *dx, magma_int_t incx,
299  double *dy, magma_int_t incy );
300 
302  magma_int_t n,
303  double *dx, magma_int_t incx );
304 
305 // ========================================
306 // Level 2 BLAS
307 
308 void magma_dgemv(
309  magma_trans_t transA,
311  double alpha, double const *dA, magma_int_t lda,
312  double const *dx, magma_int_t incx,
313  double beta, double *dy, magma_int_t incy );
314 
315 void magma_dsymv(
316  magma_uplo_t uplo,
317  magma_int_t n,
318  double alpha, double const *dA, magma_int_t lda,
319  double const *dx, magma_int_t incx,
320  double beta, double *dy, magma_int_t incy );
321 
322 void magma_dtrsv(
324  magma_int_t n,
325  double const *dA, magma_int_t lda,
326  double *dx, magma_int_t incx );
327 
328 // ========================================
329 // Level 3 BLAS
330 
331 void magma_dgemm(
332  magma_trans_t transA, magma_trans_t transB,
334  double alpha, double const *dA, magma_int_t lda,
335  double const *dB, magma_int_t ldb,
336  double beta, double *dC, magma_int_t ldc );
337 
338 void magma_dsymm(
341  double alpha, double const *dA, magma_int_t lda,
342  double const *dB, magma_int_t ldb,
343  double beta, double *dC, magma_int_t ldc );
344 
345 void magma_dsyrk(
346  magma_uplo_t uplo, magma_trans_t trans,
348  double alpha, double const *dA, magma_int_t lda,
349  double beta, double *dC, magma_int_t ldc );
350 
351 void magma_dsyr2k(
352  magma_uplo_t uplo, magma_trans_t trans,
354  double alpha, double const *dA, magma_int_t lda,
355  double const *dB, magma_int_t ldb,
356  double beta, double *dC, magma_int_t ldc );
357 
358 void magma_dtrmm(
359  magma_side_t side, magma_uplo_t uplo, magma_trans_t trans, magma_diag_t diag,
361  double alpha, double const *dA, magma_int_t lda,
362  double *dB, magma_int_t ldb );
363 
364 void magma_dtrsm(
365  magma_side_t side, magma_uplo_t uplo, magma_trans_t trans, magma_diag_t diag,
367  double alpha, double const *dA, magma_int_t lda,
368  double *dB, magma_int_t ldb );
369 
370 #ifdef __cplusplus
371 }
372 #endif
373 
374 #undef PRECISION_d
375 #endif